[ar7] do not patch the local copy of ar7part.c to be exactly like what is mainline...
[openwrt.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 --- /dev/null
4366 +++ b/gas/config/tc-avr32.c
4367 @@ -0,0 +1,4806 @@
4368 +/* Assembler implementation for AVR32.
4369 + Copyright 2003-2006 Atmel Corporation.
4370 +
4371 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
4372 +
4373 + This file is part of GAS, the GNU Assembler.
4374 +
4375 + GAS is free software; you can redistribute it and/or modify it
4376 + under the terms of the GNU General Public License as published by
4377 + the Free Software Foundation; either version 2, or (at your option)
4378 + any later version.
4379 +
4380 + GAS is distributed in the hope that it will be useful, but WITHOUT
4381 + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
4382 + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
4383 + License for more details.
4384 +
4385 + You should have received a copy of the GNU General Public License
4386 + along with GAS; see the file COPYING. If not, write to the Free
4387 + Software Foundation, 59 Temple Place - Suite 330, Boston, MA
4388 + 02111-1307, USA. */
4389 +
4390 +#include <stdio.h>
4391 +#include "as.h"
4392 +#include "safe-ctype.h"
4393 +#include "subsegs.h"
4394 +#include "symcat.h"
4395 +#include "opcodes/avr32-opc.h"
4396 +#include "opcodes/avr32-asm.h"
4397 +#include "elf/avr32.h"
4398 +#include "dwarf2dbg.h"
4399 +
4400 +#define xDEBUG
4401 +#define xOPC_CONSISTENCY_CHECK
4402 +
4403 +#ifdef DEBUG
4404 +# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
4405 +#else
4406 +# define pr_debug(fmt, args...)
4407 +#endif
4408 +
4409 +/* 3 MSB of instruction word indicate group. Group 7 -> extended */
4410 +#define AVR32_COMPACT_P(opcode) ((opcode[0] & 0xe0) != 0xe0)
4411 +
4412 +#define streq(a, b) (strcmp(a, b) == 0)
4413 +#define skip_whitespace(str) do { while(*(str) == ' ') ++(str); } while(0)
4414 +
4415 +/* Flags given on the command line */
4416 +static int avr32_pic = FALSE;
4417 +int linkrelax = FALSE;
4418 +int avr32_iarcompat = FALSE;
4419 +
4420 +/* This array holds the chars that always start a comment. */
4421 +const char comment_chars[] = "#";
4422 +
4423 +/* This array holds the chars that only start a comment at the
4424 + beginning of a line. We must include '#' here because the compiler
4425 + may produce #APP and #NO_APP in its output. */
4426 +const char line_comment_chars[] = "#";
4427 +
4428 +/* These may be used instead of newline (same as ';' in C). */
4429 +const char line_separator_chars[] = ";";
4430 +
4431 +/* Chars that can be used to separate mantissa from exponent in
4432 + floating point numbers. */
4433 +const char EXP_CHARS[] = "eE";
4434 +
4435 +/* Chars that mean this number is a floating point constant. */
4436 +const char FLT_CHARS[] = "dD";
4437 +
4438 +/* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
4439 +symbolS *GOT_symbol;
4440 +
4441 +static struct hash_control *avr32_mnemonic_htab;
4442 +
4443 +struct avr32_ifield_data
4444 +{
4445 + bfd_vma value;
4446 + /* FIXME: Get rid of align_order and complain. complain is never
4447 + used, align_order is used in one place. Try to use the relax
4448 + table instead. */
4449 + unsigned int align_order;
4450 +};
4451 +
4452 +struct avr32_insn
4453 +{
4454 + const struct avr32_syntax *syntax;
4455 + expressionS immediate;
4456 + int pcrel;
4457 + int force_extended;
4458 + unsigned int next_slot;
4459 + bfd_reloc_code_real_type r_type;
4460 + struct avr32_ifield_data field_value[AVR32_MAX_FIELDS];
4461 +};
4462 +
4463 +static struct avr32_insn current_insn;
4464 +
4465 +/* The target specific pseudo-ops we support. */
4466 +static void s_rseg (int);
4467 +static void s_cpool(int);
4468 +
4469 +const pseudo_typeS md_pseudo_table[] =
4470 +{
4471 + /* Make sure that .word is 32 bits */
4472 + { "word", cons, 4 },
4473 + { "file", (void (*) PARAMS ((int))) dwarf2_directive_file, 0 },
4474 + { "loc", dwarf2_directive_loc, 0 },
4475 +
4476 + /* .lcomm requires an explicit alignment parameter */
4477 + { "lcomm", s_lcomm, 1 },
4478 +
4479 + /* AVR32-specific pseudo-ops */
4480 + { "cpool", s_cpool, 0},
4481 +
4482 + /* IAR compatible pseudo-ops */
4483 + { "program", s_ignore, 0 },
4484 + { "public", s_globl, 0 },
4485 + { "extern", s_ignore, 0 },
4486 + { "module", s_ignore, 0 },
4487 + { "rseg", s_rseg, 0 },
4488 + { "dc8", cons, 1 },
4489 + { "dc16", cons, 2 },
4490 + { "dc32", cons, 4 },
4491 +
4492 + { NULL, NULL, 0 }
4493 +};
4494 +
4495 +/* Questionable stuff starts here */
4496 +
4497 +enum avr32_opinfo {
4498 + AVR32_OPINFO_NONE = BFD_RELOC_NONE,
4499 + AVR32_OPINFO_GOT,
4500 + AVR32_OPINFO_TLSGD,
4501 + AVR32_OPINFO_HI,
4502 + AVR32_OPINFO_LO,
4503 +};
4504 +
4505 +enum avr32_arch {
4506 + ARCH_TYPE_AP,
4507 + ARCH_TYPE_UCR1,
4508 + ARCH_TYPE_UCR2,
4509 +};
4510 +
4511 +struct arch_type_s
4512 +{
4513 + /* Architecture name */
4514 + char *name;
4515 + /* Instruction Set Architecture Flags */
4516 + unsigned long isa_flags;
4517 +};
4518 +
4519 +struct part_type_s
4520 +{
4521 + /* Part name */
4522 + char *name;
4523 + /* Architecture type */
4524 + unsigned int arch;
4525 +};
4526 +
4527 +static struct arch_type_s arch_types[] =
4528 +{
4529 + {"ap", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_PICO},
4530 + {"ucr1", AVR32_V1 | AVR32_DSP | AVR32_RMW},
4531 + {"ucr2", AVR32_V1 | AVR32_V2 | AVR32_DSP | AVR32_RMW},
4532 + {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO},
4533 + {NULL, 0}
4534 +};
4535 +
4536 +static struct part_type_s part_types[] = {
4537 + {"ap7000", ARCH_TYPE_AP},
4538 + {"ap7001", ARCH_TYPE_AP},
4539 + {"ap7002", ARCH_TYPE_AP},
4540 + {"ap7200", ARCH_TYPE_AP},
4541 + {"uc3a0128", ARCH_TYPE_UCR2},
4542 + {"uc3a0256", ARCH_TYPE_UCR2},
4543 + {"uc3a0512es", ARCH_TYPE_UCR1},
4544 + {"uc3a0512", ARCH_TYPE_UCR2},
4545 + {"uc3a1128", ARCH_TYPE_UCR2},
4546 + {"uc3a1256es", ARCH_TYPE_UCR1},
4547 + {"uc3a1256", ARCH_TYPE_UCR2},
4548 + {"uc3a1512es", ARCH_TYPE_UCR1},
4549 + {"uc3a1512", ARCH_TYPE_UCR2},
4550 + {"uc3a364", ARCH_TYPE_UCR2},
4551 + {"uc3a364s", ARCH_TYPE_UCR2},
4552 + {"uc3a3128", ARCH_TYPE_UCR2},
4553 + {"uc3a3128s", ARCH_TYPE_UCR2},
4554 + {"uc3a3256", ARCH_TYPE_UCR2},
4555 + {"uc3a3256s", ARCH_TYPE_UCR2},
4556 + {"uc3b064", ARCH_TYPE_UCR1},
4557 + {"uc3b0128", ARCH_TYPE_UCR1},
4558 + {"uc3b0256es", ARCH_TYPE_UCR1},
4559 + {"uc3b0256", ARCH_TYPE_UCR1},
4560 + {"uc3b164", ARCH_TYPE_UCR1},
4561 + {"uc3b1128", ARCH_TYPE_UCR1},
4562 + {"uc3b1256es", ARCH_TYPE_UCR1},
4563 + {"uc3b1256", ARCH_TYPE_UCR1},
4564 + {NULL, 0}
4565 +};
4566 +
4567 +/* Current architecture type. */
4568 +static struct arch_type_s default_arch = {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO };
4569 +static struct arch_type_s *avr32_arch = &default_arch;
4570 +
4571 +/* Display nicely formatted list of known part- and architecture names. */
4572 +
4573 +static void
4574 +show_arch_list (FILE *stream)
4575 +{
4576 + int i, x;
4577 +
4578 + fprintf (stream, _("Known architecture names:"));
4579 + x = 1000;
4580 +
4581 + for (i = 0; arch_types[i].name; i++)
4582 + {
4583 + int len = strlen (arch_types[i].name);
4584 +
4585 + x += len + 1;
4586 +
4587 + if (x < 75)
4588 + fprintf (stream, " %s", arch_types[i].name);
4589 + else
4590 + {
4591 + fprintf (stream, "\n %s", arch_types[i].name);
4592 + x = len + 2;
4593 + }
4594 + }
4595 +
4596 + fprintf (stream, "\n");
4597 +}
4598 +
4599 +static void
4600 +show_part_list (FILE *stream)
4601 +{
4602 + int i, x;
4603 +
4604 + fprintf (stream, _("Known part names:"));
4605 + x = 1000;
4606 +
4607 + for (i = 0; part_types[i].name; i++)
4608 + {
4609 + int len = strlen(part_types[i].name);
4610 +
4611 + x += len + 1;
4612 +
4613 + if (x < 75)
4614 + fprintf (stream, " %s", part_types[i].name);
4615 + else
4616 + {
4617 + fprintf(stream, "\n %s", part_types[i].name);
4618 + x = len + 2;
4619 + }
4620 + }
4621 +
4622 + fprintf (stream, "\n");
4623 +}
4624 +
4625 +const char *md_shortopts = "";
4626 +struct option md_longopts[] =
4627 +{
4628 +#define OPTION_ARCH (OPTION_MD_BASE)
4629 +#define OPTION_PART (OPTION_ARCH + 1)
4630 +#define OPTION_IAR (OPTION_PART + 1)
4631 +#define OPTION_PIC (OPTION_IAR + 1)
4632 +#define OPTION_NOPIC (OPTION_PIC + 1)
4633 +#define OPTION_LINKRELAX (OPTION_NOPIC + 1)
4634 +#define OPTION_NOLINKRELAX (OPTION_LINKRELAX + 1)
4635 +#define OPTION_DIRECT_DATA_REFS (OPTION_NOLINKRELAX + 1)
4636 + {"march", required_argument, NULL, OPTION_ARCH},
4637 + {"mpart", required_argument, NULL, OPTION_PART},
4638 + {"iar", no_argument, NULL, OPTION_IAR},
4639 + {"pic", no_argument, NULL, OPTION_PIC},
4640 + {"no-pic", no_argument, NULL, OPTION_NOPIC},
4641 + {"linkrelax", no_argument, NULL, OPTION_LINKRELAX},
4642 + {"no-linkrelax", no_argument, NULL, OPTION_NOLINKRELAX},
4643 + /* deprecated alias for -mpart=xxx */
4644 + {"mcpu", required_argument, NULL, OPTION_PART},
4645 + {NULL, no_argument, NULL, 0}
4646 +};
4647 +
4648 +size_t md_longopts_size = sizeof (md_longopts);
4649 +
4650 +void
4651 +md_show_usage (FILE *stream)
4652 +{
4653 + fprintf (stream, _("\
4654 +AVR32 options:\n\
4655 + -march=[arch-name] Select cpu architecture. [Default `all-insn']\n\
4656 + -mpart=[part-name] Select specific part. [Default `none']\n\
4657 + --pic Produce Position-Independent Code\n\
4658 + --no-pic Don't produce Position-Independent Code\n\
4659 + --linkrelax Produce output suitable for linker relaxing\n\
4660 + --no-linkrelax Don't produce output suitable for linker relaxing\n"));
4661 + show_arch_list(stream);
4662 +}
4663 +
4664 +int
4665 +md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
4666 +{
4667 + switch (c)
4668 + {
4669 + case OPTION_ARCH:
4670 + {
4671 + int i;
4672 + char *s = alloca (strlen (arg) + 1);
4673 +
4674 + {
4675 + char *t = s;
4676 + char *arg1 = arg;
4677 +
4678 + do
4679 + *t = TOLOWER (*arg1++);
4680 + while (*t++);
4681 + }
4682 +
4683 + /* Add backward compability */
4684 + if (strcmp ("uc", s)== 0)
4685 + {
4686 + as_warn("Deprecated arch `%s' specified. "
4687 + "Please use '-march=ucr1' instead. "
4688 + "Converting to arch 'ucr1'\n",
4689 + s);
4690 + s="ucr1";
4691 + }
4692 +
4693 + for (i = 0; arch_types[i].name; ++i)
4694 + if (strcmp (arch_types[i].name, s) == 0)
4695 + break;
4696 +
4697 + if (!arch_types[i].name)
4698 + {
4699 + show_arch_list (stderr);
4700 + as_fatal (_("unknown architecture: %s\n"), arg);
4701 + }
4702 +
4703 + avr32_arch = &arch_types[i];
4704 + break;
4705 + }
4706 + case OPTION_PART:
4707 + {
4708 + int i;
4709 + char *s = alloca (strlen (arg) + 1);
4710 + char *t = s;
4711 + char *p = arg;
4712 +
4713 + /* If arch type has already been set, don't bother.
4714 + -march= always overrides -mpart= */
4715 + if (avr32_arch != &default_arch)
4716 + break;
4717 +
4718 + do
4719 + *t = TOLOWER (*p++);
4720 + while (*t++);
4721 +
4722 + for (i = 0; part_types[i].name; ++i)
4723 + if (strcmp (part_types[i].name, s) == 0)
4724 + break;
4725 +
4726 + if (!part_types[i].name)
4727 + {
4728 + show_part_list (stderr);
4729 + as_fatal (_("unknown part: %s\n"), arg);
4730 + }
4731 +
4732 + avr32_arch = &arch_types[part_types[i].arch];
4733 + break;
4734 + }
4735 + case OPTION_IAR:
4736 + avr32_iarcompat = 1;
4737 + break;
4738 + case OPTION_PIC:
4739 + avr32_pic = 1;
4740 + break;
4741 + case OPTION_NOPIC:
4742 + avr32_pic = 0;
4743 + break;
4744 + case OPTION_LINKRELAX:
4745 + linkrelax = 1;
4746 + break;
4747 + case OPTION_NOLINKRELAX:
4748 + linkrelax = 0;
4749 + break;
4750 + default:
4751 + return 0;
4752 + }
4753 + return 1;
4754 +}
4755 +
4756 +/* Can't use symbol_new here, so have to create a symbol and then at
4757 + a later date assign it a value. Thats what these functions do.
4758 +
4759 + Shamelessly stolen from ARM. */
4760 +
4761 +static void
4762 +symbol_locate (symbolS * symbolP,
4763 + const char * name, /* It is copied, the caller can modify. */
4764 + segT segment, /* Segment identifier (SEG_<something>). */
4765 + valueT valu, /* Symbol value. */
4766 + fragS * frag) /* Associated fragment. */
4767 +{
4768 + unsigned int name_length;
4769 + char * preserved_copy_of_name;
4770 +
4771 + name_length = strlen (name) + 1; /* +1 for \0. */
4772 + obstack_grow (&notes, name, name_length);
4773 + preserved_copy_of_name = obstack_finish (&notes);
4774 +#ifdef STRIP_UNDERSCORE
4775 + if (preserved_copy_of_name[0] == '_')
4776 + preserved_copy_of_name++;
4777 +#endif
4778 +
4779 +#ifdef tc_canonicalize_symbol_name
4780 + preserved_copy_of_name =
4781 + tc_canonicalize_symbol_name (preserved_copy_of_name);
4782 +#endif
4783 +
4784 + S_SET_NAME (symbolP, preserved_copy_of_name);
4785 +
4786 + S_SET_SEGMENT (symbolP, segment);
4787 + S_SET_VALUE (symbolP, valu);
4788 + symbol_clear_list_pointers (symbolP);
4789 +
4790 + symbol_set_frag (symbolP, frag);
4791 +
4792 + /* Link to end of symbol chain. */
4793 + {
4794 + extern int symbol_table_frozen;
4795 +
4796 + if (symbol_table_frozen)
4797 + abort ();
4798 + }
4799 +
4800 + symbol_append (symbolP, symbol_lastP, & symbol_rootP, & symbol_lastP);
4801 +
4802 + obj_symbol_new_hook (symbolP);
4803 +
4804 +#ifdef tc_symbol_new_hook
4805 + tc_symbol_new_hook (symbolP);
4806 +#endif
4807 +
4808 +#ifdef DEBUG_SYMS
4809 + verify_symbol_chain (symbol_rootP, symbol_lastP);
4810 +#endif /* DEBUG_SYMS */
4811 +}
4812 +
4813 +struct cpool_entry
4814 +{
4815 + int refcount;
4816 + offsetT offset;
4817 + expressionS exp;
4818 +};
4819 +
4820 +struct cpool
4821 +{
4822 + struct cpool *next;
4823 + int used;
4824 + struct cpool_entry *literals;
4825 + unsigned int padding;
4826 + unsigned int next_free_entry;
4827 + unsigned int id;
4828 + symbolS *symbol;
4829 + segT section;
4830 + subsegT sub_section;
4831 +};
4832 +
4833 +struct cpool *cpool_list = NULL;
4834 +
4835 +static struct cpool *
4836 +find_cpool(segT section, subsegT sub_section)
4837 +{
4838 + struct cpool *pool;
4839 +
4840 + for (pool = cpool_list; pool != NULL; pool = pool->next)
4841 + {
4842 + if (!pool->used
4843 + && pool->section == section
4844 + && pool->sub_section == sub_section)
4845 + break;
4846 + }
4847 +
4848 + return pool;
4849 +}
4850 +
4851 +static struct cpool *
4852 +find_or_make_cpool(segT section, subsegT sub_section)
4853 +{
4854 + static unsigned int next_cpool_id = 0;
4855 + struct cpool *pool;
4856 +
4857 + pool = find_cpool(section, sub_section);
4858 +
4859 + if (!pool)
4860 + {
4861 + pool = xmalloc(sizeof(*pool));
4862 + if (!pool)
4863 + return NULL;
4864 +
4865 + pool->used = 0;
4866 + pool->literals = NULL;
4867 + pool->padding = 0;
4868 + pool->next_free_entry = 0;
4869 + pool->section = section;
4870 + pool->sub_section = sub_section;
4871 + pool->next = cpool_list;
4872 + pool->symbol = NULL;
4873 +
4874 + cpool_list = pool;
4875 + }
4876 +
4877 + /* NULL symbol means that the pool is new or has just been emptied. */
4878 + if (!pool->symbol)
4879 + {
4880 + pool->symbol = symbol_create(FAKE_LABEL_NAME, undefined_section,
4881 + 0, &zero_address_frag);
4882 + pool->id = next_cpool_id++;
4883 + }
4884 +
4885 + return pool;
4886 +}
4887 +
4888 +static struct cpool *
4889 +add_to_cpool(expressionS *exp, unsigned int *index, int ref)
4890 +{
4891 + struct cpool *pool;
4892 + unsigned int entry;
4893 +
4894 + pool = find_or_make_cpool(now_seg, now_subseg);
4895 +
4896 + /* Check if this constant is already in the pool. */
4897 + for (entry = 0; entry < pool->next_free_entry; entry++)
4898 + {
4899 + if ((pool->literals[entry].exp.X_op == exp->X_op)
4900 + && (exp->X_op == O_constant)
4901 + && (pool->literals[entry].exp.X_add_number
4902 + == exp->X_add_number)
4903 + && (pool->literals[entry].exp.X_unsigned
4904 + == exp->X_unsigned))
4905 + break;
4906 +
4907 + if ((pool->literals[entry].exp.X_op == exp->X_op)
4908 + && (exp->X_op == O_symbol)
4909 + && (pool->literals[entry].exp.X_add_number
4910 + == exp->X_add_number)
4911 + && (pool->literals[entry].exp.X_add_symbol
4912 + == exp->X_add_symbol)
4913 + && (pool->literals[entry].exp.X_op_symbol
4914 + == exp->X_op_symbol))
4915 + break;
4916 + }
4917 +
4918 + /* Create an entry if we didn't find a match */
4919 + if (entry == pool->next_free_entry)
4920 + {
4921 + pool->literals = xrealloc(pool->literals,
4922 + sizeof(struct cpool_entry) * (entry + 1));
4923 + pool->literals[entry].exp = *exp;
4924 + pool->literals[entry].refcount = 0;
4925 + pool->next_free_entry++;
4926 + }
4927 +
4928 + if (index)
4929 + *index = entry;
4930 + if (ref)
4931 + pool->literals[entry].refcount++;
4932 +
4933 + return pool;
4934 +}
4935 +
4936 +struct avr32_operand
4937 +{
4938 + int id;
4939 + int is_signed;
4940 + int is_pcrel;
4941 + int align_order;
4942 + int (*match)(char *str);
4943 + void (*parse)(const struct avr32_operand *op, char *str, int opindex);
4944 +};
4945 +
4946 +static int
4947 +match_anything(char *str ATTRIBUTE_UNUSED)
4948 +{
4949 + return 1;
4950 +}
4951 +
4952 +static int
4953 +match_intreg(char *str)
4954 +{
4955 + int regid, ret = 1;
4956 +
4957 + regid = avr32_parse_intreg(str);
4958 + if (regid < 0)
4959 + ret = 0;
4960 +
4961 + pr_debug("match_intreg: `%s': %d\n", str, ret);
4962 +
4963 + return ret;
4964 +}
4965 +
4966 +static int
4967 +match_intreg_predec(char *str)
4968 +{
4969 + int regid;
4970 +
4971 + if (str[0] != '-' || str[1] != '-')
4972 + return 0;
4973 +
4974 + regid = avr32_parse_intreg(str + 2);
4975 + if (regid < 0)
4976 + return 0;
4977 +
4978 + return 1;
4979 +}
4980 +
4981 +static int
4982 +match_intreg_postinc(char *str)
4983 +{
4984 + int regid, ret = 1;
4985 + char *p, c;
4986 +
4987 + for (p = str; *p; p++)
4988 + if (*p == '+')
4989 + break;
4990 +
4991 + if (p[0] != '+' || p[1] != '+')
4992 + return 0;
4993 +
4994 + c = *p, *p = 0;
4995 + regid = avr32_parse_intreg(str);
4996 + if (regid < 0)
4997 + ret = 0;
4998 +
4999 + *p = c;
5000 + return ret;
5001 +}
5002 +
5003 +static int
5004 +match_intreg_lsl(char *str)
5005 +{
5006 + int regid, ret = 1;
5007 + char *p, c;
5008 +
5009 + for (p = str; *p; p++)
5010 + if (*p == '<')
5011 + break;
5012 +
5013 + if (p[0] && p[1] != '<')
5014 + return 0;
5015 +
5016 + c = *p, *p = 0;
5017 + regid = avr32_parse_intreg(str);
5018 + if (regid < 0)
5019 + ret = 0;
5020 +
5021 + *p = c;
5022 + return ret;
5023 +}
5024 +
5025 +static int
5026 +match_intreg_lsr(char *str)
5027 +{
5028 + int regid, ret = 1;
5029 + char *p, c;
5030 +
5031 + for (p = str; *p; p++)
5032 + if (*p == '>')
5033 + break;
5034 +
5035 + if (p[0] && p[1] != '>')
5036 + return 0;
5037 +
5038 + c = *p, *p = 0;
5039 +
5040 + regid = avr32_parse_intreg(str);
5041 + if (regid < 0)
5042 + ret = 0;
5043 +
5044 + *p = c;
5045 + return ret;
5046 +}
5047 +
5048 +static int
5049 +match_intreg_part(char *str)
5050 +{
5051 + int regid, ret = 1;
5052 + char *p, c;
5053 +
5054 + for (p = str; *p; p++)
5055 + if (*p == ':')
5056 + break;
5057 +
5058 + if (p[0] != ':' || !ISPRINT(p[1]) || p[2] != '\0')
5059 + return 0;
5060 +
5061 + c = *p, *p = 0;
5062 + regid = avr32_parse_intreg(str);
5063 + if (regid < 0)
5064 + ret = 0;
5065 +
5066 + *p = c;
5067 +
5068 + return ret;
5069 +}
5070 +
5071 +#define match_intreg_disp match_anything
5072 +
5073 +static int
5074 +match_intreg_index(char *str)
5075 +{
5076 + int regid, ret = 1;
5077 + char *p, *end, c;
5078 +
5079 + for (p = str; *p; p++)
5080 + if (*p == '[')
5081 + break;
5082 +
5083 + /* don't allow empty displacement here (it makes no sense) */
5084 + if (p[0] != '[')
5085 + return 0;
5086 +
5087 + for (end = p + 1; *end; end++) ;
5088 + if (*(--end) != ']')
5089 + return 0;
5090 +
5091 + c = *end, *end = 0;
5092 + if (!match_intreg_lsl(p + 1))
5093 + ret = 0;
5094 + *end = c;
5095 +
5096 + if (ret)
5097 + {
5098 + c = *p, *p = 0;
5099 + regid = avr32_parse_intreg(str);
5100 + if (regid < 0)
5101 + ret = 0;
5102 + *p = c;
5103 + }
5104 +
5105 + return ret;
5106 +}
5107 +
5108 +static int
5109 +match_intreg_xindex(char *str)
5110 +{
5111 + int regid, ret = 1;
5112 + char *p, *end, c;
5113 +
5114 + for (p = str; *p; p++)
5115 + if (*p == '[')
5116 + break;
5117 +
5118 + /* empty displacement makes no sense here either */
5119 + if (p[0] != '[')
5120 + return 0;
5121 +
5122 + for (end = p + 1; *end; end++)
5123 + if (*end == '<')
5124 + break;
5125 +
5126 + if (!streq(end, "<<2]"))
5127 + return 0;
5128 +
5129 + c = *end, *end = 0;
5130 + if (!match_intreg_part(p + 1))
5131 + ret = 0;
5132 + *end = c;
5133 +
5134 + if (ret)
5135 + {
5136 + c = *p, *p = 0;
5137 + regid = avr32_parse_intreg(str);
5138 + if (regid < 0)
5139 + ret = 0;
5140 + *p = c;
5141 + }
5142 +
5143 + return ret;
5144 +}
5145 +
5146 +/* The PC_UDISP_W operator may show up as a label or as a pc[disp]
5147 + expression. So there's no point in attempting to match this... */
5148 +#define match_pc_disp match_anything
5149 +
5150 +static int
5151 +match_sp(char *str)
5152 +{
5153 + /* SP in any form will do */
5154 + return avr32_parse_intreg(str) == AVR32_REG_SP;
5155 +}
5156 +
5157 +static int
5158 +match_sp_disp(char *str)
5159 +{
5160 + int regid, ret = 1;
5161 + char *p, c;
5162 +
5163 + for (p = str; *p; p++)
5164 + if (*p == '[')
5165 + break;
5166 +
5167 + /* allow empty displacement, meaning zero */
5168 + if (p[0] == '[')
5169 + {
5170 + char *end;
5171 + for (end = p + 1; *end; end++) ;
5172 + if (end[-1] != ']')
5173 + return 0;
5174 + }
5175 +
5176 + c = *p, *p = 0;
5177 + regid = avr32_parse_intreg(str);
5178 + if (regid != AVR32_REG_SP)
5179 + ret = 0;
5180 +
5181 + *p = c;
5182 + return ret;
5183 +}
5184 +
5185 +static int
5186 +match_cpno(char *str)
5187 +{
5188 + if (strncasecmp(str, "cp", 2) != 0)
5189 + return 0;
5190 + return 1;
5191 +}
5192 +
5193 +static int
5194 +match_cpreg(char *str)
5195 +{
5196 + if (strncasecmp(str, "cr", 2) != 0)
5197 + return 0;
5198 + return 1;
5199 +}
5200 +
5201 +/* We allow complex expressions, and register names may show up as
5202 + symbols. Just make sure immediate expressions are always matched
5203 + last. */
5204 +#define match_const match_anything
5205 +#define match_jmplabel match_anything
5206 +#define match_number match_anything
5207 +
5208 +/* Mnemonics that take reglists never accept anything else */
5209 +#define match_reglist8 match_anything
5210 +#define match_reglist9 match_anything
5211 +#define match_reglist16 match_anything
5212 +#define match_reglist_ldm match_anything
5213 +#define match_reglist_cp8 match_anything
5214 +#define match_reglist_cpd8 match_anything
5215 +
5216 +/* Ditto for retval, jospinc and mcall */
5217 +#define match_retval match_anything
5218 +#define match_jospinc match_anything
5219 +#define match_mcall match_anything
5220 +
5221 +/* COH is used to select between two different syntaxes */
5222 +static int
5223 +match_coh(char *str)
5224 +{
5225 + return strcasecmp(str, "coh") == 0;
5226 +}
5227 +
5228 +static int
5229 +match_fpreg(char *str)
5230 +{
5231 + unsigned long regid;
5232 + char *endptr;
5233 +
5234 + if ((str[0] != 'f' && str[0] != 'F')
5235 + || (str[1] != 'r' && str[1] != 'R'))
5236 + return 0;
5237 +
5238 + str += 2;
5239 + regid = strtoul(str, &endptr, 10);
5240 + if (!*str || *endptr)
5241 + return 0;
5242 +
5243 + return 1;
5244 +}
5245 +
5246 +static int
5247 +match_picoreg(char *str)
5248 +{
5249 + int regid;
5250 +
5251 + regid = avr32_parse_picoreg(str);
5252 + if (regid < 0)
5253 + return 0;
5254 + return 1;
5255 +}
5256 +
5257 +#define match_pico_reglist_w match_anything
5258 +#define match_pico_reglist_d match_anything
5259 +
5260 +static int
5261 +match_pico_in(char *str)
5262 +{
5263 + unsigned long regid;
5264 + char *end;
5265 +
5266 + if (strncasecmp(str, "in", 2) != 0)
5267 + return 0;
5268 +
5269 + str += 2;
5270 + regid = strtoul(str, &end, 10);
5271 + if (!*str || *end)
5272 + return 0;
5273 +
5274 + return 1;
5275 +}
5276 +
5277 +static int
5278 +match_pico_out0(char *str)
5279 +{
5280 + if (strcasecmp(str, "out0") != 0)
5281 + return 0;
5282 + return 1;
5283 +}
5284 +
5285 +static int
5286 +match_pico_out1(char *str)
5287 +{
5288 + if (strcasecmp(str, "out1") != 0)
5289 + return 0;
5290 + return 1;
5291 +}
5292 +
5293 +static int
5294 +match_pico_out2(char *str)
5295 +{
5296 + if (strcasecmp(str, "out2") != 0)
5297 + return 0;
5298 + return 1;
5299 +}
5300 +
5301 +static int
5302 +match_pico_out3(char *str)
5303 +{
5304 + if (strcasecmp(str, "out3") != 0)
5305 + return 0;
5306 + return 1;
5307 +}
5308 +
5309 +static void parse_nothing(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5310 + char *str ATTRIBUTE_UNUSED,
5311 + int opindex ATTRIBUTE_UNUSED)
5312 +{
5313 + /* Do nothing (this is used for "match-only" operands like COH) */
5314 +}
5315 +
5316 +static void
5317 +parse_const(const struct avr32_operand *op, char *str,
5318 + int opindex ATTRIBUTE_UNUSED)
5319 +{
5320 + expressionS *exp = &current_insn.immediate;
5321 + expressionS *sym_exp;
5322 + int slot;
5323 + char *save;
5324 +
5325 + pr_debug("parse_const: `%s' (signed: %d, pcrel: %d, align: %d)\n",
5326 + str, op->is_signed, op->is_pcrel, op->align_order);
5327 +
5328 + save = input_line_pointer;
5329 + input_line_pointer = str;
5330 +
5331 + expression(exp);
5332 +
5333 + slot = current_insn.next_slot++;
5334 + current_insn.field_value[slot].align_order = op->align_order;
5335 + current_insn.pcrel = op->is_pcrel;
5336 +
5337 + switch (exp->X_op)
5338 + {
5339 + case O_illegal:
5340 + as_bad(_("illegal operand"));
5341 + break;
5342 + case O_absent:
5343 + as_bad(_("missing operand"));
5344 + break;
5345 + case O_constant:
5346 + pr_debug(" -> constant: %ld\n", (long)exp->X_add_number);
5347 + current_insn.field_value[slot].value = exp->X_add_number;
5348 + break;
5349 + case O_uminus:
5350 + pr_debug(" -> uminus\n");
5351 + sym_exp = symbol_get_value_expression(exp->X_add_symbol);
5352 + switch (sym_exp->X_op) {
5353 + case O_subtract:
5354 + pr_debug(" -> subtract: switching operands\n");
5355 + exp->X_op_symbol = sym_exp->X_add_symbol;
5356 + exp->X_add_symbol = sym_exp->X_op_symbol;
5357 + exp->X_op = O_subtract;
5358 + /* TODO: Remove the old X_add_symbol */
5359 + break;
5360 + default:
5361 + as_bad(_("Expression too complex\n"));
5362 + break;
5363 + }
5364 + break;
5365 +#if 0
5366 + case O_subtract:
5367 + /* Any expression subtracting a symbol from the current section
5368 + can be made PC-relative by adding the right offset. */
5369 + if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
5370 + current_insn.pcrel = TRUE;
5371 + pr_debug(" -> subtract: pcrel? %s\n",
5372 + current_insn.pcrel ? "yes" : "no");
5373 + /* fall through */
5374 +#endif
5375 + default:
5376 + pr_debug(" -> (%p <%d> %p + %d)\n",
5377 + exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
5378 + exp->X_add_number);
5379 + current_insn.field_value[slot].value = 0;
5380 + break;
5381 + }
5382 +
5383 + input_line_pointer = save;
5384 +}
5385 +
5386 +static void
5387 +parse_jmplabel(const struct avr32_operand *op, char *str,
5388 + int opindex ATTRIBUTE_UNUSED)
5389 +{
5390 + expressionS *exp = &current_insn.immediate;
5391 + int slot;
5392 + char *save;
5393 +
5394 + pr_debug("parse_jmplabel: `%s' (signed: %d, pcrel: %d, align: %d)\n",
5395 + str, op->is_signed, op->is_pcrel, op->align_order);
5396 +
5397 + save = input_line_pointer;
5398 + input_line_pointer = str;
5399 +
5400 + expression(exp);
5401 +
5402 + slot = current_insn.next_slot++;
5403 + current_insn.field_value[slot].align_order = op->align_order;
5404 + current_insn.pcrel = TRUE;
5405 +
5406 + switch (exp->X_op)
5407 + {
5408 + case O_illegal:
5409 + as_bad(_("illegal operand"));
5410 + break;
5411 + case O_absent:
5412 + as_bad(_("missing operand"));
5413 + break;
5414 + case O_constant:
5415 + pr_debug(" -> constant: %ld\n", (long)exp->X_add_number);
5416 + current_insn.field_value[slot].value = exp->X_add_number;
5417 + current_insn.pcrel = 0;
5418 + break;
5419 + default:
5420 + pr_debug(" -> (%p <%d> %p + %d)\n",
5421 + exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
5422 + exp->X_add_number);
5423 + current_insn.field_value[slot].value = 0;
5424 + break;
5425 + }
5426 +
5427 + input_line_pointer = save;
5428 +}
5429 +
5430 +static void
5431 +parse_intreg(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5432 + char *str, int opindex ATTRIBUTE_UNUSED)
5433 +{
5434 + int regid, slot;
5435 +
5436 + pr_debug("parse_intreg: `%s'\n", str);
5437 +
5438 + regid = avr32_parse_intreg(str);
5439 + assert(regid >= 0);
5440 +
5441 + slot = current_insn.next_slot++;
5442 + current_insn.field_value[slot].value = regid;
5443 + current_insn.field_value[slot].align_order = op->align_order;
5444 +}
5445 +
5446 +static void
5447 +parse_intreg_predec(const struct avr32_operand *op, char *str, int opindex)
5448 +{
5449 + parse_intreg(op, str + 2, opindex);
5450 +}
5451 +
5452 +static void
5453 +parse_intreg_postinc(const struct avr32_operand *op, char *str, int opindex)
5454 +{
5455 + char *p, c;
5456 +
5457 + pr_debug("parse_intreg_postinc: `%s'\n", str);
5458 +
5459 + for (p = str; *p != '+'; p++) ;
5460 +
5461 + c = *p, *p = 0;
5462 + parse_intreg(op, str, opindex);
5463 + *p = c;
5464 +}
5465 +
5466 +static void
5467 +parse_intreg_shift(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5468 + char *str, int opindex ATTRIBUTE_UNUSED)
5469 +{
5470 + int regid, slot, shift = 0;
5471 + char *p, c;
5472 + char shiftop;
5473 +
5474 + pr_debug("parse Ry<<sa: `%s'\n", str);
5475 +
5476 + for (p = str; *p; p++)
5477 + if (*p == '<' || *p == '>')
5478 + break;
5479 +
5480 + shiftop = *p;
5481 +
5482 + c = *p, *p = 0;
5483 + regid = avr32_parse_intreg(str);
5484 + assert(regid >= 0);
5485 + *p = c;
5486 +
5487 + if (c)
5488 + {
5489 + if (p[0] != shiftop || p[1] != shiftop)
5490 + as_bad(_("expected shift operator in `%s'"), p);
5491 + else
5492 + {
5493 + expressionS exp;
5494 + char *saved;
5495 +
5496 + saved = input_line_pointer;
5497 + input_line_pointer = p + 2;
5498 + expression(&exp);
5499 + input_line_pointer = saved;
5500 +
5501 + if (exp.X_op != O_constant)
5502 + as_bad(_("shift amount must be a numeric constant"));
5503 + else
5504 + shift = exp.X_add_number;
5505 + }
5506 + }
5507 +
5508 + slot = current_insn.next_slot++;
5509 + current_insn.field_value[slot].value = regid;
5510 + slot = current_insn.next_slot++;
5511 + current_insn.field_value[slot].value = shift;
5512 +}
5513 +
5514 +/* The match() function selected the right opcode, so it doesn't
5515 + matter which way we shift any more. */
5516 +#define parse_intreg_lsl parse_intreg_shift
5517 +#define parse_intreg_lsr parse_intreg_shift
5518 +
5519 +static void
5520 +parse_intreg_part(const struct avr32_operand *op, char *str,
5521 + int opindex ATTRIBUTE_UNUSED)
5522 +{
5523 + static const char bparts[] = { 'b', 'l', 'u', 't' };
5524 + static const char hparts[] = { 'b', 't' };
5525 + unsigned int slot, sel;
5526 + int regid;
5527 + char *p, c;
5528 +
5529 + pr_debug("parse reg:part `%s'\n", str);
5530 +
5531 + for (p = str; *p; p++)
5532 + if (*p == ':')
5533 + break;
5534 +
5535 + c = *p, *p = 0;
5536 + regid = avr32_parse_intreg(str);
5537 + assert(regid >= 0);
5538 + *p = c;
5539 +
5540 + assert(c == ':');
5541 +
5542 + if (op->align_order)
5543 + {
5544 + for (sel = 0; sel < sizeof(hparts); sel++)
5545 + if (TOLOWER(p[1]) == hparts[sel])
5546 + break;
5547 +
5548 + if (sel >= sizeof(hparts))
5549 + {
5550 + as_bad(_("invalid halfword selector `%c' (must be either b or t)"),
5551 + p[1]);
5552 + sel = 0;
5553 + }
5554 + }
5555 + else
5556 + {
5557 + for (sel = 0; sel < sizeof(bparts); sel++)
5558 + if (TOLOWER(p[1]) == bparts[sel])
5559 + break;
5560 +
5561 + if (sel >= sizeof(bparts))
5562 + {
5563 + as_bad(_("invalid byte selector `%c' (must be one of b,l,u,t)"),
5564 + p[1]);
5565 + sel = 0;
5566 + }
5567 + }
5568 +
5569 + slot = current_insn.next_slot++;
5570 + current_insn.field_value[slot].value = regid;
5571 + slot = current_insn.next_slot++;
5572 + current_insn.field_value[slot].value = sel;
5573 +}
5574 +
5575 +/* This is the parser for "Rp[displacement]" expressions. In addition
5576 + to the "official" syntax, we accept a label as a replacement for
5577 + the register expression. This syntax implies Rp=PC and the
5578 + displacement is the pc-relative distance to the label. */
5579 +static void
5580 +parse_intreg_disp(const struct avr32_operand *op, char *str, int opindex)
5581 +{
5582 + expressionS *exp = &current_insn.immediate;
5583 + int slot, regid;
5584 + char *save, *p, c;
5585 +
5586 + pr_debug("parse_intreg_disp: `%s' (signed: %d, pcrel: %d, align: %d)\n",
5587 + str, op->is_signed, op->is_pcrel, op->align_order);
5588 +
5589 + for (p = str; *p; p++)
5590 + if (*p == '[')
5591 + break;
5592 +
5593 + slot = current_insn.next_slot++;
5594 +
5595 + /* First, check if we have a valid register either before '[' or as
5596 + the sole expression. If so, we use the Rp[disp] syntax. */
5597 + c = *p, *p = 0;
5598 + regid = avr32_parse_intreg(str);
5599 + *p = c;
5600 +
5601 + if (regid >= 0)
5602 + {
5603 + current_insn.field_value[slot].value = regid;
5604 +
5605 + slot = current_insn.next_slot++;
5606 + current_insn.field_value[slot].align_order = op->align_order;
5607 +
5608 + if (c == '[')
5609 + {
5610 + save = input_line_pointer;
5611 + input_line_pointer = p + 1;
5612 +
5613 + expression(exp);
5614 +
5615 + if (*input_line_pointer != ']')
5616 + as_bad(_("junk after displacement expression"));
5617 +
5618 + input_line_pointer = save;
5619 +
5620 + switch (exp->X_op)
5621 + {
5622 + case O_illegal:
5623 + as_bad(_("illegal displacement expression"));
5624 + break;
5625 + case O_absent:
5626 + as_bad(_("missing displacement expression"));
5627 + break;
5628 + case O_constant:
5629 + pr_debug(" -> constant: %ld\n", exp->X_add_number);
5630 + current_insn.field_value[slot].value = exp->X_add_number;
5631 + break;
5632 +#if 0
5633 + case O_subtract:
5634 + if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
5635 + current_insn.pcrel = TRUE;
5636 + pr_debug(" -> subtract: pcrel? %s\n",
5637 + current_insn.pcrel ? "yes" : "no");
5638 + /* fall through */
5639 +#endif
5640 + default:
5641 + pr_debug(" -> (%p <%d> %p + %d)\n",
5642 + exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
5643 + exp->X_add_number);
5644 + current_insn.field_value[slot].value = 0;
5645 + }
5646 + }
5647 + else
5648 + {
5649 + exp->X_op = O_constant;
5650 + exp->X_add_number = 0;
5651 + current_insn.field_value[slot].value = 0;
5652 + }
5653 + }
5654 + else
5655 + {
5656 + /* Didn't find a valid register. Try parsing it as a label. */
5657 + current_insn.field_value[slot].value = AVR32_REG_PC;
5658 + parse_jmplabel(op, str, opindex);
5659 + }
5660 +}
5661 +
5662 +static void
5663 +parse_intreg_index(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5664 + char *str, int opindex ATTRIBUTE_UNUSED)
5665 +{
5666 + int slot, regid;
5667 + char *p, *end, c;
5668 +
5669 + for (p = str; *p; p++)
5670 + if (*p == '[')
5671 + break;
5672 +
5673 + assert(*p);
5674 +
5675 + c = *p, *p = 0;
5676 + regid = avr32_parse_intreg(str);
5677 + assert(regid >= 0);
5678 + *p = c;
5679 +
5680 + slot = current_insn.next_slot++;
5681 + current_insn.field_value[slot].value = regid;
5682 +
5683 + p++;
5684 + for (end = p; *end; end++)
5685 + if (*end == ']' || *end == '<')
5686 + break;
5687 +
5688 + assert(*end);
5689 +
5690 + c = *end, *end = 0;
5691 + regid = avr32_parse_intreg(p);
5692 + assert(regid >= 0);
5693 + *end = c;
5694 +
5695 + slot = current_insn.next_slot++;
5696 + current_insn.field_value[slot].value = regid;
5697 +
5698 + slot = current_insn.next_slot++;
5699 + current_insn.field_value[slot].value = 0;
5700 +
5701 + if (*end == '<')
5702 + {
5703 + expressionS exp;
5704 + char *save;
5705 +
5706 + p = end + 2;
5707 + for (end = p; *end; end++)
5708 + if (*end == ']')
5709 + break;
5710 +
5711 + assert(*end == ']');
5712 +
5713 + c = *end, *end = 0;
5714 + save = input_line_pointer;
5715 + input_line_pointer = p;
5716 + expression(&exp);
5717 +
5718 + if (*input_line_pointer)
5719 + as_bad(_("junk after shift expression"));
5720 +
5721 + *end = c;
5722 + input_line_pointer = save;
5723 +
5724 + if (exp.X_op == O_constant)
5725 + current_insn.field_value[slot].value = exp.X_add_number;
5726 + else
5727 + as_bad(_("shift expression too complex"));
5728 + }
5729 +}
5730 +
5731 +static void
5732 +parse_intreg_xindex(const struct avr32_operand *op, char *str, int opindex)
5733 +{
5734 + int slot, regid;
5735 + char *p, *end, c;
5736 +
5737 + for (p = str; *p; p++)
5738 + if (*p == '[')
5739 + break;
5740 +
5741 + assert(*p);
5742 +
5743 + c = *p, *p = 0;
5744 + regid = avr32_parse_intreg(str);
5745 + assert(regid >= 0);
5746 + *p = c;
5747 +
5748 + slot = current_insn.next_slot++;
5749 + current_insn.field_value[slot].value = regid;
5750 +
5751 + p++;
5752 + for (end = p; *end; end++)
5753 + if (*end == '<')
5754 + break;
5755 +
5756 + assert(*end);
5757 +
5758 + c = *end, *end = 0;
5759 + parse_intreg_part(op, p, opindex);
5760 + *end = c;
5761 +}
5762 +
5763 +static void
5764 +parse_pc_disp(const struct avr32_operand *op, char *str, int opindex)
5765 +{
5766 + char *p, c;
5767 +
5768 + for (p = str; *p; p++)
5769 + if (*p == '[')
5770 + break;
5771 +
5772 + /* The lddpc instruction comes in two different syntax variants:
5773 + lddpc reg, expression
5774 + lddpc reg, pc[disp]
5775 + If the operand contains a '[', we use the second form. */
5776 + if (*p)
5777 + {
5778 + int regid;
5779 +
5780 + c = *p, *p = 0;
5781 + regid = avr32_parse_intreg(str);
5782 + *p = c;
5783 + if (regid == AVR32_REG_PC)
5784 + {
5785 + char *end;
5786 +
5787 + for (end = ++p; *end; end++) ;
5788 + if (*(--end) != ']')
5789 + as_bad(_("unrecognized form of instruction: `%s'"), str);
5790 + else
5791 + {
5792 + c = *end, *end = 0;
5793 + parse_const(op, p, opindex);
5794 + *end = c;
5795 + current_insn.pcrel = 0;
5796 + }
5797 + }
5798 + else
5799 + as_bad(_("unrecognized form of instruction: `%s'"), str);
5800 + }
5801 + else
5802 + {
5803 + parse_jmplabel(op, str, opindex);
5804 + }
5805 +}
5806 +
5807 +static void parse_sp(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5808 + char *str ATTRIBUTE_UNUSED,
5809 + int opindex ATTRIBUTE_UNUSED)
5810 +{
5811 + int slot;
5812 +
5813 + slot = current_insn.next_slot++;
5814 + current_insn.field_value[slot].value = AVR32_REG_SP;
5815 +}
5816 +
5817 +static void
5818 +parse_sp_disp(const struct avr32_operand *op, char *str, int opindex)
5819 +{
5820 + char *p, c;
5821 +
5822 + for (; *str; str++)
5823 + if (*str == '[')
5824 + break;
5825 +
5826 + assert(*str);
5827 +
5828 + for (p = ++str; *p; p++)
5829 + if (*p == ']')
5830 + break;
5831 +
5832 + c = *p, *p = 0;
5833 + parse_const(op, str, opindex);
5834 + *p = c;
5835 +}
5836 +
5837 +static void
5838 +parse_cpno(const struct avr32_operand *op ATTRIBUTE_UNUSED, char *str,
5839 + int opindex ATTRIBUTE_UNUSED)
5840 +{
5841 + int slot;
5842 +
5843 + str += 2;
5844 + if (*str == '#')
5845 + str++;
5846 + if (*str < '0' || *str > '7' || str[1])
5847 + as_bad(_("invalid coprocessor `%s'"), str);
5848 +
5849 + slot = current_insn.next_slot++;
5850 + current_insn.field_value[slot].value = *str - '0';
5851 +}
5852 +
5853 +static void
5854 +parse_cpreg(const struct avr32_operand *op, char *str,
5855 + int opindex ATTRIBUTE_UNUSED)
5856 +{
5857 + unsigned int crid;
5858 + int slot;
5859 + char *endptr;
5860 +
5861 + str += 2;
5862 + crid = strtoul(str, &endptr, 10);
5863 + if (*endptr || crid > 15 || crid & ((1 << op->align_order) - 1))
5864 + as_bad(_("invalid coprocessor register `%s'"), str);
5865 +
5866 + crid >>= op->align_order;
5867 +
5868 + slot = current_insn.next_slot++;
5869 + current_insn.field_value[slot].value = crid;
5870 +}
5871 +
5872 +static void
5873 +parse_number(const struct avr32_operand *op, char *str,
5874 + int opindex ATTRIBUTE_UNUSED)
5875 +{
5876 + expressionS exp;
5877 + int slot;
5878 + char *save;
5879 +
5880 + save = input_line_pointer;
5881 + input_line_pointer = str;
5882 + expression(&exp);
5883 + input_line_pointer = save;
5884 +
5885 + slot = current_insn.next_slot++;
5886 + current_insn.field_value[slot].align_order = op->align_order;
5887 +
5888 + if (exp.X_op == O_constant)
5889 + current_insn.field_value[slot].value = exp.X_add_number;
5890 + else
5891 + as_bad(_("invalid numeric expression `%s'"), str);
5892 +}
5893 +
5894 +static void
5895 +parse_reglist8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5896 + char *str, int opindex ATTRIBUTE_UNUSED)
5897 +{
5898 + unsigned long regmask;
5899 + unsigned long value = 0;
5900 + int slot;
5901 + char *tail;
5902 +
5903 + regmask = avr32_parse_reglist(str, &tail);
5904 + if (*tail)
5905 + as_bad(_("invalid register list `%s'"), str);
5906 + else
5907 + {
5908 + if (avr32_make_regmask8(regmask, &value))
5909 + as_bad(_("register list `%s' doesn't fit"), str);
5910 + }
5911 +
5912 + slot = current_insn.next_slot++;
5913 + current_insn.field_value[slot].value = value;
5914 +}
5915 +
5916 +static int
5917 +parse_reglist_tail(char *str, unsigned long regmask)
5918 +{
5919 + expressionS exp;
5920 + char *save, *p, c;
5921 + int regid;
5922 +
5923 + for (p = str + 1; *p; p++)
5924 + if (*p == '=')
5925 + break;
5926 +
5927 + if (!*p)
5928 + {
5929 + as_bad(_("invalid register list `%s'"), str);
5930 + return -2;
5931 + }
5932 +
5933 + c = *p, *p = 0;
5934 + regid = avr32_parse_intreg(str);
5935 + *p = c;
5936 +
5937 + if (regid != 12)
5938 + {
5939 + as_bad(_("invalid register list `%s'"), str);
5940 + return -2;
5941 + }
5942 +
5943 + /* If we have an assignment, we must pop PC and we must _not_
5944 + pop LR or R12 */
5945 + if (!(regmask & (1 << AVR32_REG_PC)))
5946 + {
5947 + as_bad(_("return value specified for non-return instruction"));
5948 + return -2;
5949 + }
5950 + else if (regmask & ((1 << AVR32_REG_R12) | (1 << AVR32_REG_LR)))
5951 + {
5952 + as_bad(_("can't pop LR or R12 when specifying return value"));
5953 + return -2;
5954 + }
5955 +
5956 + save = input_line_pointer;
5957 + input_line_pointer = p + 1;
5958 + expression(&exp);
5959 + input_line_pointer = save;
5960 +
5961 + if (exp.X_op != O_constant
5962 + || exp.X_add_number < -1
5963 + || exp.X_add_number > 1)
5964 + {
5965 + as_bad(_("invalid return value `%s'"), str);
5966 + return -2;
5967 + }
5968 +
5969 + return exp.X_add_number;
5970 +}
5971 +
5972 +static void
5973 +parse_reglist9(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5974 + char *str, int opindex ATTRIBUTE_UNUSED)
5975 +{
5976 + unsigned long regmask;
5977 + unsigned long value = 0, kbit = 0;
5978 + int slot;
5979 + char *tail;
5980 +
5981 + regmask = avr32_parse_reglist(str, &tail);
5982 + /* printf("parsed reglist16: %04lx, tail: `%s'\n", regmask, tail); */
5983 + if (*tail)
5984 + {
5985 + int retval;
5986 +
5987 + retval = parse_reglist_tail(tail, regmask);
5988 +
5989 + switch (retval)
5990 + {
5991 + case -1:
5992 + regmask |= 1 << AVR32_REG_LR;
5993 + break;
5994 + case 0:
5995 + break;
5996 + case 1:
5997 + regmask |= 1 << AVR32_REG_R12;
5998 + break;
5999 + default:
6000 + break;
6001 + }
6002 +
6003 + kbit = 1;
6004 + }
6005 +
6006 + if (avr32_make_regmask8(regmask, &value))
6007 + as_bad(_("register list `%s' doesn't fit"), str);
6008 +
6009 +
6010 + slot = current_insn.next_slot++;
6011 + current_insn.field_value[slot].value = (value << 1) | kbit;
6012 +}
6013 +
6014 +static void
6015 +parse_reglist16(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6016 + char *str, int opindex ATTRIBUTE_UNUSED)
6017 +{
6018 + unsigned long regmask;
6019 + int slot;
6020 + char *tail;
6021 +
6022 + regmask = avr32_parse_reglist(str, &tail);
6023 + if (*tail)
6024 + as_bad(_("invalid register list `%s'"), str);
6025 +
6026 + slot = current_insn.next_slot++;
6027 + current_insn.field_value[slot].value = regmask;
6028 +}
6029 +
6030 +static void
6031 +parse_reglist_ldm(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6032 + char *str, int opindex ATTRIBUTE_UNUSED)
6033 +{
6034 + unsigned long regmask;
6035 + int slot, rp, w_bit = 0;
6036 + char *tail, *p, c;
6037 +
6038 + for (p = str; *p && *p != ','; p++)
6039 + if (*p == '+')
6040 + break;
6041 +
6042 + c = *p, *p = 0;
6043 + rp = avr32_parse_intreg(str);
6044 + *p = c;
6045 + if (rp < 0)
6046 + {
6047 + as_bad(_("invalid destination register in `%s'"), str);
6048 + return;
6049 + }
6050 +
6051 + if (p[0] == '+' && p[1] == '+')
6052 + {
6053 + w_bit = 1;
6054 + p += 2;
6055 + }
6056 +
6057 + if (*p != ',')
6058 + {
6059 + as_bad(_("expected `,' after destination register in `%s'"), str);
6060 + return;
6061 + }
6062 +
6063 + str = p + 1;
6064 + regmask = avr32_parse_reglist(str, &tail);
6065 + if (*tail)
6066 + {
6067 + int retval;
6068 +
6069 + if (rp != AVR32_REG_SP)
6070 + {
6071 + as_bad(_("junk at end of line: `%s'"), tail);
6072 + return;
6073 + }
6074 +
6075 + rp = AVR32_REG_PC;
6076 +
6077 + retval = parse_reglist_tail(tail, regmask);
6078 +
6079 + switch (retval)
6080 + {
6081 + case -1:
6082 + regmask |= 1 << AVR32_REG_LR;
6083 + break;
6084 + case 0:
6085 + break;
6086 + case 1:
6087 + regmask |= 1 << AVR32_REG_R12;
6088 + break;
6089 + default:
6090 + return;
6091 + }
6092 + }
6093 +
6094 + slot = current_insn.next_slot++;
6095 + current_insn.field_value[slot].value = rp;
6096 + slot = current_insn.next_slot++;
6097 + current_insn.field_value[slot].value = w_bit;
6098 + slot = current_insn.next_slot++;
6099 + current_insn.field_value[slot].value = regmask;
6100 +}
6101 +
6102 +static void
6103 +parse_reglist_cp8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6104 + char *str, int opindex ATTRIBUTE_UNUSED)
6105 +{
6106 + unsigned long regmask;
6107 + int slot, h_bit = 0;
6108 + char *tail;
6109 +
6110 + regmask = avr32_parse_cpreglist(str, &tail);
6111 + if (*tail)
6112 + as_bad(_("junk at end of line: `%s'"), tail);
6113 + else if (regmask & 0xffUL)
6114 + {
6115 + if (regmask & 0xff00UL)
6116 + as_bad(_("register list `%s' doesn't fit"), str);
6117 + regmask &= 0xff;
6118 + }
6119 + else if (regmask & 0xff00UL)
6120 + {
6121 + regmask >>= 8;
6122 + h_bit = 1;
6123 + }
6124 + else
6125 + as_warn(_("register list is empty"));
6126 +
6127 + slot = current_insn.next_slot++;
6128 + current_insn.field_value[slot].value = regmask;
6129 + slot = current_insn.next_slot++;
6130 + current_insn.field_value[slot].value = h_bit;
6131 +}
6132 +
6133 +static void
6134 +parse_reglist_cpd8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6135 + char *str, int opindex ATTRIBUTE_UNUSED)
6136 +{
6137 + unsigned long regmask, regmask_d = 0;
6138 + int slot, i;
6139 + char *tail;
6140 +
6141 + regmask = avr32_parse_cpreglist(str, &tail);
6142 + if (*tail)
6143 + as_bad(_("junk at end of line: `%s'"), tail);
6144 +
6145 + for (i = 0; i < 8; i++)
6146 + {
6147 + if (regmask & 1)
6148 + {
6149 + if (!(regmask & 2))
6150 + {
6151 + as_bad(_("register list `%s' doesn't fit"), str);
6152 + break;
6153 + }
6154 + regmask_d |= 1 << i;
6155 + }
6156 + else if (regmask & 2)
6157 + {
6158 + as_bad(_("register list `%s' doesn't fit"), str);
6159 + break;
6160 + }
6161 +
6162 + regmask >>= 2;
6163 + }
6164 +
6165 + slot = current_insn.next_slot++;
6166 + current_insn.field_value[slot].value = regmask_d;
6167 +}
6168 +
6169 +static void
6170 +parse_retval(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6171 + char *str, int opindex ATTRIBUTE_UNUSED)
6172 +{
6173 + int regid, slot;
6174 +
6175 + regid = avr32_parse_intreg(str);
6176 + if (regid < 0)
6177 + {
6178 + expressionS exp;
6179 + char *save;
6180 +
6181 + regid = 0;
6182 +
6183 + save = input_line_pointer;
6184 + input_line_pointer = str;
6185 + expression(&exp);
6186 + input_line_pointer = save;
6187 +
6188 + if (exp.X_op != O_constant)
6189 + as_bad(_("invalid return value `%s'"), str);
6190 + else
6191 + switch (exp.X_add_number)
6192 + {
6193 + case -1:
6194 + regid = AVR32_REG_LR;
6195 + break;
6196 + case 0:
6197 + regid = AVR32_REG_SP;
6198 + break;
6199 + case 1:
6200 + regid = AVR32_REG_PC;
6201 + break;
6202 + default:
6203 + as_bad(_("invalid return value `%s'"), str);
6204 + break;
6205 + }
6206 + }
6207 +
6208 + slot = current_insn.next_slot++;
6209 + current_insn.field_value[slot].value = regid;
6210 +}
6211 +
6212 +#define parse_mcall parse_intreg_disp
6213 +
6214 +static void
6215 +parse_jospinc(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6216 + char *str, int opindex ATTRIBUTE_UNUSED)
6217 +{
6218 + expressionS exp;
6219 + int slot;
6220 + char *save;
6221 +
6222 + save = input_line_pointer;
6223 + input_line_pointer = str;
6224 + expression(&exp);
6225 + input_line_pointer = save;
6226 +
6227 + slot = current_insn.next_slot++;
6228 +
6229 + if (exp.X_op == O_constant)
6230 + {
6231 + if (exp.X_add_number > 0)
6232 + exp.X_add_number--;
6233 + current_insn.field_value[slot].value = exp.X_add_number;
6234 + }
6235 + else
6236 + as_bad(_("invalid numeric expression `%s'"), str);
6237 +}
6238 +
6239 +#define parse_coh parse_nothing
6240 +
6241 +static void
6242 +parse_fpreg(const struct avr32_operand *op,
6243 + char *str, int opindex ATTRIBUTE_UNUSED)
6244 +{
6245 + unsigned long regid;
6246 + int slot;
6247 +
6248 + regid = strtoul(str + 2, NULL, 10);
6249 +
6250 + if ((regid >= 16) || (regid & ((1 << op->align_order) - 1)))
6251 + as_bad(_("invalid floating-point register `%s'"), str);
6252 +
6253 + slot = current_insn.next_slot++;
6254 + current_insn.field_value[slot].value = regid;
6255 + current_insn.field_value[slot].align_order = op->align_order;
6256 +}
6257 +
6258 +static void
6259 +parse_picoreg(const struct avr32_operand *op,
6260 + char *str, int opindex ATTRIBUTE_UNUSED)
6261 +{
6262 + unsigned long regid;
6263 + int slot;
6264 +
6265 + regid = avr32_parse_picoreg(str);
6266 + if (regid & ((1 << op->align_order) - 1))
6267 + as_bad(_("invalid double-word PiCo register `%s'"), str);
6268 +
6269 + slot = current_insn.next_slot++;
6270 + current_insn.field_value[slot].value = regid;
6271 + current_insn.field_value[slot].align_order = op->align_order;
6272 +}
6273 +
6274 +static void
6275 +parse_pico_reglist_w(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6276 + char *str, int opindex ATTRIBUTE_UNUSED)
6277 +{
6278 + unsigned long regmask;
6279 + int slot, h_bit = 0;
6280 + char *tail;
6281 +
6282 + regmask = avr32_parse_pico_reglist(str, &tail);
6283 + if (*tail)
6284 + as_bad(_("junk at end of line: `%s'"), tail);
6285 +
6286 + if (regmask & 0x00ffUL)
6287 + {
6288 + if (regmask & 0xff00UL)
6289 + as_bad(_("register list `%s' doesn't fit"), str);
6290 + regmask &= 0x00ffUL;
6291 + }
6292 + else if (regmask & 0xff00UL)
6293 + {
6294 + regmask >>= 8;
6295 + h_bit = 1;
6296 + }
6297 + else
6298 + as_warn(_("register list is empty"));
6299 +
6300 + slot = current_insn.next_slot++;
6301 + current_insn.field_value[slot].value = regmask;
6302 + slot = current_insn.next_slot++;
6303 + current_insn.field_value[slot].value = h_bit;
6304 +}
6305 +
6306 +static void
6307 +parse_pico_reglist_d(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6308 + char *str, int opindex ATTRIBUTE_UNUSED)
6309 +{
6310 + unsigned long regmask, regmask_d = 0;
6311 + int slot, i;
6312 + char *tail;
6313 +
6314 + regmask = avr32_parse_pico_reglist(str, &tail);
6315 + if (*tail)
6316 + as_bad(_("junk at end of line: `%s'"), tail);
6317 +
6318 + for (i = 0; i < 8; i++)
6319 + {
6320 + if (regmask & 1)
6321 + {
6322 + if (!(regmask & 2))
6323 + {
6324 + as_bad(_("register list `%s' doesn't fit"), str);
6325 + break;
6326 + }
6327 + regmask_d |= 1 << i;
6328 + }
6329 + else if (regmask & 2)
6330 + {
6331 + as_bad(_("register list `%s' doesn't fit"), str);
6332 + break;
6333 + }
6334 +
6335 + regmask >>= 2;
6336 + }
6337 +
6338 + slot = current_insn.next_slot++;
6339 + current_insn.field_value[slot].value = regmask_d;
6340 +}
6341 +
6342 +static void
6343 +parse_pico_in(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6344 + char *str, int opindex ATTRIBUTE_UNUSED)
6345 +{
6346 + unsigned long regid;
6347 + int slot;
6348 +
6349 + regid = strtoul(str + 2, NULL, 10);
6350 +
6351 + if (regid >= 12)
6352 + as_bad(_("invalid PiCo IN register `%s'"), str);
6353 +
6354 + slot = current_insn.next_slot++;
6355 + current_insn.field_value[slot].value = regid;
6356 + current_insn.field_value[slot].align_order = 0;
6357 +}
6358 +
6359 +#define parse_pico_out0 parse_nothing
6360 +#define parse_pico_out1 parse_nothing
6361 +#define parse_pico_out2 parse_nothing
6362 +#define parse_pico_out3 parse_nothing
6363 +
6364 +#define OP(name, sgn, pcrel, align, func) \
6365 + { AVR32_OPERAND_##name, sgn, pcrel, align, match_##func, parse_##func }
6366 +
6367 +struct avr32_operand avr32_operand_table[] = {
6368 + OP(INTREG, 0, 0, 0, intreg),
6369 + OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
6370 + OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
6371 + OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
6372 + OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
6373 + OP(INTREG_BSEL, 0, 0, 0, intreg_part),
6374 + OP(INTREG_HSEL, 0, 0, 1, intreg_part),
6375 + OP(INTREG_SDISP, 1, 0, 0, intreg_disp),
6376 + OP(INTREG_SDISP_H, 1, 0, 1, intreg_disp),
6377 + OP(INTREG_SDISP_W, 1, 0, 2, intreg_disp),
6378 + OP(INTREG_UDISP, 0, 0, 0, intreg_disp),
6379 + OP(INTREG_UDISP_H, 0, 0, 1, intreg_disp),
6380 + OP(INTREG_UDISP_W, 0, 0, 2, intreg_disp),
6381 + OP(INTREG_INDEX, 0, 0, 0, intreg_index),
6382 + OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
6383 + OP(DWREG, 0, 0, 1, intreg),
6384 + OP(PC_UDISP_W, 0, 1, 2, pc_disp),
6385 + OP(SP, 0, 0, 0, sp),
6386 + OP(SP_UDISP_W, 0, 0, 2, sp_disp),
6387 + OP(CPNO, 0, 0, 0, cpno),
6388 + OP(CPREG, 0, 0, 0, cpreg),
6389 + OP(CPREG_D, 0, 0, 1, cpreg),
6390 + OP(UNSIGNED_CONST, 0, 0, 0, const),
6391 + OP(UNSIGNED_CONST_W, 0, 0, 2, const),
6392 + OP(SIGNED_CONST, 1, 0, 0, const),
6393 + OP(SIGNED_CONST_W, 1, 0, 2, const),
6394 + OP(JMPLABEL, 1, 1, 1, jmplabel),
6395 + OP(UNSIGNED_NUMBER, 0, 0, 0, number),
6396 + OP(UNSIGNED_NUMBER_W, 0, 0, 2, number),
6397 + OP(REGLIST8, 0, 0, 0, reglist8),
6398 + OP(REGLIST9, 0, 0, 0, reglist9),
6399 + OP(REGLIST16, 0, 0, 0, reglist16),
6400 + OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
6401 + OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
6402 + OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
6403 + OP(RETVAL, 0, 0, 0, retval),
6404 + OP(MCALL, 1, 0, 2, mcall),
6405 + OP(JOSPINC, 0, 0, 0, jospinc),
6406 + OP(COH, 0, 0, 0, coh),
6407 + OP(FPREG_S, 0, 0, 0, fpreg),
6408 + OP(FPREG_D, 0, 0, 1, fpreg),
6409 + OP(PICO_REG_W, 0, 0, 0, picoreg),
6410 + OP(PICO_REG_D, 0, 0, 1, picoreg),
6411 + OP(PICO_REGLIST_W, 0, 0, 0, pico_reglist_w),
6412 + OP(PICO_REGLIST_D, 0, 0, 0, pico_reglist_d),
6413 + OP(PICO_IN, 0, 0, 0, pico_in),
6414 + OP(PICO_OUT0, 0, 0, 0, pico_out0),
6415 + OP(PICO_OUT1, 0, 0, 0, pico_out1),
6416 + OP(PICO_OUT2, 0, 0, 0, pico_out2),
6417 + OP(PICO_OUT3, 0, 0, 0, pico_out3),
6418 +};
6419 +
6420 +symbolS *
6421 +md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
6422 +{
6423 + pr_debug("md_undefined_symbol: %s\n", name);
6424 + return 0;
6425 +}
6426 +
6427 +struct avr32_relax_type
6428 +{
6429 + long lower_bound;
6430 + long upper_bound;
6431 + unsigned char align;
6432 + unsigned char length;
6433 + signed short next;
6434 +};
6435 +
6436 +#define EMPTY { 0, 0, 0, 0, -1 }
6437 +#define C(lower, upper, align, next) \
6438 + { (lower), (upper), (align), 2, AVR32_OPC_##next }
6439 +#define E(lower, upper, align) \
6440 + { (lower), (upper), (align), 4, -1 }
6441 +
6442 +static const struct avr32_relax_type avr32_relax_table[] =
6443 + {
6444 + /* 0 */
6445 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6446 + EMPTY, EMPTY, EMPTY,
6447 + E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0),
6448 + EMPTY,
6449 + /* 16 */
6450 + EMPTY, EMPTY, EMPTY, EMPTY,
6451 +
6452 + C(-256, 254, 1, BREQ2), C(-256, 254, 1, BRNE2),
6453 + C(-256, 254, 1, BRCC2), C(-256, 254, 1, BRCS2),
6454 + C(-256, 254, 1, BRGE2), C(-256, 254, 1, BRLT2),
6455 + C(-256, 254, 1, BRMI2), C(-256, 254, 1, BRPL2),
6456 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6457 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6458 + /* 32 */
6459 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6460 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6461 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6462 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6463 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6464 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6465 +
6466 + EMPTY, EMPTY, EMPTY, EMPTY,
6467 + /* 48 */
6468 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6469 + EMPTY, EMPTY, EMPTY,
6470 +
6471 + C(-32, 31, 0, CP_W3), E(-1048576, 1048575, 0),
6472 +
6473 + EMPTY, EMPTY, EMPTY,
6474 + /* 64: csrfcz */
6475 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6476 + E(0, 65535, 0), E(0, 65535, 0),
6477 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6478 + E(-32768, 32767, 0),
6479 + /* 80: LD_SB2 */
6480 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6481 +
6482 + C(0, 7, 0, LD_UB4), E(-32768, 32767, 0),
6483 +
6484 + EMPTY,
6485 + EMPTY, EMPTY,
6486 +
6487 + C(0, 14, 1, LD_SH4), E(-32768, 32767, 0),
6488 +
6489 + EMPTY, EMPTY, EMPTY,
6490 +
6491 + C(0, 14, 1, LD_UH4),
6492 +
6493 + /* 96: LD_UH4 */
6494 + E(-32768, 32767, 0),
6495 +
6496 + EMPTY, EMPTY, EMPTY, EMPTY,
6497 +
6498 + C(0, 124, 2, LD_W4), E(-32768, 32767, 0),
6499 +
6500 + E(0, 1020, 2), /* LDC_D1 */
6501 + EMPTY, EMPTY,
6502 + E(0, 1020, 2), /* LDC_W1 */
6503 + EMPTY, EMPTY,
6504 + E(0, 16380, 2), /* LDC0_D */
6505 + E(0, 16380, 2), /* LDC0_W */
6506 + EMPTY,
6507 +
6508 + /* 112: LDCM_D_PU */
6509 + EMPTY, EMPTY, EMPTY,
6510 +
6511 + C(0, 508, 2, LDDPC_EXT), E(-32768, 32767, 0),
6512 +
6513 + EMPTY,EMPTY, EMPTY,
6514 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6515 +
6516 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6517 + /* 134: MACHH_W */
6518 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6519 + E(-131072, 131068, 2), /* MCALL */
6520 + E(0, 1020, 2), /* MFDR */
6521 + E(0, 1020, 2), /* MFSR */
6522 + EMPTY, EMPTY,
6523 +
6524 + C(-128, 127, 0, MOV2), E(-1048576, 1048575, 0),
6525 +
6526 + EMPTY, EMPTY, EMPTY,
6527 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6528 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6529 +
6530 + E(-128, 127, 0), /* MOVEQ2 */
6531 + E(-128, 127, 0), /* MOVNE2 */
6532 + E(-128, 127, 0), /* MOVCC2 */
6533 + E(-128, 127, 0), /* 166: MOVCS2 */
6534 + E(-128, 127, 0), /* MOVGE2 */
6535 + E(-128, 127, 0), /* MOVLT2 */
6536 + E(-128, 127, 0), /* MOVMI2 */
6537 + E(-128, 127, 0), /* MOVPL2 */
6538 + E(-128, 127, 0), /* MOVLS2 */
6539 + E(-128, 127, 0), /* MOVGT2 */
6540 + E(-128, 127, 0), /* MOVLE2 */
6541 + E(-128, 127, 0), /* MOVHI2 */
6542 + E(-128, 127, 0), /* MOVVS2 */
6543 + E(-128, 127, 0), /* MOVVC2 */
6544 + E(-128, 127, 0), /* MOVQS2 */
6545 + E(-128, 127, 0), /* MOVAL2 */
6546 +
6547 + E(0, 1020, 2), /* MTDR */
6548 + E(0, 1020, 2), /* MTSR */
6549 + EMPTY,
6550 + EMPTY,
6551 + E(-128, 127, 0), /* MUL3 */
6552 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6553 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6554 + /* 198: MVCR_W */
6555 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6556 + E(0, 65535, 0), E(0, 65535, 0),
6557 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6558 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6559 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6560 + /* 230: PASR_H */
6561 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6562 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6563 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6564 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6565 + /* 262: PUNPCKSB_H */
6566 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6567 +
6568 + C(-1024, 1022, 1, RCALL2), E(-2097152, 2097150, 1),
6569 +
6570 + EMPTY,
6571 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6572 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6573 + EMPTY, EMPTY, EMPTY,
6574 +
6575 + C(-1024, 1022, 1, BRAL),
6576 +
6577 + EMPTY, EMPTY, EMPTY,
6578 + E(-128, 127, 0), /* RSUB2 */
6579 + /* 294: SATADD_H */
6580 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6581 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6582 + E(0, 255, 0), /* SLEEP */
6583 + EMPTY, EMPTY,
6584 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6585 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6586 + /* 326: ST_B2 */
6587 + EMPTY, EMPTY,
6588 + C(0, 7, 0, ST_B4), E(-32768, 32767, 0),
6589 + EMPTY, EMPTY, EMPTY, EMPTY,
6590 + E(-32768, 32767, 0),
6591 + EMPTY, EMPTY, EMPTY,
6592 + C(0, 14, 1, ST_H4), E(-32768, 32767, 0),
6593 + EMPTY, EMPTY,
6594 + EMPTY,
6595 + C(0, 60, 2, ST_W4), E(-32768, 32767, 0),
6596 + E(0, 1020, 2), /* STC_D1 */
6597 + EMPTY, EMPTY,
6598 + E(0, 1020, 2), /* STC_W1 */
6599 + EMPTY, EMPTY,
6600 + E(0, 16380, 2), /* STC0_D */
6601 + E(0, 16380, 2), /* STC0_W */
6602 +
6603 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6604 + /* 358: STDSP */
6605 + EMPTY, EMPTY,
6606 + E(0, 1020, 2), /* STHH_W1 */
6607 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6608 + EMPTY, EMPTY, EMPTY,
6609 + E(-32768, 32767, 0),
6610 + C(-512, 508, 2, SUB4),
6611 + C(-128, 127, 0, SUB4), E(-1048576, 1048576, 0),
6612 + /* SUB{cond} */
6613 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6614 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6615 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6616 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6617 + /* SUBF{cond} */
6618 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6619 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6620 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6621 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6622 + EMPTY,
6623 +
6624 + /* 406: SWAP_B */
6625 + EMPTY, EMPTY, EMPTY,
6626 + E(0, 255, 0), /* SYNC */
6627 + EMPTY, EMPTY, EMPTY, EMPTY,
6628 + /* 414: TST */
6629 + EMPTY, EMPTY, E(-65536, 65535, 2), E(-65536, 65535, 2), E(-65536, 65535, 2), EMPTY, EMPTY, EMPTY,
6630 + /* 422: RSUB{cond} */
6631 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6632 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6633 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6634 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6635 + /* 436: ADD{cond} */
6636 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6637 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6638 + /* 454: SUB{cond} */
6639 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6640 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6641 + /* 472: AND{cond} */
6642 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6643 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6644 + /* 486: OR{cond} */
6645 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6646 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6647 + /* 502: EOR{cond} */
6648 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6649 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6650 + /* 518: LD.w{cond} */
6651 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6652 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6653 + /* 534: LD.sh{cond} */
6654 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6655 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6656 + /* 550: LD.uh{cond} */
6657 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6658 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6659 + /* 566: LD.sb{cond} */
6660 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6661 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6662 + /* 582: LD.ub{cond} */
6663 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6664 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6665 + /* 596: ST.w{cond} */
6666 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6667 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6668 + /* 614: ST.h{cond} */
6669 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6670 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6671 + /* 630: ST.b{cond} */
6672 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6673 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6674 + /* 646: movh */
6675 + E(0, 65535, 0)
6676 + };
6677 +
6678 +#undef E
6679 +#undef C
6680 +#undef EMPTY
6681 +
6682 +#define AVR32_RS_NONE (-1)
6683 +
6684 +#define avr32_rs_size(state) (avr32_relax_table[(state)].length)
6685 +#define avr32_rs_align(state) (avr32_relax_table[(state)].align)
6686 +#define relax_more(state) (avr32_relax_table[(state)].next)
6687 +
6688 +#define opc_initial_substate(opc) ((opc)->id)
6689 +
6690 +static int need_relax(int subtype, offsetT distance)
6691 +{
6692 + offsetT upper_bound, lower_bound;
6693 +
6694 + upper_bound = avr32_relax_table[subtype].upper_bound;
6695 + lower_bound = avr32_relax_table[subtype].lower_bound;
6696 +
6697 + if (distance & ((1 << avr32_rs_align(subtype)) - 1))
6698 + return 1;
6699 + if ((distance > upper_bound) || (distance < lower_bound))
6700 + return 1;
6701 +
6702 + return 0;
6703 +}
6704 +
6705 +enum {
6706 + LDA_SUBTYPE_MOV1,
6707 + LDA_SUBTYPE_MOV2,
6708 + LDA_SUBTYPE_SUB,
6709 + LDA_SUBTYPE_LDDPC,
6710 + LDA_SUBTYPE_LDW,
6711 + LDA_SUBTYPE_GOTLOAD,
6712 + LDA_SUBTYPE_GOTLOAD_LARGE,
6713 +};
6714 +
6715 +enum {
6716 + CALL_SUBTYPE_RCALL1,
6717 + CALL_SUBTYPE_RCALL2,
6718 + CALL_SUBTYPE_MCALL_CP,
6719 + CALL_SUBTYPE_MCALL_GOT,
6720 + CALL_SUBTYPE_MCALL_LARGE,
6721 +};
6722 +
6723 +#define LDA_INITIAL_SIZE (avr32_pic ? 4 : 2)
6724 +#define CALL_INITIAL_SIZE 2
6725 +
6726 +#define need_reloc(sym, seg, pcrel) \
6727 + (!(S_IS_DEFINED(sym) \
6728 + && ((pcrel && S_GET_SEGMENT(sym) == seg) \
6729 + || (!pcrel && S_GET_SEGMENT(sym) == absolute_section))) \
6730 + || S_FORCE_RELOC(sym, 1))
6731 +
6732 +/* Return an initial guess of the length by which a fragment must grow to
6733 + hold a branch to reach its destination.
6734 + Also updates fr_type/fr_subtype as necessary.
6735 +
6736 + Called just before doing relaxation.
6737 + Any symbol that is now undefined will not become defined.
6738 + The guess for fr_var is ACTUALLY the growth beyond fr_fix.
6739 + Whatever we do to grow fr_fix or fr_var contributes to our returned value.
6740 + Although it may not be explicit in the frag, pretend fr_var starts with a
6741 + 0 value. */
6742 +
6743 +static int
6744 +avr32_default_estimate_size_before_relax (fragS *fragP, segT segment)
6745 +{
6746 + int growth = 0;
6747 +
6748 + assert(fragP);
6749 + assert(fragP->fr_symbol);
6750 +
6751 + if (fragP->tc_frag_data.force_extended
6752 + || need_reloc(fragP->fr_symbol, segment, fragP->tc_frag_data.pcrel))
6753 + {
6754 + int largest_state = fragP->fr_subtype;
6755 + while (relax_more(largest_state) != AVR32_RS_NONE)
6756 + largest_state = relax_more(largest_state);
6757 + growth = avr32_rs_size(largest_state) - fragP->fr_var;
6758 + }
6759 + else
6760 + {
6761 + growth = avr32_rs_size(fragP->fr_subtype) - fragP->fr_var;
6762 + }
6763 +
6764 + pr_debug("%s:%d: md_estimate_size_before_relax: %d\n",
6765 + fragP->fr_file, fragP->fr_line, growth);
6766 +
6767 + return growth;
6768 +}
6769 +
6770 +static int
6771 +avr32_lda_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
6772 +{
6773 + return fragP->fr_var - LDA_INITIAL_SIZE;
6774 +}
6775 +
6776 +static int
6777 +avr32_call_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
6778 +{
6779 + return fragP->fr_var - CALL_INITIAL_SIZE;
6780 +}
6781 +
6782 +static int
6783 +avr32_cpool_estimate_size_before_relax(fragS *fragP,
6784 + segT segment ATTRIBUTE_UNUSED)
6785 +{
6786 + return fragP->fr_var;
6787 +}
6788 +
6789 +/* This macro may be defined to relax a frag. GAS will call this with the
6790 + * segment, the frag, and the change in size of all previous frags;
6791 + * md_relax_frag should return the change in size of the frag. */
6792 +static long
6793 +avr32_default_relax_frag (segT segment, fragS *fragP, long stretch)
6794 +{
6795 + int state, next_state;
6796 + symbolS *symbolP; /* The target symbol */
6797 + long growth = 0;
6798 +
6799 + state = next_state = fragP->fr_subtype;
6800 +
6801 + symbolP = fragP->fr_symbol;
6802 +
6803 + if (fragP->tc_frag_data.force_extended
6804 + || need_reloc(symbolP, segment, fragP->tc_frag_data.pcrel))
6805 + {
6806 + /* Symbol must be resolved by the linker. Emit the largest
6807 + possible opcode. */
6808 + while (relax_more(next_state) != AVR32_RS_NONE)
6809 + next_state = relax_more(next_state);
6810 + }
6811 + else
6812 + {
6813 + addressT address; /* The address of fragP */
6814 + addressT target; /* The address of the target symbol */
6815 + offsetT distance; /* The distance between the insn and the symbol */
6816 + fragS *sym_frag;
6817 +
6818 + address = fragP->fr_address;
6819 + target = fragP->fr_offset;
6820 + symbolP = fragP->fr_symbol;
6821 + sym_frag = symbol_get_frag(symbolP);
6822 +
6823 + address += fragP->fr_fix - fragP->fr_var;
6824 + target += S_GET_VALUE(symbolP);
6825 +
6826 + if (stretch != 0
6827 + && sym_frag->relax_marker != fragP->relax_marker
6828 + && S_GET_SEGMENT(symbolP) == segment)
6829 + /* if it was correctly aligned before, make sure it stays aligned */
6830 + target += stretch & (~0UL << avr32_rs_align(state));
6831 +
6832 + if (fragP->tc_frag_data.pcrel)
6833 + distance = target - (address & (~0UL << avr32_rs_align(state)));
6834 + else
6835 + distance = target;
6836 +
6837 + pr_debug("%s:%d: relax more? 0x%x - 0x%x = 0x%x (%d), align %d\n",
6838 + fragP->fr_file, fragP->fr_line, target, address,
6839 + distance, distance, avr32_rs_align(state));
6840 +
6841 + if (need_relax(state, distance))
6842 + {
6843 + if (relax_more(state) != AVR32_RS_NONE)
6844 + next_state = relax_more(state);
6845 + pr_debug("%s:%d: relax more %d -> %d (%d - %d, align %d)\n",
6846 + fragP->fr_file, fragP->fr_line, state, next_state,
6847 + target, address, avr32_rs_align(state));
6848 + }
6849 + }
6850 +
6851 + growth = avr32_rs_size(next_state) - avr32_rs_size(state);
6852 + fragP->fr_subtype = next_state;
6853 +
6854 + pr_debug("%s:%d: md_relax_frag: growth=%d, subtype=%d, opc=0x%08lx\n",
6855 + fragP->fr_file, fragP->fr_line, growth, fragP->fr_subtype,
6856 + avr32_opc_table[next_state].value);
6857 +
6858 + return growth;
6859 +}
6860 +
6861 +static long
6862 +avr32_lda_relax_frag(segT segment, fragS *fragP, long stretch)
6863 +{
6864 + struct cpool *pool= NULL;
6865 + unsigned int entry = 0;
6866 + addressT address, target;
6867 + offsetT distance;
6868 + symbolS *symbolP;
6869 + fragS *sym_frag;
6870 + long old_size, new_size;
6871 +
6872 + symbolP = fragP->fr_symbol;
6873 + old_size = fragP->fr_var;
6874 + if (!avr32_pic)
6875 + {
6876 + pool = fragP->tc_frag_data.pool;
6877 + entry = fragP->tc_frag_data.pool_entry;
6878 + }
6879 +
6880 + address = fragP->fr_address;
6881 + address += fragP->fr_fix - LDA_INITIAL_SIZE;
6882 +
6883 + if (!S_IS_DEFINED(symbolP) || S_FORCE_RELOC(symbolP, 1))
6884 + goto relax_max;
6885 +
6886 + target = fragP->fr_offset;
6887 + sym_frag = symbol_get_frag(symbolP);
6888 + target += S_GET_VALUE(symbolP);
6889 +
6890 + if (sym_frag->relax_marker != fragP->relax_marker
6891 + && S_GET_SEGMENT(symbolP) == segment)
6892 + target += stretch;
6893 +
6894 + distance = target - address;
6895 +
6896 + pr_debug("lda_relax_frag: target: %d, address: %d, var: %d\n",
6897 + target, address, fragP->fr_var);
6898 +
6899 + if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
6900 + && target <= 127 && (offsetT)target >= -128)
6901 + {
6902 + if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
6903 + || fragP->fr_subtype == LDA_SUBTYPE_LDW)
6904 + pool->literals[entry].refcount--;
6905 + new_size = 2;
6906 + fragP->fr_subtype = LDA_SUBTYPE_MOV1;
6907 + }
6908 + else if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
6909 + && target <= 1048575 && (offsetT)target >= -1048576)
6910 + {
6911 + if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
6912 + || fragP->fr_subtype == LDA_SUBTYPE_LDW)
6913 + pool->literals[entry].refcount--;
6914 + new_size = 4;
6915 + fragP->fr_subtype = LDA_SUBTYPE_MOV2;
6916 + }
6917 + else if (!linkrelax && S_GET_SEGMENT(symbolP) == segment
6918 + /* the field will be negated, so this is really -(-32768)
6919 + and -(32767) */
6920 + && distance <= 32768 && distance >= -32767)
6921 + {
6922 + if (!avr32_pic
6923 + && (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
6924 + || fragP->fr_subtype == LDA_SUBTYPE_LDW))
6925 + pool->literals[entry].refcount--;
6926 + new_size = 4;
6927 + fragP->fr_subtype = LDA_SUBTYPE_SUB;
6928 + }
6929 + else
6930 + {
6931 + relax_max:
6932 + if (avr32_pic)
6933 + {
6934 + if (linkrelax)
6935 + {
6936 + new_size = 8;
6937 + fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD_LARGE;
6938 + }
6939 + else
6940 + {
6941 + new_size = 4;
6942 + fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD;
6943 + }
6944 + }
6945 + else
6946 + {
6947 + if (fragP->fr_subtype != LDA_SUBTYPE_LDDPC
6948 + && fragP->fr_subtype != LDA_SUBTYPE_LDW)
6949 + pool->literals[entry].refcount++;
6950 +
6951 + sym_frag = symbol_get_frag(pool->symbol);
6952 + target = (sym_frag->fr_address + sym_frag->fr_fix
6953 + + pool->padding + pool->literals[entry].offset);
6954 +
6955 + pr_debug("cpool sym address: 0x%lx\n",
6956 + sym_frag->fr_address + sym_frag->fr_fix);
6957 +
6958 + know(pool->section == segment);
6959 +
6960 + if (sym_frag->relax_marker != fragP->relax_marker)
6961 + target += stretch;
6962 +
6963 + distance = target - address;
6964 + if (distance <= 508 && distance >= 0)
6965 + {
6966 + new_size = 2;
6967 + fragP->fr_subtype = LDA_SUBTYPE_LDDPC;
6968 + }
6969 + else
6970 + {
6971 + new_size = 4;
6972 + fragP->fr_subtype = LDA_SUBTYPE_LDW;
6973 + }
6974 +
6975 + pr_debug("lda_relax_frag (cpool): target=0x%lx, address=0x%lx, refcount=%d\n",
6976 + target, address, pool->literals[entry].refcount);
6977 + }
6978 + }
6979 +
6980 + fragP->fr_var = new_size;
6981 +
6982 + pr_debug("%s:%d: lda: relax pass done. subtype: %d, growth: %ld\n",
6983 + fragP->fr_file, fragP->fr_line,
6984 + fragP->fr_subtype, new_size - old_size);
6985 +
6986 + return new_size - old_size;
6987 +}
6988 +
6989 +static long
6990 +avr32_call_relax_frag(segT segment, fragS *fragP, long stretch)
6991 +{
6992 + struct cpool *pool = NULL;
6993 + unsigned int entry = 0;
6994 + addressT address, target;
6995 + offsetT distance;
6996 + symbolS *symbolP;
6997 + fragS *sym_frag;
6998 + long old_size, new_size;
6999 +
7000 + symbolP = fragP->fr_symbol;
7001 + old_size = fragP->fr_var;
7002 + if (!avr32_pic)
7003 + {
7004 + pool = fragP->tc_frag_data.pool;
7005 + entry = fragP->tc_frag_data.pool_entry;
7006 + }
7007 +
7008 + address = fragP->fr_address;
7009 + address += fragP->fr_fix - CALL_INITIAL_SIZE;
7010 +
7011 + if (need_reloc(symbolP, segment, 1))
7012 + {
7013 + pr_debug("call: must emit reloc\n");
7014 + goto relax_max;
7015 + }
7016 +
7017 + target = fragP->fr_offset;
7018 + sym_frag = symbol_get_frag(symbolP);
7019 + target += S_GET_VALUE(symbolP);
7020 +
7021 + if (sym_frag->relax_marker != fragP->relax_marker
7022 + && S_GET_SEGMENT(symbolP) == segment)
7023 + target += stretch;
7024 +
7025 + distance = target - address;
7026 +
7027 + if (distance <= 1022 && distance >= -1024)
7028 + {
7029 + pr_debug("call: distance is %d, emitting short rcall\n", distance);
7030 + if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
7031 + pool->literals[entry].refcount--;
7032 + new_size = 2;
7033 + fragP->fr_subtype = CALL_SUBTYPE_RCALL1;
7034 + }
7035 + else if (distance <= 2097150 && distance >= -2097152)
7036 + {
7037 + pr_debug("call: distance is %d, emitting long rcall\n", distance);
7038 + if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
7039 + pool->literals[entry].refcount--;
7040 + new_size = 4;
7041 + fragP->fr_subtype = CALL_SUBTYPE_RCALL2;
7042 + }
7043 + else
7044 + {
7045 + pr_debug("call: distance %d too far, emitting something big\n", distance);
7046 +
7047 + relax_max:
7048 + if (avr32_pic)
7049 + {
7050 + if (linkrelax)
7051 + {
7052 + new_size = 10;
7053 + fragP->fr_subtype = CALL_SUBTYPE_MCALL_LARGE;
7054 + }
7055 + else
7056 + {
7057 + new_size = 4;
7058 + fragP->fr_subtype = CALL_SUBTYPE_MCALL_GOT;
7059 + }
7060 + }
7061 + else
7062 + {
7063 + if (fragP->fr_subtype != CALL_SUBTYPE_MCALL_CP)
7064 + pool->literals[entry].refcount++;
7065 +
7066 + new_size = 4;
7067 + fragP->fr_subtype = CALL_SUBTYPE_MCALL_CP;
7068 + }
7069 + }
7070 +
7071 + fragP->fr_var = new_size;
7072 +
7073 + pr_debug("%s:%d: call: relax pass done, growth: %d, fr_var: %d\n",
7074 + fragP->fr_file, fragP->fr_line,
7075 + new_size - old_size, fragP->fr_var);
7076 +
7077 + return new_size - old_size;
7078 +}
7079 +
7080 +static long
7081 +avr32_cpool_relax_frag(segT segment ATTRIBUTE_UNUSED,
7082 + fragS *fragP,
7083 + long stretch ATTRIBUTE_UNUSED)
7084 +{
7085 + struct cpool *pool;
7086 + addressT address;
7087 + long old_size, new_size;
7088 + unsigned int entry;
7089 +
7090 + pool = fragP->tc_frag_data.pool;
7091 + address = fragP->fr_address + fragP->fr_fix;
7092 + old_size = fragP->fr_var;
7093 + new_size = 0;
7094 +
7095 + for (entry = 0; entry < pool->next_free_entry; entry++)
7096 + {
7097 + if (pool->literals[entry].refcount > 0)
7098 + {
7099 + pool->literals[entry].offset = new_size;
7100 + new_size += 4;
7101 + }
7102 + }
7103 +
7104 + fragP->fr_var = new_size;
7105 +
7106 + return new_size - old_size;
7107 +}
7108 +
7109 +/* *fragP has been relaxed to its final size, and now needs to have
7110 + the bytes inside it modified to conform to the new size.
7111 +
7112 + Called after relaxation is finished.
7113 + fragP->fr_type == rs_machine_dependent.
7114 + fragP->fr_subtype is the subtype of what the address relaxed to. */
7115 +
7116 +static void
7117 +avr32_default_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
7118 + segT segment ATTRIBUTE_UNUSED,
7119 + fragS *fragP)
7120 +{
7121 + const struct avr32_opcode *opc;
7122 + const struct avr32_ifield *ifield;
7123 + bfd_reloc_code_real_type r_type;
7124 + symbolS *symbolP;
7125 + fixS *fixP;
7126 + bfd_vma value;
7127 + int subtype;
7128 +
7129 + opc = &avr32_opc_table[fragP->fr_subtype];
7130 + ifield = opc->fields[opc->var_field];
7131 + symbolP = fragP->fr_symbol;
7132 + subtype = fragP->fr_subtype;
7133 + r_type = opc->reloc_type;
7134 +
7135 + /* Clear the opcode bits and the bits belonging to the relaxed
7136 + field. We assume all other fields stay the same. */
7137 + value = bfd_getb32(fragP->fr_opcode);
7138 + value &= ~(opc->mask | ifield->mask);
7139 +
7140 + /* Insert the new opcode */
7141 + value |= opc->value;
7142 + bfd_putb32(value, fragP->fr_opcode);
7143 +
7144 + fragP->fr_fix += opc->size - fragP->fr_var;
7145 +
7146 + if (fragP->tc_frag_data.reloc_info != AVR32_OPINFO_NONE)
7147 + {
7148 + switch (fragP->tc_frag_data.reloc_info)
7149 + {
7150 + case AVR32_OPINFO_HI:
7151 + r_type = BFD_RELOC_HI16;
7152 + break;
7153 + case AVR32_OPINFO_LO:
7154 + r_type = BFD_RELOC_LO16;
7155 + break;
7156 + case AVR32_OPINFO_GOT:
7157 + switch (r_type)
7158 + {
7159 + case BFD_RELOC_AVR32_18W_PCREL:
7160 + r_type = BFD_RELOC_AVR32_GOT18SW;
7161 + break;
7162 + case BFD_RELOC_AVR32_16S:
7163 + r_type = BFD_RELOC_AVR32_GOT16S;
7164 + break;
7165 + default:
7166 + BAD_CASE(r_type);
7167 + break;
7168 + }
7169 + break;
7170 + default:
7171 + BAD_CASE(fragP->tc_frag_data.reloc_info);
7172 + break;
7173 + }
7174 + }
7175 +
7176 + pr_debug("%s:%d: convert_frag: new %s fixup\n",
7177 + fragP->fr_file, fragP->fr_line,
7178 + bfd_get_reloc_code_name(r_type));
7179 +
7180 +#if 1
7181 + fixP = fix_new_exp(fragP, fragP->fr_fix - opc->size, opc->size,
7182 + &fragP->tc_frag_data.exp,
7183 + fragP->tc_frag_data.pcrel, r_type);
7184 +#else
7185 + fixP = fix_new(fragP, fragP->fr_fix - opc->size, opc->size, symbolP,
7186 + fragP->fr_offset, fragP->tc_frag_data.pcrel, r_type);
7187 +#endif
7188 +
7189 + /* Revert fix_new brain damage. "dot_value" is the value of PC at
7190 + the point of the fixup, relative to the frag address. fix_new()
7191 + and friends think they are only being called during the assembly
7192 + pass, not during relaxation or similar, so fx_dot_value, fx_file
7193 + and fx_line are all initialized to the wrong value. But we don't
7194 + know the size of the fixup until now, so we really can't live up
7195 + to the assumptions these functions make about the target. What
7196 + do these functions think the "where" and "frag" argument mean
7197 + anyway? */
7198 + fixP->fx_dot_value = fragP->fr_fix - opc->size;
7199 + fixP->fx_file = fragP->fr_file;
7200 + fixP->fx_line = fragP->fr_line;
7201 +
7202 + fixP->tc_fix_data.ifield = ifield;
7203 + fixP->tc_fix_data.align = avr32_rs_align(subtype);
7204 + fixP->tc_fix_data.min = avr32_relax_table[subtype].lower_bound;
7205 + fixP->tc_fix_data.max = avr32_relax_table[subtype].upper_bound;
7206 +}
7207 +
7208 +static void
7209 +avr32_lda_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
7210 + segT segment ATTRIBUTE_UNUSED,
7211 + fragS *fragP)
7212 +{
7213 + const struct avr32_opcode *opc;
7214 + const struct avr32_ifield *ifield;
7215 + bfd_reloc_code_real_type r_type;
7216 + expressionS exp;
7217 + struct cpool *pool;
7218 + fixS *fixP;
7219 + bfd_vma value;
7220 + int regid, pcrel = 0, align = 0;
7221 + char *p;
7222 +
7223 + r_type = BFD_RELOC_NONE;
7224 + regid = fragP->tc_frag_data.reloc_info;
7225 + p = fragP->fr_opcode;
7226 + exp.X_add_symbol = fragP->fr_symbol;
7227 + exp.X_add_number = fragP->fr_offset;
7228 + exp.X_op = O_symbol;
7229 +
7230 + pr_debug("%s:%d: lda_convert_frag, subtype: %d, fix: %d, var: %d, regid: %d\n",
7231 + fragP->fr_file, fragP->fr_line,
7232 + fragP->fr_subtype, fragP->fr_fix, fragP->fr_var, regid);
7233 +
7234 + switch (fragP->fr_subtype)
7235 + {
7236 + case LDA_SUBTYPE_MOV1:
7237 + opc = &avr32_opc_table[AVR32_OPC_MOV1];
7238 + opc->fields[0]->insert(opc->fields[0], p, regid);
7239 + ifield = opc->fields[1];
7240 + r_type = opc->reloc_type;
7241 + break;
7242 + case LDA_SUBTYPE_MOV2:
7243 + opc = &avr32_opc_table[AVR32_OPC_MOV2];
7244 + opc->fields[0]->insert(opc->fields[0], p, regid);
7245 + ifield = opc->fields[1];
7246 + r_type = opc->reloc_type;
7247 + break;
7248 + case LDA_SUBTYPE_SUB:
7249 + opc = &avr32_opc_table[AVR32_OPC_SUB5];
7250 + opc->fields[0]->insert(opc->fields[0], p, regid);
7251 + opc->fields[1]->insert(opc->fields[1], p, AVR32_REG_PC);
7252 + ifield = opc->fields[2];
7253 + r_type = BFD_RELOC_AVR32_16N_PCREL;
7254 +
7255 + /* Pretend that SUB5 isn't a "negated" pcrel expression for now.
7256 + We'll have to fix it up later when we know whether to
7257 + generate a reloc for it (in which case the linker will negate
7258 + it, so we shouldn't). */
7259 + pcrel = 1;
7260 + break;
7261 + case LDA_SUBTYPE_LDDPC:
7262 + opc = &avr32_opc_table[AVR32_OPC_LDDPC];
7263 + align = 2;
7264 + r_type = BFD_RELOC_AVR32_9W_CP;
7265 + goto cpool_common;
7266 + case LDA_SUBTYPE_LDW:
7267 + opc = &avr32_opc_table[AVR32_OPC_LDDPC_EXT];
7268 + r_type = BFD_RELOC_AVR32_16_CP;
7269 + cpool_common:
7270 + opc->fields[0]->insert(opc->fields[0], p, regid);
7271 + ifield = opc->fields[1];
7272 + pool = fragP->tc_frag_data.pool;
7273 + exp.X_add_symbol = pool->symbol;
7274 + exp.X_add_number = pool->literals[fragP->tc_frag_data.pool_entry].offset;
7275 + pcrel = 1;
7276 + break;
7277 + case LDA_SUBTYPE_GOTLOAD_LARGE:
7278 + /* ld.w Rd, r6[Rd << 2] (last) */
7279 + opc = &avr32_opc_table[AVR32_OPC_LD_W5];
7280 + bfd_putb32(opc->value, p + 4);
7281 + opc->fields[0]->insert(opc->fields[0], p + 4, regid);
7282 + opc->fields[1]->insert(opc->fields[1], p + 4, 6);
7283 + opc->fields[2]->insert(opc->fields[2], p + 4, regid);
7284 + opc->fields[3]->insert(opc->fields[3], p + 4, 2);
7285 +
7286 + /* mov Rd, (got_offset / 4) */
7287 + opc = &avr32_opc_table[AVR32_OPC_MOV2];
7288 + opc->fields[0]->insert(opc->fields[0], p, regid);
7289 + ifield = opc->fields[1];
7290 + r_type = BFD_RELOC_AVR32_LDA_GOT;
7291 + break;
7292 + case LDA_SUBTYPE_GOTLOAD:
7293 + opc = &avr32_opc_table[AVR32_OPC_LD_W4];
7294 + opc->fields[0]->insert(opc->fields[0], p, regid);
7295 + opc->fields[1]->insert(opc->fields[1], p, 6);
7296 + ifield = opc->fields[2];
7297 + if (r_type == BFD_RELOC_NONE)
7298 + r_type = BFD_RELOC_AVR32_GOT16S;
7299 + break;
7300 + default:
7301 + BAD_CASE(fragP->fr_subtype);
7302 + }
7303 +
7304 + value = bfd_getb32(p);
7305 + value &= ~(opc->mask | ifield->mask);
7306 + value |= opc->value;
7307 + bfd_putb32(value, p);
7308 +
7309 + fragP->fr_fix += fragP->fr_var - LDA_INITIAL_SIZE;
7310 +
7311 + if (fragP->fr_next
7312 + && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
7313 + != fragP->fr_fix))
7314 + {
7315 + fprintf(stderr, "LDA frag: fr_fix is wrong! fragP->fr_var = %ld, r_type = %s\n",
7316 + fragP->fr_var, bfd_get_reloc_code_name(r_type));
7317 + abort();
7318 + }
7319 +
7320 + fixP = fix_new_exp(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
7321 + &exp, pcrel, r_type);
7322 +
7323 + /* Revert fix_new brain damage. "dot_value" is the value of PC at
7324 + the point of the fixup, relative to the frag address. fix_new()
7325 + and friends think they are only being called during the assembly
7326 + pass, not during relaxation or similar, so fx_dot_value, fx_file
7327 + and fx_line are all initialized to the wrong value. But we don't
7328 + know the size of the fixup until now, so we really can't live up
7329 + to the assumptions these functions make about the target. What
7330 + do these functions think the "where" and "frag" argument mean
7331 + anyway? */
7332 + fixP->fx_dot_value = fragP->fr_fix - opc->size;
7333 + fixP->fx_file = fragP->fr_file;
7334 + fixP->fx_line = fragP->fr_line;
7335 +
7336 + fixP->tc_fix_data.ifield = ifield;
7337 + fixP->tc_fix_data.align = align;
7338 + /* these are only used if the fixup can actually be resolved */
7339 + fixP->tc_fix_data.min = -32768;
7340 + fixP->tc_fix_data.max = 32767;
7341 +}
7342 +
7343 +static void
7344 +avr32_call_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
7345 + segT segment ATTRIBUTE_UNUSED,
7346 + fragS *fragP)
7347 +{
7348 + const struct avr32_opcode *opc = NULL;
7349 + const struct avr32_ifield *ifield;
7350 + bfd_reloc_code_real_type r_type;
7351 + symbolS *symbol;
7352 + offsetT offset;
7353 + fixS *fixP;
7354 + bfd_vma value;
7355 + int pcrel = 0, align = 0;
7356 + char *p;
7357 +
7358 + symbol = fragP->fr_symbol;
7359 + offset = fragP->fr_offset;
7360 + r_type = BFD_RELOC_NONE;
7361 + p = fragP->fr_opcode;
7362 +
7363 + pr_debug("%s:%d: call_convert_frag, subtype: %d, fix: %d, var: %d\n",
7364 + fragP->fr_file, fragP->fr_line,
7365 + fragP->fr_subtype, fragP->fr_fix, fragP->fr_var);
7366 +
7367 + switch (fragP->fr_subtype)
7368 + {
7369 + case CALL_SUBTYPE_RCALL1:
7370 + opc = &avr32_opc_table[AVR32_OPC_RCALL1];
7371 + /* fall through */
7372 + case CALL_SUBTYPE_RCALL2:
7373 + if (!opc)
7374 + opc = &avr32_opc_table[AVR32_OPC_RCALL2];
7375 + ifield = opc->fields[0];
7376 + r_type = opc->reloc_type;
7377 + pcrel = 1;
7378 + align = 1;
7379 + break;
7380 + case CALL_SUBTYPE_MCALL_CP:
7381 + opc = &avr32_opc_table[AVR32_OPC_MCALL];
7382 + opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_PC);
7383 + ifield = opc->fields[1];
7384 + r_type = BFD_RELOC_AVR32_CPCALL;
7385 + symbol = fragP->tc_frag_data.pool->symbol;
7386 + offset = fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].offset;
7387 + assert(fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].refcount > 0);
7388 + pcrel = 1;
7389 + align = 2;
7390 + break;
7391 + case CALL_SUBTYPE_MCALL_GOT:
7392 + opc = &avr32_opc_table[AVR32_OPC_MCALL];
7393 + opc->fields[0]->insert(opc->fields[0], p, 6);
7394 + ifield = opc->fields[1];
7395 + r_type = BFD_RELOC_AVR32_GOT18SW;
7396 + break;
7397 + case CALL_SUBTYPE_MCALL_LARGE:
7398 + assert(fragP->fr_var == 10);
7399 + /* ld.w lr, r6[lr << 2] */
7400 + opc = &avr32_opc_table[AVR32_OPC_LD_W5];
7401 + bfd_putb32(opc->value, p + 4);
7402 + opc->fields[0]->insert(opc->fields[0], p + 4, AVR32_REG_LR);
7403 + opc->fields[1]->insert(opc->fields[1], p + 4, 6);
7404 + opc->fields[2]->insert(opc->fields[2], p + 4, AVR32_REG_LR);
7405 + opc->fields[3]->insert(opc->fields[3], p + 4, 2);
7406 +
7407 + /* icall lr */
7408 + opc = &avr32_opc_table[AVR32_OPC_ICALL];
7409 + bfd_putb16(opc->value >> 16, p + 8);
7410 + opc->fields[0]->insert(opc->fields[0], p + 8, AVR32_REG_LR);
7411 +
7412 + /* mov lr, (got_offset / 4) */
7413 + opc = &avr32_opc_table[AVR32_OPC_MOV2];
7414 + opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_LR);
7415 + ifield = opc->fields[1];
7416 + r_type = BFD_RELOC_AVR32_GOTCALL;
7417 + break;
7418 + default:
7419 + BAD_CASE(fragP->fr_subtype);
7420 + }
7421 +
7422 + /* Insert the opcode and clear the variable ifield */
7423 + value = bfd_getb32(p);
7424 + value &= ~(opc->mask | ifield->mask);
7425 + value |= opc->value;
7426 + bfd_putb32(value, p);
7427 +
7428 + fragP->fr_fix += fragP->fr_var - CALL_INITIAL_SIZE;
7429 +
7430 + if (fragP->fr_next
7431 + && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
7432 + != fragP->fr_fix))
7433 + {
7434 + fprintf(stderr, "%s:%d: fr_fix %lu is wrong! fr_var=%lu, r_type=%s\n",
7435 + fragP->fr_file, fragP->fr_line,
7436 + fragP->fr_fix, fragP->fr_var, bfd_get_reloc_code_name(r_type));
7437 + fprintf(stderr, "fr_fix should be %ld. next frag is %s:%d\n",
7438 + (offsetT)(fragP->fr_next->fr_address - fragP->fr_address),
7439 + fragP->fr_next->fr_file, fragP->fr_next->fr_line);
7440 + }
7441 +
7442 + fixP = fix_new(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
7443 + symbol, offset, pcrel, r_type);
7444 +
7445 + /* Revert fix_new brain damage. "dot_value" is the value of PC at
7446 + the point of the fixup, relative to the frag address. fix_new()
7447 + and friends think they are only being called during the assembly
7448 + pass, not during relaxation or similar, so fx_dot_value, fx_file
7449 + and fx_line are all initialized to the wrong value. But we don't
7450 + know the size of the fixup until now, so we really can't live up
7451 + to the assumptions these functions make about the target. What
7452 + do these functions think the "where" and "frag" argument mean
7453 + anyway? */
7454 + fixP->fx_dot_value = fragP->fr_fix - opc->size;
7455 + fixP->fx_file = fragP->fr_file;
7456 + fixP->fx_line = fragP->fr_line;
7457 +
7458 + fixP->tc_fix_data.ifield = ifield;
7459 + fixP->tc_fix_data.align = align;
7460 + /* these are only used if the fixup can actually be resolved */
7461 + fixP->tc_fix_data.min = -2097152;
7462 + fixP->tc_fix_data.max = 2097150;
7463 +}
7464 +
7465 +static void
7466 +avr32_cpool_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
7467 + segT segment ATTRIBUTE_UNUSED,
7468 + fragS *fragP)
7469 +{
7470 + struct cpool *pool;
7471 + addressT address;
7472 + unsigned int entry;
7473 + char *p;
7474 + char sym_name[20];
7475 +
7476 + /* Did we get rid of the frag altogether? */
7477 + if (!fragP->fr_var)
7478 + return;
7479 +
7480 + pool = fragP->tc_frag_data.pool;
7481 + address = fragP->fr_address + fragP->fr_fix;
7482 + p = fragP->fr_literal + fragP->fr_fix;
7483 +
7484 + sprintf(sym_name, "$$cp_\002%x", pool->id);
7485 + symbol_locate(pool->symbol, sym_name, pool->section, fragP->fr_fix, fragP);
7486 + symbol_table_insert(pool->symbol);
7487 +
7488 + for (entry = 0; entry < pool->next_free_entry; entry++)
7489 + {
7490 + if (pool->literals[entry].refcount > 0)
7491 + {
7492 + fix_new_exp(fragP, fragP->fr_fix, 4, &pool->literals[entry].exp,
7493 + FALSE, BFD_RELOC_AVR32_32_CPENT);
7494 + fragP->fr_fix += 4;
7495 + }
7496 + }
7497 +}
7498 +
7499 +static struct avr32_relaxer avr32_default_relaxer = {
7500 + .estimate_size = avr32_default_estimate_size_before_relax,
7501 + .relax_frag = avr32_default_relax_frag,
7502 + .convert_frag = avr32_default_convert_frag,
7503 +};
7504 +static struct avr32_relaxer avr32_lda_relaxer = {
7505 + .estimate_size = avr32_lda_estimate_size_before_relax,
7506 + .relax_frag = avr32_lda_relax_frag,
7507 + .convert_frag = avr32_lda_convert_frag,
7508 +};
7509 +static struct avr32_relaxer avr32_call_relaxer = {
7510 + .estimate_size = avr32_call_estimate_size_before_relax,
7511 + .relax_frag = avr32_call_relax_frag,
7512 + .convert_frag = avr32_call_convert_frag,
7513 +};
7514 +static struct avr32_relaxer avr32_cpool_relaxer = {
7515 + .estimate_size = avr32_cpool_estimate_size_before_relax,
7516 + .relax_frag = avr32_cpool_relax_frag,
7517 + .convert_frag = avr32_cpool_convert_frag,
7518 +};
7519 +
7520 +static void s_cpool(int arg ATTRIBUTE_UNUSED)
7521 +{
7522 + struct cpool *pool;
7523 + unsigned int max_size;
7524 + char *buf;
7525 +
7526 + pool = find_cpool(now_seg, now_subseg);
7527 + if (!pool || !pool->symbol || pool->next_free_entry == 0)
7528 + return;
7529 +
7530 + /* Make sure the constant pool is properly aligned */
7531 + frag_align_code(2, 0);
7532 + if (bfd_get_section_alignment(stdoutput, pool->section) < 2)
7533 + bfd_set_section_alignment(stdoutput, pool->section, 2);
7534 +
7535 + /* Assume none of the entries are discarded, and that we need the
7536 + maximum amount of alignment. But we're not going to allocate
7537 + anything up front. */
7538 + max_size = pool->next_free_entry * 4 + 2;
7539 + frag_grow(max_size);
7540 + buf = frag_more(0);
7541 +
7542 + frag_now->tc_frag_data.relaxer = &avr32_cpool_relaxer;
7543 + frag_now->tc_frag_data.pool = pool;
7544 +
7545 + symbol_set_frag(pool->symbol, frag_now);
7546 +
7547 + /* Assume zero initial size, allowing other relaxers to be
7548 + optimistic about things. */
7549 + frag_var(rs_machine_dependent, max_size, 0,
7550 + 0, pool->symbol, 0, NULL);
7551 +
7552 + /* Mark the pool as empty. */
7553 + pool->used = 1;
7554 +}
7555 +
7556 +/* The location from which a PC relative jump should be calculated,
7557 + given a PC relative reloc. */
7558 +
7559 +long
7560 +md_pcrel_from_section (fixS *fixP, segT sec)
7561 +{
7562 + pr_debug("pcrel_from_section, fx_offset = %d\n", fixP->fx_offset);
7563 +
7564 + if (fixP->fx_addsy != NULL
7565 + && (! S_IS_DEFINED (fixP->fx_addsy)
7566 + || S_GET_SEGMENT (fixP->fx_addsy) != sec
7567 + || S_FORCE_RELOC(fixP->fx_addsy, 1)))
7568 + {
7569 + pr_debug("Unknown pcrel symbol: %s\n", S_GET_NAME(fixP->fx_addsy));
7570 +
7571 + /* The symbol is undefined (or is defined but not in this section).
7572 + Let the linker figure it out. */
7573 + return 0;
7574 + }
7575 +
7576 + pr_debug("pcrel from %x + %x, symbol: %s (%x)\n",
7577 + fixP->fx_frag->fr_address, fixP->fx_where,
7578 + fixP->fx_addsy?S_GET_NAME(fixP->fx_addsy):"(null)",
7579 + fixP->fx_addsy?S_GET_VALUE(fixP->fx_addsy):0);
7580 +
7581 + return ((fixP->fx_frag->fr_address + fixP->fx_where)
7582 + & (~0UL << fixP->tc_fix_data.align));
7583 +}
7584 +
7585 +valueT
7586 +md_section_align (segT segment, valueT size)
7587 +{
7588 + int align = bfd_get_section_alignment (stdoutput, segment);
7589 + return ((size + (1 << align) - 1) & (-1 << align));
7590 +}
7591 +
7592 +static int syntax_matches(const struct avr32_syntax *syntax,
7593 + char *str)
7594 +{
7595 + int i;
7596 +
7597 + pr_debug("syntax %d matches `%s'?\n", syntax->id, str);
7598 +
7599 + if (syntax->nr_operands < 0)
7600 + {
7601 + struct avr32_operand *op;
7602 + int optype;
7603 +
7604 + for (i = 0; i < (-syntax->nr_operands - 1); i++)
7605 + {
7606 + char *p;
7607 + char c;
7608 +
7609 + optype = syntax->operand[i];
7610 + assert(optype < AVR32_NR_OPERANDS);
7611 + op = &avr32_operand_table[optype];
7612 +
7613 + for (p = str; *p; p++)
7614 + if (*p == ',')
7615 + break;
7616 +
7617 + if (p == str)
7618 + return 0;
7619 +
7620 + c = *p;
7621 + *p = 0;
7622 +
7623 + if (!op->match(str))
7624 + {
7625 + *p = c;
7626 + return 0;
7627 + }
7628 +
7629 + str = p;
7630 + *p = c;
7631 + if (c)
7632 + str++;
7633 + }
7634 +
7635 + optype = syntax->operand[i];
7636 + assert(optype < AVR32_NR_OPERANDS);
7637 + op = &avr32_operand_table[optype];
7638 +
7639 + if (!op->match(str))
7640 + return 0;
7641 + return 1;
7642 + }
7643 +
7644 + for (i = 0; i < syntax->nr_operands; i++)
7645 + {
7646 + struct avr32_operand *op;
7647 + int optype = syntax->operand[i];
7648 + char *p;
7649 + char c;
7650 +
7651 + assert(optype < AVR32_NR_OPERANDS);
7652 + op = &avr32_operand_table[optype];
7653 +
7654 + for (p = str; *p; p++)
7655 + if (*p == ',')
7656 + break;
7657 +
7658 + if (p == str)
7659 + return 0;
7660 +
7661 + c = *p;
7662 + *p = 0;
7663 +
7664 + if (!op->match(str))
7665 + {
7666 + *p = c;
7667 + return 0;
7668 + }
7669 +
7670 + str = p;
7671 + *p = c;
7672 + if (c)
7673 + str++;
7674 + }
7675 +
7676 + if (*str == '\0')
7677 + return 1;
7678 +
7679 + if ((*str == 'e' || *str == 'E') && !str[1])
7680 + return 1;
7681 +
7682 + return 0;
7683 +}
7684 +
7685 +static int parse_operands(char *str)
7686 +{
7687 + int i;
7688 +
7689 + if (current_insn.syntax->nr_operands < 0)
7690 + {
7691 + int optype;
7692 + struct avr32_operand *op;
7693 +
7694 + for (i = 0; i < (-current_insn.syntax->nr_operands - 1); i++)
7695 + {
7696 + char *p;
7697 + char c;
7698 +
7699 + optype = current_insn.syntax->operand[i];
7700 + op = &avr32_operand_table[optype];
7701 +
7702 + for (p = str; *p; p++)
7703 + if (*p == ',')
7704 + break;
7705 +
7706 + assert(p != str);
7707 +
7708 + c = *p, *p = 0;
7709 + op->parse(op, str, i);
7710 + *p = c;
7711 +
7712 + str = p;
7713 + if (c) str++;
7714 + }
7715 +
7716 + /* give the rest of the line to the last operand */
7717 + optype = current_insn.syntax->operand[i];
7718 + op = &avr32_operand_table[optype];
7719 + op->parse(op, str, i);
7720 + }
7721 + else
7722 + {
7723 + for (i = 0; i < current_insn.syntax->nr_operands; i++)
7724 + {
7725 + int optype = current_insn.syntax->operand[i];
7726 + struct avr32_operand *op = &avr32_operand_table[optype];
7727 + char *p;
7728 + char c;
7729 +
7730 + skip_whitespace(str);
7731 +
7732 + for (p = str; *p; p++)
7733 + if (*p == ',')
7734 + break;
7735 +
7736 + assert(p != str);
7737 +
7738 + c = *p, *p = 0;
7739 + op->parse(op, str, i);
7740 + *p = c;
7741 +
7742 + str = p;
7743 + if (c) str++;
7744 + }
7745 +
7746 + if (*str == 'E' || *str == 'e')
7747 + current_insn.force_extended = 1;
7748 + }
7749 +
7750 + return 0;
7751 +}
7752 +
7753 +static const char *
7754 +finish_insn(const struct avr32_opcode *opc)
7755 +{
7756 + expressionS *exp = &current_insn.immediate;
7757 + unsigned int i;
7758 + int will_relax = 0;
7759 + char *buf;
7760 +
7761 + assert(current_insn.next_slot == opc->nr_fields);
7762 +
7763 + pr_debug("%s:%d: finish_insn: trying opcode %d\n",
7764 + frag_now->fr_file, frag_now->fr_line, opc->id);
7765 +
7766 + /* Go through the relaxation stage for all instructions that can
7767 + possibly take a symbolic immediate. The relax code will take
7768 + care of range checking and alignment. */
7769 + if (opc->var_field != -1)
7770 + {
7771 + int substate, largest_substate;
7772 + symbolS *sym;
7773 + offsetT off;
7774 +
7775 + will_relax = 1;
7776 + substate = largest_substate = opc_initial_substate(opc);
7777 +
7778 + while (relax_more(largest_substate) != AVR32_RS_NONE)
7779 + largest_substate = relax_more(largest_substate);
7780 +
7781 + pr_debug("will relax. initial substate: %d (size %d), largest substate: %d (size %d)\n",
7782 + substate, avr32_rs_size(substate),
7783 + largest_substate, avr32_rs_size(largest_substate));
7784 +
7785 + /* make sure we have enough room for the largest possible opcode */
7786 + frag_grow(avr32_rs_size(largest_substate));
7787 + buf = frag_more(opc->size);
7788 +
7789 + dwarf2_emit_insn(opc->size);
7790 +
7791 + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_NONE;
7792 + frag_now->tc_frag_data.pcrel = current_insn.pcrel;
7793 + frag_now->tc_frag_data.force_extended = current_insn.force_extended;
7794 + frag_now->tc_frag_data.relaxer = &avr32_default_relaxer;
7795 +
7796 + if (exp->X_op == O_hi)
7797 + {
7798 + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_HI;
7799 + exp->X_op = exp->X_md;
7800 + }
7801 + else if (exp->X_op == O_lo)
7802 + {
7803 + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_LO;
7804 + exp->X_op = exp->X_md;
7805 + }
7806 + else if (exp->X_op == O_got)
7807 + {
7808 + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_GOT;
7809 + exp->X_op = O_symbol;
7810 + }
7811 +
7812 +#if 0
7813 + if ((opc->reloc_type == BFD_RELOC_AVR32_SUB5)
7814 + && exp->X_op == O_subtract)
7815 + {
7816 + symbolS *tmp;
7817 + tmp = exp->X_add_symbol;
7818 + exp->X_add_symbol = exp->X_op_symbol;
7819 + exp->X_op_symbol = tmp;
7820 + }
7821 +#endif
7822 +
7823 + frag_now->tc_frag_data.exp = current_insn.immediate;
7824 +
7825 + sym = exp->X_add_symbol;
7826 + off = exp->X_add_number;
7827 + if (exp->X_op != O_symbol)
7828 + {
7829 + sym = make_expr_symbol(exp);
7830 + off = 0;
7831 + }
7832 +
7833 + frag_var(rs_machine_dependent,
7834 + avr32_rs_size(largest_substate) - opc->size,
7835 + opc->size,
7836 + substate, sym, off, buf);
7837 + }
7838 + else
7839 + {
7840 + assert(avr32_rs_size(opc_initial_substate(opc)) == 0);
7841 +
7842 + /* Make sure we always have room for another whole word, as the ifield
7843 + inserters can only write words. */
7844 + frag_grow(4);
7845 + buf = frag_more(opc->size);
7846 + dwarf2_emit_insn(opc->size);
7847 + }
7848 +
7849 + assert(!(opc->value & ~opc->mask));
7850 +
7851 + pr_debug("inserting opcode: 0x%lx\n", opc->value);
7852 + bfd_putb32(opc->value, buf);
7853 +
7854 + for (i = 0; i < opc->nr_fields; i++)
7855 + {
7856 + const struct avr32_ifield *f = opc->fields[i];
7857 + const struct avr32_ifield_data *fd = &current_insn.field_value[i];
7858 +
7859 + pr_debug("inserting field: 0x%lx & 0x%lx\n",
7860 + fd->value >> fd->align_order, f->mask);
7861 +
7862 + f->insert(f, buf, fd->value >> fd->align_order);
7863 + }
7864 +
7865 + assert(will_relax || !current_insn.immediate.X_add_symbol);
7866 + return NULL;
7867 +}
7868 +
7869 +static const char *
7870 +finish_alias(const struct avr32_alias *alias)
7871 +{
7872 + const struct avr32_opcode *opc;
7873 + struct {
7874 + unsigned long value;
7875 + unsigned long align;
7876 + } mapped_operand[AVR32_MAX_OPERANDS];
7877 + unsigned int i;
7878 +
7879 + opc = alias->opc;
7880 +
7881 + /* Remap the operands from the alias to the real opcode */
7882 + for (i = 0; i < opc->nr_fields; i++)
7883 + {
7884 + if (alias->operand_map[i].is_opindex)
7885 + {
7886 + struct avr32_ifield_data *fd;
7887 + fd = &current_insn.field_value[alias->operand_map[i].value];
7888 + mapped_operand[i].value = fd->value;
7889 + mapped_operand[i].align = fd->align_order;
7890 + }
7891 + else
7892 + {
7893 + mapped_operand[i].value = alias->operand_map[i].value;
7894 + mapped_operand[i].align = 0;
7895 + }
7896 + }
7897 +
7898 + for (i = 0; i < opc->nr_fields; i++)
7899 + {
7900 + current_insn.field_value[i].value = mapped_operand[i].value;
7901 + if (opc->id == AVR32_OPC_COP)
7902 + current_insn.field_value[i].align_order = 0;
7903 + else
7904 + current_insn.field_value[i].align_order
7905 + = mapped_operand[i].align;
7906 + }
7907 +
7908 + current_insn.next_slot = opc->nr_fields;
7909 +
7910 + return finish_insn(opc);
7911 +}
7912 +
7913 +static const char *
7914 +finish_lda(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
7915 +{
7916 + expressionS *exp = &current_insn.immediate;
7917 + relax_substateT initial_subtype;
7918 + symbolS *sym;
7919 + offsetT off;
7920 + int initial_size, max_size;
7921 + char *buf;
7922 +
7923 + initial_size = LDA_INITIAL_SIZE;
7924 +
7925 + if (avr32_pic)
7926 + {
7927 + initial_subtype = LDA_SUBTYPE_SUB;
7928 + if (linkrelax)
7929 + max_size = 8;
7930 + else
7931 + max_size = 4;
7932 + }
7933 + else
7934 + {
7935 + initial_subtype = LDA_SUBTYPE_MOV1;
7936 + max_size = 4;
7937 + }
7938 +
7939 + frag_grow(max_size);
7940 + buf = frag_more(initial_size);
7941 + dwarf2_emit_insn(initial_size);
7942 +
7943 + if (exp->X_op == O_symbol)
7944 + {
7945 + sym = exp->X_add_symbol;
7946 + off = exp->X_add_number;
7947 + }
7948 + else
7949 + {
7950 + sym = make_expr_symbol(exp);
7951 + off = 0;
7952 + }
7953 +
7954 + frag_now->tc_frag_data.reloc_info = current_insn.field_value[0].value;
7955 + frag_now->tc_frag_data.relaxer = &avr32_lda_relaxer;
7956 +
7957 + if (!avr32_pic)
7958 + {
7959 + /* The relaxer will bump the refcount if necessary */
7960 + frag_now->tc_frag_data.pool
7961 + = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
7962 + }
7963 +
7964 + frag_var(rs_machine_dependent, max_size - initial_size,
7965 + initial_size, initial_subtype, sym, off, buf);
7966 +
7967 + return NULL;
7968 +}
7969 +
7970 +static const char *
7971 +finish_call(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
7972 +{
7973 + expressionS *exp = &current_insn.immediate;
7974 + symbolS *sym;
7975 + offsetT off;
7976 + int initial_size, max_size;
7977 + char *buf;
7978 +
7979 + initial_size = CALL_INITIAL_SIZE;
7980 +
7981 + if (avr32_pic)
7982 + {
7983 + if (linkrelax)
7984 + max_size = 10;
7985 + else
7986 + max_size = 4;
7987 + }
7988 + else
7989 + max_size = 4;
7990 +
7991 + frag_grow(max_size);
7992 + buf = frag_more(initial_size);
7993 + dwarf2_emit_insn(initial_size);
7994 +
7995 + frag_now->tc_frag_data.relaxer = &avr32_call_relaxer;
7996 +
7997 + if (exp->X_op == O_symbol)
7998 + {
7999 + sym = exp->X_add_symbol;
8000 + off = exp->X_add_number;
8001 + }
8002 + else
8003 + {
8004 + sym = make_expr_symbol(exp);
8005 + off = 0;
8006 + }
8007 +
8008 + if (!avr32_pic)
8009 + {
8010 + /* The relaxer will bump the refcount if necessary */
8011 + frag_now->tc_frag_data.pool
8012 + = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
8013 + }
8014 +
8015 + frag_var(rs_machine_dependent, max_size - initial_size,
8016 + initial_size, CALL_SUBTYPE_RCALL1, sym, off, buf);
8017 +
8018 + return NULL;
8019 +}
8020 +
8021 +void
8022 +md_begin (void)
8023 +{
8024 + unsigned long flags = 0;
8025 + int i;
8026 +
8027 + avr32_mnemonic_htab = hash_new();
8028 +
8029 + if (!avr32_mnemonic_htab)
8030 + as_fatal(_("virtual memory exhausted"));
8031 +
8032 + for (i = 0; i < AVR32_NR_MNEMONICS; i++)
8033 + {
8034 + hash_insert(avr32_mnemonic_htab, avr32_mnemonic_table[i].name,
8035 + (void *)&avr32_mnemonic_table[i]);
8036 + }
8037 +
8038 + if (linkrelax)
8039 + flags |= EF_AVR32_LINKRELAX;
8040 + if (avr32_pic)
8041 + flags |= EF_AVR32_PIC;
8042 +
8043 + bfd_set_private_flags(stdoutput, flags);
8044 +
8045 +#ifdef OPC_CONSISTENCY_CHECK
8046 + if (sizeof(avr32_operand_table)/sizeof(avr32_operand_table[0])
8047 + < AVR32_NR_OPERANDS)
8048 + as_fatal(_("operand table is incomplete"));
8049 +
8050 + for (i = 0; i < AVR32_NR_OPERANDS; i++)
8051 + if (avr32_operand_table[i].id != i)
8052 + as_fatal(_("operand table inconsistency found at index %d\n"), i);
8053 + pr_debug("%d operands verified\n", AVR32_NR_OPERANDS);
8054 +
8055 + for (i = 0; i < AVR32_NR_IFIELDS; i++)
8056 + if (avr32_ifield_table[i].id != i)
8057 + as_fatal(_("ifield table inconsistency found at index %d\n"), i);
8058 + pr_debug("%d instruction fields verified\n", AVR32_NR_IFIELDS);
8059 +
8060 + for (i = 0; i < AVR32_NR_OPCODES; i++)
8061 + {
8062 + if (avr32_opc_table[i].id != i)
8063 + as_fatal(_("opcode table inconsistency found at index %d\n"), i);
8064 + if ((avr32_opc_table[i].var_field == -1
8065 + && avr32_relax_table[i].length != 0)
8066 + || (avr32_opc_table[i].var_field != -1
8067 + && avr32_relax_table[i].length == 0))
8068 + as_fatal(_("relax table inconsistency found at index %d\n"), i);
8069 + }
8070 + pr_debug("%d opcodes verified\n", AVR32_NR_OPCODES);
8071 +
8072 + for (i = 0; i < AVR32_NR_SYNTAX; i++)
8073 + if (avr32_syntax_table[i].id != i)
8074 + as_fatal(_("syntax table inconsistency found at index %d\n"), i);
8075 + pr_debug("%d syntax variants verified\n", AVR32_NR_SYNTAX);
8076 +
8077 + for (i = 0; i < AVR32_NR_ALIAS; i++)
8078 + if (avr32_alias_table[i].id != i)
8079 + as_fatal(_("alias table inconsistency found at index %d\n"), i);
8080 + pr_debug("%d aliases verified\n", AVR32_NR_ALIAS);
8081 +
8082 + for (i = 0; i < AVR32_NR_MNEMONICS; i++)
8083 + if (avr32_mnemonic_table[i].id != i)
8084 + as_fatal(_("mnemonic table inconsistency found at index %d\n"), i);
8085 + pr_debug("%d mnemonics verified\n", AVR32_NR_MNEMONICS);
8086 +#endif
8087 +}
8088 +
8089 +void
8090 +md_assemble (char *str)
8091 +{
8092 + struct avr32_mnemonic *mnemonic;
8093 + char *p, c;
8094 +
8095 + memset(&current_insn, 0, sizeof(current_insn));
8096 + current_insn.immediate.X_op = O_constant;
8097 +
8098 + skip_whitespace(str);
8099 + for (p = str; *p; p++)
8100 + if (*p == ' ')
8101 + break;
8102 + c = *p;
8103 + *p = 0;
8104 +
8105 + mnemonic = hash_find(avr32_mnemonic_htab, str);
8106 + *p = c;
8107 + if (c) p++;
8108 +
8109 + if (mnemonic)
8110 + {
8111 + const struct avr32_syntax *syntax;
8112 +
8113 + for (syntax = mnemonic->syntax; syntax; syntax = syntax->next)
8114 + {
8115 + const char *errmsg = NULL;
8116 +
8117 + if (syntax_matches(syntax, p))
8118 + {
8119 + if (!(syntax->isa_flags & avr32_arch->isa_flags))
8120 + {
8121 + as_bad(_("Selected architecture `%s' does not support `%s'"),
8122 + avr32_arch->name, str);
8123 + return;
8124 + }
8125 +
8126 + current_insn.syntax = syntax;
8127 + parse_operands(p);
8128 +
8129 + switch (syntax->type)
8130 + {
8131 + case AVR32_PARSER_NORMAL:
8132 + errmsg = finish_insn(syntax->u.opc);
8133 + break;
8134 + case AVR32_PARSER_ALIAS:
8135 + errmsg = finish_alias(syntax->u.alias);
8136 + break;
8137 + case AVR32_PARSER_LDA:
8138 + errmsg = finish_lda(syntax);
8139 + break;
8140 + case AVR32_PARSER_CALL:
8141 + errmsg = finish_call(syntax);
8142 + break;
8143 + default:
8144 + BAD_CASE(syntax->type);
8145 + break;
8146 + }
8147 +
8148 + if (errmsg)
8149 + as_bad("%s in `%s'", errmsg, str);
8150 +
8151 + return;
8152 + }
8153 + }
8154 +
8155 + as_bad(_("unrecognized form of instruction: `%s'"), str);
8156 + }
8157 + else
8158 + as_bad(_("unrecognized instruction `%s'"), str);
8159 +}
8160 +
8161 +void avr32_cleanup(void)
8162 +{
8163 + struct cpool *pool;
8164 +
8165 + /* Emit any constant pools that haven't been explicitly flushed with
8166 + a .cpool directive. */
8167 + for (pool = cpool_list; pool; pool = pool->next)
8168 + {
8169 + subseg_set(pool->section, pool->sub_section);
8170 + s_cpool(0);
8171 + }
8172 +}
8173 +
8174 +/* Handle any PIC-related operands in data allocation pseudo-ops */
8175 +void
8176 +avr32_cons_fix_new (fragS *frag, int off, int size, expressionS *exp)
8177 +{
8178 + bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED;
8179 + int pcrel = 0;
8180 +
8181 + pr_debug("%s:%u: cons_fix_new, add_sym: %s, op_sym: %s, op: %d, add_num: %d\n",
8182 + frag->fr_file, frag->fr_line,
8183 + exp->X_add_symbol?S_GET_NAME(exp->X_add_symbol):"(none)",
8184 + exp->X_op_symbol?S_GET_NAME(exp->X_op_symbol):"(none)",
8185 + exp->X_op, exp->X_add_number);
8186 +
8187 + if (exp->X_op == O_subtract && exp->X_op_symbol)
8188 + {
8189 + if (exp->X_op_symbol == GOT_symbol)
8190 + {
8191 + if (size != 4)
8192 + goto bad_size;
8193 + r_type = BFD_RELOC_AVR32_GOTPC;
8194 + exp->X_op = O_symbol;
8195 + exp->X_op_symbol = NULL;
8196 + }
8197 + }
8198 + else if (exp->X_op == O_got)
8199 + {
8200 + switch (size)
8201 + {
8202 + case 1:
8203 + r_type = BFD_RELOC_AVR32_GOT8;
8204 + break;
8205 + case 2:
8206 + r_type = BFD_RELOC_AVR32_GOT16;
8207 + break;
8208 + case 4:
8209 + r_type = BFD_RELOC_AVR32_GOT32;
8210 + break;
8211 + default:
8212 + goto bad_size;
8213 + }
8214 +
8215 + exp->X_op = O_symbol;
8216 + }
8217 +
8218 + if (r_type == BFD_RELOC_UNUSED)
8219 + switch (size)
8220 + {
8221 + case 1:
8222 + r_type = BFD_RELOC_8;
8223 + break;
8224 + case 2:
8225 + r_type = BFD_RELOC_16;
8226 + break;
8227 + case 4:
8228 + r_type = BFD_RELOC_32;
8229 + break;
8230 + default:
8231 + goto bad_size;
8232 + }
8233 + else if (size != 4)
8234 + {
8235 + bad_size:
8236 + as_bad(_("unsupported BFD relocation size %u"), size);
8237 + r_type = BFD_RELOC_UNUSED;
8238 + }
8239 +
8240 + fix_new_exp (frag, off, size, exp, pcrel, r_type);
8241 +}
8242 +
8243 +static void
8244 +avr32_frob_section(bfd *abfd ATTRIBUTE_UNUSED, segT sec,
8245 + void *ignore ATTRIBUTE_UNUSED)
8246 +{
8247 + segment_info_type *seginfo;
8248 + fixS *fix;
8249 +
8250 + seginfo = seg_info(sec);
8251 + if (!seginfo)
8252 + return;
8253 +
8254 + for (fix = seginfo->fix_root; fix; fix = fix->fx_next)
8255 + {
8256 + if (fix->fx_done)
8257 + continue;
8258 +
8259 + if (fix->fx_r_type == BFD_RELOC_AVR32_SUB5
8260 + && fix->fx_addsy && fix->fx_subsy)
8261 + {
8262 + if (S_GET_SEGMENT(fix->fx_addsy) != S_GET_SEGMENT(fix->fx_subsy)
8263 + || linkrelax)
8264 + {
8265 + symbolS *tmp;
8266 +#ifdef DEBUG
8267 + fprintf(stderr, "Swapping symbols in fixup:\n");
8268 + print_fixup(fix);
8269 +#endif
8270 + tmp = fix->fx_addsy;
8271 + fix->fx_addsy = fix->fx_subsy;
8272 + fix->fx_subsy = tmp;
8273 + fix->fx_offset = -fix->fx_offset;
8274 + }
8275 + }
8276 + }
8277 +}
8278 +
8279 +/* We need to look for SUB5 instructions with expressions that will be
8280 + made PC-relative and switch fx_addsy with fx_subsy. This has to be
8281 + done before adjustment or the wrong symbol might be adjusted.
8282 +
8283 + This applies to fixups that are a result of expressions like -(sym
8284 + - .) and that will make it all the way to md_apply_fix3(). LDA
8285 + does the right thing in convert_frag, so we must not convert
8286 + those. */
8287 +void
8288 +avr32_frob_file(void)
8289 +{
8290 + /* if (1 || !linkrelax)
8291 + return; */
8292 +
8293 + bfd_map_over_sections(stdoutput, avr32_frob_section, NULL);
8294 +}
8295 +
8296 +static bfd_boolean
8297 +convert_to_diff_reloc(fixS *fixP)
8298 +{
8299 + switch (fixP->fx_r_type)
8300 + {
8301 + case BFD_RELOC_32:
8302 + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
8303 + break;
8304 + case BFD_RELOC_16:
8305 + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF16;
8306 + break;
8307 + case BFD_RELOC_8:
8308 + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF8;
8309 + break;
8310 + default:
8311 + return FALSE;
8312 + }
8313 +
8314 + return TRUE;
8315 +}
8316 +
8317 +/* Simplify a fixup. If possible, the fixup is reduced to a single
8318 + constant which is written to the output file. Otherwise, a
8319 + relocation is generated so that the linker can take care of the
8320 + rest.
8321 +
8322 + ELF relocations have certain constraints: They can only take a
8323 + single symbol and a single addend. This means that for difference
8324 + expressions, we _must_ get rid of the fx_subsy symbol somehow.
8325 +
8326 + The difference between two labels in the same section can be
8327 + calculated directly unless 'linkrelax' is set, or a relocation is
8328 + forced. If so, we must emit a R_AVR32_DIFFxx relocation. If there
8329 + are addends involved at this point, we must be especially careful
8330 + as the relocation must point exactly to the symbol being
8331 + subtracted.
8332 +
8333 + When subtracting a symbol defined in the same section as the fixup,
8334 + we might be able to convert it to a PC-relative expression, unless
8335 + linkrelax is set. If this is the case, there's no way we can make
8336 + sure that the difference between the fixup and fx_subsy stays
8337 + constant. So for now, we're just going to disallow that.
8338 + */
8339 +void
8340 +avr32_process_fixup(fixS *fixP, segT this_segment)
8341 +{
8342 + segT add_symbol_segment = absolute_section;
8343 + segT sub_symbol_segment = absolute_section;
8344 + symbolS *fx_addsy, *fx_subsy;
8345 + offsetT value = 0, fx_offset;
8346 + bfd_boolean apply = FALSE;
8347 +
8348 + assert(this_segment != absolute_section);
8349 +
8350 + if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
8351 + {
8352 + as_bad_where(fixP->fx_file, fixP->fx_line,
8353 + _("Bad relocation type %d\n"), fixP->fx_r_type);
8354 + return;
8355 + }
8356 +
8357 + /* BFD_RELOC_AVR32_SUB5 fixups have been swapped by avr32_frob_section() */
8358 + fx_addsy = fixP->fx_addsy;
8359 + fx_subsy = fixP->fx_subsy;
8360 + fx_offset = fixP->fx_offset;
8361 +
8362 + if (fx_addsy)
8363 + add_symbol_segment = S_GET_SEGMENT(fx_addsy);
8364 +
8365 + if (fx_subsy)
8366 + {
8367 + resolve_symbol_value(fx_subsy);
8368 + sub_symbol_segment = S_GET_SEGMENT(fx_subsy);
8369 +
8370 + if (sub_symbol_segment == this_segment
8371 + && (!linkrelax
8372 + || S_GET_VALUE(fx_subsy) == (fixP->fx_frag->fr_address
8373 + + fixP->fx_where)))
8374 + {
8375 + fixP->fx_pcrel = TRUE;
8376 + fx_offset += (fixP->fx_frag->fr_address + fixP->fx_where
8377 + - S_GET_VALUE(fx_subsy));
8378 + fx_subsy = NULL;
8379 + }
8380 + else if (sub_symbol_segment == absolute_section)
8381 + {
8382 + /* The symbol is really a constant. */
8383 + fx_offset -= S_GET_VALUE(fx_subsy);
8384 + fx_subsy = NULL;
8385 + }
8386 + else if (SEG_NORMAL(add_symbol_segment)
8387 + && sub_symbol_segment == add_symbol_segment
8388 + && (!linkrelax || convert_to_diff_reloc(fixP)))
8389 + {
8390 + /* Difference between two labels in the same section. */
8391 + if (linkrelax)
8392 + {
8393 + /* convert_to_diff() has ensured that the reloc type is
8394 + either DIFF32, DIFF16 or DIFF8. */
8395 + value = (S_GET_VALUE(fx_addsy) + fixP->fx_offset
8396 + - S_GET_VALUE(fx_subsy));
8397 +
8398 + /* Try to convert it to a section symbol if possible */
8399 + if (!S_FORCE_RELOC(fx_addsy, 1)
8400 + && !(sub_symbol_segment->flags & SEC_THREAD_LOCAL))
8401 + {
8402 + fx_offset = S_GET_VALUE(fx_subsy);
8403 + fx_addsy = section_symbol(sub_symbol_segment);
8404 + }
8405 + else
8406 + {
8407 + fx_addsy = fx_subsy;
8408 + fx_offset = 0;
8409 + }
8410 +
8411 + fx_subsy = NULL;
8412 + apply = TRUE;
8413 + }
8414 + else
8415 + {
8416 + fx_offset += S_GET_VALUE(fx_addsy);
8417 + fx_offset -= S_GET_VALUE(fx_subsy);
8418 + fx_addsy = NULL;
8419 + fx_subsy = NULL;
8420 + }
8421 + }
8422 + else
8423 + {
8424 + as_bad_where(fixP->fx_file, fixP->fx_line,
8425 + _("can't resolve `%s' {%s section} - `%s' {%s section}"),
8426 + fx_addsy ? S_GET_NAME (fx_addsy) : "0",
8427 + segment_name (add_symbol_segment),
8428 + S_GET_NAME (fx_subsy),
8429 + segment_name (sub_symbol_segment));
8430 + return;
8431 + }
8432 + }
8433 +
8434 + if (fx_addsy && !TC_FORCE_RELOCATION(fixP))
8435 + {
8436 + if (add_symbol_segment == this_segment
8437 + && fixP->fx_pcrel)
8438 + {
8439 + value += S_GET_VALUE(fx_addsy);
8440 + value -= md_pcrel_from_section(fixP, this_segment);
8441 + fx_addsy = NULL;
8442 + fixP->fx_pcrel = FALSE;
8443 + }
8444 + else if (add_symbol_segment == absolute_section)
8445 + {
8446 + fx_offset += S_GET_VALUE(fixP->fx_addsy);
8447 + fx_addsy = NULL;
8448 + }
8449 + }
8450 +
8451 + if (!fx_addsy)
8452 + fixP->fx_done = TRUE;
8453 +
8454 + if (fixP->fx_pcrel)
8455 + {
8456 + if (fx_addsy != NULL
8457 + && S_IS_DEFINED(fx_addsy)
8458 + && S_GET_SEGMENT(fx_addsy) != this_segment)
8459 + value += md_pcrel_from_section(fixP, this_segment);
8460 +
8461 + switch (fixP->fx_r_type)
8462 + {
8463 + case BFD_RELOC_32:
8464 + fixP->fx_r_type = BFD_RELOC_32_PCREL;
8465 + break;
8466 + case BFD_RELOC_16:
8467 + fixP->fx_r_type = BFD_RELOC_16_PCREL;
8468 + break;
8469 + case BFD_RELOC_8:
8470 + fixP->fx_r_type = BFD_RELOC_8_PCREL;
8471 + break;
8472 + case BFD_RELOC_AVR32_SUB5:
8473 + fixP->fx_r_type = BFD_RELOC_AVR32_16N_PCREL;
8474 + break;
8475 + case BFD_RELOC_AVR32_16S:
8476 + fixP->fx_r_type = BFD_RELOC_AVR32_16B_PCREL;
8477 + break;
8478 + case BFD_RELOC_AVR32_14UW:
8479 + fixP->fx_r_type = BFD_RELOC_AVR32_14UW_PCREL;
8480 + break;
8481 + case BFD_RELOC_AVR32_10UW:
8482 + fixP->fx_r_type = BFD_RELOC_AVR32_10UW_PCREL;
8483 + break;
8484 + default:
8485 + /* Should have been taken care of already */
8486 + break;
8487 + }
8488 + }
8489 +
8490 + if (fixP->fx_done || apply)
8491 + {
8492 + const struct avr32_ifield *ifield;
8493 + char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
8494 +
8495 + if (fixP->fx_done)
8496 + value += fx_offset;
8497 +
8498 + /* For hosts with longs bigger than 32-bits make sure that the top
8499 + bits of a 32-bit negative value read in by the parser are set,
8500 + so that the correct comparisons are made. */
8501 + if (value & 0x80000000)
8502 + value |= (-1L << 31);
8503 +
8504 + switch (fixP->fx_r_type)
8505 + {
8506 + case BFD_RELOC_32:
8507 + case BFD_RELOC_16:
8508 + case BFD_RELOC_8:
8509 + case BFD_RELOC_AVR32_DIFF32:
8510 + case BFD_RELOC_AVR32_DIFF16:
8511 + case BFD_RELOC_AVR32_DIFF8:
8512 + md_number_to_chars(buf, value, fixP->fx_size);
8513 + break;
8514 + case BFD_RELOC_HI16:
8515 + value >>= 16;
8516 + case BFD_RELOC_LO16:
8517 + value &= 0xffff;
8518 + md_number_to_chars(buf + 2, value, 2);
8519 + break;
8520 + case BFD_RELOC_AVR32_16N_PCREL:
8521 + value = -value;
8522 + /* fall through */
8523 + case BFD_RELOC_AVR32_22H_PCREL:
8524 + case BFD_RELOC_AVR32_18W_PCREL:
8525 + case BFD_RELOC_AVR32_16B_PCREL:
8526 + case BFD_RELOC_AVR32_11H_PCREL:
8527 + case BFD_RELOC_AVR32_9H_PCREL:
8528 + case BFD_RELOC_AVR32_9UW_PCREL:
8529 + case BFD_RELOC_AVR32_3U:
8530 + case BFD_RELOC_AVR32_4UH:
8531 + case BFD_RELOC_AVR32_6UW:
8532 + case BFD_RELOC_AVR32_6S:
8533 + case BFD_RELOC_AVR32_7UW:
8534 + case BFD_RELOC_AVR32_8S_EXT:
8535 + case BFD_RELOC_AVR32_8S:
8536 + case BFD_RELOC_AVR32_10UW:
8537 + case BFD_RELOC_AVR32_10SW:
8538 + case BFD_RELOC_AVR32_STHH_W:
8539 + case BFD_RELOC_AVR32_14UW:
8540 + case BFD_RELOC_AVR32_16S:
8541 + case BFD_RELOC_AVR32_16U:
8542 + case BFD_RELOC_AVR32_21S:
8543 + case BFD_RELOC_AVR32_SUB5:
8544 + case BFD_RELOC_AVR32_CPCALL:
8545 + case BFD_RELOC_AVR32_16_CP:
8546 + case BFD_RELOC_AVR32_9W_CP:
8547 + case BFD_RELOC_AVR32_15S:
8548 + ifield = fixP->tc_fix_data.ifield;
8549 + pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
8550 + fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
8551 + fixP->tc_fix_data.align);
8552 + if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
8553 + as_bad_where(fixP->fx_file, fixP->fx_line,
8554 + _("operand out of range (%ld not between %ld and %ld)"),
8555 + value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
8556 + if (value & ((1 << fixP->tc_fix_data.align) - 1))
8557 + as_bad_where(fixP->fx_file, fixP->fx_line,
8558 + _("misaligned operand (required alignment: %d)"),
8559 + 1 << fixP->tc_fix_data.align);
8560 + ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
8561 + break;
8562 + case BFD_RELOC_AVR32_ALIGN:
8563 + /* Nothing to do */
8564 + fixP->fx_done = FALSE;
8565 + break;
8566 + default:
8567 + as_fatal("reloc type %s not handled\n",
8568 + bfd_get_reloc_code_name(fixP->fx_r_type));
8569 + }
8570 + }
8571 +
8572 + fixP->fx_addsy = fx_addsy;
8573 + fixP->fx_subsy = fx_subsy;
8574 + fixP->fx_offset = fx_offset;
8575 +
8576 + if (!fixP->fx_done)
8577 + {
8578 + if (!fixP->fx_addsy)
8579 + fixP->fx_addsy = abs_section_sym;
8580 +
8581 + symbol_mark_used_in_reloc(fixP->fx_addsy);
8582 + if (fixP->fx_subsy)
8583 + abort();
8584 + }
8585 +}
8586 +
8587 +#if 0
8588 +void
8589 +md_apply_fix3 (fixS *fixP, valueT *valP, segT seg)
8590 +{
8591 + const struct avr32_ifield *ifield;
8592 + offsetT value = *valP;
8593 + char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
8594 + bfd_boolean apply;
8595 +
8596 + pr_debug("%s:%u: apply_fix3: r_type=%d value=%lx offset=%lx\n",
8597 + fixP->fx_file, fixP->fx_line, fixP->fx_r_type, *valP,
8598 + fixP->fx_offset);
8599 +
8600 + if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
8601 + {
8602 + as_bad_where(fixP->fx_file, fixP->fx_line,
8603 + _("Bad relocation type %d\n"), fixP->fx_r_type);
8604 + return;
8605 + }
8606 +
8607 + if (!fixP->fx_addsy && !fixP->fx_subsy)
8608 + fixP->fx_done = 1;
8609 +
8610 + if (fixP->fx_pcrel)
8611 + {
8612 + if (fixP->fx_addsy != NULL
8613 + && S_IS_DEFINED(fixP->fx_addsy)
8614 + && S_GET_SEGMENT(fixP->fx_addsy) != seg)
8615 + value += md_pcrel_from_section(fixP, seg);
8616 +
8617 + switch (fixP->fx_r_type)
8618 + {
8619 + case BFD_RELOC_32:
8620 + fixP->fx_r_type = BFD_RELOC_32_PCREL;
8621 + break;
8622 + case BFD_RELOC_16:
8623 + case BFD_RELOC_8:
8624 + as_bad_where (fixP->fx_file, fixP->fx_line,
8625 + _("8- and 16-bit PC-relative relocations not supported"));
8626 + break;
8627 + case BFD_RELOC_AVR32_SUB5:
8628 + fixP->fx_r_type = BFD_RELOC_AVR32_PCREL_SUB5;
8629 + break;
8630 + case BFD_RELOC_AVR32_16S:
8631 + fixP->fx_r_type = BFD_RELOC_AVR32_16_PCREL;
8632 + break;
8633 + default:
8634 + /* Should have been taken care of already */
8635 + break;
8636 + }
8637 + }
8638 +
8639 + if (fixP->fx_r_type == BFD_RELOC_32
8640 + && fixP->fx_subsy)
8641 + {
8642 + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
8643 +
8644 + /* Offsets are only allowed if it's a result of adjusting a
8645 + local symbol into a section-relative offset.
8646 + tc_fix_adjustable() should prevent any adjustment if there
8647 + was an offset involved before. */
8648 + if (fixP->fx_offset && !symbol_section_p(fixP->fx_addsy))
8649 + as_bad_where(fixP->fx_file, fixP->fx_line,
8650 + _("cannot represent symbol difference with an offset"));
8651 +
8652 + value = (S_GET_VALUE(fixP->fx_addsy) + fixP->fx_offset
8653 + - S_GET_VALUE(fixP->fx_subsy));
8654 +
8655 + /* The difference before any relaxing takes place is written
8656 + out, and the DIFF32 reloc identifies the address of the first
8657 + symbol (i.e. the on that's subtracted.) */
8658 + *valP = value;
8659 + fixP->fx_offset -= value;
8660 + fixP->fx_subsy = NULL;
8661 +
8662 + md_number_to_chars(buf, value, fixP->fx_size);
8663 + }
8664 +
8665 + if (fixP->fx_done)
8666 + {
8667 + switch (fixP->fx_r_type)
8668 + {
8669 + case BFD_RELOC_8:
8670 + case BFD_RELOC_16:
8671 + case BFD_RELOC_32:
8672 + md_number_to_chars(buf, value, fixP->fx_size);
8673 + break;
8674 + case BFD_RELOC_HI16:
8675 + value >>= 16;
8676 + case BFD_RELOC_LO16:
8677 + value &= 0xffff;
8678 + *valP = value;
8679 + md_number_to_chars(buf + 2, value, 2);
8680 + break;
8681 + case BFD_RELOC_AVR32_PCREL_SUB5:
8682 + value = -value;
8683 + /* fall through */
8684 + case BFD_RELOC_AVR32_9_PCREL:
8685 + case BFD_RELOC_AVR32_11_PCREL:
8686 + case BFD_RELOC_AVR32_16_PCREL:
8687 + case BFD_RELOC_AVR32_18_PCREL:
8688 + case BFD_RELOC_AVR32_22_PCREL:
8689 + case BFD_RELOC_AVR32_3U:
8690 + case BFD_RELOC_AVR32_4UH:
8691 + case BFD_RELOC_AVR32_6UW:
8692 + case BFD_RELOC_AVR32_6S:
8693 + case BFD_RELOC_AVR32_7UW:
8694 + case BFD_RELOC_AVR32_8S:
8695 + case BFD_RELOC_AVR32_10UW:
8696 + case BFD_RELOC_AVR32_10SW:
8697 + case BFD_RELOC_AVR32_14UW:
8698 + case BFD_RELOC_AVR32_16S:
8699 + case BFD_RELOC_AVR32_16U:
8700 + case BFD_RELOC_AVR32_21S:
8701 + case BFD_RELOC_AVR32_BRC1:
8702 + case BFD_RELOC_AVR32_SUB5:
8703 + case BFD_RELOC_AVR32_CPCALL:
8704 + case BFD_RELOC_AVR32_16_CP:
8705 + case BFD_RELOC_AVR32_9_CP:
8706 + case BFD_RELOC_AVR32_15S:
8707 + ifield = fixP->tc_fix_data.ifield;
8708 + pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
8709 + fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
8710 + fixP->tc_fix_data.align);
8711 + if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
8712 + as_bad_where(fixP->fx_file, fixP->fx_line,
8713 + _("operand out of range (%ld not between %ld and %ld)"),
8714 + value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
8715 + if (value & ((1 << fixP->tc_fix_data.align) - 1))
8716 + as_bad_where(fixP->fx_file, fixP->fx_line,
8717 + _("misaligned operand (required alignment: %d)"),
8718 + 1 << fixP->tc_fix_data.align);
8719 + ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
8720 + break;
8721 + case BFD_RELOC_AVR32_ALIGN:
8722 + /* Nothing to do */
8723 + fixP->fx_done = FALSE;
8724 + break;
8725 + default:
8726 + as_fatal("reloc type %s not handled\n",
8727 + bfd_get_reloc_code_name(fixP->fx_r_type));
8728 + }
8729 + }
8730 +}
8731 +#endif
8732 +
8733 +arelent *
8734 +tc_gen_reloc (asection *section ATTRIBUTE_UNUSED,
8735 + fixS *fixp)
8736 +{
8737 + arelent *reloc;
8738 + bfd_reloc_code_real_type code;
8739 +
8740 + reloc = xmalloc (sizeof (arelent));
8741 +
8742 + reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *));
8743 + *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
8744 + reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
8745 + reloc->addend = fixp->fx_offset;
8746 + code = fixp->fx_r_type;
8747 +
8748 + reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
8749 +
8750 + if (reloc->howto == NULL)
8751 + {
8752 + as_bad_where (fixp->fx_file, fixp->fx_line,
8753 + _("cannot represent relocation %s in this object file format"),
8754 + bfd_get_reloc_code_name (code));
8755 + return NULL;
8756 + }
8757 +
8758 + return reloc;
8759 +}
8760 +
8761 +bfd_boolean
8762 +avr32_force_reloc(fixS *fixP)
8763 +{
8764 + if (linkrelax && fixP->fx_addsy
8765 + && !(S_GET_SEGMENT(fixP->fx_addsy)->flags & SEC_DEBUGGING)
8766 + && S_GET_SEGMENT(fixP->fx_addsy) != absolute_section)
8767 + {
8768 + pr_debug(stderr, "force reloc: addsy=%p, r_type=%d, sec=%s\n",
8769 + fixP->fx_addsy, fixP->fx_r_type, S_GET_SEGMENT(fixP->fx_addsy)->name);
8770 + return 1;
8771 + }
8772 +
8773 + return generic_force_reloc(fixP);
8774 +}
8775 +
8776 +bfd_boolean
8777 +avr32_fix_adjustable(fixS *fixP)
8778 +{
8779 + switch (fixP->fx_r_type)
8780 + {
8781 + /* GOT relocations can't have addends since BFD treats all
8782 + references to a given symbol the same. This means that we
8783 + must avoid section-relative references to local symbols when
8784 + dealing with these kinds of relocs */
8785 + case BFD_RELOC_AVR32_GOT32:
8786 + case BFD_RELOC_AVR32_GOT16:
8787 + case BFD_RELOC_AVR32_GOT8:
8788 + case BFD_RELOC_AVR32_GOT21S:
8789 + case BFD_RELOC_AVR32_GOT18SW:
8790 + case BFD_RELOC_AVR32_GOT16S:
8791 + case BFD_RELOC_AVR32_LDA_GOT:
8792 + case BFD_RELOC_AVR32_GOTCALL:
8793 + pr_debug("fix not adjustable\n");
8794 + return 0;
8795 +
8796 + default:
8797 + break;
8798 + }
8799 +
8800 + return 1;
8801 +}
8802 +
8803 +/* When we want the linker to be able to relax the code, we need to
8804 + output a reloc for every .align directive requesting an alignment
8805 + to a four byte boundary or larger. If we don't do this, the linker
8806 + can't guarantee that the alignment is actually maintained in the
8807 + linker output.
8808 +
8809 + TODO: Might as well insert proper NOPs while we're at it... */
8810 +void
8811 +avr32_handle_align(fragS *frag)
8812 +{
8813 + if (linkrelax
8814 + && frag->fr_type == rs_align_code
8815 + && frag->fr_address + frag->fr_fix > 0
8816 + && frag->fr_offset > 0)
8817 + {
8818 + /* The alignment order (fr_offset) is stored in the addend. */
8819 + fix_new(frag, frag->fr_fix, 2, &abs_symbol, frag->fr_offset,
8820 + FALSE, BFD_RELOC_AVR32_ALIGN);
8821 + }
8822 +}
8823 +
8824 +/* Relax_align. Advance location counter to next address that has 'alignment'
8825 + lowest order bits all 0s, return size of adjustment made. */
8826 +relax_addressT
8827 +avr32_relax_align(segT segment ATTRIBUTE_UNUSED,
8828 + fragS *fragP,
8829 + relax_addressT address)
8830 +{
8831 + relax_addressT mask;
8832 + relax_addressT new_address;
8833 + int alignment;
8834 +
8835 + alignment = fragP->fr_offset;
8836 + mask = ~((~0) << alignment);
8837 + new_address = (address + mask) & (~mask);
8838 +
8839 + return new_address - address;
8840 +}
8841 +
8842 +/* Turn a string in input_line_pointer into a floating point constant
8843 + of type type, and store the appropriate bytes in *litP. The number
8844 + of LITTLENUMS emitted is stored in *sizeP . An error message is
8845 + returned, or NULL on OK. */
8846 +
8847 +/* Equal to MAX_PRECISION in atof-ieee.c */
8848 +#define MAX_LITTLENUMS 6
8849 +
8850 +char *
8851 +md_atof (type, litP, sizeP)
8852 +char type;
8853 +char * litP;
8854 +int * sizeP;
8855 +{
8856 + int i;
8857 + int prec;
8858 + LITTLENUM_TYPE words [MAX_LITTLENUMS];
8859 + char * t;
8860 +
8861 + switch (type)
8862 + {
8863 + case 'f':
8864 + case 'F':
8865 + case 's':
8866 + case 'S':
8867 + prec = 2;
8868 + break;
8869 +
8870 + case 'd':
8871 + case 'D':
8872 + case 'r':
8873 + case 'R':
8874 + prec = 4;
8875 + break;
8876 +
8877 + /* FIXME: Some targets allow other format chars for bigger sizes here. */
8878 +
8879 + default:
8880 + * sizeP = 0;
8881 + return _("Bad call to md_atof()");
8882 + }
8883 +
8884 + t = atof_ieee (input_line_pointer, type, words);
8885 + if (t)
8886 + input_line_pointer = t;
8887 + * sizeP = prec * sizeof (LITTLENUM_TYPE);
8888 +
8889 + for (i = 0; i < prec; i++)
8890 + {
8891 + md_number_to_chars (litP, (valueT) words[i],
8892 + sizeof (LITTLENUM_TYPE));
8893 + litP += sizeof (LITTLENUM_TYPE);
8894 + }
8895 +
8896 + return 0;
8897 +}
8898 +
8899 +static char *avr32_end_of_match(char *cont, char *what)
8900 +{
8901 + int len = strlen (what);
8902 +
8903 + if (! is_part_of_name (cont[len])
8904 + && strncasecmp (cont, what, len) == 0)
8905 + return cont + len;
8906 +
8907 + return NULL;
8908 +}
8909 +
8910 +int
8911 +avr32_parse_name (char const *name, expressionS *exp, char *nextchar)
8912 +{
8913 + char *next = input_line_pointer;
8914 + char *next_end;
8915 +
8916 + pr_debug("parse_name: %s, nextchar=%c (%02x)\n", name, *nextchar, *nextchar);
8917 +
8918 + if (*nextchar == '(')
8919 + {
8920 + if (strcasecmp(name, "hi") == 0)
8921 + {
8922 + *next = *nextchar;
8923 +
8924 + expression(exp);
8925 +
8926 + if (exp->X_op == O_constant)
8927 + {
8928 + pr_debug(" -> constant hi(0x%08lx) -> 0x%04lx\n",
8929 + exp->X_add_number, exp->X_add_number >> 16);
8930 + exp->X_add_number = (exp->X_add_number >> 16) & 0xffff;
8931 + }
8932 + else
8933 + {
8934 + exp->X_md = exp->X_op;
8935 + exp->X_op = O_hi;
8936 + }
8937 +
8938 + return 1;
8939 + }
8940 + else if (strcasecmp(name, "lo") == 0)
8941 + {
8942 + *next = *nextchar;
8943 +
8944 + expression(exp);
8945 +
8946 + if (exp->X_op == O_constant)
8947 + exp->X_add_number &= 0xffff;
8948 + else
8949 + {
8950 + exp->X_md = exp->X_op;
8951 + exp->X_op = O_lo;
8952 + }
8953 +
8954 + return 1;
8955 + }
8956 + }
8957 + else if (*nextchar == '@')
8958 + {
8959 + exp->X_md = exp->X_op;
8960 +
8961 + if ((next_end = avr32_end_of_match (next + 1, "got")))
8962 + exp->X_op = O_got;
8963 + else if ((next_end = avr32_end_of_match (next + 1, "tlsgd")))
8964 + exp->X_op = O_tlsgd;
8965 + /* Add more as needed */
8966 + else
8967 + {
8968 + char c;
8969 + input_line_pointer++;
8970 + c = get_symbol_end();
8971 + as_bad (_("unknown relocation override `%s'"), next + 1);
8972 + *input_line_pointer = c;
8973 + input_line_pointer = next;
8974 + return 0;
8975 + }
8976 +
8977 + exp->X_op_symbol = NULL;
8978 + exp->X_add_symbol = symbol_find_or_make (name);
8979 + exp->X_add_number = 0;
8980 +
8981 + *input_line_pointer = *nextchar;
8982 + input_line_pointer = next_end;
8983 + *nextchar = *input_line_pointer;
8984 + *input_line_pointer = '\0';
8985 + return 1;
8986 + }
8987 + else if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0)
8988 + {
8989 + if (!GOT_symbol)
8990 + GOT_symbol = symbol_find_or_make(name);
8991 +
8992 + exp->X_add_symbol = GOT_symbol;
8993 + exp->X_op = O_symbol;
8994 + exp->X_add_number = 0;
8995 + return 1;
8996 + }
8997 +
8998 + return 0;
8999 +}
9000 +
9001 +static void
9002 +s_rseg (int value ATTRIBUTE_UNUSED)
9003 +{
9004 + /* Syntax: RSEG segment_name [:type] [NOROOT|ROOT] [(align)]
9005 + * Defaults:
9006 + * - type: undocumented ("typically CODE or DATA")
9007 + * - ROOT
9008 + * - align: 1 for code, 0 for others
9009 + *
9010 + * TODO: NOROOT is ignored. If gas supports discardable segments, it should
9011 + * be implemented.
9012 + */
9013 + char *name, *end;
9014 + int length, type, attr;
9015 + int align = 0;
9016 +
9017 + SKIP_WHITESPACE();
9018 +
9019 + end = input_line_pointer;
9020 + while (0 == strchr ("\n\t;:( ", *end))
9021 + end++;
9022 + if (end == input_line_pointer)
9023 + {
9024 + as_warn (_("missing name"));
9025 + ignore_rest_of_line();
9026 + return;
9027 + }
9028 +
9029 + name = xmalloc (end - input_line_pointer + 1);
9030 + memcpy (name, input_line_pointer, end - input_line_pointer);
9031 + name[end - input_line_pointer] = '\0';
9032 + input_line_pointer = end;
9033 +
9034 + SKIP_WHITESPACE();
9035 +
9036 + type = SHT_NULL;
9037 + attr = 0;
9038 +
9039 + if (*input_line_pointer == ':')
9040 + {
9041 + /* Skip the colon */
9042 + ++input_line_pointer;
9043 + SKIP_WHITESPACE();
9044 +
9045 + /* Possible options at this point:
9046 + * - flag (ROOT or NOROOT)
9047 + * - a segment type
9048 + */
9049 + end = input_line_pointer;
9050 + while (0 == strchr ("\n\t;:( ", *end))
9051 + end++;
9052 + length = end - input_line_pointer;
9053 + if (((length == 4) && (0 == strncasecmp( input_line_pointer, "ROOT", 4))) ||
9054 + ((length == 6) && (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
9055 + {
9056 + /* Ignore ROOT/NOROOT */
9057 + input_line_pointer = end;
9058 + }
9059 + else
9060 + {
9061 + /* Must be a segment type */
9062 + switch (*input_line_pointer)
9063 + {
9064 + case 'C':
9065 + case 'c':
9066 + if ((length == 4) &&
9067 + (0 == strncasecmp (input_line_pointer, "CODE", 4)))
9068 + {
9069 + attr |= SHF_ALLOC | SHF_EXECINSTR;
9070 + type = SHT_PROGBITS;
9071 + align = 1;
9072 + break;
9073 + }
9074 + if ((length == 5) &&
9075 + (0 == strncasecmp (input_line_pointer, "CONST", 5)))
9076 + {
9077 + attr |= SHF_ALLOC;
9078 + type = SHT_PROGBITS;
9079 + break;
9080 + }
9081 + goto de_fault;
9082 +
9083 + case 'D':
9084 + case 'd':
9085 + if ((length == 4) &&
9086 + (0 == strncasecmp (input_line_pointer, "DATA", 4)))
9087 + {
9088 + attr |= SHF_ALLOC | SHF_WRITE;
9089 + type = SHT_PROGBITS;
9090 + break;
9091 + }
9092 + goto de_fault;
9093 +
9094 + /* TODO: Add FAR*, HUGE*, IDATA and NEAR* if necessary */
9095 +
9096 + case 'U':
9097 + case 'u':
9098 + if ((length == 7) &&
9099 + (0 == strncasecmp (input_line_pointer, "UNTYPED", 7)))
9100 + break;
9101 + goto de_fault;
9102 +
9103 + /* TODO: Add XDATA and ZPAGE if necessary */
9104 +
9105 + de_fault:
9106 + default:
9107 + as_warn (_("unrecognized segment type"));
9108 + }
9109 +
9110 + input_line_pointer = end;
9111 + SKIP_WHITESPACE();
9112 +
9113 + if (*input_line_pointer == ':')
9114 + {
9115 + /* ROOT/NOROOT */
9116 + ++input_line_pointer;
9117 + SKIP_WHITESPACE();
9118 +
9119 + end = input_line_pointer;
9120 + while (0 == strchr ("\n\t;:( ", *end))
9121 + end++;
9122 + length = end - input_line_pointer;
9123 + if (! ((length == 4) &&
9124 + (0 == strncasecmp( input_line_pointer, "ROOT", 4))) &&
9125 + ! ((length == 6) &&
9126 + (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
9127 + {
9128 + as_warn (_("unrecognized segment flag"));
9129 + }
9130 +
9131 + input_line_pointer = end;
9132 + SKIP_WHITESPACE();
9133 + }
9134 + }
9135 + }
9136 +
9137 + if (*input_line_pointer == '(')
9138 + {
9139 + align = get_absolute_expression ();
9140 + }
9141 +
9142 + demand_empty_rest_of_line();
9143 +
9144 + obj_elf_change_section (name, type, attr, 0, NULL, 0, 0);
9145 +#ifdef AVR32_DEBUG
9146 + fprintf( stderr, "RSEG: Changed section to %s, type: 0x%x, attr: 0x%x\n",
9147 + name, type, attr );
9148 + fprintf( stderr, "RSEG: Aligning to 2**%d\n", align );
9149 +#endif
9150 +
9151 + if (align > 15)
9152 + {
9153 + align = 15;
9154 + as_warn (_("alignment too large: %u assumed"), align);
9155 + }
9156 +
9157 + /* Hope not, that is */
9158 + assert (now_seg != absolute_section);
9159 +
9160 + /* Only make a frag if we HAVE to... */
9161 + if (align != 0 && !need_pass_2)
9162 + {
9163 + if (subseg_text_p (now_seg))
9164 + frag_align_code (align, 0);
9165 + else
9166 + frag_align (align, 0, 0);
9167 + }
9168 +
9169 + record_alignment (now_seg, align - OCTETS_PER_BYTE_POWER);
9170 +}
9171 +
9172 +/* vim: syntax=c sw=2
9173 + */
9174 --- /dev/null
9175 +++ b/gas/config/tc-avr32.h
9176 @@ -0,0 +1,325 @@
9177 +/* Assembler definitions for AVR32.
9178 + Copyright 2003-2006 Atmel Corporation.
9179 +
9180 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
9181 +
9182 + This file is part of GAS, the GNU Assembler.
9183 +
9184 + GAS is free software; you can redistribute it and/or modify it
9185 + under the terms of the GNU General Public License as published by
9186 + the Free Software Foundation; either version 2, or (at your option)
9187 + any later version.
9188 +
9189 + GAS is distributed in the hope that it will be useful, but WITHOUT
9190 + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
9191 + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
9192 + License for more details.
9193 +
9194 + You should have received a copy of the GNU General Public License
9195 + along with GAS; see the file COPYING. If not, write to the Free
9196 + Software Foundation, 59 Temple Place - Suite 330, Boston, MA
9197 + 02111-1307, USA. */
9198 +
9199 +#if 0
9200 +#define DEBUG
9201 +#define DEBUG1
9202 +#define DEBUG2
9203 +#define DEBUG3
9204 +#define DEBUG4
9205 +#define DEBUG5
9206 +#endif
9207 +
9208 +/* Are we trying to be compatible with the IAR assembler? (--iar) */
9209 +extern int avr32_iarcompat;
9210 +
9211 +/* By convention, you should define this macro in the `.h' file. For
9212 + example, `tc-m68k.h' defines `TC_M68K'. You might have to use this
9213 + if it is necessary to add CPU specific code to the object format
9214 + file. */
9215 +#define TC_AVR32
9216 +
9217 +/* This macro is the BFD target name to use when creating the output
9218 + file. This will normally depend upon the `OBJ_FMT' macro. */
9219 +#define TARGET_FORMAT "elf32-avr32"
9220 +
9221 +/* This macro is the BFD architecture to pass to `bfd_set_arch_mach'. */
9222 +#define TARGET_ARCH bfd_arch_avr32
9223 +
9224 +/* This macro is the BFD machine number to pass to
9225 + `bfd_set_arch_mach'. If it is not defined, GAS will use 0. */
9226 +#define TARGET_MACH 0
9227 +
9228 +/* UNDOCUMENTED: Allow //-style comments */
9229 +#define DOUBLESLASH_LINE_COMMENTS
9230 +
9231 +/* You should define this macro to be non-zero if the target is big
9232 + endian, and zero if the target is little endian. */
9233 +#define TARGET_BYTES_BIG_ENDIAN 1
9234 +
9235 +/* FIXME: It seems that GAS only expects a one-byte opcode...
9236 + #define NOP_OPCODE 0xd703 */
9237 +
9238 +/* If you define this macro, GAS will warn about the use of
9239 + nonstandard escape sequences in a string. */
9240 +#undef ONLY_STANDARD_ESCAPES
9241 +
9242 +#define DWARF2_FORMAT() dwarf2_format_32bit
9243 +
9244 +/* Instructions are either 2 or 4 bytes long */
9245 +/* #define DWARF2_LINE_MIN_INSN_LENGTH 2 */
9246 +
9247 +/* GAS will call this function for any expression that can not be
9248 + recognized. When the function is called, `input_line_pointer'
9249 + will point to the start of the expression. */
9250 +#define md_operand(x)
9251 +
9252 +#define md_parse_name(name, expr, mode, c) avr32_parse_name(name, expr, c)
9253 +extern int avr32_parse_name(const char *, struct expressionS *, char *);
9254 +
9255 +/* You may define this macro to generate a fixup for a data
9256 + allocation pseudo-op. */
9257 +#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP) \
9258 + avr32_cons_fix_new(FRAG, OFF, LEN, EXP)
9259 +void avr32_cons_fix_new (fragS *, int, int, expressionS *);
9260 +
9261 +/* `extsym - .' expressions can be emitted using PC-relative relocs */
9262 +#define DIFF_EXPR_OK
9263 +
9264 +/* This is used to construct expressions out of @gotoff, etc. The
9265 + relocation type is stored in X_md */
9266 +#define O_got O_md1
9267 +#define O_hi O_md2
9268 +#define O_lo O_md3
9269 +#define O_tlsgd O_md4
9270 +
9271 +/* You may define this macro to parse an expression used in a data
9272 + allocation pseudo-op such as `.word'. You can use this to
9273 + recognize relocation directives that may appear in such directives. */
9274 +/* #define TC_PARSE_CONS_EXPRESSION(EXPR,N) avr_parse_cons_expression (EXPR,N)
9275 + void avr_parse_cons_expression (expressionS *exp, int nbytes); */
9276 +
9277 +/* This should just call either `number_to_chars_bigendian' or
9278 + `number_to_chars_littleendian', whichever is appropriate. On
9279 + targets like the MIPS which support options to change the
9280 + endianness, which function to call is a runtime decision. On
9281 + other targets, `md_number_to_chars' can be a simple macro. */
9282 +#define md_number_to_chars number_to_chars_bigendian
9283 +
9284 +/* `md_short_jump_size'
9285 + `md_long_jump_size'
9286 + `md_create_short_jump'
9287 + `md_create_long_jump'
9288 + If `WORKING_DOT_WORD' is defined, GAS will not do broken word
9289 + processing (*note Broken words::.). Otherwise, you should set
9290 + `md_short_jump_size' to the size of a short jump (a jump that is
9291 + just long enough to jump around a long jmp) and
9292 + `md_long_jump_size' to the size of a long jump (a jump that can go
9293 + anywhere in the function), You should define
9294 + `md_create_short_jump' to create a short jump around a long jump,
9295 + and define `md_create_long_jump' to create a long jump. */
9296 +#define WORKING_DOT_WORD
9297 +
9298 +/* If you define this macro, it means that `tc_gen_reloc' may return
9299 + multiple relocation entries for a single fixup. In this case, the
9300 + return value of `tc_gen_reloc' is a pointer to a null terminated
9301 + array. */
9302 +#undef RELOC_EXPANSION_POSSIBLE
9303 +
9304 +/* If you define this macro, GAS will not require pseudo-ops to start with a .
9305 + character. */
9306 +#define NO_PSEUDO_DOT (avr32_iarcompat)
9307 +
9308 +/* The IAR assembler uses $ as the location counter. Unfortunately, we
9309 + can't make this dependent on avr32_iarcompat... */
9310 +#define DOLLAR_DOT
9311 +
9312 +/* Values passed to md_apply_fix3 don't include the symbol value. */
9313 +#define MD_APPLY_SYM_VALUE(FIX) 0
9314 +
9315 +/* The number of bytes to put into a word in a listing. This affects
9316 + the way the bytes are clumped together in the listing. For
9317 + example, a value of 2 might print `1234 5678' where a value of 1
9318 + would print `12 34 56 78'. The default value is 4. */
9319 +#define LISTING_WORD_SIZE 4
9320 +
9321 +/* extern const struct relax_type md_relax_table[];
9322 +#define TC_GENERIC_RELAX_TABLE md_relax_table */
9323 +
9324 +/*
9325 + An `.lcomm' directive with no explicit alignment parameter will use
9326 + this macro to set P2VAR to the alignment that a request for SIZE
9327 + bytes will have. The alignment is expressed as a power of two. If
9328 + no alignment should take place, the macro definition should do
9329 + nothing. Some targets define a `.bss' directive that is also
9330 + affected by this macro. The default definition will set P2VAR to
9331 + the truncated power of two of sizes up to eight bytes.
9332 +
9333 + We want doublewords to be word-aligned, so we're going to modify the
9334 + default definition a tiny bit.
9335 +*/
9336 +#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) \
9337 + do \
9338 + { \
9339 + if ((SIZE) >= 4) \
9340 + (P2VAR) = 2; \
9341 + else if ((SIZE) >= 2) \
9342 + (P2VAR) = 1; \
9343 + else \
9344 + (P2VAR) = 0; \
9345 + } \
9346 + while (0)
9347 +
9348 +/* When relaxing, we need to generate relocations for alignment
9349 + directives. */
9350 +#define HANDLE_ALIGN(frag) avr32_handle_align(frag)
9351 +extern void avr32_handle_align(fragS *);
9352 +
9353 +/* See internals doc for explanation. Oh wait...
9354 + Now, can you guess where "alignment" comes from? ;-) */
9355 +#define MAX_MEM_FOR_RS_ALIGN_CODE ((1 << alignment) - 1)
9356 +
9357 +/* We need to stop gas from reducing certain expressions (e.g. GOT
9358 + references) */
9359 +#define tc_fix_adjustable(fix) avr32_fix_adjustable(fix)
9360 +extern bfd_boolean avr32_fix_adjustable(struct fix *);
9361 +
9362 +/* The linker needs to be passed a little more information when relaxing. */
9363 +#define TC_FORCE_RELOCATION(fix) avr32_force_reloc(fix)
9364 +extern bfd_boolean avr32_force_reloc(struct fix *);
9365 +
9366 +/* I'm tired of working around all the madness in fixup_segment().
9367 + This hook will do basically the same things as the generic code,
9368 + and then it will "goto" right past it. */
9369 +#define TC_VALIDATE_FIX(FIX, SEG, SKIP) \
9370 + do \
9371 + { \
9372 + avr32_process_fixup(FIX, SEG); \
9373 + if (!(FIX)->fx_done) \
9374 + ++seg_reloc_count; \
9375 + goto SKIP; \
9376 + } \
9377 + while (0)
9378 +extern void avr32_process_fixup(struct fix *fixP, segT this_segment);
9379 +
9380 +/* Positive values of TC_FX_SIZE_SLACK allow a target to define
9381 + fixups that far past the end of a frag. Having such fixups
9382 + is of course most most likely a bug in setting fx_size correctly.
9383 + A negative value disables the fixup check entirely, which is
9384 + appropriate for something like the Renesas / SuperH SH_COUNT
9385 + reloc. */
9386 +/* This target is buggy, and sets fix size too large. */
9387 +#define TC_FX_SIZE_SLACK(FIX) -1
9388 +
9389 +/* We don't want the gas core to make any assumptions about our way of
9390 + doing linkrelaxing. */
9391 +#define TC_LINKRELAX_FIXUP(SEG) 0
9392 +
9393 +/* ... but we do want it to insert lots of padding. */
9394 +#define LINKER_RELAXING_SHRINKS_ONLY
9395 +
9396 +/* Better do it ourselves, really... */
9397 +#define TC_RELAX_ALIGN(SEG, FRAG, ADDR) avr32_relax_align(SEG, FRAG, ADDR)
9398 +extern relax_addressT
9399 +avr32_relax_align(segT segment, fragS *fragP, relax_addressT address);
9400 +
9401 +/* Use line number format that is amenable to linker relaxation. */
9402 +#define DWARF2_USE_FIXED_ADVANCE_PC (linkrelax != 0)
9403 +
9404 +/* This is called by write_object_file() just before symbols are
9405 + attempted converted into section symbols. */
9406 +#define tc_frob_file_before_adjust() avr32_frob_file()
9407 +extern void avr32_frob_file(void);
9408 +
9409 +/* If you define this macro, GAS will call it at the end of each input
9410 + file. */
9411 +#define md_cleanup() avr32_cleanup()
9412 +extern void avr32_cleanup(void);
9413 +
9414 +/* There's an AVR32-specific hack in operand() which creates O_md
9415 + expressions when encountering HWRD or LWRD. We need to generate
9416 + proper relocs for them */
9417 +/* #define md_cgen_record_fixup_exp avr32_cgen_record_fixup_exp */
9418 +
9419 +/* I needed to add an extra hook in gas_cgen_finish_insn() for
9420 + conversion of O_md* operands because md_cgen_record_fixup_exp()
9421 + isn't called for relaxable insns */
9422 +/* #define md_cgen_convert_expr(exp, opinfo) avr32_cgen_convert_expr(exp, opinfo)
9423 + int avr32_cgen_convert_expr(expressionS *, int); */
9424 +
9425 +/* #define tc_gen_reloc gas_cgen_tc_gen_reloc */
9426 +
9427 +/* If you define this macro, it should return the position from which
9428 + the PC relative adjustment for a PC relative fixup should be
9429 + made. On many processors, the base of a PC relative instruction is
9430 + the next instruction, so this macro would return the length of an
9431 + instruction, plus the address of the PC relative fixup. The latter
9432 + can be calculated as fixp->fx_where + fixp->fx_frag->fr_address. */
9433 +extern long md_pcrel_from_section (struct fix *, segT);
9434 +#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
9435 +
9436 +#define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L'))
9437 +#define LOCAL_LABELS_FB 1
9438 +
9439 +struct avr32_relaxer
9440 +{
9441 + int (*estimate_size)(fragS *, segT);
9442 + long (*relax_frag)(segT, fragS *, long);
9443 + void (*convert_frag)(bfd *, segT, fragS *);
9444 +};
9445 +
9446 +/* AVR32 has quite complex instruction coding, which means we need
9447 + * lots of information in order to do the right thing during relaxing
9448 + * (basically, we need to be able to reconstruct a whole new opcode if
9449 + * necessary) */
9450 +#define TC_FRAG_TYPE struct avr32_frag_data
9451 +
9452 +struct cpool;
9453 +
9454 +struct avr32_frag_data
9455 +{
9456 + /* TODO: Maybe add an expression object here so that we can use
9457 + fix_new_exp() in md_convert_frag? We may have to decide
9458 + pcrel-ness in md_estimate_size_before_relax() as well...or we
9459 + might do it when parsing. Doing it while parsing may fail
9460 + because the sub_symbol is undefined then... */
9461 + int pcrel;
9462 + int force_extended;
9463 + int reloc_info;
9464 + struct avr32_relaxer *relaxer;
9465 + expressionS exp;
9466 +
9467 + /* Points to associated constant pool, for use by LDA and CALL in
9468 + non-pic mode, and when relaxing the .cpool directive */
9469 + struct cpool *pool;
9470 + unsigned int pool_entry;
9471 +};
9472 +
9473 +/* We will have to initialize the fields explicitly when needed */
9474 +#define TC_FRAG_INIT(fragP)
9475 +
9476 +#define md_estimate_size_before_relax(fragP, segT) \
9477 + ((fragP)->tc_frag_data.relaxer->estimate_size(fragP, segT))
9478 +#define md_relax_frag(segment, fragP, stretch) \
9479 + ((fragP)->tc_frag_data.relaxer->relax_frag(segment, fragP, stretch))
9480 +#define md_convert_frag(abfd, segment, fragP) \
9481 + ((fragP)->tc_frag_data.relaxer->convert_frag(abfd, segment, fragP))
9482 +
9483 +#define TC_FIX_TYPE struct avr32_fix_data
9484 +
9485 +struct avr32_fix_data
9486 +{
9487 + const struct avr32_ifield *ifield;
9488 + unsigned int align;
9489 + long min;
9490 + long max;
9491 +};
9492 +
9493 +#define TC_INIT_FIX_DATA(fixP) \
9494 + do \
9495 + { \
9496 + (fixP)->tc_fix_data.ifield = NULL; \
9497 + (fixP)->tc_fix_data.align = 0; \
9498 + (fixP)->tc_fix_data.min = 0; \
9499 + (fixP)->tc_fix_data.max = 0; \
9500 + } \
9501 + while (0)
9502 --- a/gas/configure.tgt
9503 +++ b/gas/configure.tgt
9504 @@ -33,6 +33,7 @@ case ${cpu} in
9505 am33_2.0) cpu_type=mn10300 endian=little ;;
9506 arm*be|arm*b) cpu_type=arm endian=big ;;
9507 arm*) cpu_type=arm endian=little ;;
9508 + avr32*) cpu_type=avr32 endian=big ;;
9509 bfin*) cpu_type=bfin endian=little ;;
9510 c4x*) cpu_type=tic4x ;;
9511 cr16*) cpu_type=cr16 endian=little ;;
9512 @@ -129,6 +130,9 @@ case ${generic_target} in
9513 bfin-*elf) fmt=elf ;;
9514 cr16-*-elf*) fmt=elf ;;
9515
9516 + avr32-*-linux*) fmt=elf em=linux bfd_gas=yes ;;
9517 + avr32*) fmt=elf bfd_gas=yes ;;
9518 +
9519 cris-*-linux-* | crisv32-*-linux-*)
9520 fmt=multi em=linux ;;
9521 cris-*-* | crisv32-*-*) fmt=multi ;;
9522 --- a/gas/doc/all.texi
9523 +++ b/gas/doc/all.texi
9524 @@ -30,6 +30,7 @@
9525 @set ARC
9526 @set ARM
9527 @set AVR
9528 +@set AVR32
9529 @set BFIN
9530 @set CR16
9531 @set CRIS
9532 --- a/gas/doc/as.texinfo
9533 +++ b/gas/doc/as.texinfo
9534 @@ -6353,6 +6353,9 @@ subject, see the hardware manufacturer's
9535 @ifset AVR
9536 * AVR-Dependent:: AVR Dependent Features
9537 @end ifset
9538 +@ifset AVR32
9539 +* AVR32-Dependent:: AVR32 Dependent Features
9540 +@end ifset
9541 @ifset BFIN
9542 * BFIN-Dependent:: BFIN Dependent Features
9543 @end ifset
9544 @@ -6476,6 +6479,10 @@ subject, see the hardware manufacturer's
9545 @include c-avr.texi
9546 @end ifset
9547
9548 +@ifset AVR32
9549 +@include c-avr32.texi
9550 +@end ifset
9551 +
9552 @ifset BFIN
9553 @include c-bfin.texi
9554 @end ifset
9555 --- /dev/null
9556 +++ b/gas/doc/c-avr32.texi
9557 @@ -0,0 +1,247 @@
9558 +@c Copyright 2005, 2006
9559 +@c Atmel Corporation
9560 +@c This is part of the GAS manual.
9561 +@c For copying conditions, see the file as.texinfo.
9562 +
9563 +@ifset GENERIC
9564 +@page
9565 +@node AVR32-Dependent
9566 +@chapter AVR32 Dependent Features
9567 +@end ifset
9568 +
9569 +@ifclear GENERIC
9570 +@node Machine Dependencies
9571 +@chapter AVR32 Dependent Features
9572 +@end ifclear
9573 +
9574 +@cindex AVR32 support
9575 +@menu
9576 +* AVR32 Options:: Options
9577 +* AVR32 Syntax:: Syntax
9578 +* AVR32 Directives:: Directives
9579 +* AVR32 Opcodes:: Opcodes
9580 +@end menu
9581 +
9582 +@node AVR32 Options
9583 +@section Options
9584 +@cindex AVR32 options
9585 +@cindex options for AVR32
9586 +
9587 +There are currently no AVR32-specific options. However, the following
9588 +options are planned:
9589 +
9590 +@table @code
9591 +
9592 +@cindex @code{--pic} command line option, AVR32
9593 +@cindex PIC code generation for AVR32
9594 +@item --pic
9595 +This option specifies that the output of the assembler should be marked
9596 +as position-independent code (PIC). It will also ensure that
9597 +pseudo-instructions that deal with address calculation are output as
9598 +PIC, and that all absolute address references in the code are marked as
9599 +such.
9600 +
9601 +@cindex @code{--linkrelax} command line option, AVR32
9602 +@item --linkrelax
9603 +This option specifies that the output of the assembler should be marked
9604 +as linker-relaxable. It will also ensure that all PC-relative operands
9605 +that may change during linker relaxation get appropriate relocations.
9606 +
9607 +@end table
9608 +
9609 +
9610 +@node AVR32 Syntax
9611 +@section Syntax
9612 +@menu
9613 +* AVR32-Chars:: Special Characters
9614 +* AVR32-Symrefs:: Symbol references
9615 +@end menu
9616 +
9617 +@node AVR32-Chars
9618 +@subsection Special Characters
9619 +
9620 +@cindex line comment character, AVR32
9621 +@cindex AVR32 line comment character
9622 +The presence of a @samp{//} on a line indicates the start of a comment
9623 +that extends to the end of the current line. If a @samp{#} appears as
9624 +the first character of a line, the whole line is treated as a comment.
9625 +
9626 +@cindex line separator, AVR32
9627 +@cindex statement separator, AVR32
9628 +@cindex AVR32 line separator
9629 +The @samp{;} character can be used instead of a newline to separate
9630 +statements.
9631 +
9632 +@node AVR32-Symrefs
9633 +@subsection Symbol references
9634 +
9635 +The absolute value of a symbol can be obtained by simply naming the
9636 +symbol. However, as AVR32 symbols have 32-bit values, most symbols have
9637 +values that are outside the range of any instructions.
9638 +
9639 +Instructions that take a PC-relative offset, e.g. @code{lddpc} or
9640 +@code{rcall}, can also reference a symbol by simply naming the symbol
9641 +(no explicit calculations necessary). In this case, the assembler or
9642 +linker subtracts the address of the instruction from the symbol's value
9643 +and inserts the result into the instruction. Note that even though an
9644 +overflow is less likely to happen for a relative reference than for an
9645 +absolute reference, the assembler or linker will generate an error if
9646 +the referenced symbol is too far away from the current location.
9647 +
9648 +Relative references can be used for data as well. For example:
9649 +
9650 +@smallexample
9651 + lddpc r0, 2f
9652 +1: add r0, pc
9653 + ...
9654 + .align 2
9655 +2: .int @var{some_symbol} - 1b
9656 +@end smallexample
9657 +
9658 +Here, r0 will end up with the run-time address of @var{some_symbol} even
9659 +if the program was loaded at a different address than it was linked
9660 +(position-independent code).
9661 +
9662 +@subsubsection Symbol modifiers
9663 +
9664 +@table @code
9665 +
9666 +@item @code{hi(@var{symbol})}
9667 +Evaluates to the value of the symbol shifted right 16 bits. This will
9668 +work even if @var{symbol} is defined in a different module.
9669 +
9670 +@item @code{lo(@var{symbol})}
9671 +Evaluates to the low 16 bits of the symbol's value. This will work even
9672 +if @var{symbol} is defined in a different module.
9673 +
9674 +@item @code{@var{symbol}@@got}
9675 +Create a GOT entry for @var{symbol} and return the offset of that entry
9676 +relative to the GOT base.
9677 +
9678 +@end table
9679 +
9680 +
9681 +@node AVR32 Directives
9682 +@section Directives
9683 +@cindex machine directives, AVR32
9684 +@cindex AVR32 directives
9685 +
9686 +@table @code
9687 +
9688 +@cindex @code{.cpool} directive, AVR32
9689 +@item .cpool
9690 +This directive causes the current contents of the constant pool to be
9691 +dumped into the current section at the current location (aligned to a
9692 +word boundary). @code{GAS} maintains a separate constant pool for each
9693 +section and each sub-section. The @code{.cpool} directive will only
9694 +affect the constant pool of the current section and sub-section. At the
9695 +end of assembly, all remaining, non-empty constant pools will
9696 +automatically be dumped.
9697 +
9698 +@end table
9699 +
9700 +
9701 +@node AVR32 Opcodes
9702 +@section Opcodes
9703 +@cindex AVR32 opcodes
9704 +@cindex opcodes for AVR32
9705 +
9706 +@code{@value{AS}} implements all the standard AVR32 opcodes. It also
9707 +implements several pseudo-opcodes, which are recommended to use wherever
9708 +possible because they give the tool chain better freedom to generate
9709 +optimal code.
9710 +
9711 +@table @code
9712 +
9713 +@cindex @code{LDA.W reg, symbol} pseudo op, AVR32
9714 +@item LDA.W
9715 +@smallexample
9716 + lda.w @var{reg}, @var{symbol}
9717 +@end smallexample
9718 +
9719 +This instruction will load the address of @var{symbol} into
9720 +@var{reg}. The instruction will evaluate to one of the following,
9721 +depending on the relative distance to the symbol, the relative distance
9722 +to the constant pool and whether the @code{--pic} option has been
9723 +specified. If the @code{--pic} option has not been specified, the
9724 +alternatives are as follows:
9725 +@smallexample
9726 + /* @var{symbol} evaluates to a small enough value */
9727 + mov @var{reg}, @var{symbol}
9728 +
9729 + /* (. - @var{symbol}) evaluates to a small enough value */
9730 + sub @var{reg}, pc, . - @var{symbol}
9731 +
9732 + /* Constant pool is close enough */
9733 + lddpc @var{reg}, @var{cpent}
9734 + ...
9735 +@var{cpent}:
9736 + .long @var{symbol}
9737 +
9738 + /* Otherwise (not implemented yet, probably not necessary) */
9739 + mov @var{reg}, lo(@var{symbol})
9740 + orh @var{reg}, hi(@var{symbol})
9741 +@end smallexample
9742 +
9743 +If the @code{--pic} option has been specified, the alternatives are as
9744 +follows:
9745 +@smallexample
9746 + /* (. - @var{symbol}) evaluates to a small enough value */
9747 + sub @var{reg}, pc, . - @var{symbol}
9748 +
9749 + /* If @code{--linkrelax} not specified */
9750 + ld.w @var{reg}, r6[@var{symbol}@@got]
9751 +
9752 + /* Otherwise */
9753 + mov @var{reg}, @var{symbol}@@got / 4
9754 + ld.w @var{reg}, r6[@var{reg} << 2]
9755 +@end smallexample
9756 +
9757 +If @var{symbol} is not defined in the same file and section as the
9758 +@code{LDA.W} instruction, the most pessimistic alternative of the
9759 +above is selected. The linker may convert it back into the most
9760 +optimal alternative when the final value of all symbols is known.
9761 +
9762 +@cindex @code{CALL symbol} pseudo op, AVR32
9763 +@item CALL
9764 +@smallexample
9765 + call @var{symbol}
9766 +@end smallexample
9767 +
9768 +This instruction will insert code to call the subroutine identified by
9769 +@var{symbol}. It will evaluate to one of the following, depending on
9770 +the relative distance to the symbol as well as the @code{--linkrelax}
9771 +and @code{--pic} command-line options.
9772 +
9773 +If @var{symbol} is defined in the same section and input file, and the
9774 +distance is small enough, an @code{rcall} instruction is inserted:
9775 +@smallexample
9776 + rcall @var{symbol}
9777 +@end smallexample
9778 +
9779 +Otherwise, if the @code{--pic} option has not been specified:
9780 +@smallexample
9781 + mcall @var{cpent}
9782 + ...
9783 +@var{cpent}:
9784 + .long @var{symbol}
9785 +@end smallexample
9786 +
9787 +Finally, if nothing else fits and the @code{--pic} option has been
9788 +specified, the assembler will indirect the call through the Global
9789 +Offset Table:
9790 +@smallexample
9791 + /* If @code{--linkrelax} not specified */
9792 + mcall r6[@var{symbol}@@got]
9793 +
9794 + /* If @code{--linkrelax} specified */
9795 + mov lr, @var{symbol}@@got / 4
9796 + ld.w lr, r6[lr << 2]
9797 + icall lr
9798 +@end smallexample
9799 +
9800 +The linker, after determining the final value of @var{symbol}, may
9801 +convert any of these into more optimal alternatives. This includes
9802 +deleting any superfluous constant pool- and GOT-entries.
9803 +
9804 +@end table
9805 --- a/gas/doc/Makefile.am
9806 +++ b/gas/doc/Makefile.am
9807 @@ -33,6 +33,7 @@ CPU_DOCS = \
9808 c-arc.texi \
9809 c-arm.texi \
9810 c-avr.texi \
9811 + c-avr32.texi \
9812 c-bfin.texi \
9813 c-cr16.texi \
9814 c-d10v.texi \
9815 --- a/gas/Makefile.am
9816 +++ b/gas/Makefile.am
9817 @@ -47,6 +47,7 @@ CPU_TYPES = \
9818 arc \
9819 arm \
9820 avr \
9821 + avr32 \
9822 bfin \
9823 cr16 \
9824 cris \
9825 @@ -241,6 +242,7 @@ TARGET_CPU_CFILES = \
9826 config/tc-arc.c \
9827 config/tc-arm.c \
9828 config/tc-avr.c \
9829 + config/tc-avr32.c \
9830 config/tc-bfin.c \
9831 config/tc-cr16.c \
9832 config/tc-cris.c \
9833 @@ -296,6 +298,7 @@ TARGET_CPU_HFILES = \
9834 config/tc-arc.h \
9835 config/tc-arm.h \
9836 config/tc-avr.h \
9837 + config/tc-avr32.h \
9838 config/tc-bfin.h \
9839 config/tc-cr16.h \
9840 config/tc-cris.h \
9841 @@ -1050,6 +1053,11 @@ DEPTC_avr_elf = $(srcdir)/config/obj-elf
9842 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
9843 $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
9844 $(INCDIR)/opcode/avr.h
9845 +DEPTC_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
9846 + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
9847 + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
9848 + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
9849 + $(srcdir)/../opcodes/avr32-opc.h $(srcdir)/../opcodes/avr32-asm.h
9850 DEPTC_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
9851 $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
9852 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
9853 @@ -1487,6 +1495,11 @@ DEPOBJ_avr_elf = $(srcdir)/config/obj-el
9854 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
9855 $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
9856 $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
9857 +DEPOBJ_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
9858 + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
9859 + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
9860 + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
9861 + struc-symbol.h dwarf2dbg.h
9862 DEPOBJ_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
9863 $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
9864 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
9865 @@ -1858,6 +1871,9 @@ DEP_cr16_elf = $(srcdir)/config/obj-elf.
9866 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cr16.h dwarf2dbg.h \
9867 $(srcdir)/config/obj-coff.h $(INCDIR)/coff/internal.h \
9868 $(BFDDIR)/libcoff.h
9869 +DEP_avr32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
9870 + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
9871 + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h
9872 DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
9873 $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
9874 DEP_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
9875 --- /dev/null
9876 +++ b/gas/testsuite/gas/avr32/aliases.d
9877 @@ -0,0 +1,19 @@
9878 +#as:
9879 +#objdump: -dr
9880 +#name: aliases
9881 +
9882 +.*: +file format .*
9883 +
9884 +Disassembly of section \.text:
9885 +
9886 +00000000 <ld_nodisp>:
9887 + 0: 19 80 [ \t]+ld\.ub r0,r12\[0x0\]
9888 + 2: f9 20 00 00[ \t]+ld\.sb r0,r12\[0\]
9889 + 6: 98 80 [ \t]+ld\.uh r0,r12\[0x0\]
9890 + 8: 98 00 [ \t]+ld\.sh r0,r12\[0x0\]
9891 + a: 78 00 [ \t]+ld\.w r0,r12\[0x0\]
9892 +
9893 +0000000c <st_nodisp>:
9894 + c: b8 80 [ \t]+st\.b r12\[0x0\],r0
9895 + e: b8 00 [ \t]+st\.h r12\[0x0\],r0
9896 + 10: 99 00 [ \t]+st\.w r12\[0x0\],r0
9897 --- /dev/null
9898 +++ b/gas/testsuite/gas/avr32/aliases.s
9899 @@ -0,0 +1,14 @@
9900 + .text
9901 + .global ld_nodisp
9902 +ld_nodisp:
9903 + ld.ub r0, r12
9904 + ld.sb r0, r12
9905 + ld.uh r0, r12
9906 + ld.sh r0, r12
9907 + ld.w r0, r12
9908 +
9909 + .global st_nodisp
9910 +st_nodisp:
9911 + st.b r12, r0
9912 + st.h r12, r0
9913 + st.w r12, r0
9914 --- /dev/null
9915 +++ b/gas/testsuite/gas/avr32/allinsn.d
9916 @@ -0,0 +1,2987 @@
9917 +#as:
9918 +#objdump: -dr
9919 +#name: allinsn
9920 +
9921 +.*: +file format .*
9922 +
9923 +Disassembly of section \.text:
9924 +
9925 +[0-9a-f]* <ld_d5>:
9926 + *[0-9a-f]*: fe 0f 02 3e ld\.d lr,pc\[pc<<0x3\]
9927 + *[0-9a-f]*: e0 00 02 00 ld\.d r0,r0\[r0\]
9928 + *[0-9a-f]*: ea 05 02 26 ld\.d r6,r5\[r5<<0x2\]
9929 + *[0-9a-f]*: e8 04 02 14 ld\.d r4,r4\[r4<<0x1\]
9930 + *[0-9a-f]*: fc 0e 02 1e ld\.d lr,lr\[lr<<0x1\]
9931 + *[0-9a-f]*: e6 0d 02 2a ld\.d r10,r3\[sp<<0x2\]
9932 + *[0-9a-f]*: f4 06 02 28 ld\.d r8,r10\[r6<<0x2\]
9933 + *[0-9a-f]*: ee 09 02 02 ld\.d r2,r7\[r9\]
9934 +
9935 +[0-9a-f]* <ld_w5>:
9936 + *[0-9a-f]*: fe 0f 03 0f ld\.w pc,pc\[pc\]
9937 + *[0-9a-f]*: f8 0c 03 3c ld\.w r12,r12\[r12<<0x3\]
9938 + *[0-9a-f]*: ea 05 03 25 ld\.w r5,r5\[r5<<0x2\]
9939 + *[0-9a-f]*: e8 04 03 14 ld\.w r4,r4\[r4<<0x1\]
9940 + *[0-9a-f]*: fc 0e 03 1e ld\.w lr,lr\[lr<<0x1\]
9941 + *[0-9a-f]*: f2 09 03 02 ld\.w r2,r9\[r9\]
9942 + *[0-9a-f]*: e4 06 03 0b ld\.w r11,r2\[r6\]
9943 + *[0-9a-f]*: e4 0d 03 30 ld\.w r0,r2\[sp<<0x3\]
9944 +
9945 +[0-9a-f]* <ld_sh5>:
9946 + *[0-9a-f]*: fe 0f 04 0f ld\.sh pc,pc\[pc\]
9947 + *[0-9a-f]*: f8 0c 04 3c ld\.sh r12,r12\[r12<<0x3\]
9948 + *[0-9a-f]*: ea 05 04 25 ld\.sh r5,r5\[r5<<0x2\]
9949 + *[0-9a-f]*: e8 04 04 14 ld\.sh r4,r4\[r4<<0x1\]
9950 + *[0-9a-f]*: fc 0e 04 1e ld\.sh lr,lr\[lr<<0x1\]
9951 + *[0-9a-f]*: e0 0f 04 2b ld\.sh r11,r0\[pc<<0x2\]
9952 + *[0-9a-f]*: fa 06 04 2a ld\.sh r10,sp\[r6<<0x2\]
9953 + *[0-9a-f]*: e4 02 04 0c ld\.sh r12,r2\[r2\]
9954 +
9955 +[0-9a-f]* <ld_uh5>:
9956 + *[0-9a-f]*: fe 0f 05 0f ld\.uh pc,pc\[pc\]
9957 + *[0-9a-f]*: f8 0c 05 3c ld\.uh r12,r12\[r12<<0x3\]
9958 + *[0-9a-f]*: ea 05 05 25 ld\.uh r5,r5\[r5<<0x2\]
9959 + *[0-9a-f]*: e8 04 05 14 ld\.uh r4,r4\[r4<<0x1\]
9960 + *[0-9a-f]*: fc 0e 05 1e ld\.uh lr,lr\[lr<<0x1\]
9961 + *[0-9a-f]*: fe 0e 05 38 ld\.uh r8,pc\[lr<<0x3\]
9962 + *[0-9a-f]*: e2 0f 05 16 ld\.uh r6,r1\[pc<<0x1\]
9963 + *[0-9a-f]*: fc 0d 05 16 ld\.uh r6,lr\[sp<<0x1\]
9964 +
9965 +[0-9a-f]* <ld_sb2>:
9966 + *[0-9a-f]*: fe 0f 06 0f ld\.sb pc,pc\[pc\]
9967 + *[0-9a-f]*: f8 0c 06 3c ld\.sb r12,r12\[r12<<0x3\]
9968 + *[0-9a-f]*: ea 05 06 25 ld\.sb r5,r5\[r5<<0x2\]
9969 + *[0-9a-f]*: e8 04 06 14 ld\.sb r4,r4\[r4<<0x1\]
9970 + *[0-9a-f]*: fc 0e 06 1e ld\.sb lr,lr\[lr<<0x1\]
9971 + *[0-9a-f]*: e2 0f 06 39 ld\.sb r9,r1\[pc<<0x3\]
9972 + *[0-9a-f]*: e6 0b 06 10 ld\.sb r0,r3\[r11<<0x1\]
9973 + *[0-9a-f]*: ea 05 06 1a ld\.sb r10,r5\[r5<<0x1\]
9974 +
9975 +[0-9a-f]* <ld_ub5>:
9976 + *[0-9a-f]*: fe 0f 07 0f ld\.ub pc,pc\[pc\]
9977 + *[0-9a-f]*: f8 0c 07 3c ld\.ub r12,r12\[r12<<0x3\]
9978 + *[0-9a-f]*: ea 05 07 25 ld\.ub r5,r5\[r5<<0x2\]
9979 + *[0-9a-f]*: e8 04 07 14 ld\.ub r4,r4\[r4<<0x1\]
9980 + *[0-9a-f]*: fc 0e 07 1e ld\.ub lr,lr\[lr<<0x1\]
9981 + *[0-9a-f]*: f8 07 07 36 ld\.ub r6,r12\[r7<<0x3\]
9982 + *[0-9a-f]*: ec 0c 07 02 ld\.ub r2,r6\[r12\]
9983 + *[0-9a-f]*: ee 0b 07 10 ld\.ub r0,r7\[r11<<0x1\]
9984 +
9985 +[0-9a-f]* <st_d5>:
9986 + *[0-9a-f]*: fe 0f 08 0e st\.d pc\[pc\],lr
9987 + *[0-9a-f]*: f8 0c 08 3c st\.d r12\[r12<<0x3\],r12
9988 + *[0-9a-f]*: ea 05 08 26 st\.d r5\[r5<<0x2\],r6
9989 + *[0-9a-f]*: e8 04 08 14 st\.d r4\[r4<<0x1\],r4
9990 + *[0-9a-f]*: fc 0e 08 1e st\.d lr\[lr<<0x1\],lr
9991 + *[0-9a-f]*: e2 09 08 14 st\.d r1\[r9<<0x1\],r4
9992 + *[0-9a-f]*: f4 02 08 14 st\.d r10\[r2<<0x1\],r4
9993 + *[0-9a-f]*: f8 06 08 0e st\.d r12\[r6\],lr
9994 +
9995 +[0-9a-f]* <st_w5>:
9996 + *[0-9a-f]*: fe 0f 09 0f st\.w pc\[pc\],pc
9997 + *[0-9a-f]*: f8 0c 09 3c st\.w r12\[r12<<0x3\],r12
9998 + *[0-9a-f]*: ea 05 09 25 st\.w r5\[r5<<0x2\],r5
9999 + *[0-9a-f]*: e8 04 09 14 st\.w r4\[r4<<0x1\],r4
10000 + *[0-9a-f]*: fc 0e 09 1e st\.w lr\[lr<<0x1\],lr
10001 + *[0-9a-f]*: e2 0a 09 03 st\.w r1\[r10\],r3
10002 + *[0-9a-f]*: e0 0a 09 19 st\.w r0\[r10<<0x1\],r9
10003 + *[0-9a-f]*: e8 05 09 3f st\.w r4\[r5<<0x3\],pc
10004 +
10005 +[0-9a-f]* <st_h5>:
10006 + *[0-9a-f]*: fe 0f 0a 0f st\.h pc\[pc\],pc
10007 + *[0-9a-f]*: f8 0c 0a 3c st\.h r12\[r12<<0x3\],r12
10008 + *[0-9a-f]*: ea 05 0a 25 st\.h r5\[r5<<0x2\],r5
10009 + *[0-9a-f]*: e8 04 0a 14 st\.h r4\[r4<<0x1\],r4
10010 + *[0-9a-f]*: fc 0e 0a 1e st\.h lr\[lr<<0x1\],lr
10011 + *[0-9a-f]*: e4 09 0a 0b st\.h r2\[r9\],r11
10012 + *[0-9a-f]*: ea 01 0a 2c st\.h r5\[r1<<0x2\],r12
10013 + *[0-9a-f]*: fe 08 0a 23 st\.h pc\[r8<<0x2\],r3
10014 +
10015 +[0-9a-f]* <st_b5>:
10016 + *[0-9a-f]*: fe 0f 0b 0f st\.b pc\[pc\],pc
10017 + *[0-9a-f]*: f8 0c 0b 3c st\.b r12\[r12<<0x3\],r12
10018 + *[0-9a-f]*: ea 05 0b 25 st\.b r5\[r5<<0x2\],r5
10019 + *[0-9a-f]*: e8 04 0b 14 st\.b r4\[r4<<0x1\],r4
10020 + *[0-9a-f]*: fc 0e 0b 1e st\.b lr\[lr<<0x1\],lr
10021 + *[0-9a-f]*: e2 08 0b 16 st\.b r1\[r8<<0x1\],r6
10022 + *[0-9a-f]*: fc 0e 0b 31 st\.b lr\[lr<<0x3\],r1
10023 + *[0-9a-f]*: ea 00 0b 2f st\.b r5\[r0<<0x2\],pc
10024 +
10025 +[0-9a-f]* <divs>:
10026 + *[0-9a-f]*: fe 0f 0c 0f divs pc,pc,pc
10027 + *[0-9a-f]*: f8 0c 0c 0c divs r12,r12,r12
10028 + *[0-9a-f]*: ea 05 0c 05 divs r5,r5,r5
10029 + *[0-9a-f]*: e8 04 0c 04 divs r4,r4,r4
10030 + *[0-9a-f]*: fc 0e 0c 0e divs lr,lr,lr
10031 + *[0-9a-f]*: fe 0f 0c 03 divs r3,pc,pc
10032 + *[0-9a-f]*: f8 02 0c 09 divs r9,r12,r2
10033 + *[0-9a-f]*: e8 01 0c 07 divs r7,r4,r1
10034 +
10035 +[0-9a-f]* <add1>:
10036 + *[0-9a-f]*: 1e 0f add pc,pc
10037 + *[0-9a-f]*: 18 0c add r12,r12
10038 + *[0-9a-f]*: 0a 05 add r5,r5
10039 + *[0-9a-f]*: 08 04 add r4,r4
10040 + *[0-9a-f]*: 1c 0e add lr,lr
10041 + *[0-9a-f]*: 12 0c add r12,r9
10042 + *[0-9a-f]*: 06 06 add r6,r3
10043 + *[0-9a-f]*: 18 0a add r10,r12
10044 +
10045 +[0-9a-f]* <sub1>:
10046 + *[0-9a-f]*: 1e 1f sub pc,pc
10047 + *[0-9a-f]*: 18 1c sub r12,r12
10048 + *[0-9a-f]*: 0a 15 sub r5,r5
10049 + *[0-9a-f]*: 08 14 sub r4,r4
10050 + *[0-9a-f]*: 1c 1e sub lr,lr
10051 + *[0-9a-f]*: 0c 1e sub lr,r6
10052 + *[0-9a-f]*: 1a 10 sub r0,sp
10053 + *[0-9a-f]*: 18 16 sub r6,r12
10054 +
10055 +[0-9a-f]* <rsub1>:
10056 + *[0-9a-f]*: 1e 2f rsub pc,pc
10057 + *[0-9a-f]*: 18 2c rsub r12,r12
10058 + *[0-9a-f]*: 0a 25 rsub r5,r5
10059 + *[0-9a-f]*: 08 24 rsub r4,r4
10060 + *[0-9a-f]*: 1c 2e rsub lr,lr
10061 + *[0-9a-f]*: 1a 2b rsub r11,sp
10062 + *[0-9a-f]*: 08 27 rsub r7,r4
10063 + *[0-9a-f]*: 02 29 rsub r9,r1
10064 +
10065 +[0-9a-f]* <cp1>:
10066 + *[0-9a-f]*: 1e 3f cp\.w pc,pc
10067 + *[0-9a-f]*: 18 3c cp\.w r12,r12
10068 + *[0-9a-f]*: 0a 35 cp\.w r5,r5
10069 + *[0-9a-f]*: 08 34 cp\.w r4,r4
10070 + *[0-9a-f]*: 1c 3e cp\.w lr,lr
10071 + *[0-9a-f]*: 04 36 cp\.w r6,r2
10072 + *[0-9a-f]*: 12 30 cp\.w r0,r9
10073 + *[0-9a-f]*: 1a 33 cp\.w r3,sp
10074 +
10075 +[0-9a-f]* <or1>:
10076 + *[0-9a-f]*: 1e 4f or pc,pc
10077 + *[0-9a-f]*: 18 4c or r12,r12
10078 + *[0-9a-f]*: 0a 45 or r5,r5
10079 + *[0-9a-f]*: 08 44 or r4,r4
10080 + *[0-9a-f]*: 1c 4e or lr,lr
10081 + *[0-9a-f]*: 12 44 or r4,r9
10082 + *[0-9a-f]*: 08 4b or r11,r4
10083 + *[0-9a-f]*: 00 44 or r4,r0
10084 +
10085 +[0-9a-f]* <eor1>:
10086 + *[0-9a-f]*: 1e 5f eor pc,pc
10087 + *[0-9a-f]*: 18 5c eor r12,r12
10088 + *[0-9a-f]*: 0a 55 eor r5,r5
10089 + *[0-9a-f]*: 08 54 eor r4,r4
10090 + *[0-9a-f]*: 1c 5e eor lr,lr
10091 + *[0-9a-f]*: 16 5c eor r12,r11
10092 + *[0-9a-f]*: 02 50 eor r0,r1
10093 + *[0-9a-f]*: 1e 55 eor r5,pc
10094 +
10095 +[0-9a-f]* <and1>:
10096 + *[0-9a-f]*: 1e 6f and pc,pc
10097 + *[0-9a-f]*: 18 6c and r12,r12
10098 + *[0-9a-f]*: 0a 65 and r5,r5
10099 + *[0-9a-f]*: 08 64 and r4,r4
10100 + *[0-9a-f]*: 1c 6e and lr,lr
10101 + *[0-9a-f]*: 02 68 and r8,r1
10102 + *[0-9a-f]*: 1a 60 and r0,sp
10103 + *[0-9a-f]*: 0a 6a and r10,r5
10104 +
10105 +[0-9a-f]* <tst>:
10106 + *[0-9a-f]*: 1e 7f tst pc,pc
10107 + *[0-9a-f]*: 18 7c tst r12,r12
10108 + *[0-9a-f]*: 0a 75 tst r5,r5
10109 + *[0-9a-f]*: 08 74 tst r4,r4
10110 + *[0-9a-f]*: 1c 7e tst lr,lr
10111 + *[0-9a-f]*: 18 70 tst r0,r12
10112 + *[0-9a-f]*: 0c 7a tst r10,r6
10113 + *[0-9a-f]*: 08 7d tst sp,r4
10114 +
10115 +[0-9a-f]* <andn>:
10116 + *[0-9a-f]*: 1e 8f andn pc,pc
10117 + *[0-9a-f]*: 18 8c andn r12,r12
10118 + *[0-9a-f]*: 0a 85 andn r5,r5
10119 + *[0-9a-f]*: 08 84 andn r4,r4
10120 + *[0-9a-f]*: 1c 8e andn lr,lr
10121 + *[0-9a-f]*: 18 89 andn r9,r12
10122 + *[0-9a-f]*: 1a 8b andn r11,sp
10123 + *[0-9a-f]*: 0a 8c andn r12,r5
10124 +
10125 +[0-9a-f]* <mov3>:
10126 + *[0-9a-f]*: 1e 9f mov pc,pc
10127 + *[0-9a-f]*: 18 9c mov r12,r12
10128 + *[0-9a-f]*: 0a 95 mov r5,r5
10129 + *[0-9a-f]*: 08 94 mov r4,r4
10130 + *[0-9a-f]*: 1c 9e mov lr,lr
10131 + *[0-9a-f]*: 12 95 mov r5,r9
10132 + *[0-9a-f]*: 16 9b mov r11,r11
10133 + *[0-9a-f]*: 1c 92 mov r2,lr
10134 +
10135 +[0-9a-f]* <st_w1>:
10136 + *[0-9a-f]*: 1e af st\.w pc\+\+,pc
10137 + *[0-9a-f]*: 18 ac st\.w r12\+\+,r12
10138 + *[0-9a-f]*: 0a a5 st\.w r5\+\+,r5
10139 + *[0-9a-f]*: 08 a4 st\.w r4\+\+,r4
10140 + *[0-9a-f]*: 1c ae st\.w lr\+\+,lr
10141 + *[0-9a-f]*: 02 ab st\.w r1\+\+,r11
10142 + *[0-9a-f]*: 1a a0 st\.w sp\+\+,r0
10143 + *[0-9a-f]*: 1a a1 st\.w sp\+\+,r1
10144 +
10145 +[0-9a-f]* <st_h1>:
10146 + *[0-9a-f]*: 1e bf st\.h pc\+\+,pc
10147 + *[0-9a-f]*: 18 bc st\.h r12\+\+,r12
10148 + *[0-9a-f]*: 0a b5 st\.h r5\+\+,r5
10149 + *[0-9a-f]*: 08 b4 st\.h r4\+\+,r4
10150 + *[0-9a-f]*: 1c be st\.h lr\+\+,lr
10151 + *[0-9a-f]*: 18 bd st\.h r12\+\+,sp
10152 + *[0-9a-f]*: 0e be st\.h r7\+\+,lr
10153 + *[0-9a-f]*: 0e b4 st\.h r7\+\+,r4
10154 +
10155 +[0-9a-f]* <st_b1>:
10156 + *[0-9a-f]*: 1e cf st\.b pc\+\+,pc
10157 + *[0-9a-f]*: 18 cc st\.b r12\+\+,r12
10158 + *[0-9a-f]*: 0a c5 st\.b r5\+\+,r5
10159 + *[0-9a-f]*: 08 c4 st\.b r4\+\+,r4
10160 + *[0-9a-f]*: 1c ce st\.b lr\+\+,lr
10161 + *[0-9a-f]*: 12 cd st\.b r9\+\+,sp
10162 + *[0-9a-f]*: 02 cd st\.b r1\+\+,sp
10163 + *[0-9a-f]*: 00 c4 st\.b r0\+\+,r4
10164 +
10165 +[0-9a-f]* <st_w2>:
10166 + *[0-9a-f]*: 1e df st\.w --pc,pc
10167 + *[0-9a-f]*: 18 dc st\.w --r12,r12
10168 + *[0-9a-f]*: 0a d5 st\.w --r5,r5
10169 + *[0-9a-f]*: 08 d4 st\.w --r4,r4
10170 + *[0-9a-f]*: 1c de st\.w --lr,lr
10171 + *[0-9a-f]*: 02 d7 st\.w --r1,r7
10172 + *[0-9a-f]*: 06 d9 st\.w --r3,r9
10173 + *[0-9a-f]*: 0a d5 st\.w --r5,r5
10174 +
10175 +[0-9a-f]* <st_h2>:
10176 + *[0-9a-f]*: 1e ef st\.h --pc,pc
10177 + *[0-9a-f]*: 18 ec st\.h --r12,r12
10178 + *[0-9a-f]*: 0a e5 st\.h --r5,r5
10179 + *[0-9a-f]*: 08 e4 st\.h --r4,r4
10180 + *[0-9a-f]*: 1c ee st\.h --lr,lr
10181 + *[0-9a-f]*: 0a e7 st\.h --r5,r7
10182 + *[0-9a-f]*: 10 e8 st\.h --r8,r8
10183 + *[0-9a-f]*: 0e e2 st\.h --r7,r2
10184 +
10185 +[0-9a-f]* <st_b2>:
10186 + *[0-9a-f]*: 1e ff st\.b --pc,pc
10187 + *[0-9a-f]*: 18 fc st\.b --r12,r12
10188 + *[0-9a-f]*: 0a f5 st\.b --r5,r5
10189 + *[0-9a-f]*: 08 f4 st\.b --r4,r4
10190 + *[0-9a-f]*: 1c fe st\.b --lr,lr
10191 + *[0-9a-f]*: 1a fd st\.b --sp,sp
10192 + *[0-9a-f]*: 1a fb st\.b --sp,r11
10193 + *[0-9a-f]*: 08 f5 st\.b --r4,r5
10194 +
10195 +[0-9a-f]* <ld_w1>:
10196 + *[0-9a-f]*: 1f 0f ld\.w pc,pc\+\+
10197 + *[0-9a-f]*: 19 0c ld\.w r12,r12\+\+
10198 + *[0-9a-f]*: 0b 05 ld\.w r5,r5\+\+
10199 + *[0-9a-f]*: 09 04 ld\.w r4,r4\+\+
10200 + *[0-9a-f]*: 1d 0e ld\.w lr,lr\+\+
10201 + *[0-9a-f]*: 0f 03 ld\.w r3,r7\+\+
10202 + *[0-9a-f]*: 1d 03 ld\.w r3,lr\+\+
10203 + *[0-9a-f]*: 0b 0c ld\.w r12,r5\+\+
10204 +
10205 +[0-9a-f]* <ld_sh1>:
10206 + *[0-9a-f]*: 1f 1f ld\.sh pc,pc\+\+
10207 + *[0-9a-f]*: 19 1c ld\.sh r12,r12\+\+
10208 + *[0-9a-f]*: 0b 15 ld\.sh r5,r5\+\+
10209 + *[0-9a-f]*: 09 14 ld\.sh r4,r4\+\+
10210 + *[0-9a-f]*: 1d 1e ld\.sh lr,lr\+\+
10211 + *[0-9a-f]*: 05 1b ld\.sh r11,r2\+\+
10212 + *[0-9a-f]*: 11 12 ld\.sh r2,r8\+\+
10213 + *[0-9a-f]*: 0d 17 ld\.sh r7,r6\+\+
10214 +
10215 +[0-9a-f]* <ld_uh1>:
10216 + *[0-9a-f]*: 1f 2f ld\.uh pc,pc\+\+
10217 + *[0-9a-f]*: 19 2c ld\.uh r12,r12\+\+
10218 + *[0-9a-f]*: 0b 25 ld\.uh r5,r5\+\+
10219 + *[0-9a-f]*: 09 24 ld\.uh r4,r4\+\+
10220 + *[0-9a-f]*: 1d 2e ld\.uh lr,lr\+\+
10221 + *[0-9a-f]*: 0f 26 ld\.uh r6,r7\+\+
10222 + *[0-9a-f]*: 17 2a ld\.uh r10,r11\+\+
10223 + *[0-9a-f]*: 09 2e ld\.uh lr,r4\+\+
10224 +
10225 +[0-9a-f]* <ld_ub1>:
10226 + *[0-9a-f]*: 1f 3f ld\.ub pc,pc\+\+
10227 + *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+
10228 + *[0-9a-f]*: 0b 35 ld\.ub r5,r5\+\+
10229 + *[0-9a-f]*: 09 34 ld\.ub r4,r4\+\+
10230 + *[0-9a-f]*: 1d 3e ld\.ub lr,lr\+\+
10231 + *[0-9a-f]*: 1d 38 ld\.ub r8,lr\+\+
10232 + *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+
10233 + *[0-9a-f]*: 15 3b ld\.ub r11,r10\+\+
10234 +
10235 +[0-9a-f]* <ld_w2>:
10236 + *[0-9a-f]*: 1f 4f ld\.w pc,--pc
10237 + *[0-9a-f]*: 19 4c ld\.w r12,--r12
10238 + *[0-9a-f]*: 0b 45 ld\.w r5,--r5
10239 + *[0-9a-f]*: 09 44 ld\.w r4,--r4
10240 + *[0-9a-f]*: 1d 4e ld\.w lr,--lr
10241 + *[0-9a-f]*: 1d 4a ld\.w r10,--lr
10242 + *[0-9a-f]*: 13 4c ld\.w r12,--r9
10243 + *[0-9a-f]*: 0b 46 ld\.w r6,--r5
10244 +
10245 +[0-9a-f]* <ld_sh2>:
10246 + *[0-9a-f]*: 1f 5f ld\.sh pc,--pc
10247 + *[0-9a-f]*: 19 5c ld\.sh r12,--r12
10248 + *[0-9a-f]*: 0b 55 ld\.sh r5,--r5
10249 + *[0-9a-f]*: 09 54 ld\.sh r4,--r4
10250 + *[0-9a-f]*: 1d 5e ld\.sh lr,--lr
10251 + *[0-9a-f]*: 15 5f ld\.sh pc,--r10
10252 + *[0-9a-f]*: 07 56 ld\.sh r6,--r3
10253 + *[0-9a-f]*: 0d 54 ld\.sh r4,--r6
10254 +
10255 +[0-9a-f]* <ld_uh2>:
10256 + *[0-9a-f]*: 1f 6f ld\.uh pc,--pc
10257 + *[0-9a-f]*: 19 6c ld\.uh r12,--r12
10258 + *[0-9a-f]*: 0b 65 ld\.uh r5,--r5
10259 + *[0-9a-f]*: 09 64 ld\.uh r4,--r4
10260 + *[0-9a-f]*: 1d 6e ld\.uh lr,--lr
10261 + *[0-9a-f]*: 05 63 ld\.uh r3,--r2
10262 + *[0-9a-f]*: 01 61 ld\.uh r1,--r0
10263 + *[0-9a-f]*: 13 62 ld\.uh r2,--r9
10264 +
10265 +[0-9a-f]* <ld_ub2>:
10266 + *[0-9a-f]*: 1f 7f ld\.ub pc,--pc
10267 + *[0-9a-f]*: 19 7c ld\.ub r12,--r12
10268 + *[0-9a-f]*: 0b 75 ld\.ub r5,--r5
10269 + *[0-9a-f]*: 09 74 ld\.ub r4,--r4
10270 + *[0-9a-f]*: 1d 7e ld\.ub lr,--lr
10271 + *[0-9a-f]*: 03 71 ld\.ub r1,--r1
10272 + *[0-9a-f]*: 0d 70 ld\.ub r0,--r6
10273 + *[0-9a-f]*: 0f 72 ld\.ub r2,--r7
10274 +
10275 +[0-9a-f]* <ld_ub3>:
10276 + *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\]
10277 + *[0-9a-f]*: 19 fc ld\.ub r12,r12\[0x7\]
10278 + *[0-9a-f]*: 0b c5 ld\.ub r5,r5\[0x4\]
10279 + *[0-9a-f]*: 09 b4 ld\.ub r4,r4\[0x3\]
10280 + *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\]
10281 + *[0-9a-f]*: 13 e6 ld\.ub r6,r9\[0x6\]
10282 + *[0-9a-f]*: 1d c2 ld\.ub r2,lr\[0x4\]
10283 + *[0-9a-f]*: 11 81 ld\.ub r1,r8\[0x0\]
10284 +
10285 +[0-9a-f]* <sub3_sp>:
10286 + *[0-9a-f]*: 20 0d sub sp,0
10287 + *[0-9a-f]*: 2f fd sub sp,-4
10288 + *[0-9a-f]*: 28 0d sub sp,-512
10289 + *[0-9a-f]*: 27 fd sub sp,508
10290 + *[0-9a-f]*: 20 1d sub sp,4
10291 + *[0-9a-f]*: 20 bd sub sp,44
10292 + *[0-9a-f]*: 20 2d sub sp,8
10293 + *[0-9a-f]*: 25 7d sub sp,348
10294 +
10295 +[0-9a-f]* <sub3>:
10296 + *[0-9a-f]*: 20 0f sub pc,0
10297 + *[0-9a-f]*: 2f fc sub r12,-1
10298 + *[0-9a-f]*: 28 05 sub r5,-128
10299 + *[0-9a-f]*: 27 f4 sub r4,127
10300 + *[0-9a-f]*: 20 1e sub lr,1
10301 + *[0-9a-f]*: 2d 76 sub r6,-41
10302 + *[0-9a-f]*: 22 54 sub r4,37
10303 + *[0-9a-f]*: 23 8c sub r12,56
10304 +
10305 +[0-9a-f]* <mov1>:
10306 + *[0-9a-f]*: 30 0f mov pc,0
10307 + *[0-9a-f]*: 3f fc mov r12,-1
10308 + *[0-9a-f]*: 38 05 mov r5,-128
10309 + *[0-9a-f]*: 37 f4 mov r4,127
10310 + *[0-9a-f]*: 30 1e mov lr,1
10311 + *[0-9a-f]*: 30 ef mov pc,14
10312 + *[0-9a-f]*: 39 c6 mov r6,-100
10313 + *[0-9a-f]*: 38 6e mov lr,-122
10314 +
10315 +[0-9a-f]* <lddsp>:
10316 + *[0-9a-f]*: 40 0f lddsp pc,sp\[0x0\]
10317 + *[0-9a-f]*: 47 fc lddsp r12,sp\[0x1fc\]
10318 + *[0-9a-f]*: 44 05 lddsp r5,sp\[0x100\]
10319 + *[0-9a-f]*: 43 f4 lddsp r4,sp\[0xfc\]
10320 + *[0-9a-f]*: 40 1e lddsp lr,sp\[0x4\]
10321 + *[0-9a-f]*: 44 0e lddsp lr,sp\[0x100\]
10322 + *[0-9a-f]*: 40 5c lddsp r12,sp\[0x14\]
10323 + *[0-9a-f]*: 47 69 lddsp r9,sp\[0x1d8\]
10324 +
10325 +[0-9a-f]* <lddpc>:
10326 + *[0-9a-f]*: 48 0f lddpc pc,[0-9a-f]* <.*>
10327 + *[0-9a-f]*: 4f f0 lddpc r0,[0-9a-f]* <.*>
10328 + *[0-9a-f]*: 4c 08 lddpc r8,[0-9a-f]* <.*>
10329 + *[0-9a-f]*: 4b f7 lddpc r7,[0-9a-f]* <.*>
10330 + *[0-9a-f]*: 48 1e lddpc lr,[0-9a-f]* <.*>
10331 + *[0-9a-f]*: 4f 6d lddpc sp,[0-9a-f]* <.*>
10332 + *[0-9a-f]*: 49 e6 lddpc r6,[0-9a-f]* <.*>
10333 + *[0-9a-f]*: 48 7b lddpc r11,[0-9a-f]* <.*>
10334 +
10335 +[0-9a-f]* <stdsp>:
10336 + *[0-9a-f]*: 50 0f stdsp sp\[0x0\],pc
10337 + *[0-9a-f]*: 57 fc stdsp sp\[0x1fc\],r12
10338 + *[0-9a-f]*: 54 05 stdsp sp\[0x100\],r5
10339 + *[0-9a-f]*: 53 f4 stdsp sp\[0xfc\],r4
10340 + *[0-9a-f]*: 50 1e stdsp sp\[0x4\],lr
10341 + *[0-9a-f]*: 54 cf stdsp sp\[0x130\],pc
10342 + *[0-9a-f]*: 54 00 stdsp sp\[0x100\],r0
10343 + *[0-9a-f]*: 55 45 stdsp sp\[0x150\],r5
10344 +
10345 +[0-9a-f]* <cp2>:
10346 + *[0-9a-f]*: 58 0f cp.w pc,0
10347 + *[0-9a-f]*: 5b fc cp.w r12,-1
10348 + *[0-9a-f]*: 5a 05 cp.w r5,-32
10349 + *[0-9a-f]*: 59 f4 cp.w r4,31
10350 + *[0-9a-f]*: 58 1e cp.w lr,1
10351 + *[0-9a-f]*: 58 38 cp.w r8,3
10352 + *[0-9a-f]*: 59 0e cp.w lr,16
10353 + *[0-9a-f]*: 5a 67 cp.w r7,-26
10354 +
10355 +[0-9a-f]* <acr>:
10356 + *[0-9a-f]*: 5c 0f acr pc
10357 + *[0-9a-f]*: 5c 0c acr r12
10358 + *[0-9a-f]*: 5c 05 acr r5
10359 + *[0-9a-f]*: 5c 04 acr r4
10360 + *[0-9a-f]*: 5c 0e acr lr
10361 + *[0-9a-f]*: 5c 02 acr r2
10362 + *[0-9a-f]*: 5c 0c acr r12
10363 + *[0-9a-f]*: 5c 0f acr pc
10364 +
10365 +[0-9a-f]* <scr>:
10366 + *[0-9a-f]*: 5c 1f scr pc
10367 + *[0-9a-f]*: 5c 1c scr r12
10368 + *[0-9a-f]*: 5c 15 scr r5
10369 + *[0-9a-f]*: 5c 14 scr r4
10370 + *[0-9a-f]*: 5c 1e scr lr
10371 + *[0-9a-f]*: 5c 1f scr pc
10372 + *[0-9a-f]*: 5c 16 scr r6
10373 + *[0-9a-f]*: 5c 11 scr r1
10374 +
10375 +[0-9a-f]* <cpc0>:
10376 + *[0-9a-f]*: 5c 2f cpc pc
10377 + *[0-9a-f]*: 5c 2c cpc r12
10378 + *[0-9a-f]*: 5c 25 cpc r5
10379 + *[0-9a-f]*: 5c 24 cpc r4
10380 + *[0-9a-f]*: 5c 2e cpc lr
10381 + *[0-9a-f]*: 5c 2f cpc pc
10382 + *[0-9a-f]*: 5c 24 cpc r4
10383 + *[0-9a-f]*: 5c 29 cpc r9
10384 +
10385 +[0-9a-f]* <neg>:
10386 + *[0-9a-f]*: 5c 3f neg pc
10387 + *[0-9a-f]*: 5c 3c neg r12
10388 + *[0-9a-f]*: 5c 35 neg r5
10389 + *[0-9a-f]*: 5c 34 neg r4
10390 + *[0-9a-f]*: 5c 3e neg lr
10391 + *[0-9a-f]*: 5c 37 neg r7
10392 + *[0-9a-f]*: 5c 31 neg r1
10393 + *[0-9a-f]*: 5c 39 neg r9
10394 +
10395 +[0-9a-f]* <abs>:
10396 + *[0-9a-f]*: 5c 4f abs pc
10397 + *[0-9a-f]*: 5c 4c abs r12
10398 + *[0-9a-f]*: 5c 45 abs r5
10399 + *[0-9a-f]*: 5c 44 abs r4
10400 + *[0-9a-f]*: 5c 4e abs lr
10401 + *[0-9a-f]*: 5c 46 abs r6
10402 + *[0-9a-f]*: 5c 46 abs r6
10403 + *[0-9a-f]*: 5c 44 abs r4
10404 +
10405 +[0-9a-f]* <castu_b>:
10406 + *[0-9a-f]*: 5c 5f castu\.b pc
10407 + *[0-9a-f]*: 5c 5c castu\.b r12
10408 + *[0-9a-f]*: 5c 55 castu\.b r5
10409 + *[0-9a-f]*: 5c 54 castu\.b r4
10410 + *[0-9a-f]*: 5c 5e castu\.b lr
10411 + *[0-9a-f]*: 5c 57 castu\.b r7
10412 + *[0-9a-f]*: 5c 5d castu\.b sp
10413 + *[0-9a-f]*: 5c 59 castu\.b r9
10414 +
10415 +[0-9a-f]* <casts_b>:
10416 + *[0-9a-f]*: 5c 6f casts\.b pc
10417 + *[0-9a-f]*: 5c 6c casts\.b r12
10418 + *[0-9a-f]*: 5c 65 casts\.b r5
10419 + *[0-9a-f]*: 5c 64 casts\.b r4
10420 + *[0-9a-f]*: 5c 6e casts\.b lr
10421 + *[0-9a-f]*: 5c 6b casts\.b r11
10422 + *[0-9a-f]*: 5c 61 casts\.b r1
10423 + *[0-9a-f]*: 5c 6a casts\.b r10
10424 +
10425 +[0-9a-f]* <castu_h>:
10426 + *[0-9a-f]*: 5c 7f castu\.h pc
10427 + *[0-9a-f]*: 5c 7c castu\.h r12
10428 + *[0-9a-f]*: 5c 75 castu\.h r5
10429 + *[0-9a-f]*: 5c 74 castu\.h r4
10430 + *[0-9a-f]*: 5c 7e castu\.h lr
10431 + *[0-9a-f]*: 5c 7a castu\.h r10
10432 + *[0-9a-f]*: 5c 7b castu\.h r11
10433 + *[0-9a-f]*: 5c 71 castu\.h r1
10434 +
10435 +[0-9a-f]* <casts_h>:
10436 + *[0-9a-f]*: 5c 8f casts\.h pc
10437 + *[0-9a-f]*: 5c 8c casts\.h r12
10438 + *[0-9a-f]*: 5c 85 casts\.h r5
10439 + *[0-9a-f]*: 5c 84 casts\.h r4
10440 + *[0-9a-f]*: 5c 8e casts\.h lr
10441 + *[0-9a-f]*: 5c 80 casts\.h r0
10442 + *[0-9a-f]*: 5c 85 casts\.h r5
10443 + *[0-9a-f]*: 5c 89 casts\.h r9
10444 +
10445 +[0-9a-f]* <brev>:
10446 + *[0-9a-f]*: 5c 9f brev pc
10447 + *[0-9a-f]*: 5c 9c brev r12
10448 + *[0-9a-f]*: 5c 95 brev r5
10449 + *[0-9a-f]*: 5c 94 brev r4
10450 + *[0-9a-f]*: 5c 9e brev lr
10451 + *[0-9a-f]*: 5c 95 brev r5
10452 + *[0-9a-f]*: 5c 9a brev r10
10453 + *[0-9a-f]*: 5c 98 brev r8
10454 +
10455 +[0-9a-f]* <swap_h>:
10456 + *[0-9a-f]*: 5c af swap\.h pc
10457 + *[0-9a-f]*: 5c ac swap\.h r12
10458 + *[0-9a-f]*: 5c a5 swap\.h r5
10459 + *[0-9a-f]*: 5c a4 swap\.h r4
10460 + *[0-9a-f]*: 5c ae swap\.h lr
10461 + *[0-9a-f]*: 5c a7 swap\.h r7
10462 + *[0-9a-f]*: 5c a0 swap\.h r0
10463 + *[0-9a-f]*: 5c a8 swap\.h r8
10464 +
10465 +[0-9a-f]* <swap_b>:
10466 + *[0-9a-f]*: 5c bf swap\.b pc
10467 + *[0-9a-f]*: 5c bc swap\.b r12
10468 + *[0-9a-f]*: 5c b5 swap\.b r5
10469 + *[0-9a-f]*: 5c b4 swap\.b r4
10470 + *[0-9a-f]*: 5c be swap\.b lr
10471 + *[0-9a-f]*: 5c ba swap\.b r10
10472 + *[0-9a-f]*: 5c bc swap\.b r12
10473 + *[0-9a-f]*: 5c b1 swap\.b r1
10474 +
10475 +[0-9a-f]* <swap_bh>:
10476 + *[0-9a-f]*: 5c cf swap\.bh pc
10477 + *[0-9a-f]*: 5c cc swap\.bh r12
10478 + *[0-9a-f]*: 5c c5 swap\.bh r5
10479 + *[0-9a-f]*: 5c c4 swap\.bh r4
10480 + *[0-9a-f]*: 5c ce swap\.bh lr
10481 + *[0-9a-f]*: 5c c9 swap\.bh r9
10482 + *[0-9a-f]*: 5c c4 swap\.bh r4
10483 + *[0-9a-f]*: 5c c1 swap\.bh r1
10484 +
10485 +[0-9a-f]* <One_s_compliment>:
10486 + *[0-9a-f]*: 5c df com pc
10487 + *[0-9a-f]*: 5c dc com r12
10488 + *[0-9a-f]*: 5c d5 com r5
10489 + *[0-9a-f]*: 5c d4 com r4
10490 + *[0-9a-f]*: 5c de com lr
10491 + *[0-9a-f]*: 5c d2 com r2
10492 + *[0-9a-f]*: 5c d2 com r2
10493 + *[0-9a-f]*: 5c d7 com r7
10494 +
10495 +[0-9a-f]* <tnbz>:
10496 + *[0-9a-f]*: 5c ef tnbz pc
10497 + *[0-9a-f]*: 5c ec tnbz r12
10498 + *[0-9a-f]*: 5c e5 tnbz r5
10499 + *[0-9a-f]*: 5c e4 tnbz r4
10500 + *[0-9a-f]*: 5c ee tnbz lr
10501 + *[0-9a-f]*: 5c e8 tnbz r8
10502 + *[0-9a-f]*: 5c ec tnbz r12
10503 + *[0-9a-f]*: 5c ef tnbz pc
10504 +
10505 +[0-9a-f]* <rol>:
10506 + *[0-9a-f]*: 5c ff rol pc
10507 + *[0-9a-f]*: 5c fc rol r12
10508 + *[0-9a-f]*: 5c f5 rol r5
10509 + *[0-9a-f]*: 5c f4 rol r4
10510 + *[0-9a-f]*: 5c fe rol lr
10511 + *[0-9a-f]*: 5c fa rol r10
10512 + *[0-9a-f]*: 5c f9 rol r9
10513 + *[0-9a-f]*: 5c f5 rol r5
10514 +
10515 +[0-9a-f]* <ror>:
10516 + *[0-9a-f]*: 5d 0f ror pc
10517 + *[0-9a-f]*: 5d 0c ror r12
10518 + *[0-9a-f]*: 5d 05 ror r5
10519 + *[0-9a-f]*: 5d 04 ror r4
10520 + *[0-9a-f]*: 5d 0e ror lr
10521 + *[0-9a-f]*: 5d 08 ror r8
10522 + *[0-9a-f]*: 5d 04 ror r4
10523 + *[0-9a-f]*: 5d 07 ror r7
10524 +
10525 +[0-9a-f]* <icall>:
10526 + *[0-9a-f]*: 5d 1f icall pc
10527 + *[0-9a-f]*: 5d 1c icall r12
10528 + *[0-9a-f]*: 5d 15 icall r5
10529 + *[0-9a-f]*: 5d 14 icall r4
10530 + *[0-9a-f]*: 5d 1e icall lr
10531 + *[0-9a-f]*: 5d 13 icall r3
10532 + *[0-9a-f]*: 5d 11 icall r1
10533 + *[0-9a-f]*: 5d 13 icall r3
10534 +
10535 +[0-9a-f]* <mustr>:
10536 + *[0-9a-f]*: 5d 2f mustr pc
10537 + *[0-9a-f]*: 5d 2c mustr r12
10538 + *[0-9a-f]*: 5d 25 mustr r5
10539 + *[0-9a-f]*: 5d 24 mustr r4
10540 + *[0-9a-f]*: 5d 2e mustr lr
10541 + *[0-9a-f]*: 5d 21 mustr r1
10542 + *[0-9a-f]*: 5d 24 mustr r4
10543 + *[0-9a-f]*: 5d 2c mustr r12
10544 +
10545 +[0-9a-f]* <musfr>:
10546 + *[0-9a-f]*: 5d 3f musfr pc
10547 + *[0-9a-f]*: 5d 3c musfr r12
10548 + *[0-9a-f]*: 5d 35 musfr r5
10549 + *[0-9a-f]*: 5d 34 musfr r4
10550 + *[0-9a-f]*: 5d 3e musfr lr
10551 + *[0-9a-f]*: 5d 3b musfr r11
10552 + *[0-9a-f]*: 5d 3c musfr r12
10553 + *[0-9a-f]*: 5d 32 musfr r2
10554 +
10555 +[0-9a-f]* <ret_cond>:
10556 + *[0-9a-f]*: 5e 0f reteq 1
10557 + *[0-9a-f]*: 5e fc retal r12
10558 + *[0-9a-f]*: 5e 85 retls r5
10559 + *[0-9a-f]*: 5e 74 retpl r4
10560 + *[0-9a-f]*: 5e 1e retne -1
10561 + *[0-9a-f]*: 5e 90 retgt r0
10562 + *[0-9a-f]*: 5e 9c retgt r12
10563 + *[0-9a-f]*: 5e 4a retge r10
10564 +
10565 +[0-9a-f]* <sr_cond>:
10566 + *[0-9a-f]*: 5f 0f sreq pc
10567 + *[0-9a-f]*: 5f fc sral r12
10568 + *[0-9a-f]*: 5f 85 srls r5
10569 + *[0-9a-f]*: 5f 74 srpl r4
10570 + *[0-9a-f]*: 5f 1e srne lr
10571 + *[0-9a-f]*: 5f 50 srlt r0
10572 + *[0-9a-f]*: 5f fd sral sp
10573 + *[0-9a-f]*: 5f 49 srge r9
10574 +
10575 +[0-9a-f]* <ld_w3>:
10576 + *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\]
10577 + *[0-9a-f]*: 79 fc ld\.w r12,r12\[0x7c\]
10578 + *[0-9a-f]*: 6b 05 ld\.w r5,r5\[0x40\]
10579 + *[0-9a-f]*: 68 f4 ld\.w r4,r4\[0x3c\]
10580 + *[0-9a-f]*: 7c 1e ld\.w lr,lr\[0x4\]
10581 + *[0-9a-f]*: 64 dd ld\.w sp,r2\[0x34\]
10582 + *[0-9a-f]*: 62 29 ld\.w r9,r1\[0x8\]
10583 + *[0-9a-f]*: 7a f5 ld\.w r5,sp\[0x3c\]
10584 +
10585 +[0-9a-f]* <ld_sh3>:
10586 + *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\]
10587 + *[0-9a-f]*: 98 7c ld\.sh r12,r12\[0xe\]
10588 + *[0-9a-f]*: 8a 45 ld\.sh r5,r5\[0x8\]
10589 + *[0-9a-f]*: 88 34 ld\.sh r4,r4\[0x6\]
10590 + *[0-9a-f]*: 9c 1e ld\.sh lr,lr\[0x2\]
10591 + *[0-9a-f]*: 84 44 ld\.sh r4,r2\[0x8\]
10592 + *[0-9a-f]*: 9c 5d ld\.sh sp,lr\[0xa\]
10593 + *[0-9a-f]*: 96 12 ld\.sh r2,r11\[0x2\]
10594 +
10595 +[0-9a-f]* <ld_uh3>:
10596 + *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\]
10597 + *[0-9a-f]*: 98 fc ld\.uh r12,r12\[0xe\]
10598 + *[0-9a-f]*: 8a c5 ld\.uh r5,r5\[0x8\]
10599 + *[0-9a-f]*: 88 b4 ld\.uh r4,r4\[0x6\]
10600 + *[0-9a-f]*: 9c 9e ld\.uh lr,lr\[0x2\]
10601 + *[0-9a-f]*: 80 da ld\.uh r10,r0\[0xa\]
10602 + *[0-9a-f]*: 96 c8 ld\.uh r8,r11\[0x8\]
10603 + *[0-9a-f]*: 84 ea ld\.uh r10,r2\[0xc\]
10604 +
10605 +[0-9a-f]* <st_w3>:
10606 + *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc
10607 + *[0-9a-f]*: 99 fc st\.w r12\[0x3c\],r12
10608 + *[0-9a-f]*: 8b 85 st\.w r5\[0x20\],r5
10609 + *[0-9a-f]*: 89 74 st\.w r4\[0x1c\],r4
10610 + *[0-9a-f]*: 9d 1e st\.w lr\[0x4\],lr
10611 + *[0-9a-f]*: 8f bb st\.w r7\[0x2c\],r11
10612 + *[0-9a-f]*: 85 66 st\.w r2\[0x18\],r6
10613 + *[0-9a-f]*: 89 39 st\.w r4\[0xc\],r9
10614 +
10615 +[0-9a-f]* <st_h3>:
10616 + *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc
10617 + *[0-9a-f]*: b8 7c st\.h r12\[0xe\],r12
10618 + *[0-9a-f]*: aa 45 st\.h r5\[0x8\],r5
10619 + *[0-9a-f]*: a8 34 st\.h r4\[0x6\],r4
10620 + *[0-9a-f]*: bc 1e st\.h lr\[0x2\],lr
10621 + *[0-9a-f]*: bc 5c st\.h lr\[0xa\],r12
10622 + *[0-9a-f]*: ac 20 st\.h r6\[0x4\],r0
10623 + *[0-9a-f]*: aa 6d st\.h r5\[0xc\],sp
10624 +
10625 +[0-9a-f]* <st_b3>:
10626 + *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc
10627 + *[0-9a-f]*: b8 fc st\.b r12\[0x7\],r12
10628 + *[0-9a-f]*: aa c5 st\.b r5\[0x4\],r5
10629 + *[0-9a-f]*: a8 b4 st\.b r4\[0x3\],r4
10630 + *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr
10631 + *[0-9a-f]*: b8 e9 st\.b r12\[0x6\],r9
10632 + *[0-9a-f]*: a4 be st\.b r2\[0x3\],lr
10633 + *[0-9a-f]*: a2 bb st\.b r1\[0x3\],r11
10634 +
10635 +[0-9a-f]* <ldd>:
10636 + *[0-9a-f]*: bf 00 ld\.d r0,pc
10637 + *[0-9a-f]*: b9 0e ld\.d lr,r12
10638 + *[0-9a-f]*: ab 08 ld\.d r8,r5
10639 + *[0-9a-f]*: a9 06 ld\.d r6,r4
10640 + *[0-9a-f]*: bd 02 ld\.d r2,lr
10641 + *[0-9a-f]*: af 0e ld\.d lr,r7
10642 + *[0-9a-f]*: a9 04 ld\.d r4,r4
10643 + *[0-9a-f]*: bf 0e ld\.d lr,pc
10644 +
10645 +[0-9a-f]* <ldd_postinc>:
10646 + *[0-9a-f]*: bf 01 ld\.d r0,pc\+\+
10647 + *[0-9a-f]*: b9 0f ld\.d lr,r12\+\+
10648 + *[0-9a-f]*: ab 09 ld\.d r8,r5\+\+
10649 + *[0-9a-f]*: a9 07 ld\.d r6,r4\+\+
10650 + *[0-9a-f]*: bd 03 ld\.d r2,lr\+\+
10651 + *[0-9a-f]*: ab 0f ld\.d lr,r5\+\+
10652 + *[0-9a-f]*: b7 0d ld\.d r12,r11\+\+
10653 + *[0-9a-f]*: b9 03 ld\.d r2,r12\+\+
10654 +
10655 +[0-9a-f]* <ldd_predec>:
10656 + *[0-9a-f]*: bf 10 ld\.d r0,--pc
10657 + *[0-9a-f]*: b9 1e ld\.d lr,--r12
10658 + *[0-9a-f]*: ab 18 ld\.d r8,--r5
10659 + *[0-9a-f]*: a9 16 ld\.d r6,--r4
10660 + *[0-9a-f]*: bd 12 ld\.d r2,--lr
10661 + *[0-9a-f]*: a1 18 ld\.d r8,--r0
10662 + *[0-9a-f]*: bf 1a ld\.d r10,--pc
10663 + *[0-9a-f]*: a9 12 ld\.d r2,--r4
10664 +
10665 +[0-9a-f]* <std>:
10666 + *[0-9a-f]*: bf 11 st\.d pc,r0
10667 + *[0-9a-f]*: b9 1f st\.d r12,lr
10668 + *[0-9a-f]*: ab 19 st\.d r5,r8
10669 + *[0-9a-f]*: a9 17 st\.d r4,r6
10670 + *[0-9a-f]*: bd 13 st\.d lr,r2
10671 + *[0-9a-f]*: a1 1d st\.d r0,r12
10672 + *[0-9a-f]*: bb 15 st\.d sp,r4
10673 + *[0-9a-f]*: b9 1d st\.d r12,r12
10674 +
10675 +[0-9a-f]* <std_postinc>:
10676 + *[0-9a-f]*: bf 20 st\.d pc\+\+,r0
10677 + *[0-9a-f]*: b9 2e st\.d r12\+\+,lr
10678 + *[0-9a-f]*: ab 28 st\.d r5\+\+,r8
10679 + *[0-9a-f]*: a9 26 st\.d r4\+\+,r6
10680 + *[0-9a-f]*: bd 22 st\.d lr\+\+,r2
10681 + *[0-9a-f]*: bb 26 st\.d sp\+\+,r6
10682 + *[0-9a-f]*: b5 26 st\.d r10\+\+,r6
10683 + *[0-9a-f]*: af 22 st\.d r7\+\+,r2
10684 +
10685 +[0-9a-f]* <std_predec>:
10686 + *[0-9a-f]*: bf 21 st\.d --pc,r0
10687 + *[0-9a-f]*: b9 2f st\.d --r12,lr
10688 + *[0-9a-f]*: ab 29 st\.d --r5,r8
10689 + *[0-9a-f]*: a9 27 st\.d --r4,r6
10690 + *[0-9a-f]*: bd 23 st\.d --lr,r2
10691 + *[0-9a-f]*: a7 27 st\.d --r3,r6
10692 + *[0-9a-f]*: bd 23 st\.d --lr,r2
10693 + *[0-9a-f]*: a1 25 st\.d --r0,r4
10694 +
10695 +[0-9a-f]* <mul>:
10696 + *[0-9a-f]*: bf 3f mul pc,pc
10697 + *[0-9a-f]*: b9 3c mul r12,r12
10698 + *[0-9a-f]*: ab 35 mul r5,r5
10699 + *[0-9a-f]*: a9 34 mul r4,r4
10700 + *[0-9a-f]*: bd 3e mul lr,lr
10701 + *[0-9a-f]*: bd 3a mul r10,lr
10702 + *[0-9a-f]*: b1 30 mul r0,r8
10703 + *[0-9a-f]*: ab 38 mul r8,r5
10704 +
10705 +[0-9a-f]* <asr_imm5>:
10706 + *[0-9a-f]*: a1 4f asr pc,0x0
10707 + *[0-9a-f]*: bf 5c asr r12,0x1f
10708 + *[0-9a-f]*: b1 45 asr r5,0x10
10709 + *[0-9a-f]*: af 54 asr r4,0xf
10710 + *[0-9a-f]*: a1 5e asr lr,0x1
10711 + *[0-9a-f]*: b7 56 asr r6,0x17
10712 + *[0-9a-f]*: b3 46 asr r6,0x12
10713 + *[0-9a-f]*: a9 45 asr r5,0x8
10714 +
10715 +[0-9a-f]* <lsl_imm5>:
10716 + *[0-9a-f]*: a1 6f lsl pc,0x0
10717 + *[0-9a-f]*: bf 7c lsl r12,0x1f
10718 + *[0-9a-f]*: b1 65 lsl r5,0x10
10719 + *[0-9a-f]*: af 74 lsl r4,0xf
10720 + *[0-9a-f]*: a1 7e lsl lr,0x1
10721 + *[0-9a-f]*: ad 7c lsl r12,0xd
10722 + *[0-9a-f]*: b1 66 lsl r6,0x10
10723 + *[0-9a-f]*: b9 71 lsl r1,0x19
10724 +
10725 +[0-9a-f]* <lsr_imm5>:
10726 + *[0-9a-f]*: a1 8f lsr pc,0x0
10727 + *[0-9a-f]*: bf 9c lsr r12,0x1f
10728 + *[0-9a-f]*: b1 85 lsr r5,0x10
10729 + *[0-9a-f]*: af 94 lsr r4,0xf
10730 + *[0-9a-f]*: a1 9e lsr lr,0x1
10731 + *[0-9a-f]*: a1 90 lsr r0,0x1
10732 + *[0-9a-f]*: ab 88 lsr r8,0xa
10733 + *[0-9a-f]*: bb 87 lsr r7,0x1a
10734 +
10735 +[0-9a-f]* <sbr>:
10736 + *[0-9a-f]*: a1 af sbr pc,0x0
10737 + *[0-9a-f]*: bf bc sbr r12,0x1f
10738 + *[0-9a-f]*: b1 a5 sbr r5,0x10
10739 + *[0-9a-f]*: af b4 sbr r4,0xf
10740 + *[0-9a-f]*: a1 be sbr lr,0x1
10741 + *[0-9a-f]*: bf b8 sbr r8,0x1f
10742 + *[0-9a-f]*: b7 a6 sbr r6,0x16
10743 + *[0-9a-f]*: b7 b1 sbr r1,0x17
10744 +
10745 +[0-9a-f]* <cbr>:
10746 + *[0-9a-f]*: a1 cf cbr pc,0x0
10747 + *[0-9a-f]*: bf dc cbr r12,0x1f
10748 + *[0-9a-f]*: b1 c5 cbr r5,0x10
10749 + *[0-9a-f]*: af d4 cbr r4,0xf
10750 + *[0-9a-f]*: a1 de cbr lr,0x1
10751 + *[0-9a-f]*: ab cc cbr r12,0xa
10752 + *[0-9a-f]*: b7 c7 cbr r7,0x16
10753 + *[0-9a-f]*: a9 d8 cbr r8,0x9
10754 +
10755 +[0-9a-f]* <brc1>:
10756 + *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*>
10757 + *[0-9a-f]*: cf f7 brpl [0-9a-f]* <.*>
10758 + *[0-9a-f]*: c8 04 brge [0-9a-f]* <.*>
10759 + *[0-9a-f]*: c7 f3 brcs [0-9a-f]* <.*>
10760 + *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*>
10761 + *[0-9a-f]*: c7 33 brcs [0-9a-f]* <.*>
10762 + *[0-9a-f]*: cf 70 breq [0-9a-f]* <.*>
10763 + *[0-9a-f]*: c0 60 breq [0-9a-f]* <.*>
10764 +
10765 +[0-9a-f]* <rjmp>:
10766 + *[0-9a-f]*: c0 08 rjmp [0-9a-f]* <.*>
10767 + *[0-9a-f]*: cf fb rjmp [0-9a-f]* <.*>
10768 + *[0-9a-f]*: c0 0a rjmp [0-9a-f]* <.*>
10769 + *[0-9a-f]*: cf f9 rjmp [0-9a-f]* <.*>
10770 + *[0-9a-f]*: c0 18 rjmp [0-9a-f]* <.*>
10771 + *[0-9a-f]*: c1 fa rjmp [0-9a-f]* <.*>
10772 + *[0-9a-f]*: c0 78 rjmp [0-9a-f]* <.*>
10773 + *[0-9a-f]*: cf ea rjmp [0-9a-f]* <.*>
10774 +
10775 +[0-9a-f]* <rcall1>:
10776 + *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*>
10777 + *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*>
10778 + *[0-9a-f]*: c0 0e rcall [0-9a-f]* <.*>
10779 + *[0-9a-f]*: cf fd rcall [0-9a-f]* <.*>
10780 + *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*>
10781 + *[0-9a-f]*: c6 cc rcall [0-9a-f]* <.*>
10782 + *[0-9a-f]*: cf 7e rcall [0-9a-f]* <.*>
10783 + *[0-9a-f]*: c1 ae rcall [0-9a-f]* <.*>
10784 +
10785 +[0-9a-f]* <acall>:
10786 + *[0-9a-f]*: d0 00 acall 0x0
10787 + *[0-9a-f]*: df f0 acall 0x3fc
10788 + *[0-9a-f]*: d8 00 acall 0x200
10789 + *[0-9a-f]*: d7 f0 acall 0x1fc
10790 + *[0-9a-f]*: d0 10 acall 0x4
10791 + *[0-9a-f]*: d5 90 acall 0x164
10792 + *[0-9a-f]*: d4 c0 acall 0x130
10793 + *[0-9a-f]*: d2 b0 acall 0xac
10794 +
10795 +[0-9a-f]* <scall>:
10796 + *[0-9a-f]*: d7 33 scall
10797 + *[0-9a-f]*: d7 33 scall
10798 + *[0-9a-f]*: d7 33 scall
10799 + *[0-9a-f]*: d7 33 scall
10800 + *[0-9a-f]*: d7 33 scall
10801 + *[0-9a-f]*: d7 33 scall
10802 + *[0-9a-f]*: d7 33 scall
10803 + *[0-9a-f]*: d7 33 scall
10804 +
10805 +[0-9a-f]* <popm>:
10806 + *[0-9a-f]*: d8 02 popm pc
10807 + *[0-9a-f]*: dd fa popm r0-r11,pc,r12=-1
10808 + *[0-9a-f]*: d4 02 popm lr
10809 + *[0-9a-f]*: db fa popm r0-r11,pc,r12=1
10810 + *[0-9a-f]*: d0 12 popm r0-r3
10811 + *[0-9a-f]*: d8 e2 popm r4-r10,pc
10812 + *[0-9a-f]*: d9 1a popm r0-r3,r11,pc,r12=0
10813 + *[0-9a-f]*: d7 b2 popm r0-r7,r10-r12,lr
10814 +
10815 +[0-9a-f]* <pushm>:
10816 + *[0-9a-f]*: d8 01 pushm pc
10817 + *[0-9a-f]*: df f1 pushm r0-r12,lr-pc
10818 + *[0-9a-f]*: d8 01 pushm pc
10819 + *[0-9a-f]*: d7 f1 pushm r0-r12,lr
10820 + *[0-9a-f]*: d0 11 pushm r0-r3
10821 + *[0-9a-f]*: dc c1 pushm r8-r10,lr-pc
10822 + *[0-9a-f]*: d0 91 pushm r0-r3,r10
10823 + *[0-9a-f]*: d2 41 pushm r8-r9,r12
10824 +
10825 +[0-9a-f]* <popm_n>:
10826 +.*
10827 +.*
10828 +.*
10829 +.*
10830 +.*
10831 +.*
10832 +.*
10833 +.*
10834 +
10835 +[0-9a-f]* <pushm_n>:
10836 +.*
10837 +.*
10838 +.*
10839 +.*
10840 +.*
10841 +.*
10842 +.*
10843 +.*
10844 +
10845 +[0-9a-f]* <csrfcz>:
10846 + *[0-9a-f]*: d0 03 csrfcz 0x0
10847 + *[0-9a-f]*: d1 f3 csrfcz 0x1f
10848 + *[0-9a-f]*: d1 03 csrfcz 0x10
10849 + *[0-9a-f]*: d0 f3 csrfcz 0xf
10850 + *[0-9a-f]*: d0 13 csrfcz 0x1
10851 + *[0-9a-f]*: d0 53 csrfcz 0x5
10852 + *[0-9a-f]*: d0 d3 csrfcz 0xd
10853 + *[0-9a-f]*: d1 73 csrfcz 0x17
10854 +
10855 +[0-9a-f]* <ssrf>:
10856 + *[0-9a-f]*: d2 03 ssrf 0x0
10857 + *[0-9a-f]*: d3 f3 ssrf 0x1f
10858 + *[0-9a-f]*: d3 03 ssrf 0x10
10859 + *[0-9a-f]*: d2 f3 ssrf 0xf
10860 + *[0-9a-f]*: d2 13 ssrf 0x1
10861 + *[0-9a-f]*: d3 d3 ssrf 0x1d
10862 + *[0-9a-f]*: d2 d3 ssrf 0xd
10863 + *[0-9a-f]*: d2 d3 ssrf 0xd
10864 +
10865 +[0-9a-f]* <csrf>:
10866 + *[0-9a-f]*: d4 03 csrf 0x0
10867 + *[0-9a-f]*: d5 f3 csrf 0x1f
10868 + *[0-9a-f]*: d5 03 csrf 0x10
10869 + *[0-9a-f]*: d4 f3 csrf 0xf
10870 + *[0-9a-f]*: d4 13 csrf 0x1
10871 + *[0-9a-f]*: d4 a3 csrf 0xa
10872 + *[0-9a-f]*: d4 f3 csrf 0xf
10873 + *[0-9a-f]*: d4 b3 csrf 0xb
10874 +
10875 +[0-9a-f]* <rete>:
10876 + *[0-9a-f]*: d6 03 rete
10877 +
10878 +[0-9a-f]* <rets>:
10879 + *[0-9a-f]*: d6 13 rets
10880 +
10881 +[0-9a-f]* <retd>:
10882 + *[0-9a-f]*: d6 23 retd
10883 +
10884 +[0-9a-f]* <retj>:
10885 + *[0-9a-f]*: d6 33 retj
10886 +
10887 +[0-9a-f]* <tlbr>:
10888 + *[0-9a-f]*: d6 43 tlbr
10889 +
10890 +[0-9a-f]* <tlbs>:
10891 + *[0-9a-f]*: d6 53 tlbs
10892 +
10893 +[0-9a-f]* <tlbw>:
10894 + *[0-9a-f]*: d6 63 tlbw
10895 +
10896 +[0-9a-f]* <breakpoint>:
10897 + *[0-9a-f]*: d6 73 breakpoint
10898 +
10899 +[0-9a-f]* <incjosp>:
10900 + *[0-9a-f]*: d6 83 incjosp 1
10901 + *[0-9a-f]*: d6 93 incjosp 2
10902 + *[0-9a-f]*: d6 a3 incjosp 3
10903 + *[0-9a-f]*: d6 b3 incjosp 4
10904 + *[0-9a-f]*: d6 c3 incjosp -4
10905 + *[0-9a-f]*: d6 d3 incjosp -3
10906 + *[0-9a-f]*: d6 e3 incjosp -2
10907 + *[0-9a-f]*: d6 f3 incjosp -1
10908 +
10909 +[0-9a-f]* <nop>:
10910 + *[0-9a-f]*: d7 03 nop
10911 +
10912 +[0-9a-f]* <popjc>:
10913 + *[0-9a-f]*: d7 13 popjc
10914 +
10915 +[0-9a-f]* <pushjc>:
10916 + *[0-9a-f]*: d7 23 pushjc
10917 +
10918 +[0-9a-f]* <add2>:
10919 + *[0-9a-f]*: fe 0f 00 0f add pc,pc,pc
10920 + *[0-9a-f]*: f8 0c 00 3c add r12,r12,r12<<0x3
10921 + *[0-9a-f]*: ea 05 00 25 add r5,r5,r5<<0x2
10922 + *[0-9a-f]*: e8 04 00 14 add r4,r4,r4<<0x1
10923 + *[0-9a-f]*: fc 0e 00 1e add lr,lr,lr<<0x1
10924 + *[0-9a-f]*: f8 00 00 10 add r0,r12,r0<<0x1
10925 + *[0-9a-f]*: f8 04 00 09 add r9,r12,r4
10926 + *[0-9a-f]*: f8 07 00 2c add r12,r12,r7<<0x2
10927 +
10928 +[0-9a-f]* <sub2>:
10929 + *[0-9a-f]*: fe 0f 01 0f sub pc,pc,pc
10930 + *[0-9a-f]*: f8 0c 01 3c sub r12,r12,r12<<0x3
10931 + *[0-9a-f]*: ea 05 01 25 sub r5,r5,r5<<0x2
10932 + *[0-9a-f]*: e8 04 01 14 sub r4,r4,r4<<0x1
10933 + *[0-9a-f]*: fc 0e 01 1e sub lr,lr,lr<<0x1
10934 + *[0-9a-f]*: e6 04 01 0d sub sp,r3,r4
10935 + *[0-9a-f]*: ee 03 01 03 sub r3,r7,r3
10936 + *[0-9a-f]*: f4 0d 01 1d sub sp,r10,sp<<0x1
10937 +
10938 +[0-9a-f]* <divu>:
10939 + *[0-9a-f]*: fe 0f 0d 0f divu pc,pc,pc
10940 + *[0-9a-f]*: f8 0c 0d 0c divu r12,r12,r12
10941 + *[0-9a-f]*: ea 05 0d 05 divu r5,r5,r5
10942 + *[0-9a-f]*: e8 04 0d 04 divu r4,r4,r4
10943 + *[0-9a-f]*: fc 0e 0d 0e divu lr,lr,lr
10944 + *[0-9a-f]*: e8 0f 0d 0d divu sp,r4,pc
10945 + *[0-9a-f]*: ea 0d 0d 05 divu r5,r5,sp
10946 + *[0-9a-f]*: fa 00 0d 0a divu r10,sp,r0
10947 +
10948 +[0-9a-f]* <addhh_w>:
10949 + *[0-9a-f]*: fe 0f 0e 0f addhh\.w pc,pc:b,pc:b
10950 + *[0-9a-f]*: f8 0c 0e 3c addhh\.w r12,r12:t,r12:t
10951 + *[0-9a-f]*: ea 05 0e 35 addhh\.w r5,r5:t,r5:t
10952 + *[0-9a-f]*: e8 04 0e 04 addhh\.w r4,r4:b,r4:b
10953 + *[0-9a-f]*: fc 0e 0e 3e addhh\.w lr,lr:t,lr:t
10954 + *[0-9a-f]*: e0 03 0e 00 addhh\.w r0,r0:b,r3:b
10955 + *[0-9a-f]*: f8 07 0e 2e addhh\.w lr,r12:t,r7:b
10956 + *[0-9a-f]*: f4 02 0e 23 addhh\.w r3,r10:t,r2:b
10957 +
10958 +[0-9a-f]* <subhh_w>:
10959 + *[0-9a-f]*: fe 0f 0f 0f subhh\.w pc,pc:b,pc:b
10960 + *[0-9a-f]*: f8 0c 0f 3c subhh\.w r12,r12:t,r12:t
10961 + *[0-9a-f]*: ea 05 0f 35 subhh\.w r5,r5:t,r5:t
10962 + *[0-9a-f]*: e8 04 0f 04 subhh\.w r4,r4:b,r4:b
10963 + *[0-9a-f]*: fc 0e 0f 3e subhh\.w lr,lr:t,lr:t
10964 + *[0-9a-f]*: e2 07 0f 2a subhh\.w r10,r1:t,r7:b
10965 + *[0-9a-f]*: f4 0e 0f 3f subhh\.w pc,r10:t,lr:t
10966 + *[0-9a-f]*: e0 0c 0f 23 subhh\.w r3,r0:t,r12:b
10967 +
10968 +[0-9a-f]* <adc>:
10969 + *[0-9a-f]*: fe 0f 00 4f adc pc,pc,pc
10970 + *[0-9a-f]*: f8 0c 00 4c adc r12,r12,r12
10971 + *[0-9a-f]*: ea 05 00 45 adc r5,r5,r5
10972 + *[0-9a-f]*: e8 04 00 44 adc r4,r4,r4
10973 + *[0-9a-f]*: fc 0e 00 4e adc lr,lr,lr
10974 + *[0-9a-f]*: e0 07 00 44 adc r4,r0,r7
10975 + *[0-9a-f]*: e8 03 00 4d adc sp,r4,r3
10976 + *[0-9a-f]*: f8 00 00 42 adc r2,r12,r0
10977 +
10978 +[0-9a-f]* <sbc>:
10979 + *[0-9a-f]*: fe 0f 01 4f sbc pc,pc,pc
10980 + *[0-9a-f]*: f8 0c 01 4c sbc r12,r12,r12
10981 + *[0-9a-f]*: ea 05 01 45 sbc r5,r5,r5
10982 + *[0-9a-f]*: e8 04 01 44 sbc r4,r4,r4
10983 + *[0-9a-f]*: fc 0e 01 4e sbc lr,lr,lr
10984 + *[0-9a-f]*: ee 09 01 46 sbc r6,r7,r9
10985 + *[0-9a-f]*: f0 05 01 40 sbc r0,r8,r5
10986 + *[0-9a-f]*: e0 04 01 41 sbc r1,r0,r4
10987 +
10988 +[0-9a-f]* <mul_2>:
10989 + *[0-9a-f]*: fe 0f 02 4f mul pc,pc,pc
10990 + *[0-9a-f]*: f8 0c 02 4c mul r12,r12,r12
10991 + *[0-9a-f]*: ea 05 02 45 mul r5,r5,r5
10992 + *[0-9a-f]*: e8 04 02 44 mul r4,r4,r4
10993 + *[0-9a-f]*: fc 0e 02 4e mul lr,lr,lr
10994 + *[0-9a-f]*: e0 00 02 4f mul pc,r0,r0
10995 + *[0-9a-f]*: fe 0e 02 48 mul r8,pc,lr
10996 + *[0-9a-f]*: f8 0f 02 44 mul r4,r12,pc
10997 +
10998 +[0-9a-f]* <mac>:
10999 + *[0-9a-f]*: fe 0f 03 4f mac pc,pc,pc
11000 + *[0-9a-f]*: f8 0c 03 4c mac r12,r12,r12
11001 + *[0-9a-f]*: ea 05 03 45 mac r5,r5,r5
11002 + *[0-9a-f]*: e8 04 03 44 mac r4,r4,r4
11003 + *[0-9a-f]*: fc 0e 03 4e mac lr,lr,lr
11004 + *[0-9a-f]*: e8 00 03 4a mac r10,r4,r0
11005 + *[0-9a-f]*: fc 00 03 47 mac r7,lr,r0
11006 + *[0-9a-f]*: f2 0c 03 42 mac r2,r9,r12
11007 +
11008 +[0-9a-f]* <mulsd>:
11009 + *[0-9a-f]*: fe 0f 04 4f muls\.d pc,pc,pc
11010 + *[0-9a-f]*: f8 0c 04 4c muls\.d r12,r12,r12
11011 + *[0-9a-f]*: ea 05 04 45 muls\.d r5,r5,r5
11012 + *[0-9a-f]*: e8 04 04 44 muls\.d r4,r4,r4
11013 + *[0-9a-f]*: fc 0e 04 4e muls\.d lr,lr,lr
11014 + *[0-9a-f]*: f0 0e 04 42 muls\.d r2,r8,lr
11015 + *[0-9a-f]*: e0 0b 04 44 muls\.d r4,r0,r11
11016 + *[0-9a-f]*: fc 06 04 45 muls\.d r5,lr,r6
11017 +
11018 +[0-9a-f]* <macsd>:
11019 + *[0-9a-f]*: fe 0f 05 40 macs\.d r0,pc,pc
11020 + *[0-9a-f]*: f8 0c 05 4e macs\.d lr,r12,r12
11021 + *[0-9a-f]*: ea 05 05 48 macs\.d r8,r5,r5
11022 + *[0-9a-f]*: e8 04 05 46 macs\.d r6,r4,r4
11023 + *[0-9a-f]*: fc 0e 05 42 macs\.d r2,lr,lr
11024 + *[0-9a-f]*: e2 09 05 48 macs\.d r8,r1,r9
11025 + *[0-9a-f]*: f0 08 05 4e macs\.d lr,r8,r8
11026 + *[0-9a-f]*: e6 0c 05 44 macs\.d r4,r3,r12
11027 +
11028 +[0-9a-f]* <mulud>:
11029 + *[0-9a-f]*: fe 0f 06 40 mulu\.d r0,pc,pc
11030 + *[0-9a-f]*: f8 0c 06 4e mulu\.d lr,r12,r12
11031 + *[0-9a-f]*: ea 05 06 48 mulu\.d r8,r5,r5
11032 + *[0-9a-f]*: e8 04 06 46 mulu\.d r6,r4,r4
11033 + *[0-9a-f]*: fc 0e 06 42 mulu\.d r2,lr,lr
11034 + *[0-9a-f]*: ea 00 06 46 mulu\.d r6,r5,r0
11035 + *[0-9a-f]*: ec 01 06 44 mulu\.d r4,r6,r1
11036 + *[0-9a-f]*: f0 02 06 48 mulu\.d r8,r8,r2
11037 +
11038 +[0-9a-f]* <macud>:
11039 + *[0-9a-f]*: fe 0f 07 40 macu\.d r0,pc,pc
11040 + *[0-9a-f]*: f8 0c 07 4e macu\.d lr,r12,r12
11041 + *[0-9a-f]*: ea 05 07 48 macu\.d r8,r5,r5
11042 + *[0-9a-f]*: e8 04 07 46 macu\.d r6,r4,r4
11043 + *[0-9a-f]*: fc 0e 07 42 macu\.d r2,lr,lr
11044 + *[0-9a-f]*: fa 0b 07 46 macu\.d r6,sp,r11
11045 + *[0-9a-f]*: e8 08 07 42 macu\.d r2,r4,r8
11046 + *[0-9a-f]*: f4 09 07 46 macu\.d r6,r10,r9
11047 +
11048 +[0-9a-f]* <asr_1>:
11049 + *[0-9a-f]*: fe 0f 08 4f asr pc,pc,pc
11050 + *[0-9a-f]*: f8 0c 08 4c asr r12,r12,r12
11051 + *[0-9a-f]*: ea 05 08 45 asr r5,r5,r5
11052 + *[0-9a-f]*: e8 04 08 44 asr r4,r4,r4
11053 + *[0-9a-f]*: fc 0e 08 4e asr lr,lr,lr
11054 + *[0-9a-f]*: ec 0f 08 4f asr pc,r6,pc
11055 + *[0-9a-f]*: ec 0c 08 40 asr r0,r6,r12
11056 + *[0-9a-f]*: fa 00 08 44 asr r4,sp,r0
11057 +
11058 +[0-9a-f]* <lsl_1>:
11059 + *[0-9a-f]*: fe 0f 09 4f lsl pc,pc,pc
11060 + *[0-9a-f]*: f8 0c 09 4c lsl r12,r12,r12
11061 + *[0-9a-f]*: ea 05 09 45 lsl r5,r5,r5
11062 + *[0-9a-f]*: e8 04 09 44 lsl r4,r4,r4
11063 + *[0-9a-f]*: fc 0e 09 4e lsl lr,lr,lr
11064 + *[0-9a-f]*: ea 0e 09 4e lsl lr,r5,lr
11065 + *[0-9a-f]*: fe 03 09 45 lsl r5,pc,r3
11066 + *[0-9a-f]*: fe 09 09 41 lsl r1,pc,r9
11067 +
11068 +[0-9a-f]* <lsr_1>:
11069 + *[0-9a-f]*: fe 0f 0a 4f lsr pc,pc,pc
11070 + *[0-9a-f]*: f8 0c 0a 4c lsr r12,r12,r12
11071 + *[0-9a-f]*: ea 05 0a 45 lsr r5,r5,r5
11072 + *[0-9a-f]*: e8 04 0a 44 lsr r4,r4,r4
11073 + *[0-9a-f]*: fc 0e 0a 4e lsr lr,lr,lr
11074 + *[0-9a-f]*: e8 01 0a 42 lsr r2,r4,r1
11075 + *[0-9a-f]*: e2 06 0a 45 lsr r5,r1,r6
11076 + *[0-9a-f]*: ec 07 0a 4d lsr sp,r6,r7
11077 +
11078 +[0-9a-f]* <xchg>:
11079 + *[0-9a-f]*: fe 0f 0b 4f xchg pc,pc,pc
11080 + *[0-9a-f]*: f8 0c 0b 4c xchg r12,r12,r12
11081 + *[0-9a-f]*: ea 05 0b 45 xchg r5,r5,r5
11082 + *[0-9a-f]*: e8 04 0b 44 xchg r4,r4,r4
11083 + *[0-9a-f]*: fc 0e 0b 4e xchg lr,lr,lr
11084 + *[0-9a-f]*: e8 0d 0b 4e xchg lr,r4,sp
11085 + *[0-9a-f]*: ea 0c 0b 41 xchg r1,r5,r12
11086 + *[0-9a-f]*: f8 00 0b 4e xchg lr,r12,r0
11087 +
11088 +[0-9a-f]* <max>:
11089 + *[0-9a-f]*: fe 0f 0c 4f max pc,pc,pc
11090 + *[0-9a-f]*: f8 0c 0c 4c max r12,r12,r12
11091 + *[0-9a-f]*: ea 05 0c 45 max r5,r5,r5
11092 + *[0-9a-f]*: e8 04 0c 44 max r4,r4,r4
11093 + *[0-9a-f]*: fc 0e 0c 4e max lr,lr,lr
11094 + *[0-9a-f]*: e4 0d 0c 4e max lr,r2,sp
11095 + *[0-9a-f]*: f4 09 0c 44 max r4,r10,r9
11096 + *[0-9a-f]*: f2 0e 0c 4e max lr,r9,lr
11097 +
11098 +[0-9a-f]* <min>:
11099 + *[0-9a-f]*: fe 0f 0d 4f min pc,pc,pc
11100 + *[0-9a-f]*: f8 0c 0d 4c min r12,r12,r12
11101 + *[0-9a-f]*: ea 05 0d 45 min r5,r5,r5
11102 + *[0-9a-f]*: e8 04 0d 44 min r4,r4,r4
11103 + *[0-9a-f]*: fc 0e 0d 4e min lr,lr,lr
11104 + *[0-9a-f]*: ee 08 0d 49 min r9,r7,r8
11105 + *[0-9a-f]*: ea 05 0d 4d min sp,r5,r5
11106 + *[0-9a-f]*: e2 04 0d 44 min r4,r1,r4
11107 +
11108 +[0-9a-f]* <addabs>:
11109 + *[0-9a-f]*: fe 0f 0e 4f addabs pc,pc,pc
11110 + *[0-9a-f]*: f8 0c 0e 4c addabs r12,r12,r12
11111 + *[0-9a-f]*: ea 05 0e 45 addabs r5,r5,r5
11112 + *[0-9a-f]*: e8 04 0e 44 addabs r4,r4,r4
11113 + *[0-9a-f]*: fc 0e 0e 4e addabs lr,lr,lr
11114 + *[0-9a-f]*: f4 00 0e 47 addabs r7,r10,r0
11115 + *[0-9a-f]*: f2 07 0e 49 addabs r9,r9,r7
11116 + *[0-9a-f]*: f0 0c 0e 42 addabs r2,r8,r12
11117 +
11118 +[0-9a-f]* <mulnhh_w>:
11119 + *[0-9a-f]*: fe 0f 01 8f mulnhh\.w pc,pc:b,pc:b
11120 + *[0-9a-f]*: f8 0c 01 bc mulnhh\.w r12,r12:t,r12:t
11121 + *[0-9a-f]*: ea 05 01 b5 mulnhh\.w r5,r5:t,r5:t
11122 + *[0-9a-f]*: e8 04 01 84 mulnhh\.w r4,r4:b,r4:b
11123 + *[0-9a-f]*: fc 0e 01 be mulnhh\.w lr,lr:t,lr:t
11124 + *[0-9a-f]*: fa 09 01 ab mulnhh\.w r11,sp:t,r9:b
11125 + *[0-9a-f]*: e8 0e 01 9d mulnhh\.w sp,r4:b,lr:t
11126 + *[0-9a-f]*: e4 0b 01 ac mulnhh\.w r12,r2:t,r11:b
11127 +
11128 +[0-9a-f]* <mulnwh_d>:
11129 + *[0-9a-f]*: fe 0f 02 80 mulnwh\.d r0,pc,pc:b
11130 + *[0-9a-f]*: f8 0c 02 9e mulnwh\.d lr,r12,r12:t
11131 + *[0-9a-f]*: ea 05 02 98 mulnwh\.d r8,r5,r5:t
11132 + *[0-9a-f]*: e8 04 02 86 mulnwh\.d r6,r4,r4:b
11133 + *[0-9a-f]*: fc 0e 02 92 mulnwh\.d r2,lr,lr:t
11134 + *[0-9a-f]*: e6 02 02 9e mulnwh\.d lr,r3,r2:t
11135 + *[0-9a-f]*: ea 09 02 84 mulnwh\.d r4,r5,r9:b
11136 + *[0-9a-f]*: e8 04 02 9c mulnwh\.d r12,r4,r4:t
11137 +
11138 +[0-9a-f]* <machh_w>:
11139 + *[0-9a-f]*: fe 0f 04 8f machh\.w pc,pc:b,pc:b
11140 + *[0-9a-f]*: f8 0c 04 bc machh\.w r12,r12:t,r12:t
11141 + *[0-9a-f]*: ea 05 04 b5 machh\.w r5,r5:t,r5:t
11142 + *[0-9a-f]*: e8 04 04 84 machh\.w r4,r4:b,r4:b
11143 + *[0-9a-f]*: fc 0e 04 be machh\.w lr,lr:t,lr:t
11144 + *[0-9a-f]*: ea 01 04 9e machh\.w lr,r5:b,r1:t
11145 + *[0-9a-f]*: ec 07 04 89 machh\.w r9,r6:b,r7:b
11146 + *[0-9a-f]*: fc 0c 04 a5 machh\.w r5,lr:t,r12:b
11147 +
11148 +[0-9a-f]* <machh_d>:
11149 + *[0-9a-f]*: fe 0f 05 80 machh\.d r0,pc:b,pc:b
11150 + *[0-9a-f]*: f8 0c 05 be machh\.d lr,r12:t,r12:t
11151 + *[0-9a-f]*: ea 05 05 b8 machh\.d r8,r5:t,r5:t
11152 + *[0-9a-f]*: e8 04 05 86 machh\.d r6,r4:b,r4:b
11153 + *[0-9a-f]*: fc 0e 05 b2 machh\.d r2,lr:t,lr:t
11154 + *[0-9a-f]*: e0 08 05 8a machh\.d r10,r0:b,r8:b
11155 + *[0-9a-f]*: e8 05 05 9e machh\.d lr,r4:b,r5:t
11156 + *[0-9a-f]*: e0 04 05 98 machh\.d r8,r0:b,r4:t
11157 +
11158 +[0-9a-f]* <macsathh_w>:
11159 + *[0-9a-f]*: fe 0f 06 8f macsathh\.w pc,pc:b,pc:b
11160 + *[0-9a-f]*: f8 0c 06 bc macsathh\.w r12,r12:t,r12:t
11161 + *[0-9a-f]*: ea 05 06 b5 macsathh\.w r5,r5:t,r5:t
11162 + *[0-9a-f]*: e8 04 06 84 macsathh\.w r4,r4:b,r4:b
11163 + *[0-9a-f]*: fc 0e 06 be macsathh\.w lr,lr:t,lr:t
11164 + *[0-9a-f]*: ee 0f 06 b7 macsathh\.w r7,r7:t,pc:t
11165 + *[0-9a-f]*: e4 04 06 a4 macsathh\.w r4,r2:t,r4:b
11166 + *[0-9a-f]*: f0 03 06 b4 macsathh\.w r4,r8:t,r3:t
11167 +
11168 +[0-9a-f]* <mulhh_w>:
11169 + *[0-9a-f]*: fe 0f 07 8f mulhh\.w pc,pc:b,pc:b
11170 + *[0-9a-f]*: f8 0c 07 bc mulhh\.w r12,r12:t,r12:t
11171 + *[0-9a-f]*: ea 05 07 b5 mulhh\.w r5,r5:t,r5:t
11172 + *[0-9a-f]*: e8 04 07 84 mulhh\.w r4,r4:b,r4:b
11173 + *[0-9a-f]*: fc 0e 07 be mulhh\.w lr,lr:t,lr:t
11174 + *[0-9a-f]*: e8 09 07 a7 mulhh\.w r7,r4:t,r9:b
11175 + *[0-9a-f]*: e6 07 07 bf mulhh\.w pc,r3:t,r7:t
11176 + *[0-9a-f]*: e8 09 07 9f mulhh\.w pc,r4:b,r9:t
11177 +
11178 +[0-9a-f]* <mulsathh_h>:
11179 + *[0-9a-f]*: fe 0f 08 8f mulsathh\.h pc,pc:b,pc:b
11180 + *[0-9a-f]*: f8 0c 08 bc mulsathh\.h r12,r12:t,r12:t
11181 + *[0-9a-f]*: ea 05 08 b5 mulsathh\.h r5,r5:t,r5:t
11182 + *[0-9a-f]*: e8 04 08 84 mulsathh\.h r4,r4:b,r4:b
11183 + *[0-9a-f]*: fc 0e 08 be mulsathh\.h lr,lr:t,lr:t
11184 + *[0-9a-f]*: e2 0d 08 83 mulsathh\.h r3,r1:b,sp:b
11185 + *[0-9a-f]*: fc 0b 08 ab mulsathh\.h r11,lr:t,r11:b
11186 + *[0-9a-f]*: f0 0b 08 98 mulsathh\.h r8,r8:b,r11:t
11187 +
11188 +[0-9a-f]* <mulsathh_w>:
11189 + *[0-9a-f]*: fe 0f 09 8f mulsathh\.w pc,pc:b,pc:b
11190 + *[0-9a-f]*: f8 0c 09 bc mulsathh\.w r12,r12:t,r12:t
11191 + *[0-9a-f]*: ea 05 09 b5 mulsathh\.w r5,r5:t,r5:t
11192 + *[0-9a-f]*: e8 04 09 84 mulsathh\.w r4,r4:b,r4:b
11193 + *[0-9a-f]*: fc 0e 09 be mulsathh\.w lr,lr:t,lr:t
11194 + *[0-9a-f]*: f6 06 09 ae mulsathh\.w lr,r11:t,r6:b
11195 + *[0-9a-f]*: ec 07 09 96 mulsathh\.w r6,r6:b,r7:t
11196 + *[0-9a-f]*: e4 03 09 8a mulsathh\.w r10,r2:b,r3:b
11197 +
11198 +[0-9a-f]* <mulsatrndhh_h>:
11199 + *[0-9a-f]*: fe 0f 0a 8f mulsatrndhh\.h pc,pc:b,pc:b
11200 + *[0-9a-f]*: f8 0c 0a bc mulsatrndhh\.h r12,r12:t,r12:t
11201 + *[0-9a-f]*: ea 05 0a b5 mulsatrndhh\.h r5,r5:t,r5:t
11202 + *[0-9a-f]*: e8 04 0a 84 mulsatrndhh\.h r4,r4:b,r4:b
11203 + *[0-9a-f]*: fc 0e 0a be mulsatrndhh\.h lr,lr:t,lr:t
11204 + *[0-9a-f]*: ec 09 0a 8b mulsatrndhh\.h r11,r6:b,r9:b
11205 + *[0-9a-f]*: e6 08 0a 9b mulsatrndhh\.h r11,r3:b,r8:t
11206 + *[0-9a-f]*: fa 07 0a b5 mulsatrndhh\.h r5,sp:t,r7:t
11207 +
11208 +[0-9a-f]* <mulsatrndwh_w>:
11209 + *[0-9a-f]*: fe 0f 0b 8f mulsatrndwh\.w pc,pc,pc:b
11210 + *[0-9a-f]*: f8 0c 0b 9c mulsatrndwh\.w r12,r12,r12:t
11211 + *[0-9a-f]*: ea 05 0b 95 mulsatrndwh\.w r5,r5,r5:t
11212 + *[0-9a-f]*: e8 04 0b 84 mulsatrndwh\.w r4,r4,r4:b
11213 + *[0-9a-f]*: fc 0e 0b 9e mulsatrndwh\.w lr,lr,lr:t
11214 + *[0-9a-f]*: f8 00 0b 85 mulsatrndwh\.w r5,r12,r0:b
11215 + *[0-9a-f]*: f4 0f 0b 87 mulsatrndwh\.w r7,r10,pc:b
11216 + *[0-9a-f]*: f0 05 0b 9a mulsatrndwh\.w r10,r8,r5:t
11217 +
11218 +[0-9a-f]* <macwh_d>:
11219 + *[0-9a-f]*: fe 0f 0c 80 macwh\.d r0,pc,pc:b
11220 + *[0-9a-f]*: f8 0c 0c 9e macwh\.d lr,r12,r12:t
11221 + *[0-9a-f]*: ea 05 0c 98 macwh\.d r8,r5,r5:t
11222 + *[0-9a-f]*: e8 04 0c 86 macwh\.d r6,r4,r4:b
11223 + *[0-9a-f]*: fc 0e 0c 92 macwh\.d r2,lr,lr:t
11224 + *[0-9a-f]*: f4 0c 0c 94 macwh\.d r4,r10,r12:t
11225 + *[0-9a-f]*: ee 0d 0c 84 macwh\.d r4,r7,sp:b
11226 + *[0-9a-f]*: f2 0b 0c 8e macwh\.d lr,r9,r11:b
11227 +
11228 +[0-9a-f]* <mulwh_d>:
11229 + *[0-9a-f]*: fe 0f 0d 80 mulwh\.d r0,pc,pc:b
11230 + *[0-9a-f]*: f8 0c 0d 9e mulwh\.d lr,r12,r12:t
11231 + *[0-9a-f]*: ea 05 0d 98 mulwh\.d r8,r5,r5:t
11232 + *[0-9a-f]*: e8 04 0d 86 mulwh\.d r6,r4,r4:b
11233 + *[0-9a-f]*: fc 0e 0d 92 mulwh\.d r2,lr,lr:t
11234 + *[0-9a-f]*: ea 01 0d 8c mulwh\.d r12,r5,r1:b
11235 + *[0-9a-f]*: e2 03 0d 90 mulwh\.d r0,r1,r3:t
11236 + *[0-9a-f]*: f2 02 0d 80 mulwh\.d r0,r9,r2:b
11237 +
11238 +[0-9a-f]* <mulsatwh_w>:
11239 + *[0-9a-f]*: fe 0f 0e 8f mulsatwh\.w pc,pc,pc:b
11240 + *[0-9a-f]*: f8 0c 0e 9c mulsatwh\.w r12,r12,r12:t
11241 + *[0-9a-f]*: ea 05 0e 95 mulsatwh\.w r5,r5,r5:t
11242 + *[0-9a-f]*: e8 04 0e 84 mulsatwh\.w r4,r4,r4:b
11243 + *[0-9a-f]*: fc 0e 0e 9e mulsatwh\.w lr,lr,lr:t
11244 + *[0-9a-f]*: fe 0a 0e 9b mulsatwh\.w r11,pc,r10:t
11245 + *[0-9a-f]*: f8 09 0e 9d mulsatwh\.w sp,r12,r9:t
11246 + *[0-9a-f]*: e6 02 0e 90 mulsatwh\.w r0,r3,r2:t
11247 +
11248 +[0-9a-f]* <ldw7>:
11249 + *[0-9a-f]*: fe 0f 0f 8f ld\.w pc,pc\[pc:b<<2\]
11250 + *[0-9a-f]*: f8 0c 0f bc ld\.w r12,r12\[r12:t<<2\]
11251 + *[0-9a-f]*: ea 05 0f a5 ld\.w r5,r5\[r5:u<<2\]
11252 + *[0-9a-f]*: e8 04 0f 94 ld\.w r4,r4\[r4:l<<2\]
11253 + *[0-9a-f]*: fc 0e 0f 9e ld\.w lr,lr\[lr:l<<2\]
11254 + *[0-9a-f]*: f4 06 0f 99 ld\.w r9,r10\[r6:l<<2\]
11255 + *[0-9a-f]*: f4 0a 0f 82 ld\.w r2,r10\[r10:b<<2\]
11256 + *[0-9a-f]*: ea 0f 0f 8b ld\.w r11,r5\[pc:b<<2\]
11257 +
11258 +[0-9a-f]* <satadd_w>:
11259 + *[0-9a-f]*: fe 0f 00 cf satadd\.w pc,pc,pc
11260 + *[0-9a-f]*: f8 0c 00 cc satadd\.w r12,r12,r12
11261 + *[0-9a-f]*: ea 05 00 c5 satadd\.w r5,r5,r5
11262 + *[0-9a-f]*: e8 04 00 c4 satadd\.w r4,r4,r4
11263 + *[0-9a-f]*: fc 0e 00 ce satadd\.w lr,lr,lr
11264 + *[0-9a-f]*: f0 0b 00 c4 satadd\.w r4,r8,r11
11265 + *[0-9a-f]*: f8 06 00 c3 satadd\.w r3,r12,r6
11266 + *[0-9a-f]*: fc 09 00 c3 satadd\.w r3,lr,r9
11267 +
11268 +[0-9a-f]* <satsub_w1>:
11269 + *[0-9a-f]*: fe 0f 01 cf satsub\.w pc,pc,pc
11270 + *[0-9a-f]*: f8 0c 01 cc satsub\.w r12,r12,r12
11271 + *[0-9a-f]*: ea 05 01 c5 satsub\.w r5,r5,r5
11272 + *[0-9a-f]*: e8 04 01 c4 satsub\.w r4,r4,r4
11273 + *[0-9a-f]*: fc 0e 01 ce satsub\.w lr,lr,lr
11274 + *[0-9a-f]*: fa 00 01 c8 satsub\.w r8,sp,r0
11275 + *[0-9a-f]*: f0 04 01 c9 satsub\.w r9,r8,r4
11276 + *[0-9a-f]*: fc 02 01 cf satsub\.w pc,lr,r2
11277 +
11278 +[0-9a-f]* <satadd_h>:
11279 + *[0-9a-f]*: fe 0f 02 cf satadd\.h pc,pc,pc
11280 + *[0-9a-f]*: f8 0c 02 cc satadd\.h r12,r12,r12
11281 + *[0-9a-f]*: ea 05 02 c5 satadd\.h r5,r5,r5
11282 + *[0-9a-f]*: e8 04 02 c4 satadd\.h r4,r4,r4
11283 + *[0-9a-f]*: fc 0e 02 ce satadd\.h lr,lr,lr
11284 + *[0-9a-f]*: e6 09 02 c7 satadd\.h r7,r3,r9
11285 + *[0-9a-f]*: e0 02 02 c1 satadd\.h r1,r0,r2
11286 + *[0-9a-f]*: e8 0e 02 c1 satadd\.h r1,r4,lr
11287 +
11288 +[0-9a-f]* <satsub_h>:
11289 + *[0-9a-f]*: fe 0f 03 cf satsub\.h pc,pc,pc
11290 + *[0-9a-f]*: f8 0c 03 cc satsub\.h r12,r12,r12
11291 + *[0-9a-f]*: ea 05 03 c5 satsub\.h r5,r5,r5
11292 + *[0-9a-f]*: e8 04 03 c4 satsub\.h r4,r4,r4
11293 + *[0-9a-f]*: fc 0e 03 ce satsub\.h lr,lr,lr
11294 + *[0-9a-f]*: fc 03 03 ce satsub\.h lr,lr,r3
11295 + *[0-9a-f]*: ec 05 03 cb satsub\.h r11,r6,r5
11296 + *[0-9a-f]*: fa 00 03 c3 satsub\.h r3,sp,r0
11297 +
11298 +[0-9a-f]* <mul3>:
11299 + *[0-9a-f]*: fe 0f 10 00 mul pc,pc,0
11300 + *[0-9a-f]*: f8 0c 10 ff mul r12,r12,-1
11301 + *[0-9a-f]*: ea 05 10 80 mul r5,r5,-128
11302 + *[0-9a-f]*: e8 04 10 7f mul r4,r4,127
11303 + *[0-9a-f]*: fc 0e 10 01 mul lr,lr,1
11304 + *[0-9a-f]*: e4 0c 10 f9 mul r12,r2,-7
11305 + *[0-9a-f]*: fe 01 10 5f mul r1,pc,95
11306 + *[0-9a-f]*: ec 04 10 13 mul r4,r6,19
11307 +
11308 +[0-9a-f]* <rsub2>:
11309 + *[0-9a-f]*: fe 0f 11 00 rsub pc,pc,0
11310 + *[0-9a-f]*: f8 0c 11 ff rsub r12,r12,-1
11311 + *[0-9a-f]*: ea 05 11 80 rsub r5,r5,-128
11312 + *[0-9a-f]*: e8 04 11 7f rsub r4,r4,127
11313 + *[0-9a-f]*: fc 0e 11 01 rsub lr,lr,1
11314 + *[0-9a-f]*: fc 09 11 60 rsub r9,lr,96
11315 + *[0-9a-f]*: e2 0b 11 38 rsub r11,r1,56
11316 + *[0-9a-f]*: ee 00 11 a9 rsub r0,r7,-87
11317 +
11318 +[0-9a-f]* <clz>:
11319 + *[0-9a-f]*: fe 0f 12 00 clz pc,pc
11320 + *[0-9a-f]*: f8 0c 12 00 clz r12,r12
11321 + *[0-9a-f]*: ea 05 12 00 clz r5,r5
11322 + *[0-9a-f]*: e8 04 12 00 clz r4,r4
11323 + *[0-9a-f]*: fc 0e 12 00 clz lr,lr
11324 + *[0-9a-f]*: e6 02 12 00 clz r2,r3
11325 + *[0-9a-f]*: f6 05 12 00 clz r5,r11
11326 + *[0-9a-f]*: e6 0f 12 00 clz pc,r3
11327 +
11328 +[0-9a-f]* <cpc1>:
11329 + *[0-9a-f]*: fe 0f 13 00 cpc pc,pc
11330 + *[0-9a-f]*: f8 0c 13 00 cpc r12,r12
11331 + *[0-9a-f]*: ea 05 13 00 cpc r5,r5
11332 + *[0-9a-f]*: e8 04 13 00 cpc r4,r4
11333 + *[0-9a-f]*: fc 0e 13 00 cpc lr,lr
11334 + *[0-9a-f]*: e8 0f 13 00 cpc pc,r4
11335 + *[0-9a-f]*: f2 05 13 00 cpc r5,r9
11336 + *[0-9a-f]*: ee 06 13 00 cpc r6,r7
11337 +
11338 +[0-9a-f]* <asr3>:
11339 + *[0-9a-f]*: fe 0f 14 00 asr pc,pc,0x0
11340 + *[0-9a-f]*: f8 0c 14 1f asr r12,r12,0x1f
11341 + *[0-9a-f]*: ea 05 14 10 asr r5,r5,0x10
11342 + *[0-9a-f]*: e8 04 14 0f asr r4,r4,0xf
11343 + *[0-9a-f]*: fc 0e 14 01 asr lr,lr,0x1
11344 + *[0-9a-f]*: f6 04 14 13 asr r4,r11,0x13
11345 + *[0-9a-f]*: fe 0d 14 1a asr sp,pc,0x1a
11346 + *[0-9a-f]*: fa 0b 14 08 asr r11,sp,0x8
11347 +
11348 +[0-9a-f]* <lsl3>:
11349 + *[0-9a-f]*: fe 0f 15 00 lsl pc,pc,0x0
11350 + *[0-9a-f]*: f8 0c 15 1f lsl r12,r12,0x1f
11351 + *[0-9a-f]*: ea 05 15 10 lsl r5,r5,0x10
11352 + *[0-9a-f]*: e8 04 15 0f lsl r4,r4,0xf
11353 + *[0-9a-f]*: fc 0e 15 01 lsl lr,lr,0x1
11354 + *[0-9a-f]*: f4 08 15 11 lsl r8,r10,0x11
11355 + *[0-9a-f]*: fc 02 15 03 lsl r2,lr,0x3
11356 + *[0-9a-f]*: f6 0e 15 0e lsl lr,r11,0xe
11357 +
11358 +[0-9a-f]* <lsr3>:
11359 + *[0-9a-f]*: fe 0f 16 00 lsr pc,pc,0x0
11360 + *[0-9a-f]*: f8 0c 16 1f lsr r12,r12,0x1f
11361 + *[0-9a-f]*: ea 05 16 10 lsr r5,r5,0x10
11362 + *[0-9a-f]*: e8 04 16 0f lsr r4,r4,0xf
11363 + *[0-9a-f]*: fc 0e 16 01 lsr lr,lr,0x1
11364 + *[0-9a-f]*: e6 04 16 1f lsr r4,r3,0x1f
11365 + *[0-9a-f]*: f2 0f 16 0e lsr pc,r9,0xe
11366 + *[0-9a-f]*: e0 03 16 06 lsr r3,r0,0x6
11367 +
11368 +[0-9a-f]* <movc1>:
11369 + *[0-9a-f]*: fe 0f 17 00 moveq pc,pc
11370 + *[0-9a-f]*: f8 0c 17 f0 moval r12,r12
11371 + *[0-9a-f]*: ea 05 17 80 movls r5,r5
11372 + *[0-9a-f]*: e8 04 17 70 movpl r4,r4
11373 + *[0-9a-f]*: fc 0e 17 10 movne lr,lr
11374 + *[0-9a-f]*: f6 0f 17 10 movne pc,r11
11375 + *[0-9a-f]*: e4 0a 17 60 movmi r10,r2
11376 + *[0-9a-f]*: f8 08 17 80 movls r8,r12
11377 +
11378 +[0-9a-f]* <padd_h>:
11379 + *[0-9a-f]*: fe 0f 20 0f padd\.h pc,pc,pc
11380 + *[0-9a-f]*: f8 0c 20 0c padd\.h r12,r12,r12
11381 + *[0-9a-f]*: ea 05 20 05 padd\.h r5,r5,r5
11382 + *[0-9a-f]*: e8 04 20 04 padd\.h r4,r4,r4
11383 + *[0-9a-f]*: fc 0e 20 0e padd\.h lr,lr,lr
11384 + *[0-9a-f]*: e4 07 20 08 padd\.h r8,r2,r7
11385 + *[0-9a-f]*: e0 03 20 00 padd\.h r0,r0,r3
11386 + *[0-9a-f]*: f6 06 20 0d padd\.h sp,r11,r6
11387 +
11388 +[0-9a-f]* <psub_h>:
11389 + *[0-9a-f]*: fe 0f 20 1f psub\.h pc,pc,pc
11390 + *[0-9a-f]*: f8 0c 20 1c psub\.h r12,r12,r12
11391 + *[0-9a-f]*: ea 05 20 15 psub\.h r5,r5,r5
11392 + *[0-9a-f]*: e8 04 20 14 psub\.h r4,r4,r4
11393 + *[0-9a-f]*: fc 0e 20 1e psub\.h lr,lr,lr
11394 + *[0-9a-f]*: ec 08 20 1e psub\.h lr,r6,r8
11395 + *[0-9a-f]*: e2 0d 20 10 psub\.h r0,r1,sp
11396 + *[0-9a-f]*: fe 0d 20 1f psub\.h pc,pc,sp
11397 +
11398 +[0-9a-f]* <paddx_h>:
11399 + *[0-9a-f]*: fe 0f 20 2f paddx\.h pc,pc,pc
11400 + *[0-9a-f]*: f8 0c 20 2c paddx\.h r12,r12,r12
11401 + *[0-9a-f]*: ea 05 20 25 paddx\.h r5,r5,r5
11402 + *[0-9a-f]*: e8 04 20 24 paddx\.h r4,r4,r4
11403 + *[0-9a-f]*: fc 0e 20 2e paddx\.h lr,lr,lr
11404 + *[0-9a-f]*: fe 01 20 2f paddx\.h pc,pc,r1
11405 + *[0-9a-f]*: e8 05 20 2a paddx\.h r10,r4,r5
11406 + *[0-9a-f]*: fe 02 20 25 paddx\.h r5,pc,r2
11407 +
11408 +[0-9a-f]* <psubx_h>:
11409 + *[0-9a-f]*: fe 0f 20 3f psubx\.h pc,pc,pc
11410 + *[0-9a-f]*: f8 0c 20 3c psubx\.h r12,r12,r12
11411 + *[0-9a-f]*: ea 05 20 35 psubx\.h r5,r5,r5
11412 + *[0-9a-f]*: e8 04 20 34 psubx\.h r4,r4,r4
11413 + *[0-9a-f]*: fc 0e 20 3e psubx\.h lr,lr,lr
11414 + *[0-9a-f]*: f8 05 20 35 psubx\.h r5,r12,r5
11415 + *[0-9a-f]*: f0 03 20 33 psubx\.h r3,r8,r3
11416 + *[0-9a-f]*: e4 03 20 35 psubx\.h r5,r2,r3
11417 +
11418 +[0-9a-f]* <padds_sh>:
11419 + *[0-9a-f]*: fe 0f 20 4f padds\.sh pc,pc,pc
11420 + *[0-9a-f]*: f8 0c 20 4c padds\.sh r12,r12,r12
11421 + *[0-9a-f]*: ea 05 20 45 padds\.sh r5,r5,r5
11422 + *[0-9a-f]*: e8 04 20 44 padds\.sh r4,r4,r4
11423 + *[0-9a-f]*: fc 0e 20 4e padds\.sh lr,lr,lr
11424 + *[0-9a-f]*: fc 02 20 49 padds\.sh r9,lr,r2
11425 + *[0-9a-f]*: f0 01 20 46 padds\.sh r6,r8,r1
11426 + *[0-9a-f]*: e8 0a 20 46 padds\.sh r6,r4,r10
11427 +
11428 +[0-9a-f]* <psubs_sh>:
11429 + *[0-9a-f]*: fe 0f 20 5f psubs\.sh pc,pc,pc
11430 + *[0-9a-f]*: f8 0c 20 5c psubs\.sh r12,r12,r12
11431 + *[0-9a-f]*: ea 05 20 55 psubs\.sh r5,r5,r5
11432 + *[0-9a-f]*: e8 04 20 54 psubs\.sh r4,r4,r4
11433 + *[0-9a-f]*: fc 0e 20 5e psubs\.sh lr,lr,lr
11434 + *[0-9a-f]*: fc 0b 20 56 psubs\.sh r6,lr,r11
11435 + *[0-9a-f]*: f8 04 20 52 psubs\.sh r2,r12,r4
11436 + *[0-9a-f]*: f2 00 20 50 psubs\.sh r0,r9,r0
11437 +
11438 +[0-9a-f]* <paddxs_sh>:
11439 + *[0-9a-f]*: fe 0f 20 6f paddxs\.sh pc,pc,pc
11440 + *[0-9a-f]*: f8 0c 20 6c paddxs\.sh r12,r12,r12
11441 + *[0-9a-f]*: ea 05 20 65 paddxs\.sh r5,r5,r5
11442 + *[0-9a-f]*: e8 04 20 64 paddxs\.sh r4,r4,r4
11443 + *[0-9a-f]*: fc 0e 20 6e paddxs\.sh lr,lr,lr
11444 + *[0-9a-f]*: e6 09 20 60 paddxs\.sh r0,r3,r9
11445 + *[0-9a-f]*: f4 0b 20 6f paddxs\.sh pc,r10,r11
11446 + *[0-9a-f]*: f4 0f 20 6f paddxs\.sh pc,r10,pc
11447 +
11448 +[0-9a-f]* <psubxs_sh>:
11449 + *[0-9a-f]*: fe 0f 20 7f psubxs\.sh pc,pc,pc
11450 + *[0-9a-f]*: f8 0c 20 7c psubxs\.sh r12,r12,r12
11451 + *[0-9a-f]*: ea 05 20 75 psubxs\.sh r5,r5,r5
11452 + *[0-9a-f]*: e8 04 20 74 psubxs\.sh r4,r4,r4
11453 + *[0-9a-f]*: fc 0e 20 7e psubxs\.sh lr,lr,lr
11454 + *[0-9a-f]*: e8 04 20 77 psubxs\.sh r7,r4,r4
11455 + *[0-9a-f]*: f0 03 20 77 psubxs\.sh r7,r8,r3
11456 + *[0-9a-f]*: ec 05 20 7f psubxs\.sh pc,r6,r5
11457 +
11458 +[0-9a-f]* <padds_uh>:
11459 + *[0-9a-f]*: fe 0f 20 8f padds\.uh pc,pc,pc
11460 + *[0-9a-f]*: f8 0c 20 8c padds\.uh r12,r12,r12
11461 + *[0-9a-f]*: ea 05 20 85 padds\.uh r5,r5,r5
11462 + *[0-9a-f]*: e8 04 20 84 padds\.uh r4,r4,r4
11463 + *[0-9a-f]*: fc 0e 20 8e padds\.uh lr,lr,lr
11464 + *[0-9a-f]*: f6 07 20 8c padds\.uh r12,r11,r7
11465 + *[0-9a-f]*: f0 0e 20 87 padds\.uh r7,r8,lr
11466 + *[0-9a-f]*: f2 07 20 86 padds\.uh r6,r9,r7
11467 +
11468 +[0-9a-f]* <psubs_uh>:
11469 + *[0-9a-f]*: fe 0f 20 9f psubs\.uh pc,pc,pc
11470 + *[0-9a-f]*: f8 0c 20 9c psubs\.uh r12,r12,r12
11471 + *[0-9a-f]*: ea 05 20 95 psubs\.uh r5,r5,r5
11472 + *[0-9a-f]*: e8 04 20 94 psubs\.uh r4,r4,r4
11473 + *[0-9a-f]*: fc 0e 20 9e psubs\.uh lr,lr,lr
11474 + *[0-9a-f]*: f4 06 20 9e psubs\.uh lr,r10,r6
11475 + *[0-9a-f]*: e4 0f 20 9d psubs\.uh sp,r2,pc
11476 + *[0-9a-f]*: f2 02 20 92 psubs\.uh r2,r9,r2
11477 +
11478 +[0-9a-f]* <paddxs_uh>:
11479 + *[0-9a-f]*: fe 0f 20 af paddxs\.uh pc,pc,pc
11480 + *[0-9a-f]*: f8 0c 20 ac paddxs\.uh r12,r12,r12
11481 + *[0-9a-f]*: ea 05 20 a5 paddxs\.uh r5,r5,r5
11482 + *[0-9a-f]*: e8 04 20 a4 paddxs\.uh r4,r4,r4
11483 + *[0-9a-f]*: fc 0e 20 ae paddxs\.uh lr,lr,lr
11484 + *[0-9a-f]*: f2 05 20 a7 paddxs\.uh r7,r9,r5
11485 + *[0-9a-f]*: e2 04 20 a9 paddxs\.uh r9,r1,r4
11486 + *[0-9a-f]*: e4 03 20 a5 paddxs\.uh r5,r2,r3
11487 +
11488 +[0-9a-f]* <psubxs_uh>:
11489 + *[0-9a-f]*: fe 0f 20 bf psubxs\.uh pc,pc,pc
11490 + *[0-9a-f]*: f8 0c 20 bc psubxs\.uh r12,r12,r12
11491 + *[0-9a-f]*: ea 05 20 b5 psubxs\.uh r5,r5,r5
11492 + *[0-9a-f]*: e8 04 20 b4 psubxs\.uh r4,r4,r4
11493 + *[0-9a-f]*: fc 0e 20 be psubxs\.uh lr,lr,lr
11494 + *[0-9a-f]*: ea 0d 20 bd psubxs\.uh sp,r5,sp
11495 + *[0-9a-f]*: ec 06 20 bd psubxs\.uh sp,r6,r6
11496 + *[0-9a-f]*: f6 08 20 b3 psubxs\.uh r3,r11,r8
11497 +
11498 +[0-9a-f]* <paddh_sh>:
11499 + *[0-9a-f]*: fe 0f 20 cf paddh\.sh pc,pc,pc
11500 + *[0-9a-f]*: f8 0c 20 cc paddh\.sh r12,r12,r12
11501 + *[0-9a-f]*: ea 05 20 c5 paddh\.sh r5,r5,r5
11502 + *[0-9a-f]*: e8 04 20 c4 paddh\.sh r4,r4,r4
11503 + *[0-9a-f]*: fc 0e 20 ce paddh\.sh lr,lr,lr
11504 + *[0-9a-f]*: fa 03 20 cc paddh\.sh r12,sp,r3
11505 + *[0-9a-f]*: ea 03 20 cf paddh\.sh pc,r5,r3
11506 + *[0-9a-f]*: f0 0d 20 c8 paddh\.sh r8,r8,sp
11507 +
11508 +[0-9a-f]* <psubh_sh>:
11509 + *[0-9a-f]*: fe 0f 20 df psubh\.sh pc,pc,pc
11510 + *[0-9a-f]*: f8 0c 20 dc psubh\.sh r12,r12,r12
11511 + *[0-9a-f]*: ea 05 20 d5 psubh\.sh r5,r5,r5
11512 + *[0-9a-f]*: e8 04 20 d4 psubh\.sh r4,r4,r4
11513 + *[0-9a-f]*: fc 0e 20 de psubh\.sh lr,lr,lr
11514 + *[0-9a-f]*: ea 08 20 d1 psubh\.sh r1,r5,r8
11515 + *[0-9a-f]*: e6 06 20 d7 psubh\.sh r7,r3,r6
11516 + *[0-9a-f]*: e6 03 20 d4 psubh\.sh r4,r3,r3
11517 +
11518 +[0-9a-f]* <paddxh_sh>:
11519 + *[0-9a-f]*: fe 0f 20 ef paddxh\.sh pc,pc,pc
11520 + *[0-9a-f]*: f8 0c 20 ec paddxh\.sh r12,r12,r12
11521 + *[0-9a-f]*: ea 05 20 e5 paddxh\.sh r5,r5,r5
11522 + *[0-9a-f]*: e8 04 20 e4 paddxh\.sh r4,r4,r4
11523 + *[0-9a-f]*: fc 0e 20 ee paddxh\.sh lr,lr,lr
11524 + *[0-9a-f]*: e0 04 20 e6 paddxh\.sh r6,r0,r4
11525 + *[0-9a-f]*: f0 09 20 e9 paddxh\.sh r9,r8,r9
11526 + *[0-9a-f]*: e0 0d 20 e3 paddxh\.sh r3,r0,sp
11527 +
11528 +[0-9a-f]* <psubxh_sh>:
11529 + *[0-9a-f]*: fe 0f 20 ff psubxh\.sh pc,pc,pc
11530 + *[0-9a-f]*: f8 0c 20 fc psubxh\.sh r12,r12,r12
11531 + *[0-9a-f]*: ea 05 20 f5 psubxh\.sh r5,r5,r5
11532 + *[0-9a-f]*: e8 04 20 f4 psubxh\.sh r4,r4,r4
11533 + *[0-9a-f]*: fc 0e 20 fe psubxh\.sh lr,lr,lr
11534 + *[0-9a-f]*: fe 0c 20 f4 psubxh\.sh r4,pc,r12
11535 + *[0-9a-f]*: e8 06 20 f8 psubxh\.sh r8,r4,r6
11536 + *[0-9a-f]*: f2 04 20 fc psubxh\.sh r12,r9,r4
11537 +
11538 +[0-9a-f]* <paddsub_h>:
11539 + *[0-9a-f]*: fe 0f 21 0f paddsub\.h pc,pc:b,pc:b
11540 + *[0-9a-f]*: f8 0c 21 3c paddsub\.h r12,r12:t,r12:t
11541 + *[0-9a-f]*: ea 05 21 35 paddsub\.h r5,r5:t,r5:t
11542 + *[0-9a-f]*: e8 04 21 04 paddsub\.h r4,r4:b,r4:b
11543 + *[0-9a-f]*: fc 0e 21 3e paddsub\.h lr,lr:t,lr:t
11544 + *[0-9a-f]*: e4 0e 21 25 paddsub\.h r5,r2:t,lr:b
11545 + *[0-9a-f]*: e2 08 21 07 paddsub\.h r7,r1:b,r8:b
11546 + *[0-9a-f]*: f4 05 21 36 paddsub\.h r6,r10:t,r5:t
11547 +
11548 +[0-9a-f]* <psubadd_h>:
11549 + *[0-9a-f]*: fe 0f 21 4f psubadd\.h pc,pc:b,pc:b
11550 + *[0-9a-f]*: f8 0c 21 7c psubadd\.h r12,r12:t,r12:t
11551 + *[0-9a-f]*: ea 05 21 75 psubadd\.h r5,r5:t,r5:t
11552 + *[0-9a-f]*: e8 04 21 44 psubadd\.h r4,r4:b,r4:b
11553 + *[0-9a-f]*: fc 0e 21 7e psubadd\.h lr,lr:t,lr:t
11554 + *[0-9a-f]*: f6 08 21 79 psubadd\.h r9,r11:t,r8:t
11555 + *[0-9a-f]*: ee 0e 21 7a psubadd\.h r10,r7:t,lr:t
11556 + *[0-9a-f]*: fe 0f 21 66 psubadd\.h r6,pc:t,pc:b
11557 +
11558 +[0-9a-f]* <paddsubs_sh>:
11559 + *[0-9a-f]*: fe 0f 21 8f paddsubs\.sh pc,pc:b,pc:b
11560 + *[0-9a-f]*: f8 0c 21 bc paddsubs\.sh r12,r12:t,r12:t
11561 + *[0-9a-f]*: ea 05 21 b5 paddsubs\.sh r5,r5:t,r5:t
11562 + *[0-9a-f]*: e8 04 21 84 paddsubs\.sh r4,r4:b,r4:b
11563 + *[0-9a-f]*: fc 0e 21 be paddsubs\.sh lr,lr:t,lr:t
11564 + *[0-9a-f]*: fc 00 21 a0 paddsubs\.sh r0,lr:t,r0:b
11565 + *[0-9a-f]*: e4 04 21 b9 paddsubs\.sh r9,r2:t,r4:t
11566 + *[0-9a-f]*: f2 0d 21 bc paddsubs\.sh r12,r9:t,sp:t
11567 +
11568 +[0-9a-f]* <psubadds_sh>:
11569 + *[0-9a-f]*: fe 0f 21 cf psubadds\.sh pc,pc:b,pc:b
11570 + *[0-9a-f]*: f8 0c 21 fc psubadds\.sh r12,r12:t,r12:t
11571 + *[0-9a-f]*: ea 05 21 f5 psubadds\.sh r5,r5:t,r5:t
11572 + *[0-9a-f]*: e8 04 21 c4 psubadds\.sh r4,r4:b,r4:b
11573 + *[0-9a-f]*: fc 0e 21 fe psubadds\.sh lr,lr:t,lr:t
11574 + *[0-9a-f]*: fc 01 21 df psubadds\.sh pc,lr:b,r1:t
11575 + *[0-9a-f]*: e6 0c 21 cb psubadds\.sh r11,r3:b,r12:b
11576 + *[0-9a-f]*: e4 08 21 fa psubadds\.sh r10,r2:t,r8:t
11577 +
11578 +[0-9a-f]* <paddsubs_uh>:
11579 + *[0-9a-f]*: fe 0f 22 0f paddsubs\.uh pc,pc:b,pc:b
11580 + *[0-9a-f]*: f8 0c 22 3c paddsubs\.uh r12,r12:t,r12:t
11581 + *[0-9a-f]*: ea 05 22 35 paddsubs\.uh r5,r5:t,r5:t
11582 + *[0-9a-f]*: e8 04 22 04 paddsubs\.uh r4,r4:b,r4:b
11583 + *[0-9a-f]*: fc 0e 22 3e paddsubs\.uh lr,lr:t,lr:t
11584 + *[0-9a-f]*: e4 03 22 09 paddsubs\.uh r9,r2:b,r3:b
11585 + *[0-9a-f]*: fa 07 22 1d paddsubs\.uh sp,sp:b,r7:t
11586 + *[0-9a-f]*: e0 0a 22 1e paddsubs\.uh lr,r0:b,r10:t
11587 +
11588 +[0-9a-f]* <psubadds_uh>:
11589 + *[0-9a-f]*: fe 0f 22 4f psubadds\.uh pc,pc:b,pc:b
11590 + *[0-9a-f]*: f8 0c 22 7c psubadds\.uh r12,r12:t,r12:t
11591 + *[0-9a-f]*: ea 05 22 75 psubadds\.uh r5,r5:t,r5:t
11592 + *[0-9a-f]*: e8 04 22 44 psubadds\.uh r4,r4:b,r4:b
11593 + *[0-9a-f]*: fc 0e 22 7e psubadds\.uh lr,lr:t,lr:t
11594 + *[0-9a-f]*: f2 0f 22 7c psubadds\.uh r12,r9:t,pc:t
11595 + *[0-9a-f]*: ec 08 22 48 psubadds\.uh r8,r6:b,r8:b
11596 + *[0-9a-f]*: f0 04 22 48 psubadds\.uh r8,r8:b,r4:b
11597 +
11598 +[0-9a-f]* <paddsubh_sh>:
11599 + *[0-9a-f]*: fe 0f 22 8f paddsubh\.sh pc,pc:b,pc:b
11600 + *[0-9a-f]*: f8 0c 22 bc paddsubh\.sh r12,r12:t,r12:t
11601 + *[0-9a-f]*: ea 05 22 b5 paddsubh\.sh r5,r5:t,r5:t
11602 + *[0-9a-f]*: e8 04 22 84 paddsubh\.sh r4,r4:b,r4:b
11603 + *[0-9a-f]*: fc 0e 22 be paddsubh\.sh lr,lr:t,lr:t
11604 + *[0-9a-f]*: f2 09 22 a8 paddsubh\.sh r8,r9:t,r9:b
11605 + *[0-9a-f]*: fa 01 22 b0 paddsubh\.sh r0,sp:t,r1:t
11606 + *[0-9a-f]*: e2 00 22 93 paddsubh\.sh r3,r1:b,r0:t
11607 +
11608 +[0-9a-f]* <psubaddh_sh>:
11609 + *[0-9a-f]*: fe 0f 22 cf psubaddh\.sh pc,pc:b,pc:b
11610 + *[0-9a-f]*: f8 0c 22 fc psubaddh\.sh r12,r12:t,r12:t
11611 + *[0-9a-f]*: ea 05 22 f5 psubaddh\.sh r5,r5:t,r5:t
11612 + *[0-9a-f]*: e8 04 22 c4 psubaddh\.sh r4,r4:b,r4:b
11613 + *[0-9a-f]*: fc 0e 22 fe psubaddh\.sh lr,lr:t,lr:t
11614 + *[0-9a-f]*: e6 0a 22 e7 psubaddh\.sh r7,r3:t,r10:b
11615 + *[0-9a-f]*: e4 01 22 f7 psubaddh\.sh r7,r2:t,r1:t
11616 + *[0-9a-f]*: e6 06 22 cb psubaddh\.sh r11,r3:b,r6:b
11617 +
11618 +[0-9a-f]* <padd_b>:
11619 + *[0-9a-f]*: fe 0f 23 0f padd\.b pc,pc,pc
11620 + *[0-9a-f]*: f8 0c 23 0c padd\.b r12,r12,r12
11621 + *[0-9a-f]*: ea 05 23 05 padd\.b r5,r5,r5
11622 + *[0-9a-f]*: e8 04 23 04 padd\.b r4,r4,r4
11623 + *[0-9a-f]*: fc 0e 23 0e padd\.b lr,lr,lr
11624 + *[0-9a-f]*: ec 0f 23 02 padd\.b r2,r6,pc
11625 + *[0-9a-f]*: f2 0c 23 08 padd\.b r8,r9,r12
11626 + *[0-9a-f]*: f8 03 23 05 padd\.b r5,r12,r3
11627 +
11628 +[0-9a-f]* <psub_b>:
11629 + *[0-9a-f]*: fe 0f 23 1f psub\.b pc,pc,pc
11630 + *[0-9a-f]*: f8 0c 23 1c psub\.b r12,r12,r12
11631 + *[0-9a-f]*: ea 05 23 15 psub\.b r5,r5,r5
11632 + *[0-9a-f]*: e8 04 23 14 psub\.b r4,r4,r4
11633 + *[0-9a-f]*: fc 0e 23 1e psub\.b lr,lr,lr
11634 + *[0-9a-f]*: f8 0f 23 10 psub\.b r0,r12,pc
11635 + *[0-9a-f]*: fa 0a 23 17 psub\.b r7,sp,r10
11636 + *[0-9a-f]*: fa 0c 23 15 psub\.b r5,sp,r12
11637 +
11638 +[0-9a-f]* <padds_sb>:
11639 + *[0-9a-f]*: fe 0f 23 2f padds\.sb pc,pc,pc
11640 + *[0-9a-f]*: f8 0c 23 2c padds\.sb r12,r12,r12
11641 + *[0-9a-f]*: ea 05 23 25 padds\.sb r5,r5,r5
11642 + *[0-9a-f]*: e8 04 23 24 padds\.sb r4,r4,r4
11643 + *[0-9a-f]*: fc 0e 23 2e padds\.sb lr,lr,lr
11644 + *[0-9a-f]*: f6 04 23 2d padds\.sb sp,r11,r4
11645 + *[0-9a-f]*: f4 0b 23 2b padds\.sb r11,r10,r11
11646 + *[0-9a-f]*: f8 06 23 25 padds\.sb r5,r12,r6
11647 +
11648 +[0-9a-f]* <psubs_sb>:
11649 + *[0-9a-f]*: fe 0f 23 3f psubs\.sb pc,pc,pc
11650 + *[0-9a-f]*: f8 0c 23 3c psubs\.sb r12,r12,r12
11651 + *[0-9a-f]*: ea 05 23 35 psubs\.sb r5,r5,r5
11652 + *[0-9a-f]*: e8 04 23 34 psubs\.sb r4,r4,r4
11653 + *[0-9a-f]*: fc 0e 23 3e psubs\.sb lr,lr,lr
11654 + *[0-9a-f]*: ec 08 23 37 psubs\.sb r7,r6,r8
11655 + *[0-9a-f]*: f4 09 23 3c psubs\.sb r12,r10,r9
11656 + *[0-9a-f]*: f6 00 23 3f psubs\.sb pc,r11,r0
11657 +
11658 +[0-9a-f]* <padds_ub>:
11659 + *[0-9a-f]*: fe 0f 23 4f padds\.ub pc,pc,pc
11660 + *[0-9a-f]*: f8 0c 23 4c padds\.ub r12,r12,r12
11661 + *[0-9a-f]*: ea 05 23 45 padds\.ub r5,r5,r5
11662 + *[0-9a-f]*: e8 04 23 44 padds\.ub r4,r4,r4
11663 + *[0-9a-f]*: fc 0e 23 4e padds\.ub lr,lr,lr
11664 + *[0-9a-f]*: e4 0b 23 43 padds\.ub r3,r2,r11
11665 + *[0-9a-f]*: f0 01 23 4a padds\.ub r10,r8,r1
11666 + *[0-9a-f]*: f0 0a 23 4b padds\.ub r11,r8,r10
11667 +
11668 +[0-9a-f]* <psubs_ub>:
11669 + *[0-9a-f]*: fe 0f 23 5f psubs\.ub pc,pc,pc
11670 + *[0-9a-f]*: f8 0c 23 5c psubs\.ub r12,r12,r12
11671 + *[0-9a-f]*: ea 05 23 55 psubs\.ub r5,r5,r5
11672 + *[0-9a-f]*: e8 04 23 54 psubs\.ub r4,r4,r4
11673 + *[0-9a-f]*: fc 0e 23 5e psubs\.ub lr,lr,lr
11674 + *[0-9a-f]*: e4 07 23 50 psubs\.ub r0,r2,r7
11675 + *[0-9a-f]*: ea 03 23 5e psubs\.ub lr,r5,r3
11676 + *[0-9a-f]*: ee 09 23 56 psubs\.ub r6,r7,r9
11677 +
11678 +[0-9a-f]* <paddh_ub>:
11679 + *[0-9a-f]*: fe 0f 23 6f paddh\.ub pc,pc,pc
11680 + *[0-9a-f]*: f8 0c 23 6c paddh\.ub r12,r12,r12
11681 + *[0-9a-f]*: ea 05 23 65 paddh\.ub r5,r5,r5
11682 + *[0-9a-f]*: e8 04 23 64 paddh\.ub r4,r4,r4
11683 + *[0-9a-f]*: fc 0e 23 6e paddh\.ub lr,lr,lr
11684 + *[0-9a-f]*: e2 00 23 6e paddh\.ub lr,r1,r0
11685 + *[0-9a-f]*: ee 07 23 62 paddh\.ub r2,r7,r7
11686 + *[0-9a-f]*: e2 02 23 62 paddh\.ub r2,r1,r2
11687 +
11688 +[0-9a-f]* <psubh_ub>:
11689 + *[0-9a-f]*: fe 0f 23 7f psubh\.ub pc,pc,pc
11690 + *[0-9a-f]*: f8 0c 23 7c psubh\.ub r12,r12,r12
11691 + *[0-9a-f]*: ea 05 23 75 psubh\.ub r5,r5,r5
11692 + *[0-9a-f]*: e8 04 23 74 psubh\.ub r4,r4,r4
11693 + *[0-9a-f]*: fc 0e 23 7e psubh\.ub lr,lr,lr
11694 + *[0-9a-f]*: e2 06 23 70 psubh\.ub r0,r1,r6
11695 + *[0-9a-f]*: fc 0a 23 74 psubh\.ub r4,lr,r10
11696 + *[0-9a-f]*: f0 01 23 79 psubh\.ub r9,r8,r1
11697 +
11698 +[0-9a-f]* <pmax_ub>:
11699 + *[0-9a-f]*: fe 0f 23 8f pmax\.ub pc,pc,pc
11700 + *[0-9a-f]*: f8 0c 23 8c pmax\.ub r12,r12,r12
11701 + *[0-9a-f]*: ea 05 23 85 pmax\.ub r5,r5,r5
11702 + *[0-9a-f]*: e8 04 23 84 pmax\.ub r4,r4,r4
11703 + *[0-9a-f]*: fc 0e 23 8e pmax\.ub lr,lr,lr
11704 + *[0-9a-f]*: e4 0b 23 8f pmax\.ub pc,r2,r11
11705 + *[0-9a-f]*: e2 01 23 8c pmax\.ub r12,r1,r1
11706 + *[0-9a-f]*: e4 00 23 85 pmax\.ub r5,r2,r0
11707 +
11708 +[0-9a-f]* <pmax_sh>:
11709 + *[0-9a-f]*: fe 0f 23 9f pmax\.sh pc,pc,pc
11710 + *[0-9a-f]*: f8 0c 23 9c pmax\.sh r12,r12,r12
11711 + *[0-9a-f]*: ea 05 23 95 pmax\.sh r5,r5,r5
11712 + *[0-9a-f]*: e8 04 23 94 pmax\.sh r4,r4,r4
11713 + *[0-9a-f]*: fc 0e 23 9e pmax\.sh lr,lr,lr
11714 + *[0-9a-f]*: ec 0c 23 9e pmax\.sh lr,r6,r12
11715 + *[0-9a-f]*: fe 05 23 92 pmax\.sh r2,pc,r5
11716 + *[0-9a-f]*: e4 07 23 9f pmax\.sh pc,r2,r7
11717 +
11718 +[0-9a-f]* <pmin_ub>:
11719 + *[0-9a-f]*: fe 0f 23 af pmin\.ub pc,pc,pc
11720 + *[0-9a-f]*: f8 0c 23 ac pmin\.ub r12,r12,r12
11721 + *[0-9a-f]*: ea 05 23 a5 pmin\.ub r5,r5,r5
11722 + *[0-9a-f]*: e8 04 23 a4 pmin\.ub r4,r4,r4
11723 + *[0-9a-f]*: fc 0e 23 ae pmin\.ub lr,lr,lr
11724 + *[0-9a-f]*: e2 05 23 a8 pmin\.ub r8,r1,r5
11725 + *[0-9a-f]*: f0 03 23 a1 pmin\.ub r1,r8,r3
11726 + *[0-9a-f]*: e4 07 23 a0 pmin\.ub r0,r2,r7
11727 +
11728 +[0-9a-f]* <pmin_sh>:
11729 + *[0-9a-f]*: fe 0f 23 bf pmin\.sh pc,pc,pc
11730 + *[0-9a-f]*: f8 0c 23 bc pmin\.sh r12,r12,r12
11731 + *[0-9a-f]*: ea 05 23 b5 pmin\.sh r5,r5,r5
11732 + *[0-9a-f]*: e8 04 23 b4 pmin\.sh r4,r4,r4
11733 + *[0-9a-f]*: fc 0e 23 be pmin\.sh lr,lr,lr
11734 + *[0-9a-f]*: e8 0a 23 b8 pmin\.sh r8,r4,r10
11735 + *[0-9a-f]*: f4 0c 23 be pmin\.sh lr,r10,r12
11736 + *[0-9a-f]*: ec 02 23 b2 pmin\.sh r2,r6,r2
11737 +
11738 +[0-9a-f]* <pavg_ub>:
11739 + *[0-9a-f]*: fe 0f 23 cf pavg\.ub pc,pc,pc
11740 + *[0-9a-f]*: f8 0c 23 cc pavg\.ub r12,r12,r12
11741 + *[0-9a-f]*: ea 05 23 c5 pavg\.ub r5,r5,r5
11742 + *[0-9a-f]*: e8 04 23 c4 pavg\.ub r4,r4,r4
11743 + *[0-9a-f]*: fc 0e 23 ce pavg\.ub lr,lr,lr
11744 + *[0-9a-f]*: e2 06 23 c0 pavg\.ub r0,r1,r6
11745 + *[0-9a-f]*: e6 06 23 c8 pavg\.ub r8,r3,r6
11746 + *[0-9a-f]*: f8 0a 23 cf pavg\.ub pc,r12,r10
11747 +
11748 +[0-9a-f]* <pavg_sh>:
11749 + *[0-9a-f]*: fe 0f 23 df pavg\.sh pc,pc,pc
11750 + *[0-9a-f]*: f8 0c 23 dc pavg\.sh r12,r12,r12
11751 + *[0-9a-f]*: ea 05 23 d5 pavg\.sh r5,r5,r5
11752 + *[0-9a-f]*: e8 04 23 d4 pavg\.sh r4,r4,r4
11753 + *[0-9a-f]*: fc 0e 23 de pavg\.sh lr,lr,lr
11754 + *[0-9a-f]*: fe 0d 23 d9 pavg\.sh r9,pc,sp
11755 + *[0-9a-f]*: fa 03 23 df pavg\.sh pc,sp,r3
11756 + *[0-9a-f]*: e2 09 23 d6 pavg\.sh r6,r1,r9
11757 +
11758 +[0-9a-f]* <pabs_sb>:
11759 + *[0-9a-f]*: e0 0f 23 ef pabs\.sb pc,pc
11760 + *[0-9a-f]*: e0 0c 23 ec pabs\.sb r12,r12
11761 + *[0-9a-f]*: e0 05 23 e5 pabs\.sb r5,r5
11762 + *[0-9a-f]*: e0 04 23 e4 pabs\.sb r4,r4
11763 + *[0-9a-f]*: e0 0e 23 ee pabs\.sb lr,lr
11764 + *[0-9a-f]*: e0 06 23 eb pabs\.sb r11,r6
11765 + *[0-9a-f]*: e0 09 23 ee pabs\.sb lr,r9
11766 + *[0-9a-f]*: e0 07 23 ed pabs\.sb sp,r7
11767 +
11768 +[0-9a-f]* <pabs_sh>:
11769 + *[0-9a-f]*: e0 0f 23 ff pabs\.sh pc,pc
11770 + *[0-9a-f]*: e0 0c 23 fc pabs\.sh r12,r12
11771 + *[0-9a-f]*: e0 05 23 f5 pabs\.sh r5,r5
11772 + *[0-9a-f]*: e0 04 23 f4 pabs\.sh r4,r4
11773 + *[0-9a-f]*: e0 0e 23 fe pabs\.sh lr,lr
11774 + *[0-9a-f]*: e0 03 23 ff pabs\.sh pc,r3
11775 + *[0-9a-f]*: e0 07 23 f5 pabs\.sh r5,r7
11776 + *[0-9a-f]*: e0 00 23 f4 pabs\.sh r4,r0
11777 +
11778 +[0-9a-f]* <psad>:
11779 + *[0-9a-f]*: fe 0f 24 0f psad pc,pc,pc
11780 + *[0-9a-f]*: f8 0c 24 0c psad r12,r12,r12
11781 + *[0-9a-f]*: ea 05 24 05 psad r5,r5,r5
11782 + *[0-9a-f]*: e8 04 24 04 psad r4,r4,r4
11783 + *[0-9a-f]*: fc 0e 24 0e psad lr,lr,lr
11784 + *[0-9a-f]*: f6 0b 24 09 psad r9,r11,r11
11785 + *[0-9a-f]*: e8 0d 24 0e psad lr,r4,sp
11786 + *[0-9a-f]*: e8 05 24 0e psad lr,r4,r5
11787 +
11788 +[0-9a-f]* <pasr_b>:
11789 + *[0-9a-f]*: fe 00 24 1f pasr\.b pc,pc,0x0
11790 + *[0-9a-f]*: f8 07 24 1c pasr\.b r12,r12,0x7
11791 + *[0-9a-f]*: ea 04 24 15 pasr\.b r5,r5,0x4
11792 + *[0-9a-f]*: e8 03 24 14 pasr\.b r4,r4,0x3
11793 + *[0-9a-f]*: fc 01 24 1e pasr\.b lr,lr,0x1
11794 + *[0-9a-f]*: ee 01 24 1f pasr\.b pc,r7,0x1
11795 + *[0-9a-f]*: fc 06 24 1d pasr\.b sp,lr,0x6
11796 + *[0-9a-f]*: e6 02 24 1d pasr\.b sp,r3,0x2
11797 +
11798 +[0-9a-f]* <plsl_b>:
11799 + *[0-9a-f]*: fe 00 24 2f plsl\.b pc,pc,0x0
11800 + *[0-9a-f]*: f8 07 24 2c plsl\.b r12,r12,0x7
11801 + *[0-9a-f]*: ea 04 24 25 plsl\.b r5,r5,0x4
11802 + *[0-9a-f]*: e8 03 24 24 plsl\.b r4,r4,0x3
11803 + *[0-9a-f]*: fc 01 24 2e plsl\.b lr,lr,0x1
11804 + *[0-9a-f]*: f6 04 24 22 plsl\.b r2,r11,0x4
11805 + *[0-9a-f]*: ea 07 24 28 plsl\.b r8,r5,0x7
11806 + *[0-9a-f]*: e0 02 24 2f plsl\.b pc,r0,0x2
11807 +
11808 +[0-9a-f]* <plsr_b>:
11809 + *[0-9a-f]*: fe 00 24 3f plsr\.b pc,pc,0x0
11810 + *[0-9a-f]*: f8 07 24 3c plsr\.b r12,r12,0x7
11811 + *[0-9a-f]*: ea 04 24 35 plsr\.b r5,r5,0x4
11812 + *[0-9a-f]*: e8 03 24 34 plsr\.b r4,r4,0x3
11813 + *[0-9a-f]*: fc 01 24 3e plsr\.b lr,lr,0x1
11814 + *[0-9a-f]*: e2 02 24 3c plsr\.b r12,r1,0x2
11815 + *[0-9a-f]*: fe 07 24 36 plsr\.b r6,pc,0x7
11816 + *[0-9a-f]*: f6 02 24 3c plsr\.b r12,r11,0x2
11817 +
11818 +[0-9a-f]* <pasr_h>:
11819 + *[0-9a-f]*: fe 00 24 4f pasr\.h pc,pc,0x0
11820 + *[0-9a-f]*: f8 0f 24 4c pasr\.h r12,r12,0xf
11821 + *[0-9a-f]*: ea 08 24 45 pasr\.h r5,r5,0x8
11822 + *[0-9a-f]*: e8 07 24 44 pasr\.h r4,r4,0x7
11823 + *[0-9a-f]*: fc 01 24 4e pasr\.h lr,lr,0x1
11824 + *[0-9a-f]*: f6 0a 24 40 pasr\.h r0,r11,0xa
11825 + *[0-9a-f]*: ec 08 24 44 pasr\.h r4,r6,0x8
11826 + *[0-9a-f]*: e4 04 24 46 pasr\.h r6,r2,0x4
11827 +
11828 +[0-9a-f]* <plsl_h>:
11829 + *[0-9a-f]*: fe 00 24 5f plsl\.h pc,pc,0x0
11830 + *[0-9a-f]*: f8 0f 24 5c plsl\.h r12,r12,0xf
11831 + *[0-9a-f]*: ea 08 24 55 plsl\.h r5,r5,0x8
11832 + *[0-9a-f]*: e8 07 24 54 plsl\.h r4,r4,0x7
11833 + *[0-9a-f]*: fc 01 24 5e plsl\.h lr,lr,0x1
11834 + *[0-9a-f]*: f4 09 24 55 plsl\.h r5,r10,0x9
11835 + *[0-9a-f]*: fc 08 24 5d plsl\.h sp,lr,0x8
11836 + *[0-9a-f]*: fc 07 24 50 plsl\.h r0,lr,0x7
11837 +
11838 +[0-9a-f]* <plsr_h>:
11839 + *[0-9a-f]*: fe 00 24 6f plsr\.h pc,pc,0x0
11840 + *[0-9a-f]*: f8 0f 24 6c plsr\.h r12,r12,0xf
11841 + *[0-9a-f]*: ea 08 24 65 plsr\.h r5,r5,0x8
11842 + *[0-9a-f]*: e8 07 24 64 plsr\.h r4,r4,0x7
11843 + *[0-9a-f]*: fc 01 24 6e plsr\.h lr,lr,0x1
11844 + *[0-9a-f]*: e0 0f 24 6b plsr\.h r11,r0,0xf
11845 + *[0-9a-f]*: e6 03 24 6e plsr\.h lr,r3,0x3
11846 + *[0-9a-f]*: fc 0a 24 68 plsr\.h r8,lr,0xa
11847 +
11848 +[0-9a-f]* <packw_sh>:
11849 + *[0-9a-f]*: fe 0f 24 7f packw\.sh pc,pc,pc
11850 + *[0-9a-f]*: f8 0c 24 7c packw\.sh r12,r12,r12
11851 + *[0-9a-f]*: ea 05 24 75 packw\.sh r5,r5,r5
11852 + *[0-9a-f]*: e8 04 24 74 packw\.sh r4,r4,r4
11853 + *[0-9a-f]*: fc 0e 24 7e packw\.sh lr,lr,lr
11854 + *[0-9a-f]*: f6 0a 24 7d packw\.sh sp,r11,r10
11855 + *[0-9a-f]*: e4 0c 24 78 packw\.sh r8,r2,r12
11856 + *[0-9a-f]*: e2 05 24 78 packw\.sh r8,r1,r5
11857 +
11858 +[0-9a-f]* <punpckub_h>:
11859 + *[0-9a-f]*: fe 00 24 8f punpckub\.h pc,pc:b
11860 + *[0-9a-f]*: f8 00 24 9c punpckub\.h r12,r12:t
11861 + *[0-9a-f]*: ea 00 24 95 punpckub\.h r5,r5:t
11862 + *[0-9a-f]*: e8 00 24 84 punpckub\.h r4,r4:b
11863 + *[0-9a-f]*: fc 00 24 9e punpckub\.h lr,lr:t
11864 + *[0-9a-f]*: e2 00 24 96 punpckub\.h r6,r1:t
11865 + *[0-9a-f]*: ea 00 24 8e punpckub\.h lr,r5:b
11866 + *[0-9a-f]*: e4 00 24 9e punpckub\.h lr,r2:t
11867 +
11868 +[0-9a-f]* <punpcksb_h>:
11869 + *[0-9a-f]*: fe 00 24 af punpcksb\.h pc,pc:b
11870 + *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t
11871 + *[0-9a-f]*: ea 00 24 b5 punpcksb\.h r5,r5:t
11872 + *[0-9a-f]*: e8 00 24 a4 punpcksb\.h r4,r4:b
11873 + *[0-9a-f]*: fc 00 24 be punpcksb\.h lr,lr:t
11874 + *[0-9a-f]*: ee 00 24 b4 punpcksb\.h r4,r7:t
11875 + *[0-9a-f]*: fc 00 24 a6 punpcksb\.h r6,lr:b
11876 + *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t
11877 +
11878 +[0-9a-f]* <packsh_ub>:
11879 + *[0-9a-f]*: fe 0f 24 cf packsh\.ub pc,pc,pc
11880 + *[0-9a-f]*: f8 0c 24 cc packsh\.ub r12,r12,r12
11881 + *[0-9a-f]*: ea 05 24 c5 packsh\.ub r5,r5,r5
11882 + *[0-9a-f]*: e8 04 24 c4 packsh\.ub r4,r4,r4
11883 + *[0-9a-f]*: fc 0e 24 ce packsh\.ub lr,lr,lr
11884 + *[0-9a-f]*: ec 03 24 c3 packsh\.ub r3,r6,r3
11885 + *[0-9a-f]*: e0 03 24 c8 packsh\.ub r8,r0,r3
11886 + *[0-9a-f]*: e6 0e 24 c9 packsh\.ub r9,r3,lr
11887 +
11888 +[0-9a-f]* <packsh_sb>:
11889 + *[0-9a-f]*: fe 0f 24 df packsh\.sb pc,pc,pc
11890 + *[0-9a-f]*: f8 0c 24 dc packsh\.sb r12,r12,r12
11891 + *[0-9a-f]*: ea 05 24 d5 packsh\.sb r5,r5,r5
11892 + *[0-9a-f]*: e8 04 24 d4 packsh\.sb r4,r4,r4
11893 + *[0-9a-f]*: fc 0e 24 de packsh\.sb lr,lr,lr
11894 + *[0-9a-f]*: f0 01 24 d6 packsh\.sb r6,r8,r1
11895 + *[0-9a-f]*: f2 08 24 de packsh\.sb lr,r9,r8
11896 + *[0-9a-f]*: ec 06 24 dd packsh\.sb sp,r6,r6
11897 +
11898 +[0-9a-f]* <andl>:
11899 + *[0-9a-f]*: e0 1f 00 00 andl pc,0x0
11900 + *[0-9a-f]*: e0 1c ff ff andl r12,0xffff
11901 + *[0-9a-f]*: e0 15 80 00 andl r5,0x8000
11902 + *[0-9a-f]*: e0 14 7f ff andl r4,0x7fff
11903 + *[0-9a-f]*: e0 1e 00 01 andl lr,0x1
11904 + *[0-9a-f]*: e0 1f 5a 58 andl pc,0x5a58
11905 + *[0-9a-f]*: e0 18 b8 9e andl r8,0xb89e
11906 + *[0-9a-f]*: e0 17 35 97 andl r7,0x3597
11907 +
11908 +[0-9a-f]* <andl_coh>:
11909 + *[0-9a-f]*: e2 1f 00 00 andl pc,0x0,COH
11910 + *[0-9a-f]*: e2 1c ff ff andl r12,0xffff,COH
11911 + *[0-9a-f]*: e2 15 80 00 andl r5,0x8000,COH
11912 + *[0-9a-f]*: e2 14 7f ff andl r4,0x7fff,COH
11913 + *[0-9a-f]*: e2 1e 00 01 andl lr,0x1,COH
11914 + *[0-9a-f]*: e2 16 58 e1 andl r6,0x58e1,COH
11915 + *[0-9a-f]*: e2 10 9e cd andl r0,0x9ecd,COH
11916 + *[0-9a-f]*: e2 14 bd c4 andl r4,0xbdc4,COH
11917 +
11918 +[0-9a-f]* <andh>:
11919 + *[0-9a-f]*: e4 1f 00 00 andh pc,0x0
11920 + *[0-9a-f]*: e4 1c ff ff andh r12,0xffff
11921 + *[0-9a-f]*: e4 15 80 00 andh r5,0x8000
11922 + *[0-9a-f]*: e4 14 7f ff andh r4,0x7fff
11923 + *[0-9a-f]*: e4 1e 00 01 andh lr,0x1
11924 + *[0-9a-f]*: e4 1c cc 58 andh r12,0xcc58
11925 + *[0-9a-f]*: e4 13 21 e3 andh r3,0x21e3
11926 + *[0-9a-f]*: e4 12 a7 eb andh r2,0xa7eb
11927 +
11928 +[0-9a-f]* <andh_coh>:
11929 + *[0-9a-f]*: e6 1f 00 00 andh pc,0x0,COH
11930 + *[0-9a-f]*: e6 1c ff ff andh r12,0xffff,COH
11931 + *[0-9a-f]*: e6 15 80 00 andh r5,0x8000,COH
11932 + *[0-9a-f]*: e6 14 7f ff andh r4,0x7fff,COH
11933 + *[0-9a-f]*: e6 1e 00 01 andh lr,0x1,COH
11934 + *[0-9a-f]*: e6 1b 86 0d andh r11,0x860d,COH
11935 + *[0-9a-f]*: e6 18 ce f6 andh r8,0xcef6,COH
11936 + *[0-9a-f]*: e6 1a 5c 83 andh r10,0x5c83,COH
11937 +
11938 +[0-9a-f]* <orl>:
11939 + *[0-9a-f]*: e8 1f 00 00 orl pc,0x0
11940 + *[0-9a-f]*: e8 1c ff ff orl r12,0xffff
11941 + *[0-9a-f]*: e8 15 80 00 orl r5,0x8000
11942 + *[0-9a-f]*: e8 14 7f ff orl r4,0x7fff
11943 + *[0-9a-f]*: e8 1e 00 01 orl lr,0x1
11944 + *[0-9a-f]*: e8 1d 41 7e orl sp,0x417e
11945 + *[0-9a-f]*: e8 10 52 bd orl r0,0x52bd
11946 + *[0-9a-f]*: e8 1f ac 47 orl pc,0xac47
11947 +
11948 +[0-9a-f]* <orh>:
11949 + *[0-9a-f]*: ea 1f 00 00 orh pc,0x0
11950 + *[0-9a-f]*: ea 1c ff ff orh r12,0xffff
11951 + *[0-9a-f]*: ea 15 80 00 orh r5,0x8000
11952 + *[0-9a-f]*: ea 14 7f ff orh r4,0x7fff
11953 + *[0-9a-f]*: ea 1e 00 01 orh lr,0x1
11954 + *[0-9a-f]*: ea 18 6e 7d orh r8,0x6e7d
11955 + *[0-9a-f]*: ea 1c 77 1c orh r12,0x771c
11956 + *[0-9a-f]*: ea 11 ea 1a orh r1,0xea1a
11957 +
11958 +[0-9a-f]* <eorl>:
11959 + *[0-9a-f]*: ec 1f 00 00 eorl pc,0x0
11960 + *[0-9a-f]*: ec 1c ff ff eorl r12,0xffff
11961 + *[0-9a-f]*: ec 15 80 00 eorl r5,0x8000
11962 + *[0-9a-f]*: ec 14 7f ff eorl r4,0x7fff
11963 + *[0-9a-f]*: ec 1e 00 01 eorl lr,0x1
11964 + *[0-9a-f]*: ec 14 c7 b9 eorl r4,0xc7b9
11965 + *[0-9a-f]*: ec 16 fb dd eorl r6,0xfbdd
11966 + *[0-9a-f]*: ec 11 51 b1 eorl r1,0x51b1
11967 +
11968 +[0-9a-f]* <eorh>:
11969 + *[0-9a-f]*: ee 1f 00 00 eorh pc,0x0
11970 + *[0-9a-f]*: ee 1c ff ff eorh r12,0xffff
11971 + *[0-9a-f]*: ee 15 80 00 eorh r5,0x8000
11972 + *[0-9a-f]*: ee 14 7f ff eorh r4,0x7fff
11973 + *[0-9a-f]*: ee 1e 00 01 eorh lr,0x1
11974 + *[0-9a-f]*: ee 10 2d d4 eorh r0,0x2dd4
11975 + *[0-9a-f]*: ee 1a 94 b5 eorh r10,0x94b5
11976 + *[0-9a-f]*: ee 19 df 2a eorh r9,0xdf2a
11977 +
11978 +[0-9a-f]* <mcall>:
11979 + *[0-9a-f]*: f0 1f 00 00 mcall [0-9a-f]* <.*>
11980 + *[0-9a-f]*: f0 1c ff ff mcall r12\[-4\]
11981 + *[0-9a-f]*: f0 15 80 00 mcall r5\[-131072\]
11982 + *[0-9a-f]*: f0 14 7f ff mcall r4\[131068\]
11983 + *[0-9a-f]*: f0 1e 00 01 mcall lr\[4\]
11984 + *[0-9a-f]*: f0 1d 3b bf mcall sp\[61180\]
11985 + *[0-9a-f]*: f0 14 dd d2 mcall r4\[-35000\]
11986 + *[0-9a-f]*: f0 10 09 b1 mcall r0\[9924\]
11987 +
11988 +[0-9a-f]* <pref>:
11989 + *[0-9a-f]*: f2 1f 00 00 pref pc\[0\]
11990 + *[0-9a-f]*: f2 1c ff ff pref r12\[-1\]
11991 + *[0-9a-f]*: f2 15 80 00 pref r5\[-32768\]
11992 + *[0-9a-f]*: f2 14 7f ff pref r4\[32767\]
11993 + *[0-9a-f]*: f2 1e 00 01 pref lr\[1\]
11994 + *[0-9a-f]*: f2 17 1e 44 pref r7\[7748\]
11995 + *[0-9a-f]*: f2 17 e1 ed pref r7\[-7699\]
11996 + *[0-9a-f]*: f2 12 9a dc pref r2\[-25892\]
11997 +
11998 +[0-9a-f]* <cache>:
11999 + *[0-9a-f]*: f4 1f 00 00 cache pc\[0\],0x0
12000 + *[0-9a-f]*: f4 1c ff ff cache r12\[-1\],0x1f
12001 + *[0-9a-f]*: f4 15 84 00 cache r5\[-1024\],0x10
12002 + *[0-9a-f]*: f4 14 7b ff cache r4\[1023\],0xf
12003 + *[0-9a-f]*: f4 1e 08 01 cache lr\[1\],0x1
12004 + *[0-9a-f]*: f4 13 8c 3c cache r3\[-964\],0x11
12005 + *[0-9a-f]*: f4 14 b6 89 cache r4\[-375\],0x16
12006 + *[0-9a-f]*: f4 13 8c 88 cache r3\[-888\],0x11
12007 +
12008 +[0-9a-f]* <sub4>:
12009 + *[0-9a-f]*: 20 0f sub pc,0
12010 + *[0-9a-f]*: 2f fc sub r12,-1
12011 + *[0-9a-f]*: f0 25 00 00 sub r5,-1048576
12012 + *[0-9a-f]*: ee 34 ff ff sub r4,1048575
12013 + *[0-9a-f]*: 20 1e sub lr,1
12014 + *[0-9a-f]*: f6 22 8d 6c sub r2,-619156
12015 + *[0-9a-f]*: e6 3e 0a cd sub lr,461517
12016 + *[0-9a-f]*: fc 38 2d 25 sub r8,-185051
12017 +
12018 +[0-9a-f]* <cp3>:
12019 + *[0-9a-f]*: 58 0f cp.w pc,0
12020 + *[0-9a-f]*: 5b fc cp.w r12,-1
12021 + *[0-9a-f]*: f0 45 00 00 cp.w r5,-1048576
12022 + *[0-9a-f]*: ee 54 ff ff cp.w r4,1048575
12023 + *[0-9a-f]*: 58 1e cp.w lr,1
12024 + *[0-9a-f]*: e0 51 e4 ae cp.w r1,124078
12025 + *[0-9a-f]*: fa 40 37 e3 cp.w r0,-378909
12026 + *[0-9a-f]*: fc 44 4a 14 cp.w r4,-243180
12027 +
12028 +[0-9a-f]* <mov2>:
12029 + *[0-9a-f]*: 30 0f mov pc,0
12030 + *[0-9a-f]*: 3f fc mov r12,-1
12031 + *[0-9a-f]*: f0 65 00 00 mov r5,-1048576
12032 + *[0-9a-f]*: ee 74 ff ff mov r4,1048575
12033 + *[0-9a-f]*: 30 1e mov lr,1
12034 + *[0-9a-f]*: fa 75 29 a3 mov r5,-317021
12035 + *[0-9a-f]*: f4 6d 91 94 mov sp,-749164
12036 + *[0-9a-f]*: ee 65 58 93 mov r5,940179
12037 +
12038 +[0-9a-f]* <brc2>:
12039 + *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*>
12040 + *[0-9a-f]*: fe 9f ff ff bral [0-9a-f]* <.*>
12041 + *[0-9a-f]*: f0 88 00 00 brls [0-9a-f]* <.*>
12042 + *[0-9a-f]*: ee 97 ff ff brpl [0-9a-f]* <.*>
12043 + *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*>
12044 + *[0-9a-f]*: f2 8b 4a 4d brhi [0-9a-f]* <.*>
12045 + *[0-9a-f]*: ea 8e 14 cc brqs [0-9a-f]* <.*>
12046 + *[0-9a-f]*: fa 98 98 33 brls [0-9a-f]* <.*>
12047 +
12048 +[0-9a-f]* <rcall2>:
12049 + *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*>
12050 + *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*>
12051 + *[0-9a-f]*: f0 a0 00 00 rcall [0-9a-f]* <.*>
12052 + *[0-9a-f]*: ee b0 ff ff rcall [0-9a-f]* <.*>
12053 + *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*>
12054 + *[0-9a-f]*: e2 b0 ca 5a rcall [0-9a-f]* <.*>
12055 + *[0-9a-f]*: e8 a0 47 52 rcall [0-9a-f]* <.*>
12056 + *[0-9a-f]*: fe b0 fd ef rcall [0-9a-f]* <.*>
12057 +
12058 +[0-9a-f]* <sub5>:
12059 + *[0-9a-f]*: fe cf 00 00 sub pc,pc,0
12060 + *[0-9a-f]*: f8 cc ff ff sub r12,r12,-1
12061 + *[0-9a-f]*: ea c5 80 00 sub r5,r5,-32768
12062 + *[0-9a-f]*: e8 c4 7f ff sub r4,r4,32767
12063 + *[0-9a-f]*: fc ce 00 01 sub lr,lr,1
12064 + *[0-9a-f]*: fe cf ce 38 sub pc,pc,-12744
12065 + *[0-9a-f]*: ee c7 95 1b sub r7,r7,-27365
12066 + *[0-9a-f]*: f2 c2 bc 32 sub r2,r9,-17358
12067 +
12068 +[0-9a-f]* <satsub_w2>:
12069 + *[0-9a-f]*: fe df 00 00 satsub\.w pc,pc,0
12070 + *[0-9a-f]*: f8 dc ff ff satsub\.w r12,r12,-1
12071 + *[0-9a-f]*: ea d5 80 00 satsub\.w r5,r5,-32768
12072 + *[0-9a-f]*: e8 d4 7f ff satsub\.w r4,r4,32767
12073 + *[0-9a-f]*: fc de 00 01 satsub\.w lr,lr,1
12074 + *[0-9a-f]*: fc d2 f8 29 satsub\.w r2,lr,-2007
12075 + *[0-9a-f]*: f8 d7 fc f0 satsub\.w r7,r12,-784
12076 + *[0-9a-f]*: ee d4 5a 8c satsub\.w r4,r7,23180
12077 +
12078 +[0-9a-f]* <ld_d4>:
12079 + *[0-9a-f]*: fe e0 00 00 ld\.d r0,pc\[0\]
12080 + *[0-9a-f]*: f8 ee ff ff ld\.d lr,r12\[-1\]
12081 + *[0-9a-f]*: ea e8 80 00 ld\.d r8,r5\[-32768\]
12082 + *[0-9a-f]*: e8 e6 7f ff ld\.d r6,r4\[32767\]
12083 + *[0-9a-f]*: fc e2 00 01 ld\.d r2,lr\[1\]
12084 + *[0-9a-f]*: f6 ee 39 c0 ld\.d lr,r11\[14784\]
12085 + *[0-9a-f]*: f2 e6 b6 27 ld\.d r6,r9\[-18905\]
12086 + *[0-9a-f]*: e6 e2 e7 2d ld\.d r2,r3\[-6355\]
12087 +
12088 +[0-9a-f]* <ld_w4>:
12089 + *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\]
12090 + *[0-9a-f]*: f8 fc ff ff ld\.w r12,r12\[-1\]
12091 + *[0-9a-f]*: ea f5 80 00 ld\.w r5,r5\[-32768\]
12092 + *[0-9a-f]*: e8 f4 7f ff ld\.w r4,r4\[32767\]
12093 + *[0-9a-f]*: fc fe 00 01 ld\.w lr,lr\[1\]
12094 + *[0-9a-f]*: f8 f0 a9 8b ld\.w r0,r12\[-22133\]
12095 + *[0-9a-f]*: fe fd af d7 ld\.w sp,pc\[-20521\]
12096 + *[0-9a-f]*: d7 03 nop
12097 +
12098 +[0-9a-f]* <ld_sh4>:
12099 + *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\]
12100 + *[0-9a-f]*: f9 0c ff ff ld\.sh r12,r12\[-1\]
12101 + *[0-9a-f]*: eb 05 80 00 ld\.sh r5,r5\[-32768\]
12102 + *[0-9a-f]*: e9 04 7f ff ld\.sh r4,r4\[32767\]
12103 + *[0-9a-f]*: fd 0e 00 01 ld\.sh lr,lr\[1\]
12104 + *[0-9a-f]*: f5 06 78 d2 ld\.sh r6,r10\[30930\]
12105 + *[0-9a-f]*: f5 06 55 d5 ld\.sh r6,r10\[21973\]
12106 + *[0-9a-f]*: d7 03 nop
12107 +
12108 +[0-9a-f]* <ld_uh4>:
12109 + *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\]
12110 + *[0-9a-f]*: f9 1c ff ff ld\.uh r12,r12\[-1\]
12111 + *[0-9a-f]*: eb 15 80 00 ld\.uh r5,r5\[-32768\]
12112 + *[0-9a-f]*: e9 14 7f ff ld\.uh r4,r4\[32767\]
12113 + *[0-9a-f]*: fd 1e 00 01 ld\.uh lr,lr\[1\]
12114 + *[0-9a-f]*: f3 11 cb d6 ld\.uh r1,r9\[-13354\]
12115 + *[0-9a-f]*: f7 1e 53 59 ld\.uh lr,r11\[21337\]
12116 + *[0-9a-f]*: d7 03 nop
12117 +
12118 +[0-9a-f]* <ld_sb1>:
12119 + *[0-9a-f]*: ff 2f 00 00 ld\.sb pc,pc\[0\]
12120 + *[0-9a-f]*: f9 2c ff ff ld\.sb r12,r12\[-1\]
12121 + *[0-9a-f]*: eb 25 80 00 ld\.sb r5,r5\[-32768\]
12122 + *[0-9a-f]*: e9 24 7f ff ld\.sb r4,r4\[32767\]
12123 + *[0-9a-f]*: fd 2e 00 01 ld\.sb lr,lr\[1\]
12124 + *[0-9a-f]*: fb 27 90 09 ld\.sb r7,sp\[-28663\]
12125 + *[0-9a-f]*: e3 22 e9 09 ld\.sb r2,r1\[-5879\]
12126 + *[0-9a-f]*: e7 2c 49 2e ld\.sb r12,r3\[18734\]
12127 +
12128 +[0-9a-f]* <ld_ub4>:
12129 + *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\]
12130 + *[0-9a-f]*: f9 3c ff ff ld\.ub r12,r12\[-1\]
12131 + *[0-9a-f]*: eb 35 80 00 ld\.ub r5,r5\[-32768\]
12132 + *[0-9a-f]*: e9 34 7f ff ld\.ub r4,r4\[32767\]
12133 + *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\]
12134 + *[0-9a-f]*: e9 3f 20 55 ld\.ub pc,r4\[8277\]
12135 + *[0-9a-f]*: f9 35 4a e4 ld\.ub r5,r12\[19172\]
12136 + *[0-9a-f]*: fd 3a 66 eb ld\.ub r10,lr\[26347\]
12137 +
12138 +[0-9a-f]* <st_d4>:
12139 + *[0-9a-f]*: fe e1 00 00 st\.d pc\[0\],r0
12140 + *[0-9a-f]*: f8 ef ff ff st\.d r12\[-1\],lr
12141 + *[0-9a-f]*: ea e9 80 00 st\.d r5\[-32768\],r8
12142 + *[0-9a-f]*: e8 e7 7f ff st\.d r4\[32767\],r6
12143 + *[0-9a-f]*: fc e3 00 01 st\.d lr\[1\],r2
12144 + *[0-9a-f]*: ea eb 33 90 st\.d r5\[13200\],r10
12145 + *[0-9a-f]*: ea eb 24 88 st\.d r5\[9352\],r10
12146 + *[0-9a-f]*: ea e5 7e 75 st\.d r5\[32373\],r4
12147 +
12148 +[0-9a-f]* <st_w4>:
12149 + *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc
12150 + *[0-9a-f]*: f9 4c ff ff st\.w r12\[-1\],r12
12151 + *[0-9a-f]*: eb 45 80 00 st\.w r5\[-32768\],r5
12152 + *[0-9a-f]*: e9 44 7f ff st\.w r4\[32767\],r4
12153 + *[0-9a-f]*: fd 4e 00 01 st\.w lr\[1\],lr
12154 + *[0-9a-f]*: fb 47 17 f8 st\.w sp\[6136\],r7
12155 + *[0-9a-f]*: ed 4c 69 cf st\.w r6\[27087\],r12
12156 + *[0-9a-f]*: d7 03 nop
12157 +
12158 +[0-9a-f]* <st_h4>:
12159 + *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc
12160 + *[0-9a-f]*: f9 5c ff ff st\.h r12\[-1\],r12
12161 + *[0-9a-f]*: eb 55 80 00 st\.h r5\[-32768\],r5
12162 + *[0-9a-f]*: e9 54 7f ff st\.h r4\[32767\],r4
12163 + *[0-9a-f]*: fd 5e 00 01 st\.h lr\[1\],lr
12164 + *[0-9a-f]*: e9 57 d9 16 st\.h r4\[-9962\],r7
12165 + *[0-9a-f]*: f3 53 c0 86 st\.h r9\[-16250\],r3
12166 + *[0-9a-f]*: d7 03 nop
12167 +
12168 +[0-9a-f]* <st_b4>:
12169 + *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc
12170 + *[0-9a-f]*: f9 6c ff ff st\.b r12\[-1\],r12
12171 + *[0-9a-f]*: eb 65 80 00 st\.b r5\[-32768\],r5
12172 + *[0-9a-f]*: e9 64 7f ff st\.b r4\[32767\],r4
12173 + *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr
12174 + *[0-9a-f]*: f9 66 75 96 st\.b r12\[30102\],r6
12175 + *[0-9a-f]*: eb 61 71 31 st\.b r5\[28977\],r1
12176 + *[0-9a-f]*: e1 61 15 5e st\.b r0\[5470\],r1
12177 +
12178 +[0-9a-f]* <mfsr>:
12179 + *[0-9a-f]*: e1 bf 00 00 mfsr pc,0x0
12180 + *[0-9a-f]*: e1 bc 00 ff mfsr r12,0x3fc
12181 + *[0-9a-f]*: e1 b5 00 80 mfsr r5,0x200
12182 + *[0-9a-f]*: e1 b4 00 7f mfsr r4,0x1fc
12183 + *[0-9a-f]*: e1 be 00 01 mfsr lr,0x4
12184 + *[0-9a-f]*: e1 b2 00 ae mfsr r2,0x2b8
12185 + *[0-9a-f]*: e1 b4 00 41 mfsr r4,0x104
12186 + *[0-9a-f]*: e1 ba 00 fe mfsr r10,0x3f8
12187 +
12188 +[0-9a-f]* <mtsr>:
12189 + *[0-9a-f]*: e3 bf 00 00 mtsr 0x0,pc
12190 + *[0-9a-f]*: e3 bc 00 ff mtsr 0x3fc,r12
12191 + *[0-9a-f]*: e3 b5 00 80 mtsr 0x200,r5
12192 + *[0-9a-f]*: e3 b4 00 7f mtsr 0x1fc,r4
12193 + *[0-9a-f]*: e3 be 00 01 mtsr 0x4,lr
12194 + *[0-9a-f]*: e3 ba 00 38 mtsr 0xe0,r10
12195 + *[0-9a-f]*: e3 bc 00 d1 mtsr 0x344,r12
12196 + *[0-9a-f]*: e3 b9 00 4c mtsr 0x130,r9
12197 +
12198 +[0-9a-f]* <mfdr>:
12199 + *[0-9a-f]*: e5 bf 00 00 mfdr pc,0x0
12200 + *[0-9a-f]*: e5 bc 00 ff mfdr r12,0x3fc
12201 + *[0-9a-f]*: e5 b5 00 80 mfdr r5,0x200
12202 + *[0-9a-f]*: e5 b4 00 7f mfdr r4,0x1fc
12203 + *[0-9a-f]*: e5 be 00 01 mfdr lr,0x4
12204 + *[0-9a-f]*: e5 b6 00 e9 mfdr r6,0x3a4
12205 + *[0-9a-f]*: e5 b5 00 09 mfdr r5,0x24
12206 + *[0-9a-f]*: e5 b9 00 4b mfdr r9,0x12c
12207 +
12208 +[0-9a-f]* <mtdr>:
12209 + *[0-9a-f]*: e7 bf 00 00 mtdr 0x0,pc
12210 + *[0-9a-f]*: e7 bc 00 ff mtdr 0x3fc,r12
12211 + *[0-9a-f]*: e7 b5 00 80 mtdr 0x200,r5
12212 + *[0-9a-f]*: e7 b4 00 7f mtdr 0x1fc,r4
12213 + *[0-9a-f]*: e7 be 00 01 mtdr 0x4,lr
12214 + *[0-9a-f]*: e7 b8 00 2d mtdr 0xb4,r8
12215 + *[0-9a-f]*: e7 ba 00 b4 mtdr 0x2d0,r10
12216 + *[0-9a-f]*: e7 be 00 66 mtdr 0x198,lr
12217 +
12218 +[0-9a-f]* <sleep>:
12219 + *[0-9a-f]*: e9 b0 00 00 sleep 0x0
12220 + *[0-9a-f]*: e9 b0 00 ff sleep 0xff
12221 + *[0-9a-f]*: e9 b0 00 80 sleep 0x80
12222 + *[0-9a-f]*: e9 b0 00 7f sleep 0x7f
12223 + *[0-9a-f]*: e9 b0 00 01 sleep 0x1
12224 + *[0-9a-f]*: e9 b0 00 fe sleep 0xfe
12225 + *[0-9a-f]*: e9 b0 00 0f sleep 0xf
12226 + *[0-9a-f]*: e9 b0 00 2b sleep 0x2b
12227 +
12228 +[0-9a-f]* <sync>:
12229 + *[0-9a-f]*: eb b0 00 00 sync 0x0
12230 + *[0-9a-f]*: eb b0 00 ff sync 0xff
12231 + *[0-9a-f]*: eb b0 00 80 sync 0x80
12232 + *[0-9a-f]*: eb b0 00 7f sync 0x7f
12233 + *[0-9a-f]*: eb b0 00 01 sync 0x1
12234 + *[0-9a-f]*: eb b0 00 a6 sync 0xa6
12235 + *[0-9a-f]*: eb b0 00 e6 sync 0xe6
12236 + *[0-9a-f]*: eb b0 00 b4 sync 0xb4
12237 +
12238 +[0-9a-f]* <bld>:
12239 + *[0-9a-f]*: ed bf 00 00 bld pc,0x0
12240 + *[0-9a-f]*: ed bc 00 1f bld r12,0x1f
12241 + *[0-9a-f]*: ed b5 00 10 bld r5,0x10
12242 + *[0-9a-f]*: ed b4 00 0f bld r4,0xf
12243 + *[0-9a-f]*: ed be 00 01 bld lr,0x1
12244 + *[0-9a-f]*: ed b9 00 0f bld r9,0xf
12245 + *[0-9a-f]*: ed b0 00 04 bld r0,0x4
12246 + *[0-9a-f]*: ed be 00 1a bld lr,0x1a
12247 +
12248 +[0-9a-f]* <bst>:
12249 + *[0-9a-f]*: ef bf 00 00 bst pc,0x0
12250 + *[0-9a-f]*: ef bc 00 1f bst r12,0x1f
12251 + *[0-9a-f]*: ef b5 00 10 bst r5,0x10
12252 + *[0-9a-f]*: ef b4 00 0f bst r4,0xf
12253 + *[0-9a-f]*: ef be 00 01 bst lr,0x1
12254 + *[0-9a-f]*: ef ba 00 1c bst r10,0x1c
12255 + *[0-9a-f]*: ef b0 00 03 bst r0,0x3
12256 + *[0-9a-f]*: ef bd 00 02 bst sp,0x2
12257 +
12258 +[0-9a-f]* <sats>:
12259 + *[0-9a-f]*: f1 bf 00 00 sats pc,0x0
12260 + *[0-9a-f]*: f1 bc 03 ff sats r12>>0x1f,0x1f
12261 + *[0-9a-f]*: f1 b5 02 10 sats r5>>0x10,0x10
12262 + *[0-9a-f]*: f1 b4 01 ef sats r4>>0xf,0xf
12263 + *[0-9a-f]*: f1 be 00 21 sats lr>>0x1,0x1
12264 + *[0-9a-f]*: f1 ba 02 63 sats r10>>0x3,0x13
12265 + *[0-9a-f]*: f1 ba 03 42 sats r10>>0x2,0x1a
12266 + *[0-9a-f]*: f1 b1 00 34 sats r1>>0x14,0x1
12267 +
12268 +[0-9a-f]* <satu>:
12269 + *[0-9a-f]*: f1 bf 04 00 satu pc,0x0
12270 + *[0-9a-f]*: f1 bc 07 ff satu r12>>0x1f,0x1f
12271 + *[0-9a-f]*: f1 b5 06 10 satu r5>>0x10,0x10
12272 + *[0-9a-f]*: f1 b4 05 ef satu r4>>0xf,0xf
12273 + *[0-9a-f]*: f1 be 04 21 satu lr>>0x1,0x1
12274 + *[0-9a-f]*: f1 bf 04 e5 satu pc>>0x5,0x7
12275 + *[0-9a-f]*: f1 b7 04 a5 satu r7>>0x5,0x5
12276 + *[0-9a-f]*: f1 b2 06 7a satu r2>>0x1a,0x13
12277 +
12278 +[0-9a-f]* <satrnds>:
12279 + *[0-9a-f]*: f3 bf 00 00 satrnds pc,0x0
12280 + *[0-9a-f]*: f3 bc 03 ff satrnds r12>>0x1f,0x1f
12281 + *[0-9a-f]*: f3 b5 02 10 satrnds r5>>0x10,0x10
12282 + *[0-9a-f]*: f3 b4 01 ef satrnds r4>>0xf,0xf
12283 + *[0-9a-f]*: f3 be 00 21 satrnds lr>>0x1,0x1
12284 + *[0-9a-f]*: f3 b0 02 75 satrnds r0>>0x15,0x13
12285 + *[0-9a-f]*: f3 bd 00 40 satrnds sp,0x2
12286 + *[0-9a-f]*: f3 b7 03 a6 satrnds r7>>0x6,0x1d
12287 +
12288 +[0-9a-f]* <satrndu>:
12289 + *[0-9a-f]*: f3 bf 04 00 satrndu pc,0x0
12290 + *[0-9a-f]*: f3 bc 07 ff satrndu r12>>0x1f,0x1f
12291 + *[0-9a-f]*: f3 b5 06 10 satrndu r5>>0x10,0x10
12292 + *[0-9a-f]*: f3 b4 05 ef satrndu r4>>0xf,0xf
12293 + *[0-9a-f]*: f3 be 04 21 satrndu lr>>0x1,0x1
12294 + *[0-9a-f]*: f3 bc 07 40 satrndu r12,0x1a
12295 + *[0-9a-f]*: f3 b4 04 75 satrndu r4>>0x15,0x3
12296 + *[0-9a-f]*: f3 ba 06 03 satrndu r10>>0x3,0x10
12297 +
12298 +[0-9a-f]* <subfc>:
12299 + *[0-9a-f]*: f5 bf 00 00 subfeq pc,0
12300 + *[0-9a-f]*: f5 bc 0f ff subfal r12,-1
12301 + *[0-9a-f]*: f5 b5 08 80 subfls r5,-128
12302 + *[0-9a-f]*: f5 b4 07 7f subfpl r4,127
12303 + *[0-9a-f]*: f5 be 01 01 subfne lr,1
12304 + *[0-9a-f]*: f5 ba 08 08 subfls r10,8
12305 + *[0-9a-f]*: f5 bb 0d 63 subfvc r11,99
12306 + *[0-9a-f]*: f5 b2 0c 49 subfvs r2,73
12307 +
12308 +[0-9a-f]* <subc>:
12309 + *[0-9a-f]*: f7 bf 00 00 subeq pc,0
12310 + *[0-9a-f]*: f7 bc 0f ff subal r12,-1
12311 + *[0-9a-f]*: f7 b5 08 80 subls r5,-128
12312 + *[0-9a-f]*: f7 b4 07 7f subpl r4,127
12313 + *[0-9a-f]*: f7 be 01 01 subne lr,1
12314 + *[0-9a-f]*: f7 bc 08 76 subls r12,118
12315 + *[0-9a-f]*: f7 be 0d f4 subvc lr,-12
12316 + *[0-9a-f]*: f7 b4 06 f3 submi r4,-13
12317 +
12318 +[0-9a-f]* <movc2>:
12319 + *[0-9a-f]*: f9 bf 00 00 moveq pc,0
12320 + *[0-9a-f]*: f9 bc 0f ff moval r12,-1
12321 + *[0-9a-f]*: f9 b5 08 80 movls r5,-128
12322 + *[0-9a-f]*: f9 b4 07 7f movpl r4,127
12323 + *[0-9a-f]*: f9 be 01 01 movne lr,1
12324 + *[0-9a-f]*: f9 b3 05 86 movlt r3,-122
12325 + *[0-9a-f]*: f9 b8 0d 02 movvc r8,2
12326 + *[0-9a-f]*: f9 b7 01 91 movne r7,-111
12327 +
12328 +[0-9a-f]* <cp_b>:
12329 + *[0-9a-f]*: e0 0f 18 00 cp\.b pc,r0
12330 + *[0-9a-f]*: fe 00 18 00 cp\.b r0,pc
12331 + *[0-9a-f]*: f0 07 18 00 cp\.b r7,r8
12332 + *[0-9a-f]*: ee 08 18 00 cp\.b r8,r7
12333 +
12334 +[0-9a-f]* <cp_h>:
12335 + *[0-9a-f]*: e0 0f 19 00 cp\.h pc,r0
12336 + *[0-9a-f]*: fe 00 19 00 cp\.h r0,pc
12337 + *[0-9a-f]*: f0 07 19 00 cp\.h r7,r8
12338 + *[0-9a-f]*: ee 08 19 00 cp\.h r8,r7
12339 +
12340 +[0-9a-f]* <ldm>:
12341 + *[0-9a-f]*: e1 cf 00 7e ldm pc,r1-r6
12342 + *[0-9a-f]*: e1 cc ff ff ldm r12,r0-pc
12343 + *[0-9a-f]*: e1 c5 80 00 ldm r5,pc
12344 + *[0-9a-f]*: e1 c4 7f ff ldm r4,r0-lr
12345 + *[0-9a-f]*: e1 ce 00 01 ldm lr,r0
12346 + *[0-9a-f]*: e1 c9 40 22 ldm r9,r1,r5,lr
12347 + *[0-9a-f]*: e1 cb 81 ec ldm r11,r2-r3,r5-r8,pc
12348 + *[0-9a-f]*: e1 c6 a2 09 ldm r6,r0,r3,r9,sp,pc
12349 +
12350 +[0-9a-f]* <ldm_pu>:
12351 + *[0-9a-f]*: e3 cf 03 c0 ldm pc\+\+,r6-r9
12352 + *[0-9a-f]*: e3 cc ff ff ldm r12\+\+,r0-pc
12353 + *[0-9a-f]*: e3 c5 80 00 ldm r5\+\+,pc
12354 + *[0-9a-f]*: e3 c4 7f ff ldm r4\+\+,r0-lr
12355 + *[0-9a-f]*: e3 ce 00 01 ldm lr\+\+,r0
12356 + *[0-9a-f]*: e3 cc d5 38 ldm r12\+\+,r3-r5,r8,r10,r12,lr-pc
12357 + *[0-9a-f]*: e3 ca c0 74 ldm r10\+\+,r2,r4-r6,lr-pc
12358 + *[0-9a-f]*: e3 c6 7e 1a ldm r6\+\+,r1,r3-r4,r9-lr
12359 +
12360 +[0-9a-f]* <ldmts>:
12361 + *[0-9a-f]*: e5 cf 01 80 ldmts pc,r7-r8
12362 + *[0-9a-f]*: e5 cc ff ff ldmts r12,r0-pc
12363 + *[0-9a-f]*: e5 c5 80 00 ldmts r5,pc
12364 + *[0-9a-f]*: e5 c4 7f ff ldmts r4,r0-lr
12365 + *[0-9a-f]*: e5 ce 00 01 ldmts lr,r0
12366 + *[0-9a-f]*: e5 c0 18 06 ldmts r0,r1-r2,r11-r12
12367 + *[0-9a-f]*: e5 ce 61 97 ldmts lr,r0-r2,r4,r7-r8,sp-lr
12368 + *[0-9a-f]*: e5 cc c2 3b ldmts r12,r0-r1,r3-r5,r9,lr-pc
12369 +
12370 +[0-9a-f]* <ldmts_pu>:
12371 + *[0-9a-f]*: e7 cf 02 00 ldmts pc\+\+,r9
12372 + *[0-9a-f]*: e7 cc ff ff ldmts r12\+\+,r0-pc
12373 + *[0-9a-f]*: e7 c5 80 00 ldmts r5\+\+,pc
12374 + *[0-9a-f]*: e7 c4 7f ff ldmts r4\+\+,r0-lr
12375 + *[0-9a-f]*: e7 ce 00 01 ldmts lr\+\+,r0
12376 + *[0-9a-f]*: e7 cd 0a bd ldmts sp\+\+,r0,r2-r5,r7,r9,r11
12377 + *[0-9a-f]*: e7 c5 0c 8e ldmts r5\+\+,r1-r3,r7,r10-r11
12378 + *[0-9a-f]*: e7 c8 a1 9c ldmts r8\+\+,r2-r4,r7-r8,sp,pc
12379 +
12380 +[0-9a-f]* <stm>:
12381 + *[0-9a-f]*: e9 cf 00 80 stm pc,r7
12382 + *[0-9a-f]*: e9 cc ff ff stm r12,r0-pc
12383 + *[0-9a-f]*: e9 c5 80 00 stm r5,pc
12384 + *[0-9a-f]*: e9 c4 7f ff stm r4,r0-lr
12385 + *[0-9a-f]*: e9 ce 00 01 stm lr,r0
12386 + *[0-9a-f]*: e9 cd 49 2c stm sp,r2-r3,r5,r8,r11,lr
12387 + *[0-9a-f]*: e9 c4 4c 5f stm r4,r0-r4,r6,r10-r11,lr
12388 + *[0-9a-f]*: e9 c9 f2 22 stm r9,r1,r5,r9,r12-pc
12389 +
12390 +[0-9a-f]* <stm_pu>:
12391 + *[0-9a-f]*: eb cf 00 70 stm --pc,r4-r6
12392 + *[0-9a-f]*: eb cc ff ff stm --r12,r0-pc
12393 + *[0-9a-f]*: eb c5 80 00 stm --r5,pc
12394 + *[0-9a-f]*: eb c4 7f ff stm --r4,r0-lr
12395 + *[0-9a-f]*: eb ce 00 01 stm --lr,r0
12396 + *[0-9a-f]*: eb cb fb f1 stm --r11,r0,r4-r9,r11-pc
12397 + *[0-9a-f]*: eb cb 56 09 stm --r11,r0,r3,r9-r10,r12,lr
12398 + *[0-9a-f]*: eb c6 63 04 stm --r6,r2,r8-r9,sp-lr
12399 +
12400 +[0-9a-f]* <stmts>:
12401 + *[0-9a-f]*: ed cf 01 00 stmts pc,r8
12402 + *[0-9a-f]*: ed cc ff ff stmts r12,r0-pc
12403 + *[0-9a-f]*: ed c5 80 00 stmts r5,pc
12404 + *[0-9a-f]*: ed c4 7f ff stmts r4,r0-lr
12405 + *[0-9a-f]*: ed ce 00 01 stmts lr,r0
12406 + *[0-9a-f]*: ed c1 c6 5b stmts r1,r0-r1,r3-r4,r6,r9-r10,lr-pc
12407 + *[0-9a-f]*: ed c3 1d c1 stmts r3,r0,r6-r8,r10-r12
12408 + *[0-9a-f]*: ed cb d6 d1 stmts r11,r0,r4,r6-r7,r9-r10,r12,lr-pc
12409 +
12410 +[0-9a-f]* <stmts_pu>:
12411 + *[0-9a-f]*: ef cf 01 c0 stmts --pc,r6-r8
12412 + *[0-9a-f]*: ef cc ff ff stmts --r12,r0-pc
12413 + *[0-9a-f]*: ef c5 80 00 stmts --r5,pc
12414 + *[0-9a-f]*: ef c4 7f ff stmts --r4,r0-lr
12415 + *[0-9a-f]*: ef ce 00 01 stmts --lr,r0
12416 + *[0-9a-f]*: ef c2 36 19 stmts --r2,r0,r3-r4,r9-r10,r12-sp
12417 + *[0-9a-f]*: ef c3 c0 03 stmts --r3,r0-r1,lr-pc
12418 + *[0-9a-f]*: ef c0 44 7d stmts --r0,r0,r2-r6,r10,lr
12419 +
12420 +[0-9a-f]* <ldins_h>:
12421 + *[0-9a-f]*: ff df 00 00 ldins\.h pc:b,pc\[0\]
12422 + *[0-9a-f]*: f9 dc 1f ff ldins\.h r12:t,r12\[-2\]
12423 + *[0-9a-f]*: eb d5 18 00 ldins\.h r5:t,r5\[-4096\]
12424 + *[0-9a-f]*: e9 d4 07 ff ldins\.h r4:b,r4\[4094\]
12425 + *[0-9a-f]*: fd de 10 01 ldins\.h lr:t,lr\[2\]
12426 + *[0-9a-f]*: fd d0 13 c5 ldins\.h r0:t,lr\[1930\]
12427 + *[0-9a-f]*: ef d3 0e f5 ldins\.h r3:b,r7\[-534\]
12428 + *[0-9a-f]*: f9 d2 0b 9a ldins\.h r2:b,r12\[-2252\]
12429 +
12430 +[0-9a-f]* <ldins_b>:
12431 + *[0-9a-f]*: ff df 40 00 ldins\.b pc:b,pc\[0\]
12432 + *[0-9a-f]*: f9 dc 7f ff ldins\.b r12:t,r12\[-1\]
12433 + *[0-9a-f]*: eb d5 68 00 ldins\.b r5:u,r5\[-2048\]
12434 + *[0-9a-f]*: e9 d4 57 ff ldins\.b r4:l,r4\[2047\]
12435 + *[0-9a-f]*: fd de 50 01 ldins\.b lr:l,lr\[1\]
12436 + *[0-9a-f]*: e9 d6 7d 6a ldins\.b r6:t,r4\[-662\]
12437 + *[0-9a-f]*: e3 d5 4f 69 ldins\.b r5:b,r1\[-151\]
12438 + *[0-9a-f]*: f7 da 78 7d ldins\.b r10:t,r11\[-1923\]
12439 +
12440 +[0-9a-f]* <ldswp_sh>:
12441 + *[0-9a-f]*: ff df 20 00 ldswp\.sh pc,pc\[0\]
12442 + *[0-9a-f]*: f9 dc 2f ff ldswp\.sh r12,r12\[-2\]
12443 + *[0-9a-f]*: eb d5 28 00 ldswp\.sh r5,r5\[-4096\]
12444 + *[0-9a-f]*: e9 d4 27 ff ldswp\.sh r4,r4\[4094\]
12445 + *[0-9a-f]*: fd de 20 01 ldswp\.sh lr,lr\[2\]
12446 + *[0-9a-f]*: f5 d9 27 84 ldswp\.sh r9,r10\[3848\]
12447 + *[0-9a-f]*: f9 d4 2c 04 ldswp\.sh r4,r12\[-2040\]
12448 + *[0-9a-f]*: e5 da 26 08 ldswp\.sh r10,r2\[3088\]
12449 +
12450 +[0-9a-f]* <ldswp_uh>:
12451 + *[0-9a-f]*: ff df 30 00 ldswp\.uh pc,pc\[0\]
12452 + *[0-9a-f]*: f9 dc 3f ff ldswp\.uh r12,r12\[-2\]
12453 + *[0-9a-f]*: eb d5 38 00 ldswp\.uh r5,r5\[-4096\]
12454 + *[0-9a-f]*: e9 d4 37 ff ldswp\.uh r4,r4\[4094\]
12455 + *[0-9a-f]*: fd de 30 01 ldswp\.uh lr,lr\[2\]
12456 + *[0-9a-f]*: f3 d4 37 46 ldswp\.uh r4,r9\[3724\]
12457 + *[0-9a-f]*: fb de 3c bc ldswp\.uh lr,sp\[-1672\]
12458 + *[0-9a-f]*: f9 d8 38 7d ldswp\.uh r8,r12\[-3846\]
12459 +
12460 +[0-9a-f]* <ldswp_w>:
12461 + *[0-9a-f]*: ff df 80 00 ldswp\.w pc,pc\[0\]
12462 + *[0-9a-f]*: f9 dc 8f ff ldswp\.w r12,r12\[-4\]
12463 + *[0-9a-f]*: eb d5 88 00 ldswp\.w r5,r5\[-8192\]
12464 + *[0-9a-f]*: e9 d4 87 ff ldswp\.w r4,r4\[8188\]
12465 + *[0-9a-f]*: fd de 80 01 ldswp\.w lr,lr\[4\]
12466 + *[0-9a-f]*: ef dd 81 d1 ldswp\.w sp,r7\[1860\]
12467 + *[0-9a-f]*: eb df 8c c1 ldswp\.w pc,r5\[-3324\]
12468 + *[0-9a-f]*: f5 dc 8c c8 ldswp\.w r12,r10\[-3296\]
12469 +
12470 +[0-9a-f]* <stswp_h>:
12471 + *[0-9a-f]*: ff df 90 00 stswp\.h pc\[0\],pc
12472 + *[0-9a-f]*: f9 dc 9f ff stswp\.h r12\[-2\],r12
12473 + *[0-9a-f]*: eb d5 98 00 stswp\.h r5\[-4096\],r5
12474 + *[0-9a-f]*: e9 d4 97 ff stswp\.h r4\[4094\],r4
12475 + *[0-9a-f]*: fd de 90 01 stswp\.h lr\[2\],lr
12476 + *[0-9a-f]*: ef da 90 20 stswp\.h r7\[64\],r10
12477 + *[0-9a-f]*: f5 d2 95 e8 stswp\.h r10\[3024\],r2
12478 + *[0-9a-f]*: e1 da 9b 74 stswp\.h r0\[-2328\],r10
12479 +
12480 +[0-9a-f]* <stswp_w>:
12481 + *[0-9a-f]*: ff df a0 00 stswp\.w pc\[0\],pc
12482 + *[0-9a-f]*: f9 dc af ff stswp\.w r12\[-4\],r12
12483 + *[0-9a-f]*: eb d5 a8 00 stswp\.w r5\[-8192\],r5
12484 + *[0-9a-f]*: e9 d4 a7 ff stswp\.w r4\[8188\],r4
12485 + *[0-9a-f]*: fd de a0 01 stswp\.w lr\[4\],lr
12486 + *[0-9a-f]*: ff d8 a1 21 stswp\.w pc\[1156\],r8
12487 + *[0-9a-f]*: fb da a7 ce stswp\.w sp\[7992\],r10
12488 + *[0-9a-f]*: f1 d5 ae db stswp\.w r8\[-1172\],r5
12489 +
12490 +[0-9a-f]* <and2>:
12491 + *[0-9a-f]*: ff ef 00 0f and pc,pc,pc
12492 + *[0-9a-f]*: f9 ec 01 fc and r12,r12,r12<<0x1f
12493 + *[0-9a-f]*: eb e5 01 05 and r5,r5,r5<<0x10
12494 + *[0-9a-f]*: e9 e4 00 f4 and r4,r4,r4<<0xf
12495 + *[0-9a-f]*: fd ee 00 1e and lr,lr,lr<<0x1
12496 + *[0-9a-f]*: e5 e1 00 1a and r10,r2,r1<<0x1
12497 + *[0-9a-f]*: f1 eb 01 bc and r12,r8,r11<<0x1b
12498 + *[0-9a-f]*: ef e0 00 3a and r10,r7,r0<<0x3
12499 +
12500 +[0-9a-f]* <and3>:
12501 + *[0-9a-f]*: ff ef 02 0f and pc,pc,pc
12502 + *[0-9a-f]*: f9 ec 03 fc and r12,r12,r12>>0x1f
12503 + *[0-9a-f]*: eb e5 03 05 and r5,r5,r5>>0x10
12504 + *[0-9a-f]*: e9 e4 02 f4 and r4,r4,r4>>0xf
12505 + *[0-9a-f]*: fd ee 02 1e and lr,lr,lr>>0x1
12506 + *[0-9a-f]*: f1 e7 03 1c and r12,r8,r7>>0x11
12507 + *[0-9a-f]*: e9 e9 03 4f and pc,r4,r9>>0x14
12508 + *[0-9a-f]*: f3 ea 02 ca and r10,r9,r10>>0xc
12509 +
12510 +[0-9a-f]* <or2>:
12511 + *[0-9a-f]*: ff ef 10 0f or pc,pc,pc
12512 + *[0-9a-f]*: f9 ec 11 fc or r12,r12,r12<<0x1f
12513 + *[0-9a-f]*: eb e5 11 05 or r5,r5,r5<<0x10
12514 + *[0-9a-f]*: e9 e4 10 f4 or r4,r4,r4<<0xf
12515 + *[0-9a-f]*: fd ee 10 1e or lr,lr,lr<<0x1
12516 + *[0-9a-f]*: fb eb 11 d8 or r8,sp,r11<<0x1d
12517 + *[0-9a-f]*: f3 e2 11 cf or pc,r9,r2<<0x1c
12518 + *[0-9a-f]*: e3 e2 10 35 or r5,r1,r2<<0x3
12519 +
12520 +[0-9a-f]* <or3>:
12521 + *[0-9a-f]*: ff ef 12 0f or pc,pc,pc
12522 + *[0-9a-f]*: f9 ec 13 fc or r12,r12,r12>>0x1f
12523 + *[0-9a-f]*: eb e5 13 05 or r5,r5,r5>>0x10
12524 + *[0-9a-f]*: e9 e4 12 f4 or r4,r4,r4>>0xf
12525 + *[0-9a-f]*: fd ee 12 1e or lr,lr,lr>>0x1
12526 + *[0-9a-f]*: fb ed 12 21 or r1,sp,sp>>0x2
12527 + *[0-9a-f]*: e3 e1 13 d0 or r0,r1,r1>>0x1d
12528 + *[0-9a-f]*: f9 e8 12 84 or r4,r12,r8>>0x8
12529 +
12530 +[0-9a-f]* <eor2>:
12531 + *[0-9a-f]*: ff ef 20 0f eor pc,pc,pc
12532 + *[0-9a-f]*: f9 ec 21 fc eor r12,r12,r12<<0x1f
12533 + *[0-9a-f]*: eb e5 21 05 eor r5,r5,r5<<0x10
12534 + *[0-9a-f]*: e9 e4 20 f4 eor r4,r4,r4<<0xf
12535 + *[0-9a-f]*: fd ee 20 1e eor lr,lr,lr<<0x1
12536 + *[0-9a-f]*: f3 e4 20 ba eor r10,r9,r4<<0xb
12537 + *[0-9a-f]*: e1 e1 21 f4 eor r4,r0,r1<<0x1f
12538 + *[0-9a-f]*: e5 ec 20 d6 eor r6,r2,r12<<0xd
12539 +
12540 +[0-9a-f]* <eor3>:
12541 + *[0-9a-f]*: ff ef 22 0f eor pc,pc,pc
12542 + *[0-9a-f]*: f9 ec 23 fc eor r12,r12,r12>>0x1f
12543 + *[0-9a-f]*: eb e5 23 05 eor r5,r5,r5>>0x10
12544 + *[0-9a-f]*: e9 e4 22 f4 eor r4,r4,r4>>0xf
12545 + *[0-9a-f]*: fd ee 22 1e eor lr,lr,lr>>0x1
12546 + *[0-9a-f]*: eb e5 23 65 eor r5,r5,r5>>0x16
12547 + *[0-9a-f]*: e3 ee 22 3a eor r10,r1,lr>>0x3
12548 + *[0-9a-f]*: fd ed 23 a7 eor r7,lr,sp>>0x1a
12549 +
12550 +[0-9a-f]* <sthh_w2>:
12551 + *[0-9a-f]*: ff ef 8f 0f sthh\.w pc\[pc\],pc:b,pc:b
12552 + *[0-9a-f]*: f9 ec bc 3c sthh\.w r12\[r12<<0x3\],r12:t,r12:t
12553 + *[0-9a-f]*: eb e5 b5 25 sthh\.w r5\[r5<<0x2\],r5:t,r5:t
12554 + *[0-9a-f]*: e9 e4 84 14 sthh\.w r4\[r4<<0x1\],r4:b,r4:b
12555 + *[0-9a-f]*: fd ee be 1e sthh\.w lr\[lr<<0x1\],lr:t,lr:t
12556 + *[0-9a-f]*: e3 ec b6 3d sthh\.w sp\[r6<<0x3\],r1:t,r12:t
12557 + *[0-9a-f]*: f3 e9 b6 06 sthh\.w r6\[r6\],r9:t,r9:t
12558 + *[0-9a-f]*: e1 eb 93 0a sthh\.w r10\[r3\],r0:b,r11:t
12559 +
12560 +[0-9a-f]* <sthh_w1>:
12561 + *[0-9a-f]*: ff ef c0 0f sthh\.w pc\[0x0\],pc:b,pc:b
12562 + *[0-9a-f]*: f9 ec ff fc sthh\.w r12\[0x3fc\],r12:t,r12:t
12563 + *[0-9a-f]*: eb e5 f8 05 sthh\.w r5\[0x200\],r5:t,r5:t
12564 + *[0-9a-f]*: e9 e4 c7 f4 sthh\.w r4\[0x1fc\],r4:b,r4:b
12565 + *[0-9a-f]*: fd ee f0 1e sthh\.w lr\[0x4\],lr:t,lr:t
12566 + *[0-9a-f]*: f3 e0 e6 54 sthh\.w r4\[0x194\],r9:t,r0:b
12567 + *[0-9a-f]*: e5 ea e5 78 sthh\.w r8\[0x15c\],r2:t,r10:b
12568 + *[0-9a-f]*: f3 e2 c2 bd sthh\.w sp\[0xac\],r9:b,r2:b
12569 +
12570 +[0-9a-f]* <cop>:
12571 + *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0
12572 + *[0-9a-f]*: e7 af ff ff cop cp7,cr15,cr15,cr15,0x7f
12573 + *[0-9a-f]*: e3 a8 75 55 cop cp3,cr5,cr5,cr5,0x31
12574 + *[0-9a-f]*: e3 a8 44 44 cop cp2,cr4,cr4,cr4,0x30
12575 + *[0-9a-f]*: e5 ad a8 37 cop cp5,cr8,cr3,cr7,0x5a
12576 +
12577 +[0-9a-f]* <ldc_w1>:
12578 + *[0-9a-f]*: e9 a0 00 00 ldc\.w cp0,cr0,r0\[0x0\]
12579 + *[0-9a-f]*: e9 af ef ff ldc\.w cp7,cr15,pc\[0x3fc\]
12580 + *[0-9a-f]*: e9 a5 65 80 ldc\.w cp3,cr5,r5\[0x200\]
12581 + *[0-9a-f]*: e9 a4 44 7f ldc\.w cp2,cr4,r4\[0x1fc\]
12582 + *[0-9a-f]*: e9 ad 89 24 ldc\.w cp4,cr9,sp\[0x90\]
12583 +
12584 +[0-9a-f]* <ldc_w2>:
12585 + *[0-9a-f]*: ef a0 00 40 ldc\.w cp0,cr0,--r0
12586 + *[0-9a-f]*: ef af ef 40 ldc\.w cp7,cr15,--pc
12587 + *[0-9a-f]*: ef a5 65 40 ldc\.w cp3,cr5,--r5
12588 + *[0-9a-f]*: ef a4 44 40 ldc\.w cp2,cr4,--r4
12589 + *[0-9a-f]*: ef ad 89 40 ldc\.w cp4,cr9,--sp
12590 +
12591 +[0-9a-f]* <ldc_w3>:
12592 + *[0-9a-f]*: ef a0 10 00 ldc\.w cp0,cr0,r0\[r0\]
12593 + *[0-9a-f]*: ef af ff 3f ldc\.w cp7,cr15,pc\[pc<<0x3\]
12594 + *[0-9a-f]*: ef a5 75 24 ldc\.w cp3,cr5,r5\[r4<<0x2\]
12595 + *[0-9a-f]*: ef a4 54 13 ldc\.w cp2,cr4,r4\[r3<<0x1\]
12596 + *[0-9a-f]*: ef ad 99 0c ldc\.w cp4,cr9,sp\[r12\]
12597 +
12598 +[0-9a-f]* <ldc_d1>:
12599 + *[0-9a-f]*: e9 a0 10 00 ldc\.d cp0,cr0,r0\[0x0\]
12600 + *[0-9a-f]*: e9 af fe ff ldc\.d cp7,cr14,pc\[0x3fc\]
12601 + *[0-9a-f]*: e9 a5 76 80 ldc\.d cp3,cr6,r5\[0x200\]
12602 + *[0-9a-f]*: e9 a4 54 7f ldc\.d cp2,cr4,r4\[0x1fc\]
12603 + *[0-9a-f]*: e9 ad 98 24 ldc\.d cp4,cr8,sp\[0x90\]
12604 +
12605 +[0-9a-f]* <ldc_d2>:
12606 + *[0-9a-f]*: ef a0 00 50 ldc\.d cp0,cr0,--r0
12607 + *[0-9a-f]*: ef af ee 50 ldc\.d cp7,cr14,--pc
12608 + *[0-9a-f]*: ef a5 66 50 ldc\.d cp3,cr6,--r5
12609 + *[0-9a-f]*: ef a4 44 50 ldc\.d cp2,cr4,--r4
12610 + *[0-9a-f]*: ef ad 88 50 ldc\.d cp4,cr8,--sp
12611 +
12612 +[0-9a-f]* <ldc_d3>:
12613 + *[0-9a-f]*: ef a0 10 40 ldc\.d cp0,cr0,r0\[r0\]
12614 + *[0-9a-f]*: ef af fe 7f ldc\.d cp7,cr14,pc\[pc<<0x3\]
12615 + *[0-9a-f]*: ef a5 76 64 ldc\.d cp3,cr6,r5\[r4<<0x2\]
12616 + *[0-9a-f]*: ef a4 54 53 ldc\.d cp2,cr4,r4\[r3<<0x1\]
12617 + *[0-9a-f]*: ef ad 98 4c ldc\.d cp4,cr8,sp\[r12\]
12618 +
12619 +[0-9a-f]* <stc_w1>:
12620 + *[0-9a-f]*: eb a0 00 00 stc\.w cp0,r0\[0x0\],cr0
12621 + *[0-9a-f]*: eb af ef ff stc\.w cp7,pc\[0x3fc\],cr15
12622 + *[0-9a-f]*: eb a5 65 80 stc\.w cp3,r5\[0x200\],cr5
12623 + *[0-9a-f]*: eb a4 44 7f stc\.w cp2,r4\[0x1fc\],cr4
12624 + *[0-9a-f]*: eb ad 89 24 stc\.w cp4,sp\[0x90\],cr9
12625 +
12626 +[0-9a-f]* <stc_w2>:
12627 + *[0-9a-f]*: ef a0 00 60 stc\.w cp0,r0\+\+,cr0
12628 + *[0-9a-f]*: ef af ef 60 stc\.w cp7,pc\+\+,cr15
12629 + *[0-9a-f]*: ef a5 65 60 stc\.w cp3,r5\+\+,cr5
12630 + *[0-9a-f]*: ef a4 44 60 stc\.w cp2,r4\+\+,cr4
12631 + *[0-9a-f]*: ef ad 89 60 stc\.w cp4,sp\+\+,cr9
12632 +
12633 +[0-9a-f]* <stc_w3>:
12634 + *[0-9a-f]*: ef a0 10 80 stc\.w cp0,r0\[r0\],cr0
12635 + *[0-9a-f]*: ef af ff bf stc\.w cp7,pc\[pc<<0x3\],cr15
12636 + *[0-9a-f]*: ef a5 75 a4 stc\.w cp3,r5\[r4<<0x2\],cr5
12637 + *[0-9a-f]*: ef a4 54 93 stc\.w cp2,r4\[r3<<0x1\],cr4
12638 + *[0-9a-f]*: ef ad 99 8c stc\.w cp4,sp\[r12\],cr9
12639 +
12640 +[0-9a-f]* <stc_d1>:
12641 + *[0-9a-f]*: eb a0 10 00 stc\.d cp0,r0\[0x0\],cr0
12642 + *[0-9a-f]*: eb af fe ff stc\.d cp7,pc\[0x3fc\],cr14
12643 + *[0-9a-f]*: eb a5 76 80 stc\.d cp3,r5\[0x200\],cr6
12644 + *[0-9a-f]*: eb a4 54 7f stc\.d cp2,r4\[0x1fc\],cr4
12645 + *[0-9a-f]*: eb ad 98 24 stc\.d cp4,sp\[0x90\],cr8
12646 +
12647 +[0-9a-f]* <stc_d2>:
12648 + *[0-9a-f]*: ef a0 00 70 stc\.d cp0,r0\+\+,cr0
12649 + *[0-9a-f]*: ef af ee 70 stc\.d cp7,pc\+\+,cr14
12650 + *[0-9a-f]*: ef a5 66 70 stc\.d cp3,r5\+\+,cr6
12651 + *[0-9a-f]*: ef a4 44 70 stc\.d cp2,r4\+\+,cr4
12652 + *[0-9a-f]*: ef ad 88 70 stc\.d cp4,sp\+\+,cr8
12653 +
12654 +[0-9a-f]* <stc_d3>:
12655 + *[0-9a-f]*: ef a0 10 c0 stc\.d cp0,r0\[r0\],cr0
12656 + *[0-9a-f]*: ef af fe ff stc\.d cp7,pc\[pc<<0x3\],cr14
12657 + *[0-9a-f]*: ef a5 76 e4 stc\.d cp3,r5\[r4<<0x2\],cr6
12658 + *[0-9a-f]*: ef a4 54 d3 stc\.d cp2,r4\[r3<<0x1\],cr4
12659 + *[0-9a-f]*: ef ad 98 cc stc\.d cp4,sp\[r12\],cr8
12660 +
12661 +[0-9a-f]* <ldc0_w>:
12662 + *[0-9a-f]*: f1 a0 00 00 ldc0\.w cr0,r0\[0x0\]
12663 + *[0-9a-f]*: f1 af ff ff ldc0\.w cr15,pc\[0x3ffc\]
12664 + *[0-9a-f]*: f1 a5 85 00 ldc0\.w cr5,r5\[0x2000\]
12665 + *[0-9a-f]*: f1 a4 74 ff ldc0\.w cr4,r4\[0x1ffc\]
12666 + *[0-9a-f]*: f1 ad 09 93 ldc0\.w cr9,sp\[0x24c\]
12667 +
12668 +[0-9a-f]* <ldc0_d>:
12669 + *[0-9a-f]*: f3 a0 00 00 ldc0\.d cr0,r0\[0x0\]
12670 + *[0-9a-f]*: f3 af fe ff ldc0\.d cr14,pc\[0x3ffc\]
12671 + *[0-9a-f]*: f3 a5 86 00 ldc0\.d cr6,r5\[0x2000\]
12672 + *[0-9a-f]*: f3 a4 74 ff ldc0\.d cr4,r4\[0x1ffc\]
12673 + *[0-9a-f]*: f3 ad 08 93 ldc0\.d cr8,sp\[0x24c\]
12674 +
12675 +[0-9a-f]* <stc0_w>:
12676 + *[0-9a-f]*: f5 a0 00 00 stc0\.w r0\[0x0\],cr0
12677 + *[0-9a-f]*: f5 af ff ff stc0\.w pc\[0x3ffc\],cr15
12678 + *[0-9a-f]*: f5 a5 85 00 stc0\.w r5\[0x2000\],cr5
12679 + *[0-9a-f]*: f5 a4 74 ff stc0\.w r4\[0x1ffc\],cr4
12680 + *[0-9a-f]*: f5 ad 09 93 stc0\.w sp\[0x24c\],cr9
12681 +
12682 +[0-9a-f]* <stc0_d>:
12683 + *[0-9a-f]*: f7 a0 00 00 stc0\.d r0\[0x0\],cr0
12684 + *[0-9a-f]*: f7 af fe ff stc0\.d pc\[0x3ffc\],cr14
12685 + *[0-9a-f]*: f7 a5 86 00 stc0\.d r5\[0x2000\],cr6
12686 + *[0-9a-f]*: f7 a4 74 ff stc0\.d r4\[0x1ffc\],cr4
12687 + *[0-9a-f]*: f7 ad 08 93 stc0\.d sp\[0x24c\],cr8
12688 +
12689 +[0-9a-f]* <memc>:
12690 + *[0-9a-f]*: f6 10 00 00 memc 0,0x0
12691 + *[0-9a-f]*: f6 1f ff ff memc -4,0x1f
12692 + *[0-9a-f]*: f6 18 40 00 memc -65536,0x10
12693 + *[0-9a-f]*: f6 17 bf ff memc 65532,0xf
12694 +
12695 +[0-9a-f]* <mems>:
12696 + *[0-9a-f]*: f8 10 00 00 mems 0,0x0
12697 + *[0-9a-f]*: f8 1f ff ff mems -4,0x1f
12698 + *[0-9a-f]*: f8 18 40 00 mems -65536,0x10
12699 + *[0-9a-f]*: f8 17 bf ff mems 65532,0xf
12700 +
12701 +[0-9a-f]* <memt>:
12702 + *[0-9a-f]*: fa 10 00 00 memt 0,0x0
12703 + *[0-9a-f]*: fa 1f ff ff memt -4,0x1f
12704 + *[0-9a-f]*: fa 18 40 00 memt -65536,0x10
12705 + *[0-9a-f]*: fa 17 bf ff memt 65532,0xf
12706 +
12707 +[0-9a-f]* <stcond>:
12708 + *[0-9a-f]*: e1 70 00 00 stcond r0\[0\],r0
12709 + *[0-9a-f]*: ff 7f ff ff stcond pc\[-1\],pc
12710 + *[0-9a-f]*: f1 77 80 00 stcond r8\[-32768\],r7
12711 + *[0-9a-f]*: ef 78 7f ff stcond r7\[32767\],r8
12712 + *[0-9a-f]*: eb 7a 12 34 stcond r5\[4660\],r10
12713 +
12714 +[0-9a-f]* <ldcm_w>:
12715 + *[0-9a-f]*: ed af 00 ff ldcm\.w cp0,pc,cr0-cr7
12716 + *[0-9a-f]*: ed a0 e0 01 ldcm\.w cp7,r0,cr0
12717 + *[0-9a-f]*: ed a4 90 7f ldcm\.w cp4,r4\+\+,cr0-cr6
12718 + *[0-9a-f]*: ed a7 60 80 ldcm\.w cp3,r7,cr7
12719 + *[0-9a-f]*: ed ac 30 72 ldcm\.w cp1,r12\+\+,cr1,cr4-cr6
12720 + *[0-9a-f]*: ed af 01 ff ldcm\.w cp0,pc,cr8-cr15
12721 + *[0-9a-f]*: ed a0 e1 01 ldcm\.w cp7,r0,cr8
12722 + *[0-9a-f]*: ed a4 91 7f ldcm\.w cp4,r4\+\+,cr8-cr14
12723 + *[0-9a-f]*: ed a7 61 80 ldcm\.w cp3,r7,cr15
12724 + *[0-9a-f]*: ed ac 31 72 ldcm\.w cp1,r12\+\+,cr9,cr12-cr14
12725 +
12726 +[0-9a-f]* <ldcm_d>:
12727 + *[0-9a-f]*: ed af 04 ff ldcm\.d cp0,pc,cr0-cr15
12728 + *[0-9a-f]*: ed a0 e4 01 ldcm\.d cp7,r0,cr0-cr1
12729 + *[0-9a-f]*: ed a4 94 7f ldcm\.d cp4,r4\+\+,cr0-cr13
12730 + *[0-9a-f]*: ed a7 64 80 ldcm\.d cp3,r7,cr14-cr15
12731 + *[0-9a-f]*: ed ac 54 93 ldcm\.d cp2,r12\+\+,cr0-cr3,cr8-cr9,cr14-cr15
12732 +
12733 +[0-9a-f]* <stcm_w>:
12734 + *[0-9a-f]*: ed af 02 ff stcm\.w cp0,pc,cr0-cr7
12735 + *[0-9a-f]*: ed a0 e2 01 stcm\.w cp7,r0,cr0
12736 + *[0-9a-f]*: ed a4 92 7f stcm\.w cp4,--r4,cr0-cr6
12737 + *[0-9a-f]*: ed a7 62 80 stcm\.w cp3,r7,cr7
12738 + *[0-9a-f]*: ed ac 32 72 stcm\.w cp1,--r12,cr1,cr4-cr6
12739 + *[0-9a-f]*: ed af 03 ff stcm\.w cp0,pc,cr8-cr15
12740 + *[0-9a-f]*: ed a0 e3 01 stcm\.w cp7,r0,cr8
12741 + *[0-9a-f]*: ed a4 93 7f stcm\.w cp4,--r4,cr8-cr14
12742 + *[0-9a-f]*: ed a7 63 80 stcm\.w cp3,r7,cr15
12743 + *[0-9a-f]*: ed ac 33 72 stcm\.w cp1,--r12,cr9,cr12-cr14
12744 +
12745 +[0-9a-f]* <stcm_d>:
12746 + *[0-9a-f]*: ed af 05 ff stcm\.d cp0,pc,cr0-cr15
12747 + *[0-9a-f]*: ed a0 e5 01 stcm\.d cp7,r0,cr0-cr1
12748 + *[0-9a-f]*: ed a4 95 7f stcm\.d cp4,--r4,cr0-cr13
12749 + *[0-9a-f]*: ed a7 65 80 stcm\.d cp3,r7,cr14-cr15
12750 + *[0-9a-f]*: ed ac 55 93 stcm\.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
12751 +
12752 +[0-9a-f]* <mvcr_w>:
12753 + *[0-9a-f]*: ef af ef 00 mvcr\.w cp7,pc,cr15
12754 + *[0-9a-f]*: ef a0 00 00 mvcr\.w cp0,r0,cr0
12755 + *[0-9a-f]*: ef af 0f 00 mvcr\.w cp0,pc,cr15
12756 + *[0-9a-f]*: ef a0 ef 00 mvcr\.w cp7,r0,cr15
12757 + *[0-9a-f]*: ef af e0 00 mvcr\.w cp7,pc,cr0
12758 + *[0-9a-f]*: ef a7 88 00 mvcr\.w cp4,r7,cr8
12759 + *[0-9a-f]*: ef a8 67 00 mvcr\.w cp3,r8,cr7
12760 +
12761 +[0-9a-f]* <mvcr_d>:
12762 + *[0-9a-f]*: ef ae ee 10 mvcr\.d cp7,lr,cr14
12763 + *[0-9a-f]*: ef a0 00 10 mvcr\.d cp0,r0,cr0
12764 + *[0-9a-f]*: ef ae 0e 10 mvcr\.d cp0,lr,cr14
12765 + *[0-9a-f]*: ef a0 ee 10 mvcr\.d cp7,r0,cr14
12766 + *[0-9a-f]*: ef ae e0 10 mvcr\.d cp7,lr,cr0
12767 + *[0-9a-f]*: ef a6 88 10 mvcr\.d cp4,r6,cr8
12768 + *[0-9a-f]*: ef a8 66 10 mvcr\.d cp3,r8,cr6
12769 +
12770 +[0-9a-f]* <mvrc_w>:
12771 + *[0-9a-f]*: ef af ef 20 mvrc\.w cp7,cr15,pc
12772 + *[0-9a-f]*: ef a0 00 20 mvrc\.w cp0,cr0,r0
12773 + *[0-9a-f]*: ef af 0f 20 mvrc\.w cp0,cr15,pc
12774 + *[0-9a-f]*: ef a0 ef 20 mvrc\.w cp7,cr15,r0
12775 + *[0-9a-f]*: ef af e0 20 mvrc\.w cp7,cr0,pc
12776 + *[0-9a-f]*: ef a7 88 20 mvrc\.w cp4,cr8,r7
12777 + *[0-9a-f]*: ef a8 67 20 mvrc\.w cp3,cr7,r8
12778 +
12779 +[0-9a-f]* <mvrc_d>:
12780 + *[0-9a-f]*: ef ae ee 30 mvrc\.d cp7,cr14,lr
12781 + *[0-9a-f]*: ef a0 00 30 mvrc\.d cp0,cr0,r0
12782 + *[0-9a-f]*: ef ae 0e 30 mvrc\.d cp0,cr14,lr
12783 + *[0-9a-f]*: ef a0 ee 30 mvrc\.d cp7,cr14,r0
12784 + *[0-9a-f]*: ef ae e0 30 mvrc\.d cp7,cr0,lr
12785 + *[0-9a-f]*: ef a6 88 30 mvrc\.d cp4,cr8,r6
12786 + *[0-9a-f]*: ef a8 66 30 mvrc\.d cp3,cr6,r8
12787 +
12788 +[0-9a-f]* <bfexts>:
12789 + *[0-9a-f]*: ff df b3 ff bfexts pc,pc,0x1f,0x1f
12790 + *[0-9a-f]*: e1 d0 b0 00 bfexts r0,r0,0x0,0x0
12791 + *[0-9a-f]*: e1 df b3 ff bfexts r0,pc,0x1f,0x1f
12792 + *[0-9a-f]*: ff d0 b3 ff bfexts pc,r0,0x1f,0x1f
12793 + *[0-9a-f]*: ff df b0 1f bfexts pc,pc,0x0,0x1f
12794 + *[0-9a-f]*: ff df b3 e0 bfexts pc,pc,0x1f,0x0
12795 + *[0-9a-f]*: ef d8 b1 f0 bfexts r7,r8,0xf,0x10
12796 + *[0-9a-f]*: f1 d7 b2 0f bfexts r8,r7,0x10,0xf
12797 +
12798 +[0-9a-f]* <bfextu>:
12799 + *[0-9a-f]*: ff df c3 ff bfextu pc,pc,0x1f,0x1f
12800 + *[0-9a-f]*: e1 d0 c0 00 bfextu r0,r0,0x0,0x0
12801 + *[0-9a-f]*: e1 df c3 ff bfextu r0,pc,0x1f,0x1f
12802 + *[0-9a-f]*: ff d0 c3 ff bfextu pc,r0,0x1f,0x1f
12803 + *[0-9a-f]*: ff df c0 1f bfextu pc,pc,0x0,0x1f
12804 + *[0-9a-f]*: ff df c3 e0 bfextu pc,pc,0x1f,0x0
12805 + *[0-9a-f]*: ef d8 c1 f0 bfextu r7,r8,0xf,0x10
12806 + *[0-9a-f]*: f1 d7 c2 0f bfextu r8,r7,0x10,0xf
12807 +
12808 +[0-9a-f]* <bfins>:
12809 + *[0-9a-f]*: ff df d3 ff bfins pc,pc,0x1f,0x1f
12810 + *[0-9a-f]*: e1 d0 d0 00 bfins r0,r0,0x0,0x0
12811 + *[0-9a-f]*: e1 df d3 ff bfins r0,pc,0x1f,0x1f
12812 + *[0-9a-f]*: ff d0 d3 ff bfins pc,r0,0x1f,0x1f
12813 + *[0-9a-f]*: ff df d0 1f bfins pc,pc,0x0,0x1f
12814 + *[0-9a-f]*: ff df d3 e0 bfins pc,pc,0x1f,0x0
12815 + *[0-9a-f]*: ef d8 d1 f0 bfins r7,r8,0xf,0x10
12816 + *[0-9a-f]*: f1 d7 d2 0f bfins r8,r7,0x10,0xf
12817 +
12818 +[0-9a-f]* <rsubc>:
12819 + *[0-9a-f]*: fb bf 00 00 rsubeq pc,0
12820 + *[0-9a-f]*: fb bc 0f ff rsubal r12,-1
12821 + *[0-9a-f]*: fb b5 08 80 rsubls r5,-128
12822 + *[0-9a-f]*: fb b4 07 7f rsubpl r4,127
12823 + *[0-9a-f]*: fb be 01 01 rsubne lr,1
12824 + *[0-9a-f]*: fb bc 08 76 rsubls r12,118
12825 + *[0-9a-f]*: fb be 0d f4 rsubvc lr,-12
12826 + *[0-9a-f]*: fb b4 06 f3 rsubmi r4,-13
12827 +
12828 +[0-9a-f]* <addc>:
12829 + *[0-9a-f]*: ff df e0 0f addeq pc,pc,pc
12830 + *[0-9a-f]*: f9 dc ef 0c addal r12,r12,r12
12831 + *[0-9a-f]*: eb d5 e8 05 addls r5,r5,r5
12832 + *[0-9a-f]*: e9 d4 e7 04 addpl r4,r4,r4
12833 + *[0-9a-f]*: fd de e1 0e addne lr,lr,lr
12834 + *[0-9a-f]*: e5 d1 e8 0a addls r10,r2,r1
12835 + *[0-9a-f]*: f1 db ed 0c addvc r12,r8,r11
12836 + *[0-9a-f]*: ef d0 e6 0a addmi r10,r7,r0
12837 +
12838 +[0-9a-f]* <subc2>:
12839 + *[0-9a-f]*: ff df e0 1f subeq pc,pc,pc
12840 + *[0-9a-f]*: f9 dc ef 1c subal r12,r12,r12
12841 + *[0-9a-f]*: eb d5 e8 15 subls r5,r5,r5
12842 + *[0-9a-f]*: e9 d4 e7 14 subpl r4,r4,r4
12843 + *[0-9a-f]*: fd de e1 1e subne lr,lr,lr
12844 + *[0-9a-f]*: e5 d1 e8 1a subls r10,r2,r1
12845 + *[0-9a-f]*: f1 db ed 1c subvc r12,r8,r11
12846 + *[0-9a-f]*: ef d0 e6 1a submi r10,r7,r0
12847 +
12848 +[0-9a-f]* <andc>:
12849 + *[0-9a-f]*: ff df e0 2f andeq pc,pc,pc
12850 + *[0-9a-f]*: f9 dc ef 2c andal r12,r12,r12
12851 + *[0-9a-f]*: eb d5 e8 25 andls r5,r5,r5
12852 + *[0-9a-f]*: e9 d4 e7 24 andpl r4,r4,r4
12853 + *[0-9a-f]*: fd de e1 2e andne lr,lr,lr
12854 + *[0-9a-f]*: e5 d1 e8 2a andls r10,r2,r1
12855 + *[0-9a-f]*: f1 db ed 2c andvc r12,r8,r11
12856 + *[0-9a-f]*: ef d0 e6 2a andmi r10,r7,r0
12857 +
12858 +[0-9a-f]* <orc>:
12859 + *[0-9a-f]*: ff df e0 3f oreq pc,pc,pc
12860 + *[0-9a-f]*: f9 dc ef 3c oral r12,r12,r12
12861 + *[0-9a-f]*: eb d5 e8 35 orls r5,r5,r5
12862 + *[0-9a-f]*: e9 d4 e7 34 orpl r4,r4,r4
12863 + *[0-9a-f]*: fd de e1 3e orne lr,lr,lr
12864 + *[0-9a-f]*: e5 d1 e8 3a orls r10,r2,r1
12865 + *[0-9a-f]*: f1 db ed 3c orvc r12,r8,r11
12866 + *[0-9a-f]*: ef d0 e6 3a ormi r10,r7,r0
12867 +
12868 +[0-9a-f]* <eorc>:
12869 + *[0-9a-f]*: ff df e0 4f eoreq pc,pc,pc
12870 + *[0-9a-f]*: f9 dc ef 4c eoral r12,r12,r12
12871 + *[0-9a-f]*: eb d5 e8 45 eorls r5,r5,r5
12872 + *[0-9a-f]*: e9 d4 e7 44 eorpl r4,r4,r4
12873 + *[0-9a-f]*: fd de e1 4e eorne lr,lr,lr
12874 + *[0-9a-f]*: e5 d1 e8 4a eorls r10,r2,r1
12875 + *[0-9a-f]*: f1 db ed 4c eorvc r12,r8,r11
12876 + *[0-9a-f]*: ef d0 e6 4a eormi r10,r7,r0
12877 +
12878 +[0-9a-f]* <ldcond>:
12879 + *[0-9a-f]*: ff ff 01 ff ld.weq pc,pc[0x7fc]
12880 + *[0-9a-f]*: f9 fc f3 ff ld.shal r12,r12[0x3fe]
12881 + *[0-9a-f]*: eb f5 84 00 ld.shls r5,r5[0x0]
12882 + *[0-9a-f]*: e9 f4 79 ff ld.ubpl r4,r4[0x1ff]
12883 + *[0-9a-f]*: fd fe 16 00 ld.sbne lr,lr[0x0]
12884 + *[0-9a-f]*: e5 fa 80 00 ld.wls r10,r2[0x0]
12885 + *[0-9a-f]*: f1 fc d3 ff ld.shvc r12,r8[0x3fe]
12886 + *[0-9a-f]*: ef fa 68 01 ld.ubmi r10,r7[0x1]
12887 +
12888 +[0-9a-f]* <stcond2>:
12889 + *[0-9a-f]*: ff ff 0b ff st.weq pc[0x7fc],pc
12890 + *[0-9a-f]*: f9 fc fd ff st.hal r12[0x3fe],r12
12891 + *[0-9a-f]*: eb f5 8c 00 st.hls r5[0x0],r5
12892 + *[0-9a-f]*: e9 f4 7f ff st.bpl r4[0x1ff],r4
12893 + *[0-9a-f]*: fd fe 1e 00 st.bne lr[0x0],lr
12894 + *[0-9a-f]*: e5 fa 8a 00 st.wls r2[0x0],r10
12895 + *[0-9a-f]*: f1 fc dd ff st.hvc r8[0x3fe],r12
12896 + *[0-9a-f]*: ef fa 6e 01 st.bmi r7[0x1],r10
12897 +
12898 +[0-9a-f]* <movh>:
12899 + *[0-9a-f]*: fc 1f ff ff movh pc,0xffff
12900 + *[0-9a-f]*: fc 10 00 00 movh r0,0x0
12901 + *[0-9a-f]*: fc 15 00 01 movh r5,0x1
12902 + *[0-9a-f]*: fc 1c 7f ff movh r12,0x7fff
12903 +
12904 --- /dev/null
12905 +++ b/gas/testsuite/gas/avr32/allinsn.exp
12906 @@ -0,0 +1,5 @@
12907 +# AVR32 assembler testsuite. -*- Tcl -*-
12908 +
12909 +if [istarget avr32-*-*] {
12910 + run_dump_test "allinsn"
12911 +}
12912 --- /dev/null
12913 +++ b/gas/testsuite/gas/avr32/allinsn.s
12914 @@ -0,0 +1,3330 @@
12915 + .data
12916 +foodata: .word 42
12917 + .text
12918 +footext:
12919 + .text
12920 + .global ld_d5
12921 +ld_d5:
12922 + ld.d lr,pc[pc<<3]
12923 + ld.d r0,r0[r0<<0]
12924 + ld.d r6,r5[r5<<2]
12925 + ld.d r4,r4[r4<<1]
12926 + ld.d lr,lr[lr<<1]
12927 + ld.d r10,r3[sp<<2]
12928 + ld.d r8,r10[r6<<2]
12929 + ld.d r2,r7[r9<<0]
12930 + .text
12931 + .global ld_w5
12932 +ld_w5:
12933 + ld.w pc,pc[pc<<0]
12934 + ld.w r12,r12[r12<<3]
12935 + ld.w r5,r5[r5<<2]
12936 + ld.w r4,r4[r4<<1]
12937 + ld.w lr,lr[lr<<1]
12938 + ld.w r2,r9[r9<<0]
12939 + ld.w r11,r2[r6<<0]
12940 + ld.w r0,r2[sp<<3]
12941 + .text
12942 + .global ld_sh5
12943 +ld_sh5:
12944 + ld.sh pc,pc[pc<<0]
12945 + ld.sh r12,r12[r12<<3]
12946 + ld.sh r5,r5[r5<<2]
12947 + ld.sh r4,r4[r4<<1]
12948 + ld.sh lr,lr[lr<<1]
12949 + ld.sh r11,r0[pc<<2]
12950 + ld.sh r10,sp[r6<<2]
12951 + ld.sh r12,r2[r2<<0]
12952 + .text
12953 + .global ld_uh5
12954 +ld_uh5:
12955 + ld.uh pc,pc[pc<<0]
12956 + ld.uh r12,r12[r12<<3]
12957 + ld.uh r5,r5[r5<<2]
12958 + ld.uh r4,r4[r4<<1]
12959 + ld.uh lr,lr[lr<<1]
12960 + ld.uh r8,pc[lr<<3]
12961 + ld.uh r6,r1[pc<<1]
12962 + ld.uh r6,lr[sp<<1]
12963 + .text
12964 + .global ld_sb2
12965 +ld_sb2:
12966 + ld.sb pc,pc[pc<<0]
12967 + ld.sb r12,r12[r12<<3]
12968 + ld.sb r5,r5[r5<<2]
12969 + ld.sb r4,r4[r4<<1]
12970 + ld.sb lr,lr[lr<<1]
12971 + ld.sb r9,r1[pc<<3]
12972 + ld.sb r0,r3[r11<<1]
12973 + ld.sb r10,r5[r5<<1]
12974 + .text
12975 + .global ld_ub5
12976 +ld_ub5:
12977 + ld.ub pc,pc[pc<<0]
12978 + ld.ub r12,r12[r12<<3]
12979 + ld.ub r5,r5[r5<<2]
12980 + ld.ub r4,r4[r4<<1]
12981 + ld.ub lr,lr[lr<<1]
12982 + ld.ub r6,r12[r7<<3]
12983 + ld.ub r2,r6[r12<<0]
12984 + ld.ub r0,r7[r11<<1]
12985 + .text
12986 + .global st_d5
12987 +st_d5:
12988 + st.d pc[pc<<0],r14
12989 + st.d r12[r12<<3],r12
12990 + st.d r5[r5<<2],r6
12991 + st.d r4[r4<<1],r4
12992 + st.d lr[lr<<1],lr
12993 + st.d r1[r9<<1],r4
12994 + st.d r10[r2<<1],r4
12995 + st.d r12[r6<<0],lr
12996 + .text
12997 + .global st_w5
12998 +st_w5:
12999 + st.w pc[pc<<0],pc
13000 + st.w r12[r12<<3],r12
13001 + st.w r5[r5<<2],r5
13002 + st.w r4[r4<<1],r4
13003 + st.w lr[lr<<1],lr
13004 + st.w r1[r10<<0],r3
13005 + st.w r0[r10<<1],r9
13006 + st.w r4[r5<<3],pc
13007 + .text
13008 + .global st_h5
13009 +st_h5:
13010 + st.h pc[pc<<0],pc
13011 + st.h r12[r12<<3],r12
13012 + st.h r5[r5<<2],r5
13013 + st.h r4[r4<<1],r4
13014 + st.h lr[lr<<1],lr
13015 + st.h r2[r9<<0],r11
13016 + st.h r5[r1<<2],r12
13017 + st.h pc[r8<<2],r3
13018 + .text
13019 + .global st_b5
13020 +st_b5:
13021 + st.b pc[pc<<0],pc
13022 + st.b r12[r12<<3],r12
13023 + st.b r5[r5<<2],r5
13024 + st.b r4[r4<<1],r4
13025 + st.b lr[lr<<1],lr
13026 + st.b r1[r8<<1],r6
13027 + st.b lr[lr<<3],r1
13028 + st.b r5[r0<<2],pc
13029 + .text
13030 + .global divs
13031 +divs:
13032 + divs pc,pc,pc
13033 + divs r12,r12,r12
13034 + divs r5,r5,r5
13035 + divs r4,r4,r4
13036 + divs lr,lr,lr
13037 + divs r3,pc,pc
13038 + divs r9,r12,r2
13039 + divs r7,r4,r1
13040 + .text
13041 + .global add1
13042 +add1:
13043 + add pc,pc
13044 + add r12,r12
13045 + add r5,r5
13046 + add r4,r4
13047 + add lr,lr
13048 + add r12,r9
13049 + add r6,r3
13050 + add r10,r12
13051 + .text
13052 + .global sub1
13053 +sub1:
13054 + sub pc,pc
13055 + sub r12,r12
13056 + sub r5,r5
13057 + sub r4,r4
13058 + sub lr,lr
13059 + sub lr,r6
13060 + sub r0,sp
13061 + sub r6,r12
13062 + .text
13063 + .global rsub1
13064 +rsub1:
13065 + rsub pc,pc
13066 + rsub r12,r12
13067 + rsub r5,r5
13068 + rsub r4,r4
13069 + rsub lr,lr
13070 + rsub r11,sp
13071 + rsub r7,r4
13072 + rsub r9,r1
13073 + .text
13074 + .global cp1
13075 +cp1:
13076 + cp pc,pc
13077 + cp r12,r12
13078 + cp r5,r5
13079 + cp r4,r4
13080 + cp lr,lr
13081 + cp r6,r2
13082 + cp r0,r9
13083 + cp r3,sp
13084 + .text
13085 + .global or1
13086 +or1:
13087 + or pc,pc
13088 + or r12,r12
13089 + or r5,r5
13090 + or r4,r4
13091 + or lr,lr
13092 + or r4,r9
13093 + or r11,r4
13094 + or r4,r0
13095 + .text
13096 + .global eor1
13097 +eor1:
13098 + eor pc,pc
13099 + eor r12,r12
13100 + eor r5,r5
13101 + eor r4,r4
13102 + eor lr,lr
13103 + eor r12,r11
13104 + eor r0,r1
13105 + eor r5,pc
13106 + .text
13107 + .global and1
13108 +and1:
13109 + and pc,pc
13110 + and r12,r12
13111 + and r5,r5
13112 + and r4,r4
13113 + and lr,lr
13114 + and r8,r1
13115 + and r0,sp
13116 + and r10,r5
13117 + .text
13118 + .global tst
13119 +tst:
13120 + tst pc,pc
13121 + tst r12,r12
13122 + tst r5,r5
13123 + tst r4,r4
13124 + tst lr,lr
13125 + tst r0,r12
13126 + tst r10,r6
13127 + tst sp,r4
13128 + .text
13129 + .global andn
13130 +andn:
13131 + andn pc,pc
13132 + andn r12,r12
13133 + andn r5,r5
13134 + andn r4,r4
13135 + andn lr,lr
13136 + andn r9,r12
13137 + andn r11,sp
13138 + andn r12,r5
13139 + .text
13140 + .global mov3
13141 +mov3:
13142 + mov pc,pc
13143 + mov r12,r12
13144 + mov r5,r5
13145 + mov r4,r4
13146 + mov lr,lr
13147 + mov r5,r9
13148 + mov r11,r11
13149 + mov r2,lr
13150 + .text
13151 + .global st_w1
13152 +st_w1:
13153 + st.w pc++,pc
13154 + st.w r12++,r12
13155 + st.w r5++,r5
13156 + st.w r4++,r4
13157 + st.w lr++,lr
13158 + st.w r1++,r11
13159 + st.w sp++,r0
13160 + st.w sp++,r1
13161 + .text
13162 + .global st_h1
13163 +st_h1:
13164 + st.h pc++,pc
13165 + st.h r12++,r12
13166 + st.h r5++,r5
13167 + st.h r4++,r4
13168 + st.h lr++,lr
13169 + st.h r12++,sp
13170 + st.h r7++,lr
13171 + st.h r7++,r4
13172 + .text
13173 + .global st_b1
13174 +st_b1:
13175 + st.b pc++,pc
13176 + st.b r12++,r12
13177 + st.b r5++,r5
13178 + st.b r4++,r4
13179 + st.b lr++,lr
13180 + st.b r9++,sp
13181 + st.b r1++,sp
13182 + st.b r0++,r4
13183 + .text
13184 + .global st_w2
13185 +st_w2:
13186 + st.w --pc,pc
13187 + st.w --r12,r12
13188 + st.w --r5,r5
13189 + st.w --r4,r4
13190 + st.w --lr,lr
13191 + st.w --r1,r7
13192 + st.w --r3,r9
13193 + st.w --r5,r5
13194 + .text
13195 + .global st_h2
13196 +st_h2:
13197 + st.h --pc,pc
13198 + st.h --r12,r12
13199 + st.h --r5,r5
13200 + st.h --r4,r4
13201 + st.h --lr,lr
13202 + st.h --r5,r7
13203 + st.h --r8,r8
13204 + st.h --r7,r2
13205 + .text
13206 + .global st_b2
13207 +st_b2:
13208 + st.b --pc,pc
13209 + st.b --r12,r12
13210 + st.b --r5,r5
13211 + st.b --r4,r4
13212 + st.b --lr,lr
13213 + st.b --sp,sp
13214 + st.b --sp,r11
13215 + st.b --r4,r5
13216 + .text
13217 + .global ld_w1
13218 +ld_w1:
13219 + ld.w pc,pc++
13220 + ld.w r12,r12++
13221 + ld.w r5,r5++
13222 + ld.w r4,r4++
13223 + ld.w lr,lr++
13224 + ld.w r3,r7++
13225 + ld.w r3,lr++
13226 + ld.w r12,r5++
13227 + .text
13228 + .global ld_sh1
13229 +ld_sh1:
13230 + ld.sh pc,pc++
13231 + ld.sh r12,r12++
13232 + ld.sh r5,r5++
13233 + ld.sh r4,r4++
13234 + ld.sh lr,lr++
13235 + ld.sh r11,r2++
13236 + ld.sh r2,r8++
13237 + ld.sh r7,r6++
13238 + .text
13239 + .global ld_uh1
13240 +ld_uh1:
13241 + ld.uh pc,pc++
13242 + ld.uh r12,r12++
13243 + ld.uh r5,r5++
13244 + ld.uh r4,r4++
13245 + ld.uh lr,lr++
13246 + ld.uh r6,r7++
13247 + ld.uh r10,r11++
13248 + ld.uh lr,r4++
13249 + .text
13250 + .global ld_ub1
13251 +ld_ub1:
13252 + ld.ub pc,pc++
13253 + ld.ub r12,r12++
13254 + ld.ub r5,r5++
13255 + ld.ub r4,r4++
13256 + ld.ub lr,lr++
13257 + ld.ub r8,lr++
13258 + ld.ub r12,r12++
13259 + ld.ub r11,r10++
13260 + .text
13261 + .global ld_w2
13262 +ld_w2:
13263 + ld.w pc,--pc
13264 + ld.w r12,--r12
13265 + ld.w r5,--r5
13266 + ld.w r4,--r4
13267 + ld.w lr,--lr
13268 + ld.w r10,--lr
13269 + ld.w r12,--r9
13270 + ld.w r6,--r5
13271 + .text
13272 + .global ld_sh2
13273 +ld_sh2:
13274 + ld.sh pc,--pc
13275 + ld.sh r12,--r12
13276 + ld.sh r5,--r5
13277 + ld.sh r4,--r4
13278 + ld.sh lr,--lr
13279 + ld.sh pc,--r10
13280 + ld.sh r6,--r3
13281 + ld.sh r4,--r6
13282 + .text
13283 + .global ld_uh2
13284 +ld_uh2:
13285 + ld.uh pc,--pc
13286 + ld.uh r12,--r12
13287 + ld.uh r5,--r5
13288 + ld.uh r4,--r4
13289 + ld.uh lr,--lr
13290 + ld.uh r3,--r2
13291 + ld.uh r1,--r0
13292 + ld.uh r2,--r9
13293 + .text
13294 + .global ld_ub2
13295 +ld_ub2:
13296 + ld.ub pc,--pc
13297 + ld.ub r12,--r12
13298 + ld.ub r5,--r5
13299 + ld.ub r4,--r4
13300 + ld.ub lr,--lr
13301 + ld.ub r1,--r1
13302 + ld.ub r0,--r6
13303 + ld.ub r2,--r7
13304 + .text
13305 + .global ld_ub3
13306 +ld_ub3:
13307 + ld.ub pc,pc[0]
13308 + ld.ub r12,r12[7]
13309 + ld.ub r5,r5[4]
13310 + ld.ub r4,r4[3]
13311 + ld.ub lr,lr[1]
13312 + ld.ub r6,r9[6]
13313 + ld.ub r2,lr[4]
13314 + ld.ub r1,r8[0]
13315 + .text
13316 + .global sub3_sp
13317 +sub3_sp:
13318 + sub sp,0
13319 + sub sp,-4
13320 + sub sp,-512
13321 + sub sp,508
13322 + sub sp,4
13323 + sub sp,44
13324 + sub sp,8
13325 + sub sp,348
13326 + .text
13327 + .global sub3
13328 +sub3:
13329 + sub pc,0
13330 + sub r12,-1
13331 + sub r5,-128
13332 + sub r4,127
13333 + sub lr,1
13334 + sub r6,-41
13335 + sub r4,37
13336 + sub r12,56
13337 + .text
13338 + .global mov1
13339 +mov1:
13340 + mov pc,0
13341 + mov r12,-1
13342 + mov r5,-128
13343 + mov r4,127
13344 + mov lr,1
13345 + mov pc,14
13346 + mov r6,-100
13347 + mov lr,-122
13348 + .text
13349 + .global lddsp
13350 +lddsp:
13351 + lddsp pc,sp[0]
13352 + lddsp r12,sp[508]
13353 + lddsp r5,sp[256]
13354 + lddsp r4,sp[252]
13355 + lddsp lr,sp[4]
13356 + lddsp lr,sp[256]
13357 + lddsp r12,sp[20]
13358 + lddsp r9,sp[472]
13359 + .text
13360 + .global lddpc
13361 +lddpc:
13362 + lddpc pc,pc[0]
13363 + lddpc r0,pc[508]
13364 + lddpc r8,pc[256]
13365 + lddpc r7,pc[252]
13366 + lddpc lr,pc[4]
13367 + lddpc sp,pc[472]
13368 + lddpc r6,pc[120]
13369 + lddpc r11,pc[28]
13370 + .text
13371 + .global stdsp
13372 +stdsp:
13373 + stdsp sp[0],pc
13374 + stdsp sp[508],r12
13375 + stdsp sp[256],r5
13376 + stdsp sp[252],r4
13377 + stdsp sp[4],lr
13378 + stdsp sp[304],pc
13379 + stdsp sp[256],r0
13380 + stdsp sp[336],r5
13381 + .text
13382 + .global cp2
13383 +cp2:
13384 + cp pc,0
13385 + cp r12,-1
13386 + cp r5,-32
13387 + cp r4,31
13388 + cp lr,1
13389 + cp r8,3
13390 + cp lr,16
13391 + cp r7,-26
13392 + .text
13393 + .global acr
13394 +acr:
13395 + acr pc
13396 + acr r12
13397 + acr r5
13398 + acr r4
13399 + acr lr
13400 + acr r2
13401 + acr r12
13402 + acr pc
13403 + .text
13404 + .global scr
13405 +scr:
13406 + scr pc
13407 + scr r12
13408 + scr r5
13409 + scr r4
13410 + scr lr
13411 + scr pc
13412 + scr r6
13413 + scr r1
13414 + .text
13415 + .global cpc0
13416 +cpc0:
13417 + cpc pc
13418 + cpc r12
13419 + cpc r5
13420 + cpc r4
13421 + cpc lr
13422 + cpc pc
13423 + cpc r4
13424 + cpc r9
13425 + .text
13426 + .global neg
13427 +neg:
13428 + neg pc
13429 + neg r12
13430 + neg r5
13431 + neg r4
13432 + neg lr
13433 + neg r7
13434 + neg r1
13435 + neg r9
13436 + .text
13437 + .global abs
13438 +abs:
13439 + abs pc
13440 + abs r12
13441 + abs r5
13442 + abs r4
13443 + abs lr
13444 + abs r6
13445 + abs r6
13446 + abs r4
13447 + .text
13448 + .global castu_b
13449 +castu_b:
13450 + castu.b pc
13451 + castu.b r12
13452 + castu.b r5
13453 + castu.b r4
13454 + castu.b lr
13455 + castu.b r7
13456 + castu.b sp
13457 + castu.b r9
13458 + .text
13459 + .global casts_b
13460 +casts_b:
13461 + casts.b pc
13462 + casts.b r12
13463 + casts.b r5
13464 + casts.b r4
13465 + casts.b lr
13466 + casts.b r11
13467 + casts.b r1
13468 + casts.b r10
13469 + .text
13470 + .global castu_h
13471 +castu_h:
13472 + castu.h pc
13473 + castu.h r12
13474 + castu.h r5
13475 + castu.h r4
13476 + castu.h lr
13477 + castu.h r10
13478 + castu.h r11
13479 + castu.h r1
13480 + .text
13481 + .global casts_h
13482 +casts_h:
13483 + casts.h pc
13484 + casts.h r12
13485 + casts.h r5
13486 + casts.h r4
13487 + casts.h lr
13488 + casts.h r0
13489 + casts.h r5
13490 + casts.h r9
13491 + .text
13492 + .global brev
13493 +brev:
13494 + brev pc
13495 + brev r12
13496 + brev r5
13497 + brev r4
13498 + brev lr
13499 + brev r5
13500 + brev r10
13501 + brev r8
13502 + .text
13503 + .global swap_h
13504 +swap_h:
13505 + swap.h pc
13506 + swap.h r12
13507 + swap.h r5
13508 + swap.h r4
13509 + swap.h lr
13510 + swap.h r7
13511 + swap.h r0
13512 + swap.h r8
13513 + .text
13514 + .global swap_b
13515 +swap_b:
13516 + swap.b pc
13517 + swap.b r12
13518 + swap.b r5
13519 + swap.b r4
13520 + swap.b lr
13521 + swap.b r10
13522 + swap.b r12
13523 + swap.b r1
13524 + .text
13525 + .global swap_bh
13526 +swap_bh:
13527 + swap.bh pc
13528 + swap.bh r12
13529 + swap.bh r5
13530 + swap.bh r4
13531 + swap.bh lr
13532 + swap.bh r9
13533 + swap.bh r4
13534 + swap.bh r1
13535 + .text
13536 + .global One_s_compliment
13537 +One_s_compliment:
13538 + com pc
13539 + com r12
13540 + com r5
13541 + com r4
13542 + com lr
13543 + com r2
13544 + com r2
13545 + com r7
13546 + .text
13547 + .global tnbz
13548 +tnbz:
13549 + tnbz pc
13550 + tnbz r12
13551 + tnbz r5
13552 + tnbz r4
13553 + tnbz lr
13554 + tnbz r8
13555 + tnbz r12
13556 + tnbz pc
13557 + .text
13558 + .global rol
13559 +rol:
13560 + rol pc
13561 + rol r12
13562 + rol r5
13563 + rol r4
13564 + rol lr
13565 + rol r10
13566 + rol r9
13567 + rol r5
13568 + .text
13569 + .global ror
13570 +ror:
13571 + ror pc
13572 + ror r12
13573 + ror r5
13574 + ror r4
13575 + ror lr
13576 + ror r8
13577 + ror r4
13578 + ror r7
13579 + .text
13580 + .global icall
13581 +icall:
13582 + icall pc
13583 + icall r12
13584 + icall r5
13585 + icall r4
13586 + icall lr
13587 + icall r3
13588 + icall r1
13589 + icall r3
13590 + .text
13591 + .global mustr
13592 +mustr:
13593 + mustr pc
13594 + mustr r12
13595 + mustr r5
13596 + mustr r4
13597 + mustr lr
13598 + mustr r1
13599 + mustr r4
13600 + mustr r12
13601 + .text
13602 + .global musfr
13603 +musfr:
13604 + musfr pc
13605 + musfr r12
13606 + musfr r5
13607 + musfr r4
13608 + musfr lr
13609 + musfr r11
13610 + musfr r12
13611 + musfr r2
13612 + .text
13613 + .global ret_cond
13614 +ret_cond:
13615 + reteq pc
13616 + retal r12
13617 + retls r5
13618 + retpl r4
13619 + retne lr
13620 + retgt r0
13621 + retgt r12
13622 + retge r10
13623 + .text
13624 + .global sr_cond
13625 +sr_cond:
13626 + sreq pc
13627 + sral r12
13628 + srls r5
13629 + srpl r4
13630 + srne lr
13631 + srlt r0
13632 + sral sp
13633 + srge r9
13634 + .text
13635 + .global ld_w3
13636 +ld_w3:
13637 + ld.w pc,pc[0]
13638 + ld.w r12,r12[124]
13639 + ld.w r5,r5[64]
13640 + ld.w r4,r4[60]
13641 + ld.w lr,lr[4]
13642 + ld.w sp,r2[52]
13643 + ld.w r9,r1[8]
13644 + ld.w r5,sp[60]
13645 + .text
13646 + .global ld_sh3
13647 +ld_sh3:
13648 + ld.sh pc,pc[0]
13649 + ld.sh r12,r12[14]
13650 + ld.sh r5,r5[8]
13651 + ld.sh r4,r4[6]
13652 + ld.sh lr,lr[2]
13653 + ld.sh r4,r2[8]
13654 + ld.sh sp,lr[10]
13655 + ld.sh r2,r11[2]
13656 + .text
13657 + .global ld_uh3
13658 +ld_uh3:
13659 + ld.uh pc,pc[0]
13660 + ld.uh r12,r12[14]
13661 + ld.uh r5,r5[8]
13662 + ld.uh r4,r4[6]
13663 + ld.uh lr,lr[2]
13664 + ld.uh r10,r0[10]
13665 + ld.uh r8,r11[8]
13666 + ld.uh r10,r2[12]
13667 + .text
13668 + .global st_w3
13669 +st_w3:
13670 + st.w pc[0],pc
13671 + st.w r12[60],r12
13672 + st.w r5[32],r5
13673 + st.w r4[28],r4
13674 + st.w lr[4],lr
13675 + st.w r7[44],r11
13676 + st.w r2[24],r6
13677 + st.w r4[12],r9
13678 + .text
13679 + .global st_h3
13680 +st_h3:
13681 + st.h pc[0],pc
13682 + st.h r12[14],r12
13683 + st.h r5[8],r5
13684 + st.h r4[6],r4
13685 + st.h lr[2],lr
13686 + st.h lr[10],r12
13687 + st.h r6[4],r0
13688 + st.h r5[12],sp
13689 + .text
13690 + .global st_b3
13691 +st_b3:
13692 + st.b pc[0],pc
13693 + st.b r12[7],r12
13694 + st.b r5[4],r5
13695 + st.b r4[3],r4
13696 + st.b lr[1],lr
13697 + st.b r12[6],r9
13698 + st.b r2[3],lr
13699 + st.b r1[3],r11
13700 + .text
13701 + .global ldd
13702 +ldd:
13703 + ld.d r0,pc
13704 + ld.d r14,r12
13705 + ld.d r8,r5
13706 + ld.d r6,r4
13707 + ld.d r2,lr
13708 + ld.d r14,r7
13709 + ld.d r4,r4
13710 + ld.d r14,pc
13711 + .text
13712 + .global ldd_postinc
13713 +ldd_postinc:
13714 + ld.d r0,pc++
13715 + ld.d r14,r12++
13716 + ld.d r8,r5++
13717 + ld.d r6,r4++
13718 + ld.d r2,lr++
13719 + ld.d r14,r5++
13720 + ld.d r12,r11++
13721 + ld.d r2,r12++
13722 + .text
13723 + .global ldd_predec
13724 +ldd_predec:
13725 + ld.d r0,--pc
13726 + ld.d r14,--r12
13727 + ld.d r8,--r5
13728 + ld.d r6,--r4
13729 + ld.d r2,--lr
13730 + ld.d r8,--r0
13731 + ld.d r10,--pc
13732 + ld.d r2,--r4
13733 + .text
13734 + .global std
13735 +std:
13736 + st.d pc,r0
13737 + st.d r12,r14
13738 + st.d r5,r8
13739 + st.d r4,r6
13740 + st.d lr,r2
13741 + st.d r0,r12
13742 + st.d sp,r4
13743 + st.d r12,r12
13744 + .text
13745 + .global std_postinc
13746 +std_postinc:
13747 + st.d pc++,r0
13748 + st.d r12++,r14
13749 + st.d r5++,r8
13750 + st.d r4++,r6
13751 + st.d lr++,r2
13752 + st.d sp++,r6
13753 + st.d r10++,r6
13754 + st.d r7++,r2
13755 + .text
13756 + .global std_predec
13757 +std_predec:
13758 + st.d --pc,r0
13759 + st.d --r12,r14
13760 + st.d --r5,r8
13761 + st.d --r4,r6
13762 + st.d --lr,r2
13763 + st.d --r3,r6
13764 + st.d --lr,r2
13765 + st.d --r0,r4
13766 + .text
13767 + .global mul
13768 +mul:
13769 + mul pc,pc
13770 + mul r12,r12
13771 + mul r5,r5
13772 + mul r4,r4
13773 + mul lr,lr
13774 + mul r10,lr
13775 + mul r0,r8
13776 + mul r8,r5
13777 + .text
13778 + .global asr_imm5
13779 +asr_imm5:
13780 + asr pc,0
13781 + asr r12,31
13782 + asr r5,16
13783 + asr r4,15
13784 + asr lr,1
13785 + asr r6,23
13786 + asr r6,18
13787 + asr r5,8
13788 + .text
13789 + .global lsl_imm5
13790 +lsl_imm5:
13791 + lsl pc,0
13792 + lsl r12,31
13793 + lsl r5,16
13794 + lsl r4,15
13795 + lsl lr,1
13796 + lsl r12,13
13797 + lsl r6,16
13798 + lsl r1,25
13799 + .text
13800 + .global lsr_imm5
13801 +lsr_imm5:
13802 + lsr pc,0
13803 + lsr r12,31
13804 + lsr r5,16
13805 + lsr r4,15
13806 + lsr lr,1
13807 + lsr r0,1
13808 + lsr r8,10
13809 + lsr r7,26
13810 + .text
13811 + .global sbr
13812 +sbr:
13813 + sbr pc,0
13814 + sbr r12,31
13815 + sbr r5,16
13816 + sbr r4,15
13817 + sbr lr,1
13818 + sbr r8,31
13819 + sbr r6,22
13820 + sbr r1,23
13821 + .text
13822 + .global cbr
13823 +cbr:
13824 + cbr pc,0
13825 + cbr r12,31
13826 + cbr r5,16
13827 + cbr r4,15
13828 + cbr lr,1
13829 + cbr r12,10
13830 + cbr r7,22
13831 + cbr r8,9
13832 + .text
13833 + .global brc1
13834 +brc1:
13835 + breq 0
13836 + brpl -2
13837 + brge -256
13838 + brcs 254
13839 + brne 2
13840 + brcs 230
13841 + breq -18
13842 + breq 12
13843 + .text
13844 + .global rjmp
13845 +rjmp:
13846 + rjmp 0
13847 + rjmp -2
13848 + rjmp -1024
13849 + rjmp 1022
13850 + rjmp 2
13851 + rjmp -962
13852 + rjmp 14
13853 + rjmp -516
13854 + .text
13855 + .global rcall1
13856 +rcall1:
13857 + rcall 0
13858 + rcall -2
13859 + rcall -1024
13860 + rcall 1022
13861 + rcall 2
13862 + rcall 216
13863 + rcall -530
13864 + rcall -972
13865 + .text
13866 + .global acall
13867 +acall:
13868 + acall 0
13869 + acall 1020
13870 + acall 512
13871 + acall 508
13872 + acall 4
13873 + acall 356
13874 + acall 304
13875 + acall 172
13876 + .text
13877 + .global scall
13878 +scall:
13879 + scall
13880 + scall
13881 + scall
13882 + scall
13883 + scall
13884 + scall
13885 + scall
13886 + scall
13887 + .text
13888 + .global popm
13889 +popm:
13890 + /* popm with no argument fails currently */
13891 + popm pc
13892 + popm r0-r11,pc,r12=-1
13893 + popm lr
13894 + popm r0-r11,pc,r12=1
13895 + popm r0-r3
13896 + popm r4-r10,pc
13897 + popm r0-r3,r11,pc,r12=0
13898 + popm r0-r7,r10-r12,lr
13899 + .text
13900 + .global pushm
13901 +pushm:
13902 + pushm pc
13903 + pushm r0-r12,lr,pc
13904 + pushm pc
13905 + pushm r0-r12,lr
13906 + pushm r0-r3
13907 + pushm r8-r10,lr,pc
13908 + pushm r0-r3,r10
13909 + pushm r8-r9,r12
13910 + .text
13911 + .global popm_n
13912 +popm_n:
13913 + popm pc
13914 + popm r0-r11,pc,r12=-1
13915 + popm lr
13916 + popm r0-r11,pc,r12=1
13917 + popm r0-r3
13918 + popm r4-r10,pc
13919 + popm r0-r3,r11,pc,r12=0
13920 + popm r0-r7,r10-r12,lr
13921 + .text
13922 + .global pushm_n
13923 +pushm_n:
13924 + pushm pc
13925 + pushm r0-r12,lr,pc
13926 + pushm pc
13927 + pushm r0-r12,lr
13928 + pushm r0-r3
13929 + pushm r8-r10,lr,pc
13930 + pushm r0-r3,r10
13931 + pushm r8-r9,r12
13932 + .text
13933 + .global csrfcz
13934 +csrfcz:
13935 + csrfcz 0
13936 + csrfcz 31
13937 + csrfcz 16
13938 + csrfcz 15
13939 + csrfcz 1
13940 + csrfcz 5
13941 + csrfcz 13
13942 + csrfcz 23
13943 + .text
13944 + .global ssrf
13945 +ssrf:
13946 + ssrf 0
13947 + ssrf 31
13948 + ssrf 16
13949 + ssrf 15
13950 + ssrf 1
13951 + ssrf 29
13952 + ssrf 13
13953 + ssrf 13
13954 + .text
13955 + .global csrf
13956 +csrf:
13957 + csrf 0
13958 + csrf 31
13959 + csrf 16
13960 + csrf 15
13961 + csrf 1
13962 + csrf 10
13963 + csrf 15
13964 + csrf 11
13965 + .text
13966 + .global rete
13967 +rete:
13968 + rete
13969 + .text
13970 + .global rets
13971 +rets:
13972 + rets
13973 + .text
13974 + .global retd
13975 +retd:
13976 + retd
13977 + .text
13978 + .global retj
13979 +retj:
13980 + retj
13981 + .text
13982 + .global tlbr
13983 +tlbr:
13984 + tlbr
13985 + .text
13986 + .global tlbs
13987 +tlbs:
13988 + tlbs
13989 + .text
13990 + .global tlbw
13991 +tlbw:
13992 + tlbw
13993 + .text
13994 + .global breakpoint
13995 +breakpoint:
13996 + breakpoint
13997 + .text
13998 + .global incjosp
13999 +incjosp:
14000 + incjosp 1
14001 + incjosp 2
14002 + incjosp 3
14003 + incjosp 4
14004 + incjosp -4
14005 + incjosp -3
14006 + incjosp -2
14007 + incjosp -1
14008 + .text
14009 + .global nop
14010 +nop:
14011 + nop
14012 + .text
14013 + .global popjc
14014 +popjc:
14015 + popjc
14016 + .text
14017 + .global pushjc
14018 +pushjc:
14019 + pushjc
14020 + .text
14021 + .global add2
14022 +add2:
14023 + add pc,pc,pc<<0
14024 + add r12,r12,r12<<3
14025 + add r5,r5,r5<<2
14026 + add r4,r4,r4<<1
14027 + add lr,lr,lr<<1
14028 + add r0,r12,r0<<1
14029 + add r9,r12,r4<<0
14030 + add r12,r12,r7<<2
14031 + .text
14032 + .global sub2
14033 +sub2:
14034 + sub pc,pc,pc<<0
14035 + sub r12,r12,r12<<3
14036 + sub r5,r5,r5<<2
14037 + sub r4,r4,r4<<1
14038 + sub lr,lr,lr<<1
14039 + sub sp,r3,r4<<0
14040 + sub r3,r7,r3<<0
14041 + sub sp,r10,sp<<1
14042 + .text
14043 + .global divu
14044 +divu:
14045 + divu pc,pc,pc
14046 + divu r12,r12,r12
14047 + divu r5,r5,r5
14048 + divu r4,r4,r4
14049 + divu lr,lr,lr
14050 + divu sp,r4,pc
14051 + divu r5,r5,sp
14052 + divu r10,sp,r0
14053 + .text
14054 + .global addhh_w
14055 +addhh_w:
14056 + addhh.w pc,pc:b,pc:b
14057 + addhh.w r12,r12:t,r12:t
14058 + addhh.w r5,r5:t,r5:t
14059 + addhh.w r4,r4:b,r4:b
14060 + addhh.w lr,lr:t,lr:t
14061 + addhh.w r0,r0:b,r3:b
14062 + addhh.w lr,r12:t,r7:b
14063 + addhh.w r3,r10:t,r2:b
14064 + .text
14065 + .global subhh_w
14066 +subhh_w:
14067 + subhh.w pc,pc:b,pc:b
14068 + subhh.w r12,r12:t,r12:t
14069 + subhh.w r5,r5:t,r5:t
14070 + subhh.w r4,r4:b,r4:b
14071 + subhh.w lr,lr:t,lr:t
14072 + subhh.w r10,r1:t,r7:b
14073 + subhh.w pc,r10:t,lr:t
14074 + subhh.w r3,r0:t,r12:b
14075 + .text
14076 + .global adc
14077 +adc:
14078 + adc pc,pc,pc
14079 + adc r12,r12,r12
14080 + adc r5,r5,r5
14081 + adc r4,r4,r4
14082 + adc lr,lr,lr
14083 + adc r4,r0,r7
14084 + adc sp,r4,r3
14085 + adc r2,r12,r0
14086 + .text
14087 + .global sbc
14088 +sbc:
14089 + sbc pc,pc,pc
14090 + sbc r12,r12,r12
14091 + sbc r5,r5,r5
14092 + sbc r4,r4,r4
14093 + sbc lr,lr,lr
14094 + sbc r6,r7,r9
14095 + sbc r0,r8,r5
14096 + sbc r1,r0,r4
14097 + .text
14098 + .global mul_2
14099 +mul_2:
14100 + mul pc,pc,pc
14101 + mul r12,r12,r12
14102 + mul r5,r5,r5
14103 + mul r4,r4,r4
14104 + mul lr,lr,lr
14105 + mul pc,r0,r0
14106 + mul r8,pc,lr
14107 + mul r4,r12,pc
14108 + .text
14109 + .global mac
14110 +mac:
14111 + mac pc,pc,pc
14112 + mac r12,r12,r12
14113 + mac r5,r5,r5
14114 + mac r4,r4,r4
14115 + mac lr,lr,lr
14116 + mac r10,r4,r0
14117 + mac r7,lr,r0
14118 + mac r2,r9,r12
14119 + .text
14120 + .global mulsd
14121 +mulsd:
14122 + muls.d pc,pc,pc
14123 + muls.d r12,r12,r12
14124 + muls.d r5,r5,r5
14125 + muls.d r4,r4,r4
14126 + muls.d lr,lr,lr
14127 + muls.d r2,r8,lr
14128 + muls.d r4,r0,r11
14129 + muls.d r5,lr,r6
14130 + .text
14131 + .global macsd
14132 +macsd:
14133 + macs.d r0,pc,pc
14134 + macs.d r14,r12,r12
14135 + macs.d r8,r5,r5
14136 + macs.d r6,r4,r4
14137 + macs.d r2,lr,lr
14138 + macs.d r8,r1,r9
14139 + macs.d r14,r8,r8
14140 + macs.d r4,r3,r12
14141 + .text
14142 + .global mulud
14143 +mulud:
14144 + mulu.d r0,pc,pc
14145 + mulu.d r14,r12,r12
14146 + mulu.d r8,r5,r5
14147 + mulu.d r6,r4,r4
14148 + mulu.d r2,lr,lr
14149 + mulu.d r6,r5,r0
14150 + mulu.d r4,r6,r1
14151 + mulu.d r8,r8,r2
14152 + .text
14153 + .global macud
14154 +macud:
14155 + macu.d r0,pc,pc
14156 + macu.d r14,r12,r12
14157 + macu.d r8,r5,r5
14158 + macu.d r6,r4,r4
14159 + macu.d r2,lr,lr
14160 + macu.d r6,sp,r11
14161 + macu.d r2,r4,r8
14162 + macu.d r6,r10,r9
14163 + .text
14164 + .global asr_1
14165 +asr_1:
14166 + asr pc,pc,pc
14167 + asr r12,r12,r12
14168 + asr r5,r5,r5
14169 + asr r4,r4,r4
14170 + asr lr,lr,lr
14171 + asr pc,r6,pc
14172 + asr r0,r6,r12
14173 + asr r4,sp,r0
14174 + .text
14175 + .global lsl_1
14176 +lsl_1:
14177 + lsl pc,pc,pc
14178 + lsl r12,r12,r12
14179 + lsl r5,r5,r5
14180 + lsl r4,r4,r4
14181 + lsl lr,lr,lr
14182 + lsl lr,r5,lr
14183 + lsl r5,pc,r3
14184 + lsl r1,pc,r9
14185 + .text
14186 + .global lsr_1
14187 +lsr_1:
14188 + lsr pc,pc,pc
14189 + lsr r12,r12,r12
14190 + lsr r5,r5,r5
14191 + lsr r4,r4,r4
14192 + lsr lr,lr,lr
14193 + lsr r2,r4,r1
14194 + lsr r5,r1,r6
14195 + lsr sp,r6,r7
14196 + .text
14197 + .global xchg
14198 +xchg:
14199 + xchg pc,pc,pc
14200 + xchg r12,r12,r12
14201 + xchg r5,r5,r5
14202 + xchg r4,r4,r4
14203 + xchg lr,lr,lr
14204 + xchg lr,r4,sp
14205 + xchg r1,r5,r12
14206 + xchg lr,r12,r0
14207 + .text
14208 + .global max
14209 +max:
14210 + max pc,pc,pc
14211 + max r12,r12,r12
14212 + max r5,r5,r5
14213 + max r4,r4,r4
14214 + max lr,lr,lr
14215 + max lr,r2,sp
14216 + max r4,r10,r9
14217 + max lr,r9,lr
14218 + .text
14219 + .global min
14220 +min:
14221 + min pc,pc,pc
14222 + min r12,r12,r12
14223 + min r5,r5,r5
14224 + min r4,r4,r4
14225 + min lr,lr,lr
14226 + min r9,r7,r8
14227 + min sp,r5,r5
14228 + min r4,r1,r4
14229 + .text
14230 + .global addabs
14231 +addabs:
14232 + addabs pc,pc,pc
14233 + addabs r12,r12,r12
14234 + addabs r5,r5,r5
14235 + addabs r4,r4,r4
14236 + addabs lr,lr,lr
14237 + addabs r7,r10,r0
14238 + addabs r9,r9,r7
14239 + addabs r2,r8,r12
14240 + .text
14241 + .global mulnhh_w
14242 +mulnhh_w:
14243 + mulnhh.w pc,pc:b,pc:b
14244 + mulnhh.w r12,r12:t,r12:t
14245 + mulnhh.w r5,r5:t,r5:t
14246 + mulnhh.w r4,r4:b,r4:b
14247 + mulnhh.w lr,lr:t,lr:t
14248 + mulnhh.w r11,sp:t,r9:b
14249 + mulnhh.w sp,r4:b,lr:t
14250 + mulnhh.w r12,r2:t,r11:b
14251 + .text
14252 + .global mulnwh_d
14253 +mulnwh_d:
14254 + mulnwh.d r0,pc,pc:b
14255 + mulnwh.d r14,r12,r12:t
14256 + mulnwh.d r8,r5,r5:t
14257 + mulnwh.d r6,r4,r4:b
14258 + mulnwh.d r2,lr,lr:t
14259 + mulnwh.d r14,r3,r2:t
14260 + mulnwh.d r4,r5,r9:b
14261 + mulnwh.d r12,r4,r4:t
14262 + .text
14263 + .global machh_w
14264 +machh_w:
14265 + machh.w pc,pc:b,pc:b
14266 + machh.w r12,r12:t,r12:t
14267 + machh.w r5,r5:t,r5:t
14268 + machh.w r4,r4:b,r4:b
14269 + machh.w lr,lr:t,lr:t
14270 + machh.w lr,r5:b,r1:t
14271 + machh.w r9,r6:b,r7:b
14272 + machh.w r5,lr:t,r12:b
14273 + .text
14274 + .global machh_d
14275 +machh_d:
14276 + machh.d r0,pc:b,pc:b
14277 + machh.d r14,r12:t,r12:t
14278 + machh.d r8,r5:t,r5:t
14279 + machh.d r6,r4:b,r4:b
14280 + machh.d r2,lr:t,lr:t
14281 + machh.d r10,r0:b,r8:b
14282 + machh.d r14,r4:b,r5:t
14283 + machh.d r8,r0:b,r4:t
14284 + .text
14285 + .global macsathh_w
14286 +macsathh_w:
14287 + macsathh.w pc,pc:b,pc:b
14288 + macsathh.w r12,r12:t,r12:t
14289 + macsathh.w r5,r5:t,r5:t
14290 + macsathh.w r4,r4:b,r4:b
14291 + macsathh.w lr,lr:t,lr:t
14292 + macsathh.w r7,r7:t,pc:t
14293 + macsathh.w r4,r2:t,r4:b
14294 + macsathh.w r4,r8:t,r3:t
14295 + .text
14296 + .global mulhh_w
14297 +mulhh_w:
14298 + mulhh.w pc,pc:b,pc:b
14299 + mulhh.w r12,r12:t,r12:t
14300 + mulhh.w r5,r5:t,r5:t
14301 + mulhh.w r4,r4:b,r4:b
14302 + mulhh.w lr,lr:t,lr:t
14303 + mulhh.w r7,r4:t,r9:b
14304 + mulhh.w pc,r3:t,r7:t
14305 + mulhh.w pc,r4:b,r9:t
14306 + .text
14307 + .global mulsathh_h
14308 +mulsathh_h:
14309 + mulsathh.h pc,pc:b,pc:b
14310 + mulsathh.h r12,r12:t,r12:t
14311 + mulsathh.h r5,r5:t,r5:t
14312 + mulsathh.h r4,r4:b,r4:b
14313 + mulsathh.h lr,lr:t,lr:t
14314 + mulsathh.h r3,r1:b,sp:b
14315 + mulsathh.h r11,lr:t,r11:b
14316 + mulsathh.h r8,r8:b,r11:t
14317 + .text
14318 + .global mulsathh_w
14319 +mulsathh_w:
14320 + mulsathh.w pc,pc:b,pc:b
14321 + mulsathh.w r12,r12:t,r12:t
14322 + mulsathh.w r5,r5:t,r5:t
14323 + mulsathh.w r4,r4:b,r4:b
14324 + mulsathh.w lr,lr:t,lr:t
14325 + mulsathh.w lr,r11:t,r6:b
14326 + mulsathh.w r6,r6:b,r7:t
14327 + mulsathh.w r10,r2:b,r3:b
14328 + .text
14329 + .global mulsatrndhh_h
14330 +mulsatrndhh_h:
14331 + mulsatrndhh.h pc,pc:b,pc:b
14332 + mulsatrndhh.h r12,r12:t,r12:t
14333 + mulsatrndhh.h r5,r5:t,r5:t
14334 + mulsatrndhh.h r4,r4:b,r4:b
14335 + mulsatrndhh.h lr,lr:t,lr:t
14336 + mulsatrndhh.h r11,r6:b,r9:b
14337 + mulsatrndhh.h r11,r3:b,r8:t
14338 + mulsatrndhh.h r5,sp:t,r7:t
14339 + .text
14340 + .global mulsatrndwh_w
14341 +mulsatrndwh_w:
14342 + mulsatrndwh.w pc,pc,pc:b
14343 + mulsatrndwh.w r12,r12,r12:t
14344 + mulsatrndwh.w r5,r5,r5:t
14345 + mulsatrndwh.w r4,r4,r4:b
14346 + mulsatrndwh.w lr,lr,lr:t
14347 + mulsatrndwh.w r5,r12,r0:b
14348 + mulsatrndwh.w r7,r10,pc:b
14349 + mulsatrndwh.w r10,r8,r5:t
14350 + .text
14351 + .global macwh_d
14352 +macwh_d:
14353 + macwh.d r0,pc,pc:b
14354 + macwh.d r14,r12,r12:t
14355 + macwh.d r8,r5,r5:t
14356 + macwh.d r6,r4,r4:b
14357 + macwh.d r2,lr,lr:t
14358 + macwh.d r4,r10,r12:t
14359 + macwh.d r4,r7,sp:b
14360 + macwh.d r14,r9,r11:b
14361 + .text
14362 + .global mulwh_d
14363 +mulwh_d:
14364 + mulwh.d r0,pc,pc:b
14365 + mulwh.d r14,r12,r12:t
14366 + mulwh.d r8,r5,r5:t
14367 + mulwh.d r6,r4,r4:b
14368 + mulwh.d r2,lr,lr:t
14369 + mulwh.d r12,r5,r1:b
14370 + mulwh.d r0,r1,r3:t
14371 + mulwh.d r0,r9,r2:b
14372 + .text
14373 + .global mulsatwh_w
14374 +mulsatwh_w:
14375 + mulsatwh.w pc,pc,pc:b
14376 + mulsatwh.w r12,r12,r12:t
14377 + mulsatwh.w r5,r5,r5:t
14378 + mulsatwh.w r4,r4,r4:b
14379 + mulsatwh.w lr,lr,lr:t
14380 + mulsatwh.w r11,pc,r10:t
14381 + mulsatwh.w sp,r12,r9:t
14382 + mulsatwh.w r0,r3,r2:t
14383 + .text
14384 + .global ldw7
14385 +ldw7:
14386 + ld.w pc,pc[pc:b<<2]
14387 + ld.w r12,r12[r12:t<<2]
14388 + ld.w r5,r5[r5:u<<2]
14389 + ld.w r4,r4[r4:l<<2]
14390 + ld.w lr,lr[lr:l<<2]
14391 + ld.w r9,r10[r6:l<<2]
14392 + ld.w r2,r10[r10:b<<2]
14393 + ld.w r11,r5[pc:b<<2]
14394 + .text
14395 + .global satadd_w
14396 +satadd_w:
14397 + satadd.w pc,pc,pc
14398 + satadd.w r12,r12,r12
14399 + satadd.w r5,r5,r5
14400 + satadd.w r4,r4,r4
14401 + satadd.w lr,lr,lr
14402 + satadd.w r4,r8,r11
14403 + satadd.w r3,r12,r6
14404 + satadd.w r3,lr,r9
14405 + .text
14406 + .global satsub_w1
14407 +satsub_w1:
14408 + satsub.w pc,pc,pc
14409 + satsub.w r12,r12,r12
14410 + satsub.w r5,r5,r5
14411 + satsub.w r4,r4,r4
14412 + satsub.w lr,lr,lr
14413 + satsub.w r8,sp,r0
14414 + satsub.w r9,r8,r4
14415 + satsub.w pc,lr,r2
14416 + .text
14417 + .global satadd_h
14418 +satadd_h:
14419 + satadd.h pc,pc,pc
14420 + satadd.h r12,r12,r12
14421 + satadd.h r5,r5,r5
14422 + satadd.h r4,r4,r4
14423 + satadd.h lr,lr,lr
14424 + satadd.h r7,r3,r9
14425 + satadd.h r1,r0,r2
14426 + satadd.h r1,r4,lr
14427 + .text
14428 + .global satsub_h
14429 +satsub_h:
14430 + satsub.h pc,pc,pc
14431 + satsub.h r12,r12,r12
14432 + satsub.h r5,r5,r5
14433 + satsub.h r4,r4,r4
14434 + satsub.h lr,lr,lr
14435 + satsub.h lr,lr,r3
14436 + satsub.h r11,r6,r5
14437 + satsub.h r3,sp,r0
14438 + .text
14439 + .global mul3
14440 +mul3:
14441 + mul pc,pc,0
14442 + mul r12,r12,-1
14443 + mul r5,r5,-128
14444 + mul r4,r4,127
14445 + mul lr,lr,1
14446 + mul r12,r2,-7
14447 + mul r1,pc,95
14448 + mul r4,r6,19
14449 + .text
14450 + .global rsub2
14451 +rsub2:
14452 + rsub pc,pc,0
14453 + rsub r12,r12,-1
14454 + rsub r5,r5,-128
14455 + rsub r4,r4,127
14456 + rsub lr,lr,1
14457 + rsub r9,lr,96
14458 + rsub r11,r1,56
14459 + rsub r0,r7,-87
14460 + .text
14461 + .global clz
14462 +clz:
14463 + clz pc,pc
14464 + clz r12,r12
14465 + clz r5,r5
14466 + clz r4,r4
14467 + clz lr,lr
14468 + clz r2,r3
14469 + clz r5,r11
14470 + clz pc,r3
14471 + .text
14472 + .global cpc1
14473 +cpc1:
14474 + cpc pc,pc
14475 + cpc r12,r12
14476 + cpc r5,r5
14477 + cpc r4,r4
14478 + cpc lr,lr
14479 + cpc pc,r4
14480 + cpc r5,r9
14481 + cpc r6,r7
14482 + .text
14483 + .global asr3
14484 +asr3:
14485 + asr pc,pc,0
14486 + asr r12,r12,31
14487 + asr r5,r5,16
14488 + asr r4,r4,15
14489 + asr lr,lr,1
14490 + asr r4,r11,19
14491 + asr sp,pc,26
14492 + asr r11,sp,8
14493 + .text
14494 + .global lsl3
14495 +lsl3:
14496 + lsl pc,pc,0
14497 + lsl r12,r12,31
14498 + lsl r5,r5,16
14499 + lsl r4,r4,15
14500 + lsl lr,lr,1
14501 + lsl r8,r10,17
14502 + lsl r2,lr,3
14503 + lsl lr,r11,14
14504 + .text
14505 + .global lsr3
14506 +lsr3:
14507 + lsr pc,pc,0
14508 + lsr r12,r12,31
14509 + lsr r5,r5,16
14510 + lsr r4,r4,15
14511 + lsr lr,lr,1
14512 + lsr r4,r3,31
14513 + lsr pc,r9,14
14514 + lsr r3,r0,6
14515 +/* .text
14516 + .global extract_b
14517 +extract_b:
14518 + extract.b pc,pc:b
14519 + extract.b r12,r12:t
14520 + extract.b r5,r5:u
14521 + extract.b r4,r4:l
14522 + extract.b lr,lr:l
14523 + extract.b r2,r5:l
14524 + extract.b r12,r3:l
14525 + extract.b sp,r3:l
14526 + .text
14527 + .global insert_b
14528 +insert_b:
14529 + insert.b pc:b,pc
14530 + insert.b r12:t,r12
14531 + insert.b r5:u,r5
14532 + insert.b r4:l,r4
14533 + insert.b lr:l,lr
14534 + insert.b r12:u,r3
14535 + insert.b r10:l,lr
14536 + insert.b r11:l,r12
14537 + .text
14538 + .global extract_h
14539 +extract_h:
14540 + extract.h pc,pc:b
14541 + extract.h r12,r12:t
14542 + extract.h r5,r5:t
14543 + extract.h r4,r4:b
14544 + extract.h lr,lr:t
14545 + extract.h r11,lr:b
14546 + extract.h r10,r0:b
14547 + extract.h r11,r12:b
14548 + .text
14549 + .global insert_h
14550 +insert_h:
14551 + insert.h pc:b,pc
14552 + insert.h r12:t,r12
14553 + insert.h r5:t,r5
14554 + insert.h r4:b,r4
14555 + insert.h lr:t,lr
14556 + insert.h r12:t,r11
14557 + insert.h r7:b,r6
14558 + insert.h r1:t,r11 */
14559 + .text
14560 + .global movc1
14561 +movc1:
14562 + moveq pc,pc
14563 + moval r12,r12
14564 + movls r5,r5
14565 + movpl r4,r4
14566 + movne lr,lr
14567 + movne pc,r11
14568 + movmi r10,r2
14569 + movls r8,r12
14570 + .text
14571 + .global padd_h
14572 +padd_h:
14573 + padd.h pc,pc,pc
14574 + padd.h r12,r12,r12
14575 + padd.h r5,r5,r5
14576 + padd.h r4,r4,r4
14577 + padd.h lr,lr,lr
14578 + padd.h r8,r2,r7
14579 + padd.h r0,r0,r3
14580 + padd.h sp,r11,r6
14581 + .text
14582 + .global psub_h
14583 +psub_h:
14584 + psub.h pc,pc,pc
14585 + psub.h r12,r12,r12
14586 + psub.h r5,r5,r5
14587 + psub.h r4,r4,r4
14588 + psub.h lr,lr,lr
14589 + psub.h lr,r6,r8
14590 + psub.h r0,r1,sp
14591 + psub.h pc,pc,sp
14592 + .text
14593 + .global paddx_h
14594 +paddx_h:
14595 + paddx.h pc,pc,pc
14596 + paddx.h r12,r12,r12
14597 + paddx.h r5,r5,r5
14598 + paddx.h r4,r4,r4
14599 + paddx.h lr,lr,lr
14600 + paddx.h pc,pc,r1
14601 + paddx.h r10,r4,r5
14602 + paddx.h r5,pc,r2
14603 + .text
14604 + .global psubx_h
14605 +psubx_h:
14606 + psubx.h pc,pc,pc
14607 + psubx.h r12,r12,r12
14608 + psubx.h r5,r5,r5
14609 + psubx.h r4,r4,r4
14610 + psubx.h lr,lr,lr
14611 + psubx.h r5,r12,r5
14612 + psubx.h r3,r8,r3
14613 + psubx.h r5,r2,r3
14614 + .text
14615 + .global padds_sh
14616 +padds_sh:
14617 + padds.sh pc,pc,pc
14618 + padds.sh r12,r12,r12
14619 + padds.sh r5,r5,r5
14620 + padds.sh r4,r4,r4
14621 + padds.sh lr,lr,lr
14622 + padds.sh r9,lr,r2
14623 + padds.sh r6,r8,r1
14624 + padds.sh r6,r4,r10
14625 + .text
14626 + .global psubs_sh
14627 +psubs_sh:
14628 + psubs.sh pc,pc,pc
14629 + psubs.sh r12,r12,r12
14630 + psubs.sh r5,r5,r5
14631 + psubs.sh r4,r4,r4
14632 + psubs.sh lr,lr,lr
14633 + psubs.sh r6,lr,r11
14634 + psubs.sh r2,r12,r4
14635 + psubs.sh r0,r9,r0
14636 + .text
14637 + .global paddxs_sh
14638 +paddxs_sh:
14639 + paddxs.sh pc,pc,pc
14640 + paddxs.sh r12,r12,r12
14641 + paddxs.sh r5,r5,r5
14642 + paddxs.sh r4,r4,r4
14643 + paddxs.sh lr,lr,lr
14644 + paddxs.sh r0,r3,r9
14645 + paddxs.sh pc,r10,r11
14646 + paddxs.sh pc,r10,pc
14647 + .text
14648 + .global psubxs_sh
14649 +psubxs_sh:
14650 + psubxs.sh pc,pc,pc
14651 + psubxs.sh r12,r12,r12
14652 + psubxs.sh r5,r5,r5
14653 + psubxs.sh r4,r4,r4
14654 + psubxs.sh lr,lr,lr
14655 + psubxs.sh r7,r4,r4
14656 + psubxs.sh r7,r8,r3
14657 + psubxs.sh pc,r6,r5
14658 + .text
14659 + .global padds_uh
14660 +padds_uh:
14661 + padds.uh pc,pc,pc
14662 + padds.uh r12,r12,r12
14663 + padds.uh r5,r5,r5
14664 + padds.uh r4,r4,r4
14665 + padds.uh lr,lr,lr
14666 + padds.uh r12,r11,r7
14667 + padds.uh r7,r8,lr
14668 + padds.uh r6,r9,r7
14669 + .text
14670 + .global psubs_uh
14671 +psubs_uh:
14672 + psubs.uh pc,pc,pc
14673 + psubs.uh r12,r12,r12
14674 + psubs.uh r5,r5,r5
14675 + psubs.uh r4,r4,r4
14676 + psubs.uh lr,lr,lr
14677 + psubs.uh lr,r10,r6
14678 + psubs.uh sp,r2,pc
14679 + psubs.uh r2,r9,r2
14680 + .text
14681 + .global paddxs_uh
14682 +paddxs_uh:
14683 + paddxs.uh pc,pc,pc
14684 + paddxs.uh r12,r12,r12
14685 + paddxs.uh r5,r5,r5
14686 + paddxs.uh r4,r4,r4
14687 + paddxs.uh lr,lr,lr
14688 + paddxs.uh r7,r9,r5
14689 + paddxs.uh r9,r1,r4
14690 + paddxs.uh r5,r2,r3
14691 + .text
14692 + .global psubxs_uh
14693 +psubxs_uh:
14694 + psubxs.uh pc,pc,pc
14695 + psubxs.uh r12,r12,r12
14696 + psubxs.uh r5,r5,r5
14697 + psubxs.uh r4,r4,r4
14698 + psubxs.uh lr,lr,lr
14699 + psubxs.uh sp,r5,sp
14700 + psubxs.uh sp,r6,r6
14701 + psubxs.uh r3,r11,r8
14702 + .text
14703 + .global paddh_sh
14704 +paddh_sh:
14705 + paddh.sh pc,pc,pc
14706 + paddh.sh r12,r12,r12
14707 + paddh.sh r5,r5,r5
14708 + paddh.sh r4,r4,r4
14709 + paddh.sh lr,lr,lr
14710 + paddh.sh r12,sp,r3
14711 + paddh.sh pc,r5,r3
14712 + paddh.sh r8,r8,sp
14713 + .text
14714 + .global psubh_sh
14715 +psubh_sh:
14716 + psubh.sh pc,pc,pc
14717 + psubh.sh r12,r12,r12
14718 + psubh.sh r5,r5,r5
14719 + psubh.sh r4,r4,r4
14720 + psubh.sh lr,lr,lr
14721 + psubh.sh r1,r5,r8
14722 + psubh.sh r7,r3,r6
14723 + psubh.sh r4,r3,r3
14724 + .text
14725 + .global paddxh_sh
14726 +paddxh_sh:
14727 + paddxh.sh pc,pc,pc
14728 + paddxh.sh r12,r12,r12
14729 + paddxh.sh r5,r5,r5
14730 + paddxh.sh r4,r4,r4
14731 + paddxh.sh lr,lr,lr
14732 + paddxh.sh r6,r0,r4
14733 + paddxh.sh r9,r8,r9
14734 + paddxh.sh r3,r0,sp
14735 + .text
14736 + .global psubxh_sh
14737 +psubxh_sh:
14738 + psubxh.sh pc,pc,pc
14739 + psubxh.sh r12,r12,r12
14740 + psubxh.sh r5,r5,r5
14741 + psubxh.sh r4,r4,r4
14742 + psubxh.sh lr,lr,lr
14743 + psubxh.sh r4,pc,r12
14744 + psubxh.sh r8,r4,r6
14745 + psubxh.sh r12,r9,r4
14746 + .text
14747 + .global paddsub_h
14748 +paddsub_h:
14749 + paddsub.h pc,pc:b,pc:b
14750 + paddsub.h r12,r12:t,r12:t
14751 + paddsub.h r5,r5:t,r5:t
14752 + paddsub.h r4,r4:b,r4:b
14753 + paddsub.h lr,lr:t,lr:t
14754 + paddsub.h r5,r2:t,lr:b
14755 + paddsub.h r7,r1:b,r8:b
14756 + paddsub.h r6,r10:t,r5:t
14757 + .text
14758 + .global psubadd_h
14759 +psubadd_h:
14760 + psubadd.h pc,pc:b,pc:b
14761 + psubadd.h r12,r12:t,r12:t
14762 + psubadd.h r5,r5:t,r5:t
14763 + psubadd.h r4,r4:b,r4:b
14764 + psubadd.h lr,lr:t,lr:t
14765 + psubadd.h r9,r11:t,r8:t
14766 + psubadd.h r10,r7:t,lr:t
14767 + psubadd.h r6,pc:t,pc:b
14768 + .text
14769 + .global paddsubs_sh
14770 +paddsubs_sh:
14771 + paddsubs.sh pc,pc:b,pc:b
14772 + paddsubs.sh r12,r12:t,r12:t
14773 + paddsubs.sh r5,r5:t,r5:t
14774 + paddsubs.sh r4,r4:b,r4:b
14775 + paddsubs.sh lr,lr:t,lr:t
14776 + paddsubs.sh r0,lr:t,r0:b
14777 + paddsubs.sh r9,r2:t,r4:t
14778 + paddsubs.sh r12,r9:t,sp:t
14779 + .text
14780 + .global psubadds_sh
14781 +psubadds_sh:
14782 + psubadds.sh pc,pc:b,pc:b
14783 + psubadds.sh r12,r12:t,r12:t
14784 + psubadds.sh r5,r5:t,r5:t
14785 + psubadds.sh r4,r4:b,r4:b
14786 + psubadds.sh lr,lr:t,lr:t
14787 + psubadds.sh pc,lr:b,r1:t
14788 + psubadds.sh r11,r3:b,r12:b
14789 + psubadds.sh r10,r2:t,r8:t
14790 + .text
14791 + .global paddsubs_uh
14792 +paddsubs_uh:
14793 + paddsubs.uh pc,pc:b,pc:b
14794 + paddsubs.uh r12,r12:t,r12:t
14795 + paddsubs.uh r5,r5:t,r5:t
14796 + paddsubs.uh r4,r4:b,r4:b
14797 + paddsubs.uh lr,lr:t,lr:t
14798 + paddsubs.uh r9,r2:b,r3:b
14799 + paddsubs.uh sp,sp:b,r7:t
14800 + paddsubs.uh lr,r0:b,r10:t
14801 + .text
14802 + .global psubadds_uh
14803 +psubadds_uh:
14804 + psubadds.uh pc,pc:b,pc:b
14805 + psubadds.uh r12,r12:t,r12:t
14806 + psubadds.uh r5,r5:t,r5:t
14807 + psubadds.uh r4,r4:b,r4:b
14808 + psubadds.uh lr,lr:t,lr:t
14809 + psubadds.uh r12,r9:t,pc:t
14810 + psubadds.uh r8,r6:b,r8:b
14811 + psubadds.uh r8,r8:b,r4:b
14812 + .text
14813 + .global paddsubh_sh
14814 +paddsubh_sh:
14815 + paddsubh.sh pc,pc:b,pc:b
14816 + paddsubh.sh r12,r12:t,r12:t
14817 + paddsubh.sh r5,r5:t,r5:t
14818 + paddsubh.sh r4,r4:b,r4:b
14819 + paddsubh.sh lr,lr:t,lr:t
14820 + paddsubh.sh r8,r9:t,r9:b
14821 + paddsubh.sh r0,sp:t,r1:t
14822 + paddsubh.sh r3,r1:b,r0:t
14823 + .text
14824 + .global psubaddh_sh
14825 +psubaddh_sh:
14826 + psubaddh.sh pc,pc:b,pc:b
14827 + psubaddh.sh r12,r12:t,r12:t
14828 + psubaddh.sh r5,r5:t,r5:t
14829 + psubaddh.sh r4,r4:b,r4:b
14830 + psubaddh.sh lr,lr:t,lr:t
14831 + psubaddh.sh r7,r3:t,r10:b
14832 + psubaddh.sh r7,r2:t,r1:t
14833 + psubaddh.sh r11,r3:b,r6:b
14834 + .text
14835 + .global padd_b
14836 +padd_b:
14837 + padd.b pc,pc,pc
14838 + padd.b r12,r12,r12
14839 + padd.b r5,r5,r5
14840 + padd.b r4,r4,r4
14841 + padd.b lr,lr,lr
14842 + padd.b r2,r6,pc
14843 + padd.b r8,r9,r12
14844 + padd.b r5,r12,r3
14845 + .text
14846 + .global psub_b
14847 +psub_b:
14848 + psub.b pc,pc,pc
14849 + psub.b r12,r12,r12
14850 + psub.b r5,r5,r5
14851 + psub.b r4,r4,r4
14852 + psub.b lr,lr,lr
14853 + psub.b r0,r12,pc
14854 + psub.b r7,sp,r10
14855 + psub.b r5,sp,r12
14856 + .text
14857 + .global padds_sb
14858 +padds_sb:
14859 + padds.sb pc,pc,pc
14860 + padds.sb r12,r12,r12
14861 + padds.sb r5,r5,r5
14862 + padds.sb r4,r4,r4
14863 + padds.sb lr,lr,lr
14864 + padds.sb sp,r11,r4
14865 + padds.sb r11,r10,r11
14866 + padds.sb r5,r12,r6
14867 + .text
14868 + .global psubs_sb
14869 +psubs_sb:
14870 + psubs.sb pc,pc,pc
14871 + psubs.sb r12,r12,r12
14872 + psubs.sb r5,r5,r5
14873 + psubs.sb r4,r4,r4
14874 + psubs.sb lr,lr,lr
14875 + psubs.sb r7,r6,r8
14876 + psubs.sb r12,r10,r9
14877 + psubs.sb pc,r11,r0
14878 + .text
14879 + .global padds_ub
14880 +padds_ub:
14881 + padds.ub pc,pc,pc
14882 + padds.ub r12,r12,r12
14883 + padds.ub r5,r5,r5
14884 + padds.ub r4,r4,r4
14885 + padds.ub lr,lr,lr
14886 + padds.ub r3,r2,r11
14887 + padds.ub r10,r8,r1
14888 + padds.ub r11,r8,r10
14889 + .text
14890 + .global psubs_ub
14891 +psubs_ub:
14892 + psubs.ub pc,pc,pc
14893 + psubs.ub r12,r12,r12
14894 + psubs.ub r5,r5,r5
14895 + psubs.ub r4,r4,r4
14896 + psubs.ub lr,lr,lr
14897 + psubs.ub r0,r2,r7
14898 + psubs.ub lr,r5,r3
14899 + psubs.ub r6,r7,r9
14900 + .text
14901 + .global paddh_ub
14902 +paddh_ub:
14903 + paddh.ub pc,pc,pc
14904 + paddh.ub r12,r12,r12
14905 + paddh.ub r5,r5,r5
14906 + paddh.ub r4,r4,r4
14907 + paddh.ub lr,lr,lr
14908 + paddh.ub lr,r1,r0
14909 + paddh.ub r2,r7,r7
14910 + paddh.ub r2,r1,r2
14911 + .text
14912 + .global psubh_ub
14913 +psubh_ub:
14914 + psubh.ub pc,pc,pc
14915 + psubh.ub r12,r12,r12
14916 + psubh.ub r5,r5,r5
14917 + psubh.ub r4,r4,r4
14918 + psubh.ub lr,lr,lr
14919 + psubh.ub r0,r1,r6
14920 + psubh.ub r4,lr,r10
14921 + psubh.ub r9,r8,r1
14922 + .text
14923 + .global pmax_ub
14924 +pmax_ub:
14925 + pmax.ub pc,pc,pc
14926 + pmax.ub r12,r12,r12
14927 + pmax.ub r5,r5,r5
14928 + pmax.ub r4,r4,r4
14929 + pmax.ub lr,lr,lr
14930 + pmax.ub pc,r2,r11
14931 + pmax.ub r12,r1,r1
14932 + pmax.ub r5,r2,r0
14933 + .text
14934 + .global pmax_sh
14935 +pmax_sh:
14936 + pmax.sh pc,pc,pc
14937 + pmax.sh r12,r12,r12
14938 + pmax.sh r5,r5,r5
14939 + pmax.sh r4,r4,r4
14940 + pmax.sh lr,lr,lr
14941 + pmax.sh lr,r6,r12
14942 + pmax.sh r2,pc,r5
14943 + pmax.sh pc,r2,r7
14944 + .text
14945 + .global pmin_ub
14946 +pmin_ub:
14947 + pmin.ub pc,pc,pc
14948 + pmin.ub r12,r12,r12
14949 + pmin.ub r5,r5,r5
14950 + pmin.ub r4,r4,r4
14951 + pmin.ub lr,lr,lr
14952 + pmin.ub r8,r1,r5
14953 + pmin.ub r1,r8,r3
14954 + pmin.ub r0,r2,r7
14955 + .text
14956 + .global pmin_sh
14957 +pmin_sh:
14958 + pmin.sh pc,pc,pc
14959 + pmin.sh r12,r12,r12
14960 + pmin.sh r5,r5,r5
14961 + pmin.sh r4,r4,r4
14962 + pmin.sh lr,lr,lr
14963 + pmin.sh r8,r4,r10
14964 + pmin.sh lr,r10,r12
14965 + pmin.sh r2,r6,r2
14966 + .text
14967 + .global pavg_ub
14968 +pavg_ub:
14969 + pavg.ub pc,pc,pc
14970 + pavg.ub r12,r12,r12
14971 + pavg.ub r5,r5,r5
14972 + pavg.ub r4,r4,r4
14973 + pavg.ub lr,lr,lr
14974 + pavg.ub r0,r1,r6
14975 + pavg.ub r8,r3,r6
14976 + pavg.ub pc,r12,r10
14977 + .text
14978 + .global pavg_sh
14979 +pavg_sh:
14980 + pavg.sh pc,pc,pc
14981 + pavg.sh r12,r12,r12
14982 + pavg.sh r5,r5,r5
14983 + pavg.sh r4,r4,r4
14984 + pavg.sh lr,lr,lr
14985 + pavg.sh r9,pc,sp
14986 + pavg.sh pc,sp,r3
14987 + pavg.sh r6,r1,r9
14988 + .text
14989 + .global pabs_sb
14990 +pabs_sb:
14991 + pabs.sb pc,pc
14992 + pabs.sb r12,r12
14993 + pabs.sb r5,r5
14994 + pabs.sb r4,r4
14995 + pabs.sb lr,lr
14996 + pabs.sb r11,r6
14997 + pabs.sb lr,r9
14998 + pabs.sb sp,r7
14999 + .text
15000 + .global pabs_sh
15001 +pabs_sh:
15002 + pabs.sh pc,pc
15003 + pabs.sh r12,r12
15004 + pabs.sh r5,r5
15005 + pabs.sh r4,r4
15006 + pabs.sh lr,lr
15007 + pabs.sh pc,r3
15008 + pabs.sh r5,r7
15009 + pabs.sh r4,r0
15010 + .text
15011 + .global psad
15012 +psad:
15013 + psad pc,pc,pc
15014 + psad r12,r12,r12
15015 + psad r5,r5,r5
15016 + psad r4,r4,r4
15017 + psad lr,lr,lr
15018 + psad r9,r11,r11
15019 + psad lr,r4,sp
15020 + psad lr,r4,r5
15021 + .text
15022 + .global pasr_b
15023 +pasr_b:
15024 + pasr.b pc,pc,0
15025 + pasr.b r12,r12,7
15026 + pasr.b r5,r5,4
15027 + pasr.b r4,r4,3
15028 + pasr.b lr,lr,1
15029 + pasr.b pc,r7,1
15030 + pasr.b sp,lr,6
15031 + pasr.b sp,r3,2
15032 + .text
15033 + .global plsl_b
15034 +plsl_b:
15035 + plsl.b pc,pc,0
15036 + plsl.b r12,r12,7
15037 + plsl.b r5,r5,4
15038 + plsl.b r4,r4,3
15039 + plsl.b lr,lr,1
15040 + plsl.b r2,r11,4
15041 + plsl.b r8,r5,7
15042 + plsl.b pc,r0,2
15043 + .text
15044 + .global plsr_b
15045 +plsr_b:
15046 + plsr.b pc,pc,0
15047 + plsr.b r12,r12,7
15048 + plsr.b r5,r5,4
15049 + plsr.b r4,r4,3
15050 + plsr.b lr,lr,1
15051 + plsr.b r12,r1,2
15052 + plsr.b r6,pc,7
15053 + plsr.b r12,r11,2
15054 + .text
15055 + .global pasr_h
15056 +pasr_h:
15057 + pasr.h pc,pc,0
15058 + pasr.h r12,r12,15
15059 + pasr.h r5,r5,8
15060 + pasr.h r4,r4,7
15061 + pasr.h lr,lr,1
15062 + pasr.h r0,r11,10
15063 + pasr.h r4,r6,8
15064 + pasr.h r6,r2,4
15065 + .text
15066 + .global plsl_h
15067 +plsl_h:
15068 + plsl.h pc,pc,0
15069 + plsl.h r12,r12,15
15070 + plsl.h r5,r5,8
15071 + plsl.h r4,r4,7
15072 + plsl.h lr,lr,1
15073 + plsl.h r5,r10,9
15074 + plsl.h sp,lr,8
15075 + plsl.h r0,lr,7
15076 + .text
15077 + .global plsr_h
15078 +plsr_h:
15079 + plsr.h pc,pc,0
15080 + plsr.h r12,r12,15
15081 + plsr.h r5,r5,8
15082 + plsr.h r4,r4,7
15083 + plsr.h lr,lr,1
15084 + plsr.h r11,r0,15
15085 + plsr.h lr,r3,3
15086 + plsr.h r8,lr,10
15087 + .text
15088 + .global packw_sh
15089 +packw_sh:
15090 + packw.sh pc,pc,pc
15091 + packw.sh r12,r12,r12
15092 + packw.sh r5,r5,r5
15093 + packw.sh r4,r4,r4
15094 + packw.sh lr,lr,lr
15095 + packw.sh sp,r11,r10
15096 + packw.sh r8,r2,r12
15097 + packw.sh r8,r1,r5
15098 + .text
15099 + .global punpckub_h
15100 +punpckub_h:
15101 + punpckub.h pc,pc:b
15102 + punpckub.h r12,r12:t
15103 + punpckub.h r5,r5:t
15104 + punpckub.h r4,r4:b
15105 + punpckub.h lr,lr:t
15106 + punpckub.h r6,r1:t
15107 + punpckub.h lr,r5:b
15108 + punpckub.h lr,r2:t
15109 + .text
15110 + .global punpcksb_h
15111 +punpcksb_h:
15112 + punpcksb.h pc,pc:b
15113 + punpcksb.h r12,r12:t
15114 + punpcksb.h r5,r5:t
15115 + punpcksb.h r4,r4:b
15116 + punpcksb.h lr,lr:t
15117 + punpcksb.h r4,r7:t
15118 + punpcksb.h r6,lr:b
15119 + punpcksb.h r12,r12:t
15120 + .text
15121 + .global packsh_ub
15122 +packsh_ub:
15123 + packsh.ub pc,pc,pc
15124 + packsh.ub r12,r12,r12
15125 + packsh.ub r5,r5,r5
15126 + packsh.ub r4,r4,r4
15127 + packsh.ub lr,lr,lr
15128 + packsh.ub r3,r6,r3
15129 + packsh.ub r8,r0,r3
15130 + packsh.ub r9,r3,lr
15131 + .text
15132 + .global packsh_sb
15133 +packsh_sb:
15134 + packsh.sb pc,pc,pc
15135 + packsh.sb r12,r12,r12
15136 + packsh.sb r5,r5,r5
15137 + packsh.sb r4,r4,r4
15138 + packsh.sb lr,lr,lr
15139 + packsh.sb r6,r8,r1
15140 + packsh.sb lr,r9,r8
15141 + packsh.sb sp,r6,r6
15142 + .text
15143 + .global andl
15144 +andl:
15145 + andl pc,0
15146 + andl r12,65535
15147 + andl r5,32768
15148 + andl r4,32767
15149 + andl lr,1
15150 + andl pc,23128
15151 + andl r8,47262
15152 + andl r7,13719
15153 + .text
15154 + .global andl_coh
15155 +andl_coh:
15156 + andl pc,0,COH
15157 + andl r12,65535,COH
15158 + andl r5,32768,COH
15159 + andl r4,32767,COH
15160 + andl lr,1,COH
15161 + andl r6,22753,COH
15162 + andl r0,40653,COH
15163 + andl r4,48580,COH
15164 + .text
15165 + .global andh
15166 +andh:
15167 + andh pc,0
15168 + andh r12,65535
15169 + andh r5,32768
15170 + andh r4,32767
15171 + andh lr,1
15172 + andh r12,52312
15173 + andh r3,8675
15174 + andh r2,42987
15175 + .text
15176 + .global andh_coh
15177 +andh_coh:
15178 + andh pc,0,COH
15179 + andh r12,65535,COH
15180 + andh r5,32768,COH
15181 + andh r4,32767,COH
15182 + andh lr,1,COH
15183 + andh r11,34317,COH
15184 + andh r8,52982,COH
15185 + andh r10,23683,COH
15186 + .text
15187 + .global orl
15188 +orl:
15189 + orl pc,0
15190 + orl r12,65535
15191 + orl r5,32768
15192 + orl r4,32767
15193 + orl lr,1
15194 + orl sp,16766
15195 + orl r0,21181
15196 + orl pc,44103
15197 + .text
15198 + .global orh
15199 +orh:
15200 + orh pc,0
15201 + orh r12,65535
15202 + orh r5,32768
15203 + orh r4,32767
15204 + orh lr,1
15205 + orh r8,28285
15206 + orh r12,30492
15207 + orh r1,59930
15208 + .text
15209 + .global eorl
15210 +eorl:
15211 + eorl pc,0
15212 + eorl r12,65535
15213 + eorl r5,32768
15214 + eorl r4,32767
15215 + eorl lr,1
15216 + eorl r4,51129
15217 + eorl r6,64477
15218 + eorl r1,20913
15219 + .text
15220 + .global eorh
15221 +eorh:
15222 + eorh pc,0
15223 + eorh r12,65535
15224 + eorh r5,32768
15225 + eorh r4,32767
15226 + eorh lr,1
15227 + eorh r0,11732
15228 + eorh r10,38069
15229 + eorh r9,57130
15230 + .text
15231 + .global mcall
15232 +mcall:
15233 + mcall pc[0]
15234 + mcall r12[-4]
15235 + mcall r5[-131072]
15236 + mcall r4[131068]
15237 + mcall lr[4]
15238 + mcall sp[61180]
15239 + mcall r4[-35000]
15240 + mcall r0[9924]
15241 + .text
15242 + .global pref
15243 +pref:
15244 + pref pc[0]
15245 + pref r12[-1]
15246 + pref r5[-32768]
15247 + pref r4[32767]
15248 + pref lr[1]
15249 + pref r7[7748]
15250 + pref r7[-7699]
15251 + pref r2[-25892]
15252 + .text
15253 + .global cache
15254 +cache:
15255 + cache pc[0],0
15256 + cache r12[-1],31
15257 + cache r5[-1024],16
15258 + cache r4[1023],15
15259 + cache lr[1],1
15260 + cache r3[-964],17
15261 + cache r4[-375],22
15262 + cache r3[-888],17
15263 + .text
15264 + .global sub4
15265 +sub4:
15266 + sub pc,0
15267 + sub r12,-1
15268 + sub r5,-1048576
15269 + sub r4,1048575
15270 + sub lr,1
15271 + sub r2,-619156
15272 + sub lr,461517
15273 + sub r8,-185051
15274 + .text
15275 + .global cp3
15276 +cp3:
15277 + cp pc,0
15278 + cp r12,-1
15279 + cp r5,-1048576
15280 + cp r4,1048575
15281 + cp lr,1
15282 + cp r1,124078
15283 + cp r0,-378909
15284 + cp r4,-243180
15285 + .text
15286 + .global mov2
15287 +mov2:
15288 + mov pc,0
15289 + mov r12,-1
15290 + mov r5,-1048576
15291 + mov r4,1048575
15292 + mov lr,1
15293 + mov r5,-317021
15294 + mov sp,-749164
15295 + mov r5,940179
15296 + .text
15297 + .global brc2
15298 +brc2:
15299 + breq 0
15300 + bral -2
15301 + brls -2097152
15302 + brpl 2097150
15303 + brne 2
15304 + brhi -1796966
15305 + brqs 1321368
15306 + brls -577434
15307 + .text
15308 + .global rcall2
15309 +rcall2:
15310 + rcall 0
15311 + rcall -2
15312 + rcall -2097152
15313 + rcall 2097150
15314 + rcall 2
15315 + rcall 496820
15316 + rcall 1085092
15317 + rcall -1058
15318 + .text
15319 + .global sub5
15320 +sub5:
15321 + sub pc,pc,0
15322 + sub r12,r12,-1
15323 + sub r5,r5,-32768
15324 + sub r4,r4,32767
15325 + sub lr,lr,1
15326 + sub pc,pc,-12744
15327 + sub r7,r7,-27365
15328 + sub r2,r9,-17358
15329 + .text
15330 + .global satsub_w2
15331 +satsub_w2:
15332 + satsub.w pc,pc,0
15333 + satsub.w r12,r12,-1
15334 + satsub.w r5,r5,-32768
15335 + satsub.w r4,r4,32767
15336 + satsub.w lr,lr,1
15337 + satsub.w r2,lr,-2007
15338 + satsub.w r7,r12,-784
15339 + satsub.w r4,r7,23180
15340 + .text
15341 + .global ld_d4
15342 +ld_d4:
15343 + ld.d r0,pc[0]
15344 + ld.d r14,r12[-1]
15345 + ld.d r8,r5[-32768]
15346 + ld.d r6,r4[32767]
15347 + ld.d r2,lr[1]
15348 + ld.d r14,r11[14784]
15349 + ld.d r6,r9[-18905]
15350 + ld.d r2,r3[-6355]
15351 + .text
15352 + .global ld_w4
15353 +ld_w4:
15354 + ld.w pc,pc[0]
15355 + ld.w r12,r12[-1]
15356 + ld.w r5,r5[-32768]
15357 + ld.w r4,r4[32767]
15358 + ld.w lr,lr[1]
15359 + ld.w r0,r12[-22133]
15360 + ld.w sp,pc[-20521]
15361 + /* ld.w r3,r5[29035] */
15362 + nop
15363 + .text
15364 + .global ld_sh4
15365 +ld_sh4:
15366 + ld.sh pc,pc[0]
15367 + ld.sh r12,r12[-1]
15368 + ld.sh r5,r5[-32768]
15369 + ld.sh r4,r4[32767]
15370 + ld.sh lr,lr[1]
15371 + ld.sh r6,r10[30930]
15372 + ld.sh r6,r10[21973]
15373 + /* ld.sh r11,r10[-2058] */
15374 + nop
15375 + .text
15376 + .global ld_uh4
15377 +ld_uh4:
15378 + ld.uh pc,pc[0]
15379 + ld.uh r12,r12[-1]
15380 + ld.uh r5,r5[-32768]
15381 + ld.uh r4,r4[32767]
15382 + ld.uh lr,lr[1]
15383 + ld.uh r1,r9[-13354]
15384 + ld.uh lr,r11[21337]
15385 + /* ld.uh r2,lr[-25370] */
15386 + nop
15387 + .text
15388 + .global ld_sb1
15389 +ld_sb1:
15390 + ld.sb pc,pc[0]
15391 + ld.sb r12,r12[-1]
15392 + ld.sb r5,r5[-32768]
15393 + ld.sb r4,r4[32767]
15394 + ld.sb lr,lr[1]
15395 + ld.sb r7,sp[-28663]
15396 + ld.sb r2,r1[-5879]
15397 + ld.sb r12,r3[18734]
15398 + .text
15399 + .global ld_ub4
15400 +ld_ub4:
15401 + ld.ub pc,pc[0]
15402 + ld.ub r12,r12[-1]
15403 + ld.ub r5,r5[-32768]
15404 + ld.ub r4,r4[32767]
15405 + ld.ub lr,lr[1]
15406 + ld.ub pc,r4[8277]
15407 + ld.ub r5,r12[19172]
15408 + ld.ub r10,lr[26347]
15409 + .text
15410 + .global st_d4
15411 +st_d4:
15412 + st.d pc[0],r0
15413 + st.d r12[-1],r14
15414 + st.d r5[-32768],r8
15415 + st.d r4[32767],r6
15416 + st.d lr[1],r2
15417 + st.d r5[13200],r10
15418 + st.d r5[9352],r10
15419 + st.d r5[32373],r4
15420 + .text
15421 + .global st_w4
15422 +st_w4:
15423 + st.w pc[0],pc
15424 + st.w r12[-1],r12
15425 + st.w r5[-32768],r5
15426 + st.w r4[32767],r4
15427 + st.w lr[1],lr
15428 + st.w sp[6136],r7
15429 + st.w r6[27087],r12
15430 + /* st.w r3[20143],r7 */
15431 + nop
15432 + .text
15433 + .global st_h4
15434 +st_h4:
15435 + st.h pc[0],pc
15436 + st.h r12[-1],r12
15437 + st.h r5[-32768],r5
15438 + st.h r4[32767],r4
15439 + st.h lr[1],lr
15440 + st.h r4[-9962],r7
15441 + st.h r9[-16250],r3
15442 + /* st.h r8[-28810],r7 */
15443 + nop
15444 + .text
15445 + .global st_b4
15446 +st_b4:
15447 + st.b pc[0],pc
15448 + st.b r12[-1],r12
15449 + st.b r5[-32768],r5
15450 + st.b r4[32767],r4
15451 + st.b lr[1],lr
15452 + st.b r12[30102],r6
15453 + st.b r5[28977],r1
15454 + st.b r0[5470],r1
15455 + .text
15456 + .global mfsr
15457 +mfsr:
15458 + mfsr pc,0
15459 + mfsr r12,1020
15460 + mfsr r5,512
15461 + mfsr r4,508
15462 + mfsr lr,4
15463 + mfsr r2,696
15464 + mfsr r4,260
15465 + mfsr r10,1016
15466 + .text
15467 + .global mtsr
15468 +mtsr:
15469 + mtsr 0,pc
15470 + mtsr 1020,r12
15471 + mtsr 512,r5
15472 + mtsr 508,r4
15473 + mtsr 4,lr
15474 + mtsr 224,r10
15475 + mtsr 836,r12
15476 + mtsr 304,r9
15477 + .text
15478 + .global mfdr
15479 +mfdr:
15480 + mfdr pc,0
15481 + mfdr r12,1020
15482 + mfdr r5,512
15483 + mfdr r4,508
15484 + mfdr lr,4
15485 + mfdr r6,932
15486 + mfdr r5,36
15487 + mfdr r9,300
15488 + .text
15489 + .global mtdr
15490 +mtdr:
15491 + mtdr 0,pc
15492 + mtdr 1020,r12
15493 + mtdr 512,r5
15494 + mtdr 508,r4
15495 + mtdr 4,lr
15496 + mtdr 180,r8
15497 + mtdr 720,r10
15498 + mtdr 408,lr
15499 + .text
15500 + .global sleep
15501 +sleep:
15502 + sleep 0
15503 + sleep 255
15504 + sleep 128
15505 + sleep 127
15506 + sleep 1
15507 + sleep 254
15508 + sleep 15
15509 + sleep 43
15510 + .text
15511 + .global sync
15512 +sync:
15513 + sync 0
15514 + sync 255
15515 + sync 128
15516 + sync 127
15517 + sync 1
15518 + sync 166
15519 + sync 230
15520 + sync 180
15521 + .text
15522 + .global bld
15523 +bld:
15524 + bld pc,0
15525 + bld r12,31
15526 + bld r5,16
15527 + bld r4,15
15528 + bld lr,1
15529 + bld r9,15
15530 + bld r0,4
15531 + bld lr,26
15532 + .text
15533 + .global bst
15534 +bst:
15535 + bst pc,0
15536 + bst r12,31
15537 + bst r5,16
15538 + bst r4,15
15539 + bst lr,1
15540 + bst r10,28
15541 + bst r0,3
15542 + bst sp,2
15543 + .text
15544 + .global sats
15545 +sats:
15546 + sats pc>>0,0
15547 + sats r12>>31,31
15548 + sats r5>>16,16
15549 + sats r4>>15,15
15550 + sats lr>>1,1
15551 + sats r10>>3,19
15552 + sats r10>>2,26
15553 + sats r1>>20,1
15554 + .text
15555 + .global satu
15556 +satu:
15557 + satu pc>>0,0
15558 + satu r12>>31,31
15559 + satu r5>>16,16
15560 + satu r4>>15,15
15561 + satu lr>>1,1
15562 + satu pc>>5,7
15563 + satu r7>>5,5
15564 + satu r2>>26,19
15565 + .text
15566 + .global satrnds
15567 +satrnds:
15568 + satrnds pc>>0,0
15569 + satrnds r12>>31,31
15570 + satrnds r5>>16,16
15571 + satrnds r4>>15,15
15572 + satrnds lr>>1,1
15573 + satrnds r0>>21,19
15574 + satrnds sp>>0,2
15575 + satrnds r7>>6,29
15576 + .text
15577 + .global satrndu
15578 +satrndu:
15579 + satrndu pc>>0,0
15580 + satrndu r12>>31,31
15581 + satrndu r5>>16,16
15582 + satrndu r4>>15,15
15583 + satrndu lr>>1,1
15584 + satrndu r12>>0,26
15585 + satrndu r4>>21,3
15586 + satrndu r10>>3,16
15587 + .text
15588 + .global subfc
15589 +subfc:
15590 + subfeq pc,0
15591 + subfal r12,-1
15592 + subfls r5,-128
15593 + subfpl r4,127
15594 + subfne lr,1
15595 + subfls r10,8
15596 + subfvc r11,99
15597 + subfvs r2,73
15598 + .text
15599 + .global subc
15600 +subc:
15601 + subeq pc,0
15602 + subal r12,-1
15603 + subls r5,-128
15604 + subpl r4,127
15605 + subne lr,1
15606 + subls r12,118
15607 + subvc lr,-12
15608 + submi r4,-13
15609 + .text
15610 + .global movc2
15611 +movc2:
15612 + moveq pc,0
15613 + moval r12,-1
15614 + movls r5,-128
15615 + movpl r4,127
15616 + movne lr,1
15617 + movlt r3,-122
15618 + movvc r8,2
15619 + movne r7,-111
15620 + .text
15621 + .global cp_b
15622 +cp_b:
15623 + cp.b pc,r0
15624 + cp.b r0,pc
15625 + cp.b r7,r8
15626 + cp.b r8,r7
15627 + .text
15628 + .global cp_h
15629 +cp_h:
15630 + cp.h pc,r0
15631 + cp.h r0,pc
15632 + cp.h r7,r8
15633 + cp.h r8,r7
15634 + .text
15635 + .global ldm
15636 +ldm:
15637 + ldm pc,r1-r6
15638 + ldm r12,r0-r15
15639 + ldm r5,r15
15640 + ldm r4,r0-r14
15641 + ldm lr,r0
15642 + ldm r9,r1,r5,r14
15643 + ldm r11,r2-r3,r5-r8,r15
15644 + ldm r6,r0,r3,r9,r13,r15
15645 + .text
15646 + .global ldm_pu
15647 +ldm_pu:
15648 + ldm pc++,r6-r9
15649 + ldm r12++,r0-r15
15650 + ldm r5++,r15
15651 + ldm r4++,r0-r14
15652 + ldm lr++,r0
15653 + ldm r12++,r3-r5,r8,r10,r12,r14-r15
15654 + ldm r10++,r2,r4-r6,r14-r15
15655 + ldm r6++,r1,r3-r4,r9-r14
15656 + .text
15657 + .global ldmts
15658 +ldmts:
15659 + ldmts pc,r7-r8
15660 + ldmts r12,r0-r15
15661 + ldmts r5,r15
15662 + ldmts r4,r0-r14
15663 + ldmts lr,r0
15664 + ldmts r0,r1-r2,r11-r12
15665 + ldmts lr,r0-r2,r4,r7-r8,r13-r14
15666 + ldmts r12,r0-r1,r3-r5,r9,r14-r15
15667 + .text
15668 + .global ldmts_pu
15669 +ldmts_pu:
15670 + ldmts pc++,r9
15671 + ldmts r12++,r0-r15
15672 + ldmts r5++,r15
15673 + ldmts r4++,r0-r14
15674 + ldmts lr++,r0
15675 + ldmts sp++,r0,r2-r5,r7,r9,r11
15676 + ldmts r5++,r1-r3,r7,r10-r11
15677 + ldmts r8++,r2-r4,r7-r8,r13,r15
15678 + .text
15679 + .global stm
15680 +stm:
15681 + stm pc,r7
15682 + stm r12,r0-r15
15683 + stm r5,r15
15684 + stm r4,r0-r14
15685 + stm lr,r0
15686 + stm sp,r2-r3,r5,r8,r11,r14
15687 + stm r4,r0-r4,r6,r10-r11,r14
15688 + stm r9,r1,r5,r9,r12-r15
15689 + .text
15690 + .global stm_pu
15691 +stm_pu:
15692 + stm --pc,r4-r6
15693 + stm --r12,r0-r15
15694 + stm --r5,r15
15695 + stm --r4,r0-r14
15696 + stm --lr,r0
15697 + stm --r11,r0,r4-r9,r11-r15
15698 + stm --r11,r0,r3,r9-r10,r12,r14
15699 + stm --r6,r2,r8-r9,r13-r14
15700 + .text
15701 + .global stmts
15702 +stmts:
15703 + stmts pc,r8
15704 + stmts r12,r0-r15
15705 + stmts r5,r15
15706 + stmts r4,r0-r14
15707 + stmts lr,r0
15708 + stmts r1,r0-r1,r3-r4,r6,r9-r10,r14-r15
15709 + stmts r3,r0,r6-r8,r10-r12
15710 + stmts r11,r0,r4,r6-r7,r9-r10,r12,r14-r15
15711 + .text
15712 + .global stmts_pu
15713 +stmts_pu:
15714 + stmts --pc,r6-r8
15715 + stmts --r12,r0-r15
15716 + stmts --r5,r15
15717 + stmts --r4,r0-r14
15718 + stmts --lr,r0
15719 + stmts --r2,r0,r3-r4,r9-r10,r12-r13
15720 + stmts --r3,r0-r1,r14-r15
15721 + stmts --r0,r0,r2-r6,r10,r14
15722 + .text
15723 + .global ldins_h
15724 +ldins_h:
15725 + ldins.h pc:b,pc[0]
15726 + ldins.h r12:t,r12[-2]
15727 + ldins.h r5:t,r5[-4096]
15728 + ldins.h r4:b,r4[4094]
15729 + ldins.h lr:t,lr[2]
15730 + ldins.h r0:t,lr[1930]
15731 + ldins.h r3:b,r7[-534]
15732 + ldins.h r2:b,r12[-2252]
15733 + .text
15734 + .global ldins_b
15735 +ldins_b:
15736 + ldins.b pc:b,pc[0]
15737 + ldins.b r12:t,r12[-1]
15738 + ldins.b r5:u,r5[-2048]
15739 + ldins.b r4:l,r4[2047]
15740 + ldins.b lr:l,lr[1]
15741 + ldins.b r6:t,r4[-662]
15742 + ldins.b r5:b,r1[-151]
15743 + ldins.b r10:t,r11[-1923]
15744 + .text
15745 + .global ldswp_sh
15746 +ldswp_sh:
15747 + ldswp.sh pc,pc[0]
15748 + ldswp.sh r12,r12[-2]
15749 + ldswp.sh r5,r5[-4096]
15750 + ldswp.sh r4,r4[4094]
15751 + ldswp.sh lr,lr[2]
15752 + ldswp.sh r9,r10[3848]
15753 + ldswp.sh r4,r12[-2040]
15754 + ldswp.sh r10,r2[3088]
15755 + .text
15756 + .global ldswp_uh
15757 +ldswp_uh:
15758 + ldswp.uh pc,pc[0]
15759 + ldswp.uh r12,r12[-2]
15760 + ldswp.uh r5,r5[-4096]
15761 + ldswp.uh r4,r4[4094]
15762 + ldswp.uh lr,lr[2]
15763 + ldswp.uh r4,r9[3724]
15764 + ldswp.uh lr,sp[-1672]
15765 + ldswp.uh r8,r12[-3846]
15766 + .text
15767 + .global ldswp_w
15768 +ldswp_w:
15769 + ldswp.w pc,pc[0]
15770 + ldswp.w r12,r12[-4]
15771 + ldswp.w r5,r5[-8192]
15772 + ldswp.w r4,r4[8188]
15773 + ldswp.w lr,lr[4]
15774 + ldswp.w sp,r7[1860]
15775 + ldswp.w pc,r5[-3324]
15776 + ldswp.w r12,r10[-3296]
15777 + .text
15778 + .global stswp_h
15779 +stswp_h:
15780 + stswp.h pc[0],pc
15781 + stswp.h r12[-2],r12
15782 + stswp.h r5[-4096],r5
15783 + stswp.h r4[4094],r4
15784 + stswp.h lr[2],lr
15785 + stswp.h r7[64],r10
15786 + stswp.h r10[3024],r2
15787 + stswp.h r0[-2328],r10
15788 + .text
15789 + .global stswp_w
15790 +stswp_w:
15791 + stswp.w pc[0],pc
15792 + stswp.w r12[-4],r12
15793 + stswp.w r5[-8192],r5
15794 + stswp.w r4[8188],r4
15795 + stswp.w lr[4],lr
15796 + stswp.w pc[1156],r8
15797 + stswp.w sp[7992],r10
15798 + stswp.w r8[-1172],r5
15799 + .text
15800 + .global and2
15801 +and2:
15802 + and pc,pc,pc<<0
15803 + and r12,r12,r12<<31
15804 + and r5,r5,r5<<16
15805 + and r4,r4,r4<<15
15806 + and lr,lr,lr<<1
15807 + and r10,r2,r1<<1
15808 + and r12,r8,r11<<27
15809 + and r10,r7,r0<<3
15810 + .text
15811 + .global and3
15812 +and3:
15813 + and pc,pc,pc>>0
15814 + and r12,r12,r12>>31
15815 + and r5,r5,r5>>16
15816 + and r4,r4,r4>>15
15817 + and lr,lr,lr>>1
15818 + and r12,r8,r7>>17
15819 + and pc,r4,r9>>20
15820 + and r10,r9,r10>>12
15821 + .text
15822 + .global or2
15823 +or2:
15824 + or pc,pc,pc<<0
15825 + or r12,r12,r12<<31
15826 + or r5,r5,r5<<16
15827 + or r4,r4,r4<<15
15828 + or lr,lr,lr<<1
15829 + or r8,sp,r11<<29
15830 + or pc,r9,r2<<28
15831 + or r5,r1,r2<<3
15832 + .text
15833 + .global or3
15834 +or3:
15835 + or pc,pc,pc>>0
15836 + or r12,r12,r12>>31
15837 + or r5,r5,r5>>16
15838 + or r4,r4,r4>>15
15839 + or lr,lr,lr>>1
15840 + or r1,sp,sp>>2
15841 + or r0,r1,r1>>29
15842 + or r4,r12,r8>>8
15843 + .text
15844 + .global eor2
15845 +eor2:
15846 + eor pc,pc,pc<<0
15847 + eor r12,r12,r12<<31
15848 + eor r5,r5,r5<<16
15849 + eor r4,r4,r4<<15
15850 + eor lr,lr,lr<<1
15851 + eor r10,r9,r4<<11
15852 + eor r4,r0,r1<<31
15853 + eor r6,r2,r12<<13
15854 + .text
15855 + .global eor3
15856 +eor3:
15857 + eor pc,pc,pc>>0
15858 + eor r12,r12,r12>>31
15859 + eor r5,r5,r5>>16
15860 + eor r4,r4,r4>>15
15861 + eor lr,lr,lr>>1
15862 + eor r5,r5,r5>>22
15863 + eor r10,r1,lr>>3
15864 + eor r7,lr,sp>>26
15865 + .text
15866 + .global sthh_w2
15867 +sthh_w2:
15868 + sthh.w pc[pc<<0],pc:b,pc:b
15869 + sthh.w r12[r12<<3],r12:t,r12:t
15870 + sthh.w r5[r5<<2],r5:t,r5:t
15871 + sthh.w r4[r4<<1],r4:b,r4:b
15872 + sthh.w lr[lr<<1],lr:t,lr:t
15873 + sthh.w sp[r6<<3],r1:t,r12:t
15874 + sthh.w r6[r6<<0],r9:t,r9:t
15875 + sthh.w r10[r3<<0],r0:b,r11:t
15876 + .text
15877 + .global sthh_w1
15878 +sthh_w1:
15879 + sthh.w pc[0],pc:b,pc:b
15880 + sthh.w r12[1020],r12:t,r12:t
15881 + sthh.w r5[512],r5:t,r5:t
15882 + sthh.w r4[508],r4:b,r4:b
15883 + sthh.w lr[4],lr:t,lr:t
15884 + sthh.w r4[404],r9:t,r0:b
15885 + sthh.w r8[348],r2:t,r10:b
15886 + sthh.w sp[172],r9:b,r2:b
15887 + .text
15888 + .global cop
15889 +cop:
15890 + cop cp0,cr0,cr0,cr0,0
15891 + cop cp7,cr15,cr15,cr15,0x7f
15892 + cop cp3,cr5,cr5,cr5,0x31
15893 + cop cp2,cr4,cr4,cr4,0x30
15894 + cop cp5,cr8,cr3,cr7,0x5a
15895 + .text
15896 + .global ldc_w1
15897 +ldc_w1:
15898 + ldc.w cp0,cr0,r0[0]
15899 + ldc.w cp7,cr15,pc[255<<2]
15900 + ldc.w cp3,cr5,r5[128<<2]
15901 + ldc.w cp2,cr4,r4[127<<2]
15902 + ldc.w cp4,cr9,r13[36<<2]
15903 + .text
15904 + .global ldc_w2
15905 +ldc_w2:
15906 + ldc.w cp0,cr0,--r0
15907 + ldc.w cp7,cr15,--pc
15908 + ldc.w cp3,cr5,--r5
15909 + ldc.w cp2,cr4,--r4
15910 + ldc.w cp4,cr9,--r13
15911 + .text
15912 + .global ldc_w3
15913 +ldc_w3:
15914 + ldc.w cp0,cr0,r0[r0]
15915 + ldc.w cp7,cr15,pc[pc<<3]
15916 + ldc.w cp3,cr5,r5[r4<<2]
15917 + ldc.w cp2,cr4,r4[r3<<1]
15918 + ldc.w cp4,cr9,r13[r12<<0]
15919 + .text
15920 + .global ldc_d1
15921 +ldc_d1:
15922 + ldc.d cp0,cr0,r0[0]
15923 + ldc.d cp7,cr14,pc[255<<2]
15924 + ldc.d cp3,cr6,r5[128<<2]
15925 + ldc.d cp2,cr4,r4[127<<2]
15926 + ldc.d cp4,cr8,r13[36<<2]
15927 + .text
15928 + .global ldc_d2
15929 +ldc_d2:
15930 + ldc.d cp0,cr0,--r0
15931 + ldc.d cp7,cr14,--pc
15932 + ldc.d cp3,cr6,--r5
15933 + ldc.d cp2,cr4,--r4
15934 + ldc.d cp4,cr8,--r13
15935 + .text
15936 + .global ldc_d3
15937 +ldc_d3:
15938 + ldc.d cp0,cr0,r0[r0]
15939 + ldc.d cp7,cr14,pc[pc<<3]
15940 + ldc.d cp3,cr6,r5[r4<<2]
15941 + ldc.d cp2,cr4,r4[r3<<1]
15942 + ldc.d cp4,cr8,r13[r12<<0]
15943 + .text
15944 + .global stc_w1
15945 +stc_w1:
15946 + stc.w cp0,r0[0],cr0
15947 + stc.w cp7,pc[255<<2],cr15
15948 + stc.w cp3,r5[128<<2],cr5
15949 + stc.w cp2,r4[127<<2],cr4
15950 + stc.w cp4,r13[36<<2],cr9
15951 + .text
15952 + .global stc_w2
15953 +stc_w2:
15954 + stc.w cp0,r0++,cr0
15955 + stc.w cp7,pc++,cr15
15956 + stc.w cp3,r5++,cr5
15957 + stc.w cp2,r4++,cr4
15958 + stc.w cp4,r13++,cr9
15959 + .text
15960 + .global stc_w3
15961 +stc_w3:
15962 + stc.w cp0,r0[r0],cr0
15963 + stc.w cp7,pc[pc<<3],cr15
15964 + stc.w cp3,r5[r4<<2],cr5
15965 + stc.w cp2,r4[r3<<1],cr4
15966 + stc.w cp4,r13[r12<<0],cr9
15967 + .text
15968 + .global stc_d1
15969 +stc_d1:
15970 + stc.d cp0,r0[0],cr0
15971 + stc.d cp7,pc[255<<2],cr14
15972 + stc.d cp3,r5[128<<2],cr6
15973 + stc.d cp2,r4[127<<2],cr4
15974 + stc.d cp4,r13[36<<2],cr8
15975 + .text
15976 + .global stc_d2
15977 +stc_d2:
15978 + stc.d cp0,r0++,cr0
15979 + stc.d cp7,pc++,cr14
15980 + stc.d cp3,r5++,cr6
15981 + stc.d cp2,r4++,cr4
15982 + stc.d cp4,r13++,cr8
15983 + .text
15984 + .global stc_d3
15985 +stc_d3:
15986 + stc.d cp0,r0[r0],cr0
15987 + stc.d cp7,pc[pc<<3],cr14
15988 + stc.d cp3,r5[r4<<2],cr6
15989 + stc.d cp2,r4[r3<<1],cr4
15990 + stc.d cp4,r13[r12<<0],cr8
15991 + .text
15992 + .global ldc0_w
15993 +ldc0_w:
15994 + ldc0.w cr0,r0[0]
15995 + ldc0.w cr15,pc[4095<<2]
15996 + ldc0.w cr5,r5[2048<<2]
15997 + ldc0.w cr4,r4[2047<<2]
15998 + ldc0.w cr9,r13[147<<2]
15999 + .text
16000 + .global ldc0_d
16001 +ldc0_d:
16002 + ldc0.d cr0,r0[0]
16003 + ldc0.d cr14,pc[4095<<2]
16004 + ldc0.d cr6,r5[2048<<2]
16005 + ldc0.d cr4,r4[2047<<2]
16006 + ldc0.d cr8,r13[147<<2]
16007 + .text
16008 + .global stc0_w
16009 +stc0_w:
16010 + stc0.w r0[0],cr0
16011 + stc0.w pc[4095<<2],cr15
16012 + stc0.w r5[2048<<2],cr5
16013 + stc0.w r4[2047<<2],cr4
16014 + stc0.w r13[147<<2],cr9
16015 + .text
16016 + .global stc0_d
16017 +stc0_d:
16018 + stc0.d r0[0],cr0
16019 + stc0.d pc[4095<<2],cr14
16020 + stc0.d r5[2048<<2],cr6
16021 + stc0.d r4[2047<<2],cr4
16022 + stc0.d r13[147<<2],cr8
16023 + .text
16024 + .global memc
16025 +memc:
16026 + memc 0, 0
16027 + memc -4, 31
16028 + memc -65536, 16
16029 + memc 65532, 15
16030 + .text
16031 + .global mems
16032 +mems:
16033 + mems 0, 0
16034 + mems -4, 31
16035 + mems -65536, 16
16036 + mems 65532, 15
16037 + .text
16038 + .global memt
16039 +memt:
16040 + memt 0, 0
16041 + memt -4, 31
16042 + memt -65536, 16
16043 + memt 65532, 15
16044 +
16045 + .text
16046 + .global stcond
16047 +stcond:
16048 + stcond r0[0], r0
16049 + stcond pc[-1], pc
16050 + stcond r8[-32768], r7
16051 + stcond r7[32767], r8
16052 + stcond r5[0x1234], r10
16053 +
16054 +ldcm_w:
16055 + ldcm.w cp0,pc,cr0-cr7
16056 + ldcm.w cp7,r0,cr0
16057 + ldcm.w cp4,r4++,cr0-cr6
16058 + ldcm.w cp3,r7,cr7
16059 + ldcm.w cp1,r12++,cr1,cr4-cr6
16060 + ldcm.w cp0,pc,cr8-cr15
16061 + ldcm.w cp7,r0,cr8
16062 + ldcm.w cp4,r4++,cr8-cr14
16063 + ldcm.w cp3,r7,cr15
16064 + ldcm.w cp1,r12++,cr9,cr12-cr14
16065 +
16066 +ldcm_d:
16067 + ldcm.d cp0,pc,cr0-cr15
16068 + ldcm.d cp7,r0,cr0,cr1
16069 + ldcm.d cp4,r4++,cr0-cr13
16070 + ldcm.d cp3,r7,cr14-cr15
16071 + ldcm.d cp2,r12++,cr0-cr3,cr8-cr9,cr14-cr15
16072 +
16073 +stcm_w:
16074 + stcm.w cp0,pc,cr0-cr7
16075 + stcm.w cp7,r0,cr0
16076 + stcm.w cp4,--r4,cr0-cr6
16077 + stcm.w cp3,r7,cr7
16078 + stcm.w cp1,--r12,cr1,cr4-cr6
16079 + stcm.w cp0,pc,cr8-cr15
16080 + stcm.w cp7,r0,cr8
16081 + stcm.w cp4,--r4,cr8-cr14
16082 + stcm.w cp3,r7,cr15
16083 + stcm.w cp1,--r12,cr9,cr12-cr14
16084 +
16085 +stcm_d:
16086 + stcm.d cp0,pc,cr0-cr15
16087 + stcm.d cp7,r0,cr0,cr1
16088 + stcm.d cp4,--r4,cr0-cr13
16089 + stcm.d cp3,r7,cr14-cr15
16090 + stcm.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
16091 +
16092 +mvcr_w:
16093 + mvcr.w cp7,pc,cr15
16094 + mvcr.w cp0,r0,cr0
16095 + mvcr.w cp0,pc,cr15
16096 + mvcr.w cp7,r0,cr15
16097 + mvcr.w cp7,pc,cr0
16098 + mvcr.w cp4,r7,cr8
16099 + mvcr.w cp3,r8,cr7
16100 +
16101 +mvcr_d:
16102 + mvcr.d cp7,lr,cr14
16103 + mvcr.d cp0,r0,cr0
16104 + mvcr.d cp0,lr,cr14
16105 + mvcr.d cp7,r0,cr14
16106 + mvcr.d cp7,lr,cr0
16107 + mvcr.d cp4,r6,cr8
16108 + mvcr.d cp3,r8,cr6
16109 +
16110 +mvrc_w:
16111 + mvrc.w cp7,cr15,pc
16112 + mvrc.w cp0,cr0,r0
16113 + mvrc.w cp0,cr15,pc
16114 + mvrc.w cp7,cr15,r0
16115 + mvrc.w cp7,cr0,pc
16116 + mvrc.w cp4,cr8,r7
16117 + mvrc.w cp3,cr7,r8
16118 +
16119 +mvrc_d:
16120 + mvrc.d cp7,cr14,lr
16121 + mvrc.d cp0,cr0,r0
16122 + mvrc.d cp0,cr14,lr
16123 + mvrc.d cp7,cr14,r0
16124 + mvrc.d cp7,cr0,lr
16125 + mvrc.d cp4,cr8,r6
16126 + mvrc.d cp3,cr6,r8
16127 +
16128 +bfexts:
16129 + bfexts pc,pc,31,31
16130 + bfexts r0,r0,0,0
16131 + bfexts r0,pc,31,31
16132 + bfexts pc,r0,31,31
16133 + bfexts pc,pc,0,31
16134 + bfexts pc,pc,31,0
16135 + bfexts r7,r8,15,16
16136 + bfexts r8,r7,16,15
16137 +
16138 +bfextu:
16139 + bfextu pc,pc,31,31
16140 + bfextu r0,r0,0,0
16141 + bfextu r0,pc,31,31
16142 + bfextu pc,r0,31,31
16143 + bfextu pc,pc,0,31
16144 + bfextu pc,pc,31,0
16145 + bfextu r7,r8,15,16
16146 + bfextu r8,r7,16,15
16147 +
16148 +bfins:
16149 + bfins pc,pc,31,31
16150 + bfins r0,r0,0,0
16151 + bfins r0,pc,31,31
16152 + bfins pc,r0,31,31
16153 + bfins pc,pc,0,31
16154 + bfins pc,pc,31,0
16155 + bfins r7,r8,15,16
16156 + bfins r8,r7,16,15
16157 +
16158 +rsubc:
16159 + rsubeq pc,0
16160 + rsubal r12,-1
16161 + rsubls r5,-128
16162 + rsubpl r4,127
16163 + rsubne lr,1
16164 + rsubls r12,118
16165 + rsubvc lr,-12
16166 + rsubmi r4,-13
16167 +
16168 +addc:
16169 + addeq pc,pc,pc
16170 + addal r12,r12,r12
16171 + addls r5,r5,r5
16172 + addpl r4,r4,r4
16173 + addne lr,lr,lr
16174 + addls r10,r2,r1
16175 + addvc r12,r8,r11
16176 + addmi r10,r7,r0
16177 +
16178 +subc2:
16179 + subeq pc,pc,pc
16180 + subal r12,r12,r12
16181 + subls r5,r5,r5
16182 + subpl r4,r4,r4
16183 + subne lr,lr,lr
16184 + subls r10,r2,r1
16185 + subvc r12,r8,r11
16186 + submi r10,r7,r0
16187 +
16188 +andc:
16189 + andeq pc,pc,pc
16190 + andal r12,r12,r12
16191 + andls r5,r5,r5
16192 + andpl r4,r4,r4
16193 + andne lr,lr,lr
16194 + andls r10,r2,r1
16195 + andvc r12,r8,r11
16196 + andmi r10,r7,r0
16197 +
16198 +orc:
16199 + oreq pc,pc,pc
16200 + oral r12,r12,r12
16201 + orls r5,r5,r5
16202 + orpl r4,r4,r4
16203 + orne lr,lr,lr
16204 + orls r10,r2,r1
16205 + orvc r12,r8,r11
16206 + ormi r10,r7,r0
16207 +
16208 +eorc:
16209 + eoreq pc,pc,pc
16210 + eoral r12,r12,r12
16211 + eorls r5,r5,r5
16212 + eorpl r4,r4,r4
16213 + eorne lr,lr,lr
16214 + eorls r10,r2,r1
16215 + eorvc r12,r8,r11
16216 + eormi r10,r7,r0
16217 +
16218 +ldcond:
16219 + ld.weq pc,pc[2044]
16220 + ld.shal r12,r12[1022]
16221 + ld.uhls r5,r5[0]
16222 + ld.ubpl r4,r4[511]
16223 + ld.sbne lr,lr[0]
16224 + ld.wls r10,r2[0]
16225 + ld.shvc r12,r8[0x3fe]
16226 + ld.ubmi r10,r7[1]
16227 +
16228 +stcond2:
16229 + st.weq pc[2044],pc
16230 + st.hal r12[1022],r12
16231 + st.hls r5[0],r5
16232 + st.bpl r4[511],r4
16233 + st.bne lr[0],lr
16234 + st.wls r2[0],r10
16235 + st.hvc r8[0x3fe],r12
16236 + st.bmi r7[1],r10
16237 +
16238 +movh:
16239 + movh pc, 65535
16240 + movh r0, 0
16241 + movh r5, 1
16242 + movh r12, 32767
16243 +
16244 +
16245 --- /dev/null
16246 +++ b/gas/testsuite/gas/avr32/avr32.exp
16247 @@ -0,0 +1,23 @@
16248 +# AVR32 assembler testsuite. -*- Tcl -*-
16249 +
16250 +if [istarget avr32-*-*] {
16251 + run_dump_test "hwrd-lwrd"
16252 + run_dump_test "pcrel"
16253 + run_dump_test "aliases"
16254 + run_dump_test "dwarf2"
16255 + run_dump_test "pic_reloc"
16256 + run_dump_test "fpinsn"
16257 + run_dump_test "pico"
16258 + run_dump_test "lda_pic"
16259 + run_dump_test "lda_pic_linkrelax"
16260 + run_dump_test "lda_nopic"
16261 + run_dump_test "lda_nopic_linkrelax"
16262 + run_dump_test "call_pic"
16263 + run_dump_test "call_pic_linkrelax"
16264 + run_dump_test "call_nopic"
16265 + run_dump_test "call_nopic_linkrelax"
16266 + run_dump_test "jmptable"
16267 + run_dump_test "jmptable_linkrelax"
16268 + run_dump_test "symdiff"
16269 + run_dump_test "symdiff_linkrelax"
16270 +}
16271 --- /dev/null
16272 +++ b/gas/testsuite/gas/avr32/call_nopic.d
16273 @@ -0,0 +1,36 @@
16274 +#source: call.s
16275 +#as:
16276 +#objdump: -dr
16277 +#name: call_nopic
16278 +
16279 +.*: +file format .*
16280 +
16281 +Disassembly of section \.text:
16282 +
16283 +00000000 <call_test>:
16284 + 0: d7 03 nop
16285 +
16286 +00000002 <toofar_negative>:
16287 + \.\.\.
16288 + 1ffffe: 00 00 add r0,r0
16289 + 200000: f0 a0 00 00 rcall 0 <call_test>
16290 + 200004: f0 1f 00 0c mcall 200034 <toofar_negative\+0x200032>
16291 + 200008: f0 1f 00 0c mcall 200038 <toofar_negative\+0x200036>
16292 + 20000c: f0 1f 00 0c mcall 20003c <toofar_negative\+0x20003a>
16293 + 200010: f0 1f 00 0c mcall 200040 <toofar_negative\+0x20003e>
16294 + \.\.\.
16295 + 200030: ee b0 ff ff rcall 40002e <far_positive>
16296 + \.\.\.
16297 + 200034: R_AVR32_32_CPENT \.text\+0x2
16298 + 200038: R_AVR32_32_CPENT \.text\.init
16299 + 20003c: R_AVR32_32_CPENT undefined
16300 + 200040: R_AVR32_32_CPENT \.text\+0x40002c
16301 +
16302 +0040002c <toofar_positive>:
16303 + 40002c: d7 03 nop
16304 +0040002e <far_positive>:
16305 + 40002e: d7 03 nop
16306 +Disassembly of section \.text\.init:
16307 +
16308 +00000000 <different_section>:
16309 + 0: e2 c0 00 00 sub r0,r1,0
16310 --- /dev/null
16311 +++ b/gas/testsuite/gas/avr32/call_nopic_linkrelax.d
16312 @@ -0,0 +1,43 @@
16313 +#source: call.s
16314 +#as: --linkrelax
16315 +#objdump: -dr
16316 +#name: call_nopic_linkrelax
16317 +
16318 +.*: +file format .*
16319 +
16320 +Disassembly of section \.text:
16321 +
16322 +00000000 <call_test>:
16323 + 0: d7 03 nop
16324 +
16325 +00000002 <toofar_negative>:
16326 + \.\.\.
16327 + 1ffffe: 00 00 add r0,r0
16328 + 200000: e0 a0 00 00 rcall 200000 <toofar_negative\+0x1ffffe>
16329 + 200000: R_AVR32_22H_PCREL \.text
16330 + 200004: f0 1f 00 00 mcall 200004 <toofar_negative\+0x200002>
16331 + 200004: R_AVR32_CPCALL \.text\+0x200034
16332 + 200008: f0 1f 00 00 mcall 200008 <toofar_negative\+0x200006>
16333 + 200008: R_AVR32_CPCALL \.text\+0x200038
16334 + 20000c: f0 1f 00 00 mcall 20000c <toofar_negative\+0x20000a>
16335 + 20000c: R_AVR32_CPCALL \.text\+0x20003c
16336 + 200010: f0 1f 00 00 mcall 200010 <toofar_negative\+0x20000e>
16337 + 200010: R_AVR32_CPCALL \.text\+0x200040
16338 + \.\.\.
16339 + 200030: e0 a0 00 00 rcall 200030 <toofar_negative\+0x20002e>
16340 + 200030: R_AVR32_22H_PCREL \.text\+0x40002e
16341 + \.\.\.
16342 + 200034: R_AVR32_ALIGN \*ABS\*\+0x2
16343 + 200034: R_AVR32_32_CPENT \.text\+0x2
16344 + 200038: R_AVR32_32_CPENT \.text\.init
16345 + 20003c: R_AVR32_32_CPENT undefined
16346 + 200040: R_AVR32_32_CPENT \.text\+0x40002c
16347 +
16348 +0040002c <toofar_positive>:
16349 + 40002c: d7 03 nop
16350 +0040002e <far_positive>:
16351 + 40002e: d7 03 nop
16352 +Disassembly of section \.text\.init:
16353 +
16354 +00000000 <different_section>:
16355 + 0: e2 c0 00 00 sub r0,r1,0
16356 --- /dev/null
16357 +++ b/gas/testsuite/gas/avr32/call_pic.d
16358 @@ -0,0 +1,36 @@
16359 +#source: call.s
16360 +#as: --pic
16361 +#objdump: -dr
16362 +#name: call_pic
16363 +
16364 +.*: +file format .*
16365 +
16366 +Disassembly of section \.text:
16367 +
16368 +00000000 <call_test>:
16369 + 0: d7 03 nop
16370 +
16371 +00000002 <toofar_negative>:
16372 + \.\.\.
16373 + 1ffffe: 00 00 add r0,r0
16374 + 200000: f0 a0 00 00 rcall 0 <call_test>
16375 + 200004: f0 16 00 00 mcall r6\[0\]
16376 + 200004: R_AVR32_GOT18SW toofar_negative
16377 + 200008: f0 16 00 00 mcall r6\[0\]
16378 + 200008: R_AVR32_GOT18SW different_section
16379 + 20000c: f0 16 00 00 mcall r6\[0\]
16380 + 20000c: R_AVR32_GOT18SW undefined
16381 + 200010: f0 16 00 00 mcall r6\[0\]
16382 + 200010: R_AVR32_GOT18SW toofar_positive
16383 + \.\.\.
16384 + 200030: ee b0 ff ff rcall 40002e <far_positive>
16385 + \.\.\.
16386 +
16387 +0040002c <toofar_positive>:
16388 + 40002c: d7 03 nop
16389 +0040002e <far_positive>:
16390 + 40002e: d7 03 nop
16391 +Disassembly of section \.text\.init:
16392 +
16393 +00000000 <different_section>:
16394 + 0: e2 c0 00 00 sub r0,r1,0
16395 --- /dev/null
16396 +++ b/gas/testsuite/gas/avr32/call_pic_linkrelax.d
16397 @@ -0,0 +1,47 @@
16398 +#source: call.s
16399 +#as: --pic --linkrelax
16400 +#objdump: -dr
16401 +#name: call_pic_linkrelax
16402 +
16403 +.*: +file format .*
16404 +
16405 +Disassembly of section \.text:
16406 +
16407 +00000000 <call_test>:
16408 + 0: d7 03 nop
16409 +
16410 +00000002 <toofar_negative>:
16411 + \.\.\.
16412 + 1ffffe: 00 00 add r0,r0
16413 + 200000: e0 a0 00 00 rcall 200000 <toofar_negative\+0x1ffffe>
16414 + 200000: R_AVR32_22H_PCREL \.text
16415 + 200004: e0 6e 00 00 mov lr,0
16416 + 200004: R_AVR32_GOTCALL toofar_negative
16417 + 200008: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
16418 + 20000c: 5d 1e icall lr
16419 + 20000e: e0 6e 00 00 mov lr,0
16420 + 20000e: R_AVR32_GOTCALL different_section
16421 + 200012: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
16422 + 200016: 5d 1e icall lr
16423 + 200018: e0 6e 00 00 mov lr,0
16424 + 200018: R_AVR32_GOTCALL undefined
16425 + 20001c: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
16426 + 200020: 5d 1e icall lr
16427 + 200022: e0 6e 00 00 mov lr,0
16428 + 200022: R_AVR32_GOTCALL toofar_positive
16429 + 200026: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
16430 + 20002a: 5d 1e icall lr
16431 + 20002c: 00 00 add r0,r0
16432 + 20002e: 00 00 add r0,r0
16433 + 200030: e0 a0 00 00 rcall 200030 <toofar_negative\+0x20002e>
16434 + 200030: R_AVR32_22H_PCREL \.text\+0x40002e
16435 + \.\.\.
16436 +
16437 +0040002c <toofar_positive>:
16438 + 40002c: d7 03 nop
16439 +0040002e <far_positive>:
16440 + 40002e: d7 03 nop
16441 +Disassembly of section \.text\.init:
16442 +
16443 +00000000 <different_section>:
16444 + 0: e2 c0 00 00 sub r0,r1,0
16445 --- /dev/null
16446 +++ b/gas/testsuite/gas/avr32/call.s
16447 @@ -0,0 +1,30 @@
16448 +
16449 + .text
16450 + .global call_test
16451 +call_test:
16452 +far_negative:
16453 + nop
16454 +toofar_negative:
16455 +
16456 + .org 0x200000
16457 +
16458 + call far_negative
16459 + call toofar_negative
16460 + call different_section
16461 + call undefined
16462 + call toofar_positive
16463 + .org 0x200030
16464 + call far_positive
16465 +
16466 + .cpool
16467 +
16468 + .org 0x40002c
16469 +
16470 +toofar_positive:
16471 + nop
16472 +far_positive:
16473 + nop
16474 +
16475 + .section .text.init,"ax",@progbits
16476 +different_section:
16477 + sub r0, r1, 0
16478 --- /dev/null
16479 +++ b/gas/testsuite/gas/avr32/dwarf2.d
16480 @@ -0,0 +1,42 @@
16481 +#readelf: -wl
16482 +#name: dwarf2
16483 +#source: dwarf2.s
16484 +
16485 +Dump of debug contents of section \.debug_line:
16486 +
16487 + Length: 53
16488 + DWARF Version: 2
16489 + Prologue Length: 26
16490 + Minimum Instruction Length: 1
16491 + Initial value of 'is_stmt': 1
16492 + Line Base: -5
16493 + Line Range: 14
16494 + Opcode Base: 10
16495 + \(Pointer size: 4\)
16496 +
16497 + Opcodes:
16498 + Opcode 1 has 0 args
16499 + Opcode 2 has 1 args
16500 + Opcode 3 has 1 args
16501 + Opcode 4 has 1 args
16502 + Opcode 5 has 1 args
16503 + Opcode 6 has 0 args
16504 + Opcode 7 has 0 args
16505 + Opcode 8 has 0 args
16506 + Opcode 9 has 1 args
16507 +
16508 + The Directory Table is empty\.
16509 +
16510 + The File Name Table:
16511 + Entry Dir Time Size Name
16512 + 1 0 0 0 main\.c
16513 +
16514 + Line Number Statements:
16515 + Extended opcode 2: set Address to 0x0
16516 + Advance Line by 87 to 88
16517 + Copy
16518 + Advance Line by 23 to 111
16519 + Special opcode .*: advance Address by 4 to 0x4 and Line by 0 to 111
16520 + Special opcode .*: advance Address by 10 to 0xe and Line by 1 to 112
16521 + Advance PC by 530 to 220
16522 + Extended opcode 1: End of Sequence
16523 --- /dev/null
16524 +++ b/gas/testsuite/gas/avr32/dwarf2.s
16525 @@ -0,0 +1,67 @@
16526 +# Source file used to test DWARF2 information for AVR32.
16527 +
16528 + .file "main.c"
16529 +
16530 + .section .debug_abbrev,"",@progbits
16531 +.Ldebug_abbrev0:
16532 + .section .debug_info,"",@progbits
16533 +.Ldebug_info0:
16534 + .section .debug_line,"",@progbits
16535 +.Ldebug_line0:
16536 +
16537 + .text
16538 + .align 1
16539 + .globl main
16540 + .type main, @function
16541 +.Ltext0:
16542 +main:
16543 + .file 1 "main.c"
16544 + .loc 1 88 0
16545 + pushm r0-r7,lr
16546 + sub sp, 4
16547 + .loc 1 111 0
16548 + lddpc r12, .LC1
16549 + lddpc r7, .LC1
16550 + icall r7
16551 + .loc 1 112 0
16552 + lddpc r6, .LC4
16553 +
16554 + .align 2
16555 +.LC4: .int 0
16556 +
16557 + .fill 256, 2, 0
16558 +
16559 + .align 2
16560 +.LC1:
16561 + .int 0
16562 +.LC2:
16563 + .int 0
16564 +.LC3:
16565 + .int 0
16566 + .size main, . - main
16567 +
16568 +.Letext0:
16569 +
16570 + .section .debug_info
16571 + .int .Ledebug_info0 - .Ldebug_info0 // size
16572 + .short 2 // version
16573 + .int .Ldebug_abbrev0 // abbrev offset
16574 + .byte 4 // bytes per addr
16575 +
16576 + .uleb128 1 // abbrev 1
16577 + .int .Ldebug_line0 // DW_AT_stmt_list
16578 + .int .Letext0 // DW_AT_high_pc
16579 + .int .Ltext0 // DW_AT_low_pc
16580 +
16581 +.Ledebug_info0:
16582 +
16583 + .section .debug_abbrev
16584 + .uleb128 0x01
16585 + .uleb128 0x11 // DW_TAG_compile_unit
16586 + .byte 0 // DW_CHILDREN_no
16587 + .uleb128 0x10, 0x6 // DW_AT_stmt_list
16588 + .uleb128 0x12, 0x1 // DW_AT_high_pc
16589 + .uleb128 0x11, 0x1 // DW_AT_low_pc
16590 + .uleb128 0, 0
16591 +
16592 + .byte 0
16593 --- /dev/null
16594 +++ b/gas/testsuite/gas/avr32/fpinsn.d
16595 @@ -0,0 +1,271 @@
16596 +#as:
16597 +#objdump: -dr
16598 +#name: fpinsn
16599 +
16600 +.*: +file format .*
16601 +
16602 +Disassembly of section \.text:
16603 +
16604 +[0-9a-f]* <fadd_s>:
16605 + *[0-9a-f]*: e1 a2 0f ff cop cp0,cr15,cr15,cr15,0x4
16606 + *[0-9a-f]*: e1 a2 00 00 cop cp0,cr0,cr0,cr0,0x4
16607 + *[0-9a-f]*: e1 a2 00 ff cop cp0,cr0,cr15,cr15,0x4
16608 + *[0-9a-f]*: e1 a2 0f 0f cop cp0,cr15,cr0,cr15,0x4
16609 + *[0-9a-f]*: e1 a2 0f f0 cop cp0,cr15,cr15,cr0,0x4
16610 + *[0-9a-f]*: e1 a2 07 88 cop cp0,cr7,cr8,cr8,0x4
16611 + *[0-9a-f]*: e1 a2 08 78 cop cp0,cr8,cr7,cr8,0x4
16612 + *[0-9a-f]*: e1 a2 08 87 cop cp0,cr8,cr8,cr7,0x4
16613 +
16614 +[0-9a-f]* <fsub_s>:
16615 + *[0-9a-f]*: e1 a2 1f ff cop cp0,cr15,cr15,cr15,0x5
16616 + *[0-9a-f]*: e1 a2 10 00 cop cp0,cr0,cr0,cr0,0x5
16617 + *[0-9a-f]*: e1 a2 10 ff cop cp0,cr0,cr15,cr15,0x5
16618 + *[0-9a-f]*: e1 a2 1f 0f cop cp0,cr15,cr0,cr15,0x5
16619 + *[0-9a-f]*: e1 a2 1f f0 cop cp0,cr15,cr15,cr0,0x5
16620 + *[0-9a-f]*: e1 a2 17 88 cop cp0,cr7,cr8,cr8,0x5
16621 + *[0-9a-f]*: e1 a2 18 78 cop cp0,cr8,cr7,cr8,0x5
16622 + *[0-9a-f]*: e1 a2 18 87 cop cp0,cr8,cr8,cr7,0x5
16623 +
16624 +[0-9a-f]* <fmac_s>:
16625 + *[0-9a-f]*: e1 a0 0f ff cop cp0,cr15,cr15,cr15,0x0
16626 + *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0
16627 + *[0-9a-f]*: e1 a0 00 ff cop cp0,cr0,cr15,cr15,0x0
16628 + *[0-9a-f]*: e1 a0 0f 0f cop cp0,cr15,cr0,cr15,0x0
16629 + *[0-9a-f]*: e1 a0 0f f0 cop cp0,cr15,cr15,cr0,0x0
16630 + *[0-9a-f]*: e1 a0 07 88 cop cp0,cr7,cr8,cr8,0x0
16631 + *[0-9a-f]*: e1 a0 08 78 cop cp0,cr8,cr7,cr8,0x0
16632 + *[0-9a-f]*: e1 a0 08 87 cop cp0,cr8,cr8,cr7,0x0
16633 +
16634 +[0-9a-f]* <fnmac_s>:
16635 + *[0-9a-f]*: e1 a0 1f ff cop cp0,cr15,cr15,cr15,0x1
16636 + *[0-9a-f]*: e1 a0 10 00 cop cp0,cr0,cr0,cr0,0x1
16637 + *[0-9a-f]*: e1 a0 10 ff cop cp0,cr0,cr15,cr15,0x1
16638 + *[0-9a-f]*: e1 a0 1f 0f cop cp0,cr15,cr0,cr15,0x1
16639 + *[0-9a-f]*: e1 a0 1f f0 cop cp0,cr15,cr15,cr0,0x1
16640 + *[0-9a-f]*: e1 a0 17 88 cop cp0,cr7,cr8,cr8,0x1
16641 + *[0-9a-f]*: e1 a0 18 78 cop cp0,cr8,cr7,cr8,0x1
16642 + *[0-9a-f]*: e1 a0 18 87 cop cp0,cr8,cr8,cr7,0x1
16643 +
16644 +[0-9a-f]* <fmsc_s>:
16645 + *[0-9a-f]*: e1 a1 0f ff cop cp0,cr15,cr15,cr15,0x2
16646 + *[0-9a-f]*: e1 a1 00 00 cop cp0,cr0,cr0,cr0,0x2
16647 + *[0-9a-f]*: e1 a1 00 ff cop cp0,cr0,cr15,cr15,0x2
16648 + *[0-9a-f]*: e1 a1 0f 0f cop cp0,cr15,cr0,cr15,0x2
16649 + *[0-9a-f]*: e1 a1 0f f0 cop cp0,cr15,cr15,cr0,0x2
16650 + *[0-9a-f]*: e1 a1 07 88 cop cp0,cr7,cr8,cr8,0x2
16651 + *[0-9a-f]*: e1 a1 08 78 cop cp0,cr8,cr7,cr8,0x2
16652 + *[0-9a-f]*: e1 a1 08 87 cop cp0,cr8,cr8,cr7,0x2
16653 +
16654 +[0-9a-f]* <fnmsc_s>:
16655 + *[0-9a-f]*: e1 a1 1f ff cop cp0,cr15,cr15,cr15,0x3
16656 + *[0-9a-f]*: e1 a1 10 00 cop cp0,cr0,cr0,cr0,0x3
16657 + *[0-9a-f]*: e1 a1 10 ff cop cp0,cr0,cr15,cr15,0x3
16658 + *[0-9a-f]*: e1 a1 1f 0f cop cp0,cr15,cr0,cr15,0x3
16659 + *[0-9a-f]*: e1 a1 1f f0 cop cp0,cr15,cr15,cr0,0x3
16660 + *[0-9a-f]*: e1 a1 17 88 cop cp0,cr7,cr8,cr8,0x3
16661 + *[0-9a-f]*: e1 a1 18 78 cop cp0,cr8,cr7,cr8,0x3
16662 + *[0-9a-f]*: e1 a1 18 87 cop cp0,cr8,cr8,cr7,0x3
16663 +
16664 +[0-9a-f]* <fmul_s>:
16665 + *[0-9a-f]*: e1 a3 0f ff cop cp0,cr15,cr15,cr15,0x6
16666 + *[0-9a-f]*: e1 a3 00 00 cop cp0,cr0,cr0,cr0,0x6
16667 + *[0-9a-f]*: e1 a3 00 ff cop cp0,cr0,cr15,cr15,0x6
16668 + *[0-9a-f]*: e1 a3 0f 0f cop cp0,cr15,cr0,cr15,0x6
16669 + *[0-9a-f]*: e1 a3 0f f0 cop cp0,cr15,cr15,cr0,0x6
16670 + *[0-9a-f]*: e1 a3 07 88 cop cp0,cr7,cr8,cr8,0x6
16671 + *[0-9a-f]*: e1 a3 08 78 cop cp0,cr8,cr7,cr8,0x6
16672 + *[0-9a-f]*: e1 a3 08 87 cop cp0,cr8,cr8,cr7,0x6
16673 +
16674 +[0-9a-f]* <fnmul_s>:
16675 + *[0-9a-f]*: e1 a3 1f ff cop cp0,cr15,cr15,cr15,0x7
16676 + *[0-9a-f]*: e1 a3 10 00 cop cp0,cr0,cr0,cr0,0x7
16677 + *[0-9a-f]*: e1 a3 10 ff cop cp0,cr0,cr15,cr15,0x7
16678 + *[0-9a-f]*: e1 a3 1f 0f cop cp0,cr15,cr0,cr15,0x7
16679 + *[0-9a-f]*: e1 a3 1f f0 cop cp0,cr15,cr15,cr0,0x7
16680 + *[0-9a-f]*: e1 a3 17 88 cop cp0,cr7,cr8,cr8,0x7
16681 + *[0-9a-f]*: e1 a3 18 78 cop cp0,cr8,cr7,cr8,0x7
16682 + *[0-9a-f]*: e1 a3 18 87 cop cp0,cr8,cr8,cr7,0x7
16683 +
16684 +[0-9a-f]* <fneg_s>:
16685 + *[0-9a-f]*: e1 a4 0f f0 cop cp0,cr15,cr15,cr0,0x8
16686 + *[0-9a-f]*: e1 a4 00 00 cop cp0,cr0,cr0,cr0,0x8
16687 + *[0-9a-f]*: e1 a4 00 f0 cop cp0,cr0,cr15,cr0,0x8
16688 + *[0-9a-f]*: e1 a4 0f 00 cop cp0,cr15,cr0,cr0,0x8
16689 + *[0-9a-f]*: e1 a4 07 80 cop cp0,cr7,cr8,cr0,0x8
16690 + *[0-9a-f]*: e1 a4 08 70 cop cp0,cr8,cr7,cr0,0x8
16691 +
16692 +[0-9a-f]* <fabs_s>:
16693 + *[0-9a-f]*: e1 a4 1f f0 cop cp0,cr15,cr15,cr0,0x9
16694 + *[0-9a-f]*: e1 a4 10 00 cop cp0,cr0,cr0,cr0,0x9
16695 + *[0-9a-f]*: e1 a4 10 f0 cop cp0,cr0,cr15,cr0,0x9
16696 + *[0-9a-f]*: e1 a4 1f 00 cop cp0,cr15,cr0,cr0,0x9
16697 + *[0-9a-f]*: e1 a4 17 80 cop cp0,cr7,cr8,cr0,0x9
16698 + *[0-9a-f]*: e1 a4 18 70 cop cp0,cr8,cr7,cr0,0x9
16699 +
16700 +[0-9a-f]* <fcmp_s>:
16701 + *[0-9a-f]*: e1 a6 10 ff cop cp0,cr0,cr15,cr15,0xd
16702 + *[0-9a-f]*: e1 a6 10 00 cop cp0,cr0,cr0,cr0,0xd
16703 + *[0-9a-f]*: e1 a6 10 0f cop cp0,cr0,cr0,cr15,0xd
16704 + *[0-9a-f]*: e1 a6 10 f0 cop cp0,cr0,cr15,cr0,0xd
16705 + *[0-9a-f]*: e1 a6 10 78 cop cp0,cr0,cr7,cr8,0xd
16706 + *[0-9a-f]*: e1 a6 10 87 cop cp0,cr0,cr8,cr7,0xd
16707 +
16708 +[0-9a-f]* <fadd_d>:
16709 + *[0-9a-f]*: e5 a2 0e ee cop cp0,cr14,cr14,cr14,0x44
16710 + *[0-9a-f]*: e5 a2 00 00 cop cp0,cr0,cr0,cr0,0x44
16711 + *[0-9a-f]*: e5 a2 00 ee cop cp0,cr0,cr14,cr14,0x44
16712 + *[0-9a-f]*: e5 a2 0e 0e cop cp0,cr14,cr0,cr14,0x44
16713 + *[0-9a-f]*: e5 a2 0e e0 cop cp0,cr14,cr14,cr0,0x44
16714 + *[0-9a-f]*: e5 a2 06 88 cop cp0,cr6,cr8,cr8,0x44
16715 + *[0-9a-f]*: e5 a2 08 68 cop cp0,cr8,cr6,cr8,0x44
16716 + *[0-9a-f]*: e5 a2 08 86 cop cp0,cr8,cr8,cr6,0x44
16717 +
16718 +[0-9a-f]* <fsub_d>:
16719 + *[0-9a-f]*: e5 a2 1e ee cop cp0,cr14,cr14,cr14,0x45
16720 + *[0-9a-f]*: e5 a2 10 00 cop cp0,cr0,cr0,cr0,0x45
16721 + *[0-9a-f]*: e5 a2 10 ee cop cp0,cr0,cr14,cr14,0x45
16722 + *[0-9a-f]*: e5 a2 1e 0e cop cp0,cr14,cr0,cr14,0x45
16723 + *[0-9a-f]*: e5 a2 1e e0 cop cp0,cr14,cr14,cr0,0x45
16724 + *[0-9a-f]*: e5 a2 16 88 cop cp0,cr6,cr8,cr8,0x45
16725 + *[0-9a-f]*: e5 a2 18 68 cop cp0,cr8,cr6,cr8,0x45
16726 + *[0-9a-f]*: e5 a2 18 86 cop cp0,cr8,cr8,cr6,0x45
16727 +
16728 +[0-9a-f]* <fmac_d>:
16729 + *[0-9a-f]*: e5 a0 0e ee cop cp0,cr14,cr14,cr14,0x40
16730 + *[0-9a-f]*: e5 a0 00 00 cop cp0,cr0,cr0,cr0,0x40
16731 + *[0-9a-f]*: e5 a0 00 ee cop cp0,cr0,cr14,cr14,0x40
16732 + *[0-9a-f]*: e5 a0 0e 0e cop cp0,cr14,cr0,cr14,0x40
16733 + *[0-9a-f]*: e5 a0 0e e0 cop cp0,cr14,cr14,cr0,0x40
16734 + *[0-9a-f]*: e5 a0 06 88 cop cp0,cr6,cr8,cr8,0x40
16735 + *[0-9a-f]*: e5 a0 08 68 cop cp0,cr8,cr6,cr8,0x40
16736 + *[0-9a-f]*: e5 a0 08 86 cop cp0,cr8,cr8,cr6,0x40
16737 +
16738 +[0-9a-f]* <fnmac_d>:
16739 + *[0-9a-f]*: e5 a0 1e ee cop cp0,cr14,cr14,cr14,0x41
16740 + *[0-9a-f]*: e5 a0 10 00 cop cp0,cr0,cr0,cr0,0x41
16741 + *[0-9a-f]*: e5 a0 10 ee cop cp0,cr0,cr14,cr14,0x41
16742 + *[0-9a-f]*: e5 a0 1e 0e cop cp0,cr14,cr0,cr14,0x41
16743 + *[0-9a-f]*: e5 a0 1e e0 cop cp0,cr14,cr14,cr0,0x41
16744 + *[0-9a-f]*: e5 a0 16 88 cop cp0,cr6,cr8,cr8,0x41
16745 + *[0-9a-f]*: e5 a0 18 68 cop cp0,cr8,cr6,cr8,0x41
16746 + *[0-9a-f]*: e5 a0 18 86 cop cp0,cr8,cr8,cr6,0x41
16747 +
16748 +[0-9a-f]* <fmsc_d>:
16749 + *[0-9a-f]*: e5 a1 0e ee cop cp0,cr14,cr14,cr14,0x42
16750 + *[0-9a-f]*: e5 a1 00 00 cop cp0,cr0,cr0,cr0,0x42
16751 + *[0-9a-f]*: e5 a1 00 ee cop cp0,cr0,cr14,cr14,0x42
16752 + *[0-9a-f]*: e5 a1 0e 0e cop cp0,cr14,cr0,cr14,0x42
16753 + *[0-9a-f]*: e5 a1 0e e0 cop cp0,cr14,cr14,cr0,0x42
16754 + *[0-9a-f]*: e5 a1 06 88 cop cp0,cr6,cr8,cr8,0x42
16755 + *[0-9a-f]*: e5 a1 08 68 cop cp0,cr8,cr6,cr8,0x42
16756 + *[0-9a-f]*: e5 a1 08 86 cop cp0,cr8,cr8,cr6,0x42
16757 +
16758 +[0-9a-f]* <fnmsc_d>:
16759 + *[0-9a-f]*: e5 a1 1e ee cop cp0,cr14,cr14,cr14,0x43
16760 + *[0-9a-f]*: e5 a1 10 00 cop cp0,cr0,cr0,cr0,0x43
16761 + *[0-9a-f]*: e5 a1 10 ee cop cp0,cr0,cr14,cr14,0x43
16762 + *[0-9a-f]*: e5 a1 1e 0e cop cp0,cr14,cr0,cr14,0x43
16763 + *[0-9a-f]*: e5 a1 1e e0 cop cp0,cr14,cr14,cr0,0x43
16764 + *[0-9a-f]*: e5 a1 16 88 cop cp0,cr6,cr8,cr8,0x43
16765 + *[0-9a-f]*: e5 a1 18 68 cop cp0,cr8,cr6,cr8,0x43
16766 + *[0-9a-f]*: e5 a1 18 86 cop cp0,cr8,cr8,cr6,0x43
16767 +
16768 +[0-9a-f]* <fmul_d>:
16769 + *[0-9a-f]*: e5 a3 0e ee cop cp0,cr14,cr14,cr14,0x46
16770 + *[0-9a-f]*: e5 a3 00 00 cop cp0,cr0,cr0,cr0,0x46
16771 + *[0-9a-f]*: e5 a3 00 ee cop cp0,cr0,cr14,cr14,0x46
16772 + *[0-9a-f]*: e5 a3 0e 0e cop cp0,cr14,cr0,cr14,0x46
16773 + *[0-9a-f]*: e5 a3 0e e0 cop cp0,cr14,cr14,cr0,0x46
16774 + *[0-9a-f]*: e5 a3 06 88 cop cp0,cr6,cr8,cr8,0x46
16775 + *[0-9a-f]*: e5 a3 08 68 cop cp0,cr8,cr6,cr8,0x46
16776 + *[0-9a-f]*: e5 a3 08 86 cop cp0,cr8,cr8,cr6,0x46
16777 +
16778 +[0-9a-f]* <fnmul_d>:
16779 + *[0-9a-f]*: e5 a3 1e ee cop cp0,cr14,cr14,cr14,0x47
16780 + *[0-9a-f]*: e5 a3 10 00 cop cp0,cr0,cr0,cr0,0x47
16781 + *[0-9a-f]*: e5 a3 10 ee cop cp0,cr0,cr14,cr14,0x47
16782 + *[0-9a-f]*: e5 a3 1e 0e cop cp0,cr14,cr0,cr14,0x47
16783 + *[0-9a-f]*: e5 a3 1e e0 cop cp0,cr14,cr14,cr0,0x47
16784 + *[0-9a-f]*: e5 a3 16 88 cop cp0,cr6,cr8,cr8,0x47
16785 + *[0-9a-f]*: e5 a3 18 68 cop cp0,cr8,cr6,cr8,0x47
16786 + *[0-9a-f]*: e5 a3 18 86 cop cp0,cr8,cr8,cr6,0x47
16787 +
16788 +[0-9a-f]* <fneg_d>:
16789 + *[0-9a-f]*: e5 a4 0e e0 cop cp0,cr14,cr14,cr0,0x48
16790 + *[0-9a-f]*: e5 a4 00 00 cop cp0,cr0,cr0,cr0,0x48
16791 + *[0-9a-f]*: e5 a4 00 e0 cop cp0,cr0,cr14,cr0,0x48
16792 + *[0-9a-f]*: e5 a4 0e 00 cop cp0,cr14,cr0,cr0,0x48
16793 + *[0-9a-f]*: e5 a4 06 80 cop cp0,cr6,cr8,cr0,0x48
16794 + *[0-9a-f]*: e5 a4 08 60 cop cp0,cr8,cr6,cr0,0x48
16795 +
16796 +[0-9a-f]* <fabs_d>:
16797 + *[0-9a-f]*: e5 a4 1e e0 cop cp0,cr14,cr14,cr0,0x49
16798 + *[0-9a-f]*: e5 a4 10 00 cop cp0,cr0,cr0,cr0,0x49
16799 + *[0-9a-f]*: e5 a4 10 e0 cop cp0,cr0,cr14,cr0,0x49
16800 + *[0-9a-f]*: e5 a4 1e 00 cop cp0,cr14,cr0,cr0,0x49
16801 + *[0-9a-f]*: e5 a4 16 80 cop cp0,cr6,cr8,cr0,0x49
16802 + *[0-9a-f]*: e5 a4 18 60 cop cp0,cr8,cr6,cr0,0x49
16803 +
16804 +[0-9a-f]* <fcmp_d>:
16805 + *[0-9a-f]*: e5 a6 10 ee cop cp0,cr0,cr14,cr14,0x4d
16806 + *[0-9a-f]*: e5 a6 10 00 cop cp0,cr0,cr0,cr0,0x4d
16807 + *[0-9a-f]*: e5 a6 10 0e cop cp0,cr0,cr0,cr14,0x4d
16808 + *[0-9a-f]*: e5 a6 10 e0 cop cp0,cr0,cr14,cr0,0x4d
16809 + *[0-9a-f]*: e5 a6 10 68 cop cp0,cr0,cr6,cr8,0x4d
16810 + *[0-9a-f]*: e5 a6 10 86 cop cp0,cr0,cr8,cr6,0x4d
16811 +
16812 +[0-9a-f]* <fmov_s>:
16813 + *[0-9a-f]*: e1 a5 0f f0 cop cp0,cr15,cr15,cr0,0xa
16814 + *[0-9a-f]*: e1 a5 00 00 cop cp0,cr0,cr0,cr0,0xa
16815 + *[0-9a-f]*: e1 a5 0f 00 cop cp0,cr15,cr0,cr0,0xa
16816 + *[0-9a-f]*: e1 a5 00 f0 cop cp0,cr0,cr15,cr0,0xa
16817 + *[0-9a-f]*: e1 a5 08 70 cop cp0,cr8,cr7,cr0,0xa
16818 + *[0-9a-f]*: e1 a5 07 80 cop cp0,cr7,cr8,cr0,0xa
16819 + *[0-9a-f]*: ef af 0f 00 mvcr.w cp0,pc,cr15
16820 + *[0-9a-f]*: ef a0 00 00 mvcr.w cp0,r0,cr0
16821 + *[0-9a-f]*: ef af 00 00 mvcr.w cp0,pc,cr0
16822 + *[0-9a-f]*: ef a0 0f 00 mvcr.w cp0,r0,cr15
16823 + *[0-9a-f]*: ef a8 07 00 mvcr.w cp0,r8,cr7
16824 + *[0-9a-f]*: ef a7 08 00 mvcr.w cp0,r7,cr8
16825 + *[0-9a-f]*: ef af 0f 20 mvrc.w cp0,cr15,pc
16826 + *[0-9a-f]*: ef a0 00 20 mvrc.w cp0,cr0,r0
16827 + *[0-9a-f]*: ef a0 0f 20 mvrc.w cp0,cr15,r0
16828 + *[0-9a-f]*: ef af 00 20 mvrc.w cp0,cr0,pc
16829 + *[0-9a-f]*: ef a7 08 20 mvrc.w cp0,cr8,r7
16830 + *[0-9a-f]*: ef a8 07 20 mvrc.w cp0,cr7,r8
16831 +
16832 +[0-9a-f]* <fmov_d>:
16833 + *[0-9a-f]*: e5 a5 0e e0 cop cp0,cr14,cr14,cr0,0x4a
16834 + *[0-9a-f]*: e5 a5 00 00 cop cp0,cr0,cr0,cr0,0x4a
16835 + *[0-9a-f]*: e5 a5 0e 00 cop cp0,cr14,cr0,cr0,0x4a
16836 + *[0-9a-f]*: e5 a5 00 e0 cop cp0,cr0,cr14,cr0,0x4a
16837 + *[0-9a-f]*: e5 a5 08 60 cop cp0,cr8,cr6,cr0,0x4a
16838 + *[0-9a-f]*: e5 a5 06 80 cop cp0,cr6,cr8,cr0,0x4a
16839 + *[0-9a-f]*: ef ae 0e 10 mvcr.d cp0,lr,cr14
16840 + *[0-9a-f]*: ef a0 00 10 mvcr.d cp0,r0,cr0
16841 + *[0-9a-f]*: ef ae 00 10 mvcr.d cp0,lr,cr0
16842 + *[0-9a-f]*: ef a0 0e 10 mvcr.d cp0,r0,cr14
16843 + *[0-9a-f]*: ef a8 06 10 mvcr.d cp0,r8,cr6
16844 + *[0-9a-f]*: ef a6 08 10 mvcr.d cp0,r6,cr8
16845 + *[0-9a-f]*: ef ae 0e 30 mvrc.d cp0,cr14,lr
16846 + *[0-9a-f]*: ef a0 00 30 mvrc.d cp0,cr0,r0
16847 + *[0-9a-f]*: ef a0 0e 30 mvrc.d cp0,cr14,r0
16848 + *[0-9a-f]*: ef ae 00 30 mvrc.d cp0,cr0,lr
16849 + *[0-9a-f]*: ef a6 08 30 mvrc.d cp0,cr8,r6
16850 + *[0-9a-f]*: ef a8 06 30 mvrc.d cp0,cr6,r8
16851 +
16852 +[0-9a-f]* <fcasts_d>:
16853 + *[0-9a-f]*: e1 a7 1f e0 cop cp0,cr15,cr14,cr0,0xf
16854 + *[0-9a-f]*: e1 a7 10 00 cop cp0,cr0,cr0,cr0,0xf
16855 + *[0-9a-f]*: e1 a7 1f 00 cop cp0,cr15,cr0,cr0,0xf
16856 + *[0-9a-f]*: e1 a7 10 e0 cop cp0,cr0,cr14,cr0,0xf
16857 + *[0-9a-f]*: e1 a7 18 60 cop cp0,cr8,cr6,cr0,0xf
16858 + *[0-9a-f]*: e1 a7 17 80 cop cp0,cr7,cr8,cr0,0xf
16859 +
16860 +[0-9a-f]* <fcastd_s>:
16861 + *[0-9a-f]*: e1 a8 0e f0 cop cp0,cr14,cr15,cr0,0x10
16862 + *[0-9a-f]*: e1 a8 00 00 cop cp0,cr0,cr0,cr0,0x10
16863 + *[0-9a-f]*: e1 a8 0e 00 cop cp0,cr14,cr0,cr0,0x10
16864 + *[0-9a-f]*: e1 a8 00 f0 cop cp0,cr0,cr15,cr0,0x10
16865 + *[0-9a-f]*: e1 a8 08 70 cop cp0,cr8,cr7,cr0,0x10
16866 + *[0-9a-f]*: e1 a8 06 80 cop cp0,cr6,cr8,cr0,0x10
16867 --- /dev/null
16868 +++ b/gas/testsuite/gas/avr32/fpinsn.s
16869 @@ -0,0 +1,266 @@
16870 +
16871 + .text
16872 + .global fadd_s
16873 +fadd_s:
16874 + fadd.s fr15, fr15, fr15
16875 + fadd.s fr0, fr0, fr0
16876 + fadd.s fr0, fr15, fr15
16877 + fadd.s fr15, fr0, fr15
16878 + fadd.s fr15, fr15, fr0
16879 + fadd.s fr7, fr8, fr8
16880 + fadd.s fr8, fr7, fr8
16881 + fadd.s fr8, fr8, fr7
16882 + .global fsub_s
16883 +fsub_s:
16884 + fsub.s fr15, fr15, fr15
16885 + fsub.s fr0, fr0, fr0
16886 + fsub.s fr0, fr15, fr15
16887 + fsub.s fr15, fr0, fr15
16888 + fsub.s fr15, fr15, fr0
16889 + fsub.s fr7, fr8, fr8
16890 + fsub.s fr8, fr7, fr8
16891 + fsub.s fr8, fr8, fr7
16892 + .global fmac_s
16893 +fmac_s:
16894 + fmac.s fr15, fr15, fr15
16895 + fmac.s fr0, fr0, fr0
16896 + fmac.s fr0, fr15, fr15
16897 + fmac.s fr15, fr0, fr15
16898 + fmac.s fr15, fr15, fr0
16899 + fmac.s fr7, fr8, fr8
16900 + fmac.s fr8, fr7, fr8
16901 + fmac.s fr8, fr8, fr7
16902 + .global fnmac_s
16903 +fnmac_s:
16904 + fnmac.s fr15, fr15, fr15
16905 + fnmac.s fr0, fr0, fr0
16906 + fnmac.s fr0, fr15, fr15
16907 + fnmac.s fr15, fr0, fr15
16908 + fnmac.s fr15, fr15, fr0
16909 + fnmac.s fr7, fr8, fr8
16910 + fnmac.s fr8, fr7, fr8
16911 + fnmac.s fr8, fr8, fr7
16912 + .global fmsc_s
16913 +fmsc_s:
16914 + fmsc.s fr15, fr15, fr15
16915 + fmsc.s fr0, fr0, fr0
16916 + fmsc.s fr0, fr15, fr15
16917 + fmsc.s fr15, fr0, fr15
16918 + fmsc.s fr15, fr15, fr0
16919 + fmsc.s fr7, fr8, fr8
16920 + fmsc.s fr8, fr7, fr8
16921 + fmsc.s fr8, fr8, fr7
16922 + .global fnmsc_s
16923 +fnmsc_s:
16924 + fnmsc.s fr15, fr15, fr15
16925 + fnmsc.s fr0, fr0, fr0
16926 + fnmsc.s fr0, fr15, fr15
16927 + fnmsc.s fr15, fr0, fr15
16928 + fnmsc.s fr15, fr15, fr0
16929 + fnmsc.s fr7, fr8, fr8
16930 + fnmsc.s fr8, fr7, fr8
16931 + fnmsc.s fr8, fr8, fr7
16932 + .global fmul_s
16933 +fmul_s:
16934 + fmul.s fr15, fr15, fr15
16935 + fmul.s fr0, fr0, fr0
16936 + fmul.s fr0, fr15, fr15
16937 + fmul.s fr15, fr0, fr15
16938 + fmul.s fr15, fr15, fr0
16939 + fmul.s fr7, fr8, fr8
16940 + fmul.s fr8, fr7, fr8
16941 + fmul.s fr8, fr8, fr7
16942 + .global fnmul_s
16943 +fnmul_s:
16944 + fnmul.s fr15, fr15, fr15
16945 + fnmul.s fr0, fr0, fr0
16946 + fnmul.s fr0, fr15, fr15
16947 + fnmul.s fr15, fr0, fr15
16948 + fnmul.s fr15, fr15, fr0
16949 + fnmul.s fr7, fr8, fr8
16950 + fnmul.s fr8, fr7, fr8
16951 + fnmul.s fr8, fr8, fr7
16952 + .global fneg_s
16953 +fneg_s:
16954 + fneg.s fr15, fr15
16955 + fneg.s fr0, fr0
16956 + fneg.s fr0, fr15
16957 + fneg.s fr15, fr0
16958 + fneg.s fr7, fr8
16959 + fneg.s fr8, fr7
16960 + .global fabs_s
16961 +fabs_s:
16962 + fabs.s fr15, fr15
16963 + fabs.s fr0, fr0
16964 + fabs.s fr0, fr15
16965 + fabs.s fr15, fr0
16966 + fabs.s fr7, fr8
16967 + fabs.s fr8, fr7
16968 + .global fcmp_s
16969 +fcmp_s:
16970 + fcmp.s fr15, fr15
16971 + fcmp.s fr0, fr0
16972 + fcmp.s fr0, fr15
16973 + fcmp.s fr15, fr0
16974 + fcmp.s fr7, fr8
16975 + fcmp.s fr8, fr7
16976 + .global fadd_d
16977 +fadd_d:
16978 + fadd.d fr14, fr14, fr14
16979 + fadd.d fr0, fr0, fr0
16980 + fadd.d fr0, fr14, fr14
16981 + fadd.d fr14, fr0, fr14
16982 + fadd.d fr14, fr14, fr0
16983 + fadd.d fr6, fr8, fr8
16984 + fadd.d fr8, fr6, fr8
16985 + fadd.d fr8, fr8, fr6
16986 + .global fsub_d
16987 +fsub_d:
16988 + fsub.d fr14, fr14, fr14
16989 + fsub.d fr0, fr0, fr0
16990 + fsub.d fr0, fr14, fr14
16991 + fsub.d fr14, fr0, fr14
16992 + fsub.d fr14, fr14, fr0
16993 + fsub.d fr6, fr8, fr8
16994 + fsub.d fr8, fr6, fr8
16995 + fsub.d fr8, fr8, fr6
16996 + .global fmac_d
16997 +fmac_d:
16998 + fmac.d fr14, fr14, fr14
16999 + fmac.d fr0, fr0, fr0
17000 + fmac.d fr0, fr14, fr14
17001 + fmac.d fr14, fr0, fr14
17002 + fmac.d fr14, fr14, fr0
17003 + fmac.d fr6, fr8, fr8
17004 + fmac.d fr8, fr6, fr8
17005 + fmac.d fr8, fr8, fr6
17006 + .global fnmac_d
17007 +fnmac_d:
17008 + fnmac.d fr14, fr14, fr14
17009 + fnmac.d fr0, fr0, fr0
17010 + fnmac.d fr0, fr14, fr14
17011 + fnmac.d fr14, fr0, fr14
17012 + fnmac.d fr14, fr14, fr0
17013 + fnmac.d fr6, fr8, fr8
17014 + fnmac.d fr8, fr6, fr8
17015 + fnmac.d fr8, fr8, fr6
17016 + .global fmsc_d
17017 +fmsc_d:
17018 + fmsc.d fr14, fr14, fr14
17019 + fmsc.d fr0, fr0, fr0
17020 + fmsc.d fr0, fr14, fr14
17021 + fmsc.d fr14, fr0, fr14
17022 + fmsc.d fr14, fr14, fr0
17023 + fmsc.d fr6, fr8, fr8
17024 + fmsc.d fr8, fr6, fr8
17025 + fmsc.d fr8, fr8, fr6
17026 + .global fnmsc_d
17027 +fnmsc_d:
17028 + fnmsc.d fr14, fr14, fr14
17029 + fnmsc.d fr0, fr0, fr0
17030 + fnmsc.d fr0, fr14, fr14
17031 + fnmsc.d fr14, fr0, fr14
17032 + fnmsc.d fr14, fr14, fr0
17033 + fnmsc.d fr6, fr8, fr8
17034 + fnmsc.d fr8, fr6, fr8
17035 + fnmsc.d fr8, fr8, fr6
17036 + .global fmul_d
17037 +fmul_d:
17038 + fmul.d fr14, fr14, fr14
17039 + fmul.d fr0, fr0, fr0
17040 + fmul.d fr0, fr14, fr14
17041 + fmul.d fr14, fr0, fr14
17042 + fmul.d fr14, fr14, fr0
17043 + fmul.d fr6, fr8, fr8
17044 + fmul.d fr8, fr6, fr8
17045 + fmul.d fr8, fr8, fr6
17046 + .global fnmul_d
17047 +fnmul_d:
17048 + fnmul.d fr14, fr14, fr14
17049 + fnmul.d fr0, fr0, fr0
17050 + fnmul.d fr0, fr14, fr14
17051 + fnmul.d fr14, fr0, fr14
17052 + fnmul.d fr14, fr14, fr0
17053 + fnmul.d fr6, fr8, fr8
17054 + fnmul.d fr8, fr6, fr8
17055 + fnmul.d fr8, fr8, fr6
17056 + .global fneg_d
17057 +fneg_d:
17058 + fneg.d fr14, fr14
17059 + fneg.d fr0, fr0
17060 + fneg.d fr0, fr14
17061 + fneg.d fr14, fr0
17062 + fneg.d fr6, fr8
17063 + fneg.d fr8, fr6
17064 + .global fabs_d
17065 +fabs_d:
17066 + fabs.d fr14, fr14
17067 + fabs.d fr0, fr0
17068 + fabs.d fr0, fr14
17069 + fabs.d fr14, fr0
17070 + fabs.d fr6, fr8
17071 + fabs.d fr8, fr6
17072 + .global fcmp_d
17073 +fcmp_d:
17074 + fcmp.d fr14, fr14
17075 + fcmp.d fr0, fr0
17076 + fcmp.d fr0, fr14
17077 + fcmp.d fr14, fr0
17078 + fcmp.d fr6, fr8
17079 + fcmp.d fr8, fr6
17080 + .global fmov_s
17081 +fmov_s:
17082 + fmov.s fr15, fr15
17083 + fmov.s fr0, fr0
17084 + fmov.s fr15, fr0
17085 + fmov.s fr0, fr15
17086 + fmov.s fr8, fr7
17087 + fmov.s fr7, fr8
17088 + fmov.s pc, fr15
17089 + fmov.s r0, fr0
17090 + fmov.s pc, fr0
17091 + fmov.s r0, fr15
17092 + fmov.s r8, fr7
17093 + fmov.s r7, fr8
17094 + fmov.s fr15, pc
17095 + fmov.s fr0, r0
17096 + fmov.s fr15, r0
17097 + fmov.s fr0, pc
17098 + fmov.s fr8, r7
17099 + fmov.s fr7, r8
17100 + .global fmov_d
17101 +fmov_d:
17102 + fmov.d fr14, fr14
17103 + fmov.d fr0, fr0
17104 + fmov.d fr14, fr0
17105 + fmov.d fr0, fr14
17106 + fmov.d fr8, fr6
17107 + fmov.d fr6, fr8
17108 + fmov.d lr, fr14
17109 + fmov.d r0, fr0
17110 + fmov.d lr, fr0
17111 + fmov.d r0, fr14
17112 + fmov.d r8, fr6
17113 + fmov.d r6, fr8
17114 + fmov.d fr14, lr
17115 + fmov.d fr0, r0
17116 + fmov.d fr14, r0
17117 + fmov.d fr0, lr
17118 + fmov.d fr8, r6
17119 + fmov.d fr6, r8
17120 + .global fcasts_d
17121 +fcasts_d:
17122 + fcasts.d fr15, fr14
17123 + fcasts.d fr0, fr0
17124 + fcasts.d fr15, fr0
17125 + fcasts.d fr0, fr14
17126 + fcasts.d fr8, fr6
17127 + fcasts.d fr7, fr8
17128 + .global fcastd_s
17129 +fcastd_s:
17130 + fcastd.s fr14, fr15
17131 + fcastd.s fr0, fr0
17132 + fcastd.s fr14, fr0
17133 + fcastd.s fr0, fr15
17134 + fcastd.s fr8, fr7
17135 + fcastd.s fr6, fr8
17136 --- /dev/null
17137 +++ b/gas/testsuite/gas/avr32/hwrd-lwrd.d
17138 @@ -0,0 +1,47 @@
17139 +#as:
17140 +#objdump: -dr
17141 +#name: hwrd-lwrd
17142 +
17143 +.*: +file format .*
17144 +
17145 +Disassembly of section \.text:
17146 +
17147 +00000000 <test_hwrd>:
17148 + 0: e0 60 87 65 mov r0,34661
17149 + 4: e0 60 12 34 mov r0,4660
17150 + 8: e0 60 00 00 mov r0,0
17151 + 8: R_AVR32_HI16 \.text\+0x60
17152 + c: e0 60 00 00 mov r0,0
17153 + c: R_AVR32_HI16 extsym1
17154 + 10: ea 10 87 65 orh r0,0x8765
17155 + 14: ea 10 12 34 orh r0,0x1234
17156 + 18: ea 10 00 00 orh r0,0x0
17157 + 18: R_AVR32_HI16 \.text\+0x60
17158 + 1c: ea 10 00 00 orh r0,0x0
17159 + 1c: R_AVR32_HI16 extsym1
17160 + 20: e4 10 87 65 andh r0,0x8765
17161 + 24: e4 10 12 34 andh r0,0x1234
17162 + 28: e4 10 00 00 andh r0,0x0
17163 + 28: R_AVR32_HI16 \.text\+0x60
17164 + 2c: e4 10 00 00 andh r0,0x0
17165 + 2c: R_AVR32_HI16 extsym1
17166 +
17167 +00000030 <test_lwrd>:
17168 + 30: e0 60 43 21 mov r0,17185
17169 + 34: e0 60 56 78 mov r0,22136
17170 + 38: e0 60 00 00 mov r0,0
17171 + 38: R_AVR32_LO16 \.text\+0x60
17172 + 3c: e0 60 00 00 mov r0,0
17173 + 3c: R_AVR32_LO16 extsym1
17174 + 40: e8 10 43 21 orl r0,0x4321
17175 + 44: e8 10 56 78 orl r0,0x5678
17176 + 48: e8 10 00 00 orl r0,0x0
17177 + 48: R_AVR32_LO16 \.text\+0x60
17178 + 4c: e8 10 00 00 orl r0,0x0
17179 + 4c: R_AVR32_LO16 extsym1
17180 + 50: e0 10 43 21 andl r0,0x4321
17181 + 54: e0 10 56 78 andl r0,0x5678
17182 + 58: e0 10 00 00 andl r0,0x0
17183 + 58: R_AVR32_LO16 \.text\+0x60
17184 + 5c: e0 10 00 00 andl r0,0x0
17185 + 5c: R_AVR32_LO16 extsym1
17186 --- /dev/null
17187 +++ b/gas/testsuite/gas/avr32/hwrd-lwrd.s
17188 @@ -0,0 +1,39 @@
17189 +
17190 + .equ sym1, 0x12345678
17191 +
17192 + .text
17193 + .global test_hwrd
17194 +test_hwrd:
17195 + mov r0, hi(0x87654321)
17196 + mov r0, hi(sym1)
17197 + mov r0, hi(sym2)
17198 + mov r0, hi(extsym1)
17199 +
17200 + orh r0, hi(0x87654321)
17201 + orh r0, hi(sym1)
17202 + orh r0, hi(sym2)
17203 + orh r0, hi(extsym1)
17204 +
17205 + andh r0, hi(0x87654321)
17206 + andh r0, hi(sym1)
17207 + andh r0, hi(sym2)
17208 + andh r0, hi(extsym1)
17209 +
17210 + .global test_lwrd
17211 +test_lwrd:
17212 + mov r0, lo(0x87654321)
17213 + mov r0, lo(sym1)
17214 + mov r0, lo(sym2)
17215 + mov r0, lo(extsym1)
17216 +
17217 + orl r0, lo(0x87654321)
17218 + orl r0, lo(sym1)
17219 + orl r0, lo(sym2)
17220 + orl r0, lo(extsym1)
17221 +
17222 + andl r0, lo(0x87654321)
17223 + andl r0, lo(sym1)
17224 + andl r0, lo(sym2)
17225 + andl r0, lo(extsym1)
17226 +
17227 +sym2:
17228 --- /dev/null
17229 +++ b/gas/testsuite/gas/avr32/jmptable.d
17230 @@ -0,0 +1,20 @@
17231 +#source: jmptable.s
17232 +#as:
17233 +#objdump: -dr
17234 +#name: jmptable
17235 +
17236 +.*: +file format .*
17237 +
17238 +Disassembly of section \.text:
17239 +
17240 +00000000 <jmptable_test>:
17241 + 0: fe c8 ff f4 sub r8,pc,-12
17242 + 4: f0 00 00 2f add pc,r8,r0<<0x2
17243 + 8: d7 03 nop
17244 + a: 00 00 add r0,r0
17245 + c: c0 38 rjmp 12 <jmptable_test\+0x12>
17246 + e: c0 38 rjmp 14 <jmptable_test\+0x14>
17247 + 10: c0 38 rjmp 16 <jmptable_test\+0x16>
17248 + 12: d7 03 nop
17249 + 14: d7 03 nop
17250 + 16: d7 03 nop
17251 --- /dev/null
17252 +++ b/gas/testsuite/gas/avr32/jmptable_linkrelax.d
17253 @@ -0,0 +1,25 @@
17254 +#source: jmptable.s
17255 +#as: --linkrelax
17256 +#objdump: -dr
17257 +#name: jmptable_linkrelax
17258 +
17259 +.*: +file format .*
17260 +
17261 +Disassembly of section \.text:
17262 +
17263 +00000000 <jmptable_test>:
17264 + 0: fe c8 00 00 sub r8,pc,0
17265 + 0: R_AVR32_16N_PCREL \.text\+0xc
17266 + 4: f0 00 00 2f add pc,r8,r0<<0x2
17267 + 8: d7 03 nop
17268 + a: 00 00 add r0,r0
17269 + a: R_AVR32_ALIGN \*ABS\*\+0x2
17270 + c: c0 08 rjmp c <jmptable_test\+0xc>
17271 + c: R_AVR32_11H_PCREL \.text\+0x12
17272 + e: c0 08 rjmp e <jmptable_test\+0xe>
17273 + e: R_AVR32_11H_PCREL \.text\+0x14
17274 + 10: c0 08 rjmp 10 <jmptable_test\+0x10>
17275 + 10: R_AVR32_11H_PCREL \.text\+0x16
17276 + 12: d7 03 nop
17277 + 14: d7 03 nop
17278 + 16: d7 03 nop
17279 --- /dev/null
17280 +++ b/gas/testsuite/gas/avr32/jmptable.s
17281 @@ -0,0 +1,14 @@
17282 +
17283 + .text
17284 + .global jmptable_test
17285 +jmptable_test:
17286 + sub r8, pc, -(.L1 - .)
17287 + add pc, r8, r0 << 2
17288 + nop
17289 + .align 2
17290 +.L1: rjmp 1f
17291 + rjmp 2f
17292 + rjmp 3f
17293 +1: nop
17294 +2: nop
17295 +3: nop
17296 --- /dev/null
17297 +++ b/gas/testsuite/gas/avr32/lda_nopic.d
17298 @@ -0,0 +1,32 @@
17299 +#source: lda.s
17300 +#as:
17301 +#objdump: -dr
17302 +#name: lda_nopic
17303 +
17304 +.*: +file format .*
17305 +
17306 +Disassembly of section \.text:
17307 +
17308 +00000000 <lda_test>:
17309 + 0: f2 c8 00 00 sub r8,r9,0
17310 +
17311 +00000004 <far_negative>:
17312 + 4: f6 ca 00 00 sub r10,r11,0
17313 + ...
17314 + 8000: fe c0 7f fc sub r0,pc,32764
17315 + 8004: 48 31 lddpc r1,8010 <far_negative\+0x800c>
17316 + 8006: 48 42 lddpc r2,8014 <far_negative\+0x8010>
17317 + 8008: 48 43 lddpc r3,8018 <far_negative\+0x8014>
17318 + 800a: 48 54 lddpc r4,801c <far_negative\+0x8018>
17319 + 800c: fe c5 80 04 sub r5,pc,-32764
17320 + ...
17321 + 8010: R_AVR32_32_CPENT \.text
17322 + 8014: R_AVR32_32_CPENT \.data
17323 + 8018: R_AVR32_32_CPENT undefined
17324 + 801c: R_AVR32_32_CPENT \.text\+0x1001c
17325 +
17326 +00010008 <far_positive>:
17327 + 10008: fa cc 00 00 sub r12,sp,0
17328 + ...
17329 +0001001c <toofar_positive>:
17330 + 1001c: fe ce 00 00 sub lr,pc,0
17331 --- /dev/null
17332 +++ b/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d
17333 @@ -0,0 +1,41 @@
17334 +#source: lda.s
17335 +#as: --linkrelax
17336 +#objdump: -dr
17337 +#name: lda_nopic_linkrelax
17338 +
17339 +.*: +file format .*
17340 +
17341 +Disassembly of section \.text:
17342 +
17343 +00000000 <lda_test>:
17344 + 0: f2 c8 00 00 sub r8,r9,0
17345 +
17346 +00000004 <far_negative>:
17347 + 4: f6 ca 00 00 sub r10,r11,0
17348 + \.\.\.
17349 + 8000: 48 00 lddpc r0,8000 <far_negative\+0x7ffc>
17350 + 8000: R_AVR32_9W_CP \.text\+0x800c
17351 + 8002: 48 01 lddpc r1,8000 <far_negative\+0x7ffc>
17352 + 8002: R_AVR32_9W_CP \.text\+0x8010
17353 + 8004: 48 02 lddpc r2,8004 <far_negative\+0x8000>
17354 + 8004: R_AVR32_9W_CP \.text\+0x8014
17355 + 8006: 48 03 lddpc r3,8004 <far_negative\+0x8000>
17356 + 8006: R_AVR32_9W_CP \.text\+0x8018
17357 + 8008: 48 04 lddpc r4,8008 <far_negative\+0x8004>
17358 + 8008: R_AVR32_9W_CP \.text\+0x801c
17359 + 800a: 48 05 lddpc r5,8008 <far_negative\+0x8004>
17360 + 800a: R_AVR32_9W_CP \.text\+0x8020
17361 + \.\.\.
17362 + 800c: R_AVR32_ALIGN \*ABS\*\+0x2
17363 + 800c: R_AVR32_32_CPENT \.text\+0x4
17364 + 8010: R_AVR32_32_CPENT \.text
17365 + 8014: R_AVR32_32_CPENT \.data
17366 + 8018: R_AVR32_32_CPENT undefined
17367 + 801c: R_AVR32_32_CPENT \.text\+0x10020
17368 + 8020: R_AVR32_32_CPENT \.text\+0x1000c
17369 +
17370 +0001000c <far_positive>:
17371 + 1000c: fa cc 00 00 sub r12,sp,0
17372 + \.\.\.
17373 +00010020 <toofar_positive>:
17374 + 10020: fe ce 00 00 sub lr,pc,0
17375 --- /dev/null
17376 +++ b/gas/testsuite/gas/avr32/lda_pic.d
17377 @@ -0,0 +1,32 @@
17378 +#source: lda.s
17379 +#as: --pic
17380 +#objdump: -dr
17381 +#name: lda_pic
17382 +
17383 +.*: +file format .*
17384 +
17385 +Disassembly of section \.text:
17386 +
17387 +00000000 <lda_test>:
17388 + 0: f2 c8 00 00 sub r8,r9,0
17389 +
17390 +00000004 <far_negative>:
17391 + 4: f6 ca 00 00 sub r10,r11,0
17392 + ...
17393 + 8000: fe c0 7f fc sub r0,pc,32764
17394 + 8004: ec f1 00 00 ld.w r1,r6\[0\]
17395 + 8004: R_AVR32_GOT16S toofar_negative
17396 + 8008: ec f2 00 00 ld.w r2,r6\[0\]
17397 + 8008: R_AVR32_GOT16S different_section
17398 + 800c: ec f3 00 00 ld.w r3,r6\[0\]
17399 + 800c: R_AVR32_GOT16S undefined
17400 + 8010: ec f4 00 00 ld.w r4,r6\[0\]
17401 + 8010: R_AVR32_GOT16S toofar_positive
17402 + 8014: fe c5 80 14 sub r5,pc,-32748
17403 + ...
17404 +
17405 +00010000 <far_positive>:
17406 + 10000: fa cc 00 00 sub r12,sp,0
17407 + ...
17408 +00010014 <toofar_positive>:
17409 + 10014: fe ce 00 00 sub lr,pc,0
17410 --- /dev/null
17411 +++ b/gas/testsuite/gas/avr32/lda_pic_linkrelax.d
17412 @@ -0,0 +1,40 @@
17413 +#source: lda.s
17414 +#as: --pic --linkrelax
17415 +#objdump: -dr
17416 +#name: lda_pic_linkrelax
17417 +
17418 +.*: +file format .*
17419 +
17420 +Disassembly of section \.text:
17421 +
17422 +00000000 <lda_test>:
17423 + 0: f2 c8 00 00 sub r8,r9,0
17424 +
17425 +00000004 <far_negative>:
17426 + 4: f6 ca 00 00 sub r10,r11,0
17427 + ...
17428 + 8000: e0 60 00 00 mov r0,0
17429 + 8000: R_AVR32_LDA_GOT far_negative
17430 + 8004: ec 00 03 20 ld\.w r0,r6\[r0<<0x2\]
17431 + 8008: e0 61 00 00 mov r1,0
17432 + 8008: R_AVR32_LDA_GOT toofar_negative
17433 + 800c: ec 01 03 21 ld\.w r1,r6\[r1<<0x2\]
17434 + 8010: e0 62 00 00 mov r2,0
17435 + 8010: R_AVR32_LDA_GOT different_section
17436 + 8014: ec 02 03 22 ld\.w r2,r6\[r2<<0x2\]
17437 + 8018: e0 63 00 00 mov r3,0
17438 + 8018: R_AVR32_LDA_GOT undefined
17439 + 801c: ec 03 03 23 ld\.w r3,r6\[r3<<0x2\]
17440 + 8020: e0 64 00 00 mov r4,0
17441 + 8020: R_AVR32_LDA_GOT toofar_positive
17442 + 8024: ec 04 03 24 ld\.w r4,r6\[r4<<0x2\]
17443 + 8028: e0 65 00 00 mov r5,0
17444 + 8028: R_AVR32_LDA_GOT far_positive
17445 + 802c: ec 05 03 25 ld\.w r5,r6\[r5<<0x2\]
17446 + ...
17447 +
17448 +00010018 <far_positive>:
17449 + 10018: fa cc 00 00 sub r12,sp,0
17450 + ...
17451 +0001002c <toofar_positive>:
17452 + 1002c: fe ce 00 00 sub lr,pc,0
17453 --- /dev/null
17454 +++ b/gas/testsuite/gas/avr32/lda.s
17455 @@ -0,0 +1,30 @@
17456 +
17457 + .text
17458 + .global lda_test
17459 +lda_test:
17460 +toofar_negative:
17461 + sub r8, r9, 0
17462 +far_negative:
17463 + sub r10, r11, 0
17464 +
17465 + .fill 32760, 1, 0x00
17466 +
17467 + lda.w r0, far_negative
17468 + lda.w r1, toofar_negative
17469 + lda.w r2, different_section
17470 + lda.w r3, undefined
17471 + lda.w r4, toofar_positive
17472 + lda.w r5, far_positive
17473 +
17474 + .cpool
17475 +
17476 + .fill 32744, 1, 0x00
17477 +far_positive:
17478 + sub r12, sp, 0
17479 + .fill 16, 1, 0x00
17480 +toofar_positive:
17481 + sub lr, pc, 0
17482 +
17483 + .data
17484 +different_section:
17485 + .long 0x12345678
17486 --- /dev/null
17487 +++ b/gas/testsuite/gas/avr32/pcrel.d
17488 @@ -0,0 +1,64 @@
17489 +#as:
17490 +#objdump: -dr
17491 +#name: pcrel
17492 +
17493 +.*: +file format .*
17494 +
17495 +Disassembly of section \.text:
17496 +
17497 +00000000 <test_rjmp>:
17498 + 0: d7 03 nop
17499 + 2: c0 28 rjmp 6 <test_rjmp\+0x6>
17500 + 4: d7 03 nop
17501 + 6: e0 8f 00 00 bral 6 <test_rjmp\+0x6>
17502 + 6: R_AVR32_22H_PCREL extsym10
17503 +
17504 +0000000a <test_rcall>:
17505 + a: d7 03 nop
17506 +0000000c <test_rcall2>:
17507 + c: c0 2c rcall 10 <test_rcall2\+0x4>
17508 + e: d7 03 nop
17509 + 10: e0 a0 00 00 rcall 10 <test_rcall2\+0x4>
17510 + 10: R_AVR32_22H_PCREL extsym21
17511 +
17512 +00000014 <test_branch>:
17513 + 14: c0 31 brne 1a <test_branch\+0x6>
17514 + 16: e0 8f 00 00 bral 16 <test_branch\+0x2>
17515 + 16: R_AVR32_22H_PCREL test_branch
17516 + 1a: e0 80 00 00 breq 1a <test_branch\+0x6>
17517 + 1a: R_AVR32_22H_PCREL extsym21
17518 +
17519 +0000001e <test_lddpc>:
17520 + 1e: 48 30 lddpc r0,28 <sym1>
17521 + 20: 48 20 lddpc r0,28 <sym1>
17522 + 22: fe f0 00 00 ld.w r0,pc\[0\]
17523 + 22: R_AVR32_16B_PCREL extsym16
17524 + \.\.\.
17525 +
17526 +00000028 <sym1>:
17527 + 28: d7 03 nop
17528 + 2a: d7 03 nop
17529 +
17530 +0000002c <test_local>:
17531 + 2c: 48 20 lddpc r0,34 <test_local\+0x8>
17532 + 2e: 48 30 lddpc r0,38 <test_local\+0xc>
17533 + 30: 48 20 lddpc r0,38 <test_local\+0xc>
17534 + 32: 00 00 add r0,r0
17535 + 34: d7 03 nop
17536 + 36: d7 03 nop
17537 + 38: d7 03 nop
17538 + 3a: d7 03 nop
17539 +
17540 +Disassembly of section \.text\.init:
17541 +
17542 +00000000 <test_inter_section>:
17543 + 0: e0 a0 .. .. rcall [0-9a-f]+ <.*>
17544 + 0: R_AVR32_22H_PCREL test_rcall
17545 + 4: d7 03 nop
17546 + 6: e0 a0 .. .. rcall [0-9a-f]+ <.*>
17547 + 6: R_AVR32_22H_PCREL test_rcall
17548 + a: e0 a0 .. .. rcall [0-9a-z]+ <.*>
17549 + a: R_AVR32_22H_PCREL \.text\+0xc
17550 + e: d7 03 nop
17551 + 10: e0 a0 .. .. rcall [0-9a-f]+ <.*>
17552 + 10: R_AVR32_22H_PCREL \.text\+0xc
17553 --- /dev/null
17554 +++ b/gas/testsuite/gas/avr32/pcrel.s
17555 @@ -0,0 +1,57 @@
17556 +
17557 + .text
17558 + .global test_rjmp
17559 +test_rjmp:
17560 + nop
17561 + rjmp 0f
17562 + nop
17563 +0: rjmp extsym10
17564 +
17565 + .global test_rcall
17566 +test_rcall:
17567 + nop
17568 +test_rcall2:
17569 + rcall 0f
17570 + nop
17571 +0: rcall extsym21
17572 +
17573 + .global test_branch
17574 +test_branch:
17575 + brne 0f
17576 + /* This will generate a reloc since test_branch is global */
17577 + bral test_branch
17578 +0: breq extsym21
17579 +
17580 + .global test_lddpc
17581 +test_lddpc:
17582 + lddpc r0,sym1
17583 + lddpc r0,sym1
17584 + lddpc r0,extsym16
17585 +
17586 + .align 2
17587 +sym1: nop
17588 + nop
17589 +
17590 + .global test_local
17591 +test_local:
17592 + lddpc r0, .LC1
17593 + lddpc r0, .LC2
17594 + lddpc r0, .LC1 + 0x4
17595 +
17596 + .align 2
17597 +.LC1:
17598 + nop
17599 + nop
17600 +.LC2:
17601 + nop
17602 + nop
17603 +
17604 + .section .text.init,"ax"
17605 + .global test_inter_section
17606 +test_inter_section:
17607 + rcall test_rcall
17608 + nop
17609 + rcall test_rcall
17610 + rcall test_rcall2
17611 + nop
17612 + rcall test_rcall2
17613 --- /dev/null
17614 +++ b/gas/testsuite/gas/avr32/pico.d
17615 @@ -0,0 +1,149 @@
17616 +#as:
17617 +#objdump: -dr
17618 +#name: pico
17619 +
17620 +.*: +file format .*
17621 +
17622 +Disassembly of section \.text:
17623 +
17624 +[0-9a-f]* <picosvmac>:
17625 + *[0-9a-f]*: e1 a6 20 00 cop cp1,cr0,cr0,cr0,0xc
17626 + *[0-9a-f]*: e1 a7 2b bb cop cp1,cr11,cr11,cr11,0xe
17627 + *[0-9a-f]*: e1 a6 3a 05 cop cp1,cr10,cr0,cr5,0xd
17628 + *[0-9a-f]*: e1 a7 36 90 cop cp1,cr6,cr9,cr0,0xf
17629 +
17630 +[0-9a-f]* <picosvmul>:
17631 + *[0-9a-f]*: e1 a4 20 00 cop cp1,cr0,cr0,cr0,0x8
17632 + *[0-9a-f]*: e1 a5 2b bb cop cp1,cr11,cr11,cr11,0xa
17633 + *[0-9a-f]*: e1 a4 3a 05 cop cp1,cr10,cr0,cr5,0x9
17634 + *[0-9a-f]*: e1 a5 36 90 cop cp1,cr6,cr9,cr0,0xb
17635 +
17636 +[0-9a-f]* <picovmac>:
17637 + *[0-9a-f]*: e1 a2 20 00 cop cp1,cr0,cr0,cr0,0x4
17638 + *[0-9a-f]*: e1 a3 2b bb cop cp1,cr11,cr11,cr11,0x6
17639 + *[0-9a-f]*: e1 a2 3a 05 cop cp1,cr10,cr0,cr5,0x5
17640 + *[0-9a-f]*: e1 a3 36 90 cop cp1,cr6,cr9,cr0,0x7
17641 +
17642 +[0-9a-f]* <picovmul>:
17643 + *[0-9a-f]*: e1 a0 20 00 cop cp1,cr0,cr0,cr0,0x0
17644 + *[0-9a-f]*: e1 a1 2b bb cop cp1,cr11,cr11,cr11,0x2
17645 + *[0-9a-f]*: e1 a0 3a 05 cop cp1,cr10,cr0,cr5,0x1
17646 + *[0-9a-f]*: e1 a1 36 90 cop cp1,cr6,cr9,cr0,0x3
17647 +
17648 +[0-9a-f]* <picold_d>:
17649 + *[0-9a-f]*: e9 af 3e ff ldc\.d cp1,cr14,pc\[0x3fc\]
17650 + *[0-9a-f]*: e9 a0 30 ff ldc\.d cp1,cr0,r0\[0x3fc\]
17651 + *[0-9a-f]*: e9 a0 30 00 ldc\.d cp1,cr0,r0\[0x0\]
17652 + *[0-9a-f]*: ef a8 26 50 ldc\.d cp1,cr6,--r8
17653 + *[0-9a-f]*: ef a7 28 50 ldc\.d cp1,cr8,--r7
17654 + *[0-9a-f]*: ef aa 32 65 ldc\.d cp1,cr2,r10\[r5<<0x2\]
17655 + *[0-9a-f]*: ef a3 3c 46 ldc\.d cp1,cr12,r3\[r6\]
17656 +
17657 +[0-9a-f]* <picold_w>:
17658 + *[0-9a-f]*: e9 af 2f ff ldc\.w cp1,cr15,pc\[0x3fc\]
17659 + *[0-9a-f]*: e9 a0 20 ff ldc\.w cp1,cr0,r0\[0x3fc\]
17660 + *[0-9a-f]*: e9 a0 20 00 ldc\.w cp1,cr0,r0\[0x0\]
17661 + *[0-9a-f]*: ef a8 27 40 ldc\.w cp1,cr7,--r8
17662 + *[0-9a-f]*: ef a7 28 40 ldc\.w cp1,cr8,--r7
17663 + *[0-9a-f]*: ef aa 31 25 ldc\.w cp1,cr1,r10\[r5<<0x2\]
17664 + *[0-9a-f]*: ef a3 3d 06 ldc\.w cp1,cr13,r3\[r6\]
17665 +
17666 +[0-9a-f]* <picoldm_d>:
17667 + *[0-9a-f]*: ed af 24 ff ldcm\.d cp1,pc,cr0-cr15
17668 + *[0-9a-f]*: ed a0 24 01 ldcm\.d cp1,r0,cr0-cr1
17669 + *[0-9a-f]*: ed a7 24 80 ldcm\.d cp1,r7,cr14-cr15
17670 + *[0-9a-f]*: ed a8 24 7f ldcm\.d cp1,r8,cr0-cr13
17671 +
17672 +[0-9a-f]* <picoldm_d_pu>:
17673 + *[0-9a-f]*: ed af 34 ff ldcm\.d cp1,pc\+\+,cr0-cr15
17674 + *[0-9a-f]*: ed a0 34 01 ldcm\.d cp1,r0\+\+,cr0-cr1
17675 + *[0-9a-f]*: ed a7 34 80 ldcm\.d cp1,r7\+\+,cr14-cr15
17676 + *[0-9a-f]*: ed a8 34 7f ldcm\.d cp1,r8\+\+,cr0-cr13
17677 +
17678 +[0-9a-f]* <picoldm_w>:
17679 + *[0-9a-f]*: ed af 20 ff ldcm\.w cp1,pc,cr0-cr7
17680 + *[0-9a-f]*: ed a0 20 01 ldcm\.w cp1,r0,cr0
17681 + *[0-9a-f]*: ed a7 20 80 ldcm\.w cp1,r7,cr7
17682 + *[0-9a-f]*: ed a8 20 7f ldcm\.w cp1,r8,cr0-cr6
17683 + *[0-9a-f]*: ed af 21 ff ldcm\.w cp1,pc,cr8-cr15
17684 + *[0-9a-f]*: ed a0 21 01 ldcm\.w cp1,r0,cr8
17685 + *[0-9a-f]*: ed a7 21 80 ldcm\.w cp1,r7,cr15
17686 + *[0-9a-f]*: ed a8 21 7f ldcm\.w cp1,r8,cr8-cr14
17687 +
17688 +[0-9a-f]* <picoldm_w_pu>:
17689 + *[0-9a-f]*: ed af 30 ff ldcm\.w cp1,pc\+\+,cr0-cr7
17690 + *[0-9a-f]*: ed a0 30 01 ldcm\.w cp1,r0\+\+,cr0
17691 + *[0-9a-f]*: ed a7 30 80 ldcm\.w cp1,r7\+\+,cr7
17692 + *[0-9a-f]*: ed a8 30 7f ldcm\.w cp1,r8\+\+,cr0-cr6
17693 + *[0-9a-f]*: ed af 31 ff ldcm\.w cp1,pc\+\+,cr8-cr15
17694 + *[0-9a-f]*: ed a0 31 01 ldcm\.w cp1,r0\+\+,cr8
17695 + *[0-9a-f]*: ed a7 31 80 ldcm\.w cp1,r7\+\+,cr15
17696 + *[0-9a-f]*: ed a8 31 7f ldcm\.w cp1,r8\+\+,cr8-cr14
17697 +
17698 +[0-9a-f]* <picomv_d>:
17699 + *[0-9a-f]*: ef ae 2e 30 mvrc\.d cp1,cr14,lr
17700 + *[0-9a-f]*: ef a0 20 30 mvrc\.d cp1,cr0,r0
17701 + *[0-9a-f]*: ef a8 26 30 mvrc\.d cp1,cr6,r8
17702 + *[0-9a-f]*: ef a6 28 30 mvrc\.d cp1,cr8,r6
17703 + *[0-9a-f]*: ef ae 2e 10 mvcr\.d cp1,lr,cr14
17704 + *[0-9a-f]*: ef a0 20 10 mvcr\.d cp1,r0,cr0
17705 + *[0-9a-f]*: ef a8 26 10 mvcr\.d cp1,r8,cr6
17706 + *[0-9a-f]*: ef a6 28 10 mvcr\.d cp1,r6,cr8
17707 +
17708 +[0-9a-f]* <picomv_w>:
17709 + *[0-9a-f]*: ef af 2f 20 mvrc\.w cp1,cr15,pc
17710 + *[0-9a-f]*: ef a0 20 20 mvrc\.w cp1,cr0,r0
17711 + *[0-9a-f]*: ef a8 27 20 mvrc\.w cp1,cr7,r8
17712 + *[0-9a-f]*: ef a7 28 20 mvrc\.w cp1,cr8,r7
17713 + *[0-9a-f]*: ef af 2f 00 mvcr\.w cp1,pc,cr15
17714 + *[0-9a-f]*: ef a0 20 00 mvcr\.w cp1,r0,cr0
17715 + *[0-9a-f]*: ef a8 27 00 mvcr\.w cp1,r8,cr7
17716 + *[0-9a-f]*: ef a7 28 00 mvcr\.w cp1,r7,cr8
17717 +
17718 +[0-9a-f]* <picost_d>:
17719 + *[0-9a-f]*: eb af 3e ff stc\.d cp1,pc\[0x3fc\],cr14
17720 + *[0-9a-f]*: eb a0 30 00 stc\.d cp1,r0\[0x0\],cr0
17721 + *[0-9a-f]*: ef a8 26 70 stc\.d cp1,r8\+\+,cr6
17722 + *[0-9a-f]*: ef a7 28 70 stc\.d cp1,r7\+\+,cr8
17723 + *[0-9a-f]*: ef aa 32 e5 stc\.d cp1,r10\[r5<<0x2\],cr2
17724 + *[0-9a-f]*: ef a3 3c c6 stc\.d cp1,r3\[r6\],cr12
17725 +
17726 +[0-9a-f]* <picost_w>:
17727 + *[0-9a-f]*: eb af 2f ff stc\.w cp1,pc\[0x3fc\],cr15
17728 + *[0-9a-f]*: eb a0 20 00 stc\.w cp1,r0\[0x0\],cr0
17729 + *[0-9a-f]*: ef a8 27 60 stc\.w cp1,r8\+\+,cr7
17730 + *[0-9a-f]*: ef a7 28 60 stc\.w cp1,r7\+\+,cr8
17731 + *[0-9a-f]*: ef aa 31 a5 stc\.w cp1,r10\[r5<<0x2\],cr1
17732 + *[0-9a-f]*: ef a3 3d 86 stc\.w cp1,r3\[r6\],cr13
17733 +
17734 +[0-9a-f]* <picostm_d>:
17735 + *[0-9a-f]*: ed af 25 ff stcm\.d cp1,pc,cr0-cr15
17736 + *[0-9a-f]*: ed a0 25 01 stcm\.d cp1,r0,cr0-cr1
17737 + *[0-9a-f]*: ed a7 25 80 stcm\.d cp1,r7,cr14-cr15
17738 + *[0-9a-f]*: ed a8 25 7f stcm\.d cp1,r8,cr0-cr13
17739 +
17740 +[0-9a-f]* <picostm_d_pu>:
17741 + *[0-9a-f]*: ed af 35 ff stcm\.d cp1,--pc,cr0-cr15
17742 + *[0-9a-f]*: ed a0 35 01 stcm\.d cp1,--r0,cr0-cr1
17743 + *[0-9a-f]*: ed a7 35 80 stcm\.d cp1,--r7,cr14-cr15
17744 + *[0-9a-f]*: ed a8 35 7f stcm\.d cp1,--r8,cr0-cr13
17745 +
17746 +[0-9a-f]* <picostm_w>:
17747 + *[0-9a-f]*: ed af 22 ff stcm\.w cp1,pc,cr0-cr7
17748 + *[0-9a-f]*: ed a0 22 01 stcm\.w cp1,r0,cr0
17749 + *[0-9a-f]*: ed a7 22 80 stcm\.w cp1,r7,cr7
17750 + *[0-9a-f]*: ed a8 22 7f stcm\.w cp1,r8,cr0-cr6
17751 + *[0-9a-f]*: ed af 23 ff stcm\.w cp1,pc,cr8-cr15
17752 + *[0-9a-f]*: ed a0 23 01 stcm\.w cp1,r0,cr8
17753 + *[0-9a-f]*: ed a7 23 80 stcm\.w cp1,r7,cr15
17754 + *[0-9a-f]*: ed a8 23 7f stcm\.w cp1,r8,cr8-cr14
17755 +
17756 +[0-9a-f]* <picostm_w_pu>:
17757 + *[0-9a-f]*: ed af 32 ff stcm\.w cp1,--pc,cr0-cr7
17758 + *[0-9a-f]*: ed a0 32 01 stcm\.w cp1,--r0,cr0
17759 + *[0-9a-f]*: ed a7 32 80 stcm\.w cp1,--r7,cr7
17760 + *[0-9a-f]*: ed a8 32 7f stcm\.w cp1,--r8,cr0-cr6
17761 + *[0-9a-f]*: ed af 33 ff stcm\.w cp1,--pc,cr8-cr15
17762 + *[0-9a-f]*: ed a0 33 01 stcm\.w cp1,--r0,cr8
17763 + *[0-9a-f]*: ed a7 33 80 stcm\.w cp1,--r7,cr15
17764 + *[0-9a-f]*: ed a8 33 7f stcm\.w cp1,--r8,cr8-cr14
17765 --- /dev/null
17766 +++ b/gas/testsuite/gas/avr32/pico.s
17767 @@ -0,0 +1,144 @@
17768 +
17769 + .text
17770 + .global picosvmac
17771 +picosvmac:
17772 + picosvmac out0, in0, in0, in0
17773 + picosvmac out2, in11, in11, in11
17774 + picosvmac out1, in10, in0, in5
17775 + picosvmac out3, in6, in9, in0
17776 + .global picosvmul
17777 +picosvmul:
17778 + picosvmul out0, in0, in0, in0
17779 + picosvmul out2, in11, in11, in11
17780 + picosvmul out1, in10, in0, in5
17781 + picosvmul out3, in6, in9, in0
17782 + .global picovmac
17783 +picovmac:
17784 + picovmac out0, in0, in0, in0
17785 + picovmac out2, in11, in11, in11
17786 + picovmac out1, in10, in0, in5
17787 + picovmac out3, in6, in9, in0
17788 + .global picovmul
17789 +picovmul:
17790 + picovmul out0, in0, in0, in0
17791 + picovmul out2, in11, in11, in11
17792 + picovmul out1, in10, in0, in5
17793 + picovmul out3, in6, in9, in0
17794 + .global picold_d
17795 +picold_d:
17796 + picold.d vmu2_out, pc[1020]
17797 + picold.d inpix2, r0[1020]
17798 + picold.d inpix2, r0[0]
17799 + picold.d coeff0_a, --r8
17800 + picold.d coeff1_a, --r7
17801 + picold.d inpix0, r10[r5 << 2]
17802 + picold.d vmu0_out, r3[r6 << 0]
17803 + .global picold_w
17804 +picold_w:
17805 + picold.w config, pc[1020]
17806 + picold.w inpix2, r0[1020]
17807 + picold.w inpix2, r0[0]
17808 + picold.w coeff0_b, --r8
17809 + picold.w coeff1_a, --r7
17810 + picold.w inpix1, r10[r5 << 2]
17811 + picold.w vmu1_out, r3[r6 << 0]
17812 + .global picoldm_d
17813 +picoldm_d:
17814 + picoldm.d pc, inpix2-config
17815 + picoldm.d r0, inpix2, inpix1
17816 + picoldm.d r7, vmu2_out, config
17817 + picoldm.d r8, inpix2-vmu1_out
17818 + .global picoldm_d_pu
17819 +picoldm_d_pu:
17820 + 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
17821 + picoldm.d r0++, inpix2, inpix1
17822 + picoldm.d r7++, vmu2_out, config
17823 + 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
17824 + .global picoldm_w
17825 +picoldm_w:
17826 + picoldm.w pc, inpix2-coeff0_b
17827 + picoldm.w r0, inpix2
17828 + picoldm.w r7, coeff0_b
17829 + picoldm.w r8, inpix2-coeff0_a
17830 + picoldm.w pc, coeff1_a-config
17831 + picoldm.w r0, coeff1_a
17832 + picoldm.w r7, config
17833 + picoldm.w r8, coeff1_a-vmu2_out
17834 + .global picoldm_w_pu
17835 +picoldm_w_pu:
17836 + picoldm.w pc++, inpix2-coeff0_b
17837 + picoldm.w r0++, inpix2
17838 + picoldm.w r7++, coeff0_b
17839 + picoldm.w r8++, inpix2-coeff0_a
17840 + picoldm.w pc++, coeff1_a-config
17841 + picoldm.w r0++, coeff1_a
17842 + picoldm.w r7++, config
17843 + picoldm.w r8++, coeff1_a-vmu2_out
17844 + .global picomv_d
17845 +picomv_d:
17846 + picomv.d vmu2_out, lr
17847 + picomv.d inpix2, r0
17848 + picomv.d coeff0_a, r8
17849 + picomv.d coeff1_a, r6
17850 + picomv.d pc, vmu2_out
17851 + picomv.d r0, inpix2
17852 + picomv.d r8, coeff0_a
17853 + picomv.d r6, coeff1_a
17854 + .global picomv_w
17855 +picomv_w:
17856 + picomv.w config, pc
17857 + picomv.w inpix2, r0
17858 + picomv.w coeff0_b, r8
17859 + picomv.w coeff1_a, r7
17860 + picomv.w pc, config
17861 + picomv.w r0, inpix2
17862 + picomv.w r8, coeff0_b
17863 + picomv.w r7, coeff1_a
17864 + .global picost_d
17865 +picost_d:
17866 + picost.d pc[1020], vmu2_out
17867 + picost.d r0[0], inpix2
17868 + picost.d r8++, coeff0_a
17869 + picost.d r7++, coeff1_a
17870 + picost.d r10[r5 << 2], inpix0
17871 + picost.d r3[r6 << 0], vmu0_out
17872 + .global picost_w
17873 +picost_w:
17874 + picost.w pc[1020], config
17875 + picost.w r0[0], inpix2
17876 + picost.w r8++, coeff0_b
17877 + picost.w r7++, coeff1_a
17878 + picost.w r10[r5 << 2], inpix1
17879 + picost.w r3[r6 << 0], vmu1_out
17880 + .global picostm_d
17881 +picostm_d:
17882 + picostm.d pc, inpix2-config
17883 + picostm.d r0, inpix2, inpix1
17884 + picostm.d r7, vmu2_out, config
17885 + picostm.d r8, inpix2-vmu1_out
17886 + .global picostm_d_pu
17887 +picostm_d_pu:
17888 + 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
17889 + picostm.d --r0, inpix2, inpix1
17890 + picostm.d --r7, vmu2_out, config
17891 + 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
17892 + .global picostm_w
17893 +picostm_w:
17894 + picostm.w pc, inpix2-coeff0_b
17895 + picostm.w r0, inpix2
17896 + picostm.w r7, coeff0_b
17897 + picostm.w r8, inpix2-coeff0_a
17898 + picostm.w pc, coeff1_a-config
17899 + picostm.w r0, coeff1_a
17900 + picostm.w r7, config
17901 + picostm.w r8, coeff1_a-vmu2_out
17902 + .global picostm_w_pu
17903 +picostm_w_pu:
17904 + picostm.w --pc, inpix2-coeff0_b
17905 + picostm.w --r0, inpix2
17906 + picostm.w --r7, coeff0_b
17907 + picostm.w --r8, inpix2-coeff0_a
17908 + picostm.w --pc, coeff1_a-config
17909 + picostm.w --r0, coeff1_a
17910 + picostm.w --r7, config
17911 + picostm.w --r8, coeff1_a-vmu2_out
17912 --- /dev/null
17913 +++ b/gas/testsuite/gas/avr32/pic_reloc.d
17914 @@ -0,0 +1,27 @@
17915 +#as:
17916 +#objdump: -dr
17917 +#name: pic_reloc
17918 +
17919 +.*: +file format .*
17920 +
17921 +Disassembly of section \.text:
17922 +
17923 +00000000 <mcall_got>:
17924 + 0: f0 16 00 00 mcall r6\[0\]
17925 + 0: R_AVR32_GOT18SW extfunc
17926 + 4: f0 16 00 00 mcall r6\[0\]
17927 + 4: R_AVR32_GOT18SW \.L1
17928 + 8: f0 16 00 00 mcall r6\[0\]
17929 + 8: R_AVR32_GOT18SW \.L2
17930 + c: f0 16 00 00 mcall r6\[0\]
17931 + c: R_AVR32_GOT18SW mcall_got
17932 +
17933 +00000010 <ldw_got>:
17934 + 10: ec f0 00 00 ld.w r0,r6\[0\]
17935 + 10: R_AVR32_GOT16S extvar
17936 + 14: ec f0 00 00 ld.w r0,r6\[0\]
17937 + 14: R_AVR32_GOT16S \.L3
17938 + 18: ec f0 00 00 ld.w r0,r6\[0\]
17939 + 18: R_AVR32_GOT16S \.L4
17940 + 1c: ec f0 00 00 ld.w r0,r6\[0\]
17941 + 1c: R_AVR32_GOT16S ldw_got
17942 --- /dev/null
17943 +++ b/gas/testsuite/gas/avr32/pic_reloc.s
17944 @@ -0,0 +1,18 @@
17945 +
17946 + .text
17947 + .global mcall_got
17948 +mcall_got:
17949 +.L1:
17950 + mcall r6[extfunc@got]
17951 + mcall r6[.L1@got]
17952 + mcall r6[.L2@got]
17953 + mcall r6[mcall_got@got]
17954 +.L2:
17955 +
17956 + .global ldw_got
17957 +ldw_got:
17958 +.L3: ld.w r0,r6[extvar@got]
17959 + ld.w r0,r6[.L3@got]
17960 + ld.w r0,r6[.L4@got]
17961 + ld.w r0,r6[ldw_got@got]
17962 +.L4:
17963 --- /dev/null
17964 +++ b/gas/testsuite/gas/avr32/symdiff.d
17965 @@ -0,0 +1,24 @@
17966 +#source: symdiff.s
17967 +#as:
17968 +#objdump: -dr
17969 +#name: symdiff
17970 +
17971 +.*: +file format .*
17972 +
17973 +Disassembly of section \.text:
17974 +
17975 +00000000 <diff32>:
17976 + 0: 00 00 add r0,r0
17977 + 2: 00 04 add r4,r0
17978 +
17979 +00000004 <diff16>:
17980 + 4: 00 04 add r4,r0
17981 +
17982 +00000006 <diff8>:
17983 + 6: 04 00 add r0,r2
17984 +
17985 +00000008 <symdiff_test>:
17986 + 8: d7 03 nop
17987 + a: d7 03 nop
17988 + c: d7 03 nop
17989 + e: d7 03 nop
17990 --- /dev/null
17991 +++ b/gas/testsuite/gas/avr32/symdiff_linkrelax.d
17992 @@ -0,0 +1,28 @@
17993 +#source: symdiff.s
17994 +#as: --linkrelax
17995 +#objdump: -dr
17996 +#name: symdiff_linkrelax
17997 +
17998 +.*: +file format .*
17999 +
18000 +Disassembly of section \.text:
18001 +
18002 +00000000 <diff32>:
18003 + 0: 00 00 add r0,r0
18004 + 0: R_AVR32_DIFF32 \.text\+0xa
18005 + 2: 00 04 add r4,r0
18006 +
18007 +00000004 <diff16>:
18008 + 4: 00 04 add r4,r0
18009 + 4: R_AVR32_DIFF16 \.text\+0xa
18010 +
18011 +00000006 <diff8>:
18012 + 6: 04 00 add r0,r2
18013 + 6: R_AVR32_DIFF8 \.text\+0xa
18014 + 7: R_AVR32_ALIGN \*ABS\*\+0x1
18015 +
18016 +00000008 <symdiff_test>:
18017 + 8: d7 03 nop
18018 + a: d7 03 nop
18019 + c: d7 03 nop
18020 + e: d7 03 nop
18021 --- /dev/null
18022 +++ b/gas/testsuite/gas/avr32/symdiff.s
18023 @@ -0,0 +1,19 @@
18024 +
18025 + .text
18026 + .global diff32
18027 +diff32:
18028 + .long .L2 - .L1
18029 + .global diff16
18030 +diff16:
18031 + .short .L2 - .L1
18032 + .global diff8
18033 +diff8:
18034 + .byte .L2 - .L1
18035 +
18036 + .global symdiff_test
18037 + .align 1
18038 +symdiff_test:
18039 + nop
18040 +.L1: nop
18041 + nop
18042 +.L2: nop
18043 --- a/gas/write.c
18044 +++ b/gas/write.c
18045 @@ -1955,6 +1955,10 @@ relax_frag (segT segment, fragS *fragP,
18046
18047 #endif /* defined (TC_GENERIC_RELAX_TABLE) */
18048
18049 +#ifdef TC_RELAX_ALIGN
18050 +#define RELAX_ALIGN(SEG, FRAG, ADDR) TC_RELAX_ALIGN(SEG, FRAG, ADDR)
18051 +#else
18052 +#define RELAX_ALIGN(SEG, FRAG, ADDR) relax_align(ADDR, (FRAG)->fr_offset)
18053 /* Relax_align. Advance location counter to next address that has 'alignment'
18054 lowest order bits all 0s, return size of adjustment made. */
18055 static relax_addressT
18056 @@ -1974,6 +1978,7 @@ relax_align (register relax_addressT add
18057 #endif
18058 return (new_address - address);
18059 }
18060 +#endif
18061
18062 /* Now we have a segment, not a crowd of sub-segments, we can make
18063 fr_address values.
18064 @@ -2017,7 +2022,7 @@ relax_segment (struct frag *segment_frag
18065 case rs_align_code:
18066 case rs_align_test:
18067 {
18068 - addressT offset = relax_align (address, (int) fragP->fr_offset);
18069 + addressT offset = RELAX_ALIGN(segment, fragP, address);
18070
18071 if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype)
18072 offset = 0;
18073 @@ -2218,10 +2223,10 @@ relax_segment (struct frag *segment_frag
18074 {
18075 addressT oldoff, newoff;
18076
18077 - oldoff = relax_align (was_address + fragP->fr_fix,
18078 - (int) offset);
18079 - newoff = relax_align (address + fragP->fr_fix,
18080 - (int) offset);
18081 + oldoff = RELAX_ALIGN (segment, fragP,
18082 + was_address + fragP->fr_fix);
18083 + newoff = RELAX_ALIGN (segment, fragP,
18084 + address + fragP->fr_fix);
18085
18086 if (fragP->fr_subtype != 0)
18087 {
18088 --- a/include/dis-asm.h
18089 +++ b/include/dis-asm.h
18090 @@ -204,13 +204,14 @@ typedef struct disassemble_info
18091
18092 } disassemble_info;
18093
18094 -\f
18095 +
18096 /* Standard disassemblers. Disassemble one instruction at the given
18097 target address. Return number of octets processed. */
18098 typedef int (*disassembler_ftype) (bfd_vma, disassemble_info *);
18099
18100 extern int print_insn_alpha (bfd_vma, disassemble_info *);
18101 extern int print_insn_avr (bfd_vma, disassemble_info *);
18102 +extern int print_insn_avr32 (bfd_vma, disassemble_info *);
18103 extern int print_insn_bfin (bfd_vma, disassemble_info *);
18104 extern int print_insn_big_arm (bfd_vma, disassemble_info *);
18105 extern int print_insn_big_mips (bfd_vma, disassemble_info *);
18106 @@ -242,7 +243,7 @@ extern int print_insn_little_arm (bfd_vm
18107 extern int print_insn_little_mips (bfd_vma, disassemble_info *);
18108 extern int print_insn_little_or32 (bfd_vma, disassemble_info *);
18109 extern int print_insn_little_powerpc (bfd_vma, disassemble_info *);
18110 -extern int print_insn_little_score (bfd_vma, disassemble_info *);
18111 +extern int print_insn_little_score (bfd_vma, disassemble_info *);
18112 extern int print_insn_m32c (bfd_vma, disassemble_info *);
18113 extern int print_insn_m32r (bfd_vma, disassemble_info *);
18114 extern int print_insn_m68hc11 (bfd_vma, disassemble_info *);
18115 @@ -290,7 +291,9 @@ extern void print_i386_disassembler_opti
18116 extern void print_mips_disassembler_options (FILE *);
18117 extern void print_ppc_disassembler_options (FILE *);
18118 extern void print_arm_disassembler_options (FILE *);
18119 +extern void print_avr32_disassembler_options (FILE *);
18120 extern void parse_arm_disassembler_option (char *);
18121 +extern void parse_avr32_disassembler_option (char *);
18122 extern int get_arm_regname_num_options (void);
18123 extern int set_arm_regname_option (int);
18124 extern int get_arm_regnames (int, const char **, const char **, const char *const **);
18125 @@ -306,7 +309,7 @@ extern void disassemble_init_for_target
18126 /* Document any target specific options available from the disassembler. */
18127 extern void disassembler_usage (FILE *);
18128
18129 -\f
18130 +
18131 /* This block of definitions is for particular callers who read instructions
18132 into a buffer before calling the instruction decoder. */
18133
18134 --- /dev/null
18135 +++ b/include/elf/avr32.h
18136 @@ -0,0 +1,98 @@
18137 +/* AVR32 ELF support for BFD.
18138 + Copyright 2003-2006 Atmel Corporation.
18139 +
18140 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
18141 +
18142 + This file is part of BFD, the Binary File Descriptor library.
18143 +
18144 + This program is free software; you can redistribute it and/or
18145 + modify it under the terms of the GNU General Public License as
18146 + published by the Free Software Foundation; either version 2 of the
18147 + License, or (at your option) any later version.
18148 +
18149 + This program is distributed in the hope that it will be useful, but
18150 + WITHOUT ANY WARRANTY; without even the implied warranty of
18151 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18152 + General Public License for more details.
18153 +
18154 + You should have received a copy of the GNU General Public License
18155 + along with this program; if not, write to the Free Software
18156 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18157 + 02111-1307, USA. */
18158 +
18159 +#include "elf/reloc-macros.h"
18160 +
18161 +/* CPU-specific flags for the ELF header e_flags field */
18162 +#define EF_AVR32_LINKRELAX 0x01
18163 +#define EF_AVR32_PIC 0x02
18164 +
18165 +START_RELOC_NUMBERS (elf_avr32_reloc_type)
18166 + RELOC_NUMBER (R_AVR32_NONE, 0)
18167 +
18168 + /* Data Relocations */
18169 + RELOC_NUMBER (R_AVR32_32, 1)
18170 + RELOC_NUMBER (R_AVR32_16, 2)
18171 + RELOC_NUMBER (R_AVR32_8, 3)
18172 + RELOC_NUMBER (R_AVR32_32_PCREL, 4)
18173 + RELOC_NUMBER (R_AVR32_16_PCREL, 5)
18174 + RELOC_NUMBER (R_AVR32_8_PCREL, 6)
18175 + RELOC_NUMBER (R_AVR32_DIFF32, 7)
18176 + RELOC_NUMBER (R_AVR32_DIFF16, 8)
18177 + RELOC_NUMBER (R_AVR32_DIFF8, 9)
18178 + RELOC_NUMBER (R_AVR32_GOT32, 10)
18179 + RELOC_NUMBER (R_AVR32_GOT16, 11)
18180 + RELOC_NUMBER (R_AVR32_GOT8, 12)
18181 +
18182 + /* Normal Code Relocations */
18183 + RELOC_NUMBER (R_AVR32_21S, 13)
18184 + RELOC_NUMBER (R_AVR32_16U, 14)
18185 + RELOC_NUMBER (R_AVR32_16S, 15)
18186 + RELOC_NUMBER (R_AVR32_8S, 16)
18187 + RELOC_NUMBER (R_AVR32_8S_EXT, 17)
18188 +
18189 + /* PC-Relative Code Relocations */
18190 + RELOC_NUMBER (R_AVR32_22H_PCREL, 18)
18191 + RELOC_NUMBER (R_AVR32_18W_PCREL, 19)
18192 + RELOC_NUMBER (R_AVR32_16B_PCREL, 20)
18193 + RELOC_NUMBER (R_AVR32_16N_PCREL, 21)
18194 + RELOC_NUMBER (R_AVR32_14UW_PCREL, 22)
18195 + RELOC_NUMBER (R_AVR32_11H_PCREL, 23)
18196 + RELOC_NUMBER (R_AVR32_10UW_PCREL, 24)
18197 + RELOC_NUMBER (R_AVR32_9H_PCREL, 25)
18198 + RELOC_NUMBER (R_AVR32_9UW_PCREL, 26)
18199 +
18200 + /* Special Code Relocations */
18201 + RELOC_NUMBER (R_AVR32_HI16, 27)
18202 + RELOC_NUMBER (R_AVR32_LO16, 28)
18203 +
18204 + /* PIC Relocations */
18205 + RELOC_NUMBER (R_AVR32_GOTPC, 29)
18206 + RELOC_NUMBER (R_AVR32_GOTCALL, 30)
18207 + RELOC_NUMBER (R_AVR32_LDA_GOT, 31)
18208 + RELOC_NUMBER (R_AVR32_GOT21S, 32)
18209 + RELOC_NUMBER (R_AVR32_GOT18SW, 33)
18210 + RELOC_NUMBER (R_AVR32_GOT16S, 34)
18211 + RELOC_NUMBER (R_AVR32_GOT7UW, 35)
18212 +
18213 + /* Constant Pool Relocations */
18214 + RELOC_NUMBER (R_AVR32_32_CPENT, 36)
18215 + RELOC_NUMBER (R_AVR32_CPCALL, 37)
18216 + RELOC_NUMBER (R_AVR32_16_CP, 38)
18217 + RELOC_NUMBER (R_AVR32_9W_CP, 39)
18218 +
18219 + /* Dynamic Relocations */
18220 + RELOC_NUMBER (R_AVR32_RELATIVE, 40)
18221 + RELOC_NUMBER (R_AVR32_GLOB_DAT, 41)
18222 + RELOC_NUMBER (R_AVR32_JMP_SLOT, 42)
18223 +
18224 + /* Linkrelax Information */
18225 + RELOC_NUMBER (R_AVR32_ALIGN, 43)
18226 +
18227 + RELOC_NUMBER (R_AVR32_15S, 44)
18228 +
18229 +END_RELOC_NUMBERS (R_AVR32_max)
18230 +
18231 +/* Processor specific dynamic array tags. */
18232 +
18233 +/* The total size in bytes of the Global Offset Table */
18234 +#define DT_AVR32_GOTSZ 0x70000001
18235 --- a/include/elf/common.h
18236 +++ b/include/elf/common.h
18237 @@ -259,6 +259,9 @@
18238 /* V850 backend magic number. Written in the absense of an ABI. */
18239 #define EM_CYGNUS_V850 0x9080
18240
18241 +/* AVR32 magic number, picked by IAR Systems. */
18242 +#define EM_AVR32 0x18ad
18243 +
18244 /* old S/390 backend magic number. Written in the absence of an ABI. */
18245 #define EM_S390_OLD 0xa390
18246
18247 --- a/ld/configdoc.texi
18248 +++ b/ld/configdoc.texi
18249 @@ -7,6 +7,7 @@
18250 @set H8300
18251 @set HPPA
18252 @set I960
18253 +@set AVR32
18254 @set M68HC11
18255 @set MMIX
18256 @set MSP430
18257 --- a/ld/configure.tgt
18258 +++ b/ld/configure.tgt
18259 @@ -109,6 +109,9 @@ xscale-*-elf) targ_emul=armelf
18260 avr-*-*) targ_emul=avr2
18261 targ_extra_emuls="avr1 avr3 avr4 avr5 avr6"
18262 ;;
18263 +avr32-*-none) targ_emul=avr32elf_ap7000
18264 + 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" ;;
18265 +avr32-*-linux*) targ_emul=avr32linux ;;
18266 bfin-*-elf) targ_emul=elf32bfin;
18267 targ_extra_emuls="elf32bfinfd"
18268 targ_extra_libpath=$targ_extra_emuls
18269 --- /dev/null
18270 +++ b/ld/emulparams/avr32elf.sh
18271 @@ -0,0 +1,163 @@
18272 +# This script is called from ld/genscript.sh
18273 +# There is a difference on how 'bash' and POSIX handles
18274 +# the '.' (source) command in a script.
18275 +# genscript.sh calls this script with argument ${EMULATION_NAME}
18276 +# but that will fail on POSIX compilant shells like 'sh' or 'dash'
18277 +# therefor I use the variable directly instead of $1
18278 +EMULATION=${EMULATION_NAME}
18279 +SCRIPT_NAME=elf_xip
18280 +TEMPLATE_NAME=elf32
18281 +EXTRA_EM_FILE=avr32elf
18282 +OUTPUT_FORMAT="elf32-avr32"
18283 +ARCH=avr32
18284 +MAXPAGESIZE=4096
18285 +ENTRY=_start
18286 +EMBEDDED=yes
18287 +NO_SMALL_DATA=yes
18288 +NOP=0xd703d703
18289 +
18290 +DATA_SEGMENT_ALIGN=8
18291 +BSS_ALIGNMENT=8
18292 +
18293 +RO_LMA_REGION="FLASH"
18294 +RO_VMA_REGION="FLASH"
18295 +RW_LMA_REGION="FLASH"
18296 +RW_VMA_REGION="CPUSRAM"
18297 +
18298 +STACK_SIZE=0x1000
18299 +STACK_ADDR="ORIGIN(CPUSRAM) + LENGTH(CPUSRAM) - ${STACK_SIZE}"
18300 +
18301 +DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
18302 + . = ${STACK_ADDR};
18303 + __heap_end__ = .;"
18304 +
18305 +case "$EMULATION" in
18306 +avr32elf_ap*)
18307 + MACHINE=ap
18308 + INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH
18309 + . = . & 0x9fffffff;"
18310 + TEXT_START_ADDR=0xa0000000
18311 + case "$EMULATION" in
18312 + avr32elf_ap700[0-2])
18313 + MEMORY="MEMORY
18314 + {
18315 + FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
18316 + CPUSRAM (rwxa) : ORIGIN = 0x24000000, LENGTH = 32K
18317 + }"
18318 + ;;
18319 + avr32elf_ap7200)
18320 + MEMORY="MEMORY
18321 + {
18322 + FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
18323 + CPUSRAM (rwxa) : ORIGIN = 0x08000000, LENGTH = 64K
18324 + }"
18325 + ;;
18326 + esac
18327 + ;;
18328 +
18329 +avr32elf_uc3*)
18330 + MACHINE=uc
18331 + INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
18332 + TEXT_START_ADDR=0x80000000
18333 + OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
18334 + .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
18335 +
18336 + case "$EMULATION" in
18337 + avr32elf_uc3a[01]512*)
18338 + MEMORY="MEMORY
18339 + {
18340 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 512K
18341 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18342 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18343 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18344 + }"
18345 + ;;
18346 +
18347 + avr32elf_uc3a[01]256)
18348 + MEMORY="MEMORY
18349 + {
18350 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
18351 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18352 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18353 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18354 + }"
18355 + ;;
18356 +
18357 + avr32elf_uc3b[01]256*)
18358 + MEMORY="MEMORY
18359 + {
18360 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
18361 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
18362 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18363 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18364 + }"
18365 + ;;
18366 +
18367 + avr32elf_uc3[ab][01]128)
18368 + MEMORY="MEMORY
18369 + {
18370 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
18371 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
18372 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18373 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18374 + }"
18375 + ;;
18376 +
18377 + avr32elf_uc3b[01]64)
18378 + MEMORY="MEMORY
18379 + {
18380 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
18381 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 16K
18382 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18383 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18384 + }"
18385 + ;;
18386 +
18387 + avr32elf_uc3a3256*)
18388 + MEMORY="MEMORY
18389 + {
18390 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
18391 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18392 + HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
18393 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18394 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18395 + }"
18396 + OTHER_SECTIONS ="${OTHER_SECTIONS}
18397 + .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
18398 +"
18399 +
18400 + ;;
18401 +
18402 + avr32elf_uc3a3128*)
18403 + MEMORY="MEMORY
18404 + {
18405 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
18406 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18407 + HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
18408 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18409 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18410 + }"
18411 + OTHER_SECTIONS ="${OTHER_SECTIONS}
18412 + .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
18413 +"
18414 + ;;
18415 +
18416 + avr32elf_uc3a364*)
18417 + MEMORY="MEMORY
18418 + {
18419 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
18420 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18421 + HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
18422 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18423 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18424 + }"
18425 + OTHER_SECTIONS ="${OTHER_SECTIONS}
18426 + .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
18427 +"
18428 + ;;
18429 +
18430 +
18431 + esac
18432 + ;;
18433 +
18434 +esac
18435 --- /dev/null
18436 +++ b/ld/emulparams/avr32linux.sh
18437 @@ -0,0 +1,14 @@
18438 +ARCH=avr32
18439 +SCRIPT_NAME=elf
18440 +TEMPLATE_NAME=elf32
18441 +EXTRA_EM_FILE=avr32elf
18442 +OUTPUT_FORMAT="elf32-avr32"
18443 +GENERATE_SHLIB_SCRIPT=yes
18444 +MAXPAGESIZE=0x1000
18445 +TEXT_START_ADDR=0x00001000
18446 +NOP=0xd703d703
18447 +
18448 +# This appears to place the GOT before the data section, which is
18449 +# essential for uClinux. We don't use those .s* sections on AVR32
18450 +# anyway, so it shouldn't hurt for regular Linux either...
18451 +NO_SMALL_DATA=yes
18452 --- /dev/null
18453 +++ b/ld/emultempl/avr32elf.em
18454 @@ -0,0 +1,133 @@
18455 +# This shell script emits a C file. -*- C -*-
18456 +# Copyright (C) 2007 Atmel Corporation
18457 +#
18458 +# This file is part of GLD, the Gnu Linker.
18459 +#
18460 +# This program is free software; you can redistribute it and/or modify
18461 +# it under the terms of the GNU General Public License as published by
18462 +# the Free Software Foundation; either version 2 of the License, or
18463 +# (at your option) any later version.
18464 +#
18465 +# This program is distributed in the hope that it will be useful,
18466 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
18467 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18468 +# GNU General Public License for more details.
18469 +#
18470 +# You should have received a copy of the GNU General Public License
18471 +# along with this program; if not, write to the Free Software
18472 +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
18473 +#
18474 +
18475 +# This file is sourced from elf32.em, and defines extra avr32-elf
18476 +# specific routines.
18477 +#
18478 +
18479 +# Generate linker script for writable rodata
18480 +LD_FLAG=rodata-writable
18481 +DATA_ALIGNMENT=${DATA_ALIGNMENT_}
18482 +RELOCATING=" "
18483 +WRITABLE_RODATA=" "
18484 +( echo "/* Linker script for writable rodata */"
18485 + . ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
18486 + . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
18487 +) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xwr
18488 +
18489 +
18490 +cat >> e${EMULATION_NAME}.c <<EOF
18491 +
18492 +#include "libbfd.h"
18493 +#include "elf32-avr32.h"
18494 +
18495 +/* Whether to allow direct references (sub or mov) to SEC_DATA and
18496 + !SEC_CONTENTS sections when optimizing. Not enabled by default
18497 + since it might cause link errors. */
18498 +static int direct_data_refs = 0;
18499 +
18500 +static void avr32_elf_after_open (void)
18501 +{
18502 + bfd_elf32_avr32_set_options (&link_info, direct_data_refs);
18503 + gld${EMULATION_NAME}_after_open ();
18504 +}
18505 +
18506 +static int rodata_writable = 0;
18507 +
18508 +static char * gld${EMULATION_NAME}_get_script (int *isfile);
18509 +
18510 +static char * avr32_elf_get_script (int *isfile)
18511 +{
18512 + if ( rodata_writable )
18513 + {
18514 +EOF
18515 +if test -n "$COMPILE_IN"
18516 +then
18517 +# Scripts compiled in.
18518 +
18519 +# sed commands to quote an ld script as a C string.
18520 +sc="-f stringify.sed"
18521 +
18522 +cat >>e${EMULATION_NAME}.c <<EOF
18523 + *isfile = 0;
18524 + return
18525 +EOF
18526 +sed $sc ldscripts/${EMULATION_NAME}.xwr >> e${EMULATION_NAME}.c
18527 +echo ';' >> e${EMULATION_NAME}.c
18528 +else
18529 +# Scripts read from the filesystem.
18530 +
18531 +cat >>e${EMULATION_NAME}.c <<EOF
18532 + *isfile = 1;
18533 + return "ldscripts/${EMULATION_NAME}.xwr";
18534 +EOF
18535 +fi
18536 +
18537 +cat >>e${EMULATION_NAME}.c <<EOF
18538 + }
18539 + return gld${EMULATION_NAME}_get_script (isfile);
18540 +}
18541 +
18542 +
18543 +EOF
18544 +
18545 +# Define some shell vars to insert bits of code into the standard elf
18546 +# parse_args and list_options functions.
18547 +#
18548 +PARSE_AND_LIST_PROLOGUE='
18549 +#define OPTION_DIRECT_DATA 300
18550 +#define OPTION_NO_DIRECT_DATA 301
18551 +#define OPTION_RODATA_WRITABLE 302
18552 +#define OPTION_NO_RODATA_WRITABLE 303
18553 +'
18554 +
18555 +PARSE_AND_LIST_LONGOPTS='
18556 + { "direct-data", no_argument, NULL, OPTION_DIRECT_DATA },
18557 + { "no-direct-data", no_argument, NULL, OPTION_NO_DIRECT_DATA },
18558 + { "rodata-writable", no_argument, NULL, OPTION_RODATA_WRITABLE },
18559 + { "no-rodata-writable", no_argument, NULL, OPTION_NO_RODATA_WRITABLE },
18560 +'
18561 +
18562 +PARSE_AND_LIST_OPTIONS='
18563 + fprintf (file, _(" --direct-data\t\tAllow direct data references when optimizing\n"));
18564 + fprintf (file, _(" --no-direct-data\tDo not allow direct data references when optimizing\n"));
18565 + fprintf (file, _(" --rodata-writable\tPut read-only data in writable data section\n"));
18566 + fprintf (file, _(" --no-rodata-writable\tDo not put read-only data in writable data section\n"));
18567 +'
18568 +
18569 +PARSE_AND_LIST_ARGS_CASES='
18570 + case OPTION_DIRECT_DATA:
18571 + direct_data_refs = 1;
18572 + break;
18573 + case OPTION_NO_DIRECT_DATA:
18574 + direct_data_refs = 0;
18575 + break;
18576 + case OPTION_RODATA_WRITABLE:
18577 + rodata_writable = 1;
18578 + break;
18579 + case OPTION_NO_RODATA_WRITABLE:
18580 + rodata_writable = 0;
18581 + break;
18582 +'
18583 +
18584 +# Replace some of the standard ELF functions with our own versions.
18585 +#
18586 +LDEMUL_AFTER_OPEN=avr32_elf_after_open
18587 +LDEMUL_GET_SCRIPT=avr32_elf_get_script
18588 --- a/ld/ld.info
18589 +++ b/ld/ld.info
18590 @@ -4347,6 +4347,8 @@ not listed.
18591
18592 * ARM:: `ld' and the ARM family
18593
18594 +* AVR32:: `ld' and AVR32 processors
18595 +
18596 * HPPA ELF32:: `ld' and HPPA 32-bit ELF
18597
18598 * MMIX:: `ld' and MMIX
18599 @@ -4487,7 +4489,7 @@ PIC. This avoids problems on uClinux ta
18600 used to generate relocatable binaries.
18601
18602 \1f
18603 -File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: i960, Up: Machine Dependent
18604 +File: ld.info, Node: ARM, Next: AV32, Prev: i960, Up: Machine Dependent
18605
18606 4.4 `ld' and the ARM family
18607 ===========================
18608 @@ -4588,7 +4590,31 @@ enumeration values fitted into the small
18609 diagnosed.
18610
18611 \1f
18612 -File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: ARM, Up: Machine Dependent
18613 +File: ld.info, Node: AVR32, Next: HPPA ELF32, Prev: ARM, Up: Machine Dependent
18614 +
18615 +4.4 `ld' and AVR32 processors
18616 +=============================
18617 +
18618 +`--direct-data'
18619 +
18620 +`--no-direct-data'
18621 + Taking the address of a symbol can often be done by using a direct
18622 + `mov' or pc-relative `sub' instruction, which is faster than using
18623 + a PC- or GOT-relative load, especially on the uC3 processors.
18624 + However, this does not always work when dealing with symbols in
18625 + the `.data' section so this optimization is disabled by default.
18626 +
18627 + Specifying `--direct-data' will enable this optimization. Note
18628 + that this may cause `relocation truncated to fit' errors for
18629 + certain large programs. If this happens, the optimization can be
18630 + turned off by specifying `--no-direct-data'.
18631 +
18632 + All known issues with direct data optimizations are detected at
18633 + link time, so if the linker doesn't complain, the result should
18634 + run just fine.
18635 +
18636 +\1f
18637 +File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: AVR32, Up: Machine Dependent
18638
18639 4.5 `ld' and HPPA 32-bit ELF Support
18640 ====================================
18641 @@ -6336,6 +6362,7 @@ LD Index
18642 * --no-check-sections: Options. (line 765)
18643 * --no-define-common: Options. (line 787)
18644 * --no-demangle: Options. (line 816)
18645 +* --no-direct-data: AVR32. (line 6)
18646 * --no-dotsyms: PowerPC64 ELF64. (line 33)
18647 * --no-enum-size-warning: ARM. (line 94)
18648 * --no-gc-sections: Options. (line 848)
18649 @@ -6534,6 +6561,7 @@ LD Index
18650 * AT(LMA): Output Section LMA. (line 6)
18651 * AT>LMA_REGION: Output Section LMA. (line 6)
18652 * automatic data imports: WIN32. (line 170)
18653 +* AVR32 options: AVR32. (line 6)
18654 * back end: BFD. (line 6)
18655 * BASE (MRI): MRI. (line 54)
18656 * BE8: ARM. (line 23)
18657 @@ -7018,6 +7046,7 @@ Node: H8/300\7f183897
18658 Node: i960\7f185522
18659 Node: M68HC11/68HC12\7f187207
18660 Node: ARM\7f188910
18661 +Node: AVR32\7f182578
18662 Node: HPPA ELF32\7f193760
18663 Node: MMIX\7f195383
18664 Node: MSP430\7f196600
18665 --- a/ld/ld.texinfo
18666 +++ b/ld/ld.texinfo
18667 @@ -21,6 +21,7 @@
18668 @set UsesEnvVars
18669 @set GENERIC
18670 @set ARM
18671 +@set AVR32
18672 @set H8300
18673 @set HPPA
18674 @set I960
18675 @@ -139,6 +140,9 @@ section entitled ``GNU Free Documentatio
18676 @ifset ARM
18677 * ARM:: ld and the ARM family
18678 @end ifset
18679 +@ifset AVR32
18680 +* AVR32:: ld and AVR32 processors
18681 +@end ifset
18682 @ifset HPPA
18683 * HPPA ELF32:: ld and HPPA 32-bit ELF
18684 @end ifset
18685 @@ -5248,6 +5252,9 @@ functionality are not listed.
18686 @ifset ARM
18687 * ARM:: @command{ld} and the ARM family
18688 @end ifset
18689 +@ifset AVR32
18690 +* AVR32:: @command{ld} and AVR32 processors
18691 +@end ifset
18692 @ifset HPPA
18693 * HPPA ELF32:: @command{ld} and HPPA 32-bit ELF
18694 @end ifset
18695 @@ -5589,6 +5596,52 @@ not be diagnosed.
18696 @end ifclear
18697 @end ifset
18698
18699 +@ifset AVR32
18700 +@ifclear GENERIC
18701 +@raisesections
18702 +@end ifclear
18703 +
18704 +@node AVR32
18705 +@section @command{ld} and AVR32 processors
18706 +@cindex AVR32 options
18707 +@table @option
18708 +@kindex --direct-data
18709 +@kindex --no-direct-data
18710 +@item --direct-data
18711 +@item --no-direct-data
18712 +Taking the address of a symbol can often be done by using a direct
18713 +@code{mov} or pc-relative @code{sub} instruction, which is faster than
18714 +using a PC- or GOT-relative load, especially on the uC3
18715 +processors. However, this does not always work when dealing with
18716 +symbols in the @code{.data} section so this optimization is disabled
18717 +by default.
18718 +
18719 +Specifying @option{--direct-data} will enable this optimization. Note
18720 +that this may cause @samp{relocation truncated to fit} errors for
18721 +certain large programs. If this happens, the optimization can be
18722 +turned off by specifying @option{--no-direct-data}.
18723 +
18724 +All known issues with direct data optimizations are detected at link
18725 +time, so if the linker doesn't complain, the result should run just
18726 +fine.
18727 +
18728 +@kindex --rodata-writable
18729 +@kindex --no-rodata-writable
18730 +@item --rodata-writable
18731 +@item --no-rodata-writable
18732 +Using the @option{--rodata-writable} options will cause the linker
18733 +to try and use a linker script where read-only data will be placed
18734 +in the same section as writable data. This can give great performance
18735 +gain on cacheless processors where read-only data normally is placed in
18736 +flash, and writable data is placed in internal sram. This will however
18737 +come at the expence of a larger memory footprint.
18738 +@end table
18739 +
18740 +@ifclear GENERIC
18741 +@lowersections
18742 +@end ifclear
18743 +@end ifset
18744 +
18745 @ifset HPPA
18746 @ifclear GENERIC
18747 @raisesections
18748 --- a/ld/Makefile.am
18749 +++ b/ld/Makefile.am
18750 @@ -137,7 +137,34 @@ ALL_EMULATIONS = \
18751 eavr3.o \
18752 eavr4.o \
18753 eavr5.o \
18754 - eavr6.o \
18755 + eavr6.o \
18756 + eavr32elf_ap7000.o \
18757 + eavr32elf_ap7001.o \
18758 + eavr32elf_ap7002.o \
18759 + eavr32elf_ap7200.o \
18760 + eavr32elf_uc3a0128.o \
18761 + eavr32elf_uc3a0256.o \
18762 + eavr32elf_uc3a0512.o \
18763 + eavr32elf_uc3a0512es.o \
18764 + eavr32elf_uc3a1128.o \
18765 + eavr32elf_uc3a1256.o \
18766 + eavr32elf_uc3a1512es.o \
18767 + eavr32elf_uc3a1512.o \
18768 + eavr32elf_uc3a364.o \
18769 + eavr32elf_uc3a364s.o \
18770 + eavr32elf_uc3a3128.o \
18771 + eavr32elf_uc3a3128s.o \
18772 + eavr32elf_uc3a3256.o \
18773 + eavr32elf_uc3a3256s.o \
18774 + eavr32elf_uc3b064.o \
18775 + eavr32elf_uc3b0128.o \
18776 + eavr32elf_uc3b0256es.o \
18777 + eavr32elf_uc3b0256.o \
18778 + eavr32elf_uc3b164.o \
18779 + eavr32elf_uc3b1128.o \
18780 + eavr32elf_uc3b1256es.o \
18781 + eavr32elf_uc3b1256.o \
18782 + eavr32linux.o \
18783 ecoff_i860.o \
18784 ecoff_sparc.o \
18785 eelf32_spu.o \
18786 @@ -622,6 +649,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
18787 $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
18788 ${GEN_DEPENDS}
18789 ${GENSCRIPTS} avr6 "$(tdir_avr2)"
18790 +eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
18791 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18792 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18793 + ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
18794 +eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
18795 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18796 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18797 + ${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
18798 +eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
18799 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18800 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18801 + ${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
18802 +eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
18803 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18804 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18805 + ${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
18806 +eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
18807 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18808 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18809 + ${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
18810 +eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
18811 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18812 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18813 + ${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
18814 +eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
18815 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18816 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18817 + ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
18818 +eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
18819 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18820 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18821 + ${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
18822 +eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
18823 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18824 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18825 + ${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
18826 +eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
18827 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18828 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18829 + ${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
18830 +eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
18831 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18832 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18833 + ${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
18834 +eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
18835 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18836 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18837 + ${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
18838 +eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
18839 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18840 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18841 + ${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
18842 +eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
18843 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18844 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18845 + ${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
18846 +eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
18847 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18848 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18849 + ${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
18850 +eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
18851 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18852 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18853 + ${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
18854 +eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
18855 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18856 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18857 + ${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
18858 +eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
18859 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18860 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18861 + ${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
18862 +eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
18863 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18864 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18865 + ${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
18866 +eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
18867 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18868 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18869 + ${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
18870 +eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
18871 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18872 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18873 + ${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
18874 +eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
18875 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18876 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18877 + ${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
18878 +eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
18879 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18880 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18881 + ${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
18882 +eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
18883 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18884 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18885 + ${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
18886 +eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
18887 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18888 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18889 + ${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
18890 +eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
18891 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18892 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
18893 + ${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
18894 +eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
18895 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
18896 + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
18897 + ${GENSCRIPTS} avr32linux "$(tdir_avr32)"
18898 ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
18899 $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
18900 ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
18901 @@ -1877,7 +2012,9 @@ install-exec-local: ld-new$(EXEEXT)
18902 || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
18903 fi
18904
18905 -install-data-local:
18906 +# We want install to imply install-info as per GNU standards, despite the
18907 +# cygnus option.
18908 +install-data-local: install-info
18909 $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
18910 for f in ldscripts/*; do \
18911 $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
18912 --- /dev/null
18913 +++ b/ld/scripttempl/elf_xip.sc
18914 @@ -0,0 +1,456 @@
18915 +#
18916 +# Unusual variables checked by this code:
18917 +# NOP - four byte opcode for no-op (defaults to 0)
18918 +# NO_SMALL_DATA - no .sbss/.sbss2/.sdata/.sdata2 sections if not
18919 +# empty.
18920 +# SMALL_DATA_CTOR - .ctors contains small data.
18921 +# SMALL_DATA_DTOR - .dtors contains small data.
18922 +# DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
18923 +# INITIAL_READONLY_SECTIONS - at start of text segment
18924 +# OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
18925 +# (e.g., .PARISC.milli)
18926 +# OTHER_TEXT_SECTIONS - these get put in .text when relocating
18927 +# OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
18928 +# (e.g., .PARISC.global)
18929 +# OTHER_RELRO_SECTIONS - other than .data.rel.ro ...
18930 +# (e.g. PPC32 .fixup, .got[12])
18931 +# OTHER_BSS_SECTIONS - other than .bss .sbss ...
18932 +# OTHER_SECTIONS - at the end
18933 +# EXECUTABLE_SYMBOLS - symbols that must be defined for an
18934 +# executable (e.g., _DYNAMIC_LINK)
18935 +# TEXT_START_ADDR - the first byte of the text segment, after any
18936 +# headers.
18937 +# TEXT_BASE_ADDRESS - the first byte of the text segment.
18938 +# TEXT_START_SYMBOLS - symbols that appear at the start of the
18939 +# .text section.
18940 +# DATA_START_SYMBOLS - symbols that appear at the start of the
18941 +# .data section.
18942 +# OTHER_GOT_SYMBOLS - symbols defined just before .got.
18943 +# OTHER_GOT_SECTIONS - sections just after .got.
18944 +# OTHER_SDATA_SECTIONS - sections just after .sdata.
18945 +# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
18946 +# .bss section besides __bss_start.
18947 +# DATA_PLT - .plt should be in data segment, not text segment.
18948 +# PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement.
18949 +# BSS_PLT - .plt should be in bss segment
18950 +# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
18951 +# EMBEDDED - whether this is for an embedded system.
18952 +# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
18953 +# start address of shared library.
18954 +# INPUT_FILES - INPUT command of files to always include
18955 +# WRITABLE_RODATA - if set, the .rodata section should be writable
18956 +# INIT_START, INIT_END - statements just before and just after
18957 +# combination of .init sections.
18958 +# FINI_START, FINI_END - statements just before and just after
18959 +# combination of .fini sections.
18960 +# STACK_ADDR - start of a .stack section.
18961 +# OTHER_END_SYMBOLS - symbols to place right at the end of the script.
18962 +# SEPARATE_GOTPLT - if set, .got.plt should be separate output section,
18963 +# so that .got can be in the RELRO area. It should be set to
18964 +# the number of bytes in the beginning of .got.plt which can be
18965 +# in the RELRO area as well.
18966 +#
18967 +# When adding sections, do note that the names of some sections are used
18968 +# when specifying the start address of the next.
18969 +#
18970 +
18971 +# Many sections come in three flavours. There is the 'real' section,
18972 +# like ".data". Then there are the per-procedure or per-variable
18973 +# sections, generated by -ffunction-sections and -fdata-sections in GCC,
18974 +# and useful for --gc-sections, which for a variable "foo" might be
18975 +# ".data.foo". Then there are the linkonce sections, for which the linker
18976 +# eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
18977 +# The exact correspondences are:
18978 +#
18979 +# Section Linkonce section
18980 +# .text .gnu.linkonce.t.foo
18981 +# .rodata .gnu.linkonce.r.foo
18982 +# .data .gnu.linkonce.d.foo
18983 +# .bss .gnu.linkonce.b.foo
18984 +# .sdata .gnu.linkonce.s.foo
18985 +# .sbss .gnu.linkonce.sb.foo
18986 +# .sdata2 .gnu.linkonce.s2.foo
18987 +# .sbss2 .gnu.linkonce.sb2.foo
18988 +# .debug_info .gnu.linkonce.wi.foo
18989 +# .tdata .gnu.linkonce.td.foo
18990 +# .tbss .gnu.linkonce.tb.foo
18991 +#
18992 +# Each of these can also have corresponding .rel.* and .rela.* sections.
18993 +
18994 +test -z "$ENTRY" && ENTRY=_start
18995 +test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
18996 +test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
18997 +if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
18998 +test -z "${ELFSIZE}" && ELFSIZE=32
18999 +test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
19000 +test "$LD_FLAG" = "N" && DATA_ADDR=.
19001 +test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
19002 +test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
19003 +test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
19004 +if test -n "$RELOCATING"; then
19005 + RO_REGION="${RO_VMA_REGION+ >}${RO_VMA_REGION}${RO_LMA_REGION+ AT>}${RO_LMA_REGION}"
19006 + RW_REGION="${RW_VMA_REGION+ >}${RW_VMA_REGION}${RW_LMA_REGION+ AT>}${RW_LMA_REGION}"
19007 +else
19008 + RO_REGION=""
19009 + RW_REGION=""
19010 +fi
19011 +INTERP=".interp ${RELOCATING-0} : { *(.interp) }${RO_REGION}"
19012 +PLT=".plt ${RELOCATING-0} : { *(.plt) }"
19013 +if test -z "$GOT"; then
19014 + if test -z "$SEPARATE_GOTPLT"; then
19015 + GOT=".got ${RELOCATING-0} : { *(.got.plt) *(.got) }"
19016 + else
19017 + GOT=".got ${RELOCATING-0} : { *(.got) }"
19018 + GOTPLT="${RELOCATING+${DATA_SEGMENT_RELRO_GOTPLT_END}}
19019 + .got.plt ${RELOCATING-0} : { *(.got.plt) }"
19020 + fi
19021 +fi
19022 +DALIGN=".dalign : { . = ALIGN(${DATA_SEGMENT_ALIGN}); PROVIDE(_data_lma = .); }${RO_REGION}"
19023 +BALIGN=".balign : { . = ALIGN(${BSS_ALIGNMENT}); _edata = .; }${RW_REGION}"
19024 +DYNAMIC=".dynamic ${RELOCATING-0} : { *(.dynamic) }"
19025 +RODATA=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
19026 +DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }${RW_REGION}"
19027 +STACKNOTE="/DISCARD/ : { *(.note.GNU-stack) }"
19028 +if test -z "${NO_SMALL_DATA}"; then
19029 + SBSS=".sbss ${RELOCATING-0} :
19030 + {
19031 + ${RELOCATING+PROVIDE (__sbss_start = .);}
19032 + ${RELOCATING+PROVIDE (___sbss_start = .);}
19033 + ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)}
19034 + *(.dynsbss)
19035 + *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
19036 + *(.scommon)
19037 + ${RELOCATING+PROVIDE (__sbss_end = .);}
19038 + ${RELOCATING+PROVIDE (___sbss_end = .);}
19039 + }${RW_REGION}"
19040 + SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }${RW_REGION}"
19041 + SDATA="/* We want the small data sections together, so single-instruction offsets
19042 + can access them all, and initialized data all before uninitialized, so
19043 + we can shorten the on-disk segment size. */
19044 + .sdata ${RELOCATING-0} :
19045 + {
19046 + ${RELOCATING+${SDATA_START_SYMBOLS}}
19047 + ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
19048 + *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
19049 + }${RW_REGION}"
19050 + SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }${RW_REGION}"
19051 + REL_SDATA=".rel.sdata ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }${RO_REGION}
19052 + .rela.sdata ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
19053 + REL_SBSS=".rel.sbss ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }${RO_REGION}
19054 + .rela.sbss ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }${RO_REGION}"
19055 + REL_SDATA2=".rel.sdata2 ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }${RO_REGION}
19056 + .rela.sdata2 ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }${RO_REGION}"
19057 + REL_SBSS2=".rel.sbss2 ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }${RO_REGION}
19058 + .rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }${RO_REGION}"
19059 +else
19060 + NO_SMALL_DATA=" "
19061 +fi
19062 +test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
19063 +CTOR=".ctors ${CONSTRUCTING-0} :
19064 + {
19065 + ${CONSTRUCTING+${CTOR_START}}
19066 + /* gcc uses crtbegin.o to find the start of
19067 + the constructors, so we make sure it is
19068 + first. Because this is a wildcard, it
19069 + doesn't matter if the user does not
19070 + actually link against crtbegin.o; the
19071 + linker won't look for a file to match a
19072 + wildcard. The wildcard also means that it
19073 + doesn't matter which directory crtbegin.o
19074 + is in. */
19075 +
19076 + KEEP (*crtbegin*.o(.ctors))
19077 +
19078 + /* We don't want to include the .ctor section from
19079 + from the crtend.o file until after the sorted ctors.
19080 + The .ctor section from the crtend file contains the
19081 + end of ctors marker and it must be last */
19082 +
19083 + KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
19084 + KEEP (*(SORT(.ctors.*)))
19085 + KEEP (*(.ctors))
19086 + ${CONSTRUCTING+${CTOR_END}}
19087 + }"
19088 +DTOR=".dtors ${CONSTRUCTING-0} :
19089 + {
19090 + ${CONSTRUCTING+${DTOR_START}}
19091 + KEEP (*crtbegin*.o(.dtors))
19092 + KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
19093 + KEEP (*(SORT(.dtors.*)))
19094 + KEEP (*(.dtors))
19095 + ${CONSTRUCTING+${DTOR_END}}
19096 + }"
19097 +STACK=".stack ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
19098 + {
19099 + ${RELOCATING+_stack = .;}
19100 + *(.stack)
19101 + ${RELOCATING+${STACK_SIZE+. = ${STACK_SIZE};}}
19102 + ${RELOCATING+_estack = .;}
19103 + }${RW_REGION}"
19104 +
19105 +# if this is for an embedded system, don't add SIZEOF_HEADERS.
19106 +if [ -z "$EMBEDDED" ]; then
19107 + test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
19108 +else
19109 + test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
19110 +fi
19111 +
19112 +cat <<EOF
19113 +OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
19114 + "${LITTLE_OUTPUT_FORMAT}")
19115 +OUTPUT_ARCH(${OUTPUT_ARCH})
19116 +ENTRY(${ENTRY})
19117 +
19118 +${RELOCATING+${LIB_SEARCH_DIRS}}
19119 +${RELOCATING+/* Do we need any of these for elf?
19120 + __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */}
19121 +${RELOCATING+${EXECUTABLE_SYMBOLS}}
19122 +${RELOCATING+${INPUT_FILES}}
19123 +${RELOCATING- /* For some reason, the Solaris linker makes bad executables
19124 + if gld -r is used and the intermediate file has sections starting
19125 + at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld
19126 + bug. But for now assigning the zero vmas works. */}
19127 +
19128 +${RELOCATING+${MEMORY}}
19129 +
19130 +SECTIONS
19131 +{
19132 + /* Read-only sections, merged into text segment: */
19133 + ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}
19134 + ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
19135 + ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
19136 + ${CREATE_SHLIB-${INTERP}}
19137 + ${INITIAL_READONLY_SECTIONS}
19138 + ${TEXT_DYNAMIC+${DYNAMIC}${RO_REGION}}
19139 + .hash ${RELOCATING-0} : { *(.hash) }${RO_REGION}
19140 + .dynsym ${RELOCATING-0} : { *(.dynsym) }${RO_REGION}
19141 + .dynstr ${RELOCATING-0} : { *(.dynstr) }${RO_REGION}
19142 + .gnu.version ${RELOCATING-0} : { *(.gnu.version) }${RO_REGION}
19143 + .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }${RO_REGION}
19144 + .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }${RO_REGION}
19145 +
19146 +EOF
19147 +if [ "x$COMBRELOC" = x ]; then
19148 + COMBRELOCCAT=cat
19149 +else
19150 + COMBRELOCCAT="cat > $COMBRELOC"
19151 +fi
19152 +eval $COMBRELOCCAT <<EOF
19153 + .rel.init ${RELOCATING-0} : { *(.rel.init) }${RO_REGION}
19154 + .rela.init ${RELOCATING-0} : { *(.rela.init) }${RO_REGION}
19155 + .rel.text ${RELOCATING-0} : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }${RO_REGION}
19156 + .rela.text ${RELOCATING-0} : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }${RO_REGION}
19157 + .rel.fini ${RELOCATING-0} : { *(.rel.fini) }${RO_REGION}
19158 + .rela.fini ${RELOCATING-0} : { *(.rela.fini) }${RO_REGION}
19159 + .rel.rodata ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }${RO_REGION}
19160 + .rela.rodata ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }${RO_REGION}
19161 + ${OTHER_READONLY_RELOC_SECTIONS}
19162 + .rel.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
19163 + .rela.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
19164 + .rel.data ${RELOCATING-0} : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }${RO_REGION}
19165 + .rela.data ${RELOCATING-0} : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }${RO_REGION}
19166 + .rel.tdata ${RELOCATING-0} : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }${RO_REGION}
19167 + .rela.tdata ${RELOCATING-0} : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }${RO_REGION}
19168 + .rel.tbss ${RELOCATING-0} : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }${RO_REGION}
19169 + .rela.tbss ${RELOCATING-0} : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }${RO_REGION}
19170 + .rel.ctors ${RELOCATING-0} : { *(.rel.ctors) }${RO_REGION}
19171 + .rela.ctors ${RELOCATING-0} : { *(.rela.ctors) }${RO_REGION}
19172 + .rel.dtors ${RELOCATING-0} : { *(.rel.dtors) }${RO_REGION}
19173 + .rela.dtors ${RELOCATING-0} : { *(.rela.dtors) }${RO_REGION}
19174 + .rel.got ${RELOCATING-0} : { *(.rel.got) }${RO_REGION}
19175 + .rela.got ${RELOCATING-0} : { *(.rela.got) }${RO_REGION}
19176 + ${OTHER_GOT_RELOC_SECTIONS}
19177 + ${REL_SDATA}
19178 + ${REL_SBSS}
19179 + ${REL_SDATA2}
19180 + ${REL_SBSS2}
19181 + .rel.bss ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }${RO_REGION}
19182 + .rela.bss ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }${RO_REGION}
19183 +EOF
19184 +if [ -n "$COMBRELOC" ]; then
19185 +cat <<EOF
19186 + .rel.dyn ${RELOCATING-0} :
19187 + {
19188 +EOF
19189 +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
19190 +cat <<EOF
19191 + }${RO_REGION}
19192 + .rela.dyn ${RELOCATING-0} :
19193 + {
19194 +EOF
19195 +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
19196 +cat <<EOF
19197 + }${RO_REGION}
19198 +EOF
19199 +fi
19200 +cat <<EOF
19201 + .rel.plt ${RELOCATING-0} : { *(.rel.plt) }${RO_REGION}
19202 + .rela.plt ${RELOCATING-0} : { *(.rela.plt) }${RO_REGION}
19203 + ${OTHER_PLT_RELOC_SECTIONS}
19204 +
19205 + .init ${RELOCATING-0} :
19206 + {
19207 + ${RELOCATING+${INIT_START}}
19208 + KEEP (*(.init))
19209 + ${RELOCATING+${INIT_END}}
19210 + }${RO_REGION} =${NOP-0}
19211 +
19212 + ${DATA_PLT-${BSS_PLT-${PLT}${RO_REGION}}}
19213 + .text ${RELOCATING-0} :
19214 + {
19215 + ${RELOCATING+${TEXT_START_SYMBOLS}}
19216 + *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
19217 + KEEP (*(.text.*personality*))
19218 + /* .gnu.warning sections are handled specially by elf32.em. */
19219 + *(.gnu.warning)
19220 + ${RELOCATING+${OTHER_TEXT_SECTIONS}}
19221 + }${RO_REGION} =${NOP-0}
19222 + .fini ${RELOCATING-0} :
19223 + {
19224 + ${RELOCATING+${FINI_START}}
19225 + KEEP (*(.fini))
19226 + ${RELOCATING+${FINI_END}}
19227 + }${RO_REGION} =${NOP-0}
19228 + ${RELOCATING+PROVIDE (__etext = .);}
19229 + ${RELOCATING+PROVIDE (_etext = .);}
19230 + ${RELOCATING+PROVIDE (etext = .);}
19231 + ${WRITABLE_RODATA-${RODATA}${RO_REGION}}
19232 + .rodata1 ${RELOCATING-0} : { *(.rodata1) }${RO_REGION}
19233 + ${CREATE_SHLIB-${SDATA2}}
19234 + ${CREATE_SHLIB-${SBSS2}}
19235 + ${OTHER_READONLY_SECTIONS}
19236 + .eh_frame_hdr : { *(.eh_frame_hdr) }${RO_REGION}
19237 + .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }${RO_REGION}
19238 + .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RO_REGION}
19239 +
19240 + ${RELOCATING+${DALIGN}}
19241 + ${RELOCATING+PROVIDE (_data = ORIGIN(${RW_VMA_REGION}));}
19242 + . = ORIGIN(${RW_VMA_REGION});
19243 + /* Exception handling */
19244 + .eh_frame ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }${RW_REGION}
19245 + .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RW_REGION}
19246 +
19247 + /* Thread Local Storage sections */
19248 + .tdata ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }${RW_REGION}
19249 + .tbss ${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }${RW_REGION}
19250 +
19251 + /* Ensure the __preinit_array_start label is properly aligned. We
19252 + could instead move the label definition inside the section, but
19253 + the linker would then create the section even if it turns out to
19254 + be empty, which isn't pretty. */
19255 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_start = ALIGN(${ALIGNMENT}));}}
19256 + .preinit_array ${RELOCATING-0} : { KEEP (*(.preinit_array)) }${RW_REGION}
19257 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_end = .);}}
19258 +
19259 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_start = .);}}
19260 + .init_array ${RELOCATING-0} : { KEEP (*(.init_array)) }${RW_REGION}
19261 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_end = .);}}
19262 +
19263 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_start = .);}}
19264 + .fini_array ${RELOCATING-0} : { KEEP (*(.fini_array)) }${RW_REGION}
19265 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_end = .);}}
19266 +
19267 + ${SMALL_DATA_CTOR-${RELOCATING+${CTOR}${RW_REGION}}}
19268 + ${SMALL_DATA_DTOR-${RELOCATING+${DTOR}${RW_REGION}}}
19269 + .jcr ${RELOCATING-0} : { KEEP (*(.jcr)) }${RW_REGION}
19270 +
19271 + ${RELOCATING+${DATARELRO}}
19272 + ${OTHER_RELRO_SECTIONS}
19273 + ${TEXT_DYNAMIC-${DYNAMIC}${RW_REGION}}
19274 + ${NO_SMALL_DATA+${RELRO_NOW+${GOT}${RW_REGION}}}
19275 + ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOT}${RW_REGION}}}}
19276 + ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOTPLT}${RW_REGION}}}}
19277 + ${RELOCATING+${DATA_SEGMENT_RELRO_END}}
19278 + ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT-${GOT}${RW_REGION}}}}
19279 +
19280 + ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}${RW_REGION}}}
19281 +
19282 + .data ${RELOCATING-0} :
19283 + {
19284 + ${RELOCATING+${DATA_START_SYMBOLS}}
19285 + *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
19286 + KEEP (*(.gnu.linkonce.d.*personality*))
19287 + ${CONSTRUCTING+SORT(CONSTRUCTORS)}
19288 + }${RW_REGION}
19289 + .data1 ${RELOCATING-0} : { *(.data1) }${RW_REGION}
19290 + ${WRITABLE_RODATA+${RODATA}${RW_REGION}}
19291 + ${OTHER_READWRITE_SECTIONS}
19292 + ${SMALL_DATA_CTOR+${RELOCATING+${CTOR}${RW_REGION}}}
19293 + ${SMALL_DATA_DTOR+${RELOCATING+${DTOR}${RW_REGION}}}
19294 + ${DATA_PLT+${PLT_BEFORE_GOT+${PLT}${RW_REGION}}}
19295 + ${RELOCATING+${OTHER_GOT_SYMBOLS}}
19296 + ${NO_SMALL_DATA-${GOT}${RW_REGION}}
19297 + ${OTHER_GOT_SECTIONS}
19298 + ${SDATA}
19299 + ${OTHER_SDATA_SECTIONS}
19300 + ${RELOCATING+${BALIGN}}
19301 + ${RELOCATING+_edata = .;}
19302 + ${RELOCATING+PROVIDE (edata = .);}
19303 + ${RELOCATING+__bss_start = .;}
19304 + ${RELOCATING+${OTHER_BSS_SYMBOLS}}
19305 + ${SBSS}
19306 + ${BSS_PLT+${PLT}${RW_REGION}}
19307 + .bss ${RELOCATING-0} :
19308 + {
19309 + *(.dynbss)
19310 + *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
19311 + *(COMMON)
19312 + /* Align here to ensure that the .bss section occupies space up to
19313 + _end. Align after .bss to ensure correct alignment even if the
19314 + .bss section disappears because there are no input sections. */
19315 + ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
19316 + }${RW_REGION}
19317 + ${OTHER_BSS_SECTIONS}
19318 + ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
19319 + ${RELOCATING+_end = .;}
19320 + ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
19321 + ${RELOCATING+PROVIDE (end = .);}
19322 + ${RELOCATING+${DATA_SEGMENT_END}}
19323 +
19324 + /* Stabs debugging sections. */
19325 + .stab 0 : { *(.stab) }
19326 + .stabstr 0 : { *(.stabstr) }
19327 + .stab.excl 0 : { *(.stab.excl) }
19328 + .stab.exclstr 0 : { *(.stab.exclstr) }
19329 + .stab.index 0 : { *(.stab.index) }
19330 + .stab.indexstr 0 : { *(.stab.indexstr) }
19331 +
19332 + .comment 0 : { *(.comment) }
19333 +
19334 + /* DWARF debug sections.
19335 + Symbols in the DWARF debugging sections are relative to the beginning
19336 + of the section so we begin them at 0. */
19337 +
19338 + /* DWARF 1 */
19339 + .debug 0 : { *(.debug) }
19340 + .line 0 : { *(.line) }
19341 +
19342 + /* GNU DWARF 1 extensions */
19343 + .debug_srcinfo 0 : { *(.debug_srcinfo) }
19344 + .debug_sfnames 0 : { *(.debug_sfnames) }
19345 +
19346 + /* DWARF 1.1 and DWARF 2 */
19347 + .debug_aranges 0 : { *(.debug_aranges) }
19348 + .debug_pubnames 0 : { *(.debug_pubnames) }
19349 +
19350 + /* DWARF 2 */
19351 + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
19352 + .debug_abbrev 0 : { *(.debug_abbrev) }
19353 + .debug_line 0 : { *(.debug_line) }
19354 + .debug_frame 0 : { *(.debug_frame) }
19355 + .debug_str 0 : { *(.debug_str) }
19356 + .debug_loc 0 : { *(.debug_loc) }
19357 + .debug_macinfo 0 : { *(.debug_macinfo) }
19358 +
19359 + /* SGI/MIPS DWARF 2 extensions */
19360 + .debug_weaknames 0 : { *(.debug_weaknames) }
19361 + .debug_funcnames 0 : { *(.debug_funcnames) }
19362 + .debug_typenames 0 : { *(.debug_typenames) }
19363 + .debug_varnames 0 : { *(.debug_varnames) }
19364 +
19365 + ${STACK_ADDR+${STACK}}
19366 + ${OTHER_SECTIONS}
19367 + ${RELOCATING+${OTHER_END_SYMBOLS}}
19368 + ${RELOCATING+${STACKNOTE}}
19369 +}
19370 +EOF
19371 --- /dev/null
19372 +++ b/ld/testsuite/ld-avr32/avr32.exp
19373 @@ -0,0 +1,25 @@
19374 +# Expect script for AVR32 ELF linker tests.
19375 +# Copyright 2004-2006 Atmel Corporation.
19376 +#
19377 +# This file is free software; you can redistribute it and/or modify
19378 +# it under the terms of the GNU General Public License as published by
19379 +# the Free Software Foundation; either version 2 of the License, or
19380 +# (at your option) any later version.
19381 +#
19382 +# This program is distributed in the hope that it will be useful,
19383 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
19384 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19385 +# GNU General Public License for more details.
19386 +#
19387 +# You should have received a copy of the GNU General Public License
19388 +# along with this program; if not, write to the Free Software
19389 +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19390 +#
19391 +# Written by Haavard Skinnemoen (hskinnemoen@atmel.com)
19392 +#
19393 +
19394 +if ![istarget avr32-*-*] {
19395 + return
19396 +}
19397 +
19398 +run_dump_test "pcrel"
19399 --- /dev/null
19400 +++ b/ld/testsuite/ld-avr32/pcrel.d
19401 @@ -0,0 +1,74 @@
19402 +#name: AVR32 ELF PC-relative external relocs
19403 +#source: symbols.s
19404 +#source: ../../../gas/testsuite/gas/avr32/pcrel.s
19405 +#ld: -T $srcdir/$subdir/pcrel.ld
19406 +#objdump: -d
19407 +
19408 +.*: file format elf.*avr32.*
19409 +
19410 +Disassembly of section .text:
19411 +
19412 +a0000000 <_start>:
19413 +a0000000: d7 03 nop
19414 +a0000002: d7 03 nop
19415 +
19416 +a0000004 <test_rjmp>:
19417 +a0000004: d7 03 nop
19418 +a0000006: c0 28 rjmp a000000a <test_rjmp\+0x6>
19419 +a0000008: d7 03 nop
19420 +a000000a: e0 8f 01 fb bral a0000400 <extsym10>
19421 +
19422 +a000000e <test_rcall>:
19423 +a000000e: d7 03 nop
19424 +a0000010 <test_rcall2>:
19425 +a0000010: c0 2c rcall a0000014 <test_rcall2\+0x4>
19426 +a0000012: d7 03 nop
19427 +a0000014: ee b0 ff f6 rcall a0200000 <extsym21>
19428 +
19429 +a0000018 <test_branch>:
19430 +a0000018: c0 31 brne a000001e <test_branch\+0x6>
19431 +a000001a: fe 9f ff ff bral a0000018 <test_branch>
19432 +a000001e: ee 90 ff f1 breq a0200000 <extsym21>
19433 +
19434 +a0000022 <test_lddpc>:
19435 +a0000022: 48 30 lddpc r0,a000002c <sym1>
19436 +a0000024: 48 20 lddpc r0,a000002c <sym1>
19437 +a0000026: fe f0 7f da ld.w r0,pc\[32730\]
19438 + ...
19439 +
19440 +a000002c <sym1>:
19441 +a000002c: d7 03 nop
19442 +a000002e: d7 03 nop
19443 +
19444 +a0000030 <test_local>:
19445 +a0000030: 48 20 lddpc r0,a0000038 <test_local\+0x8>
19446 +a0000032: 48 30 lddpc r0,a000003c <test_local\+0xc>
19447 +a0000034: 48 20 lddpc r0,a000003c <test_local\+0xc>
19448 +a0000036: 00 00 add r0,r0
19449 +a0000038: d7 03 nop
19450 +a000003a: d7 03 nop
19451 +a000003c: d7 03 nop
19452 +a000003e: d7 03 nop
19453 +
19454 +Disassembly of section \.text\.init:
19455 +a0000040 <test_inter_section>:
19456 +a0000040: fe b0 ff e7 rcall a000000e <test_rcall>
19457 +a0000044: d7 03 nop
19458 +a0000046: fe b0 ff e4 rcall a000000e <test_rcall>
19459 +a000004a: fe b0 ff e3 rcall a0000010 <test_rcall2>
19460 +a000004e: d7 03 nop
19461 +a0000050: fe b0 ff e0 rcall a0000010 <test_rcall2>
19462 +
19463 +Disassembly of section \.text\.pcrel10:
19464 +
19465 +a0000400 <extsym10>:
19466 +a0000400: d7 03 nop
19467 +
19468 +Disassembly of section \.text\.pcrel16:
19469 +
19470 +a0008000 <extsym16>:
19471 +a0008000: d7 03 nop
19472 +
19473 +Disassembly of section \.text\.pcrel21:
19474 +a0200000 <extsym21>:
19475 +a0200000: d7 03 nop
19476 --- /dev/null
19477 +++ b/ld/testsuite/ld-avr32/pcrel.ld
19478 @@ -0,0 +1,23 @@
19479 +ENTRY(_start)
19480 +SECTIONS
19481 +{
19482 + .text 0xa0000000:
19483 + {
19484 + *(.text)
19485 + }
19486 +
19487 + .text.pcrel10 0xa0000400:
19488 + {
19489 + *(.text.pcrel10)
19490 + }
19491 +
19492 + .text.pcrel16 0xa0008000:
19493 + {
19494 + *(.text.pcrel16)
19495 + }
19496 +
19497 + .text.pcrel21 0xa0200000:
19498 + {
19499 + *(.text.pcrel21)
19500 + }
19501 +}
19502 --- /dev/null
19503 +++ b/ld/testsuite/ld-avr32/symbols.s
19504 @@ -0,0 +1,20 @@
19505 + .text
19506 + .global _start
19507 +_start:
19508 + nop
19509 + nop
19510 +
19511 + .section .text.pcrel10,"ax"
19512 + .global extsym10
19513 +extsym10:
19514 + nop
19515 +
19516 + .section .text.pcrel16,"ax"
19517 + .global extsym16
19518 +extsym16:
19519 + nop
19520 +
19521 + .section .text.pcrel21,"ax"
19522 + .global extsym21
19523 +extsym21:
19524 + nop
19525 --- /dev/null
19526 +++ b/opcodes/avr32-asm.c
19527 @@ -0,0 +1,264 @@
19528 +/* Assembler interface for AVR32.
19529 + Copyright 2005, 2006 Atmel Corporation.
19530 +
19531 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
19532 +
19533 + This file is part of libopcodes.
19534 +
19535 + This program is free software; you can redistribute it and/or
19536 + modify it under the terms of the GNU General Public License as
19537 + published by the Free Software Foundation; either version 2 of the
19538 + License, or (at your option) any later version.
19539 +
19540 + This program is distributed in the hope that it will be useful, but
19541 + WITHOUT ANY WARRANTY; without even the implied warranty of
19542 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19543 + General Public License for more details.
19544 +
19545 + You should have received a copy of the GNU General Public License
19546 + along with this program; if not, write to the Free Software
19547 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19548 + 02111-1307, USA. */
19549 +
19550 +#include <string.h>
19551 +
19552 +#include "avr32-opc.h"
19553 +#include "avr32-asm.h"
19554 +
19555 +/* Structure for a register hash table entry. */
19556 +struct reg_entry
19557 +{
19558 + const char *name;
19559 + int number;
19560 +};
19561 +
19562 +/* Integer Registers. */
19563 +static const struct reg_entry reg_table[] =
19564 + {
19565 + /* Primary names (used by the disassembler) */
19566 + { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 },
19567 + { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 },
19568 + { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 },
19569 + { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 },
19570 + /* Alternatives to sp, lr and pc. */
19571 + { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
19572 + };
19573 +#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
19574 +
19575 +/* Coprocessor Registers. */
19576 +static const struct reg_entry cr_table[] =
19577 + {
19578 + { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 },
19579 + { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 },
19580 + { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 },
19581 + { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
19582 + };
19583 +#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
19584 +
19585 +/* Floating-point Registers. */
19586 +static const struct reg_entry fr_table[] =
19587 + {
19588 + { "fr0", 0 }, { "fr1", 1 }, { "fr2", 2 }, { "fr3", 3 },
19589 + { "fr4", 4 }, { "fr5", 5 }, { "fr6", 6 }, { "fr7", 7 },
19590 + { "fr8", 8 }, { "fr9", 9 }, { "fr10", 10 }, { "fr11", 11 },
19591 + { "fr12", 12 }, { "fr13", 13 }, { "fr14", 14 }, { "fr15", 15 },
19592 + };
19593 +#define AVR32_NR_FPREGS (sizeof(fr_table)/sizeof(fr_table[0]))
19594 +
19595 +/* PiCo Registers. */
19596 +static const struct reg_entry pico_table[] =
19597 + {
19598 + { "inpix2", 0 }, { "inpix1", 1 }, { "inpix0", 2 },
19599 + { "outpix2", 3 }, { "outpix1", 4 }, { "outpix0", 5 },
19600 + { "coeff0_a", 6 }, { "coeff0_b", 7 }, { "coeff1_a", 8 },
19601 + { "coeff1_b", 9 }, { "coeff2_a", 10 }, { "coeff2_b", 11 },
19602 + { "vmu0_out", 12 }, { "vmu1_out", 13 }, { "vmu2_out", 14 },
19603 + { "config", 15 },
19604 + };
19605 +#define AVR32_NR_PICOREGS (sizeof(pico_table)/sizeof(pico_table[0]))
19606 +
19607 +int
19608 +avr32_parse_intreg(const char *str)
19609 +{
19610 + unsigned int i;
19611 +
19612 + for (i = 0; i < AVR32_NR_INTREGS; i++)
19613 + {
19614 + if (strcasecmp(reg_table[i].name, str) == 0)
19615 + return reg_table[i].number;
19616 + }
19617 +
19618 + return -1;
19619 +}
19620 +
19621 +int
19622 +avr32_parse_cpreg(const char *str)
19623 +{
19624 + unsigned int i;
19625 +
19626 + for (i = 0; i < AVR32_NR_CPREGS; i++)
19627 + {
19628 + if (strcasecmp(cr_table[i].name, str) == 0)
19629 + return cr_table[i].number;
19630 + }
19631 +
19632 + return -1;
19633 +}
19634 +
19635 +int avr32_parse_fpreg(const char *str)
19636 +{
19637 + unsigned int i;
19638 +
19639 + for (i = 0; i < AVR32_NR_FPREGS; i++)
19640 + {
19641 + if (strcasecmp(fr_table[i].name, str) == 0)
19642 + return fr_table[i].number;
19643 + }
19644 +
19645 + return -1;
19646 +}
19647 +
19648 +int avr32_parse_picoreg(const char *str)
19649 +{
19650 + unsigned int i;
19651 +
19652 + for (i = 0; i < AVR32_NR_PICOREGS; i++)
19653 + {
19654 + if (strcasecmp(pico_table[i].name, str) == 0)
19655 + return pico_table[i].number;
19656 + }
19657 +
19658 + return -1;
19659 +}
19660 +
19661 +static unsigned long
19662 +parse_reglist(char *str, char **endptr, int (*parse_reg)(const char *))
19663 +{
19664 + int reg_from, reg_to;
19665 + unsigned long result = 0;
19666 + char *p1, *p2, c;
19667 +
19668 + while (*str)
19669 + {
19670 + for (p1 = str; *p1; p1++)
19671 + if (*p1 == ',' || *p1 == '-')
19672 + break;
19673 +
19674 + c = *p1, *p1 = 0;
19675 + reg_from = parse_reg(str);
19676 + *p1 = c;
19677 +
19678 + if (reg_from < 0)
19679 + break;
19680 +
19681 + if (*p1 == '-')
19682 + {
19683 + for (p2 = ++p1; *p2; p2++)
19684 + if (*p2 == ',')
19685 + break;
19686 +
19687 + c = *p2, *p2 = 0;
19688 + /* printf("going to parse reg_to from `%s'\n", p1); */
19689 + reg_to = parse_reg(p1);
19690 + *p2 = c;
19691 +
19692 + if (reg_to < 0)
19693 + break;
19694 +
19695 + while (reg_from <= reg_to)
19696 + result |= (1 << reg_from++);
19697 + p1 = p2;
19698 + }
19699 + else
19700 + result |= (1 << reg_from);
19701 +
19702 + str = p1;
19703 + if (*str) ++str;
19704 + }
19705 +
19706 + if (endptr)
19707 + *endptr = str;
19708 +
19709 + return result;
19710 +}
19711 +
19712 +unsigned long
19713 +avr32_parse_reglist(char *str, char **endptr)
19714 +{
19715 + return parse_reglist(str, endptr, avr32_parse_intreg);
19716 +}
19717 +
19718 +unsigned long
19719 +avr32_parse_cpreglist(char *str, char **endptr)
19720 +{
19721 + return parse_reglist(str, endptr, avr32_parse_cpreg);
19722 +}
19723 +
19724 +unsigned long
19725 +avr32_parse_pico_reglist(char *str, char **endptr)
19726 +{
19727 + return parse_reglist(str, endptr, avr32_parse_picoreg);
19728 +}
19729 +
19730 +int
19731 +avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8)
19732 +{
19733 + unsigned long result = 0;
19734 +
19735 + /* printf("convert regmask16 0x%04lx\n", regmask16); */
19736 +
19737 + if (regmask16 & 0xf)
19738 + {
19739 + if ((regmask16 & 0xf) == 0xf)
19740 + result |= 1 << 0;
19741 + else
19742 + return -1;
19743 + }
19744 + if (regmask16 & 0xf0)
19745 + {
19746 + if ((regmask16 & 0xf0) == 0xf0)
19747 + result |= 1 << 1;
19748 + else
19749 + return -1;
19750 + }
19751 + if (regmask16 & 0x300)
19752 + {
19753 + if ((regmask16 & 0x300) == 0x300)
19754 + result |= 1 << 2;
19755 + else
19756 + return -1;
19757 + }
19758 + if (regmask16 & (1 << 13))
19759 + return -1;
19760 +
19761 + if (regmask16 & (1 << 10))
19762 + result |= 1 << 3;
19763 + if (regmask16 & (1 << 11))
19764 + result |= 1 << 4;
19765 + if (regmask16 & (1 << 12))
19766 + result |= 1 << 5;
19767 + if (regmask16 & (1 << 14))
19768 + result |= 1 << 6;
19769 + if (regmask16 & (1 << 15))
19770 + result |= 1 << 7;
19771 +
19772 + *regmask8 = result;
19773 +
19774 + return 0;
19775 +}
19776 +
19777 +#if 0
19778 +struct reg_map
19779 +{
19780 + const struct reg_entry *names;
19781 + int nr_regs;
19782 + struct hash_control *htab;
19783 + const char *errmsg;
19784 +};
19785 +
19786 +struct reg_map all_reg_maps[] =
19787 + {
19788 + { reg_table, AVR32_NR_INTREGS, NULL, N_("integral register expected") },
19789 + { cr_table, AVR32_NR_CPREGS, NULL, N_("coprocessor register expected") },
19790 + };
19791 +#endif
19792 --- /dev/null
19793 +++ b/opcodes/avr32-asm.h
19794 @@ -0,0 +1,42 @@
19795 +/* Assembler interface for AVR32.
19796 + Copyright 2005, 2006 Atmel Corporation.
19797 +
19798 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
19799 +
19800 + This file is part of libopcodes.
19801 +
19802 + This program is free software; you can redistribute it and/or
19803 + modify it under the terms of the GNU General Public License as
19804 + published by the Free Software Foundation; either version 2 of the
19805 + License, or (at your option) any later version.
19806 +
19807 + This program is distributed in the hope that it will be useful, but
19808 + WITHOUT ANY WARRANTY; without even the implied warranty of
19809 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19810 + General Public License for more details.
19811 +
19812 + You should have received a copy of the GNU General Public License
19813 + along with this program; if not, write to the Free Software
19814 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19815 + 02111-1307, USA. */
19816 +#ifndef __OPCODES_AVR32_ASM_H
19817 +#define __OPCODES_AVR32_ASM_H
19818 +
19819 +extern int
19820 +avr32_parse_intreg(const char *str);
19821 +extern int
19822 +avr32_parse_cpreg(const char *str);
19823 +extern int
19824 +avr32_parse_fpreg(const char *str);
19825 +extern int
19826 +avr32_parse_picoreg(const char *str);
19827 +extern unsigned long
19828 +avr32_parse_reglist(char *str, char **endptr);
19829 +extern unsigned long
19830 +avr32_parse_cpreglist(char *str, char **endptr);
19831 +extern unsigned long
19832 +avr32_parse_pico_reglist(char *str, char **endptr);
19833 +extern int
19834 +avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8);
19835 +
19836 +#endif /* __OPCODES_AVR32_ASM_H */
19837 --- /dev/null
19838 +++ b/opcodes/avr32-dis.c
19839 @@ -0,0 +1,891 @@
19840 +/* Print AVR32 instructions for GDB and objdump.
19841 + Copyright 2005, 2006 Atmel Corporation.
19842 +
19843 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
19844 +
19845 + This file is part of libopcodes.
19846 +
19847 + This program is free software; you can redistribute it and/or
19848 + modify it under the terms of the GNU General Public License as
19849 + published by the Free Software Foundation; either version 2 of the
19850 + License, or (at your option) any later version.
19851 +
19852 + This program is distributed in the hope that it will be useful, but
19853 + WITHOUT ANY WARRANTY; without even the implied warranty of
19854 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19855 + General Public License for more details.
19856 +
19857 + You should have received a copy of the GNU General Public License
19858 + along with this program; if not, write to the Free Software
19859 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19860 + 02111-1307, USA. */
19861 +
19862 +#include "sysdep.h"
19863 +#include "dis-asm.h"
19864 +#include "avr32-opc.h"
19865 +#include "opintl.h"
19866 +#include "safe-ctype.h"
19867 +
19868 +/* TODO: Share this with -asm */
19869 +
19870 +/* Structure for a register hash table entry. */
19871 +struct reg_entry
19872 +{
19873 + const char *name;
19874 + int number;
19875 +};
19876 +
19877 +#ifndef strneq
19878 +#define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
19879 +#endif
19880 +
19881 +
19882 +static const struct reg_entry reg_table[] =
19883 + {
19884 + /* Primary names (used by the disassembler) */
19885 + { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 },
19886 + { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 },
19887 + { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 },
19888 + { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 },
19889 + /* Alternatives to sp, lr and pc. */
19890 + { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
19891 + };
19892 +#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
19893 +
19894 +/* Coprocessor Registers. */
19895 +static const struct reg_entry cr_table[] =
19896 + {
19897 + { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 },
19898 + { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 },
19899 + { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 },
19900 + { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
19901 + };
19902 +#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
19903 +
19904 +static const char bparts[4] = { 'b', 'l', 'u', 't' };
19905 +static bfd_vma current_pc;
19906 +
19907 +struct avr32_field_value
19908 +{
19909 + const struct avr32_ifield *ifield;
19910 + unsigned long value;
19911 +};
19912 +
19913 +struct avr32_operand
19914 +{
19915 + int id;
19916 + int is_pcrel;
19917 + int align_order;
19918 + int (*print)(struct avr32_operand *op, struct disassemble_info *info,
19919 + struct avr32_field_value *ifields);
19920 +};
19921 +
19922 +static signed long
19923 +get_signed_value(const struct avr32_field_value *fv)
19924 +{
19925 + signed long value = fv->value;
19926 +
19927 + if (fv->value & (1 << (fv->ifield->bitsize - 1)))
19928 + value |= (~0UL << fv->ifield->bitsize);
19929 +
19930 + return value;
19931 +}
19932 +
19933 +static void
19934 +print_reglist_range(unsigned int first, unsigned int last,
19935 + const struct reg_entry *reg_names,
19936 + int need_comma,
19937 + struct disassemble_info *info)
19938 +{
19939 + if (need_comma)
19940 + info->fprintf_func(info->stream, ",");
19941 +
19942 + if (first == last)
19943 + info->fprintf_func(info->stream, "%s",
19944 + reg_names[first].name);
19945 + else
19946 + info->fprintf_func(info->stream, "%s-%s",
19947 + reg_names[first].name, reg_names[last].name);
19948 +}
19949 +
19950 +static int
19951 +print_intreg(struct avr32_operand *op,
19952 + struct disassemble_info *info,
19953 + struct avr32_field_value *ifields)
19954 +{
19955 + unsigned long regid = ifields[0].value << op->align_order;
19956 +
19957 + info->fprintf_func(info->stream, "%s",
19958 + reg_table[regid].name);
19959 + return 1;
19960 +}
19961 +
19962 +static int
19963 +print_intreg_predec(struct avr32_operand *op ATTRIBUTE_UNUSED,
19964 + struct disassemble_info *info,
19965 + struct avr32_field_value *ifields)
19966 +{
19967 + info->fprintf_func(info->stream, "--%s",
19968 + reg_table[ifields[0].value].name);
19969 + return 1;
19970 +}
19971 +
19972 +static int
19973 +print_intreg_postinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
19974 + struct disassemble_info *info,
19975 + struct avr32_field_value *ifields)
19976 +{
19977 + info->fprintf_func(info->stream, "%s++",
19978 + reg_table[ifields[0].value].name);
19979 + return 1;
19980 +}
19981 +
19982 +static int
19983 +print_intreg_lsl(struct avr32_operand *op ATTRIBUTE_UNUSED,
19984 + struct disassemble_info *info,
19985 + struct avr32_field_value *ifields)
19986 +{
19987 + const char *rp = reg_table[ifields[0].value].name;
19988 + unsigned long sa = ifields[1].value;
19989 +
19990 + if (sa)
19991 + info->fprintf_func(info->stream, "%s<<0x%lx", rp, sa);
19992 + else
19993 + info->fprintf_func(info->stream, "%s", rp);
19994 +
19995 + return 2;
19996 +}
19997 +
19998 +static int
19999 +print_intreg_lsr(struct avr32_operand *op ATTRIBUTE_UNUSED,
20000 + struct disassemble_info *info,
20001 + struct avr32_field_value *ifields)
20002 +{
20003 + const char *rp = reg_table[ifields[0].value].name;
20004 + unsigned long sa = ifields[1].value;
20005 +
20006 + if (sa)
20007 + info->fprintf_func(info->stream, "%s>>0x%lx", rp, sa);
20008 + else
20009 + info->fprintf_func(info->stream, "%s", rp);
20010 +
20011 + return 2;
20012 +}
20013 +
20014 +static int
20015 +print_intreg_bpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
20016 + struct disassemble_info *info,
20017 + struct avr32_field_value *ifields)
20018 +{
20019 + info->fprintf_func(info->stream, "%s:%c",
20020 + reg_table[ifields[0].value].name,
20021 + bparts[ifields[1].value]);
20022 + return 2;
20023 +}
20024 +
20025 +static int
20026 +print_intreg_hpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
20027 + struct disassemble_info *info,
20028 + struct avr32_field_value *ifields)
20029 +{
20030 + info->fprintf_func(info->stream, "%s:%c",
20031 + reg_table[ifields[0].value].name,
20032 + ifields[1].value ? 't' : 'b');
20033 + return 2;
20034 +}
20035 +
20036 +static int
20037 +print_intreg_sdisp(struct avr32_operand *op,
20038 + struct disassemble_info *info,
20039 + struct avr32_field_value *ifields)
20040 +{
20041 + signed long disp;
20042 +
20043 + disp = get_signed_value(&ifields[1]) << op->align_order;
20044 +
20045 + info->fprintf_func(info->stream, "%s[%ld]",
20046 + reg_table[ifields[0].value].name, disp);
20047 + return 2;
20048 +}
20049 +
20050 +static int
20051 +print_intreg_udisp(struct avr32_operand *op,
20052 + struct disassemble_info *info,
20053 + struct avr32_field_value *ifields)
20054 +{
20055 + info->fprintf_func(info->stream, "%s[0x%lx]",
20056 + reg_table[ifields[0].value].name,
20057 + ifields[1].value << op->align_order);
20058 + return 2;
20059 +}
20060 +
20061 +static int
20062 +print_intreg_index(struct avr32_operand *op ATTRIBUTE_UNUSED,
20063 + struct disassemble_info *info,
20064 + struct avr32_field_value *ifields)
20065 +{
20066 + const char *rb, *ri;
20067 + unsigned long sa = ifields[2].value;
20068 +
20069 + rb = reg_table[ifields[0].value].name;
20070 + ri = reg_table[ifields[1].value].name;
20071 +
20072 + if (sa)
20073 + info->fprintf_func(info->stream, "%s[%s<<0x%lx]", rb, ri, sa);
20074 + else
20075 + info->fprintf_func(info->stream, "%s[%s]", rb, ri);
20076 +
20077 + return 3;
20078 +}
20079 +
20080 +static int
20081 +print_intreg_xindex(struct avr32_operand *op ATTRIBUTE_UNUSED,
20082 + struct disassemble_info *info,
20083 + struct avr32_field_value *ifields)
20084 +{
20085 + info->fprintf_func(info->stream, "%s[%s:%c<<2]",
20086 + reg_table[ifields[0].value].name,
20087 + reg_table[ifields[1].value].name,
20088 + bparts[ifields[2].value]);
20089 + return 3;
20090 +}
20091 +
20092 +static int
20093 +print_jmplabel(struct avr32_operand *op,
20094 + struct disassemble_info *info,
20095 + struct avr32_field_value *ifields)
20096 +{
20097 + bfd_vma address, offset;
20098 +
20099 + offset = get_signed_value(ifields) << op->align_order;
20100 + address = (current_pc & (~0UL << op->align_order)) + offset;
20101 +
20102 + info->print_address_func(address, info);
20103 +
20104 + return 1;
20105 +}
20106 +
20107 +static int
20108 +print_pc_disp(struct avr32_operand *op,
20109 + struct disassemble_info *info,
20110 + struct avr32_field_value *ifields)
20111 +{
20112 + bfd_vma address, offset;
20113 +
20114 + offset = ifields[0].value << op->align_order;
20115 + address = (current_pc & (~0UL << op->align_order)) + offset;
20116 +
20117 + info->print_address_func(address, info);
20118 +
20119 + return 1;
20120 +}
20121 +
20122 +static int
20123 +print_sp(struct avr32_operand *op ATTRIBUTE_UNUSED,
20124 + struct disassemble_info *info,
20125 + struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
20126 +{
20127 + info->fprintf_func(info->stream, "sp");
20128 + return 1;
20129 +}
20130 +
20131 +static int
20132 +print_sp_disp(struct avr32_operand *op,
20133 + struct disassemble_info *info,
20134 + struct avr32_field_value *ifields)
20135 +{
20136 + info->fprintf_func(info->stream, "sp[0x%lx]",
20137 + ifields[0].value << op->align_order);
20138 + return 1;
20139 +}
20140 +
20141 +static int
20142 +print_cpno(struct avr32_operand *op ATTRIBUTE_UNUSED,
20143 + struct disassemble_info *info,
20144 + struct avr32_field_value *ifields)
20145 +{
20146 + info->fprintf_func(info->stream, "cp%lu", ifields[0].value);
20147 + return 1;
20148 +}
20149 +
20150 +static int
20151 +print_cpreg(struct avr32_operand *op,
20152 + struct disassemble_info *info,
20153 + struct avr32_field_value *ifields)
20154 +{
20155 + info->fprintf_func(info->stream, "cr%lu",
20156 + ifields[0].value << op->align_order);
20157 + return 1;
20158 +}
20159 +
20160 +static int
20161 +print_uconst(struct avr32_operand *op,
20162 + struct disassemble_info *info,
20163 + struct avr32_field_value *ifields)
20164 +{
20165 + info->fprintf_func(info->stream, "0x%lx",
20166 + ifields[0].value << op->align_order);
20167 + return 1;
20168 +}
20169 +
20170 +static int
20171 +print_sconst(struct avr32_operand *op,
20172 + struct disassemble_info *info,
20173 + struct avr32_field_value *ifields)
20174 +{
20175 + info->fprintf_func(info->stream, "%ld",
20176 + get_signed_value(ifields) << op->align_order);
20177 + return 1;
20178 +}
20179 +
20180 +static int
20181 +print_reglist8_head(unsigned long regmask, int *commap,
20182 + struct disassemble_info *info)
20183 +{
20184 + int first = -1, last, i = 0;
20185 + int need_comma = 0;
20186 +
20187 + while (i < 12)
20188 + {
20189 + if (first == -1 && (regmask & 1))
20190 + {
20191 + first = i;
20192 + }
20193 + else if (first != -1 && !(regmask & 1))
20194 + {
20195 + last = i - 1;
20196 +
20197 + print_reglist_range(first, last, reg_table, need_comma, info);
20198 + need_comma = 1;
20199 + first = -1;
20200 + }
20201 +
20202 + if (i < 8)
20203 + i += 4;
20204 + else if (i < 10)
20205 + i += 2;
20206 + else
20207 + i++;
20208 + regmask >>= 1;
20209 + }
20210 +
20211 + *commap = need_comma;
20212 + return first;
20213 +}
20214 +
20215 +static void
20216 +print_reglist8_tail(unsigned long regmask, int first, int need_comma,
20217 + struct disassemble_info *info)
20218 +{
20219 + int last = 11;
20220 +
20221 + if (regmask & 0x20)
20222 + {
20223 + if (first == -1)
20224 + first = 12;
20225 + last = 12;
20226 + }
20227 +
20228 + if (first != -1)
20229 + {
20230 + print_reglist_range(first, last, reg_table, need_comma, info);
20231 + need_comma = 1;
20232 + first = -1;
20233 + }
20234 +
20235 + if (regmask & 0x40)
20236 + {
20237 + if (first == -1)
20238 + first = 14;
20239 + last = 14;
20240 + }
20241 +
20242 + if (regmask & 0x80)
20243 + {
20244 + if (first == -1)
20245 + first = 15;
20246 + last = 15;
20247 + }
20248 +
20249 + if (first != -1)
20250 + print_reglist_range(first, last, reg_table, need_comma, info);
20251 +}
20252 +
20253 +static int
20254 +print_reglist8(struct avr32_operand *op ATTRIBUTE_UNUSED,
20255 + struct disassemble_info *info,
20256 + struct avr32_field_value *ifields)
20257 +{
20258 + unsigned long regmask = ifields[0].value;
20259 + int first, need_comma;
20260 +
20261 + first = print_reglist8_head(regmask, &need_comma, info);
20262 + print_reglist8_tail(regmask, first, need_comma, info);
20263 +
20264 + return 1;
20265 +}
20266 +
20267 +static int
20268 +print_reglist9(struct avr32_operand *op ATTRIBUTE_UNUSED,
20269 + struct disassemble_info *info,
20270 + struct avr32_field_value *ifields)
20271 +{
20272 + unsigned long regmask = ifields[0].value >> 1;
20273 + int first, last, need_comma;
20274 +
20275 + first = print_reglist8_head(regmask, &need_comma, info);
20276 +
20277 + if ((ifields[0].value & 0x101) == 0x101)
20278 + {
20279 + if (first != -1)
20280 + {
20281 + last = 11;
20282 +
20283 + print_reglist_range(first, last, reg_table, need_comma, info);
20284 + need_comma = 1;
20285 + first = -1;
20286 + }
20287 +
20288 + print_reglist_range(15, 15, reg_table, need_comma, info);
20289 +
20290 + regmask >>= 5;
20291 +
20292 + if ((regmask & 3) == 0)
20293 + info->fprintf_func(info->stream, ",r12=0");
20294 + else if ((regmask & 3) == 1)
20295 + info->fprintf_func(info->stream, ",r12=1");
20296 + else
20297 + info->fprintf_func(info->stream, ",r12=-1");
20298 + }
20299 + else
20300 + print_reglist8_tail(regmask, first, need_comma, info);
20301 +
20302 + return 1;
20303 +}
20304 +
20305 +static int
20306 +print_reglist16(struct avr32_operand *op ATTRIBUTE_UNUSED,
20307 + struct disassemble_info *info,
20308 + struct avr32_field_value *ifields)
20309 +{
20310 + unsigned long regmask = ifields[0].value;
20311 + unsigned int i = 0, first, last;
20312 + int need_comma = 0;
20313 +
20314 + while (i < 16)
20315 + {
20316 + if (regmask & 1)
20317 + {
20318 + first = i;
20319 + while (i < 16)
20320 + {
20321 + i++;
20322 + regmask >>= 1;
20323 + if (!(regmask & 1))
20324 + break;
20325 + }
20326 + last = i - 1;
20327 + print_reglist_range(first, last, reg_table, need_comma, info);
20328 + need_comma = 1;
20329 + }
20330 + else
20331 + {
20332 + i++;
20333 + regmask >>= 1;
20334 + }
20335 + }
20336 +
20337 + return 1;
20338 +}
20339 +
20340 +static int
20341 +print_reglist_ldm(struct avr32_operand *op,
20342 + struct disassemble_info *info,
20343 + struct avr32_field_value *ifields)
20344 +{
20345 + int rp, w_bit;
20346 + int i, first, last;
20347 + unsigned long regmask;
20348 +
20349 + rp = ifields[0].value;
20350 + w_bit = ifields[1].value;
20351 + regmask = ifields[2].value;
20352 +
20353 + if (regmask & (1 << AVR32_REG_PC) && rp == AVR32_REG_PC)
20354 + {
20355 + if (w_bit)
20356 + info->fprintf_func(info->stream, "sp++");
20357 + else
20358 + info->fprintf_func(info->stream, "sp");
20359 +
20360 + for (i = 0; i < 12; )
20361 + {
20362 + if (regmask & (1 << i))
20363 + {
20364 + first = i;
20365 + while (i < 12)
20366 + {
20367 + i++;
20368 + if (!(regmask & (1 << i)))
20369 + break;
20370 + }
20371 + last = i - 1;
20372 + print_reglist_range(first, last, reg_table, 1, info);
20373 + }
20374 + else
20375 + i++;
20376 + }
20377 +
20378 + info->fprintf_func(info->stream, ",pc");
20379 + if (regmask & (1 << AVR32_REG_LR))
20380 + info->fprintf_func(info->stream, ",r12=-1");
20381 + else if (regmask & (1 << AVR32_REG_R12))
20382 + info->fprintf_func(info->stream, ",r12=1");
20383 + else
20384 + info->fprintf_func(info->stream, ",r12=0");
20385 + }
20386 + else
20387 + {
20388 + if (w_bit)
20389 + info->fprintf_func(info->stream, "%s++,", reg_table[rp].name);
20390 + else
20391 + info->fprintf_func(info->stream, "%s,", reg_table[rp].name);
20392 +
20393 + print_reglist16(op, info, ifields + 2);
20394 + }
20395 +
20396 + return 3;
20397 +}
20398 +
20399 +static int
20400 +print_reglist_cp8(struct avr32_operand *op ATTRIBUTE_UNUSED,
20401 + struct disassemble_info *info,
20402 + struct avr32_field_value *ifields)
20403 +{
20404 + unsigned long regmask = ifields[0].value;
20405 + unsigned int i = 0, first, last, offset = 0;
20406 + int need_comma = 0;
20407 +
20408 + if (ifields[1].value)
20409 + offset = 8;
20410 +
20411 + while (i < 8)
20412 + {
20413 + if (regmask & 1)
20414 + {
20415 + first = i;
20416 + while (i < 8)
20417 + {
20418 + i++;
20419 + regmask >>= 1;
20420 + if (!(regmask & 1))
20421 + break;
20422 + }
20423 + last = i - 1;
20424 + print_reglist_range(offset + first, offset + last,
20425 + cr_table, need_comma, info);
20426 + need_comma = 1;
20427 + }
20428 + else
20429 + {
20430 + i++;
20431 + regmask >>= 1;
20432 + }
20433 + }
20434 +
20435 + return 2;
20436 +}
20437 +
20438 +static int
20439 +print_reglist_cpd8(struct avr32_operand *op ATTRIBUTE_UNUSED,
20440 + struct disassemble_info *info,
20441 + struct avr32_field_value *ifields)
20442 +{
20443 + unsigned long regmask = ifields[0].value;
20444 + unsigned int i = 0, first, last;
20445 + int need_comma = 0;
20446 +
20447 + while (i < 8)
20448 + {
20449 + if (regmask & 1)
20450 + {
20451 + first = 2 * i;
20452 + while (i < 8)
20453 + {
20454 + i++;
20455 + regmask >>= 1;
20456 + if (!(regmask & 1))
20457 + break;
20458 + }
20459 + last = 2 * (i - 1) + 1;
20460 + print_reglist_range(first, last, cr_table, need_comma, info);
20461 + need_comma = 1;
20462 + }
20463 + else
20464 + {
20465 + i++;
20466 + regmask >>= 1;
20467 + }
20468 + }
20469 +
20470 + return 1;
20471 +}
20472 +
20473 +static int
20474 +print_retval(struct avr32_operand *op ATTRIBUTE_UNUSED,
20475 + struct disassemble_info *info,
20476 + struct avr32_field_value *ifields)
20477 +{
20478 + unsigned long regid = ifields[0].value;
20479 + const char *retval;
20480 +
20481 + if (regid < AVR32_REG_SP)
20482 + retval = reg_table[regid].name;
20483 + else if (regid == AVR32_REG_SP)
20484 + retval = "0";
20485 + else if (regid == AVR32_REG_LR)
20486 + retval = "-1";
20487 + else
20488 + retval = "1";
20489 +
20490 + info->fprintf_func(info->stream, "%s", retval);
20491 +
20492 + return 1;
20493 +}
20494 +
20495 +static int
20496 +print_mcall(struct avr32_operand *op,
20497 + struct disassemble_info *info,
20498 + struct avr32_field_value *ifields)
20499 +{
20500 + unsigned long regid = ifields[0].value;
20501 +
20502 + if (regid == AVR32_REG_PC)
20503 + print_jmplabel(op, info, ifields + 1);
20504 + else
20505 + print_intreg_sdisp(op, info, ifields);
20506 +
20507 + return 2;
20508 +}
20509 +
20510 +static int
20511 +print_jospinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
20512 + struct disassemble_info *info,
20513 + struct avr32_field_value *ifields)
20514 +{
20515 + signed long value = ifields[0].value;
20516 +
20517 + if (value >= 4)
20518 + value -= 8;
20519 + else
20520 + value += 1;
20521 +
20522 + info->fprintf_func(info->stream, "%ld", value);
20523 +
20524 + return 1;
20525 +}
20526 +
20527 +static int
20528 +print_coh(struct avr32_operand *op ATTRIBUTE_UNUSED,
20529 + struct disassemble_info *info,
20530 + struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
20531 +{
20532 + info->fprintf_func(info->stream, "COH");
20533 + return 0;
20534 +}
20535 +
20536 +#define OP(name, sgn, pcrel, align, func) \
20537 + { AVR32_OPERAND_##name, pcrel, align, print_##func }
20538 +
20539 +struct avr32_operand operand[AVR32_NR_OPERANDS] =
20540 + {
20541 + OP(INTREG, 0, 0, 0, intreg),
20542 + OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
20543 + OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
20544 + OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
20545 + OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
20546 + OP(INTREG_BSEL, 0, 0, 0, intreg_bpart),
20547 + OP(INTREG_HSEL, 0, 0, 1, intreg_hpart),
20548 + OP(INTREG_SDISP, 1, 0, 0, intreg_sdisp),
20549 + OP(INTREG_SDISP_H, 1, 0, 1, intreg_sdisp),
20550 + OP(INTREG_SDISP_W, 1, 0, 2, intreg_sdisp),
20551 + OP(INTREG_UDISP, 0, 0, 0, intreg_udisp),
20552 + OP(INTREG_UDISP_H, 0, 0, 1, intreg_udisp),
20553 + OP(INTREG_UDISP_W, 0, 0, 2, intreg_udisp),
20554 + OP(INTREG_INDEX, 0, 0, 0, intreg_index),
20555 + OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
20556 + OP(DWREG, 0, 0, 1, intreg),
20557 + OP(PC_UDISP_W, 0, 1, 2, pc_disp),
20558 + OP(SP, 0, 0, 0, sp),
20559 + OP(SP_UDISP_W, 0, 0, 2, sp_disp),
20560 + OP(CPNO, 0, 0, 0, cpno),
20561 + OP(CPREG, 0, 0, 0, cpreg),
20562 + OP(CPREG_D, 0, 0, 1, cpreg),
20563 + OP(UNSIGNED_CONST, 0, 0, 0, uconst),
20564 + OP(UNSIGNED_CONST_W, 0, 0, 2, uconst),
20565 + OP(SIGNED_CONST, 1, 0, 0, sconst),
20566 + OP(SIGNED_CONST_W, 1, 0, 2, sconst),
20567 + OP(JMPLABEL, 1, 1, 1, jmplabel),
20568 + OP(UNSIGNED_NUMBER, 0, 0, 0, uconst),
20569 + OP(UNSIGNED_NUMBER_W, 0, 0, 2, uconst),
20570 + OP(REGLIST8, 0, 0, 0, reglist8),
20571 + OP(REGLIST9, 0, 0, 0, reglist9),
20572 + OP(REGLIST16, 0, 0, 0, reglist16),
20573 + OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
20574 + OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
20575 + OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
20576 + OP(RETVAL, 0, 0, 0, retval),
20577 + OP(MCALL, 1, 0, 2, mcall),
20578 + OP(JOSPINC, 0, 0, 0, jospinc),
20579 + OP(COH, 0, 0, 0, coh),
20580 + };
20581 +
20582 +static void
20583 +print_opcode(bfd_vma insn_word, const struct avr32_opcode *opc,
20584 + bfd_vma pc, struct disassemble_info *info)
20585 +{
20586 + const struct avr32_syntax *syntax = opc->syntax;
20587 + struct avr32_field_value fields[AVR32_MAX_FIELDS];
20588 + unsigned int i, next_field = 0, nr_operands;
20589 +
20590 + for (i = 0; i < opc->nr_fields; i++)
20591 + {
20592 + opc->fields[i]->extract(opc->fields[i], &insn_word, &fields[i].value);
20593 + fields[i].ifield = opc->fields[i];
20594 + }
20595 +
20596 + current_pc = pc;
20597 + info->fprintf_func(info->stream, "%s", syntax->mnemonic->name);
20598 +
20599 + if (syntax->nr_operands < 0)
20600 + nr_operands = (unsigned int) -syntax->nr_operands;
20601 + else
20602 + nr_operands = (unsigned int) syntax->nr_operands;
20603 +
20604 + for (i = 0; i < nr_operands; i++)
20605 + {
20606 + struct avr32_operand *op = &operand[syntax->operand[i]];
20607 +
20608 + if (i)
20609 + info->fprintf_func(info->stream, ",");
20610 + else
20611 + info->fprintf_func(info->stream, "\t");
20612 + next_field += op->print(op, info, &fields[next_field]);
20613 + }
20614 +}
20615 +
20616 +static const struct avr32_opcode *
20617 +find_opcode(bfd_vma insn_word)
20618 +{
20619 + int i;
20620 +
20621 + for (i = 0; i < AVR32_NR_OPCODES; i++)
20622 + {
20623 + const struct avr32_opcode *opc = &avr32_opc_table[i];
20624 +
20625 + if ((insn_word & opc->mask) == opc->value)
20626 + return opc;
20627 + }
20628 +
20629 + return NULL;
20630 +}
20631 +
20632 +static int
20633 +read_insn_word(bfd_vma pc, bfd_vma *valuep,
20634 + struct disassemble_info *info)
20635 +{
20636 + bfd_byte b[4];
20637 + int status;
20638 +
20639 + status = info->read_memory_func(pc, b, 4, info);
20640 + if (status)
20641 + {
20642 + status = info->read_memory_func(pc, b, 2, info);
20643 + if (status)
20644 + {
20645 + info->memory_error_func(status, pc, info);
20646 + return -1;
20647 + }
20648 + b[3] = b[2] = 0;
20649 + }
20650 +
20651 + *valuep = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
20652 + return 0;
20653 +}
20654 +
20655 +/* Parse an individual disassembler option. */
20656 +
20657 +void
20658 +parse_avr32_disassembler_option (option)
20659 + char * option;
20660 +{
20661 + if (option == NULL)
20662 + return;
20663 +
20664 + /* XXX - should break 'option' at following delimiter. */
20665 + fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option);
20666 +
20667 + return;
20668 +}
20669 +
20670 +/* Parse the string of disassembler options, spliting it at whitespaces
20671 + or commas. (Whitespace separators supported for backwards compatibility). */
20672 +
20673 +static void
20674 +parse_disassembler_options (char *options)
20675 +{
20676 + if (options == NULL)
20677 + return;
20678 +
20679 + while (*options)
20680 + {
20681 + parse_avr32_disassembler_option (options);
20682 +
20683 + /* Skip forward to next seperator. */
20684 + while ((*options) && (! ISSPACE (*options)) && (*options != ','))
20685 + ++ options;
20686 + /* Skip forward past seperators. */
20687 + while (ISSPACE (*options) || (*options == ','))
20688 + ++ options;
20689 + }
20690 +}
20691 +
20692 +int
20693 +print_insn_avr32(bfd_vma pc, struct disassemble_info *info)
20694 +{
20695 + bfd_vma insn_word;
20696 + const struct avr32_opcode *opc;
20697 +
20698 + if (info->disassembler_options)
20699 + {
20700 + parse_disassembler_options (info->disassembler_options);
20701 +
20702 + /* To avoid repeated parsing of these options, we remove them here. */
20703 + info->disassembler_options = NULL;
20704 + }
20705 +
20706 + info->bytes_per_chunk = 1;
20707 + info->display_endian = BFD_ENDIAN_BIG;
20708 +
20709 + if (read_insn_word(pc, &insn_word, info))
20710 + return -1;
20711 +
20712 + opc = find_opcode(insn_word);
20713 + if (opc)
20714 + {
20715 + print_opcode(insn_word, opc, pc, info);
20716 + return opc->size;
20717 + }
20718 + else
20719 + {
20720 + info->fprintf_func(info->stream, _("*unknown*"));
20721 + return 2;
20722 + }
20723 +
20724 +}
20725 +
20726 +void
20727 +print_avr32_disassembler_options (FILE *stream ATTRIBUTE_UNUSED)
20728 +{
20729 +
20730 +}
20731 --- /dev/null
20732 +++ b/opcodes/avr32-opc.c
20733 @@ -0,0 +1,6932 @@
20734 +/* Opcode tables for AVR32.
20735 + Copyright 2005, 2006 Atmel Corporation.
20736 +
20737 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
20738 +
20739 + This file is part of libopcodes.
20740 +
20741 + This program is free software; you can redistribute it and/or
20742 + modify it under the terms of the GNU General Public License as
20743 + published by the Free Software Foundation; either version 2 of the
20744 + License, or (at your option) any later version.
20745 +
20746 + This program is distributed in the hope that it will be useful, but
20747 + WITHOUT ANY WARRANTY; without even the implied warranty of
20748 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20749 + General Public License for more details.
20750 +
20751 + You should have received a copy of the GNU General Public License
20752 + along with this program; if not, write to the Free Software
20753 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20754 + 02111-1307, USA. */
20755 +
20756 +#include <stdlib.h>
20757 +#include <assert.h>
20758 +
20759 +#include "avr32-opc.h"
20760 +
20761 +#define PICO_CPNO 1
20762 +
20763 +void
20764 +avr32_insert_simple(const struct avr32_ifield *field,
20765 + void *buf, unsigned long value)
20766 +{
20767 + bfd_vma word;
20768 +
20769 + word = bfd_getb32(buf);
20770 + word &= ~field->mask;
20771 + word |= (value << field->shift) & field->mask;
20772 + bfd_putb32(word, buf);
20773 +}
20774 +
20775 +void
20776 +avr32_insert_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
20777 + void *buf, unsigned long value)
20778 +{
20779 + char *opcode = buf;
20780 +
20781 + opcode[0] = (opcode[0] & 0xe1) | (value & 0x1e);
20782 + opcode[1] = (opcode[1] & 0xef) | ((value & 1) << 4);
20783 +}
20784 +
20785 +void
20786 +avr32_insert_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
20787 + void *buf, unsigned long value)
20788 +{
20789 + char *opcode = buf;
20790 +
20791 + opcode[0] = (opcode[0] & 0xf0) | ((value & 0xf0) >> 4);
20792 + opcode[1] = ((opcode[1] & 0x0c) | ((value & 0x0f) << 4)
20793 + | ((value & 0x300) >> 8));
20794 +}
20795 +
20796 +
20797 +void
20798 +avr32_insert_k21(const struct avr32_ifield *field,
20799 + void *buf, unsigned long value)
20800 +{
20801 + bfd_vma word;
20802 + bfd_vma k21;
20803 +
20804 + word = bfd_getb32(buf);
20805 + word &= ~field->mask;
20806 + k21 = ((value & 0xffff) | ((value & 0x10000) << 4)
20807 + | ((value & 0x1e0000) << 8));
20808 + assert(!(k21 & ~field->mask));
20809 + word |= k21;
20810 + bfd_putb32(word, buf);
20811 +}
20812 +
20813 +void
20814 +avr32_insert_cpop(const struct avr32_ifield *field,
20815 + void *buf, unsigned long value)
20816 +{
20817 + bfd_vma word;
20818 +
20819 + word = bfd_getb32(buf);
20820 + word &= ~field->mask;
20821 + word |= (((value & 0x1e) << 15) | ((value & 0x60) << 20)
20822 + | ((value & 0x01) << 12));
20823 + bfd_putb32(word, buf);
20824 +}
20825 +
20826 +void
20827 +avr32_insert_k12cp(const struct avr32_ifield *field,
20828 + void *buf, unsigned long value)
20829 +{
20830 + bfd_vma word;
20831 +
20832 + word = bfd_getb32(buf);
20833 + word &= ~field->mask;
20834 + word |= ((value & 0xf00) << 4) | (value & 0xff);
20835 + bfd_putb32(word, buf);
20836 +}
20837 +
20838 +void avr32_extract_simple(const struct avr32_ifield *field,
20839 + void *buf, unsigned long *value)
20840 +{
20841 + /* XXX: The disassembler has done any necessary byteswapping already */
20842 + bfd_vma word = *(bfd_vma *)buf;
20843 +
20844 + *value = (word & field->mask) >> field->shift;
20845 +}
20846 +
20847 +void avr32_extract_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
20848 + void *buf, unsigned long *value)
20849 +{
20850 + bfd_vma word = *(bfd_vma *)buf;
20851 +
20852 + *value = ((word >> 20) & 1) | ((word >> 24) & 0x1e);
20853 +}
20854 +
20855 +void avr32_extract_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
20856 + void *buf, unsigned long *value)
20857 +{
20858 + bfd_vma word = *(bfd_vma *)buf;
20859 +
20860 + *value = ((word >> 8) & 0x300) | ((word >> 20) & 0xff);
20861 +}
20862 +
20863 +void avr32_extract_k21(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
20864 + void *buf, unsigned long *value)
20865 +{
20866 + bfd_vma word = *(bfd_vma *)buf;
20867 +
20868 + *value = ((word & 0xffff) | ((word >> 4) & 0x10000)
20869 + | ((word >> 8) & 0x1e0000));
20870 +}
20871 +
20872 +void avr32_extract_cpop(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
20873 + void *buf, unsigned long *value)
20874 +{
20875 + bfd_vma word = *(bfd_vma *)buf;
20876 +
20877 + *value = (((word >> 12) & 1) | ((word >> 15) & 0x1e)
20878 + | ((word >> 20) & 0x60));
20879 +}
20880 +
20881 +void avr32_extract_k12cp(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
20882 + void *buf, unsigned long *value)
20883 +{
20884 + bfd_vma word = *(bfd_vma *)buf;
20885 +
20886 + *value = ((word >> 4) & 0xf00) | (word & 0xff);
20887 +}
20888 +
20889 +
20890 +#define IFLD(id, bitsz, shift, mask, func) \
20891 + { AVR32_IFIELD_##id, bitsz, shift, mask, \
20892 + avr32_insert_##func, avr32_extract_##func }
20893 +
20894 +const struct avr32_ifield avr32_ifield_table[] =
20895 + {
20896 + IFLD(RX, 4, 25, 0x1e000000, simple),
20897 + IFLD(RY, 4, 16, 0x000f0000, simple),
20898 + IFLD(COND4C, 4, 20, 0x00f00000, simple),
20899 + IFLD(K8C, 8, 20, 0x0ff00000, simple),
20900 + IFLD(K7C, 7, 20, 0x07f00000, simple),
20901 + IFLD(K5C, 5, 20, 0x01f00000, simple),
20902 + IFLD(K3, 3, 20, 0x00700000, simple),
20903 + IFLD(RY_DW, 3, 17, 0x000e0000, simple),
20904 + IFLD(COND4E, 4, 8, 0x00000f00, simple),
20905 + IFLD(K8E, 8, 0, 0x000000ff, simple),
20906 + IFLD(BIT5C, 5, 20, 0x1e100000, bit5c),
20907 + IFLD(COND3, 3, 16, 0x00070000, simple),
20908 + IFLD(K10, 10, 16, 0x0ff30000, k10),
20909 + IFLD(POPM, 9, 19, 0x0ff80000, simple),
20910 + IFLD(K2, 2, 4, 0x00000030, simple),
20911 + IFLD(RD_E, 4, 0, 0x0000000f, simple),
20912 + IFLD(RD_DW, 3, 1, 0x0000000e, simple),
20913 + IFLD(X, 1, 5, 0x00000020, simple),
20914 + IFLD(Y, 1, 4, 0x00000010, simple),
20915 + IFLD(X2, 1, 13, 0x00002000, simple),
20916 + IFLD(Y2, 1, 12, 0x00001000, simple),
20917 + IFLD(K5E, 5, 0, 0x0000001f, simple),
20918 + IFLD(PART2, 2, 0, 0x00000003, simple),
20919 + IFLD(PART1, 1, 0, 0x00000001, simple),
20920 + IFLD(K16, 16, 0, 0x0000ffff, simple),
20921 + IFLD(CACHEOP, 5, 11, 0x0000f800, simple),
20922 + IFLD(K11, 11, 0, 0x000007ff, simple),
20923 + IFLD(K21, 21, 0, 0x1e10ffff, k21),
20924 + IFLD(CPOP, 7, 12, 0x060f1000, cpop),
20925 + IFLD(CPNO, 3, 13, 0x0000e000, simple),
20926 + IFLD(CRD_RI, 4, 8, 0x00000f00, simple),
20927 + IFLD(CRX, 4, 4, 0x000000f0, simple),
20928 + IFLD(CRY, 4, 0, 0x0000000f, simple),
20929 + IFLD(K7E, 7, 0, 0x0000007f, simple),
20930 + IFLD(CRD_DW, 3, 9, 0x00000e00, simple),
20931 + IFLD(PART1_K12, 1, 12, 0x00001000, simple),
20932 + IFLD(PART2_K12, 2, 12, 0x00003000, simple),
20933 + IFLD(K12, 12, 0, 0x00000fff, simple),
20934 + IFLD(S5, 5, 5, 0x000003e0, simple),
20935 + IFLD(K5E2, 5, 4, 0x000001f0, simple),
20936 + IFLD(K4, 4, 20, 0x00f00000, simple),
20937 + IFLD(COND4E2, 4, 4, 0x000000f0, simple),
20938 + IFLD(K8E2, 8, 4, 0x00000ff0, simple),
20939 + IFLD(K6, 6, 20, 0x03f00000, simple),
20940 + IFLD(MEM15, 15, 0, 0x00007fff, simple),
20941 + IFLD(MEMB5, 5, 15, 0x000f8000, simple),
20942 + IFLD(W, 1, 25, 0x02000000, simple),
20943 + /* Coprocessor Multiple High/Low */
20944 + IFLD(CM_HL, 1, 8, 0x00000100, simple),
20945 + IFLD(K12CP, 12 ,0, 0x0000f0ff, k12cp),
20946 + IFLD(K9E, 9 ,0, 0x000001ff, simple),
20947 + };
20948 +#undef IFLD
20949 +
20950 +
20951 +struct avr32_opcode avr32_opc_table[] =
20952 + {
20953 + {
20954 + AVR32_OPC_ABS, 2, 0x5c400000, 0xfff00000,
20955 + &avr32_syntax_table[AVR32_SYNTAX_ABS],
20956 + BFD_RELOC_UNUSED, 1, -1,
20957 + {
20958 + &avr32_ifield_table[AVR32_IFIELD_RY],
20959 + }
20960 + },
20961 + {
20962 + AVR32_OPC_ACALL, 2, 0xd0000000, 0xf00f0000,
20963 + &avr32_syntax_table[AVR32_SYNTAX_ACALL],
20964 + BFD_RELOC_UNUSED, 1, -1,
20965 + {
20966 + &avr32_ifield_table[AVR32_IFIELD_K8C],
20967 + },
20968 + },
20969 + {
20970 + AVR32_OPC_ACR, 2, 0x5c000000, 0xfff00000,
20971 + &avr32_syntax_table[AVR32_SYNTAX_ACR],
20972 + BFD_RELOC_UNUSED, 1, -1,
20973 + {
20974 + &avr32_ifield_table[AVR32_IFIELD_RY],
20975 + },
20976 + },
20977 + {
20978 + AVR32_OPC_ADC, 4, 0xe0000040, 0xe1f0fff0,
20979 + &avr32_syntax_table[AVR32_SYNTAX_ADC],
20980 + BFD_RELOC_UNUSED, 3, -1,
20981 + {
20982 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
20983 + &avr32_ifield_table[AVR32_IFIELD_RX],
20984 + &avr32_ifield_table[AVR32_IFIELD_RY],
20985 + },
20986 + },
20987 + {
20988 + AVR32_OPC_ADD1, 2, 0x00000000, 0xe1f00000,
20989 + &avr32_syntax_table[AVR32_SYNTAX_ADD1],
20990 + BFD_RELOC_UNUSED, 2, -1,
20991 + {
20992 + &avr32_ifield_table[AVR32_IFIELD_RY],
20993 + &avr32_ifield_table[AVR32_IFIELD_RX],
20994 + },
20995 + },
20996 + {
20997 + AVR32_OPC_ADD2, 4, 0xe0000000, 0xe1f0ffc0,
20998 + &avr32_syntax_table[AVR32_SYNTAX_ADD2],
20999 + BFD_RELOC_UNUSED, 4, -1,
21000 + {
21001 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21002 + &avr32_ifield_table[AVR32_IFIELD_RX],
21003 + &avr32_ifield_table[AVR32_IFIELD_RY],
21004 + &avr32_ifield_table[AVR32_IFIELD_K2],
21005 + },
21006 + },
21007 + {
21008 + AVR32_OPC_ADDABS, 4, 0xe0000e40, 0xe1f0fff0,
21009 + &avr32_syntax_table[AVR32_SYNTAX_ADDABS],
21010 + BFD_RELOC_UNUSED, 3, -1,
21011 + {
21012 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21013 + &avr32_ifield_table[AVR32_IFIELD_RX],
21014 + &avr32_ifield_table[AVR32_IFIELD_RY],
21015 + },
21016 + },
21017 + {
21018 + AVR32_OPC_ADDHH_W, 4, 0xe0000e00, 0xe1f0ffc0,
21019 + &avr32_syntax_table[AVR32_SYNTAX_ADDHH_W],
21020 + BFD_RELOC_UNUSED, 5, -1,
21021 + {
21022 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21023 + &avr32_ifield_table[AVR32_IFIELD_RX],
21024 + &avr32_ifield_table[AVR32_IFIELD_X],
21025 + &avr32_ifield_table[AVR32_IFIELD_RY],
21026 + &avr32_ifield_table[AVR32_IFIELD_Y],
21027 + },
21028 + },
21029 + {
21030 + AVR32_OPC_AND1, 2, 0x00600000, 0xe1f00000,
21031 + &avr32_syntax_table[AVR32_SYNTAX_AND1],
21032 + BFD_RELOC_UNUSED, 2, -1,
21033 + {
21034 + &avr32_ifield_table[AVR32_IFIELD_RY],
21035 + &avr32_ifield_table[AVR32_IFIELD_RX],
21036 + },
21037 + },
21038 + {
21039 + AVR32_OPC_AND2, 4, 0xe1e00000, 0xe1f0fe00,
21040 + &avr32_syntax_table[AVR32_SYNTAX_AND2],
21041 + BFD_RELOC_UNUSED, 4, -1,
21042 + {
21043 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21044 + &avr32_ifield_table[AVR32_IFIELD_RX],
21045 + &avr32_ifield_table[AVR32_IFIELD_RY],
21046 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
21047 + },
21048 + },
21049 + {
21050 + AVR32_OPC_AND3, 4, 0xe1e00200, 0xe1f0fe00,
21051 + &avr32_syntax_table[AVR32_SYNTAX_AND3],
21052 + BFD_RELOC_UNUSED, 4, -1,
21053 + {
21054 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21055 + &avr32_ifield_table[AVR32_IFIELD_RX],
21056 + &avr32_ifield_table[AVR32_IFIELD_RY],
21057 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
21058 + },
21059 + },
21060 + {
21061 + AVR32_OPC_ANDH, 4, 0xe4100000, 0xfff00000,
21062 + &avr32_syntax_table[AVR32_SYNTAX_ANDH],
21063 + BFD_RELOC_AVR32_16U, 2, 1,
21064 + {
21065 + &avr32_ifield_table[AVR32_IFIELD_RY],
21066 + &avr32_ifield_table[AVR32_IFIELD_K16],
21067 + },
21068 + },
21069 + {
21070 + AVR32_OPC_ANDH_COH, 4, 0xe6100000, 0xfff00000,
21071 + &avr32_syntax_table[AVR32_SYNTAX_ANDH_COH],
21072 + BFD_RELOC_AVR32_16U, 2, 1,
21073 + {
21074 + &avr32_ifield_table[AVR32_IFIELD_RY],
21075 + &avr32_ifield_table[AVR32_IFIELD_K16],
21076 + },
21077 + },
21078 + {
21079 + AVR32_OPC_ANDL, 4, 0xe0100000, 0xfff00000,
21080 + &avr32_syntax_table[AVR32_SYNTAX_ANDL],
21081 + BFD_RELOC_AVR32_16U, 2, 1,
21082 + {
21083 + &avr32_ifield_table[AVR32_IFIELD_RY],
21084 + &avr32_ifield_table[AVR32_IFIELD_K16],
21085 + },
21086 + },
21087 + {
21088 + AVR32_OPC_ANDL_COH, 4, 0xe2100000, 0xfff00000,
21089 + &avr32_syntax_table[AVR32_SYNTAX_ANDL_COH],
21090 + BFD_RELOC_AVR32_16U, 2, 1,
21091 + {
21092 + &avr32_ifield_table[AVR32_IFIELD_RY],
21093 + &avr32_ifield_table[AVR32_IFIELD_K16],
21094 + },
21095 + },
21096 + {
21097 + AVR32_OPC_ANDN, 2, 0x00800000, 0xe1f00000,
21098 + &avr32_syntax_table[AVR32_SYNTAX_ANDN],
21099 + BFD_RELOC_UNUSED, 2, -1,
21100 + {
21101 + &avr32_ifield_table[AVR32_IFIELD_RY],
21102 + &avr32_ifield_table[AVR32_IFIELD_RX],
21103 + },
21104 + },
21105 + {
21106 + AVR32_OPC_ASR1, 4, 0xe0000840, 0xe1f0fff0,
21107 + &avr32_syntax_table[AVR32_SYNTAX_ASR1],
21108 + BFD_RELOC_UNUSED, 3, -1,
21109 + {
21110 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21111 + &avr32_ifield_table[AVR32_IFIELD_RX],
21112 + &avr32_ifield_table[AVR32_IFIELD_RY],
21113 + },
21114 + },
21115 + {
21116 + AVR32_OPC_ASR3, 4, 0xe0001400, 0xe1f0ffe0,
21117 + &avr32_syntax_table[AVR32_SYNTAX_ASR3],
21118 + BFD_RELOC_UNUSED, 3, -1,
21119 + {
21120 + &avr32_ifield_table[AVR32_IFIELD_RY],
21121 + &avr32_ifield_table[AVR32_IFIELD_RX],
21122 + &avr32_ifield_table[AVR32_IFIELD_K5E],
21123 + },
21124 + },
21125 + {
21126 + AVR32_OPC_ASR2, 2, 0xa1400000, 0xe1e00000,
21127 + &avr32_syntax_table[AVR32_SYNTAX_ASR2],
21128 + BFD_RELOC_UNUSED, 2, -1,
21129 + {
21130 + &avr32_ifield_table[AVR32_IFIELD_RY],
21131 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
21132 + },
21133 + },
21134 + {
21135 + AVR32_OPC_BLD, 4, 0xedb00000, 0xfff0ffe0,
21136 + &avr32_syntax_table[AVR32_SYNTAX_BLD],
21137 + BFD_RELOC_UNUSED, 2, -1,
21138 + {
21139 + &avr32_ifield_table[AVR32_IFIELD_RY],
21140 + &avr32_ifield_table[AVR32_IFIELD_K5E],
21141 + },
21142 + },
21143 + {
21144 + AVR32_OPC_BREQ1, 2, 0xc0000000, 0xf00f0000,
21145 + &avr32_syntax_table[AVR32_SYNTAX_BREQ1],
21146 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21147 + {
21148 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21149 + },
21150 + },
21151 + {
21152 + AVR32_OPC_BRNE1, 2, 0xc0010000, 0xf00f0000,
21153 + &avr32_syntax_table[AVR32_SYNTAX_BRNE1],
21154 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21155 + {
21156 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21157 + },
21158 + },
21159 + {
21160 + AVR32_OPC_BRCC1, 2, 0xc0020000, 0xf00f0000,
21161 + &avr32_syntax_table[AVR32_SYNTAX_BRCC1],
21162 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21163 + {
21164 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21165 + },
21166 + },
21167 + {
21168 + AVR32_OPC_BRCS1, 2, 0xc0030000, 0xf00f0000,
21169 + &avr32_syntax_table[AVR32_SYNTAX_BRCS1],
21170 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21171 + {
21172 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21173 + },
21174 + },
21175 + {
21176 + AVR32_OPC_BRGE1, 2, 0xc0040000, 0xf00f0000,
21177 + &avr32_syntax_table[AVR32_SYNTAX_BRGE1],
21178 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21179 + {
21180 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21181 + },
21182 + },
21183 + {
21184 + AVR32_OPC_BRLT1, 2, 0xc0050000, 0xf00f0000,
21185 + &avr32_syntax_table[AVR32_SYNTAX_BRLT1],
21186 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21187 + {
21188 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21189 + },
21190 + },
21191 + {
21192 + AVR32_OPC_BRMI1, 2, 0xc0060000, 0xf00f0000,
21193 + &avr32_syntax_table[AVR32_SYNTAX_BRMI1],
21194 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21195 + {
21196 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21197 + },
21198 + },
21199 + {
21200 + AVR32_OPC_BRPL1, 2, 0xc0070000, 0xf00f0000,
21201 + &avr32_syntax_table[AVR32_SYNTAX_BRPL1],
21202 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21203 + {
21204 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21205 + },
21206 + },
21207 + {
21208 + AVR32_OPC_BREQ2, 4, 0xe0800000, 0xe1ef0000,
21209 + &avr32_syntax_table[AVR32_SYNTAX_BREQ2],
21210 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21211 + {
21212 + &avr32_ifield_table[AVR32_IFIELD_K21],
21213 + },
21214 + },
21215 + {
21216 + AVR32_OPC_BRNE2, 4, 0xe0810000, 0xe1ef0000,
21217 + &avr32_syntax_table[AVR32_SYNTAX_BRNE2],
21218 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21219 + {
21220 + &avr32_ifield_table[AVR32_IFIELD_K21],
21221 + },
21222 + },
21223 + {
21224 + AVR32_OPC_BRCC2, 4, 0xe0820000, 0xe1ef0000,
21225 + &avr32_syntax_table[AVR32_SYNTAX_BRHS2],
21226 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21227 + {
21228 + &avr32_ifield_table[AVR32_IFIELD_K21],
21229 + },
21230 + },
21231 + {
21232 + AVR32_OPC_BRCS2, 4, 0xe0830000, 0xe1ef0000,
21233 + &avr32_syntax_table[AVR32_SYNTAX_BRLO2],
21234 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21235 + {
21236 + &avr32_ifield_table[AVR32_IFIELD_K21],
21237 + },
21238 + },
21239 + {
21240 + AVR32_OPC_BRGE2, 4, 0xe0840000, 0xe1ef0000,
21241 + &avr32_syntax_table[AVR32_SYNTAX_BRGE2],
21242 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21243 + {
21244 + &avr32_ifield_table[AVR32_IFIELD_K21],
21245 + },
21246 + },
21247 + {
21248 + AVR32_OPC_BRLT2, 4, 0xe0850000, 0xe1ef0000,
21249 + &avr32_syntax_table[AVR32_SYNTAX_BRLT2],
21250 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21251 + {
21252 + &avr32_ifield_table[AVR32_IFIELD_K21],
21253 + },
21254 + },
21255 + {
21256 + AVR32_OPC_BRMI2, 4, 0xe0860000, 0xe1ef0000,
21257 + &avr32_syntax_table[AVR32_SYNTAX_BRMI2],
21258 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21259 + {
21260 + &avr32_ifield_table[AVR32_IFIELD_K21],
21261 + },
21262 + },
21263 + {
21264 + AVR32_OPC_BRPL2, 4, 0xe0870000, 0xe1ef0000,
21265 + &avr32_syntax_table[AVR32_SYNTAX_BRPL2],
21266 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21267 + {
21268 + &avr32_ifield_table[AVR32_IFIELD_K21],
21269 + },
21270 + },
21271 + {
21272 + AVR32_OPC_BRLS, 4, 0xe0880000, 0xe1ef0000,
21273 + &avr32_syntax_table[AVR32_SYNTAX_BRLS],
21274 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21275 + {
21276 + &avr32_ifield_table[AVR32_IFIELD_K21],
21277 + },
21278 + },
21279 + {
21280 + AVR32_OPC_BRGT, 4, 0xe0890000, 0xe1ef0000,
21281 + &avr32_syntax_table[AVR32_SYNTAX_BRGT],
21282 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21283 + {
21284 + &avr32_ifield_table[AVR32_IFIELD_K21],
21285 + },
21286 + },
21287 + {
21288 + AVR32_OPC_BRLE, 4, 0xe08a0000, 0xe1ef0000,
21289 + &avr32_syntax_table[AVR32_SYNTAX_BRLE],
21290 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21291 + {
21292 + &avr32_ifield_table[AVR32_IFIELD_K21],
21293 + },
21294 + },
21295 + {
21296 + AVR32_OPC_BRHI, 4, 0xe08b0000, 0xe1ef0000,
21297 + &avr32_syntax_table[AVR32_SYNTAX_BRHI],
21298 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21299 + {
21300 + &avr32_ifield_table[AVR32_IFIELD_K21],
21301 + },
21302 + },
21303 + {
21304 + AVR32_OPC_BRVS, 4, 0xe08c0000, 0xe1ef0000,
21305 + &avr32_syntax_table[AVR32_SYNTAX_BRVS],
21306 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21307 + {
21308 + &avr32_ifield_table[AVR32_IFIELD_K21],
21309 + },
21310 + },
21311 + {
21312 + AVR32_OPC_BRVC, 4, 0xe08d0000, 0xe1ef0000,
21313 + &avr32_syntax_table[AVR32_SYNTAX_BRVC],
21314 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21315 + {
21316 + &avr32_ifield_table[AVR32_IFIELD_K21],
21317 + },
21318 + },
21319 + {
21320 + AVR32_OPC_BRQS, 4, 0xe08e0000, 0xe1ef0000,
21321 + &avr32_syntax_table[AVR32_SYNTAX_BRQS],
21322 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21323 + {
21324 + &avr32_ifield_table[AVR32_IFIELD_K21],
21325 + },
21326 + },
21327 + {
21328 + AVR32_OPC_BRAL, 4, 0xe08f0000, 0xe1ef0000,
21329 + &avr32_syntax_table[AVR32_SYNTAX_BRAL],
21330 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21331 + {
21332 + &avr32_ifield_table[AVR32_IFIELD_K21],
21333 + },
21334 + },
21335 + {
21336 + AVR32_OPC_BREAKPOINT, 2, 0xd6730000, 0xffff0000,
21337 + &avr32_syntax_table[AVR32_SYNTAX_BREAKPOINT],
21338 + BFD_RELOC_UNUSED, 0, -1, { NULL },
21339 + },
21340 + {
21341 + AVR32_OPC_BREV, 2, 0x5c900000, 0xfff00000,
21342 + &avr32_syntax_table[AVR32_SYNTAX_BREV],
21343 + BFD_RELOC_UNUSED, 1, -1,
21344 + {
21345 + &avr32_ifield_table[AVR32_IFIELD_RY],
21346 + },
21347 + },
21348 + {
21349 + AVR32_OPC_BST, 4, 0xefb00000, 0xfff0ffe0,
21350 + &avr32_syntax_table[AVR32_SYNTAX_BST],
21351 + BFD_RELOC_UNUSED, 2, -1,
21352 + {
21353 + &avr32_ifield_table[AVR32_IFIELD_RY],
21354 + &avr32_ifield_table[AVR32_IFIELD_K5E],
21355 + },
21356 + },
21357 + {
21358 + AVR32_OPC_CACHE, 4, 0xf4100000, 0xfff00000,
21359 + &avr32_syntax_table[AVR32_SYNTAX_CACHE],
21360 + BFD_RELOC_UNUSED, 3, -1,
21361 + {
21362 + &avr32_ifield_table[AVR32_IFIELD_RY],
21363 + &avr32_ifield_table[AVR32_IFIELD_K11],
21364 + &avr32_ifield_table[AVR32_IFIELD_CACHEOP],
21365 + },
21366 + },
21367 + {
21368 + AVR32_OPC_CASTS_B, 2, 0x5c600000, 0xfff00000,
21369 + &avr32_syntax_table[AVR32_SYNTAX_CASTS_B],
21370 + BFD_RELOC_UNUSED, 1, -1,
21371 + {
21372 + &avr32_ifield_table[AVR32_IFIELD_RY],
21373 + },
21374 + },
21375 + {
21376 + AVR32_OPC_CASTS_H, 2, 0x5c800000, 0xfff00000,
21377 + &avr32_syntax_table[AVR32_SYNTAX_CASTS_H],
21378 + BFD_RELOC_UNUSED, 1, -1,
21379 + {
21380 + &avr32_ifield_table[AVR32_IFIELD_RY],
21381 + },
21382 + },
21383 + {
21384 + AVR32_OPC_CASTU_B, 2, 0x5c500000, 0xfff00000,
21385 + &avr32_syntax_table[AVR32_SYNTAX_CASTU_B],
21386 + BFD_RELOC_UNUSED, 1, -1,
21387 + {
21388 + &avr32_ifield_table[AVR32_IFIELD_RY],
21389 + },
21390 + },
21391 + {
21392 + AVR32_OPC_CASTU_H, 2, 0x5c700000, 0xfff00000,
21393 + &avr32_syntax_table[AVR32_SYNTAX_CASTU_H],
21394 + BFD_RELOC_UNUSED, 1, -1,
21395 + {
21396 + &avr32_ifield_table[AVR32_IFIELD_RY],
21397 + },
21398 + },
21399 + {
21400 + AVR32_OPC_CBR, 2, 0xa1c00000, 0xe1e00000,
21401 + &avr32_syntax_table[AVR32_SYNTAX_CBR],
21402 + BFD_RELOC_UNUSED, 2, -1,
21403 + {
21404 + &avr32_ifield_table[AVR32_IFIELD_RY],
21405 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
21406 + },
21407 + },
21408 + {
21409 + AVR32_OPC_CLZ, 4, 0xe0001200, 0xe1f0ffff,
21410 + &avr32_syntax_table[AVR32_SYNTAX_CLZ],
21411 + BFD_RELOC_UNUSED, 2, -1,
21412 + {
21413 + &avr32_ifield_table[AVR32_IFIELD_RY],
21414 + &avr32_ifield_table[AVR32_IFIELD_RX],
21415 + },
21416 + },
21417 + {
21418 + AVR32_OPC_COM, 2, 0x5cd00000, 0xfff00000,
21419 + &avr32_syntax_table[AVR32_SYNTAX_COM],
21420 + BFD_RELOC_UNUSED, 1, -1,
21421 + {
21422 + &avr32_ifield_table[AVR32_IFIELD_RY],
21423 + },
21424 + },
21425 + {
21426 + AVR32_OPC_COP, 4, 0xe1a00000, 0xf9f00000,
21427 + &avr32_syntax_table[AVR32_SYNTAX_COP],
21428 + BFD_RELOC_UNUSED, 5, -1,
21429 + {
21430 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
21431 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
21432 + &avr32_ifield_table[AVR32_IFIELD_CRX],
21433 + &avr32_ifield_table[AVR32_IFIELD_CRY],
21434 + &avr32_ifield_table[AVR32_IFIELD_CPOP],
21435 + },
21436 + },
21437 + {
21438 + AVR32_OPC_CP_B, 4, 0xe0001800, 0xe1f0ffff,
21439 + &avr32_syntax_table[AVR32_SYNTAX_CP_B],
21440 + BFD_RELOC_UNUSED, 2, -1,
21441 + {
21442 + &avr32_ifield_table[AVR32_IFIELD_RY],
21443 + &avr32_ifield_table[AVR32_IFIELD_RX],
21444 + },
21445 + },
21446 + {
21447 + AVR32_OPC_CP_H, 4, 0xe0001900, 0xe1f0ffff,
21448 + &avr32_syntax_table[AVR32_SYNTAX_CP_H],
21449 + BFD_RELOC_UNUSED, 2, -1,
21450 + {
21451 + &avr32_ifield_table[AVR32_IFIELD_RY],
21452 + &avr32_ifield_table[AVR32_IFIELD_RX],
21453 + },
21454 + },
21455 + {
21456 + AVR32_OPC_CP_W1, 2, 0x00300000, 0xe1f00000,
21457 + &avr32_syntax_table[AVR32_SYNTAX_CP_W1],
21458 + BFD_RELOC_UNUSED, 2, -1,
21459 + {
21460 + &avr32_ifield_table[AVR32_IFIELD_RY],
21461 + &avr32_ifield_table[AVR32_IFIELD_RX],
21462 + },
21463 + },
21464 + {
21465 + AVR32_OPC_CP_W2, 2, 0x58000000, 0xfc000000,
21466 + &avr32_syntax_table[AVR32_SYNTAX_CP_W2],
21467 + BFD_RELOC_AVR32_6S, 2, 1,
21468 + {
21469 + &avr32_ifield_table[AVR32_IFIELD_RY],
21470 + &avr32_ifield_table[AVR32_IFIELD_K6],
21471 + },
21472 + },
21473 + {
21474 + AVR32_OPC_CP_W3, 4, 0xe0400000, 0xe1e00000,
21475 + &avr32_syntax_table[AVR32_SYNTAX_CP_W3],
21476 + BFD_RELOC_AVR32_21S, 2, 1,
21477 + {
21478 + &avr32_ifield_table[AVR32_IFIELD_RY],
21479 + &avr32_ifield_table[AVR32_IFIELD_K21],
21480 + },
21481 + },
21482 + {
21483 + AVR32_OPC_CPC1, 4, 0xe0001300, 0xe1f0ffff,
21484 + &avr32_syntax_table[AVR32_SYNTAX_CPC1],
21485 + BFD_RELOC_UNUSED, 2, -1,
21486 + {
21487 + &avr32_ifield_table[AVR32_IFIELD_RY],
21488 + &avr32_ifield_table[AVR32_IFIELD_RX],
21489 + },
21490 + },
21491 + {
21492 + AVR32_OPC_CPC2, 2, 0x5c200000, 0xfff00000,
21493 + &avr32_syntax_table[AVR32_SYNTAX_CPC2],
21494 + BFD_RELOC_UNUSED, 1, -1,
21495 + {
21496 + &avr32_ifield_table[AVR32_IFIELD_RY],
21497 + },
21498 + },
21499 + {
21500 + AVR32_OPC_CSRF, 2, 0xd4030000, 0xfe0f0000,
21501 + &avr32_syntax_table[AVR32_SYNTAX_CSRF],
21502 + BFD_RELOC_UNUSED, 1, -1,
21503 + {
21504 + &avr32_ifield_table[AVR32_IFIELD_K5C],
21505 + },
21506 + },
21507 + {
21508 + AVR32_OPC_CSRFCZ, 2, 0xd0030000, 0xfe0f0000,
21509 + &avr32_syntax_table[AVR32_SYNTAX_CSRFCZ],
21510 + BFD_RELOC_UNUSED, 1, -1,
21511 + {
21512 + &avr32_ifield_table[AVR32_IFIELD_K5C],
21513 + },
21514 + },
21515 + {
21516 + AVR32_OPC_DIVS, 4, 0xe0000c00, 0xe1f0ffc0,
21517 + &avr32_syntax_table[AVR32_SYNTAX_DIVS],
21518 + BFD_RELOC_UNUSED, 3, -1,
21519 + {
21520 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21521 + &avr32_ifield_table[AVR32_IFIELD_RX],
21522 + &avr32_ifield_table[AVR32_IFIELD_RY],
21523 + },
21524 + },
21525 + {
21526 + AVR32_OPC_DIVU, 4, 0xe0000d00, 0xe1f0ffc0,
21527 + &avr32_syntax_table[AVR32_SYNTAX_DIVU],
21528 + BFD_RELOC_UNUSED, 3, -1,
21529 + {
21530 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21531 + &avr32_ifield_table[AVR32_IFIELD_RX],
21532 + &avr32_ifield_table[AVR32_IFIELD_RY],
21533 + },
21534 + },
21535 + {
21536 + AVR32_OPC_EOR1, 2, 0x00500000, 0xe1f00000,
21537 + &avr32_syntax_table[AVR32_SYNTAX_EOR1],
21538 + BFD_RELOC_UNUSED, 2, -1,
21539 + {
21540 + &avr32_ifield_table[AVR32_IFIELD_RY],
21541 + &avr32_ifield_table[AVR32_IFIELD_RX],
21542 + },
21543 + },
21544 + {
21545 + AVR32_OPC_EOR2, 4, 0xe1e02000, 0xe1f0fe00,
21546 + &avr32_syntax_table[AVR32_SYNTAX_EOR2],
21547 + BFD_RELOC_UNUSED, 4, -1,
21548 + {
21549 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21550 + &avr32_ifield_table[AVR32_IFIELD_RX],
21551 + &avr32_ifield_table[AVR32_IFIELD_RY],
21552 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
21553 + }
21554 + },
21555 + {
21556 + AVR32_OPC_EOR3, 4, 0xe1e02200, 0xe1f0fe00,
21557 + &avr32_syntax_table[AVR32_SYNTAX_EOR3],
21558 + BFD_RELOC_UNUSED, 4, -1,
21559 + {
21560 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21561 + &avr32_ifield_table[AVR32_IFIELD_RX],
21562 + &avr32_ifield_table[AVR32_IFIELD_RY],
21563 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
21564 + }
21565 + },
21566 + {
21567 + AVR32_OPC_EORL, 4, 0xec100000, 0xfff00000,
21568 + &avr32_syntax_table[AVR32_SYNTAX_EORL],
21569 + BFD_RELOC_AVR32_16U, 2, 1,
21570 + {
21571 + &avr32_ifield_table[AVR32_IFIELD_RY],
21572 + &avr32_ifield_table[AVR32_IFIELD_K16],
21573 + },
21574 + },
21575 + {
21576 + AVR32_OPC_EORH, 4, 0xee100000, 0xfff00000,
21577 + &avr32_syntax_table[AVR32_SYNTAX_EORH],
21578 + BFD_RELOC_AVR32_16U, 2, 1,
21579 + {
21580 + &avr32_ifield_table[AVR32_IFIELD_RY],
21581 + &avr32_ifield_table[AVR32_IFIELD_K16],
21582 + },
21583 + },
21584 + {
21585 + AVR32_OPC_FRS, 2, 0xd7430000, 0xffff0000,
21586 + &avr32_syntax_table[AVR32_SYNTAX_FRS],
21587 + BFD_RELOC_UNUSED, 0, -1, { NULL },
21588 + },
21589 + {
21590 + AVR32_OPC_ICALL, 2, 0x5d100000, 0xfff00000,
21591 + &avr32_syntax_table[AVR32_SYNTAX_ICALL],
21592 + BFD_RELOC_UNUSED, 1, -1,
21593 + {
21594 + &avr32_ifield_table[AVR32_IFIELD_RY],
21595 + },
21596 + },
21597 + {
21598 + AVR32_OPC_INCJOSP, 2, 0xd6830000, 0xff8f0000,
21599 + &avr32_syntax_table[AVR32_SYNTAX_INCJOSP],
21600 + BFD_RELOC_UNUSED, 1, -1,
21601 + {
21602 + &avr32_ifield_table[AVR32_IFIELD_K3],
21603 + },
21604 + },
21605 + {
21606 + AVR32_OPC_LD_D1, 2, 0xa1010000, 0xe1f10000,
21607 + &avr32_syntax_table[AVR32_SYNTAX_LD_D1],
21608 + BFD_RELOC_UNUSED, 2, -1,
21609 + {
21610 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
21611 + &avr32_ifield_table[AVR32_IFIELD_RX],
21612 + },
21613 + },
21614 + {
21615 + AVR32_OPC_LD_D2, 2, 0xa1100000, 0xe1f10000,
21616 + &avr32_syntax_table[AVR32_SYNTAX_LD_D2],
21617 + BFD_RELOC_UNUSED, 2, -1,
21618 + {
21619 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
21620 + &avr32_ifield_table[AVR32_IFIELD_RX],
21621 + },
21622 + },
21623 + {
21624 + AVR32_OPC_LD_D3, 2, 0xa1000000, 0xe1f10000,
21625 + &avr32_syntax_table[AVR32_SYNTAX_LD_D3],
21626 + BFD_RELOC_UNUSED, 2, -1,
21627 + {
21628 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
21629 + &avr32_ifield_table[AVR32_IFIELD_RX],
21630 + },
21631 + },
21632 + {
21633 + AVR32_OPC_LD_D5, 4, 0xe0000200, 0xe1f0ffc1,
21634 + &avr32_syntax_table[AVR32_SYNTAX_LD_D5],
21635 + BFD_RELOC_UNUSED, 4, -1,
21636 + {
21637 + &avr32_ifield_table[AVR32_IFIELD_RD_DW],
21638 + &avr32_ifield_table[AVR32_IFIELD_RX],
21639 + &avr32_ifield_table[AVR32_IFIELD_RY],
21640 + &avr32_ifield_table[AVR32_IFIELD_K2],
21641 + },
21642 + },
21643 + {
21644 + AVR32_OPC_LD_D4, 4, 0xe0e00000, 0xe1f10000,
21645 + &avr32_syntax_table[AVR32_SYNTAX_LD_D4],
21646 + BFD_RELOC_AVR32_16S, 3, 2,
21647 + {
21648 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
21649 + &avr32_ifield_table[AVR32_IFIELD_RX],
21650 + &avr32_ifield_table[AVR32_IFIELD_K16],
21651 + },
21652 + },
21653 + {
21654 + AVR32_OPC_LD_SB2, 4, 0xe0000600, 0xe1f0ffc0,
21655 + &avr32_syntax_table[AVR32_SYNTAX_LD_SB2],
21656 + BFD_RELOC_UNUSED, 4, -1,
21657 + {
21658 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21659 + &avr32_ifield_table[AVR32_IFIELD_RX],
21660 + &avr32_ifield_table[AVR32_IFIELD_RY],
21661 + &avr32_ifield_table[AVR32_IFIELD_K2],
21662 + },
21663 + },
21664 + {
21665 + AVR32_OPC_LD_SB1, 4, 0xe1200000, 0xe1f00000,
21666 + &avr32_syntax_table[AVR32_SYNTAX_LD_SB1],
21667 + BFD_RELOC_AVR32_16S, 3, -1,
21668 + {
21669 + &avr32_ifield_table[AVR32_IFIELD_RY],
21670 + &avr32_ifield_table[AVR32_IFIELD_RX],
21671 + &avr32_ifield_table[AVR32_IFIELD_K16],
21672 + },
21673 + },
21674 + {
21675 + AVR32_OPC_LD_UB1, 2, 0x01300000, 0xe1f00000,
21676 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB1],
21677 + BFD_RELOC_UNUSED, 2, -1,
21678 + {
21679 + &avr32_ifield_table[AVR32_IFIELD_RY],
21680 + &avr32_ifield_table[AVR32_IFIELD_RX],
21681 + },
21682 + },
21683 + {
21684 + AVR32_OPC_LD_UB2, 2, 0x01700000, 0xe1f00000,
21685 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB2],
21686 + BFD_RELOC_UNUSED, 2, -1,
21687 + {
21688 + &avr32_ifield_table[AVR32_IFIELD_RY],
21689 + &avr32_ifield_table[AVR32_IFIELD_RX],
21690 + },
21691 + },
21692 + {
21693 + AVR32_OPC_LD_UB5, 4, 0xe0000700, 0xe1f0ffc0,
21694 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB5],
21695 + BFD_RELOC_UNUSED, 4, -1,
21696 + {
21697 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21698 + &avr32_ifield_table[AVR32_IFIELD_RX],
21699 + &avr32_ifield_table[AVR32_IFIELD_RY],
21700 + &avr32_ifield_table[AVR32_IFIELD_K2],
21701 + },
21702 + },
21703 + {
21704 + AVR32_OPC_LD_UB3, 2, 0x01800000, 0xe1800000,
21705 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB3],
21706 + BFD_RELOC_AVR32_3U, 3, 2,
21707 + {
21708 + &avr32_ifield_table[AVR32_IFIELD_RY],
21709 + &avr32_ifield_table[AVR32_IFIELD_RX],
21710 + &avr32_ifield_table[AVR32_IFIELD_K3],
21711 + },
21712 + },
21713 + {
21714 + AVR32_OPC_LD_UB4, 4, 0xe1300000, 0xe1f00000,
21715 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB4],
21716 + BFD_RELOC_AVR32_16S, 3, 2,
21717 + {
21718 + &avr32_ifield_table[AVR32_IFIELD_RY],
21719 + &avr32_ifield_table[AVR32_IFIELD_RX],
21720 + &avr32_ifield_table[AVR32_IFIELD_K16],
21721 + },
21722 + },
21723 + {
21724 + AVR32_OPC_LD_SH1, 2, 0x01100000, 0xe1f00000,
21725 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH1],
21726 + BFD_RELOC_UNUSED, 2, -1,
21727 + {
21728 + &avr32_ifield_table[AVR32_IFIELD_RY],
21729 + &avr32_ifield_table[AVR32_IFIELD_RX],
21730 + },
21731 + },
21732 + {
21733 + AVR32_OPC_LD_SH2, 2, 0x01500000, 0xe1f00000,
21734 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH2],
21735 + BFD_RELOC_UNUSED, 2, -1,
21736 + {
21737 + &avr32_ifield_table[AVR32_IFIELD_RY],
21738 + &avr32_ifield_table[AVR32_IFIELD_RX],
21739 + },
21740 + },
21741 + {
21742 + AVR32_OPC_LD_SH5, 4, 0xe0000400, 0xe1f0ffc0,
21743 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH5],
21744 + BFD_RELOC_UNUSED, 4, -1,
21745 + {
21746 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21747 + &avr32_ifield_table[AVR32_IFIELD_RX],
21748 + &avr32_ifield_table[AVR32_IFIELD_RY],
21749 + &avr32_ifield_table[AVR32_IFIELD_K2],
21750 + },
21751 + },
21752 + {
21753 + AVR32_OPC_LD_SH3, 2, 0x80000000, 0xe1800000,
21754 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH3],
21755 + BFD_RELOC_AVR32_4UH, 3, 2,
21756 + {
21757 + &avr32_ifield_table[AVR32_IFIELD_RY],
21758 + &avr32_ifield_table[AVR32_IFIELD_RX],
21759 + &avr32_ifield_table[AVR32_IFIELD_K3],
21760 + },
21761 + },
21762 + {
21763 + AVR32_OPC_LD_SH4, 4, 0xe1000000, 0xe1f00000,
21764 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH4],
21765 + BFD_RELOC_AVR32_16S, 3, 2,
21766 + {
21767 + &avr32_ifield_table[AVR32_IFIELD_RY],
21768 + &avr32_ifield_table[AVR32_IFIELD_RX],
21769 + &avr32_ifield_table[AVR32_IFIELD_K16],
21770 + },
21771 + },
21772 + {
21773 + AVR32_OPC_LD_UH1, 2, 0x01200000, 0xe1f00000,
21774 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH1],
21775 + BFD_RELOC_UNUSED, 2, -1,
21776 + {
21777 + &avr32_ifield_table[AVR32_IFIELD_RY],
21778 + &avr32_ifield_table[AVR32_IFIELD_RX],
21779 + },
21780 + },
21781 + {
21782 + AVR32_OPC_LD_UH2, 2, 0x01600000, 0xe1f00000,
21783 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH2],
21784 + BFD_RELOC_UNUSED, 2, -1,
21785 + {
21786 + &avr32_ifield_table[AVR32_IFIELD_RY],
21787 + &avr32_ifield_table[AVR32_IFIELD_RX],
21788 + },
21789 + },
21790 + {
21791 + AVR32_OPC_LD_UH5, 4, 0xe0000500, 0xe1f0ffc0,
21792 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH5],
21793 + BFD_RELOC_UNUSED, 4, -1,
21794 + {
21795 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21796 + &avr32_ifield_table[AVR32_IFIELD_RX],
21797 + &avr32_ifield_table[AVR32_IFIELD_RY],
21798 + &avr32_ifield_table[AVR32_IFIELD_K2],
21799 + },
21800 + },
21801 + {
21802 + AVR32_OPC_LD_UH3, 2, 0x80800000, 0xe1800000,
21803 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH3],
21804 + BFD_RELOC_AVR32_4UH, 3, 2,
21805 + {
21806 + &avr32_ifield_table[AVR32_IFIELD_RY],
21807 + &avr32_ifield_table[AVR32_IFIELD_RX],
21808 + &avr32_ifield_table[AVR32_IFIELD_K3],
21809 + },
21810 + },
21811 + {
21812 + AVR32_OPC_LD_UH4, 4, 0xe1100000, 0xe1f00000,
21813 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH4],
21814 + BFD_RELOC_AVR32_16S, 3, 2,
21815 + {
21816 + &avr32_ifield_table[AVR32_IFIELD_RY],
21817 + &avr32_ifield_table[AVR32_IFIELD_RX],
21818 + &avr32_ifield_table[AVR32_IFIELD_K16],
21819 + },
21820 + },
21821 + {
21822 + AVR32_OPC_LD_W1, 2, 0x01000000, 0xe1f00000,
21823 + &avr32_syntax_table[AVR32_SYNTAX_LD_W1],
21824 + BFD_RELOC_UNUSED, 2, -1,
21825 + {
21826 + &avr32_ifield_table[AVR32_IFIELD_RY],
21827 + &avr32_ifield_table[AVR32_IFIELD_RX],
21828 + },
21829 + },
21830 + {
21831 + AVR32_OPC_LD_W2, 2, 0x01400000, 0xe1f00000,
21832 + &avr32_syntax_table[AVR32_SYNTAX_LD_W2],
21833 + BFD_RELOC_UNUSED, 2, -1,
21834 + {
21835 + &avr32_ifield_table[AVR32_IFIELD_RY],
21836 + &avr32_ifield_table[AVR32_IFIELD_RX],
21837 + },
21838 + },
21839 + {
21840 + AVR32_OPC_LD_W5, 4, 0xe0000300, 0xe1f0ffc0,
21841 + &avr32_syntax_table[AVR32_SYNTAX_LD_W5],
21842 + BFD_RELOC_UNUSED, 4, -1,
21843 + {
21844 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21845 + &avr32_ifield_table[AVR32_IFIELD_RX],
21846 + &avr32_ifield_table[AVR32_IFIELD_RY],
21847 + &avr32_ifield_table[AVR32_IFIELD_K2],
21848 + },
21849 + },
21850 + {
21851 + AVR32_OPC_LD_W6, 4, 0xe0000f80, 0xe1f0ffc0,
21852 + &avr32_syntax_table[AVR32_SYNTAX_LD_W6],
21853 + BFD_RELOC_UNUSED, 4, -1,
21854 + {
21855 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21856 + &avr32_ifield_table[AVR32_IFIELD_RX],
21857 + &avr32_ifield_table[AVR32_IFIELD_RY],
21858 + &avr32_ifield_table[AVR32_IFIELD_K2],
21859 + },
21860 + },
21861 + {
21862 + AVR32_OPC_LD_W3, 2, 0x60000000, 0xe0000000,
21863 + &avr32_syntax_table[AVR32_SYNTAX_LD_W3],
21864 + BFD_RELOC_AVR32_7UW, 3, 2,
21865 + {
21866 + &avr32_ifield_table[AVR32_IFIELD_RY],
21867 + &avr32_ifield_table[AVR32_IFIELD_RX],
21868 + &avr32_ifield_table[AVR32_IFIELD_K5C],
21869 + },
21870 + },
21871 + {
21872 + AVR32_OPC_LD_W4, 4, 0xe0f00000, 0xe1f00000,
21873 + &avr32_syntax_table[AVR32_SYNTAX_LD_W4],
21874 + BFD_RELOC_AVR32_16S, 3, 2,
21875 + {
21876 + &avr32_ifield_table[AVR32_IFIELD_RY],
21877 + &avr32_ifield_table[AVR32_IFIELD_RX],
21878 + &avr32_ifield_table[AVR32_IFIELD_K16],
21879 + },
21880 + },
21881 + {
21882 + AVR32_OPC_LDC_D1, 4, 0xe9a01000, 0xfff01100,
21883 + &avr32_syntax_table[AVR32_SYNTAX_LDC_D1],
21884 + BFD_RELOC_AVR32_10UW, 4, 3,
21885 + {
21886 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
21887 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
21888 + &avr32_ifield_table[AVR32_IFIELD_RY],
21889 + &avr32_ifield_table[AVR32_IFIELD_K8E],
21890 + },
21891 + },
21892 + {
21893 + AVR32_OPC_LDC_D2, 4, 0xefa00050, 0xfff011ff,
21894 + &avr32_syntax_table[AVR32_SYNTAX_LDC_D2],
21895 + BFD_RELOC_UNUSED, 3, -1,
21896 + {
21897 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
21898 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
21899 + &avr32_ifield_table[AVR32_IFIELD_RY],
21900 + },
21901 + },
21902 + {
21903 + AVR32_OPC_LDC_D3, 4, 0xefa01040, 0xfff011c0,
21904 + &avr32_syntax_table[AVR32_SYNTAX_LDC_D3],
21905 + BFD_RELOC_UNUSED, 5, -1,
21906 + {
21907 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
21908 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
21909 + &avr32_ifield_table[AVR32_IFIELD_RY],
21910 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21911 + &avr32_ifield_table[AVR32_IFIELD_K2],
21912 + },
21913 + },
21914 + {
21915 + AVR32_OPC_LDC_W1, 4, 0xe9a00000, 0xfff01000,
21916 + &avr32_syntax_table[AVR32_SYNTAX_LDC_W1],
21917 + BFD_RELOC_AVR32_10UW, 4, 3,
21918 + {
21919 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
21920 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
21921 + &avr32_ifield_table[AVR32_IFIELD_RY],
21922 + &avr32_ifield_table[AVR32_IFIELD_K8E],
21923 + },
21924 + },
21925 + {
21926 + AVR32_OPC_LDC_W2, 4, 0xefa00040, 0xfff010ff,
21927 + &avr32_syntax_table[AVR32_SYNTAX_LDC_W2],
21928 + BFD_RELOC_UNUSED, 3, -1,
21929 + {
21930 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
21931 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
21932 + &avr32_ifield_table[AVR32_IFIELD_RY],
21933 + },
21934 + },
21935 + {
21936 + AVR32_OPC_LDC_W3, 4, 0xefa01000, 0xfff010c0,
21937 + &avr32_syntax_table[AVR32_SYNTAX_LDC_W3],
21938 + BFD_RELOC_UNUSED, 5, -1,
21939 + {
21940 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
21941 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
21942 + &avr32_ifield_table[AVR32_IFIELD_RY],
21943 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21944 + &avr32_ifield_table[AVR32_IFIELD_K2],
21945 + },
21946 + },
21947 + {
21948 + AVR32_OPC_LDC0_D, 4, 0xf3a00000, 0xfff00100,
21949 + &avr32_syntax_table[AVR32_SYNTAX_LDC0_D],
21950 + BFD_RELOC_AVR32_14UW, 3, 2,
21951 + {
21952 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
21953 + &avr32_ifield_table[AVR32_IFIELD_RY],
21954 + &avr32_ifield_table[AVR32_IFIELD_K12CP],
21955 + },
21956 + },
21957 + {
21958 + AVR32_OPC_LDC0_W, 4, 0xf1a00000, 0xfff00000,
21959 + &avr32_syntax_table[AVR32_SYNTAX_LDC0_W],
21960 + BFD_RELOC_AVR32_14UW, 3, 2,
21961 + {
21962 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
21963 + &avr32_ifield_table[AVR32_IFIELD_RY],
21964 + &avr32_ifield_table[AVR32_IFIELD_K12CP],
21965 + },
21966 + },
21967 + {
21968 + AVR32_OPC_LDCM_D, 4, 0xeda00400, 0xfff01f00,
21969 + &avr32_syntax_table[AVR32_SYNTAX_LDCM_D],
21970 + BFD_RELOC_UNUSED, 3, -1,
21971 + {
21972 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
21973 + &avr32_ifield_table[AVR32_IFIELD_RY],
21974 + &avr32_ifield_table[AVR32_IFIELD_K8E],
21975 + },
21976 + },
21977 + {
21978 + AVR32_OPC_LDCM_D_PU, 4, 0xeda01400, 0xfff01f00,
21979 + &avr32_syntax_table[AVR32_SYNTAX_LDCM_D_PU],
21980 + BFD_RELOC_UNUSED, 3, -1,
21981 + {
21982 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
21983 + &avr32_ifield_table[AVR32_IFIELD_RY],
21984 + &avr32_ifield_table[AVR32_IFIELD_K8E],
21985 + },
21986 + },
21987 + {
21988 + AVR32_OPC_LDCM_W, 4, 0xeda00000, 0xfff01e00,
21989 + &avr32_syntax_table[AVR32_SYNTAX_LDCM_W],
21990 + BFD_RELOC_UNUSED, 4, -1,
21991 + {
21992 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
21993 + &avr32_ifield_table[AVR32_IFIELD_RY],
21994 + &avr32_ifield_table[AVR32_IFIELD_K8E],
21995 + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
21996 + },
21997 + },
21998 + {
21999 + AVR32_OPC_LDCM_W_PU, 4, 0xeda01000, 0xfff01e00,
22000 + &avr32_syntax_table[AVR32_SYNTAX_LDCM_W_PU],
22001 + BFD_RELOC_UNUSED, 4, -1,
22002 + {
22003 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22004 + &avr32_ifield_table[AVR32_IFIELD_RY],
22005 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22006 + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
22007 + },
22008 + },
22009 + {
22010 + AVR32_OPC_LDDPC, 2, 0x48000000, 0xf8000000,
22011 + &avr32_syntax_table[AVR32_SYNTAX_LDDPC],
22012 + BFD_RELOC_AVR32_9UW_PCREL, 2, 1,
22013 + {
22014 + &avr32_ifield_table[AVR32_IFIELD_RY],
22015 + &avr32_ifield_table[AVR32_IFIELD_K7C],
22016 + },
22017 + },
22018 + {
22019 + AVR32_OPC_LDDPC_EXT, 4, 0xfef00000, 0xfff00000,
22020 + &avr32_syntax_table[AVR32_SYNTAX_LDDPC_EXT],
22021 + BFD_RELOC_AVR32_16B_PCREL, 2, 1,
22022 + {
22023 + &avr32_ifield_table[AVR32_IFIELD_RY],
22024 + &avr32_ifield_table[AVR32_IFIELD_K16],
22025 + },
22026 + },
22027 + {
22028 + AVR32_OPC_LDDSP, 2, 0x40000000, 0xf8000000,
22029 + &avr32_syntax_table[AVR32_SYNTAX_LDDSP],
22030 + BFD_RELOC_UNUSED, 2, -1,
22031 + {
22032 + &avr32_ifield_table[AVR32_IFIELD_RY],
22033 + &avr32_ifield_table[AVR32_IFIELD_K7C],
22034 + },
22035 + },
22036 + {
22037 + AVR32_OPC_LDINS_B, 4, 0xe1d04000, 0xe1f0c000,
22038 + &avr32_syntax_table[AVR32_SYNTAX_LDINS_B],
22039 + BFD_RELOC_UNUSED, 4, -1,
22040 + {
22041 + &avr32_ifield_table[AVR32_IFIELD_RY],
22042 + &avr32_ifield_table[AVR32_IFIELD_PART2_K12],
22043 + &avr32_ifield_table[AVR32_IFIELD_RX],
22044 + &avr32_ifield_table[AVR32_IFIELD_K12],
22045 + },
22046 + },
22047 + {
22048 + AVR32_OPC_LDINS_H, 4, 0xe1d00000, 0xe1f0e000,
22049 + &avr32_syntax_table[AVR32_SYNTAX_LDINS_H],
22050 + BFD_RELOC_UNUSED, 4, -1,
22051 + {
22052 + &avr32_ifield_table[AVR32_IFIELD_RY],
22053 + &avr32_ifield_table[AVR32_IFIELD_PART1_K12],
22054 + &avr32_ifield_table[AVR32_IFIELD_RX],
22055 + &avr32_ifield_table[AVR32_IFIELD_K12],
22056 + },
22057 + },
22058 + {
22059 + AVR32_OPC_LDM, 4, 0xe1c00000, 0xfdf00000,
22060 + &avr32_syntax_table[AVR32_SYNTAX_LDM],
22061 + BFD_RELOC_UNUSED, 3, -1,
22062 + {
22063 + &avr32_ifield_table[AVR32_IFIELD_RY],
22064 + &avr32_ifield_table[AVR32_IFIELD_W],
22065 + &avr32_ifield_table[AVR32_IFIELD_K16],
22066 + },
22067 + },
22068 + {
22069 + AVR32_OPC_LDMTS, 4, 0xe5c00000, 0xfff00000,
22070 + &avr32_syntax_table[AVR32_SYNTAX_LDMTS],
22071 + BFD_RELOC_UNUSED, 2, -1,
22072 + {
22073 + &avr32_ifield_table[AVR32_IFIELD_RY],
22074 + &avr32_ifield_table[AVR32_IFIELD_K16],
22075 + },
22076 + },
22077 + {
22078 + AVR32_OPC_LDMTS_PU, 4, 0xe7c00000, 0xfff00000,
22079 + &avr32_syntax_table[AVR32_SYNTAX_LDMTS_PU],
22080 + BFD_RELOC_UNUSED, 2, -1,
22081 + {
22082 + &avr32_ifield_table[AVR32_IFIELD_RY],
22083 + &avr32_ifield_table[AVR32_IFIELD_K16],
22084 + },
22085 + },
22086 + {
22087 + AVR32_OPC_LDSWP_SH, 4, 0xe1d02000, 0xe1f0f000,
22088 + &avr32_syntax_table[AVR32_SYNTAX_LDSWP_SH],
22089 + BFD_RELOC_UNUSED, 3, -1,
22090 + {
22091 + &avr32_ifield_table[AVR32_IFIELD_RY],
22092 + &avr32_ifield_table[AVR32_IFIELD_RX],
22093 + &avr32_ifield_table[AVR32_IFIELD_K12],
22094 + },
22095 + },
22096 + {
22097 + AVR32_OPC_LDSWP_UH, 4, 0xe1d03000, 0xe1f0f000,
22098 + &avr32_syntax_table[AVR32_SYNTAX_LDSWP_UH],
22099 + BFD_RELOC_UNUSED, 3, -1,
22100 + {
22101 + &avr32_ifield_table[AVR32_IFIELD_RY],
22102 + &avr32_ifield_table[AVR32_IFIELD_RX],
22103 + &avr32_ifield_table[AVR32_IFIELD_K12],
22104 + },
22105 + },
22106 + {
22107 + AVR32_OPC_LDSWP_W, 4, 0xe1d08000, 0xe1f0f000,
22108 + &avr32_syntax_table[AVR32_SYNTAX_LDSWP_W],
22109 + BFD_RELOC_UNUSED, 3, -1,
22110 + {
22111 + &avr32_ifield_table[AVR32_IFIELD_RY],
22112 + &avr32_ifield_table[AVR32_IFIELD_RX],
22113 + &avr32_ifield_table[AVR32_IFIELD_K12],
22114 + },
22115 + },
22116 + {
22117 + AVR32_OPC_LSL1, 4, 0xe0000940, 0xe1f0fff0,
22118 + &avr32_syntax_table[AVR32_SYNTAX_LSL1],
22119 + BFD_RELOC_UNUSED, 3, -1,
22120 + {
22121 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22122 + &avr32_ifield_table[AVR32_IFIELD_RX],
22123 + &avr32_ifield_table[AVR32_IFIELD_RY],
22124 + },
22125 + },
22126 + {
22127 + AVR32_OPC_LSL3, 4, 0xe0001500, 0xe1f0ffe0,
22128 + &avr32_syntax_table[AVR32_SYNTAX_LSL3],
22129 + BFD_RELOC_UNUSED, 3, -1,
22130 + {
22131 + &avr32_ifield_table[AVR32_IFIELD_RY],
22132 + &avr32_ifield_table[AVR32_IFIELD_RX],
22133 + &avr32_ifield_table[AVR32_IFIELD_K5E],
22134 + },
22135 + },
22136 + {
22137 + AVR32_OPC_LSL2, 2, 0xa1600000, 0xe1e00000,
22138 + &avr32_syntax_table[AVR32_SYNTAX_LSL2],
22139 + BFD_RELOC_UNUSED, 2, -1,
22140 + {
22141 + &avr32_ifield_table[AVR32_IFIELD_RY],
22142 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
22143 + },
22144 + },
22145 + {
22146 + AVR32_OPC_LSR1, 4, 0xe0000a40, 0xe1f0fff0,
22147 + &avr32_syntax_table[AVR32_SYNTAX_LSR1],
22148 + BFD_RELOC_UNUSED, 3, -1,
22149 + {
22150 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22151 + &avr32_ifield_table[AVR32_IFIELD_RX],
22152 + &avr32_ifield_table[AVR32_IFIELD_RY],
22153 + },
22154 + },
22155 + {
22156 + AVR32_OPC_LSR3, 4, 0xe0001600, 0xe1f0ffe0,
22157 + &avr32_syntax_table[AVR32_SYNTAX_LSR3],
22158 + BFD_RELOC_UNUSED, 3, -1,
22159 + {
22160 + &avr32_ifield_table[AVR32_IFIELD_RY],
22161 + &avr32_ifield_table[AVR32_IFIELD_RX],
22162 + &avr32_ifield_table[AVR32_IFIELD_K5E],
22163 + },
22164 + },
22165 + {
22166 + AVR32_OPC_LSR2, 2, 0xa1800000, 0xe1e00000,
22167 + &avr32_syntax_table[AVR32_SYNTAX_LSR2],
22168 + BFD_RELOC_UNUSED, 2, -1,
22169 + {
22170 + &avr32_ifield_table[AVR32_IFIELD_RY],
22171 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
22172 + },
22173 + },
22174 + {
22175 + AVR32_OPC_MAC, 4, 0xe0000340, 0xe1f0fff0,
22176 + &avr32_syntax_table[AVR32_SYNTAX_MAC],
22177 + BFD_RELOC_UNUSED, 3, -1,
22178 + {
22179 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22180 + &avr32_ifield_table[AVR32_IFIELD_RX],
22181 + &avr32_ifield_table[AVR32_IFIELD_RY],
22182 + },
22183 + },
22184 + {
22185 + AVR32_OPC_MACHH_D, 4, 0xe0000580, 0xe1f0ffc1,
22186 + &avr32_syntax_table[AVR32_SYNTAX_MACHH_D],
22187 + BFD_RELOC_UNUSED, 5, -1,
22188 + {
22189 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22190 + &avr32_ifield_table[AVR32_IFIELD_RX],
22191 + &avr32_ifield_table[AVR32_IFIELD_X],
22192 + &avr32_ifield_table[AVR32_IFIELD_RY],
22193 + &avr32_ifield_table[AVR32_IFIELD_Y],
22194 + },
22195 + },
22196 + {
22197 + AVR32_OPC_MACHH_W, 4, 0xe0000480, 0xe1f0ffc0,
22198 + &avr32_syntax_table[AVR32_SYNTAX_MACHH_W],
22199 + BFD_RELOC_UNUSED, 5, -1,
22200 + {
22201 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22202 + &avr32_ifield_table[AVR32_IFIELD_RX],
22203 + &avr32_ifield_table[AVR32_IFIELD_X],
22204 + &avr32_ifield_table[AVR32_IFIELD_RY],
22205 + &avr32_ifield_table[AVR32_IFIELD_Y],
22206 + },
22207 + },
22208 + {
22209 + AVR32_OPC_MACS_D, 4, 0xe0000540, 0xe1f0fff1,
22210 + &avr32_syntax_table[AVR32_SYNTAX_MACS_D],
22211 + BFD_RELOC_UNUSED, 3, -1,
22212 + {
22213 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22214 + &avr32_ifield_table[AVR32_IFIELD_RX],
22215 + &avr32_ifield_table[AVR32_IFIELD_RY],
22216 + },
22217 + },
22218 + {
22219 + AVR32_OPC_MACSATHH_W, 4, 0xe0000680, 0xe1f0ffc0,
22220 + &avr32_syntax_table[AVR32_SYNTAX_MACSATHH_W],
22221 + BFD_RELOC_UNUSED, 5, -1,
22222 + {
22223 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22224 + &avr32_ifield_table[AVR32_IFIELD_RX],
22225 + &avr32_ifield_table[AVR32_IFIELD_X],
22226 + &avr32_ifield_table[AVR32_IFIELD_RY],
22227 + &avr32_ifield_table[AVR32_IFIELD_Y],
22228 + },
22229 + },
22230 + {
22231 + AVR32_OPC_MACUD, 4, 0xe0000740, 0xe1f0fff1,
22232 + &avr32_syntax_table[AVR32_SYNTAX_MACUD],
22233 + BFD_RELOC_UNUSED, 3, -1,
22234 + {
22235 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22236 + &avr32_ifield_table[AVR32_IFIELD_RX],
22237 + &avr32_ifield_table[AVR32_IFIELD_RY],
22238 + },
22239 + },
22240 + {
22241 + AVR32_OPC_MACWH_D, 4, 0xe0000c80, 0xe1f0ffe1,
22242 + &avr32_syntax_table[AVR32_SYNTAX_MACWH_D],
22243 + BFD_RELOC_UNUSED, 4, -1,
22244 + {
22245 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22246 + &avr32_ifield_table[AVR32_IFIELD_RX],
22247 + &avr32_ifield_table[AVR32_IFIELD_RY],
22248 + &avr32_ifield_table[AVR32_IFIELD_Y],
22249 + },
22250 + },
22251 + {
22252 + AVR32_OPC_MAX, 4, 0xe0000c40, 0xe1f0fff0,
22253 + &avr32_syntax_table[AVR32_SYNTAX_MAX],
22254 + BFD_RELOC_UNUSED, 3, -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 + },
22260 + },
22261 + {
22262 + AVR32_OPC_MCALL, 4, 0xf0100000, 0xfff00000,
22263 + &avr32_syntax_table[AVR32_SYNTAX_MCALL],
22264 + BFD_RELOC_AVR32_18W_PCREL, 2, 1,
22265 + {
22266 + &avr32_ifield_table[AVR32_IFIELD_RY],
22267 + &avr32_ifield_table[AVR32_IFIELD_K16],
22268 + },
22269 + },
22270 + {
22271 + AVR32_OPC_MFDR, 4, 0xe5b00000, 0xfff0ff00,
22272 + &avr32_syntax_table[AVR32_SYNTAX_MFDR],
22273 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22274 + {
22275 + &avr32_ifield_table[AVR32_IFIELD_RY],
22276 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22277 + },
22278 + },
22279 + {
22280 + AVR32_OPC_MFSR, 4, 0xe1b00000, 0xfff0ff00,
22281 + &avr32_syntax_table[AVR32_SYNTAX_MFSR],
22282 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22283 + {
22284 + &avr32_ifield_table[AVR32_IFIELD_RY],
22285 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22286 + },
22287 + },
22288 + {
22289 + AVR32_OPC_MIN, 4, 0xe0000d40, 0xe1f0fff0,
22290 + &avr32_syntax_table[AVR32_SYNTAX_MIN],
22291 + BFD_RELOC_UNUSED, 3, -1,
22292 + {
22293 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22294 + &avr32_ifield_table[AVR32_IFIELD_RX],
22295 + &avr32_ifield_table[AVR32_IFIELD_RY],
22296 + },
22297 + },
22298 + {
22299 + AVR32_OPC_MOV3, 2, 0x00900000, 0xe1f00000,
22300 + &avr32_syntax_table[AVR32_SYNTAX_MOV3],
22301 + BFD_RELOC_NONE, 2, -1,
22302 + {
22303 + &avr32_ifield_table[AVR32_IFIELD_RY],
22304 + &avr32_ifield_table[AVR32_IFIELD_RX],
22305 + },
22306 + },
22307 + {
22308 + AVR32_OPC_MOV1, 2, 0x30000000, 0xf0000000,
22309 + &avr32_syntax_table[AVR32_SYNTAX_MOV1],
22310 + BFD_RELOC_AVR32_8S, 2, 1,
22311 + {
22312 + &avr32_ifield_table[AVR32_IFIELD_RY],
22313 + &avr32_ifield_table[AVR32_IFIELD_K8C],
22314 + },
22315 + },
22316 + {
22317 + AVR32_OPC_MOV2, 4, 0xe0600000, 0xe1e00000,
22318 + &avr32_syntax_table[AVR32_SYNTAX_MOV2],
22319 + BFD_RELOC_AVR32_21S, 2, 1,
22320 + {
22321 + &avr32_ifield_table[AVR32_IFIELD_RY],
22322 + &avr32_ifield_table[AVR32_IFIELD_K21],
22323 + },
22324 + },
22325 + {
22326 + AVR32_OPC_MOVEQ1, 4, 0xe0001700, 0xe1f0ffff,
22327 + &avr32_syntax_table[AVR32_SYNTAX_MOVEQ1],
22328 + BFD_RELOC_UNUSED, 2, -1,
22329 + {
22330 + &avr32_ifield_table[AVR32_IFIELD_RY],
22331 + &avr32_ifield_table[AVR32_IFIELD_RX],
22332 + },
22333 + },
22334 + {
22335 + AVR32_OPC_MOVNE1, 4, 0xe0001710, 0xe1f0ffff,
22336 + &avr32_syntax_table[AVR32_SYNTAX_MOVNE1],
22337 + BFD_RELOC_UNUSED, 2, -1,
22338 + {
22339 + &avr32_ifield_table[AVR32_IFIELD_RY],
22340 + &avr32_ifield_table[AVR32_IFIELD_RX],
22341 + },
22342 + },
22343 + {
22344 + AVR32_OPC_MOVCC1, 4, 0xe0001720, 0xe1f0ffff,
22345 + &avr32_syntax_table[AVR32_SYNTAX_MOVHS1],
22346 + BFD_RELOC_UNUSED, 2, -1,
22347 + {
22348 + &avr32_ifield_table[AVR32_IFIELD_RY],
22349 + &avr32_ifield_table[AVR32_IFIELD_RX],
22350 + },
22351 + },
22352 + {
22353 + AVR32_OPC_MOVCS1, 4, 0xe0001730, 0xe1f0ffff,
22354 + &avr32_syntax_table[AVR32_SYNTAX_MOVLO1],
22355 + BFD_RELOC_UNUSED, 2, -1,
22356 + {
22357 + &avr32_ifield_table[AVR32_IFIELD_RY],
22358 + &avr32_ifield_table[AVR32_IFIELD_RX],
22359 + },
22360 + },
22361 + {
22362 + AVR32_OPC_MOVGE1, 4, 0xe0001740, 0xe1f0ffff,
22363 + &avr32_syntax_table[AVR32_SYNTAX_MOVGE1],
22364 + BFD_RELOC_UNUSED, 2, -1,
22365 + {
22366 + &avr32_ifield_table[AVR32_IFIELD_RY],
22367 + &avr32_ifield_table[AVR32_IFIELD_RX],
22368 + },
22369 + },
22370 + {
22371 + AVR32_OPC_MOVLT1, 4, 0xe0001750, 0xe1f0ffff,
22372 + &avr32_syntax_table[AVR32_SYNTAX_MOVLT1],
22373 + BFD_RELOC_UNUSED, 2, -1,
22374 + {
22375 + &avr32_ifield_table[AVR32_IFIELD_RY],
22376 + &avr32_ifield_table[AVR32_IFIELD_RX],
22377 + },
22378 + },
22379 + {
22380 + AVR32_OPC_MOVMI1, 4, 0xe0001760, 0xe1f0ffff,
22381 + &avr32_syntax_table[AVR32_SYNTAX_MOVMI1],
22382 + BFD_RELOC_UNUSED, 2, -1,
22383 + {
22384 + &avr32_ifield_table[AVR32_IFIELD_RY],
22385 + &avr32_ifield_table[AVR32_IFIELD_RX],
22386 + },
22387 + },
22388 + {
22389 + AVR32_OPC_MOVPL1, 4, 0xe0001770, 0xe1f0ffff,
22390 + &avr32_syntax_table[AVR32_SYNTAX_MOVPL1],
22391 + BFD_RELOC_UNUSED, 2, -1,
22392 + {
22393 + &avr32_ifield_table[AVR32_IFIELD_RY],
22394 + &avr32_ifield_table[AVR32_IFIELD_RX],
22395 + },
22396 + },
22397 + {
22398 + AVR32_OPC_MOVLS1, 4, 0xe0001780, 0xe1f0ffff,
22399 + &avr32_syntax_table[AVR32_SYNTAX_MOVLS1],
22400 + BFD_RELOC_UNUSED, 2, -1,
22401 + {
22402 + &avr32_ifield_table[AVR32_IFIELD_RY],
22403 + &avr32_ifield_table[AVR32_IFIELD_RX],
22404 + },
22405 + },
22406 + {
22407 + AVR32_OPC_MOVGT1, 4, 0xe0001790, 0xe1f0ffff,
22408 + &avr32_syntax_table[AVR32_SYNTAX_MOVGT1],
22409 + BFD_RELOC_UNUSED, 2, -1,
22410 + {
22411 + &avr32_ifield_table[AVR32_IFIELD_RY],
22412 + &avr32_ifield_table[AVR32_IFIELD_RX],
22413 + },
22414 + },
22415 + {
22416 + AVR32_OPC_MOVLE1, 4, 0xe00017a0, 0xe1f0ffff,
22417 + &avr32_syntax_table[AVR32_SYNTAX_MOVLE1],
22418 + BFD_RELOC_UNUSED, 2, -1,
22419 + {
22420 + &avr32_ifield_table[AVR32_IFIELD_RY],
22421 + &avr32_ifield_table[AVR32_IFIELD_RX],
22422 + },
22423 + },
22424 + {
22425 + AVR32_OPC_MOVHI1, 4, 0xe00017b0, 0xe1f0ffff,
22426 + &avr32_syntax_table[AVR32_SYNTAX_MOVHI1],
22427 + BFD_RELOC_UNUSED, 2, -1,
22428 + {
22429 + &avr32_ifield_table[AVR32_IFIELD_RY],
22430 + &avr32_ifield_table[AVR32_IFIELD_RX],
22431 + },
22432 + },
22433 + {
22434 + AVR32_OPC_MOVVS1, 4, 0xe00017c0, 0xe1f0ffff,
22435 + &avr32_syntax_table[AVR32_SYNTAX_MOVVS1],
22436 + BFD_RELOC_UNUSED, 2, -1,
22437 + {
22438 + &avr32_ifield_table[AVR32_IFIELD_RY],
22439 + &avr32_ifield_table[AVR32_IFIELD_RX],
22440 + },
22441 + },
22442 + {
22443 + AVR32_OPC_MOVVC1, 4, 0xe00017d0, 0xe1f0ffff,
22444 + &avr32_syntax_table[AVR32_SYNTAX_MOVVC1],
22445 + BFD_RELOC_UNUSED, 2, -1,
22446 + {
22447 + &avr32_ifield_table[AVR32_IFIELD_RY],
22448 + &avr32_ifield_table[AVR32_IFIELD_RX],
22449 + },
22450 + },
22451 + {
22452 + AVR32_OPC_MOVQS1, 4, 0xe00017e0, 0xe1f0ffff,
22453 + &avr32_syntax_table[AVR32_SYNTAX_MOVQS1],
22454 + BFD_RELOC_UNUSED, 2, -1,
22455 + {
22456 + &avr32_ifield_table[AVR32_IFIELD_RY],
22457 + &avr32_ifield_table[AVR32_IFIELD_RX],
22458 + },
22459 + },
22460 + {
22461 + AVR32_OPC_MOVAL1, 4, 0xe00017f0, 0xe1f0ffff,
22462 + &avr32_syntax_table[AVR32_SYNTAX_MOVAL1],
22463 + BFD_RELOC_UNUSED, 2, -1,
22464 + {
22465 + &avr32_ifield_table[AVR32_IFIELD_RY],
22466 + &avr32_ifield_table[AVR32_IFIELD_RX],
22467 + },
22468 + },
22469 + {
22470 + AVR32_OPC_MOVEQ2, 4, 0xf9b00000, 0xfff0ff00,
22471 + &avr32_syntax_table[AVR32_SYNTAX_MOVEQ2],
22472 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22473 + {
22474 + &avr32_ifield_table[AVR32_IFIELD_RY],
22475 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22476 + },
22477 + },
22478 + {
22479 + AVR32_OPC_MOVNE2, 4, 0xf9b00100, 0xfff0ff00,
22480 + &avr32_syntax_table[AVR32_SYNTAX_MOVNE2],
22481 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22482 + {
22483 + &avr32_ifield_table[AVR32_IFIELD_RY],
22484 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22485 + },
22486 + },
22487 + {
22488 + AVR32_OPC_MOVCC2, 4, 0xf9b00200, 0xfff0ff00,
22489 + &avr32_syntax_table[AVR32_SYNTAX_MOVHS2],
22490 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22491 + {
22492 + &avr32_ifield_table[AVR32_IFIELD_RY],
22493 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22494 + },
22495 + },
22496 + {
22497 + AVR32_OPC_MOVCS2, 4, 0xf9b00300, 0xfff0ff00,
22498 + &avr32_syntax_table[AVR32_SYNTAX_MOVLO2],
22499 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22500 + {
22501 + &avr32_ifield_table[AVR32_IFIELD_RY],
22502 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22503 + },
22504 + },
22505 + {
22506 + AVR32_OPC_MOVGE2, 4, 0xf9b00400, 0xfff0ff00,
22507 + &avr32_syntax_table[AVR32_SYNTAX_MOVGE2],
22508 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22509 + {
22510 + &avr32_ifield_table[AVR32_IFIELD_RY],
22511 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22512 + },
22513 + },
22514 + {
22515 + AVR32_OPC_MOVLT2, 4, 0xf9b00500, 0xfff0ff00,
22516 + &avr32_syntax_table[AVR32_SYNTAX_MOVLT2],
22517 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22518 + {
22519 + &avr32_ifield_table[AVR32_IFIELD_RY],
22520 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22521 + },
22522 + },
22523 + {
22524 + AVR32_OPC_MOVMI2, 4, 0xf9b00600, 0xfff0ff00,
22525 + &avr32_syntax_table[AVR32_SYNTAX_MOVMI2],
22526 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22527 + {
22528 + &avr32_ifield_table[AVR32_IFIELD_RY],
22529 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22530 + },
22531 + },
22532 + {
22533 + AVR32_OPC_MOVPL2, 4, 0xf9b00700, 0xfff0ff00,
22534 + &avr32_syntax_table[AVR32_SYNTAX_MOVPL2],
22535 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22536 + {
22537 + &avr32_ifield_table[AVR32_IFIELD_RY],
22538 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22539 + },
22540 + },
22541 + {
22542 + AVR32_OPC_MOVLS2, 4, 0xf9b00800, 0xfff0ff00,
22543 + &avr32_syntax_table[AVR32_SYNTAX_MOVLS2],
22544 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22545 + {
22546 + &avr32_ifield_table[AVR32_IFIELD_RY],
22547 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22548 + },
22549 + },
22550 + {
22551 + AVR32_OPC_MOVGT2, 4, 0xf9b00900, 0xfff0ff00,
22552 + &avr32_syntax_table[AVR32_SYNTAX_MOVGT2],
22553 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22554 + {
22555 + &avr32_ifield_table[AVR32_IFIELD_RY],
22556 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22557 + },
22558 + },
22559 + {
22560 + AVR32_OPC_MOVLE2, 4, 0xf9b00a00, 0xfff0ff00,
22561 + &avr32_syntax_table[AVR32_SYNTAX_MOVLE2],
22562 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22563 + {
22564 + &avr32_ifield_table[AVR32_IFIELD_RY],
22565 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22566 + },
22567 + },
22568 + {
22569 + AVR32_OPC_MOVHI2, 4, 0xf9b00b00, 0xfff0ff00,
22570 + &avr32_syntax_table[AVR32_SYNTAX_MOVHI2],
22571 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22572 + {
22573 + &avr32_ifield_table[AVR32_IFIELD_RY],
22574 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22575 + },
22576 + },
22577 + {
22578 + AVR32_OPC_MOVVS2, 4, 0xf9b00c00, 0xfff0ff00,
22579 + &avr32_syntax_table[AVR32_SYNTAX_MOVVS2],
22580 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22581 + {
22582 + &avr32_ifield_table[AVR32_IFIELD_RY],
22583 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22584 + },
22585 + },
22586 + {
22587 + AVR32_OPC_MOVVC2, 4, 0xf9b00d00, 0xfff0ff00,
22588 + &avr32_syntax_table[AVR32_SYNTAX_MOVVC2],
22589 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22590 + {
22591 + &avr32_ifield_table[AVR32_IFIELD_RY],
22592 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22593 + },
22594 + },
22595 + {
22596 + AVR32_OPC_MOVQS2, 4, 0xf9b00e00, 0xfff0ff00,
22597 + &avr32_syntax_table[AVR32_SYNTAX_MOVQS2],
22598 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22599 + {
22600 + &avr32_ifield_table[AVR32_IFIELD_RY],
22601 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22602 + },
22603 + },
22604 + {
22605 + AVR32_OPC_MOVAL2, 4, 0xf9b00f00, 0xfff0ff00,
22606 + &avr32_syntax_table[AVR32_SYNTAX_MOVAL2],
22607 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22608 + {
22609 + &avr32_ifield_table[AVR32_IFIELD_RY],
22610 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22611 + },
22612 + },
22613 + {
22614 + AVR32_OPC_MTDR, 4, 0xe7b00000, 0xfff0ff00,
22615 + &avr32_syntax_table[AVR32_SYNTAX_MTDR],
22616 + BFD_RELOC_AVR32_8S_EXT, 2, 0,
22617 + {
22618 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22619 + &avr32_ifield_table[AVR32_IFIELD_RY],
22620 + },
22621 + },
22622 + {
22623 + AVR32_OPC_MTSR, 4, 0xe3b00000, 0xfff0ff00,
22624 + &avr32_syntax_table[AVR32_SYNTAX_MTSR],
22625 + BFD_RELOC_AVR32_8S_EXT, 2, 0,
22626 + {
22627 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22628 + &avr32_ifield_table[AVR32_IFIELD_RY],
22629 + },
22630 + },
22631 + {
22632 + AVR32_OPC_MUL1, 2, 0xa1300000, 0xe1f00000,
22633 + &avr32_syntax_table[AVR32_SYNTAX_MUL1],
22634 + BFD_RELOC_UNUSED, 2, -1,
22635 + {
22636 + &avr32_ifield_table[AVR32_IFIELD_RY],
22637 + &avr32_ifield_table[AVR32_IFIELD_RX],
22638 + },
22639 + },
22640 + {
22641 + AVR32_OPC_MUL2, 4, 0xe0000240, 0xe1f0fff0,
22642 + &avr32_syntax_table[AVR32_SYNTAX_MUL2],
22643 + BFD_RELOC_UNUSED, 3, -1,
22644 + {
22645 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22646 + &avr32_ifield_table[AVR32_IFIELD_RX],
22647 + &avr32_ifield_table[AVR32_IFIELD_RY],
22648 + },
22649 + },
22650 + {
22651 + AVR32_OPC_MUL3, 4, 0xe0001000, 0xe1f0ff00,
22652 + &avr32_syntax_table[AVR32_SYNTAX_MUL3],
22653 + BFD_RELOC_AVR32_8S_EXT, 3, 2,
22654 + {
22655 + &avr32_ifield_table[AVR32_IFIELD_RY],
22656 + &avr32_ifield_table[AVR32_IFIELD_RX],
22657 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22658 + },
22659 + },
22660 + {
22661 + AVR32_OPC_MULHH_W, 4, 0xe0000780, 0xe1f0ffc0,
22662 + &avr32_syntax_table[AVR32_SYNTAX_MULHH_W],
22663 + BFD_RELOC_UNUSED, 5, -1,
22664 + {
22665 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22666 + &avr32_ifield_table[AVR32_IFIELD_RX],
22667 + &avr32_ifield_table[AVR32_IFIELD_X],
22668 + &avr32_ifield_table[AVR32_IFIELD_RY],
22669 + &avr32_ifield_table[AVR32_IFIELD_Y],
22670 + },
22671 + },
22672 + {
22673 + AVR32_OPC_MULNHH_W, 4, 0xe0000180, 0xe1f0ffc0,
22674 + &avr32_syntax_table[AVR32_SYNTAX_MULNHH_W],
22675 + BFD_RELOC_UNUSED, 5, -1,
22676 + {
22677 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22678 + &avr32_ifield_table[AVR32_IFIELD_RX],
22679 + &avr32_ifield_table[AVR32_IFIELD_X],
22680 + &avr32_ifield_table[AVR32_IFIELD_RY],
22681 + &avr32_ifield_table[AVR32_IFIELD_Y],
22682 + },
22683 + },
22684 + {
22685 + AVR32_OPC_MULNWH_D, 4, 0xe0000280, 0xe1f0ffe1,
22686 + &avr32_syntax_table[AVR32_SYNTAX_MULNWH_D],
22687 + BFD_RELOC_UNUSED, 4, -1,
22688 + {
22689 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22690 + &avr32_ifield_table[AVR32_IFIELD_RX],
22691 + &avr32_ifield_table[AVR32_IFIELD_RY],
22692 + &avr32_ifield_table[AVR32_IFIELD_Y],
22693 + },
22694 + },
22695 + {
22696 + AVR32_OPC_MULSD, 4, 0xe0000440, 0xe1f0fff0,
22697 + &avr32_syntax_table[AVR32_SYNTAX_MULSD],
22698 + BFD_RELOC_UNUSED, 3, -1,
22699 + {
22700 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22701 + &avr32_ifield_table[AVR32_IFIELD_RX],
22702 + &avr32_ifield_table[AVR32_IFIELD_RY],
22703 + },
22704 + },
22705 + {
22706 + AVR32_OPC_MULSATHH_H, 4, 0xe0000880, 0xe1f0ffc0,
22707 + &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_H],
22708 + BFD_RELOC_UNUSED, 5, -1,
22709 + {
22710 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22711 + &avr32_ifield_table[AVR32_IFIELD_RX],
22712 + &avr32_ifield_table[AVR32_IFIELD_X],
22713 + &avr32_ifield_table[AVR32_IFIELD_RY],
22714 + &avr32_ifield_table[AVR32_IFIELD_Y],
22715 + },
22716 + },
22717 + {
22718 + AVR32_OPC_MULSATHH_W, 4, 0xe0000980, 0xe1f0ffc0,
22719 + &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_W],
22720 + BFD_RELOC_UNUSED, 5, -1,
22721 + {
22722 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22723 + &avr32_ifield_table[AVR32_IFIELD_RX],
22724 + &avr32_ifield_table[AVR32_IFIELD_X],
22725 + &avr32_ifield_table[AVR32_IFIELD_RY],
22726 + &avr32_ifield_table[AVR32_IFIELD_Y],
22727 + },
22728 + },
22729 + {
22730 + AVR32_OPC_MULSATRNDHH_H, 4, 0xe0000a80, 0xe1f0ffc0,
22731 + &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDHH_H],
22732 + BFD_RELOC_UNUSED, 5, -1,
22733 + {
22734 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22735 + &avr32_ifield_table[AVR32_IFIELD_RX],
22736 + &avr32_ifield_table[AVR32_IFIELD_X],
22737 + &avr32_ifield_table[AVR32_IFIELD_RY],
22738 + &avr32_ifield_table[AVR32_IFIELD_Y],
22739 + },
22740 + },
22741 + {
22742 + AVR32_OPC_MULSATRNDWH_W, 4, 0xe0000b80, 0xe1f0ffe0,
22743 + &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDWH_W],
22744 + BFD_RELOC_UNUSED, 4, -1,
22745 + {
22746 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22747 + &avr32_ifield_table[AVR32_IFIELD_RX],
22748 + &avr32_ifield_table[AVR32_IFIELD_RY],
22749 + &avr32_ifield_table[AVR32_IFIELD_Y],
22750 + },
22751 + },
22752 + {
22753 + AVR32_OPC_MULSATWH_W, 4, 0xe0000e80, 0xe1f0ffe0,
22754 + &avr32_syntax_table[AVR32_SYNTAX_MULSATWH_W],
22755 + BFD_RELOC_UNUSED, 4, -1,
22756 + {
22757 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22758 + &avr32_ifield_table[AVR32_IFIELD_RX],
22759 + &avr32_ifield_table[AVR32_IFIELD_RY],
22760 + &avr32_ifield_table[AVR32_IFIELD_Y],
22761 + },
22762 + },
22763 + {
22764 + AVR32_OPC_MULU_D, 4, 0xe0000640, 0xe1f0fff1,
22765 + &avr32_syntax_table[AVR32_SYNTAX_MULU_D],
22766 + BFD_RELOC_UNUSED, 3, -1,
22767 + {
22768 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22769 + &avr32_ifield_table[AVR32_IFIELD_RX],
22770 + &avr32_ifield_table[AVR32_IFIELD_RY],
22771 + },
22772 + },
22773 + {
22774 + AVR32_OPC_MULWH_D, 4, 0xe0000d80, 0xe1f0ffe1,
22775 + &avr32_syntax_table[AVR32_SYNTAX_MULWH_D],
22776 + BFD_RELOC_UNUSED, 4, -1,
22777 + {
22778 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22779 + &avr32_ifield_table[AVR32_IFIELD_RX],
22780 + &avr32_ifield_table[AVR32_IFIELD_RY],
22781 + &avr32_ifield_table[AVR32_IFIELD_Y],
22782 + },
22783 + },
22784 + {
22785 + AVR32_OPC_MUSFR, 2, 0x5d300000, 0xfff00000,
22786 + &avr32_syntax_table[AVR32_SYNTAX_MUSFR],
22787 + BFD_RELOC_UNUSED, 1, -1,
22788 + {
22789 + &avr32_ifield_table[AVR32_IFIELD_RY],
22790 + }
22791 + },
22792 + {
22793 + AVR32_OPC_MUSTR, 2, 0x5d200000, 0xfff00000,
22794 + &avr32_syntax_table[AVR32_SYNTAX_MUSTR],
22795 + BFD_RELOC_UNUSED, 1, -1,
22796 + {
22797 + &avr32_ifield_table[AVR32_IFIELD_RY],
22798 + }
22799 + },
22800 + {
22801 + AVR32_OPC_MVCR_D, 4, 0xefa00010, 0xfff111ff,
22802 + &avr32_syntax_table[AVR32_SYNTAX_MVCR_D],
22803 + BFD_RELOC_UNUSED, 3, -1,
22804 + {
22805 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22806 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
22807 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
22808 + },
22809 + },
22810 + {
22811 + AVR32_OPC_MVCR_W, 4, 0xefa00000, 0xfff010ff,
22812 + &avr32_syntax_table[AVR32_SYNTAX_MVCR_W],
22813 + BFD_RELOC_UNUSED, 3, -1,
22814 + {
22815 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22816 + &avr32_ifield_table[AVR32_IFIELD_RY],
22817 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
22818 + },
22819 + },
22820 + {
22821 + AVR32_OPC_MVRC_D, 4, 0xefa00030, 0xfff111ff,
22822 + &avr32_syntax_table[AVR32_SYNTAX_MVRC_D],
22823 + BFD_RELOC_UNUSED, 3, -1,
22824 + {
22825 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22826 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
22827 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
22828 + },
22829 + },
22830 + {
22831 + AVR32_OPC_MVRC_W, 4, 0xefa00020, 0xfff010ff,
22832 + &avr32_syntax_table[AVR32_SYNTAX_MVRC_W],
22833 + BFD_RELOC_UNUSED, 3, -1,
22834 + {
22835 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22836 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
22837 + &avr32_ifield_table[AVR32_IFIELD_RY],
22838 + },
22839 + },
22840 + {
22841 + AVR32_OPC_NEG, 2, 0x5c300000, 0xfff00000,
22842 + &avr32_syntax_table[AVR32_SYNTAX_NEG],
22843 + BFD_RELOC_UNUSED, 1, -1,
22844 + {
22845 + &avr32_ifield_table[AVR32_IFIELD_RY],
22846 + }
22847 + },
22848 + {
22849 + AVR32_OPC_NOP, 2, 0xd7030000, 0xffff0000,
22850 + &avr32_syntax_table[AVR32_SYNTAX_NOP],
22851 + BFD_RELOC_UNUSED, 0, -1, { NULL },
22852 + },
22853 + {
22854 + AVR32_OPC_OR1, 2, 0x00400000, 0xe1f00000,
22855 + &avr32_syntax_table[AVR32_SYNTAX_OR1],
22856 + BFD_RELOC_UNUSED, 2, -1,
22857 + {
22858 + &avr32_ifield_table[AVR32_IFIELD_RY],
22859 + &avr32_ifield_table[AVR32_IFIELD_RX],
22860 + },
22861 + },
22862 + {
22863 + AVR32_OPC_OR2, 4, 0xe1e01000, 0xe1f0fe00,
22864 + &avr32_syntax_table[AVR32_SYNTAX_OR2],
22865 + BFD_RELOC_UNUSED, 4, -1,
22866 + {
22867 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22868 + &avr32_ifield_table[AVR32_IFIELD_RX],
22869 + &avr32_ifield_table[AVR32_IFIELD_RY],
22870 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
22871 + },
22872 + },
22873 + {
22874 + AVR32_OPC_OR3, 4, 0xe1e01200, 0xe1f0fe00,
22875 + &avr32_syntax_table[AVR32_SYNTAX_OR3],
22876 + BFD_RELOC_UNUSED, 4, -1,
22877 + {
22878 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22879 + &avr32_ifield_table[AVR32_IFIELD_RX],
22880 + &avr32_ifield_table[AVR32_IFIELD_RY],
22881 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
22882 + },
22883 + },
22884 + {
22885 + AVR32_OPC_ORH, 4, 0xea100000, 0xfff00000,
22886 + &avr32_syntax_table[AVR32_SYNTAX_ORH],
22887 + BFD_RELOC_AVR32_16U, 2, 1,
22888 + {
22889 + &avr32_ifield_table[AVR32_IFIELD_RY],
22890 + &avr32_ifield_table[AVR32_IFIELD_K16],
22891 + },
22892 + },
22893 + {
22894 + AVR32_OPC_ORL, 4, 0xe8100000, 0xfff00000,
22895 + &avr32_syntax_table[AVR32_SYNTAX_ORL],
22896 + BFD_RELOC_AVR32_16U, 2, 1,
22897 + {
22898 + &avr32_ifield_table[AVR32_IFIELD_RY],
22899 + &avr32_ifield_table[AVR32_IFIELD_K16],
22900 + },
22901 + },
22902 + {
22903 + AVR32_OPC_PABS_SB, 4, 0xe00023e0, 0xfff0fff0,
22904 + &avr32_syntax_table[AVR32_SYNTAX_PABS_SB],
22905 + BFD_RELOC_UNUSED, 2, -1,
22906 + {
22907 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22908 + &avr32_ifield_table[AVR32_IFIELD_RY],
22909 + },
22910 + },
22911 + {
22912 + AVR32_OPC_PABS_SH, 4, 0xe00023f0, 0xfff0fff0,
22913 + &avr32_syntax_table[AVR32_SYNTAX_PABS_SH],
22914 + BFD_RELOC_UNUSED, 2, -1,
22915 + {
22916 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22917 + &avr32_ifield_table[AVR32_IFIELD_RY],
22918 + },
22919 + },
22920 + {
22921 + AVR32_OPC_PACKSH_SB, 4, 0xe00024d0, 0xe1f0fff0,
22922 + &avr32_syntax_table[AVR32_SYNTAX_PACKSH_SB],
22923 + BFD_RELOC_UNUSED, 3, -1,
22924 + {
22925 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22926 + &avr32_ifield_table[AVR32_IFIELD_RX],
22927 + &avr32_ifield_table[AVR32_IFIELD_RY],
22928 + },
22929 + },
22930 + {
22931 + AVR32_OPC_PACKSH_UB, 4, 0xe00024c0, 0xe1f0fff0,
22932 + &avr32_syntax_table[AVR32_SYNTAX_PACKSH_UB],
22933 + BFD_RELOC_UNUSED, 3, -1,
22934 + {
22935 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22936 + &avr32_ifield_table[AVR32_IFIELD_RX],
22937 + &avr32_ifield_table[AVR32_IFIELD_RY],
22938 + },
22939 + },
22940 + {
22941 + AVR32_OPC_PACKW_SH, 4, 0xe0002470, 0xe1f0fff0,
22942 + &avr32_syntax_table[AVR32_SYNTAX_PACKW_SH],
22943 + BFD_RELOC_UNUSED, 3, -1,
22944 + {
22945 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22946 + &avr32_ifield_table[AVR32_IFIELD_RX],
22947 + &avr32_ifield_table[AVR32_IFIELD_RY],
22948 + },
22949 + },
22950 + {
22951 + AVR32_OPC_PADD_B, 4, 0xe0002300, 0xe1f0fff0,
22952 + &avr32_syntax_table[AVR32_SYNTAX_PADD_B],
22953 + BFD_RELOC_UNUSED, 3, -1,
22954 + {
22955 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22956 + &avr32_ifield_table[AVR32_IFIELD_RX],
22957 + &avr32_ifield_table[AVR32_IFIELD_RY],
22958 + },
22959 + },
22960 + {
22961 + AVR32_OPC_PADD_H, 4, 0xe0002000, 0xe1f0fff0,
22962 + &avr32_syntax_table[AVR32_SYNTAX_PADD_H],
22963 + BFD_RELOC_UNUSED, 3, -1,
22964 + {
22965 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22966 + &avr32_ifield_table[AVR32_IFIELD_RX],
22967 + &avr32_ifield_table[AVR32_IFIELD_RY],
22968 + },
22969 + },
22970 + {
22971 + AVR32_OPC_PADDH_SH, 4, 0xe00020c0, 0xe1f0fff0,
22972 + &avr32_syntax_table[AVR32_SYNTAX_PADDH_SH],
22973 + BFD_RELOC_UNUSED, 3, -1,
22974 + {
22975 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22976 + &avr32_ifield_table[AVR32_IFIELD_RX],
22977 + &avr32_ifield_table[AVR32_IFIELD_RY],
22978 + },
22979 + },
22980 + {
22981 + AVR32_OPC_PADDH_UB, 4, 0xe0002360, 0xe1f0fff0,
22982 + &avr32_syntax_table[AVR32_SYNTAX_PADDH_UB],
22983 + BFD_RELOC_UNUSED, 3, -1,
22984 + {
22985 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22986 + &avr32_ifield_table[AVR32_IFIELD_RX],
22987 + &avr32_ifield_table[AVR32_IFIELD_RY],
22988 + },
22989 + },
22990 + {
22991 + AVR32_OPC_PADDS_SB, 4, 0xe0002320, 0xe1f0fff0,
22992 + &avr32_syntax_table[AVR32_SYNTAX_PADDS_SB],
22993 + BFD_RELOC_UNUSED, 3, -1,
22994 + {
22995 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22996 + &avr32_ifield_table[AVR32_IFIELD_RX],
22997 + &avr32_ifield_table[AVR32_IFIELD_RY],
22998 + },
22999 + },
23000 + {
23001 + AVR32_OPC_PADDS_SH, 4, 0xe0002040, 0xe1f0fff0,
23002 + &avr32_syntax_table[AVR32_SYNTAX_PADDS_SH],
23003 + BFD_RELOC_UNUSED, 3, -1,
23004 + {
23005 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23006 + &avr32_ifield_table[AVR32_IFIELD_RX],
23007 + &avr32_ifield_table[AVR32_IFIELD_RY],
23008 + },
23009 + },
23010 + {
23011 + AVR32_OPC_PADDS_UB, 4, 0xe0002340, 0xe1f0fff0,
23012 + &avr32_syntax_table[AVR32_SYNTAX_PADDS_UB],
23013 + BFD_RELOC_UNUSED, 3, -1,
23014 + {
23015 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23016 + &avr32_ifield_table[AVR32_IFIELD_RX],
23017 + &avr32_ifield_table[AVR32_IFIELD_RY],
23018 + },
23019 + },
23020 + {
23021 + AVR32_OPC_PADDS_UH, 4, 0xe0002080, 0xe1f0fff0,
23022 + &avr32_syntax_table[AVR32_SYNTAX_PADDS_UH],
23023 + BFD_RELOC_UNUSED, 3, -1,
23024 + {
23025 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23026 + &avr32_ifield_table[AVR32_IFIELD_RX],
23027 + &avr32_ifield_table[AVR32_IFIELD_RY],
23028 + },
23029 + },
23030 + {
23031 + AVR32_OPC_PADDSUB_H, 4, 0xe0002100, 0xe1f0ffc0,
23032 + &avr32_syntax_table[AVR32_SYNTAX_PADDSUB_H],
23033 + BFD_RELOC_UNUSED, 5, -1,
23034 + {
23035 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23036 + &avr32_ifield_table[AVR32_IFIELD_RX],
23037 + &avr32_ifield_table[AVR32_IFIELD_X],
23038 + &avr32_ifield_table[AVR32_IFIELD_RY],
23039 + &avr32_ifield_table[AVR32_IFIELD_Y],
23040 + },
23041 + },
23042 + {
23043 + AVR32_OPC_PADDSUBH_SH, 4, 0xe0002280, 0xe1f0ffc0,
23044 + &avr32_syntax_table[AVR32_SYNTAX_PADDSUBH_SH],
23045 + BFD_RELOC_UNUSED, 5, -1,
23046 + {
23047 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23048 + &avr32_ifield_table[AVR32_IFIELD_RX],
23049 + &avr32_ifield_table[AVR32_IFIELD_X],
23050 + &avr32_ifield_table[AVR32_IFIELD_RY],
23051 + &avr32_ifield_table[AVR32_IFIELD_Y],
23052 + },
23053 + },
23054 + {
23055 + AVR32_OPC_PADDSUBS_SH, 4, 0xe0002180, 0xe1f0ffc0,
23056 + &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_SH],
23057 + BFD_RELOC_UNUSED, 5, -1,
23058 + {
23059 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23060 + &avr32_ifield_table[AVR32_IFIELD_RX],
23061 + &avr32_ifield_table[AVR32_IFIELD_X],
23062 + &avr32_ifield_table[AVR32_IFIELD_RY],
23063 + &avr32_ifield_table[AVR32_IFIELD_Y],
23064 + },
23065 + },
23066 + {
23067 + AVR32_OPC_PADDSUBS_UH, 4, 0xe0002200, 0xe1f0ffc0,
23068 + &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_UH],
23069 + BFD_RELOC_UNUSED, 5, -1,
23070 + {
23071 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23072 + &avr32_ifield_table[AVR32_IFIELD_RX],
23073 + &avr32_ifield_table[AVR32_IFIELD_X],
23074 + &avr32_ifield_table[AVR32_IFIELD_RY],
23075 + &avr32_ifield_table[AVR32_IFIELD_Y],
23076 + },
23077 + },
23078 + {
23079 + AVR32_OPC_PADDX_H, 4, 0xe0002020, 0xe1f0fff0,
23080 + &avr32_syntax_table[AVR32_SYNTAX_PADDX_H],
23081 + BFD_RELOC_UNUSED, 3, -1,
23082 + {
23083 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23084 + &avr32_ifield_table[AVR32_IFIELD_RX],
23085 + &avr32_ifield_table[AVR32_IFIELD_RY],
23086 + },
23087 + },
23088 + {
23089 + AVR32_OPC_PADDXH_SH, 4, 0xe00020e0, 0xe1f0fff0,
23090 + &avr32_syntax_table[AVR32_SYNTAX_PADDXH_SH],
23091 + BFD_RELOC_UNUSED, 3, -1,
23092 + {
23093 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23094 + &avr32_ifield_table[AVR32_IFIELD_RX],
23095 + &avr32_ifield_table[AVR32_IFIELD_RY],
23096 + },
23097 + },
23098 + {
23099 + AVR32_OPC_PADDXS_SH, 4, 0xe0002060, 0xe1f0fff0,
23100 + &avr32_syntax_table[AVR32_SYNTAX_PADDXS_SH],
23101 + BFD_RELOC_UNUSED, 3, -1,
23102 + {
23103 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23104 + &avr32_ifield_table[AVR32_IFIELD_RX],
23105 + &avr32_ifield_table[AVR32_IFIELD_RY],
23106 + },
23107 + },
23108 + {
23109 + AVR32_OPC_PADDXS_UH, 4, 0xe00020a0, 0xe1f0fff0,
23110 + &avr32_syntax_table[AVR32_SYNTAX_PADDXS_UH],
23111 + BFD_RELOC_UNUSED, 3, -1,
23112 + {
23113 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23114 + &avr32_ifield_table[AVR32_IFIELD_RX],
23115 + &avr32_ifield_table[AVR32_IFIELD_RY],
23116 + },
23117 + },
23118 + {
23119 + AVR32_OPC_PASR_B, 4, 0xe0002410, 0xe1f8fff0,
23120 + &avr32_syntax_table[AVR32_SYNTAX_PASR_B],
23121 + BFD_RELOC_UNUSED, 3, -1,
23122 + {
23123 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23124 + &avr32_ifield_table[AVR32_IFIELD_RX],
23125 + &avr32_ifield_table[AVR32_IFIELD_COND3],
23126 + },
23127 + },
23128 + {
23129 + AVR32_OPC_PASR_H, 4, 0xe0002440, 0xe1f0fff0,
23130 + &avr32_syntax_table[AVR32_SYNTAX_PASR_H],
23131 + BFD_RELOC_UNUSED, 3, -1,
23132 + {
23133 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23134 + &avr32_ifield_table[AVR32_IFIELD_RX],
23135 + &avr32_ifield_table[AVR32_IFIELD_RY],
23136 + },
23137 + },
23138 + {
23139 + AVR32_OPC_PAVG_SH, 4, 0xe00023d0, 0xe1f0fff0,
23140 + &avr32_syntax_table[AVR32_SYNTAX_PAVG_SH],
23141 + BFD_RELOC_UNUSED, 3, -1,
23142 + {
23143 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23144 + &avr32_ifield_table[AVR32_IFIELD_RX],
23145 + &avr32_ifield_table[AVR32_IFIELD_RY],
23146 + },
23147 + },
23148 + {
23149 + AVR32_OPC_PAVG_UB, 4, 0xe00023c0, 0xe1f0fff0,
23150 + &avr32_syntax_table[AVR32_SYNTAX_PAVG_UB],
23151 + BFD_RELOC_UNUSED, 3, -1,
23152 + {
23153 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23154 + &avr32_ifield_table[AVR32_IFIELD_RX],
23155 + &avr32_ifield_table[AVR32_IFIELD_RY],
23156 + },
23157 + },
23158 + {
23159 + AVR32_OPC_PLSL_B, 4, 0xe0002420, 0xe1f8fff0,
23160 + &avr32_syntax_table[AVR32_SYNTAX_PLSL_B],
23161 + BFD_RELOC_UNUSED, 3, -1,
23162 + {
23163 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23164 + &avr32_ifield_table[AVR32_IFIELD_RX],
23165 + &avr32_ifield_table[AVR32_IFIELD_COND3],
23166 + },
23167 + },
23168 + {
23169 + AVR32_OPC_PLSL_H, 4, 0xe0002450, 0xe1f0fff0,
23170 + &avr32_syntax_table[AVR32_SYNTAX_PLSL_H],
23171 + BFD_RELOC_UNUSED, 3, -1,
23172 + {
23173 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23174 + &avr32_ifield_table[AVR32_IFIELD_RX],
23175 + &avr32_ifield_table[AVR32_IFIELD_RY],
23176 + },
23177 + },
23178 + {
23179 + AVR32_OPC_PLSR_B, 4, 0xe0002430, 0xe1f8fff0,
23180 + &avr32_syntax_table[AVR32_SYNTAX_PLSR_B],
23181 + BFD_RELOC_UNUSED, 3, -1,
23182 + {
23183 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23184 + &avr32_ifield_table[AVR32_IFIELD_RX],
23185 + &avr32_ifield_table[AVR32_IFIELD_COND3],
23186 + },
23187 + },
23188 + {
23189 + AVR32_OPC_PLSR_H, 4, 0xe0002460, 0xe1f0fff0,
23190 + &avr32_syntax_table[AVR32_SYNTAX_PLSR_H],
23191 + BFD_RELOC_UNUSED, 3, -1,
23192 + {
23193 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23194 + &avr32_ifield_table[AVR32_IFIELD_RX],
23195 + &avr32_ifield_table[AVR32_IFIELD_RY],
23196 + },
23197 + },
23198 + {
23199 + AVR32_OPC_PMAX_SH, 4, 0xe0002390, 0xe1f0fff0,
23200 + &avr32_syntax_table[AVR32_SYNTAX_PMAX_SH],
23201 + BFD_RELOC_UNUSED, 3, -1,
23202 + {
23203 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23204 + &avr32_ifield_table[AVR32_IFIELD_RX],
23205 + &avr32_ifield_table[AVR32_IFIELD_RY],
23206 + },
23207 + },
23208 + {
23209 + AVR32_OPC_PMAX_UB, 4, 0xe0002380, 0xe1f0fff0,
23210 + &avr32_syntax_table[AVR32_SYNTAX_PMAX_UB],
23211 + BFD_RELOC_UNUSED, 3, -1,
23212 + {
23213 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23214 + &avr32_ifield_table[AVR32_IFIELD_RX],
23215 + &avr32_ifield_table[AVR32_IFIELD_RY],
23216 + },
23217 + },
23218 + {
23219 + AVR32_OPC_PMIN_SH, 4, 0xe00023b0, 0xe1f0fff0,
23220 + &avr32_syntax_table[AVR32_SYNTAX_PMIN_SH],
23221 + BFD_RELOC_UNUSED, 3, -1,
23222 + {
23223 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23224 + &avr32_ifield_table[AVR32_IFIELD_RX],
23225 + &avr32_ifield_table[AVR32_IFIELD_RY],
23226 + },
23227 + },
23228 + {
23229 + AVR32_OPC_PMIN_UB, 4, 0xe00023a0, 0xe1f0fff0,
23230 + &avr32_syntax_table[AVR32_SYNTAX_PMIN_UB],
23231 + BFD_RELOC_UNUSED, 3, -1,
23232 + {
23233 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23234 + &avr32_ifield_table[AVR32_IFIELD_RX],
23235 + &avr32_ifield_table[AVR32_IFIELD_RY],
23236 + },
23237 + },
23238 + {
23239 + AVR32_OPC_POPJC, 2, 0xd7130000, 0xffff0000,
23240 + &avr32_syntax_table[AVR32_SYNTAX_POPJC],
23241 + BFD_RELOC_UNUSED, 0, -1, { NULL },
23242 + },
23243 + {
23244 + AVR32_OPC_POPM, 2, 0xd0020000, 0xf0070000,
23245 + &avr32_syntax_table[AVR32_SYNTAX_POPM],
23246 + BFD_RELOC_UNUSED, 1, -1,
23247 + {
23248 + &avr32_ifield_table[AVR32_IFIELD_POPM],
23249 + },
23250 + },
23251 + {
23252 + AVR32_OPC_POPM_E, 4, 0xe3cd0000, 0xffff0000,
23253 + &avr32_syntax_table[AVR32_SYNTAX_POPM_E],
23254 + BFD_RELOC_UNUSED, 1, -1,
23255 + {
23256 + &avr32_ifield_table[AVR32_IFIELD_K16],
23257 + },
23258 + },
23259 + {
23260 + AVR32_OPC_PREF, 4, 0xf2100000, 0xfff00000,
23261 + &avr32_syntax_table[AVR32_SYNTAX_PREF],
23262 + BFD_RELOC_AVR32_16S, 2, -1,
23263 + {
23264 + &avr32_ifield_table[AVR32_IFIELD_RY],
23265 + &avr32_ifield_table[AVR32_IFIELD_K16],
23266 + },
23267 + },
23268 + {
23269 + AVR32_OPC_PSAD, 4, 0xe0002400, 0xe1f0fff0,
23270 + &avr32_syntax_table[AVR32_SYNTAX_PSAD],
23271 + BFD_RELOC_UNUSED, 3, -1,
23272 + {
23273 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23274 + &avr32_ifield_table[AVR32_IFIELD_RX],
23275 + &avr32_ifield_table[AVR32_IFIELD_RY],
23276 + },
23277 + },
23278 + {
23279 + AVR32_OPC_PSUB_B, 4, 0xe0002310, 0xe1f0fff0,
23280 + &avr32_syntax_table[AVR32_SYNTAX_PSUB_B],
23281 + BFD_RELOC_UNUSED, 3, -1,
23282 + {
23283 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23284 + &avr32_ifield_table[AVR32_IFIELD_RX],
23285 + &avr32_ifield_table[AVR32_IFIELD_RY],
23286 + },
23287 + },
23288 + {
23289 + AVR32_OPC_PSUB_H, 4, 0xe0002010, 0xe1f0fff0,
23290 + &avr32_syntax_table[AVR32_SYNTAX_PSUB_H],
23291 + BFD_RELOC_UNUSED, 3, -1,
23292 + {
23293 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23294 + &avr32_ifield_table[AVR32_IFIELD_RX],
23295 + &avr32_ifield_table[AVR32_IFIELD_RY],
23296 + },
23297 + },
23298 + {
23299 + AVR32_OPC_PSUBADD_H, 4, 0xe0002140, 0xe1f0ffc0,
23300 + &avr32_syntax_table[AVR32_SYNTAX_PSUBADD_H],
23301 + BFD_RELOC_UNUSED, 5, -1,
23302 + {
23303 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23304 + &avr32_ifield_table[AVR32_IFIELD_RX],
23305 + &avr32_ifield_table[AVR32_IFIELD_X],
23306 + &avr32_ifield_table[AVR32_IFIELD_RY],
23307 + &avr32_ifield_table[AVR32_IFIELD_Y],
23308 + },
23309 + },
23310 + {
23311 + AVR32_OPC_PSUBADDH_SH, 4, 0xe00022c0, 0xe1f0ffc0,
23312 + &avr32_syntax_table[AVR32_SYNTAX_PSUBADDH_SH],
23313 + BFD_RELOC_UNUSED, 5, -1,
23314 + {
23315 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23316 + &avr32_ifield_table[AVR32_IFIELD_RX],
23317 + &avr32_ifield_table[AVR32_IFIELD_X],
23318 + &avr32_ifield_table[AVR32_IFIELD_RY],
23319 + &avr32_ifield_table[AVR32_IFIELD_Y],
23320 + },
23321 + },
23322 + {
23323 + AVR32_OPC_PSUBADDS_SH, 4, 0xe00021c0, 0xe1f0ffc0,
23324 + &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_SH],
23325 + BFD_RELOC_UNUSED, 5, -1,
23326 + {
23327 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23328 + &avr32_ifield_table[AVR32_IFIELD_RX],
23329 + &avr32_ifield_table[AVR32_IFIELD_X],
23330 + &avr32_ifield_table[AVR32_IFIELD_RY],
23331 + &avr32_ifield_table[AVR32_IFIELD_Y],
23332 + },
23333 + },
23334 + {
23335 + AVR32_OPC_PSUBADDS_UH, 4, 0xe0002240, 0xe1f0ffc0,
23336 + &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_UH],
23337 + BFD_RELOC_UNUSED, 5, -1,
23338 + {
23339 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23340 + &avr32_ifield_table[AVR32_IFIELD_RX],
23341 + &avr32_ifield_table[AVR32_IFIELD_X],
23342 + &avr32_ifield_table[AVR32_IFIELD_RY],
23343 + &avr32_ifield_table[AVR32_IFIELD_Y],
23344 + },
23345 + },
23346 + {
23347 + AVR32_OPC_PSUBH_SH, 4, 0xe00020d0, 0xe1f0fff0,
23348 + &avr32_syntax_table[AVR32_SYNTAX_PSUBH_SH],
23349 + BFD_RELOC_UNUSED, 3, -1,
23350 + {
23351 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23352 + &avr32_ifield_table[AVR32_IFIELD_RX],
23353 + &avr32_ifield_table[AVR32_IFIELD_RY],
23354 + },
23355 + },
23356 + {
23357 + AVR32_OPC_PSUBH_UB, 4, 0xe0002370, 0xe1f0fff0,
23358 + &avr32_syntax_table[AVR32_SYNTAX_PSUBH_UB],
23359 + BFD_RELOC_UNUSED, 3, -1,
23360 + {
23361 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23362 + &avr32_ifield_table[AVR32_IFIELD_RX],
23363 + &avr32_ifield_table[AVR32_IFIELD_RY],
23364 + },
23365 + },
23366 + {
23367 + AVR32_OPC_PSUBS_SB, 4, 0xe0002330, 0xe1f0fff0,
23368 + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SB],
23369 + BFD_RELOC_UNUSED, 3, -1,
23370 + {
23371 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23372 + &avr32_ifield_table[AVR32_IFIELD_RX],
23373 + &avr32_ifield_table[AVR32_IFIELD_RY],
23374 + },
23375 + },
23376 + {
23377 + AVR32_OPC_PSUBS_SH, 4, 0xe0002050, 0xe1f0fff0,
23378 + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SH],
23379 + BFD_RELOC_UNUSED, 3, -1,
23380 + {
23381 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23382 + &avr32_ifield_table[AVR32_IFIELD_RX],
23383 + &avr32_ifield_table[AVR32_IFIELD_RY],
23384 + },
23385 + },
23386 + {
23387 + AVR32_OPC_PSUBS_UB, 4, 0xe0002350, 0xe1f0fff0,
23388 + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UB],
23389 + BFD_RELOC_UNUSED, 3, -1,
23390 + {
23391 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23392 + &avr32_ifield_table[AVR32_IFIELD_RX],
23393 + &avr32_ifield_table[AVR32_IFIELD_RY],
23394 + },
23395 + },
23396 + {
23397 + AVR32_OPC_PSUBS_UH, 4, 0xe0002090, 0xe1f0fff0,
23398 + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UH],
23399 + BFD_RELOC_UNUSED, 3, -1,
23400 + {
23401 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23402 + &avr32_ifield_table[AVR32_IFIELD_RX],
23403 + &avr32_ifield_table[AVR32_IFIELD_RY],
23404 + },
23405 + },
23406 + {
23407 + AVR32_OPC_PSUBX_H, 4, 0xe0002030, 0xe1f0fff0,
23408 + &avr32_syntax_table[AVR32_SYNTAX_PSUBX_H],
23409 + BFD_RELOC_UNUSED, 3, -1,
23410 + {
23411 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23412 + &avr32_ifield_table[AVR32_IFIELD_RX],
23413 + &avr32_ifield_table[AVR32_IFIELD_RY],
23414 + },
23415 + },
23416 + {
23417 + AVR32_OPC_PSUBXH_SH, 4, 0xe00020f0, 0xe1f0fff0,
23418 + &avr32_syntax_table[AVR32_SYNTAX_PSUBXH_SH],
23419 + BFD_RELOC_UNUSED, 3, -1,
23420 + {
23421 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23422 + &avr32_ifield_table[AVR32_IFIELD_RX],
23423 + &avr32_ifield_table[AVR32_IFIELD_RY],
23424 + },
23425 + },
23426 + {
23427 + AVR32_OPC_PSUBXS_SH, 4, 0xe0002070, 0xe1f0fff0,
23428 + &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_SH],
23429 + BFD_RELOC_UNUSED, 3, -1,
23430 + {
23431 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23432 + &avr32_ifield_table[AVR32_IFIELD_RX],
23433 + &avr32_ifield_table[AVR32_IFIELD_RY],
23434 + },
23435 + },
23436 + {
23437 + AVR32_OPC_PSUBXS_UH, 4, 0xe00020b0, 0xe1f0fff0,
23438 + &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_UH],
23439 + BFD_RELOC_UNUSED, 3, -1,
23440 + {
23441 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23442 + &avr32_ifield_table[AVR32_IFIELD_RX],
23443 + &avr32_ifield_table[AVR32_IFIELD_RY],
23444 + },
23445 + },
23446 + {
23447 + AVR32_OPC_PUNPCKSB_H, 4, 0xe00024a0, 0xe1ffffe0,
23448 + &avr32_syntax_table[AVR32_SYNTAX_PUNPCKSB_H],
23449 + BFD_RELOC_UNUSED, 3, -1,
23450 + {
23451 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23452 + &avr32_ifield_table[AVR32_IFIELD_RX],
23453 + &avr32_ifield_table[AVR32_IFIELD_Y],
23454 + },
23455 + },
23456 + {
23457 + AVR32_OPC_PUNPCKUB_H, 4, 0xe0002480, 0xe1ffffe0,
23458 + &avr32_syntax_table[AVR32_SYNTAX_PUNPCKUB_H],
23459 + BFD_RELOC_UNUSED, 3, -1,
23460 + {
23461 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23462 + &avr32_ifield_table[AVR32_IFIELD_RX],
23463 + &avr32_ifield_table[AVR32_IFIELD_Y],
23464 + },
23465 + },
23466 + {
23467 + AVR32_OPC_PUSHJC, 2, 0xd7230000, 0xffff0000,
23468 + &avr32_syntax_table[AVR32_SYNTAX_PUSHJC],
23469 + BFD_RELOC_UNUSED, 0, -1, { NULL },
23470 + },
23471 + {
23472 + AVR32_OPC_PUSHM, 2, 0xd0010000, 0xf00f0000,
23473 + &avr32_syntax_table[AVR32_SYNTAX_PUSHM],
23474 + BFD_RELOC_UNUSED, 1, -1,
23475 + {
23476 + &avr32_ifield_table[AVR32_IFIELD_K8C],
23477 + },
23478 + },
23479 + {
23480 + AVR32_OPC_PUSHM_E, 4, 0xebcd0000, 0xffff0000,
23481 + &avr32_syntax_table[AVR32_SYNTAX_PUSHM_E],
23482 + BFD_RELOC_UNUSED, 1, -1,
23483 + {
23484 + &avr32_ifield_table[AVR32_IFIELD_K16],
23485 + },
23486 + },
23487 + {
23488 + AVR32_OPC_RCALL1, 2, 0xc00c0000, 0xf00c0000,
23489 + &avr32_syntax_table[AVR32_SYNTAX_RCALL1],
23490 + BFD_RELOC_AVR32_11H_PCREL, 1, 0,
23491 + {
23492 + &avr32_ifield_table[AVR32_IFIELD_K10],
23493 + },
23494 + },
23495 + {
23496 + AVR32_OPC_RCALL2, 4, 0xe0a00000, 0xe1ef0000,
23497 + &avr32_syntax_table[AVR32_SYNTAX_RCALL2],
23498 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
23499 + {
23500 + &avr32_ifield_table[AVR32_IFIELD_K21],
23501 + },
23502 + },
23503 + {
23504 + AVR32_OPC_RETEQ, 2, 0x5e000000, 0xfff00000,
23505 + &avr32_syntax_table[AVR32_SYNTAX_RETEQ],
23506 + BFD_RELOC_NONE, 1, -1,
23507 + {
23508 + &avr32_ifield_table[AVR32_IFIELD_RY],
23509 + },
23510 + },
23511 + {
23512 + AVR32_OPC_RETNE, 2, 0x5e100000, 0xfff00000,
23513 + &avr32_syntax_table[AVR32_SYNTAX_RETNE],
23514 + BFD_RELOC_NONE, 1, -1,
23515 + {
23516 + &avr32_ifield_table[AVR32_IFIELD_RY],
23517 + },
23518 + },
23519 + {
23520 + AVR32_OPC_RETCC, 2, 0x5e200000, 0xfff00000,
23521 + &avr32_syntax_table[AVR32_SYNTAX_RETHS],
23522 + BFD_RELOC_NONE, 1, -1,
23523 + {
23524 + &avr32_ifield_table[AVR32_IFIELD_RY],
23525 + },
23526 + },
23527 + {
23528 + AVR32_OPC_RETCS, 2, 0x5e300000, 0xfff00000,
23529 + &avr32_syntax_table[AVR32_SYNTAX_RETLO],
23530 + BFD_RELOC_NONE, 1, -1,
23531 + {
23532 + &avr32_ifield_table[AVR32_IFIELD_RY],
23533 + },
23534 + },
23535 + {
23536 + AVR32_OPC_RETGE, 2, 0x5e400000, 0xfff00000,
23537 + &avr32_syntax_table[AVR32_SYNTAX_RETGE],
23538 + BFD_RELOC_NONE, 1, -1,
23539 + {
23540 + &avr32_ifield_table[AVR32_IFIELD_RY],
23541 + },
23542 + },
23543 + {
23544 + AVR32_OPC_RETLT, 2, 0x5e500000, 0xfff00000,
23545 + &avr32_syntax_table[AVR32_SYNTAX_RETLT],
23546 + BFD_RELOC_NONE, 1, -1,
23547 + {
23548 + &avr32_ifield_table[AVR32_IFIELD_RY],
23549 + },
23550 + },
23551 + {
23552 + AVR32_OPC_RETMI, 2, 0x5e600000, 0xfff00000,
23553 + &avr32_syntax_table[AVR32_SYNTAX_RETMI],
23554 + BFD_RELOC_NONE, 1, -1,
23555 + {
23556 + &avr32_ifield_table[AVR32_IFIELD_RY],
23557 + },
23558 + },
23559 + {
23560 + AVR32_OPC_RETPL, 2, 0x5e700000, 0xfff00000,
23561 + &avr32_syntax_table[AVR32_SYNTAX_RETPL],
23562 + BFD_RELOC_NONE, 1, -1,
23563 + {
23564 + &avr32_ifield_table[AVR32_IFIELD_RY],
23565 + },
23566 + },
23567 + {
23568 + AVR32_OPC_RETLS, 2, 0x5e800000, 0xfff00000,
23569 + &avr32_syntax_table[AVR32_SYNTAX_RETLS],
23570 + BFD_RELOC_NONE, 1, -1,
23571 + {
23572 + &avr32_ifield_table[AVR32_IFIELD_RY],
23573 + },
23574 + },
23575 + {
23576 + AVR32_OPC_RETGT, 2, 0x5e900000, 0xfff00000,
23577 + &avr32_syntax_table[AVR32_SYNTAX_RETGT],
23578 + BFD_RELOC_NONE, 1, -1,
23579 + {
23580 + &avr32_ifield_table[AVR32_IFIELD_RY],
23581 + },
23582 + },
23583 + {
23584 + AVR32_OPC_RETLE, 2, 0x5ea00000, 0xfff00000,
23585 + &avr32_syntax_table[AVR32_SYNTAX_RETLE],
23586 + BFD_RELOC_NONE, 1, -1,
23587 + {
23588 + &avr32_ifield_table[AVR32_IFIELD_RY],
23589 + },
23590 + },
23591 + {
23592 + AVR32_OPC_RETHI, 2, 0x5eb00000, 0xfff00000,
23593 + &avr32_syntax_table[AVR32_SYNTAX_RETHI],
23594 + BFD_RELOC_NONE, 1, -1,
23595 + {
23596 + &avr32_ifield_table[AVR32_IFIELD_RY],
23597 + },
23598 + },
23599 + {
23600 + AVR32_OPC_RETVS, 2, 0x5ec00000, 0xfff00000,
23601 + &avr32_syntax_table[AVR32_SYNTAX_RETVS],
23602 + BFD_RELOC_NONE, 1, -1,
23603 + {
23604 + &avr32_ifield_table[AVR32_IFIELD_RY],
23605 + },
23606 + },
23607 + {
23608 + AVR32_OPC_RETVC, 2, 0x5ed00000, 0xfff00000,
23609 + &avr32_syntax_table[AVR32_SYNTAX_RETVC],
23610 + BFD_RELOC_NONE, 1, -1,
23611 + {
23612 + &avr32_ifield_table[AVR32_IFIELD_RY],
23613 + },
23614 + },
23615 + {
23616 + AVR32_OPC_RETQS, 2, 0x5ee00000, 0xfff00000,
23617 + &avr32_syntax_table[AVR32_SYNTAX_RETQS],
23618 + BFD_RELOC_NONE, 1, -1,
23619 + {
23620 + &avr32_ifield_table[AVR32_IFIELD_RY],
23621 + },
23622 + },
23623 + {
23624 + AVR32_OPC_RETAL, 2, 0x5ef00000, 0xfff00000,
23625 + &avr32_syntax_table[AVR32_SYNTAX_RETAL],
23626 + BFD_RELOC_NONE, 1, -1,
23627 + {
23628 + &avr32_ifield_table[AVR32_IFIELD_RY],
23629 + },
23630 + },
23631 + {
23632 + AVR32_OPC_RETD, 2, 0xd6230000, 0xffff0000,
23633 + &avr32_syntax_table[AVR32_SYNTAX_RETD],
23634 + BFD_RELOC_NONE, 0, -1, { NULL },
23635 + },
23636 + {
23637 + AVR32_OPC_RETE, 2, 0xd6030000, 0xffff0000,
23638 + &avr32_syntax_table[AVR32_SYNTAX_RETE],
23639 + BFD_RELOC_NONE, 0, -1, { NULL },
23640 + },
23641 + {
23642 + AVR32_OPC_RETJ, 2, 0xd6330000, 0xffff0000,
23643 + &avr32_syntax_table[AVR32_SYNTAX_RETJ],
23644 + BFD_RELOC_NONE, 0, -1, { NULL },
23645 + },
23646 + {
23647 + AVR32_OPC_RETS, 2, 0xd6130000, 0xffff0000,
23648 + &avr32_syntax_table[AVR32_SYNTAX_RETS],
23649 + BFD_RELOC_NONE, 0, -1, { NULL },
23650 + },
23651 + {
23652 + AVR32_OPC_RJMP, 2, 0xc0080000, 0xf00c0000,
23653 + &avr32_syntax_table[AVR32_SYNTAX_RJMP],
23654 + BFD_RELOC_AVR32_11H_PCREL, 1, 0,
23655 + {
23656 + &avr32_ifield_table[AVR32_IFIELD_K10],
23657 + },
23658 + },
23659 + {
23660 + AVR32_OPC_ROL, 2, 0x5cf00000, 0xfff00000,
23661 + &avr32_syntax_table[AVR32_SYNTAX_ROL],
23662 + BFD_RELOC_UNUSED, 1, -1,
23663 + {
23664 + &avr32_ifield_table[AVR32_IFIELD_RY],
23665 + }
23666 + },
23667 + {
23668 + AVR32_OPC_ROR, 2, 0x5d000000, 0xfff00000,
23669 + &avr32_syntax_table[AVR32_SYNTAX_ROR],
23670 + BFD_RELOC_UNUSED, 1, -1,
23671 + {
23672 + &avr32_ifield_table[AVR32_IFIELD_RY],
23673 + }
23674 + },
23675 + {
23676 + AVR32_OPC_RSUB1, 2, 0x00200000, 0xe1f00000,
23677 + &avr32_syntax_table[AVR32_SYNTAX_RSUB1],
23678 + BFD_RELOC_UNUSED, 2, -1,
23679 + {
23680 + &avr32_ifield_table[AVR32_IFIELD_RY],
23681 + &avr32_ifield_table[AVR32_IFIELD_RX],
23682 + },
23683 + },
23684 + {
23685 + AVR32_OPC_RSUB2, 4, 0xe0001100, 0xe1f0ff00,
23686 + &avr32_syntax_table[AVR32_SYNTAX_RSUB2],
23687 + BFD_RELOC_AVR32_8S_EXT, 3, 2,
23688 + {
23689 + &avr32_ifield_table[AVR32_IFIELD_RY],
23690 + &avr32_ifield_table[AVR32_IFIELD_RX],
23691 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23692 + },
23693 + },
23694 + {
23695 + AVR32_OPC_SATADD_H, 4, 0xe00002c0, 0xe1f0fff0,
23696 + &avr32_syntax_table[AVR32_SYNTAX_SATADD_H],
23697 + BFD_RELOC_UNUSED, 3, -1,
23698 + {
23699 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23700 + &avr32_ifield_table[AVR32_IFIELD_RX],
23701 + &avr32_ifield_table[AVR32_IFIELD_RY],
23702 + },
23703 + },
23704 + {
23705 + AVR32_OPC_SATADD_W, 4, 0xe00000c0, 0xe1f0fff0,
23706 + &avr32_syntax_table[AVR32_SYNTAX_SATADD_W],
23707 + BFD_RELOC_UNUSED, 3, -1,
23708 + {
23709 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23710 + &avr32_ifield_table[AVR32_IFIELD_RX],
23711 + &avr32_ifield_table[AVR32_IFIELD_RY],
23712 + },
23713 + },
23714 + {
23715 + AVR32_OPC_SATRNDS, 4, 0xf3b00000, 0xfff0fc00,
23716 + &avr32_syntax_table[AVR32_SYNTAX_SATRNDS],
23717 + BFD_RELOC_UNUSED, 3, -1,
23718 + {
23719 + &avr32_ifield_table[AVR32_IFIELD_RY],
23720 + &avr32_ifield_table[AVR32_IFIELD_K5E],
23721 + &avr32_ifield_table[AVR32_IFIELD_S5],
23722 + },
23723 + },
23724 + {
23725 + AVR32_OPC_SATRNDU, 4, 0xf3b00400, 0xfff0fc00,
23726 + &avr32_syntax_table[AVR32_SYNTAX_SATRNDU],
23727 + BFD_RELOC_UNUSED, 3, -1,
23728 + {
23729 + &avr32_ifield_table[AVR32_IFIELD_RY],
23730 + &avr32_ifield_table[AVR32_IFIELD_K5E],
23731 + &avr32_ifield_table[AVR32_IFIELD_S5],
23732 + },
23733 + },
23734 + {
23735 + AVR32_OPC_SATS, 4, 0xf1b00000, 0xfff0fc00,
23736 + &avr32_syntax_table[AVR32_SYNTAX_SATS],
23737 + BFD_RELOC_UNUSED, 3, -1,
23738 + {
23739 + &avr32_ifield_table[AVR32_IFIELD_RY],
23740 + &avr32_ifield_table[AVR32_IFIELD_K5E],
23741 + &avr32_ifield_table[AVR32_IFIELD_S5],
23742 + },
23743 + },
23744 + {
23745 + AVR32_OPC_SATSUB_H, 4, 0xe00003c0, 0xe1f0fff0,
23746 + &avr32_syntax_table[AVR32_SYNTAX_SATSUB_H],
23747 + BFD_RELOC_UNUSED, 3, -1,
23748 + {
23749 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23750 + &avr32_ifield_table[AVR32_IFIELD_RX],
23751 + &avr32_ifield_table[AVR32_IFIELD_RY],
23752 + },
23753 + },
23754 + {
23755 + AVR32_OPC_SATSUB_W1, 4, 0xe00001c0, 0xe1f0fff0,
23756 + &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W1],
23757 + BFD_RELOC_UNUSED, 3, -1,
23758 + {
23759 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23760 + &avr32_ifield_table[AVR32_IFIELD_RX],
23761 + &avr32_ifield_table[AVR32_IFIELD_RY],
23762 + },
23763 + },
23764 + {
23765 + AVR32_OPC_SATSUB_W2, 4, 0xe0d00000, 0xe1f00000,
23766 + &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W2],
23767 + BFD_RELOC_UNUSED, 3, -1,
23768 + {
23769 + &avr32_ifield_table[AVR32_IFIELD_RY],
23770 + &avr32_ifield_table[AVR32_IFIELD_RX],
23771 + &avr32_ifield_table[AVR32_IFIELD_K16],
23772 + },
23773 + },
23774 + {
23775 + AVR32_OPC_SATU, 4, 0xf1b00400, 0xfff0fc00,
23776 + &avr32_syntax_table[AVR32_SYNTAX_SATU],
23777 + BFD_RELOC_UNUSED, 3, -1,
23778 + {
23779 + &avr32_ifield_table[AVR32_IFIELD_RY],
23780 + &avr32_ifield_table[AVR32_IFIELD_K5E],
23781 + &avr32_ifield_table[AVR32_IFIELD_S5],
23782 + },
23783 + },
23784 + {
23785 + AVR32_OPC_SBC, 4, 0xe0000140, 0xe1f0fff0,
23786 + &avr32_syntax_table[AVR32_SYNTAX_SBC],
23787 + BFD_RELOC_UNUSED, 3, -1,
23788 + {
23789 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23790 + &avr32_ifield_table[AVR32_IFIELD_RX],
23791 + &avr32_ifield_table[AVR32_IFIELD_RY],
23792 + },
23793 + },
23794 + {
23795 + AVR32_OPC_SBR, 2, 0xa1a00000, 0xe1e00000,
23796 + &avr32_syntax_table[AVR32_SYNTAX_SBR],
23797 + BFD_RELOC_UNUSED, 2, -1,
23798 + {
23799 + &avr32_ifield_table[AVR32_IFIELD_RY],
23800 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
23801 + },
23802 + },
23803 + {
23804 + AVR32_OPC_SCALL, 2, 0xd7330000, 0xffff0000,
23805 + &avr32_syntax_table[AVR32_SYNTAX_SCALL],
23806 + BFD_RELOC_UNUSED, 0, -1, { NULL },
23807 + },
23808 + {
23809 + AVR32_OPC_SCR, 2, 0x5c100000, 0xfff00000,
23810 + &avr32_syntax_table[AVR32_SYNTAX_SCR],
23811 + BFD_RELOC_UNUSED, 1, -1,
23812 + {
23813 + &avr32_ifield_table[AVR32_IFIELD_RY],
23814 + },
23815 + },
23816 + {
23817 + AVR32_OPC_SLEEP, 4, 0xe9b00000, 0xffffff00,
23818 + &avr32_syntax_table[AVR32_SYNTAX_SLEEP],
23819 + BFD_RELOC_AVR32_8S_EXT, 1, 0,
23820 + {
23821 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23822 + },
23823 + },
23824 + {
23825 + AVR32_OPC_SREQ, 2, 0x5f000000, 0xfff00000,
23826 + &avr32_syntax_table[AVR32_SYNTAX_SREQ],
23827 + BFD_RELOC_UNUSED, 1, -1,
23828 + {
23829 + &avr32_ifield_table[AVR32_IFIELD_RY],
23830 + },
23831 + },
23832 + {
23833 + AVR32_OPC_SRNE, 2, 0x5f100000, 0xfff00000,
23834 + &avr32_syntax_table[AVR32_SYNTAX_SRNE],
23835 + BFD_RELOC_UNUSED, 1, -1,
23836 + {
23837 + &avr32_ifield_table[AVR32_IFIELD_RY],
23838 + },
23839 + },
23840 + {
23841 + AVR32_OPC_SRCC, 2, 0x5f200000, 0xfff00000,
23842 + &avr32_syntax_table[AVR32_SYNTAX_SRHS],
23843 + BFD_RELOC_UNUSED, 1, -1,
23844 + {
23845 + &avr32_ifield_table[AVR32_IFIELD_RY],
23846 + },
23847 + },
23848 + {
23849 + AVR32_OPC_SRCS, 2, 0x5f300000, 0xfff00000,
23850 + &avr32_syntax_table[AVR32_SYNTAX_SRLO],
23851 + BFD_RELOC_UNUSED, 1, -1,
23852 + {
23853 + &avr32_ifield_table[AVR32_IFIELD_RY],
23854 + },
23855 + },
23856 + {
23857 + AVR32_OPC_SRGE, 2, 0x5f400000, 0xfff00000,
23858 + &avr32_syntax_table[AVR32_SYNTAX_SRGE],
23859 + BFD_RELOC_UNUSED, 1, -1,
23860 + {
23861 + &avr32_ifield_table[AVR32_IFIELD_RY],
23862 + },
23863 + },
23864 + {
23865 + AVR32_OPC_SRLT, 2, 0x5f500000, 0xfff00000,
23866 + &avr32_syntax_table[AVR32_SYNTAX_SRLT],
23867 + BFD_RELOC_UNUSED, 1, -1,
23868 + {
23869 + &avr32_ifield_table[AVR32_IFIELD_RY],
23870 + },
23871 + },
23872 + {
23873 + AVR32_OPC_SRMI, 2, 0x5f600000, 0xfff00000,
23874 + &avr32_syntax_table[AVR32_SYNTAX_SRMI],
23875 + BFD_RELOC_UNUSED, 1, -1,
23876 + {
23877 + &avr32_ifield_table[AVR32_IFIELD_RY],
23878 + },
23879 + },
23880 + {
23881 + AVR32_OPC_SRPL, 2, 0x5f700000, 0xfff00000,
23882 + &avr32_syntax_table[AVR32_SYNTAX_SRPL],
23883 + BFD_RELOC_UNUSED, 1, -1,
23884 + {
23885 + &avr32_ifield_table[AVR32_IFIELD_RY],
23886 + },
23887 + },
23888 + {
23889 + AVR32_OPC_SRLS, 2, 0x5f800000, 0xfff00000,
23890 + &avr32_syntax_table[AVR32_SYNTAX_SRLS],
23891 + BFD_RELOC_UNUSED, 1, -1,
23892 + {
23893 + &avr32_ifield_table[AVR32_IFIELD_RY],
23894 + },
23895 + },
23896 + {
23897 + AVR32_OPC_SRGT, 2, 0x5f900000, 0xfff00000,
23898 + &avr32_syntax_table[AVR32_SYNTAX_SRGT],
23899 + BFD_RELOC_UNUSED, 1, -1,
23900 + {
23901 + &avr32_ifield_table[AVR32_IFIELD_RY],
23902 + },
23903 + },
23904 + {
23905 + AVR32_OPC_SRLE, 2, 0x5fa00000, 0xfff00000,
23906 + &avr32_syntax_table[AVR32_SYNTAX_SRLE],
23907 + BFD_RELOC_UNUSED, 1, -1,
23908 + {
23909 + &avr32_ifield_table[AVR32_IFIELD_RY],
23910 + },
23911 + },
23912 + {
23913 + AVR32_OPC_SRHI, 2, 0x5fb00000, 0xfff00000,
23914 + &avr32_syntax_table[AVR32_SYNTAX_SRHI],
23915 + BFD_RELOC_UNUSED, 1, -1,
23916 + {
23917 + &avr32_ifield_table[AVR32_IFIELD_RY],
23918 + },
23919 + },
23920 + {
23921 + AVR32_OPC_SRVS, 2, 0x5fc00000, 0xfff00000,
23922 + &avr32_syntax_table[AVR32_SYNTAX_SRVS],
23923 + BFD_RELOC_UNUSED, 1, -1,
23924 + {
23925 + &avr32_ifield_table[AVR32_IFIELD_RY],
23926 + },
23927 + },
23928 + {
23929 + AVR32_OPC_SRVC, 2, 0x5fd00000, 0xfff00000,
23930 + &avr32_syntax_table[AVR32_SYNTAX_SRVC],
23931 + BFD_RELOC_UNUSED, 1, -1,
23932 + {
23933 + &avr32_ifield_table[AVR32_IFIELD_RY],
23934 + },
23935 + },
23936 + {
23937 + AVR32_OPC_SRQS, 2, 0x5fe00000, 0xfff00000,
23938 + &avr32_syntax_table[AVR32_SYNTAX_SRQS],
23939 + BFD_RELOC_UNUSED, 1, -1,
23940 + {
23941 + &avr32_ifield_table[AVR32_IFIELD_RY],
23942 + },
23943 + },
23944 + {
23945 + AVR32_OPC_SRAL, 2, 0x5ff00000, 0xfff00000,
23946 + &avr32_syntax_table[AVR32_SYNTAX_SRAL],
23947 + BFD_RELOC_UNUSED, 1, -1,
23948 + {
23949 + &avr32_ifield_table[AVR32_IFIELD_RY],
23950 + },
23951 + },
23952 + {
23953 + AVR32_OPC_SSRF, 2, 0xd2030000, 0xfe0f0000,
23954 + &avr32_syntax_table[AVR32_SYNTAX_SSRF],
23955 + BFD_RELOC_UNUSED, 1, -1,
23956 + {
23957 + &avr32_ifield_table[AVR32_IFIELD_K5C],
23958 + },
23959 + },
23960 + {
23961 + AVR32_OPC_ST_B1, 2, 0x00c00000, 0xe1f00000,
23962 + &avr32_syntax_table[AVR32_SYNTAX_ST_B1],
23963 + BFD_RELOC_UNUSED, 2, -1,
23964 + {
23965 + &avr32_ifield_table[AVR32_IFIELD_RX],
23966 + &avr32_ifield_table[AVR32_IFIELD_RY],
23967 + },
23968 + },
23969 + {
23970 + AVR32_OPC_ST_B2, 2, 0x00f00000, 0xe1f00000,
23971 + &avr32_syntax_table[AVR32_SYNTAX_ST_B2],
23972 + BFD_RELOC_UNUSED, 2, -1,
23973 + {
23974 + &avr32_ifield_table[AVR32_IFIELD_RX],
23975 + &avr32_ifield_table[AVR32_IFIELD_RY],
23976 + },
23977 + },
23978 + {
23979 + AVR32_OPC_ST_B5, 4, 0xe0000b00, 0xe1f0ffc0,
23980 + &avr32_syntax_table[AVR32_SYNTAX_ST_B5],
23981 + BFD_RELOC_UNUSED, 4, -1,
23982 + {
23983 + &avr32_ifield_table[AVR32_IFIELD_RX],
23984 + &avr32_ifield_table[AVR32_IFIELD_RY],
23985 + &avr32_ifield_table[AVR32_IFIELD_K2],
23986 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23987 + },
23988 + },
23989 + {
23990 + AVR32_OPC_ST_B3, 2, 0xa0800000, 0xe1800000,
23991 + &avr32_syntax_table[AVR32_SYNTAX_ST_B3],
23992 + BFD_RELOC_AVR32_3U, 3, 1,
23993 + {
23994 + &avr32_ifield_table[AVR32_IFIELD_RX],
23995 + &avr32_ifield_table[AVR32_IFIELD_K3],
23996 + &avr32_ifield_table[AVR32_IFIELD_RY],
23997 + },
23998 + },
23999 + {
24000 + AVR32_OPC_ST_B4, 4, 0xe1600000, 0xe1f00000,
24001 + &avr32_syntax_table[AVR32_SYNTAX_ST_B4],
24002 + BFD_RELOC_AVR32_16S, 3, 1,
24003 + {
24004 + &avr32_ifield_table[AVR32_IFIELD_RX],
24005 + &avr32_ifield_table[AVR32_IFIELD_K16],
24006 + &avr32_ifield_table[AVR32_IFIELD_RY],
24007 + },
24008 + },
24009 + {
24010 + AVR32_OPC_ST_D1, 2, 0xa1200000, 0xe1f10000,
24011 + &avr32_syntax_table[AVR32_SYNTAX_ST_D1],
24012 + BFD_RELOC_UNUSED, 2, -1,
24013 + {
24014 + &avr32_ifield_table[AVR32_IFIELD_RX],
24015 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
24016 + },
24017 + },
24018 + {
24019 + AVR32_OPC_ST_D2, 2, 0xa1210000, 0xe1f10000,
24020 + &avr32_syntax_table[AVR32_SYNTAX_ST_D2],
24021 + BFD_RELOC_UNUSED, 2, -1,
24022 + {
24023 + &avr32_ifield_table[AVR32_IFIELD_RX],
24024 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
24025 + },
24026 + },
24027 + {
24028 + AVR32_OPC_ST_D3, 2, 0xa1110000, 0xe1f10000,
24029 + &avr32_syntax_table[AVR32_SYNTAX_ST_D3],
24030 + BFD_RELOC_UNUSED, 2, -1,
24031 + {
24032 + &avr32_ifield_table[AVR32_IFIELD_RX],
24033 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
24034 + },
24035 + },
24036 + {
24037 + AVR32_OPC_ST_D5, 4, 0xe0000800, 0xe1f0ffc1,
24038 + &avr32_syntax_table[AVR32_SYNTAX_ST_D5],
24039 + BFD_RELOC_UNUSED, 4, -1,
24040 + {
24041 + &avr32_ifield_table[AVR32_IFIELD_RX],
24042 + &avr32_ifield_table[AVR32_IFIELD_RY],
24043 + &avr32_ifield_table[AVR32_IFIELD_K2],
24044 + &avr32_ifield_table[AVR32_IFIELD_RD_DW],
24045 + },
24046 + },
24047 + {
24048 + AVR32_OPC_ST_D4, 4, 0xe0e10000, 0xe1f10000,
24049 + &avr32_syntax_table[AVR32_SYNTAX_ST_D4],
24050 + BFD_RELOC_AVR32_16S, 3, 1,
24051 + {
24052 + &avr32_ifield_table[AVR32_IFIELD_RX],
24053 + &avr32_ifield_table[AVR32_IFIELD_K16],
24054 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
24055 + },
24056 + },
24057 + {
24058 + AVR32_OPC_ST_H1, 2, 0x00b00000, 0xe1f00000,
24059 + &avr32_syntax_table[AVR32_SYNTAX_ST_H1],
24060 + BFD_RELOC_UNUSED, 2, -1,
24061 + {
24062 + &avr32_ifield_table[AVR32_IFIELD_RX],
24063 + &avr32_ifield_table[AVR32_IFIELD_RY],
24064 + },
24065 + },
24066 + {
24067 + AVR32_OPC_ST_H2, 2, 0x00e00000, 0xe1f00000,
24068 + &avr32_syntax_table[AVR32_SYNTAX_ST_H2],
24069 + BFD_RELOC_UNUSED, 2, -1,
24070 + {
24071 + &avr32_ifield_table[AVR32_IFIELD_RX],
24072 + &avr32_ifield_table[AVR32_IFIELD_RY],
24073 + },
24074 + },
24075 + {
24076 + AVR32_OPC_ST_H5, 4, 0xe0000a00, 0xe1f0ffc0,
24077 + &avr32_syntax_table[AVR32_SYNTAX_ST_H5],
24078 + BFD_RELOC_UNUSED, 4, -1,
24079 + {
24080 + &avr32_ifield_table[AVR32_IFIELD_RX],
24081 + &avr32_ifield_table[AVR32_IFIELD_RY],
24082 + &avr32_ifield_table[AVR32_IFIELD_K2],
24083 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24084 + },
24085 + },
24086 + {
24087 + AVR32_OPC_ST_H3, 2, 0xa0000000, 0xe1800000,
24088 + &avr32_syntax_table[AVR32_SYNTAX_ST_H3],
24089 + BFD_RELOC_AVR32_4UH, 3, 1,
24090 + {
24091 + &avr32_ifield_table[AVR32_IFIELD_RX],
24092 + &avr32_ifield_table[AVR32_IFIELD_K3],
24093 + &avr32_ifield_table[AVR32_IFIELD_RY],
24094 + },
24095 + },
24096 + {
24097 + AVR32_OPC_ST_H4, 4, 0xe1500000, 0xe1f00000,
24098 + &avr32_syntax_table[AVR32_SYNTAX_ST_H4],
24099 + BFD_RELOC_AVR32_16S, 3, 1,
24100 + {
24101 + &avr32_ifield_table[AVR32_IFIELD_RX],
24102 + &avr32_ifield_table[AVR32_IFIELD_K16],
24103 + &avr32_ifield_table[AVR32_IFIELD_RY],
24104 + },
24105 + },
24106 + {
24107 + AVR32_OPC_ST_W1, 2, 0x00a00000, 0xe1f00000,
24108 + &avr32_syntax_table[AVR32_SYNTAX_ST_W1],
24109 + BFD_RELOC_UNUSED, 2, -1,
24110 + {
24111 + &avr32_ifield_table[AVR32_IFIELD_RX],
24112 + &avr32_ifield_table[AVR32_IFIELD_RY],
24113 + },
24114 + },
24115 + {
24116 + AVR32_OPC_ST_W2, 2, 0x00d00000, 0xe1f00000,
24117 + &avr32_syntax_table[AVR32_SYNTAX_ST_W2],
24118 + BFD_RELOC_UNUSED, 2, -1,
24119 + {
24120 + &avr32_ifield_table[AVR32_IFIELD_RX],
24121 + &avr32_ifield_table[AVR32_IFIELD_RY],
24122 + },
24123 + },
24124 + {
24125 + AVR32_OPC_ST_W5, 4, 0xe0000900, 0xe1f0ffc0,
24126 + &avr32_syntax_table[AVR32_SYNTAX_ST_W5],
24127 + BFD_RELOC_UNUSED, 4, -1,
24128 + {
24129 + &avr32_ifield_table[AVR32_IFIELD_RX],
24130 + &avr32_ifield_table[AVR32_IFIELD_RY],
24131 + &avr32_ifield_table[AVR32_IFIELD_K2],
24132 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24133 + },
24134 + },
24135 + {
24136 + AVR32_OPC_ST_W3, 2, 0x81000000, 0xe1000000,
24137 + &avr32_syntax_table[AVR32_SYNTAX_ST_W3],
24138 + BFD_RELOC_AVR32_6UW, 3, 1,
24139 + {
24140 + &avr32_ifield_table[AVR32_IFIELD_RX],
24141 + &avr32_ifield_table[AVR32_IFIELD_K4],
24142 + &avr32_ifield_table[AVR32_IFIELD_RY],
24143 + },
24144 + },
24145 + {
24146 + AVR32_OPC_ST_W4, 4, 0xe1400000, 0xe1f00000,
24147 + &avr32_syntax_table[AVR32_SYNTAX_ST_W4],
24148 + BFD_RELOC_AVR32_16S, 3, 1,
24149 + {
24150 + &avr32_ifield_table[AVR32_IFIELD_RX],
24151 + &avr32_ifield_table[AVR32_IFIELD_K16],
24152 + &avr32_ifield_table[AVR32_IFIELD_RY],
24153 + },
24154 + },
24155 + {
24156 + AVR32_OPC_STC_D1, 4, 0xeba01000, 0xfff01100,
24157 + &avr32_syntax_table[AVR32_SYNTAX_STC_D1],
24158 + BFD_RELOC_AVR32_10UW, 4, 2,
24159 + {
24160 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24161 + &avr32_ifield_table[AVR32_IFIELD_RY],
24162 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24163 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
24164 + },
24165 + },
24166 + {
24167 + AVR32_OPC_STC_D2, 4, 0xefa00070, 0xfff011f0,
24168 + &avr32_syntax_table[AVR32_SYNTAX_STC_D2],
24169 + BFD_RELOC_UNUSED, 3, -1,
24170 + {
24171 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24172 + &avr32_ifield_table[AVR32_IFIELD_RY],
24173 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
24174 + },
24175 + },
24176 + {
24177 + AVR32_OPC_STC_D3, 4, 0xefa010c0, 0xfff011c0,
24178 + &avr32_syntax_table[AVR32_SYNTAX_STC_D3],
24179 + BFD_RELOC_UNUSED, 5, -1,
24180 + {
24181 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24182 + &avr32_ifield_table[AVR32_IFIELD_RY],
24183 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24184 + &avr32_ifield_table[AVR32_IFIELD_K2],
24185 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
24186 + },
24187 + },
24188 + {
24189 + AVR32_OPC_STC_W1, 4, 0xeba00000, 0xfff01000,
24190 + &avr32_syntax_table[AVR32_SYNTAX_STC_W1],
24191 + BFD_RELOC_AVR32_10UW, 4, 2,
24192 + {
24193 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24194 + &avr32_ifield_table[AVR32_IFIELD_RY],
24195 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24196 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24197 + },
24198 + },
24199 + {
24200 + AVR32_OPC_STC_W2, 4, 0xefa00060, 0xfff010ff,
24201 + &avr32_syntax_table[AVR32_SYNTAX_STC_W2],
24202 + BFD_RELOC_UNUSED, 3, -1,
24203 + {
24204 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24205 + &avr32_ifield_table[AVR32_IFIELD_RY],
24206 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24207 + },
24208 + },
24209 + {
24210 + AVR32_OPC_STC_W3, 4, 0xefa01080, 0xfff010c0,
24211 + &avr32_syntax_table[AVR32_SYNTAX_STC_W3],
24212 + BFD_RELOC_UNUSED, 5, -1,
24213 + {
24214 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24215 + &avr32_ifield_table[AVR32_IFIELD_RY],
24216 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24217 + &avr32_ifield_table[AVR32_IFIELD_K2],
24218 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24219 + },
24220 + },
24221 + {
24222 + AVR32_OPC_STC0_D, 4, 0xf7a00000, 0xfff00100,
24223 + &avr32_syntax_table[AVR32_SYNTAX_STC0_D],
24224 + BFD_RELOC_AVR32_14UW, 3, 1,
24225 + {
24226 + &avr32_ifield_table[AVR32_IFIELD_RY],
24227 + &avr32_ifield_table[AVR32_IFIELD_K12CP],
24228 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
24229 + },
24230 + },
24231 + {
24232 + AVR32_OPC_STC0_W, 4, 0xf5a00000, 0xfff00000,
24233 + &avr32_syntax_table[AVR32_SYNTAX_STC0_W],
24234 + BFD_RELOC_AVR32_14UW, 3, 1,
24235 + {
24236 + &avr32_ifield_table[AVR32_IFIELD_RY],
24237 + &avr32_ifield_table[AVR32_IFIELD_K12CP],
24238 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24239 + },
24240 + },
24241 + {
24242 + AVR32_OPC_STCM_D, 4, 0xeda00500, 0xfff01f00,
24243 + &avr32_syntax_table[AVR32_SYNTAX_STCM_D],
24244 + BFD_RELOC_UNUSED, 3, -1,
24245 + {
24246 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24247 + &avr32_ifield_table[AVR32_IFIELD_RY],
24248 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24249 + },
24250 + },
24251 + {
24252 + AVR32_OPC_STCM_D_PU, 4, 0xeda01500, 0xfff01f00,
24253 + &avr32_syntax_table[AVR32_SYNTAX_STCM_D_PU],
24254 + BFD_RELOC_UNUSED, 3, -1,
24255 + {
24256 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24257 + &avr32_ifield_table[AVR32_IFIELD_RY],
24258 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24259 + },
24260 + },
24261 + {
24262 + AVR32_OPC_STCM_W, 4, 0xeda00200, 0xfff01e00,
24263 + &avr32_syntax_table[AVR32_SYNTAX_STCM_W],
24264 + BFD_RELOC_UNUSED, 4, -1,
24265 + {
24266 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24267 + &avr32_ifield_table[AVR32_IFIELD_RY],
24268 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24269 + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
24270 + },
24271 + },
24272 + {
24273 + AVR32_OPC_STCM_W_PU, 4, 0xeda01200, 0xfff01e00,
24274 + &avr32_syntax_table[AVR32_SYNTAX_STCM_W_PU],
24275 + BFD_RELOC_UNUSED, 4, -1,
24276 + {
24277 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24278 + &avr32_ifield_table[AVR32_IFIELD_RY],
24279 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24280 + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
24281 + },
24282 + },
24283 + {
24284 + AVR32_OPC_STCOND, 4, 0xe1700000, 0xe1f00000,
24285 + &avr32_syntax_table[AVR32_SYNTAX_STCOND],
24286 + BFD_RELOC_UNUSED, 3, -1,
24287 + {
24288 + &avr32_ifield_table[AVR32_IFIELD_RX],
24289 + &avr32_ifield_table[AVR32_IFIELD_K16],
24290 + &avr32_ifield_table[AVR32_IFIELD_RY],
24291 + },
24292 + },
24293 + {
24294 + AVR32_OPC_STDSP, 2, 0x50000000, 0xf8000000,
24295 + &avr32_syntax_table[AVR32_SYNTAX_STDSP],
24296 + BFD_RELOC_UNUSED, 2, -1,
24297 + {
24298 + &avr32_ifield_table[AVR32_IFIELD_K7C],
24299 + &avr32_ifield_table[AVR32_IFIELD_RY],
24300 + },
24301 + },
24302 + {
24303 + AVR32_OPC_STHH_W2, 4, 0xe1e08000, 0xe1f0c0c0,
24304 + &avr32_syntax_table[AVR32_SYNTAX_STHH_W2],
24305 + BFD_RELOC_UNUSED, 7, -1,
24306 + {
24307 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24308 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24309 + &avr32_ifield_table[AVR32_IFIELD_K2],
24310 + &avr32_ifield_table[AVR32_IFIELD_RX],
24311 + &avr32_ifield_table[AVR32_IFIELD_X2],
24312 + &avr32_ifield_table[AVR32_IFIELD_RY],
24313 + &avr32_ifield_table[AVR32_IFIELD_Y2],
24314 + },
24315 + },
24316 + {
24317 + AVR32_OPC_STHH_W1, 4, 0xe1e0c000, 0xe1f0c000,
24318 + &avr32_syntax_table[AVR32_SYNTAX_STHH_W1],
24319 + BFD_RELOC_AVR32_STHH_W, 6, 1,
24320 + {
24321 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24322 + &avr32_ifield_table[AVR32_IFIELD_K8E2],
24323 + &avr32_ifield_table[AVR32_IFIELD_RX],
24324 + &avr32_ifield_table[AVR32_IFIELD_X2],
24325 + &avr32_ifield_table[AVR32_IFIELD_RY],
24326 + &avr32_ifield_table[AVR32_IFIELD_Y2],
24327 + },
24328 + },
24329 + {
24330 + AVR32_OPC_STM, 4, 0xe9c00000, 0xfff00000,
24331 + &avr32_syntax_table[AVR32_SYNTAX_STM],
24332 + BFD_RELOC_UNUSED, 2, -1,
24333 + {
24334 + &avr32_ifield_table[AVR32_IFIELD_RY],
24335 + &avr32_ifield_table[AVR32_IFIELD_K16],
24336 + },
24337 + },
24338 + {
24339 + AVR32_OPC_STM_PU, 4, 0xebc00000, 0xfff00000,
24340 + &avr32_syntax_table[AVR32_SYNTAX_STM_PU],
24341 + BFD_RELOC_UNUSED, 2, -1,
24342 + {
24343 + &avr32_ifield_table[AVR32_IFIELD_RY],
24344 + &avr32_ifield_table[AVR32_IFIELD_K16],
24345 + },
24346 + },
24347 + {
24348 + AVR32_OPC_STMTS, 4, 0xedc00000, 0xfff00000,
24349 + &avr32_syntax_table[AVR32_SYNTAX_STMTS],
24350 + BFD_RELOC_UNUSED, 2, -1,
24351 + {
24352 + &avr32_ifield_table[AVR32_IFIELD_RY],
24353 + &avr32_ifield_table[AVR32_IFIELD_K16],
24354 + },
24355 + },
24356 + {
24357 + AVR32_OPC_STMTS_PU, 4, 0xefc00000, 0xfff00000,
24358 + &avr32_syntax_table[AVR32_SYNTAX_STMTS_PU],
24359 + BFD_RELOC_UNUSED, 2, -1,
24360 + {
24361 + &avr32_ifield_table[AVR32_IFIELD_RY],
24362 + &avr32_ifield_table[AVR32_IFIELD_K16],
24363 + },
24364 + },
24365 + {
24366 + AVR32_OPC_STSWP_H, 4, 0xe1d09000, 0xe1f0f000,
24367 + &avr32_syntax_table[AVR32_SYNTAX_STSWP_H],
24368 + BFD_RELOC_UNUSED, 3, -1,
24369 + {
24370 + &avr32_ifield_table[AVR32_IFIELD_RX],
24371 + &avr32_ifield_table[AVR32_IFIELD_K12],
24372 + &avr32_ifield_table[AVR32_IFIELD_RY],
24373 + },
24374 + },
24375 + {
24376 + AVR32_OPC_STSWP_W, 4, 0xe1d0a000, 0xe1f0f000,
24377 + &avr32_syntax_table[AVR32_SYNTAX_STSWP_W],
24378 + BFD_RELOC_UNUSED, 3, -1,
24379 + {
24380 + &avr32_ifield_table[AVR32_IFIELD_RX],
24381 + &avr32_ifield_table[AVR32_IFIELD_K12],
24382 + &avr32_ifield_table[AVR32_IFIELD_RY],
24383 + },
24384 + },
24385 + {
24386 + AVR32_OPC_SUB1, 2, 0x00100000, 0xe1f00000,
24387 + &avr32_syntax_table[AVR32_SYNTAX_SUB1],
24388 + BFD_RELOC_UNUSED, 2, -1,
24389 + {
24390 + &avr32_ifield_table[AVR32_IFIELD_RY],
24391 + &avr32_ifield_table[AVR32_IFIELD_RX],
24392 + },
24393 + },
24394 + {
24395 + AVR32_OPC_SUB2, 4, 0xe0000100, 0xe1f0ffc0,
24396 + &avr32_syntax_table[AVR32_SYNTAX_SUB2],
24397 + BFD_RELOC_UNUSED, 4, -1,
24398 + {
24399 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24400 + &avr32_ifield_table[AVR32_IFIELD_RX],
24401 + &avr32_ifield_table[AVR32_IFIELD_RY],
24402 + &avr32_ifield_table[AVR32_IFIELD_K2],
24403 + },
24404 + },
24405 + {
24406 + AVR32_OPC_SUB5, 4, 0xe0c00000, 0xe1f00000,
24407 + &avr32_syntax_table[AVR32_SYNTAX_SUB5],
24408 + BFD_RELOC_AVR32_SUB5, 3, 2,
24409 + {
24410 + &avr32_ifield_table[AVR32_IFIELD_RY],
24411 + &avr32_ifield_table[AVR32_IFIELD_RX],
24412 + &avr32_ifield_table[AVR32_IFIELD_K16],
24413 + },
24414 + },
24415 + {
24416 + AVR32_OPC_SUB3_SP, 2, 0x200d0000, 0xf00f0000,
24417 + &avr32_syntax_table[AVR32_SYNTAX_SUB3_SP],
24418 + BFD_RELOC_AVR32_10SW, 2, 1,
24419 + {
24420 + &avr32_ifield_table[AVR32_IFIELD_RY],
24421 + &avr32_ifield_table[AVR32_IFIELD_K8C],
24422 + },
24423 + },
24424 + {
24425 + AVR32_OPC_SUB3, 2, 0x20000000, 0xf0000000,
24426 + &avr32_syntax_table[AVR32_SYNTAX_SUB3],
24427 + BFD_RELOC_AVR32_8S, 2, 1,
24428 + {
24429 + &avr32_ifield_table[AVR32_IFIELD_RY],
24430 + &avr32_ifield_table[AVR32_IFIELD_K8C],
24431 + },
24432 + },
24433 + {
24434 + AVR32_OPC_SUB4, 4, 0xe0200000, 0xe1e00000,
24435 + &avr32_syntax_table[AVR32_SYNTAX_SUB4],
24436 + BFD_RELOC_AVR32_21S, 2, 1,
24437 + {
24438 + &avr32_ifield_table[AVR32_IFIELD_RY],
24439 + &avr32_ifield_table[AVR32_IFIELD_K21],
24440 + },
24441 + },
24442 + {
24443 + AVR32_OPC_SUBEQ, 4, 0xf7b00000, 0xfff0ff00,
24444 + &avr32_syntax_table[AVR32_SYNTAX_SUBEQ],
24445 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24446 + {
24447 + &avr32_ifield_table[AVR32_IFIELD_RY],
24448 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24449 + },
24450 + },
24451 + {
24452 + AVR32_OPC_SUBNE, 4, 0xf7b00100, 0xfff0ff00,
24453 + &avr32_syntax_table[AVR32_SYNTAX_SUBNE],
24454 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24455 + {
24456 + &avr32_ifield_table[AVR32_IFIELD_RY],
24457 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24458 + },
24459 + },
24460 + {
24461 + AVR32_OPC_SUBCC, 4, 0xf7b00200, 0xfff0ff00,
24462 + &avr32_syntax_table[AVR32_SYNTAX_SUBHS],
24463 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24464 + {
24465 + &avr32_ifield_table[AVR32_IFIELD_RY],
24466 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24467 + },
24468 + },
24469 + {
24470 + AVR32_OPC_SUBCS, 4, 0xf7b00300, 0xfff0ff00,
24471 + &avr32_syntax_table[AVR32_SYNTAX_SUBLO],
24472 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24473 + {
24474 + &avr32_ifield_table[AVR32_IFIELD_RY],
24475 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24476 + },
24477 + },
24478 + {
24479 + AVR32_OPC_SUBGE, 4, 0xf7b00400, 0xfff0ff00,
24480 + &avr32_syntax_table[AVR32_SYNTAX_SUBGE],
24481 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24482 + {
24483 + &avr32_ifield_table[AVR32_IFIELD_RY],
24484 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24485 + },
24486 + },
24487 + {
24488 + AVR32_OPC_SUBLT, 4, 0xf7b00500, 0xfff0ff00,
24489 + &avr32_syntax_table[AVR32_SYNTAX_SUBLT],
24490 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24491 + {
24492 + &avr32_ifield_table[AVR32_IFIELD_RY],
24493 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24494 + },
24495 + },
24496 + {
24497 + AVR32_OPC_SUBMI, 4, 0xf7b00600, 0xfff0ff00,
24498 + &avr32_syntax_table[AVR32_SYNTAX_SUBMI],
24499 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24500 + {
24501 + &avr32_ifield_table[AVR32_IFIELD_RY],
24502 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24503 + },
24504 + },
24505 + {
24506 + AVR32_OPC_SUBPL, 4, 0xf7b00700, 0xfff0ff00,
24507 + &avr32_syntax_table[AVR32_SYNTAX_SUBPL],
24508 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24509 + {
24510 + &avr32_ifield_table[AVR32_IFIELD_RY],
24511 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24512 + },
24513 + },
24514 + {
24515 + AVR32_OPC_SUBLS, 4, 0xf7b00800, 0xfff0ff00,
24516 + &avr32_syntax_table[AVR32_SYNTAX_SUBLS],
24517 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24518 + {
24519 + &avr32_ifield_table[AVR32_IFIELD_RY],
24520 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24521 + },
24522 + },
24523 + {
24524 + AVR32_OPC_SUBGT, 4, 0xf7b00900, 0xfff0ff00,
24525 + &avr32_syntax_table[AVR32_SYNTAX_SUBGT],
24526 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24527 + {
24528 + &avr32_ifield_table[AVR32_IFIELD_RY],
24529 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24530 + },
24531 + },
24532 + {
24533 + AVR32_OPC_SUBLE, 4, 0xf7b00a00, 0xfff0ff00,
24534 + &avr32_syntax_table[AVR32_SYNTAX_SUBLE],
24535 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24536 + {
24537 + &avr32_ifield_table[AVR32_IFIELD_RY],
24538 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24539 + },
24540 + },
24541 + {
24542 + AVR32_OPC_SUBHI, 4, 0xf7b00b00, 0xfff0ff00,
24543 + &avr32_syntax_table[AVR32_SYNTAX_SUBHI],
24544 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24545 + {
24546 + &avr32_ifield_table[AVR32_IFIELD_RY],
24547 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24548 + },
24549 + },
24550 + {
24551 + AVR32_OPC_SUBVS, 4, 0xf7b00c00, 0xfff0ff00,
24552 + &avr32_syntax_table[AVR32_SYNTAX_SUBVS],
24553 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24554 + {
24555 + &avr32_ifield_table[AVR32_IFIELD_RY],
24556 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24557 + },
24558 + },
24559 + {
24560 + AVR32_OPC_SUBVC, 4, 0xf7b00d00, 0xfff0ff00,
24561 + &avr32_syntax_table[AVR32_SYNTAX_SUBVC],
24562 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24563 + {
24564 + &avr32_ifield_table[AVR32_IFIELD_RY],
24565 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24566 + },
24567 + },
24568 + {
24569 + AVR32_OPC_SUBQS, 4, 0xf7b00e00, 0xfff0ff00,
24570 + &avr32_syntax_table[AVR32_SYNTAX_SUBQS],
24571 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24572 + {
24573 + &avr32_ifield_table[AVR32_IFIELD_RY],
24574 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24575 + },
24576 + },
24577 + {
24578 + AVR32_OPC_SUBAL, 4, 0xf7b00f00, 0xfff0ff00,
24579 + &avr32_syntax_table[AVR32_SYNTAX_SUBAL],
24580 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24581 + {
24582 + &avr32_ifield_table[AVR32_IFIELD_RY],
24583 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24584 + },
24585 + },
24586 + {
24587 + AVR32_OPC_SUBFEQ, 4, 0xf5b00000, 0xfff0ff00,
24588 + &avr32_syntax_table[AVR32_SYNTAX_SUBFEQ],
24589 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24590 + {
24591 + &avr32_ifield_table[AVR32_IFIELD_RY],
24592 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24593 + },
24594 + },
24595 + {
24596 + AVR32_OPC_SUBFNE, 4, 0xf5b00100, 0xfff0ff00,
24597 + &avr32_syntax_table[AVR32_SYNTAX_SUBFNE],
24598 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24599 + {
24600 + &avr32_ifield_table[AVR32_IFIELD_RY],
24601 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24602 + },
24603 + },
24604 + {
24605 + AVR32_OPC_SUBFCC, 4, 0xf5b00200, 0xfff0ff00,
24606 + &avr32_syntax_table[AVR32_SYNTAX_SUBFHS],
24607 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24608 + {
24609 + &avr32_ifield_table[AVR32_IFIELD_RY],
24610 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24611 + },
24612 + },
24613 + {
24614 + AVR32_OPC_SUBFCS, 4, 0xf5b00300, 0xfff0ff00,
24615 + &avr32_syntax_table[AVR32_SYNTAX_SUBFLO],
24616 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24617 + {
24618 + &avr32_ifield_table[AVR32_IFIELD_RY],
24619 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24620 + },
24621 + },
24622 + {
24623 + AVR32_OPC_SUBFGE, 4, 0xf5b00400, 0xfff0ff00,
24624 + &avr32_syntax_table[AVR32_SYNTAX_SUBFGE],
24625 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24626 + {
24627 + &avr32_ifield_table[AVR32_IFIELD_RY],
24628 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24629 + },
24630 + },
24631 + {
24632 + AVR32_OPC_SUBFLT, 4, 0xf5b00500, 0xfff0ff00,
24633 + &avr32_syntax_table[AVR32_SYNTAX_SUBFLT],
24634 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24635 + {
24636 + &avr32_ifield_table[AVR32_IFIELD_RY],
24637 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24638 + },
24639 + },
24640 + {
24641 + AVR32_OPC_SUBFMI, 4, 0xf5b00600, 0xfff0ff00,
24642 + &avr32_syntax_table[AVR32_SYNTAX_SUBFMI],
24643 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24644 + {
24645 + &avr32_ifield_table[AVR32_IFIELD_RY],
24646 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24647 + },
24648 + },
24649 + {
24650 + AVR32_OPC_SUBFPL, 4, 0xf5b00700, 0xfff0ff00,
24651 + &avr32_syntax_table[AVR32_SYNTAX_SUBFPL],
24652 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24653 + {
24654 + &avr32_ifield_table[AVR32_IFIELD_RY],
24655 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24656 + },
24657 + },
24658 + {
24659 + AVR32_OPC_SUBFLS, 4, 0xf5b00800, 0xfff0ff00,
24660 + &avr32_syntax_table[AVR32_SYNTAX_SUBFLS],
24661 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24662 + {
24663 + &avr32_ifield_table[AVR32_IFIELD_RY],
24664 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24665 + },
24666 + },
24667 + {
24668 + AVR32_OPC_SUBFGT, 4, 0xf5b00900, 0xfff0ff00,
24669 + &avr32_syntax_table[AVR32_SYNTAX_SUBFGT],
24670 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24671 + {
24672 + &avr32_ifield_table[AVR32_IFIELD_RY],
24673 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24674 + },
24675 + },
24676 + {
24677 + AVR32_OPC_SUBFLE, 4, 0xf5b00a00, 0xfff0ff00,
24678 + &avr32_syntax_table[AVR32_SYNTAX_SUBFLE],
24679 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24680 + {
24681 + &avr32_ifield_table[AVR32_IFIELD_RY],
24682 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24683 + },
24684 + },
24685 + {
24686 + AVR32_OPC_SUBFHI, 4, 0xf5b00b00, 0xfff0ff00,
24687 + &avr32_syntax_table[AVR32_SYNTAX_SUBFHI],
24688 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24689 + {
24690 + &avr32_ifield_table[AVR32_IFIELD_RY],
24691 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24692 + },
24693 + },
24694 + {
24695 + AVR32_OPC_SUBFVS, 4, 0xf5b00c00, 0xfff0ff00,
24696 + &avr32_syntax_table[AVR32_SYNTAX_SUBFVS],
24697 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24698 + {
24699 + &avr32_ifield_table[AVR32_IFIELD_RY],
24700 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24701 + },
24702 + },
24703 + {
24704 + AVR32_OPC_SUBFVC, 4, 0xf5b00d00, 0xfff0ff00,
24705 + &avr32_syntax_table[AVR32_SYNTAX_SUBFVC],
24706 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24707 + {
24708 + &avr32_ifield_table[AVR32_IFIELD_RY],
24709 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24710 + },
24711 + },
24712 + {
24713 + AVR32_OPC_SUBFQS, 4, 0xf5b00e00, 0xfff0ff00,
24714 + &avr32_syntax_table[AVR32_SYNTAX_SUBFQS],
24715 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24716 + {
24717 + &avr32_ifield_table[AVR32_IFIELD_RY],
24718 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24719 + },
24720 + },
24721 + {
24722 + AVR32_OPC_SUBFAL, 4, 0xf5b00f00, 0xfff0ff00,
24723 + &avr32_syntax_table[AVR32_SYNTAX_SUBFAL],
24724 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24725 + {
24726 + &avr32_ifield_table[AVR32_IFIELD_RY],
24727 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24728 + },
24729 + },
24730 + {
24731 + AVR32_OPC_SUBHH_W, 4, 0xe0000f00, 0xe1f0ffc0,
24732 + &avr32_syntax_table[AVR32_SYNTAX_SUBHH_W],
24733 + BFD_RELOC_UNUSED, 5, -1,
24734 + {
24735 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24736 + &avr32_ifield_table[AVR32_IFIELD_RX],
24737 + &avr32_ifield_table[AVR32_IFIELD_X],
24738 + &avr32_ifield_table[AVR32_IFIELD_RY],
24739 + &avr32_ifield_table[AVR32_IFIELD_Y],
24740 + },
24741 + },
24742 + {
24743 + AVR32_OPC_SWAP_B, 2, 0x5cb00000, 0xfff00000,
24744 + &avr32_syntax_table[AVR32_SYNTAX_SWAP_B],
24745 + BFD_RELOC_UNUSED, 1, -1,
24746 + {
24747 + &avr32_ifield_table[AVR32_IFIELD_RY],
24748 + }
24749 + },
24750 + {
24751 + AVR32_OPC_SWAP_BH, 2, 0x5cc00000, 0xfff00000,
24752 + &avr32_syntax_table[AVR32_SYNTAX_SWAP_BH],
24753 + BFD_RELOC_UNUSED, 1, -1,
24754 + {
24755 + &avr32_ifield_table[AVR32_IFIELD_RY],
24756 + }
24757 + },
24758 + {
24759 + AVR32_OPC_SWAP_H, 2, 0x5ca00000, 0xfff00000,
24760 + &avr32_syntax_table[AVR32_SYNTAX_SWAP_H],
24761 + BFD_RELOC_UNUSED, 1, -1,
24762 + {
24763 + &avr32_ifield_table[AVR32_IFIELD_RY],
24764 + }
24765 + },
24766 + {
24767 + AVR32_OPC_SYNC, 4, 0xebb00000, 0xffffff00,
24768 + &avr32_syntax_table[AVR32_SYNTAX_SYNC],
24769 + BFD_RELOC_AVR32_8S_EXT, 1, 0,
24770 + {
24771 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24772 + }
24773 + },
24774 + {
24775 + AVR32_OPC_TLBR, 2, 0xd6430000, 0xffff0000,
24776 + &avr32_syntax_table[AVR32_SYNTAX_TLBR],
24777 + BFD_RELOC_UNUSED, 0, -1, { NULL },
24778 + },
24779 + {
24780 + AVR32_OPC_TLBS, 2, 0xd6530000, 0xffff0000,
24781 + &avr32_syntax_table[AVR32_SYNTAX_TLBS],
24782 + BFD_RELOC_UNUSED, 0, -1, { NULL },
24783 + },
24784 + {
24785 + AVR32_OPC_TLBW, 2, 0xd6630000, 0xffff0000,
24786 + &avr32_syntax_table[AVR32_SYNTAX_TLBW],
24787 + BFD_RELOC_UNUSED, 0, -1, { NULL },
24788 + },
24789 + {
24790 + AVR32_OPC_TNBZ, 2, 0x5ce00000, 0xfff00000,
24791 + &avr32_syntax_table[AVR32_SYNTAX_TNBZ],
24792 + BFD_RELOC_UNUSED, 1, -1,
24793 + {
24794 + &avr32_ifield_table[AVR32_IFIELD_RY],
24795 + }
24796 + },
24797 + {
24798 + AVR32_OPC_TST, 2, 0x00700000, 0xe1f00000,
24799 + &avr32_syntax_table[AVR32_SYNTAX_TST],
24800 + BFD_RELOC_UNUSED, 2, -1,
24801 + {
24802 + &avr32_ifield_table[AVR32_IFIELD_RY],
24803 + &avr32_ifield_table[AVR32_IFIELD_RX],
24804 + },
24805 + },
24806 + {
24807 + AVR32_OPC_XCHG, 4, 0xe0000b40, 0xe1f0fff0,
24808 + &avr32_syntax_table[AVR32_SYNTAX_XCHG],
24809 + BFD_RELOC_UNUSED, 3, -1,
24810 + {
24811 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24812 + &avr32_ifield_table[AVR32_IFIELD_RX],
24813 + &avr32_ifield_table[AVR32_IFIELD_RY],
24814 + },
24815 + },
24816 + {
24817 + AVR32_OPC_MEMC, 4, 0xf6100000, 0xfff00000,
24818 + &avr32_syntax_table[AVR32_SYNTAX_MEMC],
24819 + BFD_RELOC_AVR32_15S, 2, 0,
24820 + {
24821 + &avr32_ifield_table[AVR32_IFIELD_MEM15],
24822 + &avr32_ifield_table[AVR32_IFIELD_MEMB5],
24823 + },
24824 + },
24825 + {
24826 + AVR32_OPC_MEMS, 4, 0xf8100000, 0xfff00000,
24827 + &avr32_syntax_table[AVR32_SYNTAX_MEMS],
24828 + BFD_RELOC_AVR32_15S, 2, 0,
24829 + {
24830 + &avr32_ifield_table[AVR32_IFIELD_MEM15],
24831 + &avr32_ifield_table[AVR32_IFIELD_MEMB5],
24832 + },
24833 + },
24834 + {
24835 + AVR32_OPC_MEMT, 4, 0xfa100000, 0xfff00000,
24836 + &avr32_syntax_table[AVR32_SYNTAX_MEMT],
24837 + BFD_RELOC_AVR32_15S, 2, 0,
24838 + {
24839 + &avr32_ifield_table[AVR32_IFIELD_MEM15],
24840 + &avr32_ifield_table[AVR32_IFIELD_MEMB5],
24841 + },
24842 + },
24843 + {
24844 + AVR32_OPC_BFEXTS, 4, 0xe1d0b000, 0xe1f0fc00,
24845 + &avr32_syntax_table[AVR32_SYNTAX_BFEXTS],
24846 + BFD_RELOC_UNUSED, 4, -1,
24847 + {
24848 + &avr32_ifield_table[AVR32_IFIELD_RX],
24849 + &avr32_ifield_table[AVR32_IFIELD_RY],
24850 + &avr32_ifield_table[AVR32_IFIELD_S5],
24851 + &avr32_ifield_table[AVR32_IFIELD_K5E],
24852 + },
24853 + },
24854 + {
24855 + AVR32_OPC_BFEXTU, 4, 0xe1d0c000, 0xe1f0fc00,
24856 + &avr32_syntax_table[AVR32_SYNTAX_BFEXTU],
24857 + BFD_RELOC_UNUSED, 4, -1,
24858 + {
24859 + &avr32_ifield_table[AVR32_IFIELD_RX],
24860 + &avr32_ifield_table[AVR32_IFIELD_RY],
24861 + &avr32_ifield_table[AVR32_IFIELD_S5],
24862 + &avr32_ifield_table[AVR32_IFIELD_K5E],
24863 + },
24864 + },
24865 + {
24866 + AVR32_OPC_BFINS, 4, 0xe1d0d000, 0xe1f0fc00,
24867 + &avr32_syntax_table[AVR32_SYNTAX_BFINS],
24868 + BFD_RELOC_UNUSED, 4, -1,
24869 + {
24870 + &avr32_ifield_table[AVR32_IFIELD_RX],
24871 + &avr32_ifield_table[AVR32_IFIELD_RY],
24872 + &avr32_ifield_table[AVR32_IFIELD_S5],
24873 + &avr32_ifield_table[AVR32_IFIELD_K5E],
24874 + },
24875 + },
24876 +#define AVR32_OPCODE_RSUBCOND(cond_name, cond_field) \
24877 + { \
24878 + AVR32_OPC_RSUB ## cond_name , 4, \
24879 + 0xfbb00000 | (cond_field << 8), 0xfff0ff00, \
24880 + &avr32_syntax_table[AVR32_SYNTAX_RSUB ## cond_name ], \
24881 + BFD_RELOC_AVR32_8S_EXT, 2, 1, \
24882 + { \
24883 + &avr32_ifield_table[AVR32_IFIELD_RY], \
24884 + &avr32_ifield_table[AVR32_IFIELD_K8E], \
24885 + }, \
24886 + },
24887 +
24888 + AVR32_OPCODE_RSUBCOND (EQ, 0)
24889 + AVR32_OPCODE_RSUBCOND (NE, 1)
24890 + AVR32_OPCODE_RSUBCOND (CC, 2)
24891 + AVR32_OPCODE_RSUBCOND (CS, 3)
24892 + AVR32_OPCODE_RSUBCOND (GE, 4)
24893 + AVR32_OPCODE_RSUBCOND (LT, 5)
24894 + AVR32_OPCODE_RSUBCOND (MI, 6)
24895 + AVR32_OPCODE_RSUBCOND (PL, 7)
24896 + AVR32_OPCODE_RSUBCOND (LS, 8)
24897 + AVR32_OPCODE_RSUBCOND (GT, 9)
24898 + AVR32_OPCODE_RSUBCOND (LE, 10)
24899 + AVR32_OPCODE_RSUBCOND (HI, 11)
24900 + AVR32_OPCODE_RSUBCOND (VS, 12)
24901 + AVR32_OPCODE_RSUBCOND (VC, 13)
24902 + AVR32_OPCODE_RSUBCOND (QS, 14)
24903 + AVR32_OPCODE_RSUBCOND (AL, 15)
24904 +
24905 +#define AVR32_OPCODE_OP3_COND(op_name, op_field, cond_name, cond_field) \
24906 + { \
24907 + AVR32_OPC_ ## op_name ## cond_name , 4, \
24908 + 0xe1d0e000 | (cond_field << 8) | (op_field << 4), 0xe1f0fff0, \
24909 + &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
24910 + BFD_RELOC_UNUSED, 3, -1, \
24911 + { \
24912 + &avr32_ifield_table[AVR32_IFIELD_RD_E], \
24913 + &avr32_ifield_table[AVR32_IFIELD_RX], \
24914 + &avr32_ifield_table[AVR32_IFIELD_RY], \
24915 + }, \
24916 + },
24917 +
24918 + AVR32_OPCODE_OP3_COND (ADD, 0, EQ, 0)
24919 + AVR32_OPCODE_OP3_COND (ADD, 0, NE, 1)
24920 + AVR32_OPCODE_OP3_COND (ADD, 0, CC, 2)
24921 + AVR32_OPCODE_OP3_COND (ADD, 0, CS, 3)
24922 + AVR32_OPCODE_OP3_COND (ADD, 0, GE, 4)
24923 + AVR32_OPCODE_OP3_COND (ADD, 0, LT, 5)
24924 + AVR32_OPCODE_OP3_COND (ADD, 0, MI, 6)
24925 + AVR32_OPCODE_OP3_COND (ADD, 0, PL, 7)
24926 + AVR32_OPCODE_OP3_COND (ADD, 0, LS, 8)
24927 + AVR32_OPCODE_OP3_COND (ADD, 0, GT, 9)
24928 + AVR32_OPCODE_OP3_COND (ADD, 0, LE, 10)
24929 + AVR32_OPCODE_OP3_COND (ADD, 0, HI, 11)
24930 + AVR32_OPCODE_OP3_COND (ADD, 0, VS, 12)
24931 + AVR32_OPCODE_OP3_COND (ADD, 0, VC, 13)
24932 + AVR32_OPCODE_OP3_COND (ADD, 0, QS, 14)
24933 + AVR32_OPCODE_OP3_COND (ADD, 0, AL, 15)
24934 +
24935 + AVR32_OPCODE_OP3_COND (SUB2, 1, EQ, 0)
24936 + AVR32_OPCODE_OP3_COND (SUB2, 1, NE, 1)
24937 + AVR32_OPCODE_OP3_COND (SUB2, 1, CC, 2)
24938 + AVR32_OPCODE_OP3_COND (SUB2, 1, CS, 3)
24939 + AVR32_OPCODE_OP3_COND (SUB2, 1, GE, 4)
24940 + AVR32_OPCODE_OP3_COND (SUB2, 1, LT, 5)
24941 + AVR32_OPCODE_OP3_COND (SUB2, 1, MI, 6)
24942 + AVR32_OPCODE_OP3_COND (SUB2, 1, PL, 7)
24943 + AVR32_OPCODE_OP3_COND (SUB2, 1, LS, 8)
24944 + AVR32_OPCODE_OP3_COND (SUB2, 1, GT, 9)
24945 + AVR32_OPCODE_OP3_COND (SUB2, 1, LE, 10)
24946 + AVR32_OPCODE_OP3_COND (SUB2, 1, HI, 11)
24947 + AVR32_OPCODE_OP3_COND (SUB2, 1, VS, 12)
24948 + AVR32_OPCODE_OP3_COND (SUB2, 1, VC, 13)
24949 + AVR32_OPCODE_OP3_COND (SUB2, 1, QS, 14)
24950 + AVR32_OPCODE_OP3_COND (SUB2, 1, AL, 15)
24951 +
24952 + AVR32_OPCODE_OP3_COND (AND, 2, EQ, 0)
24953 + AVR32_OPCODE_OP3_COND (AND, 2, NE, 1)
24954 + AVR32_OPCODE_OP3_COND (AND, 2, CC, 2)
24955 + AVR32_OPCODE_OP3_COND (AND, 2, CS, 3)
24956 + AVR32_OPCODE_OP3_COND (AND, 2, GE, 4)
24957 + AVR32_OPCODE_OP3_COND (AND, 2, LT, 5)
24958 + AVR32_OPCODE_OP3_COND (AND, 2, MI, 6)
24959 + AVR32_OPCODE_OP3_COND (AND, 2, PL, 7)
24960 + AVR32_OPCODE_OP3_COND (AND, 2, LS, 8)
24961 + AVR32_OPCODE_OP3_COND (AND, 2, GT, 9)
24962 + AVR32_OPCODE_OP3_COND (AND, 2, LE, 10)
24963 + AVR32_OPCODE_OP3_COND (AND, 2, HI, 11)
24964 + AVR32_OPCODE_OP3_COND (AND, 2, VS, 12)
24965 + AVR32_OPCODE_OP3_COND (AND, 2, VC, 13)
24966 + AVR32_OPCODE_OP3_COND (AND, 2, QS, 14)
24967 + AVR32_OPCODE_OP3_COND (AND, 2, AL, 15)
24968 +
24969 + AVR32_OPCODE_OP3_COND (OR, 3, EQ, 0)
24970 + AVR32_OPCODE_OP3_COND (OR, 3, NE, 1)
24971 + AVR32_OPCODE_OP3_COND (OR, 3, CC, 2)
24972 + AVR32_OPCODE_OP3_COND (OR, 3, CS, 3)
24973 + AVR32_OPCODE_OP3_COND (OR, 3, GE, 4)
24974 + AVR32_OPCODE_OP3_COND (OR, 3, LT, 5)
24975 + AVR32_OPCODE_OP3_COND (OR, 3, MI, 6)
24976 + AVR32_OPCODE_OP3_COND (OR, 3, PL, 7)
24977 + AVR32_OPCODE_OP3_COND (OR, 3, LS, 8)
24978 + AVR32_OPCODE_OP3_COND (OR, 3, GT, 9)
24979 + AVR32_OPCODE_OP3_COND (OR, 3, LE, 10)
24980 + AVR32_OPCODE_OP3_COND (OR, 3, HI, 11)
24981 + AVR32_OPCODE_OP3_COND (OR, 3, VS, 12)
24982 + AVR32_OPCODE_OP3_COND (OR, 3, VC, 13)
24983 + AVR32_OPCODE_OP3_COND (OR, 3, QS, 14)
24984 + AVR32_OPCODE_OP3_COND (OR, 3, AL, 15)
24985 +
24986 + AVR32_OPCODE_OP3_COND (EOR, 4, EQ, 0)
24987 + AVR32_OPCODE_OP3_COND (EOR, 4, NE, 1)
24988 + AVR32_OPCODE_OP3_COND (EOR, 4, CC, 2)
24989 + AVR32_OPCODE_OP3_COND (EOR, 4, CS, 3)
24990 + AVR32_OPCODE_OP3_COND (EOR, 4, GE, 4)
24991 + AVR32_OPCODE_OP3_COND (EOR, 4, LT, 5)
24992 + AVR32_OPCODE_OP3_COND (EOR, 4, MI, 6)
24993 + AVR32_OPCODE_OP3_COND (EOR, 4, PL, 7)
24994 + AVR32_OPCODE_OP3_COND (EOR, 4, LS, 8)
24995 + AVR32_OPCODE_OP3_COND (EOR, 4, GT, 9)
24996 + AVR32_OPCODE_OP3_COND (EOR, 4, LE, 10)
24997 + AVR32_OPCODE_OP3_COND (EOR, 4, HI, 11)
24998 + AVR32_OPCODE_OP3_COND (EOR, 4, VS, 12)
24999 + AVR32_OPCODE_OP3_COND (EOR, 4, VC, 13)
25000 + AVR32_OPCODE_OP3_COND (EOR, 4, QS, 14)
25001 + AVR32_OPCODE_OP3_COND (EOR, 4, AL, 15)
25002 +
25003 +#define AVR32_OPCODE_LD_COND(op_name, op_field, cond_name, cond_field) \
25004 + { \
25005 + AVR32_OPC_ ## op_name ## cond_name , 4, \
25006 + 0xe1f00000 | (cond_field << 12) | (op_field << 9), 0xe1f0fe00, \
25007 + &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
25008 + BFD_RELOC_UNUSED, 3, -1, \
25009 + { \
25010 + &avr32_ifield_table[AVR32_IFIELD_RY], \
25011 + &avr32_ifield_table[AVR32_IFIELD_RX], \
25012 + &avr32_ifield_table[AVR32_IFIELD_K9E], \
25013 + }, \
25014 + },
25015 +
25016 +#define AVR32_OPCODE_ST_COND(op_name, op_field, cond_name, cond_field) \
25017 + { \
25018 + AVR32_OPC_ ## op_name ## cond_name , 4, \
25019 + 0xe1f00000 | (cond_field << 12) | (op_field << 9), 0xe1f0fe00, \
25020 + &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
25021 + BFD_RELOC_UNUSED, 3, -1, \
25022 + { \
25023 + &avr32_ifield_table[AVR32_IFIELD_RX], \
25024 + &avr32_ifield_table[AVR32_IFIELD_K9E], \
25025 + &avr32_ifield_table[AVR32_IFIELD_RY], \
25026 + }, \
25027 + },
25028 +
25029 + AVR32_OPCODE_LD_COND (LD_W, 0, EQ, 0)
25030 + AVR32_OPCODE_LD_COND (LD_W, 0, NE, 1)
25031 + AVR32_OPCODE_LD_COND (LD_W, 0, CC, 2)
25032 + AVR32_OPCODE_LD_COND (LD_W, 0, CS, 3)
25033 + AVR32_OPCODE_LD_COND (LD_W, 0, GE, 4)
25034 + AVR32_OPCODE_LD_COND (LD_W, 0, LT, 5)
25035 + AVR32_OPCODE_LD_COND (LD_W, 0, MI, 6)
25036 + AVR32_OPCODE_LD_COND (LD_W, 0, PL, 7)
25037 + AVR32_OPCODE_LD_COND (LD_W, 0, LS, 8)
25038 + AVR32_OPCODE_LD_COND (LD_W, 0, GT, 9)
25039 + AVR32_OPCODE_LD_COND (LD_W, 0, LE, 10)
25040 + AVR32_OPCODE_LD_COND (LD_W, 0, HI, 11)
25041 + AVR32_OPCODE_LD_COND (LD_W, 0, VS, 12)
25042 + AVR32_OPCODE_LD_COND (LD_W, 0, VC, 13)
25043 + AVR32_OPCODE_LD_COND (LD_W, 0, QS, 14)
25044 + AVR32_OPCODE_LD_COND (LD_W, 0, AL, 15)
25045 +
25046 + AVR32_OPCODE_LD_COND (LD_SH, 1, EQ, 0)
25047 + AVR32_OPCODE_LD_COND (LD_SH, 1, NE, 1)
25048 + AVR32_OPCODE_LD_COND (LD_SH, 1, CC, 2)
25049 + AVR32_OPCODE_LD_COND (LD_SH, 1, CS, 3)
25050 + AVR32_OPCODE_LD_COND (LD_SH, 1, GE, 4)
25051 + AVR32_OPCODE_LD_COND (LD_SH, 1, LT, 5)
25052 + AVR32_OPCODE_LD_COND (LD_SH, 1, MI, 6)
25053 + AVR32_OPCODE_LD_COND (LD_SH, 1, PL, 7)
25054 + AVR32_OPCODE_LD_COND (LD_SH, 1, LS, 8)
25055 + AVR32_OPCODE_LD_COND (LD_SH, 1, GT, 9)
25056 + AVR32_OPCODE_LD_COND (LD_SH, 1, LE, 10)
25057 + AVR32_OPCODE_LD_COND (LD_SH, 1, HI, 11)
25058 + AVR32_OPCODE_LD_COND (LD_SH, 1, VS, 12)
25059 + AVR32_OPCODE_LD_COND (LD_SH, 1, VC, 13)
25060 + AVR32_OPCODE_LD_COND (LD_SH, 1, QS, 14)
25061 + AVR32_OPCODE_LD_COND (LD_SH, 1, AL, 15)
25062 +
25063 + AVR32_OPCODE_LD_COND (LD_UH, 2, EQ, 0)
25064 + AVR32_OPCODE_LD_COND (LD_UH, 2, NE, 1)
25065 + AVR32_OPCODE_LD_COND (LD_UH, 2, CC, 2)
25066 + AVR32_OPCODE_LD_COND (LD_UH, 2, CS, 3)
25067 + AVR32_OPCODE_LD_COND (LD_UH, 2, GE, 4)
25068 + AVR32_OPCODE_LD_COND (LD_UH, 2, LT, 5)
25069 + AVR32_OPCODE_LD_COND (LD_UH, 2, MI, 6)
25070 + AVR32_OPCODE_LD_COND (LD_UH, 2, PL, 7)
25071 + AVR32_OPCODE_LD_COND (LD_SH, 2, LS, 8)
25072 + AVR32_OPCODE_LD_COND (LD_SH, 2, GT, 9)
25073 + AVR32_OPCODE_LD_COND (LD_SH, 2, LE, 10)
25074 + AVR32_OPCODE_LD_COND (LD_SH, 2, HI, 11)
25075 + AVR32_OPCODE_LD_COND (LD_SH, 2, VS, 12)
25076 + AVR32_OPCODE_LD_COND (LD_SH, 2, VC, 13)
25077 + AVR32_OPCODE_LD_COND (LD_SH, 2, QS, 14)
25078 + AVR32_OPCODE_LD_COND (LD_SH, 2, AL, 15)
25079 +
25080 + AVR32_OPCODE_LD_COND (LD_SB, 3, EQ, 0)
25081 + AVR32_OPCODE_LD_COND (LD_SB, 3, NE, 1)
25082 + AVR32_OPCODE_LD_COND (LD_SB, 3, CC, 2)
25083 + AVR32_OPCODE_LD_COND (LD_SB, 3, CS, 3)
25084 + AVR32_OPCODE_LD_COND (LD_SB, 3, GE, 4)
25085 + AVR32_OPCODE_LD_COND (LD_SB, 3, LT, 5)
25086 + AVR32_OPCODE_LD_COND (LD_SB, 3, MI, 6)
25087 + AVR32_OPCODE_LD_COND (LD_SB, 3, PL, 7)
25088 + AVR32_OPCODE_LD_COND (LD_SB, 3, LS, 8)
25089 + AVR32_OPCODE_LD_COND (LD_SB, 3, GT, 9)
25090 + AVR32_OPCODE_LD_COND (LD_SB, 3, LE, 10)
25091 + AVR32_OPCODE_LD_COND (LD_SB, 3, HI, 11)
25092 + AVR32_OPCODE_LD_COND (LD_SB, 3, VS, 12)
25093 + AVR32_OPCODE_LD_COND (LD_SB, 3, VC, 13)
25094 + AVR32_OPCODE_LD_COND (LD_SB, 3, QS, 14)
25095 + AVR32_OPCODE_LD_COND (LD_SB, 3, AL, 15)
25096 +
25097 + AVR32_OPCODE_LD_COND (LD_UB, 4, EQ, 0)
25098 + AVR32_OPCODE_LD_COND (LD_UB, 4, NE, 1)
25099 + AVR32_OPCODE_LD_COND (LD_UB, 4, CC, 2)
25100 + AVR32_OPCODE_LD_COND (LD_UB, 4, CS, 3)
25101 + AVR32_OPCODE_LD_COND (LD_UB, 4, GE, 4)
25102 + AVR32_OPCODE_LD_COND (LD_UB, 4, LT, 5)
25103 + AVR32_OPCODE_LD_COND (LD_UB, 4, MI, 6)
25104 + AVR32_OPCODE_LD_COND (LD_UB, 4, PL, 7)
25105 + AVR32_OPCODE_LD_COND (LD_UB, 4, LS, 8)
25106 + AVR32_OPCODE_LD_COND (LD_UB, 4, GT, 9)
25107 + AVR32_OPCODE_LD_COND (LD_UB, 4, LE, 10)
25108 + AVR32_OPCODE_LD_COND (LD_UB, 4, HI, 11)
25109 + AVR32_OPCODE_LD_COND (LD_UB, 4, VS, 12)
25110 + AVR32_OPCODE_LD_COND (LD_UB, 4, VC, 13)
25111 + AVR32_OPCODE_LD_COND (LD_UB, 4, QS, 14)
25112 + AVR32_OPCODE_LD_COND (LD_UB, 4, AL, 15)
25113 +
25114 + AVR32_OPCODE_ST_COND (ST_W, 5, EQ, 0)
25115 + AVR32_OPCODE_ST_COND (ST_W, 5, NE, 1)
25116 + AVR32_OPCODE_ST_COND (ST_W, 5, CC, 2)
25117 + AVR32_OPCODE_ST_COND (ST_W, 5, CS, 3)
25118 + AVR32_OPCODE_ST_COND (ST_W, 5, GE, 4)
25119 + AVR32_OPCODE_ST_COND (ST_W, 5, LT, 5)
25120 + AVR32_OPCODE_ST_COND (ST_W, 5, MI, 6)
25121 + AVR32_OPCODE_ST_COND (ST_W, 5, PL, 7)
25122 + AVR32_OPCODE_ST_COND (ST_W, 5, LS, 8)
25123 + AVR32_OPCODE_ST_COND (ST_W, 5, GT, 9)
25124 + AVR32_OPCODE_ST_COND (ST_W, 5, LE, 10)
25125 + AVR32_OPCODE_ST_COND (ST_W, 5, HI, 11)
25126 + AVR32_OPCODE_ST_COND (ST_W, 5, VS, 12)
25127 + AVR32_OPCODE_ST_COND (ST_W, 5, VC, 13)
25128 + AVR32_OPCODE_ST_COND (ST_W, 5, QS, 14)
25129 + AVR32_OPCODE_ST_COND (ST_W, 5, AL, 15)
25130 +
25131 + AVR32_OPCODE_ST_COND (ST_H, 6, EQ, 0)
25132 + AVR32_OPCODE_ST_COND (ST_H, 6, NE, 1)
25133 + AVR32_OPCODE_ST_COND (ST_H, 6, CC, 2)
25134 + AVR32_OPCODE_ST_COND (ST_H, 6, CS, 3)
25135 + AVR32_OPCODE_ST_COND (ST_H, 6, GE, 4)
25136 + AVR32_OPCODE_ST_COND (ST_H, 6, LT, 5)
25137 + AVR32_OPCODE_ST_COND (ST_H, 6, MI, 6)
25138 + AVR32_OPCODE_ST_COND (ST_H, 6, PL, 7)
25139 + AVR32_OPCODE_ST_COND (ST_H, 6, LS, 8)
25140 + AVR32_OPCODE_ST_COND (ST_H, 6, GT, 9)
25141 + AVR32_OPCODE_ST_COND (ST_H, 6, LE, 10)
25142 + AVR32_OPCODE_ST_COND (ST_H, 6, HI, 11)
25143 + AVR32_OPCODE_ST_COND (ST_H, 6, VS, 12)
25144 + AVR32_OPCODE_ST_COND (ST_H, 6, VC, 13)
25145 + AVR32_OPCODE_ST_COND (ST_H, 6, QS, 14)
25146 + AVR32_OPCODE_ST_COND (ST_H, 6, AL, 15)
25147 +
25148 + AVR32_OPCODE_ST_COND (ST_B, 7, EQ, 0)
25149 + AVR32_OPCODE_ST_COND (ST_B, 7, NE, 1)
25150 + AVR32_OPCODE_ST_COND (ST_B, 7, CC, 2)
25151 + AVR32_OPCODE_ST_COND (ST_B, 7, CS, 3)
25152 + AVR32_OPCODE_ST_COND (ST_B, 7, GE, 4)
25153 + AVR32_OPCODE_ST_COND (ST_B, 7, LT, 5)
25154 + AVR32_OPCODE_ST_COND (ST_B, 7, MI, 6)
25155 + AVR32_OPCODE_ST_COND (ST_B, 7, PL, 7)
25156 + AVR32_OPCODE_ST_COND (ST_B, 7, LS, 8)
25157 + AVR32_OPCODE_ST_COND (ST_B, 7, GT, 9)
25158 + AVR32_OPCODE_ST_COND (ST_B, 7, LE, 10)
25159 + AVR32_OPCODE_ST_COND (ST_B, 7, HI, 11)
25160 + AVR32_OPCODE_ST_COND (ST_B, 7, VS, 12)
25161 + AVR32_OPCODE_ST_COND (ST_B, 7, VC, 13)
25162 + AVR32_OPCODE_ST_COND (ST_B, 7, QS, 14)
25163 + AVR32_OPCODE_ST_COND (ST_B, 7, AL, 15)
25164 +
25165 + {
25166 + AVR32_OPC_MOVH, 4, 0xfc100000, 0xfff00000,
25167 + &avr32_syntax_table[AVR32_SYNTAX_MOVH],
25168 + BFD_RELOC_AVR32_16U, 2, 1,
25169 + {
25170 + &avr32_ifield_table[AVR32_IFIELD_RY],
25171 + &avr32_ifield_table[AVR32_IFIELD_K16],
25172 + },
25173 + },
25174 +
25175 + };
25176 +
25177 +#define FPALIAS_DXY(name, opcode) \
25178 + { \
25179 + AVR32_ALIAS_##name##_S, \
25180 + &avr32_opc_table[AVR32_OPC_COP], \
25181 + { \
25182 + { 0, 0 }, \
25183 + { 1, 0 }, { 1, 1 }, { 1, 2 }, \
25184 + { 0, opcode }, \
25185 + }, \
25186 + }, { \
25187 + AVR32_ALIAS_##name##_D, \
25188 + &avr32_opc_table[AVR32_OPC_COP], \
25189 + { \
25190 + { 0, 0 }, \
25191 + { 1, 0 }, { 1, 1 }, { 1, 2 }, \
25192 + { 0, (opcode) | 0x40 }, \
25193 + }, \
25194 + }
25195 +#define FPALIAS_DX(name, opcode) \
25196 + { \
25197 + AVR32_ALIAS_##name##_S, \
25198 + &avr32_opc_table[AVR32_OPC_COP], \
25199 + { \
25200 + { 0, 0 }, \
25201 + { 1, 0 }, { 1, 1 }, { 0, 0 }, \
25202 + { 0, opcode }, \
25203 + }, \
25204 + }, { \
25205 + AVR32_ALIAS_##name##_D, \
25206 + &avr32_opc_table[AVR32_OPC_COP], \
25207 + { \
25208 + { 0, 0 }, \
25209 + { 1, 0 }, { 1, 1 }, { 0, 0 }, \
25210 + { 0, (opcode) | 0x40 }, \
25211 + }, \
25212 + }
25213 +#define FPALIAS_XY(name, opcode) \
25214 + { \
25215 + AVR32_ALIAS_##name##_S, \
25216 + &avr32_opc_table[AVR32_OPC_COP], \
25217 + { \
25218 + { 0, 0 }, \
25219 + { 0, 0 }, { 1, 0 }, { 1, 1 }, \
25220 + { 0, opcode }, \
25221 + }, \
25222 + }, { \
25223 + AVR32_ALIAS_##name##_D, \
25224 + &avr32_opc_table[AVR32_OPC_COP], \
25225 + { \
25226 + { 0, 0 }, \
25227 + { 0, 0 }, { 1, 0 }, { 1, 1 }, \
25228 + { 0, (opcode) | 0x40 }, \
25229 + }, \
25230 + }
25231 +
25232 +const struct avr32_alias avr32_alias_table[] =
25233 + {
25234 + FPALIAS_DXY(FMAC, 0x00),
25235 + FPALIAS_DXY(FNMAC, 0x01),
25236 + FPALIAS_DXY(FMSC, 0x02),
25237 + FPALIAS_DXY(FNMSC, 0x03),
25238 + FPALIAS_DXY(FADD, 0x04),
25239 + FPALIAS_DXY(FSUB, 0x05),
25240 + FPALIAS_DXY(FMUL, 0x06),
25241 + FPALIAS_DXY(FNMUL, 0x07),
25242 + FPALIAS_DX(FNEG, 0x08),
25243 + FPALIAS_DX(FABS, 0x09),
25244 + FPALIAS_XY(FCMP, 0x0d),
25245 + FPALIAS_DX(FMOV1, 0x0a),
25246 + {
25247 + AVR32_ALIAS_FMOV2_S,
25248 + &avr32_opc_table[AVR32_OPC_MVCR_W],
25249 + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
25250 + },
25251 + {
25252 + AVR32_ALIAS_FMOV2_D,
25253 + &avr32_opc_table[AVR32_OPC_MVCR_D],
25254 + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
25255 + },
25256 + {
25257 + AVR32_ALIAS_FMOV3_S,
25258 + &avr32_opc_table[AVR32_OPC_MVRC_W],
25259 + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
25260 + },
25261 + {
25262 + AVR32_ALIAS_FMOV3_D,
25263 + &avr32_opc_table[AVR32_OPC_MVRC_D],
25264 + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
25265 + },
25266 + {
25267 + AVR32_ALIAS_FCASTS_D,
25268 + &avr32_opc_table[AVR32_OPC_COP],
25269 + {
25270 + { 0, 0 },
25271 + { 1, 0 }, { 1, 1 }, { 0, 0 },
25272 + { 0, 0x0f },
25273 + },
25274 + },
25275 + {
25276 + AVR32_ALIAS_FCASTD_S,
25277 + &avr32_opc_table[AVR32_OPC_COP],
25278 + {
25279 + { 0, 0 },
25280 + { 1, 0 }, { 1, 1 }, { 0, 0 },
25281 + { 0, 0x10 },
25282 + },
25283 + },
25284 + {
25285 + AVR32_ALIAS_PICOSVMAC0,
25286 + &avr32_opc_table[AVR32_OPC_COP],
25287 + {
25288 + { 0, PICO_CPNO },
25289 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25290 + { 0, 0x0c },
25291 + },
25292 + },
25293 + {
25294 + AVR32_ALIAS_PICOSVMAC1,
25295 + &avr32_opc_table[AVR32_OPC_COP],
25296 + {
25297 + { 0, PICO_CPNO },
25298 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25299 + { 0, 0x0d },
25300 + },
25301 + },
25302 + {
25303 + AVR32_ALIAS_PICOSVMAC2,
25304 + &avr32_opc_table[AVR32_OPC_COP],
25305 + {
25306 + { 0, PICO_CPNO },
25307 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25308 + { 0, 0x0e },
25309 + },
25310 + },
25311 + {
25312 + AVR32_ALIAS_PICOSVMAC3,
25313 + &avr32_opc_table[AVR32_OPC_COP],
25314 + {
25315 + { 0, PICO_CPNO },
25316 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25317 + { 0, 0x0f },
25318 + },
25319 + },
25320 + {
25321 + AVR32_ALIAS_PICOSVMUL0,
25322 + &avr32_opc_table[AVR32_OPC_COP],
25323 + {
25324 + { 0, PICO_CPNO },
25325 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25326 + { 0, 0x08 },
25327 + },
25328 + },
25329 + {
25330 + AVR32_ALIAS_PICOSVMUL1,
25331 + &avr32_opc_table[AVR32_OPC_COP],
25332 + {
25333 + { 0, PICO_CPNO },
25334 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25335 + { 0, 0x09 },
25336 + },
25337 + },
25338 + {
25339 + AVR32_ALIAS_PICOSVMUL2,
25340 + &avr32_opc_table[AVR32_OPC_COP],
25341 + {
25342 + { 0, PICO_CPNO },
25343 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25344 + { 0, 0x0a },
25345 + },
25346 + },
25347 + {
25348 + AVR32_ALIAS_PICOSVMUL3,
25349 + &avr32_opc_table[AVR32_OPC_COP],
25350 + {
25351 + { 0, PICO_CPNO },
25352 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25353 + { 0, 0x0b },
25354 + },
25355 + },
25356 + {
25357 + AVR32_ALIAS_PICOVMAC0,
25358 + &avr32_opc_table[AVR32_OPC_COP],
25359 + {
25360 + { 0, PICO_CPNO },
25361 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25362 + { 0, 0x04 },
25363 + },
25364 + },
25365 + {
25366 + AVR32_ALIAS_PICOVMAC1,
25367 + &avr32_opc_table[AVR32_OPC_COP],
25368 + {
25369 + { 0, PICO_CPNO },
25370 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25371 + { 0, 0x05 },
25372 + },
25373 + },
25374 + {
25375 + AVR32_ALIAS_PICOVMAC2,
25376 + &avr32_opc_table[AVR32_OPC_COP],
25377 + {
25378 + { 0, PICO_CPNO },
25379 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25380 + { 0, 0x06 },
25381 + },
25382 + },
25383 + {
25384 + AVR32_ALIAS_PICOVMAC3,
25385 + &avr32_opc_table[AVR32_OPC_COP],
25386 + {
25387 + { 0, PICO_CPNO },
25388 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25389 + { 0, 0x07 },
25390 + },
25391 + },
25392 + {
25393 + AVR32_ALIAS_PICOVMUL0,
25394 + &avr32_opc_table[AVR32_OPC_COP],
25395 + {
25396 + { 0, PICO_CPNO },
25397 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25398 + { 0, 0x00 },
25399 + },
25400 + },
25401 + {
25402 + AVR32_ALIAS_PICOVMUL1,
25403 + &avr32_opc_table[AVR32_OPC_COP],
25404 + {
25405 + { 0, PICO_CPNO },
25406 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25407 + { 0, 0x01 },
25408 + },
25409 + },
25410 + {
25411 + AVR32_ALIAS_PICOVMUL2,
25412 + &avr32_opc_table[AVR32_OPC_COP],
25413 + {
25414 + { 0, PICO_CPNO },
25415 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25416 + { 0, 0x02 },
25417 + },
25418 + },
25419 + {
25420 + AVR32_ALIAS_PICOVMUL3,
25421 + &avr32_opc_table[AVR32_OPC_COP],
25422 + {
25423 + { 0, PICO_CPNO },
25424 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25425 + { 0, 0x03 },
25426 + },
25427 + },
25428 + {
25429 + AVR32_ALIAS_PICOLD_D1,
25430 + &avr32_opc_table[AVR32_OPC_LDC_D1],
25431 + {
25432 + { 0, PICO_CPNO },
25433 + { 1, 0 }, { 1, 1 },
25434 + },
25435 + },
25436 + {
25437 + AVR32_ALIAS_PICOLD_D2,
25438 + &avr32_opc_table[AVR32_OPC_LDC_D2],
25439 + {
25440 + { 0, PICO_CPNO },
25441 + { 1, 0 }, { 1, 1 },
25442 + },
25443 + },
25444 + {
25445 + AVR32_ALIAS_PICOLD_D3,
25446 + &avr32_opc_table[AVR32_OPC_LDC_D3],
25447 + {
25448 + { 0, PICO_CPNO },
25449 + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
25450 + },
25451 + },
25452 + {
25453 + AVR32_ALIAS_PICOLD_W1,
25454 + &avr32_opc_table[AVR32_OPC_LDC_W1],
25455 + {
25456 + { 0, PICO_CPNO },
25457 + { 1, 0 }, { 1, 1 },
25458 + },
25459 + },
25460 + {
25461 + AVR32_ALIAS_PICOLD_W2,
25462 + &avr32_opc_table[AVR32_OPC_LDC_W2],
25463 + {
25464 + { 0, PICO_CPNO },
25465 + { 1, 0 }, { 1, 1 },
25466 + },
25467 + },
25468 + {
25469 + AVR32_ALIAS_PICOLD_W3,
25470 + &avr32_opc_table[AVR32_OPC_LDC_W3],
25471 + {
25472 + { 0, PICO_CPNO },
25473 + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
25474 + },
25475 + },
25476 + {
25477 + AVR32_ALIAS_PICOLDM_D,
25478 + &avr32_opc_table[AVR32_OPC_LDCM_D],
25479 + {
25480 + { 0, PICO_CPNO },
25481 + { 1, 0 }, { 1, 1 },
25482 + },
25483 + },
25484 + {
25485 + AVR32_ALIAS_PICOLDM_D_PU,
25486 + &avr32_opc_table[AVR32_OPC_LDCM_D_PU],
25487 + {
25488 + { 0, PICO_CPNO },
25489 + { 1, 0 }, { 1, 1 },
25490 + },
25491 + },
25492 + {
25493 + AVR32_ALIAS_PICOLDM_W,
25494 + &avr32_opc_table[AVR32_OPC_LDCM_W],
25495 + {
25496 + { 0, PICO_CPNO },
25497 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25498 + },
25499 + },
25500 + {
25501 + AVR32_ALIAS_PICOLDM_W_PU,
25502 + &avr32_opc_table[AVR32_OPC_LDCM_W_PU],
25503 + {
25504 + { 0, PICO_CPNO },
25505 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25506 + },
25507 + },
25508 + {
25509 + AVR32_ALIAS_PICOMV_D1,
25510 + &avr32_opc_table[AVR32_OPC_MVCR_D],
25511 + {
25512 + { 0, PICO_CPNO },
25513 + { 1, 0 }, { 1, 1 },
25514 + },
25515 + },
25516 + {
25517 + AVR32_ALIAS_PICOMV_D2,
25518 + &avr32_opc_table[AVR32_OPC_MVRC_D],
25519 + {
25520 + { 0, PICO_CPNO },
25521 + { 1, 0 }, { 1, 1 },
25522 + },
25523 + },
25524 + {
25525 + AVR32_ALIAS_PICOMV_W1,
25526 + &avr32_opc_table[AVR32_OPC_MVCR_W],
25527 + {
25528 + { 0, PICO_CPNO },
25529 + { 1, 0 }, { 1, 1 },
25530 + },
25531 + },
25532 + {
25533 + AVR32_ALIAS_PICOMV_W2,
25534 + &avr32_opc_table[AVR32_OPC_MVRC_W],
25535 + {
25536 + { 0, PICO_CPNO },
25537 + { 1, 0 }, { 1, 1 },
25538 + },
25539 + },
25540 + {
25541 + AVR32_ALIAS_PICOST_D1,
25542 + &avr32_opc_table[AVR32_OPC_STC_D1],
25543 + {
25544 + { 0, PICO_CPNO },
25545 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25546 + },
25547 + },
25548 + {
25549 + AVR32_ALIAS_PICOST_D2,
25550 + &avr32_opc_table[AVR32_OPC_STC_D2],
25551 + {
25552 + { 0, PICO_CPNO },
25553 + { 1, 0 }, { 1, 1 },
25554 + },
25555 + },
25556 + {
25557 + AVR32_ALIAS_PICOST_D3,
25558 + &avr32_opc_table[AVR32_OPC_STC_D3],
25559 + {
25560 + { 0, PICO_CPNO },
25561 + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
25562 + },
25563 + },
25564 + {
25565 + AVR32_ALIAS_PICOST_W1,
25566 + &avr32_opc_table[AVR32_OPC_STC_W1],
25567 + {
25568 + { 0, PICO_CPNO },
25569 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25570 + },
25571 + },
25572 + {
25573 + AVR32_ALIAS_PICOST_W2,
25574 + &avr32_opc_table[AVR32_OPC_STC_W2],
25575 + {
25576 + { 0, PICO_CPNO },
25577 + { 1, 0 }, { 1, 1 },
25578 + },
25579 + },
25580 + {
25581 + AVR32_ALIAS_PICOST_W3,
25582 + &avr32_opc_table[AVR32_OPC_STC_W3],
25583 + {
25584 + { 0, PICO_CPNO },
25585 + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
25586 + },
25587 + },
25588 + {
25589 + AVR32_ALIAS_PICOSTM_D,
25590 + &avr32_opc_table[AVR32_OPC_STCM_D],
25591 + {
25592 + { 0, PICO_CPNO },
25593 + { 1, 0 }, { 1, 1 },
25594 + },
25595 + },
25596 + {
25597 + AVR32_ALIAS_PICOSTM_D_PU,
25598 + &avr32_opc_table[AVR32_OPC_STCM_D_PU],
25599 + {
25600 + { 0, PICO_CPNO },
25601 + { 1, 0 }, { 1, 1 },
25602 + },
25603 + },
25604 + {
25605 + AVR32_ALIAS_PICOSTM_W,
25606 + &avr32_opc_table[AVR32_OPC_STCM_W],
25607 + {
25608 + { 0, PICO_CPNO },
25609 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25610 + },
25611 + },
25612 + {
25613 + AVR32_ALIAS_PICOSTM_W_PU,
25614 + &avr32_opc_table[AVR32_OPC_STCM_W_PU],
25615 + {
25616 + { 0, PICO_CPNO },
25617 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25618 + },
25619 + },
25620 + };
25621 +
25622 +
25623 +#define SYNTAX_NORMAL0(id, mne, opc, arch) \
25624 + { \
25625 + AVR32_SYNTAX_##id, arch, \
25626 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25627 + AVR32_PARSER_NORMAL, \
25628 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25629 + NULL, 0, { } \
25630 + }
25631 +#define SYNTAX_NORMAL1(id, mne, opc, op0, arch) \
25632 + { \
25633 + AVR32_SYNTAX_##id, arch, \
25634 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25635 + AVR32_PARSER_NORMAL, \
25636 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25637 + NULL, 1, \
25638 + { \
25639 + AVR32_OPERAND_##op0, \
25640 + } \
25641 + }
25642 +#define SYNTAX_NORMALM1(id, mne, opc, op0, arch) \
25643 + { \
25644 + AVR32_SYNTAX_##id, arch, \
25645 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25646 + AVR32_PARSER_NORMAL, \
25647 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25648 + NULL, -1, \
25649 + { \
25650 + AVR32_OPERAND_##op0, \
25651 + } \
25652 + }
25653 +#define SYNTAX_NORMAL2(id, mne, opc, op0, op1, arch) \
25654 + { \
25655 + AVR32_SYNTAX_##id, arch, \
25656 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25657 + AVR32_PARSER_NORMAL, \
25658 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25659 + NULL, 2, \
25660 + { \
25661 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
25662 + } \
25663 + }
25664 +#define SYNTAX_NORMALM2(id, mne, opc, op0, op1, arch) \
25665 + { \
25666 + AVR32_SYNTAX_##id, arch, \
25667 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25668 + AVR32_PARSER_NORMAL, \
25669 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25670 + NULL, -2, \
25671 + { \
25672 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
25673 + } \
25674 + }
25675 +#define SYNTAX_NORMAL3(id, mne, opc, op0, op1, op2, arch) \
25676 + { \
25677 + AVR32_SYNTAX_##id, arch, \
25678 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25679 + AVR32_PARSER_NORMAL, \
25680 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25681 + NULL, 3, \
25682 + { \
25683 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
25684 + AVR32_OPERAND_##op2, \
25685 + } \
25686 + }
25687 +#define SYNTAX_NORMALM3(id, mne, opc, op0, op1, op2, arch) \
25688 + { \
25689 + AVR32_SYNTAX_##id, arch, \
25690 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25691 + AVR32_PARSER_NORMAL, \
25692 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25693 + NULL, -3, \
25694 + { \
25695 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
25696 + AVR32_OPERAND_##op2, \
25697 + } \
25698 + }
25699 +#define SYNTAX_NORMAL4(id, mne, opc, op0, op1, op2, op3, arch)\
25700 + { \
25701 + AVR32_SYNTAX_##id, arch, \
25702 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25703 + AVR32_PARSER_NORMAL, \
25704 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25705 + NULL, 4, \
25706 + { \
25707 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
25708 + AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \
25709 + } \
25710 + }
25711 +#define SYNTAX_NORMAL5(id, mne, opc, op0, op1, op2, op3, op4, arch) \
25712 + { \
25713 + AVR32_SYNTAX_##id, arch, \
25714 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25715 + AVR32_PARSER_NORMAL, \
25716 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25717 + NULL, 5, \
25718 + { \
25719 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
25720 + AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \
25721 + AVR32_OPERAND_##op4, \
25722 + } \
25723 + }
25724 +
25725 +#define SYNTAX_NORMAL_C1(id, mne, opc, nxt, op0, arch) \
25726 + { \
25727 + AVR32_SYNTAX_##id, arch, \
25728 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25729 + AVR32_PARSER_NORMAL, \
25730 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25731 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], 1, \
25732 + { \
25733 + AVR32_OPERAND_##op0, \
25734 + } \
25735 + }
25736 +#define SYNTAX_NORMAL_CM1(id, mne, opc, nxt, op0, arch) \
25737 + { \
25738 + AVR32_SYNTAX_##id, arch, \
25739 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25740 + AVR32_PARSER_NORMAL, \
25741 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25742 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], -1, \
25743 + { \
25744 + AVR32_OPERAND_##op0, \
25745 + } \
25746 + }
25747 +#define SYNTAX_NORMAL_C2(id, mne, opc, nxt, op0, op1, arch) \
25748 + { \
25749 + AVR32_SYNTAX_##id, arch, \
25750 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25751 + AVR32_PARSER_NORMAL, \
25752 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25753 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], 2, \
25754 + { \
25755 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
25756 + } \
25757 + }
25758 +#define SYNTAX_NORMAL_CM2(id, mne, opc, nxt, op0, op1, arch) \
25759 + { \
25760 + AVR32_SYNTAX_##id, arch, \
25761 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25762 + AVR32_PARSER_NORMAL, \
25763 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25764 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], -2, \
25765 + { \
25766 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
25767 + } \
25768 + }
25769 +#define SYNTAX_NORMAL_C3(id, mne, opc, nxt, op0, op1, op2, arch) \
25770 + { \
25771 + AVR32_SYNTAX_##id, arch, \
25772 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25773 + AVR32_PARSER_NORMAL, \
25774 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25775 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], 3, \
25776 + { \
25777 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
25778 + AVR32_OPERAND_##op2, \
25779 + } \
25780 + }
25781 +#define SYNTAX_NORMAL_CM3(id, mne, opc, nxt, op0, op1, op2, arch) \
25782 + { \
25783 + AVR32_SYNTAX_##id, arch, \
25784 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
25785 + AVR32_PARSER_NORMAL, \
25786 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
25787 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], -3, \
25788 + { \
25789 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
25790 + AVR32_OPERAND_##op2, \
25791 + } \
25792 + }
25793 +
25794 +#define SYNTAX_FP(name, nr_ops) \
25795 + { \
25796 + AVR32_SYNTAX_##name##_S, \
25797 + AVR32_FP, NULL, AVR32_PARSER_ALIAS, \
25798 + { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_S] }, \
25799 + NULL, nr_ops, \
25800 + { \
25801 + AVR32_OPERAND_FPREG_S, \
25802 + AVR32_OPERAND_FPREG_S, \
25803 + AVR32_OPERAND_FPREG_S, \
25804 + }, \
25805 + }, \
25806 + { \
25807 + AVR32_SYNTAX_##name##_D, \
25808 + AVR32_FP, NULL, AVR32_PARSER_ALIAS, \
25809 + { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_D] }, \
25810 + NULL, nr_ops, \
25811 + { \
25812 + AVR32_OPERAND_FPREG_D, \
25813 + AVR32_OPERAND_FPREG_D, \
25814 + AVR32_OPERAND_FPREG_D, \
25815 + }, \
25816 + }
25817 +
25818 +const struct avr32_syntax avr32_syntax_table[] =
25819 + {
25820 + SYNTAX_NORMAL1(ABS, ABS, ABS, INTREG, AVR32_V1),
25821 + SYNTAX_NORMAL1(ACALL, ACALL, ACALL, UNSIGNED_CONST_W, AVR32_V1),
25822 + SYNTAX_NORMAL1(ACR, ACR, ACR, INTREG,AVR32_V1),
25823 + SYNTAX_NORMAL3(ADC, ADC, ADC, INTREG, INTREG, INTREG, AVR32_V1),
25824 + SYNTAX_NORMAL_C2(ADD1, ADD, ADD1, ADD2, INTREG, INTREG, AVR32_V1),
25825 + SYNTAX_NORMAL3(ADD2, ADD, ADD2, INTREG, INTREG, INTREG_LSL, AVR32_V1),
25826 + SYNTAX_NORMAL3(ADDABS, ADDABS, ADDABS, INTREG, INTREG, INTREG, AVR32_V1),
25827 + SYNTAX_NORMAL3(ADDHH_W, ADDHH_W, ADDHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
25828 + SYNTAX_NORMAL_C2(AND1, AND, AND1, AND2, INTREG, INTREG, AVR32_V1),
25829 + SYNTAX_NORMAL_C3(AND2, AND, AND2, AND3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
25830 + SYNTAX_NORMAL3(AND3, AND, AND3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
25831 + SYNTAX_NORMAL_C2(ANDH, ANDH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
25832 + SYNTAX_NORMAL3(ANDH_COH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
25833 + SYNTAX_NORMAL_C2(ANDL, ANDL, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
25834 + SYNTAX_NORMAL3(ANDL_COH, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
25835 + SYNTAX_NORMAL2(ANDN, ANDN, ANDN, INTREG, INTREG, AVR32_V1),
25836 + SYNTAX_NORMAL_C3(ASR1, ASR, ASR1, ASR3, INTREG, INTREG, INTREG, AVR32_V1),
25837 + SYNTAX_NORMAL_C3(ASR3, ASR, ASR3, ASR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
25838 + SYNTAX_NORMAL2(ASR2, ASR, ASR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
25839 + SYNTAX_NORMAL4(BFEXTS, BFEXTS, BFEXTS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
25840 + SYNTAX_NORMAL4(BFEXTU, BFEXTU, BFEXTU, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
25841 + SYNTAX_NORMAL4(BFINS, BFINS, BFINS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
25842 + SYNTAX_NORMAL2(BLD, BLD, BLD, INTREG, UNSIGNED_NUMBER, AVR32_V1),
25843 + SYNTAX_NORMAL_C1(BREQ1, BREQ, BREQ1, BREQ2, JMPLABEL, AVR32_V1),
25844 + SYNTAX_NORMAL_C1(BRNE1, BRNE, BRNE1, BRNE2, JMPLABEL, AVR32_V1),
25845 + SYNTAX_NORMAL_C1(BRCC1, BRCC, BRCC1, BRCC2, JMPLABEL, AVR32_V1),
25846 + SYNTAX_NORMAL_C1(BRCS1, BRCS, BRCS1, BRCS2, JMPLABEL, AVR32_V1),
25847 + SYNTAX_NORMAL_C1(BRGE1, BRGE, BRGE1, BRGE2, JMPLABEL, AVR32_V1),
25848 + SYNTAX_NORMAL_C1(BRLT1, BRLT, BRLT1, BRLT2, JMPLABEL, AVR32_V1),
25849 + SYNTAX_NORMAL_C1(BRMI1, BRMI, BRMI1, BRMI2, JMPLABEL, AVR32_V1),
25850 + SYNTAX_NORMAL_C1(BRPL1, BRPL, BRPL1, BRPL2, JMPLABEL, AVR32_V1),
25851 + SYNTAX_NORMAL_C1(BRHS1, BRHS, BRCC1, BRHS2, JMPLABEL, AVR32_V1),
25852 + SYNTAX_NORMAL_C1(BRLO1, BRLO, BRCS1, BRLO2, JMPLABEL, AVR32_V1),
25853 + SYNTAX_NORMAL1(BREQ2, BREQ, BREQ2, JMPLABEL, AVR32_V1),
25854 + SYNTAX_NORMAL1(BRNE2, BRNE, BRNE2, JMPLABEL, AVR32_V1),
25855 + SYNTAX_NORMAL1(BRCC2, BRCC, BRCC2, JMPLABEL, AVR32_V1),
25856 + SYNTAX_NORMAL1(BRCS2, BRCS, BRCS2, JMPLABEL, AVR32_V1),
25857 + SYNTAX_NORMAL1(BRGE2, BRGE, BRGE2, JMPLABEL, AVR32_V1),
25858 + SYNTAX_NORMAL1(BRLT2, BRLT, BRLT2, JMPLABEL, AVR32_V1),
25859 + SYNTAX_NORMAL1(BRMI2, BRMI, BRMI2, JMPLABEL, AVR32_V1),
25860 + SYNTAX_NORMAL1(BRPL2, BRPL, BRPL2, JMPLABEL, AVR32_V1),
25861 + SYNTAX_NORMAL1(BRLS, BRLS, BRLS, JMPLABEL, AVR32_V1),
25862 + SYNTAX_NORMAL1(BRGT, BRGT, BRGT, JMPLABEL, AVR32_V1),
25863 + SYNTAX_NORMAL1(BRLE, BRLE, BRLE, JMPLABEL, AVR32_V1),
25864 + SYNTAX_NORMAL1(BRHI, BRHI, BRHI, JMPLABEL, AVR32_V1),
25865 + SYNTAX_NORMAL1(BRVS, BRVS, BRVS, JMPLABEL, AVR32_V1),
25866 + SYNTAX_NORMAL1(BRVC, BRVC, BRVC, JMPLABEL, AVR32_V1),
25867 + SYNTAX_NORMAL1(BRQS, BRQS, BRQS, JMPLABEL, AVR32_V1),
25868 + SYNTAX_NORMAL1(BRAL, BRAL, BRAL, JMPLABEL, AVR32_V1),
25869 + SYNTAX_NORMAL1(BRHS2, BRHS, BRCC2, JMPLABEL, AVR32_V1),
25870 + SYNTAX_NORMAL1(BRLO2, BRLO, BRCS2, JMPLABEL, AVR32_V1),
25871 + SYNTAX_NORMAL0(BREAKPOINT, BREAKPOINT, BREAKPOINT, AVR32_V1),
25872 + SYNTAX_NORMAL1(BREV, BREV, BREV, INTREG, AVR32_V1),
25873 + SYNTAX_NORMAL2(BST, BST, BST, INTREG, UNSIGNED_NUMBER, AVR32_V1),
25874 + SYNTAX_NORMAL2(CACHE, CACHE, CACHE, INTREG_SDISP, UNSIGNED_NUMBER, AVR32_V1),
25875 + SYNTAX_NORMAL1(CASTS_B, CASTS_B, CASTS_B, INTREG, AVR32_V1),
25876 + SYNTAX_NORMAL1(CASTS_H, CASTS_H, CASTS_H, INTREG, AVR32_V1),
25877 + SYNTAX_NORMAL1(CASTU_B, CASTU_B, CASTU_B, INTREG, AVR32_V1),
25878 + SYNTAX_NORMAL1(CASTU_H, CASTU_H, CASTU_H, INTREG, AVR32_V1),
25879 + SYNTAX_NORMAL2(CBR, CBR, CBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
25880 + SYNTAX_NORMAL2(CLZ, CLZ, CLZ, INTREG, INTREG, AVR32_V1),
25881 + SYNTAX_NORMAL1(COM, COM, COM, INTREG, AVR32_V1),
25882 + SYNTAX_NORMAL5(COP, COP, COP, CPNO, CPREG, CPREG, CPREG, UNSIGNED_NUMBER, AVR32_V1),
25883 + SYNTAX_NORMAL2(CP_B, CP_B, CP_B, INTREG, INTREG, AVR32_V1),
25884 + SYNTAX_NORMAL2(CP_H, CP_H, CP_H, INTREG, INTREG, AVR32_V1),
25885 + SYNTAX_NORMAL_C2(CP_W1, CP_W, CP_W1, CP_W2, INTREG, INTREG, AVR32_V1),
25886 + SYNTAX_NORMAL_C2(CP_W2, CP_W, CP_W2, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
25887 + SYNTAX_NORMAL2(CP_W3, CP_W, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
25888 + SYNTAX_NORMAL_C2(CPC1, CPC, CPC1, CPC2, INTREG, INTREG, AVR32_V1),
25889 + SYNTAX_NORMAL1(CPC2, CPC, CPC2, INTREG, AVR32_V1),
25890 + SYNTAX_NORMAL1(CSRF, CSRF, CSRF, UNSIGNED_NUMBER, AVR32_V1),
25891 + SYNTAX_NORMAL1(CSRFCZ, CSRFCZ, CSRFCZ, UNSIGNED_NUMBER, AVR32_V1),
25892 + SYNTAX_NORMAL3(DIVS, DIVS, DIVS, INTREG, INTREG, INTREG, AVR32_V1),
25893 + SYNTAX_NORMAL3(DIVU, DIVU, DIVU, INTREG, INTREG, INTREG, AVR32_V1),
25894 + SYNTAX_NORMAL_C2(EOR1, EOR, EOR1, EOR2, INTREG, INTREG, AVR32_V1),
25895 + SYNTAX_NORMAL_C3(EOR2, EOR, EOR2, EOR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
25896 + SYNTAX_NORMAL3(EOR3, EOR, EOR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
25897 + SYNTAX_NORMAL2(EORL, EORL, EORL, INTREG, UNSIGNED_CONST, AVR32_V1),
25898 + SYNTAX_NORMAL2(EORH, EORH, EORH, INTREG, UNSIGNED_CONST, AVR32_V1),
25899 + SYNTAX_NORMAL0(FRS, FRS, FRS, AVR32_V1),
25900 + SYNTAX_NORMAL1(ICALL, ICALL, ICALL, INTREG, AVR32_V1),
25901 + SYNTAX_NORMAL1(INCJOSP, INCJOSP, INCJOSP, JOSPINC, AVR32_V1),
25902 + SYNTAX_NORMAL_C2(LD_D1, LD_D, LD_D1, LD_D2, DWREG, INTREG_POSTINC, AVR32_V1),
25903 + SYNTAX_NORMAL_C2(LD_D2, LD_D, LD_D2, LD_D3, DWREG, INTREG_PREDEC, AVR32_V1),
25904 + SYNTAX_NORMAL_C2(LD_D3, LD_D, LD_D3, LD_D5, DWREG, INTREG, AVR32_V1),
25905 + SYNTAX_NORMAL_C2(LD_D5, LD_D, LD_D5, LD_D4, DWREG, INTREG_INDEX, AVR32_V1),
25906 + SYNTAX_NORMAL2(LD_D4, LD_D, LD_D4, DWREG, INTREG_SDISP, AVR32_V1),
25907 + SYNTAX_NORMAL_C2(LD_SB2, LD_SB, LD_SB2, LD_SB1, INTREG, INTREG_INDEX, AVR32_V1),
25908 + SYNTAX_NORMAL2(LD_SB1, LD_SB, LD_SB1, INTREG, INTREG_SDISP, AVR32_V1),
25909 + SYNTAX_NORMAL_C2(LD_UB1, LD_UB, LD_UB1, LD_UB2, INTREG, INTREG_POSTINC, AVR32_V1),
25910 + SYNTAX_NORMAL_C2(LD_UB2, LD_UB, LD_UB2, LD_UB5, INTREG, INTREG_PREDEC, AVR32_V1),
25911 + SYNTAX_NORMAL_C2(LD_UB5, LD_UB, LD_UB5, LD_UB3, INTREG, INTREG_INDEX, AVR32_V1),
25912 + SYNTAX_NORMAL_C2(LD_UB3, LD_UB, LD_UB3, LD_UB4, INTREG, INTREG_UDISP, AVR32_V1),
25913 + SYNTAX_NORMAL2(LD_UB4, LD_UB, LD_UB4, INTREG, INTREG_SDISP, AVR32_V1),
25914 + SYNTAX_NORMAL_C2(LD_SH1, LD_SH, LD_SH1, LD_SH2, INTREG, INTREG_POSTINC, AVR32_V1),
25915 + SYNTAX_NORMAL_C2(LD_SH2, LD_SH, LD_SH2, LD_SH5, INTREG, INTREG_PREDEC, AVR32_V1),
25916 + SYNTAX_NORMAL_C2(LD_SH5, LD_SH, LD_SH5, LD_SH3, INTREG, INTREG_INDEX, AVR32_V1),
25917 + SYNTAX_NORMAL_C2(LD_SH3, LD_SH, LD_SH3, LD_SH4, INTREG, INTREG_UDISP_H, AVR32_V1),
25918 + SYNTAX_NORMAL2(LD_SH4, LD_SH, LD_SH4, INTREG, INTREG_SDISP, AVR32_V1),
25919 + SYNTAX_NORMAL_C2(LD_UH1, LD_UH, LD_UH1, LD_UH2, INTREG, INTREG_POSTINC, AVR32_V1),
25920 + SYNTAX_NORMAL_C2(LD_UH2, LD_UH, LD_UH2, LD_UH5, INTREG, INTREG_PREDEC, AVR32_V1),
25921 + SYNTAX_NORMAL_C2(LD_UH5, LD_UH, LD_UH5, LD_UH3, INTREG, INTREG_INDEX, AVR32_V1),
25922 + SYNTAX_NORMAL_C2(LD_UH3, LD_UH, LD_UH3, LD_UH4, INTREG, INTREG_UDISP_H, AVR32_V1),
25923 + SYNTAX_NORMAL2(LD_UH4, LD_UH, LD_UH4, INTREG, INTREG_SDISP, AVR32_V1),
25924 + SYNTAX_NORMAL_C2(LD_W1, LD_W, LD_W1, LD_W2, INTREG, INTREG_POSTINC, AVR32_V1),
25925 + SYNTAX_NORMAL_C2(LD_W2, LD_W, LD_W2, LD_W5, INTREG, INTREG_PREDEC, AVR32_V1),
25926 + SYNTAX_NORMAL_C2(LD_W5, LD_W, LD_W5, LD_W6, INTREG, INTREG_INDEX, AVR32_V1),
25927 + SYNTAX_NORMAL_C2(LD_W6, LD_W, LD_W6, LD_W3, INTREG, INTREG_XINDEX, AVR32_V1),
25928 + SYNTAX_NORMAL_C2(LD_W3, LD_W, LD_W3, LD_W4, INTREG, INTREG_UDISP_W, AVR32_V1),
25929 + SYNTAX_NORMAL2(LD_W4, LD_W, LD_W4, INTREG, INTREG_SDISP, AVR32_V1),
25930 + SYNTAX_NORMAL3(LDC_D1, LDC_D, LDC_D1, CPNO, CPREG_D, INTREG_UDISP_W, AVR32_V1),
25931 + SYNTAX_NORMAL_C3(LDC_D2, LDC_D, LDC_D2, LDC_D1, CPNO, CPREG_D, INTREG_PREDEC, AVR32_V1),
25932 + SYNTAX_NORMAL_C3(LDC_D3, LDC_D, LDC_D3, LDC_D2, CPNO, CPREG_D, INTREG_INDEX, AVR32_V1),
25933 + SYNTAX_NORMAL3(LDC_W1, LDC_W, LDC_W1, CPNO, CPREG, INTREG_UDISP_W, AVR32_V1),
25934 + SYNTAX_NORMAL_C3(LDC_W2, LDC_W, LDC_W2, LDC_W1, CPNO, CPREG, INTREG_PREDEC, AVR32_V1),
25935 + SYNTAX_NORMAL_C3(LDC_W3, LDC_W, LDC_W3, LDC_W2, CPNO, CPREG, INTREG_INDEX, AVR32_V1),
25936 + SYNTAX_NORMAL2(LDC0_D, LDC0_D, LDC0_D, CPREG_D, INTREG_UDISP_W, AVR32_V1),
25937 + SYNTAX_NORMAL2(LDC0_W, LDC0_W, LDC0_W, CPREG, INTREG_UDISP_W, AVR32_V1),
25938 + SYNTAX_NORMAL_CM3(LDCM_D, LDCM_D, LDCM_D, LDCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
25939 + SYNTAX_NORMALM3(LDCM_D_PU, LDCM_D, LDCM_D_PU, CPNO, INTREG_POSTINC, REGLIST_CPD8, AVR32_V1),
25940 + SYNTAX_NORMAL_CM3(LDCM_W, LDCM_W, LDCM_W, LDCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
25941 + SYNTAX_NORMALM3(LDCM_W_PU, LDCM_W, LDCM_W_PU, CPNO, INTREG_POSTINC, REGLIST_CP8, AVR32_V1),
25942 + SYNTAX_NORMAL2(LDDPC, LDDPC, LDDPC, INTREG, PC_UDISP_W, AVR32_V1),
25943 + SYNTAX_NORMAL2(LDDPC_EXT, LDDPC, LDDPC_EXT, INTREG, SIGNED_CONST, AVR32_V1),
25944 + SYNTAX_NORMAL2(LDDSP, LDDSP, LDDSP, INTREG, SP_UDISP_W, AVR32_V1),
25945 + SYNTAX_NORMAL2(LDINS_B, LDINS_B, LDINS_B, INTREG_BSEL, INTREG_SDISP, AVR32_V1),
25946 + SYNTAX_NORMAL2(LDINS_H, LDINS_H, LDINS_H, INTREG_HSEL, INTREG_SDISP_H, AVR32_V1),
25947 + SYNTAX_NORMALM1(LDM, LDM, LDM, REGLIST_LDM, AVR32_V1),
25948 + SYNTAX_NORMAL_CM2(LDMTS, LDMTS, LDMTS, LDMTS_PU, INTREG, REGLIST16, AVR32_V1),
25949 + SYNTAX_NORMALM2(LDMTS_PU, LDMTS, LDMTS_PU, INTREG_POSTINC, REGLIST16, AVR32_V1),
25950 + SYNTAX_NORMAL2(LDSWP_SH, LDSWP_SH, LDSWP_SH, INTREG, INTREG_SDISP_H, AVR32_V1),
25951 + SYNTAX_NORMAL2(LDSWP_UH, LDSWP_UH, LDSWP_UH, INTREG, INTREG_SDISP_H, AVR32_V1),
25952 + SYNTAX_NORMAL2(LDSWP_W, LDSWP_W, LDSWP_W, INTREG, INTREG_SDISP_W, AVR32_V1),
25953 + SYNTAX_NORMAL_C3(LSL1, LSL, LSL1, LSL3, INTREG, INTREG, INTREG, AVR32_V1),
25954 + SYNTAX_NORMAL_C3(LSL3, LSL, LSL3, LSL2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
25955 + SYNTAX_NORMAL2(LSL2, LSL, LSL2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
25956 + SYNTAX_NORMAL_C3(LSR1, LSR, LSR1, LSR3, INTREG, INTREG, INTREG, AVR32_V1),
25957 + SYNTAX_NORMAL_C3(LSR3, LSR, LSR3, LSR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
25958 + SYNTAX_NORMAL2(LSR2, LSR, LSR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
25959 + SYNTAX_NORMAL3(MAC, MAC, MAC, INTREG, INTREG, INTREG, AVR32_V1),
25960 + SYNTAX_NORMAL3(MACHH_D, MACHH_D, MACHH_D, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
25961 + SYNTAX_NORMAL3(MACHH_W, MACHH_W, MACHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
25962 + SYNTAX_NORMAL3(MACS_D, MACS_D, MACS_D, INTREG, INTREG, INTREG, AVR32_V1),
25963 + SYNTAX_NORMAL3(MACSATHH_W, MACSATHH_W, MACSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
25964 + SYNTAX_NORMAL3(MACUD, MACU_D, MACUD, INTREG, INTREG, INTREG, AVR32_V1),
25965 + SYNTAX_NORMAL3(MACWH_D, MACWH_D, MACWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
25966 + SYNTAX_NORMAL3(MAX, MAX, MAX, INTREG, INTREG, INTREG, AVR32_V1),
25967 + SYNTAX_NORMAL1(MCALL, MCALL, MCALL, MCALL, AVR32_V1),
25968 + SYNTAX_NORMAL2(MFDR, MFDR, MFDR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
25969 + SYNTAX_NORMAL2(MFSR, MFSR, MFSR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
25970 + SYNTAX_NORMAL3(MIN, MIN, MIN, INTREG, INTREG, INTREG, AVR32_V1),
25971 + SYNTAX_NORMAL_C2(MOV3, MOV, MOV3, MOV1, INTREG, INTREG, AVR32_V1),
25972 + SYNTAX_NORMAL_C2(MOV1, MOV, MOV1, MOV2, INTREG, SIGNED_CONST, AVR32_V1),
25973 + SYNTAX_NORMAL2(MOV2, MOV, MOV2,INTREG, SIGNED_CONST, AVR32_V1),
25974 + SYNTAX_NORMAL_C2(MOVEQ1, MOVEQ, MOVEQ1, MOVEQ2, INTREG, INTREG, AVR32_V1),
25975 + SYNTAX_NORMAL_C2(MOVNE1, MOVNE, MOVNE1, MOVNE2, INTREG, INTREG, AVR32_V1),
25976 + SYNTAX_NORMAL_C2(MOVCC1, MOVCC, MOVCC1, MOVCC2, INTREG, INTREG, AVR32_V1),
25977 + SYNTAX_NORMAL_C2(MOVCS1, MOVCS, MOVCS1, MOVCS2, INTREG, INTREG, AVR32_V1),
25978 + SYNTAX_NORMAL_C2(MOVGE1, MOVGE, MOVGE1, MOVGE2, INTREG, INTREG, AVR32_V1),
25979 + SYNTAX_NORMAL_C2(MOVLT1, MOVLT, MOVLT1, MOVLT2, INTREG, INTREG, AVR32_V1),
25980 + SYNTAX_NORMAL_C2(MOVMI1, MOVMI, MOVMI1, MOVMI2, INTREG, INTREG, AVR32_V1),
25981 + SYNTAX_NORMAL_C2(MOVPL1, MOVPL, MOVPL1, MOVPL2, INTREG, INTREG, AVR32_V1),
25982 + SYNTAX_NORMAL_C2(MOVLS1, MOVLS, MOVLS1, MOVLS2, INTREG, INTREG, AVR32_V1),
25983 + SYNTAX_NORMAL_C2(MOVGT1, MOVGT, MOVGT1, MOVGT2, INTREG, INTREG, AVR32_V1),
25984 + SYNTAX_NORMAL_C2(MOVLE1, MOVLE, MOVLE1, MOVLE2, INTREG, INTREG, AVR32_V1),
25985 + SYNTAX_NORMAL_C2(MOVHI1, MOVHI, MOVHI1, MOVHI2, INTREG, INTREG, AVR32_V1),
25986 + SYNTAX_NORMAL_C2(MOVVS1, MOVVS, MOVVS1, MOVVS2, INTREG, INTREG, AVR32_V1),
25987 + SYNTAX_NORMAL_C2(MOVVC1, MOVVC, MOVVC1, MOVVC2, INTREG, INTREG, AVR32_V1),
25988 + SYNTAX_NORMAL_C2(MOVQS1, MOVQS, MOVQS1, MOVQS2, INTREG, INTREG, AVR32_V1),
25989 + SYNTAX_NORMAL_C2(MOVAL1, MOVAL, MOVAL1, MOVAL2, INTREG, INTREG, AVR32_V1),
25990 + SYNTAX_NORMAL_C2(MOVHS1, MOVHS, MOVCC1, MOVHS2, INTREG, INTREG, AVR32_V1),
25991 + SYNTAX_NORMAL_C2(MOVLO1, MOVLO, MOVCS1, MOVLO2, INTREG, INTREG, AVR32_V1),
25992 + SYNTAX_NORMAL2(MOVEQ2, MOVEQ, MOVEQ2, INTREG, SIGNED_CONST, AVR32_V1),
25993 + SYNTAX_NORMAL2(MOVNE2, MOVNE, MOVNE2, INTREG, SIGNED_CONST, AVR32_V1),
25994 + SYNTAX_NORMAL2(MOVCC2, MOVCC, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
25995 + SYNTAX_NORMAL2(MOVCS2, MOVCS, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
25996 + SYNTAX_NORMAL2(MOVGE2, MOVGE, MOVGE2, INTREG, SIGNED_CONST, AVR32_V1),
25997 + SYNTAX_NORMAL2(MOVLT2, MOVLT, MOVLT2, INTREG, SIGNED_CONST, AVR32_V1),
25998 + SYNTAX_NORMAL2(MOVMI2, MOVMI, MOVMI2, INTREG, SIGNED_CONST, AVR32_V1),
25999 + SYNTAX_NORMAL2(MOVPL2, MOVPL, MOVPL2, INTREG, SIGNED_CONST, AVR32_V1),
26000 + SYNTAX_NORMAL2(MOVLS2, MOVLS, MOVLS2, INTREG, SIGNED_CONST, AVR32_V1),
26001 + SYNTAX_NORMAL2(MOVGT2, MOVGT, MOVGT2, INTREG, SIGNED_CONST, AVR32_V1),
26002 + SYNTAX_NORMAL2(MOVLE2, MOVLE, MOVLE2, INTREG, SIGNED_CONST, AVR32_V1),
26003 + SYNTAX_NORMAL2(MOVHI2, MOVHI, MOVHI2, INTREG, SIGNED_CONST, AVR32_V1),
26004 + SYNTAX_NORMAL2(MOVVS2, MOVVS, MOVVS2, INTREG, SIGNED_CONST, AVR32_V1),
26005 + SYNTAX_NORMAL2(MOVVC2, MOVVC, MOVVC2, INTREG, SIGNED_CONST, AVR32_V1),
26006 + SYNTAX_NORMAL2(MOVQS2, MOVQS, MOVQS2, INTREG, SIGNED_CONST, AVR32_V1),
26007 + SYNTAX_NORMAL2(MOVAL2, MOVAL, MOVAL2, INTREG, SIGNED_CONST, AVR32_V1),
26008 + SYNTAX_NORMAL2(MOVHS2, MOVHS, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
26009 + SYNTAX_NORMAL2(MOVLO2, MOVLO, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
26010 + SYNTAX_NORMAL2(MTDR, MTDR, MTDR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
26011 + SYNTAX_NORMAL2(MTSR, MTSR, MTSR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
26012 + SYNTAX_NORMAL_C2(MUL1, MUL, MUL1, MUL2, INTREG, INTREG, AVR32_V1),
26013 + SYNTAX_NORMAL_C3(MUL2, MUL, MUL2, MUL3, INTREG, INTREG, INTREG, AVR32_V1),
26014 + SYNTAX_NORMAL3(MUL3, MUL, MUL3, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
26015 + SYNTAX_NORMAL3(MULHH_W, MULHH_W, MULHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26016 + SYNTAX_NORMAL3(MULNHH_W, MULNHH_W, MULNHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26017 + SYNTAX_NORMAL3(MULNWH_D, MULNWH_D, MULNWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26018 + SYNTAX_NORMAL3(MULSD, MULS_D, MULSD, INTREG, INTREG, INTREG, AVR32_V1),
26019 + SYNTAX_NORMAL3(MULSATHH_H, MULSATHH_H, MULSATHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26020 + SYNTAX_NORMAL3(MULSATHH_W, MULSATHH_W, MULSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26021 + SYNTAX_NORMAL3(MULSATRNDHH_H, MULSATRNDHH_H, MULSATRNDHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26022 + SYNTAX_NORMAL3(MULSATRNDWH_W, MULSATRNDWH_W, MULSATRNDWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26023 + SYNTAX_NORMAL3(MULSATWH_W, MULSATWH_W, MULSATWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26024 + SYNTAX_NORMAL3(MULU_D, MULU_D, MULU_D, INTREG, INTREG, INTREG, AVR32_V1),
26025 + SYNTAX_NORMAL3(MULWH_D, MULWH_D, MULWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26026 + SYNTAX_NORMAL1(MUSFR, MUSFR, MUSFR, INTREG, AVR32_V1),
26027 + SYNTAX_NORMAL1(MUSTR, MUSTR, MUSTR, INTREG, AVR32_V1),
26028 + SYNTAX_NORMAL3(MVCR_D, MVCR_D, MVCR_D, CPNO, DWREG, CPREG_D, AVR32_V1),
26029 + SYNTAX_NORMAL3(MVCR_W, MVCR_W, MVCR_W, CPNO, INTREG, CPREG, AVR32_V1),
26030 + SYNTAX_NORMAL3(MVRC_D, MVRC_D, MVRC_D, CPNO, CPREG_D, DWREG, AVR32_V1),
26031 + SYNTAX_NORMAL3(MVRC_W, MVRC_W, MVRC_W, CPNO, CPREG, INTREG, AVR32_V1),
26032 + SYNTAX_NORMAL1(NEG, NEG, NEG, INTREG, AVR32_V1),
26033 + SYNTAX_NORMAL0(NOP, NOP, NOP, AVR32_V1),
26034 + SYNTAX_NORMAL_C2(OR1, OR, OR1, OR2, INTREG, INTREG, AVR32_V1),
26035 + SYNTAX_NORMAL_C3(OR2, OR, OR2, OR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
26036 + SYNTAX_NORMAL3(OR3, OR, OR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
26037 + SYNTAX_NORMAL2(ORH, ORH, ORH, INTREG, UNSIGNED_CONST, AVR32_V1),
26038 + SYNTAX_NORMAL2(ORL, ORL, ORL, INTREG, UNSIGNED_CONST, AVR32_V1),
26039 + SYNTAX_NORMAL2(PABS_SB, PABS_SB, PABS_SB, INTREG, INTREG, AVR32_SIMD),
26040 + SYNTAX_NORMAL2(PABS_SH, PABS_SH, PABS_SH, INTREG, INTREG, AVR32_SIMD),
26041 + SYNTAX_NORMAL3(PACKSH_SB, PACKSH_SB, PACKSH_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
26042 + SYNTAX_NORMAL3(PACKSH_UB, PACKSH_UB, PACKSH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26043 + SYNTAX_NORMAL3(PACKW_SH, PACKW_SH, PACKW_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26044 + SYNTAX_NORMAL3(PADD_B, PADD_B, PADD_B, INTREG, INTREG, INTREG, AVR32_SIMD),
26045 + SYNTAX_NORMAL3(PADD_H, PADD_H, PADD_H, INTREG, INTREG, INTREG, AVR32_SIMD),
26046 + SYNTAX_NORMAL3(PADDH_SH, PADDH_SH, PADDH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26047 + SYNTAX_NORMAL3(PADDH_UB, PADDH_UB, PADDH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26048 + SYNTAX_NORMAL3(PADDS_SB, PADDS_SB, PADDS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
26049 + SYNTAX_NORMAL3(PADDS_SH, PADDS_SH, PADDS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26050 + SYNTAX_NORMAL3(PADDS_UB, PADDS_UB, PADDS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26051 + SYNTAX_NORMAL3(PADDS_UH, PADDS_UH, PADDS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
26052 + SYNTAX_NORMAL3(PADDSUB_H, PADDSUB_H, PADDSUB_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26053 + SYNTAX_NORMAL3(PADDSUBH_SH, PADDSUBH_SH, PADDSUBH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26054 + SYNTAX_NORMAL3(PADDSUBS_SH, PADDSUBS_SH, PADDSUBS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26055 + SYNTAX_NORMAL3(PADDSUBS_UH, PADDSUBS_UH, PADDSUBS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26056 + SYNTAX_NORMAL3(PADDX_H, PADDX_H, PADDX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
26057 + SYNTAX_NORMAL3(PADDXH_SH, PADDXH_SH, PADDXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26058 + SYNTAX_NORMAL3(PADDXS_SH, PADDXS_SH, PADDXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26059 + SYNTAX_NORMAL3(PADDXS_UH, PADDXS_UH, PADDXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
26060 + SYNTAX_NORMAL3(PASR_B, PASR_B, PASR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26061 + SYNTAX_NORMAL3(PASR_H, PASR_H, PASR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26062 + SYNTAX_NORMAL3(PAVG_SH, PAVG_SH, PAVG_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26063 + SYNTAX_NORMAL3(PAVG_UB, PAVG_UB, PAVG_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26064 + SYNTAX_NORMAL3(PLSL_B, PLSL_B, PLSL_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26065 + SYNTAX_NORMAL3(PLSL_H, PLSL_H, PLSL_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26066 + SYNTAX_NORMAL3(PLSR_B, PLSR_B, PLSR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26067 + SYNTAX_NORMAL3(PLSR_H, PLSR_H, PLSR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26068 + SYNTAX_NORMAL3(PMAX_SH, PMAX_SH, PMAX_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26069 + SYNTAX_NORMAL3(PMAX_UB, PMAX_UB, PMAX_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26070 + SYNTAX_NORMAL3(PMIN_SH, PMIN_SH, PMIN_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26071 + SYNTAX_NORMAL3(PMIN_UB, PMIN_UB, PMIN_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26072 + SYNTAX_NORMAL0(POPJC, POPJC, POPJC, AVR32_V1),
26073 + SYNTAX_NORMAL_CM1(POPM, POPM, POPM, POPM_E, REGLIST9, AVR32_V1),
26074 + SYNTAX_NORMALM1(POPM_E, POPM, POPM_E, REGLIST16, AVR32_V1),
26075 + SYNTAX_NORMAL1(PREF, PREF, PREF, INTREG_SDISP, AVR32_V1),
26076 + SYNTAX_NORMAL3(PSAD, PSAD, PSAD, INTREG, INTREG, INTREG, AVR32_SIMD),
26077 + SYNTAX_NORMAL3(PSUB_B, PSUB_B, PSUB_B, INTREG, INTREG, INTREG, AVR32_SIMD),
26078 + SYNTAX_NORMAL3(PSUB_H, PSUB_H, PSUB_H, INTREG, INTREG, INTREG, AVR32_SIMD),
26079 + SYNTAX_NORMAL3(PSUBADD_H, PSUBADD_H, PSUBADD_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26080 + SYNTAX_NORMAL3(PSUBADDH_SH, PSUBADDH_SH, PSUBADDH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26081 + SYNTAX_NORMAL3(PSUBADDS_SH, PSUBADDS_SH, PSUBADDS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26082 + SYNTAX_NORMAL3(PSUBADDS_UH, PSUBADDS_UH, PSUBADDS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26083 + SYNTAX_NORMAL3(PSUBH_SH, PSUBH_SH, PSUBH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26084 + SYNTAX_NORMAL3(PSUBH_UB, PSUBH_UB, PSUBH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26085 + SYNTAX_NORMAL3(PSUBS_SB, PSUBS_SB, PSUBS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
26086 + SYNTAX_NORMAL3(PSUBS_SH, PSUBS_SH, PSUBS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26087 + SYNTAX_NORMAL3(PSUBS_UB, PSUBS_UB, PSUBS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26088 + SYNTAX_NORMAL3(PSUBS_UH, PSUBS_UH, PSUBS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
26089 + SYNTAX_NORMAL3(PSUBX_H, PSUBX_H, PSUBX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
26090 + SYNTAX_NORMAL3(PSUBXH_SH, PSUBXH_SH, PSUBXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26091 + SYNTAX_NORMAL3(PSUBXS_SH, PSUBXS_SH, PSUBXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26092 + SYNTAX_NORMAL3(PSUBXS_UH, PSUBXS_UH, PSUBXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
26093 + SYNTAX_NORMAL2(PUNPCKSB_H, PUNPCKSB_H, PUNPCKSB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
26094 + SYNTAX_NORMAL2(PUNPCKUB_H, PUNPCKUB_H, PUNPCKUB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
26095 + SYNTAX_NORMAL0(PUSHJC, PUSHJC, PUSHJC, AVR32_V1),
26096 + SYNTAX_NORMAL_CM1(PUSHM, PUSHM, PUSHM, PUSHM_E, REGLIST8, AVR32_V1),
26097 + SYNTAX_NORMALM1(PUSHM_E, PUSHM, PUSHM_E, REGLIST16, AVR32_V1),
26098 + SYNTAX_NORMAL_C1(RCALL1, RCALL, RCALL1, RCALL2, JMPLABEL, AVR32_V1),
26099 + SYNTAX_NORMAL1(RCALL2, RCALL, RCALL2, JMPLABEL, AVR32_V1),
26100 + SYNTAX_NORMAL1(RETEQ, RETEQ, RETEQ, RETVAL, AVR32_V1),
26101 + SYNTAX_NORMAL1(RETNE, RETNE, RETNE, RETVAL, AVR32_V1),
26102 + SYNTAX_NORMAL1(RETCC, RETCC, RETCC, RETVAL, AVR32_V1),
26103 + SYNTAX_NORMAL1(RETCS, RETCS, RETCS, RETVAL, AVR32_V1),
26104 + SYNTAX_NORMAL1(RETGE, RETGE, RETGE, RETVAL, AVR32_V1),
26105 + SYNTAX_NORMAL1(RETLT, RETLT, RETLT, RETVAL, AVR32_V1),
26106 + SYNTAX_NORMAL1(RETMI, RETMI, RETMI, RETVAL, AVR32_V1),
26107 + SYNTAX_NORMAL1(RETPL, RETPL, RETPL, RETVAL, AVR32_V1),
26108 + SYNTAX_NORMAL1(RETLS, RETLS, RETLS, RETVAL, AVR32_V1),
26109 + SYNTAX_NORMAL1(RETGT, RETGT, RETGT, RETVAL, AVR32_V1),
26110 + SYNTAX_NORMAL1(RETLE, RETLE, RETLE, RETVAL, AVR32_V1),
26111 + SYNTAX_NORMAL1(RETHI, RETHI, RETHI, RETVAL, AVR32_V1),
26112 + SYNTAX_NORMAL1(RETVS, RETVS, RETVS, RETVAL, AVR32_V1),
26113 + SYNTAX_NORMAL1(RETVC, RETVC, RETVC, RETVAL, AVR32_V1),
26114 + SYNTAX_NORMAL1(RETQS, RETQS, RETQS, RETVAL, AVR32_V1),
26115 + SYNTAX_NORMAL1(RETAL, RETAL, RETAL, RETVAL, AVR32_V1),
26116 + SYNTAX_NORMAL1(RETHS, RETHS, RETCC, RETVAL, AVR32_V1),
26117 + SYNTAX_NORMAL1(RETLO, RETLO, RETCS, RETVAL, AVR32_V1),
26118 + SYNTAX_NORMAL0(RETD, RETD, RETD, AVR32_V1),
26119 + SYNTAX_NORMAL0(RETE, RETE, RETE, AVR32_V1),
26120 + SYNTAX_NORMAL0(RETJ, RETJ, RETJ, AVR32_V1),
26121 + SYNTAX_NORMAL0(RETS, RETS, RETS, AVR32_V1),
26122 + SYNTAX_NORMAL1(RJMP, RJMP, RJMP, JMPLABEL, AVR32_V1),
26123 + SYNTAX_NORMAL1(ROL, ROL, ROL, INTREG, AVR32_V1),
26124 + SYNTAX_NORMAL1(ROR, ROR, ROR, INTREG, AVR32_V1),
26125 + SYNTAX_NORMAL_C2(RSUB1, RSUB, RSUB1, RSUB2, INTREG, INTREG, AVR32_V1),
26126 + SYNTAX_NORMAL3(RSUB2, RSUB, RSUB2, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
26127 + SYNTAX_NORMAL3(SATADD_H, SATADD_H, SATADD_H, INTREG, INTREG, INTREG, AVR32_DSP),
26128 + SYNTAX_NORMAL3(SATADD_W, SATADD_W, SATADD_W, INTREG, INTREG, INTREG, AVR32_DSP),
26129 + SYNTAX_NORMAL2(SATRNDS, SATRNDS, SATRNDS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
26130 + SYNTAX_NORMAL2(SATRNDU, SATRNDU, SATRNDU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
26131 + SYNTAX_NORMAL2(SATS, SATS, SATS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
26132 + SYNTAX_NORMAL3(SATSUB_H, SATSUB_H, SATSUB_H, INTREG, INTREG, INTREG, AVR32_DSP),
26133 + SYNTAX_NORMAL_C3(SATSUB_W1, SATSUB_W, SATSUB_W1, SATSUB_W2, INTREG, INTREG, INTREG, AVR32_DSP),
26134 + SYNTAX_NORMAL3(SATSUB_W2, SATSUB_W, SATSUB_W2, INTREG, INTREG, SIGNED_CONST, AVR32_DSP),
26135 + SYNTAX_NORMAL2(SATU, SATU, SATU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_V1),
26136 + SYNTAX_NORMAL3(SBC, SBC, SBC, INTREG, INTREG, INTREG, AVR32_V1),
26137 + SYNTAX_NORMAL2(SBR, SBR, SBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26138 + SYNTAX_NORMAL0(SCALL, SCALL, SCALL, AVR32_V1),
26139 + SYNTAX_NORMAL1(SCR, SCR, SCR, INTREG, AVR32_V1),
26140 + SYNTAX_NORMAL1(SLEEP, SLEEP, SLEEP, UNSIGNED_CONST, AVR32_V1),
26141 + SYNTAX_NORMAL1(SREQ, SREQ, SREQ, INTREG, AVR32_V1),
26142 + SYNTAX_NORMAL1(SRNE, SRNE, SRNE, INTREG, AVR32_V1),
26143 + SYNTAX_NORMAL1(SRCC, SRCC, SRCC, INTREG, AVR32_V1),
26144 + SYNTAX_NORMAL1(SRCS, SRCS, SRCS, INTREG, AVR32_V1),
26145 + SYNTAX_NORMAL1(SRGE, SRGE, SRGE, INTREG, AVR32_V1),
26146 + SYNTAX_NORMAL1(SRLT, SRLT, SRLT, INTREG, AVR32_V1),
26147 + SYNTAX_NORMAL1(SRMI, SRMI, SRMI, INTREG, AVR32_V1),
26148 + SYNTAX_NORMAL1(SRPL, SRPL, SRPL, INTREG, AVR32_V1),
26149 + SYNTAX_NORMAL1(SRLS, SRLS, SRLS, INTREG, AVR32_V1),
26150 + SYNTAX_NORMAL1(SRGT, SRGT, SRGT, INTREG, AVR32_V1),
26151 + SYNTAX_NORMAL1(SRLE, SRLE, SRLE, INTREG, AVR32_V1),
26152 + SYNTAX_NORMAL1(SRHI, SRHI, SRHI, INTREG, AVR32_V1),
26153 + SYNTAX_NORMAL1(SRVS, SRVS, SRVS, INTREG, AVR32_V1),
26154 + SYNTAX_NORMAL1(SRVC, SRVC, SRVC, INTREG, AVR32_V1),
26155 + SYNTAX_NORMAL1(SRQS, SRQS, SRQS, INTREG, AVR32_V1),
26156 + SYNTAX_NORMAL1(SRAL, SRAL, SRAL, INTREG, AVR32_V1),
26157 + SYNTAX_NORMAL1(SRHS, SRHS, SRCC, INTREG, AVR32_V1),
26158 + SYNTAX_NORMAL1(SRLO, SRLO, SRCS, INTREG, AVR32_V1),
26159 + SYNTAX_NORMAL1(SSRF, SSRF, SSRF, UNSIGNED_NUMBER, AVR32_V1),
26160 + SYNTAX_NORMAL_C2(ST_B1, ST_B, ST_B1, ST_B2, INTREG_POSTINC, INTREG, AVR32_V1),
26161 + SYNTAX_NORMAL_C2(ST_B2, ST_B, ST_B2, ST_B5, INTREG_PREDEC, INTREG, AVR32_V1),
26162 + SYNTAX_NORMAL_C2(ST_B5, ST_B, ST_B5, ST_B3, INTREG_INDEX, INTREG, AVR32_V1),
26163 + SYNTAX_NORMAL_C2(ST_B3, ST_B, ST_B3, ST_B4, INTREG_UDISP, INTREG, AVR32_V1),
26164 + SYNTAX_NORMAL2(ST_B4, ST_B, ST_B4, INTREG_SDISP, INTREG, AVR32_V1),
26165 + SYNTAX_NORMAL_C2(ST_D1, ST_D, ST_D1, ST_D2, INTREG_POSTINC, DWREG, AVR32_V1),
26166 + SYNTAX_NORMAL_C2(ST_D2, ST_D, ST_D2, ST_D3, INTREG_PREDEC, DWREG, AVR32_V1),
26167 + SYNTAX_NORMAL_C2(ST_D3, ST_D, ST_D3, ST_D5, INTREG, DWREG, AVR32_V1),
26168 + SYNTAX_NORMAL_C2(ST_D5, ST_D, ST_D5, ST_D4, INTREG_INDEX, DWREG, AVR32_V1),
26169 + SYNTAX_NORMAL2(ST_D4, ST_D, ST_D4, INTREG_SDISP, DWREG, AVR32_V1),
26170 + SYNTAX_NORMAL_C2(ST_H1, ST_H, ST_H1, ST_H2, INTREG_POSTINC, INTREG, AVR32_V1),
26171 + SYNTAX_NORMAL_C2(ST_H2, ST_H, ST_H2, ST_H5, INTREG_PREDEC, INTREG, AVR32_V1),
26172 + SYNTAX_NORMAL_C2(ST_H5, ST_H, ST_H5, ST_H3, INTREG_INDEX, INTREG, AVR32_V1),
26173 + SYNTAX_NORMAL_C2(ST_H3, ST_H, ST_H3, ST_H4, INTREG_UDISP_H, INTREG, AVR32_V1),
26174 + SYNTAX_NORMAL2(ST_H4, ST_H, ST_H4, INTREG_SDISP, INTREG, AVR32_V1),
26175 + SYNTAX_NORMAL_C2(ST_W1, ST_W, ST_W1, ST_W2, INTREG_POSTINC, INTREG, AVR32_V1),
26176 + SYNTAX_NORMAL_C2(ST_W2, ST_W, ST_W2, ST_W5, INTREG_PREDEC, INTREG, AVR32_V1),
26177 + SYNTAX_NORMAL_C2(ST_W5, ST_W, ST_W5, ST_W3, INTREG_INDEX, INTREG, AVR32_V1),
26178 + SYNTAX_NORMAL_C2(ST_W3, ST_W, ST_W3, ST_W4, INTREG_UDISP_W, INTREG, AVR32_V1),
26179 + SYNTAX_NORMAL2(ST_W4, ST_W, ST_W4, INTREG_SDISP, INTREG, AVR32_V1),
26180 + SYNTAX_NORMAL3(STC_D1, STC_D, STC_D1, CPNO, INTREG_UDISP_W, CPREG_D, AVR32_V1),
26181 + SYNTAX_NORMAL_C3(STC_D2, STC_D, STC_D2, STC_D1, CPNO, INTREG_POSTINC, CPREG_D, AVR32_V1),
26182 + SYNTAX_NORMAL_C3(STC_D3, STC_D, STC_D3, STC_D2, CPNO, INTREG_INDEX, CPREG_D, AVR32_V1),
26183 + SYNTAX_NORMAL3(STC_W1, STC_W, STC_W1, CPNO, INTREG_UDISP_W, CPREG, AVR32_V1),
26184 + SYNTAX_NORMAL_C3(STC_W2, STC_W, STC_W2, STC_W1, CPNO, INTREG_POSTINC, CPREG, AVR32_V1),
26185 + SYNTAX_NORMAL_C3(STC_W3, STC_W, STC_W3, STC_W2, CPNO, INTREG_INDEX, CPREG, AVR32_V1),
26186 + SYNTAX_NORMAL2(STC0_D, STC0_D, STC0_D, INTREG_UDISP_W, CPREG_D, AVR32_V1),
26187 + SYNTAX_NORMAL2(STC0_W, STC0_W, STC0_W, INTREG_UDISP_W, CPREG, AVR32_V1),
26188 + SYNTAX_NORMAL_CM3(STCM_D, STCM_D, STCM_D, STCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
26189 + SYNTAX_NORMALM3(STCM_D_PU, STCM_D, STCM_D_PU, CPNO, INTREG_PREDEC, REGLIST_CPD8, AVR32_V1),
26190 + SYNTAX_NORMAL_CM3(STCM_W, STCM_W, STCM_W, STCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
26191 + SYNTAX_NORMALM3(STCM_W_PU, STCM_W, STCM_W_PU, CPNO, INTREG_PREDEC, REGLIST_CP8, AVR32_V1),
26192 + SYNTAX_NORMAL2(STCOND, STCOND, STCOND, INTREG_SDISP, INTREG, AVR32_V1),
26193 + SYNTAX_NORMAL2(STDSP, STDSP, STDSP, SP_UDISP_W, INTREG, AVR32_V1),
26194 + SYNTAX_NORMAL_C3(STHH_W2, STHH_W, STHH_W2, STHH_W1, INTREG_INDEX, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
26195 + SYNTAX_NORMAL3(STHH_W1, STHH_W, STHH_W1, INTREG_UDISP_W, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
26196 + SYNTAX_NORMAL_CM2(STM, STM, STM, STM_PU, INTREG, REGLIST16, AVR32_V1),
26197 + SYNTAX_NORMALM2(STM_PU, STM, STM_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
26198 + SYNTAX_NORMAL_CM2(STMTS, STMTS, STMTS, STMTS_PU, INTREG, REGLIST16, AVR32_V1),
26199 + SYNTAX_NORMALM2(STMTS_PU, STMTS, STMTS_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
26200 + SYNTAX_NORMAL2(STSWP_H, STSWP_H, STSWP_H, INTREG_SDISP_H, INTREG, AVR32_V1),
26201 + SYNTAX_NORMAL2(STSWP_W, STSWP_W, STSWP_W, INTREG_SDISP_W, INTREG, AVR32_V1),
26202 + SYNTAX_NORMAL_C2(SUB1, SUB, SUB1, SUB2, INTREG, INTREG, AVR32_V1),
26203 + SYNTAX_NORMAL_C3(SUB2, SUB, SUB2, SUB5, INTREG, INTREG, INTREG_LSL, AVR32_V1),
26204 + SYNTAX_NORMAL_C3(SUB5, SUB, SUB5, SUB3_SP, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
26205 + SYNTAX_NORMAL_C2(SUB3_SP, SUB, SUB3_SP, SUB3, SP, SIGNED_CONST_W, AVR32_V1),
26206 + SYNTAX_NORMAL_C2(SUB3, SUB, SUB3, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
26207 + SYNTAX_NORMAL2(SUB4, SUB, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
26208 + SYNTAX_NORMAL_C2(SUBEQ, SUBEQ, SUBEQ, SUB2EQ, INTREG, SIGNED_CONST, AVR32_V1),
26209 + SYNTAX_NORMAL_C2(SUBNE, SUBNE, SUBNE, SUB2NE, INTREG, SIGNED_CONST, AVR32_V1),
26210 + SYNTAX_NORMAL_C2(SUBCC, SUBCC, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
26211 + SYNTAX_NORMAL_C2(SUBCS, SUBCS, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
26212 + SYNTAX_NORMAL_C2(SUBGE, SUBGE, SUBGE, SUB2GE, INTREG, SIGNED_CONST, AVR32_V1),
26213 + SYNTAX_NORMAL_C2(SUBLT, SUBLT, SUBLT, SUB2LT, INTREG, SIGNED_CONST, AVR32_V1),
26214 + SYNTAX_NORMAL_C2(SUBMI, SUBMI, SUBMI, SUB2MI, INTREG, SIGNED_CONST, AVR32_V1),
26215 + SYNTAX_NORMAL_C2(SUBPL, SUBPL, SUBPL, SUB2PL, INTREG, SIGNED_CONST, AVR32_V1),
26216 + SYNTAX_NORMAL_C2(SUBLS, SUBLS, SUBLS, SUB2LS, INTREG, SIGNED_CONST, AVR32_V1),
26217 + SYNTAX_NORMAL_C2(SUBGT, SUBGT, SUBGT, SUB2GT, INTREG, SIGNED_CONST, AVR32_V1),
26218 + SYNTAX_NORMAL_C2(SUBLE, SUBLE, SUBLE, SUB2LE, INTREG, SIGNED_CONST, AVR32_V1),
26219 + SYNTAX_NORMAL_C2(SUBHI, SUBHI, SUBHI, SUB2HI, INTREG, SIGNED_CONST, AVR32_V1),
26220 + SYNTAX_NORMAL_C2(SUBVS, SUBVS, SUBVS, SUB2VS, INTREG, SIGNED_CONST, AVR32_V1),
26221 + SYNTAX_NORMAL_C2(SUBVC, SUBVC, SUBVC, SUB2VC, INTREG, SIGNED_CONST, AVR32_V1),
26222 + SYNTAX_NORMAL_C2(SUBQS, SUBQS, SUBQS, SUB2QS, INTREG, SIGNED_CONST, AVR32_V1),
26223 + SYNTAX_NORMAL_C2(SUBAL, SUBAL, SUBAL, SUB2AL, INTREG, SIGNED_CONST, AVR32_V1),
26224 + SYNTAX_NORMAL_C2(SUBHS, SUBHS, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
26225 + SYNTAX_NORMAL_C2(SUBLO, SUBLO, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
26226 + SYNTAX_NORMAL2(SUBFEQ, SUBFEQ, SUBFEQ, INTREG, SIGNED_CONST, AVR32_V1),
26227 + SYNTAX_NORMAL2(SUBFNE, SUBFNE, SUBFNE, INTREG, SIGNED_CONST, AVR32_V1),
26228 + SYNTAX_NORMAL2(SUBFCC, SUBFCC, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
26229 + SYNTAX_NORMAL2(SUBFCS, SUBFCS, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
26230 + SYNTAX_NORMAL2(SUBFGE, SUBFGE, SUBFGE, INTREG, SIGNED_CONST, AVR32_V1),
26231 + SYNTAX_NORMAL2(SUBFLT, SUBFLT, SUBFLT, INTREG, SIGNED_CONST, AVR32_V1),
26232 + SYNTAX_NORMAL2(SUBFMI, SUBFMI, SUBFMI, INTREG, SIGNED_CONST, AVR32_V1),
26233 + SYNTAX_NORMAL2(SUBFPL, SUBFPL, SUBFPL, INTREG, SIGNED_CONST, AVR32_V1),
26234 + SYNTAX_NORMAL2(SUBFLS, SUBFLS, SUBFLS, INTREG, SIGNED_CONST, AVR32_V1),
26235 + SYNTAX_NORMAL2(SUBFGT, SUBFGT, SUBFGT, INTREG, SIGNED_CONST, AVR32_V1),
26236 + SYNTAX_NORMAL2(SUBFLE, SUBFLE, SUBFLE, INTREG, SIGNED_CONST, AVR32_V1),
26237 + SYNTAX_NORMAL2(SUBFHI, SUBFHI, SUBFHI, INTREG, SIGNED_CONST, AVR32_V1),
26238 + SYNTAX_NORMAL2(SUBFVS, SUBFVS, SUBFVS, INTREG, SIGNED_CONST, AVR32_V1),
26239 + SYNTAX_NORMAL2(SUBFVC, SUBFVC, SUBFVC, INTREG, SIGNED_CONST, AVR32_V1),
26240 + SYNTAX_NORMAL2(SUBFQS, SUBFQS, SUBFQS, INTREG, SIGNED_CONST, AVR32_V1),
26241 + SYNTAX_NORMAL2(SUBFAL, SUBFAL, SUBFAL, INTREG, SIGNED_CONST, AVR32_V1),
26242 + SYNTAX_NORMAL2(SUBFHS, SUBFHS, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
26243 + SYNTAX_NORMAL2(SUBFLO, SUBFLO, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
26244 + SYNTAX_NORMAL3(SUBHH_W, SUBHH_W, SUBHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26245 + SYNTAX_NORMAL1(SWAP_B, SWAP_B, SWAP_B, INTREG, AVR32_V1),
26246 + SYNTAX_NORMAL1(SWAP_BH, SWAP_BH, SWAP_BH, INTREG, AVR32_V1),
26247 + SYNTAX_NORMAL1(SWAP_H, SWAP_H, SWAP_H, INTREG, AVR32_V1),
26248 + SYNTAX_NORMAL1(SYNC, SYNC, SYNC, UNSIGNED_CONST, AVR32_V1),
26249 + SYNTAX_NORMAL0(TLBR, TLBR, TLBR, AVR32_V1),
26250 + SYNTAX_NORMAL0(TLBS, TLBS, TLBS, AVR32_V1),
26251 + SYNTAX_NORMAL0(TLBW, TLBW, TLBW, AVR32_V1),
26252 + SYNTAX_NORMAL1(TNBZ, TNBZ, TNBZ, INTREG, AVR32_V1),
26253 + SYNTAX_NORMAL2(TST, TST, TST, INTREG, INTREG, AVR32_V1),
26254 + SYNTAX_NORMAL3(XCHG, XCHG, XCHG, INTREG, INTREG, INTREG, AVR32_V1),
26255 + SYNTAX_NORMAL2(MEMC, MEMC, MEMC, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
26256 + SYNTAX_NORMAL2(MEMS, MEMS, MEMS, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
26257 + SYNTAX_NORMAL2(MEMT, MEMT, MEMT, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
26258 + SYNTAX_FP(FADD, 3),
26259 + SYNTAX_FP(FSUB, 3),
26260 + SYNTAX_FP(FMAC, 3),
26261 + SYNTAX_FP(FNMAC, 3),
26262 + SYNTAX_FP(FMSC, 3),
26263 + SYNTAX_FP(FNMSC, 3),
26264 + SYNTAX_FP(FMUL, 3),
26265 + SYNTAX_FP(FNMUL, 3),
26266 + SYNTAX_FP(FNEG, 2),
26267 + SYNTAX_FP(FABS, 2),
26268 + SYNTAX_FP(FCMP, 2),
26269 + {
26270 + AVR32_SYNTAX_FMOV1_S,
26271 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26272 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_S] },
26273 + &avr32_syntax_table[AVR32_SYNTAX_FMOV2_S],
26274 + 2,
26275 + {
26276 + AVR32_OPERAND_FPREG_S,
26277 + AVR32_OPERAND_FPREG_S,
26278 + },
26279 + },
26280 + {
26281 + AVR32_SYNTAX_FMOV1_D,
26282 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26283 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_D] },
26284 + &avr32_syntax_table[AVR32_SYNTAX_FMOV2_D],
26285 + 2,
26286 + {
26287 + AVR32_OPERAND_FPREG_D,
26288 + AVR32_OPERAND_FPREG_D,
26289 + },
26290 + },
26291 + {
26292 + AVR32_SYNTAX_FMOV2_S,
26293 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26294 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_S] },
26295 + &avr32_syntax_table[AVR32_SYNTAX_FMOV3_S],
26296 + 2,
26297 + {
26298 + AVR32_OPERAND_INTREG,
26299 + AVR32_OPERAND_FPREG_S,
26300 + },
26301 + },
26302 + {
26303 + AVR32_SYNTAX_FMOV2_D,
26304 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26305 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_D] },
26306 + &avr32_syntax_table[AVR32_SYNTAX_FMOV3_D],
26307 + 2,
26308 + {
26309 + AVR32_OPERAND_DWREG,
26310 + AVR32_OPERAND_FPREG_D,
26311 + },
26312 + },
26313 + {
26314 + AVR32_SYNTAX_FMOV3_S,
26315 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26316 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_S] }, NULL,
26317 + 2,
26318 + {
26319 + AVR32_OPERAND_FPREG_S,
26320 + AVR32_OPERAND_INTREG,
26321 + },
26322 + },
26323 + {
26324 + AVR32_SYNTAX_FMOV3_D,
26325 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26326 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_D] }, NULL,
26327 + 2,
26328 + {
26329 + AVR32_OPERAND_FPREG_D,
26330 + AVR32_OPERAND_DWREG,
26331 + },
26332 + },
26333 + {
26334 + AVR32_SYNTAX_FCASTS_D,
26335 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26336 + { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTS_D] }, NULL,
26337 + 2,
26338 + {
26339 + AVR32_OPERAND_FPREG_S,
26340 + AVR32_OPERAND_FPREG_D,
26341 + },
26342 + },
26343 + {
26344 + AVR32_SYNTAX_FCASTD_S,
26345 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26346 + { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTD_S] }, NULL,
26347 + 2,
26348 + {
26349 + AVR32_OPERAND_FPREG_D,
26350 + AVR32_OPERAND_FPREG_S,
26351 + },
26352 + },
26353 + {
26354 + AVR32_SYNTAX_LDA_W,
26355 + AVR32_V1, NULL, AVR32_PARSER_LDA,
26356 + { NULL }, NULL,
26357 + 2,
26358 + {
26359 + AVR32_OPERAND_INTREG,
26360 + AVR32_OPERAND_SIGNED_CONST,
26361 + },
26362 + },
26363 + {
26364 + AVR32_SYNTAX_CALL,
26365 + AVR32_V1, NULL, AVR32_PARSER_CALL,
26366 + { NULL }, NULL,
26367 + 1,
26368 + {
26369 + AVR32_OPERAND_JMPLABEL,
26370 + },
26371 + },
26372 + {
26373 + AVR32_SYNTAX_PICOSVMAC0,
26374 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
26375 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC0] },
26376 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC1], 4,
26377 + {
26378 + AVR32_OPERAND_PICO_OUT0,
26379 + AVR32_OPERAND_PICO_IN,
26380 + AVR32_OPERAND_PICO_IN,
26381 + AVR32_OPERAND_PICO_IN,
26382 + },
26383 + },
26384 + {
26385 + AVR32_SYNTAX_PICOSVMAC1,
26386 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
26387 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC1] },
26388 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC2], 4,
26389 + {
26390 + AVR32_OPERAND_PICO_OUT1,
26391 + AVR32_OPERAND_PICO_IN,
26392 + AVR32_OPERAND_PICO_IN,
26393 + AVR32_OPERAND_PICO_IN,
26394 + },
26395 + },
26396 + {
26397 + AVR32_SYNTAX_PICOSVMAC2,
26398 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
26399 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC2] },
26400 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC3], 4,
26401 + {
26402 + AVR32_OPERAND_PICO_OUT2,
26403 + AVR32_OPERAND_PICO_IN,
26404 + AVR32_OPERAND_PICO_IN,
26405 + AVR32_OPERAND_PICO_IN,
26406 + },
26407 + },
26408 + {
26409 + AVR32_SYNTAX_PICOSVMAC3,
26410 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
26411 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC3] },
26412 + NULL, 4,
26413 + {
26414 + AVR32_OPERAND_PICO_OUT3,
26415 + AVR32_OPERAND_PICO_IN,
26416 + AVR32_OPERAND_PICO_IN,
26417 + AVR32_OPERAND_PICO_IN,
26418 + },
26419 + },
26420 + {
26421 + AVR32_SYNTAX_PICOSVMUL0,
26422 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
26423 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL0] },
26424 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL1], 4,
26425 + {
26426 + AVR32_OPERAND_PICO_OUT0,
26427 + AVR32_OPERAND_PICO_IN,
26428 + AVR32_OPERAND_PICO_IN,
26429 + AVR32_OPERAND_PICO_IN,
26430 + },
26431 + },
26432 + {
26433 + AVR32_SYNTAX_PICOSVMUL1,
26434 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
26435 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL1] },
26436 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL2], 4,
26437 + {
26438 + AVR32_OPERAND_PICO_OUT1,
26439 + AVR32_OPERAND_PICO_IN,
26440 + AVR32_OPERAND_PICO_IN,
26441 + AVR32_OPERAND_PICO_IN,
26442 + },
26443 + },
26444 + {
26445 + AVR32_SYNTAX_PICOSVMUL2,
26446 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
26447 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL2] },
26448 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL3], 4,
26449 + {
26450 + AVR32_OPERAND_PICO_OUT2,
26451 + AVR32_OPERAND_PICO_IN,
26452 + AVR32_OPERAND_PICO_IN,
26453 + AVR32_OPERAND_PICO_IN,
26454 + },
26455 + },
26456 + {
26457 + AVR32_SYNTAX_PICOSVMUL3,
26458 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
26459 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL3] },
26460 + NULL, 4,
26461 + {
26462 + AVR32_OPERAND_PICO_OUT3,
26463 + AVR32_OPERAND_PICO_IN,
26464 + AVR32_OPERAND_PICO_IN,
26465 + AVR32_OPERAND_PICO_IN,
26466 + },
26467 + },
26468 + {
26469 + AVR32_SYNTAX_PICOVMAC0,
26470 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
26471 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC0] },
26472 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC1], 4,
26473 + {
26474 + AVR32_OPERAND_PICO_OUT0,
26475 + AVR32_OPERAND_PICO_IN,
26476 + AVR32_OPERAND_PICO_IN,
26477 + AVR32_OPERAND_PICO_IN,
26478 + },
26479 + },
26480 + {
26481 + AVR32_SYNTAX_PICOVMAC1,
26482 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
26483 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC1] },
26484 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC2], 4,
26485 + {
26486 + AVR32_OPERAND_PICO_OUT1,
26487 + AVR32_OPERAND_PICO_IN,
26488 + AVR32_OPERAND_PICO_IN,
26489 + AVR32_OPERAND_PICO_IN,
26490 + },
26491 + },
26492 + {
26493 + AVR32_SYNTAX_PICOVMAC2,
26494 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
26495 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC2] },
26496 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC3], 4,
26497 + {
26498 + AVR32_OPERAND_PICO_OUT2,
26499 + AVR32_OPERAND_PICO_IN,
26500 + AVR32_OPERAND_PICO_IN,
26501 + AVR32_OPERAND_PICO_IN,
26502 + },
26503 + },
26504 + {
26505 + AVR32_SYNTAX_PICOVMAC3,
26506 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
26507 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC3] },
26508 + NULL, 4,
26509 + {
26510 + AVR32_OPERAND_PICO_OUT3,
26511 + AVR32_OPERAND_PICO_IN,
26512 + AVR32_OPERAND_PICO_IN,
26513 + AVR32_OPERAND_PICO_IN,
26514 + },
26515 + },
26516 + {
26517 + AVR32_SYNTAX_PICOVMUL0,
26518 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
26519 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL0] },
26520 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL1], 4,
26521 + {
26522 + AVR32_OPERAND_PICO_OUT0,
26523 + AVR32_OPERAND_PICO_IN,
26524 + AVR32_OPERAND_PICO_IN,
26525 + AVR32_OPERAND_PICO_IN,
26526 + },
26527 + },
26528 + {
26529 + AVR32_SYNTAX_PICOVMUL1,
26530 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
26531 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL1] },
26532 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL2], 4,
26533 + {
26534 + AVR32_OPERAND_PICO_OUT1,
26535 + AVR32_OPERAND_PICO_IN,
26536 + AVR32_OPERAND_PICO_IN,
26537 + AVR32_OPERAND_PICO_IN,
26538 + },
26539 + },
26540 + {
26541 + AVR32_SYNTAX_PICOVMUL2,
26542 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
26543 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL2] },
26544 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL3], 4,
26545 + {
26546 + AVR32_OPERAND_PICO_OUT2,
26547 + AVR32_OPERAND_PICO_IN,
26548 + AVR32_OPERAND_PICO_IN,
26549 + AVR32_OPERAND_PICO_IN,
26550 + },
26551 + },
26552 + {
26553 + AVR32_SYNTAX_PICOVMUL3,
26554 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
26555 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL3] },
26556 + NULL, 4,
26557 + {
26558 + AVR32_OPERAND_PICO_OUT3,
26559 + AVR32_OPERAND_PICO_IN,
26560 + AVR32_OPERAND_PICO_IN,
26561 + AVR32_OPERAND_PICO_IN,
26562 + },
26563 + },
26564 + {
26565 + AVR32_SYNTAX_PICOLD_D2,
26566 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
26567 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D2] },
26568 + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D3], 2,
26569 + {
26570 + AVR32_OPERAND_PICO_REG_D,
26571 + AVR32_OPERAND_INTREG_PREDEC,
26572 + },
26573 + },
26574 + {
26575 + AVR32_SYNTAX_PICOLD_D3,
26576 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
26577 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D3] },
26578 + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D1], 2,
26579 + {
26580 + AVR32_OPERAND_PICO_REG_D,
26581 + AVR32_OPERAND_INTREG_INDEX,
26582 + },
26583 + },
26584 + {
26585 + AVR32_SYNTAX_PICOLD_D1,
26586 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
26587 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D1] },
26588 + NULL, 2,
26589 + {
26590 + AVR32_OPERAND_PICO_REG_D,
26591 + AVR32_OPERAND_INTREG_UDISP_W,
26592 + },
26593 + },
26594 + {
26595 + AVR32_SYNTAX_PICOLD_W2,
26596 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
26597 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W2] },
26598 + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W3], 2,
26599 + {
26600 + AVR32_OPERAND_PICO_REG_W,
26601 + AVR32_OPERAND_INTREG_PREDEC,
26602 + },
26603 + },
26604 + {
26605 + AVR32_SYNTAX_PICOLD_W3,
26606 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
26607 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W3] },
26608 + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W1], 2,
26609 + {
26610 + AVR32_OPERAND_PICO_REG_W,
26611 + AVR32_OPERAND_INTREG_INDEX,
26612 + },
26613 + },
26614 + {
26615 + AVR32_SYNTAX_PICOLD_W1,
26616 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
26617 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W1] },
26618 + NULL, 2,
26619 + {
26620 + AVR32_OPERAND_PICO_REG_W,
26621 + AVR32_OPERAND_INTREG_UDISP_W,
26622 + },
26623 + },
26624 + {
26625 + AVR32_SYNTAX_PICOLDM_D,
26626 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
26627 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D] },
26628 + &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_D_PU], -2,
26629 + {
26630 + AVR32_OPERAND_INTREG,
26631 + AVR32_OPERAND_PICO_REGLIST_D,
26632 + },
26633 + },
26634 + {
26635 + AVR32_SYNTAX_PICOLDM_D_PU,
26636 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
26637 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D_PU] },
26638 + NULL, -2,
26639 + {
26640 + AVR32_OPERAND_INTREG_POSTINC,
26641 + AVR32_OPERAND_PICO_REGLIST_D,
26642 + },
26643 + },
26644 + {
26645 + AVR32_SYNTAX_PICOLDM_W,
26646 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
26647 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W] },
26648 + &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_W_PU], -2,
26649 + {
26650 + AVR32_OPERAND_INTREG,
26651 + AVR32_OPERAND_PICO_REGLIST_W,
26652 + },
26653 + },
26654 + {
26655 + AVR32_SYNTAX_PICOLDM_W_PU,
26656 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
26657 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W_PU] },
26658 + NULL, -2,
26659 + {
26660 + AVR32_OPERAND_INTREG_POSTINC,
26661 + AVR32_OPERAND_PICO_REGLIST_W,
26662 + },
26663 + },
26664 + {
26665 + AVR32_SYNTAX_PICOMV_D1,
26666 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
26667 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D1] },
26668 + &avr32_syntax_table[AVR32_SYNTAX_PICOMV_D2], 2,
26669 + {
26670 + AVR32_OPERAND_DWREG,
26671 + AVR32_OPERAND_PICO_REG_D,
26672 + },
26673 + },
26674 + {
26675 + AVR32_SYNTAX_PICOMV_D2,
26676 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
26677 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D2] },
26678 + NULL, 2,
26679 + {
26680 + AVR32_OPERAND_PICO_REG_D,
26681 + AVR32_OPERAND_DWREG,
26682 + },
26683 + },
26684 + {
26685 + AVR32_SYNTAX_PICOMV_W1,
26686 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
26687 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W1] },
26688 + &avr32_syntax_table[AVR32_SYNTAX_PICOMV_W2], 2,
26689 + {
26690 + AVR32_OPERAND_INTREG,
26691 + AVR32_OPERAND_PICO_REG_W,
26692 + },
26693 + },
26694 + {
26695 + AVR32_SYNTAX_PICOMV_W2,
26696 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
26697 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W2] },
26698 + NULL, 2,
26699 + {
26700 + AVR32_OPERAND_PICO_REG_W,
26701 + AVR32_OPERAND_INTREG,
26702 + },
26703 + },
26704 + {
26705 + AVR32_SYNTAX_PICOST_D2,
26706 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
26707 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D2] },
26708 + &avr32_syntax_table[AVR32_SYNTAX_PICOST_D3], 2,
26709 + {
26710 + AVR32_OPERAND_INTREG_POSTINC,
26711 + AVR32_OPERAND_PICO_REG_D,
26712 + },
26713 + },
26714 + {
26715 + AVR32_SYNTAX_PICOST_D3,
26716 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
26717 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D3] },
26718 + &avr32_syntax_table[AVR32_SYNTAX_PICOST_D1], 2,
26719 + {
26720 + AVR32_OPERAND_INTREG_INDEX,
26721 + AVR32_OPERAND_PICO_REG_D,
26722 + },
26723 + },
26724 + {
26725 + AVR32_SYNTAX_PICOST_D1,
26726 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
26727 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D1] },
26728 + NULL, 2,
26729 + {
26730 + AVR32_OPERAND_INTREG_UDISP_W,
26731 + AVR32_OPERAND_PICO_REG_D,
26732 + },
26733 + },
26734 + {
26735 + AVR32_SYNTAX_PICOST_W2,
26736 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
26737 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W2] },
26738 + &avr32_syntax_table[AVR32_SYNTAX_PICOST_W3], 2,
26739 + {
26740 + AVR32_OPERAND_INTREG_POSTINC,
26741 + AVR32_OPERAND_PICO_REG_W,
26742 + },
26743 + },
26744 + {
26745 + AVR32_SYNTAX_PICOST_W3,
26746 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
26747 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W3] },
26748 + &avr32_syntax_table[AVR32_SYNTAX_PICOST_W1], 2,
26749 + {
26750 + AVR32_OPERAND_INTREG_INDEX,
26751 + AVR32_OPERAND_PICO_REG_W,
26752 + },
26753 + },
26754 + {
26755 + AVR32_SYNTAX_PICOST_W1,
26756 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
26757 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W1] },
26758 + NULL, 2,
26759 + {
26760 + AVR32_OPERAND_INTREG_UDISP_W,
26761 + AVR32_OPERAND_PICO_REG_W,
26762 + },
26763 + },
26764 + {
26765 + AVR32_SYNTAX_PICOSTM_D,
26766 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
26767 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D] },
26768 + &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_D_PU], -2,
26769 + {
26770 + AVR32_OPERAND_INTREG,
26771 + AVR32_OPERAND_PICO_REGLIST_D,
26772 + },
26773 + },
26774 + {
26775 + AVR32_SYNTAX_PICOSTM_D_PU,
26776 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
26777 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D_PU] },
26778 + NULL, -2,
26779 + {
26780 + AVR32_OPERAND_INTREG_PREDEC,
26781 + AVR32_OPERAND_PICO_REGLIST_D,
26782 + },
26783 + },
26784 + {
26785 + AVR32_SYNTAX_PICOSTM_W,
26786 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
26787 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W] },
26788 + &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_W_PU], -2,
26789 + {
26790 + AVR32_OPERAND_INTREG,
26791 + AVR32_OPERAND_PICO_REGLIST_W,
26792 + },
26793 + },
26794 + {
26795 + AVR32_SYNTAX_PICOSTM_W_PU,
26796 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
26797 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W_PU] },
26798 + NULL, -2,
26799 + {
26800 + AVR32_OPERAND_INTREG_PREDEC,
26801 + AVR32_OPERAND_PICO_REGLIST_W,
26802 + },
26803 + },
26804 + SYNTAX_NORMAL2(RSUBEQ, RSUBEQ, RSUBEQ, INTREG, SIGNED_CONST, AVR32_V1),
26805 + SYNTAX_NORMAL2(RSUBNE, RSUBNE, RSUBNE, INTREG, SIGNED_CONST, AVR32_V2),
26806 + SYNTAX_NORMAL2(RSUBCC, RSUBCC, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
26807 + SYNTAX_NORMAL2(RSUBCS, RSUBCS, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
26808 + SYNTAX_NORMAL2(RSUBGE, RSUBGE, RSUBGE, INTREG, SIGNED_CONST, AVR32_V2),
26809 + SYNTAX_NORMAL2(RSUBLT, RSUBLT, RSUBLT, INTREG, SIGNED_CONST, AVR32_V2),
26810 + SYNTAX_NORMAL2(RSUBMI, RSUBMI, RSUBMI, INTREG, SIGNED_CONST, AVR32_V2),
26811 + SYNTAX_NORMAL2(RSUBPL, RSUBPL, RSUBPL, INTREG, SIGNED_CONST, AVR32_V2),
26812 + SYNTAX_NORMAL2(RSUBLS, RSUBLS, RSUBLS, INTREG, SIGNED_CONST, AVR32_V2),
26813 + SYNTAX_NORMAL2(RSUBGT, RSUBGT, RSUBGT, INTREG, SIGNED_CONST, AVR32_V2),
26814 + SYNTAX_NORMAL2(RSUBLE, RSUBLE, RSUBLE, INTREG, SIGNED_CONST, AVR32_V2),
26815 + SYNTAX_NORMAL2(RSUBHI, RSUBHI, RSUBHI, INTREG, SIGNED_CONST, AVR32_V2),
26816 + SYNTAX_NORMAL2(RSUBVS, RSUBVS, RSUBVS, INTREG, SIGNED_CONST, AVR32_V2),
26817 + SYNTAX_NORMAL2(RSUBVC, RSUBVC, RSUBVC, INTREG, SIGNED_CONST, AVR32_V2),
26818 + SYNTAX_NORMAL2(RSUBQS, RSUBQS, RSUBQS, INTREG, SIGNED_CONST, AVR32_V2),
26819 + SYNTAX_NORMAL2(RSUBAL, RSUBAL, RSUBAL, INTREG, SIGNED_CONST, AVR32_V2),
26820 + SYNTAX_NORMAL2(RSUBHS, RSUBHS, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
26821 + SYNTAX_NORMAL2(RSUBLO, RSUBLO, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
26822 + SYNTAX_NORMAL3(ADDEQ, ADDEQ, ADDEQ, INTREG, INTREG, INTREG, AVR32_V2),
26823 + SYNTAX_NORMAL3(ADDNE, ADDNE, ADDNE, INTREG, INTREG, INTREG, AVR32_V2),
26824 + SYNTAX_NORMAL3(ADDCC, ADDCC, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
26825 + SYNTAX_NORMAL3(ADDCS, ADDCS, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
26826 + SYNTAX_NORMAL3(ADDGE, ADDGE, ADDGE, INTREG, INTREG, INTREG, AVR32_V2),
26827 + SYNTAX_NORMAL3(ADDLT, ADDLT, ADDLT, INTREG, INTREG, INTREG, AVR32_V2),
26828 + SYNTAX_NORMAL3(ADDMI, ADDMI, ADDMI, INTREG, INTREG, INTREG, AVR32_V2),
26829 + SYNTAX_NORMAL3(ADDPL, ADDPL, ADDPL, INTREG, INTREG, INTREG, AVR32_V2),
26830 + SYNTAX_NORMAL3(ADDLS, ADDLS, ADDLS, INTREG, INTREG, INTREG, AVR32_V2),
26831 + SYNTAX_NORMAL3(ADDGT, ADDGT, ADDGT, INTREG, INTREG, INTREG, AVR32_V2),
26832 + SYNTAX_NORMAL3(ADDLE, ADDLE, ADDLE, INTREG, INTREG, INTREG, AVR32_V2),
26833 + SYNTAX_NORMAL3(ADDHI, ADDHI, ADDHI, INTREG, INTREG, INTREG, AVR32_V2),
26834 + SYNTAX_NORMAL3(ADDVS, ADDVS, ADDVS, INTREG, INTREG, INTREG, AVR32_V2),
26835 + SYNTAX_NORMAL3(ADDVC, ADDVC, ADDVC, INTREG, INTREG, INTREG, AVR32_V2),
26836 + SYNTAX_NORMAL3(ADDQS, ADDQS, ADDQS, INTREG, INTREG, INTREG, AVR32_V2),
26837 + SYNTAX_NORMAL3(ADDAL, ADDAL, ADDAL, INTREG, INTREG, INTREG, AVR32_V2),
26838 + SYNTAX_NORMAL3(ADDHS, ADDHS, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
26839 + SYNTAX_NORMAL3(ADDLO, ADDLO, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
26840 + SYNTAX_NORMAL3(SUB2EQ, SUBEQ, SUB2EQ, INTREG, INTREG, INTREG, AVR32_V2),
26841 + SYNTAX_NORMAL3(SUB2NE, SUBNE, SUB2NE, INTREG, INTREG, INTREG, AVR32_V2),
26842 + SYNTAX_NORMAL3(SUB2CC, SUBCC, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
26843 + SYNTAX_NORMAL3(SUB2CS, SUBCS, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
26844 + SYNTAX_NORMAL3(SUB2GE, SUBGE, SUB2GE, INTREG, INTREG, INTREG, AVR32_V2),
26845 + SYNTAX_NORMAL3(SUB2LT, SUBLT, SUB2LT, INTREG, INTREG, INTREG, AVR32_V2),
26846 + SYNTAX_NORMAL3(SUB2MI, SUBMI, SUB2MI, INTREG, INTREG, INTREG, AVR32_V2),
26847 + SYNTAX_NORMAL3(SUB2PL, SUBPL, SUB2PL, INTREG, INTREG, INTREG, AVR32_V2),
26848 + SYNTAX_NORMAL3(SUB2LS, SUBLS, SUB2LS, INTREG, INTREG, INTREG, AVR32_V2),
26849 + SYNTAX_NORMAL3(SUB2GT, SUBGT, SUB2GT, INTREG, INTREG, INTREG, AVR32_V2),
26850 + SYNTAX_NORMAL3(SUB2LE, SUBLE, SUB2LE, INTREG, INTREG, INTREG, AVR32_V2),
26851 + SYNTAX_NORMAL3(SUB2HI, SUBHI, SUB2HI, INTREG, INTREG, INTREG, AVR32_V2),
26852 + SYNTAX_NORMAL3(SUB2VS, SUBVS, SUB2VS, INTREG, INTREG, INTREG, AVR32_V2),
26853 + SYNTAX_NORMAL3(SUB2VC, SUBVC, SUB2VC, INTREG, INTREG, INTREG, AVR32_V2),
26854 + SYNTAX_NORMAL3(SUB2QS, SUBQS, SUB2QS, INTREG, INTREG, INTREG, AVR32_V2),
26855 + SYNTAX_NORMAL3(SUB2AL, SUBAL, SUB2AL, INTREG, INTREG, INTREG, AVR32_V2),
26856 + SYNTAX_NORMAL3(SUB2HS, SUBHS, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
26857 + SYNTAX_NORMAL3(SUB2LO, SUBLO, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
26858 + SYNTAX_NORMAL3(ANDEQ, ANDEQ, ANDEQ, INTREG, INTREG, INTREG, AVR32_V2),
26859 + SYNTAX_NORMAL3(ANDNE, ANDNE, ANDNE, INTREG, INTREG, INTREG, AVR32_V2),
26860 + SYNTAX_NORMAL3(ANDCC, ANDCC, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
26861 + SYNTAX_NORMAL3(ANDCS, ANDCS, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
26862 + SYNTAX_NORMAL3(ANDGE, ANDGE, ANDGE, INTREG, INTREG, INTREG, AVR32_V2),
26863 + SYNTAX_NORMAL3(ANDLT, ANDLT, ANDLT, INTREG, INTREG, INTREG, AVR32_V2),
26864 + SYNTAX_NORMAL3(ANDMI, ANDMI, ANDMI, INTREG, INTREG, INTREG, AVR32_V2),
26865 + SYNTAX_NORMAL3(ANDPL, ANDPL, ANDPL, INTREG, INTREG, INTREG, AVR32_V2),
26866 + SYNTAX_NORMAL3(ANDLS, ANDLS, ANDLS, INTREG, INTREG, INTREG, AVR32_V2),
26867 + SYNTAX_NORMAL3(ANDGT, ANDGT, ANDGT, INTREG, INTREG, INTREG, AVR32_V2),
26868 + SYNTAX_NORMAL3(ANDLE, ANDLE, ANDLE, INTREG, INTREG, INTREG, AVR32_V2),
26869 + SYNTAX_NORMAL3(ANDHI, ANDHI, ANDHI, INTREG, INTREG, INTREG, AVR32_V2),
26870 + SYNTAX_NORMAL3(ANDVS, ANDVS, ANDVS, INTREG, INTREG, INTREG, AVR32_V2),
26871 + SYNTAX_NORMAL3(ANDVC, ANDVC, ANDVC, INTREG, INTREG, INTREG, AVR32_V2),
26872 + SYNTAX_NORMAL3(ANDQS, ANDQS, ANDQS, INTREG, INTREG, INTREG, AVR32_V2),
26873 + SYNTAX_NORMAL3(ANDAL, ANDAL, ANDAL, INTREG, INTREG, INTREG, AVR32_V2),
26874 + SYNTAX_NORMAL3(ANDHS, ANDHS, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
26875 + SYNTAX_NORMAL3(ANDLO, ANDLO, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
26876 + SYNTAX_NORMAL3(OREQ, OREQ, OREQ, INTREG, INTREG, INTREG, AVR32_V2),
26877 + SYNTAX_NORMAL3(ORNE, ORNE, ORNE, INTREG, INTREG, INTREG, AVR32_V2),
26878 + SYNTAX_NORMAL3(ORCC, ORCC, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
26879 + SYNTAX_NORMAL3(ORCS, ORCS, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
26880 + SYNTAX_NORMAL3(ORGE, ORGE, ORGE, INTREG, INTREG, INTREG, AVR32_V2),
26881 + SYNTAX_NORMAL3(ORLT, ORLT, ORLT, INTREG, INTREG, INTREG, AVR32_V2),
26882 + SYNTAX_NORMAL3(ORMI, ORMI, ORMI, INTREG, INTREG, INTREG, AVR32_V2),
26883 + SYNTAX_NORMAL3(ORPL, ORPL, ORPL, INTREG, INTREG, INTREG, AVR32_V2),
26884 + SYNTAX_NORMAL3(ORLS, ORLS, ORLS, INTREG, INTREG, INTREG, AVR32_V2),
26885 + SYNTAX_NORMAL3(ORGT, ORGT, ORGT, INTREG, INTREG, INTREG, AVR32_V2),
26886 + SYNTAX_NORMAL3(ORLE, ORLE, ORLE, INTREG, INTREG, INTREG, AVR32_V2),
26887 + SYNTAX_NORMAL3(ORHI, ORHI, ORHI, INTREG, INTREG, INTREG, AVR32_V2),
26888 + SYNTAX_NORMAL3(ORVS, ORVS, ORVS, INTREG, INTREG, INTREG, AVR32_V2),
26889 + SYNTAX_NORMAL3(ORVC, ORVC, ORVC, INTREG, INTREG, INTREG, AVR32_V2),
26890 + SYNTAX_NORMAL3(ORQS, ORQS, ORQS, INTREG, INTREG, INTREG, AVR32_V2),
26891 + SYNTAX_NORMAL3(ORAL, ORAL, ORAL, INTREG, INTREG, INTREG, AVR32_V2),
26892 + SYNTAX_NORMAL3(ORHS, ORHS, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
26893 + SYNTAX_NORMAL3(ORLO, ORLO, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
26894 + SYNTAX_NORMAL3(EOREQ, EOREQ, EOREQ, INTREG, INTREG, INTREG, AVR32_V2),
26895 + SYNTAX_NORMAL3(EORNE, EORNE, EORNE, INTREG, INTREG, INTREG, AVR32_V2),
26896 + SYNTAX_NORMAL3(EORCC, EORCC, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
26897 + SYNTAX_NORMAL3(EORCS, EORCS, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
26898 + SYNTAX_NORMAL3(EORGE, EORGE, EORGE, INTREG, INTREG, INTREG, AVR32_V2),
26899 + SYNTAX_NORMAL3(EORLT, EORLT, EORLT, INTREG, INTREG, INTREG, AVR32_V2),
26900 + SYNTAX_NORMAL3(EORMI, EORMI, EORMI, INTREG, INTREG, INTREG, AVR32_V2),
26901 + SYNTAX_NORMAL3(EORPL, EORPL, EORPL, INTREG, INTREG, INTREG, AVR32_V2),
26902 + SYNTAX_NORMAL3(EORLS, EORLS, EORLS, INTREG, INTREG, INTREG, AVR32_V2),
26903 + SYNTAX_NORMAL3(EORGT, EORGT, EORGT, INTREG, INTREG, INTREG, AVR32_V2),
26904 + SYNTAX_NORMAL3(EORLE, EORLE, EORLE, INTREG, INTREG, INTREG, AVR32_V2),
26905 + SYNTAX_NORMAL3(EORHI, EORHI, EORHI, INTREG, INTREG, INTREG, AVR32_V2),
26906 + SYNTAX_NORMAL3(EORVS, EORVS, EORVS, INTREG, INTREG, INTREG, AVR32_V2),
26907 + SYNTAX_NORMAL3(EORVC, EORVC, EORVC, INTREG, INTREG, INTREG, AVR32_V2),
26908 + SYNTAX_NORMAL3(EORQS, EORQS, EORQS, INTREG, INTREG, INTREG, AVR32_V2),
26909 + SYNTAX_NORMAL3(EORAL, EORAL, EORAL, INTREG, INTREG, INTREG, AVR32_V2),
26910 + SYNTAX_NORMAL3(EORHS, EORHS, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
26911 + SYNTAX_NORMAL3(EORLO, EORLO, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
26912 + SYNTAX_NORMAL2(LD_WEQ, LD_WEQ, LD_WEQ, INTREG, INTREG_UDISP_W, AVR32_V2),
26913 + SYNTAX_NORMAL2(LD_WNE, LD_WNE, LD_WNE, INTREG, INTREG_UDISP_W, AVR32_V2),
26914 + SYNTAX_NORMAL2(LD_WCC, LD_WCC, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
26915 + SYNTAX_NORMAL2(LD_WCS, LD_WCS, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
26916 + SYNTAX_NORMAL2(LD_WGE, LD_WGE, LD_WGE, INTREG, INTREG_UDISP_W, AVR32_V2),
26917 + SYNTAX_NORMAL2(LD_WLT, LD_WLT, LD_WLT, INTREG, INTREG_UDISP_W, AVR32_V2),
26918 + SYNTAX_NORMAL2(LD_WMI, LD_WMI, LD_WMI, INTREG, INTREG_UDISP_W, AVR32_V2),
26919 + SYNTAX_NORMAL2(LD_WPL, LD_WPL, LD_WPL, INTREG, INTREG_UDISP_W, AVR32_V2),
26920 + SYNTAX_NORMAL2(LD_WLS, LD_WLS, LD_WLS, INTREG, INTREG_UDISP_W, AVR32_V2),
26921 + SYNTAX_NORMAL2(LD_WGT, LD_WGT, LD_WGT, INTREG, INTREG_UDISP_W, AVR32_V2),
26922 + SYNTAX_NORMAL2(LD_WLE, LD_WLE, LD_WLE, INTREG, INTREG_UDISP_W, AVR32_V2),
26923 + SYNTAX_NORMAL2(LD_WHI, LD_WHI, LD_WHI, INTREG, INTREG_UDISP_W, AVR32_V2),
26924 + SYNTAX_NORMAL2(LD_WVS, LD_WVS, LD_WVS, INTREG, INTREG_UDISP_W, AVR32_V2),
26925 + SYNTAX_NORMAL2(LD_WVC, LD_WVC, LD_WVC, INTREG, INTREG_UDISP_W, AVR32_V2),
26926 + SYNTAX_NORMAL2(LD_WQS, LD_WQS, LD_WQS, INTREG, INTREG_UDISP_W, AVR32_V2),
26927 + SYNTAX_NORMAL2(LD_WAL, LD_WAL, LD_WAL, INTREG, INTREG_UDISP_W, AVR32_V2),
26928 + SYNTAX_NORMAL2(LD_WHS, LD_WHS, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
26929 + SYNTAX_NORMAL2(LD_WLO, LD_WLO, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
26930 + SYNTAX_NORMAL2(LD_SHEQ, LD_SHEQ, LD_SHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
26931 + SYNTAX_NORMAL2(LD_SHNE, LD_SHNE, LD_SHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
26932 + SYNTAX_NORMAL2(LD_SHCC, LD_SHCC, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
26933 + SYNTAX_NORMAL2(LD_SHCS, LD_SHCS, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
26934 + SYNTAX_NORMAL2(LD_SHGE, LD_SHGE, LD_SHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
26935 + SYNTAX_NORMAL2(LD_SHLT, LD_SHLT, LD_SHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
26936 + SYNTAX_NORMAL2(LD_SHMI, LD_SHMI, LD_SHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
26937 + SYNTAX_NORMAL2(LD_SHPL, LD_SHPL, LD_SHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
26938 + SYNTAX_NORMAL2(LD_SHLS, LD_SHLS, LD_SHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
26939 + SYNTAX_NORMAL2(LD_SHGT, LD_SHGT, LD_SHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
26940 + SYNTAX_NORMAL2(LD_SHLE, LD_SHLE, LD_SHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
26941 + SYNTAX_NORMAL2(LD_SHHI, LD_SHHI, LD_SHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
26942 + SYNTAX_NORMAL2(LD_SHVS, LD_SHVS, LD_SHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
26943 + SYNTAX_NORMAL2(LD_SHVC, LD_SHVC, LD_SHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
26944 + SYNTAX_NORMAL2(LD_SHQS, LD_SHQS, LD_SHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
26945 + SYNTAX_NORMAL2(LD_SHAL, LD_SHAL, LD_SHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
26946 + SYNTAX_NORMAL2(LD_SHHS, LD_SHHS, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
26947 + SYNTAX_NORMAL2(LD_SHLO, LD_SHLO, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
26948 + SYNTAX_NORMAL2(LD_UHEQ, LD_UHEQ, LD_UHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
26949 + SYNTAX_NORMAL2(LD_UHNE, LD_UHNE, LD_UHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
26950 + SYNTAX_NORMAL2(LD_UHCC, LD_UHCC, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
26951 + SYNTAX_NORMAL2(LD_UHCS, LD_UHCS, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
26952 + SYNTAX_NORMAL2(LD_UHGE, LD_UHGE, LD_UHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
26953 + SYNTAX_NORMAL2(LD_UHLT, LD_UHLT, LD_UHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
26954 + SYNTAX_NORMAL2(LD_UHMI, LD_UHMI, LD_UHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
26955 + SYNTAX_NORMAL2(LD_UHPL, LD_UHPL, LD_UHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
26956 + SYNTAX_NORMAL2(LD_UHLS, LD_UHLS, LD_UHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
26957 + SYNTAX_NORMAL2(LD_UHGT, LD_UHGT, LD_UHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
26958 + SYNTAX_NORMAL2(LD_UHLE, LD_UHLE, LD_UHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
26959 + SYNTAX_NORMAL2(LD_UHHI, LD_UHHI, LD_UHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
26960 + SYNTAX_NORMAL2(LD_UHVS, LD_UHVS, LD_UHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
26961 + SYNTAX_NORMAL2(LD_UHVC, LD_UHVC, LD_UHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
26962 + SYNTAX_NORMAL2(LD_UHQS, LD_UHQS, LD_UHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
26963 + SYNTAX_NORMAL2(LD_UHAL, LD_UHAL, LD_UHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
26964 + SYNTAX_NORMAL2(LD_UHHS, LD_UHHS, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
26965 + SYNTAX_NORMAL2(LD_UHLO, LD_UHLO, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
26966 + SYNTAX_NORMAL2(LD_SBEQ, LD_SBEQ, LD_SBEQ, INTREG, INTREG_UDISP, AVR32_V2),
26967 + SYNTAX_NORMAL2(LD_SBNE, LD_SBNE, LD_SBNE, INTREG, INTREG_UDISP, AVR32_V2),
26968 + SYNTAX_NORMAL2(LD_SBCC, LD_SBCC, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
26969 + SYNTAX_NORMAL2(LD_SBCS, LD_SBCS, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
26970 + SYNTAX_NORMAL2(LD_SBGE, LD_SBGE, LD_SBGE, INTREG, INTREG_UDISP, AVR32_V2),
26971 + SYNTAX_NORMAL2(LD_SBLT, LD_SBLT, LD_SBLT, INTREG, INTREG_UDISP, AVR32_V2),
26972 + SYNTAX_NORMAL2(LD_SBMI, LD_SBMI, LD_SBMI, INTREG, INTREG_UDISP, AVR32_V2),
26973 + SYNTAX_NORMAL2(LD_SBPL, LD_SBPL, LD_SBPL, INTREG, INTREG_UDISP, AVR32_V2),
26974 + SYNTAX_NORMAL2(LD_SBLS, LD_SBLS, LD_SBLS, INTREG, INTREG_UDISP, AVR32_V2),
26975 + SYNTAX_NORMAL2(LD_SBGT, LD_SBGT, LD_SBGT, INTREG, INTREG_UDISP, AVR32_V2),
26976 + SYNTAX_NORMAL2(LD_SBLE, LD_SBLE, LD_SBLE, INTREG, INTREG_UDISP, AVR32_V2),
26977 + SYNTAX_NORMAL2(LD_SBHI, LD_SBHI, LD_SBHI, INTREG, INTREG_UDISP, AVR32_V2),
26978 + SYNTAX_NORMAL2(LD_SBVS, LD_SBVS, LD_SBVS, INTREG, INTREG_UDISP, AVR32_V2),
26979 + SYNTAX_NORMAL2(LD_SBVC, LD_SBVC, LD_SBVC, INTREG, INTREG_UDISP, AVR32_V2),
26980 + SYNTAX_NORMAL2(LD_SBQS, LD_SBQS, LD_SBQS, INTREG, INTREG_UDISP, AVR32_V2),
26981 + SYNTAX_NORMAL2(LD_SBAL, LD_SBAL, LD_SBAL, INTREG, INTREG_UDISP, AVR32_V2),
26982 + SYNTAX_NORMAL2(LD_SBHS, LD_SBHS, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
26983 + SYNTAX_NORMAL2(LD_SBLO, LD_SBLO, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
26984 + SYNTAX_NORMAL2(LD_UBEQ, LD_UBEQ, LD_UBEQ, INTREG, INTREG_UDISP, AVR32_V2),
26985 + SYNTAX_NORMAL2(LD_UBNE, LD_UBNE, LD_UBNE, INTREG, INTREG_UDISP, AVR32_V2),
26986 + SYNTAX_NORMAL2(LD_UBCC, LD_UBCC, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
26987 + SYNTAX_NORMAL2(LD_UBCS, LD_UBCS, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
26988 + SYNTAX_NORMAL2(LD_UBGE, LD_UBGE, LD_UBGE, INTREG, INTREG_UDISP, AVR32_V2),
26989 + SYNTAX_NORMAL2(LD_UBLT, LD_UBLT, LD_UBLT, INTREG, INTREG_UDISP, AVR32_V2),
26990 + SYNTAX_NORMAL2(LD_UBMI, LD_UBMI, LD_UBMI, INTREG, INTREG_UDISP, AVR32_V2),
26991 + SYNTAX_NORMAL2(LD_UBPL, LD_UBPL, LD_UBPL, INTREG, INTREG_UDISP, AVR32_V2),
26992 + SYNTAX_NORMAL2(LD_UBLS, LD_UBLS, LD_UBLS, INTREG, INTREG_UDISP, AVR32_V2),
26993 + SYNTAX_NORMAL2(LD_UBGT, LD_UBGT, LD_UBGT, INTREG, INTREG_UDISP, AVR32_V2),
26994 + SYNTAX_NORMAL2(LD_UBLE, LD_UBLE, LD_UBLE, INTREG, INTREG_UDISP, AVR32_V2),
26995 + SYNTAX_NORMAL2(LD_UBHI, LD_UBHI, LD_UBHI, INTREG, INTREG_UDISP, AVR32_V2),
26996 + SYNTAX_NORMAL2(LD_UBVS, LD_UBVS, LD_UBVS, INTREG, INTREG_UDISP, AVR32_V2),
26997 + SYNTAX_NORMAL2(LD_UBVC, LD_UBVC, LD_UBVC, INTREG, INTREG_UDISP, AVR32_V2),
26998 + SYNTAX_NORMAL2(LD_UBQS, LD_UBQS, LD_UBQS, INTREG, INTREG_UDISP, AVR32_V2),
26999 + SYNTAX_NORMAL2(LD_UBAL, LD_UBAL, LD_UBAL, INTREG, INTREG_UDISP, AVR32_V2),
27000 + SYNTAX_NORMAL2(LD_UBHS, LD_UBHS, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
27001 + SYNTAX_NORMAL2(LD_UBLO, LD_UBLO, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
27002 + SYNTAX_NORMAL2(ST_WEQ, ST_WEQ, ST_WEQ, INTREG_UDISP_W, INTREG, AVR32_V2),
27003 + SYNTAX_NORMAL2(ST_WNE, ST_WNE, ST_WNE, INTREG_UDISP_W, INTREG, AVR32_V2),
27004 + SYNTAX_NORMAL2(ST_WCC, ST_WCC, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
27005 + SYNTAX_NORMAL2(ST_WCS, ST_WCS, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
27006 + SYNTAX_NORMAL2(ST_WGE, ST_WGE, ST_WGE, INTREG_UDISP_W, INTREG, AVR32_V2),
27007 + SYNTAX_NORMAL2(ST_WLT, ST_WLT, ST_WLT, INTREG_UDISP_W, INTREG, AVR32_V2),
27008 + SYNTAX_NORMAL2(ST_WMI, ST_WMI, ST_WMI, INTREG_UDISP_W, INTREG, AVR32_V2),
27009 + SYNTAX_NORMAL2(ST_WPL, ST_WPL, ST_WPL, INTREG_UDISP_W, INTREG, AVR32_V2),
27010 + SYNTAX_NORMAL2(ST_WLS, ST_WLS, ST_WLS, INTREG_UDISP_W, INTREG, AVR32_V2),
27011 + SYNTAX_NORMAL2(ST_WGT, ST_WGT, ST_WGT, INTREG_UDISP_W, INTREG, AVR32_V2),
27012 + SYNTAX_NORMAL2(ST_WLE, ST_WLE, ST_WLE, INTREG_UDISP_W, INTREG, AVR32_V2),
27013 + SYNTAX_NORMAL2(ST_WHI, ST_WHI, ST_WHI, INTREG_UDISP_W, INTREG, AVR32_V2),
27014 + SYNTAX_NORMAL2(ST_WVS, ST_WVS, ST_WVS, INTREG_UDISP_W, INTREG, AVR32_V2),
27015 + SYNTAX_NORMAL2(ST_WVC, ST_WVC, ST_WVC, INTREG_UDISP_W, INTREG, AVR32_V2),
27016 + SYNTAX_NORMAL2(ST_WQS, ST_WQS, ST_WQS, INTREG_UDISP_W, INTREG, AVR32_V2),
27017 + SYNTAX_NORMAL2(ST_WAL, ST_WAL, ST_WAL, INTREG_UDISP_W, INTREG, AVR32_V2),
27018 + SYNTAX_NORMAL2(ST_WHS, ST_WHS, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
27019 + SYNTAX_NORMAL2(ST_WLO, ST_WLO, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
27020 + SYNTAX_NORMAL2(ST_HEQ, ST_HEQ, ST_HEQ, INTREG_UDISP_H, INTREG, AVR32_V2),
27021 + SYNTAX_NORMAL2(ST_HNE, ST_HNE, ST_HNE, INTREG_UDISP_H, INTREG, AVR32_V2),
27022 + SYNTAX_NORMAL2(ST_HCC, ST_HCC, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
27023 + SYNTAX_NORMAL2(ST_HCS, ST_HCS, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
27024 + SYNTAX_NORMAL2(ST_HGE, ST_HGE, ST_HGE, INTREG_UDISP_H, INTREG, AVR32_V2),
27025 + SYNTAX_NORMAL2(ST_HLT, ST_HLT, ST_HLT, INTREG_UDISP_H, INTREG, AVR32_V2),
27026 + SYNTAX_NORMAL2(ST_HMI, ST_HMI, ST_HMI, INTREG_UDISP_H, INTREG, AVR32_V2),
27027 + SYNTAX_NORMAL2(ST_HPL, ST_HPL, ST_HPL, INTREG_UDISP_H, INTREG, AVR32_V2),
27028 + SYNTAX_NORMAL2(ST_HLS, ST_HLS, ST_HLS, INTREG_UDISP_H, INTREG, AVR32_V2),
27029 + SYNTAX_NORMAL2(ST_HGT, ST_HGT, ST_HGT, INTREG_UDISP_H, INTREG, AVR32_V2),
27030 + SYNTAX_NORMAL2(ST_HLE, ST_HLE, ST_HLE, INTREG_UDISP_H, INTREG, AVR32_V2),
27031 + SYNTAX_NORMAL2(ST_HHI, ST_HHI, ST_HHI, INTREG_UDISP_H, INTREG, AVR32_V2),
27032 + SYNTAX_NORMAL2(ST_HVS, ST_HVS, ST_HVS, INTREG_UDISP_H, INTREG, AVR32_V2),
27033 + SYNTAX_NORMAL2(ST_HVC, ST_HVC, ST_HVC, INTREG_UDISP_H, INTREG, AVR32_V2),
27034 + SYNTAX_NORMAL2(ST_HQS, ST_HQS, ST_HQS, INTREG_UDISP_H, INTREG, AVR32_V2),
27035 + SYNTAX_NORMAL2(ST_HAL, ST_HAL, ST_HAL, INTREG_UDISP_H, INTREG, AVR32_V2),
27036 + SYNTAX_NORMAL2(ST_HHS, ST_HHS, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
27037 + SYNTAX_NORMAL2(ST_HLO, ST_HLO, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
27038 + SYNTAX_NORMAL2(ST_BEQ, ST_BEQ, ST_BEQ, INTREG_UDISP, INTREG, AVR32_V2),
27039 + SYNTAX_NORMAL2(ST_BNE, ST_BNE, ST_BNE, INTREG_UDISP, INTREG, AVR32_V2),
27040 + SYNTAX_NORMAL2(ST_BCC, ST_BCC, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
27041 + SYNTAX_NORMAL2(ST_BCS, ST_BCS, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
27042 + SYNTAX_NORMAL2(ST_BGE, ST_BGE, ST_BGE, INTREG_UDISP, INTREG, AVR32_V2),
27043 + SYNTAX_NORMAL2(ST_BLT, ST_BLT, ST_BLT, INTREG_UDISP, INTREG, AVR32_V2),
27044 + SYNTAX_NORMAL2(ST_BMI, ST_BMI, ST_BMI, INTREG_UDISP, INTREG, AVR32_V2),
27045 + SYNTAX_NORMAL2(ST_BPL, ST_BPL, ST_BPL, INTREG_UDISP, INTREG, AVR32_V2),
27046 + SYNTAX_NORMAL2(ST_BLS, ST_BLS, ST_BLS, INTREG_UDISP, INTREG, AVR32_V2),
27047 + SYNTAX_NORMAL2(ST_BGT, ST_BGT, ST_BGT, INTREG_UDISP, INTREG, AVR32_V2),
27048 + SYNTAX_NORMAL2(ST_BLE, ST_BLE, ST_BLE, INTREG_UDISP, INTREG, AVR32_V2),
27049 + SYNTAX_NORMAL2(ST_BHI, ST_BHI, ST_BHI, INTREG_UDISP, INTREG, AVR32_V2),
27050 + SYNTAX_NORMAL2(ST_BVS, ST_BVS, ST_BVS, INTREG_UDISP, INTREG, AVR32_V2),
27051 + SYNTAX_NORMAL2(ST_BVC, ST_BVC, ST_BVC, INTREG_UDISP, INTREG, AVR32_V2),
27052 + SYNTAX_NORMAL2(ST_BQS, ST_BQS, ST_BQS, INTREG_UDISP, INTREG, AVR32_V2),
27053 + SYNTAX_NORMAL2(ST_BAL, ST_BAL, ST_BAL, INTREG_UDISP, INTREG, AVR32_V2),
27054 + SYNTAX_NORMAL2(ST_BHS, ST_BHS, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
27055 + SYNTAX_NORMAL2(ST_BLO, ST_BLO, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
27056 + SYNTAX_NORMAL2(MOVH, MOVH, MOVH, INTREG, UNSIGNED_CONST, AVR32_V2),
27057 +
27058 + };
27059 +
27060 +#define NORMAL_MNEMONIC(name, syntax, str) \
27061 + { \
27062 + AVR32_MNEMONIC_##name, str, \
27063 + &avr32_syntax_table[AVR32_SYNTAX_##syntax], \
27064 + }
27065 +#define FP_MNEMONIC(name, syntax, str) \
27066 + NORMAL_MNEMONIC(name##_S, syntax##_S, str ".s"), \
27067 + NORMAL_MNEMONIC(name##_D, syntax##_D, str ".d")
27068 +
27069 +const struct avr32_mnemonic avr32_mnemonic_table[] =
27070 + {
27071 + NORMAL_MNEMONIC(ABS, ABS, "abs"),
27072 + NORMAL_MNEMONIC(ACALL, ACALL, "acall"),
27073 + NORMAL_MNEMONIC(ACR, ACR, "acr"),
27074 + NORMAL_MNEMONIC(ADC, ADC, "adc"),
27075 + NORMAL_MNEMONIC(ADD, ADD1, "add"),
27076 + NORMAL_MNEMONIC(ADDABS, ADDABS, "addabs"),
27077 + NORMAL_MNEMONIC(ADDHH_W, ADDHH_W, "addhh.w"),
27078 + NORMAL_MNEMONIC(AND, AND1, "and"),
27079 + NORMAL_MNEMONIC(ANDH, ANDH, "andh"),
27080 + NORMAL_MNEMONIC(ANDL, ANDL, "andl"),
27081 + NORMAL_MNEMONIC(ANDN, ANDN, "andn"),
27082 + NORMAL_MNEMONIC(ASR, ASR1, "asr"),
27083 + NORMAL_MNEMONIC(BFEXTS, BFEXTS, "bfexts"),
27084 + NORMAL_MNEMONIC(BFEXTU, BFEXTU, "bfextu"),
27085 + NORMAL_MNEMONIC(BFINS, BFINS, "bfins"),
27086 + NORMAL_MNEMONIC(BLD, BLD, "bld"),
27087 + NORMAL_MNEMONIC(BREQ, BREQ1, "breq"),
27088 + NORMAL_MNEMONIC(BRNE, BRNE1, "brne"),
27089 + NORMAL_MNEMONIC(BRCC, BRCC1, "brcc"),
27090 + NORMAL_MNEMONIC(BRCS, BRCS1, "brcs"),
27091 + NORMAL_MNEMONIC(BRGE, BRGE1, "brge"),
27092 + NORMAL_MNEMONIC(BRLT, BRLT1, "brlt"),
27093 + NORMAL_MNEMONIC(BRMI, BRMI1, "brmi"),
27094 + NORMAL_MNEMONIC(BRPL, BRPL1, "brpl"),
27095 + NORMAL_MNEMONIC(BRHS, BRHS1, "brhs"),
27096 + NORMAL_MNEMONIC(BRLO, BRLO1, "brlo"),
27097 + NORMAL_MNEMONIC(BRLS, BRLS, "brls"),
27098 + NORMAL_MNEMONIC(BRGT, BRGT, "brgt"),
27099 + NORMAL_MNEMONIC(BRLE, BRLE, "brle"),
27100 + NORMAL_MNEMONIC(BRHI, BRHI, "brhi"),
27101 + NORMAL_MNEMONIC(BRVS, BRVS, "brvs"),
27102 + NORMAL_MNEMONIC(BRVC, BRVC, "brvc"),
27103 + NORMAL_MNEMONIC(BRQS, BRQS, "brqs"),
27104 + NORMAL_MNEMONIC(BRAL, BRAL, "bral"),
27105 + NORMAL_MNEMONIC(BREAKPOINT, BREAKPOINT, "breakpoint"),
27106 + NORMAL_MNEMONIC(BREV, BREV, "brev"),
27107 + NORMAL_MNEMONIC(BST, BST, "bst"),
27108 + NORMAL_MNEMONIC(CACHE, CACHE, "cache"),
27109 + NORMAL_MNEMONIC(CASTS_B, CASTS_B, "casts.b"),
27110 + NORMAL_MNEMONIC(CASTS_H, CASTS_H, "casts.h"),
27111 + NORMAL_MNEMONIC(CASTU_B, CASTU_B, "castu.b"),
27112 + NORMAL_MNEMONIC(CASTU_H, CASTU_H, "castu.h"),
27113 + NORMAL_MNEMONIC(CBR, CBR, "cbr"),
27114 + NORMAL_MNEMONIC(CLZ, CLZ, "clz"),
27115 + NORMAL_MNEMONIC(COM, COM, "com"),
27116 + NORMAL_MNEMONIC(COP, COP, "cop"),
27117 + NORMAL_MNEMONIC(CP_B, CP_B, "cp.b"),
27118 + NORMAL_MNEMONIC(CP_H, CP_H, "cp.h"),
27119 + NORMAL_MNEMONIC(CP_W, CP_W1, "cp.w"),
27120 + NORMAL_MNEMONIC(CP, CP_W1, "cp"),
27121 + NORMAL_MNEMONIC(CPC, CPC1, "cpc"),
27122 + NORMAL_MNEMONIC(CSRF, CSRF, "csrf"),
27123 + NORMAL_MNEMONIC(CSRFCZ, CSRFCZ, "csrfcz"),
27124 + NORMAL_MNEMONIC(DIVS, DIVS, "divs"),
27125 + NORMAL_MNEMONIC(DIVU, DIVU, "divu"),
27126 + NORMAL_MNEMONIC(EOR, EOR1, "eor"),
27127 + NORMAL_MNEMONIC(EORL, EORL, "eorl"),
27128 + NORMAL_MNEMONIC(EORH, EORH, "eorh"),
27129 + NORMAL_MNEMONIC(FRS, FRS, "frs"),
27130 + NORMAL_MNEMONIC(ICALL, ICALL, "icall"),
27131 + NORMAL_MNEMONIC(INCJOSP, INCJOSP, "incjosp"),
27132 + NORMAL_MNEMONIC(LD_D, LD_D1, "ld.d"),
27133 + NORMAL_MNEMONIC(LD_SB, LD_SB2, "ld.sb"),
27134 + NORMAL_MNEMONIC(LD_UB, LD_UB1, "ld.ub"),
27135 + NORMAL_MNEMONIC(LD_SH, LD_SH1, "ld.sh"),
27136 + NORMAL_MNEMONIC(LD_UH, LD_UH1, "ld.uh"),
27137 + NORMAL_MNEMONIC(LD_W, LD_W1, "ld.w"),
27138 + NORMAL_MNEMONIC(LDC_D, LDC_D3, "ldc.d"),
27139 + NORMAL_MNEMONIC(LDC_W, LDC_W3, "ldc.w"),
27140 + NORMAL_MNEMONIC(LDC0_D, LDC0_D, "ldc0.d"),
27141 + NORMAL_MNEMONIC(LDC0_W, LDC0_W, "ldc0.w"),
27142 + NORMAL_MNEMONIC(LDCM_D, LDCM_D, "ldcm.d"),
27143 + NORMAL_MNEMONIC(LDCM_W, LDCM_W, "ldcm.w"),
27144 + NORMAL_MNEMONIC(LDDPC, LDDPC, "lddpc"),
27145 + NORMAL_MNEMONIC(LDDSP, LDDSP, "lddsp"),
27146 + NORMAL_MNEMONIC(LDINS_B, LDINS_B, "ldins.b"),
27147 + NORMAL_MNEMONIC(LDINS_H, LDINS_H, "ldins.h"),
27148 + NORMAL_MNEMONIC(LDM, LDM, "ldm"),
27149 + NORMAL_MNEMONIC(LDMTS, LDMTS, "ldmts"),
27150 + NORMAL_MNEMONIC(LDSWP_SH, LDSWP_SH, "ldswp.sh"),
27151 + NORMAL_MNEMONIC(LDSWP_UH, LDSWP_UH, "ldswp.uh"),
27152 + NORMAL_MNEMONIC(LDSWP_W, LDSWP_W, "ldswp.w"),
27153 + NORMAL_MNEMONIC(LSL, LSL1, "lsl"),
27154 + NORMAL_MNEMONIC(LSR, LSR1, "lsr"),
27155 + NORMAL_MNEMONIC(MAC, MAC, "mac"),
27156 + NORMAL_MNEMONIC(MACHH_D, MACHH_D, "machh.d"),
27157 + NORMAL_MNEMONIC(MACHH_W, MACHH_W, "machh.w"),
27158 + NORMAL_MNEMONIC(MACS_D, MACS_D, "macs.d"),
27159 + NORMAL_MNEMONIC(MACSATHH_W, MACSATHH_W, "macsathh.w"),
27160 + NORMAL_MNEMONIC(MACU_D, MACUD, "macu.d"),
27161 + NORMAL_MNEMONIC(MACWH_D, MACWH_D, "macwh.d"),
27162 + NORMAL_MNEMONIC(MAX, MAX, "max"),
27163 + NORMAL_MNEMONIC(MCALL, MCALL, "mcall"),
27164 + NORMAL_MNEMONIC(MFDR, MFDR, "mfdr"),
27165 + NORMAL_MNEMONIC(MFSR, MFSR, "mfsr"),
27166 + NORMAL_MNEMONIC(MIN, MIN, "min"),
27167 + NORMAL_MNEMONIC(MOV, MOV3, "mov"),
27168 + NORMAL_MNEMONIC(MOVEQ, MOVEQ1, "moveq"),
27169 + NORMAL_MNEMONIC(MOVNE, MOVNE1, "movne"),
27170 + NORMAL_MNEMONIC(MOVCC, MOVCC1, "movcc"),
27171 + NORMAL_MNEMONIC(MOVCS, MOVCS1, "movcs"),
27172 + NORMAL_MNEMONIC(MOVGE, MOVGE1, "movge"),
27173 + NORMAL_MNEMONIC(MOVLT, MOVLT1, "movlt"),
27174 + NORMAL_MNEMONIC(MOVMI, MOVMI1, "movmi"),
27175 + NORMAL_MNEMONIC(MOVPL, MOVPL1, "movpl"),
27176 + NORMAL_MNEMONIC(MOVLS, MOVLS1, "movls"),
27177 + NORMAL_MNEMONIC(MOVGT, MOVGT1, "movgt"),
27178 + NORMAL_MNEMONIC(MOVLE, MOVLE1, "movle"),
27179 + NORMAL_MNEMONIC(MOVHI, MOVHI1, "movhi"),
27180 + NORMAL_MNEMONIC(MOVVS, MOVVS1, "movvs"),
27181 + NORMAL_MNEMONIC(MOVVC, MOVVC1, "movvc"),
27182 + NORMAL_MNEMONIC(MOVQS, MOVQS1, "movqs"),
27183 + NORMAL_MNEMONIC(MOVAL, MOVAL1, "moval"),
27184 + NORMAL_MNEMONIC(MOVHS, MOVHS1, "movhs"),
27185 + NORMAL_MNEMONIC(MOVLO, MOVLO1, "movlo"),
27186 + NORMAL_MNEMONIC(MTDR, MTDR, "mtdr"),
27187 + NORMAL_MNEMONIC(MTSR, MTSR, "mtsr"),
27188 + NORMAL_MNEMONIC(MUL, MUL1, "mul"),
27189 + NORMAL_MNEMONIC(MULHH_W, MULHH_W, "mulhh.w"),
27190 + NORMAL_MNEMONIC(MULNHH_W, MULNHH_W, "mulnhh.w"),
27191 + NORMAL_MNEMONIC(MULNWH_D, MULNWH_D, "mulnwh.d"),
27192 + NORMAL_MNEMONIC(MULS_D, MULSD, "muls.d"),
27193 + NORMAL_MNEMONIC(MULSATHH_H, MULSATHH_H, "mulsathh.h"),
27194 + NORMAL_MNEMONIC(MULSATHH_W, MULSATHH_W, "mulsathh.w"),
27195 + NORMAL_MNEMONIC(MULSATRNDHH_H, MULSATRNDHH_H, "mulsatrndhh.h"),
27196 + NORMAL_MNEMONIC(MULSATRNDWH_W, MULSATRNDWH_W, "mulsatrndwh.w"),
27197 + NORMAL_MNEMONIC(MULSATWH_W, MULSATWH_W, "mulsatwh.w"),
27198 + NORMAL_MNEMONIC(MULU_D, MULU_D, "mulu.d"),
27199 + NORMAL_MNEMONIC(MULWH_D, MULWH_D, "mulwh.d"),
27200 + NORMAL_MNEMONIC(MUSFR, MUSFR, "musfr"),
27201 + NORMAL_MNEMONIC(MUSTR, MUSTR, "mustr"),
27202 + NORMAL_MNEMONIC(MVCR_D, MVCR_D, "mvcr.d"),
27203 + NORMAL_MNEMONIC(MVCR_W, MVCR_W, "mvcr.w"),
27204 + NORMAL_MNEMONIC(MVRC_D, MVRC_D, "mvrc.d"),
27205 + NORMAL_MNEMONIC(MVRC_W, MVRC_W, "mvrc.w"),
27206 + NORMAL_MNEMONIC(NEG, NEG, "neg"),
27207 + NORMAL_MNEMONIC(NOP, NOP, "nop"),
27208 + NORMAL_MNEMONIC(OR, OR1, "or"),
27209 + NORMAL_MNEMONIC(ORH, ORH, "orh"),
27210 + NORMAL_MNEMONIC(ORL, ORL, "orl"),
27211 + NORMAL_MNEMONIC(PABS_SB, PABS_SB, "pabs.sb"),
27212 + NORMAL_MNEMONIC(PABS_SH, PABS_SH, "pabs.sh"),
27213 + NORMAL_MNEMONIC(PACKSH_SB, PACKSH_SB, "packsh.sb"),
27214 + NORMAL_MNEMONIC(PACKSH_UB, PACKSH_UB, "packsh.ub"),
27215 + NORMAL_MNEMONIC(PACKW_SH, PACKW_SH, "packw.sh"),
27216 + NORMAL_MNEMONIC(PADD_B, PADD_B, "padd.b"),
27217 + NORMAL_MNEMONIC(PADD_H, PADD_H, "padd.h"),
27218 + NORMAL_MNEMONIC(PADDH_SH, PADDH_SH, "paddh.sh"),
27219 + NORMAL_MNEMONIC(PADDH_UB, PADDH_UB, "paddh.ub"),
27220 + NORMAL_MNEMONIC(PADDS_SB, PADDS_SB, "padds.sb"),
27221 + NORMAL_MNEMONIC(PADDS_SH, PADDS_SH, "padds.sh"),
27222 + NORMAL_MNEMONIC(PADDS_UB, PADDS_UB, "padds.ub"),
27223 + NORMAL_MNEMONIC(PADDS_UH, PADDS_UH, "padds.uh"),
27224 + NORMAL_MNEMONIC(PADDSUB_H, PADDSUB_H, "paddsub.h"),
27225 + NORMAL_MNEMONIC(PADDSUBH_SH, PADDSUBH_SH, "paddsubh.sh"),
27226 + NORMAL_MNEMONIC(PADDSUBS_SH, PADDSUBS_SH, "paddsubs.sh"),
27227 + NORMAL_MNEMONIC(PADDSUBS_UH, PADDSUBS_UH, "paddsubs.uh"),
27228 + NORMAL_MNEMONIC(PADDX_H, PADDX_H, "paddx.h"),
27229 + NORMAL_MNEMONIC(PADDXH_SH, PADDXH_SH, "paddxh.sh"),
27230 + NORMAL_MNEMONIC(PADDXS_SH, PADDXS_SH, "paddxs.sh"),
27231 + NORMAL_MNEMONIC(PADDXS_UH, PADDXS_UH, "paddxs.uh"),
27232 + NORMAL_MNEMONIC(PASR_B, PASR_B, "pasr.b"),
27233 + NORMAL_MNEMONIC(PASR_H, PASR_H, "pasr.h"),
27234 + NORMAL_MNEMONIC(PAVG_SH, PAVG_SH, "pavg.sh"),
27235 + NORMAL_MNEMONIC(PAVG_UB, PAVG_UB, "pavg.ub"),
27236 + NORMAL_MNEMONIC(PLSL_B, PLSL_B, "plsl.b"),
27237 + NORMAL_MNEMONIC(PLSL_H, PLSL_H, "plsl.h"),
27238 + NORMAL_MNEMONIC(PLSR_B, PLSR_B, "plsr.b"),
27239 + NORMAL_MNEMONIC(PLSR_H, PLSR_H, "plsr.h"),
27240 + NORMAL_MNEMONIC(PMAX_SH, PMAX_SH, "pmax.sh"),
27241 + NORMAL_MNEMONIC(PMAX_UB, PMAX_UB, "pmax.ub"),
27242 + NORMAL_MNEMONIC(PMIN_SH, PMIN_SH, "pmin.sh"),
27243 + NORMAL_MNEMONIC(PMIN_UB, PMIN_UB, "pmin.ub"),
27244 + NORMAL_MNEMONIC(POPJC, POPJC, "popjc"),
27245 + NORMAL_MNEMONIC(POPM, POPM, "popm"),
27246 + NORMAL_MNEMONIC(PREF, PREF, "pref"),
27247 + NORMAL_MNEMONIC(PSAD, PSAD, "psad"),
27248 + NORMAL_MNEMONIC(PSUB_B, PSUB_B, "psub.b"),
27249 + NORMAL_MNEMONIC(PSUB_H, PSUB_H, "psub.h"),
27250 + NORMAL_MNEMONIC(PSUBADD_H, PSUBADD_H, "psubadd.h"),
27251 + NORMAL_MNEMONIC(PSUBADDH_SH, PSUBADDH_SH, "psubaddh.sh"),
27252 + NORMAL_MNEMONIC(PSUBADDS_SH, PSUBADDS_SH, "psubadds.sh"),
27253 + NORMAL_MNEMONIC(PSUBADDS_UH, PSUBADDS_UH, "psubadds.uh"),
27254 + NORMAL_MNEMONIC(PSUBH_SH, PSUBH_SH, "psubh.sh"),
27255 + NORMAL_MNEMONIC(PSUBH_UB, PSUBH_UB, "psubh.ub"),
27256 + NORMAL_MNEMONIC(PSUBS_SB, PSUBS_SB, "psubs.sb"),
27257 + NORMAL_MNEMONIC(PSUBS_SH, PSUBS_SH, "psubs.sh"),
27258 + NORMAL_MNEMONIC(PSUBS_UB, PSUBS_UB, "psubs.ub"),
27259 + NORMAL_MNEMONIC(PSUBS_UH, PSUBS_UH, "psubs.uh"),
27260 + NORMAL_MNEMONIC(PSUBX_H, PSUBX_H, "psubx.h"),
27261 + NORMAL_MNEMONIC(PSUBXH_SH, PSUBXH_SH, "psubxh.sh"),
27262 + NORMAL_MNEMONIC(PSUBXS_SH, PSUBXS_SH, "psubxs.sh"),
27263 + NORMAL_MNEMONIC(PSUBXS_UH, PSUBXS_UH, "psubxs.uh"),
27264 + NORMAL_MNEMONIC(PUNPCKSB_H, PUNPCKSB_H, "punpcksb.h"),
27265 + NORMAL_MNEMONIC(PUNPCKUB_H, PUNPCKUB_H, "punpckub.h"),
27266 + NORMAL_MNEMONIC(PUSHJC, PUSHJC, "pushjc"),
27267 + NORMAL_MNEMONIC(PUSHM, PUSHM, "pushm"),
27268 + NORMAL_MNEMONIC(RCALL, RCALL1, "rcall"),
27269 + NORMAL_MNEMONIC(RETEQ, RETEQ, "reteq"),
27270 + NORMAL_MNEMONIC(RETNE, RETNE, "retne"),
27271 + NORMAL_MNEMONIC(RETCC, RETCC, "retcc"),
27272 + NORMAL_MNEMONIC(RETCS, RETCS, "retcs"),
27273 + NORMAL_MNEMONIC(RETGE, RETGE, "retge"),
27274 + NORMAL_MNEMONIC(RETLT, RETLT, "retlt"),
27275 + NORMAL_MNEMONIC(RETMI, RETMI, "retmi"),
27276 + NORMAL_MNEMONIC(RETPL, RETPL, "retpl"),
27277 + NORMAL_MNEMONIC(RETLS, RETLS, "retls"),
27278 + NORMAL_MNEMONIC(RETGT, RETGT, "retgt"),
27279 + NORMAL_MNEMONIC(RETLE, RETLE, "retle"),
27280 + NORMAL_MNEMONIC(RETHI, RETHI, "rethi"),
27281 + NORMAL_MNEMONIC(RETVS, RETVS, "retvs"),
27282 + NORMAL_MNEMONIC(RETVC, RETVC, "retvc"),
27283 + NORMAL_MNEMONIC(RETQS, RETQS, "retqs"),
27284 + NORMAL_MNEMONIC(RETAL, RETAL, "retal"),
27285 + NORMAL_MNEMONIC(RETHS, RETHS, "reths"),
27286 + NORMAL_MNEMONIC(RETLO, RETLO, "retlo"),
27287 + NORMAL_MNEMONIC(RET, RETAL, "ret"),
27288 + NORMAL_MNEMONIC(RETD, RETD, "retd"),
27289 + NORMAL_MNEMONIC(RETE, RETE, "rete"),
27290 + NORMAL_MNEMONIC(RETJ, RETJ, "retj"),
27291 + NORMAL_MNEMONIC(RETS, RETS, "rets"),
27292 + NORMAL_MNEMONIC(RJMP, RJMP, "rjmp"),
27293 + NORMAL_MNEMONIC(ROL, ROL, "rol"),
27294 + NORMAL_MNEMONIC(ROR, ROR, "ror"),
27295 + NORMAL_MNEMONIC(RSUB, RSUB1, "rsub"),
27296 + NORMAL_MNEMONIC(SATADD_H, SATADD_H, "satadd.h"),
27297 + NORMAL_MNEMONIC(SATADD_W, SATADD_W, "satadd.w"),
27298 + NORMAL_MNEMONIC(SATRNDS, SATRNDS, "satrnds"),
27299 + NORMAL_MNEMONIC(SATRNDU, SATRNDU, "satrndu"),
27300 + NORMAL_MNEMONIC(SATS, SATS, "sats"),
27301 + NORMAL_MNEMONIC(SATSUB_H, SATSUB_H, "satsub.h"),
27302 + NORMAL_MNEMONIC(SATSUB_W, SATSUB_W1, "satsub.w"),
27303 + NORMAL_MNEMONIC(SATU, SATU, "satu"),
27304 + NORMAL_MNEMONIC(SBC, SBC, "sbc"),
27305 + NORMAL_MNEMONIC(SBR, SBR, "sbr"),
27306 + NORMAL_MNEMONIC(SCALL, SCALL, "scall"),
27307 + NORMAL_MNEMONIC(SCR, SCR, "scr"),
27308 + NORMAL_MNEMONIC(SLEEP, SLEEP, "sleep"),
27309 + NORMAL_MNEMONIC(SREQ, SREQ, "sreq"),
27310 + NORMAL_MNEMONIC(SRNE, SRNE, "srne"),
27311 + NORMAL_MNEMONIC(SRCC, SRCC, "srcc"),
27312 + NORMAL_MNEMONIC(SRCS, SRCS, "srcs"),
27313 + NORMAL_MNEMONIC(SRGE, SRGE, "srge"),
27314 + NORMAL_MNEMONIC(SRLT, SRLT, "srlt"),
27315 + NORMAL_MNEMONIC(SRMI, SRMI, "srmi"),
27316 + NORMAL_MNEMONIC(SRPL, SRPL, "srpl"),
27317 + NORMAL_MNEMONIC(SRLS, SRLS, "srls"),
27318 + NORMAL_MNEMONIC(SRGT, SRGT, "srgt"),
27319 + NORMAL_MNEMONIC(SRLE, SRLE, "srle"),
27320 + NORMAL_MNEMONIC(SRHI, SRHI, "srhi"),
27321 + NORMAL_MNEMONIC(SRVS, SRVS, "srvs"),
27322 + NORMAL_MNEMONIC(SRVC, SRVC, "srvc"),
27323 + NORMAL_MNEMONIC(SRQS, SRQS, "srqs"),
27324 + NORMAL_MNEMONIC(SRAL, SRAL, "sral"),
27325 + NORMAL_MNEMONIC(SRHS, SRHS, "srhs"),
27326 + NORMAL_MNEMONIC(SRLO, SRLO, "srlo"),
27327 + NORMAL_MNEMONIC(SSRF, SSRF, "ssrf"),
27328 + NORMAL_MNEMONIC(ST_B, ST_B1, "st.b"),
27329 + NORMAL_MNEMONIC(ST_D, ST_D1, "st.d"),
27330 + NORMAL_MNEMONIC(ST_H, ST_H1, "st.h"),
27331 + NORMAL_MNEMONIC(ST_W, ST_W1, "st.w"),
27332 + NORMAL_MNEMONIC(STC_D, STC_D3, "stc.d"),
27333 + NORMAL_MNEMONIC(STC_W, STC_W3, "stc.w"),
27334 + NORMAL_MNEMONIC(STC0_D, STC0_D, "stc0.d"),
27335 + NORMAL_MNEMONIC(STC0_W, STC0_W, "stc0.w"),
27336 + NORMAL_MNEMONIC(STCM_D, STCM_D, "stcm.d"),
27337 + NORMAL_MNEMONIC(STCM_W, STCM_W, "stcm.w"),
27338 + NORMAL_MNEMONIC(STCOND, STCOND, "stcond"),
27339 + NORMAL_MNEMONIC(STDSP, STDSP, "stdsp"),
27340 + NORMAL_MNEMONIC(STHH_W, STHH_W2, "sthh.w"),
27341 + NORMAL_MNEMONIC(STM, STM, "stm"),
27342 + NORMAL_MNEMONIC(STMTS, STMTS, "stmts"),
27343 + NORMAL_MNEMONIC(STSWP_H, STSWP_H, "stswp.h"),
27344 + NORMAL_MNEMONIC(STSWP_W, STSWP_W, "stswp.w"),
27345 + NORMAL_MNEMONIC(SUB, SUB1, "sub"),
27346 + NORMAL_MNEMONIC(SUBEQ, SUBEQ, "subeq"),
27347 + NORMAL_MNEMONIC(SUBNE, SUBNE, "subne"),
27348 + NORMAL_MNEMONIC(SUBCC, SUBCC, "subcc"),
27349 + NORMAL_MNEMONIC(SUBCS, SUBCS, "subcs"),
27350 + NORMAL_MNEMONIC(SUBGE, SUBGE, "subge"),
27351 + NORMAL_MNEMONIC(SUBLT, SUBLT, "sublt"),
27352 + NORMAL_MNEMONIC(SUBMI, SUBMI, "submi"),
27353 + NORMAL_MNEMONIC(SUBPL, SUBPL, "subpl"),
27354 + NORMAL_MNEMONIC(SUBLS, SUBLS, "subls"),
27355 + NORMAL_MNEMONIC(SUBGT, SUBGT, "subgt"),
27356 + NORMAL_MNEMONIC(SUBLE, SUBLE, "suble"),
27357 + NORMAL_MNEMONIC(SUBHI, SUBHI, "subhi"),
27358 + NORMAL_MNEMONIC(SUBVS, SUBVS, "subvs"),
27359 + NORMAL_MNEMONIC(SUBVC, SUBVC, "subvc"),
27360 + NORMAL_MNEMONIC(SUBQS, SUBQS, "subqs"),
27361 + NORMAL_MNEMONIC(SUBAL, SUBAL, "subal"),
27362 + NORMAL_MNEMONIC(SUBHS, SUBHS, "subhs"),
27363 + NORMAL_MNEMONIC(SUBLO, SUBLO, "sublo"),
27364 + NORMAL_MNEMONIC(SUBFEQ, SUBFEQ, "subfeq"),
27365 + NORMAL_MNEMONIC(SUBFNE, SUBFNE, "subfne"),
27366 + NORMAL_MNEMONIC(SUBFCC, SUBFCC, "subfcc"),
27367 + NORMAL_MNEMONIC(SUBFCS, SUBFCS, "subfcs"),
27368 + NORMAL_MNEMONIC(SUBFGE, SUBFGE, "subfge"),
27369 + NORMAL_MNEMONIC(SUBFLT, SUBFLT, "subflt"),
27370 + NORMAL_MNEMONIC(SUBFMI, SUBFMI, "subfmi"),
27371 + NORMAL_MNEMONIC(SUBFPL, SUBFPL, "subfpl"),
27372 + NORMAL_MNEMONIC(SUBFLS, SUBFLS, "subfls"),
27373 + NORMAL_MNEMONIC(SUBFGT, SUBFGT, "subfgt"),
27374 + NORMAL_MNEMONIC(SUBFLE, SUBFLE, "subfle"),
27375 + NORMAL_MNEMONIC(SUBFHI, SUBFHI, "subfhi"),
27376 + NORMAL_MNEMONIC(SUBFVS, SUBFVS, "subfvs"),
27377 + NORMAL_MNEMONIC(SUBFVC, SUBFVC, "subfvc"),
27378 + NORMAL_MNEMONIC(SUBFQS, SUBFQS, "subfqs"),
27379 + NORMAL_MNEMONIC(SUBFAL, SUBFAL, "subfal"),
27380 + NORMAL_MNEMONIC(SUBFHS, SUBFHS, "subfhs"),
27381 + NORMAL_MNEMONIC(SUBFLO, SUBFLO, "subflo"),
27382 + NORMAL_MNEMONIC(SUBHH_W, SUBHH_W, "subhh.w"),
27383 + NORMAL_MNEMONIC(SWAP_B, SWAP_B, "swap.b"),
27384 + NORMAL_MNEMONIC(SWAP_BH, SWAP_BH, "swap.bh"),
27385 + NORMAL_MNEMONIC(SWAP_H, SWAP_H, "swap.h"),
27386 + NORMAL_MNEMONIC(SYNC, SYNC, "sync"),
27387 + NORMAL_MNEMONIC(TLBR, TLBR, "tlbr"),
27388 + NORMAL_MNEMONIC(TLBS, TLBS, "tlbs"),
27389 + NORMAL_MNEMONIC(TLBW, TLBW, "tlbw"),
27390 + NORMAL_MNEMONIC(TNBZ, TNBZ, "tnbz"),
27391 + NORMAL_MNEMONIC(TST, TST, "tst"),
27392 + NORMAL_MNEMONIC(XCHG, XCHG, "xchg"),
27393 + NORMAL_MNEMONIC(MEMC, MEMC, "memc"),
27394 + NORMAL_MNEMONIC(MEMS, MEMS, "mems"),
27395 + NORMAL_MNEMONIC(MEMT, MEMT, "memt"),
27396 + FP_MNEMONIC(FADD, FADD, "fadd"),
27397 + FP_MNEMONIC(FSUB, FSUB, "fsub"),
27398 + FP_MNEMONIC(FMAC, FMAC, "fmac"),
27399 + FP_MNEMONIC(FNMAC, FNMAC, "fnmac"),
27400 + FP_MNEMONIC(FMSC, FMSC, "fmsc"),
27401 + FP_MNEMONIC(FNMSC, FNMSC, "fnmsc"),
27402 + FP_MNEMONIC(FMUL, FMUL, "fmul"),
27403 + FP_MNEMONIC(FNMUL, FNMUL, "fnmul"),
27404 + FP_MNEMONIC(FNEG, FNEG, "fneg"),
27405 + FP_MNEMONIC(FABS, FABS, "fabs"),
27406 + FP_MNEMONIC(FCMP, FCMP, "fcmp"),
27407 + FP_MNEMONIC(FMOV, FMOV1, "fmov"),
27408 + NORMAL_MNEMONIC(FCASTS_D, FCASTS_D, "fcasts.d"),
27409 + NORMAL_MNEMONIC(FCASTD_S, FCASTD_S, "fcastd.s"),
27410 + NORMAL_MNEMONIC(LDA_W, LDA_W, "lda.w"),
27411 + NORMAL_MNEMONIC(CALL, CALL, "call"),
27412 + NORMAL_MNEMONIC(PICOSVMAC, PICOSVMAC0, "picosvmac"),
27413 + NORMAL_MNEMONIC(PICOSVMUL, PICOSVMUL0, "picosvmul"),
27414 + NORMAL_MNEMONIC(PICOVMAC, PICOVMAC0, "picovmac"),
27415 + NORMAL_MNEMONIC(PICOVMUL, PICOVMUL0, "picovmul"),
27416 + NORMAL_MNEMONIC(PICOLD_D, PICOLD_D2, "picold.d"),
27417 + NORMAL_MNEMONIC(PICOLD_W, PICOLD_W2, "picold.w"),
27418 + NORMAL_MNEMONIC(PICOLDM_D, PICOLDM_D, "picoldm.d"),
27419 + NORMAL_MNEMONIC(PICOLDM_W, PICOLDM_W, "picoldm.w"),
27420 + NORMAL_MNEMONIC(PICOMV_D, PICOMV_D1, "picomv.d"),
27421 + NORMAL_MNEMONIC(PICOMV_W, PICOMV_W1, "picomv.w"),
27422 + NORMAL_MNEMONIC(PICOST_D, PICOST_D2, "picost.d"),
27423 + NORMAL_MNEMONIC(PICOST_W, PICOST_W2, "picost.w"),
27424 + NORMAL_MNEMONIC(PICOSTM_D, PICOSTM_D, "picostm.d"),
27425 + NORMAL_MNEMONIC(PICOSTM_W, PICOSTM_W, "picostm.w"),
27426 + NORMAL_MNEMONIC(RSUBEQ, RSUBEQ, "rsubeq"),
27427 + NORMAL_MNEMONIC(RSUBNE, RSUBNE, "rsubne"),
27428 + NORMAL_MNEMONIC(RSUBCC, RSUBCC, "rsubcc"),
27429 + NORMAL_MNEMONIC(RSUBCS, RSUBCS, "rsubcs"),
27430 + NORMAL_MNEMONIC(RSUBGE, RSUBGE, "rsubge"),
27431 + NORMAL_MNEMONIC(RSUBLT, RSUBLT, "rsublt"),
27432 + NORMAL_MNEMONIC(RSUBMI, RSUBMI, "rsubmi"),
27433 + NORMAL_MNEMONIC(RSUBPL, RSUBPL, "rsubpl"),
27434 + NORMAL_MNEMONIC(RSUBLS, RSUBLS, "rsubls"),
27435 + NORMAL_MNEMONIC(RSUBGT, RSUBGT, "rsubgt"),
27436 + NORMAL_MNEMONIC(RSUBLE, RSUBLE, "rsuble"),
27437 + NORMAL_MNEMONIC(RSUBHI, RSUBHI, "rsubhi"),
27438 + NORMAL_MNEMONIC(RSUBVS, RSUBVS, "rsubvs"),
27439 + NORMAL_MNEMONIC(RSUBVC, RSUBVC, "rsubvc"),
27440 + NORMAL_MNEMONIC(RSUBQS, RSUBQS, "rsubqs"),
27441 + NORMAL_MNEMONIC(RSUBAL, RSUBAL, "rsubal"),
27442 + NORMAL_MNEMONIC(RSUBHS, RSUBHS, "rsubhs"),
27443 + NORMAL_MNEMONIC(RSUBLO, RSUBLO, "rsublo"),
27444 + NORMAL_MNEMONIC(ADDEQ, ADDEQ, "addeq"),
27445 + NORMAL_MNEMONIC(ADDNE, ADDNE, "addne"),
27446 + NORMAL_MNEMONIC(ADDCC, ADDCC, "addcc"),
27447 + NORMAL_MNEMONIC(ADDCS, ADDCS, "addcs"),
27448 + NORMAL_MNEMONIC(ADDGE, ADDGE, "addge"),
27449 + NORMAL_MNEMONIC(ADDLT, ADDLT, "addlt"),
27450 + NORMAL_MNEMONIC(ADDMI, ADDMI, "addmi"),
27451 + NORMAL_MNEMONIC(ADDPL, ADDPL, "addpl"),
27452 + NORMAL_MNEMONIC(ADDLS, ADDLS, "addls"),
27453 + NORMAL_MNEMONIC(ADDGT, ADDGT, "addgt"),
27454 + NORMAL_MNEMONIC(ADDLE, ADDLE, "addle"),
27455 + NORMAL_MNEMONIC(ADDHI, ADDHI, "addhi"),
27456 + NORMAL_MNEMONIC(ADDVS, ADDVS, "addvs"),
27457 + NORMAL_MNEMONIC(ADDVC, ADDVC, "addvc"),
27458 + NORMAL_MNEMONIC(ADDQS, ADDQS, "addqs"),
27459 + NORMAL_MNEMONIC(ADDAL, ADDAL, "addal"),
27460 + NORMAL_MNEMONIC(ADDHS, ADDHS, "addhs"),
27461 + NORMAL_MNEMONIC(ADDLO, ADDLO, "addlo"),
27462 + NORMAL_MNEMONIC(ANDEQ, ANDEQ, "andeq"),
27463 + NORMAL_MNEMONIC(ANDNE, ANDNE, "andne"),
27464 + NORMAL_MNEMONIC(ANDCC, ANDCC, "andcc"),
27465 + NORMAL_MNEMONIC(ANDCS, ANDCS, "andcs"),
27466 + NORMAL_MNEMONIC(ANDGE, ANDGE, "andge"),
27467 + NORMAL_MNEMONIC(ANDLT, ANDLT, "andlt"),
27468 + NORMAL_MNEMONIC(ANDMI, ANDMI, "andmi"),
27469 + NORMAL_MNEMONIC(ANDPL, ANDPL, "andpl"),
27470 + NORMAL_MNEMONIC(ANDLS, ANDLS, "andls"),
27471 + NORMAL_MNEMONIC(ANDGT, ANDGT, "andgt"),
27472 + NORMAL_MNEMONIC(ANDLE, ANDLE, "andle"),
27473 + NORMAL_MNEMONIC(ANDHI, ANDHI, "andhi"),
27474 + NORMAL_MNEMONIC(ANDVS, ANDVS, "andvs"),
27475 + NORMAL_MNEMONIC(ANDVC, ANDVC, "andvc"),
27476 + NORMAL_MNEMONIC(ANDQS, ANDQS, "andqs"),
27477 + NORMAL_MNEMONIC(ANDAL, ANDAL, "andal"),
27478 + NORMAL_MNEMONIC(ANDHS, ANDHS, "andhs"),
27479 + NORMAL_MNEMONIC(ANDLO, ANDLO, "andlo"),
27480 + NORMAL_MNEMONIC(OREQ, OREQ, "oreq"),
27481 + NORMAL_MNEMONIC(ORNE, ORNE, "orne"),
27482 + NORMAL_MNEMONIC(ORCC, ORCC, "orcc"),
27483 + NORMAL_MNEMONIC(ORCS, ORCS, "orcs"),
27484 + NORMAL_MNEMONIC(ORGE, ORGE, "orge"),
27485 + NORMAL_MNEMONIC(ORLT, ORLT, "orlt"),
27486 + NORMAL_MNEMONIC(ORMI, ORMI, "ormi"),
27487 + NORMAL_MNEMONIC(ORPL, ORPL, "orpl"),
27488 + NORMAL_MNEMONIC(ORLS, ORLS, "orls"),
27489 + NORMAL_MNEMONIC(ORGT, ORGT, "orgt"),
27490 + NORMAL_MNEMONIC(ORLE, ORLE, "orle"),
27491 + NORMAL_MNEMONIC(ORHI, ORHI, "orhi"),
27492 + NORMAL_MNEMONIC(ORVS, ORVS, "orvs"),
27493 + NORMAL_MNEMONIC(ORVC, ORVC, "orvc"),
27494 + NORMAL_MNEMONIC(ORQS, ORQS, "orqs"),
27495 + NORMAL_MNEMONIC(ORAL, ORAL, "oral"),
27496 + NORMAL_MNEMONIC(ORHS, ORHS, "orhs"),
27497 + NORMAL_MNEMONIC(ORLO, ORLO, "orlo"),
27498 + NORMAL_MNEMONIC(EOREQ, EOREQ, "eoreq"),
27499 + NORMAL_MNEMONIC(EORNE, EORNE, "eorne"),
27500 + NORMAL_MNEMONIC(EORCC, EORCC, "eorcc"),
27501 + NORMAL_MNEMONIC(EORCS, EORCS, "eorcs"),
27502 + NORMAL_MNEMONIC(EORGE, EORGE, "eorge"),
27503 + NORMAL_MNEMONIC(EORLT, EORLT, "eorlt"),
27504 + NORMAL_MNEMONIC(EORMI, EORMI, "eormi"),
27505 + NORMAL_MNEMONIC(EORPL, EORPL, "eorpl"),
27506 + NORMAL_MNEMONIC(EORLS, EORLS, "eorls"),
27507 + NORMAL_MNEMONIC(EORGT, EORGT, "eorgt"),
27508 + NORMAL_MNEMONIC(EORLE, EORLE, "eorle"),
27509 + NORMAL_MNEMONIC(EORHI, EORHI, "eorhi"),
27510 + NORMAL_MNEMONIC(EORVS, EORVS, "eorvs"),
27511 + NORMAL_MNEMONIC(EORVC, EORVC, "eorvc"),
27512 + NORMAL_MNEMONIC(EORQS, EORQS, "eorqs"),
27513 + NORMAL_MNEMONIC(EORAL, EORAL, "eoral"),
27514 + NORMAL_MNEMONIC(EORHS, EORHS, "eorhs"),
27515 + NORMAL_MNEMONIC(EORLO, EORLO, "eorlo"),
27516 + NORMAL_MNEMONIC(LD_WEQ, LD_WEQ, "ld.weq"),
27517 + NORMAL_MNEMONIC(LD_WNE, LD_WNE, "ld.wne"),
27518 + NORMAL_MNEMONIC(LD_WCC, LD_WCC, "ld.wcc"),
27519 + NORMAL_MNEMONIC(LD_WCS, LD_WCS, "ld.wcs"),
27520 + NORMAL_MNEMONIC(LD_WGE, LD_WGE, "ld.wge"),
27521 + NORMAL_MNEMONIC(LD_WLT, LD_WLT, "ld.wlt"),
27522 + NORMAL_MNEMONIC(LD_WMI, LD_WMI, "ld.wmi"),
27523 + NORMAL_MNEMONIC(LD_WPL, LD_WPL, "ld.wpl"),
27524 + NORMAL_MNEMONIC(LD_WLS, LD_WLS, "ld.wls"),
27525 + NORMAL_MNEMONIC(LD_WGT, LD_WGT, "ld.wgt"),
27526 + NORMAL_MNEMONIC(LD_WLE, LD_WLE, "ld.wle"),
27527 + NORMAL_MNEMONIC(LD_WHI, LD_WHI, "ld.whi"),
27528 + NORMAL_MNEMONIC(LD_WVS, LD_WVS, "ld.wvs"),
27529 + NORMAL_MNEMONIC(LD_WVC, LD_WVC, "ld.wvc"),
27530 + NORMAL_MNEMONIC(LD_WQS, LD_WQS, "ld.wqs"),
27531 + NORMAL_MNEMONIC(LD_WAL, LD_WAL, "ld.wal"),
27532 + NORMAL_MNEMONIC(LD_WHS, LD_WHS, "ld.whs"),
27533 + NORMAL_MNEMONIC(LD_WLO, LD_WLO, "ld.wlo"),
27534 + NORMAL_MNEMONIC(LD_SHEQ, LD_SHEQ, "ld.sheq"),
27535 + NORMAL_MNEMONIC(LD_SHNE, LD_SHNE, "ld.shne"),
27536 + NORMAL_MNEMONIC(LD_SHCC, LD_SHCC, "ld.shcc"),
27537 + NORMAL_MNEMONIC(LD_SHCS, LD_SHCS, "ld.shcs"),
27538 + NORMAL_MNEMONIC(LD_SHGE, LD_SHGE, "ld.shge"),
27539 + NORMAL_MNEMONIC(LD_SHLT, LD_SHLT, "ld.shlt"),
27540 + NORMAL_MNEMONIC(LD_SHMI, LD_SHMI, "ld.shmi"),
27541 + NORMAL_MNEMONIC(LD_SHPL, LD_SHPL, "ld.shpl"),
27542 + NORMAL_MNEMONIC(LD_SHLS, LD_SHLS, "ld.shls"),
27543 + NORMAL_MNEMONIC(LD_SHGT, LD_SHGT, "ld.shgt"),
27544 + NORMAL_MNEMONIC(LD_SHLE, LD_SHLE, "ld.shle"),
27545 + NORMAL_MNEMONIC(LD_SHHI, LD_SHHI, "ld.shhi"),
27546 + NORMAL_MNEMONIC(LD_SHVS, LD_SHVS, "ld.shvs"),
27547 + NORMAL_MNEMONIC(LD_SHVC, LD_SHVC, "ld.shvc"),
27548 + NORMAL_MNEMONIC(LD_SHQS, LD_SHQS, "ld.shqs"),
27549 + NORMAL_MNEMONIC(LD_SHAL, LD_SHAL, "ld.shal"),
27550 + NORMAL_MNEMONIC(LD_SHHS, LD_SHHS, "ld.shhs"),
27551 + NORMAL_MNEMONIC(LD_SHLO, LD_SHLO, "ld.shlo"),
27552 + NORMAL_MNEMONIC(LD_UHEQ, LD_UHEQ, "ld.uheq"),
27553 + NORMAL_MNEMONIC(LD_UHNE, LD_UHNE, "ld.uhne"),
27554 + NORMAL_MNEMONIC(LD_UHCC, LD_UHCC, "ld.uhcc"),
27555 + NORMAL_MNEMONIC(LD_UHCS, LD_UHCS, "ld.uhcs"),
27556 + NORMAL_MNEMONIC(LD_UHGE, LD_UHGE, "ld.uhge"),
27557 + NORMAL_MNEMONIC(LD_UHLT, LD_UHLT, "ld.uhlt"),
27558 + NORMAL_MNEMONIC(LD_UHMI, LD_UHMI, "ld.uhmi"),
27559 + NORMAL_MNEMONIC(LD_UHPL, LD_UHPL, "ld.uhpl"),
27560 + NORMAL_MNEMONIC(LD_UHLS, LD_UHLS, "ld.uhls"),
27561 + NORMAL_MNEMONIC(LD_UHGT, LD_UHGT, "ld.uhgt"),
27562 + NORMAL_MNEMONIC(LD_UHLE, LD_UHLE, "ld.uhle"),
27563 + NORMAL_MNEMONIC(LD_UHHI, LD_UHHI, "ld.uhhi"),
27564 + NORMAL_MNEMONIC(LD_UHVS, LD_UHVS, "ld.uhvs"),
27565 + NORMAL_MNEMONIC(LD_UHVC, LD_UHVC, "ld.uhvc"),
27566 + NORMAL_MNEMONIC(LD_UHQS, LD_UHQS, "ld.uhqs"),
27567 + NORMAL_MNEMONIC(LD_UHAL, LD_UHAL, "ld.uhal"),
27568 + NORMAL_MNEMONIC(LD_UHHS, LD_UHHS, "ld.uhhs"),
27569 + NORMAL_MNEMONIC(LD_UHLO, LD_UHLO, "ld.uhlo"),
27570 + NORMAL_MNEMONIC(LD_SBEQ, LD_SBEQ, "ld.sbeq"),
27571 + NORMAL_MNEMONIC(LD_SBNE, LD_SBNE, "ld.sbne"),
27572 + NORMAL_MNEMONIC(LD_SBCC, LD_SBCC, "ld.sbcc"),
27573 + NORMAL_MNEMONIC(LD_SBCS, LD_SBCS, "ld.sbcs"),
27574 + NORMAL_MNEMONIC(LD_SBGE, LD_SBGE, "ld.sbge"),
27575 + NORMAL_MNEMONIC(LD_SBLT, LD_SBLT, "ld.sblt"),
27576 + NORMAL_MNEMONIC(LD_SBMI, LD_SBMI, "ld.sbmi"),
27577 + NORMAL_MNEMONIC(LD_SBPL, LD_SBPL, "ld.sbpl"),
27578 + NORMAL_MNEMONIC(LD_SBLS, LD_SBLS, "ld.sbls"),
27579 + NORMAL_MNEMONIC(LD_SBGT, LD_SBGT, "ld.sbgt"),
27580 + NORMAL_MNEMONIC(LD_SBLE, LD_SBLE, "ld.sble"),
27581 + NORMAL_MNEMONIC(LD_SBHI, LD_SBHI, "ld.sbhi"),
27582 + NORMAL_MNEMONIC(LD_SBVS, LD_SBVS, "ld.sbvs"),
27583 + NORMAL_MNEMONIC(LD_SBVC, LD_SBVC, "ld.sbvc"),
27584 + NORMAL_MNEMONIC(LD_SBQS, LD_SBQS, "ld.sbqs"),
27585 + NORMAL_MNEMONIC(LD_SBAL, LD_SBAL, "ld.sbal"),
27586 + NORMAL_MNEMONIC(LD_SBHS, LD_SBHS, "ld.sbhs"),
27587 + NORMAL_MNEMONIC(LD_SBLO, LD_SBLO, "ld.sblo"),
27588 + NORMAL_MNEMONIC(LD_UBEQ, LD_UBEQ, "ld.ubeq"),
27589 + NORMAL_MNEMONIC(LD_UBNE, LD_UBNE, "ld.ubne"),
27590 + NORMAL_MNEMONIC(LD_UBCC, LD_UBCC, "ld.ubcc"),
27591 + NORMAL_MNEMONIC(LD_UBCS, LD_UBCS, "ld.ubcs"),
27592 + NORMAL_MNEMONIC(LD_UBGE, LD_UBGE, "ld.ubge"),
27593 + NORMAL_MNEMONIC(LD_UBLT, LD_UBLT, "ld.ublt"),
27594 + NORMAL_MNEMONIC(LD_UBMI, LD_UBMI, "ld.ubmi"),
27595 + NORMAL_MNEMONIC(LD_UBPL, LD_UBPL, "ld.ubpl"),
27596 + NORMAL_MNEMONIC(LD_UBLS, LD_UBLS, "ld.ubls"),
27597 + NORMAL_MNEMONIC(LD_UBGT, LD_UBGT, "ld.ubgt"),
27598 + NORMAL_MNEMONIC(LD_UBLE, LD_UBLE, "ld.uble"),
27599 + NORMAL_MNEMONIC(LD_UBHI, LD_UBHI, "ld.ubhi"),
27600 + NORMAL_MNEMONIC(LD_UBVS, LD_UBVS, "ld.ubvs"),
27601 + NORMAL_MNEMONIC(LD_UBVC, LD_UBVC, "ld.ubvc"),
27602 + NORMAL_MNEMONIC(LD_UBQS, LD_UBQS, "ld.ubqs"),
27603 + NORMAL_MNEMONIC(LD_UBAL, LD_UBAL, "ld.ubal"),
27604 + NORMAL_MNEMONIC(LD_UBHS, LD_UBHS, "ld.ubhs"),
27605 + NORMAL_MNEMONIC(LD_UBLO, LD_UBLO, "ld.ublo"),
27606 + NORMAL_MNEMONIC(ST_WEQ, ST_WEQ, "st.weq"),
27607 + NORMAL_MNEMONIC(ST_WNE, ST_WNE, "st.wne"),
27608 + NORMAL_MNEMONIC(ST_WCC, ST_WCC, "st.wcc"),
27609 + NORMAL_MNEMONIC(ST_WCS, ST_WCS, "st.wcs"),
27610 + NORMAL_MNEMONIC(ST_WGE, ST_WGE, "st.wge"),
27611 + NORMAL_MNEMONIC(ST_WLT, ST_WLT, "st.wlt"),
27612 + NORMAL_MNEMONIC(ST_WMI, ST_WMI, "st.wmi"),
27613 + NORMAL_MNEMONIC(ST_WPL, ST_WPL, "st.wpl"),
27614 + NORMAL_MNEMONIC(ST_WLS, ST_WLS, "st.wls"),
27615 + NORMAL_MNEMONIC(ST_WGT, ST_WGT, "st.wgt"),
27616 + NORMAL_MNEMONIC(ST_WLE, ST_WLE, "st.wle"),
27617 + NORMAL_MNEMONIC(ST_WHI, ST_WHI, "st.whi"),
27618 + NORMAL_MNEMONIC(ST_WVS, ST_WVS, "st.wvs"),
27619 + NORMAL_MNEMONIC(ST_WVC, ST_WVC, "st.wvc"),
27620 + NORMAL_MNEMONIC(ST_WQS, ST_WQS, "st.wqs"),
27621 + NORMAL_MNEMONIC(ST_WAL, ST_WAL, "st.wal"),
27622 + NORMAL_MNEMONIC(ST_WHS, ST_WHS, "st.whs"),
27623 + NORMAL_MNEMONIC(ST_WLO, ST_WLO, "st.wlo"),
27624 + NORMAL_MNEMONIC(ST_HEQ, ST_HEQ, "st.heq"),
27625 + NORMAL_MNEMONIC(ST_HNE, ST_HNE, "st.hne"),
27626 + NORMAL_MNEMONIC(ST_HCC, ST_HCC, "st.hcc"),
27627 + NORMAL_MNEMONIC(ST_HCS, ST_HCS, "st.hcs"),
27628 + NORMAL_MNEMONIC(ST_HGE, ST_HGE, "st.hge"),
27629 + NORMAL_MNEMONIC(ST_HLT, ST_HLT, "st.hlt"),
27630 + NORMAL_MNEMONIC(ST_HMI, ST_HMI, "st.hmi"),
27631 + NORMAL_MNEMONIC(ST_HPL, ST_HPL, "st.hpl"),
27632 + NORMAL_MNEMONIC(ST_HLS, ST_HLS, "st.hls"),
27633 + NORMAL_MNEMONIC(ST_HGT, ST_HGT, "st.hgt"),
27634 + NORMAL_MNEMONIC(ST_HLE, ST_HLE, "st.hle"),
27635 + NORMAL_MNEMONIC(ST_HHI, ST_HHI, "st.hhi"),
27636 + NORMAL_MNEMONIC(ST_HVS, ST_HVS, "st.hvs"),
27637 + NORMAL_MNEMONIC(ST_HVC, ST_HVC, "st.hvc"),
27638 + NORMAL_MNEMONIC(ST_HQS, ST_HQS, "st.hqs"),
27639 + NORMAL_MNEMONIC(ST_HAL, ST_HAL, "st.hal"),
27640 + NORMAL_MNEMONIC(ST_HHS, ST_HHS, "st.hhs"),
27641 + NORMAL_MNEMONIC(ST_HLO, ST_HLO, "st.hlo"),
27642 + NORMAL_MNEMONIC(ST_BEQ, ST_BEQ, "st.beq"),
27643 + NORMAL_MNEMONIC(ST_BNE, ST_BNE, "st.bne"),
27644 + NORMAL_MNEMONIC(ST_BCC, ST_BCC, "st.bcc"),
27645 + NORMAL_MNEMONIC(ST_BCS, ST_BCS, "st.bcs"),
27646 + NORMAL_MNEMONIC(ST_BGE, ST_BGE, "st.bge"),
27647 + NORMAL_MNEMONIC(ST_BLT, ST_BLT, "st.blt"),
27648 + NORMAL_MNEMONIC(ST_BMI, ST_BMI, "st.bmi"),
27649 + NORMAL_MNEMONIC(ST_BPL, ST_BPL, "st.bpl"),
27650 + NORMAL_MNEMONIC(ST_BLS, ST_BLS, "st.bls"),
27651 + NORMAL_MNEMONIC(ST_BGT, ST_BGT, "st.bgt"),
27652 + NORMAL_MNEMONIC(ST_BLE, ST_BLE, "st.ble"),
27653 + NORMAL_MNEMONIC(ST_BHI, ST_BHI, "st.bhi"),
27654 + NORMAL_MNEMONIC(ST_BVS, ST_BVS, "st.bvs"),
27655 + NORMAL_MNEMONIC(ST_BVC, ST_BVC, "st.bvc"),
27656 + NORMAL_MNEMONIC(ST_BQS, ST_BQS, "st.bqs"),
27657 + NORMAL_MNEMONIC(ST_BAL, ST_BAL, "st.bal"),
27658 + NORMAL_MNEMONIC(ST_BHS, ST_BHS, "st.bhs"),
27659 + NORMAL_MNEMONIC(ST_BLO, ST_BLO, "st.blo"),
27660 + NORMAL_MNEMONIC(MOVH, MOVH, "movh"),
27661 +
27662 + };
27663 +#undef NORMAL_MNEMONIC
27664 +#undef ALIAS_MNEMONIC
27665 +#undef FP_MNEMONIC
27666 --- /dev/null
27667 +++ b/opcodes/avr32-opc.h
27668 @@ -0,0 +1,2370 @@
27669 +/* Opcode tables for AVR32.
27670 + Copyright 2005, 2006 Atmel Corporation.
27671 +
27672 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
27673 +
27674 + This file is part of libopcodes.
27675 +
27676 + This program is free software; you can redistribute it and/or
27677 + modify it under the terms of the GNU General Public License as
27678 + published by the Free Software Foundation; either version 2 of the
27679 + License, or (at your option) any later version.
27680 +
27681 + This program is distributed in the hope that it will be useful, but
27682 + WITHOUT ANY WARRANTY; without even the implied warranty of
27683 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
27684 + General Public License for more details.
27685 +
27686 + You should have received a copy of the GNU General Public License
27687 + along with this program; if not, write to the Free Software
27688 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
27689 + 02111-1307, USA. */
27690 +
27691 +#include "bfd.h"
27692 +
27693 +#define AVR32_MAX_OPERANDS 8
27694 +#define AVR32_MAX_FIELDS 8
27695 +
27696 +#define AVR32_V1 (1 << 1)
27697 +#define AVR32_SIMD (1 << 2)
27698 +#define AVR32_DSP (1 << 3)
27699 +#define AVR32_RMW (1 << 4)
27700 +#define AVR32_V2 (1 << 5)
27701 +#define AVR32_FP (1 << 16)
27702 +#define AVR32_PICO (1 << 17)
27703 +
27704 +/* Registers we commonly refer to */
27705 +#define AVR32_REG_R12 12
27706 +#define AVR32_REG_SP 13
27707 +#define AVR32_REG_LR 14
27708 +#define AVR32_REG_PC 15
27709 +
27710 +struct avr32_ifield
27711 +{
27712 + int id;
27713 + unsigned short bitsize;
27714 + unsigned short shift;
27715 + unsigned long mask;
27716 +
27717 + /* If the value doesn't fit, it will be truncated with no warning */
27718 + void (*insert)(const struct avr32_ifield *, void *, unsigned long);
27719 + void (*extract)(const struct avr32_ifield *, void *, unsigned long *);
27720 +};
27721 +
27722 +struct avr32_opcode
27723 +{
27724 + int id;
27725 + int size;
27726 + unsigned long value;
27727 + unsigned long mask;
27728 + const struct avr32_syntax *syntax;
27729 + bfd_reloc_code_real_type reloc_type;
27730 + unsigned int nr_fields;
27731 + /* if relaxable, which field is variable, otherwise -1 */
27732 + int var_field;
27733 + const struct avr32_ifield *fields[AVR32_MAX_FIELDS];
27734 +};
27735 +
27736 +struct avr32_alias
27737 +{
27738 + int id;
27739 + const struct avr32_opcode *opc;
27740 + struct {
27741 + int is_opindex;
27742 + unsigned long value;
27743 + } operand_map[AVR32_MAX_OPERANDS];
27744 +};
27745 +
27746 +struct avr32_syntax
27747 +{
27748 + int id;
27749 + unsigned long isa_flags;
27750 + const struct avr32_mnemonic *mnemonic;
27751 + int type;
27752 + union {
27753 + const struct avr32_opcode *opc;
27754 + const struct avr32_alias *alias;
27755 + } u;
27756 + const struct avr32_syntax *next;
27757 + /* negative means "vararg" */
27758 + int nr_operands;
27759 + int operand[AVR32_MAX_OPERANDS];
27760 +};
27761 +
27762 +#if 0
27763 +#define AVR32_ALIAS_MAKE_CONST(val) ((val) | 0x80000000UL)
27764 +#define AVR32_ALIAS_IS_CONST(mapval) (((mapval) & 0x80000000UL) != 0)
27765 +#define AVR32_ALIAS_GET_CONST(mapval) ((mapval) & ~0x80000000UL)
27766 +#endif
27767 +
27768 +struct avr32_mnemonic
27769 +{
27770 + int id;
27771 + const char *name;
27772 + const struct avr32_syntax *syntax;
27773 +};
27774 +
27775 +extern const struct avr32_ifield avr32_ifield_table[];
27776 +extern struct avr32_opcode avr32_opc_table[];
27777 +extern const struct avr32_syntax avr32_syntax_table[];
27778 +extern const struct avr32_alias avr32_alias_table[];
27779 +extern const struct avr32_mnemonic avr32_mnemonic_table[];
27780 +
27781 +extern void avr32_insert_simple(const struct avr32_ifield *field,
27782 + void *buf, unsigned long value);
27783 +extern void avr32_insert_bit5c(const struct avr32_ifield *field,
27784 + void *buf, unsigned long value);
27785 +extern void avr32_insert_k10(const struct avr32_ifield *field,
27786 + void *buf, unsigned long value);
27787 +extern void avr32_insert_k21(const struct avr32_ifield *field,
27788 + void *buf, unsigned long value);
27789 +extern void avr32_insert_cpop(const struct avr32_ifield *field,
27790 + void *buf, unsigned long value);
27791 +extern void avr32_insert_k12cp(const struct avr32_ifield *field,
27792 + void *buf, unsigned long value);
27793 +
27794 +extern void avr32_extract_simple(const struct avr32_ifield *field,
27795 + void *buf, unsigned long *value);
27796 +extern void avr32_extract_bit5c(const struct avr32_ifield *field,
27797 + void *buf, unsigned long *value);
27798 +extern void avr32_extract_k10(const struct avr32_ifield *field,
27799 + void *buf, unsigned long *value);
27800 +extern void avr32_extract_k21(const struct avr32_ifield *field,
27801 + void *buf, unsigned long *value);
27802 +extern void avr32_extract_cpop(const struct avr32_ifield *field,
27803 + void *buf, unsigned long *value);
27804 +extern void avr32_extract_k12cp(const struct avr32_ifield *field,
27805 + void *buf, unsigned long *value);
27806 +
27807 +enum avr32_operand_type
27808 +{
27809 + AVR32_OPERAND_INTREG, /* just a register */
27810 + AVR32_OPERAND_INTREG_PREDEC, /* register with pre-decrement */
27811 + AVR32_OPERAND_INTREG_POSTINC, /* register with post-increment */
27812 + AVR32_OPERAND_INTREG_LSL, /* register with left shift */
27813 + AVR32_OPERAND_INTREG_LSR, /* register with right shift */
27814 + AVR32_OPERAND_INTREG_BSEL, /* register with byte selector */
27815 + AVR32_OPERAND_INTREG_HSEL, /* register with halfword selector */
27816 + AVR32_OPERAND_INTREG_SDISP, /* Rp[signed disp] */
27817 + AVR32_OPERAND_INTREG_SDISP_H, /* Rp[signed hword-aligned disp] */
27818 + AVR32_OPERAND_INTREG_SDISP_W, /* Rp[signed word-aligned disp] */
27819 + AVR32_OPERAND_INTREG_UDISP, /* Rp[unsigned disp] */
27820 + AVR32_OPERAND_INTREG_UDISP_H, /* Rp[unsigned hword-aligned disp] */
27821 + AVR32_OPERAND_INTREG_UDISP_W, /* Rp[unsigned word-aligned disp] */
27822 + AVR32_OPERAND_INTREG_INDEX, /* Rp[Ri << sa] */
27823 + AVR32_OPERAND_INTREG_XINDEX, /* Rp[Ri:bytesel << 2] */
27824 + AVR32_OPERAND_DWREG, /* Even-numbered register */
27825 + AVR32_OPERAND_PC_UDISP_W, /* PC[unsigned word-aligned disp] or label */
27826 + AVR32_OPERAND_SP, /* Just SP */
27827 + AVR32_OPERAND_SP_UDISP_W, /* SP[unsigned word-aligned disp] */
27828 + AVR32_OPERAND_CPNO,
27829 + AVR32_OPERAND_CPREG,
27830 + AVR32_OPERAND_CPREG_D,
27831 + AVR32_OPERAND_UNSIGNED_CONST,
27832 + AVR32_OPERAND_UNSIGNED_CONST_W,
27833 + AVR32_OPERAND_SIGNED_CONST,
27834 + AVR32_OPERAND_SIGNED_CONST_W,
27835 + AVR32_OPERAND_JMPLABEL,
27836 + AVR32_OPERAND_UNSIGNED_NUMBER,
27837 + AVR32_OPERAND_UNSIGNED_NUMBER_W,
27838 + AVR32_OPERAND_REGLIST8,
27839 + AVR32_OPERAND_REGLIST9,
27840 + AVR32_OPERAND_REGLIST16,
27841 + AVR32_OPERAND_REGLIST_LDM,
27842 + AVR32_OPERAND_REGLIST_CP8,
27843 + AVR32_OPERAND_REGLIST_CPD8,
27844 + AVR32_OPERAND_RETVAL,
27845 + AVR32_OPERAND_MCALL,
27846 + AVR32_OPERAND_JOSPINC,
27847 + AVR32_OPERAND_COH,
27848 + AVR32_OPERAND_FPREG_S,
27849 + AVR32_OPERAND_FPREG_D,
27850 + AVR32_OPERAND_PICO_REG_W,
27851 + AVR32_OPERAND_PICO_REG_D,
27852 + AVR32_OPERAND_PICO_REGLIST_W,
27853 + AVR32_OPERAND_PICO_REGLIST_D,
27854 + AVR32_OPERAND_PICO_IN,
27855 + AVR32_OPERAND_PICO_OUT0,
27856 + AVR32_OPERAND_PICO_OUT1,
27857 + AVR32_OPERAND_PICO_OUT2,
27858 + AVR32_OPERAND_PICO_OUT3,
27859 + AVR32_OPERAND__END_
27860 +};
27861 +#define AVR32_OPERAND_UNKNOWN AVR32_OPERAND__END_
27862 +#define AVR32_NR_OPERANDS AVR32_OPERAND__END_
27863 +
27864 +enum avr32_ifield_type
27865 +{
27866 + AVR32_IFIELD_RX,
27867 + AVR32_IFIELD_RY,
27868 + AVR32_IFIELD_COND4C,
27869 + AVR32_IFIELD_K8C,
27870 + AVR32_IFIELD_K7C,
27871 + AVR32_IFIELD_K5C,
27872 + AVR32_IFIELD_K3,
27873 + AVR32_IFIELD_RY_DW,
27874 + AVR32_IFIELD_COND4E,
27875 + AVR32_IFIELD_K8E,
27876 + AVR32_IFIELD_BIT5C,
27877 + AVR32_IFIELD_COND3,
27878 + AVR32_IFIELD_K10,
27879 + AVR32_IFIELD_POPM,
27880 + AVR32_IFIELD_K2,
27881 + AVR32_IFIELD_RD_E,
27882 + AVR32_IFIELD_RD_DW,
27883 + AVR32_IFIELD_X,
27884 + AVR32_IFIELD_Y,
27885 + AVR32_IFIELD_X2,
27886 + AVR32_IFIELD_Y2,
27887 + AVR32_IFIELD_K5E,
27888 + AVR32_IFIELD_PART2,
27889 + AVR32_IFIELD_PART1,
27890 + AVR32_IFIELD_K16,
27891 + AVR32_IFIELD_CACHEOP,
27892 + AVR32_IFIELD_K11,
27893 + AVR32_IFIELD_K21,
27894 + AVR32_IFIELD_CPOP,
27895 + AVR32_IFIELD_CPNO,
27896 + AVR32_IFIELD_CRD_RI,
27897 + AVR32_IFIELD_CRX,
27898 + AVR32_IFIELD_CRY,
27899 + AVR32_IFIELD_K7E,
27900 + AVR32_IFIELD_CRD_DW,
27901 + AVR32_IFIELD_PART1_K12,
27902 + AVR32_IFIELD_PART2_K12,
27903 + AVR32_IFIELD_K12,
27904 + AVR32_IFIELD_S5,
27905 + AVR32_IFIELD_K5E2,
27906 + AVR32_IFIELD_K4,
27907 + AVR32_IFIELD_COND4E2,
27908 + AVR32_IFIELD_K8E2,
27909 + AVR32_IFIELD_K6,
27910 + AVR32_IFIELD_MEM15,
27911 + AVR32_IFIELD_MEMB5,
27912 + AVR32_IFIELD_W,
27913 + AVR32_IFIELD_CM_HL,
27914 + AVR32_IFIELD_K12CP,
27915 + AVR32_IFIELD_K9E,
27916 + AVR32_IFIELD__END_,
27917 +};
27918 +#define AVR32_NR_IFIELDS AVR32_IFIELD__END_
27919 +
27920 +enum avr32_opc_type
27921 +{
27922 + AVR32_OPC_ABS,
27923 + AVR32_OPC_ACALL,
27924 + AVR32_OPC_ACR,
27925 + AVR32_OPC_ADC,
27926 + AVR32_OPC_ADD1,
27927 + AVR32_OPC_ADD2,
27928 + AVR32_OPC_ADDABS,
27929 + AVR32_OPC_ADDHH_W,
27930 + AVR32_OPC_AND1,
27931 + AVR32_OPC_AND2,
27932 + AVR32_OPC_AND3,
27933 + AVR32_OPC_ANDH,
27934 + AVR32_OPC_ANDH_COH,
27935 + AVR32_OPC_ANDL,
27936 + AVR32_OPC_ANDL_COH,
27937 + AVR32_OPC_ANDN,
27938 + AVR32_OPC_ASR1,
27939 + AVR32_OPC_ASR3,
27940 + AVR32_OPC_ASR2,
27941 + AVR32_OPC_BLD,
27942 + AVR32_OPC_BREQ1,
27943 + AVR32_OPC_BRNE1,
27944 + AVR32_OPC_BRCC1,
27945 + AVR32_OPC_BRCS1,
27946 + AVR32_OPC_BRGE1,
27947 + AVR32_OPC_BRLT1,
27948 + AVR32_OPC_BRMI1,
27949 + AVR32_OPC_BRPL1,
27950 + AVR32_OPC_BREQ2,
27951 + AVR32_OPC_BRNE2,
27952 + AVR32_OPC_BRCC2,
27953 + AVR32_OPC_BRCS2,
27954 + AVR32_OPC_BRGE2,
27955 + AVR32_OPC_BRLT2,
27956 + AVR32_OPC_BRMI2,
27957 + AVR32_OPC_BRPL2,
27958 + AVR32_OPC_BRLS,
27959 + AVR32_OPC_BRGT,
27960 + AVR32_OPC_BRLE,
27961 + AVR32_OPC_BRHI,
27962 + AVR32_OPC_BRVS,
27963 + AVR32_OPC_BRVC,
27964 + AVR32_OPC_BRQS,
27965 + AVR32_OPC_BRAL,
27966 + AVR32_OPC_BREAKPOINT,
27967 + AVR32_OPC_BREV,
27968 + AVR32_OPC_BST,
27969 + AVR32_OPC_CACHE,
27970 + AVR32_OPC_CASTS_B,
27971 + AVR32_OPC_CASTS_H,
27972 + AVR32_OPC_CASTU_B,
27973 + AVR32_OPC_CASTU_H,
27974 + AVR32_OPC_CBR,
27975 + AVR32_OPC_CLZ,
27976 + AVR32_OPC_COM,
27977 + AVR32_OPC_COP,
27978 + AVR32_OPC_CP_B,
27979 + AVR32_OPC_CP_H,
27980 + AVR32_OPC_CP_W1,
27981 + AVR32_OPC_CP_W2,
27982 + AVR32_OPC_CP_W3,
27983 + AVR32_OPC_CPC1,
27984 + AVR32_OPC_CPC2,
27985 + AVR32_OPC_CSRF,
27986 + AVR32_OPC_CSRFCZ,
27987 + AVR32_OPC_DIVS,
27988 + AVR32_OPC_DIVU,
27989 + AVR32_OPC_EOR1,
27990 + AVR32_OPC_EOR2,
27991 + AVR32_OPC_EOR3,
27992 + AVR32_OPC_EORL,
27993 + AVR32_OPC_EORH,
27994 + AVR32_OPC_FRS,
27995 + AVR32_OPC_ICALL,
27996 + AVR32_OPC_INCJOSP,
27997 + AVR32_OPC_LD_D1,
27998 + AVR32_OPC_LD_D2,
27999 + AVR32_OPC_LD_D3,
28000 + AVR32_OPC_LD_D5,
28001 + AVR32_OPC_LD_D4,
28002 + AVR32_OPC_LD_SB2,
28003 + AVR32_OPC_LD_SB1,
28004 + AVR32_OPC_LD_UB1,
28005 + AVR32_OPC_LD_UB2,
28006 + AVR32_OPC_LD_UB5,
28007 + AVR32_OPC_LD_UB3,
28008 + AVR32_OPC_LD_UB4,
28009 + AVR32_OPC_LD_SH1,
28010 + AVR32_OPC_LD_SH2,
28011 + AVR32_OPC_LD_SH5,
28012 + AVR32_OPC_LD_SH3,
28013 + AVR32_OPC_LD_SH4,
28014 + AVR32_OPC_LD_UH1,
28015 + AVR32_OPC_LD_UH2,
28016 + AVR32_OPC_LD_UH5,
28017 + AVR32_OPC_LD_UH3,
28018 + AVR32_OPC_LD_UH4,
28019 + AVR32_OPC_LD_W1,
28020 + AVR32_OPC_LD_W2,
28021 + AVR32_OPC_LD_W5,
28022 + AVR32_OPC_LD_W6,
28023 + AVR32_OPC_LD_W3,
28024 + AVR32_OPC_LD_W4,
28025 + AVR32_OPC_LDC_D1,
28026 + AVR32_OPC_LDC_D2,
28027 + AVR32_OPC_LDC_D3,
28028 + AVR32_OPC_LDC_W1,
28029 + AVR32_OPC_LDC_W2,
28030 + AVR32_OPC_LDC_W3,
28031 + AVR32_OPC_LDC0_D,
28032 + AVR32_OPC_LDC0_W,
28033 + AVR32_OPC_LDCM_D,
28034 + AVR32_OPC_LDCM_D_PU,
28035 + AVR32_OPC_LDCM_W,
28036 + AVR32_OPC_LDCM_W_PU,
28037 + AVR32_OPC_LDDPC,
28038 + AVR32_OPC_LDDPC_EXT,
28039 + AVR32_OPC_LDDSP,
28040 + AVR32_OPC_LDINS_B,
28041 + AVR32_OPC_LDINS_H,
28042 + AVR32_OPC_LDM,
28043 + AVR32_OPC_LDMTS,
28044 + AVR32_OPC_LDMTS_PU,
28045 + AVR32_OPC_LDSWP_SH,
28046 + AVR32_OPC_LDSWP_UH,
28047 + AVR32_OPC_LDSWP_W,
28048 + AVR32_OPC_LSL1,
28049 + AVR32_OPC_LSL3,
28050 + AVR32_OPC_LSL2,
28051 + AVR32_OPC_LSR1,
28052 + AVR32_OPC_LSR3,
28053 + AVR32_OPC_LSR2,
28054 + AVR32_OPC_MAC,
28055 + AVR32_OPC_MACHH_D,
28056 + AVR32_OPC_MACHH_W,
28057 + AVR32_OPC_MACS_D,
28058 + AVR32_OPC_MACSATHH_W,
28059 + AVR32_OPC_MACUD,
28060 + AVR32_OPC_MACWH_D,
28061 + AVR32_OPC_MAX,
28062 + AVR32_OPC_MCALL,
28063 + AVR32_OPC_MFDR,
28064 + AVR32_OPC_MFSR,
28065 + AVR32_OPC_MIN,
28066 + AVR32_OPC_MOV3,
28067 + AVR32_OPC_MOV1,
28068 + AVR32_OPC_MOV2,
28069 + AVR32_OPC_MOVEQ1,
28070 + AVR32_OPC_MOVNE1,
28071 + AVR32_OPC_MOVCC1,
28072 + AVR32_OPC_MOVCS1,
28073 + AVR32_OPC_MOVGE1,
28074 + AVR32_OPC_MOVLT1,
28075 + AVR32_OPC_MOVMI1,
28076 + AVR32_OPC_MOVPL1,
28077 + AVR32_OPC_MOVLS1,
28078 + AVR32_OPC_MOVGT1,
28079 + AVR32_OPC_MOVLE1,
28080 + AVR32_OPC_MOVHI1,
28081 + AVR32_OPC_MOVVS1,
28082 + AVR32_OPC_MOVVC1,
28083 + AVR32_OPC_MOVQS1,
28084 + AVR32_OPC_MOVAL1,
28085 + AVR32_OPC_MOVEQ2,
28086 + AVR32_OPC_MOVNE2,
28087 + AVR32_OPC_MOVCC2,
28088 + AVR32_OPC_MOVCS2,
28089 + AVR32_OPC_MOVGE2,
28090 + AVR32_OPC_MOVLT2,
28091 + AVR32_OPC_MOVMI2,
28092 + AVR32_OPC_MOVPL2,
28093 + AVR32_OPC_MOVLS2,
28094 + AVR32_OPC_MOVGT2,
28095 + AVR32_OPC_MOVLE2,
28096 + AVR32_OPC_MOVHI2,
28097 + AVR32_OPC_MOVVS2,
28098 + AVR32_OPC_MOVVC2,
28099 + AVR32_OPC_MOVQS2,
28100 + AVR32_OPC_MOVAL2,
28101 + AVR32_OPC_MTDR,
28102 + AVR32_OPC_MTSR,
28103 + AVR32_OPC_MUL1,
28104 + AVR32_OPC_MUL2,
28105 + AVR32_OPC_MUL3,
28106 + AVR32_OPC_MULHH_W,
28107 + AVR32_OPC_MULNHH_W,
28108 + AVR32_OPC_MULNWH_D,
28109 + AVR32_OPC_MULSD,
28110 + AVR32_OPC_MULSATHH_H,
28111 + AVR32_OPC_MULSATHH_W,
28112 + AVR32_OPC_MULSATRNDHH_H,
28113 + AVR32_OPC_MULSATRNDWH_W,
28114 + AVR32_OPC_MULSATWH_W,
28115 + AVR32_OPC_MULU_D,
28116 + AVR32_OPC_MULWH_D,
28117 + AVR32_OPC_MUSFR,
28118 + AVR32_OPC_MUSTR,
28119 + AVR32_OPC_MVCR_D,
28120 + AVR32_OPC_MVCR_W,
28121 + AVR32_OPC_MVRC_D,
28122 + AVR32_OPC_MVRC_W,
28123 + AVR32_OPC_NEG,
28124 + AVR32_OPC_NOP,
28125 + AVR32_OPC_OR1,
28126 + AVR32_OPC_OR2,
28127 + AVR32_OPC_OR3,
28128 + AVR32_OPC_ORH,
28129 + AVR32_OPC_ORL,
28130 + AVR32_OPC_PABS_SB,
28131 + AVR32_OPC_PABS_SH,
28132 + AVR32_OPC_PACKSH_SB,
28133 + AVR32_OPC_PACKSH_UB,
28134 + AVR32_OPC_PACKW_SH,
28135 + AVR32_OPC_PADD_B,
28136 + AVR32_OPC_PADD_H,
28137 + AVR32_OPC_PADDH_SH,
28138 + AVR32_OPC_PADDH_UB,
28139 + AVR32_OPC_PADDS_SB,
28140 + AVR32_OPC_PADDS_SH,
28141 + AVR32_OPC_PADDS_UB,
28142 + AVR32_OPC_PADDS_UH,
28143 + AVR32_OPC_PADDSUB_H,
28144 + AVR32_OPC_PADDSUBH_SH,
28145 + AVR32_OPC_PADDSUBS_SH,
28146 + AVR32_OPC_PADDSUBS_UH,
28147 + AVR32_OPC_PADDX_H,
28148 + AVR32_OPC_PADDXH_SH,
28149 + AVR32_OPC_PADDXS_SH,
28150 + AVR32_OPC_PADDXS_UH,
28151 + AVR32_OPC_PASR_B,
28152 + AVR32_OPC_PASR_H,
28153 + AVR32_OPC_PAVG_SH,
28154 + AVR32_OPC_PAVG_UB,
28155 + AVR32_OPC_PLSL_B,
28156 + AVR32_OPC_PLSL_H,
28157 + AVR32_OPC_PLSR_B,
28158 + AVR32_OPC_PLSR_H,
28159 + AVR32_OPC_PMAX_SH,
28160 + AVR32_OPC_PMAX_UB,
28161 + AVR32_OPC_PMIN_SH,
28162 + AVR32_OPC_PMIN_UB,
28163 + AVR32_OPC_POPJC,
28164 + AVR32_OPC_POPM,
28165 + AVR32_OPC_POPM_E,
28166 + AVR32_OPC_PREF,
28167 + AVR32_OPC_PSAD,
28168 + AVR32_OPC_PSUB_B,
28169 + AVR32_OPC_PSUB_H,
28170 + AVR32_OPC_PSUBADD_H,
28171 + AVR32_OPC_PSUBADDH_SH,
28172 + AVR32_OPC_PSUBADDS_SH,
28173 + AVR32_OPC_PSUBADDS_UH,
28174 + AVR32_OPC_PSUBH_SH,
28175 + AVR32_OPC_PSUBH_UB,
28176 + AVR32_OPC_PSUBS_SB,
28177 + AVR32_OPC_PSUBS_SH,
28178 + AVR32_OPC_PSUBS_UB,
28179 + AVR32_OPC_PSUBS_UH,
28180 + AVR32_OPC_PSUBX_H,
28181 + AVR32_OPC_PSUBXH_SH,
28182 + AVR32_OPC_PSUBXS_SH,
28183 + AVR32_OPC_PSUBXS_UH,
28184 + AVR32_OPC_PUNPCKSB_H,
28185 + AVR32_OPC_PUNPCKUB_H,
28186 + AVR32_OPC_PUSHJC,
28187 + AVR32_OPC_PUSHM,
28188 + AVR32_OPC_PUSHM_E,
28189 + AVR32_OPC_RCALL1,
28190 + AVR32_OPC_RCALL2,
28191 + AVR32_OPC_RETEQ,
28192 + AVR32_OPC_RETNE,
28193 + AVR32_OPC_RETCC,
28194 + AVR32_OPC_RETCS,
28195 + AVR32_OPC_RETGE,
28196 + AVR32_OPC_RETLT,
28197 + AVR32_OPC_RETMI,
28198 + AVR32_OPC_RETPL,
28199 + AVR32_OPC_RETLS,
28200 + AVR32_OPC_RETGT,
28201 + AVR32_OPC_RETLE,
28202 + AVR32_OPC_RETHI,
28203 + AVR32_OPC_RETVS,
28204 + AVR32_OPC_RETVC,
28205 + AVR32_OPC_RETQS,
28206 + AVR32_OPC_RETAL,
28207 + AVR32_OPC_RETD,
28208 + AVR32_OPC_RETE,
28209 + AVR32_OPC_RETJ,
28210 + AVR32_OPC_RETS,
28211 + AVR32_OPC_RJMP,
28212 + AVR32_OPC_ROL,
28213 + AVR32_OPC_ROR,
28214 + AVR32_OPC_RSUB1,
28215 + AVR32_OPC_RSUB2,
28216 + AVR32_OPC_SATADD_H,
28217 + AVR32_OPC_SATADD_W,
28218 + AVR32_OPC_SATRNDS,
28219 + AVR32_OPC_SATRNDU,
28220 + AVR32_OPC_SATS,
28221 + AVR32_OPC_SATSUB_H,
28222 + AVR32_OPC_SATSUB_W1,
28223 + AVR32_OPC_SATSUB_W2,
28224 + AVR32_OPC_SATU,
28225 + AVR32_OPC_SBC,
28226 + AVR32_OPC_SBR,
28227 + AVR32_OPC_SCALL,
28228 + AVR32_OPC_SCR,
28229 + AVR32_OPC_SLEEP,
28230 + AVR32_OPC_SREQ,
28231 + AVR32_OPC_SRNE,
28232 + AVR32_OPC_SRCC,
28233 + AVR32_OPC_SRCS,
28234 + AVR32_OPC_SRGE,
28235 + AVR32_OPC_SRLT,
28236 + AVR32_OPC_SRMI,
28237 + AVR32_OPC_SRPL,
28238 + AVR32_OPC_SRLS,
28239 + AVR32_OPC_SRGT,
28240 + AVR32_OPC_SRLE,
28241 + AVR32_OPC_SRHI,
28242 + AVR32_OPC_SRVS,
28243 + AVR32_OPC_SRVC,
28244 + AVR32_OPC_SRQS,
28245 + AVR32_OPC_SRAL,
28246 + AVR32_OPC_SSRF,
28247 + AVR32_OPC_ST_B1,
28248 + AVR32_OPC_ST_B2,
28249 + AVR32_OPC_ST_B5,
28250 + AVR32_OPC_ST_B3,
28251 + AVR32_OPC_ST_B4,
28252 + AVR32_OPC_ST_D1,
28253 + AVR32_OPC_ST_D2,
28254 + AVR32_OPC_ST_D3,
28255 + AVR32_OPC_ST_D5,
28256 + AVR32_OPC_ST_D4,
28257 + AVR32_OPC_ST_H1,
28258 + AVR32_OPC_ST_H2,
28259 + AVR32_OPC_ST_H5,
28260 + AVR32_OPC_ST_H3,
28261 + AVR32_OPC_ST_H4,
28262 + AVR32_OPC_ST_W1,
28263 + AVR32_OPC_ST_W2,
28264 + AVR32_OPC_ST_W5,
28265 + AVR32_OPC_ST_W3,
28266 + AVR32_OPC_ST_W4,
28267 + AVR32_OPC_STC_D1,
28268 + AVR32_OPC_STC_D2,
28269 + AVR32_OPC_STC_D3,
28270 + AVR32_OPC_STC_W1,
28271 + AVR32_OPC_STC_W2,
28272 + AVR32_OPC_STC_W3,
28273 + AVR32_OPC_STC0_D,
28274 + AVR32_OPC_STC0_W,
28275 + AVR32_OPC_STCM_D,
28276 + AVR32_OPC_STCM_D_PU,
28277 + AVR32_OPC_STCM_W,
28278 + AVR32_OPC_STCM_W_PU,
28279 + AVR32_OPC_STCOND,
28280 + AVR32_OPC_STDSP,
28281 + AVR32_OPC_STHH_W2,
28282 + AVR32_OPC_STHH_W1,
28283 + AVR32_OPC_STM,
28284 + AVR32_OPC_STM_PU,
28285 + AVR32_OPC_STMTS,
28286 + AVR32_OPC_STMTS_PU,
28287 + AVR32_OPC_STSWP_H,
28288 + AVR32_OPC_STSWP_W,
28289 + AVR32_OPC_SUB1,
28290 + AVR32_OPC_SUB2,
28291 + AVR32_OPC_SUB5,
28292 + AVR32_OPC_SUB3_SP,
28293 + AVR32_OPC_SUB3,
28294 + AVR32_OPC_SUB4,
28295 + AVR32_OPC_SUBEQ,
28296 + AVR32_OPC_SUBNE,
28297 + AVR32_OPC_SUBCC,
28298 + AVR32_OPC_SUBCS,
28299 + AVR32_OPC_SUBGE,
28300 + AVR32_OPC_SUBLT,
28301 + AVR32_OPC_SUBMI,
28302 + AVR32_OPC_SUBPL,
28303 + AVR32_OPC_SUBLS,
28304 + AVR32_OPC_SUBGT,
28305 + AVR32_OPC_SUBLE,
28306 + AVR32_OPC_SUBHI,
28307 + AVR32_OPC_SUBVS,
28308 + AVR32_OPC_SUBVC,
28309 + AVR32_OPC_SUBQS,
28310 + AVR32_OPC_SUBAL,
28311 + AVR32_OPC_SUBFEQ,
28312 + AVR32_OPC_SUBFNE,
28313 + AVR32_OPC_SUBFCC,
28314 + AVR32_OPC_SUBFCS,
28315 + AVR32_OPC_SUBFGE,
28316 + AVR32_OPC_SUBFLT,
28317 + AVR32_OPC_SUBFMI,
28318 + AVR32_OPC_SUBFPL,
28319 + AVR32_OPC_SUBFLS,
28320 + AVR32_OPC_SUBFGT,
28321 + AVR32_OPC_SUBFLE,
28322 + AVR32_OPC_SUBFHI,
28323 + AVR32_OPC_SUBFVS,
28324 + AVR32_OPC_SUBFVC,
28325 + AVR32_OPC_SUBFQS,
28326 + AVR32_OPC_SUBFAL,
28327 + AVR32_OPC_SUBHH_W,
28328 + AVR32_OPC_SWAP_B,
28329 + AVR32_OPC_SWAP_BH,
28330 + AVR32_OPC_SWAP_H,
28331 + AVR32_OPC_SYNC,
28332 + AVR32_OPC_TLBR,
28333 + AVR32_OPC_TLBS,
28334 + AVR32_OPC_TLBW,
28335 + AVR32_OPC_TNBZ,
28336 + AVR32_OPC_TST,
28337 + AVR32_OPC_XCHG,
28338 + AVR32_OPC_MEMC,
28339 + AVR32_OPC_MEMS,
28340 + AVR32_OPC_MEMT,
28341 + AVR32_OPC_BFEXTS,
28342 + AVR32_OPC_BFEXTU,
28343 + AVR32_OPC_BFINS,
28344 + AVR32_OPC_RSUBEQ,
28345 + AVR32_OPC_RSUBNE,
28346 + AVR32_OPC_RSUBCC,
28347 + AVR32_OPC_RSUBCS,
28348 + AVR32_OPC_RSUBGE,
28349 + AVR32_OPC_RSUBLT,
28350 + AVR32_OPC_RSUBMI,
28351 + AVR32_OPC_RSUBPL,
28352 + AVR32_OPC_RSUBLS,
28353 + AVR32_OPC_RSUBGT,
28354 + AVR32_OPC_RSUBLE,
28355 + AVR32_OPC_RSUBHI,
28356 + AVR32_OPC_RSUBVS,
28357 + AVR32_OPC_RSUBVC,
28358 + AVR32_OPC_RSUBQS,
28359 + AVR32_OPC_RSUBAL,
28360 + AVR32_OPC_ADDEQ,
28361 + AVR32_OPC_ADDNE,
28362 + AVR32_OPC_ADDCC,
28363 + AVR32_OPC_ADDCS,
28364 + AVR32_OPC_ADDGE,
28365 + AVR32_OPC_ADDLT,
28366 + AVR32_OPC_ADDMI,
28367 + AVR32_OPC_ADDPL,
28368 + AVR32_OPC_ADDLS,
28369 + AVR32_OPC_ADDGT,
28370 + AVR32_OPC_ADDLE,
28371 + AVR32_OPC_ADDHI,
28372 + AVR32_OPC_ADDVS,
28373 + AVR32_OPC_ADDVC,
28374 + AVR32_OPC_ADDQS,
28375 + AVR32_OPC_ADDAL,
28376 + AVR32_OPC_SUB2EQ,
28377 + AVR32_OPC_SUB2NE,
28378 + AVR32_OPC_SUB2CC,
28379 + AVR32_OPC_SUB2CS,
28380 + AVR32_OPC_SUB2GE,
28381 + AVR32_OPC_SUB2LT,
28382 + AVR32_OPC_SUB2MI,
28383 + AVR32_OPC_SUB2PL,
28384 + AVR32_OPC_SUB2LS,
28385 + AVR32_OPC_SUB2GT,
28386 + AVR32_OPC_SUB2LE,
28387 + AVR32_OPC_SUB2HI,
28388 + AVR32_OPC_SUB2VS,
28389 + AVR32_OPC_SUB2VC,
28390 + AVR32_OPC_SUB2QS,
28391 + AVR32_OPC_SUB2AL,
28392 + AVR32_OPC_ANDEQ,
28393 + AVR32_OPC_ANDNE,
28394 + AVR32_OPC_ANDCC,
28395 + AVR32_OPC_ANDCS,
28396 + AVR32_OPC_ANDGE,
28397 + AVR32_OPC_ANDLT,
28398 + AVR32_OPC_ANDMI,
28399 + AVR32_OPC_ANDPL,
28400 + AVR32_OPC_ANDLS,
28401 + AVR32_OPC_ANDGT,
28402 + AVR32_OPC_ANDLE,
28403 + AVR32_OPC_ANDHI,
28404 + AVR32_OPC_ANDVS,
28405 + AVR32_OPC_ANDVC,
28406 + AVR32_OPC_ANDQS,
28407 + AVR32_OPC_ANDAL,
28408 + AVR32_OPC_OREQ,
28409 + AVR32_OPC_ORNE,
28410 + AVR32_OPC_ORCC,
28411 + AVR32_OPC_ORCS,
28412 + AVR32_OPC_ORGE,
28413 + AVR32_OPC_ORLT,
28414 + AVR32_OPC_ORMI,
28415 + AVR32_OPC_ORPL,
28416 + AVR32_OPC_ORLS,
28417 + AVR32_OPC_ORGT,
28418 + AVR32_OPC_ORLE,
28419 + AVR32_OPC_ORHI,
28420 + AVR32_OPC_ORVS,
28421 + AVR32_OPC_ORVC,
28422 + AVR32_OPC_ORQS,
28423 + AVR32_OPC_ORAL,
28424 + AVR32_OPC_EOREQ,
28425 + AVR32_OPC_EORNE,
28426 + AVR32_OPC_EORCC,
28427 + AVR32_OPC_EORCS,
28428 + AVR32_OPC_EORGE,
28429 + AVR32_OPC_EORLT,
28430 + AVR32_OPC_EORMI,
28431 + AVR32_OPC_EORPL,
28432 + AVR32_OPC_EORLS,
28433 + AVR32_OPC_EORGT,
28434 + AVR32_OPC_EORLE,
28435 + AVR32_OPC_EORHI,
28436 + AVR32_OPC_EORVS,
28437 + AVR32_OPC_EORVC,
28438 + AVR32_OPC_EORQS,
28439 + AVR32_OPC_EORAL,
28440 + AVR32_OPC_LD_WEQ,
28441 + AVR32_OPC_LD_WNE,
28442 + AVR32_OPC_LD_WCC,
28443 + AVR32_OPC_LD_WCS,
28444 + AVR32_OPC_LD_WGE,
28445 + AVR32_OPC_LD_WLT,
28446 + AVR32_OPC_LD_WMI,
28447 + AVR32_OPC_LD_WPL,
28448 + AVR32_OPC_LD_WLS,
28449 + AVR32_OPC_LD_WGT,
28450 + AVR32_OPC_LD_WLE,
28451 + AVR32_OPC_LD_WHI,
28452 + AVR32_OPC_LD_WVS,
28453 + AVR32_OPC_LD_WVC,
28454 + AVR32_OPC_LD_WQS,
28455 + AVR32_OPC_LD_WAL,
28456 + AVR32_OPC_LD_SHEQ,
28457 + AVR32_OPC_LD_SHNE,
28458 + AVR32_OPC_LD_SHCC,
28459 + AVR32_OPC_LD_SHCS,
28460 + AVR32_OPC_LD_SHGE,
28461 + AVR32_OPC_LD_SHLT,
28462 + AVR32_OPC_LD_SHMI,
28463 + AVR32_OPC_LD_SHPL,
28464 + AVR32_OPC_LD_SHLS,
28465 + AVR32_OPC_LD_SHGT,
28466 + AVR32_OPC_LD_SHLE,
28467 + AVR32_OPC_LD_SHHI,
28468 + AVR32_OPC_LD_SHVS,
28469 + AVR32_OPC_LD_SHVC,
28470 + AVR32_OPC_LD_SHQS,
28471 + AVR32_OPC_LD_SHAL,
28472 + AVR32_OPC_LD_UHEQ,
28473 + AVR32_OPC_LD_UHNE,
28474 + AVR32_OPC_LD_UHCC,
28475 + AVR32_OPC_LD_UHCS,
28476 + AVR32_OPC_LD_UHGE,
28477 + AVR32_OPC_LD_UHLT,
28478 + AVR32_OPC_LD_UHMI,
28479 + AVR32_OPC_LD_UHPL,
28480 + AVR32_OPC_LD_UHLS,
28481 + AVR32_OPC_LD_UHGT,
28482 + AVR32_OPC_LD_UHLE,
28483 + AVR32_OPC_LD_UHHI,
28484 + AVR32_OPC_LD_UHVS,
28485 + AVR32_OPC_LD_UHVC,
28486 + AVR32_OPC_LD_UHQS,
28487 + AVR32_OPC_LD_UHAL,
28488 + AVR32_OPC_LD_SBEQ,
28489 + AVR32_OPC_LD_SBNE,
28490 + AVR32_OPC_LD_SBCC,
28491 + AVR32_OPC_LD_SBCS,
28492 + AVR32_OPC_LD_SBGE,
28493 + AVR32_OPC_LD_SBLT,
28494 + AVR32_OPC_LD_SBMI,
28495 + AVR32_OPC_LD_SBPL,
28496 + AVR32_OPC_LD_SBLS,
28497 + AVR32_OPC_LD_SBGT,
28498 + AVR32_OPC_LD_SBLE,
28499 + AVR32_OPC_LD_SBHI,
28500 + AVR32_OPC_LD_SBVS,
28501 + AVR32_OPC_LD_SBVC,
28502 + AVR32_OPC_LD_SBQS,
28503 + AVR32_OPC_LD_SBAL,
28504 + AVR32_OPC_LD_UBEQ,
28505 + AVR32_OPC_LD_UBNE,
28506 + AVR32_OPC_LD_UBCC,
28507 + AVR32_OPC_LD_UBCS,
28508 + AVR32_OPC_LD_UBGE,
28509 + AVR32_OPC_LD_UBLT,
28510 + AVR32_OPC_LD_UBMI,
28511 + AVR32_OPC_LD_UBPL,
28512 + AVR32_OPC_LD_UBLS,
28513 + AVR32_OPC_LD_UBGT,
28514 + AVR32_OPC_LD_UBLE,
28515 + AVR32_OPC_LD_UBHI,
28516 + AVR32_OPC_LD_UBVS,
28517 + AVR32_OPC_LD_UBVC,
28518 + AVR32_OPC_LD_UBQS,
28519 + AVR32_OPC_LD_UBAL,
28520 + AVR32_OPC_ST_WEQ,
28521 + AVR32_OPC_ST_WNE,
28522 + AVR32_OPC_ST_WCC,
28523 + AVR32_OPC_ST_WCS,
28524 + AVR32_OPC_ST_WGE,
28525 + AVR32_OPC_ST_WLT,
28526 + AVR32_OPC_ST_WMI,
28527 + AVR32_OPC_ST_WPL,
28528 + AVR32_OPC_ST_WLS,
28529 + AVR32_OPC_ST_WGT,
28530 + AVR32_OPC_ST_WLE,
28531 + AVR32_OPC_ST_WHI,
28532 + AVR32_OPC_ST_WVS,
28533 + AVR32_OPC_ST_WVC,
28534 + AVR32_OPC_ST_WQS,
28535 + AVR32_OPC_ST_WAL,
28536 + AVR32_OPC_ST_HEQ,
28537 + AVR32_OPC_ST_HNE,
28538 + AVR32_OPC_ST_HCC,
28539 + AVR32_OPC_ST_HCS,
28540 + AVR32_OPC_ST_HGE,
28541 + AVR32_OPC_ST_HLT,
28542 + AVR32_OPC_ST_HMI,
28543 + AVR32_OPC_ST_HPL,
28544 + AVR32_OPC_ST_HLS,
28545 + AVR32_OPC_ST_HGT,
28546 + AVR32_OPC_ST_HLE,
28547 + AVR32_OPC_ST_HHI,
28548 + AVR32_OPC_ST_HVS,
28549 + AVR32_OPC_ST_HVC,
28550 + AVR32_OPC_ST_HQS,
28551 + AVR32_OPC_ST_HAL,
28552 + AVR32_OPC_ST_BEQ,
28553 + AVR32_OPC_ST_BNE,
28554 + AVR32_OPC_ST_BCC,
28555 + AVR32_OPC_ST_BCS,
28556 + AVR32_OPC_ST_BGE,
28557 + AVR32_OPC_ST_BLT,
28558 + AVR32_OPC_ST_BMI,
28559 + AVR32_OPC_ST_BPL,
28560 + AVR32_OPC_ST_BLS,
28561 + AVR32_OPC_ST_BGT,
28562 + AVR32_OPC_ST_BLE,
28563 + AVR32_OPC_ST_BHI,
28564 + AVR32_OPC_ST_BVS,
28565 + AVR32_OPC_ST_BVC,
28566 + AVR32_OPC_ST_BQS,
28567 + AVR32_OPC_ST_BAL,
28568 + AVR32_OPC_MOVH,
28569 + AVR32_OPC__END_
28570 +};
28571 +#define AVR32_NR_OPCODES AVR32_OPC__END_
28572 +
28573 +enum avr32_syntax_type
28574 +{
28575 + AVR32_SYNTAX_ABS,
28576 + AVR32_SYNTAX_ACALL,
28577 + AVR32_SYNTAX_ACR,
28578 + AVR32_SYNTAX_ADC,
28579 + AVR32_SYNTAX_ADD1,
28580 + AVR32_SYNTAX_ADD2,
28581 + AVR32_SYNTAX_ADDABS,
28582 + AVR32_SYNTAX_ADDHH_W,
28583 + AVR32_SYNTAX_AND1,
28584 + AVR32_SYNTAX_AND2,
28585 + AVR32_SYNTAX_AND3,
28586 + AVR32_SYNTAX_ANDH,
28587 + AVR32_SYNTAX_ANDH_COH,
28588 + AVR32_SYNTAX_ANDL,
28589 + AVR32_SYNTAX_ANDL_COH,
28590 + AVR32_SYNTAX_ANDN,
28591 + AVR32_SYNTAX_ASR1,
28592 + AVR32_SYNTAX_ASR3,
28593 + AVR32_SYNTAX_ASR2,
28594 + AVR32_SYNTAX_BFEXTS,
28595 + AVR32_SYNTAX_BFEXTU,
28596 + AVR32_SYNTAX_BFINS,
28597 + AVR32_SYNTAX_BLD,
28598 + AVR32_SYNTAX_BREQ1,
28599 + AVR32_SYNTAX_BRNE1,
28600 + AVR32_SYNTAX_BRCC1,
28601 + AVR32_SYNTAX_BRCS1,
28602 + AVR32_SYNTAX_BRGE1,
28603 + AVR32_SYNTAX_BRLT1,
28604 + AVR32_SYNTAX_BRMI1,
28605 + AVR32_SYNTAX_BRPL1,
28606 + AVR32_SYNTAX_BRHS1,
28607 + AVR32_SYNTAX_BRLO1,
28608 + AVR32_SYNTAX_BREQ2,
28609 + AVR32_SYNTAX_BRNE2,
28610 + AVR32_SYNTAX_BRCC2,
28611 + AVR32_SYNTAX_BRCS2,
28612 + AVR32_SYNTAX_BRGE2,
28613 + AVR32_SYNTAX_BRLT2,
28614 + AVR32_SYNTAX_BRMI2,
28615 + AVR32_SYNTAX_BRPL2,
28616 + AVR32_SYNTAX_BRLS,
28617 + AVR32_SYNTAX_BRGT,
28618 + AVR32_SYNTAX_BRLE,
28619 + AVR32_SYNTAX_BRHI,
28620 + AVR32_SYNTAX_BRVS,
28621 + AVR32_SYNTAX_BRVC,
28622 + AVR32_SYNTAX_BRQS,
28623 + AVR32_SYNTAX_BRAL,
28624 + AVR32_SYNTAX_BRHS2,
28625 + AVR32_SYNTAX_BRLO2,
28626 + AVR32_SYNTAX_BREAKPOINT,
28627 + AVR32_SYNTAX_BREV,
28628 + AVR32_SYNTAX_BST,
28629 + AVR32_SYNTAX_CACHE,
28630 + AVR32_SYNTAX_CASTS_B,
28631 + AVR32_SYNTAX_CASTS_H,
28632 + AVR32_SYNTAX_CASTU_B,
28633 + AVR32_SYNTAX_CASTU_H,
28634 + AVR32_SYNTAX_CBR,
28635 + AVR32_SYNTAX_CLZ,
28636 + AVR32_SYNTAX_COM,
28637 + AVR32_SYNTAX_COP,
28638 + AVR32_SYNTAX_CP_B,
28639 + AVR32_SYNTAX_CP_H,
28640 + AVR32_SYNTAX_CP_W1,
28641 + AVR32_SYNTAX_CP_W2,
28642 + AVR32_SYNTAX_CP_W3,
28643 + AVR32_SYNTAX_CPC1,
28644 + AVR32_SYNTAX_CPC2,
28645 + AVR32_SYNTAX_CSRF,
28646 + AVR32_SYNTAX_CSRFCZ,
28647 + AVR32_SYNTAX_DIVS,
28648 + AVR32_SYNTAX_DIVU,
28649 + AVR32_SYNTAX_EOR1,
28650 + AVR32_SYNTAX_EOR2,
28651 + AVR32_SYNTAX_EOR3,
28652 + AVR32_SYNTAX_EORL,
28653 + AVR32_SYNTAX_EORH,
28654 + AVR32_SYNTAX_FRS,
28655 + AVR32_SYNTAX_ICALL,
28656 + AVR32_SYNTAX_INCJOSP,
28657 + AVR32_SYNTAX_LD_D1,
28658 + AVR32_SYNTAX_LD_D2,
28659 + AVR32_SYNTAX_LD_D3,
28660 + AVR32_SYNTAX_LD_D5,
28661 + AVR32_SYNTAX_LD_D4,
28662 + AVR32_SYNTAX_LD_SB2,
28663 + AVR32_SYNTAX_LD_SB1,
28664 + AVR32_SYNTAX_LD_UB1,
28665 + AVR32_SYNTAX_LD_UB2,
28666 + AVR32_SYNTAX_LD_UB5,
28667 + AVR32_SYNTAX_LD_UB3,
28668 + AVR32_SYNTAX_LD_UB4,
28669 + AVR32_SYNTAX_LD_SH1,
28670 + AVR32_SYNTAX_LD_SH2,
28671 + AVR32_SYNTAX_LD_SH5,
28672 + AVR32_SYNTAX_LD_SH3,
28673 + AVR32_SYNTAX_LD_SH4,
28674 + AVR32_SYNTAX_LD_UH1,
28675 + AVR32_SYNTAX_LD_UH2,
28676 + AVR32_SYNTAX_LD_UH5,
28677 + AVR32_SYNTAX_LD_UH3,
28678 + AVR32_SYNTAX_LD_UH4,
28679 + AVR32_SYNTAX_LD_W1,
28680 + AVR32_SYNTAX_LD_W2,
28681 + AVR32_SYNTAX_LD_W5,
28682 + AVR32_SYNTAX_LD_W6,
28683 + AVR32_SYNTAX_LD_W3,
28684 + AVR32_SYNTAX_LD_W4,
28685 + AVR32_SYNTAX_LDC_D1,
28686 + AVR32_SYNTAX_LDC_D2,
28687 + AVR32_SYNTAX_LDC_D3,
28688 + AVR32_SYNTAX_LDC_W1,
28689 + AVR32_SYNTAX_LDC_W2,
28690 + AVR32_SYNTAX_LDC_W3,
28691 + AVR32_SYNTAX_LDC0_D,
28692 + AVR32_SYNTAX_LDC0_W,
28693 + AVR32_SYNTAX_LDCM_D,
28694 + AVR32_SYNTAX_LDCM_D_PU,
28695 + AVR32_SYNTAX_LDCM_W,
28696 + AVR32_SYNTAX_LDCM_W_PU,
28697 + AVR32_SYNTAX_LDDPC,
28698 + AVR32_SYNTAX_LDDPC_EXT,
28699 + AVR32_SYNTAX_LDDSP,
28700 + AVR32_SYNTAX_LDINS_B,
28701 + AVR32_SYNTAX_LDINS_H,
28702 + AVR32_SYNTAX_LDM,
28703 + AVR32_SYNTAX_LDMTS,
28704 + AVR32_SYNTAX_LDMTS_PU,
28705 + AVR32_SYNTAX_LDSWP_SH,
28706 + AVR32_SYNTAX_LDSWP_UH,
28707 + AVR32_SYNTAX_LDSWP_W,
28708 + AVR32_SYNTAX_LSL1,
28709 + AVR32_SYNTAX_LSL3,
28710 + AVR32_SYNTAX_LSL2,
28711 + AVR32_SYNTAX_LSR1,
28712 + AVR32_SYNTAX_LSR3,
28713 + AVR32_SYNTAX_LSR2,
28714 + AVR32_SYNTAX_MAC,
28715 + AVR32_SYNTAX_MACHH_D,
28716 + AVR32_SYNTAX_MACHH_W,
28717 + AVR32_SYNTAX_MACS_D,
28718 + AVR32_SYNTAX_MACSATHH_W,
28719 + AVR32_SYNTAX_MACUD,
28720 + AVR32_SYNTAX_MACWH_D,
28721 + AVR32_SYNTAX_MAX,
28722 + AVR32_SYNTAX_MCALL,
28723 + AVR32_SYNTAX_MFDR,
28724 + AVR32_SYNTAX_MFSR,
28725 + AVR32_SYNTAX_MIN,
28726 + AVR32_SYNTAX_MOV3,
28727 + AVR32_SYNTAX_MOV1,
28728 + AVR32_SYNTAX_MOV2,
28729 + AVR32_SYNTAX_MOVEQ1,
28730 + AVR32_SYNTAX_MOVNE1,
28731 + AVR32_SYNTAX_MOVCC1,
28732 + AVR32_SYNTAX_MOVCS1,
28733 + AVR32_SYNTAX_MOVGE1,
28734 + AVR32_SYNTAX_MOVLT1,
28735 + AVR32_SYNTAX_MOVMI1,
28736 + AVR32_SYNTAX_MOVPL1,
28737 + AVR32_SYNTAX_MOVLS1,
28738 + AVR32_SYNTAX_MOVGT1,
28739 + AVR32_SYNTAX_MOVLE1,
28740 + AVR32_SYNTAX_MOVHI1,
28741 + AVR32_SYNTAX_MOVVS1,
28742 + AVR32_SYNTAX_MOVVC1,
28743 + AVR32_SYNTAX_MOVQS1,
28744 + AVR32_SYNTAX_MOVAL1,
28745 + AVR32_SYNTAX_MOVHS1,
28746 + AVR32_SYNTAX_MOVLO1,
28747 + AVR32_SYNTAX_MOVEQ2,
28748 + AVR32_SYNTAX_MOVNE2,
28749 + AVR32_SYNTAX_MOVCC2,
28750 + AVR32_SYNTAX_MOVCS2,
28751 + AVR32_SYNTAX_MOVGE2,
28752 + AVR32_SYNTAX_MOVLT2,
28753 + AVR32_SYNTAX_MOVMI2,
28754 + AVR32_SYNTAX_MOVPL2,
28755 + AVR32_SYNTAX_MOVLS2,
28756 + AVR32_SYNTAX_MOVGT2,
28757 + AVR32_SYNTAX_MOVLE2,
28758 + AVR32_SYNTAX_MOVHI2,
28759 + AVR32_SYNTAX_MOVVS2,
28760 + AVR32_SYNTAX_MOVVC2,
28761 + AVR32_SYNTAX_MOVQS2,
28762 + AVR32_SYNTAX_MOVAL2,
28763 + AVR32_SYNTAX_MOVHS2,
28764 + AVR32_SYNTAX_MOVLO2,
28765 + AVR32_SYNTAX_MTDR,
28766 + AVR32_SYNTAX_MTSR,
28767 + AVR32_SYNTAX_MUL1,
28768 + AVR32_SYNTAX_MUL2,
28769 + AVR32_SYNTAX_MUL3,
28770 + AVR32_SYNTAX_MULHH_W,
28771 + AVR32_SYNTAX_MULNHH_W,
28772 + AVR32_SYNTAX_MULNWH_D,
28773 + AVR32_SYNTAX_MULSD,
28774 + AVR32_SYNTAX_MULSATHH_H,
28775 + AVR32_SYNTAX_MULSATHH_W,
28776 + AVR32_SYNTAX_MULSATRNDHH_H,
28777 + AVR32_SYNTAX_MULSATRNDWH_W,
28778 + AVR32_SYNTAX_MULSATWH_W,
28779 + AVR32_SYNTAX_MULU_D,
28780 + AVR32_SYNTAX_MULWH_D,
28781 + AVR32_SYNTAX_MUSFR,
28782 + AVR32_SYNTAX_MUSTR,
28783 + AVR32_SYNTAX_MVCR_D,
28784 + AVR32_SYNTAX_MVCR_W,
28785 + AVR32_SYNTAX_MVRC_D,
28786 + AVR32_SYNTAX_MVRC_W,
28787 + AVR32_SYNTAX_NEG,
28788 + AVR32_SYNTAX_NOP,
28789 + AVR32_SYNTAX_OR1,
28790 + AVR32_SYNTAX_OR2,
28791 + AVR32_SYNTAX_OR3,
28792 + AVR32_SYNTAX_ORH,
28793 + AVR32_SYNTAX_ORL,
28794 + AVR32_SYNTAX_PABS_SB,
28795 + AVR32_SYNTAX_PABS_SH,
28796 + AVR32_SYNTAX_PACKSH_SB,
28797 + AVR32_SYNTAX_PACKSH_UB,
28798 + AVR32_SYNTAX_PACKW_SH,
28799 + AVR32_SYNTAX_PADD_B,
28800 + AVR32_SYNTAX_PADD_H,
28801 + AVR32_SYNTAX_PADDH_SH,
28802 + AVR32_SYNTAX_PADDH_UB,
28803 + AVR32_SYNTAX_PADDS_SB,
28804 + AVR32_SYNTAX_PADDS_SH,
28805 + AVR32_SYNTAX_PADDS_UB,
28806 + AVR32_SYNTAX_PADDS_UH,
28807 + AVR32_SYNTAX_PADDSUB_H,
28808 + AVR32_SYNTAX_PADDSUBH_SH,
28809 + AVR32_SYNTAX_PADDSUBS_SH,
28810 + AVR32_SYNTAX_PADDSUBS_UH,
28811 + AVR32_SYNTAX_PADDX_H,
28812 + AVR32_SYNTAX_PADDXH_SH,
28813 + AVR32_SYNTAX_PADDXS_SH,
28814 + AVR32_SYNTAX_PADDXS_UH,
28815 + AVR32_SYNTAX_PASR_B,
28816 + AVR32_SYNTAX_PASR_H,
28817 + AVR32_SYNTAX_PAVG_SH,
28818 + AVR32_SYNTAX_PAVG_UB,
28819 + AVR32_SYNTAX_PLSL_B,
28820 + AVR32_SYNTAX_PLSL_H,
28821 + AVR32_SYNTAX_PLSR_B,
28822 + AVR32_SYNTAX_PLSR_H,
28823 + AVR32_SYNTAX_PMAX_SH,
28824 + AVR32_SYNTAX_PMAX_UB,
28825 + AVR32_SYNTAX_PMIN_SH,
28826 + AVR32_SYNTAX_PMIN_UB,
28827 + AVR32_SYNTAX_POPJC,
28828 + AVR32_SYNTAX_POPM,
28829 + AVR32_SYNTAX_POPM_E,
28830 + AVR32_SYNTAX_PREF,
28831 + AVR32_SYNTAX_PSAD,
28832 + AVR32_SYNTAX_PSUB_B,
28833 + AVR32_SYNTAX_PSUB_H,
28834 + AVR32_SYNTAX_PSUBADD_H,
28835 + AVR32_SYNTAX_PSUBADDH_SH,
28836 + AVR32_SYNTAX_PSUBADDS_SH,
28837 + AVR32_SYNTAX_PSUBADDS_UH,
28838 + AVR32_SYNTAX_PSUBH_SH,
28839 + AVR32_SYNTAX_PSUBH_UB,
28840 + AVR32_SYNTAX_PSUBS_SB,
28841 + AVR32_SYNTAX_PSUBS_SH,
28842 + AVR32_SYNTAX_PSUBS_UB,
28843 + AVR32_SYNTAX_PSUBS_UH,
28844 + AVR32_SYNTAX_PSUBX_H,
28845 + AVR32_SYNTAX_PSUBXH_SH,
28846 + AVR32_SYNTAX_PSUBXS_SH,
28847 + AVR32_SYNTAX_PSUBXS_UH,
28848 + AVR32_SYNTAX_PUNPCKSB_H,
28849 + AVR32_SYNTAX_PUNPCKUB_H,
28850 + AVR32_SYNTAX_PUSHJC,
28851 + AVR32_SYNTAX_PUSHM,
28852 + AVR32_SYNTAX_PUSHM_E,
28853 + AVR32_SYNTAX_RCALL1,
28854 + AVR32_SYNTAX_RCALL2,
28855 + AVR32_SYNTAX_RETEQ,
28856 + AVR32_SYNTAX_RETNE,
28857 + AVR32_SYNTAX_RETCC,
28858 + AVR32_SYNTAX_RETCS,
28859 + AVR32_SYNTAX_RETGE,
28860 + AVR32_SYNTAX_RETLT,
28861 + AVR32_SYNTAX_RETMI,
28862 + AVR32_SYNTAX_RETPL,
28863 + AVR32_SYNTAX_RETLS,
28864 + AVR32_SYNTAX_RETGT,
28865 + AVR32_SYNTAX_RETLE,
28866 + AVR32_SYNTAX_RETHI,
28867 + AVR32_SYNTAX_RETVS,
28868 + AVR32_SYNTAX_RETVC,
28869 + AVR32_SYNTAX_RETQS,
28870 + AVR32_SYNTAX_RETAL,
28871 + AVR32_SYNTAX_RETHS,
28872 + AVR32_SYNTAX_RETLO,
28873 + AVR32_SYNTAX_RETD,
28874 + AVR32_SYNTAX_RETE,
28875 + AVR32_SYNTAX_RETJ,
28876 + AVR32_SYNTAX_RETS,
28877 + AVR32_SYNTAX_RJMP,
28878 + AVR32_SYNTAX_ROL,
28879 + AVR32_SYNTAX_ROR,
28880 + AVR32_SYNTAX_RSUB1,
28881 + AVR32_SYNTAX_RSUB2,
28882 + AVR32_SYNTAX_SATADD_H,
28883 + AVR32_SYNTAX_SATADD_W,
28884 + AVR32_SYNTAX_SATRNDS,
28885 + AVR32_SYNTAX_SATRNDU,
28886 + AVR32_SYNTAX_SATS,
28887 + AVR32_SYNTAX_SATSUB_H,
28888 + AVR32_SYNTAX_SATSUB_W1,
28889 + AVR32_SYNTAX_SATSUB_W2,
28890 + AVR32_SYNTAX_SATU,
28891 + AVR32_SYNTAX_SBC,
28892 + AVR32_SYNTAX_SBR,
28893 + AVR32_SYNTAX_SCALL,
28894 + AVR32_SYNTAX_SCR,
28895 + AVR32_SYNTAX_SLEEP,
28896 + AVR32_SYNTAX_SREQ,
28897 + AVR32_SYNTAX_SRNE,
28898 + AVR32_SYNTAX_SRCC,
28899 + AVR32_SYNTAX_SRCS,
28900 + AVR32_SYNTAX_SRGE,
28901 + AVR32_SYNTAX_SRLT,
28902 + AVR32_SYNTAX_SRMI,
28903 + AVR32_SYNTAX_SRPL,
28904 + AVR32_SYNTAX_SRLS,
28905 + AVR32_SYNTAX_SRGT,
28906 + AVR32_SYNTAX_SRLE,
28907 + AVR32_SYNTAX_SRHI,
28908 + AVR32_SYNTAX_SRVS,
28909 + AVR32_SYNTAX_SRVC,
28910 + AVR32_SYNTAX_SRQS,
28911 + AVR32_SYNTAX_SRAL,
28912 + AVR32_SYNTAX_SRHS,
28913 + AVR32_SYNTAX_SRLO,
28914 + AVR32_SYNTAX_SSRF,
28915 + AVR32_SYNTAX_ST_B1,
28916 + AVR32_SYNTAX_ST_B2,
28917 + AVR32_SYNTAX_ST_B5,
28918 + AVR32_SYNTAX_ST_B3,
28919 + AVR32_SYNTAX_ST_B4,
28920 + AVR32_SYNTAX_ST_D1,
28921 + AVR32_SYNTAX_ST_D2,
28922 + AVR32_SYNTAX_ST_D3,
28923 + AVR32_SYNTAX_ST_D5,
28924 + AVR32_SYNTAX_ST_D4,
28925 + AVR32_SYNTAX_ST_H1,
28926 + AVR32_SYNTAX_ST_H2,
28927 + AVR32_SYNTAX_ST_H5,
28928 + AVR32_SYNTAX_ST_H3,
28929 + AVR32_SYNTAX_ST_H4,
28930 + AVR32_SYNTAX_ST_W1,
28931 + AVR32_SYNTAX_ST_W2,
28932 + AVR32_SYNTAX_ST_W5,
28933 + AVR32_SYNTAX_ST_W3,
28934 + AVR32_SYNTAX_ST_W4,
28935 + AVR32_SYNTAX_STC_D1,
28936 + AVR32_SYNTAX_STC_D2,
28937 + AVR32_SYNTAX_STC_D3,
28938 + AVR32_SYNTAX_STC_W1,
28939 + AVR32_SYNTAX_STC_W2,
28940 + AVR32_SYNTAX_STC_W3,
28941 + AVR32_SYNTAX_STC0_D,
28942 + AVR32_SYNTAX_STC0_W,
28943 + AVR32_SYNTAX_STCM_D,
28944 + AVR32_SYNTAX_STCM_D_PU,
28945 + AVR32_SYNTAX_STCM_W,
28946 + AVR32_SYNTAX_STCM_W_PU,
28947 + AVR32_SYNTAX_STCOND,
28948 + AVR32_SYNTAX_STDSP,
28949 + AVR32_SYNTAX_STHH_W2,
28950 + AVR32_SYNTAX_STHH_W1,
28951 + AVR32_SYNTAX_STM,
28952 + AVR32_SYNTAX_STM_PU,
28953 + AVR32_SYNTAX_STMTS,
28954 + AVR32_SYNTAX_STMTS_PU,
28955 + AVR32_SYNTAX_STSWP_H,
28956 + AVR32_SYNTAX_STSWP_W,
28957 + AVR32_SYNTAX_SUB1,
28958 + AVR32_SYNTAX_SUB2,
28959 + AVR32_SYNTAX_SUB5,
28960 + AVR32_SYNTAX_SUB3_SP,
28961 + AVR32_SYNTAX_SUB3,
28962 + AVR32_SYNTAX_SUB4,
28963 + AVR32_SYNTAX_SUBEQ,
28964 + AVR32_SYNTAX_SUBNE,
28965 + AVR32_SYNTAX_SUBCC,
28966 + AVR32_SYNTAX_SUBCS,
28967 + AVR32_SYNTAX_SUBGE,
28968 + AVR32_SYNTAX_SUBLT,
28969 + AVR32_SYNTAX_SUBMI,
28970 + AVR32_SYNTAX_SUBPL,
28971 + AVR32_SYNTAX_SUBLS,
28972 + AVR32_SYNTAX_SUBGT,
28973 + AVR32_SYNTAX_SUBLE,
28974 + AVR32_SYNTAX_SUBHI,
28975 + AVR32_SYNTAX_SUBVS,
28976 + AVR32_SYNTAX_SUBVC,
28977 + AVR32_SYNTAX_SUBQS,
28978 + AVR32_SYNTAX_SUBAL,
28979 + AVR32_SYNTAX_SUBHS,
28980 + AVR32_SYNTAX_SUBLO,
28981 + AVR32_SYNTAX_SUBFEQ,
28982 + AVR32_SYNTAX_SUBFNE,
28983 + AVR32_SYNTAX_SUBFCC,
28984 + AVR32_SYNTAX_SUBFCS,
28985 + AVR32_SYNTAX_SUBFGE,
28986 + AVR32_SYNTAX_SUBFLT,
28987 + AVR32_SYNTAX_SUBFMI,
28988 + AVR32_SYNTAX_SUBFPL,
28989 + AVR32_SYNTAX_SUBFLS,
28990 + AVR32_SYNTAX_SUBFGT,
28991 + AVR32_SYNTAX_SUBFLE,
28992 + AVR32_SYNTAX_SUBFHI,
28993 + AVR32_SYNTAX_SUBFVS,
28994 + AVR32_SYNTAX_SUBFVC,
28995 + AVR32_SYNTAX_SUBFQS,
28996 + AVR32_SYNTAX_SUBFAL,
28997 + AVR32_SYNTAX_SUBFHS,
28998 + AVR32_SYNTAX_SUBFLO,
28999 + AVR32_SYNTAX_SUBHH_W,
29000 + AVR32_SYNTAX_SWAP_B,
29001 + AVR32_SYNTAX_SWAP_BH,
29002 + AVR32_SYNTAX_SWAP_H,
29003 + AVR32_SYNTAX_SYNC,
29004 + AVR32_SYNTAX_TLBR,
29005 + AVR32_SYNTAX_TLBS,
29006 + AVR32_SYNTAX_TLBW,
29007 + AVR32_SYNTAX_TNBZ,
29008 + AVR32_SYNTAX_TST,
29009 + AVR32_SYNTAX_XCHG,
29010 + AVR32_SYNTAX_MEMC,
29011 + AVR32_SYNTAX_MEMS,
29012 + AVR32_SYNTAX_MEMT,
29013 + AVR32_SYNTAX_FADD_S,
29014 + AVR32_SYNTAX_FADD_D,
29015 + AVR32_SYNTAX_FSUB_S,
29016 + AVR32_SYNTAX_FSUB_D,
29017 + AVR32_SYNTAX_FMAC_S,
29018 + AVR32_SYNTAX_FMAC_D,
29019 + AVR32_SYNTAX_FNMAC_S,
29020 + AVR32_SYNTAX_FNMAC_D,
29021 + AVR32_SYNTAX_FMSC_S,
29022 + AVR32_SYNTAX_FMSC_D,
29023 + AVR32_SYNTAX_FNMSC_S,
29024 + AVR32_SYNTAX_FNMSC_D,
29025 + AVR32_SYNTAX_FMUL_S,
29026 + AVR32_SYNTAX_FMUL_D,
29027 + AVR32_SYNTAX_FNMUL_S,
29028 + AVR32_SYNTAX_FNMUL_D,
29029 + AVR32_SYNTAX_FNEG_S,
29030 + AVR32_SYNTAX_FNEG_D,
29031 + AVR32_SYNTAX_FABS_S,
29032 + AVR32_SYNTAX_FABS_D,
29033 + AVR32_SYNTAX_FCMP_S,
29034 + AVR32_SYNTAX_FCMP_D,
29035 + AVR32_SYNTAX_FMOV1_S,
29036 + AVR32_SYNTAX_FMOV1_D,
29037 + AVR32_SYNTAX_FMOV2_S,
29038 + AVR32_SYNTAX_FMOV2_D,
29039 + AVR32_SYNTAX_FMOV3_S,
29040 + AVR32_SYNTAX_FMOV3_D,
29041 + AVR32_SYNTAX_FCASTS_D,
29042 + AVR32_SYNTAX_FCASTD_S,
29043 + AVR32_SYNTAX_LDA_W,
29044 + AVR32_SYNTAX_CALL,
29045 + AVR32_SYNTAX_PICOSVMAC0,
29046 + AVR32_SYNTAX_PICOSVMAC1,
29047 + AVR32_SYNTAX_PICOSVMAC2,
29048 + AVR32_SYNTAX_PICOSVMAC3,
29049 + AVR32_SYNTAX_PICOSVMUL0,
29050 + AVR32_SYNTAX_PICOSVMUL1,
29051 + AVR32_SYNTAX_PICOSVMUL2,
29052 + AVR32_SYNTAX_PICOSVMUL3,
29053 + AVR32_SYNTAX_PICOVMAC0,
29054 + AVR32_SYNTAX_PICOVMAC1,
29055 + AVR32_SYNTAX_PICOVMAC2,
29056 + AVR32_SYNTAX_PICOVMAC3,
29057 + AVR32_SYNTAX_PICOVMUL0,
29058 + AVR32_SYNTAX_PICOVMUL1,
29059 + AVR32_SYNTAX_PICOVMUL2,
29060 + AVR32_SYNTAX_PICOVMUL3,
29061 + AVR32_SYNTAX_PICOLD_D2,
29062 + AVR32_SYNTAX_PICOLD_D3,
29063 + AVR32_SYNTAX_PICOLD_D1,
29064 + AVR32_SYNTAX_PICOLD_W2,
29065 + AVR32_SYNTAX_PICOLD_W3,
29066 + AVR32_SYNTAX_PICOLD_W1,
29067 + AVR32_SYNTAX_PICOLDM_D,
29068 + AVR32_SYNTAX_PICOLDM_D_PU,
29069 + AVR32_SYNTAX_PICOLDM_W,
29070 + AVR32_SYNTAX_PICOLDM_W_PU,
29071 + AVR32_SYNTAX_PICOMV_D1,
29072 + AVR32_SYNTAX_PICOMV_D2,
29073 + AVR32_SYNTAX_PICOMV_W1,
29074 + AVR32_SYNTAX_PICOMV_W2,
29075 + AVR32_SYNTAX_PICOST_D2,
29076 + AVR32_SYNTAX_PICOST_D3,
29077 + AVR32_SYNTAX_PICOST_D1,
29078 + AVR32_SYNTAX_PICOST_W2,
29079 + AVR32_SYNTAX_PICOST_W3,
29080 + AVR32_SYNTAX_PICOST_W1,
29081 + AVR32_SYNTAX_PICOSTM_D,
29082 + AVR32_SYNTAX_PICOSTM_D_PU,
29083 + AVR32_SYNTAX_PICOSTM_W,
29084 + AVR32_SYNTAX_PICOSTM_W_PU,
29085 + AVR32_SYNTAX_RSUBEQ,
29086 + AVR32_SYNTAX_RSUBNE,
29087 + AVR32_SYNTAX_RSUBCC,
29088 + AVR32_SYNTAX_RSUBCS,
29089 + AVR32_SYNTAX_RSUBGE,
29090 + AVR32_SYNTAX_RSUBLT,
29091 + AVR32_SYNTAX_RSUBMI,
29092 + AVR32_SYNTAX_RSUBPL,
29093 + AVR32_SYNTAX_RSUBLS,
29094 + AVR32_SYNTAX_RSUBGT,
29095 + AVR32_SYNTAX_RSUBLE,
29096 + AVR32_SYNTAX_RSUBHI,
29097 + AVR32_SYNTAX_RSUBVS,
29098 + AVR32_SYNTAX_RSUBVC,
29099 + AVR32_SYNTAX_RSUBQS,
29100 + AVR32_SYNTAX_RSUBAL,
29101 + AVR32_SYNTAX_RSUBHS,
29102 + AVR32_SYNTAX_RSUBLO,
29103 + AVR32_SYNTAX_ADDEQ,
29104 + AVR32_SYNTAX_ADDNE,
29105 + AVR32_SYNTAX_ADDCC,
29106 + AVR32_SYNTAX_ADDCS,
29107 + AVR32_SYNTAX_ADDGE,
29108 + AVR32_SYNTAX_ADDLT,
29109 + AVR32_SYNTAX_ADDMI,
29110 + AVR32_SYNTAX_ADDPL,
29111 + AVR32_SYNTAX_ADDLS,
29112 + AVR32_SYNTAX_ADDGT,
29113 + AVR32_SYNTAX_ADDLE,
29114 + AVR32_SYNTAX_ADDHI,
29115 + AVR32_SYNTAX_ADDVS,
29116 + AVR32_SYNTAX_ADDVC,
29117 + AVR32_SYNTAX_ADDQS,
29118 + AVR32_SYNTAX_ADDAL,
29119 + AVR32_SYNTAX_ADDHS,
29120 + AVR32_SYNTAX_ADDLO,
29121 + AVR32_SYNTAX_SUB2EQ,
29122 + AVR32_SYNTAX_SUB2NE,
29123 + AVR32_SYNTAX_SUB2CC,
29124 + AVR32_SYNTAX_SUB2CS,
29125 + AVR32_SYNTAX_SUB2GE,
29126 + AVR32_SYNTAX_SUB2LT,
29127 + AVR32_SYNTAX_SUB2MI,
29128 + AVR32_SYNTAX_SUB2PL,
29129 + AVR32_SYNTAX_SUB2LS,
29130 + AVR32_SYNTAX_SUB2GT,
29131 + AVR32_SYNTAX_SUB2LE,
29132 + AVR32_SYNTAX_SUB2HI,
29133 + AVR32_SYNTAX_SUB2VS,
29134 + AVR32_SYNTAX_SUB2VC,
29135 + AVR32_SYNTAX_SUB2QS,
29136 + AVR32_SYNTAX_SUB2AL,
29137 + AVR32_SYNTAX_SUB2HS,
29138 + AVR32_SYNTAX_SUB2LO,
29139 + AVR32_SYNTAX_ANDEQ,
29140 + AVR32_SYNTAX_ANDNE,
29141 + AVR32_SYNTAX_ANDCC,
29142 + AVR32_SYNTAX_ANDCS,
29143 + AVR32_SYNTAX_ANDGE,
29144 + AVR32_SYNTAX_ANDLT,
29145 + AVR32_SYNTAX_ANDMI,
29146 + AVR32_SYNTAX_ANDPL,
29147 + AVR32_SYNTAX_ANDLS,
29148 + AVR32_SYNTAX_ANDGT,
29149 + AVR32_SYNTAX_ANDLE,
29150 + AVR32_SYNTAX_ANDHI,
29151 + AVR32_SYNTAX_ANDVS,
29152 + AVR32_SYNTAX_ANDVC,
29153 + AVR32_SYNTAX_ANDQS,
29154 + AVR32_SYNTAX_ANDAL,
29155 + AVR32_SYNTAX_ANDHS,
29156 + AVR32_SYNTAX_ANDLO,
29157 + AVR32_SYNTAX_OREQ,
29158 + AVR32_SYNTAX_ORNE,
29159 + AVR32_SYNTAX_ORCC,
29160 + AVR32_SYNTAX_ORCS,
29161 + AVR32_SYNTAX_ORGE,
29162 + AVR32_SYNTAX_ORLT,
29163 + AVR32_SYNTAX_ORMI,
29164 + AVR32_SYNTAX_ORPL,
29165 + AVR32_SYNTAX_ORLS,
29166 + AVR32_SYNTAX_ORGT,
29167 + AVR32_SYNTAX_ORLE,
29168 + AVR32_SYNTAX_ORHI,
29169 + AVR32_SYNTAX_ORVS,
29170 + AVR32_SYNTAX_ORVC,
29171 + AVR32_SYNTAX_ORQS,
29172 + AVR32_SYNTAX_ORAL,
29173 + AVR32_SYNTAX_ORHS,
29174 + AVR32_SYNTAX_ORLO,
29175 + AVR32_SYNTAX_EOREQ,
29176 + AVR32_SYNTAX_EORNE,
29177 + AVR32_SYNTAX_EORCC,
29178 + AVR32_SYNTAX_EORCS,
29179 + AVR32_SYNTAX_EORGE,
29180 + AVR32_SYNTAX_EORLT,
29181 + AVR32_SYNTAX_EORMI,
29182 + AVR32_SYNTAX_EORPL,
29183 + AVR32_SYNTAX_EORLS,
29184 + AVR32_SYNTAX_EORGT,
29185 + AVR32_SYNTAX_EORLE,
29186 + AVR32_SYNTAX_EORHI,
29187 + AVR32_SYNTAX_EORVS,
29188 + AVR32_SYNTAX_EORVC,
29189 + AVR32_SYNTAX_EORQS,
29190 + AVR32_SYNTAX_EORAL,
29191 + AVR32_SYNTAX_EORHS,
29192 + AVR32_SYNTAX_EORLO,
29193 + AVR32_SYNTAX_LD_WEQ,
29194 + AVR32_SYNTAX_LD_WNE,
29195 + AVR32_SYNTAX_LD_WCC,
29196 + AVR32_SYNTAX_LD_WCS,
29197 + AVR32_SYNTAX_LD_WGE,
29198 + AVR32_SYNTAX_LD_WLT,
29199 + AVR32_SYNTAX_LD_WMI,
29200 + AVR32_SYNTAX_LD_WPL,
29201 + AVR32_SYNTAX_LD_WLS,
29202 + AVR32_SYNTAX_LD_WGT,
29203 + AVR32_SYNTAX_LD_WLE,
29204 + AVR32_SYNTAX_LD_WHI,
29205 + AVR32_SYNTAX_LD_WVS,
29206 + AVR32_SYNTAX_LD_WVC,
29207 + AVR32_SYNTAX_LD_WQS,
29208 + AVR32_SYNTAX_LD_WAL,
29209 + AVR32_SYNTAX_LD_WHS,
29210 + AVR32_SYNTAX_LD_WLO,
29211 + AVR32_SYNTAX_LD_SHEQ,
29212 + AVR32_SYNTAX_LD_SHNE,
29213 + AVR32_SYNTAX_LD_SHCC,
29214 + AVR32_SYNTAX_LD_SHCS,
29215 + AVR32_SYNTAX_LD_SHGE,
29216 + AVR32_SYNTAX_LD_SHLT,
29217 + AVR32_SYNTAX_LD_SHMI,
29218 + AVR32_SYNTAX_LD_SHPL,
29219 + AVR32_SYNTAX_LD_SHLS,
29220 + AVR32_SYNTAX_LD_SHGT,
29221 + AVR32_SYNTAX_LD_SHLE,
29222 + AVR32_SYNTAX_LD_SHHI,
29223 + AVR32_SYNTAX_LD_SHVS,
29224 + AVR32_SYNTAX_LD_SHVC,
29225 + AVR32_SYNTAX_LD_SHQS,
29226 + AVR32_SYNTAX_LD_SHAL,
29227 + AVR32_SYNTAX_LD_SHHS,
29228 + AVR32_SYNTAX_LD_SHLO,
29229 + AVR32_SYNTAX_LD_UHEQ,
29230 + AVR32_SYNTAX_LD_UHNE,
29231 + AVR32_SYNTAX_LD_UHCC,
29232 + AVR32_SYNTAX_LD_UHCS,
29233 + AVR32_SYNTAX_LD_UHGE,
29234 + AVR32_SYNTAX_LD_UHLT,
29235 + AVR32_SYNTAX_LD_UHMI,
29236 + AVR32_SYNTAX_LD_UHPL,
29237 + AVR32_SYNTAX_LD_UHLS,
29238 + AVR32_SYNTAX_LD_UHGT,
29239 + AVR32_SYNTAX_LD_UHLE,
29240 + AVR32_SYNTAX_LD_UHHI,
29241 + AVR32_SYNTAX_LD_UHVS,
29242 + AVR32_SYNTAX_LD_UHVC,
29243 + AVR32_SYNTAX_LD_UHQS,
29244 + AVR32_SYNTAX_LD_UHAL,
29245 + AVR32_SYNTAX_LD_UHHS,
29246 + AVR32_SYNTAX_LD_UHLO,
29247 + AVR32_SYNTAX_LD_SBEQ,
29248 + AVR32_SYNTAX_LD_SBNE,
29249 + AVR32_SYNTAX_LD_SBCC,
29250 + AVR32_SYNTAX_LD_SBCS,
29251 + AVR32_SYNTAX_LD_SBGE,
29252 + AVR32_SYNTAX_LD_SBLT,
29253 + AVR32_SYNTAX_LD_SBMI,
29254 + AVR32_SYNTAX_LD_SBPL,
29255 + AVR32_SYNTAX_LD_SBLS,
29256 + AVR32_SYNTAX_LD_SBGT,
29257 + AVR32_SYNTAX_LD_SBLE,
29258 + AVR32_SYNTAX_LD_SBHI,
29259 + AVR32_SYNTAX_LD_SBVS,
29260 + AVR32_SYNTAX_LD_SBVC,
29261 + AVR32_SYNTAX_LD_SBQS,
29262 + AVR32_SYNTAX_LD_SBAL,
29263 + AVR32_SYNTAX_LD_SBHS,
29264 + AVR32_SYNTAX_LD_SBLO,
29265 + AVR32_SYNTAX_LD_UBEQ,
29266 + AVR32_SYNTAX_LD_UBNE,
29267 + AVR32_SYNTAX_LD_UBCC,
29268 + AVR32_SYNTAX_LD_UBCS,
29269 + AVR32_SYNTAX_LD_UBGE,
29270 + AVR32_SYNTAX_LD_UBLT,
29271 + AVR32_SYNTAX_LD_UBMI,
29272 + AVR32_SYNTAX_LD_UBPL,
29273 + AVR32_SYNTAX_LD_UBLS,
29274 + AVR32_SYNTAX_LD_UBGT,
29275 + AVR32_SYNTAX_LD_UBLE,
29276 + AVR32_SYNTAX_LD_UBHI,
29277 + AVR32_SYNTAX_LD_UBVS,
29278 + AVR32_SYNTAX_LD_UBVC,
29279 + AVR32_SYNTAX_LD_UBQS,
29280 + AVR32_SYNTAX_LD_UBAL,
29281 + AVR32_SYNTAX_LD_UBHS,
29282 + AVR32_SYNTAX_LD_UBLO,
29283 + AVR32_SYNTAX_ST_WEQ,
29284 + AVR32_SYNTAX_ST_WNE,
29285 + AVR32_SYNTAX_ST_WCC,
29286 + AVR32_SYNTAX_ST_WCS,
29287 + AVR32_SYNTAX_ST_WGE,
29288 + AVR32_SYNTAX_ST_WLT,
29289 + AVR32_SYNTAX_ST_WMI,
29290 + AVR32_SYNTAX_ST_WPL,
29291 + AVR32_SYNTAX_ST_WLS,
29292 + AVR32_SYNTAX_ST_WGT,
29293 + AVR32_SYNTAX_ST_WLE,
29294 + AVR32_SYNTAX_ST_WHI,
29295 + AVR32_SYNTAX_ST_WVS,
29296 + AVR32_SYNTAX_ST_WVC,
29297 + AVR32_SYNTAX_ST_WQS,
29298 + AVR32_SYNTAX_ST_WAL,
29299 + AVR32_SYNTAX_ST_WHS,
29300 + AVR32_SYNTAX_ST_WLO,
29301 + AVR32_SYNTAX_ST_HEQ,
29302 + AVR32_SYNTAX_ST_HNE,
29303 + AVR32_SYNTAX_ST_HCC,
29304 + AVR32_SYNTAX_ST_HCS,
29305 + AVR32_SYNTAX_ST_HGE,
29306 + AVR32_SYNTAX_ST_HLT,
29307 + AVR32_SYNTAX_ST_HMI,
29308 + AVR32_SYNTAX_ST_HPL,
29309 + AVR32_SYNTAX_ST_HLS,
29310 + AVR32_SYNTAX_ST_HGT,
29311 + AVR32_SYNTAX_ST_HLE,
29312 + AVR32_SYNTAX_ST_HHI,
29313 + AVR32_SYNTAX_ST_HVS,
29314 + AVR32_SYNTAX_ST_HVC,
29315 + AVR32_SYNTAX_ST_HQS,
29316 + AVR32_SYNTAX_ST_HAL,
29317 + AVR32_SYNTAX_ST_HHS,
29318 + AVR32_SYNTAX_ST_HLO,
29319 + AVR32_SYNTAX_ST_BEQ,
29320 + AVR32_SYNTAX_ST_BNE,
29321 + AVR32_SYNTAX_ST_BCC,
29322 + AVR32_SYNTAX_ST_BCS,
29323 + AVR32_SYNTAX_ST_BGE,
29324 + AVR32_SYNTAX_ST_BLT,
29325 + AVR32_SYNTAX_ST_BMI,
29326 + AVR32_SYNTAX_ST_BPL,
29327 + AVR32_SYNTAX_ST_BLS,
29328 + AVR32_SYNTAX_ST_BGT,
29329 + AVR32_SYNTAX_ST_BLE,
29330 + AVR32_SYNTAX_ST_BHI,
29331 + AVR32_SYNTAX_ST_BVS,
29332 + AVR32_SYNTAX_ST_BVC,
29333 + AVR32_SYNTAX_ST_BQS,
29334 + AVR32_SYNTAX_ST_BAL,
29335 + AVR32_SYNTAX_ST_BHS,
29336 + AVR32_SYNTAX_ST_BLO,
29337 + AVR32_SYNTAX_MOVH,
29338 + AVR32_SYNTAX__END_
29339 +};
29340 +#define AVR32_NR_SYNTAX AVR32_SYNTAX__END_
29341 +
29342 +enum avr32_alias_type
29343 + {
29344 + AVR32_ALIAS_FMAC_S,
29345 + AVR32_ALIAS_FMAC_D,
29346 + AVR32_ALIAS_FNMAC_S,
29347 + AVR32_ALIAS_FNMAC_D,
29348 + AVR32_ALIAS_FMSC_S,
29349 + AVR32_ALIAS_FMSC_D,
29350 + AVR32_ALIAS_FNMSC_S,
29351 + AVR32_ALIAS_FNMSC_D,
29352 + AVR32_ALIAS_FADD_S,
29353 + AVR32_ALIAS_FADD_D,
29354 + AVR32_ALIAS_FSUB_S,
29355 + AVR32_ALIAS_FSUB_D,
29356 + AVR32_ALIAS_FMUL_S,
29357 + AVR32_ALIAS_FMUL_D,
29358 + AVR32_ALIAS_FNMUL_S,
29359 + AVR32_ALIAS_FNMUL_D,
29360 + AVR32_ALIAS_FNEG_S,
29361 + AVR32_ALIAS_FNEG_D,
29362 + AVR32_ALIAS_FABS_S,
29363 + AVR32_ALIAS_FABS_D,
29364 + AVR32_ALIAS_FCMP_S,
29365 + AVR32_ALIAS_FCMP_D,
29366 + AVR32_ALIAS_FMOV1_S,
29367 + AVR32_ALIAS_FMOV1_D,
29368 + AVR32_ALIAS_FMOV2_S,
29369 + AVR32_ALIAS_FMOV2_D,
29370 + AVR32_ALIAS_FMOV3_S,
29371 + AVR32_ALIAS_FMOV3_D,
29372 + AVR32_ALIAS_FCASTS_D,
29373 + AVR32_ALIAS_FCASTD_S,
29374 + AVR32_ALIAS_PICOSVMAC0,
29375 + AVR32_ALIAS_PICOSVMAC1,
29376 + AVR32_ALIAS_PICOSVMAC2,
29377 + AVR32_ALIAS_PICOSVMAC3,
29378 + AVR32_ALIAS_PICOSVMUL0,
29379 + AVR32_ALIAS_PICOSVMUL1,
29380 + AVR32_ALIAS_PICOSVMUL2,
29381 + AVR32_ALIAS_PICOSVMUL3,
29382 + AVR32_ALIAS_PICOVMAC0,
29383 + AVR32_ALIAS_PICOVMAC1,
29384 + AVR32_ALIAS_PICOVMAC2,
29385 + AVR32_ALIAS_PICOVMAC3,
29386 + AVR32_ALIAS_PICOVMUL0,
29387 + AVR32_ALIAS_PICOVMUL1,
29388 + AVR32_ALIAS_PICOVMUL2,
29389 + AVR32_ALIAS_PICOVMUL3,
29390 + AVR32_ALIAS_PICOLD_D1,
29391 + AVR32_ALIAS_PICOLD_D2,
29392 + AVR32_ALIAS_PICOLD_D3,
29393 + AVR32_ALIAS_PICOLD_W1,
29394 + AVR32_ALIAS_PICOLD_W2,
29395 + AVR32_ALIAS_PICOLD_W3,
29396 + AVR32_ALIAS_PICOLDM_D,
29397 + AVR32_ALIAS_PICOLDM_D_PU,
29398 + AVR32_ALIAS_PICOLDM_W,
29399 + AVR32_ALIAS_PICOLDM_W_PU,
29400 + AVR32_ALIAS_PICOMV_D1,
29401 + AVR32_ALIAS_PICOMV_D2,
29402 + AVR32_ALIAS_PICOMV_W1,
29403 + AVR32_ALIAS_PICOMV_W2,
29404 + AVR32_ALIAS_PICOST_D1,
29405 + AVR32_ALIAS_PICOST_D2,
29406 + AVR32_ALIAS_PICOST_D3,
29407 + AVR32_ALIAS_PICOST_W1,
29408 + AVR32_ALIAS_PICOST_W2,
29409 + AVR32_ALIAS_PICOST_W3,
29410 + AVR32_ALIAS_PICOSTM_D,
29411 + AVR32_ALIAS_PICOSTM_D_PU,
29412 + AVR32_ALIAS_PICOSTM_W,
29413 + AVR32_ALIAS_PICOSTM_W_PU,
29414 + AVR32_ALIAS__END_
29415 + };
29416 +#define AVR32_NR_ALIAS AVR32_ALIAS__END_
29417 +
29418 +enum avr32_mnemonic_type
29419 +{
29420 + AVR32_MNEMONIC_ABS,
29421 + AVR32_MNEMONIC_ACALL,
29422 + AVR32_MNEMONIC_ACR,
29423 + AVR32_MNEMONIC_ADC,
29424 + AVR32_MNEMONIC_ADD,
29425 + AVR32_MNEMONIC_ADDABS,
29426 + AVR32_MNEMONIC_ADDHH_W,
29427 + AVR32_MNEMONIC_AND,
29428 + AVR32_MNEMONIC_ANDH,
29429 + AVR32_MNEMONIC_ANDL,
29430 + AVR32_MNEMONIC_ANDN,
29431 + AVR32_MNEMONIC_ASR,
29432 + AVR32_MNEMONIC_BFEXTS,
29433 + AVR32_MNEMONIC_BFEXTU,
29434 + AVR32_MNEMONIC_BFINS,
29435 + AVR32_MNEMONIC_BLD,
29436 + AVR32_MNEMONIC_BREQ,
29437 + AVR32_MNEMONIC_BRNE,
29438 + AVR32_MNEMONIC_BRCC,
29439 + AVR32_MNEMONIC_BRCS,
29440 + AVR32_MNEMONIC_BRGE,
29441 + AVR32_MNEMONIC_BRLT,
29442 + AVR32_MNEMONIC_BRMI,
29443 + AVR32_MNEMONIC_BRPL,
29444 + AVR32_MNEMONIC_BRHS,
29445 + AVR32_MNEMONIC_BRLO,
29446 + AVR32_MNEMONIC_BRLS,
29447 + AVR32_MNEMONIC_BRGT,
29448 + AVR32_MNEMONIC_BRLE,
29449 + AVR32_MNEMONIC_BRHI,
29450 + AVR32_MNEMONIC_BRVS,
29451 + AVR32_MNEMONIC_BRVC,
29452 + AVR32_MNEMONIC_BRQS,
29453 + AVR32_MNEMONIC_BRAL,
29454 + AVR32_MNEMONIC_BREAKPOINT,
29455 + AVR32_MNEMONIC_BREV,
29456 + AVR32_MNEMONIC_BST,
29457 + AVR32_MNEMONIC_CACHE,
29458 + AVR32_MNEMONIC_CASTS_B,
29459 + AVR32_MNEMONIC_CASTS_H,
29460 + AVR32_MNEMONIC_CASTU_B,
29461 + AVR32_MNEMONIC_CASTU_H,
29462 + AVR32_MNEMONIC_CBR,
29463 + AVR32_MNEMONIC_CLZ,
29464 + AVR32_MNEMONIC_COM,
29465 + AVR32_MNEMONIC_COP,
29466 + AVR32_MNEMONIC_CP_B,
29467 + AVR32_MNEMONIC_CP_H,
29468 + AVR32_MNEMONIC_CP_W,
29469 + AVR32_MNEMONIC_CP,
29470 + AVR32_MNEMONIC_CPC,
29471 + AVR32_MNEMONIC_CSRF,
29472 + AVR32_MNEMONIC_CSRFCZ,
29473 + AVR32_MNEMONIC_DIVS,
29474 + AVR32_MNEMONIC_DIVU,
29475 + AVR32_MNEMONIC_EOR,
29476 + AVR32_MNEMONIC_EORL,
29477 + AVR32_MNEMONIC_EORH,
29478 + AVR32_MNEMONIC_FRS,
29479 + AVR32_MNEMONIC_ICALL,
29480 + AVR32_MNEMONIC_INCJOSP,
29481 + AVR32_MNEMONIC_LD_D,
29482 + AVR32_MNEMONIC_LD_SB,
29483 + AVR32_MNEMONIC_LD_UB,
29484 + AVR32_MNEMONIC_LD_SH,
29485 + AVR32_MNEMONIC_LD_UH,
29486 + AVR32_MNEMONIC_LD_W,
29487 + AVR32_MNEMONIC_LDC_D,
29488 + AVR32_MNEMONIC_LDC_W,
29489 + AVR32_MNEMONIC_LDC0_D,
29490 + AVR32_MNEMONIC_LDC0_W,
29491 + AVR32_MNEMONIC_LDCM_D,
29492 + AVR32_MNEMONIC_LDCM_W,
29493 + AVR32_MNEMONIC_LDDPC,
29494 + AVR32_MNEMONIC_LDDSP,
29495 + AVR32_MNEMONIC_LDINS_B,
29496 + AVR32_MNEMONIC_LDINS_H,
29497 + AVR32_MNEMONIC_LDM,
29498 + AVR32_MNEMONIC_LDMTS,
29499 + AVR32_MNEMONIC_LDSWP_SH,
29500 + AVR32_MNEMONIC_LDSWP_UH,
29501 + AVR32_MNEMONIC_LDSWP_W,
29502 + AVR32_MNEMONIC_LSL,
29503 + AVR32_MNEMONIC_LSR,
29504 + AVR32_MNEMONIC_MAC,
29505 + AVR32_MNEMONIC_MACHH_D,
29506 + AVR32_MNEMONIC_MACHH_W,
29507 + AVR32_MNEMONIC_MACS_D,
29508 + AVR32_MNEMONIC_MACSATHH_W,
29509 + AVR32_MNEMONIC_MACU_D,
29510 + AVR32_MNEMONIC_MACWH_D,
29511 + AVR32_MNEMONIC_MAX,
29512 + AVR32_MNEMONIC_MCALL,
29513 + AVR32_MNEMONIC_MFDR,
29514 + AVR32_MNEMONIC_MFSR,
29515 + AVR32_MNEMONIC_MIN,
29516 + AVR32_MNEMONIC_MOV,
29517 + AVR32_MNEMONIC_MOVEQ,
29518 + AVR32_MNEMONIC_MOVNE,
29519 + AVR32_MNEMONIC_MOVCC,
29520 + AVR32_MNEMONIC_MOVCS,
29521 + AVR32_MNEMONIC_MOVGE,
29522 + AVR32_MNEMONIC_MOVLT,
29523 + AVR32_MNEMONIC_MOVMI,
29524 + AVR32_MNEMONIC_MOVPL,
29525 + AVR32_MNEMONIC_MOVLS,
29526 + AVR32_MNEMONIC_MOVGT,
29527 + AVR32_MNEMONIC_MOVLE,
29528 + AVR32_MNEMONIC_MOVHI,
29529 + AVR32_MNEMONIC_MOVVS,
29530 + AVR32_MNEMONIC_MOVVC,
29531 + AVR32_MNEMONIC_MOVQS,
29532 + AVR32_MNEMONIC_MOVAL,
29533 + AVR32_MNEMONIC_MOVHS,
29534 + AVR32_MNEMONIC_MOVLO,
29535 + AVR32_MNEMONIC_MTDR,
29536 + AVR32_MNEMONIC_MTSR,
29537 + AVR32_MNEMONIC_MUL,
29538 + AVR32_MNEMONIC_MULHH_W,
29539 + AVR32_MNEMONIC_MULNHH_W,
29540 + AVR32_MNEMONIC_MULNWH_D,
29541 + AVR32_MNEMONIC_MULS_D,
29542 + AVR32_MNEMONIC_MULSATHH_H,
29543 + AVR32_MNEMONIC_MULSATHH_W,
29544 + AVR32_MNEMONIC_MULSATRNDHH_H,
29545 + AVR32_MNEMONIC_MULSATRNDWH_W,
29546 + AVR32_MNEMONIC_MULSATWH_W,
29547 + AVR32_MNEMONIC_MULU_D,
29548 + AVR32_MNEMONIC_MULWH_D,
29549 + AVR32_MNEMONIC_MUSFR,
29550 + AVR32_MNEMONIC_MUSTR,
29551 + AVR32_MNEMONIC_MVCR_D,
29552 + AVR32_MNEMONIC_MVCR_W,
29553 + AVR32_MNEMONIC_MVRC_D,
29554 + AVR32_MNEMONIC_MVRC_W,
29555 + AVR32_MNEMONIC_NEG,
29556 + AVR32_MNEMONIC_NOP,
29557 + AVR32_MNEMONIC_OR,
29558 + AVR32_MNEMONIC_ORH,
29559 + AVR32_MNEMONIC_ORL,
29560 + AVR32_MNEMONIC_PABS_SB,
29561 + AVR32_MNEMONIC_PABS_SH,
29562 + AVR32_MNEMONIC_PACKSH_SB,
29563 + AVR32_MNEMONIC_PACKSH_UB,
29564 + AVR32_MNEMONIC_PACKW_SH,
29565 + AVR32_MNEMONIC_PADD_B,
29566 + AVR32_MNEMONIC_PADD_H,
29567 + AVR32_MNEMONIC_PADDH_SH,
29568 + AVR32_MNEMONIC_PADDH_UB,
29569 + AVR32_MNEMONIC_PADDS_SB,
29570 + AVR32_MNEMONIC_PADDS_SH,
29571 + AVR32_MNEMONIC_PADDS_UB,
29572 + AVR32_MNEMONIC_PADDS_UH,
29573 + AVR32_MNEMONIC_PADDSUB_H,
29574 + AVR32_MNEMONIC_PADDSUBH_SH,
29575 + AVR32_MNEMONIC_PADDSUBS_SH,
29576 + AVR32_MNEMONIC_PADDSUBS_UH,
29577 + AVR32_MNEMONIC_PADDX_H,
29578 + AVR32_MNEMONIC_PADDXH_SH,
29579 + AVR32_MNEMONIC_PADDXS_SH,
29580 + AVR32_MNEMONIC_PADDXS_UH,
29581 + AVR32_MNEMONIC_PASR_B,
29582 + AVR32_MNEMONIC_PASR_H,
29583 + AVR32_MNEMONIC_PAVG_SH,
29584 + AVR32_MNEMONIC_PAVG_UB,
29585 + AVR32_MNEMONIC_PLSL_B,
29586 + AVR32_MNEMONIC_PLSL_H,
29587 + AVR32_MNEMONIC_PLSR_B,
29588 + AVR32_MNEMONIC_PLSR_H,
29589 + AVR32_MNEMONIC_PMAX_SH,
29590 + AVR32_MNEMONIC_PMAX_UB,
29591 + AVR32_MNEMONIC_PMIN_SH,
29592 + AVR32_MNEMONIC_PMIN_UB,
29593 + AVR32_MNEMONIC_POPJC,
29594 + AVR32_MNEMONIC_POPM,
29595 + AVR32_MNEMONIC_PREF,
29596 + AVR32_MNEMONIC_PSAD,
29597 + AVR32_MNEMONIC_PSUB_B,
29598 + AVR32_MNEMONIC_PSUB_H,
29599 + AVR32_MNEMONIC_PSUBADD_H,
29600 + AVR32_MNEMONIC_PSUBADDH_SH,
29601 + AVR32_MNEMONIC_PSUBADDS_SH,
29602 + AVR32_MNEMONIC_PSUBADDS_UH,
29603 + AVR32_MNEMONIC_PSUBH_SH,
29604 + AVR32_MNEMONIC_PSUBH_UB,
29605 + AVR32_MNEMONIC_PSUBS_SB,
29606 + AVR32_MNEMONIC_PSUBS_SH,
29607 + AVR32_MNEMONIC_PSUBS_UB,
29608 + AVR32_MNEMONIC_PSUBS_UH,
29609 + AVR32_MNEMONIC_PSUBX_H,
29610 + AVR32_MNEMONIC_PSUBXH_SH,
29611 + AVR32_MNEMONIC_PSUBXS_SH,
29612 + AVR32_MNEMONIC_PSUBXS_UH,
29613 + AVR32_MNEMONIC_PUNPCKSB_H,
29614 + AVR32_MNEMONIC_PUNPCKUB_H,
29615 + AVR32_MNEMONIC_PUSHJC,
29616 + AVR32_MNEMONIC_PUSHM,
29617 + AVR32_MNEMONIC_RCALL,
29618 + AVR32_MNEMONIC_RETEQ,
29619 + AVR32_MNEMONIC_RETNE,
29620 + AVR32_MNEMONIC_RETCC,
29621 + AVR32_MNEMONIC_RETCS,
29622 + AVR32_MNEMONIC_RETGE,
29623 + AVR32_MNEMONIC_RETLT,
29624 + AVR32_MNEMONIC_RETMI,
29625 + AVR32_MNEMONIC_RETPL,
29626 + AVR32_MNEMONIC_RETLS,
29627 + AVR32_MNEMONIC_RETGT,
29628 + AVR32_MNEMONIC_RETLE,
29629 + AVR32_MNEMONIC_RETHI,
29630 + AVR32_MNEMONIC_RETVS,
29631 + AVR32_MNEMONIC_RETVC,
29632 + AVR32_MNEMONIC_RETQS,
29633 + AVR32_MNEMONIC_RETAL,
29634 + AVR32_MNEMONIC_RETHS,
29635 + AVR32_MNEMONIC_RETLO,
29636 + AVR32_MNEMONIC_RET,
29637 + AVR32_MNEMONIC_RETD,
29638 + AVR32_MNEMONIC_RETE,
29639 + AVR32_MNEMONIC_RETJ,
29640 + AVR32_MNEMONIC_RETS,
29641 + AVR32_MNEMONIC_RJMP,
29642 + AVR32_MNEMONIC_ROL,
29643 + AVR32_MNEMONIC_ROR,
29644 + AVR32_MNEMONIC_RSUB,
29645 + AVR32_MNEMONIC_SATADD_H,
29646 + AVR32_MNEMONIC_SATADD_W,
29647 + AVR32_MNEMONIC_SATRNDS,
29648 + AVR32_MNEMONIC_SATRNDU,
29649 + AVR32_MNEMONIC_SATS,
29650 + AVR32_MNEMONIC_SATSUB_H,
29651 + AVR32_MNEMONIC_SATSUB_W,
29652 + AVR32_MNEMONIC_SATU,
29653 + AVR32_MNEMONIC_SBC,
29654 + AVR32_MNEMONIC_SBR,
29655 + AVR32_MNEMONIC_SCALL,
29656 + AVR32_MNEMONIC_SCR,
29657 + AVR32_MNEMONIC_SLEEP,
29658 + AVR32_MNEMONIC_SREQ,
29659 + AVR32_MNEMONIC_SRNE,
29660 + AVR32_MNEMONIC_SRCC,
29661 + AVR32_MNEMONIC_SRCS,
29662 + AVR32_MNEMONIC_SRGE,
29663 + AVR32_MNEMONIC_SRLT,
29664 + AVR32_MNEMONIC_SRMI,
29665 + AVR32_MNEMONIC_SRPL,
29666 + AVR32_MNEMONIC_SRLS,
29667 + AVR32_MNEMONIC_SRGT,
29668 + AVR32_MNEMONIC_SRLE,
29669 + AVR32_MNEMONIC_SRHI,
29670 + AVR32_MNEMONIC_SRVS,
29671 + AVR32_MNEMONIC_SRVC,
29672 + AVR32_MNEMONIC_SRQS,
29673 + AVR32_MNEMONIC_SRAL,
29674 + AVR32_MNEMONIC_SRHS,
29675 + AVR32_MNEMONIC_SRLO,
29676 + AVR32_MNEMONIC_SSRF,
29677 + AVR32_MNEMONIC_ST_B,
29678 + AVR32_MNEMONIC_ST_D,
29679 + AVR32_MNEMONIC_ST_H,
29680 + AVR32_MNEMONIC_ST_W,
29681 + AVR32_MNEMONIC_STC_D,
29682 + AVR32_MNEMONIC_STC_W,
29683 + AVR32_MNEMONIC_STC0_D,
29684 + AVR32_MNEMONIC_STC0_W,
29685 + AVR32_MNEMONIC_STCM_D,
29686 + AVR32_MNEMONIC_STCM_W,
29687 + AVR32_MNEMONIC_STCOND,
29688 + AVR32_MNEMONIC_STDSP,
29689 + AVR32_MNEMONIC_STHH_W,
29690 + AVR32_MNEMONIC_STM,
29691 + AVR32_MNEMONIC_STMTS,
29692 + AVR32_MNEMONIC_STSWP_H,
29693 + AVR32_MNEMONIC_STSWP_W,
29694 + AVR32_MNEMONIC_SUB,
29695 + AVR32_MNEMONIC_SUBEQ,
29696 + AVR32_MNEMONIC_SUBNE,
29697 + AVR32_MNEMONIC_SUBCC,
29698 + AVR32_MNEMONIC_SUBCS,
29699 + AVR32_MNEMONIC_SUBGE,
29700 + AVR32_MNEMONIC_SUBLT,
29701 + AVR32_MNEMONIC_SUBMI,
29702 + AVR32_MNEMONIC_SUBPL,
29703 + AVR32_MNEMONIC_SUBLS,
29704 + AVR32_MNEMONIC_SUBGT,
29705 + AVR32_MNEMONIC_SUBLE,
29706 + AVR32_MNEMONIC_SUBHI,
29707 + AVR32_MNEMONIC_SUBVS,
29708 + AVR32_MNEMONIC_SUBVC,
29709 + AVR32_MNEMONIC_SUBQS,
29710 + AVR32_MNEMONIC_SUBAL,
29711 + AVR32_MNEMONIC_SUBHS,
29712 + AVR32_MNEMONIC_SUBLO,
29713 + AVR32_MNEMONIC_SUBFEQ,
29714 + AVR32_MNEMONIC_SUBFNE,
29715 + AVR32_MNEMONIC_SUBFCC,
29716 + AVR32_MNEMONIC_SUBFCS,
29717 + AVR32_MNEMONIC_SUBFGE,
29718 + AVR32_MNEMONIC_SUBFLT,
29719 + AVR32_MNEMONIC_SUBFMI,
29720 + AVR32_MNEMONIC_SUBFPL,
29721 + AVR32_MNEMONIC_SUBFLS,
29722 + AVR32_MNEMONIC_SUBFGT,
29723 + AVR32_MNEMONIC_SUBFLE,
29724 + AVR32_MNEMONIC_SUBFHI,
29725 + AVR32_MNEMONIC_SUBFVS,
29726 + AVR32_MNEMONIC_SUBFVC,
29727 + AVR32_MNEMONIC_SUBFQS,
29728 + AVR32_MNEMONIC_SUBFAL,
29729 + AVR32_MNEMONIC_SUBFHS,
29730 + AVR32_MNEMONIC_SUBFLO,
29731 + AVR32_MNEMONIC_SUBHH_W,
29732 + AVR32_MNEMONIC_SWAP_B,
29733 + AVR32_MNEMONIC_SWAP_BH,
29734 + AVR32_MNEMONIC_SWAP_H,
29735 + AVR32_MNEMONIC_SYNC,
29736 + AVR32_MNEMONIC_TLBR,
29737 + AVR32_MNEMONIC_TLBS,
29738 + AVR32_MNEMONIC_TLBW,
29739 + AVR32_MNEMONIC_TNBZ,
29740 + AVR32_MNEMONIC_TST,
29741 + AVR32_MNEMONIC_XCHG,
29742 + AVR32_MNEMONIC_MEMC,
29743 + AVR32_MNEMONIC_MEMS,
29744 + AVR32_MNEMONIC_MEMT,
29745 + AVR32_MNEMONIC_FADD_S,
29746 + AVR32_MNEMONIC_FADD_D,
29747 + AVR32_MNEMONIC_FSUB_S,
29748 + AVR32_MNEMONIC_FSUB_D,
29749 + AVR32_MNEMONIC_FMAC_S,
29750 + AVR32_MNEMONIC_FMAC_D,
29751 + AVR32_MNEMONIC_FNMAC_S,
29752 + AVR32_MNEMONIC_FNMAC_D,
29753 + AVR32_MNEMONIC_FMSC_S,
29754 + AVR32_MNEMONIC_FMSC_D,
29755 + AVR32_MNEMONIC_FNMSC_S,
29756 + AVR32_MNEMONIC_FNMSC_D,
29757 + AVR32_MNEMONIC_FMUL_S,
29758 + AVR32_MNEMONIC_FMUL_D,
29759 + AVR32_MNEMONIC_FNMUL_S,
29760 + AVR32_MNEMONIC_FNMUL_D,
29761 + AVR32_MNEMONIC_FNEG_S,
29762 + AVR32_MNEMONIC_FNEG_D,
29763 + AVR32_MNEMONIC_FABS_S,
29764 + AVR32_MNEMONIC_FABS_D,
29765 + AVR32_MNEMONIC_FCMP_S,
29766 + AVR32_MNEMONIC_FCMP_D,
29767 + AVR32_MNEMONIC_FMOV_S,
29768 + AVR32_MNEMONIC_FMOV_D,
29769 + AVR32_MNEMONIC_FCASTS_D,
29770 + AVR32_MNEMONIC_FCASTD_S,
29771 + /* AVR32_MNEMONIC_FLD_S,
29772 + AVR32_MNEMONIC_FLD_D,
29773 + AVR32_MNEMONIC_FST_S,
29774 + AVR32_MNEMONIC_FST_D, */
29775 + AVR32_MNEMONIC_LDA_W,
29776 + AVR32_MNEMONIC_CALL,
29777 + AVR32_MNEMONIC_PICOSVMAC,
29778 + AVR32_MNEMONIC_PICOSVMUL,
29779 + AVR32_MNEMONIC_PICOVMAC,
29780 + AVR32_MNEMONIC_PICOVMUL,
29781 + AVR32_MNEMONIC_PICOLD_D,
29782 + AVR32_MNEMONIC_PICOLD_W,
29783 + AVR32_MNEMONIC_PICOLDM_D,
29784 + AVR32_MNEMONIC_PICOLDM_W,
29785 + AVR32_MNEMONIC_PICOMV_D,
29786 + AVR32_MNEMONIC_PICOMV_W,
29787 + AVR32_MNEMONIC_PICOST_D,
29788 + AVR32_MNEMONIC_PICOST_W,
29789 + AVR32_MNEMONIC_PICOSTM_D,
29790 + AVR32_MNEMONIC_PICOSTM_W,
29791 + AVR32_MNEMONIC_RSUBEQ,
29792 + AVR32_MNEMONIC_RSUBNE,
29793 + AVR32_MNEMONIC_RSUBCC,
29794 + AVR32_MNEMONIC_RSUBCS,
29795 + AVR32_MNEMONIC_RSUBGE,
29796 + AVR32_MNEMONIC_RSUBLT,
29797 + AVR32_MNEMONIC_RSUBMI,
29798 + AVR32_MNEMONIC_RSUBPL,
29799 + AVR32_MNEMONIC_RSUBLS,
29800 + AVR32_MNEMONIC_RSUBGT,
29801 + AVR32_MNEMONIC_RSUBLE,
29802 + AVR32_MNEMONIC_RSUBHI,
29803 + AVR32_MNEMONIC_RSUBVS,
29804 + AVR32_MNEMONIC_RSUBVC,
29805 + AVR32_MNEMONIC_RSUBQS,
29806 + AVR32_MNEMONIC_RSUBAL,
29807 + AVR32_MNEMONIC_RSUBHS,
29808 + AVR32_MNEMONIC_RSUBLO,
29809 + AVR32_MNEMONIC_ADDEQ,
29810 + AVR32_MNEMONIC_ADDNE,
29811 + AVR32_MNEMONIC_ADDCC,
29812 + AVR32_MNEMONIC_ADDCS,
29813 + AVR32_MNEMONIC_ADDGE,
29814 + AVR32_MNEMONIC_ADDLT,
29815 + AVR32_MNEMONIC_ADDMI,
29816 + AVR32_MNEMONIC_ADDPL,
29817 + AVR32_MNEMONIC_ADDLS,
29818 + AVR32_MNEMONIC_ADDGT,
29819 + AVR32_MNEMONIC_ADDLE,
29820 + AVR32_MNEMONIC_ADDHI,
29821 + AVR32_MNEMONIC_ADDVS,
29822 + AVR32_MNEMONIC_ADDVC,
29823 + AVR32_MNEMONIC_ADDQS,
29824 + AVR32_MNEMONIC_ADDAL,
29825 + AVR32_MNEMONIC_ADDHS,
29826 + AVR32_MNEMONIC_ADDLO,
29827 + AVR32_MNEMONIC_ANDEQ,
29828 + AVR32_MNEMONIC_ANDNE,
29829 + AVR32_MNEMONIC_ANDCC,
29830 + AVR32_MNEMONIC_ANDCS,
29831 + AVR32_MNEMONIC_ANDGE,
29832 + AVR32_MNEMONIC_ANDLT,
29833 + AVR32_MNEMONIC_ANDMI,
29834 + AVR32_MNEMONIC_ANDPL,
29835 + AVR32_MNEMONIC_ANDLS,
29836 + AVR32_MNEMONIC_ANDGT,
29837 + AVR32_MNEMONIC_ANDLE,
29838 + AVR32_MNEMONIC_ANDHI,
29839 + AVR32_MNEMONIC_ANDVS,
29840 + AVR32_MNEMONIC_ANDVC,
29841 + AVR32_MNEMONIC_ANDQS,
29842 + AVR32_MNEMONIC_ANDAL,
29843 + AVR32_MNEMONIC_ANDHS,
29844 + AVR32_MNEMONIC_ANDLO,
29845 + AVR32_MNEMONIC_OREQ,
29846 + AVR32_MNEMONIC_ORNE,
29847 + AVR32_MNEMONIC_ORCC,
29848 + AVR32_MNEMONIC_ORCS,
29849 + AVR32_MNEMONIC_ORGE,
29850 + AVR32_MNEMONIC_ORLT,
29851 + AVR32_MNEMONIC_ORMI,
29852 + AVR32_MNEMONIC_ORPL,
29853 + AVR32_MNEMONIC_ORLS,
29854 + AVR32_MNEMONIC_ORGT,
29855 + AVR32_MNEMONIC_ORLE,
29856 + AVR32_MNEMONIC_ORHI,
29857 + AVR32_MNEMONIC_ORVS,
29858 + AVR32_MNEMONIC_ORVC,
29859 + AVR32_MNEMONIC_ORQS,
29860 + AVR32_MNEMONIC_ORAL,
29861 + AVR32_MNEMONIC_ORHS,
29862 + AVR32_MNEMONIC_ORLO,
29863 + AVR32_MNEMONIC_EOREQ,
29864 + AVR32_MNEMONIC_EORNE,
29865 + AVR32_MNEMONIC_EORCC,
29866 + AVR32_MNEMONIC_EORCS,
29867 + AVR32_MNEMONIC_EORGE,
29868 + AVR32_MNEMONIC_EORLT,
29869 + AVR32_MNEMONIC_EORMI,
29870 + AVR32_MNEMONIC_EORPL,
29871 + AVR32_MNEMONIC_EORLS,
29872 + AVR32_MNEMONIC_EORGT,
29873 + AVR32_MNEMONIC_EORLE,
29874 + AVR32_MNEMONIC_EORHI,
29875 + AVR32_MNEMONIC_EORVS,
29876 + AVR32_MNEMONIC_EORVC,
29877 + AVR32_MNEMONIC_EORQS,
29878 + AVR32_MNEMONIC_EORAL,
29879 + AVR32_MNEMONIC_EORHS,
29880 + AVR32_MNEMONIC_EORLO,
29881 + AVR32_MNEMONIC_LD_WEQ,
29882 + AVR32_MNEMONIC_LD_WNE,
29883 + AVR32_MNEMONIC_LD_WCC,
29884 + AVR32_MNEMONIC_LD_WCS,
29885 + AVR32_MNEMONIC_LD_WGE,
29886 + AVR32_MNEMONIC_LD_WLT,
29887 + AVR32_MNEMONIC_LD_WMI,
29888 + AVR32_MNEMONIC_LD_WPL,
29889 + AVR32_MNEMONIC_LD_WLS,
29890 + AVR32_MNEMONIC_LD_WGT,
29891 + AVR32_MNEMONIC_LD_WLE,
29892 + AVR32_MNEMONIC_LD_WHI,
29893 + AVR32_MNEMONIC_LD_WVS,
29894 + AVR32_MNEMONIC_LD_WVC,
29895 + AVR32_MNEMONIC_LD_WQS,
29896 + AVR32_MNEMONIC_LD_WAL,
29897 + AVR32_MNEMONIC_LD_WHS,
29898 + AVR32_MNEMONIC_LD_WLO,
29899 + AVR32_MNEMONIC_LD_SHEQ,
29900 + AVR32_MNEMONIC_LD_SHNE,
29901 + AVR32_MNEMONIC_LD_SHCC,
29902 + AVR32_MNEMONIC_LD_SHCS,
29903 + AVR32_MNEMONIC_LD_SHGE,
29904 + AVR32_MNEMONIC_LD_SHLT,
29905 + AVR32_MNEMONIC_LD_SHMI,
29906 + AVR32_MNEMONIC_LD_SHPL,
29907 + AVR32_MNEMONIC_LD_SHLS,
29908 + AVR32_MNEMONIC_LD_SHGT,
29909 + AVR32_MNEMONIC_LD_SHLE,
29910 + AVR32_MNEMONIC_LD_SHHI,
29911 + AVR32_MNEMONIC_LD_SHVS,
29912 + AVR32_MNEMONIC_LD_SHVC,
29913 + AVR32_MNEMONIC_LD_SHQS,
29914 + AVR32_MNEMONIC_LD_SHAL,
29915 + AVR32_MNEMONIC_LD_SHHS,
29916 + AVR32_MNEMONIC_LD_SHLO,
29917 + AVR32_MNEMONIC_LD_UHEQ,
29918 + AVR32_MNEMONIC_LD_UHNE,
29919 + AVR32_MNEMONIC_LD_UHCC,
29920 + AVR32_MNEMONIC_LD_UHCS,
29921 + AVR32_MNEMONIC_LD_UHGE,
29922 + AVR32_MNEMONIC_LD_UHLT,
29923 + AVR32_MNEMONIC_LD_UHMI,
29924 + AVR32_MNEMONIC_LD_UHPL,
29925 + AVR32_MNEMONIC_LD_UHLS,
29926 + AVR32_MNEMONIC_LD_UHGT,
29927 + AVR32_MNEMONIC_LD_UHLE,
29928 + AVR32_MNEMONIC_LD_UHHI,
29929 + AVR32_MNEMONIC_LD_UHVS,
29930 + AVR32_MNEMONIC_LD_UHVC,
29931 + AVR32_MNEMONIC_LD_UHQS,
29932 + AVR32_MNEMONIC_LD_UHAL,
29933 + AVR32_MNEMONIC_LD_UHHS,
29934 + AVR32_MNEMONIC_LD_UHLO,
29935 + AVR32_MNEMONIC_LD_SBEQ,
29936 + AVR32_MNEMONIC_LD_SBNE,
29937 + AVR32_MNEMONIC_LD_SBCC,
29938 + AVR32_MNEMONIC_LD_SBCS,
29939 + AVR32_MNEMONIC_LD_SBGE,
29940 + AVR32_MNEMONIC_LD_SBLT,
29941 + AVR32_MNEMONIC_LD_SBMI,
29942 + AVR32_MNEMONIC_LD_SBPL,
29943 + AVR32_MNEMONIC_LD_SBLS,
29944 + AVR32_MNEMONIC_LD_SBGT,
29945 + AVR32_MNEMONIC_LD_SBLE,
29946 + AVR32_MNEMONIC_LD_SBHI,
29947 + AVR32_MNEMONIC_LD_SBVS,
29948 + AVR32_MNEMONIC_LD_SBVC,
29949 + AVR32_MNEMONIC_LD_SBQS,
29950 + AVR32_MNEMONIC_LD_SBAL,
29951 + AVR32_MNEMONIC_LD_SBHS,
29952 + AVR32_MNEMONIC_LD_SBLO,
29953 + AVR32_MNEMONIC_LD_UBEQ,
29954 + AVR32_MNEMONIC_LD_UBNE,
29955 + AVR32_MNEMONIC_LD_UBCC,
29956 + AVR32_MNEMONIC_LD_UBCS,
29957 + AVR32_MNEMONIC_LD_UBGE,
29958 + AVR32_MNEMONIC_LD_UBLT,
29959 + AVR32_MNEMONIC_LD_UBMI,
29960 + AVR32_MNEMONIC_LD_UBPL,
29961 + AVR32_MNEMONIC_LD_UBLS,
29962 + AVR32_MNEMONIC_LD_UBGT,
29963 + AVR32_MNEMONIC_LD_UBLE,
29964 + AVR32_MNEMONIC_LD_UBHI,
29965 + AVR32_MNEMONIC_LD_UBVS,
29966 + AVR32_MNEMONIC_LD_UBVC,
29967 + AVR32_MNEMONIC_LD_UBQS,
29968 + AVR32_MNEMONIC_LD_UBAL,
29969 + AVR32_MNEMONIC_LD_UBHS,
29970 + AVR32_MNEMONIC_LD_UBLO,
29971 + AVR32_MNEMONIC_ST_WEQ,
29972 + AVR32_MNEMONIC_ST_WNE,
29973 + AVR32_MNEMONIC_ST_WCC,
29974 + AVR32_MNEMONIC_ST_WCS,
29975 + AVR32_MNEMONIC_ST_WGE,
29976 + AVR32_MNEMONIC_ST_WLT,
29977 + AVR32_MNEMONIC_ST_WMI,
29978 + AVR32_MNEMONIC_ST_WPL,
29979 + AVR32_MNEMONIC_ST_WLS,
29980 + AVR32_MNEMONIC_ST_WGT,
29981 + AVR32_MNEMONIC_ST_WLE,
29982 + AVR32_MNEMONIC_ST_WHI,
29983 + AVR32_MNEMONIC_ST_WVS,
29984 + AVR32_MNEMONIC_ST_WVC,
29985 + AVR32_MNEMONIC_ST_WQS,
29986 + AVR32_MNEMONIC_ST_WAL,
29987 + AVR32_MNEMONIC_ST_WHS,
29988 + AVR32_MNEMONIC_ST_WLO,
29989 + AVR32_MNEMONIC_ST_HEQ,
29990 + AVR32_MNEMONIC_ST_HNE,
29991 + AVR32_MNEMONIC_ST_HCC,
29992 + AVR32_MNEMONIC_ST_HCS,
29993 + AVR32_MNEMONIC_ST_HGE,
29994 + AVR32_MNEMONIC_ST_HLT,
29995 + AVR32_MNEMONIC_ST_HMI,
29996 + AVR32_MNEMONIC_ST_HPL,
29997 + AVR32_MNEMONIC_ST_HLS,
29998 + AVR32_MNEMONIC_ST_HGT,
29999 + AVR32_MNEMONIC_ST_HLE,
30000 + AVR32_MNEMONIC_ST_HHI,
30001 + AVR32_MNEMONIC_ST_HVS,
30002 + AVR32_MNEMONIC_ST_HVC,
30003 + AVR32_MNEMONIC_ST_HQS,
30004 + AVR32_MNEMONIC_ST_HAL,
30005 + AVR32_MNEMONIC_ST_HHS,
30006 + AVR32_MNEMONIC_ST_HLO,
30007 + AVR32_MNEMONIC_ST_BEQ,
30008 + AVR32_MNEMONIC_ST_BNE,
30009 + AVR32_MNEMONIC_ST_BCC,
30010 + AVR32_MNEMONIC_ST_BCS,
30011 + AVR32_MNEMONIC_ST_BGE,
30012 + AVR32_MNEMONIC_ST_BLT,
30013 + AVR32_MNEMONIC_ST_BMI,
30014 + AVR32_MNEMONIC_ST_BPL,
30015 + AVR32_MNEMONIC_ST_BLS,
30016 + AVR32_MNEMONIC_ST_BGT,
30017 + AVR32_MNEMONIC_ST_BLE,
30018 + AVR32_MNEMONIC_ST_BHI,
30019 + AVR32_MNEMONIC_ST_BVS,
30020 + AVR32_MNEMONIC_ST_BVC,
30021 + AVR32_MNEMONIC_ST_BQS,
30022 + AVR32_MNEMONIC_ST_BAL,
30023 + AVR32_MNEMONIC_ST_BHS,
30024 + AVR32_MNEMONIC_ST_BLO,
30025 + AVR32_MNEMONIC_MOVH,
30026 + AVR32_MNEMONIC__END_
30027 +};
30028 +#define AVR32_NR_MNEMONICS AVR32_MNEMONIC__END_
30029 +
30030 +enum avr32_syntax_parser
30031 + {
30032 + AVR32_PARSER_NORMAL,
30033 + AVR32_PARSER_ALIAS,
30034 + AVR32_PARSER_LDA,
30035 + AVR32_PARSER_CALL,
30036 + AVR32_PARSER__END_
30037 + };
30038 +#define AVR32_NR_PARSERS AVR32_PARSER__END_
30039 --- a/opcodes/configure.in
30040 +++ b/opcodes/configure.in
30041 @@ -158,6 +158,7 @@ if test x${all_targets} = xfalse ; then
30042 bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
30043 bfd_arm_arch) ta="$ta arm-dis.lo" ;;
30044 bfd_avr_arch) ta="$ta avr-dis.lo" ;;
30045 + bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
30046 bfd_bfin_arch) ta="$ta bfin-dis.lo" ;;
30047 bfd_cr16_arch) ta="$ta cr16-dis.lo cr16-opc.lo" ;;
30048 bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
30049 @@ -216,7 +217,7 @@ if test x${all_targets} = xfalse ; then
30050 ta="$ta sh64-dis.lo sh64-opc.lo"
30051 archdefs="$archdefs -DINCLUDE_SHMEDIA"
30052 break;;
30053 - esac;
30054 + esac
30055 done
30056 ta="$ta sh-dis.lo cgen-bitset.lo" ;;
30057 bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
30058 --- a/opcodes/disassemble.c
30059 +++ b/opcodes/disassemble.c
30060 @@ -27,6 +27,7 @@
30061 #define ARCH_arc
30062 #define ARCH_arm
30063 #define ARCH_avr
30064 +#define ARCH_avr32
30065 #define ARCH_bfin
30066 #define ARCH_cr16
30067 #define ARCH_cris
30068 @@ -128,6 +129,11 @@ disassembler (abfd)
30069 disassemble = print_insn_avr;
30070 break;
30071 #endif
30072 +#ifdef ARCH_avr32
30073 + case bfd_arch_avr32:
30074 + disassemble = print_insn_avr32;
30075 + break;
30076 +#endif
30077 #ifdef ARCH_bfin
30078 case bfd_arch_bfin:
30079 disassemble = print_insn_bfin;
30080 @@ -346,9 +352,9 @@ disassembler (abfd)
30081 #ifdef ARCH_score
30082 case bfd_arch_score:
30083 if (bfd_big_endian (abfd))
30084 - disassemble = print_insn_big_score;
30085 + disassemble = print_insn_big_score;
30086 else
30087 - disassemble = print_insn_little_score;
30088 + disassemble = print_insn_little_score;
30089 break;
30090 #endif
30091 #ifdef ARCH_sh
30092 @@ -466,6 +472,9 @@ disassembler_usage (stream)
30093 #ifdef ARCH_i386
30094 print_i386_disassembler_options (stream);
30095 #endif
30096 +#ifdef ARCH_avr32
30097 + print_avr32_disassembler_options (stream);
30098 +#endif
30099
30100 return;
30101 }
30102 --- a/opcodes/Makefile.am
30103 +++ b/opcodes/Makefile.am
30104 @@ -30,6 +30,7 @@ LIBIBERTY = ../libiberty/libiberty.a
30105 # Header files.
30106 HFILES = \
30107 cgen-ops.h cgen-types.h \
30108 + avr32-asm.h avr32-opc.h \
30109 fr30-desc.h fr30-opc.h \
30110 frv-desc.h frv-opc.h \
30111 h8500-opc.h \
30112 @@ -63,6 +64,9 @@ CFILES = \
30113 arc-ext.c \
30114 arm-dis.c \
30115 avr-dis.c \
30116 + avr32-asm.c \
30117 + avr32-dis.c \
30118 + avr32-opc.c \
30119 bfin-dis.c \
30120 cgen-asm.c \
30121 cgen-bitset.c \
30122 @@ -217,6 +221,9 @@ ALL_MACHINES = \
30123 arc-ext.lo \
30124 arm-dis.lo \
30125 avr-dis.lo \
30126 + avr32-asm.lo \
30127 + avr32-dis.lo \
30128 + avr32-opc.lo \
30129 bfin-dis.lo \
30130 cgen-asm.lo \
30131 cgen-bitset.lo \
30132 @@ -674,6 +681,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h
30133 $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
30134 opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
30135 $(INCDIR)/opcode/avr.h
30136 +avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
30137 + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
30138 + $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
30139 + $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
30140 +avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
30141 + $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
30142 + avr32-opc.h opintl.h
30143 +avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
30144 + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
30145 bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
30146 $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
30147 cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
30148 --- a/bfd/bfd-in2.h
30149 +++ b/bfd/bfd-in2.h
30150 @@ -2017,6 +2017,11 @@ enum bfd_architecture
30151 #define bfd_mach_avr4 4
30152 #define bfd_mach_avr5 5
30153 #define bfd_mach_avr6 6
30154 + bfd_arch_avr32, /* Atmel AVR32 */
30155 +#define bfd_mach_avr32_ap 7000
30156 +#define bfd_mach_avr32_uc 3000
30157 +#define bfd_mach_avr32_ucr1 3001
30158 +#define bfd_mach_avr32_ucr2 3002
30159 bfd_arch_bfin, /* ADI Blackfin */
30160 #define bfd_mach_bfin 1
30161 bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
30162 @@ -3758,6 +3763,88 @@ instructions */
30163 instructions */
30164 BFD_RELOC_AVR_6_ADIW,
30165
30166 +/* Difference between two labels: L2 - L1. The value of L1 is encoded
30167 +as sym + addend, while the initial difference after assembly is
30168 +inserted into the object file by the assembler. */
30169 + BFD_RELOC_AVR32_DIFF32,
30170 + BFD_RELOC_AVR32_DIFF16,
30171 + BFD_RELOC_AVR32_DIFF8,
30172 +
30173 +/* Reference to a symbol through the Global Offset Table. The linker
30174 +will allocate an entry for symbol in the GOT and insert the offset
30175 +of this entry as the relocation value. */
30176 + BFD_RELOC_AVR32_GOT32,
30177 + BFD_RELOC_AVR32_GOT16,
30178 + BFD_RELOC_AVR32_GOT8,
30179 +
30180 +/* Normal (non-pc-relative) code relocations. Alignment and signedness
30181 +is indicated by the suffixes. S means signed, U means unsigned. W
30182 +means word-aligned, H means halfword-aligned, neither means
30183 +byte-aligned (no alignment.) SUB5 is the same relocation as 16S. */
30184 + BFD_RELOC_AVR32_21S,
30185 + BFD_RELOC_AVR32_16U,
30186 + BFD_RELOC_AVR32_16S,
30187 + BFD_RELOC_AVR32_SUB5,
30188 + BFD_RELOC_AVR32_8S_EXT,
30189 + BFD_RELOC_AVR32_8S,
30190 + BFD_RELOC_AVR32_15S,
30191 +
30192 +/* PC-relative relocations are signed if neither 'U' nor 'S' is
30193 +specified. However, we explicitly tack on a 'B' to indicate no
30194 +alignment, to avoid confusion with data relocs. All of these resolve
30195 +to sym + addend - offset, except the one with 'N' (negated) suffix.
30196 +This particular one resolves to offset - sym - addend. */
30197 + BFD_RELOC_AVR32_22H_PCREL,
30198 + BFD_RELOC_AVR32_18W_PCREL,
30199 + BFD_RELOC_AVR32_16B_PCREL,
30200 + BFD_RELOC_AVR32_16N_PCREL,
30201 + BFD_RELOC_AVR32_14UW_PCREL,
30202 + BFD_RELOC_AVR32_11H_PCREL,
30203 + BFD_RELOC_AVR32_10UW_PCREL,
30204 + BFD_RELOC_AVR32_9H_PCREL,
30205 + BFD_RELOC_AVR32_9UW_PCREL,
30206 +
30207 +/* Subtract the link-time address of the GOT from (symbol + addend)
30208 +and insert the result. */
30209 + BFD_RELOC_AVR32_GOTPC,
30210 +
30211 +/* Reference to a symbol through the GOT. The linker will allocate an
30212 +entry for symbol in the GOT and insert the offset of this entry as
30213 +the relocation value. addend must be zero. As usual, 'S' means
30214 +signed, 'W' means word-aligned, etc. */
30215 + BFD_RELOC_AVR32_GOTCALL,
30216 + BFD_RELOC_AVR32_LDA_GOT,
30217 + BFD_RELOC_AVR32_GOT21S,
30218 + BFD_RELOC_AVR32_GOT18SW,
30219 + BFD_RELOC_AVR32_GOT16S,
30220 +
30221 +/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
30222 +a whole lot of sense. */
30223 + BFD_RELOC_AVR32_32_CPENT,
30224 +
30225 +/* Constant pool references. Some of these relocations are signed,
30226 +others are unsigned. It doesn't really matter, since the constant
30227 +pool always comes after the code that references it. */
30228 + BFD_RELOC_AVR32_CPCALL,
30229 + BFD_RELOC_AVR32_16_CP,
30230 + BFD_RELOC_AVR32_9W_CP,
30231 +
30232 +/* sym must be the absolute symbol. The addend specifies the alignment
30233 +order, e.g. if addend is 2, the linker must add padding so that the
30234 +next address is aligned to a 4-byte boundary. */
30235 + BFD_RELOC_AVR32_ALIGN,
30236 +
30237 +/* Code relocations that will never make it to the output file. */
30238 + BFD_RELOC_AVR32_14UW,
30239 + BFD_RELOC_AVR32_10UW,
30240 + BFD_RELOC_AVR32_10SW,
30241 + BFD_RELOC_AVR32_STHH_W,
30242 + BFD_RELOC_AVR32_7UW,
30243 + BFD_RELOC_AVR32_6S,
30244 + BFD_RELOC_AVR32_6UW,
30245 + BFD_RELOC_AVR32_4UH,
30246 + BFD_RELOC_AVR32_3U,
30247 +
30248 /* Direct 12 bit. */
30249 BFD_RELOC_390_12,
30250
30251 --- /dev/null
30252 +++ b/bfd/bfd-in3.h
30253 @@ -0,0 +1,5406 @@
30254 +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
30255 + generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
30256 + "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
30257 + "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
30258 + "linker.c" and "simple.c".
30259 + Run "make headers" in your build bfd/ to regenerate. */
30260 +
30261 +/* Main header file for the bfd library -- portable access to object files.
30262 +
30263 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
30264 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
30265 + Free Software Foundation, Inc.
30266 +
30267 + Contributed by Cygnus Support.
30268 +
30269 + This file is part of BFD, the Binary File Descriptor library.
30270 +
30271 + This program is free software; you can redistribute it and/or modify
30272 + it under the terms of the GNU General Public License as published by
30273 + the Free Software Foundation; either version 3 of the License, or
30274 + (at your option) any later version.
30275 +
30276 + This program is distributed in the hope that it will be useful,
30277 + but WITHOUT ANY WARRANTY; without even the implied warranty of
30278 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30279 + GNU General Public License for more details.
30280 +
30281 + You should have received a copy of the GNU General Public License
30282 + along with this program; if not, write to the Free Software
30283 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
30284 +
30285 +#ifndef __BFD_H_SEEN__
30286 +#define __BFD_H_SEEN__
30287 +
30288 +#ifdef __cplusplus
30289 +extern "C" {
30290 +#endif
30291 +
30292 +#include "ansidecl.h"
30293 +#include "symcat.h"
30294 +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
30295 +#ifndef SABER
30296 +/* This hack is to avoid a problem with some strict ANSI C preprocessors.
30297 + The problem is, "32_" is not a valid preprocessing token, and we don't
30298 + want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will
30299 + cause the inner CONCAT2 macros to be evaluated first, producing
30300 + still-valid pp-tokens. Then the final concatenation can be done. */
30301 +#undef CONCAT4
30302 +#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
30303 +#endif
30304 +#endif
30305 +
30306 +/* This is a utility macro to handle the situation where the code
30307 + wants to place a constant string into the code, followed by a
30308 + comma and then the length of the string. Doing this by hand
30309 + is error prone, so using this macro is safer. The macro will
30310 + also safely handle the case where a NULL is passed as the arg. */
30311 +#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
30312 +/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
30313 + to create the arguments to another macro, since the preprocessor
30314 + will mis-count the number of arguments to the outer macro (by not
30315 + evaluating STRING_COMMA_LEN and so missing the comma). This is a
30316 + problem for example when trying to use STRING_COMMA_LEN to build
30317 + the arguments to the strncmp() macro. Hence this alternative
30318 + definition of strncmp is provided here.
30319 +
30320 + Note - these macros do NOT work if STR2 is not a constant string. */
30321 +#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
30322 + /* strcpy() can have a similar problem, but since we know we are
30323 + copying a constant string, we can use memcpy which will be faster
30324 + since there is no need to check for a NUL byte inside STR. We
30325 + can also save time if we do not need to copy the terminating NUL. */
30326 +#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
30327 +#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
30328 +
30329 +
30330 +/* The word size used by BFD on the host. This may be 64 with a 32
30331 + bit target if the host is 64 bit, or if other 64 bit targets have
30332 + been selected with --enable-targets, or if --enable-64-bit-bfd. */
30333 +#define BFD_ARCH_SIZE 32
30334 +
30335 +/* The word size of the default bfd target. */
30336 +#define BFD_DEFAULT_TARGET_SIZE 32
30337 +
30338 +#define BFD_HOST_64BIT_LONG 0
30339 +#define BFD_HOST_64BIT_LONG_LONG 0
30340 +#define BFD_HOST_LONG_LONG 1
30341 +#if 1
30342 +#define BFD_HOST_64_BIT long long
30343 +#define BFD_HOST_U_64_BIT unsigned long long
30344 +typedef BFD_HOST_64_BIT bfd_int64_t;
30345 +typedef BFD_HOST_U_64_BIT bfd_uint64_t;
30346 +#endif
30347 +
30348 +#if BFD_ARCH_SIZE >= 64
30349 +#define BFD64
30350 +#endif
30351 +
30352 +#ifndef INLINE
30353 +#if __GNUC__ >= 2
30354 +#define INLINE __inline__
30355 +#else
30356 +#define INLINE
30357 +#endif
30358 +#endif
30359 +
30360 +/* Declaring a type wide enough to hold a host long and a host pointer. */
30361 +#define BFD_HOSTPTR_T unsigned long
30362 +typedef BFD_HOSTPTR_T bfd_hostptr_t;
30363 +
30364 +/* Forward declaration. */
30365 +typedef struct bfd bfd;
30366 +
30367 +/* Boolean type used in bfd. Too many systems define their own
30368 + versions of "boolean" for us to safely typedef a "boolean" of
30369 + our own. Using an enum for "bfd_boolean" has its own set of
30370 + problems, with strange looking casts required to avoid warnings
30371 + on some older compilers. Thus we just use an int.
30372 +
30373 + General rule: Functions which are bfd_boolean return TRUE on
30374 + success and FALSE on failure (unless they're a predicate). */
30375 +
30376 +typedef int bfd_boolean;
30377 +#undef FALSE
30378 +#undef TRUE
30379 +#define FALSE 0
30380 +#define TRUE 1
30381 +
30382 +#ifdef BFD64
30383 +
30384 +#ifndef BFD_HOST_64_BIT
30385 + #error No 64 bit integer type available
30386 +#endif /* ! defined (BFD_HOST_64_BIT) */
30387 +
30388 +typedef BFD_HOST_U_64_BIT bfd_vma;
30389 +typedef BFD_HOST_64_BIT bfd_signed_vma;
30390 +typedef BFD_HOST_U_64_BIT bfd_size_type;
30391 +typedef BFD_HOST_U_64_BIT symvalue;
30392 +
30393 +#ifndef fprintf_vma
30394 +#if BFD_HOST_64BIT_LONG
30395 +#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
30396 +#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
30397 +#elif BFD_HOST_64BIT_LONG_LONG
30398 +#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
30399 +#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
30400 +#else
30401 +#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
30402 +#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
30403 +#define fprintf_vma(s,x) \
30404 + fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
30405 +#define sprintf_vma(s,x) \
30406 + sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
30407 +#endif
30408 +#endif
30409 +
30410 +#else /* not BFD64 */
30411 +
30412 +/* Represent a target address. Also used as a generic unsigned type
30413 + which is guaranteed to be big enough to hold any arithmetic types
30414 + we need to deal with. */
30415 +typedef unsigned long bfd_vma;
30416 +
30417 +/* A generic signed type which is guaranteed to be big enough to hold any
30418 + arithmetic types we need to deal with. Can be assumed to be compatible
30419 + with bfd_vma in the same way that signed and unsigned ints are compatible
30420 + (as parameters, in assignment, etc). */
30421 +typedef long bfd_signed_vma;
30422 +
30423 +typedef unsigned long symvalue;
30424 +typedef unsigned long bfd_size_type;
30425 +
30426 +/* Print a bfd_vma x on stream s. */
30427 +#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
30428 +#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
30429 +
30430 +#endif /* not BFD64 */
30431 +
30432 +#define HALF_BFD_SIZE_TYPE \
30433 + (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
30434 +
30435 +#ifndef BFD_HOST_64_BIT
30436 +/* Fall back on a 32 bit type. The idea is to make these types always
30437 + available for function return types, but in the case that
30438 + BFD_HOST_64_BIT is undefined such a function should abort or
30439 + otherwise signal an error. */
30440 +typedef bfd_signed_vma bfd_int64_t;
30441 +typedef bfd_vma bfd_uint64_t;
30442 +#endif
30443 +
30444 +/* An offset into a file. BFD always uses the largest possible offset
30445 + based on the build time availability of fseek, fseeko, or fseeko64. */
30446 +typedef BFD_HOST_64_BIT file_ptr;
30447 +typedef unsigned BFD_HOST_64_BIT ufile_ptr;
30448 +
30449 +extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
30450 +extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
30451 +
30452 +#define printf_vma(x) fprintf_vma(stdout,x)
30453 +#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
30454 +
30455 +typedef unsigned int flagword; /* 32 bits of flags */
30456 +typedef unsigned char bfd_byte;
30457 +\f
30458 +/* File formats. */
30459 +
30460 +typedef enum bfd_format
30461 +{
30462 + bfd_unknown = 0, /* File format is unknown. */
30463 + bfd_object, /* Linker/assembler/compiler output. */
30464 + bfd_archive, /* Object archive file. */
30465 + bfd_core, /* Core dump. */
30466 + bfd_type_end /* Marks the end; don't use it! */
30467 +}
30468 +bfd_format;
30469 +
30470 +/* Values that may appear in the flags field of a BFD. These also
30471 + appear in the object_flags field of the bfd_target structure, where
30472 + they indicate the set of flags used by that backend (not all flags
30473 + are meaningful for all object file formats) (FIXME: at the moment,
30474 + the object_flags values have mostly just been copied from backend
30475 + to another, and are not necessarily correct). */
30476 +
30477 +/* No flags. */
30478 +#define BFD_NO_FLAGS 0x00
30479 +
30480 +/* BFD contains relocation entries. */
30481 +#define HAS_RELOC 0x01
30482 +
30483 +/* BFD is directly executable. */
30484 +#define EXEC_P 0x02
30485 +
30486 +/* BFD has line number information (basically used for F_LNNO in a
30487 + COFF header). */
30488 +#define HAS_LINENO 0x04
30489 +
30490 +/* BFD has debugging information. */
30491 +#define HAS_DEBUG 0x08
30492 +
30493 +/* BFD has symbols. */
30494 +#define HAS_SYMS 0x10
30495 +
30496 +/* BFD has local symbols (basically used for F_LSYMS in a COFF
30497 + header). */
30498 +#define HAS_LOCALS 0x20
30499 +
30500 +/* BFD is a dynamic object. */
30501 +#define DYNAMIC 0x40
30502 +
30503 +/* Text section is write protected (if D_PAGED is not set, this is
30504 + like an a.out NMAGIC file) (the linker sets this by default, but
30505 + clears it for -r or -N). */
30506 +#define WP_TEXT 0x80
30507 +
30508 +/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
30509 + linker sets this by default, but clears it for -r or -n or -N). */
30510 +#define D_PAGED 0x100
30511 +
30512 +/* BFD is relaxable (this means that bfd_relax_section may be able to
30513 + do something) (sometimes bfd_relax_section can do something even if
30514 + this is not set). */
30515 +#define BFD_IS_RELAXABLE 0x200
30516 +
30517 +/* This may be set before writing out a BFD to request using a
30518 + traditional format. For example, this is used to request that when
30519 + writing out an a.out object the symbols not be hashed to eliminate
30520 + duplicates. */
30521 +#define BFD_TRADITIONAL_FORMAT 0x400
30522 +
30523 +/* This flag indicates that the BFD contents are actually cached in
30524 + memory. If this is set, iostream points to a bfd_in_memory struct. */
30525 +#define BFD_IN_MEMORY 0x800
30526 +
30527 +/* The sections in this BFD specify a memory page. */
30528 +#define HAS_LOAD_PAGE 0x1000
30529 +
30530 +/* This BFD has been created by the linker and doesn't correspond
30531 + to any input file. */
30532 +#define BFD_LINKER_CREATED 0x2000
30533 +\f
30534 +/* Symbols and relocation. */
30535 +
30536 +/* A count of carsyms (canonical archive symbols). */
30537 +typedef unsigned long symindex;
30538 +
30539 +/* How to perform a relocation. */
30540 +typedef const struct reloc_howto_struct reloc_howto_type;
30541 +
30542 +#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
30543 +
30544 +/* General purpose part of a symbol X;
30545 + target specific parts are in libcoff.h, libaout.h, etc. */
30546 +
30547 +#define bfd_get_section(x) ((x)->section)
30548 +#define bfd_get_output_section(x) ((x)->section->output_section)
30549 +#define bfd_set_section(x,y) ((x)->section) = (y)
30550 +#define bfd_asymbol_base(x) ((x)->section->vma)
30551 +#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
30552 +#define bfd_asymbol_name(x) ((x)->name)
30553 +/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
30554 +#define bfd_asymbol_bfd(x) ((x)->the_bfd)
30555 +#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
30556 +
30557 +/* A canonical archive symbol. */
30558 +/* This is a type pun with struct ranlib on purpose! */
30559 +typedef struct carsym
30560 +{
30561 + char *name;
30562 + file_ptr file_offset; /* Look here to find the file. */
30563 +}
30564 +carsym; /* To make these you call a carsymogen. */
30565 +
30566 +/* Used in generating armaps (archive tables of contents).
30567 + Perhaps just a forward definition would do? */
30568 +struct orl /* Output ranlib. */
30569 +{
30570 + char **name; /* Symbol name. */
30571 + union
30572 + {
30573 + file_ptr pos;
30574 + bfd *abfd;
30575 + } u; /* bfd* or file position. */
30576 + int namidx; /* Index into string table. */
30577 +};
30578 +\f
30579 +/* Linenumber stuff. */
30580 +typedef struct lineno_cache_entry
30581 +{
30582 + unsigned int line_number; /* Linenumber from start of function. */
30583 + union
30584 + {
30585 + struct bfd_symbol *sym; /* Function name. */
30586 + bfd_vma offset; /* Offset into section. */
30587 + } u;
30588 +}
30589 +alent;
30590 +\f
30591 +/* Object and core file sections. */
30592 +
30593 +#define align_power(addr, align) \
30594 + (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
30595 +
30596 +typedef struct bfd_section *sec_ptr;
30597 +
30598 +#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
30599 +#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
30600 +#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
30601 +#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
30602 +#define bfd_section_name(bfd, ptr) ((ptr)->name)
30603 +#define bfd_section_size(bfd, ptr) ((ptr)->size)
30604 +#define bfd_get_section_size(ptr) ((ptr)->size)
30605 +#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
30606 +#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
30607 +#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
30608 +#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
30609 +#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
30610 +
30611 +#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
30612 +
30613 +#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
30614 +#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
30615 +#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
30616 +/* Find the address one past the end of SEC. */
30617 +#define bfd_get_section_limit(bfd, sec) \
30618 + (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
30619 + / bfd_octets_per_byte (bfd))
30620 +
30621 +/* Return TRUE if section has been discarded. */
30622 +#define elf_discarded_section(sec) \
30623 + (!bfd_is_abs_section (sec) \
30624 + && bfd_is_abs_section ((sec)->output_section) \
30625 + && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \
30626 + && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
30627 +
30628 +/* Forward define. */
30629 +struct stat;
30630 +\f
30631 +typedef enum bfd_print_symbol
30632 +{
30633 + bfd_print_symbol_name,
30634 + bfd_print_symbol_more,
30635 + bfd_print_symbol_all
30636 +} bfd_print_symbol_type;
30637 +
30638 +/* Information about a symbol that nm needs. */
30639 +
30640 +typedef struct _symbol_info
30641 +{
30642 + symvalue value;
30643 + char type;
30644 + const char *name; /* Symbol name. */
30645 + unsigned char stab_type; /* Stab type. */
30646 + char stab_other; /* Stab other. */
30647 + short stab_desc; /* Stab desc. */
30648 + const char *stab_name; /* String for stab type. */
30649 +} symbol_info;
30650 +
30651 +/* Get the name of a stabs type code. */
30652 +
30653 +extern const char *bfd_get_stab_name (int);
30654 +\f
30655 +/* Hash table routines. There is no way to free up a hash table. */
30656 +
30657 +/* An element in the hash table. Most uses will actually use a larger
30658 + structure, and an instance of this will be the first field. */
30659 +
30660 +struct bfd_hash_entry
30661 +{
30662 + /* Next entry for this hash code. */
30663 + struct bfd_hash_entry *next;
30664 + /* String being hashed. */
30665 + const char *string;
30666 + /* Hash code. This is the full hash code, not the index into the
30667 + table. */
30668 + unsigned long hash;
30669 +};
30670 +
30671 +/* A hash table. */
30672 +
30673 +struct bfd_hash_table
30674 +{
30675 + /* The hash array. */
30676 + struct bfd_hash_entry **table;
30677 + /* A function used to create new elements in the hash table. The
30678 + first entry is itself a pointer to an element. When this
30679 + function is first invoked, this pointer will be NULL. However,
30680 + having the pointer permits a hierarchy of method functions to be
30681 + built each of which calls the function in the superclass. Thus
30682 + each function should be written to allocate a new block of memory
30683 + only if the argument is NULL. */
30684 + struct bfd_hash_entry *(*newfunc)
30685 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
30686 + /* An objalloc for this hash table. This is a struct objalloc *,
30687 + but we use void * to avoid requiring the inclusion of objalloc.h. */
30688 + void *memory;
30689 + /* The number of slots in the hash table. */
30690 + unsigned int size;
30691 + /* The number of entries in the hash table. */
30692 + unsigned int count;
30693 + /* The size of elements. */
30694 + unsigned int entsize;
30695 + /* If non-zero, don't grow the hash table. */
30696 + unsigned int frozen:1;
30697 +};
30698 +
30699 +/* Initialize a hash table. */
30700 +extern bfd_boolean bfd_hash_table_init
30701 + (struct bfd_hash_table *,
30702 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
30703 + struct bfd_hash_table *,
30704 + const char *),
30705 + unsigned int);
30706 +
30707 +/* Initialize a hash table specifying a size. */
30708 +extern bfd_boolean bfd_hash_table_init_n
30709 + (struct bfd_hash_table *,
30710 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
30711 + struct bfd_hash_table *,
30712 + const char *),
30713 + unsigned int, unsigned int);
30714 +
30715 +/* Free up a hash table. */
30716 +extern void bfd_hash_table_free
30717 + (struct bfd_hash_table *);
30718 +
30719 +/* Look up a string in a hash table. If CREATE is TRUE, a new entry
30720 + will be created for this string if one does not already exist. The
30721 + COPY argument must be TRUE if this routine should copy the string
30722 + into newly allocated memory when adding an entry. */
30723 +extern struct bfd_hash_entry *bfd_hash_lookup
30724 + (struct bfd_hash_table *, const char *, bfd_boolean create,
30725 + bfd_boolean copy);
30726 +
30727 +/* Replace an entry in a hash table. */
30728 +extern void bfd_hash_replace
30729 + (struct bfd_hash_table *, struct bfd_hash_entry *old,
30730 + struct bfd_hash_entry *nw);
30731 +
30732 +/* Base method for creating a hash table entry. */
30733 +extern struct bfd_hash_entry *bfd_hash_newfunc
30734 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
30735 +
30736 +/* Grab some space for a hash table entry. */
30737 +extern void *bfd_hash_allocate
30738 + (struct bfd_hash_table *, unsigned int);
30739 +
30740 +/* Traverse a hash table in a random order, calling a function on each
30741 + element. If the function returns FALSE, the traversal stops. The
30742 + INFO argument is passed to the function. */
30743 +extern void bfd_hash_traverse
30744 + (struct bfd_hash_table *,
30745 + bfd_boolean (*) (struct bfd_hash_entry *, void *),
30746 + void *info);
30747 +
30748 +/* Allows the default size of a hash table to be configured. New hash
30749 + tables allocated using bfd_hash_table_init will be created with
30750 + this size. */
30751 +extern void bfd_hash_set_default_size (bfd_size_type);
30752 +
30753 +/* This structure is used to keep track of stabs in sections
30754 + information while linking. */
30755 +
30756 +struct stab_info
30757 +{
30758 + /* A hash table used to hold stabs strings. */
30759 + struct bfd_strtab_hash *strings;
30760 + /* The header file hash table. */
30761 + struct bfd_hash_table includes;
30762 + /* The first .stabstr section. */
30763 + struct bfd_section *stabstr;
30764 +};
30765 +
30766 +#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
30767 +
30768 +/* User program access to BFD facilities. */
30769 +
30770 +/* Direct I/O routines, for programs which know more about the object
30771 + file than BFD does. Use higher level routines if possible. */
30772 +
30773 +extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
30774 +extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
30775 +extern int bfd_seek (bfd *, file_ptr, int);
30776 +extern file_ptr bfd_tell (bfd *);
30777 +extern int bfd_flush (bfd *);
30778 +extern int bfd_stat (bfd *, struct stat *);
30779 +
30780 +/* Deprecated old routines. */
30781 +#if __GNUC__
30782 +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
30783 + (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
30784 + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
30785 +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
30786 + (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
30787 + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
30788 +#else
30789 +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
30790 + (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
30791 + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
30792 +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
30793 + (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
30794 + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
30795 +#endif
30796 +extern void warn_deprecated (const char *, const char *, int, const char *);
30797 +
30798 +/* Cast from const char * to char * so that caller can assign to
30799 + a char * without a warning. */
30800 +#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
30801 +#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
30802 +#define bfd_get_format(abfd) ((abfd)->format)
30803 +#define bfd_get_target(abfd) ((abfd)->xvec->name)
30804 +#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
30805 +#define bfd_family_coff(abfd) \
30806 + (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
30807 + bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
30808 +#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
30809 +#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
30810 +#define bfd_header_big_endian(abfd) \
30811 + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
30812 +#define bfd_header_little_endian(abfd) \
30813 + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
30814 +#define bfd_get_file_flags(abfd) ((abfd)->flags)
30815 +#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
30816 +#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
30817 +#define bfd_my_archive(abfd) ((abfd)->my_archive)
30818 +#define bfd_has_map(abfd) ((abfd)->has_armap)
30819 +
30820 +#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
30821 +#define bfd_usrdata(abfd) ((abfd)->usrdata)
30822 +
30823 +#define bfd_get_start_address(abfd) ((abfd)->start_address)
30824 +#define bfd_get_symcount(abfd) ((abfd)->symcount)
30825 +#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
30826 +#define bfd_count_sections(abfd) ((abfd)->section_count)
30827 +
30828 +#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
30829 +
30830 +#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
30831 +
30832 +#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
30833 +
30834 +extern bfd_boolean bfd_cache_close
30835 + (bfd *abfd);
30836 +/* NB: This declaration should match the autogenerated one in libbfd.h. */
30837 +
30838 +extern bfd_boolean bfd_cache_close_all (void);
30839 +
30840 +extern bfd_boolean bfd_record_phdr
30841 + (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
30842 + bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
30843 +
30844 +/* Byte swapping routines. */
30845 +
30846 +bfd_uint64_t bfd_getb64 (const void *);
30847 +bfd_uint64_t bfd_getl64 (const void *);
30848 +bfd_int64_t bfd_getb_signed_64 (const void *);
30849 +bfd_int64_t bfd_getl_signed_64 (const void *);
30850 +bfd_vma bfd_getb32 (const void *);
30851 +bfd_vma bfd_getl32 (const void *);
30852 +bfd_signed_vma bfd_getb_signed_32 (const void *);
30853 +bfd_signed_vma bfd_getl_signed_32 (const void *);
30854 +bfd_vma bfd_getb16 (const void *);
30855 +bfd_vma bfd_getl16 (const void *);
30856 +bfd_signed_vma bfd_getb_signed_16 (const void *);
30857 +bfd_signed_vma bfd_getl_signed_16 (const void *);
30858 +void bfd_putb64 (bfd_uint64_t, void *);
30859 +void bfd_putl64 (bfd_uint64_t, void *);
30860 +void bfd_putb32 (bfd_vma, void *);
30861 +void bfd_putl32 (bfd_vma, void *);
30862 +void bfd_putb16 (bfd_vma, void *);
30863 +void bfd_putl16 (bfd_vma, void *);
30864 +
30865 +/* Byte swapping routines which take size and endiannes as arguments. */
30866 +
30867 +bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
30868 +void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
30869 +
30870 +extern bfd_boolean bfd_section_already_linked_table_init (void);
30871 +extern void bfd_section_already_linked_table_free (void);
30872 +\f
30873 +/* Externally visible ECOFF routines. */
30874 +
30875 +#if defined(__STDC__) || defined(ALMOST_STDC)
30876 +struct ecoff_debug_info;
30877 +struct ecoff_debug_swap;
30878 +struct ecoff_extr;
30879 +struct bfd_symbol;
30880 +struct bfd_link_info;
30881 +struct bfd_link_hash_entry;
30882 +struct bfd_elf_version_tree;
30883 +#endif
30884 +extern bfd_vma bfd_ecoff_get_gp_value
30885 + (bfd * abfd);
30886 +extern bfd_boolean bfd_ecoff_set_gp_value
30887 + (bfd *abfd, bfd_vma gp_value);
30888 +extern bfd_boolean bfd_ecoff_set_regmasks
30889 + (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
30890 + unsigned long *cprmask);
30891 +extern void *bfd_ecoff_debug_init
30892 + (bfd *output_bfd, struct ecoff_debug_info *output_debug,
30893 + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
30894 +extern void bfd_ecoff_debug_free
30895 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
30896 + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
30897 +extern bfd_boolean bfd_ecoff_debug_accumulate
30898 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
30899 + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
30900 + struct ecoff_debug_info *input_debug,
30901 + const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
30902 +extern bfd_boolean bfd_ecoff_debug_accumulate_other
30903 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
30904 + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
30905 + struct bfd_link_info *);
30906 +extern bfd_boolean bfd_ecoff_debug_externals
30907 + (bfd *abfd, struct ecoff_debug_info *debug,
30908 + const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
30909 + bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
30910 + void (*set_index) (struct bfd_symbol *, bfd_size_type));
30911 +extern bfd_boolean bfd_ecoff_debug_one_external
30912 + (bfd *abfd, struct ecoff_debug_info *debug,
30913 + const struct ecoff_debug_swap *swap, const char *name,
30914 + struct ecoff_extr *esym);
30915 +extern bfd_size_type bfd_ecoff_debug_size
30916 + (bfd *abfd, struct ecoff_debug_info *debug,
30917 + const struct ecoff_debug_swap *swap);
30918 +extern bfd_boolean bfd_ecoff_write_debug
30919 + (bfd *abfd, struct ecoff_debug_info *debug,
30920 + const struct ecoff_debug_swap *swap, file_ptr where);
30921 +extern bfd_boolean bfd_ecoff_write_accumulated_debug
30922 + (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
30923 + const struct ecoff_debug_swap *swap,
30924 + struct bfd_link_info *info, file_ptr where);
30925 +
30926 +/* Externally visible ELF routines. */
30927 +
30928 +struct bfd_link_needed_list
30929 +{
30930 + struct bfd_link_needed_list *next;
30931 + bfd *by;
30932 + const char *name;
30933 +};
30934 +
30935 +enum dynamic_lib_link_class {
30936 + DYN_NORMAL = 0,
30937 + DYN_AS_NEEDED = 1,
30938 + DYN_DT_NEEDED = 2,
30939 + DYN_NO_ADD_NEEDED = 4,
30940 + DYN_NO_NEEDED = 8
30941 +};
30942 +
30943 +enum notice_asneeded_action {
30944 + notice_as_needed,
30945 + notice_not_needed,
30946 + notice_needed
30947 +};
30948 +
30949 +extern bfd_boolean bfd_elf_record_link_assignment
30950 + (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
30951 + bfd_boolean);
30952 +extern struct bfd_link_needed_list *bfd_elf_get_needed_list
30953 + (bfd *, struct bfd_link_info *);
30954 +extern bfd_boolean bfd_elf_get_bfd_needed_list
30955 + (bfd *, struct bfd_link_needed_list **);
30956 +extern bfd_boolean bfd_elf_size_dynamic_sections
30957 + (bfd *, const char *, const char *, const char *, const char * const *,
30958 + struct bfd_link_info *, struct bfd_section **,
30959 + struct bfd_elf_version_tree *);
30960 +extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
30961 + (bfd *, struct bfd_link_info *);
30962 +extern void bfd_elf_set_dt_needed_name
30963 + (bfd *, const char *);
30964 +extern const char *bfd_elf_get_dt_soname
30965 + (bfd *);
30966 +extern void bfd_elf_set_dyn_lib_class
30967 + (bfd *, enum dynamic_lib_link_class);
30968 +extern int bfd_elf_get_dyn_lib_class
30969 + (bfd *);
30970 +extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
30971 + (bfd *, struct bfd_link_info *);
30972 +extern bfd_boolean bfd_elf_discard_info
30973 + (bfd *, struct bfd_link_info *);
30974 +extern unsigned int _bfd_elf_default_action_discarded
30975 + (struct bfd_section *);
30976 +
30977 +/* Return an upper bound on the number of bytes required to store a
30978 + copy of ABFD's program header table entries. Return -1 if an error
30979 + occurs; bfd_get_error will return an appropriate code. */
30980 +extern long bfd_get_elf_phdr_upper_bound
30981 + (bfd *abfd);
30982 +
30983 +/* Copy ABFD's program header table entries to *PHDRS. The entries
30984 + will be stored as an array of Elf_Internal_Phdr structures, as
30985 + defined in include/elf/internal.h. To find out how large the
30986 + buffer needs to be, call bfd_get_elf_phdr_upper_bound.
30987 +
30988 + Return the number of program header table entries read, or -1 if an
30989 + error occurs; bfd_get_error will return an appropriate code. */
30990 +extern int bfd_get_elf_phdrs
30991 + (bfd *abfd, void *phdrs);
30992 +
30993 +/* Create a new BFD as if by bfd_openr. Rather than opening a file,
30994 + reconstruct an ELF file by reading the segments out of remote memory
30995 + based on the ELF file header at EHDR_VMA and the ELF program headers it
30996 + points to. If not null, *LOADBASEP is filled in with the difference
30997 + between the VMAs from which the segments were read, and the VMAs the
30998 + file headers (and hence BFD's idea of each section's VMA) put them at.
30999 +
31000 + The function TARGET_READ_MEMORY is called to copy LEN bytes from the
31001 + remote memory at target address VMA into the local buffer at MYADDR; it
31002 + should return zero on success or an `errno' code on failure. TEMPL must
31003 + be a BFD for an ELF target with the word size and byte order found in
31004 + the remote memory. */
31005 +extern bfd *bfd_elf_bfd_from_remote_memory
31006 + (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
31007 + int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
31008 +
31009 +/* Return the arch_size field of an elf bfd, or -1 if not elf. */
31010 +extern int bfd_get_arch_size
31011 + (bfd *);
31012 +
31013 +/* Return TRUE if address "naturally" sign extends, or -1 if not elf. */
31014 +extern int bfd_get_sign_extend_vma
31015 + (bfd *);
31016 +
31017 +extern struct bfd_section *_bfd_elf_tls_setup
31018 + (bfd *, struct bfd_link_info *);
31019 +
31020 +extern void _bfd_fix_excluded_sec_syms
31021 + (bfd *, struct bfd_link_info *);
31022 +
31023 +extern unsigned bfd_m68k_mach_to_features (int);
31024 +
31025 +extern int bfd_m68k_features_to_mach (unsigned);
31026 +
31027 +extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
31028 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
31029 + char **);
31030 +
31031 +extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
31032 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
31033 + char **);
31034 +
31035 +/* SunOS shared library support routines for the linker. */
31036 +
31037 +extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
31038 + (bfd *, struct bfd_link_info *);
31039 +extern bfd_boolean bfd_sunos_record_link_assignment
31040 + (bfd *, struct bfd_link_info *, const char *);
31041 +extern bfd_boolean bfd_sunos_size_dynamic_sections
31042 + (bfd *, struct bfd_link_info *, struct bfd_section **,
31043 + struct bfd_section **, struct bfd_section **);
31044 +
31045 +/* Linux shared library support routines for the linker. */
31046 +
31047 +extern bfd_boolean bfd_i386linux_size_dynamic_sections
31048 + (bfd *, struct bfd_link_info *);
31049 +extern bfd_boolean bfd_m68klinux_size_dynamic_sections
31050 + (bfd *, struct bfd_link_info *);
31051 +extern bfd_boolean bfd_sparclinux_size_dynamic_sections
31052 + (bfd *, struct bfd_link_info *);
31053 +
31054 +/* mmap hacks */
31055 +
31056 +struct _bfd_window_internal;
31057 +typedef struct _bfd_window_internal bfd_window_internal;
31058 +
31059 +typedef struct _bfd_window
31060 +{
31061 + /* What the user asked for. */
31062 + void *data;
31063 + bfd_size_type size;
31064 + /* The actual window used by BFD. Small user-requested read-only
31065 + regions sharing a page may share a single window into the object
31066 + file. Read-write versions shouldn't until I've fixed things to
31067 + keep track of which portions have been claimed by the
31068 + application; don't want to give the same region back when the
31069 + application wants two writable copies! */
31070 + struct _bfd_window_internal *i;
31071 +}
31072 +bfd_window;
31073 +
31074 +extern void bfd_init_window
31075 + (bfd_window *);
31076 +extern void bfd_free_window
31077 + (bfd_window *);
31078 +extern bfd_boolean bfd_get_file_window
31079 + (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
31080 +
31081 +/* XCOFF support routines for the linker. */
31082 +
31083 +extern bfd_boolean bfd_xcoff_link_record_set
31084 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
31085 +extern bfd_boolean bfd_xcoff_import_symbol
31086 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
31087 + const char *, const char *, const char *, unsigned int);
31088 +extern bfd_boolean bfd_xcoff_export_symbol
31089 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
31090 +extern bfd_boolean bfd_xcoff_link_count_reloc
31091 + (bfd *, struct bfd_link_info *, const char *);
31092 +extern bfd_boolean bfd_xcoff_record_link_assignment
31093 + (bfd *, struct bfd_link_info *, const char *);
31094 +extern bfd_boolean bfd_xcoff_size_dynamic_sections
31095 + (bfd *, struct bfd_link_info *, const char *, const char *,
31096 + unsigned long, unsigned long, unsigned long, bfd_boolean,
31097 + int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
31098 +extern bfd_boolean bfd_xcoff_link_generate_rtinit
31099 + (bfd *, const char *, const char *, bfd_boolean);
31100 +
31101 +/* XCOFF support routines for ar. */
31102 +extern bfd_boolean bfd_xcoff_ar_archive_set_magic
31103 + (bfd *, char *);
31104 +
31105 +/* Externally visible COFF routines. */
31106 +
31107 +#if defined(__STDC__) || defined(ALMOST_STDC)
31108 +struct internal_syment;
31109 +union internal_auxent;
31110 +#endif
31111 +
31112 +extern bfd_boolean bfd_coff_get_syment
31113 + (bfd *, struct bfd_symbol *, struct internal_syment *);
31114 +
31115 +extern bfd_boolean bfd_coff_get_auxent
31116 + (bfd *, struct bfd_symbol *, int, union internal_auxent *);
31117 +
31118 +extern bfd_boolean bfd_coff_set_symbol_class
31119 + (bfd *, struct bfd_symbol *, unsigned int);
31120 +
31121 +extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
31122 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
31123 +
31124 +/* ARM VFP11 erratum workaround support. */
31125 +typedef enum
31126 +{
31127 + BFD_ARM_VFP11_FIX_DEFAULT,
31128 + BFD_ARM_VFP11_FIX_NONE,
31129 + BFD_ARM_VFP11_FIX_SCALAR,
31130 + BFD_ARM_VFP11_FIX_VECTOR
31131 +} bfd_arm_vfp11_fix;
31132 +
31133 +extern void bfd_elf32_arm_init_maps
31134 + (bfd *);
31135 +
31136 +extern void bfd_elf32_arm_set_vfp11_fix
31137 + (bfd *, struct bfd_link_info *);
31138 +
31139 +extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
31140 + (bfd *, struct bfd_link_info *);
31141 +
31142 +extern void bfd_elf32_arm_vfp11_fix_veneer_locations
31143 + (bfd *, struct bfd_link_info *);
31144 +
31145 +/* ARM Interworking support. Called from linker. */
31146 +extern bfd_boolean bfd_arm_allocate_interworking_sections
31147 + (struct bfd_link_info *);
31148 +
31149 +extern bfd_boolean bfd_arm_process_before_allocation
31150 + (bfd *, struct bfd_link_info *, int);
31151 +
31152 +extern bfd_boolean bfd_arm_get_bfd_for_interworking
31153 + (bfd *, struct bfd_link_info *);
31154 +
31155 +/* PE ARM Interworking support. Called from linker. */
31156 +extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
31157 + (struct bfd_link_info *);
31158 +
31159 +extern bfd_boolean bfd_arm_pe_process_before_allocation
31160 + (bfd *, struct bfd_link_info *, int);
31161 +
31162 +extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
31163 + (bfd *, struct bfd_link_info *);
31164 +
31165 +/* ELF ARM Interworking support. Called from linker. */
31166 +extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
31167 + (struct bfd_link_info *);
31168 +
31169 +extern bfd_boolean bfd_elf32_arm_process_before_allocation
31170 + (bfd *, struct bfd_link_info *);
31171 +
31172 +void bfd_elf32_arm_set_target_relocs
31173 + (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
31174 + int, int);
31175 +
31176 +extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
31177 + (bfd *, struct bfd_link_info *);
31178 +
31179 +extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
31180 + (bfd *, struct bfd_link_info *);
31181 +
31182 +/* ELF ARM mapping symbol support */
31183 +#define BFD_ARM_SPECIAL_SYM_TYPE_MAP (1 << 0)
31184 +#define BFD_ARM_SPECIAL_SYM_TYPE_TAG (1 << 1)
31185 +#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER (1 << 2)
31186 +#define BFD_ARM_SPECIAL_SYM_TYPE_ANY (~0)
31187 +extern bfd_boolean bfd_is_arm_special_symbol_name
31188 + (const char * name, int type);
31189 +
31190 +extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
31191 +
31192 +/* ARM Note section processing. */
31193 +extern bfd_boolean bfd_arm_merge_machines
31194 + (bfd *, bfd *);
31195 +
31196 +extern bfd_boolean bfd_arm_update_notes
31197 + (bfd *, const char *);
31198 +
31199 +extern unsigned int bfd_arm_get_mach_from_notes
31200 + (bfd *, const char *);
31201 +
31202 +/* TI COFF load page support. */
31203 +extern void bfd_ticoff_set_section_load_page
31204 + (struct bfd_section *, int);
31205 +
31206 +extern int bfd_ticoff_get_section_load_page
31207 + (struct bfd_section *);
31208 +
31209 +/* H8/300 functions. */
31210 +extern bfd_vma bfd_h8300_pad_address
31211 + (bfd *, bfd_vma);
31212 +
31213 +/* IA64 Itanium code generation. Called from linker. */
31214 +extern void bfd_elf32_ia64_after_parse
31215 + (int);
31216 +
31217 +extern void bfd_elf64_ia64_after_parse
31218 + (int);
31219 +
31220 +/* This structure is used for a comdat section, as in PE. A comdat
31221 + section is associated with a particular symbol. When the linker
31222 + sees a comdat section, it keeps only one of the sections with a
31223 + given name and associated with a given symbol. */
31224 +
31225 +struct coff_comdat_info
31226 +{
31227 + /* The name of the symbol associated with a comdat section. */
31228 + const char *name;
31229 +
31230 + /* The local symbol table index of the symbol associated with a
31231 + comdat section. This is only meaningful to the object file format
31232 + specific code; it is not an index into the list returned by
31233 + bfd_canonicalize_symtab. */
31234 + long symbol;
31235 +};
31236 +
31237 +extern struct coff_comdat_info *bfd_coff_get_comdat_section
31238 + (bfd *, struct bfd_section *);
31239 +
31240 +/* Extracted from init.c. */
31241 +void bfd_init (void);
31242 +
31243 +/* Extracted from opncls.c. */
31244 +bfd *bfd_fopen (const char *filename, const char *target,
31245 + const char *mode, int fd);
31246 +
31247 +bfd *bfd_openr (const char *filename, const char *target);
31248 +
31249 +bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
31250 +
31251 +bfd *bfd_openstreamr (const char *, const char *, void *);
31252 +
31253 +bfd *bfd_openr_iovec (const char *filename, const char *target,
31254 + void *(*open) (struct bfd *nbfd,
31255 + void *open_closure),
31256 + void *open_closure,
31257 + file_ptr (*pread) (struct bfd *nbfd,
31258 + void *stream,
31259 + void *buf,
31260 + file_ptr nbytes,
31261 + file_ptr offset),
31262 + int (*close) (struct bfd *nbfd,
31263 + void *stream),
31264 + int (*stat) (struct bfd *abfd,
31265 + void *stream,
31266 + struct stat *sb));
31267 +
31268 +bfd *bfd_openw (const char *filename, const char *target);
31269 +
31270 +bfd_boolean bfd_close (bfd *abfd);
31271 +
31272 +bfd_boolean bfd_close_all_done (bfd *);
31273 +
31274 +bfd *bfd_create (const char *filename, bfd *templ);
31275 +
31276 +bfd_boolean bfd_make_writable (bfd *abfd);
31277 +
31278 +bfd_boolean bfd_make_readable (bfd *abfd);
31279 +
31280 +unsigned long bfd_calc_gnu_debuglink_crc32
31281 + (unsigned long crc, const unsigned char *buf, bfd_size_type len);
31282 +
31283 +char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
31284 +
31285 +struct bfd_section *bfd_create_gnu_debuglink_section
31286 + (bfd *abfd, const char *filename);
31287 +
31288 +bfd_boolean bfd_fill_in_gnu_debuglink_section
31289 + (bfd *abfd, struct bfd_section *sect, const char *filename);
31290 +
31291 +/* Extracted from libbfd.c. */
31292 +
31293 +/* Byte swapping macros for user section data. */
31294 +
31295 +#define bfd_put_8(abfd, val, ptr) \
31296 + ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
31297 +#define bfd_put_signed_8 \
31298 + bfd_put_8
31299 +#define bfd_get_8(abfd, ptr) \
31300 + (*(unsigned char *) (ptr) & 0xff)
31301 +#define bfd_get_signed_8(abfd, ptr) \
31302 + (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
31303 +
31304 +#define bfd_put_16(abfd, val, ptr) \
31305 + BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
31306 +#define bfd_put_signed_16 \
31307 + bfd_put_16
31308 +#define bfd_get_16(abfd, ptr) \
31309 + BFD_SEND (abfd, bfd_getx16, (ptr))
31310 +#define bfd_get_signed_16(abfd, ptr) \
31311 + BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
31312 +
31313 +#define bfd_put_32(abfd, val, ptr) \
31314 + BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
31315 +#define bfd_put_signed_32 \
31316 + bfd_put_32
31317 +#define bfd_get_32(abfd, ptr) \
31318 + BFD_SEND (abfd, bfd_getx32, (ptr))
31319 +#define bfd_get_signed_32(abfd, ptr) \
31320 + BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
31321 +
31322 +#define bfd_put_64(abfd, val, ptr) \
31323 + BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
31324 +#define bfd_put_signed_64 \
31325 + bfd_put_64
31326 +#define bfd_get_64(abfd, ptr) \
31327 + BFD_SEND (abfd, bfd_getx64, (ptr))
31328 +#define bfd_get_signed_64(abfd, ptr) \
31329 + BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
31330 +
31331 +#define bfd_get(bits, abfd, ptr) \
31332 + ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
31333 + : (bits) == 16 ? bfd_get_16 (abfd, ptr) \
31334 + : (bits) == 32 ? bfd_get_32 (abfd, ptr) \
31335 + : (bits) == 64 ? bfd_get_64 (abfd, ptr) \
31336 + : (abort (), (bfd_vma) - 1))
31337 +
31338 +#define bfd_put(bits, abfd, val, ptr) \
31339 + ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
31340 + : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
31341 + : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
31342 + : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
31343 + : (abort (), (void) 0))
31344 +
31345 +
31346 +/* Byte swapping macros for file header data. */
31347 +
31348 +#define bfd_h_put_8(abfd, val, ptr) \
31349 + bfd_put_8 (abfd, val, ptr)
31350 +#define bfd_h_put_signed_8(abfd, val, ptr) \
31351 + bfd_put_8 (abfd, val, ptr)
31352 +#define bfd_h_get_8(abfd, ptr) \
31353 + bfd_get_8 (abfd, ptr)
31354 +#define bfd_h_get_signed_8(abfd, ptr) \
31355 + bfd_get_signed_8 (abfd, ptr)
31356 +
31357 +#define bfd_h_put_16(abfd, val, ptr) \
31358 + BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
31359 +#define bfd_h_put_signed_16 \
31360 + bfd_h_put_16
31361 +#define bfd_h_get_16(abfd, ptr) \
31362 + BFD_SEND (abfd, bfd_h_getx16, (ptr))
31363 +#define bfd_h_get_signed_16(abfd, ptr) \
31364 + BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
31365 +
31366 +#define bfd_h_put_32(abfd, val, ptr) \
31367 + BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
31368 +#define bfd_h_put_signed_32 \
31369 + bfd_h_put_32
31370 +#define bfd_h_get_32(abfd, ptr) \
31371 + BFD_SEND (abfd, bfd_h_getx32, (ptr))
31372 +#define bfd_h_get_signed_32(abfd, ptr) \
31373 + BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
31374 +
31375 +#define bfd_h_put_64(abfd, val, ptr) \
31376 + BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
31377 +#define bfd_h_put_signed_64 \
31378 + bfd_h_put_64
31379 +#define bfd_h_get_64(abfd, ptr) \
31380 + BFD_SEND (abfd, bfd_h_getx64, (ptr))
31381 +#define bfd_h_get_signed_64(abfd, ptr) \
31382 + BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
31383 +
31384 +/* Aliases for the above, which should eventually go away. */
31385 +
31386 +#define H_PUT_64 bfd_h_put_64
31387 +#define H_PUT_32 bfd_h_put_32
31388 +#define H_PUT_16 bfd_h_put_16
31389 +#define H_PUT_8 bfd_h_put_8
31390 +#define H_PUT_S64 bfd_h_put_signed_64
31391 +#define H_PUT_S32 bfd_h_put_signed_32
31392 +#define H_PUT_S16 bfd_h_put_signed_16
31393 +#define H_PUT_S8 bfd_h_put_signed_8
31394 +#define H_GET_64 bfd_h_get_64
31395 +#define H_GET_32 bfd_h_get_32
31396 +#define H_GET_16 bfd_h_get_16
31397 +#define H_GET_8 bfd_h_get_8
31398 +#define H_GET_S64 bfd_h_get_signed_64
31399 +#define H_GET_S32 bfd_h_get_signed_32
31400 +#define H_GET_S16 bfd_h_get_signed_16
31401 +#define H_GET_S8 bfd_h_get_signed_8
31402 +
31403 +
31404 +/* Extracted from bfdio.c. */
31405 +long bfd_get_mtime (bfd *abfd);
31406 +
31407 +file_ptr bfd_get_size (bfd *abfd);
31408 +
31409 +/* Extracted from bfdwin.c. */
31410 +/* Extracted from section.c. */
31411 +typedef struct bfd_section
31412 +{
31413 + /* The name of the section; the name isn't a copy, the pointer is
31414 + the same as that passed to bfd_make_section. */
31415 + const char *name;
31416 +
31417 + /* A unique sequence number. */
31418 + int id;
31419 +
31420 + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
31421 + int index;
31422 +
31423 + /* The next section in the list belonging to the BFD, or NULL. */
31424 + struct bfd_section *next;
31425 +
31426 + /* The previous section in the list belonging to the BFD, or NULL. */
31427 + struct bfd_section *prev;
31428 +
31429 + /* The field flags contains attributes of the section. Some
31430 + flags are read in from the object file, and some are
31431 + synthesized from other information. */
31432 + flagword flags;
31433 +
31434 +#define SEC_NO_FLAGS 0x000
31435 +
31436 + /* Tells the OS to allocate space for this section when loading.
31437 + This is clear for a section containing debug information only. */
31438 +#define SEC_ALLOC 0x001
31439 +
31440 + /* Tells the OS to load the section from the file when loading.
31441 + This is clear for a .bss section. */
31442 +#define SEC_LOAD 0x002
31443 +
31444 + /* The section contains data still to be relocated, so there is
31445 + some relocation information too. */
31446 +#define SEC_RELOC 0x004
31447 +
31448 + /* A signal to the OS that the section contains read only data. */
31449 +#define SEC_READONLY 0x008
31450 +
31451 + /* The section contains code only. */
31452 +#define SEC_CODE 0x010
31453 +
31454 + /* The section contains data only. */
31455 +#define SEC_DATA 0x020
31456 +
31457 + /* The section will reside in ROM. */
31458 +#define SEC_ROM 0x040
31459 +
31460 + /* The section contains constructor information. This section
31461 + type is used by the linker to create lists of constructors and
31462 + destructors used by <<g++>>. When a back end sees a symbol
31463 + which should be used in a constructor list, it creates a new
31464 + section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
31465 + the symbol to it, and builds a relocation. To build the lists
31466 + of constructors, all the linker has to do is catenate all the
31467 + sections called <<__CTOR_LIST__>> and relocate the data
31468 + contained within - exactly the operations it would peform on
31469 + standard data. */
31470 +#define SEC_CONSTRUCTOR 0x080
31471 +
31472 + /* The section has contents - a data section could be
31473 + <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
31474 + <<SEC_HAS_CONTENTS>> */
31475 +#define SEC_HAS_CONTENTS 0x100
31476 +
31477 + /* An instruction to the linker to not output the section
31478 + even if it has information which would normally be written. */
31479 +#define SEC_NEVER_LOAD 0x200
31480 +
31481 + /* The section contains thread local data. */
31482 +#define SEC_THREAD_LOCAL 0x400
31483 +
31484 + /* The section has GOT references. This flag is only for the
31485 + linker, and is currently only used by the elf32-hppa back end.
31486 + It will be set if global offset table references were detected
31487 + in this section, which indicate to the linker that the section
31488 + contains PIC code, and must be handled specially when doing a
31489 + static link. */
31490 +#define SEC_HAS_GOT_REF 0x800
31491 +
31492 + /* The section contains common symbols (symbols may be defined
31493 + multiple times, the value of a symbol is the amount of
31494 + space it requires, and the largest symbol value is the one
31495 + used). Most targets have exactly one of these (which we
31496 + translate to bfd_com_section_ptr), but ECOFF has two. */
31497 +#define SEC_IS_COMMON 0x1000
31498 +
31499 + /* The section contains only debugging information. For
31500 + example, this is set for ELF .debug and .stab sections.
31501 + strip tests this flag to see if a section can be
31502 + discarded. */
31503 +#define SEC_DEBUGGING 0x2000
31504 +
31505 + /* The contents of this section are held in memory pointed to
31506 + by the contents field. This is checked by bfd_get_section_contents,
31507 + and the data is retrieved from memory if appropriate. */
31508 +#define SEC_IN_MEMORY 0x4000
31509 +
31510 + /* The contents of this section are to be excluded by the
31511 + linker for executable and shared objects unless those
31512 + objects are to be further relocated. */
31513 +#define SEC_EXCLUDE 0x8000
31514 +
31515 + /* The contents of this section are to be sorted based on the sum of
31516 + the symbol and addend values specified by the associated relocation
31517 + entries. Entries without associated relocation entries will be
31518 + appended to the end of the section in an unspecified order. */
31519 +#define SEC_SORT_ENTRIES 0x10000
31520 +
31521 + /* When linking, duplicate sections of the same name should be
31522 + discarded, rather than being combined into a single section as
31523 + is usually done. This is similar to how common symbols are
31524 + handled. See SEC_LINK_DUPLICATES below. */
31525 +#define SEC_LINK_ONCE 0x20000
31526 +
31527 + /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
31528 + should handle duplicate sections. */
31529 +#define SEC_LINK_DUPLICATES 0x40000
31530 +
31531 + /* This value for SEC_LINK_DUPLICATES means that duplicate
31532 + sections with the same name should simply be discarded. */
31533 +#define SEC_LINK_DUPLICATES_DISCARD 0x0
31534 +
31535 + /* This value for SEC_LINK_DUPLICATES means that the linker
31536 + should warn if there are any duplicate sections, although
31537 + it should still only link one copy. */
31538 +#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
31539 +
31540 + /* This value for SEC_LINK_DUPLICATES means that the linker
31541 + should warn if any duplicate sections are a different size. */
31542 +#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
31543 +
31544 + /* This value for SEC_LINK_DUPLICATES means that the linker
31545 + should warn if any duplicate sections contain different
31546 + contents. */
31547 +#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
31548 + (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
31549 +
31550 + /* This section was created by the linker as part of dynamic
31551 + relocation or other arcane processing. It is skipped when
31552 + going through the first-pass output, trusting that someone
31553 + else up the line will take care of it later. */
31554 +#define SEC_LINKER_CREATED 0x200000
31555 +
31556 + /* This section should not be subject to garbage collection.
31557 + Also set to inform the linker that this section should not be
31558 + listed in the link map as discarded. */
31559 +#define SEC_KEEP 0x400000
31560 +
31561 + /* This section contains "short" data, and should be placed
31562 + "near" the GP. */
31563 +#define SEC_SMALL_DATA 0x800000
31564 +
31565 + /* Attempt to merge identical entities in the section.
31566 + Entity size is given in the entsize field. */
31567 +#define SEC_MERGE 0x1000000
31568 +
31569 + /* If given with SEC_MERGE, entities to merge are zero terminated
31570 + strings where entsize specifies character size instead of fixed
31571 + size entries. */
31572 +#define SEC_STRINGS 0x2000000
31573 +
31574 + /* This section contains data about section groups. */
31575 +#define SEC_GROUP 0x4000000
31576 +
31577 + /* The section is a COFF shared library section. This flag is
31578 + only for the linker. If this type of section appears in
31579 + the input file, the linker must copy it to the output file
31580 + without changing the vma or size. FIXME: Although this
31581 + was originally intended to be general, it really is COFF
31582 + specific (and the flag was renamed to indicate this). It
31583 + might be cleaner to have some more general mechanism to
31584 + allow the back end to control what the linker does with
31585 + sections. */
31586 +#define SEC_COFF_SHARED_LIBRARY 0x10000000
31587 +
31588 + /* This section contains data which may be shared with other
31589 + executables or shared objects. This is for COFF only. */
31590 +#define SEC_COFF_SHARED 0x20000000
31591 +
31592 + /* When a section with this flag is being linked, then if the size of
31593 + the input section is less than a page, it should not cross a page
31594 + boundary. If the size of the input section is one page or more,
31595 + it should be aligned on a page boundary. This is for TI
31596 + TMS320C54X only. */
31597 +#define SEC_TIC54X_BLOCK 0x40000000
31598 +
31599 + /* Conditionally link this section; do not link if there are no
31600 + references found to any symbol in the section. This is for TI
31601 + TMS320C54X only. */
31602 +#define SEC_TIC54X_CLINK 0x80000000
31603 +
31604 + /* End of section flags. */
31605 +
31606 + /* Some internal packed boolean fields. */
31607 +
31608 + /* See the vma field. */
31609 + unsigned int user_set_vma : 1;
31610 +
31611 + /* A mark flag used by some of the linker backends. */
31612 + unsigned int linker_mark : 1;
31613 +
31614 + /* Another mark flag used by some of the linker backends. Set for
31615 + output sections that have an input section. */
31616 + unsigned int linker_has_input : 1;
31617 +
31618 + /* Mark flags used by some linker backends for garbage collection. */
31619 + unsigned int gc_mark : 1;
31620 + unsigned int gc_mark_from_eh : 1;
31621 +
31622 + /* The following flags are used by the ELF linker. */
31623 +
31624 + /* Mark sections which have been allocated to segments. */
31625 + unsigned int segment_mark : 1;
31626 +
31627 + /* Type of sec_info information. */
31628 + unsigned int sec_info_type:3;
31629 +#define ELF_INFO_TYPE_NONE 0
31630 +#define ELF_INFO_TYPE_STABS 1
31631 +#define ELF_INFO_TYPE_MERGE 2
31632 +#define ELF_INFO_TYPE_EH_FRAME 3
31633 +#define ELF_INFO_TYPE_JUST_SYMS 4
31634 +
31635 + /* Nonzero if this section uses RELA relocations, rather than REL. */
31636 + unsigned int use_rela_p:1;
31637 +
31638 + /* Bits used by various backends. The generic code doesn't touch
31639 + these fields. */
31640 +
31641 + /* Nonzero if this section has TLS related relocations. */
31642 + unsigned int has_tls_reloc:1;
31643 +
31644 + /* Nonzero if this section has a gp reloc. */
31645 + unsigned int has_gp_reloc:1;
31646 +
31647 + /* Nonzero if this section needs the relax finalize pass. */
31648 + unsigned int need_finalize_relax:1;
31649 +
31650 + /* Whether relocations have been processed. */
31651 + unsigned int reloc_done : 1;
31652 +
31653 + /* End of internal packed boolean fields. */
31654 +
31655 + /* The virtual memory address of the section - where it will be
31656 + at run time. The symbols are relocated against this. The
31657 + user_set_vma flag is maintained by bfd; if it's not set, the
31658 + backend can assign addresses (for example, in <<a.out>>, where
31659 + the default address for <<.data>> is dependent on the specific
31660 + target and various flags). */
31661 + bfd_vma vma;
31662 +
31663 + /* The load address of the section - where it would be in a
31664 + rom image; really only used for writing section header
31665 + information. */
31666 + bfd_vma lma;
31667 +
31668 + /* The size of the section in octets, as it will be output.
31669 + Contains a value even if the section has no contents (e.g., the
31670 + size of <<.bss>>). */
31671 + bfd_size_type size;
31672 +
31673 + /* For input sections, the original size on disk of the section, in
31674 + octets. This field is used by the linker relaxation code. It is
31675 + currently only set for sections where the linker relaxation scheme
31676 + doesn't cache altered section and reloc contents (stabs, eh_frame,
31677 + SEC_MERGE, some coff relaxing targets), and thus the original size
31678 + needs to be kept to read the section multiple times.
31679 + For output sections, rawsize holds the section size calculated on
31680 + a previous linker relaxation pass. */
31681 + bfd_size_type rawsize;
31682 +
31683 + /* If this section is going to be output, then this value is the
31684 + offset in *bytes* into the output section of the first byte in the
31685 + input section (byte ==> smallest addressable unit on the
31686 + target). In most cases, if this was going to start at the
31687 + 100th octet (8-bit quantity) in the output section, this value
31688 + would be 100. However, if the target byte size is 16 bits
31689 + (bfd_octets_per_byte is "2"), this value would be 50. */
31690 + bfd_vma output_offset;
31691 +
31692 + /* The output section through which to map on output. */
31693 + struct bfd_section *output_section;
31694 +
31695 + /* The alignment requirement of the section, as an exponent of 2 -
31696 + e.g., 3 aligns to 2^3 (or 8). */
31697 + unsigned int alignment_power;
31698 +
31699 + /* If an input section, a pointer to a vector of relocation
31700 + records for the data in this section. */
31701 + struct reloc_cache_entry *relocation;
31702 +
31703 + /* If an output section, a pointer to a vector of pointers to
31704 + relocation records for the data in this section. */
31705 + struct reloc_cache_entry **orelocation;
31706 +
31707 + /* The number of relocation records in one of the above. */
31708 + unsigned reloc_count;
31709 +
31710 + /* Information below is back end specific - and not always used
31711 + or updated. */
31712 +
31713 + /* File position of section data. */
31714 + file_ptr filepos;
31715 +
31716 + /* File position of relocation info. */
31717 + file_ptr rel_filepos;
31718 +
31719 + /* File position of line data. */
31720 + file_ptr line_filepos;
31721 +
31722 + /* Pointer to data for applications. */
31723 + void *userdata;
31724 +
31725 + /* If the SEC_IN_MEMORY flag is set, this points to the actual
31726 + contents. */
31727 + unsigned char *contents;
31728 +
31729 + /* Attached line number information. */
31730 + alent *lineno;
31731 +
31732 + /* Number of line number records. */
31733 + unsigned int lineno_count;
31734 +
31735 + /* Entity size for merging purposes. */
31736 + unsigned int entsize;
31737 +
31738 + /* Points to the kept section if this section is a link-once section,
31739 + and is discarded. */
31740 + struct bfd_section *kept_section;
31741 +
31742 + /* When a section is being output, this value changes as more
31743 + linenumbers are written out. */
31744 + file_ptr moving_line_filepos;
31745 +
31746 + /* What the section number is in the target world. */
31747 + int target_index;
31748 +
31749 + void *used_by_bfd;
31750 +
31751 + /* If this is a constructor section then here is a list of the
31752 + relocations created to relocate items within it. */
31753 + struct relent_chain *constructor_chain;
31754 +
31755 + /* The BFD which owns the section. */
31756 + bfd *owner;
31757 +
31758 + /* A symbol which points at this section only. */
31759 + struct bfd_symbol *symbol;
31760 + struct bfd_symbol **symbol_ptr_ptr;
31761 +
31762 + /* Early in the link process, map_head and map_tail are used to build
31763 + a list of input sections attached to an output section. Later,
31764 + output sections use these fields for a list of bfd_link_order
31765 + structs. */
31766 + union {
31767 + struct bfd_link_order *link_order;
31768 + struct bfd_section *s;
31769 + } map_head, map_tail;
31770 +} asection;
31771 +
31772 +/* These sections are global, and are managed by BFD. The application
31773 + and target back end are not permitted to change the values in
31774 + these sections. New code should use the section_ptr macros rather
31775 + than referring directly to the const sections. The const sections
31776 + may eventually vanish. */
31777 +#define BFD_ABS_SECTION_NAME "*ABS*"
31778 +#define BFD_UND_SECTION_NAME "*UND*"
31779 +#define BFD_COM_SECTION_NAME "*COM*"
31780 +#define BFD_IND_SECTION_NAME "*IND*"
31781 +
31782 +/* The absolute section. */
31783 +extern asection bfd_abs_section;
31784 +#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
31785 +#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
31786 +/* Pointer to the undefined section. */
31787 +extern asection bfd_und_section;
31788 +#define bfd_und_section_ptr ((asection *) &bfd_und_section)
31789 +#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
31790 +/* Pointer to the common section. */
31791 +extern asection bfd_com_section;
31792 +#define bfd_com_section_ptr ((asection *) &bfd_com_section)
31793 +/* Pointer to the indirect section. */
31794 +extern asection bfd_ind_section;
31795 +#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
31796 +#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
31797 +
31798 +#define bfd_is_const_section(SEC) \
31799 + ( ((SEC) == bfd_abs_section_ptr) \
31800 + || ((SEC) == bfd_und_section_ptr) \
31801 + || ((SEC) == bfd_com_section_ptr) \
31802 + || ((SEC) == bfd_ind_section_ptr))
31803 +
31804 +/* Macros to handle insertion and deletion of a bfd's sections. These
31805 + only handle the list pointers, ie. do not adjust section_count,
31806 + target_index etc. */
31807 +#define bfd_section_list_remove(ABFD, S) \
31808 + do \
31809 + { \
31810 + asection *_s = S; \
31811 + asection *_next = _s->next; \
31812 + asection *_prev = _s->prev; \
31813 + if (_prev) \
31814 + _prev->next = _next; \
31815 + else \
31816 + (ABFD)->sections = _next; \
31817 + if (_next) \
31818 + _next->prev = _prev; \
31819 + else \
31820 + (ABFD)->section_last = _prev; \
31821 + } \
31822 + while (0)
31823 +#define bfd_section_list_append(ABFD, S) \
31824 + do \
31825 + { \
31826 + asection *_s = S; \
31827 + bfd *_abfd = ABFD; \
31828 + _s->next = NULL; \
31829 + if (_abfd->section_last) \
31830 + { \
31831 + _s->prev = _abfd->section_last; \
31832 + _abfd->section_last->next = _s; \
31833 + } \
31834 + else \
31835 + { \
31836 + _s->prev = NULL; \
31837 + _abfd->sections = _s; \
31838 + } \
31839 + _abfd->section_last = _s; \
31840 + } \
31841 + while (0)
31842 +#define bfd_section_list_prepend(ABFD, S) \
31843 + do \
31844 + { \
31845 + asection *_s = S; \
31846 + bfd *_abfd = ABFD; \
31847 + _s->prev = NULL; \
31848 + if (_abfd->sections) \
31849 + { \
31850 + _s->next = _abfd->sections; \
31851 + _abfd->sections->prev = _s; \
31852 + } \
31853 + else \
31854 + { \
31855 + _s->next = NULL; \
31856 + _abfd->section_last = _s; \
31857 + } \
31858 + _abfd->sections = _s; \
31859 + } \
31860 + while (0)
31861 +#define bfd_section_list_insert_after(ABFD, A, S) \
31862 + do \
31863 + { \
31864 + asection *_a = A; \
31865 + asection *_s = S; \
31866 + asection *_next = _a->next; \
31867 + _s->next = _next; \
31868 + _s->prev = _a; \
31869 + _a->next = _s; \
31870 + if (_next) \
31871 + _next->prev = _s; \
31872 + else \
31873 + (ABFD)->section_last = _s; \
31874 + } \
31875 + while (0)
31876 +#define bfd_section_list_insert_before(ABFD, B, S) \
31877 + do \
31878 + { \
31879 + asection *_b = B; \
31880 + asection *_s = S; \
31881 + asection *_prev = _b->prev; \
31882 + _s->prev = _prev; \
31883 + _s->next = _b; \
31884 + _b->prev = _s; \
31885 + if (_prev) \
31886 + _prev->next = _s; \
31887 + else \
31888 + (ABFD)->sections = _s; \
31889 + } \
31890 + while (0)
31891 +#define bfd_section_removed_from_list(ABFD, S) \
31892 + ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
31893 +
31894 +#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
31895 + /* name, id, index, next, prev, flags, user_set_vma, */ \
31896 + { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
31897 + \
31898 + /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \
31899 + 0, 0, 1, 0, \
31900 + \
31901 + /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \
31902 + 0, 0, 0, 0, \
31903 + \
31904 + /* has_gp_reloc, need_finalize_relax, reloc_done, */ \
31905 + 0, 0, 0, \
31906 + \
31907 + /* vma, lma, size, rawsize */ \
31908 + 0, 0, 0, 0, \
31909 + \
31910 + /* output_offset, output_section, alignment_power, */ \
31911 + 0, (struct bfd_section *) &SEC, 0, \
31912 + \
31913 + /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
31914 + NULL, NULL, 0, 0, 0, \
31915 + \
31916 + /* line_filepos, userdata, contents, lineno, lineno_count, */ \
31917 + 0, NULL, NULL, NULL, 0, \
31918 + \
31919 + /* entsize, kept_section, moving_line_filepos, */ \
31920 + 0, NULL, 0, \
31921 + \
31922 + /* target_index, used_by_bfd, constructor_chain, owner, */ \
31923 + 0, NULL, NULL, NULL, \
31924 + \
31925 + /* symbol, symbol_ptr_ptr, */ \
31926 + (struct bfd_symbol *) SYM, &SEC.symbol, \
31927 + \
31928 + /* map_head, map_tail */ \
31929 + { NULL }, { NULL } \
31930 + }
31931 +
31932 +void bfd_section_list_clear (bfd *);
31933 +
31934 +asection *bfd_get_section_by_name (bfd *abfd, const char *name);
31935 +
31936 +asection *bfd_get_section_by_name_if
31937 + (bfd *abfd,
31938 + const char *name,
31939 + bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
31940 + void *obj);
31941 +
31942 +char *bfd_get_unique_section_name
31943 + (bfd *abfd, const char *templat, int *count);
31944 +
31945 +asection *bfd_make_section_old_way (bfd *abfd, const char *name);
31946 +
31947 +asection *bfd_make_section_anyway_with_flags
31948 + (bfd *abfd, const char *name, flagword flags);
31949 +
31950 +asection *bfd_make_section_anyway (bfd *abfd, const char *name);
31951 +
31952 +asection *bfd_make_section_with_flags
31953 + (bfd *, const char *name, flagword flags);
31954 +
31955 +asection *bfd_make_section (bfd *, const char *name);
31956 +
31957 +bfd_boolean bfd_set_section_flags
31958 + (bfd *abfd, asection *sec, flagword flags);
31959 +
31960 +void bfd_map_over_sections
31961 + (bfd *abfd,
31962 + void (*func) (bfd *abfd, asection *sect, void *obj),
31963 + void *obj);
31964 +
31965 +asection *bfd_sections_find_if
31966 + (bfd *abfd,
31967 + bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
31968 + void *obj);
31969 +
31970 +bfd_boolean bfd_set_section_size
31971 + (bfd *abfd, asection *sec, bfd_size_type val);
31972 +
31973 +bfd_boolean bfd_set_section_contents
31974 + (bfd *abfd, asection *section, const void *data,
31975 + file_ptr offset, bfd_size_type count);
31976 +
31977 +bfd_boolean bfd_get_section_contents
31978 + (bfd *abfd, asection *section, void *location, file_ptr offset,
31979 + bfd_size_type count);
31980 +
31981 +bfd_boolean bfd_malloc_and_get_section
31982 + (bfd *abfd, asection *section, bfd_byte **buf);
31983 +
31984 +bfd_boolean bfd_copy_private_section_data
31985 + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
31986 +
31987 +#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
31988 + BFD_SEND (obfd, _bfd_copy_private_section_data, \
31989 + (ibfd, isection, obfd, osection))
31990 +bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
31991 +
31992 +bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
31993 +
31994 +/* Extracted from archures.c. */
31995 +enum bfd_architecture
31996 +{
31997 + bfd_arch_unknown, /* File arch not known. */
31998 + bfd_arch_obscure, /* Arch known, not one of these. */
31999 + bfd_arch_m68k, /* Motorola 68xxx */
32000 +#define bfd_mach_m68000 1
32001 +#define bfd_mach_m68008 2
32002 +#define bfd_mach_m68010 3
32003 +#define bfd_mach_m68020 4
32004 +#define bfd_mach_m68030 5
32005 +#define bfd_mach_m68040 6
32006 +#define bfd_mach_m68060 7
32007 +#define bfd_mach_cpu32 8
32008 +#define bfd_mach_fido 9
32009 +#define bfd_mach_mcf_isa_a_nodiv 10
32010 +#define bfd_mach_mcf_isa_a 11
32011 +#define bfd_mach_mcf_isa_a_mac 12
32012 +#define bfd_mach_mcf_isa_a_emac 13
32013 +#define bfd_mach_mcf_isa_aplus 14
32014 +#define bfd_mach_mcf_isa_aplus_mac 15
32015 +#define bfd_mach_mcf_isa_aplus_emac 16
32016 +#define bfd_mach_mcf_isa_b_nousp 17
32017 +#define bfd_mach_mcf_isa_b_nousp_mac 18
32018 +#define bfd_mach_mcf_isa_b_nousp_emac 19
32019 +#define bfd_mach_mcf_isa_b 20
32020 +#define bfd_mach_mcf_isa_b_mac 21
32021 +#define bfd_mach_mcf_isa_b_emac 22
32022 +#define bfd_mach_mcf_isa_b_float 23
32023 +#define bfd_mach_mcf_isa_b_float_mac 24
32024 +#define bfd_mach_mcf_isa_b_float_emac 25
32025 +#define bfd_mach_mcf_isa_c 26
32026 +#define bfd_mach_mcf_isa_c_mac 27
32027 +#define bfd_mach_mcf_isa_c_emac 28
32028 + bfd_arch_vax, /* DEC Vax */
32029 + bfd_arch_i960, /* Intel 960 */
32030 + /* The order of the following is important.
32031 + lower number indicates a machine type that
32032 + only accepts a subset of the instructions
32033 + available to machines with higher numbers.
32034 + The exception is the "ca", which is
32035 + incompatible with all other machines except
32036 + "core". */
32037 +
32038 +#define bfd_mach_i960_core 1
32039 +#define bfd_mach_i960_ka_sa 2
32040 +#define bfd_mach_i960_kb_sb 3
32041 +#define bfd_mach_i960_mc 4
32042 +#define bfd_mach_i960_xa 5
32043 +#define bfd_mach_i960_ca 6
32044 +#define bfd_mach_i960_jx 7
32045 +#define bfd_mach_i960_hx 8
32046 +
32047 + bfd_arch_or32, /* OpenRISC 32 */
32048 +
32049 + bfd_arch_sparc, /* SPARC */
32050 +#define bfd_mach_sparc 1
32051 +/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
32052 +#define bfd_mach_sparc_sparclet 2
32053 +#define bfd_mach_sparc_sparclite 3
32054 +#define bfd_mach_sparc_v8plus 4
32055 +#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
32056 +#define bfd_mach_sparc_sparclite_le 6
32057 +#define bfd_mach_sparc_v9 7
32058 +#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
32059 +#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
32060 +#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
32061 +/* Nonzero if MACH has the v9 instruction set. */
32062 +#define bfd_mach_sparc_v9_p(mach) \
32063 + ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
32064 + && (mach) != bfd_mach_sparc_sparclite_le)
32065 +/* Nonzero if MACH is a 64 bit sparc architecture. */
32066 +#define bfd_mach_sparc_64bit_p(mach) \
32067 + ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
32068 + bfd_arch_spu, /* PowerPC SPU */
32069 +#define bfd_mach_spu 256
32070 + bfd_arch_mips, /* MIPS Rxxxx */
32071 +#define bfd_mach_mips3000 3000
32072 +#define bfd_mach_mips3900 3900
32073 +#define bfd_mach_mips4000 4000
32074 +#define bfd_mach_mips4010 4010
32075 +#define bfd_mach_mips4100 4100
32076 +#define bfd_mach_mips4111 4111
32077 +#define bfd_mach_mips4120 4120
32078 +#define bfd_mach_mips4300 4300
32079 +#define bfd_mach_mips4400 4400
32080 +#define bfd_mach_mips4600 4600
32081 +#define bfd_mach_mips4650 4650
32082 +#define bfd_mach_mips5000 5000
32083 +#define bfd_mach_mips5400 5400
32084 +#define bfd_mach_mips5500 5500
32085 +#define bfd_mach_mips6000 6000
32086 +#define bfd_mach_mips7000 7000
32087 +#define bfd_mach_mips8000 8000
32088 +#define bfd_mach_mips9000 9000
32089 +#define bfd_mach_mips10000 10000
32090 +#define bfd_mach_mips12000 12000
32091 +#define bfd_mach_mips16 16
32092 +#define bfd_mach_mips5 5
32093 +#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
32094 +#define bfd_mach_mipsisa32 32
32095 +#define bfd_mach_mipsisa32r2 33
32096 +#define bfd_mach_mipsisa64 64
32097 +#define bfd_mach_mipsisa64r2 65
32098 + bfd_arch_i386, /* Intel 386 */
32099 +#define bfd_mach_i386_i386 1
32100 +#define bfd_mach_i386_i8086 2
32101 +#define bfd_mach_i386_i386_intel_syntax 3
32102 +#define bfd_mach_x86_64 64
32103 +#define bfd_mach_x86_64_intel_syntax 65
32104 + bfd_arch_we32k, /* AT&T WE32xxx */
32105 + bfd_arch_tahoe, /* CCI/Harris Tahoe */
32106 + bfd_arch_i860, /* Intel 860 */
32107 + bfd_arch_i370, /* IBM 360/370 Mainframes */
32108 + bfd_arch_romp, /* IBM ROMP PC/RT */
32109 + bfd_arch_convex, /* Convex */
32110 + bfd_arch_m88k, /* Motorola 88xxx */
32111 + bfd_arch_m98k, /* Motorola 98xxx */
32112 + bfd_arch_pyramid, /* Pyramid Technology */
32113 + bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
32114 +#define bfd_mach_h8300 1
32115 +#define bfd_mach_h8300h 2
32116 +#define bfd_mach_h8300s 3
32117 +#define bfd_mach_h8300hn 4
32118 +#define bfd_mach_h8300sn 5
32119 +#define bfd_mach_h8300sx 6
32120 +#define bfd_mach_h8300sxn 7
32121 + bfd_arch_pdp11, /* DEC PDP-11 */
32122 + bfd_arch_powerpc, /* PowerPC */
32123 +#define bfd_mach_ppc 32
32124 +#define bfd_mach_ppc64 64
32125 +#define bfd_mach_ppc_403 403
32126 +#define bfd_mach_ppc_403gc 4030
32127 +#define bfd_mach_ppc_505 505
32128 +#define bfd_mach_ppc_601 601
32129 +#define bfd_mach_ppc_602 602
32130 +#define bfd_mach_ppc_603 603
32131 +#define bfd_mach_ppc_ec603e 6031
32132 +#define bfd_mach_ppc_604 604
32133 +#define bfd_mach_ppc_620 620
32134 +#define bfd_mach_ppc_630 630
32135 +#define bfd_mach_ppc_750 750
32136 +#define bfd_mach_ppc_860 860
32137 +#define bfd_mach_ppc_a35 35
32138 +#define bfd_mach_ppc_rs64ii 642
32139 +#define bfd_mach_ppc_rs64iii 643
32140 +#define bfd_mach_ppc_7400 7400
32141 +#define bfd_mach_ppc_e500 500
32142 + bfd_arch_rs6000, /* IBM RS/6000 */
32143 +#define bfd_mach_rs6k 6000
32144 +#define bfd_mach_rs6k_rs1 6001
32145 +#define bfd_mach_rs6k_rsc 6003
32146 +#define bfd_mach_rs6k_rs2 6002
32147 + bfd_arch_hppa, /* HP PA RISC */
32148 +#define bfd_mach_hppa10 10
32149 +#define bfd_mach_hppa11 11
32150 +#define bfd_mach_hppa20 20
32151 +#define bfd_mach_hppa20w 25
32152 + bfd_arch_d10v, /* Mitsubishi D10V */
32153 +#define bfd_mach_d10v 1
32154 +#define bfd_mach_d10v_ts2 2
32155 +#define bfd_mach_d10v_ts3 3
32156 + bfd_arch_d30v, /* Mitsubishi D30V */
32157 + bfd_arch_dlx, /* DLX */
32158 + bfd_arch_m68hc11, /* Motorola 68HC11 */
32159 + bfd_arch_m68hc12, /* Motorola 68HC12 */
32160 +#define bfd_mach_m6812_default 0
32161 +#define bfd_mach_m6812 1
32162 +#define bfd_mach_m6812s 2
32163 + bfd_arch_z8k, /* Zilog Z8000 */
32164 +#define bfd_mach_z8001 1
32165 +#define bfd_mach_z8002 2
32166 + bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
32167 + bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
32168 +#define bfd_mach_sh 1
32169 +#define bfd_mach_sh2 0x20
32170 +#define bfd_mach_sh_dsp 0x2d
32171 +#define bfd_mach_sh2a 0x2a
32172 +#define bfd_mach_sh2a_nofpu 0x2b
32173 +#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
32174 +#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
32175 +#define bfd_mach_sh2a_or_sh4 0x2a3
32176 +#define bfd_mach_sh2a_or_sh3e 0x2a4
32177 +#define bfd_mach_sh2e 0x2e
32178 +#define bfd_mach_sh3 0x30
32179 +#define bfd_mach_sh3_nommu 0x31
32180 +#define bfd_mach_sh3_dsp 0x3d
32181 +#define bfd_mach_sh3e 0x3e
32182 +#define bfd_mach_sh4 0x40
32183 +#define bfd_mach_sh4_nofpu 0x41
32184 +#define bfd_mach_sh4_nommu_nofpu 0x42
32185 +#define bfd_mach_sh4a 0x4a
32186 +#define bfd_mach_sh4a_nofpu 0x4b
32187 +#define bfd_mach_sh4al_dsp 0x4d
32188 +#define bfd_mach_sh5 0x50
32189 + bfd_arch_alpha, /* Dec Alpha */
32190 +#define bfd_mach_alpha_ev4 0x10
32191 +#define bfd_mach_alpha_ev5 0x20
32192 +#define bfd_mach_alpha_ev6 0x30
32193 + bfd_arch_arm, /* Advanced Risc Machines ARM. */
32194 +#define bfd_mach_arm_unknown 0
32195 +#define bfd_mach_arm_2 1
32196 +#define bfd_mach_arm_2a 2
32197 +#define bfd_mach_arm_3 3
32198 +#define bfd_mach_arm_3M 4
32199 +#define bfd_mach_arm_4 5
32200 +#define bfd_mach_arm_4T 6
32201 +#define bfd_mach_arm_5 7
32202 +#define bfd_mach_arm_5T 8
32203 +#define bfd_mach_arm_5TE 9
32204 +#define bfd_mach_arm_XScale 10
32205 +#define bfd_mach_arm_ep9312 11
32206 +#define bfd_mach_arm_iWMMXt 12
32207 +#define bfd_mach_arm_iWMMXt2 13
32208 + bfd_arch_ns32k, /* National Semiconductors ns32000 */
32209 + bfd_arch_w65, /* WDC 65816 */
32210 + bfd_arch_tic30, /* Texas Instruments TMS320C30 */
32211 + bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
32212 +#define bfd_mach_tic3x 30
32213 +#define bfd_mach_tic4x 40
32214 + bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
32215 + bfd_arch_tic80, /* TI TMS320c80 (MVP) */
32216 + bfd_arch_v850, /* NEC V850 */
32217 +#define bfd_mach_v850 1
32218 +#define bfd_mach_v850e 'E'
32219 +#define bfd_mach_v850e1 '1'
32220 + bfd_arch_arc, /* ARC Cores */
32221 +#define bfd_mach_arc_5 5
32222 +#define bfd_mach_arc_6 6
32223 +#define bfd_mach_arc_7 7
32224 +#define bfd_mach_arc_8 8
32225 + bfd_arch_m32c, /* Renesas M16C/M32C. */
32226 +#define bfd_mach_m16c 0x75
32227 +#define bfd_mach_m32c 0x78
32228 + bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
32229 +#define bfd_mach_m32r 1 /* For backwards compatibility. */
32230 +#define bfd_mach_m32rx 'x'
32231 +#define bfd_mach_m32r2 '2'
32232 + bfd_arch_mn10200, /* Matsushita MN10200 */
32233 + bfd_arch_mn10300, /* Matsushita MN10300 */
32234 +#define bfd_mach_mn10300 300
32235 +#define bfd_mach_am33 330
32236 +#define bfd_mach_am33_2 332
32237 + bfd_arch_fr30,
32238 +#define bfd_mach_fr30 0x46523330
32239 + bfd_arch_frv,
32240 +#define bfd_mach_frv 1
32241 +#define bfd_mach_frvsimple 2
32242 +#define bfd_mach_fr300 300
32243 +#define bfd_mach_fr400 400
32244 +#define bfd_mach_fr450 450
32245 +#define bfd_mach_frvtomcat 499 /* fr500 prototype */
32246 +#define bfd_mach_fr500 500
32247 +#define bfd_mach_fr550 550
32248 + bfd_arch_mcore,
32249 + bfd_arch_mep,
32250 +#define bfd_mach_mep 1
32251 +#define bfd_mach_mep_h1 0x6831
32252 + bfd_arch_ia64, /* HP/Intel ia64 */
32253 +#define bfd_mach_ia64_elf64 64
32254 +#define bfd_mach_ia64_elf32 32
32255 + bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
32256 +#define bfd_mach_ip2022 1
32257 +#define bfd_mach_ip2022ext 2
32258 + bfd_arch_iq2000, /* Vitesse IQ2000. */
32259 +#define bfd_mach_iq2000 1
32260 +#define bfd_mach_iq10 2
32261 + bfd_arch_mt,
32262 +#define bfd_mach_ms1 1
32263 +#define bfd_mach_mrisc2 2
32264 +#define bfd_mach_ms2 3
32265 + bfd_arch_pj,
32266 + bfd_arch_avr, /* Atmel AVR microcontrollers. */
32267 +#define bfd_mach_avr1 1
32268 +#define bfd_mach_avr2 2
32269 +#define bfd_mach_avr3 3
32270 +#define bfd_mach_avr4 4
32271 +#define bfd_mach_avr5 5
32272 +#define bfd_mach_avr6 6
32273 + bfd_arch_bfin, /* ADI Blackfin */
32274 +#define bfd_mach_bfin 1
32275 + bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
32276 +#define bfd_mach_cr16 1
32277 + bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
32278 +#define bfd_mach_cr16c 1
32279 + bfd_arch_crx, /* National Semiconductor CRX. */
32280 +#define bfd_mach_crx 1
32281 + bfd_arch_cris, /* Axis CRIS */
32282 +#define bfd_mach_cris_v0_v10 255
32283 +#define bfd_mach_cris_v32 32
32284 +#define bfd_mach_cris_v10_v32 1032
32285 + bfd_arch_s390, /* IBM s390 */
32286 +#define bfd_mach_s390_31 31
32287 +#define bfd_mach_s390_64 64
32288 + bfd_arch_score, /* Sunplus score */
32289 + bfd_arch_openrisc, /* OpenRISC */
32290 + bfd_arch_mmix, /* Donald Knuth's educational processor. */
32291 + bfd_arch_xstormy16,
32292 +#define bfd_mach_xstormy16 1
32293 + bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
32294 +#define bfd_mach_msp11 11
32295 +#define bfd_mach_msp110 110
32296 +#define bfd_mach_msp12 12
32297 +#define bfd_mach_msp13 13
32298 +#define bfd_mach_msp14 14
32299 +#define bfd_mach_msp15 15
32300 +#define bfd_mach_msp16 16
32301 +#define bfd_mach_msp21 21
32302 +#define bfd_mach_msp31 31
32303 +#define bfd_mach_msp32 32
32304 +#define bfd_mach_msp33 33
32305 +#define bfd_mach_msp41 41
32306 +#define bfd_mach_msp42 42
32307 +#define bfd_mach_msp43 43
32308 +#define bfd_mach_msp44 44
32309 + bfd_arch_xc16x, /* Infineon's XC16X Series. */
32310 +#define bfd_mach_xc16x 1
32311 +#define bfd_mach_xc16xl 2
32312 +#define bfd_mach_xc16xs 3
32313 + bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
32314 +#define bfd_mach_xtensa 1
32315 + bfd_arch_maxq, /* Dallas MAXQ 10/20 */
32316 +#define bfd_mach_maxq10 10
32317 +#define bfd_mach_maxq20 20
32318 + bfd_arch_z80,
32319 +#define bfd_mach_z80strict 1 /* No undocumented opcodes. */
32320 +#define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
32321 +#define bfd_mach_z80full 7 /* All undocumented instructions. */
32322 +#define bfd_mach_r800 11 /* R800: successor with multiplication. */
32323 + bfd_arch_last
32324 + };
32325 +
32326 +typedef struct bfd_arch_info
32327 +{
32328 + int bits_per_word;
32329 + int bits_per_address;
32330 + int bits_per_byte;
32331 + enum bfd_architecture arch;
32332 + unsigned long mach;
32333 + const char *arch_name;
32334 + const char *printable_name;
32335 + unsigned int section_align_power;
32336 + /* TRUE if this is the default machine for the architecture.
32337 + The default arch should be the first entry for an arch so that
32338 + all the entries for that arch can be accessed via <<next>>. */
32339 + bfd_boolean the_default;
32340 + const struct bfd_arch_info * (*compatible)
32341 + (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
32342 +
32343 + bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
32344 +
32345 + const struct bfd_arch_info *next;
32346 +}
32347 +bfd_arch_info_type;
32348 +
32349 +const char *bfd_printable_name (bfd *abfd);
32350 +
32351 +const bfd_arch_info_type *bfd_scan_arch (const char *string);
32352 +
32353 +const char **bfd_arch_list (void);
32354 +
32355 +const bfd_arch_info_type *bfd_arch_get_compatible
32356 + (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
32357 +
32358 +void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
32359 +
32360 +enum bfd_architecture bfd_get_arch (bfd *abfd);
32361 +
32362 +unsigned long bfd_get_mach (bfd *abfd);
32363 +
32364 +unsigned int bfd_arch_bits_per_byte (bfd *abfd);
32365 +
32366 +unsigned int bfd_arch_bits_per_address (bfd *abfd);
32367 +
32368 +const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
32369 +
32370 +const bfd_arch_info_type *bfd_lookup_arch
32371 + (enum bfd_architecture arch, unsigned long machine);
32372 +
32373 +const char *bfd_printable_arch_mach
32374 + (enum bfd_architecture arch, unsigned long machine);
32375 +
32376 +unsigned int bfd_octets_per_byte (bfd *abfd);
32377 +
32378 +unsigned int bfd_arch_mach_octets_per_byte
32379 + (enum bfd_architecture arch, unsigned long machine);
32380 +
32381 +/* Extracted from reloc.c. */
32382 +typedef enum bfd_reloc_status
32383 +{
32384 + /* No errors detected. */
32385 + bfd_reloc_ok,
32386 +
32387 + /* The relocation was performed, but there was an overflow. */
32388 + bfd_reloc_overflow,
32389 +
32390 + /* The address to relocate was not within the section supplied. */
32391 + bfd_reloc_outofrange,
32392 +
32393 + /* Used by special functions. */
32394 + bfd_reloc_continue,
32395 +
32396 + /* Unsupported relocation size requested. */
32397 + bfd_reloc_notsupported,
32398 +
32399 + /* Unused. */
32400 + bfd_reloc_other,
32401 +
32402 + /* The symbol to relocate against was undefined. */
32403 + bfd_reloc_undefined,
32404 +
32405 + /* The relocation was performed, but may not be ok - presently
32406 + generated only when linking i960 coff files with i960 b.out
32407 + symbols. If this type is returned, the error_message argument
32408 + to bfd_perform_relocation will be set. */
32409 + bfd_reloc_dangerous
32410 + }
32411 + bfd_reloc_status_type;
32412 +
32413 +
32414 +typedef struct reloc_cache_entry
32415 +{
32416 + /* A pointer into the canonical table of pointers. */
32417 + struct bfd_symbol **sym_ptr_ptr;
32418 +
32419 + /* offset in section. */
32420 + bfd_size_type address;
32421 +
32422 + /* addend for relocation value. */
32423 + bfd_vma addend;
32424 +
32425 + /* Pointer to how to perform the required relocation. */
32426 + reloc_howto_type *howto;
32427 +
32428 +}
32429 +arelent;
32430 +
32431 +enum complain_overflow
32432 +{
32433 + /* Do not complain on overflow. */
32434 + complain_overflow_dont,
32435 +
32436 + /* Complain if the value overflows when considered as a signed
32437 + number one bit larger than the field. ie. A bitfield of N bits
32438 + is allowed to represent -2**n to 2**n-1. */
32439 + complain_overflow_bitfield,
32440 +
32441 + /* Complain if the value overflows when considered as a signed
32442 + number. */
32443 + complain_overflow_signed,
32444 +
32445 + /* Complain if the value overflows when considered as an
32446 + unsigned number. */
32447 + complain_overflow_unsigned
32448 +};
32449 +
32450 +struct reloc_howto_struct
32451 +{
32452 + /* The type field has mainly a documentary use - the back end can
32453 + do what it wants with it, though normally the back end's
32454 + external idea of what a reloc number is stored
32455 + in this field. For example, a PC relative word relocation
32456 + in a coff environment has the type 023 - because that's
32457 + what the outside world calls a R_PCRWORD reloc. */
32458 + unsigned int type;
32459 +
32460 + /* The value the final relocation is shifted right by. This drops
32461 + unwanted data from the relocation. */
32462 + unsigned int rightshift;
32463 +
32464 + /* The size of the item to be relocated. This is *not* a
32465 + power-of-two measure. To get the number of bytes operated
32466 + on by a type of relocation, use bfd_get_reloc_size. */
32467 + int size;
32468 +
32469 + /* The number of bits in the item to be relocated. This is used
32470 + when doing overflow checking. */
32471 + unsigned int bitsize;
32472 +
32473 + /* Notes that the relocation is relative to the location in the
32474 + data section of the addend. The relocation function will
32475 + subtract from the relocation value the address of the location
32476 + being relocated. */
32477 + bfd_boolean pc_relative;
32478 +
32479 + /* The bit position of the reloc value in the destination.
32480 + The relocated value is left shifted by this amount. */
32481 + unsigned int bitpos;
32482 +
32483 + /* What type of overflow error should be checked for when
32484 + relocating. */
32485 + enum complain_overflow complain_on_overflow;
32486 +
32487 + /* If this field is non null, then the supplied function is
32488 + called rather than the normal function. This allows really
32489 + strange relocation methods to be accommodated (e.g., i960 callj
32490 + instructions). */
32491 + bfd_reloc_status_type (*special_function)
32492 + (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
32493 + bfd *, char **);
32494 +
32495 + /* The textual name of the relocation type. */
32496 + char *name;
32497 +
32498 + /* Some formats record a relocation addend in the section contents
32499 + rather than with the relocation. For ELF formats this is the
32500 + distinction between USE_REL and USE_RELA (though the code checks
32501 + for USE_REL == 1/0). The value of this field is TRUE if the
32502 + addend is recorded with the section contents; when performing a
32503 + partial link (ld -r) the section contents (the data) will be
32504 + modified. The value of this field is FALSE if addends are
32505 + recorded with the relocation (in arelent.addend); when performing
32506 + a partial link the relocation will be modified.
32507 + All relocations for all ELF USE_RELA targets should set this field
32508 + to FALSE (values of TRUE should be looked on with suspicion).
32509 + However, the converse is not true: not all relocations of all ELF
32510 + USE_REL targets set this field to TRUE. Why this is so is peculiar
32511 + to each particular target. For relocs that aren't used in partial
32512 + links (e.g. GOT stuff) it doesn't matter what this is set to. */
32513 + bfd_boolean partial_inplace;
32514 +
32515 + /* src_mask selects the part of the instruction (or data) to be used
32516 + in the relocation sum. If the target relocations don't have an
32517 + addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
32518 + dst_mask to extract the addend from the section contents. If
32519 + relocations do have an addend in the reloc, eg. ELF USE_RELA, this
32520 + field should be zero. Non-zero values for ELF USE_RELA targets are
32521 + bogus as in those cases the value in the dst_mask part of the
32522 + section contents should be treated as garbage. */
32523 + bfd_vma src_mask;
32524 +
32525 + /* dst_mask selects which parts of the instruction (or data) are
32526 + replaced with a relocated value. */
32527 + bfd_vma dst_mask;
32528 +
32529 + /* When some formats create PC relative instructions, they leave
32530 + the value of the pc of the place being relocated in the offset
32531 + slot of the instruction, so that a PC relative relocation can
32532 + be made just by adding in an ordinary offset (e.g., sun3 a.out).
32533 + Some formats leave the displacement part of an instruction
32534 + empty (e.g., m88k bcs); this flag signals the fact. */
32535 + bfd_boolean pcrel_offset;
32536 +};
32537 +
32538 +#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
32539 + { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
32540 +#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
32541 + HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
32542 + NAME, FALSE, 0, 0, IN)
32543 +
32544 +#define EMPTY_HOWTO(C) \
32545 + HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
32546 + NULL, FALSE, 0, 0, FALSE)
32547 +
32548 +#define HOWTO_PREPARE(relocation, symbol) \
32549 + { \
32550 + if (symbol != NULL) \
32551 + { \
32552 + if (bfd_is_com_section (symbol->section)) \
32553 + { \
32554 + relocation = 0; \
32555 + } \
32556 + else \
32557 + { \
32558 + relocation = symbol->value; \
32559 + } \
32560 + } \
32561 + }
32562 +
32563 +unsigned int bfd_get_reloc_size (reloc_howto_type *);
32564 +
32565 +typedef struct relent_chain
32566 +{
32567 + arelent relent;
32568 + struct relent_chain *next;
32569 +}
32570 +arelent_chain;
32571 +
32572 +bfd_reloc_status_type bfd_check_overflow
32573 + (enum complain_overflow how,
32574 + unsigned int bitsize,
32575 + unsigned int rightshift,
32576 + unsigned int addrsize,
32577 + bfd_vma relocation);
32578 +
32579 +bfd_reloc_status_type bfd_perform_relocation
32580 + (bfd *abfd,
32581 + arelent *reloc_entry,
32582 + void *data,
32583 + asection *input_section,
32584 + bfd *output_bfd,
32585 + char **error_message);
32586 +
32587 +bfd_reloc_status_type bfd_install_relocation
32588 + (bfd *abfd,
32589 + arelent *reloc_entry,
32590 + void *data, bfd_vma data_start,
32591 + asection *input_section,
32592 + char **error_message);
32593 +
32594 +enum bfd_reloc_code_real {
32595 + _dummy_first_bfd_reloc_code_real,
32596 +
32597 +
32598 +/* Basic absolute relocations of N bits. */
32599 + BFD_RELOC_64,
32600 + BFD_RELOC_32,
32601 + BFD_RELOC_26,
32602 + BFD_RELOC_24,
32603 + BFD_RELOC_16,
32604 + BFD_RELOC_14,
32605 + BFD_RELOC_8,
32606 +
32607 +/* PC-relative relocations. Sometimes these are relative to the address
32608 +of the relocation itself; sometimes they are relative to the start of
32609 +the section containing the relocation. It depends on the specific target.
32610 +
32611 +The 24-bit relocation is used in some Intel 960 configurations. */
32612 + BFD_RELOC_64_PCREL,
32613 + BFD_RELOC_32_PCREL,
32614 + BFD_RELOC_24_PCREL,
32615 + BFD_RELOC_16_PCREL,
32616 + BFD_RELOC_12_PCREL,
32617 + BFD_RELOC_8_PCREL,
32618 +
32619 +/* Section relative relocations. Some targets need this for DWARF2. */
32620 + BFD_RELOC_32_SECREL,
32621 +
32622 +/* For ELF. */
32623 + BFD_RELOC_32_GOT_PCREL,
32624 + BFD_RELOC_16_GOT_PCREL,
32625 + BFD_RELOC_8_GOT_PCREL,
32626 + BFD_RELOC_32_GOTOFF,
32627 + BFD_RELOC_16_GOTOFF,
32628 + BFD_RELOC_LO16_GOTOFF,
32629 + BFD_RELOC_HI16_GOTOFF,
32630 + BFD_RELOC_HI16_S_GOTOFF,
32631 + BFD_RELOC_8_GOTOFF,
32632 + BFD_RELOC_64_PLT_PCREL,
32633 + BFD_RELOC_32_PLT_PCREL,
32634 + BFD_RELOC_24_PLT_PCREL,
32635 + BFD_RELOC_16_PLT_PCREL,
32636 + BFD_RELOC_8_PLT_PCREL,
32637 + BFD_RELOC_64_PLTOFF,
32638 + BFD_RELOC_32_PLTOFF,
32639 + BFD_RELOC_16_PLTOFF,
32640 + BFD_RELOC_LO16_PLTOFF,
32641 + BFD_RELOC_HI16_PLTOFF,
32642 + BFD_RELOC_HI16_S_PLTOFF,
32643 + BFD_RELOC_8_PLTOFF,
32644 +
32645 +/* Relocations used by 68K ELF. */
32646 + BFD_RELOC_68K_GLOB_DAT,
32647 + BFD_RELOC_68K_JMP_SLOT,
32648 + BFD_RELOC_68K_RELATIVE,
32649 +
32650 +/* Linkage-table relative. */
32651 + BFD_RELOC_32_BASEREL,
32652 + BFD_RELOC_16_BASEREL,
32653 + BFD_RELOC_LO16_BASEREL,
32654 + BFD_RELOC_HI16_BASEREL,
32655 + BFD_RELOC_HI16_S_BASEREL,
32656 + BFD_RELOC_8_BASEREL,
32657 + BFD_RELOC_RVA,
32658 +
32659 +/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */
32660 + BFD_RELOC_8_FFnn,
32661 +
32662 +/* These PC-relative relocations are stored as word displacements --
32663 +i.e., byte displacements shifted right two bits. The 30-bit word
32664 +displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
32665 +SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
32666 +signed 16-bit displacement is used on the MIPS, and the 23-bit
32667 +displacement is used on the Alpha. */
32668 + BFD_RELOC_32_PCREL_S2,
32669 + BFD_RELOC_16_PCREL_S2,
32670 + BFD_RELOC_23_PCREL_S2,
32671 +
32672 +/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
32673 +the target word. These are used on the SPARC. */
32674 + BFD_RELOC_HI22,
32675 + BFD_RELOC_LO10,
32676 +
32677 +/* For systems that allocate a Global Pointer register, these are
32678 +displacements off that register. These relocation types are
32679 +handled specially, because the value the register will have is
32680 +decided relatively late. */
32681 + BFD_RELOC_GPREL16,
32682 + BFD_RELOC_GPREL32,
32683 +
32684 +/* Reloc types used for i960/b.out. */
32685 + BFD_RELOC_I960_CALLJ,
32686 +
32687 +/* SPARC ELF relocations. There is probably some overlap with other
32688 +relocation types already defined. */
32689 + BFD_RELOC_NONE,
32690 + BFD_RELOC_SPARC_WDISP22,
32691 + BFD_RELOC_SPARC22,
32692 + BFD_RELOC_SPARC13,
32693 + BFD_RELOC_SPARC_GOT10,
32694 + BFD_RELOC_SPARC_GOT13,
32695 + BFD_RELOC_SPARC_GOT22,
32696 + BFD_RELOC_SPARC_PC10,
32697 + BFD_RELOC_SPARC_PC22,
32698 + BFD_RELOC_SPARC_WPLT30,
32699 + BFD_RELOC_SPARC_COPY,
32700 + BFD_RELOC_SPARC_GLOB_DAT,
32701 + BFD_RELOC_SPARC_JMP_SLOT,
32702 + BFD_RELOC_SPARC_RELATIVE,
32703 + BFD_RELOC_SPARC_UA16,
32704 + BFD_RELOC_SPARC_UA32,
32705 + BFD_RELOC_SPARC_UA64,
32706 +
32707 +/* I think these are specific to SPARC a.out (e.g., Sun 4). */
32708 + BFD_RELOC_SPARC_BASE13,
32709 + BFD_RELOC_SPARC_BASE22,
32710 +
32711 +/* SPARC64 relocations */
32712 +#define BFD_RELOC_SPARC_64 BFD_RELOC_64
32713 + BFD_RELOC_SPARC_10,
32714 + BFD_RELOC_SPARC_11,
32715 + BFD_RELOC_SPARC_OLO10,
32716 + BFD_RELOC_SPARC_HH22,
32717 + BFD_RELOC_SPARC_HM10,
32718 + BFD_RELOC_SPARC_LM22,
32719 + BFD_RELOC_SPARC_PC_HH22,
32720 + BFD_RELOC_SPARC_PC_HM10,
32721 + BFD_RELOC_SPARC_PC_LM22,
32722 + BFD_RELOC_SPARC_WDISP16,
32723 + BFD_RELOC_SPARC_WDISP19,
32724 + BFD_RELOC_SPARC_7,
32725 + BFD_RELOC_SPARC_6,
32726 + BFD_RELOC_SPARC_5,
32727 +#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
32728 + BFD_RELOC_SPARC_PLT32,
32729 + BFD_RELOC_SPARC_PLT64,
32730 + BFD_RELOC_SPARC_HIX22,
32731 + BFD_RELOC_SPARC_LOX10,
32732 + BFD_RELOC_SPARC_H44,
32733 + BFD_RELOC_SPARC_M44,
32734 + BFD_RELOC_SPARC_L44,
32735 + BFD_RELOC_SPARC_REGISTER,
32736 +
32737 +/* SPARC little endian relocation */
32738 + BFD_RELOC_SPARC_REV32,
32739 +
32740 +/* SPARC TLS relocations */
32741 + BFD_RELOC_SPARC_TLS_GD_HI22,
32742 + BFD_RELOC_SPARC_TLS_GD_LO10,
32743 + BFD_RELOC_SPARC_TLS_GD_ADD,
32744 + BFD_RELOC_SPARC_TLS_GD_CALL,
32745 + BFD_RELOC_SPARC_TLS_LDM_HI22,
32746 + BFD_RELOC_SPARC_TLS_LDM_LO10,
32747 + BFD_RELOC_SPARC_TLS_LDM_ADD,
32748 + BFD_RELOC_SPARC_TLS_LDM_CALL,
32749 + BFD_RELOC_SPARC_TLS_LDO_HIX22,
32750 + BFD_RELOC_SPARC_TLS_LDO_LOX10,
32751 + BFD_RELOC_SPARC_TLS_LDO_ADD,
32752 + BFD_RELOC_SPARC_TLS_IE_HI22,
32753 + BFD_RELOC_SPARC_TLS_IE_LO10,
32754 + BFD_RELOC_SPARC_TLS_IE_LD,
32755 + BFD_RELOC_SPARC_TLS_IE_LDX,
32756 + BFD_RELOC_SPARC_TLS_IE_ADD,
32757 + BFD_RELOC_SPARC_TLS_LE_HIX22,
32758 + BFD_RELOC_SPARC_TLS_LE_LOX10,
32759 + BFD_RELOC_SPARC_TLS_DTPMOD32,
32760 + BFD_RELOC_SPARC_TLS_DTPMOD64,
32761 + BFD_RELOC_SPARC_TLS_DTPOFF32,
32762 + BFD_RELOC_SPARC_TLS_DTPOFF64,
32763 + BFD_RELOC_SPARC_TLS_TPOFF32,
32764 + BFD_RELOC_SPARC_TLS_TPOFF64,
32765 +
32766 +/* SPU Relocations. */
32767 + BFD_RELOC_SPU_IMM7,
32768 + BFD_RELOC_SPU_IMM8,
32769 + BFD_RELOC_SPU_IMM10,
32770 + BFD_RELOC_SPU_IMM10W,
32771 + BFD_RELOC_SPU_IMM16,
32772 + BFD_RELOC_SPU_IMM16W,
32773 + BFD_RELOC_SPU_IMM18,
32774 + BFD_RELOC_SPU_PCREL9a,
32775 + BFD_RELOC_SPU_PCREL9b,
32776 + BFD_RELOC_SPU_PCREL16,
32777 + BFD_RELOC_SPU_LO16,
32778 + BFD_RELOC_SPU_HI16,
32779 + BFD_RELOC_SPU_PPU32,
32780 + BFD_RELOC_SPU_PPU64,
32781 +
32782 +/* Alpha ECOFF and ELF relocations. Some of these treat the symbol or
32783 +"addend" in some special way.
32784 +For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
32785 +writing; when reading, it will be the absolute section symbol. The
32786 +addend is the displacement in bytes of the "lda" instruction from
32787 +the "ldah" instruction (which is at the address of this reloc). */
32788 + BFD_RELOC_ALPHA_GPDISP_HI16,
32789 +
32790 +/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
32791 +with GPDISP_HI16 relocs. The addend is ignored when writing the
32792 +relocations out, and is filled in with the file's GP value on
32793 +reading, for convenience. */
32794 + BFD_RELOC_ALPHA_GPDISP_LO16,
32795 +
32796 +/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
32797 +relocation except that there is no accompanying GPDISP_LO16
32798 +relocation. */
32799 + BFD_RELOC_ALPHA_GPDISP,
32800 +
32801 +/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
32802 +the assembler turns it into a LDQ instruction to load the address of
32803 +the symbol, and then fills in a register in the real instruction.
32804 +
32805 +The LITERAL reloc, at the LDQ instruction, refers to the .lita
32806 +section symbol. The addend is ignored when writing, but is filled
32807 +in with the file's GP value on reading, for convenience, as with the
32808 +GPDISP_LO16 reloc.
32809 +
32810 +The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
32811 +It should refer to the symbol to be referenced, as with 16_GOTOFF,
32812 +but it generates output not based on the position within the .got
32813 +section, but relative to the GP value chosen for the file during the
32814 +final link stage.
32815 +
32816 +The LITUSE reloc, on the instruction using the loaded address, gives
32817 +information to the linker that it might be able to use to optimize
32818 +away some literal section references. The symbol is ignored (read
32819 +as the absolute section symbol), and the "addend" indicates the type
32820 +of instruction using the register:
32821 +1 - "memory" fmt insn
32822 +2 - byte-manipulation (byte offset reg)
32823 +3 - jsr (target of branch) */
32824 + BFD_RELOC_ALPHA_LITERAL,
32825 + BFD_RELOC_ALPHA_ELF_LITERAL,
32826 + BFD_RELOC_ALPHA_LITUSE,
32827 +
32828 +/* The HINT relocation indicates a value that should be filled into the
32829 +"hint" field of a jmp/jsr/ret instruction, for possible branch-
32830 +prediction logic which may be provided on some processors. */
32831 + BFD_RELOC_ALPHA_HINT,
32832 +
32833 +/* The LINKAGE relocation outputs a linkage pair in the object file,
32834 +which is filled by the linker. */
32835 + BFD_RELOC_ALPHA_LINKAGE,
32836 +
32837 +/* The CODEADDR relocation outputs a STO_CA in the object file,
32838 +which is filled by the linker. */
32839 + BFD_RELOC_ALPHA_CODEADDR,
32840 +
32841 +/* The GPREL_HI/LO relocations together form a 32-bit offset from the
32842 +GP register. */
32843 + BFD_RELOC_ALPHA_GPREL_HI16,
32844 + BFD_RELOC_ALPHA_GPREL_LO16,
32845 +
32846 +/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
32847 +share a common GP, and the target address is adjusted for
32848 +STO_ALPHA_STD_GPLOAD. */
32849 + BFD_RELOC_ALPHA_BRSGP,
32850 +
32851 +/* Alpha thread-local storage relocations. */
32852 + BFD_RELOC_ALPHA_TLSGD,
32853 + BFD_RELOC_ALPHA_TLSLDM,
32854 + BFD_RELOC_ALPHA_DTPMOD64,
32855 + BFD_RELOC_ALPHA_GOTDTPREL16,
32856 + BFD_RELOC_ALPHA_DTPREL64,
32857 + BFD_RELOC_ALPHA_DTPREL_HI16,
32858 + BFD_RELOC_ALPHA_DTPREL_LO16,
32859 + BFD_RELOC_ALPHA_DTPREL16,
32860 + BFD_RELOC_ALPHA_GOTTPREL16,
32861 + BFD_RELOC_ALPHA_TPREL64,
32862 + BFD_RELOC_ALPHA_TPREL_HI16,
32863 + BFD_RELOC_ALPHA_TPREL_LO16,
32864 + BFD_RELOC_ALPHA_TPREL16,
32865 +
32866 +/* Bits 27..2 of the relocation address shifted right 2 bits;
32867 +simple reloc otherwise. */
32868 + BFD_RELOC_MIPS_JMP,
32869 +
32870 +/* The MIPS16 jump instruction. */
32871 + BFD_RELOC_MIPS16_JMP,
32872 +
32873 +/* MIPS16 GP relative reloc. */
32874 + BFD_RELOC_MIPS16_GPREL,
32875 +
32876 +/* High 16 bits of 32-bit value; simple reloc. */
32877 + BFD_RELOC_HI16,
32878 +
32879 +/* High 16 bits of 32-bit value but the low 16 bits will be sign
32880 +extended and added to form the final result. If the low 16
32881 +bits form a negative number, we need to add one to the high value
32882 +to compensate for the borrow when the low bits are added. */
32883 + BFD_RELOC_HI16_S,
32884 +
32885 +/* Low 16 bits. */
32886 + BFD_RELOC_LO16,
32887 +
32888 +/* High 16 bits of 32-bit pc-relative value */
32889 + BFD_RELOC_HI16_PCREL,
32890 +
32891 +/* High 16 bits of 32-bit pc-relative value, adjusted */
32892 + BFD_RELOC_HI16_S_PCREL,
32893 +
32894 +/* Low 16 bits of pc-relative value */
32895 + BFD_RELOC_LO16_PCREL,
32896 +
32897 +/* MIPS16 high 16 bits of 32-bit value. */
32898 + BFD_RELOC_MIPS16_HI16,
32899 +
32900 +/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
32901 +extended and added to form the final result. If the low 16
32902 +bits form a negative number, we need to add one to the high value
32903 +to compensate for the borrow when the low bits are added. */
32904 + BFD_RELOC_MIPS16_HI16_S,
32905 +
32906 +/* MIPS16 low 16 bits. */
32907 + BFD_RELOC_MIPS16_LO16,
32908 +
32909 +/* Relocation against a MIPS literal section. */
32910 + BFD_RELOC_MIPS_LITERAL,
32911 +
32912 +/* MIPS ELF relocations. */
32913 + BFD_RELOC_MIPS_GOT16,
32914 + BFD_RELOC_MIPS_CALL16,
32915 + BFD_RELOC_MIPS_GOT_HI16,
32916 + BFD_RELOC_MIPS_GOT_LO16,
32917 + BFD_RELOC_MIPS_CALL_HI16,
32918 + BFD_RELOC_MIPS_CALL_LO16,
32919 + BFD_RELOC_MIPS_SUB,
32920 + BFD_RELOC_MIPS_GOT_PAGE,
32921 + BFD_RELOC_MIPS_GOT_OFST,
32922 + BFD_RELOC_MIPS_GOT_DISP,
32923 + BFD_RELOC_MIPS_SHIFT5,
32924 + BFD_RELOC_MIPS_SHIFT6,
32925 + BFD_RELOC_MIPS_INSERT_A,
32926 + BFD_RELOC_MIPS_INSERT_B,
32927 + BFD_RELOC_MIPS_DELETE,
32928 + BFD_RELOC_MIPS_HIGHEST,
32929 + BFD_RELOC_MIPS_HIGHER,
32930 + BFD_RELOC_MIPS_SCN_DISP,
32931 + BFD_RELOC_MIPS_REL16,
32932 + BFD_RELOC_MIPS_RELGOT,
32933 + BFD_RELOC_MIPS_JALR,
32934 + BFD_RELOC_MIPS_TLS_DTPMOD32,
32935 + BFD_RELOC_MIPS_TLS_DTPREL32,
32936 + BFD_RELOC_MIPS_TLS_DTPMOD64,
32937 + BFD_RELOC_MIPS_TLS_DTPREL64,
32938 + BFD_RELOC_MIPS_TLS_GD,
32939 + BFD_RELOC_MIPS_TLS_LDM,
32940 + BFD_RELOC_MIPS_TLS_DTPREL_HI16,
32941 + BFD_RELOC_MIPS_TLS_DTPREL_LO16,
32942 + BFD_RELOC_MIPS_TLS_GOTTPREL,
32943 + BFD_RELOC_MIPS_TLS_TPREL32,
32944 + BFD_RELOC_MIPS_TLS_TPREL64,
32945 + BFD_RELOC_MIPS_TLS_TPREL_HI16,
32946 + BFD_RELOC_MIPS_TLS_TPREL_LO16,
32947 +
32948 +
32949 +/* MIPS ELF relocations (VxWorks extensions). */
32950 + BFD_RELOC_MIPS_COPY,
32951 + BFD_RELOC_MIPS_JUMP_SLOT,
32952 +
32953 +
32954 +/* Fujitsu Frv Relocations. */
32955 + BFD_RELOC_FRV_LABEL16,
32956 + BFD_RELOC_FRV_LABEL24,
32957 + BFD_RELOC_FRV_LO16,
32958 + BFD_RELOC_FRV_HI16,
32959 + BFD_RELOC_FRV_GPREL12,
32960 + BFD_RELOC_FRV_GPRELU12,
32961 + BFD_RELOC_FRV_GPREL32,
32962 + BFD_RELOC_FRV_GPRELHI,
32963 + BFD_RELOC_FRV_GPRELLO,
32964 + BFD_RELOC_FRV_GOT12,
32965 + BFD_RELOC_FRV_GOTHI,
32966 + BFD_RELOC_FRV_GOTLO,
32967 + BFD_RELOC_FRV_FUNCDESC,
32968 + BFD_RELOC_FRV_FUNCDESC_GOT12,
32969 + BFD_RELOC_FRV_FUNCDESC_GOTHI,
32970 + BFD_RELOC_FRV_FUNCDESC_GOTLO,
32971 + BFD_RELOC_FRV_FUNCDESC_VALUE,
32972 + BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
32973 + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
32974 + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
32975 + BFD_RELOC_FRV_GOTOFF12,
32976 + BFD_RELOC_FRV_GOTOFFHI,
32977 + BFD_RELOC_FRV_GOTOFFLO,
32978 + BFD_RELOC_FRV_GETTLSOFF,
32979 + BFD_RELOC_FRV_TLSDESC_VALUE,
32980 + BFD_RELOC_FRV_GOTTLSDESC12,
32981 + BFD_RELOC_FRV_GOTTLSDESCHI,
32982 + BFD_RELOC_FRV_GOTTLSDESCLO,
32983 + BFD_RELOC_FRV_TLSMOFF12,
32984 + BFD_RELOC_FRV_TLSMOFFHI,
32985 + BFD_RELOC_FRV_TLSMOFFLO,
32986 + BFD_RELOC_FRV_GOTTLSOFF12,
32987 + BFD_RELOC_FRV_GOTTLSOFFHI,
32988 + BFD_RELOC_FRV_GOTTLSOFFLO,
32989 + BFD_RELOC_FRV_TLSOFF,
32990 + BFD_RELOC_FRV_TLSDESC_RELAX,
32991 + BFD_RELOC_FRV_GETTLSOFF_RELAX,
32992 + BFD_RELOC_FRV_TLSOFF_RELAX,
32993 + BFD_RELOC_FRV_TLSMOFF,
32994 +
32995 +
32996 +/* This is a 24bit GOT-relative reloc for the mn10300. */
32997 + BFD_RELOC_MN10300_GOTOFF24,
32998 +
32999 +/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
33000 +in the instruction. */
33001 + BFD_RELOC_MN10300_GOT32,
33002 +
33003 +/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
33004 +in the instruction. */
33005 + BFD_RELOC_MN10300_GOT24,
33006 +
33007 +/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
33008 +in the instruction. */
33009 + BFD_RELOC_MN10300_GOT16,
33010 +
33011 +/* Copy symbol at runtime. */
33012 + BFD_RELOC_MN10300_COPY,
33013 +
33014 +/* Create GOT entry. */
33015 + BFD_RELOC_MN10300_GLOB_DAT,
33016 +
33017 +/* Create PLT entry. */
33018 + BFD_RELOC_MN10300_JMP_SLOT,
33019 +
33020 +/* Adjust by program base. */
33021 + BFD_RELOC_MN10300_RELATIVE,
33022 +
33023 +
33024 +/* i386/elf relocations */
33025 + BFD_RELOC_386_GOT32,
33026 + BFD_RELOC_386_PLT32,
33027 + BFD_RELOC_386_COPY,
33028 + BFD_RELOC_386_GLOB_DAT,
33029 + BFD_RELOC_386_JUMP_SLOT,
33030 + BFD_RELOC_386_RELATIVE,
33031 + BFD_RELOC_386_GOTOFF,
33032 + BFD_RELOC_386_GOTPC,
33033 + BFD_RELOC_386_TLS_TPOFF,
33034 + BFD_RELOC_386_TLS_IE,
33035 + BFD_RELOC_386_TLS_GOTIE,
33036 + BFD_RELOC_386_TLS_LE,
33037 + BFD_RELOC_386_TLS_GD,
33038 + BFD_RELOC_386_TLS_LDM,
33039 + BFD_RELOC_386_TLS_LDO_32,
33040 + BFD_RELOC_386_TLS_IE_32,
33041 + BFD_RELOC_386_TLS_LE_32,
33042 + BFD_RELOC_386_TLS_DTPMOD32,
33043 + BFD_RELOC_386_TLS_DTPOFF32,
33044 + BFD_RELOC_386_TLS_TPOFF32,
33045 + BFD_RELOC_386_TLS_GOTDESC,
33046 + BFD_RELOC_386_TLS_DESC_CALL,
33047 + BFD_RELOC_386_TLS_DESC,
33048 +
33049 +/* x86-64/elf relocations */
33050 + BFD_RELOC_X86_64_GOT32,
33051 + BFD_RELOC_X86_64_PLT32,
33052 + BFD_RELOC_X86_64_COPY,
33053 + BFD_RELOC_X86_64_GLOB_DAT,
33054 + BFD_RELOC_X86_64_JUMP_SLOT,
33055 + BFD_RELOC_X86_64_RELATIVE,
33056 + BFD_RELOC_X86_64_GOTPCREL,
33057 + BFD_RELOC_X86_64_32S,
33058 + BFD_RELOC_X86_64_DTPMOD64,
33059 + BFD_RELOC_X86_64_DTPOFF64,
33060 + BFD_RELOC_X86_64_TPOFF64,
33061 + BFD_RELOC_X86_64_TLSGD,
33062 + BFD_RELOC_X86_64_TLSLD,
33063 + BFD_RELOC_X86_64_DTPOFF32,
33064 + BFD_RELOC_X86_64_GOTTPOFF,
33065 + BFD_RELOC_X86_64_TPOFF32,
33066 + BFD_RELOC_X86_64_GOTOFF64,
33067 + BFD_RELOC_X86_64_GOTPC32,
33068 + BFD_RELOC_X86_64_GOT64,
33069 + BFD_RELOC_X86_64_GOTPCREL64,
33070 + BFD_RELOC_X86_64_GOTPC64,
33071 + BFD_RELOC_X86_64_GOTPLT64,
33072 + BFD_RELOC_X86_64_PLTOFF64,
33073 + BFD_RELOC_X86_64_GOTPC32_TLSDESC,
33074 + BFD_RELOC_X86_64_TLSDESC_CALL,
33075 + BFD_RELOC_X86_64_TLSDESC,
33076 +
33077 +/* ns32k relocations */
33078 + BFD_RELOC_NS32K_IMM_8,
33079 + BFD_RELOC_NS32K_IMM_16,
33080 + BFD_RELOC_NS32K_IMM_32,
33081 + BFD_RELOC_NS32K_IMM_8_PCREL,
33082 + BFD_RELOC_NS32K_IMM_16_PCREL,
33083 + BFD_RELOC_NS32K_IMM_32_PCREL,
33084 + BFD_RELOC_NS32K_DISP_8,
33085 + BFD_RELOC_NS32K_DISP_16,
33086 + BFD_RELOC_NS32K_DISP_32,
33087 + BFD_RELOC_NS32K_DISP_8_PCREL,
33088 + BFD_RELOC_NS32K_DISP_16_PCREL,
33089 + BFD_RELOC_NS32K_DISP_32_PCREL,
33090 +
33091 +/* PDP11 relocations */
33092 + BFD_RELOC_PDP11_DISP_8_PCREL,
33093 + BFD_RELOC_PDP11_DISP_6_PCREL,
33094 +
33095 +/* Picojava relocs. Not all of these appear in object files. */
33096 + BFD_RELOC_PJ_CODE_HI16,
33097 + BFD_RELOC_PJ_CODE_LO16,
33098 + BFD_RELOC_PJ_CODE_DIR16,
33099 + BFD_RELOC_PJ_CODE_DIR32,
33100 + BFD_RELOC_PJ_CODE_REL16,
33101 + BFD_RELOC_PJ_CODE_REL32,
33102 +
33103 +/* Power(rs6000) and PowerPC relocations. */
33104 + BFD_RELOC_PPC_B26,
33105 + BFD_RELOC_PPC_BA26,
33106 + BFD_RELOC_PPC_TOC16,
33107 + BFD_RELOC_PPC_B16,
33108 + BFD_RELOC_PPC_B16_BRTAKEN,
33109 + BFD_RELOC_PPC_B16_BRNTAKEN,
33110 + BFD_RELOC_PPC_BA16,
33111 + BFD_RELOC_PPC_BA16_BRTAKEN,
33112 + BFD_RELOC_PPC_BA16_BRNTAKEN,
33113 + BFD_RELOC_PPC_COPY,
33114 + BFD_RELOC_PPC_GLOB_DAT,
33115 + BFD_RELOC_PPC_JMP_SLOT,
33116 + BFD_RELOC_PPC_RELATIVE,
33117 + BFD_RELOC_PPC_LOCAL24PC,
33118 + BFD_RELOC_PPC_EMB_NADDR32,
33119 + BFD_RELOC_PPC_EMB_NADDR16,
33120 + BFD_RELOC_PPC_EMB_NADDR16_LO,
33121 + BFD_RELOC_PPC_EMB_NADDR16_HI,
33122 + BFD_RELOC_PPC_EMB_NADDR16_HA,
33123 + BFD_RELOC_PPC_EMB_SDAI16,
33124 + BFD_RELOC_PPC_EMB_SDA2I16,
33125 + BFD_RELOC_PPC_EMB_SDA2REL,
33126 + BFD_RELOC_PPC_EMB_SDA21,
33127 + BFD_RELOC_PPC_EMB_MRKREF,
33128 + BFD_RELOC_PPC_EMB_RELSEC16,
33129 + BFD_RELOC_PPC_EMB_RELST_LO,
33130 + BFD_RELOC_PPC_EMB_RELST_HI,
33131 + BFD_RELOC_PPC_EMB_RELST_HA,
33132 + BFD_RELOC_PPC_EMB_BIT_FLD,
33133 + BFD_RELOC_PPC_EMB_RELSDA,
33134 + BFD_RELOC_PPC64_HIGHER,
33135 + BFD_RELOC_PPC64_HIGHER_S,
33136 + BFD_RELOC_PPC64_HIGHEST,
33137 + BFD_RELOC_PPC64_HIGHEST_S,
33138 + BFD_RELOC_PPC64_TOC16_LO,
33139 + BFD_RELOC_PPC64_TOC16_HI,
33140 + BFD_RELOC_PPC64_TOC16_HA,
33141 + BFD_RELOC_PPC64_TOC,
33142 + BFD_RELOC_PPC64_PLTGOT16,
33143 + BFD_RELOC_PPC64_PLTGOT16_LO,
33144 + BFD_RELOC_PPC64_PLTGOT16_HI,
33145 + BFD_RELOC_PPC64_PLTGOT16_HA,
33146 + BFD_RELOC_PPC64_ADDR16_DS,
33147 + BFD_RELOC_PPC64_ADDR16_LO_DS,
33148 + BFD_RELOC_PPC64_GOT16_DS,
33149 + BFD_RELOC_PPC64_GOT16_LO_DS,
33150 + BFD_RELOC_PPC64_PLT16_LO_DS,
33151 + BFD_RELOC_PPC64_SECTOFF_DS,
33152 + BFD_RELOC_PPC64_SECTOFF_LO_DS,
33153 + BFD_RELOC_PPC64_TOC16_DS,
33154 + BFD_RELOC_PPC64_TOC16_LO_DS,
33155 + BFD_RELOC_PPC64_PLTGOT16_DS,
33156 + BFD_RELOC_PPC64_PLTGOT16_LO_DS,
33157 +
33158 +/* PowerPC and PowerPC64 thread-local storage relocations. */
33159 + BFD_RELOC_PPC_TLS,
33160 + BFD_RELOC_PPC_DTPMOD,
33161 + BFD_RELOC_PPC_TPREL16,
33162 + BFD_RELOC_PPC_TPREL16_LO,
33163 + BFD_RELOC_PPC_TPREL16_HI,
33164 + BFD_RELOC_PPC_TPREL16_HA,
33165 + BFD_RELOC_PPC_TPREL,
33166 + BFD_RELOC_PPC_DTPREL16,
33167 + BFD_RELOC_PPC_DTPREL16_LO,
33168 + BFD_RELOC_PPC_DTPREL16_HI,
33169 + BFD_RELOC_PPC_DTPREL16_HA,
33170 + BFD_RELOC_PPC_DTPREL,
33171 + BFD_RELOC_PPC_GOT_TLSGD16,
33172 + BFD_RELOC_PPC_GOT_TLSGD16_LO,
33173 + BFD_RELOC_PPC_GOT_TLSGD16_HI,
33174 + BFD_RELOC_PPC_GOT_TLSGD16_HA,
33175 + BFD_RELOC_PPC_GOT_TLSLD16,
33176 + BFD_RELOC_PPC_GOT_TLSLD16_LO,
33177 + BFD_RELOC_PPC_GOT_TLSLD16_HI,
33178 + BFD_RELOC_PPC_GOT_TLSLD16_HA,
33179 + BFD_RELOC_PPC_GOT_TPREL16,
33180 + BFD_RELOC_PPC_GOT_TPREL16_LO,
33181 + BFD_RELOC_PPC_GOT_TPREL16_HI,
33182 + BFD_RELOC_PPC_GOT_TPREL16_HA,
33183 + BFD_RELOC_PPC_GOT_DTPREL16,
33184 + BFD_RELOC_PPC_GOT_DTPREL16_LO,
33185 + BFD_RELOC_PPC_GOT_DTPREL16_HI,
33186 + BFD_RELOC_PPC_GOT_DTPREL16_HA,
33187 + BFD_RELOC_PPC64_TPREL16_DS,
33188 + BFD_RELOC_PPC64_TPREL16_LO_DS,
33189 + BFD_RELOC_PPC64_TPREL16_HIGHER,
33190 + BFD_RELOC_PPC64_TPREL16_HIGHERA,
33191 + BFD_RELOC_PPC64_TPREL16_HIGHEST,
33192 + BFD_RELOC_PPC64_TPREL16_HIGHESTA,
33193 + BFD_RELOC_PPC64_DTPREL16_DS,
33194 + BFD_RELOC_PPC64_DTPREL16_LO_DS,
33195 + BFD_RELOC_PPC64_DTPREL16_HIGHER,
33196 + BFD_RELOC_PPC64_DTPREL16_HIGHERA,
33197 + BFD_RELOC_PPC64_DTPREL16_HIGHEST,
33198 + BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
33199 +
33200 +/* IBM 370/390 relocations */
33201 + BFD_RELOC_I370_D12,
33202 +
33203 +/* The type of reloc used to build a constructor table - at the moment
33204 +probably a 32 bit wide absolute relocation, but the target can choose.
33205 +It generally does map to one of the other relocation types. */
33206 + BFD_RELOC_CTOR,
33207 +
33208 +/* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
33209 +not stored in the instruction. */
33210 + BFD_RELOC_ARM_PCREL_BRANCH,
33211 +
33212 +/* ARM 26 bit pc-relative branch. The lowest bit must be zero and is
33213 +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
33214 +field in the instruction. */
33215 + BFD_RELOC_ARM_PCREL_BLX,
33216 +
33217 +/* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
33218 +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
33219 +field in the instruction. */
33220 + BFD_RELOC_THUMB_PCREL_BLX,
33221 +
33222 +/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */
33223 + BFD_RELOC_ARM_PCREL_CALL,
33224 +
33225 +/* ARM 26-bit pc-relative branch for B or conditional BL instruction. */
33226 + BFD_RELOC_ARM_PCREL_JUMP,
33227 +
33228 +/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
33229 +The lowest bit must be zero and is not stored in the instruction.
33230 +Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
33231 +"nn" one smaller in all cases. Note further that BRANCH23
33232 +corresponds to R_ARM_THM_CALL. */
33233 + BFD_RELOC_THUMB_PCREL_BRANCH7,
33234 + BFD_RELOC_THUMB_PCREL_BRANCH9,
33235 + BFD_RELOC_THUMB_PCREL_BRANCH12,
33236 + BFD_RELOC_THUMB_PCREL_BRANCH20,
33237 + BFD_RELOC_THUMB_PCREL_BRANCH23,
33238 + BFD_RELOC_THUMB_PCREL_BRANCH25,
33239 +
33240 +/* 12-bit immediate offset, used in ARM-format ldr and str instructions. */
33241 + BFD_RELOC_ARM_OFFSET_IMM,
33242 +
33243 +/* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */
33244 + BFD_RELOC_ARM_THUMB_OFFSET,
33245 +
33246 +/* Pc-relative or absolute relocation depending on target. Used for
33247 +entries in .init_array sections. */
33248 + BFD_RELOC_ARM_TARGET1,
33249 +
33250 +/* Read-only segment base relative address. */
33251 + BFD_RELOC_ARM_ROSEGREL32,
33252 +
33253 +/* Data segment base relative address. */
33254 + BFD_RELOC_ARM_SBREL32,
33255 +
33256 +/* This reloc is used for references to RTTI data from exception handling
33257 +tables. The actual definition depends on the target. It may be a
33258 +pc-relative or some form of GOT-indirect relocation. */
33259 + BFD_RELOC_ARM_TARGET2,
33260 +
33261 +/* 31-bit PC relative address. */
33262 + BFD_RELOC_ARM_PREL31,
33263 +
33264 +/* Low and High halfword relocations for MOVW and MOVT instructions. */
33265 + BFD_RELOC_ARM_MOVW,
33266 + BFD_RELOC_ARM_MOVT,
33267 + BFD_RELOC_ARM_MOVW_PCREL,
33268 + BFD_RELOC_ARM_MOVT_PCREL,
33269 + BFD_RELOC_ARM_THUMB_MOVW,
33270 + BFD_RELOC_ARM_THUMB_MOVT,
33271 + BFD_RELOC_ARM_THUMB_MOVW_PCREL,
33272 + BFD_RELOC_ARM_THUMB_MOVT_PCREL,
33273 +
33274 +/* Relocations for setting up GOTs and PLTs for shared libraries. */
33275 + BFD_RELOC_ARM_JUMP_SLOT,
33276 + BFD_RELOC_ARM_GLOB_DAT,
33277 + BFD_RELOC_ARM_GOT32,
33278 + BFD_RELOC_ARM_PLT32,
33279 + BFD_RELOC_ARM_RELATIVE,
33280 + BFD_RELOC_ARM_GOTOFF,
33281 + BFD_RELOC_ARM_GOTPC,
33282 +
33283 +/* ARM thread-local storage relocations. */
33284 + BFD_RELOC_ARM_TLS_GD32,
33285 + BFD_RELOC_ARM_TLS_LDO32,
33286 + BFD_RELOC_ARM_TLS_LDM32,
33287 + BFD_RELOC_ARM_TLS_DTPOFF32,
33288 + BFD_RELOC_ARM_TLS_DTPMOD32,
33289 + BFD_RELOC_ARM_TLS_TPOFF32,
33290 + BFD_RELOC_ARM_TLS_IE32,
33291 + BFD_RELOC_ARM_TLS_LE32,
33292 +
33293 +/* ARM group relocations. */
33294 + BFD_RELOC_ARM_ALU_PC_G0_NC,
33295 + BFD_RELOC_ARM_ALU_PC_G0,
33296 + BFD_RELOC_ARM_ALU_PC_G1_NC,
33297 + BFD_RELOC_ARM_ALU_PC_G1,
33298 + BFD_RELOC_ARM_ALU_PC_G2,
33299 + BFD_RELOC_ARM_LDR_PC_G0,
33300 + BFD_RELOC_ARM_LDR_PC_G1,
33301 + BFD_RELOC_ARM_LDR_PC_G2,
33302 + BFD_RELOC_ARM_LDRS_PC_G0,
33303 + BFD_RELOC_ARM_LDRS_PC_G1,
33304 + BFD_RELOC_ARM_LDRS_PC_G2,
33305 + BFD_RELOC_ARM_LDC_PC_G0,
33306 + BFD_RELOC_ARM_LDC_PC_G1,
33307 + BFD_RELOC_ARM_LDC_PC_G2,
33308 + BFD_RELOC_ARM_ALU_SB_G0_NC,
33309 + BFD_RELOC_ARM_ALU_SB_G0,
33310 + BFD_RELOC_ARM_ALU_SB_G1_NC,
33311 + BFD_RELOC_ARM_ALU_SB_G1,
33312 + BFD_RELOC_ARM_ALU_SB_G2,
33313 + BFD_RELOC_ARM_LDR_SB_G0,
33314 + BFD_RELOC_ARM_LDR_SB_G1,
33315 + BFD_RELOC_ARM_LDR_SB_G2,
33316 + BFD_RELOC_ARM_LDRS_SB_G0,
33317 + BFD_RELOC_ARM_LDRS_SB_G1,
33318 + BFD_RELOC_ARM_LDRS_SB_G2,
33319 + BFD_RELOC_ARM_LDC_SB_G0,
33320 + BFD_RELOC_ARM_LDC_SB_G1,
33321 + BFD_RELOC_ARM_LDC_SB_G2,
33322 +
33323 +/* These relocs are only used within the ARM assembler. They are not
33324 +(at present) written to any object files. */
33325 + BFD_RELOC_ARM_IMMEDIATE,
33326 + BFD_RELOC_ARM_ADRL_IMMEDIATE,
33327 + BFD_RELOC_ARM_T32_IMMEDIATE,
33328 + BFD_RELOC_ARM_T32_ADD_IMM,
33329 + BFD_RELOC_ARM_T32_IMM12,
33330 + BFD_RELOC_ARM_T32_ADD_PC12,
33331 + BFD_RELOC_ARM_SHIFT_IMM,
33332 + BFD_RELOC_ARM_SMC,
33333 + BFD_RELOC_ARM_SWI,
33334 + BFD_RELOC_ARM_MULTI,
33335 + BFD_RELOC_ARM_CP_OFF_IMM,
33336 + BFD_RELOC_ARM_CP_OFF_IMM_S2,
33337 + BFD_RELOC_ARM_T32_CP_OFF_IMM,
33338 + BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
33339 + BFD_RELOC_ARM_ADR_IMM,
33340 + BFD_RELOC_ARM_LDR_IMM,
33341 + BFD_RELOC_ARM_LITERAL,
33342 + BFD_RELOC_ARM_IN_POOL,
33343 + BFD_RELOC_ARM_OFFSET_IMM8,
33344 + BFD_RELOC_ARM_T32_OFFSET_U8,
33345 + BFD_RELOC_ARM_T32_OFFSET_IMM,
33346 + BFD_RELOC_ARM_HWLITERAL,
33347 + BFD_RELOC_ARM_THUMB_ADD,
33348 + BFD_RELOC_ARM_THUMB_IMM,
33349 + BFD_RELOC_ARM_THUMB_SHIFT,
33350 +
33351 +/* Renesas / SuperH SH relocs. Not all of these appear in object files. */
33352 + BFD_RELOC_SH_PCDISP8BY2,
33353 + BFD_RELOC_SH_PCDISP12BY2,
33354 + BFD_RELOC_SH_IMM3,
33355 + BFD_RELOC_SH_IMM3U,
33356 + BFD_RELOC_SH_DISP12,
33357 + BFD_RELOC_SH_DISP12BY2,
33358 + BFD_RELOC_SH_DISP12BY4,
33359 + BFD_RELOC_SH_DISP12BY8,
33360 + BFD_RELOC_SH_DISP20,
33361 + BFD_RELOC_SH_DISP20BY8,
33362 + BFD_RELOC_SH_IMM4,
33363 + BFD_RELOC_SH_IMM4BY2,
33364 + BFD_RELOC_SH_IMM4BY4,
33365 + BFD_RELOC_SH_IMM8,
33366 + BFD_RELOC_SH_IMM8BY2,
33367 + BFD_RELOC_SH_IMM8BY4,
33368 + BFD_RELOC_SH_PCRELIMM8BY2,
33369 + BFD_RELOC_SH_PCRELIMM8BY4,
33370 + BFD_RELOC_SH_SWITCH16,
33371 + BFD_RELOC_SH_SWITCH32,
33372 + BFD_RELOC_SH_USES,
33373 + BFD_RELOC_SH_COUNT,
33374 + BFD_RELOC_SH_ALIGN,
33375 + BFD_RELOC_SH_CODE,
33376 + BFD_RELOC_SH_DATA,
33377 + BFD_RELOC_SH_LABEL,
33378 + BFD_RELOC_SH_LOOP_START,
33379 + BFD_RELOC_SH_LOOP_END,
33380 + BFD_RELOC_SH_COPY,
33381 + BFD_RELOC_SH_GLOB_DAT,
33382 + BFD_RELOC_SH_JMP_SLOT,
33383 + BFD_RELOC_SH_RELATIVE,
33384 + BFD_RELOC_SH_GOTPC,
33385 + BFD_RELOC_SH_GOT_LOW16,
33386 + BFD_RELOC_SH_GOT_MEDLOW16,
33387 + BFD_RELOC_SH_GOT_MEDHI16,
33388 + BFD_RELOC_SH_GOT_HI16,
33389 + BFD_RELOC_SH_GOTPLT_LOW16,
33390 + BFD_RELOC_SH_GOTPLT_MEDLOW16,
33391 + BFD_RELOC_SH_GOTPLT_MEDHI16,
33392 + BFD_RELOC_SH_GOTPLT_HI16,
33393 + BFD_RELOC_SH_PLT_LOW16,
33394 + BFD_RELOC_SH_PLT_MEDLOW16,
33395 + BFD_RELOC_SH_PLT_MEDHI16,
33396 + BFD_RELOC_SH_PLT_HI16,
33397 + BFD_RELOC_SH_GOTOFF_LOW16,
33398 + BFD_RELOC_SH_GOTOFF_MEDLOW16,
33399 + BFD_RELOC_SH_GOTOFF_MEDHI16,
33400 + BFD_RELOC_SH_GOTOFF_HI16,
33401 + BFD_RELOC_SH_GOTPC_LOW16,
33402 + BFD_RELOC_SH_GOTPC_MEDLOW16,
33403 + BFD_RELOC_SH_GOTPC_MEDHI16,
33404 + BFD_RELOC_SH_GOTPC_HI16,
33405 + BFD_RELOC_SH_COPY64,
33406 + BFD_RELOC_SH_GLOB_DAT64,
33407 + BFD_RELOC_SH_JMP_SLOT64,
33408 + BFD_RELOC_SH_RELATIVE64,
33409 + BFD_RELOC_SH_GOT10BY4,
33410 + BFD_RELOC_SH_GOT10BY8,
33411 + BFD_RELOC_SH_GOTPLT10BY4,
33412 + BFD_RELOC_SH_GOTPLT10BY8,
33413 + BFD_RELOC_SH_GOTPLT32,
33414 + BFD_RELOC_SH_SHMEDIA_CODE,
33415 + BFD_RELOC_SH_IMMU5,
33416 + BFD_RELOC_SH_IMMS6,
33417 + BFD_RELOC_SH_IMMS6BY32,
33418 + BFD_RELOC_SH_IMMU6,
33419 + BFD_RELOC_SH_IMMS10,
33420 + BFD_RELOC_SH_IMMS10BY2,
33421 + BFD_RELOC_SH_IMMS10BY4,
33422 + BFD_RELOC_SH_IMMS10BY8,
33423 + BFD_RELOC_SH_IMMS16,
33424 + BFD_RELOC_SH_IMMU16,
33425 + BFD_RELOC_SH_IMM_LOW16,
33426 + BFD_RELOC_SH_IMM_LOW16_PCREL,
33427 + BFD_RELOC_SH_IMM_MEDLOW16,
33428 + BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
33429 + BFD_RELOC_SH_IMM_MEDHI16,
33430 + BFD_RELOC_SH_IMM_MEDHI16_PCREL,
33431 + BFD_RELOC_SH_IMM_HI16,
33432 + BFD_RELOC_SH_IMM_HI16_PCREL,
33433 + BFD_RELOC_SH_PT_16,
33434 + BFD_RELOC_SH_TLS_GD_32,
33435 + BFD_RELOC_SH_TLS_LD_32,
33436 + BFD_RELOC_SH_TLS_LDO_32,
33437 + BFD_RELOC_SH_TLS_IE_32,
33438 + BFD_RELOC_SH_TLS_LE_32,
33439 + BFD_RELOC_SH_TLS_DTPMOD32,
33440 + BFD_RELOC_SH_TLS_DTPOFF32,
33441 + BFD_RELOC_SH_TLS_TPOFF32,
33442 +
33443 +/* ARC Cores relocs.
33444 +ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
33445 +not stored in the instruction. The high 20 bits are installed in bits 26
33446 +through 7 of the instruction. */
33447 + BFD_RELOC_ARC_B22_PCREL,
33448 +
33449 +/* ARC 26 bit absolute branch. The lowest two bits must be zero and are not
33450 +stored in the instruction. The high 24 bits are installed in bits 23
33451 +through 0. */
33452 + BFD_RELOC_ARC_B26,
33453 +
33454 +/* ADI Blackfin 16 bit immediate absolute reloc. */
33455 + BFD_RELOC_BFIN_16_IMM,
33456 +
33457 +/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */
33458 + BFD_RELOC_BFIN_16_HIGH,
33459 +
33460 +/* ADI Blackfin 'a' part of LSETUP. */
33461 + BFD_RELOC_BFIN_4_PCREL,
33462 +
33463 +/* ADI Blackfin. */
33464 + BFD_RELOC_BFIN_5_PCREL,
33465 +
33466 +/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */
33467 + BFD_RELOC_BFIN_16_LOW,
33468 +
33469 +/* ADI Blackfin. */
33470 + BFD_RELOC_BFIN_10_PCREL,
33471 +
33472 +/* ADI Blackfin 'b' part of LSETUP. */
33473 + BFD_RELOC_BFIN_11_PCREL,
33474 +
33475 +/* ADI Blackfin. */
33476 + BFD_RELOC_BFIN_12_PCREL_JUMP,
33477 +
33478 +/* ADI Blackfin Short jump, pcrel. */
33479 + BFD_RELOC_BFIN_12_PCREL_JUMP_S,
33480 +
33481 +/* ADI Blackfin Call.x not implemented. */
33482 + BFD_RELOC_BFIN_24_PCREL_CALL_X,
33483 +
33484 +/* ADI Blackfin Long Jump pcrel. */
33485 + BFD_RELOC_BFIN_24_PCREL_JUMP_L,
33486 +
33487 +/* ADI Blackfin FD-PIC relocations. */
33488 + BFD_RELOC_BFIN_GOT17M4,
33489 + BFD_RELOC_BFIN_GOTHI,
33490 + BFD_RELOC_BFIN_GOTLO,
33491 + BFD_RELOC_BFIN_FUNCDESC,
33492 + BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
33493 + BFD_RELOC_BFIN_FUNCDESC_GOTHI,
33494 + BFD_RELOC_BFIN_FUNCDESC_GOTLO,
33495 + BFD_RELOC_BFIN_FUNCDESC_VALUE,
33496 + BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
33497 + BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
33498 + BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
33499 + BFD_RELOC_BFIN_GOTOFF17M4,
33500 + BFD_RELOC_BFIN_GOTOFFHI,
33501 + BFD_RELOC_BFIN_GOTOFFLO,
33502 +
33503 +/* ADI Blackfin GOT relocation. */
33504 + BFD_RELOC_BFIN_GOT,
33505 +
33506 +/* ADI Blackfin PLTPC relocation. */
33507 + BFD_RELOC_BFIN_PLTPC,
33508 +
33509 +/* ADI Blackfin arithmetic relocation. */
33510 + BFD_ARELOC_BFIN_PUSH,
33511 +
33512 +/* ADI Blackfin arithmetic relocation. */
33513 + BFD_ARELOC_BFIN_CONST,
33514 +
33515 +/* ADI Blackfin arithmetic relocation. */
33516 + BFD_ARELOC_BFIN_ADD,
33517 +
33518 +/* ADI Blackfin arithmetic relocation. */
33519 + BFD_ARELOC_BFIN_SUB,
33520 +
33521 +/* ADI Blackfin arithmetic relocation. */
33522 + BFD_ARELOC_BFIN_MULT,
33523 +
33524 +/* ADI Blackfin arithmetic relocation. */
33525 + BFD_ARELOC_BFIN_DIV,
33526 +
33527 +/* ADI Blackfin arithmetic relocation. */
33528 + BFD_ARELOC_BFIN_MOD,
33529 +
33530 +/* ADI Blackfin arithmetic relocation. */
33531 + BFD_ARELOC_BFIN_LSHIFT,
33532 +
33533 +/* ADI Blackfin arithmetic relocation. */
33534 + BFD_ARELOC_BFIN_RSHIFT,
33535 +
33536 +/* ADI Blackfin arithmetic relocation. */
33537 + BFD_ARELOC_BFIN_AND,
33538 +
33539 +/* ADI Blackfin arithmetic relocation. */
33540 + BFD_ARELOC_BFIN_OR,
33541 +
33542 +/* ADI Blackfin arithmetic relocation. */
33543 + BFD_ARELOC_BFIN_XOR,
33544 +
33545 +/* ADI Blackfin arithmetic relocation. */
33546 + BFD_ARELOC_BFIN_LAND,
33547 +
33548 +/* ADI Blackfin arithmetic relocation. */
33549 + BFD_ARELOC_BFIN_LOR,
33550 +
33551 +/* ADI Blackfin arithmetic relocation. */
33552 + BFD_ARELOC_BFIN_LEN,
33553 +
33554 +/* ADI Blackfin arithmetic relocation. */
33555 + BFD_ARELOC_BFIN_NEG,
33556 +
33557 +/* ADI Blackfin arithmetic relocation. */
33558 + BFD_ARELOC_BFIN_COMP,
33559 +
33560 +/* ADI Blackfin arithmetic relocation. */
33561 + BFD_ARELOC_BFIN_PAGE,
33562 +
33563 +/* ADI Blackfin arithmetic relocation. */
33564 + BFD_ARELOC_BFIN_HWPAGE,
33565 +
33566 +/* ADI Blackfin arithmetic relocation. */
33567 + BFD_ARELOC_BFIN_ADDR,
33568 +
33569 +/* Mitsubishi D10V relocs.
33570 +This is a 10-bit reloc with the right 2 bits
33571 +assumed to be 0. */
33572 + BFD_RELOC_D10V_10_PCREL_R,
33573 +
33574 +/* Mitsubishi D10V relocs.
33575 +This is a 10-bit reloc with the right 2 bits
33576 +assumed to be 0. This is the same as the previous reloc
33577 +except it is in the left container, i.e.,
33578 +shifted left 15 bits. */
33579 + BFD_RELOC_D10V_10_PCREL_L,
33580 +
33581 +/* This is an 18-bit reloc with the right 2 bits
33582 +assumed to be 0. */
33583 + BFD_RELOC_D10V_18,
33584 +
33585 +/* This is an 18-bit reloc with the right 2 bits
33586 +assumed to be 0. */
33587 + BFD_RELOC_D10V_18_PCREL,
33588 +
33589 +/* Mitsubishi D30V relocs.
33590 +This is a 6-bit absolute reloc. */
33591 + BFD_RELOC_D30V_6,
33592 +
33593 +/* This is a 6-bit pc-relative reloc with
33594 +the right 3 bits assumed to be 0. */
33595 + BFD_RELOC_D30V_9_PCREL,
33596 +
33597 +/* This is a 6-bit pc-relative reloc with
33598 +the right 3 bits assumed to be 0. Same
33599 +as the previous reloc but on the right side
33600 +of the container. */
33601 + BFD_RELOC_D30V_9_PCREL_R,
33602 +
33603 +/* This is a 12-bit absolute reloc with the
33604 +right 3 bitsassumed to be 0. */
33605 + BFD_RELOC_D30V_15,
33606 +
33607 +/* This is a 12-bit pc-relative reloc with
33608 +the right 3 bits assumed to be 0. */
33609 + BFD_RELOC_D30V_15_PCREL,
33610 +
33611 +/* This is a 12-bit pc-relative reloc with
33612 +the right 3 bits assumed to be 0. Same
33613 +as the previous reloc but on the right side
33614 +of the container. */
33615 + BFD_RELOC_D30V_15_PCREL_R,
33616 +
33617 +/* This is an 18-bit absolute reloc with
33618 +the right 3 bits assumed to be 0. */
33619 + BFD_RELOC_D30V_21,
33620 +
33621 +/* This is an 18-bit pc-relative reloc with
33622 +the right 3 bits assumed to be 0. */
33623 + BFD_RELOC_D30V_21_PCREL,
33624 +
33625 +/* This is an 18-bit pc-relative reloc with
33626 +the right 3 bits assumed to be 0. Same
33627 +as the previous reloc but on the right side
33628 +of the container. */
33629 + BFD_RELOC_D30V_21_PCREL_R,
33630 +
33631 +/* This is a 32-bit absolute reloc. */
33632 + BFD_RELOC_D30V_32,
33633 +
33634 +/* This is a 32-bit pc-relative reloc. */
33635 + BFD_RELOC_D30V_32_PCREL,
33636 +
33637 +/* DLX relocs */
33638 + BFD_RELOC_DLX_HI16_S,
33639 +
33640 +/* DLX relocs */
33641 + BFD_RELOC_DLX_LO16,
33642 +
33643 +/* DLX relocs */
33644 + BFD_RELOC_DLX_JMP26,
33645 +
33646 +/* Renesas M16C/M32C Relocations. */
33647 + BFD_RELOC_M32C_HI8,
33648 + BFD_RELOC_M32C_RL_JUMP,
33649 + BFD_RELOC_M32C_RL_1ADDR,
33650 + BFD_RELOC_M32C_RL_2ADDR,
33651 +
33652 +/* Renesas M32R (formerly Mitsubishi M32R) relocs.
33653 +This is a 24 bit absolute address. */
33654 + BFD_RELOC_M32R_24,
33655 +
33656 +/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */
33657 + BFD_RELOC_M32R_10_PCREL,
33658 +
33659 +/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */
33660 + BFD_RELOC_M32R_18_PCREL,
33661 +
33662 +/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */
33663 + BFD_RELOC_M32R_26_PCREL,
33664 +
33665 +/* This is a 16-bit reloc containing the high 16 bits of an address
33666 +used when the lower 16 bits are treated as unsigned. */
33667 + BFD_RELOC_M32R_HI16_ULO,
33668 +
33669 +/* This is a 16-bit reloc containing the high 16 bits of an address
33670 +used when the lower 16 bits are treated as signed. */
33671 + BFD_RELOC_M32R_HI16_SLO,
33672 +
33673 +/* This is a 16-bit reloc containing the lower 16 bits of an address. */
33674 + BFD_RELOC_M32R_LO16,
33675 +
33676 +/* This is a 16-bit reloc containing the small data area offset for use in
33677 +add3, load, and store instructions. */
33678 + BFD_RELOC_M32R_SDA16,
33679 +
33680 +/* For PIC. */
33681 + BFD_RELOC_M32R_GOT24,
33682 + BFD_RELOC_M32R_26_PLTREL,
33683 + BFD_RELOC_M32R_COPY,
33684 + BFD_RELOC_M32R_GLOB_DAT,
33685 + BFD_RELOC_M32R_JMP_SLOT,
33686 + BFD_RELOC_M32R_RELATIVE,
33687 + BFD_RELOC_M32R_GOTOFF,
33688 + BFD_RELOC_M32R_GOTOFF_HI_ULO,
33689 + BFD_RELOC_M32R_GOTOFF_HI_SLO,
33690 + BFD_RELOC_M32R_GOTOFF_LO,
33691 + BFD_RELOC_M32R_GOTPC24,
33692 + BFD_RELOC_M32R_GOT16_HI_ULO,
33693 + BFD_RELOC_M32R_GOT16_HI_SLO,
33694 + BFD_RELOC_M32R_GOT16_LO,
33695 + BFD_RELOC_M32R_GOTPC_HI_ULO,
33696 + BFD_RELOC_M32R_GOTPC_HI_SLO,
33697 + BFD_RELOC_M32R_GOTPC_LO,
33698 +
33699 +/* This is a 9-bit reloc */
33700 + BFD_RELOC_V850_9_PCREL,
33701 +
33702 +/* This is a 22-bit reloc */
33703 + BFD_RELOC_V850_22_PCREL,
33704 +
33705 +/* This is a 16 bit offset from the short data area pointer. */
33706 + BFD_RELOC_V850_SDA_16_16_OFFSET,
33707 +
33708 +/* This is a 16 bit offset (of which only 15 bits are used) from the
33709 +short data area pointer. */
33710 + BFD_RELOC_V850_SDA_15_16_OFFSET,
33711 +
33712 +/* This is a 16 bit offset from the zero data area pointer. */
33713 + BFD_RELOC_V850_ZDA_16_16_OFFSET,
33714 +
33715 +/* This is a 16 bit offset (of which only 15 bits are used) from the
33716 +zero data area pointer. */
33717 + BFD_RELOC_V850_ZDA_15_16_OFFSET,
33718 +
33719 +/* This is an 8 bit offset (of which only 6 bits are used) from the
33720 +tiny data area pointer. */
33721 + BFD_RELOC_V850_TDA_6_8_OFFSET,
33722 +
33723 +/* This is an 8bit offset (of which only 7 bits are used) from the tiny
33724 +data area pointer. */
33725 + BFD_RELOC_V850_TDA_7_8_OFFSET,
33726 +
33727 +/* This is a 7 bit offset from the tiny data area pointer. */
33728 + BFD_RELOC_V850_TDA_7_7_OFFSET,
33729 +
33730 +/* This is a 16 bit offset from the tiny data area pointer. */
33731 + BFD_RELOC_V850_TDA_16_16_OFFSET,
33732 +
33733 +/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
33734 +data area pointer. */
33735 + BFD_RELOC_V850_TDA_4_5_OFFSET,
33736 +
33737 +/* This is a 4 bit offset from the tiny data area pointer. */
33738 + BFD_RELOC_V850_TDA_4_4_OFFSET,
33739 +
33740 +/* This is a 16 bit offset from the short data area pointer, with the
33741 +bits placed non-contiguously in the instruction. */
33742 + BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
33743 +
33744 +/* This is a 16 bit offset from the zero data area pointer, with the
33745 +bits placed non-contiguously in the instruction. */
33746 + BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
33747 +
33748 +/* This is a 6 bit offset from the call table base pointer. */
33749 + BFD_RELOC_V850_CALLT_6_7_OFFSET,
33750 +
33751 +/* This is a 16 bit offset from the call table base pointer. */
33752 + BFD_RELOC_V850_CALLT_16_16_OFFSET,
33753 +
33754 +/* Used for relaxing indirect function calls. */
33755 + BFD_RELOC_V850_LONGCALL,
33756 +
33757 +/* Used for relaxing indirect jumps. */
33758 + BFD_RELOC_V850_LONGJUMP,
33759 +
33760 +/* Used to maintain alignment whilst relaxing. */
33761 + BFD_RELOC_V850_ALIGN,
33762 +
33763 +/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
33764 +instructions. */
33765 + BFD_RELOC_V850_LO16_SPLIT_OFFSET,
33766 +
33767 +/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
33768 +instruction. */
33769 + BFD_RELOC_MN10300_32_PCREL,
33770 +
33771 +/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
33772 +instruction. */
33773 + BFD_RELOC_MN10300_16_PCREL,
33774 +
33775 +/* This is a 8bit DP reloc for the tms320c30, where the most
33776 +significant 8 bits of a 24 bit word are placed into the least
33777 +significant 8 bits of the opcode. */
33778 + BFD_RELOC_TIC30_LDP,
33779 +
33780 +/* This is a 7bit reloc for the tms320c54x, where the least
33781 +significant 7 bits of a 16 bit word are placed into the least
33782 +significant 7 bits of the opcode. */
33783 + BFD_RELOC_TIC54X_PARTLS7,
33784 +
33785 +/* This is a 9bit DP reloc for the tms320c54x, where the most
33786 +significant 9 bits of a 16 bit word are placed into the least
33787 +significant 9 bits of the opcode. */
33788 + BFD_RELOC_TIC54X_PARTMS9,
33789 +
33790 +/* This is an extended address 23-bit reloc for the tms320c54x. */
33791 + BFD_RELOC_TIC54X_23,
33792 +
33793 +/* This is a 16-bit reloc for the tms320c54x, where the least
33794 +significant 16 bits of a 23-bit extended address are placed into
33795 +the opcode. */
33796 + BFD_RELOC_TIC54X_16_OF_23,
33797 +
33798 +/* This is a reloc for the tms320c54x, where the most
33799 +significant 7 bits of a 23-bit extended address are placed into
33800 +the opcode. */
33801 + BFD_RELOC_TIC54X_MS7_OF_23,
33802 +
33803 +/* This is a 48 bit reloc for the FR30 that stores 32 bits. */
33804 + BFD_RELOC_FR30_48,
33805 +
33806 +/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
33807 +two sections. */
33808 + BFD_RELOC_FR30_20,
33809 +
33810 +/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
33811 +4 bits. */
33812 + BFD_RELOC_FR30_6_IN_4,
33813 +
33814 +/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
33815 +into 8 bits. */
33816 + BFD_RELOC_FR30_8_IN_8,
33817 +
33818 +/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
33819 +into 8 bits. */
33820 + BFD_RELOC_FR30_9_IN_8,
33821 +
33822 +/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
33823 +into 8 bits. */
33824 + BFD_RELOC_FR30_10_IN_8,
33825 +
33826 +/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
33827 +short offset into 8 bits. */
33828 + BFD_RELOC_FR30_9_PCREL,
33829 +
33830 +/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
33831 +short offset into 11 bits. */
33832 + BFD_RELOC_FR30_12_PCREL,
33833 +
33834 +/* Motorola Mcore relocations. */
33835 + BFD_RELOC_MCORE_PCREL_IMM8BY4,
33836 + BFD_RELOC_MCORE_PCREL_IMM11BY2,
33837 + BFD_RELOC_MCORE_PCREL_IMM4BY2,
33838 + BFD_RELOC_MCORE_PCREL_32,
33839 + BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
33840 + BFD_RELOC_MCORE_RVA,
33841 +
33842 +/* Toshiba Media Processor Relocations. */
33843 + BFD_RELOC_MEP_8,
33844 + BFD_RELOC_MEP_16,
33845 + BFD_RELOC_MEP_32,
33846 + BFD_RELOC_MEP_PCREL8A2,
33847 + BFD_RELOC_MEP_PCREL12A2,
33848 + BFD_RELOC_MEP_PCREL17A2,
33849 + BFD_RELOC_MEP_PCREL24A2,
33850 + BFD_RELOC_MEP_PCABS24A2,
33851 + BFD_RELOC_MEP_LOW16,
33852 + BFD_RELOC_MEP_HI16U,
33853 + BFD_RELOC_MEP_HI16S,
33854 + BFD_RELOC_MEP_GPREL,
33855 + BFD_RELOC_MEP_TPREL,
33856 + BFD_RELOC_MEP_TPREL7,
33857 + BFD_RELOC_MEP_TPREL7A2,
33858 + BFD_RELOC_MEP_TPREL7A4,
33859 + BFD_RELOC_MEP_UIMM24,
33860 + BFD_RELOC_MEP_ADDR24A4,
33861 + BFD_RELOC_MEP_GNU_VTINHERIT,
33862 + BFD_RELOC_MEP_GNU_VTENTRY,
33863 +
33864 +
33865 +/* These are relocations for the GETA instruction. */
33866 + BFD_RELOC_MMIX_GETA,
33867 + BFD_RELOC_MMIX_GETA_1,
33868 + BFD_RELOC_MMIX_GETA_2,
33869 + BFD_RELOC_MMIX_GETA_3,
33870 +
33871 +/* These are relocations for a conditional branch instruction. */
33872 + BFD_RELOC_MMIX_CBRANCH,
33873 + BFD_RELOC_MMIX_CBRANCH_J,
33874 + BFD_RELOC_MMIX_CBRANCH_1,
33875 + BFD_RELOC_MMIX_CBRANCH_2,
33876 + BFD_RELOC_MMIX_CBRANCH_3,
33877 +
33878 +/* These are relocations for the PUSHJ instruction. */
33879 + BFD_RELOC_MMIX_PUSHJ,
33880 + BFD_RELOC_MMIX_PUSHJ_1,
33881 + BFD_RELOC_MMIX_PUSHJ_2,
33882 + BFD_RELOC_MMIX_PUSHJ_3,
33883 + BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
33884 +
33885 +/* These are relocations for the JMP instruction. */
33886 + BFD_RELOC_MMIX_JMP,
33887 + BFD_RELOC_MMIX_JMP_1,
33888 + BFD_RELOC_MMIX_JMP_2,
33889 + BFD_RELOC_MMIX_JMP_3,
33890 +
33891 +/* This is a relocation for a relative address as in a GETA instruction or
33892 +a branch. */
33893 + BFD_RELOC_MMIX_ADDR19,
33894 +
33895 +/* This is a relocation for a relative address as in a JMP instruction. */
33896 + BFD_RELOC_MMIX_ADDR27,
33897 +
33898 +/* This is a relocation for an instruction field that may be a general
33899 +register or a value 0..255. */
33900 + BFD_RELOC_MMIX_REG_OR_BYTE,
33901 +
33902 +/* This is a relocation for an instruction field that may be a general
33903 +register. */
33904 + BFD_RELOC_MMIX_REG,
33905 +
33906 +/* This is a relocation for two instruction fields holding a register and
33907 +an offset, the equivalent of the relocation. */
33908 + BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
33909 +
33910 +/* This relocation is an assertion that the expression is not allocated as
33911 +a global register. It does not modify contents. */
33912 + BFD_RELOC_MMIX_LOCAL,
33913 +
33914 +/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
33915 +short offset into 7 bits. */
33916 + BFD_RELOC_AVR_7_PCREL,
33917 +
33918 +/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
33919 +short offset into 12 bits. */
33920 + BFD_RELOC_AVR_13_PCREL,
33921 +
33922 +/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
33923 +program memory address) into 16 bits. */
33924 + BFD_RELOC_AVR_16_PM,
33925 +
33926 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
33927 +data memory address) into 8 bit immediate value of LDI insn. */
33928 + BFD_RELOC_AVR_LO8_LDI,
33929 +
33930 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
33931 +of data memory address) into 8 bit immediate value of LDI insn. */
33932 + BFD_RELOC_AVR_HI8_LDI,
33933 +
33934 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
33935 +of program memory address) into 8 bit immediate value of LDI insn. */
33936 + BFD_RELOC_AVR_HH8_LDI,
33937 +
33938 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
33939 +of 32 bit value) into 8 bit immediate value of LDI insn. */
33940 + BFD_RELOC_AVR_MS8_LDI,
33941 +
33942 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
33943 +(usually data memory address) into 8 bit immediate value of SUBI insn. */
33944 + BFD_RELOC_AVR_LO8_LDI_NEG,
33945 +
33946 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
33947 +(high 8 bit of data memory address) into 8 bit immediate value of
33948 +SUBI insn. */
33949 + BFD_RELOC_AVR_HI8_LDI_NEG,
33950 +
33951 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
33952 +(most high 8 bit of program memory address) into 8 bit immediate value
33953 +of LDI or SUBI insn. */
33954 + BFD_RELOC_AVR_HH8_LDI_NEG,
33955 +
33956 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
33957 +of 32 bit value) into 8 bit immediate value of LDI insn. */
33958 + BFD_RELOC_AVR_MS8_LDI_NEG,
33959 +
33960 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
33961 +command address) into 8 bit immediate value of LDI insn. */
33962 + BFD_RELOC_AVR_LO8_LDI_PM,
33963 +
33964 +/* This is a 16 bit reloc for the AVR that stores 8 bit value
33965 +(command address) into 8 bit immediate value of LDI insn. If the address
33966 +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
33967 +in the lower 128k. */
33968 + BFD_RELOC_AVR_LO8_LDI_GS,
33969 +
33970 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
33971 +of command address) into 8 bit immediate value of LDI insn. */
33972 + BFD_RELOC_AVR_HI8_LDI_PM,
33973 +
33974 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
33975 +of command address) into 8 bit immediate value of LDI insn. If the address
33976 +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
33977 +below 128k. */
33978 + BFD_RELOC_AVR_HI8_LDI_GS,
33979 +
33980 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
33981 +of command address) into 8 bit immediate value of LDI insn. */
33982 + BFD_RELOC_AVR_HH8_LDI_PM,
33983 +
33984 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
33985 +(usually command address) into 8 bit immediate value of SUBI insn. */
33986 + BFD_RELOC_AVR_LO8_LDI_PM_NEG,
33987 +
33988 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
33989 +(high 8 bit of 16 bit command address) into 8 bit immediate value
33990 +of SUBI insn. */
33991 + BFD_RELOC_AVR_HI8_LDI_PM_NEG,
33992 +
33993 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
33994 +(high 6 bit of 22 bit command address) into 8 bit immediate
33995 +value of SUBI insn. */
33996 + BFD_RELOC_AVR_HH8_LDI_PM_NEG,
33997 +
33998 +/* This is a 32 bit reloc for the AVR that stores 23 bit value
33999 +into 22 bits. */
34000 + BFD_RELOC_AVR_CALL,
34001 +
34002 +/* This is a 16 bit reloc for the AVR that stores all needed bits
34003 +for absolute addressing with ldi with overflow check to linktime */
34004 + BFD_RELOC_AVR_LDI,
34005 +
34006 +/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
34007 +instructions */
34008 + BFD_RELOC_AVR_6,
34009 +
34010 +/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
34011 +instructions */
34012 + BFD_RELOC_AVR_6_ADIW,
34013 +
34014 +/* Direct 12 bit. */
34015 + BFD_RELOC_390_12,
34016 +
34017 +/* 12 bit GOT offset. */
34018 + BFD_RELOC_390_GOT12,
34019 +
34020 +/* 32 bit PC relative PLT address. */
34021 + BFD_RELOC_390_PLT32,
34022 +
34023 +/* Copy symbol at runtime. */
34024 + BFD_RELOC_390_COPY,
34025 +
34026 +/* Create GOT entry. */
34027 + BFD_RELOC_390_GLOB_DAT,
34028 +
34029 +/* Create PLT entry. */
34030 + BFD_RELOC_390_JMP_SLOT,
34031 +
34032 +/* Adjust by program base. */
34033 + BFD_RELOC_390_RELATIVE,
34034 +
34035 +/* 32 bit PC relative offset to GOT. */
34036 + BFD_RELOC_390_GOTPC,
34037 +
34038 +/* 16 bit GOT offset. */
34039 + BFD_RELOC_390_GOT16,
34040 +
34041 +/* PC relative 16 bit shifted by 1. */
34042 + BFD_RELOC_390_PC16DBL,
34043 +
34044 +/* 16 bit PC rel. PLT shifted by 1. */
34045 + BFD_RELOC_390_PLT16DBL,
34046 +
34047 +/* PC relative 32 bit shifted by 1. */
34048 + BFD_RELOC_390_PC32DBL,
34049 +
34050 +/* 32 bit PC rel. PLT shifted by 1. */
34051 + BFD_RELOC_390_PLT32DBL,
34052 +
34053 +/* 32 bit PC rel. GOT shifted by 1. */
34054 + BFD_RELOC_390_GOTPCDBL,
34055 +
34056 +/* 64 bit GOT offset. */
34057 + BFD_RELOC_390_GOT64,
34058 +
34059 +/* 64 bit PC relative PLT address. */
34060 + BFD_RELOC_390_PLT64,
34061 +
34062 +/* 32 bit rel. offset to GOT entry. */
34063 + BFD_RELOC_390_GOTENT,
34064 +
34065 +/* 64 bit offset to GOT. */
34066 + BFD_RELOC_390_GOTOFF64,
34067 +
34068 +/* 12-bit offset to symbol-entry within GOT, with PLT handling. */
34069 + BFD_RELOC_390_GOTPLT12,
34070 +
34071 +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
34072 + BFD_RELOC_390_GOTPLT16,
34073 +
34074 +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
34075 + BFD_RELOC_390_GOTPLT32,
34076 +
34077 +/* 64-bit offset to symbol-entry within GOT, with PLT handling. */
34078 + BFD_RELOC_390_GOTPLT64,
34079 +
34080 +/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */
34081 + BFD_RELOC_390_GOTPLTENT,
34082 +
34083 +/* 16-bit rel. offset from the GOT to a PLT entry. */
34084 + BFD_RELOC_390_PLTOFF16,
34085 +
34086 +/* 32-bit rel. offset from the GOT to a PLT entry. */
34087 + BFD_RELOC_390_PLTOFF32,
34088 +
34089 +/* 64-bit rel. offset from the GOT to a PLT entry. */
34090 + BFD_RELOC_390_PLTOFF64,
34091 +
34092 +/* s390 tls relocations. */
34093 + BFD_RELOC_390_TLS_LOAD,
34094 + BFD_RELOC_390_TLS_GDCALL,
34095 + BFD_RELOC_390_TLS_LDCALL,
34096 + BFD_RELOC_390_TLS_GD32,
34097 + BFD_RELOC_390_TLS_GD64,
34098 + BFD_RELOC_390_TLS_GOTIE12,
34099 + BFD_RELOC_390_TLS_GOTIE32,
34100 + BFD_RELOC_390_TLS_GOTIE64,
34101 + BFD_RELOC_390_TLS_LDM32,
34102 + BFD_RELOC_390_TLS_LDM64,
34103 + BFD_RELOC_390_TLS_IE32,
34104 + BFD_RELOC_390_TLS_IE64,
34105 + BFD_RELOC_390_TLS_IEENT,
34106 + BFD_RELOC_390_TLS_LE32,
34107 + BFD_RELOC_390_TLS_LE64,
34108 + BFD_RELOC_390_TLS_LDO32,
34109 + BFD_RELOC_390_TLS_LDO64,
34110 + BFD_RELOC_390_TLS_DTPMOD,
34111 + BFD_RELOC_390_TLS_DTPOFF,
34112 + BFD_RELOC_390_TLS_TPOFF,
34113 +
34114 +/* Long displacement extension. */
34115 + BFD_RELOC_390_20,
34116 + BFD_RELOC_390_GOT20,
34117 + BFD_RELOC_390_GOTPLT20,
34118 + BFD_RELOC_390_TLS_GOTIE20,
34119 +
34120 +/* Score relocations */
34121 + BFD_RELOC_SCORE_DUMMY1,
34122 +
34123 +/* Low 16 bit for load/store */
34124 + BFD_RELOC_SCORE_GPREL15,
34125 +
34126 +/* This is a 24-bit reloc with the right 1 bit assumed to be 0 */
34127 + BFD_RELOC_SCORE_DUMMY2,
34128 + BFD_RELOC_SCORE_JMP,
34129 +
34130 +/* This is a 19-bit reloc with the right 1 bit assumed to be 0 */
34131 + BFD_RELOC_SCORE_BRANCH,
34132 +
34133 +/* This is a 11-bit reloc with the right 1 bit assumed to be 0 */
34134 + BFD_RELOC_SCORE16_JMP,
34135 +
34136 +/* This is a 8-bit reloc with the right 1 bit assumed to be 0 */
34137 + BFD_RELOC_SCORE16_BRANCH,
34138 +
34139 +/* Undocumented Score relocs */
34140 + BFD_RELOC_SCORE_GOT15,
34141 + BFD_RELOC_SCORE_GOT_LO16,
34142 + BFD_RELOC_SCORE_CALL15,
34143 + BFD_RELOC_SCORE_DUMMY_HI16,
34144 +
34145 +/* Scenix IP2K - 9-bit register number / data address */
34146 + BFD_RELOC_IP2K_FR9,
34147 +
34148 +/* Scenix IP2K - 4-bit register/data bank number */
34149 + BFD_RELOC_IP2K_BANK,
34150 +
34151 +/* Scenix IP2K - low 13 bits of instruction word address */
34152 + BFD_RELOC_IP2K_ADDR16CJP,
34153 +
34154 +/* Scenix IP2K - high 3 bits of instruction word address */
34155 + BFD_RELOC_IP2K_PAGE3,
34156 +
34157 +/* Scenix IP2K - ext/low/high 8 bits of data address */
34158 + BFD_RELOC_IP2K_LO8DATA,
34159 + BFD_RELOC_IP2K_HI8DATA,
34160 + BFD_RELOC_IP2K_EX8DATA,
34161 +
34162 +/* Scenix IP2K - low/high 8 bits of instruction word address */
34163 + BFD_RELOC_IP2K_LO8INSN,
34164 + BFD_RELOC_IP2K_HI8INSN,
34165 +
34166 +/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */
34167 + BFD_RELOC_IP2K_PC_SKIP,
34168 +
34169 +/* Scenix IP2K - 16 bit word address in text section. */
34170 + BFD_RELOC_IP2K_TEXT,
34171 +
34172 +/* Scenix IP2K - 7-bit sp or dp offset */
34173 + BFD_RELOC_IP2K_FR_OFFSET,
34174 +
34175 +/* Scenix VPE4K coprocessor - data/insn-space addressing */
34176 + BFD_RELOC_VPE4KMATH_DATA,
34177 + BFD_RELOC_VPE4KMATH_INSN,
34178 +
34179 +/* These two relocations are used by the linker to determine which of
34180 +the entries in a C++ virtual function table are actually used. When
34181 +the --gc-sections option is given, the linker will zero out the entries
34182 +that are not used, so that the code for those functions need not be
34183 +included in the output.
34184 +
34185 +VTABLE_INHERIT is a zero-space relocation used to describe to the
34186 +linker the inheritance tree of a C++ virtual function table. The
34187 +relocation's symbol should be the parent class' vtable, and the
34188 +relocation should be located at the child vtable.
34189 +
34190 +VTABLE_ENTRY is a zero-space relocation that describes the use of a
34191 +virtual function table entry. The reloc's symbol should refer to the
34192 +table of the class mentioned in the code. Off of that base, an offset
34193 +describes the entry that is being used. For Rela hosts, this offset
34194 +is stored in the reloc's addend. For Rel hosts, we are forced to put
34195 +this offset in the reloc's section offset. */
34196 + BFD_RELOC_VTABLE_INHERIT,
34197 + BFD_RELOC_VTABLE_ENTRY,
34198 +
34199 +/* Intel IA64 Relocations. */
34200 + BFD_RELOC_IA64_IMM14,
34201 + BFD_RELOC_IA64_IMM22,
34202 + BFD_RELOC_IA64_IMM64,
34203 + BFD_RELOC_IA64_DIR32MSB,
34204 + BFD_RELOC_IA64_DIR32LSB,
34205 + BFD_RELOC_IA64_DIR64MSB,
34206 + BFD_RELOC_IA64_DIR64LSB,
34207 + BFD_RELOC_IA64_GPREL22,
34208 + BFD_RELOC_IA64_GPREL64I,
34209 + BFD_RELOC_IA64_GPREL32MSB,
34210 + BFD_RELOC_IA64_GPREL32LSB,
34211 + BFD_RELOC_IA64_GPREL64MSB,
34212 + BFD_RELOC_IA64_GPREL64LSB,
34213 + BFD_RELOC_IA64_LTOFF22,
34214 + BFD_RELOC_IA64_LTOFF64I,
34215 + BFD_RELOC_IA64_PLTOFF22,
34216 + BFD_RELOC_IA64_PLTOFF64I,
34217 + BFD_RELOC_IA64_PLTOFF64MSB,
34218 + BFD_RELOC_IA64_PLTOFF64LSB,
34219 + BFD_RELOC_IA64_FPTR64I,
34220 + BFD_RELOC_IA64_FPTR32MSB,
34221 + BFD_RELOC_IA64_FPTR32LSB,
34222 + BFD_RELOC_IA64_FPTR64MSB,
34223 + BFD_RELOC_IA64_FPTR64LSB,
34224 + BFD_RELOC_IA64_PCREL21B,
34225 + BFD_RELOC_IA64_PCREL21BI,
34226 + BFD_RELOC_IA64_PCREL21M,
34227 + BFD_RELOC_IA64_PCREL21F,
34228 + BFD_RELOC_IA64_PCREL22,
34229 + BFD_RELOC_IA64_PCREL60B,
34230 + BFD_RELOC_IA64_PCREL64I,
34231 + BFD_RELOC_IA64_PCREL32MSB,
34232 + BFD_RELOC_IA64_PCREL32LSB,
34233 + BFD_RELOC_IA64_PCREL64MSB,
34234 + BFD_RELOC_IA64_PCREL64LSB,
34235 + BFD_RELOC_IA64_LTOFF_FPTR22,
34236 + BFD_RELOC_IA64_LTOFF_FPTR64I,
34237 + BFD_RELOC_IA64_LTOFF_FPTR32MSB,
34238 + BFD_RELOC_IA64_LTOFF_FPTR32LSB,
34239 + BFD_RELOC_IA64_LTOFF_FPTR64MSB,
34240 + BFD_RELOC_IA64_LTOFF_FPTR64LSB,
34241 + BFD_RELOC_IA64_SEGREL32MSB,
34242 + BFD_RELOC_IA64_SEGREL32LSB,
34243 + BFD_RELOC_IA64_SEGREL64MSB,
34244 + BFD_RELOC_IA64_SEGREL64LSB,
34245 + BFD_RELOC_IA64_SECREL32MSB,
34246 + BFD_RELOC_IA64_SECREL32LSB,
34247 + BFD_RELOC_IA64_SECREL64MSB,
34248 + BFD_RELOC_IA64_SECREL64LSB,
34249 + BFD_RELOC_IA64_REL32MSB,
34250 + BFD_RELOC_IA64_REL32LSB,
34251 + BFD_RELOC_IA64_REL64MSB,
34252 + BFD_RELOC_IA64_REL64LSB,
34253 + BFD_RELOC_IA64_LTV32MSB,
34254 + BFD_RELOC_IA64_LTV32LSB,
34255 + BFD_RELOC_IA64_LTV64MSB,
34256 + BFD_RELOC_IA64_LTV64LSB,
34257 + BFD_RELOC_IA64_IPLTMSB,
34258 + BFD_RELOC_IA64_IPLTLSB,
34259 + BFD_RELOC_IA64_COPY,
34260 + BFD_RELOC_IA64_LTOFF22X,
34261 + BFD_RELOC_IA64_LDXMOV,
34262 + BFD_RELOC_IA64_TPREL14,
34263 + BFD_RELOC_IA64_TPREL22,
34264 + BFD_RELOC_IA64_TPREL64I,
34265 + BFD_RELOC_IA64_TPREL64MSB,
34266 + BFD_RELOC_IA64_TPREL64LSB,
34267 + BFD_RELOC_IA64_LTOFF_TPREL22,
34268 + BFD_RELOC_IA64_DTPMOD64MSB,
34269 + BFD_RELOC_IA64_DTPMOD64LSB,
34270 + BFD_RELOC_IA64_LTOFF_DTPMOD22,
34271 + BFD_RELOC_IA64_DTPREL14,
34272 + BFD_RELOC_IA64_DTPREL22,
34273 + BFD_RELOC_IA64_DTPREL64I,
34274 + BFD_RELOC_IA64_DTPREL32MSB,
34275 + BFD_RELOC_IA64_DTPREL32LSB,
34276 + BFD_RELOC_IA64_DTPREL64MSB,
34277 + BFD_RELOC_IA64_DTPREL64LSB,
34278 + BFD_RELOC_IA64_LTOFF_DTPREL22,
34279 +
34280 +/* Motorola 68HC11 reloc.
34281 +This is the 8 bit high part of an absolute address. */
34282 + BFD_RELOC_M68HC11_HI8,
34283 +
34284 +/* Motorola 68HC11 reloc.
34285 +This is the 8 bit low part of an absolute address. */
34286 + BFD_RELOC_M68HC11_LO8,
34287 +
34288 +/* Motorola 68HC11 reloc.
34289 +This is the 3 bit of a value. */
34290 + BFD_RELOC_M68HC11_3B,
34291 +
34292 +/* Motorola 68HC11 reloc.
34293 +This reloc marks the beginning of a jump/call instruction.
34294 +It is used for linker relaxation to correctly identify beginning
34295 +of instruction and change some branches to use PC-relative
34296 +addressing mode. */
34297 + BFD_RELOC_M68HC11_RL_JUMP,
34298 +
34299 +/* Motorola 68HC11 reloc.
34300 +This reloc marks a group of several instructions that gcc generates
34301 +and for which the linker relaxation pass can modify and/or remove
34302 +some of them. */
34303 + BFD_RELOC_M68HC11_RL_GROUP,
34304 +
34305 +/* Motorola 68HC11 reloc.
34306 +This is the 16-bit lower part of an address. It is used for 'call'
34307 +instruction to specify the symbol address without any special
34308 +transformation (due to memory bank window). */
34309 + BFD_RELOC_M68HC11_LO16,
34310 +
34311 +/* Motorola 68HC11 reloc.
34312 +This is a 8-bit reloc that specifies the page number of an address.
34313 +It is used by 'call' instruction to specify the page number of
34314 +the symbol. */
34315 + BFD_RELOC_M68HC11_PAGE,
34316 +
34317 +/* Motorola 68HC11 reloc.
34318 +This is a 24-bit reloc that represents the address with a 16-bit
34319 +value and a 8-bit page number. The symbol address is transformed
34320 +to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */
34321 + BFD_RELOC_M68HC11_24,
34322 +
34323 +/* Motorola 68HC12 reloc.
34324 +This is the 5 bits of a value. */
34325 + BFD_RELOC_M68HC12_5B,
34326 +
34327 +/* NS CR16C Relocations. */
34328 + BFD_RELOC_16C_NUM08,
34329 + BFD_RELOC_16C_NUM08_C,
34330 + BFD_RELOC_16C_NUM16,
34331 + BFD_RELOC_16C_NUM16_C,
34332 + BFD_RELOC_16C_NUM32,
34333 + BFD_RELOC_16C_NUM32_C,
34334 + BFD_RELOC_16C_DISP04,
34335 + BFD_RELOC_16C_DISP04_C,
34336 + BFD_RELOC_16C_DISP08,
34337 + BFD_RELOC_16C_DISP08_C,
34338 + BFD_RELOC_16C_DISP16,
34339 + BFD_RELOC_16C_DISP16_C,
34340 + BFD_RELOC_16C_DISP24,
34341 + BFD_RELOC_16C_DISP24_C,
34342 + BFD_RELOC_16C_DISP24a,
34343 + BFD_RELOC_16C_DISP24a_C,
34344 + BFD_RELOC_16C_REG04,
34345 + BFD_RELOC_16C_REG04_C,
34346 + BFD_RELOC_16C_REG04a,
34347 + BFD_RELOC_16C_REG04a_C,
34348 + BFD_RELOC_16C_REG14,
34349 + BFD_RELOC_16C_REG14_C,
34350 + BFD_RELOC_16C_REG16,
34351 + BFD_RELOC_16C_REG16_C,
34352 + BFD_RELOC_16C_REG20,
34353 + BFD_RELOC_16C_REG20_C,
34354 + BFD_RELOC_16C_ABS20,
34355 + BFD_RELOC_16C_ABS20_C,
34356 + BFD_RELOC_16C_ABS24,
34357 + BFD_RELOC_16C_ABS24_C,
34358 + BFD_RELOC_16C_IMM04,
34359 + BFD_RELOC_16C_IMM04_C,
34360 + BFD_RELOC_16C_IMM16,
34361 + BFD_RELOC_16C_IMM16_C,
34362 + BFD_RELOC_16C_IMM20,
34363 + BFD_RELOC_16C_IMM20_C,
34364 + BFD_RELOC_16C_IMM24,
34365 + BFD_RELOC_16C_IMM24_C,
34366 + BFD_RELOC_16C_IMM32,
34367 + BFD_RELOC_16C_IMM32_C,
34368 +
34369 +/* NS CR16 Relocations. */
34370 + BFD_RELOC_CR16_NUM8,
34371 + BFD_RELOC_CR16_NUM16,
34372 + BFD_RELOC_CR16_NUM32,
34373 + BFD_RELOC_CR16_NUM32a,
34374 + BFD_RELOC_CR16_REGREL0,
34375 + BFD_RELOC_CR16_REGREL4,
34376 + BFD_RELOC_CR16_REGREL4a,
34377 + BFD_RELOC_CR16_REGREL14,
34378 + BFD_RELOC_CR16_REGREL14a,
34379 + BFD_RELOC_CR16_REGREL16,
34380 + BFD_RELOC_CR16_REGREL20,
34381 + BFD_RELOC_CR16_REGREL20a,
34382 + BFD_RELOC_CR16_ABS20,
34383 + BFD_RELOC_CR16_ABS24,
34384 + BFD_RELOC_CR16_IMM4,
34385 + BFD_RELOC_CR16_IMM8,
34386 + BFD_RELOC_CR16_IMM16,
34387 + BFD_RELOC_CR16_IMM20,
34388 + BFD_RELOC_CR16_IMM24,
34389 + BFD_RELOC_CR16_IMM32,
34390 + BFD_RELOC_CR16_IMM32a,
34391 + BFD_RELOC_CR16_DISP4,
34392 + BFD_RELOC_CR16_DISP8,
34393 + BFD_RELOC_CR16_DISP16,
34394 + BFD_RELOC_CR16_DISP20,
34395 + BFD_RELOC_CR16_DISP24,
34396 + BFD_RELOC_CR16_DISP24a,
34397 +
34398 +/* NS CRX Relocations. */
34399 + BFD_RELOC_CRX_REL4,
34400 + BFD_RELOC_CRX_REL8,
34401 + BFD_RELOC_CRX_REL8_CMP,
34402 + BFD_RELOC_CRX_REL16,
34403 + BFD_RELOC_CRX_REL24,
34404 + BFD_RELOC_CRX_REL32,
34405 + BFD_RELOC_CRX_REGREL12,
34406 + BFD_RELOC_CRX_REGREL22,
34407 + BFD_RELOC_CRX_REGREL28,
34408 + BFD_RELOC_CRX_REGREL32,
34409 + BFD_RELOC_CRX_ABS16,
34410 + BFD_RELOC_CRX_ABS32,
34411 + BFD_RELOC_CRX_NUM8,
34412 + BFD_RELOC_CRX_NUM16,
34413 + BFD_RELOC_CRX_NUM32,
34414 + BFD_RELOC_CRX_IMM16,
34415 + BFD_RELOC_CRX_IMM32,
34416 + BFD_RELOC_CRX_SWITCH8,
34417 + BFD_RELOC_CRX_SWITCH16,
34418 + BFD_RELOC_CRX_SWITCH32,
34419 +
34420 +/* These relocs are only used within the CRIS assembler. They are not
34421 +(at present) written to any object files. */
34422 + BFD_RELOC_CRIS_BDISP8,
34423 + BFD_RELOC_CRIS_UNSIGNED_5,
34424 + BFD_RELOC_CRIS_SIGNED_6,
34425 + BFD_RELOC_CRIS_UNSIGNED_6,
34426 + BFD_RELOC_CRIS_SIGNED_8,
34427 + BFD_RELOC_CRIS_UNSIGNED_8,
34428 + BFD_RELOC_CRIS_SIGNED_16,
34429 + BFD_RELOC_CRIS_UNSIGNED_16,
34430 + BFD_RELOC_CRIS_LAPCQ_OFFSET,
34431 + BFD_RELOC_CRIS_UNSIGNED_4,
34432 +
34433 +/* Relocs used in ELF shared libraries for CRIS. */
34434 + BFD_RELOC_CRIS_COPY,
34435 + BFD_RELOC_CRIS_GLOB_DAT,
34436 + BFD_RELOC_CRIS_JUMP_SLOT,
34437 + BFD_RELOC_CRIS_RELATIVE,
34438 +
34439 +/* 32-bit offset to symbol-entry within GOT. */
34440 + BFD_RELOC_CRIS_32_GOT,
34441 +
34442 +/* 16-bit offset to symbol-entry within GOT. */
34443 + BFD_RELOC_CRIS_16_GOT,
34444 +
34445 +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
34446 + BFD_RELOC_CRIS_32_GOTPLT,
34447 +
34448 +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
34449 + BFD_RELOC_CRIS_16_GOTPLT,
34450 +
34451 +/* 32-bit offset to symbol, relative to GOT. */
34452 + BFD_RELOC_CRIS_32_GOTREL,
34453 +
34454 +/* 32-bit offset to symbol with PLT entry, relative to GOT. */
34455 + BFD_RELOC_CRIS_32_PLT_GOTREL,
34456 +
34457 +/* 32-bit offset to symbol with PLT entry, relative to this relocation. */
34458 + BFD_RELOC_CRIS_32_PLT_PCREL,
34459 +
34460 +/* Intel i860 Relocations. */
34461 + BFD_RELOC_860_COPY,
34462 + BFD_RELOC_860_GLOB_DAT,
34463 + BFD_RELOC_860_JUMP_SLOT,
34464 + BFD_RELOC_860_RELATIVE,
34465 + BFD_RELOC_860_PC26,
34466 + BFD_RELOC_860_PLT26,
34467 + BFD_RELOC_860_PC16,
34468 + BFD_RELOC_860_LOW0,
34469 + BFD_RELOC_860_SPLIT0,
34470 + BFD_RELOC_860_LOW1,
34471 + BFD_RELOC_860_SPLIT1,
34472 + BFD_RELOC_860_LOW2,
34473 + BFD_RELOC_860_SPLIT2,
34474 + BFD_RELOC_860_LOW3,
34475 + BFD_RELOC_860_LOGOT0,
34476 + BFD_RELOC_860_SPGOT0,
34477 + BFD_RELOC_860_LOGOT1,
34478 + BFD_RELOC_860_SPGOT1,
34479 + BFD_RELOC_860_LOGOTOFF0,
34480 + BFD_RELOC_860_SPGOTOFF0,
34481 + BFD_RELOC_860_LOGOTOFF1,
34482 + BFD_RELOC_860_SPGOTOFF1,
34483 + BFD_RELOC_860_LOGOTOFF2,
34484 + BFD_RELOC_860_LOGOTOFF3,
34485 + BFD_RELOC_860_LOPC,
34486 + BFD_RELOC_860_HIGHADJ,
34487 + BFD_RELOC_860_HAGOT,
34488 + BFD_RELOC_860_HAGOTOFF,
34489 + BFD_RELOC_860_HAPC,
34490 + BFD_RELOC_860_HIGH,
34491 + BFD_RELOC_860_HIGOT,
34492 + BFD_RELOC_860_HIGOTOFF,
34493 +
34494 +/* OpenRISC Relocations. */
34495 + BFD_RELOC_OPENRISC_ABS_26,
34496 + BFD_RELOC_OPENRISC_REL_26,
34497 +
34498 +/* H8 elf Relocations. */
34499 + BFD_RELOC_H8_DIR16A8,
34500 + BFD_RELOC_H8_DIR16R8,
34501 + BFD_RELOC_H8_DIR24A8,
34502 + BFD_RELOC_H8_DIR24R8,
34503 + BFD_RELOC_H8_DIR32A16,
34504 +
34505 +/* Sony Xstormy16 Relocations. */
34506 + BFD_RELOC_XSTORMY16_REL_12,
34507 + BFD_RELOC_XSTORMY16_12,
34508 + BFD_RELOC_XSTORMY16_24,
34509 + BFD_RELOC_XSTORMY16_FPTR16,
34510 +
34511 +/* Self-describing complex relocations. */
34512 + BFD_RELOC_RELC,
34513 +
34514 +
34515 +/* Infineon Relocations. */
34516 + BFD_RELOC_XC16X_PAG,
34517 + BFD_RELOC_XC16X_POF,
34518 + BFD_RELOC_XC16X_SEG,
34519 + BFD_RELOC_XC16X_SOF,
34520 +
34521 +/* Relocations used by VAX ELF. */
34522 + BFD_RELOC_VAX_GLOB_DAT,
34523 + BFD_RELOC_VAX_JMP_SLOT,
34524 + BFD_RELOC_VAX_RELATIVE,
34525 +
34526 +/* Morpho MT - 16 bit immediate relocation. */
34527 + BFD_RELOC_MT_PC16,
34528 +
34529 +/* Morpho MT - Hi 16 bits of an address. */
34530 + BFD_RELOC_MT_HI16,
34531 +
34532 +/* Morpho MT - Low 16 bits of an address. */
34533 + BFD_RELOC_MT_LO16,
34534 +
34535 +/* Morpho MT - Used to tell the linker which vtable entries are used. */
34536 + BFD_RELOC_MT_GNU_VTINHERIT,
34537 +
34538 +/* Morpho MT - Used to tell the linker which vtable entries are used. */
34539 + BFD_RELOC_MT_GNU_VTENTRY,
34540 +
34541 +/* Morpho MT - 8 bit immediate relocation. */
34542 + BFD_RELOC_MT_PCINSN8,
34543 +
34544 +/* msp430 specific relocation codes */
34545 + BFD_RELOC_MSP430_10_PCREL,
34546 + BFD_RELOC_MSP430_16_PCREL,
34547 + BFD_RELOC_MSP430_16,
34548 + BFD_RELOC_MSP430_16_PCREL_BYTE,
34549 + BFD_RELOC_MSP430_16_BYTE,
34550 + BFD_RELOC_MSP430_2X_PCREL,
34551 + BFD_RELOC_MSP430_RL_PCREL,
34552 +
34553 +/* IQ2000 Relocations. */
34554 + BFD_RELOC_IQ2000_OFFSET_16,
34555 + BFD_RELOC_IQ2000_OFFSET_21,
34556 + BFD_RELOC_IQ2000_UHI16,
34557 +
34558 +/* Special Xtensa relocation used only by PLT entries in ELF shared
34559 +objects to indicate that the runtime linker should set the value
34560 +to one of its own internal functions or data structures. */
34561 + BFD_RELOC_XTENSA_RTLD,
34562 +
34563 +/* Xtensa relocations for ELF shared objects. */
34564 + BFD_RELOC_XTENSA_GLOB_DAT,
34565 + BFD_RELOC_XTENSA_JMP_SLOT,
34566 + BFD_RELOC_XTENSA_RELATIVE,
34567 +
34568 +/* Xtensa relocation used in ELF object files for symbols that may require
34569 +PLT entries. Otherwise, this is just a generic 32-bit relocation. */
34570 + BFD_RELOC_XTENSA_PLT,
34571 +
34572 +/* Xtensa relocations to mark the difference of two local symbols.
34573 +These are only needed to support linker relaxation and can be ignored
34574 +when not relaxing. The field is set to the value of the difference
34575 +assuming no relaxation. The relocation encodes the position of the
34576 +first symbol so the linker can determine whether to adjust the field
34577 +value. */
34578 + BFD_RELOC_XTENSA_DIFF8,
34579 + BFD_RELOC_XTENSA_DIFF16,
34580 + BFD_RELOC_XTENSA_DIFF32,
34581 +
34582 +/* Generic Xtensa relocations for instruction operands. Only the slot
34583 +number is encoded in the relocation. The relocation applies to the
34584 +last PC-relative immediate operand, or if there are no PC-relative
34585 +immediates, to the last immediate operand. */
34586 + BFD_RELOC_XTENSA_SLOT0_OP,
34587 + BFD_RELOC_XTENSA_SLOT1_OP,
34588 + BFD_RELOC_XTENSA_SLOT2_OP,
34589 + BFD_RELOC_XTENSA_SLOT3_OP,
34590 + BFD_RELOC_XTENSA_SLOT4_OP,
34591 + BFD_RELOC_XTENSA_SLOT5_OP,
34592 + BFD_RELOC_XTENSA_SLOT6_OP,
34593 + BFD_RELOC_XTENSA_SLOT7_OP,
34594 + BFD_RELOC_XTENSA_SLOT8_OP,
34595 + BFD_RELOC_XTENSA_SLOT9_OP,
34596 + BFD_RELOC_XTENSA_SLOT10_OP,
34597 + BFD_RELOC_XTENSA_SLOT11_OP,
34598 + BFD_RELOC_XTENSA_SLOT12_OP,
34599 + BFD_RELOC_XTENSA_SLOT13_OP,
34600 + BFD_RELOC_XTENSA_SLOT14_OP,
34601 +
34602 +/* Alternate Xtensa relocations. Only the slot is encoded in the
34603 +relocation. The meaning of these relocations is opcode-specific. */
34604 + BFD_RELOC_XTENSA_SLOT0_ALT,
34605 + BFD_RELOC_XTENSA_SLOT1_ALT,
34606 + BFD_RELOC_XTENSA_SLOT2_ALT,
34607 + BFD_RELOC_XTENSA_SLOT3_ALT,
34608 + BFD_RELOC_XTENSA_SLOT4_ALT,
34609 + BFD_RELOC_XTENSA_SLOT5_ALT,
34610 + BFD_RELOC_XTENSA_SLOT6_ALT,
34611 + BFD_RELOC_XTENSA_SLOT7_ALT,
34612 + BFD_RELOC_XTENSA_SLOT8_ALT,
34613 + BFD_RELOC_XTENSA_SLOT9_ALT,
34614 + BFD_RELOC_XTENSA_SLOT10_ALT,
34615 + BFD_RELOC_XTENSA_SLOT11_ALT,
34616 + BFD_RELOC_XTENSA_SLOT12_ALT,
34617 + BFD_RELOC_XTENSA_SLOT13_ALT,
34618 + BFD_RELOC_XTENSA_SLOT14_ALT,
34619 +
34620 +/* Xtensa relocations for backward compatibility. These have all been
34621 +replaced by BFD_RELOC_XTENSA_SLOT0_OP. */
34622 + BFD_RELOC_XTENSA_OP0,
34623 + BFD_RELOC_XTENSA_OP1,
34624 + BFD_RELOC_XTENSA_OP2,
34625 +
34626 +/* Xtensa relocation to mark that the assembler expanded the
34627 +instructions from an original target. The expansion size is
34628 +encoded in the reloc size. */
34629 + BFD_RELOC_XTENSA_ASM_EXPAND,
34630 +
34631 +/* Xtensa relocation to mark that the linker should simplify
34632 +assembler-expanded instructions. This is commonly used
34633 +internally by the linker after analysis of a
34634 +BFD_RELOC_XTENSA_ASM_EXPAND. */
34635 + BFD_RELOC_XTENSA_ASM_SIMPLIFY,
34636 +
34637 +/* 8 bit signed offset in (ix+d) or (iy+d). */
34638 + BFD_RELOC_Z80_DISP8,
34639 +
34640 +/* DJNZ offset. */
34641 + BFD_RELOC_Z8K_DISP7,
34642 +
34643 +/* CALR offset. */
34644 + BFD_RELOC_Z8K_CALLR,
34645 +
34646 +/* 4 bit value. */
34647 + BFD_RELOC_Z8K_IMM4L,
34648 + BFD_RELOC_UNUSED };
34649 +typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
34650 +reloc_howto_type *bfd_reloc_type_lookup
34651 + (bfd *abfd, bfd_reloc_code_real_type code);
34652 +reloc_howto_type *bfd_reloc_name_lookup
34653 + (bfd *abfd, const char *reloc_name);
34654 +
34655 +const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
34656 +
34657 +/* Extracted from syms.c. */
34658 +
34659 +typedef struct bfd_symbol
34660 +{
34661 + /* A pointer to the BFD which owns the symbol. This information
34662 + is necessary so that a back end can work out what additional
34663 + information (invisible to the application writer) is carried
34664 + with the symbol.
34665 +
34666 + This field is *almost* redundant, since you can use section->owner
34667 + instead, except that some symbols point to the global sections
34668 + bfd_{abs,com,und}_section. This could be fixed by making
34669 + these globals be per-bfd (or per-target-flavor). FIXME. */
34670 + struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
34671 +
34672 + /* The text of the symbol. The name is left alone, and not copied; the
34673 + application may not alter it. */
34674 + const char *name;
34675 +
34676 + /* The value of the symbol. This really should be a union of a
34677 + numeric value with a pointer, since some flags indicate that
34678 + a pointer to another symbol is stored here. */
34679 + symvalue value;
34680 +
34681 + /* Attributes of a symbol. */
34682 +#define BSF_NO_FLAGS 0x00
34683 +
34684 + /* The symbol has local scope; <<static>> in <<C>>. The value
34685 + is the offset into the section of the data. */
34686 +#define BSF_LOCAL 0x01
34687 +
34688 + /* The symbol has global scope; initialized data in <<C>>. The
34689 + value is the offset into the section of the data. */
34690 +#define BSF_GLOBAL 0x02
34691 +
34692 + /* The symbol has global scope and is exported. The value is
34693 + the offset into the section of the data. */
34694 +#define BSF_EXPORT BSF_GLOBAL /* No real difference. */
34695 +
34696 + /* A normal C symbol would be one of:
34697 + <<BSF_LOCAL>>, <<BSF_FORT_COMM>>, <<BSF_UNDEFINED>> or
34698 + <<BSF_GLOBAL>>. */
34699 +
34700 + /* The symbol is a debugging record. The value has an arbitrary
34701 + meaning, unless BSF_DEBUGGING_RELOC is also set. */
34702 +#define BSF_DEBUGGING 0x08
34703 +
34704 + /* The symbol denotes a function entry point. Used in ELF,
34705 + perhaps others someday. */
34706 +#define BSF_FUNCTION 0x10
34707 +
34708 + /* Used by the linker. */
34709 +#define BSF_KEEP 0x20
34710 +#define BSF_KEEP_G 0x40
34711 +
34712 + /* A weak global symbol, overridable without warnings by
34713 + a regular global symbol of the same name. */
34714 +#define BSF_WEAK 0x80
34715 +
34716 + /* This symbol was created to point to a section, e.g. ELF's
34717 + STT_SECTION symbols. */
34718 +#define BSF_SECTION_SYM 0x100
34719 +
34720 + /* The symbol used to be a common symbol, but now it is
34721 + allocated. */
34722 +#define BSF_OLD_COMMON 0x200
34723 +
34724 + /* The default value for common data. */
34725 +#define BFD_FORT_COMM_DEFAULT_VALUE 0
34726 +
34727 + /* In some files the type of a symbol sometimes alters its
34728 + location in an output file - ie in coff a <<ISFCN>> symbol
34729 + which is also <<C_EXT>> symbol appears where it was
34730 + declared and not at the end of a section. This bit is set
34731 + by the target BFD part to convey this information. */
34732 +#define BSF_NOT_AT_END 0x400
34733 +
34734 + /* Signal that the symbol is the label of constructor section. */
34735 +#define BSF_CONSTRUCTOR 0x800
34736 +
34737 + /* Signal that the symbol is a warning symbol. The name is a
34738 + warning. The name of the next symbol is the one to warn about;
34739 + if a reference is made to a symbol with the same name as the next
34740 + symbol, a warning is issued by the linker. */
34741 +#define BSF_WARNING 0x1000
34742 +
34743 + /* Signal that the symbol is indirect. This symbol is an indirect
34744 + pointer to the symbol with the same name as the next symbol. */
34745 +#define BSF_INDIRECT 0x2000
34746 +
34747 + /* BSF_FILE marks symbols that contain a file name. This is used
34748 + for ELF STT_FILE symbols. */
34749 +#define BSF_FILE 0x4000
34750 +
34751 + /* Symbol is from dynamic linking information. */
34752 +#define BSF_DYNAMIC 0x8000
34753 +
34754 + /* The symbol denotes a data object. Used in ELF, and perhaps
34755 + others someday. */
34756 +#define BSF_OBJECT 0x10000
34757 +
34758 + /* This symbol is a debugging symbol. The value is the offset
34759 + into the section of the data. BSF_DEBUGGING should be set
34760 + as well. */
34761 +#define BSF_DEBUGGING_RELOC 0x20000
34762 +
34763 + /* This symbol is thread local. Used in ELF. */
34764 +#define BSF_THREAD_LOCAL 0x40000
34765 +
34766 + /* This symbol represents a complex relocation expression,
34767 + with the expression tree serialized in the symbol name. */
34768 +#define BSF_RELC 0x80000
34769 +
34770 + /* This symbol represents a signed complex relocation expression,
34771 + with the expression tree serialized in the symbol name. */
34772 +#define BSF_SRELC 0x100000
34773 +
34774 + flagword flags;
34775 +
34776 + /* A pointer to the section to which this symbol is
34777 + relative. This will always be non NULL, there are special
34778 + sections for undefined and absolute symbols. */
34779 + struct bfd_section *section;
34780 +
34781 + /* Back end special data. */
34782 + union
34783 + {
34784 + void *p;
34785 + bfd_vma i;
34786 + }
34787 + udata;
34788 +}
34789 +asymbol;
34790 +
34791 +#define bfd_get_symtab_upper_bound(abfd) \
34792 + BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
34793 +
34794 +bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
34795 +
34796 +bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
34797 +
34798 +#define bfd_is_local_label_name(abfd, name) \
34799 + BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
34800 +
34801 +bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
34802 +
34803 +#define bfd_is_target_special_symbol(abfd, sym) \
34804 + BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
34805 +
34806 +#define bfd_canonicalize_symtab(abfd, location) \
34807 + BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
34808 +
34809 +bfd_boolean bfd_set_symtab
34810 + (bfd *abfd, asymbol **location, unsigned int count);
34811 +
34812 +void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
34813 +
34814 +#define bfd_make_empty_symbol(abfd) \
34815 + BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
34816 +
34817 +asymbol *_bfd_generic_make_empty_symbol (bfd *);
34818 +
34819 +#define bfd_make_debug_symbol(abfd,ptr,size) \
34820 + BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
34821 +
34822 +int bfd_decode_symclass (asymbol *symbol);
34823 +
34824 +bfd_boolean bfd_is_undefined_symclass (int symclass);
34825 +
34826 +void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
34827 +
34828 +bfd_boolean bfd_copy_private_symbol_data
34829 + (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
34830 +
34831 +#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
34832 + BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
34833 + (ibfd, isymbol, obfd, osymbol))
34834 +
34835 +/* Extracted from bfd.c. */
34836 +struct bfd
34837 +{
34838 + /* A unique identifier of the BFD */
34839 + unsigned int id;
34840 +
34841 + /* The filename the application opened the BFD with. */
34842 + const char *filename;
34843 +
34844 + /* A pointer to the target jump table. */
34845 + const struct bfd_target *xvec;
34846 +
34847 + /* The IOSTREAM, and corresponding IO vector that provide access
34848 + to the file backing the BFD. */
34849 + void *iostream;
34850 + const struct bfd_iovec *iovec;
34851 +
34852 + /* Is the file descriptor being cached? That is, can it be closed as
34853 + needed, and re-opened when accessed later? */
34854 + bfd_boolean cacheable;
34855 +
34856 + /* Marks whether there was a default target specified when the
34857 + BFD was opened. This is used to select which matching algorithm
34858 + to use to choose the back end. */
34859 + bfd_boolean target_defaulted;
34860 +
34861 + /* The caching routines use these to maintain a
34862 + least-recently-used list of BFDs. */
34863 + struct bfd *lru_prev, *lru_next;
34864 +
34865 + /* When a file is closed by the caching routines, BFD retains
34866 + state information on the file here... */
34867 + ufile_ptr where;
34868 +
34869 + /* ... and here: (``once'' means at least once). */
34870 + bfd_boolean opened_once;
34871 +
34872 + /* Set if we have a locally maintained mtime value, rather than
34873 + getting it from the file each time. */
34874 + bfd_boolean mtime_set;
34875 +
34876 + /* File modified time, if mtime_set is TRUE. */
34877 + long mtime;
34878 +
34879 + /* Reserved for an unimplemented file locking extension. */
34880 + int ifd;
34881 +
34882 + /* The format which belongs to the BFD. (object, core, etc.) */
34883 + bfd_format format;
34884 +
34885 + /* The direction with which the BFD was opened. */
34886 + enum bfd_direction
34887 + {
34888 + no_direction = 0,
34889 + read_direction = 1,
34890 + write_direction = 2,
34891 + both_direction = 3
34892 + }
34893 + direction;
34894 +
34895 + /* Format_specific flags. */
34896 + flagword flags;
34897 +
34898 + /* Currently my_archive is tested before adding origin to
34899 + anything. I believe that this can become always an add of
34900 + origin, with origin set to 0 for non archive files. */
34901 + ufile_ptr origin;
34902 +
34903 + /* Remember when output has begun, to stop strange things
34904 + from happening. */
34905 + bfd_boolean output_has_begun;
34906 +
34907 + /* A hash table for section names. */
34908 + struct bfd_hash_table section_htab;
34909 +
34910 + /* Pointer to linked list of sections. */
34911 + struct bfd_section *sections;
34912 +
34913 + /* The last section on the section list. */
34914 + struct bfd_section *section_last;
34915 +
34916 + /* The number of sections. */
34917 + unsigned int section_count;
34918 +
34919 + /* Stuff only useful for object files:
34920 + The start address. */
34921 + bfd_vma start_address;
34922 +
34923 + /* Used for input and output. */
34924 + unsigned int symcount;
34925 +
34926 + /* Symbol table for output BFD (with symcount entries). */
34927 + struct bfd_symbol **outsymbols;
34928 +
34929 + /* Used for slurped dynamic symbol tables. */
34930 + unsigned int dynsymcount;
34931 +
34932 + /* Pointer to structure which contains architecture information. */
34933 + const struct bfd_arch_info *arch_info;
34934 +
34935 + /* Flag set if symbols from this BFD should not be exported. */
34936 + bfd_boolean no_export;
34937 +
34938 + /* Stuff only useful for archives. */
34939 + void *arelt_data;
34940 + struct bfd *my_archive; /* The containing archive BFD. */
34941 + struct bfd *archive_next; /* The next BFD in the archive. */
34942 + struct bfd *archive_head; /* The first BFD in the archive. */
34943 + bfd_boolean has_armap;
34944 +
34945 + /* A chain of BFD structures involved in a link. */
34946 + struct bfd *link_next;
34947 +
34948 + /* A field used by _bfd_generic_link_add_archive_symbols. This will
34949 + be used only for archive elements. */
34950 + int archive_pass;
34951 +
34952 + /* Used by the back end to hold private data. */
34953 + union
34954 + {
34955 + struct aout_data_struct *aout_data;
34956 + struct artdata *aout_ar_data;
34957 + struct _oasys_data *oasys_obj_data;
34958 + struct _oasys_ar_data *oasys_ar_data;
34959 + struct coff_tdata *coff_obj_data;
34960 + struct pe_tdata *pe_obj_data;
34961 + struct xcoff_tdata *xcoff_obj_data;
34962 + struct ecoff_tdata *ecoff_obj_data;
34963 + struct ieee_data_struct *ieee_data;
34964 + struct ieee_ar_data_struct *ieee_ar_data;
34965 + struct srec_data_struct *srec_data;
34966 + struct ihex_data_struct *ihex_data;
34967 + struct tekhex_data_struct *tekhex_data;
34968 + struct elf_obj_tdata *elf_obj_data;
34969 + struct nlm_obj_tdata *nlm_obj_data;
34970 + struct bout_data_struct *bout_data;
34971 + struct mmo_data_struct *mmo_data;
34972 + struct sun_core_struct *sun_core_data;
34973 + struct sco5_core_struct *sco5_core_data;
34974 + struct trad_core_struct *trad_core_data;
34975 + struct som_data_struct *som_data;
34976 + struct hpux_core_struct *hpux_core_data;
34977 + struct hppabsd_core_struct *hppabsd_core_data;
34978 + struct sgi_core_struct *sgi_core_data;
34979 + struct lynx_core_struct *lynx_core_data;
34980 + struct osf_core_struct *osf_core_data;
34981 + struct cisco_core_struct *cisco_core_data;
34982 + struct versados_data_struct *versados_data;
34983 + struct netbsd_core_struct *netbsd_core_data;
34984 + struct mach_o_data_struct *mach_o_data;
34985 + struct mach_o_fat_data_struct *mach_o_fat_data;
34986 + struct bfd_pef_data_struct *pef_data;
34987 + struct bfd_pef_xlib_data_struct *pef_xlib_data;
34988 + struct bfd_sym_data_struct *sym_data;
34989 + void *any;
34990 + }
34991 + tdata;
34992 +
34993 + /* Used by the application to hold private data. */
34994 + void *usrdata;
34995 +
34996 + /* Where all the allocated stuff under this BFD goes. This is a
34997 + struct objalloc *, but we use void * to avoid requiring the inclusion
34998 + of objalloc.h. */
34999 + void *memory;
35000 +};
35001 +
35002 +typedef enum bfd_error
35003 +{
35004 + bfd_error_no_error = 0,
35005 + bfd_error_system_call,
35006 + bfd_error_invalid_target,
35007 + bfd_error_wrong_format,
35008 + bfd_error_wrong_object_format,
35009 + bfd_error_invalid_operation,
35010 + bfd_error_no_memory,
35011 + bfd_error_no_symbols,
35012 + bfd_error_no_armap,
35013 + bfd_error_no_more_archived_files,
35014 + bfd_error_malformed_archive,
35015 + bfd_error_file_not_recognized,
35016 + bfd_error_file_ambiguously_recognized,
35017 + bfd_error_no_contents,
35018 + bfd_error_nonrepresentable_section,
35019 + bfd_error_no_debug_section,
35020 + bfd_error_bad_value,
35021 + bfd_error_file_truncated,
35022 + bfd_error_file_too_big,
35023 + bfd_error_on_input,
35024 + bfd_error_invalid_error_code
35025 +}
35026 +bfd_error_type;
35027 +
35028 +bfd_error_type bfd_get_error (void);
35029 +
35030 +void bfd_set_error (bfd_error_type error_tag, ...);
35031 +
35032 +const char *bfd_errmsg (bfd_error_type error_tag);
35033 +
35034 +void bfd_perror (const char *message);
35035 +
35036 +typedef void (*bfd_error_handler_type) (const char *, ...);
35037 +
35038 +bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
35039 +
35040 +void bfd_set_error_program_name (const char *);
35041 +
35042 +bfd_error_handler_type bfd_get_error_handler (void);
35043 +
35044 +long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
35045 +
35046 +long bfd_canonicalize_reloc
35047 + (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
35048 +
35049 +void bfd_set_reloc
35050 + (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
35051 +
35052 +bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
35053 +
35054 +int bfd_get_arch_size (bfd *abfd);
35055 +
35056 +int bfd_get_sign_extend_vma (bfd *abfd);
35057 +
35058 +bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
35059 +
35060 +unsigned int bfd_get_gp_size (bfd *abfd);
35061 +
35062 +void bfd_set_gp_size (bfd *abfd, unsigned int i);
35063 +
35064 +bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
35065 +
35066 +bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
35067 +
35068 +#define bfd_copy_private_header_data(ibfd, obfd) \
35069 + BFD_SEND (obfd, _bfd_copy_private_header_data, \
35070 + (ibfd, obfd))
35071 +bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
35072 +
35073 +#define bfd_copy_private_bfd_data(ibfd, obfd) \
35074 + BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
35075 + (ibfd, obfd))
35076 +bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
35077 +
35078 +#define bfd_merge_private_bfd_data(ibfd, obfd) \
35079 + BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
35080 + (ibfd, obfd))
35081 +bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
35082 +
35083 +#define bfd_set_private_flags(abfd, flags) \
35084 + BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
35085 +#define bfd_sizeof_headers(abfd, info) \
35086 + BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
35087 +
35088 +#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
35089 + BFD_SEND (abfd, _bfd_find_nearest_line, \
35090 + (abfd, sec, syms, off, file, func, line))
35091 +
35092 +#define bfd_find_line(abfd, syms, sym, file, line) \
35093 + BFD_SEND (abfd, _bfd_find_line, \
35094 + (abfd, syms, sym, file, line))
35095 +
35096 +#define bfd_find_inliner_info(abfd, file, func, line) \
35097 + BFD_SEND (abfd, _bfd_find_inliner_info, \
35098 + (abfd, file, func, line))
35099 +
35100 +#define bfd_debug_info_start(abfd) \
35101 + BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
35102 +
35103 +#define bfd_debug_info_end(abfd) \
35104 + BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
35105 +
35106 +#define bfd_debug_info_accumulate(abfd, section) \
35107 + BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
35108 +
35109 +#define bfd_stat_arch_elt(abfd, stat) \
35110 + BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
35111 +
35112 +#define bfd_update_armap_timestamp(abfd) \
35113 + BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
35114 +
35115 +#define bfd_set_arch_mach(abfd, arch, mach)\
35116 + BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
35117 +
35118 +#define bfd_relax_section(abfd, section, link_info, again) \
35119 + BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
35120 +
35121 +#define bfd_gc_sections(abfd, link_info) \
35122 + BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
35123 +
35124 +#define bfd_merge_sections(abfd, link_info) \
35125 + BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
35126 +
35127 +#define bfd_is_group_section(abfd, sec) \
35128 + BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
35129 +
35130 +#define bfd_discard_group(abfd, sec) \
35131 + BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
35132 +
35133 +#define bfd_link_hash_table_create(abfd) \
35134 + BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
35135 +
35136 +#define bfd_link_hash_table_free(abfd, hash) \
35137 + BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
35138 +
35139 +#define bfd_link_add_symbols(abfd, info) \
35140 + BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
35141 +
35142 +#define bfd_link_just_syms(abfd, sec, info) \
35143 + BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
35144 +
35145 +#define bfd_final_link(abfd, info) \
35146 + BFD_SEND (abfd, _bfd_final_link, (abfd, info))
35147 +
35148 +#define bfd_free_cached_info(abfd) \
35149 + BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
35150 +
35151 +#define bfd_get_dynamic_symtab_upper_bound(abfd) \
35152 + BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
35153 +
35154 +#define bfd_print_private_bfd_data(abfd, file)\
35155 + BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
35156 +
35157 +#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
35158 + BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
35159 +
35160 +#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
35161 + BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
35162 + dyncount, dynsyms, ret))
35163 +
35164 +#define bfd_get_dynamic_reloc_upper_bound(abfd) \
35165 + BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
35166 +
35167 +#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
35168 + BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
35169 +
35170 +extern bfd_byte *bfd_get_relocated_section_contents
35171 + (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
35172 + bfd_boolean, asymbol **);
35173 +
35174 +bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
35175 +
35176 +struct bfd_preserve
35177 +{
35178 + void *marker;
35179 + void *tdata;
35180 + flagword flags;
35181 + const struct bfd_arch_info *arch_info;
35182 + struct bfd_section *sections;
35183 + struct bfd_section *section_last;
35184 + unsigned int section_count;
35185 + struct bfd_hash_table section_htab;
35186 +};
35187 +
35188 +bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
35189 +
35190 +void bfd_preserve_restore (bfd *, struct bfd_preserve *);
35191 +
35192 +void bfd_preserve_finish (bfd *, struct bfd_preserve *);
35193 +
35194 +bfd_vma bfd_emul_get_maxpagesize (const char *);
35195 +
35196 +void bfd_emul_set_maxpagesize (const char *, bfd_vma);
35197 +
35198 +bfd_vma bfd_emul_get_commonpagesize (const char *);
35199 +
35200 +void bfd_emul_set_commonpagesize (const char *, bfd_vma);
35201 +
35202 +char *bfd_demangle (bfd *, const char *, int);
35203 +
35204 +/* Extracted from archive.c. */
35205 +symindex bfd_get_next_mapent
35206 + (bfd *abfd, symindex previous, carsym **sym);
35207 +
35208 +bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
35209 +
35210 +bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
35211 +
35212 +/* Extracted from corefile.c. */
35213 +const char *bfd_core_file_failing_command (bfd *abfd);
35214 +
35215 +int bfd_core_file_failing_signal (bfd *abfd);
35216 +
35217 +bfd_boolean core_file_matches_executable_p
35218 + (bfd *core_bfd, bfd *exec_bfd);
35219 +
35220 +bfd_boolean generic_core_file_matches_executable_p
35221 + (bfd *core_bfd, bfd *exec_bfd);
35222 +
35223 +/* Extracted from targets.c. */
35224 +#define BFD_SEND(bfd, message, arglist) \
35225 + ((*((bfd)->xvec->message)) arglist)
35226 +
35227 +#ifdef DEBUG_BFD_SEND
35228 +#undef BFD_SEND
35229 +#define BFD_SEND(bfd, message, arglist) \
35230 + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
35231 + ((*((bfd)->xvec->message)) arglist) : \
35232 + (bfd_assert (__FILE__,__LINE__), NULL))
35233 +#endif
35234 +#define BFD_SEND_FMT(bfd, message, arglist) \
35235 + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
35236 +
35237 +#ifdef DEBUG_BFD_SEND
35238 +#undef BFD_SEND_FMT
35239 +#define BFD_SEND_FMT(bfd, message, arglist) \
35240 + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
35241 + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
35242 + (bfd_assert (__FILE__,__LINE__), NULL))
35243 +#endif
35244 +
35245 +enum bfd_flavour
35246 +{
35247 + bfd_target_unknown_flavour,
35248 + bfd_target_aout_flavour,
35249 + bfd_target_coff_flavour,
35250 + bfd_target_ecoff_flavour,
35251 + bfd_target_xcoff_flavour,
35252 + bfd_target_elf_flavour,
35253 + bfd_target_ieee_flavour,
35254 + bfd_target_nlm_flavour,
35255 + bfd_target_oasys_flavour,
35256 + bfd_target_tekhex_flavour,
35257 + bfd_target_srec_flavour,
35258 + bfd_target_ihex_flavour,
35259 + bfd_target_som_flavour,
35260 + bfd_target_os9k_flavour,
35261 + bfd_target_versados_flavour,
35262 + bfd_target_msdos_flavour,
35263 + bfd_target_ovax_flavour,
35264 + bfd_target_evax_flavour,
35265 + bfd_target_mmo_flavour,
35266 + bfd_target_mach_o_flavour,
35267 + bfd_target_pef_flavour,
35268 + bfd_target_pef_xlib_flavour,
35269 + bfd_target_sym_flavour
35270 +};
35271 +
35272 +enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
35273 +
35274 +/* Forward declaration. */
35275 +typedef struct bfd_link_info _bfd_link_info;
35276 +
35277 +typedef struct bfd_target
35278 +{
35279 + /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
35280 + char *name;
35281 +
35282 + /* The "flavour" of a back end is a general indication about
35283 + the contents of a file. */
35284 + enum bfd_flavour flavour;
35285 +
35286 + /* The order of bytes within the data area of a file. */
35287 + enum bfd_endian byteorder;
35288 +
35289 + /* The order of bytes within the header parts of a file. */
35290 + enum bfd_endian header_byteorder;
35291 +
35292 + /* A mask of all the flags which an executable may have set -
35293 + from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>. */
35294 + flagword object_flags;
35295 +
35296 + /* A mask of all the flags which a section may have set - from
35297 + the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>. */
35298 + flagword section_flags;
35299 +
35300 + /* The character normally found at the front of a symbol.
35301 + (if any), perhaps `_'. */
35302 + char symbol_leading_char;
35303 +
35304 + /* The pad character for file names within an archive header. */
35305 + char ar_pad_char;
35306 +
35307 + /* The maximum number of characters in an archive header. */
35308 + unsigned short ar_max_namelen;
35309 +
35310 + /* Entries for byte swapping for data. These are different from the
35311 + other entry points, since they don't take a BFD as the first argument.
35312 + Certain other handlers could do the same. */
35313 + bfd_uint64_t (*bfd_getx64) (const void *);
35314 + bfd_int64_t (*bfd_getx_signed_64) (const void *);
35315 + void (*bfd_putx64) (bfd_uint64_t, void *);
35316 + bfd_vma (*bfd_getx32) (const void *);
35317 + bfd_signed_vma (*bfd_getx_signed_32) (const void *);
35318 + void (*bfd_putx32) (bfd_vma, void *);
35319 + bfd_vma (*bfd_getx16) (const void *);
35320 + bfd_signed_vma (*bfd_getx_signed_16) (const void *);
35321 + void (*bfd_putx16) (bfd_vma, void *);
35322 +
35323 + /* Byte swapping for the headers. */
35324 + bfd_uint64_t (*bfd_h_getx64) (const void *);
35325 + bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
35326 + void (*bfd_h_putx64) (bfd_uint64_t, void *);
35327 + bfd_vma (*bfd_h_getx32) (const void *);
35328 + bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
35329 + void (*bfd_h_putx32) (bfd_vma, void *);
35330 + bfd_vma (*bfd_h_getx16) (const void *);
35331 + bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
35332 + void (*bfd_h_putx16) (bfd_vma, void *);
35333 +
35334 + /* Format dependent routines: these are vectors of entry points
35335 + within the target vector structure, one for each format to check. */
35336 +
35337 + /* Check the format of a file being read. Return a <<bfd_target *>> or zero. */
35338 + const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
35339 +
35340 + /* Set the format of a file being written. */
35341 + bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
35342 +
35343 + /* Write cached information into a file being written, at <<bfd_close>>. */
35344 + bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
35345 +
35346 +
35347 + /* Generic entry points. */
35348 +#define BFD_JUMP_TABLE_GENERIC(NAME) \
35349 + NAME##_close_and_cleanup, \
35350 + NAME##_bfd_free_cached_info, \
35351 + NAME##_new_section_hook, \
35352 + NAME##_get_section_contents, \
35353 + NAME##_get_section_contents_in_window
35354 +
35355 + /* Called when the BFD is being closed to do any necessary cleanup. */
35356 + bfd_boolean (*_close_and_cleanup) (bfd *);
35357 + /* Ask the BFD to free all cached information. */
35358 + bfd_boolean (*_bfd_free_cached_info) (bfd *);
35359 + /* Called when a new section is created. */
35360 + bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
35361 + /* Read the contents of a section. */
35362 + bfd_boolean (*_bfd_get_section_contents)
35363 + (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
35364 + bfd_boolean (*_bfd_get_section_contents_in_window)
35365 + (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
35366 +
35367 + /* Entry points to copy private data. */
35368 +#define BFD_JUMP_TABLE_COPY(NAME) \
35369 + NAME##_bfd_copy_private_bfd_data, \
35370 + NAME##_bfd_merge_private_bfd_data, \
35371 + _bfd_generic_init_private_section_data, \
35372 + NAME##_bfd_copy_private_section_data, \
35373 + NAME##_bfd_copy_private_symbol_data, \
35374 + NAME##_bfd_copy_private_header_data, \
35375 + NAME##_bfd_set_private_flags, \
35376 + NAME##_bfd_print_private_bfd_data
35377 +
35378 + /* Called to copy BFD general private data from one object file
35379 + to another. */
35380 + bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
35381 + /* Called to merge BFD general private data from one object file
35382 + to a common output file when linking. */
35383 + bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
35384 + /* Called to initialize BFD private section data from one object file
35385 + to another. */
35386 +#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
35387 + BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
35388 + bfd_boolean (*_bfd_init_private_section_data)
35389 + (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
35390 + /* Called to copy BFD private section data from one object file
35391 + to another. */
35392 + bfd_boolean (*_bfd_copy_private_section_data)
35393 + (bfd *, sec_ptr, bfd *, sec_ptr);
35394 + /* Called to copy BFD private symbol data from one symbol
35395 + to another. */
35396 + bfd_boolean (*_bfd_copy_private_symbol_data)
35397 + (bfd *, asymbol *, bfd *, asymbol *);
35398 + /* Called to copy BFD private header data from one object file
35399 + to another. */
35400 + bfd_boolean (*_bfd_copy_private_header_data)
35401 + (bfd *, bfd *);
35402 + /* Called to set private backend flags. */
35403 + bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
35404 +
35405 + /* Called to print private BFD data. */
35406 + bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
35407 +
35408 + /* Core file entry points. */
35409 +#define BFD_JUMP_TABLE_CORE(NAME) \
35410 + NAME##_core_file_failing_command, \
35411 + NAME##_core_file_failing_signal, \
35412 + NAME##_core_file_matches_executable_p
35413 +
35414 + char * (*_core_file_failing_command) (bfd *);
35415 + int (*_core_file_failing_signal) (bfd *);
35416 + bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
35417 +
35418 + /* Archive entry points. */
35419 +#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
35420 + NAME##_slurp_armap, \
35421 + NAME##_slurp_extended_name_table, \
35422 + NAME##_construct_extended_name_table, \
35423 + NAME##_truncate_arname, \
35424 + NAME##_write_armap, \
35425 + NAME##_read_ar_hdr, \
35426 + NAME##_openr_next_archived_file, \
35427 + NAME##_get_elt_at_index, \
35428 + NAME##_generic_stat_arch_elt, \
35429 + NAME##_update_armap_timestamp
35430 +
35431 + bfd_boolean (*_bfd_slurp_armap) (bfd *);
35432 + bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
35433 + bfd_boolean (*_bfd_construct_extended_name_table)
35434 + (bfd *, char **, bfd_size_type *, const char **);
35435 + void (*_bfd_truncate_arname) (bfd *, const char *, char *);
35436 + bfd_boolean (*write_armap)
35437 + (bfd *, unsigned int, struct orl *, unsigned int, int);
35438 + void * (*_bfd_read_ar_hdr_fn) (bfd *);
35439 + bfd * (*openr_next_archived_file) (bfd *, bfd *);
35440 +#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
35441 + bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
35442 + int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
35443 + bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
35444 +
35445 + /* Entry points used for symbols. */
35446 +#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
35447 + NAME##_get_symtab_upper_bound, \
35448 + NAME##_canonicalize_symtab, \
35449 + NAME##_make_empty_symbol, \
35450 + NAME##_print_symbol, \
35451 + NAME##_get_symbol_info, \
35452 + NAME##_bfd_is_local_label_name, \
35453 + NAME##_bfd_is_target_special_symbol, \
35454 + NAME##_get_lineno, \
35455 + NAME##_find_nearest_line, \
35456 + _bfd_generic_find_line, \
35457 + NAME##_find_inliner_info, \
35458 + NAME##_bfd_make_debug_symbol, \
35459 + NAME##_read_minisymbols, \
35460 + NAME##_minisymbol_to_symbol
35461 +
35462 + long (*_bfd_get_symtab_upper_bound) (bfd *);
35463 + long (*_bfd_canonicalize_symtab)
35464 + (bfd *, struct bfd_symbol **);
35465 + struct bfd_symbol *
35466 + (*_bfd_make_empty_symbol) (bfd *);
35467 + void (*_bfd_print_symbol)
35468 + (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
35469 +#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
35470 + void (*_bfd_get_symbol_info)
35471 + (bfd *, struct bfd_symbol *, symbol_info *);
35472 +#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
35473 + bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
35474 + bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
35475 + alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
35476 + bfd_boolean (*_bfd_find_nearest_line)
35477 + (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
35478 + const char **, const char **, unsigned int *);
35479 + bfd_boolean (*_bfd_find_line)
35480 + (bfd *, struct bfd_symbol **, struct bfd_symbol *,
35481 + const char **, unsigned int *);
35482 + bfd_boolean (*_bfd_find_inliner_info)
35483 + (bfd *, const char **, const char **, unsigned int *);
35484 + /* Back-door to allow format-aware applications to create debug symbols
35485 + while using BFD for everything else. Currently used by the assembler
35486 + when creating COFF files. */
35487 + asymbol * (*_bfd_make_debug_symbol)
35488 + (bfd *, void *, unsigned long size);
35489 +#define bfd_read_minisymbols(b, d, m, s) \
35490 + BFD_SEND (b, _read_minisymbols, (b, d, m, s))
35491 + long (*_read_minisymbols)
35492 + (bfd *, bfd_boolean, void **, unsigned int *);
35493 +#define bfd_minisymbol_to_symbol(b, d, m, f) \
35494 + BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
35495 + asymbol * (*_minisymbol_to_symbol)
35496 + (bfd *, bfd_boolean, const void *, asymbol *);
35497 +
35498 + /* Routines for relocs. */
35499 +#define BFD_JUMP_TABLE_RELOCS(NAME) \
35500 + NAME##_get_reloc_upper_bound, \
35501 + NAME##_canonicalize_reloc, \
35502 + NAME##_bfd_reloc_type_lookup, \
35503 + NAME##_bfd_reloc_name_lookup
35504 +
35505 + long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
35506 + long (*_bfd_canonicalize_reloc)
35507 + (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
35508 + /* See documentation on reloc types. */
35509 + reloc_howto_type *
35510 + (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
35511 + reloc_howto_type *
35512 + (*reloc_name_lookup) (bfd *, const char *);
35513 +
35514 +
35515 + /* Routines used when writing an object file. */
35516 +#define BFD_JUMP_TABLE_WRITE(NAME) \
35517 + NAME##_set_arch_mach, \
35518 + NAME##_set_section_contents
35519 +
35520 + bfd_boolean (*_bfd_set_arch_mach)
35521 + (bfd *, enum bfd_architecture, unsigned long);
35522 + bfd_boolean (*_bfd_set_section_contents)
35523 + (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
35524 +
35525 + /* Routines used by the linker. */
35526 +#define BFD_JUMP_TABLE_LINK(NAME) \
35527 + NAME##_sizeof_headers, \
35528 + NAME##_bfd_get_relocated_section_contents, \
35529 + NAME##_bfd_relax_section, \
35530 + NAME##_bfd_link_hash_table_create, \
35531 + NAME##_bfd_link_hash_table_free, \
35532 + NAME##_bfd_link_add_symbols, \
35533 + NAME##_bfd_link_just_syms, \
35534 + NAME##_bfd_final_link, \
35535 + NAME##_bfd_link_split_section, \
35536 + NAME##_bfd_gc_sections, \
35537 + NAME##_bfd_merge_sections, \
35538 + NAME##_bfd_is_group_section, \
35539 + NAME##_bfd_discard_group, \
35540 + NAME##_section_already_linked \
35541 +
35542 + int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
35543 + bfd_byte * (*_bfd_get_relocated_section_contents)
35544 + (bfd *, struct bfd_link_info *, struct bfd_link_order *,
35545 + bfd_byte *, bfd_boolean, struct bfd_symbol **);
35546 +
35547 + bfd_boolean (*_bfd_relax_section)
35548 + (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
35549 +
35550 + /* Create a hash table for the linker. Different backends store
35551 + different information in this table. */
35552 + struct bfd_link_hash_table *
35553 + (*_bfd_link_hash_table_create) (bfd *);
35554 +
35555 + /* Release the memory associated with the linker hash table. */
35556 + void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
35557 +
35558 + /* Add symbols from this object file into the hash table. */
35559 + bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
35560 +
35561 + /* Indicate that we are only retrieving symbol values from this section. */
35562 + void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
35563 +
35564 + /* Do a link based on the link_order structures attached to each
35565 + section of the BFD. */
35566 + bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
35567 +
35568 + /* Should this section be split up into smaller pieces during linking. */
35569 + bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
35570 +
35571 + /* Remove sections that are not referenced from the output. */
35572 + bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
35573 +
35574 + /* Attempt to merge SEC_MERGE sections. */
35575 + bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
35576 +
35577 + /* Is this section a member of a group? */
35578 + bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
35579 +
35580 + /* Discard members of a group. */
35581 + bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
35582 +
35583 + /* Check if SEC has been already linked during a reloceatable or
35584 + final link. */
35585 + void (*_section_already_linked) (bfd *, struct bfd_section *,
35586 + struct bfd_link_info *);
35587 +
35588 + /* Routines to handle dynamic symbols and relocs. */
35589 +#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
35590 + NAME##_get_dynamic_symtab_upper_bound, \
35591 + NAME##_canonicalize_dynamic_symtab, \
35592 + NAME##_get_synthetic_symtab, \
35593 + NAME##_get_dynamic_reloc_upper_bound, \
35594 + NAME##_canonicalize_dynamic_reloc
35595 +
35596 + /* Get the amount of memory required to hold the dynamic symbols. */
35597 + long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
35598 + /* Read in the dynamic symbols. */
35599 + long (*_bfd_canonicalize_dynamic_symtab)
35600 + (bfd *, struct bfd_symbol **);
35601 + /* Create synthetized symbols. */
35602 + long (*_bfd_get_synthetic_symtab)
35603 + (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
35604 + struct bfd_symbol **);
35605 + /* Get the amount of memory required to hold the dynamic relocs. */
35606 + long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
35607 + /* Read in the dynamic relocs. */
35608 + long (*_bfd_canonicalize_dynamic_reloc)
35609 + (bfd *, arelent **, struct bfd_symbol **);
35610 +
35611 + /* Opposite endian version of this target. */
35612 + const struct bfd_target * alternative_target;
35613 +
35614 + /* Data for use by back-end routines, which isn't
35615 + generic enough to belong in this structure. */
35616 + const void *backend_data;
35617 +
35618 +} bfd_target;
35619 +
35620 +bfd_boolean bfd_set_default_target (const char *name);
35621 +
35622 +const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
35623 +
35624 +const char ** bfd_target_list (void);
35625 +
35626 +const bfd_target *bfd_search_for_target
35627 + (int (*search_func) (const bfd_target *, void *),
35628 + void *);
35629 +
35630 +/* Extracted from format.c. */
35631 +bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
35632 +
35633 +bfd_boolean bfd_check_format_matches
35634 + (bfd *abfd, bfd_format format, char ***matching);
35635 +
35636 +bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
35637 +
35638 +const char *bfd_format_string (bfd_format format);
35639 +
35640 +/* Extracted from linker.c. */
35641 +bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
35642 +
35643 +#define bfd_link_split_section(abfd, sec) \
35644 + BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
35645 +
35646 +void bfd_section_already_linked (bfd *abfd, asection *sec,
35647 + struct bfd_link_info *info);
35648 +
35649 +#define bfd_section_already_linked(abfd, sec, info) \
35650 + BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
35651 +
35652 +/* Extracted from simple.c. */
35653 +bfd_byte *bfd_simple_get_relocated_section_contents
35654 + (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
35655 +
35656 +#ifdef __cplusplus
35657 +}
35658 +#endif
35659 +#endif
35660 --- /dev/null
35661 +++ b/bfd/bfd_stdint.h
35662 @@ -0,0 +1,47 @@
35663 +/* generated for gcc (GCC) 4.2.4 (Ubuntu 4.2.4-3ubuntu4) */
35664 +
35665 +#ifndef GCC_GENERATED_STDINT_H
35666 +#define GCC_GENERATED_STDINT_H 1
35667 +
35668 +#include <sys/types.h>
35669 +#include <stdint.h>
35670 +/* glibc uses these symbols as guards to prevent redefinitions. */
35671 +#ifdef __int8_t_defined
35672 +#define _INT8_T
35673 +#define _INT16_T
35674 +#define _INT32_T
35675 +#endif
35676 +#ifdef __uint32_t_defined
35677 +#define _UINT32_T
35678 +#endif
35679 +
35680 +
35681 +/* Some systems have guard macros to prevent redefinitions, define them. */
35682 +#ifndef _INT8_T
35683 +#define _INT8_T
35684 +#endif
35685 +#ifndef _INT16_T
35686 +#define _INT16_T
35687 +#endif
35688 +#ifndef _INT32_T
35689 +#define _INT32_T
35690 +#endif
35691 +#ifndef _UINT8_T
35692 +#define _UINT8_T
35693 +#endif
35694 +#ifndef _UINT16_T
35695 +#define _UINT16_T
35696 +#endif
35697 +#ifndef _UINT32_T
35698 +#define _UINT32_T
35699 +#endif
35700 +
35701 +/* system headers have good uint64_t and int64_t */
35702 +#ifndef _INT64_T
35703 +#define _INT64_T
35704 +#endif
35705 +#ifndef _UINT64_T
35706 +#define _UINT64_T
35707 +#endif
35708 +
35709 +#endif /* GCC_GENERATED_STDINT_H */
35710 --- a/bfd/configure
35711 +++ b/bfd/configure
35712 @@ -19041,6 +19041,7 @@ do
35713 bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
35714 bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
35715 bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
35716 + bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
35717 bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
35718 bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
35719 bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
35720 --- /dev/null
35721 +++ b/bfd/doc/bfd.h
35722 @@ -0,0 +1,5493 @@
35723 +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
35724 + generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
35725 + "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
35726 + "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
35727 + "linker.c" and "simple.c".
35728 + Run "make headers" in your build bfd/ to regenerate. */
35729 +
35730 +/* Main header file for the bfd library -- portable access to object files.
35731 +
35732 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
35733 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
35734 + Free Software Foundation, Inc.
35735 +
35736 + Contributed by Cygnus Support.
35737 +
35738 + This file is part of BFD, the Binary File Descriptor library.
35739 +
35740 + This program is free software; you can redistribute it and/or modify
35741 + it under the terms of the GNU General Public License as published by
35742 + the Free Software Foundation; either version 3 of the License, or
35743 + (at your option) any later version.
35744 +
35745 + This program is distributed in the hope that it will be useful,
35746 + but WITHOUT ANY WARRANTY; without even the implied warranty of
35747 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35748 + GNU General Public License for more details.
35749 +
35750 + You should have received a copy of the GNU General Public License
35751 + along with this program; if not, write to the Free Software
35752 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
35753 +
35754 +#ifndef __BFD_H_SEEN__
35755 +#define __BFD_H_SEEN__
35756 +
35757 +#ifdef __cplusplus
35758 +extern "C" {
35759 +#endif
35760 +
35761 +#include "ansidecl.h"
35762 +#include "symcat.h"
35763 +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
35764 +#ifndef SABER
35765 +/* This hack is to avoid a problem with some strict ANSI C preprocessors.
35766 + The problem is, "32_" is not a valid preprocessing token, and we don't
35767 + want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will
35768 + cause the inner CONCAT2 macros to be evaluated first, producing
35769 + still-valid pp-tokens. Then the final concatenation can be done. */
35770 +#undef CONCAT4
35771 +#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
35772 +#endif
35773 +#endif
35774 +
35775 +/* This is a utility macro to handle the situation where the code
35776 + wants to place a constant string into the code, followed by a
35777 + comma and then the length of the string. Doing this by hand
35778 + is error prone, so using this macro is safer. The macro will
35779 + also safely handle the case where a NULL is passed as the arg. */
35780 +#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
35781 +/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
35782 + to create the arguments to another macro, since the preprocessor
35783 + will mis-count the number of arguments to the outer macro (by not
35784 + evaluating STRING_COMMA_LEN and so missing the comma). This is a
35785 + problem for example when trying to use STRING_COMMA_LEN to build
35786 + the arguments to the strncmp() macro. Hence this alternative
35787 + definition of strncmp is provided here.
35788 +
35789 + Note - these macros do NOT work if STR2 is not a constant string. */
35790 +#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
35791 + /* strcpy() can have a similar problem, but since we know we are
35792 + copying a constant string, we can use memcpy which will be faster
35793 + since there is no need to check for a NUL byte inside STR. We
35794 + can also save time if we do not need to copy the terminating NUL. */
35795 +#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
35796 +#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
35797 +
35798 +
35799 +/* The word size used by BFD on the host. This may be 64 with a 32
35800 + bit target if the host is 64 bit, or if other 64 bit targets have
35801 + been selected with --enable-targets, or if --enable-64-bit-bfd. */
35802 +#define BFD_ARCH_SIZE @wordsize@
35803 +
35804 +/* The word size of the default bfd target. */
35805 +#define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
35806 +
35807 +#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
35808 +#define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@
35809 +#define BFD_HOST_LONG_LONG @BFD_HOST_LONG_LONG@
35810 +#if @BFD_HOST_64_BIT_DEFINED@
35811 +#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
35812 +#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
35813 +typedef BFD_HOST_64_BIT bfd_int64_t;
35814 +typedef BFD_HOST_U_64_BIT bfd_uint64_t;
35815 +#endif
35816 +
35817 +#if BFD_ARCH_SIZE >= 64
35818 +#define BFD64
35819 +#endif
35820 +
35821 +#ifndef INLINE
35822 +#if __GNUC__ >= 2
35823 +#define INLINE __inline__
35824 +#else
35825 +#define INLINE
35826 +#endif
35827 +#endif
35828 +
35829 +/* Declaring a type wide enough to hold a host long and a host pointer. */
35830 +#define BFD_HOSTPTR_T @BFD_HOSTPTR_T@
35831 +typedef BFD_HOSTPTR_T bfd_hostptr_t;
35832 +
35833 +/* Forward declaration. */
35834 +typedef struct bfd bfd;
35835 +
35836 +/* Boolean type used in bfd. Too many systems define their own
35837 + versions of "boolean" for us to safely typedef a "boolean" of
35838 + our own. Using an enum for "bfd_boolean" has its own set of
35839 + problems, with strange looking casts required to avoid warnings
35840 + on some older compilers. Thus we just use an int.
35841 +
35842 + General rule: Functions which are bfd_boolean return TRUE on
35843 + success and FALSE on failure (unless they're a predicate). */
35844 +
35845 +typedef int bfd_boolean;
35846 +#undef FALSE
35847 +#undef TRUE
35848 +#define FALSE 0
35849 +#define TRUE 1
35850 +
35851 +#ifdef BFD64
35852 +
35853 +#ifndef BFD_HOST_64_BIT
35854 + #error No 64 bit integer type available
35855 +#endif /* ! defined (BFD_HOST_64_BIT) */
35856 +
35857 +typedef BFD_HOST_U_64_BIT bfd_vma;
35858 +typedef BFD_HOST_64_BIT bfd_signed_vma;
35859 +typedef BFD_HOST_U_64_BIT bfd_size_type;
35860 +typedef BFD_HOST_U_64_BIT symvalue;
35861 +
35862 +#ifndef fprintf_vma
35863 +#if BFD_HOST_64BIT_LONG
35864 +#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
35865 +#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
35866 +#elif BFD_HOST_64BIT_LONG_LONG
35867 +#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
35868 +#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
35869 +#else
35870 +#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
35871 +#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
35872 +#define fprintf_vma(s,x) \
35873 + fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
35874 +#define sprintf_vma(s,x) \
35875 + sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
35876 +#endif
35877 +#endif
35878 +
35879 +#else /* not BFD64 */
35880 +
35881 +/* Represent a target address. Also used as a generic unsigned type
35882 + which is guaranteed to be big enough to hold any arithmetic types
35883 + we need to deal with. */
35884 +typedef unsigned long bfd_vma;
35885 +
35886 +/* A generic signed type which is guaranteed to be big enough to hold any
35887 + arithmetic types we need to deal with. Can be assumed to be compatible
35888 + with bfd_vma in the same way that signed and unsigned ints are compatible
35889 + (as parameters, in assignment, etc). */
35890 +typedef long bfd_signed_vma;
35891 +
35892 +typedef unsigned long symvalue;
35893 +typedef unsigned long bfd_size_type;
35894 +
35895 +/* Print a bfd_vma x on stream s. */
35896 +#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
35897 +#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
35898 +
35899 +#endif /* not BFD64 */
35900 +
35901 +#define HALF_BFD_SIZE_TYPE \
35902 + (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
35903 +
35904 +#ifndef BFD_HOST_64_BIT
35905 +/* Fall back on a 32 bit type. The idea is to make these types always
35906 + available for function return types, but in the case that
35907 + BFD_HOST_64_BIT is undefined such a function should abort or
35908 + otherwise signal an error. */
35909 +typedef bfd_signed_vma bfd_int64_t;
35910 +typedef bfd_vma bfd_uint64_t;
35911 +#endif
35912 +
35913 +/* An offset into a file. BFD always uses the largest possible offset
35914 + based on the build time availability of fseek, fseeko, or fseeko64. */
35915 +typedef @bfd_file_ptr@ file_ptr;
35916 +typedef unsigned @bfd_file_ptr@ ufile_ptr;
35917 +
35918 +extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
35919 +extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
35920 +
35921 +#define printf_vma(x) fprintf_vma(stdout,x)
35922 +#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
35923 +
35924 +typedef unsigned int flagword; /* 32 bits of flags */
35925 +typedef unsigned char bfd_byte;
35926 +\f
35927 +/* File formats. */
35928 +
35929 +typedef enum bfd_format
35930 +{
35931 + bfd_unknown = 0, /* File format is unknown. */
35932 + bfd_object, /* Linker/assembler/compiler output. */
35933 + bfd_archive, /* Object archive file. */
35934 + bfd_core, /* Core dump. */
35935 + bfd_type_end /* Marks the end; don't use it! */
35936 +}
35937 +bfd_format;
35938 +
35939 +/* Values that may appear in the flags field of a BFD. These also
35940 + appear in the object_flags field of the bfd_target structure, where
35941 + they indicate the set of flags used by that backend (not all flags
35942 + are meaningful for all object file formats) (FIXME: at the moment,
35943 + the object_flags values have mostly just been copied from backend
35944 + to another, and are not necessarily correct). */
35945 +
35946 +/* No flags. */
35947 +#define BFD_NO_FLAGS 0x00
35948 +
35949 +/* BFD contains relocation entries. */
35950 +#define HAS_RELOC 0x01
35951 +
35952 +/* BFD is directly executable. */
35953 +#define EXEC_P 0x02
35954 +
35955 +/* BFD has line number information (basically used for F_LNNO in a
35956 + COFF header). */
35957 +#define HAS_LINENO 0x04
35958 +
35959 +/* BFD has debugging information. */
35960 +#define HAS_DEBUG 0x08
35961 +
35962 +/* BFD has symbols. */
35963 +#define HAS_SYMS 0x10
35964 +
35965 +/* BFD has local symbols (basically used for F_LSYMS in a COFF
35966 + header). */
35967 +#define HAS_LOCALS 0x20
35968 +
35969 +/* BFD is a dynamic object. */
35970 +#define DYNAMIC 0x40
35971 +
35972 +/* Text section is write protected (if D_PAGED is not set, this is
35973 + like an a.out NMAGIC file) (the linker sets this by default, but
35974 + clears it for -r or -N). */
35975 +#define WP_TEXT 0x80
35976 +
35977 +/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
35978 + linker sets this by default, but clears it for -r or -n or -N). */
35979 +#define D_PAGED 0x100
35980 +
35981 +/* BFD is relaxable (this means that bfd_relax_section may be able to
35982 + do something) (sometimes bfd_relax_section can do something even if
35983 + this is not set). */
35984 +#define BFD_IS_RELAXABLE 0x200
35985 +
35986 +/* This may be set before writing out a BFD to request using a
35987 + traditional format. For example, this is used to request that when
35988 + writing out an a.out object the symbols not be hashed to eliminate
35989 + duplicates. */
35990 +#define BFD_TRADITIONAL_FORMAT 0x400
35991 +
35992 +/* This flag indicates that the BFD contents are actually cached in
35993 + memory. If this is set, iostream points to a bfd_in_memory struct. */
35994 +#define BFD_IN_MEMORY 0x800
35995 +
35996 +/* The sections in this BFD specify a memory page. */
35997 +#define HAS_LOAD_PAGE 0x1000
35998 +
35999 +/* This BFD has been created by the linker and doesn't correspond
36000 + to any input file. */
36001 +#define BFD_LINKER_CREATED 0x2000
36002 +\f
36003 +/* Symbols and relocation. */
36004 +
36005 +/* A count of carsyms (canonical archive symbols). */
36006 +typedef unsigned long symindex;
36007 +
36008 +/* How to perform a relocation. */
36009 +typedef const struct reloc_howto_struct reloc_howto_type;
36010 +
36011 +#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
36012 +
36013 +/* General purpose part of a symbol X;
36014 + target specific parts are in libcoff.h, libaout.h, etc. */
36015 +
36016 +#define bfd_get_section(x) ((x)->section)
36017 +#define bfd_get_output_section(x) ((x)->section->output_section)
36018 +#define bfd_set_section(x,y) ((x)->section) = (y)
36019 +#define bfd_asymbol_base(x) ((x)->section->vma)
36020 +#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
36021 +#define bfd_asymbol_name(x) ((x)->name)
36022 +/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
36023 +#define bfd_asymbol_bfd(x) ((x)->the_bfd)
36024 +#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
36025 +
36026 +/* A canonical archive symbol. */
36027 +/* This is a type pun with struct ranlib on purpose! */
36028 +typedef struct carsym
36029 +{
36030 + char *name;
36031 + file_ptr file_offset; /* Look here to find the file. */
36032 +}
36033 +carsym; /* To make these you call a carsymogen. */
36034 +
36035 +/* Used in generating armaps (archive tables of contents).
36036 + Perhaps just a forward definition would do? */
36037 +struct orl /* Output ranlib. */
36038 +{
36039 + char **name; /* Symbol name. */
36040 + union
36041 + {
36042 + file_ptr pos;
36043 + bfd *abfd;
36044 + } u; /* bfd* or file position. */
36045 + int namidx; /* Index into string table. */
36046 +};
36047 +\f
36048 +/* Linenumber stuff. */
36049 +typedef struct lineno_cache_entry
36050 +{
36051 + unsigned int line_number; /* Linenumber from start of function. */
36052 + union
36053 + {
36054 + struct bfd_symbol *sym; /* Function name. */
36055 + bfd_vma offset; /* Offset into section. */
36056 + } u;
36057 +}
36058 +alent;
36059 +\f
36060 +/* Object and core file sections. */
36061 +
36062 +#define align_power(addr, align) \
36063 + (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
36064 +
36065 +typedef struct bfd_section *sec_ptr;
36066 +
36067 +#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
36068 +#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
36069 +#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
36070 +#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
36071 +#define bfd_section_name(bfd, ptr) ((ptr)->name)
36072 +#define bfd_section_size(bfd, ptr) ((ptr)->size)
36073 +#define bfd_get_section_size(ptr) ((ptr)->size)
36074 +#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
36075 +#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
36076 +#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
36077 +#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
36078 +#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
36079 +
36080 +#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
36081 +
36082 +#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
36083 +#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
36084 +#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
36085 +/* Find the address one past the end of SEC. */
36086 +#define bfd_get_section_limit(bfd, sec) \
36087 + (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
36088 + / bfd_octets_per_byte (bfd))
36089 +
36090 +/* Return TRUE if section has been discarded. */
36091 +#define elf_discarded_section(sec) \
36092 + (!bfd_is_abs_section (sec) \
36093 + && bfd_is_abs_section ((sec)->output_section) \
36094 + && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \
36095 + && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
36096 +
36097 +/* Forward define. */
36098 +struct stat;
36099 +\f
36100 +typedef enum bfd_print_symbol
36101 +{
36102 + bfd_print_symbol_name,
36103 + bfd_print_symbol_more,
36104 + bfd_print_symbol_all
36105 +} bfd_print_symbol_type;
36106 +
36107 +/* Information about a symbol that nm needs. */
36108 +
36109 +typedef struct _symbol_info
36110 +{
36111 + symvalue value;
36112 + char type;
36113 + const char *name; /* Symbol name. */
36114 + unsigned char stab_type; /* Stab type. */
36115 + char stab_other; /* Stab other. */
36116 + short stab_desc; /* Stab desc. */
36117 + const char *stab_name; /* String for stab type. */
36118 +} symbol_info;
36119 +
36120 +/* Get the name of a stabs type code. */
36121 +
36122 +extern const char *bfd_get_stab_name (int);
36123 +\f
36124 +/* Hash table routines. There is no way to free up a hash table. */
36125 +
36126 +/* An element in the hash table. Most uses will actually use a larger
36127 + structure, and an instance of this will be the first field. */
36128 +
36129 +struct bfd_hash_entry
36130 +{
36131 + /* Next entry for this hash code. */
36132 + struct bfd_hash_entry *next;
36133 + /* String being hashed. */
36134 + const char *string;
36135 + /* Hash code. This is the full hash code, not the index into the
36136 + table. */
36137 + unsigned long hash;
36138 +};
36139 +
36140 +/* A hash table. */
36141 +
36142 +struct bfd_hash_table
36143 +{
36144 + /* The hash array. */
36145 + struct bfd_hash_entry **table;
36146 + /* A function used to create new elements in the hash table. The
36147 + first entry is itself a pointer to an element. When this
36148 + function is first invoked, this pointer will be NULL. However,
36149 + having the pointer permits a hierarchy of method functions to be
36150 + built each of which calls the function in the superclass. Thus
36151 + each function should be written to allocate a new block of memory
36152 + only if the argument is NULL. */
36153 + struct bfd_hash_entry *(*newfunc)
36154 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
36155 + /* An objalloc for this hash table. This is a struct objalloc *,
36156 + but we use void * to avoid requiring the inclusion of objalloc.h. */
36157 + void *memory;
36158 + /* The number of slots in the hash table. */
36159 + unsigned int size;
36160 + /* The number of entries in the hash table. */
36161 + unsigned int count;
36162 + /* The size of elements. */
36163 + unsigned int entsize;
36164 + /* If non-zero, don't grow the hash table. */
36165 + unsigned int frozen:1;
36166 +};
36167 +
36168 +/* Initialize a hash table. */
36169 +extern bfd_boolean bfd_hash_table_init
36170 + (struct bfd_hash_table *,
36171 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
36172 + struct bfd_hash_table *,
36173 + const char *),
36174 + unsigned int);
36175 +
36176 +/* Initialize a hash table specifying a size. */
36177 +extern bfd_boolean bfd_hash_table_init_n
36178 + (struct bfd_hash_table *,
36179 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
36180 + struct bfd_hash_table *,
36181 + const char *),
36182 + unsigned int, unsigned int);
36183 +
36184 +/* Free up a hash table. */
36185 +extern void bfd_hash_table_free
36186 + (struct bfd_hash_table *);
36187 +
36188 +/* Look up a string in a hash table. If CREATE is TRUE, a new entry
36189 + will be created for this string if one does not already exist. The
36190 + COPY argument must be TRUE if this routine should copy the string
36191 + into newly allocated memory when adding an entry. */
36192 +extern struct bfd_hash_entry *bfd_hash_lookup
36193 + (struct bfd_hash_table *, const char *, bfd_boolean create,
36194 + bfd_boolean copy);
36195 +
36196 +/* Replace an entry in a hash table. */
36197 +extern void bfd_hash_replace
36198 + (struct bfd_hash_table *, struct bfd_hash_entry *old,
36199 + struct bfd_hash_entry *nw);
36200 +
36201 +/* Base method for creating a hash table entry. */
36202 +extern struct bfd_hash_entry *bfd_hash_newfunc
36203 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
36204 +
36205 +/* Grab some space for a hash table entry. */
36206 +extern void *bfd_hash_allocate
36207 + (struct bfd_hash_table *, unsigned int);
36208 +
36209 +/* Traverse a hash table in a random order, calling a function on each
36210 + element. If the function returns FALSE, the traversal stops. The
36211 + INFO argument is passed to the function. */
36212 +extern void bfd_hash_traverse
36213 + (struct bfd_hash_table *,
36214 + bfd_boolean (*) (struct bfd_hash_entry *, void *),
36215 + void *info);
36216 +
36217 +/* Allows the default size of a hash table to be configured. New hash
36218 + tables allocated using bfd_hash_table_init will be created with
36219 + this size. */
36220 +extern void bfd_hash_set_default_size (bfd_size_type);
36221 +
36222 +/* This structure is used to keep track of stabs in sections
36223 + information while linking. */
36224 +
36225 +struct stab_info
36226 +{
36227 + /* A hash table used to hold stabs strings. */
36228 + struct bfd_strtab_hash *strings;
36229 + /* The header file hash table. */
36230 + struct bfd_hash_table includes;
36231 + /* The first .stabstr section. */
36232 + struct bfd_section *stabstr;
36233 +};
36234 +
36235 +#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
36236 +
36237 +/* User program access to BFD facilities. */
36238 +
36239 +/* Direct I/O routines, for programs which know more about the object
36240 + file than BFD does. Use higher level routines if possible. */
36241 +
36242 +extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
36243 +extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
36244 +extern int bfd_seek (bfd *, file_ptr, int);
36245 +extern file_ptr bfd_tell (bfd *);
36246 +extern int bfd_flush (bfd *);
36247 +extern int bfd_stat (bfd *, struct stat *);
36248 +
36249 +/* Deprecated old routines. */
36250 +#if __GNUC__
36251 +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
36252 + (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
36253 + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
36254 +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
36255 + (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
36256 + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
36257 +#else
36258 +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
36259 + (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
36260 + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
36261 +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
36262 + (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
36263 + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
36264 +#endif
36265 +extern void warn_deprecated (const char *, const char *, int, const char *);
36266 +
36267 +/* Cast from const char * to char * so that caller can assign to
36268 + a char * without a warning. */
36269 +#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
36270 +#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
36271 +#define bfd_get_format(abfd) ((abfd)->format)
36272 +#define bfd_get_target(abfd) ((abfd)->xvec->name)
36273 +#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
36274 +#define bfd_family_coff(abfd) \
36275 + (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
36276 + bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
36277 +#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
36278 +#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
36279 +#define bfd_header_big_endian(abfd) \
36280 + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
36281 +#define bfd_header_little_endian(abfd) \
36282 + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
36283 +#define bfd_get_file_flags(abfd) ((abfd)->flags)
36284 +#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
36285 +#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
36286 +#define bfd_my_archive(abfd) ((abfd)->my_archive)
36287 +#define bfd_has_map(abfd) ((abfd)->has_armap)
36288 +
36289 +#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
36290 +#define bfd_usrdata(abfd) ((abfd)->usrdata)
36291 +
36292 +#define bfd_get_start_address(abfd) ((abfd)->start_address)
36293 +#define bfd_get_symcount(abfd) ((abfd)->symcount)
36294 +#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
36295 +#define bfd_count_sections(abfd) ((abfd)->section_count)
36296 +
36297 +#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
36298 +
36299 +#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
36300 +
36301 +#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
36302 +
36303 +extern bfd_boolean bfd_cache_close
36304 + (bfd *abfd);
36305 +/* NB: This declaration should match the autogenerated one in libbfd.h. */
36306 +
36307 +extern bfd_boolean bfd_cache_close_all (void);
36308 +
36309 +extern bfd_boolean bfd_record_phdr
36310 + (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
36311 + bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
36312 +
36313 +/* Byte swapping routines. */
36314 +
36315 +bfd_uint64_t bfd_getb64 (const void *);
36316 +bfd_uint64_t bfd_getl64 (const void *);
36317 +bfd_int64_t bfd_getb_signed_64 (const void *);
36318 +bfd_int64_t bfd_getl_signed_64 (const void *);
36319 +bfd_vma bfd_getb32 (const void *);
36320 +bfd_vma bfd_getl32 (const void *);
36321 +bfd_signed_vma bfd_getb_signed_32 (const void *);
36322 +bfd_signed_vma bfd_getl_signed_32 (const void *);
36323 +bfd_vma bfd_getb16 (const void *);
36324 +bfd_vma bfd_getl16 (const void *);
36325 +bfd_signed_vma bfd_getb_signed_16 (const void *);
36326 +bfd_signed_vma bfd_getl_signed_16 (const void *);
36327 +void bfd_putb64 (bfd_uint64_t, void *);
36328 +void bfd_putl64 (bfd_uint64_t, void *);
36329 +void bfd_putb32 (bfd_vma, void *);
36330 +void bfd_putl32 (bfd_vma, void *);
36331 +void bfd_putb16 (bfd_vma, void *);
36332 +void bfd_putl16 (bfd_vma, void *);
36333 +
36334 +/* Byte swapping routines which take size and endiannes as arguments. */
36335 +
36336 +bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
36337 +void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
36338 +
36339 +extern bfd_boolean bfd_section_already_linked_table_init (void);
36340 +extern void bfd_section_already_linked_table_free (void);
36341 +\f
36342 +/* Externally visible ECOFF routines. */
36343 +
36344 +#if defined(__STDC__) || defined(ALMOST_STDC)
36345 +struct ecoff_debug_info;
36346 +struct ecoff_debug_swap;
36347 +struct ecoff_extr;
36348 +struct bfd_symbol;
36349 +struct bfd_link_info;
36350 +struct bfd_link_hash_entry;
36351 +struct bfd_elf_version_tree;
36352 +#endif
36353 +extern bfd_vma bfd_ecoff_get_gp_value
36354 + (bfd * abfd);
36355 +extern bfd_boolean bfd_ecoff_set_gp_value
36356 + (bfd *abfd, bfd_vma gp_value);
36357 +extern bfd_boolean bfd_ecoff_set_regmasks
36358 + (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
36359 + unsigned long *cprmask);
36360 +extern void *bfd_ecoff_debug_init
36361 + (bfd *output_bfd, struct ecoff_debug_info *output_debug,
36362 + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
36363 +extern void bfd_ecoff_debug_free
36364 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
36365 + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
36366 +extern bfd_boolean bfd_ecoff_debug_accumulate
36367 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
36368 + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
36369 + struct ecoff_debug_info *input_debug,
36370 + const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
36371 +extern bfd_boolean bfd_ecoff_debug_accumulate_other
36372 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
36373 + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
36374 + struct bfd_link_info *);
36375 +extern bfd_boolean bfd_ecoff_debug_externals
36376 + (bfd *abfd, struct ecoff_debug_info *debug,
36377 + const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
36378 + bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
36379 + void (*set_index) (struct bfd_symbol *, bfd_size_type));
36380 +extern bfd_boolean bfd_ecoff_debug_one_external
36381 + (bfd *abfd, struct ecoff_debug_info *debug,
36382 + const struct ecoff_debug_swap *swap, const char *name,
36383 + struct ecoff_extr *esym);
36384 +extern bfd_size_type bfd_ecoff_debug_size
36385 + (bfd *abfd, struct ecoff_debug_info *debug,
36386 + const struct ecoff_debug_swap *swap);
36387 +extern bfd_boolean bfd_ecoff_write_debug
36388 + (bfd *abfd, struct ecoff_debug_info *debug,
36389 + const struct ecoff_debug_swap *swap, file_ptr where);
36390 +extern bfd_boolean bfd_ecoff_write_accumulated_debug
36391 + (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
36392 + const struct ecoff_debug_swap *swap,
36393 + struct bfd_link_info *info, file_ptr where);
36394 +
36395 +/* Externally visible ELF routines. */
36396 +
36397 +struct bfd_link_needed_list
36398 +{
36399 + struct bfd_link_needed_list *next;
36400 + bfd *by;
36401 + const char *name;
36402 +};
36403 +
36404 +enum dynamic_lib_link_class {
36405 + DYN_NORMAL = 0,
36406 + DYN_AS_NEEDED = 1,
36407 + DYN_DT_NEEDED = 2,
36408 + DYN_NO_ADD_NEEDED = 4,
36409 + DYN_NO_NEEDED = 8
36410 +};
36411 +
36412 +enum notice_asneeded_action {
36413 + notice_as_needed,
36414 + notice_not_needed,
36415 + notice_needed
36416 +};
36417 +
36418 +extern bfd_boolean bfd_elf_record_link_assignment
36419 + (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
36420 + bfd_boolean);
36421 +extern struct bfd_link_needed_list *bfd_elf_get_needed_list
36422 + (bfd *, struct bfd_link_info *);
36423 +extern bfd_boolean bfd_elf_get_bfd_needed_list
36424 + (bfd *, struct bfd_link_needed_list **);
36425 +extern bfd_boolean bfd_elf_size_dynamic_sections
36426 + (bfd *, const char *, const char *, const char *, const char * const *,
36427 + struct bfd_link_info *, struct bfd_section **,
36428 + struct bfd_elf_version_tree *);
36429 +extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
36430 + (bfd *, struct bfd_link_info *);
36431 +extern void bfd_elf_set_dt_needed_name
36432 + (bfd *, const char *);
36433 +extern const char *bfd_elf_get_dt_soname
36434 + (bfd *);
36435 +extern void bfd_elf_set_dyn_lib_class
36436 + (bfd *, enum dynamic_lib_link_class);
36437 +extern int bfd_elf_get_dyn_lib_class
36438 + (bfd *);
36439 +extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
36440 + (bfd *, struct bfd_link_info *);
36441 +extern bfd_boolean bfd_elf_discard_info
36442 + (bfd *, struct bfd_link_info *);
36443 +extern unsigned int _bfd_elf_default_action_discarded
36444 + (struct bfd_section *);
36445 +
36446 +/* Return an upper bound on the number of bytes required to store a
36447 + copy of ABFD's program header table entries. Return -1 if an error
36448 + occurs; bfd_get_error will return an appropriate code. */
36449 +extern long bfd_get_elf_phdr_upper_bound
36450 + (bfd *abfd);
36451 +
36452 +/* Copy ABFD's program header table entries to *PHDRS. The entries
36453 + will be stored as an array of Elf_Internal_Phdr structures, as
36454 + defined in include/elf/internal.h. To find out how large the
36455 + buffer needs to be, call bfd_get_elf_phdr_upper_bound.
36456 +
36457 + Return the number of program header table entries read, or -1 if an
36458 + error occurs; bfd_get_error will return an appropriate code. */
36459 +extern int bfd_get_elf_phdrs
36460 + (bfd *abfd, void *phdrs);
36461 +
36462 +/* Create a new BFD as if by bfd_openr. Rather than opening a file,
36463 + reconstruct an ELF file by reading the segments out of remote memory
36464 + based on the ELF file header at EHDR_VMA and the ELF program headers it
36465 + points to. If not null, *LOADBASEP is filled in with the difference
36466 + between the VMAs from which the segments were read, and the VMAs the
36467 + file headers (and hence BFD's idea of each section's VMA) put them at.
36468 +
36469 + The function TARGET_READ_MEMORY is called to copy LEN bytes from the
36470 + remote memory at target address VMA into the local buffer at MYADDR; it
36471 + should return zero on success or an `errno' code on failure. TEMPL must
36472 + be a BFD for an ELF target with the word size and byte order found in
36473 + the remote memory. */
36474 +extern bfd *bfd_elf_bfd_from_remote_memory
36475 + (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
36476 + int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
36477 +
36478 +/* Return the arch_size field of an elf bfd, or -1 if not elf. */
36479 +extern int bfd_get_arch_size
36480 + (bfd *);
36481 +
36482 +/* Return TRUE if address "naturally" sign extends, or -1 if not elf. */
36483 +extern int bfd_get_sign_extend_vma
36484 + (bfd *);
36485 +
36486 +extern struct bfd_section *_bfd_elf_tls_setup
36487 + (bfd *, struct bfd_link_info *);
36488 +
36489 +extern void _bfd_fix_excluded_sec_syms
36490 + (bfd *, struct bfd_link_info *);
36491 +
36492 +extern unsigned bfd_m68k_mach_to_features (int);
36493 +
36494 +extern int bfd_m68k_features_to_mach (unsigned);
36495 +
36496 +extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
36497 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
36498 + char **);
36499 +
36500 +extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
36501 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
36502 + char **);
36503 +
36504 +/* SunOS shared library support routines for the linker. */
36505 +
36506 +extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
36507 + (bfd *, struct bfd_link_info *);
36508 +extern bfd_boolean bfd_sunos_record_link_assignment
36509 + (bfd *, struct bfd_link_info *, const char *);
36510 +extern bfd_boolean bfd_sunos_size_dynamic_sections
36511 + (bfd *, struct bfd_link_info *, struct bfd_section **,
36512 + struct bfd_section **, struct bfd_section **);
36513 +
36514 +/* Linux shared library support routines for the linker. */
36515 +
36516 +extern bfd_boolean bfd_i386linux_size_dynamic_sections
36517 + (bfd *, struct bfd_link_info *);
36518 +extern bfd_boolean bfd_m68klinux_size_dynamic_sections
36519 + (bfd *, struct bfd_link_info *);
36520 +extern bfd_boolean bfd_sparclinux_size_dynamic_sections
36521 + (bfd *, struct bfd_link_info *);
36522 +
36523 +/* mmap hacks */
36524 +
36525 +struct _bfd_window_internal;
36526 +typedef struct _bfd_window_internal bfd_window_internal;
36527 +
36528 +typedef struct _bfd_window
36529 +{
36530 + /* What the user asked for. */
36531 + void *data;
36532 + bfd_size_type size;
36533 + /* The actual window used by BFD. Small user-requested read-only
36534 + regions sharing a page may share a single window into the object
36535 + file. Read-write versions shouldn't until I've fixed things to
36536 + keep track of which portions have been claimed by the
36537 + application; don't want to give the same region back when the
36538 + application wants two writable copies! */
36539 + struct _bfd_window_internal *i;
36540 +}
36541 +bfd_window;
36542 +
36543 +extern void bfd_init_window
36544 + (bfd_window *);
36545 +extern void bfd_free_window
36546 + (bfd_window *);
36547 +extern bfd_boolean bfd_get_file_window
36548 + (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
36549 +
36550 +/* XCOFF support routines for the linker. */
36551 +
36552 +extern bfd_boolean bfd_xcoff_link_record_set
36553 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
36554 +extern bfd_boolean bfd_xcoff_import_symbol
36555 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
36556 + const char *, const char *, const char *, unsigned int);
36557 +extern bfd_boolean bfd_xcoff_export_symbol
36558 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
36559 +extern bfd_boolean bfd_xcoff_link_count_reloc
36560 + (bfd *, struct bfd_link_info *, const char *);
36561 +extern bfd_boolean bfd_xcoff_record_link_assignment
36562 + (bfd *, struct bfd_link_info *, const char *);
36563 +extern bfd_boolean bfd_xcoff_size_dynamic_sections
36564 + (bfd *, struct bfd_link_info *, const char *, const char *,
36565 + unsigned long, unsigned long, unsigned long, bfd_boolean,
36566 + int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
36567 +extern bfd_boolean bfd_xcoff_link_generate_rtinit
36568 + (bfd *, const char *, const char *, bfd_boolean);
36569 +
36570 +/* XCOFF support routines for ar. */
36571 +extern bfd_boolean bfd_xcoff_ar_archive_set_magic
36572 + (bfd *, char *);
36573 +
36574 +/* Externally visible COFF routines. */
36575 +
36576 +#if defined(__STDC__) || defined(ALMOST_STDC)
36577 +struct internal_syment;
36578 +union internal_auxent;
36579 +#endif
36580 +
36581 +extern bfd_boolean bfd_coff_get_syment
36582 + (bfd *, struct bfd_symbol *, struct internal_syment *);
36583 +
36584 +extern bfd_boolean bfd_coff_get_auxent
36585 + (bfd *, struct bfd_symbol *, int, union internal_auxent *);
36586 +
36587 +extern bfd_boolean bfd_coff_set_symbol_class
36588 + (bfd *, struct bfd_symbol *, unsigned int);
36589 +
36590 +extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
36591 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
36592 +
36593 +/* ARM VFP11 erratum workaround support. */
36594 +typedef enum
36595 +{
36596 + BFD_ARM_VFP11_FIX_DEFAULT,
36597 + BFD_ARM_VFP11_FIX_NONE,
36598 + BFD_ARM_VFP11_FIX_SCALAR,
36599 + BFD_ARM_VFP11_FIX_VECTOR
36600 +} bfd_arm_vfp11_fix;
36601 +
36602 +extern void bfd_elf32_arm_init_maps
36603 + (bfd *);
36604 +
36605 +extern void bfd_elf32_arm_set_vfp11_fix
36606 + (bfd *, struct bfd_link_info *);
36607 +
36608 +extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
36609 + (bfd *, struct bfd_link_info *);
36610 +
36611 +extern void bfd_elf32_arm_vfp11_fix_veneer_locations
36612 + (bfd *, struct bfd_link_info *);
36613 +
36614 +/* ARM Interworking support. Called from linker. */
36615 +extern bfd_boolean bfd_arm_allocate_interworking_sections
36616 + (struct bfd_link_info *);
36617 +
36618 +extern bfd_boolean bfd_arm_process_before_allocation
36619 + (bfd *, struct bfd_link_info *, int);
36620 +
36621 +extern bfd_boolean bfd_arm_get_bfd_for_interworking
36622 + (bfd *, struct bfd_link_info *);
36623 +
36624 +/* PE ARM Interworking support. Called from linker. */
36625 +extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
36626 + (struct bfd_link_info *);
36627 +
36628 +extern bfd_boolean bfd_arm_pe_process_before_allocation
36629 + (bfd *, struct bfd_link_info *, int);
36630 +
36631 +extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
36632 + (bfd *, struct bfd_link_info *);
36633 +
36634 +/* ELF ARM Interworking support. Called from linker. */
36635 +extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
36636 + (struct bfd_link_info *);
36637 +
36638 +extern bfd_boolean bfd_elf32_arm_process_before_allocation
36639 + (bfd *, struct bfd_link_info *);
36640 +
36641 +void bfd_elf32_arm_set_target_relocs
36642 + (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
36643 + int, int);
36644 +
36645 +extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
36646 + (bfd *, struct bfd_link_info *);
36647 +
36648 +extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
36649 + (bfd *, struct bfd_link_info *);
36650 +
36651 +/* ELF ARM mapping symbol support */
36652 +#define BFD_ARM_SPECIAL_SYM_TYPE_MAP (1 << 0)
36653 +#define BFD_ARM_SPECIAL_SYM_TYPE_TAG (1 << 1)
36654 +#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER (1 << 2)
36655 +#define BFD_ARM_SPECIAL_SYM_TYPE_ANY (~0)
36656 +extern bfd_boolean bfd_is_arm_special_symbol_name
36657 + (const char * name, int type);
36658 +
36659 +extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
36660 +
36661 +/* ARM Note section processing. */
36662 +extern bfd_boolean bfd_arm_merge_machines
36663 + (bfd *, bfd *);
36664 +
36665 +extern bfd_boolean bfd_arm_update_notes
36666 + (bfd *, const char *);
36667 +
36668 +extern unsigned int bfd_arm_get_mach_from_notes
36669 + (bfd *, const char *);
36670 +
36671 +/* TI COFF load page support. */
36672 +extern void bfd_ticoff_set_section_load_page
36673 + (struct bfd_section *, int);
36674 +
36675 +extern int bfd_ticoff_get_section_load_page
36676 + (struct bfd_section *);
36677 +
36678 +/* H8/300 functions. */
36679 +extern bfd_vma bfd_h8300_pad_address
36680 + (bfd *, bfd_vma);
36681 +
36682 +/* IA64 Itanium code generation. Called from linker. */
36683 +extern void bfd_elf32_ia64_after_parse
36684 + (int);
36685 +
36686 +extern void bfd_elf64_ia64_after_parse
36687 + (int);
36688 +
36689 +/* This structure is used for a comdat section, as in PE. A comdat
36690 + section is associated with a particular symbol. When the linker
36691 + sees a comdat section, it keeps only one of the sections with a
36692 + given name and associated with a given symbol. */
36693 +
36694 +struct coff_comdat_info
36695 +{
36696 + /* The name of the symbol associated with a comdat section. */
36697 + const char *name;
36698 +
36699 + /* The local symbol table index of the symbol associated with a
36700 + comdat section. This is only meaningful to the object file format
36701 + specific code; it is not an index into the list returned by
36702 + bfd_canonicalize_symtab. */
36703 + long symbol;
36704 +};
36705 +
36706 +extern struct coff_comdat_info *bfd_coff_get_comdat_section
36707 + (bfd *, struct bfd_section *);
36708 +
36709 +/* Extracted from init.c. */
36710 +void bfd_init (void);
36711 +
36712 +/* Extracted from opncls.c. */
36713 +bfd *bfd_fopen (const char *filename, const char *target,
36714 + const char *mode, int fd);
36715 +
36716 +bfd *bfd_openr (const char *filename, const char *target);
36717 +
36718 +bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
36719 +
36720 +bfd *bfd_openstreamr (const char *, const char *, void *);
36721 +
36722 +bfd *bfd_openr_iovec (const char *filename, const char *target,
36723 + void *(*open) (struct bfd *nbfd,
36724 + void *open_closure),
36725 + void *open_closure,
36726 + file_ptr (*pread) (struct bfd *nbfd,
36727 + void *stream,
36728 + void *buf,
36729 + file_ptr nbytes,
36730 + file_ptr offset),
36731 + int (*close) (struct bfd *nbfd,
36732 + void *stream),
36733 + int (*stat) (struct bfd *abfd,
36734 + void *stream,
36735 + struct stat *sb));
36736 +
36737 +bfd *bfd_openw (const char *filename, const char *target);
36738 +
36739 +bfd_boolean bfd_close (bfd *abfd);
36740 +
36741 +bfd_boolean bfd_close_all_done (bfd *);
36742 +
36743 +bfd *bfd_create (const char *filename, bfd *templ);
36744 +
36745 +bfd_boolean bfd_make_writable (bfd *abfd);
36746 +
36747 +bfd_boolean bfd_make_readable (bfd *abfd);
36748 +
36749 +unsigned long bfd_calc_gnu_debuglink_crc32
36750 + (unsigned long crc, const unsigned char *buf, bfd_size_type len);
36751 +
36752 +char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
36753 +
36754 +struct bfd_section *bfd_create_gnu_debuglink_section
36755 + (bfd *abfd, const char *filename);
36756 +
36757 +bfd_boolean bfd_fill_in_gnu_debuglink_section
36758 + (bfd *abfd, struct bfd_section *sect, const char *filename);
36759 +
36760 +/* Extracted from libbfd.c. */
36761 +
36762 +/* Byte swapping macros for user section data. */
36763 +
36764 +#define bfd_put_8(abfd, val, ptr) \
36765 + ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
36766 +#define bfd_put_signed_8 \
36767 + bfd_put_8
36768 +#define bfd_get_8(abfd, ptr) \
36769 + (*(unsigned char *) (ptr) & 0xff)
36770 +#define bfd_get_signed_8(abfd, ptr) \
36771 + (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
36772 +
36773 +#define bfd_put_16(abfd, val, ptr) \
36774 + BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
36775 +#define bfd_put_signed_16 \
36776 + bfd_put_16
36777 +#define bfd_get_16(abfd, ptr) \
36778 + BFD_SEND (abfd, bfd_getx16, (ptr))
36779 +#define bfd_get_signed_16(abfd, ptr) \
36780 + BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
36781 +
36782 +#define bfd_put_32(abfd, val, ptr) \
36783 + BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
36784 +#define bfd_put_signed_32 \
36785 + bfd_put_32
36786 +#define bfd_get_32(abfd, ptr) \
36787 + BFD_SEND (abfd, bfd_getx32, (ptr))
36788 +#define bfd_get_signed_32(abfd, ptr) \
36789 + BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
36790 +
36791 +#define bfd_put_64(abfd, val, ptr) \
36792 + BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
36793 +#define bfd_put_signed_64 \
36794 + bfd_put_64
36795 +#define bfd_get_64(abfd, ptr) \
36796 + BFD_SEND (abfd, bfd_getx64, (ptr))
36797 +#define bfd_get_signed_64(abfd, ptr) \
36798 + BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
36799 +
36800 +#define bfd_get(bits, abfd, ptr) \
36801 + ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
36802 + : (bits) == 16 ? bfd_get_16 (abfd, ptr) \
36803 + : (bits) == 32 ? bfd_get_32 (abfd, ptr) \
36804 + : (bits) == 64 ? bfd_get_64 (abfd, ptr) \
36805 + : (abort (), (bfd_vma) - 1))
36806 +
36807 +#define bfd_put(bits, abfd, val, ptr) \
36808 + ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
36809 + : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
36810 + : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
36811 + : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
36812 + : (abort (), (void) 0))
36813 +
36814 +
36815 +/* Byte swapping macros for file header data. */
36816 +
36817 +#define bfd_h_put_8(abfd, val, ptr) \
36818 + bfd_put_8 (abfd, val, ptr)
36819 +#define bfd_h_put_signed_8(abfd, val, ptr) \
36820 + bfd_put_8 (abfd, val, ptr)
36821 +#define bfd_h_get_8(abfd, ptr) \
36822 + bfd_get_8 (abfd, ptr)
36823 +#define bfd_h_get_signed_8(abfd, ptr) \
36824 + bfd_get_signed_8 (abfd, ptr)
36825 +
36826 +#define bfd_h_put_16(abfd, val, ptr) \
36827 + BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
36828 +#define bfd_h_put_signed_16 \
36829 + bfd_h_put_16
36830 +#define bfd_h_get_16(abfd, ptr) \
36831 + BFD_SEND (abfd, bfd_h_getx16, (ptr))
36832 +#define bfd_h_get_signed_16(abfd, ptr) \
36833 + BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
36834 +
36835 +#define bfd_h_put_32(abfd, val, ptr) \
36836 + BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
36837 +#define bfd_h_put_signed_32 \
36838 + bfd_h_put_32
36839 +#define bfd_h_get_32(abfd, ptr) \
36840 + BFD_SEND (abfd, bfd_h_getx32, (ptr))
36841 +#define bfd_h_get_signed_32(abfd, ptr) \
36842 + BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
36843 +
36844 +#define bfd_h_put_64(abfd, val, ptr) \
36845 + BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
36846 +#define bfd_h_put_signed_64 \
36847 + bfd_h_put_64
36848 +#define bfd_h_get_64(abfd, ptr) \
36849 + BFD_SEND (abfd, bfd_h_getx64, (ptr))
36850 +#define bfd_h_get_signed_64(abfd, ptr) \
36851 + BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
36852 +
36853 +/* Aliases for the above, which should eventually go away. */
36854 +
36855 +#define H_PUT_64 bfd_h_put_64
36856 +#define H_PUT_32 bfd_h_put_32
36857 +#define H_PUT_16 bfd_h_put_16
36858 +#define H_PUT_8 bfd_h_put_8
36859 +#define H_PUT_S64 bfd_h_put_signed_64
36860 +#define H_PUT_S32 bfd_h_put_signed_32
36861 +#define H_PUT_S16 bfd_h_put_signed_16
36862 +#define H_PUT_S8 bfd_h_put_signed_8
36863 +#define H_GET_64 bfd_h_get_64
36864 +#define H_GET_32 bfd_h_get_32
36865 +#define H_GET_16 bfd_h_get_16
36866 +#define H_GET_8 bfd_h_get_8
36867 +#define H_GET_S64 bfd_h_get_signed_64
36868 +#define H_GET_S32 bfd_h_get_signed_32
36869 +#define H_GET_S16 bfd_h_get_signed_16
36870 +#define H_GET_S8 bfd_h_get_signed_8
36871 +
36872 +
36873 +/* Extracted from bfdio.c. */
36874 +long bfd_get_mtime (bfd *abfd);
36875 +
36876 +file_ptr bfd_get_size (bfd *abfd);
36877 +
36878 +/* Extracted from bfdwin.c. */
36879 +/* Extracted from section.c. */
36880 +typedef struct bfd_section
36881 +{
36882 + /* The name of the section; the name isn't a copy, the pointer is
36883 + the same as that passed to bfd_make_section. */
36884 + const char *name;
36885 +
36886 + /* A unique sequence number. */
36887 + int id;
36888 +
36889 + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
36890 + int index;
36891 +
36892 + /* The next section in the list belonging to the BFD, or NULL. */
36893 + struct bfd_section *next;
36894 +
36895 + /* The previous section in the list belonging to the BFD, or NULL. */
36896 + struct bfd_section *prev;
36897 +
36898 + /* The field flags contains attributes of the section. Some
36899 + flags are read in from the object file, and some are
36900 + synthesized from other information. */
36901 + flagword flags;
36902 +
36903 +#define SEC_NO_FLAGS 0x000
36904 +
36905 + /* Tells the OS to allocate space for this section when loading.
36906 + This is clear for a section containing debug information only. */
36907 +#define SEC_ALLOC 0x001
36908 +
36909 + /* Tells the OS to load the section from the file when loading.
36910 + This is clear for a .bss section. */
36911 +#define SEC_LOAD 0x002
36912 +
36913 + /* The section contains data still to be relocated, so there is
36914 + some relocation information too. */
36915 +#define SEC_RELOC 0x004
36916 +
36917 + /* A signal to the OS that the section contains read only data. */
36918 +#define SEC_READONLY 0x008
36919 +
36920 + /* The section contains code only. */
36921 +#define SEC_CODE 0x010
36922 +
36923 + /* The section contains data only. */
36924 +#define SEC_DATA 0x020
36925 +
36926 + /* The section will reside in ROM. */
36927 +#define SEC_ROM 0x040
36928 +
36929 + /* The section contains constructor information. This section
36930 + type is used by the linker to create lists of constructors and
36931 + destructors used by <<g++>>. When a back end sees a symbol
36932 + which should be used in a constructor list, it creates a new
36933 + section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
36934 + the symbol to it, and builds a relocation. To build the lists
36935 + of constructors, all the linker has to do is catenate all the
36936 + sections called <<__CTOR_LIST__>> and relocate the data
36937 + contained within - exactly the operations it would peform on
36938 + standard data. */
36939 +#define SEC_CONSTRUCTOR 0x080
36940 +
36941 + /* The section has contents - a data section could be
36942 + <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
36943 + <<SEC_HAS_CONTENTS>> */
36944 +#define SEC_HAS_CONTENTS 0x100
36945 +
36946 + /* An instruction to the linker to not output the section
36947 + even if it has information which would normally be written. */
36948 +#define SEC_NEVER_LOAD 0x200
36949 +
36950 + /* The section contains thread local data. */
36951 +#define SEC_THREAD_LOCAL 0x400
36952 +
36953 + /* The section has GOT references. This flag is only for the
36954 + linker, and is currently only used by the elf32-hppa back end.
36955 + It will be set if global offset table references were detected
36956 + in this section, which indicate to the linker that the section
36957 + contains PIC code, and must be handled specially when doing a
36958 + static link. */
36959 +#define SEC_HAS_GOT_REF 0x800
36960 +
36961 + /* The section contains common symbols (symbols may be defined
36962 + multiple times, the value of a symbol is the amount of
36963 + space it requires, and the largest symbol value is the one
36964 + used). Most targets have exactly one of these (which we
36965 + translate to bfd_com_section_ptr), but ECOFF has two. */
36966 +#define SEC_IS_COMMON 0x1000
36967 +
36968 + /* The section contains only debugging information. For
36969 + example, this is set for ELF .debug and .stab sections.
36970 + strip tests this flag to see if a section can be
36971 + discarded. */
36972 +#define SEC_DEBUGGING 0x2000
36973 +
36974 + /* The contents of this section are held in memory pointed to
36975 + by the contents field. This is checked by bfd_get_section_contents,
36976 + and the data is retrieved from memory if appropriate. */
36977 +#define SEC_IN_MEMORY 0x4000
36978 +
36979 + /* The contents of this section are to be excluded by the
36980 + linker for executable and shared objects unless those
36981 + objects are to be further relocated. */
36982 +#define SEC_EXCLUDE 0x8000
36983 +
36984 + /* The contents of this section are to be sorted based on the sum of
36985 + the symbol and addend values specified by the associated relocation
36986 + entries. Entries without associated relocation entries will be
36987 + appended to the end of the section in an unspecified order. */
36988 +#define SEC_SORT_ENTRIES 0x10000
36989 +
36990 + /* When linking, duplicate sections of the same name should be
36991 + discarded, rather than being combined into a single section as
36992 + is usually done. This is similar to how common symbols are
36993 + handled. See SEC_LINK_DUPLICATES below. */
36994 +#define SEC_LINK_ONCE 0x20000
36995 +
36996 + /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
36997 + should handle duplicate sections. */
36998 +#define SEC_LINK_DUPLICATES 0x40000
36999 +
37000 + /* This value for SEC_LINK_DUPLICATES means that duplicate
37001 + sections with the same name should simply be discarded. */
37002 +#define SEC_LINK_DUPLICATES_DISCARD 0x0
37003 +
37004 + /* This value for SEC_LINK_DUPLICATES means that the linker
37005 + should warn if there are any duplicate sections, although
37006 + it should still only link one copy. */
37007 +#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
37008 +
37009 + /* This value for SEC_LINK_DUPLICATES means that the linker
37010 + should warn if any duplicate sections are a different size. */
37011 +#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
37012 +
37013 + /* This value for SEC_LINK_DUPLICATES means that the linker
37014 + should warn if any duplicate sections contain different
37015 + contents. */
37016 +#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
37017 + (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
37018 +
37019 + /* This section was created by the linker as part of dynamic
37020 + relocation or other arcane processing. It is skipped when
37021 + going through the first-pass output, trusting that someone
37022 + else up the line will take care of it later. */
37023 +#define SEC_LINKER_CREATED 0x200000
37024 +
37025 + /* This section should not be subject to garbage collection.
37026 + Also set to inform the linker that this section should not be
37027 + listed in the link map as discarded. */
37028 +#define SEC_KEEP 0x400000
37029 +
37030 + /* This section contains "short" data, and should be placed
37031 + "near" the GP. */
37032 +#define SEC_SMALL_DATA 0x800000
37033 +
37034 + /* Attempt to merge identical entities in the section.
37035 + Entity size is given in the entsize field. */
37036 +#define SEC_MERGE 0x1000000
37037 +
37038 + /* If given with SEC_MERGE, entities to merge are zero terminated
37039 + strings where entsize specifies character size instead of fixed
37040 + size entries. */
37041 +#define SEC_STRINGS 0x2000000
37042 +
37043 + /* This section contains data about section groups. */
37044 +#define SEC_GROUP 0x4000000
37045 +
37046 + /* The section is a COFF shared library section. This flag is
37047 + only for the linker. If this type of section appears in
37048 + the input file, the linker must copy it to the output file
37049 + without changing the vma or size. FIXME: Although this
37050 + was originally intended to be general, it really is COFF
37051 + specific (and the flag was renamed to indicate this). It
37052 + might be cleaner to have some more general mechanism to
37053 + allow the back end to control what the linker does with
37054 + sections. */
37055 +#define SEC_COFF_SHARED_LIBRARY 0x10000000
37056 +
37057 + /* This section contains data which may be shared with other
37058 + executables or shared objects. This is for COFF only. */
37059 +#define SEC_COFF_SHARED 0x20000000
37060 +
37061 + /* When a section with this flag is being linked, then if the size of
37062 + the input section is less than a page, it should not cross a page
37063 + boundary. If the size of the input section is one page or more,
37064 + it should be aligned on a page boundary. This is for TI
37065 + TMS320C54X only. */
37066 +#define SEC_TIC54X_BLOCK 0x40000000
37067 +
37068 + /* Conditionally link this section; do not link if there are no
37069 + references found to any symbol in the section. This is for TI
37070 + TMS320C54X only. */
37071 +#define SEC_TIC54X_CLINK 0x80000000
37072 +
37073 + /* End of section flags. */
37074 +
37075 + /* Some internal packed boolean fields. */
37076 +
37077 + /* See the vma field. */
37078 + unsigned int user_set_vma : 1;
37079 +
37080 + /* A mark flag used by some of the linker backends. */
37081 + unsigned int linker_mark : 1;
37082 +
37083 + /* Another mark flag used by some of the linker backends. Set for
37084 + output sections that have an input section. */
37085 + unsigned int linker_has_input : 1;
37086 +
37087 + /* Mark flags used by some linker backends for garbage collection. */
37088 + unsigned int gc_mark : 1;
37089 + unsigned int gc_mark_from_eh : 1;
37090 +
37091 + /* The following flags are used by the ELF linker. */
37092 +
37093 + /* Mark sections which have been allocated to segments. */
37094 + unsigned int segment_mark : 1;
37095 +
37096 + /* Type of sec_info information. */
37097 + unsigned int sec_info_type:3;
37098 +#define ELF_INFO_TYPE_NONE 0
37099 +#define ELF_INFO_TYPE_STABS 1
37100 +#define ELF_INFO_TYPE_MERGE 2
37101 +#define ELF_INFO_TYPE_EH_FRAME 3
37102 +#define ELF_INFO_TYPE_JUST_SYMS 4
37103 +
37104 + /* Nonzero if this section uses RELA relocations, rather than REL. */
37105 + unsigned int use_rela_p:1;
37106 +
37107 + /* Bits used by various backends. The generic code doesn't touch
37108 + these fields. */
37109 +
37110 + /* Nonzero if this section has TLS related relocations. */
37111 + unsigned int has_tls_reloc:1;
37112 +
37113 + /* Nonzero if this section has a gp reloc. */
37114 + unsigned int has_gp_reloc:1;
37115 +
37116 + /* Nonzero if this section needs the relax finalize pass. */
37117 + unsigned int need_finalize_relax:1;
37118 +
37119 + /* Whether relocations have been processed. */
37120 + unsigned int reloc_done : 1;
37121 +
37122 + /* End of internal packed boolean fields. */
37123 +
37124 + /* The virtual memory address of the section - where it will be
37125 + at run time. The symbols are relocated against this. The
37126 + user_set_vma flag is maintained by bfd; if it's not set, the
37127 + backend can assign addresses (for example, in <<a.out>>, where
37128 + the default address for <<.data>> is dependent on the specific
37129 + target and various flags). */
37130 + bfd_vma vma;
37131 +
37132 + /* The load address of the section - where it would be in a
37133 + rom image; really only used for writing section header
37134 + information. */
37135 + bfd_vma lma;
37136 +
37137 + /* The size of the section in octets, as it will be output.
37138 + Contains a value even if the section has no contents (e.g., the
37139 + size of <<.bss>>). */
37140 + bfd_size_type size;
37141 +
37142 + /* For input sections, the original size on disk of the section, in
37143 + octets. This field is used by the linker relaxation code. It is
37144 + currently only set for sections where the linker relaxation scheme
37145 + doesn't cache altered section and reloc contents (stabs, eh_frame,
37146 + SEC_MERGE, some coff relaxing targets), and thus the original size
37147 + needs to be kept to read the section multiple times.
37148 + For output sections, rawsize holds the section size calculated on
37149 + a previous linker relaxation pass. */
37150 + bfd_size_type rawsize;
37151 +
37152 + /* If this section is going to be output, then this value is the
37153 + offset in *bytes* into the output section of the first byte in the
37154 + input section (byte ==> smallest addressable unit on the
37155 + target). In most cases, if this was going to start at the
37156 + 100th octet (8-bit quantity) in the output section, this value
37157 + would be 100. However, if the target byte size is 16 bits
37158 + (bfd_octets_per_byte is "2"), this value would be 50. */
37159 + bfd_vma output_offset;
37160 +
37161 + /* The output section through which to map on output. */
37162 + struct bfd_section *output_section;
37163 +
37164 + /* The alignment requirement of the section, as an exponent of 2 -
37165 + e.g., 3 aligns to 2^3 (or 8). */
37166 + unsigned int alignment_power;
37167 +
37168 + /* If an input section, a pointer to a vector of relocation
37169 + records for the data in this section. */
37170 + struct reloc_cache_entry *relocation;
37171 +
37172 + /* If an output section, a pointer to a vector of pointers to
37173 + relocation records for the data in this section. */
37174 + struct reloc_cache_entry **orelocation;
37175 +
37176 + /* The number of relocation records in one of the above. */
37177 + unsigned reloc_count;
37178 +
37179 + /* Information below is back end specific - and not always used
37180 + or updated. */
37181 +
37182 + /* File position of section data. */
37183 + file_ptr filepos;
37184 +
37185 + /* File position of relocation info. */
37186 + file_ptr rel_filepos;
37187 +
37188 + /* File position of line data. */
37189 + file_ptr line_filepos;
37190 +
37191 + /* Pointer to data for applications. */
37192 + void *userdata;
37193 +
37194 + /* If the SEC_IN_MEMORY flag is set, this points to the actual
37195 + contents. */
37196 + unsigned char *contents;
37197 +
37198 + /* Attached line number information. */
37199 + alent *lineno;
37200 +
37201 + /* Number of line number records. */
37202 + unsigned int lineno_count;
37203 +
37204 + /* Entity size for merging purposes. */
37205 + unsigned int entsize;
37206 +
37207 + /* Points to the kept section if this section is a link-once section,
37208 + and is discarded. */
37209 + struct bfd_section *kept_section;
37210 +
37211 + /* When a section is being output, this value changes as more
37212 + linenumbers are written out. */
37213 + file_ptr moving_line_filepos;
37214 +
37215 + /* What the section number is in the target world. */
37216 + int target_index;
37217 +
37218 + void *used_by_bfd;
37219 +
37220 + /* If this is a constructor section then here is a list of the
37221 + relocations created to relocate items within it. */
37222 + struct relent_chain *constructor_chain;
37223 +
37224 + /* The BFD which owns the section. */
37225 + bfd *owner;
37226 +
37227 + /* A symbol which points at this section only. */
37228 + struct bfd_symbol *symbol;
37229 + struct bfd_symbol **symbol_ptr_ptr;
37230 +
37231 + /* Early in the link process, map_head and map_tail are used to build
37232 + a list of input sections attached to an output section. Later,
37233 + output sections use these fields for a list of bfd_link_order
37234 + structs. */
37235 + union {
37236 + struct bfd_link_order *link_order;
37237 + struct bfd_section *s;
37238 + } map_head, map_tail;
37239 +} asection;
37240 +
37241 +/* These sections are global, and are managed by BFD. The application
37242 + and target back end are not permitted to change the values in
37243 + these sections. New code should use the section_ptr macros rather
37244 + than referring directly to the const sections. The const sections
37245 + may eventually vanish. */
37246 +#define BFD_ABS_SECTION_NAME "*ABS*"
37247 +#define BFD_UND_SECTION_NAME "*UND*"
37248 +#define BFD_COM_SECTION_NAME "*COM*"
37249 +#define BFD_IND_SECTION_NAME "*IND*"
37250 +
37251 +/* The absolute section. */
37252 +extern asection bfd_abs_section;
37253 +#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
37254 +#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
37255 +/* Pointer to the undefined section. */
37256 +extern asection bfd_und_section;
37257 +#define bfd_und_section_ptr ((asection *) &bfd_und_section)
37258 +#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
37259 +/* Pointer to the common section. */
37260 +extern asection bfd_com_section;
37261 +#define bfd_com_section_ptr ((asection *) &bfd_com_section)
37262 +/* Pointer to the indirect section. */
37263 +extern asection bfd_ind_section;
37264 +#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
37265 +#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
37266 +
37267 +#define bfd_is_const_section(SEC) \
37268 + ( ((SEC) == bfd_abs_section_ptr) \
37269 + || ((SEC) == bfd_und_section_ptr) \
37270 + || ((SEC) == bfd_com_section_ptr) \
37271 + || ((SEC) == bfd_ind_section_ptr))
37272 +
37273 +/* Macros to handle insertion and deletion of a bfd's sections. These
37274 + only handle the list pointers, ie. do not adjust section_count,
37275 + target_index etc. */
37276 +#define bfd_section_list_remove(ABFD, S) \
37277 + do \
37278 + { \
37279 + asection *_s = S; \
37280 + asection *_next = _s->next; \
37281 + asection *_prev = _s->prev; \
37282 + if (_prev) \
37283 + _prev->next = _next; \
37284 + else \
37285 + (ABFD)->sections = _next; \
37286 + if (_next) \
37287 + _next->prev = _prev; \
37288 + else \
37289 + (ABFD)->section_last = _prev; \
37290 + } \
37291 + while (0)
37292 +#define bfd_section_list_append(ABFD, S) \
37293 + do \
37294 + { \
37295 + asection *_s = S; \
37296 + bfd *_abfd = ABFD; \
37297 + _s->next = NULL; \
37298 + if (_abfd->section_last) \
37299 + { \
37300 + _s->prev = _abfd->section_last; \
37301 + _abfd->section_last->next = _s; \
37302 + } \
37303 + else \
37304 + { \
37305 + _s->prev = NULL; \
37306 + _abfd->sections = _s; \
37307 + } \
37308 + _abfd->section_last = _s; \
37309 + } \
37310 + while (0)
37311 +#define bfd_section_list_prepend(ABFD, S) \
37312 + do \
37313 + { \
37314 + asection *_s = S; \
37315 + bfd *_abfd = ABFD; \
37316 + _s->prev = NULL; \
37317 + if (_abfd->sections) \
37318 + { \
37319 + _s->next = _abfd->sections; \
37320 + _abfd->sections->prev = _s; \
37321 + } \
37322 + else \
37323 + { \
37324 + _s->next = NULL; \
37325 + _abfd->section_last = _s; \
37326 + } \
37327 + _abfd->sections = _s; \
37328 + } \
37329 + while (0)
37330 +#define bfd_section_list_insert_after(ABFD, A, S) \
37331 + do \
37332 + { \
37333 + asection *_a = A; \
37334 + asection *_s = S; \
37335 + asection *_next = _a->next; \
37336 + _s->next = _next; \
37337 + _s->prev = _a; \
37338 + _a->next = _s; \
37339 + if (_next) \
37340 + _next->prev = _s; \
37341 + else \
37342 + (ABFD)->section_last = _s; \
37343 + } \
37344 + while (0)
37345 +#define bfd_section_list_insert_before(ABFD, B, S) \
37346 + do \
37347 + { \
37348 + asection *_b = B; \
37349 + asection *_s = S; \
37350 + asection *_prev = _b->prev; \
37351 + _s->prev = _prev; \
37352 + _s->next = _b; \
37353 + _b->prev = _s; \
37354 + if (_prev) \
37355 + _prev->next = _s; \
37356 + else \
37357 + (ABFD)->sections = _s; \
37358 + } \
37359 + while (0)
37360 +#define bfd_section_removed_from_list(ABFD, S) \
37361 + ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
37362 +
37363 +#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
37364 + /* name, id, index, next, prev, flags, user_set_vma, */ \
37365 + { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
37366 + \
37367 + /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \
37368 + 0, 0, 1, 0, \
37369 + \
37370 + /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \
37371 + 0, 0, 0, 0, \
37372 + \
37373 + /* has_gp_reloc, need_finalize_relax, reloc_done, */ \
37374 + 0, 0, 0, \
37375 + \
37376 + /* vma, lma, size, rawsize */ \
37377 + 0, 0, 0, 0, \
37378 + \
37379 + /* output_offset, output_section, alignment_power, */ \
37380 + 0, (struct bfd_section *) &SEC, 0, \
37381 + \
37382 + /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
37383 + NULL, NULL, 0, 0, 0, \
37384 + \
37385 + /* line_filepos, userdata, contents, lineno, lineno_count, */ \
37386 + 0, NULL, NULL, NULL, 0, \
37387 + \
37388 + /* entsize, kept_section, moving_line_filepos, */ \
37389 + 0, NULL, 0, \
37390 + \
37391 + /* target_index, used_by_bfd, constructor_chain, owner, */ \
37392 + 0, NULL, NULL, NULL, \
37393 + \
37394 + /* symbol, symbol_ptr_ptr, */ \
37395 + (struct bfd_symbol *) SYM, &SEC.symbol, \
37396 + \
37397 + /* map_head, map_tail */ \
37398 + { NULL }, { NULL } \
37399 + }
37400 +
37401 +void bfd_section_list_clear (bfd *);
37402 +
37403 +asection *bfd_get_section_by_name (bfd *abfd, const char *name);
37404 +
37405 +asection *bfd_get_section_by_name_if
37406 + (bfd *abfd,
37407 + const char *name,
37408 + bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
37409 + void *obj);
37410 +
37411 +char *bfd_get_unique_section_name
37412 + (bfd *abfd, const char *templat, int *count);
37413 +
37414 +asection *bfd_make_section_old_way (bfd *abfd, const char *name);
37415 +
37416 +asection *bfd_make_section_anyway_with_flags
37417 + (bfd *abfd, const char *name, flagword flags);
37418 +
37419 +asection *bfd_make_section_anyway (bfd *abfd, const char *name);
37420 +
37421 +asection *bfd_make_section_with_flags
37422 + (bfd *, const char *name, flagword flags);
37423 +
37424 +asection *bfd_make_section (bfd *, const char *name);
37425 +
37426 +bfd_boolean bfd_set_section_flags
37427 + (bfd *abfd, asection *sec, flagword flags);
37428 +
37429 +void bfd_map_over_sections
37430 + (bfd *abfd,
37431 + void (*func) (bfd *abfd, asection *sect, void *obj),
37432 + void *obj);
37433 +
37434 +asection *bfd_sections_find_if
37435 + (bfd *abfd,
37436 + bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
37437 + void *obj);
37438 +
37439 +bfd_boolean bfd_set_section_size
37440 + (bfd *abfd, asection *sec, bfd_size_type val);
37441 +
37442 +bfd_boolean bfd_set_section_contents
37443 + (bfd *abfd, asection *section, const void *data,
37444 + file_ptr offset, bfd_size_type count);
37445 +
37446 +bfd_boolean bfd_get_section_contents
37447 + (bfd *abfd, asection *section, void *location, file_ptr offset,
37448 + bfd_size_type count);
37449 +
37450 +bfd_boolean bfd_malloc_and_get_section
37451 + (bfd *abfd, asection *section, bfd_byte **buf);
37452 +
37453 +bfd_boolean bfd_copy_private_section_data
37454 + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
37455 +
37456 +#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
37457 + BFD_SEND (obfd, _bfd_copy_private_section_data, \
37458 + (ibfd, isection, obfd, osection))
37459 +bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
37460 +
37461 +bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
37462 +
37463 +/* Extracted from archures.c. */
37464 +enum bfd_architecture
37465 +{
37466 + bfd_arch_unknown, /* File arch not known. */
37467 + bfd_arch_obscure, /* Arch known, not one of these. */
37468 + bfd_arch_m68k, /* Motorola 68xxx */
37469 +#define bfd_mach_m68000 1
37470 +#define bfd_mach_m68008 2
37471 +#define bfd_mach_m68010 3
37472 +#define bfd_mach_m68020 4
37473 +#define bfd_mach_m68030 5
37474 +#define bfd_mach_m68040 6
37475 +#define bfd_mach_m68060 7
37476 +#define bfd_mach_cpu32 8
37477 +#define bfd_mach_fido 9
37478 +#define bfd_mach_mcf_isa_a_nodiv 10
37479 +#define bfd_mach_mcf_isa_a 11
37480 +#define bfd_mach_mcf_isa_a_mac 12
37481 +#define bfd_mach_mcf_isa_a_emac 13
37482 +#define bfd_mach_mcf_isa_aplus 14
37483 +#define bfd_mach_mcf_isa_aplus_mac 15
37484 +#define bfd_mach_mcf_isa_aplus_emac 16
37485 +#define bfd_mach_mcf_isa_b_nousp 17
37486 +#define bfd_mach_mcf_isa_b_nousp_mac 18
37487 +#define bfd_mach_mcf_isa_b_nousp_emac 19
37488 +#define bfd_mach_mcf_isa_b 20
37489 +#define bfd_mach_mcf_isa_b_mac 21
37490 +#define bfd_mach_mcf_isa_b_emac 22
37491 +#define bfd_mach_mcf_isa_b_float 23
37492 +#define bfd_mach_mcf_isa_b_float_mac 24
37493 +#define bfd_mach_mcf_isa_b_float_emac 25
37494 +#define bfd_mach_mcf_isa_c 26
37495 +#define bfd_mach_mcf_isa_c_mac 27
37496 +#define bfd_mach_mcf_isa_c_emac 28
37497 + bfd_arch_vax, /* DEC Vax */
37498 + bfd_arch_i960, /* Intel 960 */
37499 + /* The order of the following is important.
37500 + lower number indicates a machine type that
37501 + only accepts a subset of the instructions
37502 + available to machines with higher numbers.
37503 + The exception is the "ca", which is
37504 + incompatible with all other machines except
37505 + "core". */
37506 +
37507 +#define bfd_mach_i960_core 1
37508 +#define bfd_mach_i960_ka_sa 2
37509 +#define bfd_mach_i960_kb_sb 3
37510 +#define bfd_mach_i960_mc 4
37511 +#define bfd_mach_i960_xa 5
37512 +#define bfd_mach_i960_ca 6
37513 +#define bfd_mach_i960_jx 7
37514 +#define bfd_mach_i960_hx 8
37515 +
37516 + bfd_arch_or32, /* OpenRISC 32 */
37517 +
37518 + bfd_arch_sparc, /* SPARC */
37519 +#define bfd_mach_sparc 1
37520 +/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
37521 +#define bfd_mach_sparc_sparclet 2
37522 +#define bfd_mach_sparc_sparclite 3
37523 +#define bfd_mach_sparc_v8plus 4
37524 +#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
37525 +#define bfd_mach_sparc_sparclite_le 6
37526 +#define bfd_mach_sparc_v9 7
37527 +#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
37528 +#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
37529 +#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
37530 +/* Nonzero if MACH has the v9 instruction set. */
37531 +#define bfd_mach_sparc_v9_p(mach) \
37532 + ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
37533 + && (mach) != bfd_mach_sparc_sparclite_le)
37534 +/* Nonzero if MACH is a 64 bit sparc architecture. */
37535 +#define bfd_mach_sparc_64bit_p(mach) \
37536 + ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
37537 + bfd_arch_spu, /* PowerPC SPU */
37538 +#define bfd_mach_spu 256
37539 + bfd_arch_mips, /* MIPS Rxxxx */
37540 +#define bfd_mach_mips3000 3000
37541 +#define bfd_mach_mips3900 3900
37542 +#define bfd_mach_mips4000 4000
37543 +#define bfd_mach_mips4010 4010
37544 +#define bfd_mach_mips4100 4100
37545 +#define bfd_mach_mips4111 4111
37546 +#define bfd_mach_mips4120 4120
37547 +#define bfd_mach_mips4300 4300
37548 +#define bfd_mach_mips4400 4400
37549 +#define bfd_mach_mips4600 4600
37550 +#define bfd_mach_mips4650 4650
37551 +#define bfd_mach_mips5000 5000
37552 +#define bfd_mach_mips5400 5400
37553 +#define bfd_mach_mips5500 5500
37554 +#define bfd_mach_mips6000 6000
37555 +#define bfd_mach_mips7000 7000
37556 +#define bfd_mach_mips8000 8000
37557 +#define bfd_mach_mips9000 9000
37558 +#define bfd_mach_mips10000 10000
37559 +#define bfd_mach_mips12000 12000
37560 +#define bfd_mach_mips16 16
37561 +#define bfd_mach_mips5 5
37562 +#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
37563 +#define bfd_mach_mipsisa32 32
37564 +#define bfd_mach_mipsisa32r2 33
37565 +#define bfd_mach_mipsisa64 64
37566 +#define bfd_mach_mipsisa64r2 65
37567 + bfd_arch_i386, /* Intel 386 */
37568 +#define bfd_mach_i386_i386 1
37569 +#define bfd_mach_i386_i8086 2
37570 +#define bfd_mach_i386_i386_intel_syntax 3
37571 +#define bfd_mach_x86_64 64
37572 +#define bfd_mach_x86_64_intel_syntax 65
37573 + bfd_arch_we32k, /* AT&T WE32xxx */
37574 + bfd_arch_tahoe, /* CCI/Harris Tahoe */
37575 + bfd_arch_i860, /* Intel 860 */
37576 + bfd_arch_i370, /* IBM 360/370 Mainframes */
37577 + bfd_arch_romp, /* IBM ROMP PC/RT */
37578 + bfd_arch_convex, /* Convex */
37579 + bfd_arch_m88k, /* Motorola 88xxx */
37580 + bfd_arch_m98k, /* Motorola 98xxx */
37581 + bfd_arch_pyramid, /* Pyramid Technology */
37582 + bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
37583 +#define bfd_mach_h8300 1
37584 +#define bfd_mach_h8300h 2
37585 +#define bfd_mach_h8300s 3
37586 +#define bfd_mach_h8300hn 4
37587 +#define bfd_mach_h8300sn 5
37588 +#define bfd_mach_h8300sx 6
37589 +#define bfd_mach_h8300sxn 7
37590 + bfd_arch_pdp11, /* DEC PDP-11 */
37591 + bfd_arch_powerpc, /* PowerPC */
37592 +#define bfd_mach_ppc 32
37593 +#define bfd_mach_ppc64 64
37594 +#define bfd_mach_ppc_403 403
37595 +#define bfd_mach_ppc_403gc 4030
37596 +#define bfd_mach_ppc_505 505
37597 +#define bfd_mach_ppc_601 601
37598 +#define bfd_mach_ppc_602 602
37599 +#define bfd_mach_ppc_603 603
37600 +#define bfd_mach_ppc_ec603e 6031
37601 +#define bfd_mach_ppc_604 604
37602 +#define bfd_mach_ppc_620 620
37603 +#define bfd_mach_ppc_630 630
37604 +#define bfd_mach_ppc_750 750
37605 +#define bfd_mach_ppc_860 860
37606 +#define bfd_mach_ppc_a35 35
37607 +#define bfd_mach_ppc_rs64ii 642
37608 +#define bfd_mach_ppc_rs64iii 643
37609 +#define bfd_mach_ppc_7400 7400
37610 +#define bfd_mach_ppc_e500 500
37611 + bfd_arch_rs6000, /* IBM RS/6000 */
37612 +#define bfd_mach_rs6k 6000
37613 +#define bfd_mach_rs6k_rs1 6001
37614 +#define bfd_mach_rs6k_rsc 6003
37615 +#define bfd_mach_rs6k_rs2 6002
37616 + bfd_arch_hppa, /* HP PA RISC */
37617 +#define bfd_mach_hppa10 10
37618 +#define bfd_mach_hppa11 11
37619 +#define bfd_mach_hppa20 20
37620 +#define bfd_mach_hppa20w 25
37621 + bfd_arch_d10v, /* Mitsubishi D10V */
37622 +#define bfd_mach_d10v 1
37623 +#define bfd_mach_d10v_ts2 2
37624 +#define bfd_mach_d10v_ts3 3
37625 + bfd_arch_d30v, /* Mitsubishi D30V */
37626 + bfd_arch_dlx, /* DLX */
37627 + bfd_arch_m68hc11, /* Motorola 68HC11 */
37628 + bfd_arch_m68hc12, /* Motorola 68HC12 */
37629 +#define bfd_mach_m6812_default 0
37630 +#define bfd_mach_m6812 1
37631 +#define bfd_mach_m6812s 2
37632 + bfd_arch_z8k, /* Zilog Z8000 */
37633 +#define bfd_mach_z8001 1
37634 +#define bfd_mach_z8002 2
37635 + bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
37636 + bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
37637 +#define bfd_mach_sh 1
37638 +#define bfd_mach_sh2 0x20
37639 +#define bfd_mach_sh_dsp 0x2d
37640 +#define bfd_mach_sh2a 0x2a
37641 +#define bfd_mach_sh2a_nofpu 0x2b
37642 +#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
37643 +#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
37644 +#define bfd_mach_sh2a_or_sh4 0x2a3
37645 +#define bfd_mach_sh2a_or_sh3e 0x2a4
37646 +#define bfd_mach_sh2e 0x2e
37647 +#define bfd_mach_sh3 0x30
37648 +#define bfd_mach_sh3_nommu 0x31
37649 +#define bfd_mach_sh3_dsp 0x3d
37650 +#define bfd_mach_sh3e 0x3e
37651 +#define bfd_mach_sh4 0x40
37652 +#define bfd_mach_sh4_nofpu 0x41
37653 +#define bfd_mach_sh4_nommu_nofpu 0x42
37654 +#define bfd_mach_sh4a 0x4a
37655 +#define bfd_mach_sh4a_nofpu 0x4b
37656 +#define bfd_mach_sh4al_dsp 0x4d
37657 +#define bfd_mach_sh5 0x50
37658 + bfd_arch_alpha, /* Dec Alpha */
37659 +#define bfd_mach_alpha_ev4 0x10
37660 +#define bfd_mach_alpha_ev5 0x20
37661 +#define bfd_mach_alpha_ev6 0x30
37662 + bfd_arch_arm, /* Advanced Risc Machines ARM. */
37663 +#define bfd_mach_arm_unknown 0
37664 +#define bfd_mach_arm_2 1
37665 +#define bfd_mach_arm_2a 2
37666 +#define bfd_mach_arm_3 3
37667 +#define bfd_mach_arm_3M 4
37668 +#define bfd_mach_arm_4 5
37669 +#define bfd_mach_arm_4T 6
37670 +#define bfd_mach_arm_5 7
37671 +#define bfd_mach_arm_5T 8
37672 +#define bfd_mach_arm_5TE 9
37673 +#define bfd_mach_arm_XScale 10
37674 +#define bfd_mach_arm_ep9312 11
37675 +#define bfd_mach_arm_iWMMXt 12
37676 +#define bfd_mach_arm_iWMMXt2 13
37677 + bfd_arch_ns32k, /* National Semiconductors ns32000 */
37678 + bfd_arch_w65, /* WDC 65816 */
37679 + bfd_arch_tic30, /* Texas Instruments TMS320C30 */
37680 + bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
37681 +#define bfd_mach_tic3x 30
37682 +#define bfd_mach_tic4x 40
37683 + bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
37684 + bfd_arch_tic80, /* TI TMS320c80 (MVP) */
37685 + bfd_arch_v850, /* NEC V850 */
37686 +#define bfd_mach_v850 1
37687 +#define bfd_mach_v850e 'E'
37688 +#define bfd_mach_v850e1 '1'
37689 + bfd_arch_arc, /* ARC Cores */
37690 +#define bfd_mach_arc_5 5
37691 +#define bfd_mach_arc_6 6
37692 +#define bfd_mach_arc_7 7
37693 +#define bfd_mach_arc_8 8
37694 + bfd_arch_m32c, /* Renesas M16C/M32C. */
37695 +#define bfd_mach_m16c 0x75
37696 +#define bfd_mach_m32c 0x78
37697 + bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
37698 +#define bfd_mach_m32r 1 /* For backwards compatibility. */
37699 +#define bfd_mach_m32rx 'x'
37700 +#define bfd_mach_m32r2 '2'
37701 + bfd_arch_mn10200, /* Matsushita MN10200 */
37702 + bfd_arch_mn10300, /* Matsushita MN10300 */
37703 +#define bfd_mach_mn10300 300
37704 +#define bfd_mach_am33 330
37705 +#define bfd_mach_am33_2 332
37706 + bfd_arch_fr30,
37707 +#define bfd_mach_fr30 0x46523330
37708 + bfd_arch_frv,
37709 +#define bfd_mach_frv 1
37710 +#define bfd_mach_frvsimple 2
37711 +#define bfd_mach_fr300 300
37712 +#define bfd_mach_fr400 400
37713 +#define bfd_mach_fr450 450
37714 +#define bfd_mach_frvtomcat 499 /* fr500 prototype */
37715 +#define bfd_mach_fr500 500
37716 +#define bfd_mach_fr550 550
37717 + bfd_arch_mcore,
37718 + bfd_arch_mep,
37719 +#define bfd_mach_mep 1
37720 +#define bfd_mach_mep_h1 0x6831
37721 + bfd_arch_ia64, /* HP/Intel ia64 */
37722 +#define bfd_mach_ia64_elf64 64
37723 +#define bfd_mach_ia64_elf32 32
37724 + bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
37725 +#define bfd_mach_ip2022 1
37726 +#define bfd_mach_ip2022ext 2
37727 + bfd_arch_iq2000, /* Vitesse IQ2000. */
37728 +#define bfd_mach_iq2000 1
37729 +#define bfd_mach_iq10 2
37730 + bfd_arch_mt,
37731 +#define bfd_mach_ms1 1
37732 +#define bfd_mach_mrisc2 2
37733 +#define bfd_mach_ms2 3
37734 + bfd_arch_pj,
37735 + bfd_arch_avr, /* Atmel AVR microcontrollers. */
37736 +#define bfd_mach_avr1 1
37737 +#define bfd_mach_avr2 2
37738 +#define bfd_mach_avr3 3
37739 +#define bfd_mach_avr4 4
37740 +#define bfd_mach_avr5 5
37741 +#define bfd_mach_avr6 6
37742 + bfd_arch_avr32, /* Atmel AVR32 */
37743 +#define bfd_mach_avr32_ap 7000
37744 +#define bfd_mach_avr32_uc 3000
37745 +#define bfd_mach_avr32_ucr1 3001
37746 +#define bfd_mach_avr32_ucr2 3002
37747 + bfd_arch_bfin, /* ADI Blackfin */
37748 +#define bfd_mach_bfin 1
37749 + bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
37750 +#define bfd_mach_cr16 1
37751 + bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
37752 +#define bfd_mach_cr16c 1
37753 + bfd_arch_crx, /* National Semiconductor CRX. */
37754 +#define bfd_mach_crx 1
37755 + bfd_arch_cris, /* Axis CRIS */
37756 +#define bfd_mach_cris_v0_v10 255
37757 +#define bfd_mach_cris_v32 32
37758 +#define bfd_mach_cris_v10_v32 1032
37759 + bfd_arch_s390, /* IBM s390 */
37760 +#define bfd_mach_s390_31 31
37761 +#define bfd_mach_s390_64 64
37762 + bfd_arch_score, /* Sunplus score */
37763 + bfd_arch_openrisc, /* OpenRISC */
37764 + bfd_arch_mmix, /* Donald Knuth's educational processor. */
37765 + bfd_arch_xstormy16,
37766 +#define bfd_mach_xstormy16 1
37767 + bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
37768 +#define bfd_mach_msp11 11
37769 +#define bfd_mach_msp110 110
37770 +#define bfd_mach_msp12 12
37771 +#define bfd_mach_msp13 13
37772 +#define bfd_mach_msp14 14
37773 +#define bfd_mach_msp15 15
37774 +#define bfd_mach_msp16 16
37775 +#define bfd_mach_msp21 21
37776 +#define bfd_mach_msp31 31
37777 +#define bfd_mach_msp32 32
37778 +#define bfd_mach_msp33 33
37779 +#define bfd_mach_msp41 41
37780 +#define bfd_mach_msp42 42
37781 +#define bfd_mach_msp43 43
37782 +#define bfd_mach_msp44 44
37783 + bfd_arch_xc16x, /* Infineon's XC16X Series. */
37784 +#define bfd_mach_xc16x 1
37785 +#define bfd_mach_xc16xl 2
37786 +#define bfd_mach_xc16xs 3
37787 + bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
37788 +#define bfd_mach_xtensa 1
37789 + bfd_arch_maxq, /* Dallas MAXQ 10/20 */
37790 +#define bfd_mach_maxq10 10
37791 +#define bfd_mach_maxq20 20
37792 + bfd_arch_z80,
37793 +#define bfd_mach_z80strict 1 /* No undocumented opcodes. */
37794 +#define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
37795 +#define bfd_mach_z80full 7 /* All undocumented instructions. */
37796 +#define bfd_mach_r800 11 /* R800: successor with multiplication. */
37797 + bfd_arch_last
37798 + };
37799 +
37800 +typedef struct bfd_arch_info
37801 +{
37802 + int bits_per_word;
37803 + int bits_per_address;
37804 + int bits_per_byte;
37805 + enum bfd_architecture arch;
37806 + unsigned long mach;
37807 + const char *arch_name;
37808 + const char *printable_name;
37809 + unsigned int section_align_power;
37810 + /* TRUE if this is the default machine for the architecture.
37811 + The default arch should be the first entry for an arch so that
37812 + all the entries for that arch can be accessed via <<next>>. */
37813 + bfd_boolean the_default;
37814 + const struct bfd_arch_info * (*compatible)
37815 + (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
37816 +
37817 + bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
37818 +
37819 + const struct bfd_arch_info *next;
37820 +}
37821 +bfd_arch_info_type;
37822 +
37823 +const char *bfd_printable_name (bfd *abfd);
37824 +
37825 +const bfd_arch_info_type *bfd_scan_arch (const char *string);
37826 +
37827 +const char **bfd_arch_list (void);
37828 +
37829 +const bfd_arch_info_type *bfd_arch_get_compatible
37830 + (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
37831 +
37832 +void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
37833 +
37834 +enum bfd_architecture bfd_get_arch (bfd *abfd);
37835 +
37836 +unsigned long bfd_get_mach (bfd *abfd);
37837 +
37838 +unsigned int bfd_arch_bits_per_byte (bfd *abfd);
37839 +
37840 +unsigned int bfd_arch_bits_per_address (bfd *abfd);
37841 +
37842 +const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
37843 +
37844 +const bfd_arch_info_type *bfd_lookup_arch
37845 + (enum bfd_architecture arch, unsigned long machine);
37846 +
37847 +const char *bfd_printable_arch_mach
37848 + (enum bfd_architecture arch, unsigned long machine);
37849 +
37850 +unsigned int bfd_octets_per_byte (bfd *abfd);
37851 +
37852 +unsigned int bfd_arch_mach_octets_per_byte
37853 + (enum bfd_architecture arch, unsigned long machine);
37854 +
37855 +/* Extracted from reloc.c. */
37856 +typedef enum bfd_reloc_status
37857 +{
37858 + /* No errors detected. */
37859 + bfd_reloc_ok,
37860 +
37861 + /* The relocation was performed, but there was an overflow. */
37862 + bfd_reloc_overflow,
37863 +
37864 + /* The address to relocate was not within the section supplied. */
37865 + bfd_reloc_outofrange,
37866 +
37867 + /* Used by special functions. */
37868 + bfd_reloc_continue,
37869 +
37870 + /* Unsupported relocation size requested. */
37871 + bfd_reloc_notsupported,
37872 +
37873 + /* Unused. */
37874 + bfd_reloc_other,
37875 +
37876 + /* The symbol to relocate against was undefined. */
37877 + bfd_reloc_undefined,
37878 +
37879 + /* The relocation was performed, but may not be ok - presently
37880 + generated only when linking i960 coff files with i960 b.out
37881 + symbols. If this type is returned, the error_message argument
37882 + to bfd_perform_relocation will be set. */
37883 + bfd_reloc_dangerous
37884 + }
37885 + bfd_reloc_status_type;
37886 +
37887 +
37888 +typedef struct reloc_cache_entry
37889 +{
37890 + /* A pointer into the canonical table of pointers. */
37891 + struct bfd_symbol **sym_ptr_ptr;
37892 +
37893 + /* offset in section. */
37894 + bfd_size_type address;
37895 +
37896 + /* addend for relocation value. */
37897 + bfd_vma addend;
37898 +
37899 + /* Pointer to how to perform the required relocation. */
37900 + reloc_howto_type *howto;
37901 +
37902 +}
37903 +arelent;
37904 +
37905 +enum complain_overflow
37906 +{
37907 + /* Do not complain on overflow. */
37908 + complain_overflow_dont,
37909 +
37910 + /* Complain if the value overflows when considered as a signed
37911 + number one bit larger than the field. ie. A bitfield of N bits
37912 + is allowed to represent -2**n to 2**n-1. */
37913 + complain_overflow_bitfield,
37914 +
37915 + /* Complain if the value overflows when considered as a signed
37916 + number. */
37917 + complain_overflow_signed,
37918 +
37919 + /* Complain if the value overflows when considered as an
37920 + unsigned number. */
37921 + complain_overflow_unsigned
37922 +};
37923 +
37924 +struct reloc_howto_struct
37925 +{
37926 + /* The type field has mainly a documentary use - the back end can
37927 + do what it wants with it, though normally the back end's
37928 + external idea of what a reloc number is stored
37929 + in this field. For example, a PC relative word relocation
37930 + in a coff environment has the type 023 - because that's
37931 + what the outside world calls a R_PCRWORD reloc. */
37932 + unsigned int type;
37933 +
37934 + /* The value the final relocation is shifted right by. This drops
37935 + unwanted data from the relocation. */
37936 + unsigned int rightshift;
37937 +
37938 + /* The size of the item to be relocated. This is *not* a
37939 + power-of-two measure. To get the number of bytes operated
37940 + on by a type of relocation, use bfd_get_reloc_size. */
37941 + int size;
37942 +
37943 + /* The number of bits in the item to be relocated. This is used
37944 + when doing overflow checking. */
37945 + unsigned int bitsize;
37946 +
37947 + /* Notes that the relocation is relative to the location in the
37948 + data section of the addend. The relocation function will
37949 + subtract from the relocation value the address of the location
37950 + being relocated. */
37951 + bfd_boolean pc_relative;
37952 +
37953 + /* The bit position of the reloc value in the destination.
37954 + The relocated value is left shifted by this amount. */
37955 + unsigned int bitpos;
37956 +
37957 + /* What type of overflow error should be checked for when
37958 + relocating. */
37959 + enum complain_overflow complain_on_overflow;
37960 +
37961 + /* If this field is non null, then the supplied function is
37962 + called rather than the normal function. This allows really
37963 + strange relocation methods to be accommodated (e.g., i960 callj
37964 + instructions). */
37965 + bfd_reloc_status_type (*special_function)
37966 + (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
37967 + bfd *, char **);
37968 +
37969 + /* The textual name of the relocation type. */
37970 + char *name;
37971 +
37972 + /* Some formats record a relocation addend in the section contents
37973 + rather than with the relocation. For ELF formats this is the
37974 + distinction between USE_REL and USE_RELA (though the code checks
37975 + for USE_REL == 1/0). The value of this field is TRUE if the
37976 + addend is recorded with the section contents; when performing a
37977 + partial link (ld -r) the section contents (the data) will be
37978 + modified. The value of this field is FALSE if addends are
37979 + recorded with the relocation (in arelent.addend); when performing
37980 + a partial link the relocation will be modified.
37981 + All relocations for all ELF USE_RELA targets should set this field
37982 + to FALSE (values of TRUE should be looked on with suspicion).
37983 + However, the converse is not true: not all relocations of all ELF
37984 + USE_REL targets set this field to TRUE. Why this is so is peculiar
37985 + to each particular target. For relocs that aren't used in partial
37986 + links (e.g. GOT stuff) it doesn't matter what this is set to. */
37987 + bfd_boolean partial_inplace;
37988 +
37989 + /* src_mask selects the part of the instruction (or data) to be used
37990 + in the relocation sum. If the target relocations don't have an
37991 + addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
37992 + dst_mask to extract the addend from the section contents. If
37993 + relocations do have an addend in the reloc, eg. ELF USE_RELA, this
37994 + field should be zero. Non-zero values for ELF USE_RELA targets are
37995 + bogus as in those cases the value in the dst_mask part of the
37996 + section contents should be treated as garbage. */
37997 + bfd_vma src_mask;
37998 +
37999 + /* dst_mask selects which parts of the instruction (or data) are
38000 + replaced with a relocated value. */
38001 + bfd_vma dst_mask;
38002 +
38003 + /* When some formats create PC relative instructions, they leave
38004 + the value of the pc of the place being relocated in the offset
38005 + slot of the instruction, so that a PC relative relocation can
38006 + be made just by adding in an ordinary offset (e.g., sun3 a.out).
38007 + Some formats leave the displacement part of an instruction
38008 + empty (e.g., m88k bcs); this flag signals the fact. */
38009 + bfd_boolean pcrel_offset;
38010 +};
38011 +
38012 +#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
38013 + { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
38014 +#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
38015 + HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
38016 + NAME, FALSE, 0, 0, IN)
38017 +
38018 +#define EMPTY_HOWTO(C) \
38019 + HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
38020 + NULL, FALSE, 0, 0, FALSE)
38021 +
38022 +#define HOWTO_PREPARE(relocation, symbol) \
38023 + { \
38024 + if (symbol != NULL) \
38025 + { \
38026 + if (bfd_is_com_section (symbol->section)) \
38027 + { \
38028 + relocation = 0; \
38029 + } \
38030 + else \
38031 + { \
38032 + relocation = symbol->value; \
38033 + } \
38034 + } \
38035 + }
38036 +
38037 +unsigned int bfd_get_reloc_size (reloc_howto_type *);
38038 +
38039 +typedef struct relent_chain
38040 +{
38041 + arelent relent;
38042 + struct relent_chain *next;
38043 +}
38044 +arelent_chain;
38045 +
38046 +bfd_reloc_status_type bfd_check_overflow
38047 + (enum complain_overflow how,
38048 + unsigned int bitsize,
38049 + unsigned int rightshift,
38050 + unsigned int addrsize,
38051 + bfd_vma relocation);
38052 +
38053 +bfd_reloc_status_type bfd_perform_relocation
38054 + (bfd *abfd,
38055 + arelent *reloc_entry,
38056 + void *data,
38057 + asection *input_section,
38058 + bfd *output_bfd,
38059 + char **error_message);
38060 +
38061 +bfd_reloc_status_type bfd_install_relocation
38062 + (bfd *abfd,
38063 + arelent *reloc_entry,
38064 + void *data, bfd_vma data_start,
38065 + asection *input_section,
38066 + char **error_message);
38067 +
38068 +enum bfd_reloc_code_real {
38069 + _dummy_first_bfd_reloc_code_real,
38070 +
38071 +
38072 +/* Basic absolute relocations of N bits. */
38073 + BFD_RELOC_64,
38074 + BFD_RELOC_32,
38075 + BFD_RELOC_26,
38076 + BFD_RELOC_24,
38077 + BFD_RELOC_16,
38078 + BFD_RELOC_14,
38079 + BFD_RELOC_8,
38080 +
38081 +/* PC-relative relocations. Sometimes these are relative to the address
38082 +of the relocation itself; sometimes they are relative to the start of
38083 +the section containing the relocation. It depends on the specific target.
38084 +
38085 +The 24-bit relocation is used in some Intel 960 configurations. */
38086 + BFD_RELOC_64_PCREL,
38087 + BFD_RELOC_32_PCREL,
38088 + BFD_RELOC_24_PCREL,
38089 + BFD_RELOC_16_PCREL,
38090 + BFD_RELOC_12_PCREL,
38091 + BFD_RELOC_8_PCREL,
38092 +
38093 +/* Section relative relocations. Some targets need this for DWARF2. */
38094 + BFD_RELOC_32_SECREL,
38095 +
38096 +/* For ELF. */
38097 + BFD_RELOC_32_GOT_PCREL,
38098 + BFD_RELOC_16_GOT_PCREL,
38099 + BFD_RELOC_8_GOT_PCREL,
38100 + BFD_RELOC_32_GOTOFF,
38101 + BFD_RELOC_16_GOTOFF,
38102 + BFD_RELOC_LO16_GOTOFF,
38103 + BFD_RELOC_HI16_GOTOFF,
38104 + BFD_RELOC_HI16_S_GOTOFF,
38105 + BFD_RELOC_8_GOTOFF,
38106 + BFD_RELOC_64_PLT_PCREL,
38107 + BFD_RELOC_32_PLT_PCREL,
38108 + BFD_RELOC_24_PLT_PCREL,
38109 + BFD_RELOC_16_PLT_PCREL,
38110 + BFD_RELOC_8_PLT_PCREL,
38111 + BFD_RELOC_64_PLTOFF,
38112 + BFD_RELOC_32_PLTOFF,
38113 + BFD_RELOC_16_PLTOFF,
38114 + BFD_RELOC_LO16_PLTOFF,
38115 + BFD_RELOC_HI16_PLTOFF,
38116 + BFD_RELOC_HI16_S_PLTOFF,
38117 + BFD_RELOC_8_PLTOFF,
38118 +
38119 +/* Relocations used by 68K ELF. */
38120 + BFD_RELOC_68K_GLOB_DAT,
38121 + BFD_RELOC_68K_JMP_SLOT,
38122 + BFD_RELOC_68K_RELATIVE,
38123 +
38124 +/* Linkage-table relative. */
38125 + BFD_RELOC_32_BASEREL,
38126 + BFD_RELOC_16_BASEREL,
38127 + BFD_RELOC_LO16_BASEREL,
38128 + BFD_RELOC_HI16_BASEREL,
38129 + BFD_RELOC_HI16_S_BASEREL,
38130 + BFD_RELOC_8_BASEREL,
38131 + BFD_RELOC_RVA,
38132 +
38133 +/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */
38134 + BFD_RELOC_8_FFnn,
38135 +
38136 +/* These PC-relative relocations are stored as word displacements --
38137 +i.e., byte displacements shifted right two bits. The 30-bit word
38138 +displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
38139 +SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
38140 +signed 16-bit displacement is used on the MIPS, and the 23-bit
38141 +displacement is used on the Alpha. */
38142 + BFD_RELOC_32_PCREL_S2,
38143 + BFD_RELOC_16_PCREL_S2,
38144 + BFD_RELOC_23_PCREL_S2,
38145 +
38146 +/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
38147 +the target word. These are used on the SPARC. */
38148 + BFD_RELOC_HI22,
38149 + BFD_RELOC_LO10,
38150 +
38151 +/* For systems that allocate a Global Pointer register, these are
38152 +displacements off that register. These relocation types are
38153 +handled specially, because the value the register will have is
38154 +decided relatively late. */
38155 + BFD_RELOC_GPREL16,
38156 + BFD_RELOC_GPREL32,
38157 +
38158 +/* Reloc types used for i960/b.out. */
38159 + BFD_RELOC_I960_CALLJ,
38160 +
38161 +/* SPARC ELF relocations. There is probably some overlap with other
38162 +relocation types already defined. */
38163 + BFD_RELOC_NONE,
38164 + BFD_RELOC_SPARC_WDISP22,
38165 + BFD_RELOC_SPARC22,
38166 + BFD_RELOC_SPARC13,
38167 + BFD_RELOC_SPARC_GOT10,
38168 + BFD_RELOC_SPARC_GOT13,
38169 + BFD_RELOC_SPARC_GOT22,
38170 + BFD_RELOC_SPARC_PC10,
38171 + BFD_RELOC_SPARC_PC22,
38172 + BFD_RELOC_SPARC_WPLT30,
38173 + BFD_RELOC_SPARC_COPY,
38174 + BFD_RELOC_SPARC_GLOB_DAT,
38175 + BFD_RELOC_SPARC_JMP_SLOT,
38176 + BFD_RELOC_SPARC_RELATIVE,
38177 + BFD_RELOC_SPARC_UA16,
38178 + BFD_RELOC_SPARC_UA32,
38179 + BFD_RELOC_SPARC_UA64,
38180 +
38181 +/* I think these are specific to SPARC a.out (e.g., Sun 4). */
38182 + BFD_RELOC_SPARC_BASE13,
38183 + BFD_RELOC_SPARC_BASE22,
38184 +
38185 +/* SPARC64 relocations */
38186 +#define BFD_RELOC_SPARC_64 BFD_RELOC_64
38187 + BFD_RELOC_SPARC_10,
38188 + BFD_RELOC_SPARC_11,
38189 + BFD_RELOC_SPARC_OLO10,
38190 + BFD_RELOC_SPARC_HH22,
38191 + BFD_RELOC_SPARC_HM10,
38192 + BFD_RELOC_SPARC_LM22,
38193 + BFD_RELOC_SPARC_PC_HH22,
38194 + BFD_RELOC_SPARC_PC_HM10,
38195 + BFD_RELOC_SPARC_PC_LM22,
38196 + BFD_RELOC_SPARC_WDISP16,
38197 + BFD_RELOC_SPARC_WDISP19,
38198 + BFD_RELOC_SPARC_7,
38199 + BFD_RELOC_SPARC_6,
38200 + BFD_RELOC_SPARC_5,
38201 +#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
38202 + BFD_RELOC_SPARC_PLT32,
38203 + BFD_RELOC_SPARC_PLT64,
38204 + BFD_RELOC_SPARC_HIX22,
38205 + BFD_RELOC_SPARC_LOX10,
38206 + BFD_RELOC_SPARC_H44,
38207 + BFD_RELOC_SPARC_M44,
38208 + BFD_RELOC_SPARC_L44,
38209 + BFD_RELOC_SPARC_REGISTER,
38210 +
38211 +/* SPARC little endian relocation */
38212 + BFD_RELOC_SPARC_REV32,
38213 +
38214 +/* SPARC TLS relocations */
38215 + BFD_RELOC_SPARC_TLS_GD_HI22,
38216 + BFD_RELOC_SPARC_TLS_GD_LO10,
38217 + BFD_RELOC_SPARC_TLS_GD_ADD,
38218 + BFD_RELOC_SPARC_TLS_GD_CALL,
38219 + BFD_RELOC_SPARC_TLS_LDM_HI22,
38220 + BFD_RELOC_SPARC_TLS_LDM_LO10,
38221 + BFD_RELOC_SPARC_TLS_LDM_ADD,
38222 + BFD_RELOC_SPARC_TLS_LDM_CALL,
38223 + BFD_RELOC_SPARC_TLS_LDO_HIX22,
38224 + BFD_RELOC_SPARC_TLS_LDO_LOX10,
38225 + BFD_RELOC_SPARC_TLS_LDO_ADD,
38226 + BFD_RELOC_SPARC_TLS_IE_HI22,
38227 + BFD_RELOC_SPARC_TLS_IE_LO10,
38228 + BFD_RELOC_SPARC_TLS_IE_LD,
38229 + BFD_RELOC_SPARC_TLS_IE_LDX,
38230 + BFD_RELOC_SPARC_TLS_IE_ADD,
38231 + BFD_RELOC_SPARC_TLS_LE_HIX22,
38232 + BFD_RELOC_SPARC_TLS_LE_LOX10,
38233 + BFD_RELOC_SPARC_TLS_DTPMOD32,
38234 + BFD_RELOC_SPARC_TLS_DTPMOD64,
38235 + BFD_RELOC_SPARC_TLS_DTPOFF32,
38236 + BFD_RELOC_SPARC_TLS_DTPOFF64,
38237 + BFD_RELOC_SPARC_TLS_TPOFF32,
38238 + BFD_RELOC_SPARC_TLS_TPOFF64,
38239 +
38240 +/* SPU Relocations. */
38241 + BFD_RELOC_SPU_IMM7,
38242 + BFD_RELOC_SPU_IMM8,
38243 + BFD_RELOC_SPU_IMM10,
38244 + BFD_RELOC_SPU_IMM10W,
38245 + BFD_RELOC_SPU_IMM16,
38246 + BFD_RELOC_SPU_IMM16W,
38247 + BFD_RELOC_SPU_IMM18,
38248 + BFD_RELOC_SPU_PCREL9a,
38249 + BFD_RELOC_SPU_PCREL9b,
38250 + BFD_RELOC_SPU_PCREL16,
38251 + BFD_RELOC_SPU_LO16,
38252 + BFD_RELOC_SPU_HI16,
38253 + BFD_RELOC_SPU_PPU32,
38254 + BFD_RELOC_SPU_PPU64,
38255 +
38256 +/* Alpha ECOFF and ELF relocations. Some of these treat the symbol or
38257 +"addend" in some special way.
38258 +For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
38259 +writing; when reading, it will be the absolute section symbol. The
38260 +addend is the displacement in bytes of the "lda" instruction from
38261 +the "ldah" instruction (which is at the address of this reloc). */
38262 + BFD_RELOC_ALPHA_GPDISP_HI16,
38263 +
38264 +/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
38265 +with GPDISP_HI16 relocs. The addend is ignored when writing the
38266 +relocations out, and is filled in with the file's GP value on
38267 +reading, for convenience. */
38268 + BFD_RELOC_ALPHA_GPDISP_LO16,
38269 +
38270 +/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
38271 +relocation except that there is no accompanying GPDISP_LO16
38272 +relocation. */
38273 + BFD_RELOC_ALPHA_GPDISP,
38274 +
38275 +/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
38276 +the assembler turns it into a LDQ instruction to load the address of
38277 +the symbol, and then fills in a register in the real instruction.
38278 +
38279 +The LITERAL reloc, at the LDQ instruction, refers to the .lita
38280 +section symbol. The addend is ignored when writing, but is filled
38281 +in with the file's GP value on reading, for convenience, as with the
38282 +GPDISP_LO16 reloc.
38283 +
38284 +The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
38285 +It should refer to the symbol to be referenced, as with 16_GOTOFF,
38286 +but it generates output not based on the position within the .got
38287 +section, but relative to the GP value chosen for the file during the
38288 +final link stage.
38289 +
38290 +The LITUSE reloc, on the instruction using the loaded address, gives
38291 +information to the linker that it might be able to use to optimize
38292 +away some literal section references. The symbol is ignored (read
38293 +as the absolute section symbol), and the "addend" indicates the type
38294 +of instruction using the register:
38295 +1 - "memory" fmt insn
38296 +2 - byte-manipulation (byte offset reg)
38297 +3 - jsr (target of branch) */
38298 + BFD_RELOC_ALPHA_LITERAL,
38299 + BFD_RELOC_ALPHA_ELF_LITERAL,
38300 + BFD_RELOC_ALPHA_LITUSE,
38301 +
38302 +/* The HINT relocation indicates a value that should be filled into the
38303 +"hint" field of a jmp/jsr/ret instruction, for possible branch-
38304 +prediction logic which may be provided on some processors. */
38305 + BFD_RELOC_ALPHA_HINT,
38306 +
38307 +/* The LINKAGE relocation outputs a linkage pair in the object file,
38308 +which is filled by the linker. */
38309 + BFD_RELOC_ALPHA_LINKAGE,
38310 +
38311 +/* The CODEADDR relocation outputs a STO_CA in the object file,
38312 +which is filled by the linker. */
38313 + BFD_RELOC_ALPHA_CODEADDR,
38314 +
38315 +/* The GPREL_HI/LO relocations together form a 32-bit offset from the
38316 +GP register. */
38317 + BFD_RELOC_ALPHA_GPREL_HI16,
38318 + BFD_RELOC_ALPHA_GPREL_LO16,
38319 +
38320 +/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
38321 +share a common GP, and the target address is adjusted for
38322 +STO_ALPHA_STD_GPLOAD. */
38323 + BFD_RELOC_ALPHA_BRSGP,
38324 +
38325 +/* Alpha thread-local storage relocations. */
38326 + BFD_RELOC_ALPHA_TLSGD,
38327 + BFD_RELOC_ALPHA_TLSLDM,
38328 + BFD_RELOC_ALPHA_DTPMOD64,
38329 + BFD_RELOC_ALPHA_GOTDTPREL16,
38330 + BFD_RELOC_ALPHA_DTPREL64,
38331 + BFD_RELOC_ALPHA_DTPREL_HI16,
38332 + BFD_RELOC_ALPHA_DTPREL_LO16,
38333 + BFD_RELOC_ALPHA_DTPREL16,
38334 + BFD_RELOC_ALPHA_GOTTPREL16,
38335 + BFD_RELOC_ALPHA_TPREL64,
38336 + BFD_RELOC_ALPHA_TPREL_HI16,
38337 + BFD_RELOC_ALPHA_TPREL_LO16,
38338 + BFD_RELOC_ALPHA_TPREL16,
38339 +
38340 +/* Bits 27..2 of the relocation address shifted right 2 bits;
38341 +simple reloc otherwise. */
38342 + BFD_RELOC_MIPS_JMP,
38343 +
38344 +/* The MIPS16 jump instruction. */
38345 + BFD_RELOC_MIPS16_JMP,
38346 +
38347 +/* MIPS16 GP relative reloc. */
38348 + BFD_RELOC_MIPS16_GPREL,
38349 +
38350 +/* High 16 bits of 32-bit value; simple reloc. */
38351 + BFD_RELOC_HI16,
38352 +
38353 +/* High 16 bits of 32-bit value but the low 16 bits will be sign
38354 +extended and added to form the final result. If the low 16
38355 +bits form a negative number, we need to add one to the high value
38356 +to compensate for the borrow when the low bits are added. */
38357 + BFD_RELOC_HI16_S,
38358 +
38359 +/* Low 16 bits. */
38360 + BFD_RELOC_LO16,
38361 +
38362 +/* High 16 bits of 32-bit pc-relative value */
38363 + BFD_RELOC_HI16_PCREL,
38364 +
38365 +/* High 16 bits of 32-bit pc-relative value, adjusted */
38366 + BFD_RELOC_HI16_S_PCREL,
38367 +
38368 +/* Low 16 bits of pc-relative value */
38369 + BFD_RELOC_LO16_PCREL,
38370 +
38371 +/* MIPS16 high 16 bits of 32-bit value. */
38372 + BFD_RELOC_MIPS16_HI16,
38373 +
38374 +/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
38375 +extended and added to form the final result. If the low 16
38376 +bits form a negative number, we need to add one to the high value
38377 +to compensate for the borrow when the low bits are added. */
38378 + BFD_RELOC_MIPS16_HI16_S,
38379 +
38380 +/* MIPS16 low 16 bits. */
38381 + BFD_RELOC_MIPS16_LO16,
38382 +
38383 +/* Relocation against a MIPS literal section. */
38384 + BFD_RELOC_MIPS_LITERAL,
38385 +
38386 +/* MIPS ELF relocations. */
38387 + BFD_RELOC_MIPS_GOT16,
38388 + BFD_RELOC_MIPS_CALL16,
38389 + BFD_RELOC_MIPS_GOT_HI16,
38390 + BFD_RELOC_MIPS_GOT_LO16,
38391 + BFD_RELOC_MIPS_CALL_HI16,
38392 + BFD_RELOC_MIPS_CALL_LO16,
38393 + BFD_RELOC_MIPS_SUB,
38394 + BFD_RELOC_MIPS_GOT_PAGE,
38395 + BFD_RELOC_MIPS_GOT_OFST,
38396 + BFD_RELOC_MIPS_GOT_DISP,
38397 + BFD_RELOC_MIPS_SHIFT5,
38398 + BFD_RELOC_MIPS_SHIFT6,
38399 + BFD_RELOC_MIPS_INSERT_A,
38400 + BFD_RELOC_MIPS_INSERT_B,
38401 + BFD_RELOC_MIPS_DELETE,
38402 + BFD_RELOC_MIPS_HIGHEST,
38403 + BFD_RELOC_MIPS_HIGHER,
38404 + BFD_RELOC_MIPS_SCN_DISP,
38405 + BFD_RELOC_MIPS_REL16,
38406 + BFD_RELOC_MIPS_RELGOT,
38407 + BFD_RELOC_MIPS_JALR,
38408 + BFD_RELOC_MIPS_TLS_DTPMOD32,
38409 + BFD_RELOC_MIPS_TLS_DTPREL32,
38410 + BFD_RELOC_MIPS_TLS_DTPMOD64,
38411 + BFD_RELOC_MIPS_TLS_DTPREL64,
38412 + BFD_RELOC_MIPS_TLS_GD,
38413 + BFD_RELOC_MIPS_TLS_LDM,
38414 + BFD_RELOC_MIPS_TLS_DTPREL_HI16,
38415 + BFD_RELOC_MIPS_TLS_DTPREL_LO16,
38416 + BFD_RELOC_MIPS_TLS_GOTTPREL,
38417 + BFD_RELOC_MIPS_TLS_TPREL32,
38418 + BFD_RELOC_MIPS_TLS_TPREL64,
38419 + BFD_RELOC_MIPS_TLS_TPREL_HI16,
38420 + BFD_RELOC_MIPS_TLS_TPREL_LO16,
38421 +
38422 +
38423 +/* MIPS ELF relocations (VxWorks extensions). */
38424 + BFD_RELOC_MIPS_COPY,
38425 + BFD_RELOC_MIPS_JUMP_SLOT,
38426 +
38427 +
38428 +/* Fujitsu Frv Relocations. */
38429 + BFD_RELOC_FRV_LABEL16,
38430 + BFD_RELOC_FRV_LABEL24,
38431 + BFD_RELOC_FRV_LO16,
38432 + BFD_RELOC_FRV_HI16,
38433 + BFD_RELOC_FRV_GPREL12,
38434 + BFD_RELOC_FRV_GPRELU12,
38435 + BFD_RELOC_FRV_GPREL32,
38436 + BFD_RELOC_FRV_GPRELHI,
38437 + BFD_RELOC_FRV_GPRELLO,
38438 + BFD_RELOC_FRV_GOT12,
38439 + BFD_RELOC_FRV_GOTHI,
38440 + BFD_RELOC_FRV_GOTLO,
38441 + BFD_RELOC_FRV_FUNCDESC,
38442 + BFD_RELOC_FRV_FUNCDESC_GOT12,
38443 + BFD_RELOC_FRV_FUNCDESC_GOTHI,
38444 + BFD_RELOC_FRV_FUNCDESC_GOTLO,
38445 + BFD_RELOC_FRV_FUNCDESC_VALUE,
38446 + BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
38447 + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
38448 + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
38449 + BFD_RELOC_FRV_GOTOFF12,
38450 + BFD_RELOC_FRV_GOTOFFHI,
38451 + BFD_RELOC_FRV_GOTOFFLO,
38452 + BFD_RELOC_FRV_GETTLSOFF,
38453 + BFD_RELOC_FRV_TLSDESC_VALUE,
38454 + BFD_RELOC_FRV_GOTTLSDESC12,
38455 + BFD_RELOC_FRV_GOTTLSDESCHI,
38456 + BFD_RELOC_FRV_GOTTLSDESCLO,
38457 + BFD_RELOC_FRV_TLSMOFF12,
38458 + BFD_RELOC_FRV_TLSMOFFHI,
38459 + BFD_RELOC_FRV_TLSMOFFLO,
38460 + BFD_RELOC_FRV_GOTTLSOFF12,
38461 + BFD_RELOC_FRV_GOTTLSOFFHI,
38462 + BFD_RELOC_FRV_GOTTLSOFFLO,
38463 + BFD_RELOC_FRV_TLSOFF,
38464 + BFD_RELOC_FRV_TLSDESC_RELAX,
38465 + BFD_RELOC_FRV_GETTLSOFF_RELAX,
38466 + BFD_RELOC_FRV_TLSOFF_RELAX,
38467 + BFD_RELOC_FRV_TLSMOFF,
38468 +
38469 +
38470 +/* This is a 24bit GOT-relative reloc for the mn10300. */
38471 + BFD_RELOC_MN10300_GOTOFF24,
38472 +
38473 +/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
38474 +in the instruction. */
38475 + BFD_RELOC_MN10300_GOT32,
38476 +
38477 +/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
38478 +in the instruction. */
38479 + BFD_RELOC_MN10300_GOT24,
38480 +
38481 +/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
38482 +in the instruction. */
38483 + BFD_RELOC_MN10300_GOT16,
38484 +
38485 +/* Copy symbol at runtime. */
38486 + BFD_RELOC_MN10300_COPY,
38487 +
38488 +/* Create GOT entry. */
38489 + BFD_RELOC_MN10300_GLOB_DAT,
38490 +
38491 +/* Create PLT entry. */
38492 + BFD_RELOC_MN10300_JMP_SLOT,
38493 +
38494 +/* Adjust by program base. */
38495 + BFD_RELOC_MN10300_RELATIVE,
38496 +
38497 +
38498 +/* i386/elf relocations */
38499 + BFD_RELOC_386_GOT32,
38500 + BFD_RELOC_386_PLT32,
38501 + BFD_RELOC_386_COPY,
38502 + BFD_RELOC_386_GLOB_DAT,
38503 + BFD_RELOC_386_JUMP_SLOT,
38504 + BFD_RELOC_386_RELATIVE,
38505 + BFD_RELOC_386_GOTOFF,
38506 + BFD_RELOC_386_GOTPC,
38507 + BFD_RELOC_386_TLS_TPOFF,
38508 + BFD_RELOC_386_TLS_IE,
38509 + BFD_RELOC_386_TLS_GOTIE,
38510 + BFD_RELOC_386_TLS_LE,
38511 + BFD_RELOC_386_TLS_GD,
38512 + BFD_RELOC_386_TLS_LDM,
38513 + BFD_RELOC_386_TLS_LDO_32,
38514 + BFD_RELOC_386_TLS_IE_32,
38515 + BFD_RELOC_386_TLS_LE_32,
38516 + BFD_RELOC_386_TLS_DTPMOD32,
38517 + BFD_RELOC_386_TLS_DTPOFF32,
38518 + BFD_RELOC_386_TLS_TPOFF32,
38519 + BFD_RELOC_386_TLS_GOTDESC,
38520 + BFD_RELOC_386_TLS_DESC_CALL,
38521 + BFD_RELOC_386_TLS_DESC,
38522 +
38523 +/* x86-64/elf relocations */
38524 + BFD_RELOC_X86_64_GOT32,
38525 + BFD_RELOC_X86_64_PLT32,
38526 + BFD_RELOC_X86_64_COPY,
38527 + BFD_RELOC_X86_64_GLOB_DAT,
38528 + BFD_RELOC_X86_64_JUMP_SLOT,
38529 + BFD_RELOC_X86_64_RELATIVE,
38530 + BFD_RELOC_X86_64_GOTPCREL,
38531 + BFD_RELOC_X86_64_32S,
38532 + BFD_RELOC_X86_64_DTPMOD64,
38533 + BFD_RELOC_X86_64_DTPOFF64,
38534 + BFD_RELOC_X86_64_TPOFF64,
38535 + BFD_RELOC_X86_64_TLSGD,
38536 + BFD_RELOC_X86_64_TLSLD,
38537 + BFD_RELOC_X86_64_DTPOFF32,
38538 + BFD_RELOC_X86_64_GOTTPOFF,
38539 + BFD_RELOC_X86_64_TPOFF32,
38540 + BFD_RELOC_X86_64_GOTOFF64,
38541 + BFD_RELOC_X86_64_GOTPC32,
38542 + BFD_RELOC_X86_64_GOT64,
38543 + BFD_RELOC_X86_64_GOTPCREL64,
38544 + BFD_RELOC_X86_64_GOTPC64,
38545 + BFD_RELOC_X86_64_GOTPLT64,
38546 + BFD_RELOC_X86_64_PLTOFF64,
38547 + BFD_RELOC_X86_64_GOTPC32_TLSDESC,
38548 + BFD_RELOC_X86_64_TLSDESC_CALL,
38549 + BFD_RELOC_X86_64_TLSDESC,
38550 +
38551 +/* ns32k relocations */
38552 + BFD_RELOC_NS32K_IMM_8,
38553 + BFD_RELOC_NS32K_IMM_16,
38554 + BFD_RELOC_NS32K_IMM_32,
38555 + BFD_RELOC_NS32K_IMM_8_PCREL,
38556 + BFD_RELOC_NS32K_IMM_16_PCREL,
38557 + BFD_RELOC_NS32K_IMM_32_PCREL,
38558 + BFD_RELOC_NS32K_DISP_8,
38559 + BFD_RELOC_NS32K_DISP_16,
38560 + BFD_RELOC_NS32K_DISP_32,
38561 + BFD_RELOC_NS32K_DISP_8_PCREL,
38562 + BFD_RELOC_NS32K_DISP_16_PCREL,
38563 + BFD_RELOC_NS32K_DISP_32_PCREL,
38564 +
38565 +/* PDP11 relocations */
38566 + BFD_RELOC_PDP11_DISP_8_PCREL,
38567 + BFD_RELOC_PDP11_DISP_6_PCREL,
38568 +
38569 +/* Picojava relocs. Not all of these appear in object files. */
38570 + BFD_RELOC_PJ_CODE_HI16,
38571 + BFD_RELOC_PJ_CODE_LO16,
38572 + BFD_RELOC_PJ_CODE_DIR16,
38573 + BFD_RELOC_PJ_CODE_DIR32,
38574 + BFD_RELOC_PJ_CODE_REL16,
38575 + BFD_RELOC_PJ_CODE_REL32,
38576 +
38577 +/* Power(rs6000) and PowerPC relocations. */
38578 + BFD_RELOC_PPC_B26,
38579 + BFD_RELOC_PPC_BA26,
38580 + BFD_RELOC_PPC_TOC16,
38581 + BFD_RELOC_PPC_B16,
38582 + BFD_RELOC_PPC_B16_BRTAKEN,
38583 + BFD_RELOC_PPC_B16_BRNTAKEN,
38584 + BFD_RELOC_PPC_BA16,
38585 + BFD_RELOC_PPC_BA16_BRTAKEN,
38586 + BFD_RELOC_PPC_BA16_BRNTAKEN,
38587 + BFD_RELOC_PPC_COPY,
38588 + BFD_RELOC_PPC_GLOB_DAT,
38589 + BFD_RELOC_PPC_JMP_SLOT,
38590 + BFD_RELOC_PPC_RELATIVE,
38591 + BFD_RELOC_PPC_LOCAL24PC,
38592 + BFD_RELOC_PPC_EMB_NADDR32,
38593 + BFD_RELOC_PPC_EMB_NADDR16,
38594 + BFD_RELOC_PPC_EMB_NADDR16_LO,
38595 + BFD_RELOC_PPC_EMB_NADDR16_HI,
38596 + BFD_RELOC_PPC_EMB_NADDR16_HA,
38597 + BFD_RELOC_PPC_EMB_SDAI16,
38598 + BFD_RELOC_PPC_EMB_SDA2I16,
38599 + BFD_RELOC_PPC_EMB_SDA2REL,
38600 + BFD_RELOC_PPC_EMB_SDA21,
38601 + BFD_RELOC_PPC_EMB_MRKREF,
38602 + BFD_RELOC_PPC_EMB_RELSEC16,
38603 + BFD_RELOC_PPC_EMB_RELST_LO,
38604 + BFD_RELOC_PPC_EMB_RELST_HI,
38605 + BFD_RELOC_PPC_EMB_RELST_HA,
38606 + BFD_RELOC_PPC_EMB_BIT_FLD,
38607 + BFD_RELOC_PPC_EMB_RELSDA,
38608 + BFD_RELOC_PPC64_HIGHER,
38609 + BFD_RELOC_PPC64_HIGHER_S,
38610 + BFD_RELOC_PPC64_HIGHEST,
38611 + BFD_RELOC_PPC64_HIGHEST_S,
38612 + BFD_RELOC_PPC64_TOC16_LO,
38613 + BFD_RELOC_PPC64_TOC16_HI,
38614 + BFD_RELOC_PPC64_TOC16_HA,
38615 + BFD_RELOC_PPC64_TOC,
38616 + BFD_RELOC_PPC64_PLTGOT16,
38617 + BFD_RELOC_PPC64_PLTGOT16_LO,
38618 + BFD_RELOC_PPC64_PLTGOT16_HI,
38619 + BFD_RELOC_PPC64_PLTGOT16_HA,
38620 + BFD_RELOC_PPC64_ADDR16_DS,
38621 + BFD_RELOC_PPC64_ADDR16_LO_DS,
38622 + BFD_RELOC_PPC64_GOT16_DS,
38623 + BFD_RELOC_PPC64_GOT16_LO_DS,
38624 + BFD_RELOC_PPC64_PLT16_LO_DS,
38625 + BFD_RELOC_PPC64_SECTOFF_DS,
38626 + BFD_RELOC_PPC64_SECTOFF_LO_DS,
38627 + BFD_RELOC_PPC64_TOC16_DS,
38628 + BFD_RELOC_PPC64_TOC16_LO_DS,
38629 + BFD_RELOC_PPC64_PLTGOT16_DS,
38630 + BFD_RELOC_PPC64_PLTGOT16_LO_DS,
38631 +
38632 +/* PowerPC and PowerPC64 thread-local storage relocations. */
38633 + BFD_RELOC_PPC_TLS,
38634 + BFD_RELOC_PPC_DTPMOD,
38635 + BFD_RELOC_PPC_TPREL16,
38636 + BFD_RELOC_PPC_TPREL16_LO,
38637 + BFD_RELOC_PPC_TPREL16_HI,
38638 + BFD_RELOC_PPC_TPREL16_HA,
38639 + BFD_RELOC_PPC_TPREL,
38640 + BFD_RELOC_PPC_DTPREL16,
38641 + BFD_RELOC_PPC_DTPREL16_LO,
38642 + BFD_RELOC_PPC_DTPREL16_HI,
38643 + BFD_RELOC_PPC_DTPREL16_HA,
38644 + BFD_RELOC_PPC_DTPREL,
38645 + BFD_RELOC_PPC_GOT_TLSGD16,
38646 + BFD_RELOC_PPC_GOT_TLSGD16_LO,
38647 + BFD_RELOC_PPC_GOT_TLSGD16_HI,
38648 + BFD_RELOC_PPC_GOT_TLSGD16_HA,
38649 + BFD_RELOC_PPC_GOT_TLSLD16,
38650 + BFD_RELOC_PPC_GOT_TLSLD16_LO,
38651 + BFD_RELOC_PPC_GOT_TLSLD16_HI,
38652 + BFD_RELOC_PPC_GOT_TLSLD16_HA,
38653 + BFD_RELOC_PPC_GOT_TPREL16,
38654 + BFD_RELOC_PPC_GOT_TPREL16_LO,
38655 + BFD_RELOC_PPC_GOT_TPREL16_HI,
38656 + BFD_RELOC_PPC_GOT_TPREL16_HA,
38657 + BFD_RELOC_PPC_GOT_DTPREL16,
38658 + BFD_RELOC_PPC_GOT_DTPREL16_LO,
38659 + BFD_RELOC_PPC_GOT_DTPREL16_HI,
38660 + BFD_RELOC_PPC_GOT_DTPREL16_HA,
38661 + BFD_RELOC_PPC64_TPREL16_DS,
38662 + BFD_RELOC_PPC64_TPREL16_LO_DS,
38663 + BFD_RELOC_PPC64_TPREL16_HIGHER,
38664 + BFD_RELOC_PPC64_TPREL16_HIGHERA,
38665 + BFD_RELOC_PPC64_TPREL16_HIGHEST,
38666 + BFD_RELOC_PPC64_TPREL16_HIGHESTA,
38667 + BFD_RELOC_PPC64_DTPREL16_DS,
38668 + BFD_RELOC_PPC64_DTPREL16_LO_DS,
38669 + BFD_RELOC_PPC64_DTPREL16_HIGHER,
38670 + BFD_RELOC_PPC64_DTPREL16_HIGHERA,
38671 + BFD_RELOC_PPC64_DTPREL16_HIGHEST,
38672 + BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
38673 +
38674 +/* IBM 370/390 relocations */
38675 + BFD_RELOC_I370_D12,
38676 +
38677 +/* The type of reloc used to build a constructor table - at the moment
38678 +probably a 32 bit wide absolute relocation, but the target can choose.
38679 +It generally does map to one of the other relocation types. */
38680 + BFD_RELOC_CTOR,
38681 +
38682 +/* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
38683 +not stored in the instruction. */
38684 + BFD_RELOC_ARM_PCREL_BRANCH,
38685 +
38686 +/* ARM 26 bit pc-relative branch. The lowest bit must be zero and is
38687 +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
38688 +field in the instruction. */
38689 + BFD_RELOC_ARM_PCREL_BLX,
38690 +
38691 +/* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
38692 +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
38693 +field in the instruction. */
38694 + BFD_RELOC_THUMB_PCREL_BLX,
38695 +
38696 +/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */
38697 + BFD_RELOC_ARM_PCREL_CALL,
38698 +
38699 +/* ARM 26-bit pc-relative branch for B or conditional BL instruction. */
38700 + BFD_RELOC_ARM_PCREL_JUMP,
38701 +
38702 +/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
38703 +The lowest bit must be zero and is not stored in the instruction.
38704 +Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
38705 +"nn" one smaller in all cases. Note further that BRANCH23
38706 +corresponds to R_ARM_THM_CALL. */
38707 + BFD_RELOC_THUMB_PCREL_BRANCH7,
38708 + BFD_RELOC_THUMB_PCREL_BRANCH9,
38709 + BFD_RELOC_THUMB_PCREL_BRANCH12,
38710 + BFD_RELOC_THUMB_PCREL_BRANCH20,
38711 + BFD_RELOC_THUMB_PCREL_BRANCH23,
38712 + BFD_RELOC_THUMB_PCREL_BRANCH25,
38713 +
38714 +/* 12-bit immediate offset, used in ARM-format ldr and str instructions. */
38715 + BFD_RELOC_ARM_OFFSET_IMM,
38716 +
38717 +/* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */
38718 + BFD_RELOC_ARM_THUMB_OFFSET,
38719 +
38720 +/* Pc-relative or absolute relocation depending on target. Used for
38721 +entries in .init_array sections. */
38722 + BFD_RELOC_ARM_TARGET1,
38723 +
38724 +/* Read-only segment base relative address. */
38725 + BFD_RELOC_ARM_ROSEGREL32,
38726 +
38727 +/* Data segment base relative address. */
38728 + BFD_RELOC_ARM_SBREL32,
38729 +
38730 +/* This reloc is used for references to RTTI data from exception handling
38731 +tables. The actual definition depends on the target. It may be a
38732 +pc-relative or some form of GOT-indirect relocation. */
38733 + BFD_RELOC_ARM_TARGET2,
38734 +
38735 +/* 31-bit PC relative address. */
38736 + BFD_RELOC_ARM_PREL31,
38737 +
38738 +/* Low and High halfword relocations for MOVW and MOVT instructions. */
38739 + BFD_RELOC_ARM_MOVW,
38740 + BFD_RELOC_ARM_MOVT,
38741 + BFD_RELOC_ARM_MOVW_PCREL,
38742 + BFD_RELOC_ARM_MOVT_PCREL,
38743 + BFD_RELOC_ARM_THUMB_MOVW,
38744 + BFD_RELOC_ARM_THUMB_MOVT,
38745 + BFD_RELOC_ARM_THUMB_MOVW_PCREL,
38746 + BFD_RELOC_ARM_THUMB_MOVT_PCREL,
38747 +
38748 +/* Relocations for setting up GOTs and PLTs for shared libraries. */
38749 + BFD_RELOC_ARM_JUMP_SLOT,
38750 + BFD_RELOC_ARM_GLOB_DAT,
38751 + BFD_RELOC_ARM_GOT32,
38752 + BFD_RELOC_ARM_PLT32,
38753 + BFD_RELOC_ARM_RELATIVE,
38754 + BFD_RELOC_ARM_GOTOFF,
38755 + BFD_RELOC_ARM_GOTPC,
38756 +
38757 +/* ARM thread-local storage relocations. */
38758 + BFD_RELOC_ARM_TLS_GD32,
38759 + BFD_RELOC_ARM_TLS_LDO32,
38760 + BFD_RELOC_ARM_TLS_LDM32,
38761 + BFD_RELOC_ARM_TLS_DTPOFF32,
38762 + BFD_RELOC_ARM_TLS_DTPMOD32,
38763 + BFD_RELOC_ARM_TLS_TPOFF32,
38764 + BFD_RELOC_ARM_TLS_IE32,
38765 + BFD_RELOC_ARM_TLS_LE32,
38766 +
38767 +/* ARM group relocations. */
38768 + BFD_RELOC_ARM_ALU_PC_G0_NC,
38769 + BFD_RELOC_ARM_ALU_PC_G0,
38770 + BFD_RELOC_ARM_ALU_PC_G1_NC,
38771 + BFD_RELOC_ARM_ALU_PC_G1,
38772 + BFD_RELOC_ARM_ALU_PC_G2,
38773 + BFD_RELOC_ARM_LDR_PC_G0,
38774 + BFD_RELOC_ARM_LDR_PC_G1,
38775 + BFD_RELOC_ARM_LDR_PC_G2,
38776 + BFD_RELOC_ARM_LDRS_PC_G0,
38777 + BFD_RELOC_ARM_LDRS_PC_G1,
38778 + BFD_RELOC_ARM_LDRS_PC_G2,
38779 + BFD_RELOC_ARM_LDC_PC_G0,
38780 + BFD_RELOC_ARM_LDC_PC_G1,
38781 + BFD_RELOC_ARM_LDC_PC_G2,
38782 + BFD_RELOC_ARM_ALU_SB_G0_NC,
38783 + BFD_RELOC_ARM_ALU_SB_G0,
38784 + BFD_RELOC_ARM_ALU_SB_G1_NC,
38785 + BFD_RELOC_ARM_ALU_SB_G1,
38786 + BFD_RELOC_ARM_ALU_SB_G2,
38787 + BFD_RELOC_ARM_LDR_SB_G0,
38788 + BFD_RELOC_ARM_LDR_SB_G1,
38789 + BFD_RELOC_ARM_LDR_SB_G2,
38790 + BFD_RELOC_ARM_LDRS_SB_G0,
38791 + BFD_RELOC_ARM_LDRS_SB_G1,
38792 + BFD_RELOC_ARM_LDRS_SB_G2,
38793 + BFD_RELOC_ARM_LDC_SB_G0,
38794 + BFD_RELOC_ARM_LDC_SB_G1,
38795 + BFD_RELOC_ARM_LDC_SB_G2,
38796 +
38797 +/* These relocs are only used within the ARM assembler. They are not
38798 +(at present) written to any object files. */
38799 + BFD_RELOC_ARM_IMMEDIATE,
38800 + BFD_RELOC_ARM_ADRL_IMMEDIATE,
38801 + BFD_RELOC_ARM_T32_IMMEDIATE,
38802 + BFD_RELOC_ARM_T32_ADD_IMM,
38803 + BFD_RELOC_ARM_T32_IMM12,
38804 + BFD_RELOC_ARM_T32_ADD_PC12,
38805 + BFD_RELOC_ARM_SHIFT_IMM,
38806 + BFD_RELOC_ARM_SMC,
38807 + BFD_RELOC_ARM_SWI,
38808 + BFD_RELOC_ARM_MULTI,
38809 + BFD_RELOC_ARM_CP_OFF_IMM,
38810 + BFD_RELOC_ARM_CP_OFF_IMM_S2,
38811 + BFD_RELOC_ARM_T32_CP_OFF_IMM,
38812 + BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
38813 + BFD_RELOC_ARM_ADR_IMM,
38814 + BFD_RELOC_ARM_LDR_IMM,
38815 + BFD_RELOC_ARM_LITERAL,
38816 + BFD_RELOC_ARM_IN_POOL,
38817 + BFD_RELOC_ARM_OFFSET_IMM8,
38818 + BFD_RELOC_ARM_T32_OFFSET_U8,
38819 + BFD_RELOC_ARM_T32_OFFSET_IMM,
38820 + BFD_RELOC_ARM_HWLITERAL,
38821 + BFD_RELOC_ARM_THUMB_ADD,
38822 + BFD_RELOC_ARM_THUMB_IMM,
38823 + BFD_RELOC_ARM_THUMB_SHIFT,
38824 +
38825 +/* Renesas / SuperH SH relocs. Not all of these appear in object files. */
38826 + BFD_RELOC_SH_PCDISP8BY2,
38827 + BFD_RELOC_SH_PCDISP12BY2,
38828 + BFD_RELOC_SH_IMM3,
38829 + BFD_RELOC_SH_IMM3U,
38830 + BFD_RELOC_SH_DISP12,
38831 + BFD_RELOC_SH_DISP12BY2,
38832 + BFD_RELOC_SH_DISP12BY4,
38833 + BFD_RELOC_SH_DISP12BY8,
38834 + BFD_RELOC_SH_DISP20,
38835 + BFD_RELOC_SH_DISP20BY8,
38836 + BFD_RELOC_SH_IMM4,
38837 + BFD_RELOC_SH_IMM4BY2,
38838 + BFD_RELOC_SH_IMM4BY4,
38839 + BFD_RELOC_SH_IMM8,
38840 + BFD_RELOC_SH_IMM8BY2,
38841 + BFD_RELOC_SH_IMM8BY4,
38842 + BFD_RELOC_SH_PCRELIMM8BY2,
38843 + BFD_RELOC_SH_PCRELIMM8BY4,
38844 + BFD_RELOC_SH_SWITCH16,
38845 + BFD_RELOC_SH_SWITCH32,
38846 + BFD_RELOC_SH_USES,
38847 + BFD_RELOC_SH_COUNT,
38848 + BFD_RELOC_SH_ALIGN,
38849 + BFD_RELOC_SH_CODE,
38850 + BFD_RELOC_SH_DATA,
38851 + BFD_RELOC_SH_LABEL,
38852 + BFD_RELOC_SH_LOOP_START,
38853 + BFD_RELOC_SH_LOOP_END,
38854 + BFD_RELOC_SH_COPY,
38855 + BFD_RELOC_SH_GLOB_DAT,
38856 + BFD_RELOC_SH_JMP_SLOT,
38857 + BFD_RELOC_SH_RELATIVE,
38858 + BFD_RELOC_SH_GOTPC,
38859 + BFD_RELOC_SH_GOT_LOW16,
38860 + BFD_RELOC_SH_GOT_MEDLOW16,
38861 + BFD_RELOC_SH_GOT_MEDHI16,
38862 + BFD_RELOC_SH_GOT_HI16,
38863 + BFD_RELOC_SH_GOTPLT_LOW16,
38864 + BFD_RELOC_SH_GOTPLT_MEDLOW16,
38865 + BFD_RELOC_SH_GOTPLT_MEDHI16,
38866 + BFD_RELOC_SH_GOTPLT_HI16,
38867 + BFD_RELOC_SH_PLT_LOW16,
38868 + BFD_RELOC_SH_PLT_MEDLOW16,
38869 + BFD_RELOC_SH_PLT_MEDHI16,
38870 + BFD_RELOC_SH_PLT_HI16,
38871 + BFD_RELOC_SH_GOTOFF_LOW16,
38872 + BFD_RELOC_SH_GOTOFF_MEDLOW16,
38873 + BFD_RELOC_SH_GOTOFF_MEDHI16,
38874 + BFD_RELOC_SH_GOTOFF_HI16,
38875 + BFD_RELOC_SH_GOTPC_LOW16,
38876 + BFD_RELOC_SH_GOTPC_MEDLOW16,
38877 + BFD_RELOC_SH_GOTPC_MEDHI16,
38878 + BFD_RELOC_SH_GOTPC_HI16,
38879 + BFD_RELOC_SH_COPY64,
38880 + BFD_RELOC_SH_GLOB_DAT64,
38881 + BFD_RELOC_SH_JMP_SLOT64,
38882 + BFD_RELOC_SH_RELATIVE64,
38883 + BFD_RELOC_SH_GOT10BY4,
38884 + BFD_RELOC_SH_GOT10BY8,
38885 + BFD_RELOC_SH_GOTPLT10BY4,
38886 + BFD_RELOC_SH_GOTPLT10BY8,
38887 + BFD_RELOC_SH_GOTPLT32,
38888 + BFD_RELOC_SH_SHMEDIA_CODE,
38889 + BFD_RELOC_SH_IMMU5,
38890 + BFD_RELOC_SH_IMMS6,
38891 + BFD_RELOC_SH_IMMS6BY32,
38892 + BFD_RELOC_SH_IMMU6,
38893 + BFD_RELOC_SH_IMMS10,
38894 + BFD_RELOC_SH_IMMS10BY2,
38895 + BFD_RELOC_SH_IMMS10BY4,
38896 + BFD_RELOC_SH_IMMS10BY8,
38897 + BFD_RELOC_SH_IMMS16,
38898 + BFD_RELOC_SH_IMMU16,
38899 + BFD_RELOC_SH_IMM_LOW16,
38900 + BFD_RELOC_SH_IMM_LOW16_PCREL,
38901 + BFD_RELOC_SH_IMM_MEDLOW16,
38902 + BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
38903 + BFD_RELOC_SH_IMM_MEDHI16,
38904 + BFD_RELOC_SH_IMM_MEDHI16_PCREL,
38905 + BFD_RELOC_SH_IMM_HI16,
38906 + BFD_RELOC_SH_IMM_HI16_PCREL,
38907 + BFD_RELOC_SH_PT_16,
38908 + BFD_RELOC_SH_TLS_GD_32,
38909 + BFD_RELOC_SH_TLS_LD_32,
38910 + BFD_RELOC_SH_TLS_LDO_32,
38911 + BFD_RELOC_SH_TLS_IE_32,
38912 + BFD_RELOC_SH_TLS_LE_32,
38913 + BFD_RELOC_SH_TLS_DTPMOD32,
38914 + BFD_RELOC_SH_TLS_DTPOFF32,
38915 + BFD_RELOC_SH_TLS_TPOFF32,
38916 +
38917 +/* ARC Cores relocs.
38918 +ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
38919 +not stored in the instruction. The high 20 bits are installed in bits 26
38920 +through 7 of the instruction. */
38921 + BFD_RELOC_ARC_B22_PCREL,
38922 +
38923 +/* ARC 26 bit absolute branch. The lowest two bits must be zero and are not
38924 +stored in the instruction. The high 24 bits are installed in bits 23
38925 +through 0. */
38926 + BFD_RELOC_ARC_B26,
38927 +
38928 +/* ADI Blackfin 16 bit immediate absolute reloc. */
38929 + BFD_RELOC_BFIN_16_IMM,
38930 +
38931 +/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */
38932 + BFD_RELOC_BFIN_16_HIGH,
38933 +
38934 +/* ADI Blackfin 'a' part of LSETUP. */
38935 + BFD_RELOC_BFIN_4_PCREL,
38936 +
38937 +/* ADI Blackfin. */
38938 + BFD_RELOC_BFIN_5_PCREL,
38939 +
38940 +/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */
38941 + BFD_RELOC_BFIN_16_LOW,
38942 +
38943 +/* ADI Blackfin. */
38944 + BFD_RELOC_BFIN_10_PCREL,
38945 +
38946 +/* ADI Blackfin 'b' part of LSETUP. */
38947 + BFD_RELOC_BFIN_11_PCREL,
38948 +
38949 +/* ADI Blackfin. */
38950 + BFD_RELOC_BFIN_12_PCREL_JUMP,
38951 +
38952 +/* ADI Blackfin Short jump, pcrel. */
38953 + BFD_RELOC_BFIN_12_PCREL_JUMP_S,
38954 +
38955 +/* ADI Blackfin Call.x not implemented. */
38956 + BFD_RELOC_BFIN_24_PCREL_CALL_X,
38957 +
38958 +/* ADI Blackfin Long Jump pcrel. */
38959 + BFD_RELOC_BFIN_24_PCREL_JUMP_L,
38960 +
38961 +/* ADI Blackfin FD-PIC relocations. */
38962 + BFD_RELOC_BFIN_GOT17M4,
38963 + BFD_RELOC_BFIN_GOTHI,
38964 + BFD_RELOC_BFIN_GOTLO,
38965 + BFD_RELOC_BFIN_FUNCDESC,
38966 + BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
38967 + BFD_RELOC_BFIN_FUNCDESC_GOTHI,
38968 + BFD_RELOC_BFIN_FUNCDESC_GOTLO,
38969 + BFD_RELOC_BFIN_FUNCDESC_VALUE,
38970 + BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
38971 + BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
38972 + BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
38973 + BFD_RELOC_BFIN_GOTOFF17M4,
38974 + BFD_RELOC_BFIN_GOTOFFHI,
38975 + BFD_RELOC_BFIN_GOTOFFLO,
38976 +
38977 +/* ADI Blackfin GOT relocation. */
38978 + BFD_RELOC_BFIN_GOT,
38979 +
38980 +/* ADI Blackfin PLTPC relocation. */
38981 + BFD_RELOC_BFIN_PLTPC,
38982 +
38983 +/* ADI Blackfin arithmetic relocation. */
38984 + BFD_ARELOC_BFIN_PUSH,
38985 +
38986 +/* ADI Blackfin arithmetic relocation. */
38987 + BFD_ARELOC_BFIN_CONST,
38988 +
38989 +/* ADI Blackfin arithmetic relocation. */
38990 + BFD_ARELOC_BFIN_ADD,
38991 +
38992 +/* ADI Blackfin arithmetic relocation. */
38993 + BFD_ARELOC_BFIN_SUB,
38994 +
38995 +/* ADI Blackfin arithmetic relocation. */
38996 + BFD_ARELOC_BFIN_MULT,
38997 +
38998 +/* ADI Blackfin arithmetic relocation. */
38999 + BFD_ARELOC_BFIN_DIV,
39000 +
39001 +/* ADI Blackfin arithmetic relocation. */
39002 + BFD_ARELOC_BFIN_MOD,
39003 +
39004 +/* ADI Blackfin arithmetic relocation. */
39005 + BFD_ARELOC_BFIN_LSHIFT,
39006 +
39007 +/* ADI Blackfin arithmetic relocation. */
39008 + BFD_ARELOC_BFIN_RSHIFT,
39009 +
39010 +/* ADI Blackfin arithmetic relocation. */
39011 + BFD_ARELOC_BFIN_AND,
39012 +
39013 +/* ADI Blackfin arithmetic relocation. */
39014 + BFD_ARELOC_BFIN_OR,
39015 +
39016 +/* ADI Blackfin arithmetic relocation. */
39017 + BFD_ARELOC_BFIN_XOR,
39018 +
39019 +/* ADI Blackfin arithmetic relocation. */
39020 + BFD_ARELOC_BFIN_LAND,
39021 +
39022 +/* ADI Blackfin arithmetic relocation. */
39023 + BFD_ARELOC_BFIN_LOR,
39024 +
39025 +/* ADI Blackfin arithmetic relocation. */
39026 + BFD_ARELOC_BFIN_LEN,
39027 +
39028 +/* ADI Blackfin arithmetic relocation. */
39029 + BFD_ARELOC_BFIN_NEG,
39030 +
39031 +/* ADI Blackfin arithmetic relocation. */
39032 + BFD_ARELOC_BFIN_COMP,
39033 +
39034 +/* ADI Blackfin arithmetic relocation. */
39035 + BFD_ARELOC_BFIN_PAGE,
39036 +
39037 +/* ADI Blackfin arithmetic relocation. */
39038 + BFD_ARELOC_BFIN_HWPAGE,
39039 +
39040 +/* ADI Blackfin arithmetic relocation. */
39041 + BFD_ARELOC_BFIN_ADDR,
39042 +
39043 +/* Mitsubishi D10V relocs.
39044 +This is a 10-bit reloc with the right 2 bits
39045 +assumed to be 0. */
39046 + BFD_RELOC_D10V_10_PCREL_R,
39047 +
39048 +/* Mitsubishi D10V relocs.
39049 +This is a 10-bit reloc with the right 2 bits
39050 +assumed to be 0. This is the same as the previous reloc
39051 +except it is in the left container, i.e.,
39052 +shifted left 15 bits. */
39053 + BFD_RELOC_D10V_10_PCREL_L,
39054 +
39055 +/* This is an 18-bit reloc with the right 2 bits
39056 +assumed to be 0. */
39057 + BFD_RELOC_D10V_18,
39058 +
39059 +/* This is an 18-bit reloc with the right 2 bits
39060 +assumed to be 0. */
39061 + BFD_RELOC_D10V_18_PCREL,
39062 +
39063 +/* Mitsubishi D30V relocs.
39064 +This is a 6-bit absolute reloc. */
39065 + BFD_RELOC_D30V_6,
39066 +
39067 +/* This is a 6-bit pc-relative reloc with
39068 +the right 3 bits assumed to be 0. */
39069 + BFD_RELOC_D30V_9_PCREL,
39070 +
39071 +/* This is a 6-bit pc-relative reloc with
39072 +the right 3 bits assumed to be 0. Same
39073 +as the previous reloc but on the right side
39074 +of the container. */
39075 + BFD_RELOC_D30V_9_PCREL_R,
39076 +
39077 +/* This is a 12-bit absolute reloc with the
39078 +right 3 bitsassumed to be 0. */
39079 + BFD_RELOC_D30V_15,
39080 +
39081 +/* This is a 12-bit pc-relative reloc with
39082 +the right 3 bits assumed to be 0. */
39083 + BFD_RELOC_D30V_15_PCREL,
39084 +
39085 +/* This is a 12-bit pc-relative reloc with
39086 +the right 3 bits assumed to be 0. Same
39087 +as the previous reloc but on the right side
39088 +of the container. */
39089 + BFD_RELOC_D30V_15_PCREL_R,
39090 +
39091 +/* This is an 18-bit absolute reloc with
39092 +the right 3 bits assumed to be 0. */
39093 + BFD_RELOC_D30V_21,
39094 +
39095 +/* This is an 18-bit pc-relative reloc with
39096 +the right 3 bits assumed to be 0. */
39097 + BFD_RELOC_D30V_21_PCREL,
39098 +
39099 +/* This is an 18-bit pc-relative reloc with
39100 +the right 3 bits assumed to be 0. Same
39101 +as the previous reloc but on the right side
39102 +of the container. */
39103 + BFD_RELOC_D30V_21_PCREL_R,
39104 +
39105 +/* This is a 32-bit absolute reloc. */
39106 + BFD_RELOC_D30V_32,
39107 +
39108 +/* This is a 32-bit pc-relative reloc. */
39109 + BFD_RELOC_D30V_32_PCREL,
39110 +
39111 +/* DLX relocs */
39112 + BFD_RELOC_DLX_HI16_S,
39113 +
39114 +/* DLX relocs */
39115 + BFD_RELOC_DLX_LO16,
39116 +
39117 +/* DLX relocs */
39118 + BFD_RELOC_DLX_JMP26,
39119 +
39120 +/* Renesas M16C/M32C Relocations. */
39121 + BFD_RELOC_M32C_HI8,
39122 + BFD_RELOC_M32C_RL_JUMP,
39123 + BFD_RELOC_M32C_RL_1ADDR,
39124 + BFD_RELOC_M32C_RL_2ADDR,
39125 +
39126 +/* Renesas M32R (formerly Mitsubishi M32R) relocs.
39127 +This is a 24 bit absolute address. */
39128 + BFD_RELOC_M32R_24,
39129 +
39130 +/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */
39131 + BFD_RELOC_M32R_10_PCREL,
39132 +
39133 +/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */
39134 + BFD_RELOC_M32R_18_PCREL,
39135 +
39136 +/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */
39137 + BFD_RELOC_M32R_26_PCREL,
39138 +
39139 +/* This is a 16-bit reloc containing the high 16 bits of an address
39140 +used when the lower 16 bits are treated as unsigned. */
39141 + BFD_RELOC_M32R_HI16_ULO,
39142 +
39143 +/* This is a 16-bit reloc containing the high 16 bits of an address
39144 +used when the lower 16 bits are treated as signed. */
39145 + BFD_RELOC_M32R_HI16_SLO,
39146 +
39147 +/* This is a 16-bit reloc containing the lower 16 bits of an address. */
39148 + BFD_RELOC_M32R_LO16,
39149 +
39150 +/* This is a 16-bit reloc containing the small data area offset for use in
39151 +add3, load, and store instructions. */
39152 + BFD_RELOC_M32R_SDA16,
39153 +
39154 +/* For PIC. */
39155 + BFD_RELOC_M32R_GOT24,
39156 + BFD_RELOC_M32R_26_PLTREL,
39157 + BFD_RELOC_M32R_COPY,
39158 + BFD_RELOC_M32R_GLOB_DAT,
39159 + BFD_RELOC_M32R_JMP_SLOT,
39160 + BFD_RELOC_M32R_RELATIVE,
39161 + BFD_RELOC_M32R_GOTOFF,
39162 + BFD_RELOC_M32R_GOTOFF_HI_ULO,
39163 + BFD_RELOC_M32R_GOTOFF_HI_SLO,
39164 + BFD_RELOC_M32R_GOTOFF_LO,
39165 + BFD_RELOC_M32R_GOTPC24,
39166 + BFD_RELOC_M32R_GOT16_HI_ULO,
39167 + BFD_RELOC_M32R_GOT16_HI_SLO,
39168 + BFD_RELOC_M32R_GOT16_LO,
39169 + BFD_RELOC_M32R_GOTPC_HI_ULO,
39170 + BFD_RELOC_M32R_GOTPC_HI_SLO,
39171 + BFD_RELOC_M32R_GOTPC_LO,
39172 +
39173 +/* This is a 9-bit reloc */
39174 + BFD_RELOC_V850_9_PCREL,
39175 +
39176 +/* This is a 22-bit reloc */
39177 + BFD_RELOC_V850_22_PCREL,
39178 +
39179 +/* This is a 16 bit offset from the short data area pointer. */
39180 + BFD_RELOC_V850_SDA_16_16_OFFSET,
39181 +
39182 +/* This is a 16 bit offset (of which only 15 bits are used) from the
39183 +short data area pointer. */
39184 + BFD_RELOC_V850_SDA_15_16_OFFSET,
39185 +
39186 +/* This is a 16 bit offset from the zero data area pointer. */
39187 + BFD_RELOC_V850_ZDA_16_16_OFFSET,
39188 +
39189 +/* This is a 16 bit offset (of which only 15 bits are used) from the
39190 +zero data area pointer. */
39191 + BFD_RELOC_V850_ZDA_15_16_OFFSET,
39192 +
39193 +/* This is an 8 bit offset (of which only 6 bits are used) from the
39194 +tiny data area pointer. */
39195 + BFD_RELOC_V850_TDA_6_8_OFFSET,
39196 +
39197 +/* This is an 8bit offset (of which only 7 bits are used) from the tiny
39198 +data area pointer. */
39199 + BFD_RELOC_V850_TDA_7_8_OFFSET,
39200 +
39201 +/* This is a 7 bit offset from the tiny data area pointer. */
39202 + BFD_RELOC_V850_TDA_7_7_OFFSET,
39203 +
39204 +/* This is a 16 bit offset from the tiny data area pointer. */
39205 + BFD_RELOC_V850_TDA_16_16_OFFSET,
39206 +
39207 +/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
39208 +data area pointer. */
39209 + BFD_RELOC_V850_TDA_4_5_OFFSET,
39210 +
39211 +/* This is a 4 bit offset from the tiny data area pointer. */
39212 + BFD_RELOC_V850_TDA_4_4_OFFSET,
39213 +
39214 +/* This is a 16 bit offset from the short data area pointer, with the
39215 +bits placed non-contiguously in the instruction. */
39216 + BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
39217 +
39218 +/* This is a 16 bit offset from the zero data area pointer, with the
39219 +bits placed non-contiguously in the instruction. */
39220 + BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
39221 +
39222 +/* This is a 6 bit offset from the call table base pointer. */
39223 + BFD_RELOC_V850_CALLT_6_7_OFFSET,
39224 +
39225 +/* This is a 16 bit offset from the call table base pointer. */
39226 + BFD_RELOC_V850_CALLT_16_16_OFFSET,
39227 +
39228 +/* Used for relaxing indirect function calls. */
39229 + BFD_RELOC_V850_LONGCALL,
39230 +
39231 +/* Used for relaxing indirect jumps. */
39232 + BFD_RELOC_V850_LONGJUMP,
39233 +
39234 +/* Used to maintain alignment whilst relaxing. */
39235 + BFD_RELOC_V850_ALIGN,
39236 +
39237 +/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
39238 +instructions. */
39239 + BFD_RELOC_V850_LO16_SPLIT_OFFSET,
39240 +
39241 +/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
39242 +instruction. */
39243 + BFD_RELOC_MN10300_32_PCREL,
39244 +
39245 +/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
39246 +instruction. */
39247 + BFD_RELOC_MN10300_16_PCREL,
39248 +
39249 +/* This is a 8bit DP reloc for the tms320c30, where the most
39250 +significant 8 bits of a 24 bit word are placed into the least
39251 +significant 8 bits of the opcode. */
39252 + BFD_RELOC_TIC30_LDP,
39253 +
39254 +/* This is a 7bit reloc for the tms320c54x, where the least
39255 +significant 7 bits of a 16 bit word are placed into the least
39256 +significant 7 bits of the opcode. */
39257 + BFD_RELOC_TIC54X_PARTLS7,
39258 +
39259 +/* This is a 9bit DP reloc for the tms320c54x, where the most
39260 +significant 9 bits of a 16 bit word are placed into the least
39261 +significant 9 bits of the opcode. */
39262 + BFD_RELOC_TIC54X_PARTMS9,
39263 +
39264 +/* This is an extended address 23-bit reloc for the tms320c54x. */
39265 + BFD_RELOC_TIC54X_23,
39266 +
39267 +/* This is a 16-bit reloc for the tms320c54x, where the least
39268 +significant 16 bits of a 23-bit extended address are placed into
39269 +the opcode. */
39270 + BFD_RELOC_TIC54X_16_OF_23,
39271 +
39272 +/* This is a reloc for the tms320c54x, where the most
39273 +significant 7 bits of a 23-bit extended address are placed into
39274 +the opcode. */
39275 + BFD_RELOC_TIC54X_MS7_OF_23,
39276 +
39277 +/* This is a 48 bit reloc for the FR30 that stores 32 bits. */
39278 + BFD_RELOC_FR30_48,
39279 +
39280 +/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
39281 +two sections. */
39282 + BFD_RELOC_FR30_20,
39283 +
39284 +/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
39285 +4 bits. */
39286 + BFD_RELOC_FR30_6_IN_4,
39287 +
39288 +/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
39289 +into 8 bits. */
39290 + BFD_RELOC_FR30_8_IN_8,
39291 +
39292 +/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
39293 +into 8 bits. */
39294 + BFD_RELOC_FR30_9_IN_8,
39295 +
39296 +/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
39297 +into 8 bits. */
39298 + BFD_RELOC_FR30_10_IN_8,
39299 +
39300 +/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
39301 +short offset into 8 bits. */
39302 + BFD_RELOC_FR30_9_PCREL,
39303 +
39304 +/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
39305 +short offset into 11 bits. */
39306 + BFD_RELOC_FR30_12_PCREL,
39307 +
39308 +/* Motorola Mcore relocations. */
39309 + BFD_RELOC_MCORE_PCREL_IMM8BY4,
39310 + BFD_RELOC_MCORE_PCREL_IMM11BY2,
39311 + BFD_RELOC_MCORE_PCREL_IMM4BY2,
39312 + BFD_RELOC_MCORE_PCREL_32,
39313 + BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
39314 + BFD_RELOC_MCORE_RVA,
39315 +
39316 +/* Toshiba Media Processor Relocations. */
39317 + BFD_RELOC_MEP_8,
39318 + BFD_RELOC_MEP_16,
39319 + BFD_RELOC_MEP_32,
39320 + BFD_RELOC_MEP_PCREL8A2,
39321 + BFD_RELOC_MEP_PCREL12A2,
39322 + BFD_RELOC_MEP_PCREL17A2,
39323 + BFD_RELOC_MEP_PCREL24A2,
39324 + BFD_RELOC_MEP_PCABS24A2,
39325 + BFD_RELOC_MEP_LOW16,
39326 + BFD_RELOC_MEP_HI16U,
39327 + BFD_RELOC_MEP_HI16S,
39328 + BFD_RELOC_MEP_GPREL,
39329 + BFD_RELOC_MEP_TPREL,
39330 + BFD_RELOC_MEP_TPREL7,
39331 + BFD_RELOC_MEP_TPREL7A2,
39332 + BFD_RELOC_MEP_TPREL7A4,
39333 + BFD_RELOC_MEP_UIMM24,
39334 + BFD_RELOC_MEP_ADDR24A4,
39335 + BFD_RELOC_MEP_GNU_VTINHERIT,
39336 + BFD_RELOC_MEP_GNU_VTENTRY,
39337 +
39338 +
39339 +/* These are relocations for the GETA instruction. */
39340 + BFD_RELOC_MMIX_GETA,
39341 + BFD_RELOC_MMIX_GETA_1,
39342 + BFD_RELOC_MMIX_GETA_2,
39343 + BFD_RELOC_MMIX_GETA_3,
39344 +
39345 +/* These are relocations for a conditional branch instruction. */
39346 + BFD_RELOC_MMIX_CBRANCH,
39347 + BFD_RELOC_MMIX_CBRANCH_J,
39348 + BFD_RELOC_MMIX_CBRANCH_1,
39349 + BFD_RELOC_MMIX_CBRANCH_2,
39350 + BFD_RELOC_MMIX_CBRANCH_3,
39351 +
39352 +/* These are relocations for the PUSHJ instruction. */
39353 + BFD_RELOC_MMIX_PUSHJ,
39354 + BFD_RELOC_MMIX_PUSHJ_1,
39355 + BFD_RELOC_MMIX_PUSHJ_2,
39356 + BFD_RELOC_MMIX_PUSHJ_3,
39357 + BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
39358 +
39359 +/* These are relocations for the JMP instruction. */
39360 + BFD_RELOC_MMIX_JMP,
39361 + BFD_RELOC_MMIX_JMP_1,
39362 + BFD_RELOC_MMIX_JMP_2,
39363 + BFD_RELOC_MMIX_JMP_3,
39364 +
39365 +/* This is a relocation for a relative address as in a GETA instruction or
39366 +a branch. */
39367 + BFD_RELOC_MMIX_ADDR19,
39368 +
39369 +/* This is a relocation for a relative address as in a JMP instruction. */
39370 + BFD_RELOC_MMIX_ADDR27,
39371 +
39372 +/* This is a relocation for an instruction field that may be a general
39373 +register or a value 0..255. */
39374 + BFD_RELOC_MMIX_REG_OR_BYTE,
39375 +
39376 +/* This is a relocation for an instruction field that may be a general
39377 +register. */
39378 + BFD_RELOC_MMIX_REG,
39379 +
39380 +/* This is a relocation for two instruction fields holding a register and
39381 +an offset, the equivalent of the relocation. */
39382 + BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
39383 +
39384 +/* This relocation is an assertion that the expression is not allocated as
39385 +a global register. It does not modify contents. */
39386 + BFD_RELOC_MMIX_LOCAL,
39387 +
39388 +/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
39389 +short offset into 7 bits. */
39390 + BFD_RELOC_AVR_7_PCREL,
39391 +
39392 +/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
39393 +short offset into 12 bits. */
39394 + BFD_RELOC_AVR_13_PCREL,
39395 +
39396 +/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
39397 +program memory address) into 16 bits. */
39398 + BFD_RELOC_AVR_16_PM,
39399 +
39400 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
39401 +data memory address) into 8 bit immediate value of LDI insn. */
39402 + BFD_RELOC_AVR_LO8_LDI,
39403 +
39404 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
39405 +of data memory address) into 8 bit immediate value of LDI insn. */
39406 + BFD_RELOC_AVR_HI8_LDI,
39407 +
39408 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
39409 +of program memory address) into 8 bit immediate value of LDI insn. */
39410 + BFD_RELOC_AVR_HH8_LDI,
39411 +
39412 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
39413 +of 32 bit value) into 8 bit immediate value of LDI insn. */
39414 + BFD_RELOC_AVR_MS8_LDI,
39415 +
39416 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
39417 +(usually data memory address) into 8 bit immediate value of SUBI insn. */
39418 + BFD_RELOC_AVR_LO8_LDI_NEG,
39419 +
39420 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
39421 +(high 8 bit of data memory address) into 8 bit immediate value of
39422 +SUBI insn. */
39423 + BFD_RELOC_AVR_HI8_LDI_NEG,
39424 +
39425 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
39426 +(most high 8 bit of program memory address) into 8 bit immediate value
39427 +of LDI or SUBI insn. */
39428 + BFD_RELOC_AVR_HH8_LDI_NEG,
39429 +
39430 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
39431 +of 32 bit value) into 8 bit immediate value of LDI insn. */
39432 + BFD_RELOC_AVR_MS8_LDI_NEG,
39433 +
39434 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
39435 +command address) into 8 bit immediate value of LDI insn. */
39436 + BFD_RELOC_AVR_LO8_LDI_PM,
39437 +
39438 +/* This is a 16 bit reloc for the AVR that stores 8 bit value
39439 +(command address) into 8 bit immediate value of LDI insn. If the address
39440 +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
39441 +in the lower 128k. */
39442 + BFD_RELOC_AVR_LO8_LDI_GS,
39443 +
39444 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
39445 +of command address) into 8 bit immediate value of LDI insn. */
39446 + BFD_RELOC_AVR_HI8_LDI_PM,
39447 +
39448 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
39449 +of command address) into 8 bit immediate value of LDI insn. If the address
39450 +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
39451 +below 128k. */
39452 + BFD_RELOC_AVR_HI8_LDI_GS,
39453 +
39454 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
39455 +of command address) into 8 bit immediate value of LDI insn. */
39456 + BFD_RELOC_AVR_HH8_LDI_PM,
39457 +
39458 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
39459 +(usually command address) into 8 bit immediate value of SUBI insn. */
39460 + BFD_RELOC_AVR_LO8_LDI_PM_NEG,
39461 +
39462 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
39463 +(high 8 bit of 16 bit command address) into 8 bit immediate value
39464 +of SUBI insn. */
39465 + BFD_RELOC_AVR_HI8_LDI_PM_NEG,
39466 +
39467 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
39468 +(high 6 bit of 22 bit command address) into 8 bit immediate
39469 +value of SUBI insn. */
39470 + BFD_RELOC_AVR_HH8_LDI_PM_NEG,
39471 +
39472 +/* This is a 32 bit reloc for the AVR that stores 23 bit value
39473 +into 22 bits. */
39474 + BFD_RELOC_AVR_CALL,
39475 +
39476 +/* This is a 16 bit reloc for the AVR that stores all needed bits
39477 +for absolute addressing with ldi with overflow check to linktime */
39478 + BFD_RELOC_AVR_LDI,
39479 +
39480 +/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
39481 +instructions */
39482 + BFD_RELOC_AVR_6,
39483 +
39484 +/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
39485 +instructions */
39486 + BFD_RELOC_AVR_6_ADIW,
39487 +
39488 +/* Difference between two labels: L2 - L1. The value of L1 is encoded
39489 +as sym + addend, while the initial difference after assembly is
39490 +inserted into the object file by the assembler. */
39491 + BFD_RELOC_AVR32_DIFF32,
39492 + BFD_RELOC_AVR32_DIFF16,
39493 + BFD_RELOC_AVR32_DIFF8,
39494 +
39495 +/* Reference to a symbol through the Global Offset Table. The linker
39496 +will allocate an entry for symbol in the GOT and insert the offset
39497 +of this entry as the relocation value. */
39498 + BFD_RELOC_AVR32_GOT32,
39499 + BFD_RELOC_AVR32_GOT16,
39500 + BFD_RELOC_AVR32_GOT8,
39501 +
39502 +/* Normal (non-pc-relative) code relocations. Alignment and signedness
39503 +is indicated by the suffixes. S means signed, U means unsigned. W
39504 +means word-aligned, H means halfword-aligned, neither means
39505 +byte-aligned (no alignment.) SUB5 is the same relocation as 16S. */
39506 + BFD_RELOC_AVR32_21S,
39507 + BFD_RELOC_AVR32_16U,
39508 + BFD_RELOC_AVR32_16S,
39509 + BFD_RELOC_AVR32_SUB5,
39510 + BFD_RELOC_AVR32_8S_EXT,
39511 + BFD_RELOC_AVR32_8S,
39512 + BFD_RELOC_AVR32_15S,
39513 +
39514 +/* PC-relative relocations are signed if neither 'U' nor 'S' is
39515 +specified. However, we explicitly tack on a 'B' to indicate no
39516 +alignment, to avoid confusion with data relocs. All of these resolve
39517 +to sym + addend - offset, except the one with 'N' (negated) suffix.
39518 +This particular one resolves to offset - sym - addend. */
39519 + BFD_RELOC_AVR32_22H_PCREL,
39520 + BFD_RELOC_AVR32_18W_PCREL,
39521 + BFD_RELOC_AVR32_16B_PCREL,
39522 + BFD_RELOC_AVR32_16N_PCREL,
39523 + BFD_RELOC_AVR32_14UW_PCREL,
39524 + BFD_RELOC_AVR32_11H_PCREL,
39525 + BFD_RELOC_AVR32_10UW_PCREL,
39526 + BFD_RELOC_AVR32_9H_PCREL,
39527 + BFD_RELOC_AVR32_9UW_PCREL,
39528 +
39529 +/* Subtract the link-time address of the GOT from (symbol + addend)
39530 +and insert the result. */
39531 + BFD_RELOC_AVR32_GOTPC,
39532 +
39533 +/* Reference to a symbol through the GOT. The linker will allocate an
39534 +entry for symbol in the GOT and insert the offset of this entry as
39535 +the relocation value. addend must be zero. As usual, 'S' means
39536 +signed, 'W' means word-aligned, etc. */
39537 + BFD_RELOC_AVR32_GOTCALL,
39538 + BFD_RELOC_AVR32_LDA_GOT,
39539 + BFD_RELOC_AVR32_GOT21S,
39540 + BFD_RELOC_AVR32_GOT18SW,
39541 + BFD_RELOC_AVR32_GOT16S,
39542 +
39543 +/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
39544 +a whole lot of sense. */
39545 + BFD_RELOC_AVR32_32_CPENT,
39546 +
39547 +/* Constant pool references. Some of these relocations are signed,
39548 +others are unsigned. It doesn't really matter, since the constant
39549 +pool always comes after the code that references it. */
39550 + BFD_RELOC_AVR32_CPCALL,
39551 + BFD_RELOC_AVR32_16_CP,
39552 + BFD_RELOC_AVR32_9W_CP,
39553 +
39554 +/* sym must be the absolute symbol. The addend specifies the alignment
39555 +order, e.g. if addend is 2, the linker must add padding so that the
39556 +next address is aligned to a 4-byte boundary. */
39557 + BFD_RELOC_AVR32_ALIGN,
39558 +
39559 +/* Code relocations that will never make it to the output file. */
39560 + BFD_RELOC_AVR32_14UW,
39561 + BFD_RELOC_AVR32_10UW,
39562 + BFD_RELOC_AVR32_10SW,
39563 + BFD_RELOC_AVR32_STHH_W,
39564 + BFD_RELOC_AVR32_7UW,
39565 + BFD_RELOC_AVR32_6S,
39566 + BFD_RELOC_AVR32_6UW,
39567 + BFD_RELOC_AVR32_4UH,
39568 + BFD_RELOC_AVR32_3U,
39569 +
39570 +/* Direct 12 bit. */
39571 + BFD_RELOC_390_12,
39572 +
39573 +/* 12 bit GOT offset. */
39574 + BFD_RELOC_390_GOT12,
39575 +
39576 +/* 32 bit PC relative PLT address. */
39577 + BFD_RELOC_390_PLT32,
39578 +
39579 +/* Copy symbol at runtime. */
39580 + BFD_RELOC_390_COPY,
39581 +
39582 +/* Create GOT entry. */
39583 + BFD_RELOC_390_GLOB_DAT,
39584 +
39585 +/* Create PLT entry. */
39586 + BFD_RELOC_390_JMP_SLOT,
39587 +
39588 +/* Adjust by program base. */
39589 + BFD_RELOC_390_RELATIVE,
39590 +
39591 +/* 32 bit PC relative offset to GOT. */
39592 + BFD_RELOC_390_GOTPC,
39593 +
39594 +/* 16 bit GOT offset. */
39595 + BFD_RELOC_390_GOT16,
39596 +
39597 +/* PC relative 16 bit shifted by 1. */
39598 + BFD_RELOC_390_PC16DBL,
39599 +
39600 +/* 16 bit PC rel. PLT shifted by 1. */
39601 + BFD_RELOC_390_PLT16DBL,
39602 +
39603 +/* PC relative 32 bit shifted by 1. */
39604 + BFD_RELOC_390_PC32DBL,
39605 +
39606 +/* 32 bit PC rel. PLT shifted by 1. */
39607 + BFD_RELOC_390_PLT32DBL,
39608 +
39609 +/* 32 bit PC rel. GOT shifted by 1. */
39610 + BFD_RELOC_390_GOTPCDBL,
39611 +
39612 +/* 64 bit GOT offset. */
39613 + BFD_RELOC_390_GOT64,
39614 +
39615 +/* 64 bit PC relative PLT address. */
39616 + BFD_RELOC_390_PLT64,
39617 +
39618 +/* 32 bit rel. offset to GOT entry. */
39619 + BFD_RELOC_390_GOTENT,
39620 +
39621 +/* 64 bit offset to GOT. */
39622 + BFD_RELOC_390_GOTOFF64,
39623 +
39624 +/* 12-bit offset to symbol-entry within GOT, with PLT handling. */
39625 + BFD_RELOC_390_GOTPLT12,
39626 +
39627 +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
39628 + BFD_RELOC_390_GOTPLT16,
39629 +
39630 +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
39631 + BFD_RELOC_390_GOTPLT32,
39632 +
39633 +/* 64-bit offset to symbol-entry within GOT, with PLT handling. */
39634 + BFD_RELOC_390_GOTPLT64,
39635 +
39636 +/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */
39637 + BFD_RELOC_390_GOTPLTENT,
39638 +
39639 +/* 16-bit rel. offset from the GOT to a PLT entry. */
39640 + BFD_RELOC_390_PLTOFF16,
39641 +
39642 +/* 32-bit rel. offset from the GOT to a PLT entry. */
39643 + BFD_RELOC_390_PLTOFF32,
39644 +
39645 +/* 64-bit rel. offset from the GOT to a PLT entry. */
39646 + BFD_RELOC_390_PLTOFF64,
39647 +
39648 +/* s390 tls relocations. */
39649 + BFD_RELOC_390_TLS_LOAD,
39650 + BFD_RELOC_390_TLS_GDCALL,
39651 + BFD_RELOC_390_TLS_LDCALL,
39652 + BFD_RELOC_390_TLS_GD32,
39653 + BFD_RELOC_390_TLS_GD64,
39654 + BFD_RELOC_390_TLS_GOTIE12,
39655 + BFD_RELOC_390_TLS_GOTIE32,
39656 + BFD_RELOC_390_TLS_GOTIE64,
39657 + BFD_RELOC_390_TLS_LDM32,
39658 + BFD_RELOC_390_TLS_LDM64,
39659 + BFD_RELOC_390_TLS_IE32,
39660 + BFD_RELOC_390_TLS_IE64,
39661 + BFD_RELOC_390_TLS_IEENT,
39662 + BFD_RELOC_390_TLS_LE32,
39663 + BFD_RELOC_390_TLS_LE64,
39664 + BFD_RELOC_390_TLS_LDO32,
39665 + BFD_RELOC_390_TLS_LDO64,
39666 + BFD_RELOC_390_TLS_DTPMOD,
39667 + BFD_RELOC_390_TLS_DTPOFF,
39668 + BFD_RELOC_390_TLS_TPOFF,
39669 +
39670 +/* Long displacement extension. */
39671 + BFD_RELOC_390_20,
39672 + BFD_RELOC_390_GOT20,
39673 + BFD_RELOC_390_GOTPLT20,
39674 + BFD_RELOC_390_TLS_GOTIE20,
39675 +
39676 +/* Score relocations */
39677 + BFD_RELOC_SCORE_DUMMY1,
39678 +
39679 +/* Low 16 bit for load/store */
39680 + BFD_RELOC_SCORE_GPREL15,
39681 +
39682 +/* This is a 24-bit reloc with the right 1 bit assumed to be 0 */
39683 + BFD_RELOC_SCORE_DUMMY2,
39684 + BFD_RELOC_SCORE_JMP,
39685 +
39686 +/* This is a 19-bit reloc with the right 1 bit assumed to be 0 */
39687 + BFD_RELOC_SCORE_BRANCH,
39688 +
39689 +/* This is a 11-bit reloc with the right 1 bit assumed to be 0 */
39690 + BFD_RELOC_SCORE16_JMP,
39691 +
39692 +/* This is a 8-bit reloc with the right 1 bit assumed to be 0 */
39693 + BFD_RELOC_SCORE16_BRANCH,
39694 +
39695 +/* Undocumented Score relocs */
39696 + BFD_RELOC_SCORE_GOT15,
39697 + BFD_RELOC_SCORE_GOT_LO16,
39698 + BFD_RELOC_SCORE_CALL15,
39699 + BFD_RELOC_SCORE_DUMMY_HI16,
39700 +
39701 +/* Scenix IP2K - 9-bit register number / data address */
39702 + BFD_RELOC_IP2K_FR9,
39703 +
39704 +/* Scenix IP2K - 4-bit register/data bank number */
39705 + BFD_RELOC_IP2K_BANK,
39706 +
39707 +/* Scenix IP2K - low 13 bits of instruction word address */
39708 + BFD_RELOC_IP2K_ADDR16CJP,
39709 +
39710 +/* Scenix IP2K - high 3 bits of instruction word address */
39711 + BFD_RELOC_IP2K_PAGE3,
39712 +
39713 +/* Scenix IP2K - ext/low/high 8 bits of data address */
39714 + BFD_RELOC_IP2K_LO8DATA,
39715 + BFD_RELOC_IP2K_HI8DATA,
39716 + BFD_RELOC_IP2K_EX8DATA,
39717 +
39718 +/* Scenix IP2K - low/high 8 bits of instruction word address */
39719 + BFD_RELOC_IP2K_LO8INSN,
39720 + BFD_RELOC_IP2K_HI8INSN,
39721 +
39722 +/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */
39723 + BFD_RELOC_IP2K_PC_SKIP,
39724 +
39725 +/* Scenix IP2K - 16 bit word address in text section. */
39726 + BFD_RELOC_IP2K_TEXT,
39727 +
39728 +/* Scenix IP2K - 7-bit sp or dp offset */
39729 + BFD_RELOC_IP2K_FR_OFFSET,
39730 +
39731 +/* Scenix VPE4K coprocessor - data/insn-space addressing */
39732 + BFD_RELOC_VPE4KMATH_DATA,
39733 + BFD_RELOC_VPE4KMATH_INSN,
39734 +
39735 +/* These two relocations are used by the linker to determine which of
39736 +the entries in a C++ virtual function table are actually used. When
39737 +the --gc-sections option is given, the linker will zero out the entries
39738 +that are not used, so that the code for those functions need not be
39739 +included in the output.
39740 +
39741 +VTABLE_INHERIT is a zero-space relocation used to describe to the
39742 +linker the inheritance tree of a C++ virtual function table. The
39743 +relocation's symbol should be the parent class' vtable, and the
39744 +relocation should be located at the child vtable.
39745 +
39746 +VTABLE_ENTRY is a zero-space relocation that describes the use of a
39747 +virtual function table entry. The reloc's symbol should refer to the
39748 +table of the class mentioned in the code. Off of that base, an offset
39749 +describes the entry that is being used. For Rela hosts, this offset
39750 +is stored in the reloc's addend. For Rel hosts, we are forced to put
39751 +this offset in the reloc's section offset. */
39752 + BFD_RELOC_VTABLE_INHERIT,
39753 + BFD_RELOC_VTABLE_ENTRY,
39754 +
39755 +/* Intel IA64 Relocations. */
39756 + BFD_RELOC_IA64_IMM14,
39757 + BFD_RELOC_IA64_IMM22,
39758 + BFD_RELOC_IA64_IMM64,
39759 + BFD_RELOC_IA64_DIR32MSB,
39760 + BFD_RELOC_IA64_DIR32LSB,
39761 + BFD_RELOC_IA64_DIR64MSB,
39762 + BFD_RELOC_IA64_DIR64LSB,
39763 + BFD_RELOC_IA64_GPREL22,
39764 + BFD_RELOC_IA64_GPREL64I,
39765 + BFD_RELOC_IA64_GPREL32MSB,
39766 + BFD_RELOC_IA64_GPREL32LSB,
39767 + BFD_RELOC_IA64_GPREL64MSB,
39768 + BFD_RELOC_IA64_GPREL64LSB,
39769 + BFD_RELOC_IA64_LTOFF22,
39770 + BFD_RELOC_IA64_LTOFF64I,
39771 + BFD_RELOC_IA64_PLTOFF22,
39772 + BFD_RELOC_IA64_PLTOFF64I,
39773 + BFD_RELOC_IA64_PLTOFF64MSB,
39774 + BFD_RELOC_IA64_PLTOFF64LSB,
39775 + BFD_RELOC_IA64_FPTR64I,
39776 + BFD_RELOC_IA64_FPTR32MSB,
39777 + BFD_RELOC_IA64_FPTR32LSB,
39778 + BFD_RELOC_IA64_FPTR64MSB,
39779 + BFD_RELOC_IA64_FPTR64LSB,
39780 + BFD_RELOC_IA64_PCREL21B,
39781 + BFD_RELOC_IA64_PCREL21BI,
39782 + BFD_RELOC_IA64_PCREL21M,
39783 + BFD_RELOC_IA64_PCREL21F,
39784 + BFD_RELOC_IA64_PCREL22,
39785 + BFD_RELOC_IA64_PCREL60B,
39786 + BFD_RELOC_IA64_PCREL64I,
39787 + BFD_RELOC_IA64_PCREL32MSB,
39788 + BFD_RELOC_IA64_PCREL32LSB,
39789 + BFD_RELOC_IA64_PCREL64MSB,
39790 + BFD_RELOC_IA64_PCREL64LSB,
39791 + BFD_RELOC_IA64_LTOFF_FPTR22,
39792 + BFD_RELOC_IA64_LTOFF_FPTR64I,
39793 + BFD_RELOC_IA64_LTOFF_FPTR32MSB,
39794 + BFD_RELOC_IA64_LTOFF_FPTR32LSB,
39795 + BFD_RELOC_IA64_LTOFF_FPTR64MSB,
39796 + BFD_RELOC_IA64_LTOFF_FPTR64LSB,
39797 + BFD_RELOC_IA64_SEGREL32MSB,
39798 + BFD_RELOC_IA64_SEGREL32LSB,
39799 + BFD_RELOC_IA64_SEGREL64MSB,
39800 + BFD_RELOC_IA64_SEGREL64LSB,
39801 + BFD_RELOC_IA64_SECREL32MSB,
39802 + BFD_RELOC_IA64_SECREL32LSB,
39803 + BFD_RELOC_IA64_SECREL64MSB,
39804 + BFD_RELOC_IA64_SECREL64LSB,
39805 + BFD_RELOC_IA64_REL32MSB,
39806 + BFD_RELOC_IA64_REL32LSB,
39807 + BFD_RELOC_IA64_REL64MSB,
39808 + BFD_RELOC_IA64_REL64LSB,
39809 + BFD_RELOC_IA64_LTV32MSB,
39810 + BFD_RELOC_IA64_LTV32LSB,
39811 + BFD_RELOC_IA64_LTV64MSB,
39812 + BFD_RELOC_IA64_LTV64LSB,
39813 + BFD_RELOC_IA64_IPLTMSB,
39814 + BFD_RELOC_IA64_IPLTLSB,
39815 + BFD_RELOC_IA64_COPY,
39816 + BFD_RELOC_IA64_LTOFF22X,
39817 + BFD_RELOC_IA64_LDXMOV,
39818 + BFD_RELOC_IA64_TPREL14,
39819 + BFD_RELOC_IA64_TPREL22,
39820 + BFD_RELOC_IA64_TPREL64I,
39821 + BFD_RELOC_IA64_TPREL64MSB,
39822 + BFD_RELOC_IA64_TPREL64LSB,
39823 + BFD_RELOC_IA64_LTOFF_TPREL22,
39824 + BFD_RELOC_IA64_DTPMOD64MSB,
39825 + BFD_RELOC_IA64_DTPMOD64LSB,
39826 + BFD_RELOC_IA64_LTOFF_DTPMOD22,
39827 + BFD_RELOC_IA64_DTPREL14,
39828 + BFD_RELOC_IA64_DTPREL22,
39829 + BFD_RELOC_IA64_DTPREL64I,
39830 + BFD_RELOC_IA64_DTPREL32MSB,
39831 + BFD_RELOC_IA64_DTPREL32LSB,
39832 + BFD_RELOC_IA64_DTPREL64MSB,
39833 + BFD_RELOC_IA64_DTPREL64LSB,
39834 + BFD_RELOC_IA64_LTOFF_DTPREL22,
39835 +
39836 +/* Motorola 68HC11 reloc.
39837 +This is the 8 bit high part of an absolute address. */
39838 + BFD_RELOC_M68HC11_HI8,
39839 +
39840 +/* Motorola 68HC11 reloc.
39841 +This is the 8 bit low part of an absolute address. */
39842 + BFD_RELOC_M68HC11_LO8,
39843 +
39844 +/* Motorola 68HC11 reloc.
39845 +This is the 3 bit of a value. */
39846 + BFD_RELOC_M68HC11_3B,
39847 +
39848 +/* Motorola 68HC11 reloc.
39849 +This reloc marks the beginning of a jump/call instruction.
39850 +It is used for linker relaxation to correctly identify beginning
39851 +of instruction and change some branches to use PC-relative
39852 +addressing mode. */
39853 + BFD_RELOC_M68HC11_RL_JUMP,
39854 +
39855 +/* Motorola 68HC11 reloc.
39856 +This reloc marks a group of several instructions that gcc generates
39857 +and for which the linker relaxation pass can modify and/or remove
39858 +some of them. */
39859 + BFD_RELOC_M68HC11_RL_GROUP,
39860 +
39861 +/* Motorola 68HC11 reloc.
39862 +This is the 16-bit lower part of an address. It is used for 'call'
39863 +instruction to specify the symbol address without any special
39864 +transformation (due to memory bank window). */
39865 + BFD_RELOC_M68HC11_LO16,
39866 +
39867 +/* Motorola 68HC11 reloc.
39868 +This is a 8-bit reloc that specifies the page number of an address.
39869 +It is used by 'call' instruction to specify the page number of
39870 +the symbol. */
39871 + BFD_RELOC_M68HC11_PAGE,
39872 +
39873 +/* Motorola 68HC11 reloc.
39874 +This is a 24-bit reloc that represents the address with a 16-bit
39875 +value and a 8-bit page number. The symbol address is transformed
39876 +to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */
39877 + BFD_RELOC_M68HC11_24,
39878 +
39879 +/* Motorola 68HC12 reloc.
39880 +This is the 5 bits of a value. */
39881 + BFD_RELOC_M68HC12_5B,
39882 +
39883 +/* NS CR16C Relocations. */
39884 + BFD_RELOC_16C_NUM08,
39885 + BFD_RELOC_16C_NUM08_C,
39886 + BFD_RELOC_16C_NUM16,
39887 + BFD_RELOC_16C_NUM16_C,
39888 + BFD_RELOC_16C_NUM32,
39889 + BFD_RELOC_16C_NUM32_C,
39890 + BFD_RELOC_16C_DISP04,
39891 + BFD_RELOC_16C_DISP04_C,
39892 + BFD_RELOC_16C_DISP08,
39893 + BFD_RELOC_16C_DISP08_C,
39894 + BFD_RELOC_16C_DISP16,
39895 + BFD_RELOC_16C_DISP16_C,
39896 + BFD_RELOC_16C_DISP24,
39897 + BFD_RELOC_16C_DISP24_C,
39898 + BFD_RELOC_16C_DISP24a,
39899 + BFD_RELOC_16C_DISP24a_C,
39900 + BFD_RELOC_16C_REG04,
39901 + BFD_RELOC_16C_REG04_C,
39902 + BFD_RELOC_16C_REG04a,
39903 + BFD_RELOC_16C_REG04a_C,
39904 + BFD_RELOC_16C_REG14,
39905 + BFD_RELOC_16C_REG14_C,
39906 + BFD_RELOC_16C_REG16,
39907 + BFD_RELOC_16C_REG16_C,
39908 + BFD_RELOC_16C_REG20,
39909 + BFD_RELOC_16C_REG20_C,
39910 + BFD_RELOC_16C_ABS20,
39911 + BFD_RELOC_16C_ABS20_C,
39912 + BFD_RELOC_16C_ABS24,
39913 + BFD_RELOC_16C_ABS24_C,
39914 + BFD_RELOC_16C_IMM04,
39915 + BFD_RELOC_16C_IMM04_C,
39916 + BFD_RELOC_16C_IMM16,
39917 + BFD_RELOC_16C_IMM16_C,
39918 + BFD_RELOC_16C_IMM20,
39919 + BFD_RELOC_16C_IMM20_C,
39920 + BFD_RELOC_16C_IMM24,
39921 + BFD_RELOC_16C_IMM24_C,
39922 + BFD_RELOC_16C_IMM32,
39923 + BFD_RELOC_16C_IMM32_C,
39924 +
39925 +/* NS CR16 Relocations. */
39926 + BFD_RELOC_CR16_NUM8,
39927 + BFD_RELOC_CR16_NUM16,
39928 + BFD_RELOC_CR16_NUM32,
39929 + BFD_RELOC_CR16_NUM32a,
39930 + BFD_RELOC_CR16_REGREL0,
39931 + BFD_RELOC_CR16_REGREL4,
39932 + BFD_RELOC_CR16_REGREL4a,
39933 + BFD_RELOC_CR16_REGREL14,
39934 + BFD_RELOC_CR16_REGREL14a,
39935 + BFD_RELOC_CR16_REGREL16,
39936 + BFD_RELOC_CR16_REGREL20,
39937 + BFD_RELOC_CR16_REGREL20a,
39938 + BFD_RELOC_CR16_ABS20,
39939 + BFD_RELOC_CR16_ABS24,
39940 + BFD_RELOC_CR16_IMM4,
39941 + BFD_RELOC_CR16_IMM8,
39942 + BFD_RELOC_CR16_IMM16,
39943 + BFD_RELOC_CR16_IMM20,
39944 + BFD_RELOC_CR16_IMM24,
39945 + BFD_RELOC_CR16_IMM32,
39946 + BFD_RELOC_CR16_IMM32a,
39947 + BFD_RELOC_CR16_DISP4,
39948 + BFD_RELOC_CR16_DISP8,
39949 + BFD_RELOC_CR16_DISP16,
39950 + BFD_RELOC_CR16_DISP20,
39951 + BFD_RELOC_CR16_DISP24,
39952 + BFD_RELOC_CR16_DISP24a,
39953 +
39954 +/* NS CRX Relocations. */
39955 + BFD_RELOC_CRX_REL4,
39956 + BFD_RELOC_CRX_REL8,
39957 + BFD_RELOC_CRX_REL8_CMP,
39958 + BFD_RELOC_CRX_REL16,
39959 + BFD_RELOC_CRX_REL24,
39960 + BFD_RELOC_CRX_REL32,
39961 + BFD_RELOC_CRX_REGREL12,
39962 + BFD_RELOC_CRX_REGREL22,
39963 + BFD_RELOC_CRX_REGREL28,
39964 + BFD_RELOC_CRX_REGREL32,
39965 + BFD_RELOC_CRX_ABS16,
39966 + BFD_RELOC_CRX_ABS32,
39967 + BFD_RELOC_CRX_NUM8,
39968 + BFD_RELOC_CRX_NUM16,
39969 + BFD_RELOC_CRX_NUM32,
39970 + BFD_RELOC_CRX_IMM16,
39971 + BFD_RELOC_CRX_IMM32,
39972 + BFD_RELOC_CRX_SWITCH8,
39973 + BFD_RELOC_CRX_SWITCH16,
39974 + BFD_RELOC_CRX_SWITCH32,
39975 +
39976 +/* These relocs are only used within the CRIS assembler. They are not
39977 +(at present) written to any object files. */
39978 + BFD_RELOC_CRIS_BDISP8,
39979 + BFD_RELOC_CRIS_UNSIGNED_5,
39980 + BFD_RELOC_CRIS_SIGNED_6,
39981 + BFD_RELOC_CRIS_UNSIGNED_6,
39982 + BFD_RELOC_CRIS_SIGNED_8,
39983 + BFD_RELOC_CRIS_UNSIGNED_8,
39984 + BFD_RELOC_CRIS_SIGNED_16,
39985 + BFD_RELOC_CRIS_UNSIGNED_16,
39986 + BFD_RELOC_CRIS_LAPCQ_OFFSET,
39987 + BFD_RELOC_CRIS_UNSIGNED_4,
39988 +
39989 +/* Relocs used in ELF shared libraries for CRIS. */
39990 + BFD_RELOC_CRIS_COPY,
39991 + BFD_RELOC_CRIS_GLOB_DAT,
39992 + BFD_RELOC_CRIS_JUMP_SLOT,
39993 + BFD_RELOC_CRIS_RELATIVE,
39994 +
39995 +/* 32-bit offset to symbol-entry within GOT. */
39996 + BFD_RELOC_CRIS_32_GOT,
39997 +
39998 +/* 16-bit offset to symbol-entry within GOT. */
39999 + BFD_RELOC_CRIS_16_GOT,
40000 +
40001 +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
40002 + BFD_RELOC_CRIS_32_GOTPLT,
40003 +
40004 +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
40005 + BFD_RELOC_CRIS_16_GOTPLT,
40006 +
40007 +/* 32-bit offset to symbol, relative to GOT. */
40008 + BFD_RELOC_CRIS_32_GOTREL,
40009 +
40010 +/* 32-bit offset to symbol with PLT entry, relative to GOT. */
40011 + BFD_RELOC_CRIS_32_PLT_GOTREL,
40012 +
40013 +/* 32-bit offset to symbol with PLT entry, relative to this relocation. */
40014 + BFD_RELOC_CRIS_32_PLT_PCREL,
40015 +
40016 +/* Intel i860 Relocations. */
40017 + BFD_RELOC_860_COPY,
40018 + BFD_RELOC_860_GLOB_DAT,
40019 + BFD_RELOC_860_JUMP_SLOT,
40020 + BFD_RELOC_860_RELATIVE,
40021 + BFD_RELOC_860_PC26,
40022 + BFD_RELOC_860_PLT26,
40023 + BFD_RELOC_860_PC16,
40024 + BFD_RELOC_860_LOW0,
40025 + BFD_RELOC_860_SPLIT0,
40026 + BFD_RELOC_860_LOW1,
40027 + BFD_RELOC_860_SPLIT1,
40028 + BFD_RELOC_860_LOW2,
40029 + BFD_RELOC_860_SPLIT2,
40030 + BFD_RELOC_860_LOW3,
40031 + BFD_RELOC_860_LOGOT0,
40032 + BFD_RELOC_860_SPGOT0,
40033 + BFD_RELOC_860_LOGOT1,
40034 + BFD_RELOC_860_SPGOT1,
40035 + BFD_RELOC_860_LOGOTOFF0,
40036 + BFD_RELOC_860_SPGOTOFF0,
40037 + BFD_RELOC_860_LOGOTOFF1,
40038 + BFD_RELOC_860_SPGOTOFF1,
40039 + BFD_RELOC_860_LOGOTOFF2,
40040 + BFD_RELOC_860_LOGOTOFF3,
40041 + BFD_RELOC_860_LOPC,
40042 + BFD_RELOC_860_HIGHADJ,
40043 + BFD_RELOC_860_HAGOT,
40044 + BFD_RELOC_860_HAGOTOFF,
40045 + BFD_RELOC_860_HAPC,
40046 + BFD_RELOC_860_HIGH,
40047 + BFD_RELOC_860_HIGOT,
40048 + BFD_RELOC_860_HIGOTOFF,
40049 +
40050 +/* OpenRISC Relocations. */
40051 + BFD_RELOC_OPENRISC_ABS_26,
40052 + BFD_RELOC_OPENRISC_REL_26,
40053 +
40054 +/* H8 elf Relocations. */
40055 + BFD_RELOC_H8_DIR16A8,
40056 + BFD_RELOC_H8_DIR16R8,
40057 + BFD_RELOC_H8_DIR24A8,
40058 + BFD_RELOC_H8_DIR24R8,
40059 + BFD_RELOC_H8_DIR32A16,
40060 +
40061 +/* Sony Xstormy16 Relocations. */
40062 + BFD_RELOC_XSTORMY16_REL_12,
40063 + BFD_RELOC_XSTORMY16_12,
40064 + BFD_RELOC_XSTORMY16_24,
40065 + BFD_RELOC_XSTORMY16_FPTR16,
40066 +
40067 +/* Self-describing complex relocations. */
40068 + BFD_RELOC_RELC,
40069 +
40070 +
40071 +/* Infineon Relocations. */
40072 + BFD_RELOC_XC16X_PAG,
40073 + BFD_RELOC_XC16X_POF,
40074 + BFD_RELOC_XC16X_SEG,
40075 + BFD_RELOC_XC16X_SOF,
40076 +
40077 +/* Relocations used by VAX ELF. */
40078 + BFD_RELOC_VAX_GLOB_DAT,
40079 + BFD_RELOC_VAX_JMP_SLOT,
40080 + BFD_RELOC_VAX_RELATIVE,
40081 +
40082 +/* Morpho MT - 16 bit immediate relocation. */
40083 + BFD_RELOC_MT_PC16,
40084 +
40085 +/* Morpho MT - Hi 16 bits of an address. */
40086 + BFD_RELOC_MT_HI16,
40087 +
40088 +/* Morpho MT - Low 16 bits of an address. */
40089 + BFD_RELOC_MT_LO16,
40090 +
40091 +/* Morpho MT - Used to tell the linker which vtable entries are used. */
40092 + BFD_RELOC_MT_GNU_VTINHERIT,
40093 +
40094 +/* Morpho MT - Used to tell the linker which vtable entries are used. */
40095 + BFD_RELOC_MT_GNU_VTENTRY,
40096 +
40097 +/* Morpho MT - 8 bit immediate relocation. */
40098 + BFD_RELOC_MT_PCINSN8,
40099 +
40100 +/* msp430 specific relocation codes */
40101 + BFD_RELOC_MSP430_10_PCREL,
40102 + BFD_RELOC_MSP430_16_PCREL,
40103 + BFD_RELOC_MSP430_16,
40104 + BFD_RELOC_MSP430_16_PCREL_BYTE,
40105 + BFD_RELOC_MSP430_16_BYTE,
40106 + BFD_RELOC_MSP430_2X_PCREL,
40107 + BFD_RELOC_MSP430_RL_PCREL,
40108 +
40109 +/* IQ2000 Relocations. */
40110 + BFD_RELOC_IQ2000_OFFSET_16,
40111 + BFD_RELOC_IQ2000_OFFSET_21,
40112 + BFD_RELOC_IQ2000_UHI16,
40113 +
40114 +/* Special Xtensa relocation used only by PLT entries in ELF shared
40115 +objects to indicate that the runtime linker should set the value
40116 +to one of its own internal functions or data structures. */
40117 + BFD_RELOC_XTENSA_RTLD,
40118 +
40119 +/* Xtensa relocations for ELF shared objects. */
40120 + BFD_RELOC_XTENSA_GLOB_DAT,
40121 + BFD_RELOC_XTENSA_JMP_SLOT,
40122 + BFD_RELOC_XTENSA_RELATIVE,
40123 +
40124 +/* Xtensa relocation used in ELF object files for symbols that may require
40125 +PLT entries. Otherwise, this is just a generic 32-bit relocation. */
40126 + BFD_RELOC_XTENSA_PLT,
40127 +
40128 +/* Xtensa relocations to mark the difference of two local symbols.
40129 +These are only needed to support linker relaxation and can be ignored
40130 +when not relaxing. The field is set to the value of the difference
40131 +assuming no relaxation. The relocation encodes the position of the
40132 +first symbol so the linker can determine whether to adjust the field
40133 +value. */
40134 + BFD_RELOC_XTENSA_DIFF8,
40135 + BFD_RELOC_XTENSA_DIFF16,
40136 + BFD_RELOC_XTENSA_DIFF32,
40137 +
40138 +/* Generic Xtensa relocations for instruction operands. Only the slot
40139 +number is encoded in the relocation. The relocation applies to the
40140 +last PC-relative immediate operand, or if there are no PC-relative
40141 +immediates, to the last immediate operand. */
40142 + BFD_RELOC_XTENSA_SLOT0_OP,
40143 + BFD_RELOC_XTENSA_SLOT1_OP,
40144 + BFD_RELOC_XTENSA_SLOT2_OP,
40145 + BFD_RELOC_XTENSA_SLOT3_OP,
40146 + BFD_RELOC_XTENSA_SLOT4_OP,
40147 + BFD_RELOC_XTENSA_SLOT5_OP,
40148 + BFD_RELOC_XTENSA_SLOT6_OP,
40149 + BFD_RELOC_XTENSA_SLOT7_OP,
40150 + BFD_RELOC_XTENSA_SLOT8_OP,
40151 + BFD_RELOC_XTENSA_SLOT9_OP,
40152 + BFD_RELOC_XTENSA_SLOT10_OP,
40153 + BFD_RELOC_XTENSA_SLOT11_OP,
40154 + BFD_RELOC_XTENSA_SLOT12_OP,
40155 + BFD_RELOC_XTENSA_SLOT13_OP,
40156 + BFD_RELOC_XTENSA_SLOT14_OP,
40157 +
40158 +/* Alternate Xtensa relocations. Only the slot is encoded in the
40159 +relocation. The meaning of these relocations is opcode-specific. */
40160 + BFD_RELOC_XTENSA_SLOT0_ALT,
40161 + BFD_RELOC_XTENSA_SLOT1_ALT,
40162 + BFD_RELOC_XTENSA_SLOT2_ALT,
40163 + BFD_RELOC_XTENSA_SLOT3_ALT,
40164 + BFD_RELOC_XTENSA_SLOT4_ALT,
40165 + BFD_RELOC_XTENSA_SLOT5_ALT,
40166 + BFD_RELOC_XTENSA_SLOT6_ALT,
40167 + BFD_RELOC_XTENSA_SLOT7_ALT,
40168 + BFD_RELOC_XTENSA_SLOT8_ALT,
40169 + BFD_RELOC_XTENSA_SLOT9_ALT,
40170 + BFD_RELOC_XTENSA_SLOT10_ALT,
40171 + BFD_RELOC_XTENSA_SLOT11_ALT,
40172 + BFD_RELOC_XTENSA_SLOT12_ALT,
40173 + BFD_RELOC_XTENSA_SLOT13_ALT,
40174 + BFD_RELOC_XTENSA_SLOT14_ALT,
40175 +
40176 +/* Xtensa relocations for backward compatibility. These have all been
40177 +replaced by BFD_RELOC_XTENSA_SLOT0_OP. */
40178 + BFD_RELOC_XTENSA_OP0,
40179 + BFD_RELOC_XTENSA_OP1,
40180 + BFD_RELOC_XTENSA_OP2,
40181 +
40182 +/* Xtensa relocation to mark that the assembler expanded the
40183 +instructions from an original target. The expansion size is
40184 +encoded in the reloc size. */
40185 + BFD_RELOC_XTENSA_ASM_EXPAND,
40186 +
40187 +/* Xtensa relocation to mark that the linker should simplify
40188 +assembler-expanded instructions. This is commonly used
40189 +internally by the linker after analysis of a
40190 +BFD_RELOC_XTENSA_ASM_EXPAND. */
40191 + BFD_RELOC_XTENSA_ASM_SIMPLIFY,
40192 +
40193 +/* 8 bit signed offset in (ix+d) or (iy+d). */
40194 + BFD_RELOC_Z80_DISP8,
40195 +
40196 +/* DJNZ offset. */
40197 + BFD_RELOC_Z8K_DISP7,
40198 +
40199 +/* CALR offset. */
40200 + BFD_RELOC_Z8K_CALLR,
40201 +
40202 +/* 4 bit value. */
40203 + BFD_RELOC_Z8K_IMM4L,
40204 + BFD_RELOC_UNUSED };
40205 +typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
40206 +reloc_howto_type *bfd_reloc_type_lookup
40207 + (bfd *abfd, bfd_reloc_code_real_type code);
40208 +reloc_howto_type *bfd_reloc_name_lookup
40209 + (bfd *abfd, const char *reloc_name);
40210 +
40211 +const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
40212 +
40213 +/* Extracted from syms.c. */
40214 +
40215 +typedef struct bfd_symbol
40216 +{
40217 + /* A pointer to the BFD which owns the symbol. This information
40218 + is necessary so that a back end can work out what additional
40219 + information (invisible to the application writer) is carried
40220 + with the symbol.
40221 +
40222 + This field is *almost* redundant, since you can use section->owner
40223 + instead, except that some symbols point to the global sections
40224 + bfd_{abs,com,und}_section. This could be fixed by making
40225 + these globals be per-bfd (or per-target-flavor). FIXME. */
40226 + struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
40227 +
40228 + /* The text of the symbol. The name is left alone, and not copied; the
40229 + application may not alter it. */
40230 + const char *name;
40231 +
40232 + /* The value of the symbol. This really should be a union of a
40233 + numeric value with a pointer, since some flags indicate that
40234 + a pointer to another symbol is stored here. */
40235 + symvalue value;
40236 +
40237 + /* Attributes of a symbol. */
40238 +#define BSF_NO_FLAGS 0x00
40239 +
40240 + /* The symbol has local scope; <<static>> in <<C>>. The value
40241 + is the offset into the section of the data. */
40242 +#define BSF_LOCAL 0x01
40243 +
40244 + /* The symbol has global scope; initialized data in <<C>>. The
40245 + value is the offset into the section of the data. */
40246 +#define BSF_GLOBAL 0x02
40247 +
40248 + /* The symbol has global scope and is exported. The value is
40249 + the offset into the section of the data. */
40250 +#define BSF_EXPORT BSF_GLOBAL /* No real difference. */
40251 +
40252 + /* A normal C symbol would be one of:
40253 + <<BSF_LOCAL>>, <<BSF_FORT_COMM>>, <<BSF_UNDEFINED>> or
40254 + <<BSF_GLOBAL>>. */
40255 +
40256 + /* The symbol is a debugging record. The value has an arbitrary
40257 + meaning, unless BSF_DEBUGGING_RELOC is also set. */
40258 +#define BSF_DEBUGGING 0x08
40259 +
40260 + /* The symbol denotes a function entry point. Used in ELF,
40261 + perhaps others someday. */
40262 +#define BSF_FUNCTION 0x10
40263 +
40264 + /* Used by the linker. */
40265 +#define BSF_KEEP 0x20
40266 +#define BSF_KEEP_G 0x40
40267 +
40268 + /* A weak global symbol, overridable without warnings by
40269 + a regular global symbol of the same name. */
40270 +#define BSF_WEAK 0x80
40271 +
40272 + /* This symbol was created to point to a section, e.g. ELF's
40273 + STT_SECTION symbols. */
40274 +#define BSF_SECTION_SYM 0x100
40275 +
40276 + /* The symbol used to be a common symbol, but now it is
40277 + allocated. */
40278 +#define BSF_OLD_COMMON 0x200
40279 +
40280 + /* The default value for common data. */
40281 +#define BFD_FORT_COMM_DEFAULT_VALUE 0
40282 +
40283 + /* In some files the type of a symbol sometimes alters its
40284 + location in an output file - ie in coff a <<ISFCN>> symbol
40285 + which is also <<C_EXT>> symbol appears where it was
40286 + declared and not at the end of a section. This bit is set
40287 + by the target BFD part to convey this information. */
40288 +#define BSF_NOT_AT_END 0x400
40289 +
40290 + /* Signal that the symbol is the label of constructor section. */
40291 +#define BSF_CONSTRUCTOR 0x800
40292 +
40293 + /* Signal that the symbol is a warning symbol. The name is a
40294 + warning. The name of the next symbol is the one to warn about;
40295 + if a reference is made to a symbol with the same name as the next
40296 + symbol, a warning is issued by the linker. */
40297 +#define BSF_WARNING 0x1000
40298 +
40299 + /* Signal that the symbol is indirect. This symbol is an indirect
40300 + pointer to the symbol with the same name as the next symbol. */
40301 +#define BSF_INDIRECT 0x2000
40302 +
40303 + /* BSF_FILE marks symbols that contain a file name. This is used
40304 + for ELF STT_FILE symbols. */
40305 +#define BSF_FILE 0x4000
40306 +
40307 + /* Symbol is from dynamic linking information. */
40308 +#define BSF_DYNAMIC 0x8000
40309 +
40310 + /* The symbol denotes a data object. Used in ELF, and perhaps
40311 + others someday. */
40312 +#define BSF_OBJECT 0x10000
40313 +
40314 + /* This symbol is a debugging symbol. The value is the offset
40315 + into the section of the data. BSF_DEBUGGING should be set
40316 + as well. */
40317 +#define BSF_DEBUGGING_RELOC 0x20000
40318 +
40319 + /* This symbol is thread local. Used in ELF. */
40320 +#define BSF_THREAD_LOCAL 0x40000
40321 +
40322 + /* This symbol represents a complex relocation expression,
40323 + with the expression tree serialized in the symbol name. */
40324 +#define BSF_RELC 0x80000
40325 +
40326 + /* This symbol represents a signed complex relocation expression,
40327 + with the expression tree serialized in the symbol name. */
40328 +#define BSF_SRELC 0x100000
40329 +
40330 + flagword flags;
40331 +
40332 + /* A pointer to the section to which this symbol is
40333 + relative. This will always be non NULL, there are special
40334 + sections for undefined and absolute symbols. */
40335 + struct bfd_section *section;
40336 +
40337 + /* Back end special data. */
40338 + union
40339 + {
40340 + void *p;
40341 + bfd_vma i;
40342 + }
40343 + udata;
40344 +}
40345 +asymbol;
40346 +
40347 +#define bfd_get_symtab_upper_bound(abfd) \
40348 + BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
40349 +
40350 +bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
40351 +
40352 +bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
40353 +
40354 +#define bfd_is_local_label_name(abfd, name) \
40355 + BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
40356 +
40357 +bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
40358 +
40359 +#define bfd_is_target_special_symbol(abfd, sym) \
40360 + BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
40361 +
40362 +#define bfd_canonicalize_symtab(abfd, location) \
40363 + BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
40364 +
40365 +bfd_boolean bfd_set_symtab
40366 + (bfd *abfd, asymbol **location, unsigned int count);
40367 +
40368 +void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
40369 +
40370 +#define bfd_make_empty_symbol(abfd) \
40371 + BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
40372 +
40373 +asymbol *_bfd_generic_make_empty_symbol (bfd *);
40374 +
40375 +#define bfd_make_debug_symbol(abfd,ptr,size) \
40376 + BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
40377 +
40378 +int bfd_decode_symclass (asymbol *symbol);
40379 +
40380 +bfd_boolean bfd_is_undefined_symclass (int symclass);
40381 +
40382 +void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
40383 +
40384 +bfd_boolean bfd_copy_private_symbol_data
40385 + (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
40386 +
40387 +#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
40388 + BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
40389 + (ibfd, isymbol, obfd, osymbol))
40390 +
40391 +/* Extracted from bfd.c. */
40392 +struct bfd
40393 +{
40394 + /* A unique identifier of the BFD */
40395 + unsigned int id;
40396 +
40397 + /* The filename the application opened the BFD with. */
40398 + const char *filename;
40399 +
40400 + /* A pointer to the target jump table. */
40401 + const struct bfd_target *xvec;
40402 +
40403 + /* The IOSTREAM, and corresponding IO vector that provide access
40404 + to the file backing the BFD. */
40405 + void *iostream;
40406 + const struct bfd_iovec *iovec;
40407 +
40408 + /* Is the file descriptor being cached? That is, can it be closed as
40409 + needed, and re-opened when accessed later? */
40410 + bfd_boolean cacheable;
40411 +
40412 + /* Marks whether there was a default target specified when the
40413 + BFD was opened. This is used to select which matching algorithm
40414 + to use to choose the back end. */
40415 + bfd_boolean target_defaulted;
40416 +
40417 + /* The caching routines use these to maintain a
40418 + least-recently-used list of BFDs. */
40419 + struct bfd *lru_prev, *lru_next;
40420 +
40421 + /* When a file is closed by the caching routines, BFD retains
40422 + state information on the file here... */
40423 + ufile_ptr where;
40424 +
40425 + /* ... and here: (``once'' means at least once). */
40426 + bfd_boolean opened_once;
40427 +
40428 + /* Set if we have a locally maintained mtime value, rather than
40429 + getting it from the file each time. */
40430 + bfd_boolean mtime_set;
40431 +
40432 + /* File modified time, if mtime_set is TRUE. */
40433 + long mtime;
40434 +
40435 + /* Reserved for an unimplemented file locking extension. */
40436 + int ifd;
40437 +
40438 + /* The format which belongs to the BFD. (object, core, etc.) */
40439 + bfd_format format;
40440 +
40441 + /* The direction with which the BFD was opened. */
40442 + enum bfd_direction
40443 + {
40444 + no_direction = 0,
40445 + read_direction = 1,
40446 + write_direction = 2,
40447 + both_direction = 3
40448 + }
40449 + direction;
40450 +
40451 + /* Format_specific flags. */
40452 + flagword flags;
40453 +
40454 + /* Currently my_archive is tested before adding origin to
40455 + anything. I believe that this can become always an add of
40456 + origin, with origin set to 0 for non archive files. */
40457 + ufile_ptr origin;
40458 +
40459 + /* Remember when output has begun, to stop strange things
40460 + from happening. */
40461 + bfd_boolean output_has_begun;
40462 +
40463 + /* A hash table for section names. */
40464 + struct bfd_hash_table section_htab;
40465 +
40466 + /* Pointer to linked list of sections. */
40467 + struct bfd_section *sections;
40468 +
40469 + /* The last section on the section list. */
40470 + struct bfd_section *section_last;
40471 +
40472 + /* The number of sections. */
40473 + unsigned int section_count;
40474 +
40475 + /* Stuff only useful for object files:
40476 + The start address. */
40477 + bfd_vma start_address;
40478 +
40479 + /* Used for input and output. */
40480 + unsigned int symcount;
40481 +
40482 + /* Symbol table for output BFD (with symcount entries). */
40483 + struct bfd_symbol **outsymbols;
40484 +
40485 + /* Used for slurped dynamic symbol tables. */
40486 + unsigned int dynsymcount;
40487 +
40488 + /* Pointer to structure which contains architecture information. */
40489 + const struct bfd_arch_info *arch_info;
40490 +
40491 + /* Flag set if symbols from this BFD should not be exported. */
40492 + bfd_boolean no_export;
40493 +
40494 + /* Stuff only useful for archives. */
40495 + void *arelt_data;
40496 + struct bfd *my_archive; /* The containing archive BFD. */
40497 + struct bfd *archive_next; /* The next BFD in the archive. */
40498 + struct bfd *archive_head; /* The first BFD in the archive. */
40499 + bfd_boolean has_armap;
40500 +
40501 + /* A chain of BFD structures involved in a link. */
40502 + struct bfd *link_next;
40503 +
40504 + /* A field used by _bfd_generic_link_add_archive_symbols. This will
40505 + be used only for archive elements. */
40506 + int archive_pass;
40507 +
40508 + /* Used by the back end to hold private data. */
40509 + union
40510 + {
40511 + struct aout_data_struct *aout_data;
40512 + struct artdata *aout_ar_data;
40513 + struct _oasys_data *oasys_obj_data;
40514 + struct _oasys_ar_data *oasys_ar_data;
40515 + struct coff_tdata *coff_obj_data;
40516 + struct pe_tdata *pe_obj_data;
40517 + struct xcoff_tdata *xcoff_obj_data;
40518 + struct ecoff_tdata *ecoff_obj_data;
40519 + struct ieee_data_struct *ieee_data;
40520 + struct ieee_ar_data_struct *ieee_ar_data;
40521 + struct srec_data_struct *srec_data;
40522 + struct ihex_data_struct *ihex_data;
40523 + struct tekhex_data_struct *tekhex_data;
40524 + struct elf_obj_tdata *elf_obj_data;
40525 + struct nlm_obj_tdata *nlm_obj_data;
40526 + struct bout_data_struct *bout_data;
40527 + struct mmo_data_struct *mmo_data;
40528 + struct sun_core_struct *sun_core_data;
40529 + struct sco5_core_struct *sco5_core_data;
40530 + struct trad_core_struct *trad_core_data;
40531 + struct som_data_struct *som_data;
40532 + struct hpux_core_struct *hpux_core_data;
40533 + struct hppabsd_core_struct *hppabsd_core_data;
40534 + struct sgi_core_struct *sgi_core_data;
40535 + struct lynx_core_struct *lynx_core_data;
40536 + struct osf_core_struct *osf_core_data;
40537 + struct cisco_core_struct *cisco_core_data;
40538 + struct versados_data_struct *versados_data;
40539 + struct netbsd_core_struct *netbsd_core_data;
40540 + struct mach_o_data_struct *mach_o_data;
40541 + struct mach_o_fat_data_struct *mach_o_fat_data;
40542 + struct bfd_pef_data_struct *pef_data;
40543 + struct bfd_pef_xlib_data_struct *pef_xlib_data;
40544 + struct bfd_sym_data_struct *sym_data;
40545 + void *any;
40546 + }
40547 + tdata;
40548 +
40549 + /* Used by the application to hold private data. */
40550 + void *usrdata;
40551 +
40552 + /* Where all the allocated stuff under this BFD goes. This is a
40553 + struct objalloc *, but we use void * to avoid requiring the inclusion
40554 + of objalloc.h. */
40555 + void *memory;
40556 +};
40557 +
40558 +typedef enum bfd_error
40559 +{
40560 + bfd_error_no_error = 0,
40561 + bfd_error_system_call,
40562 + bfd_error_invalid_target,
40563 + bfd_error_wrong_format,
40564 + bfd_error_wrong_object_format,
40565 + bfd_error_invalid_operation,
40566 + bfd_error_no_memory,
40567 + bfd_error_no_symbols,
40568 + bfd_error_no_armap,
40569 + bfd_error_no_more_archived_files,
40570 + bfd_error_malformed_archive,
40571 + bfd_error_file_not_recognized,
40572 + bfd_error_file_ambiguously_recognized,
40573 + bfd_error_no_contents,
40574 + bfd_error_nonrepresentable_section,
40575 + bfd_error_no_debug_section,
40576 + bfd_error_bad_value,
40577 + bfd_error_file_truncated,
40578 + bfd_error_file_too_big,
40579 + bfd_error_on_input,
40580 + bfd_error_invalid_error_code
40581 +}
40582 +bfd_error_type;
40583 +
40584 +bfd_error_type bfd_get_error (void);
40585 +
40586 +void bfd_set_error (bfd_error_type error_tag, ...);
40587 +
40588 +const char *bfd_errmsg (bfd_error_type error_tag);
40589 +
40590 +void bfd_perror (const char *message);
40591 +
40592 +typedef void (*bfd_error_handler_type) (const char *, ...);
40593 +
40594 +bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
40595 +
40596 +void bfd_set_error_program_name (const char *);
40597 +
40598 +bfd_error_handler_type bfd_get_error_handler (void);
40599 +
40600 +long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
40601 +
40602 +long bfd_canonicalize_reloc
40603 + (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
40604 +
40605 +void bfd_set_reloc
40606 + (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
40607 +
40608 +bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
40609 +
40610 +int bfd_get_arch_size (bfd *abfd);
40611 +
40612 +int bfd_get_sign_extend_vma (bfd *abfd);
40613 +
40614 +bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
40615 +
40616 +unsigned int bfd_get_gp_size (bfd *abfd);
40617 +
40618 +void bfd_set_gp_size (bfd *abfd, unsigned int i);
40619 +
40620 +bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
40621 +
40622 +bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
40623 +
40624 +#define bfd_copy_private_header_data(ibfd, obfd) \
40625 + BFD_SEND (obfd, _bfd_copy_private_header_data, \
40626 + (ibfd, obfd))
40627 +bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
40628 +
40629 +#define bfd_copy_private_bfd_data(ibfd, obfd) \
40630 + BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
40631 + (ibfd, obfd))
40632 +bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
40633 +
40634 +#define bfd_merge_private_bfd_data(ibfd, obfd) \
40635 + BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
40636 + (ibfd, obfd))
40637 +bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
40638 +
40639 +#define bfd_set_private_flags(abfd, flags) \
40640 + BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
40641 +#define bfd_sizeof_headers(abfd, info) \
40642 + BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
40643 +
40644 +#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
40645 + BFD_SEND (abfd, _bfd_find_nearest_line, \
40646 + (abfd, sec, syms, off, file, func, line))
40647 +
40648 +#define bfd_find_line(abfd, syms, sym, file, line) \
40649 + BFD_SEND (abfd, _bfd_find_line, \
40650 + (abfd, syms, sym, file, line))
40651 +
40652 +#define bfd_find_inliner_info(abfd, file, func, line) \
40653 + BFD_SEND (abfd, _bfd_find_inliner_info, \
40654 + (abfd, file, func, line))
40655 +
40656 +#define bfd_debug_info_start(abfd) \
40657 + BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
40658 +
40659 +#define bfd_debug_info_end(abfd) \
40660 + BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
40661 +
40662 +#define bfd_debug_info_accumulate(abfd, section) \
40663 + BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
40664 +
40665 +#define bfd_stat_arch_elt(abfd, stat) \
40666 + BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
40667 +
40668 +#define bfd_update_armap_timestamp(abfd) \
40669 + BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
40670 +
40671 +#define bfd_set_arch_mach(abfd, arch, mach)\
40672 + BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
40673 +
40674 +#define bfd_relax_section(abfd, section, link_info, again) \
40675 + BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
40676 +
40677 +#define bfd_gc_sections(abfd, link_info) \
40678 + BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
40679 +
40680 +#define bfd_merge_sections(abfd, link_info) \
40681 + BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
40682 +
40683 +#define bfd_is_group_section(abfd, sec) \
40684 + BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
40685 +
40686 +#define bfd_discard_group(abfd, sec) \
40687 + BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
40688 +
40689 +#define bfd_link_hash_table_create(abfd) \
40690 + BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
40691 +
40692 +#define bfd_link_hash_table_free(abfd, hash) \
40693 + BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
40694 +
40695 +#define bfd_link_add_symbols(abfd, info) \
40696 + BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
40697 +
40698 +#define bfd_link_just_syms(abfd, sec, info) \
40699 + BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
40700 +
40701 +#define bfd_final_link(abfd, info) \
40702 + BFD_SEND (abfd, _bfd_final_link, (abfd, info))
40703 +
40704 +#define bfd_free_cached_info(abfd) \
40705 + BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
40706 +
40707 +#define bfd_get_dynamic_symtab_upper_bound(abfd) \
40708 + BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
40709 +
40710 +#define bfd_print_private_bfd_data(abfd, file)\
40711 + BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
40712 +
40713 +#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
40714 + BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
40715 +
40716 +#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
40717 + BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
40718 + dyncount, dynsyms, ret))
40719 +
40720 +#define bfd_get_dynamic_reloc_upper_bound(abfd) \
40721 + BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
40722 +
40723 +#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
40724 + BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
40725 +
40726 +extern bfd_byte *bfd_get_relocated_section_contents
40727 + (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
40728 + bfd_boolean, asymbol **);
40729 +
40730 +bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
40731 +
40732 +struct bfd_preserve
40733 +{
40734 + void *marker;
40735 + void *tdata;
40736 + flagword flags;
40737 + const struct bfd_arch_info *arch_info;
40738 + struct bfd_section *sections;
40739 + struct bfd_section *section_last;
40740 + unsigned int section_count;
40741 + struct bfd_hash_table section_htab;
40742 +};
40743 +
40744 +bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
40745 +
40746 +void bfd_preserve_restore (bfd *, struct bfd_preserve *);
40747 +
40748 +void bfd_preserve_finish (bfd *, struct bfd_preserve *);
40749 +
40750 +bfd_vma bfd_emul_get_maxpagesize (const char *);
40751 +
40752 +void bfd_emul_set_maxpagesize (const char *, bfd_vma);
40753 +
40754 +bfd_vma bfd_emul_get_commonpagesize (const char *);
40755 +
40756 +void bfd_emul_set_commonpagesize (const char *, bfd_vma);
40757 +
40758 +char *bfd_demangle (bfd *, const char *, int);
40759 +
40760 +/* Extracted from archive.c. */
40761 +symindex bfd_get_next_mapent
40762 + (bfd *abfd, symindex previous, carsym **sym);
40763 +
40764 +bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
40765 +
40766 +bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
40767 +
40768 +/* Extracted from corefile.c. */
40769 +const char *bfd_core_file_failing_command (bfd *abfd);
40770 +
40771 +int bfd_core_file_failing_signal (bfd *abfd);
40772 +
40773 +bfd_boolean core_file_matches_executable_p
40774 + (bfd *core_bfd, bfd *exec_bfd);
40775 +
40776 +bfd_boolean generic_core_file_matches_executable_p
40777 + (bfd *core_bfd, bfd *exec_bfd);
40778 +
40779 +/* Extracted from targets.c. */
40780 +#define BFD_SEND(bfd, message, arglist) \
40781 + ((*((bfd)->xvec->message)) arglist)
40782 +
40783 +#ifdef DEBUG_BFD_SEND
40784 +#undef BFD_SEND
40785 +#define BFD_SEND(bfd, message, arglist) \
40786 + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
40787 + ((*((bfd)->xvec->message)) arglist) : \
40788 + (bfd_assert (__FILE__,__LINE__), NULL))
40789 +#endif
40790 +#define BFD_SEND_FMT(bfd, message, arglist) \
40791 + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
40792 +
40793 +#ifdef DEBUG_BFD_SEND
40794 +#undef BFD_SEND_FMT
40795 +#define BFD_SEND_FMT(bfd, message, arglist) \
40796 + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
40797 + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
40798 + (bfd_assert (__FILE__,__LINE__), NULL))
40799 +#endif
40800 +
40801 +enum bfd_flavour
40802 +{
40803 + bfd_target_unknown_flavour,
40804 + bfd_target_aout_flavour,
40805 + bfd_target_coff_flavour,
40806 + bfd_target_ecoff_flavour,
40807 + bfd_target_xcoff_flavour,
40808 + bfd_target_elf_flavour,
40809 + bfd_target_ieee_flavour,
40810 + bfd_target_nlm_flavour,
40811 + bfd_target_oasys_flavour,
40812 + bfd_target_tekhex_flavour,
40813 + bfd_target_srec_flavour,
40814 + bfd_target_ihex_flavour,
40815 + bfd_target_som_flavour,
40816 + bfd_target_os9k_flavour,
40817 + bfd_target_versados_flavour,
40818 + bfd_target_msdos_flavour,
40819 + bfd_target_ovax_flavour,
40820 + bfd_target_evax_flavour,
40821 + bfd_target_mmo_flavour,
40822 + bfd_target_mach_o_flavour,
40823 + bfd_target_pef_flavour,
40824 + bfd_target_pef_xlib_flavour,
40825 + bfd_target_sym_flavour
40826 +};
40827 +
40828 +enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
40829 +
40830 +/* Forward declaration. */
40831 +typedef struct bfd_link_info _bfd_link_info;
40832 +
40833 +typedef struct bfd_target
40834 +{
40835 + /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
40836 + char *name;
40837 +
40838 + /* The "flavour" of a back end is a general indication about
40839 + the contents of a file. */
40840 + enum bfd_flavour flavour;
40841 +
40842 + /* The order of bytes within the data area of a file. */
40843 + enum bfd_endian byteorder;
40844 +
40845 + /* The order of bytes within the header parts of a file. */
40846 + enum bfd_endian header_byteorder;
40847 +
40848 + /* A mask of all the flags which an executable may have set -
40849 + from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>. */
40850 + flagword object_flags;
40851 +
40852 + /* A mask of all the flags which a section may have set - from
40853 + the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>. */
40854 + flagword section_flags;
40855 +
40856 + /* The character normally found at the front of a symbol.
40857 + (if any), perhaps `_'. */
40858 + char symbol_leading_char;
40859 +
40860 + /* The pad character for file names within an archive header. */
40861 + char ar_pad_char;
40862 +
40863 + /* The maximum number of characters in an archive header. */
40864 + unsigned short ar_max_namelen;
40865 +
40866 + /* Entries for byte swapping for data. These are different from the
40867 + other entry points, since they don't take a BFD as the first argument.
40868 + Certain other handlers could do the same. */
40869 + bfd_uint64_t (*bfd_getx64) (const void *);
40870 + bfd_int64_t (*bfd_getx_signed_64) (const void *);
40871 + void (*bfd_putx64) (bfd_uint64_t, void *);
40872 + bfd_vma (*bfd_getx32) (const void *);
40873 + bfd_signed_vma (*bfd_getx_signed_32) (const void *);
40874 + void (*bfd_putx32) (bfd_vma, void *);
40875 + bfd_vma (*bfd_getx16) (const void *);
40876 + bfd_signed_vma (*bfd_getx_signed_16) (const void *);
40877 + void (*bfd_putx16) (bfd_vma, void *);
40878 +
40879 + /* Byte swapping for the headers. */
40880 + bfd_uint64_t (*bfd_h_getx64) (const void *);
40881 + bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
40882 + void (*bfd_h_putx64) (bfd_uint64_t, void *);
40883 + bfd_vma (*bfd_h_getx32) (const void *);
40884 + bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
40885 + void (*bfd_h_putx32) (bfd_vma, void *);
40886 + bfd_vma (*bfd_h_getx16) (const void *);
40887 + bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
40888 + void (*bfd_h_putx16) (bfd_vma, void *);
40889 +
40890 + /* Format dependent routines: these are vectors of entry points
40891 + within the target vector structure, one for each format to check. */
40892 +
40893 + /* Check the format of a file being read. Return a <<bfd_target *>> or zero. */
40894 + const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
40895 +
40896 + /* Set the format of a file being written. */
40897 + bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
40898 +
40899 + /* Write cached information into a file being written, at <<bfd_close>>. */
40900 + bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
40901 +
40902 +
40903 + /* Generic entry points. */
40904 +#define BFD_JUMP_TABLE_GENERIC(NAME) \
40905 + NAME##_close_and_cleanup, \
40906 + NAME##_bfd_free_cached_info, \
40907 + NAME##_new_section_hook, \
40908 + NAME##_get_section_contents, \
40909 + NAME##_get_section_contents_in_window
40910 +
40911 + /* Called when the BFD is being closed to do any necessary cleanup. */
40912 + bfd_boolean (*_close_and_cleanup) (bfd *);
40913 + /* Ask the BFD to free all cached information. */
40914 + bfd_boolean (*_bfd_free_cached_info) (bfd *);
40915 + /* Called when a new section is created. */
40916 + bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
40917 + /* Read the contents of a section. */
40918 + bfd_boolean (*_bfd_get_section_contents)
40919 + (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
40920 + bfd_boolean (*_bfd_get_section_contents_in_window)
40921 + (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
40922 +
40923 + /* Entry points to copy private data. */
40924 +#define BFD_JUMP_TABLE_COPY(NAME) \
40925 + NAME##_bfd_copy_private_bfd_data, \
40926 + NAME##_bfd_merge_private_bfd_data, \
40927 + _bfd_generic_init_private_section_data, \
40928 + NAME##_bfd_copy_private_section_data, \
40929 + NAME##_bfd_copy_private_symbol_data, \
40930 + NAME##_bfd_copy_private_header_data, \
40931 + NAME##_bfd_set_private_flags, \
40932 + NAME##_bfd_print_private_bfd_data
40933 +
40934 + /* Called to copy BFD general private data from one object file
40935 + to another. */
40936 + bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
40937 + /* Called to merge BFD general private data from one object file
40938 + to a common output file when linking. */
40939 + bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
40940 + /* Called to initialize BFD private section data from one object file
40941 + to another. */
40942 +#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
40943 + BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
40944 + bfd_boolean (*_bfd_init_private_section_data)
40945 + (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
40946 + /* Called to copy BFD private section data from one object file
40947 + to another. */
40948 + bfd_boolean (*_bfd_copy_private_section_data)
40949 + (bfd *, sec_ptr, bfd *, sec_ptr);
40950 + /* Called to copy BFD private symbol data from one symbol
40951 + to another. */
40952 + bfd_boolean (*_bfd_copy_private_symbol_data)
40953 + (bfd *, asymbol *, bfd *, asymbol *);
40954 + /* Called to copy BFD private header data from one object file
40955 + to another. */
40956 + bfd_boolean (*_bfd_copy_private_header_data)
40957 + (bfd *, bfd *);
40958 + /* Called to set private backend flags. */
40959 + bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
40960 +
40961 + /* Called to print private BFD data. */
40962 + bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
40963 +
40964 + /* Core file entry points. */
40965 +#define BFD_JUMP_TABLE_CORE(NAME) \
40966 + NAME##_core_file_failing_command, \
40967 + NAME##_core_file_failing_signal, \
40968 + NAME##_core_file_matches_executable_p
40969 +
40970 + char * (*_core_file_failing_command) (bfd *);
40971 + int (*_core_file_failing_signal) (bfd *);
40972 + bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
40973 +
40974 + /* Archive entry points. */
40975 +#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
40976 + NAME##_slurp_armap, \
40977 + NAME##_slurp_extended_name_table, \
40978 + NAME##_construct_extended_name_table, \
40979 + NAME##_truncate_arname, \
40980 + NAME##_write_armap, \
40981 + NAME##_read_ar_hdr, \
40982 + NAME##_openr_next_archived_file, \
40983 + NAME##_get_elt_at_index, \
40984 + NAME##_generic_stat_arch_elt, \
40985 + NAME##_update_armap_timestamp
40986 +
40987 + bfd_boolean (*_bfd_slurp_armap) (bfd *);
40988 + bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
40989 + bfd_boolean (*_bfd_construct_extended_name_table)
40990 + (bfd *, char **, bfd_size_type *, const char **);
40991 + void (*_bfd_truncate_arname) (bfd *, const char *, char *);
40992 + bfd_boolean (*write_armap)
40993 + (bfd *, unsigned int, struct orl *, unsigned int, int);
40994 + void * (*_bfd_read_ar_hdr_fn) (bfd *);
40995 + bfd * (*openr_next_archived_file) (bfd *, bfd *);
40996 +#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
40997 + bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
40998 + int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
40999 + bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
41000 +
41001 + /* Entry points used for symbols. */
41002 +#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
41003 + NAME##_get_symtab_upper_bound, \
41004 + NAME##_canonicalize_symtab, \
41005 + NAME##_make_empty_symbol, \
41006 + NAME##_print_symbol, \
41007 + NAME##_get_symbol_info, \
41008 + NAME##_bfd_is_local_label_name, \
41009 + NAME##_bfd_is_target_special_symbol, \
41010 + NAME##_get_lineno, \
41011 + NAME##_find_nearest_line, \
41012 + _bfd_generic_find_line, \
41013 + NAME##_find_inliner_info, \
41014 + NAME##_bfd_make_debug_symbol, \
41015 + NAME##_read_minisymbols, \
41016 + NAME##_minisymbol_to_symbol
41017 +
41018 + long (*_bfd_get_symtab_upper_bound) (bfd *);
41019 + long (*_bfd_canonicalize_symtab)
41020 + (bfd *, struct bfd_symbol **);
41021 + struct bfd_symbol *
41022 + (*_bfd_make_empty_symbol) (bfd *);
41023 + void (*_bfd_print_symbol)
41024 + (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
41025 +#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
41026 + void (*_bfd_get_symbol_info)
41027 + (bfd *, struct bfd_symbol *, symbol_info *);
41028 +#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
41029 + bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
41030 + bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
41031 + alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
41032 + bfd_boolean (*_bfd_find_nearest_line)
41033 + (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
41034 + const char **, const char **, unsigned int *);
41035 + bfd_boolean (*_bfd_find_line)
41036 + (bfd *, struct bfd_symbol **, struct bfd_symbol *,
41037 + const char **, unsigned int *);
41038 + bfd_boolean (*_bfd_find_inliner_info)
41039 + (bfd *, const char **, const char **, unsigned int *);
41040 + /* Back-door to allow format-aware applications to create debug symbols
41041 + while using BFD for everything else. Currently used by the assembler
41042 + when creating COFF files. */
41043 + asymbol * (*_bfd_make_debug_symbol)
41044 + (bfd *, void *, unsigned long size);
41045 +#define bfd_read_minisymbols(b, d, m, s) \
41046 + BFD_SEND (b, _read_minisymbols, (b, d, m, s))
41047 + long (*_read_minisymbols)
41048 + (bfd *, bfd_boolean, void **, unsigned int *);
41049 +#define bfd_minisymbol_to_symbol(b, d, m, f) \
41050 + BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
41051 + asymbol * (*_minisymbol_to_symbol)
41052 + (bfd *, bfd_boolean, const void *, asymbol *);
41053 +
41054 + /* Routines for relocs. */
41055 +#define BFD_JUMP_TABLE_RELOCS(NAME) \
41056 + NAME##_get_reloc_upper_bound, \
41057 + NAME##_canonicalize_reloc, \
41058 + NAME##_bfd_reloc_type_lookup, \
41059 + NAME##_bfd_reloc_name_lookup
41060 +
41061 + long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
41062 + long (*_bfd_canonicalize_reloc)
41063 + (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
41064 + /* See documentation on reloc types. */
41065 + reloc_howto_type *
41066 + (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
41067 + reloc_howto_type *
41068 + (*reloc_name_lookup) (bfd *, const char *);
41069 +
41070 +
41071 + /* Routines used when writing an object file. */
41072 +#define BFD_JUMP_TABLE_WRITE(NAME) \
41073 + NAME##_set_arch_mach, \
41074 + NAME##_set_section_contents
41075 +
41076 + bfd_boolean (*_bfd_set_arch_mach)
41077 + (bfd *, enum bfd_architecture, unsigned long);
41078 + bfd_boolean (*_bfd_set_section_contents)
41079 + (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
41080 +
41081 + /* Routines used by the linker. */
41082 +#define BFD_JUMP_TABLE_LINK(NAME) \
41083 + NAME##_sizeof_headers, \
41084 + NAME##_bfd_get_relocated_section_contents, \
41085 + NAME##_bfd_relax_section, \
41086 + NAME##_bfd_link_hash_table_create, \
41087 + NAME##_bfd_link_hash_table_free, \
41088 + NAME##_bfd_link_add_symbols, \
41089 + NAME##_bfd_link_just_syms, \
41090 + NAME##_bfd_final_link, \
41091 + NAME##_bfd_link_split_section, \
41092 + NAME##_bfd_gc_sections, \
41093 + NAME##_bfd_merge_sections, \
41094 + NAME##_bfd_is_group_section, \
41095 + NAME##_bfd_discard_group, \
41096 + NAME##_section_already_linked \
41097 +
41098 + int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
41099 + bfd_byte * (*_bfd_get_relocated_section_contents)
41100 + (bfd *, struct bfd_link_info *, struct bfd_link_order *,
41101 + bfd_byte *, bfd_boolean, struct bfd_symbol **);
41102 +
41103 + bfd_boolean (*_bfd_relax_section)
41104 + (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
41105 +
41106 + /* Create a hash table for the linker. Different backends store
41107 + different information in this table. */
41108 + struct bfd_link_hash_table *
41109 + (*_bfd_link_hash_table_create) (bfd *);
41110 +
41111 + /* Release the memory associated with the linker hash table. */
41112 + void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
41113 +
41114 + /* Add symbols from this object file into the hash table. */
41115 + bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
41116 +
41117 + /* Indicate that we are only retrieving symbol values from this section. */
41118 + void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
41119 +
41120 + /* Do a link based on the link_order structures attached to each
41121 + section of the BFD. */
41122 + bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
41123 +
41124 + /* Should this section be split up into smaller pieces during linking. */
41125 + bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
41126 +
41127 + /* Remove sections that are not referenced from the output. */
41128 + bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
41129 +
41130 + /* Attempt to merge SEC_MERGE sections. */
41131 + bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
41132 +
41133 + /* Is this section a member of a group? */
41134 + bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
41135 +
41136 + /* Discard members of a group. */
41137 + bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
41138 +
41139 + /* Check if SEC has been already linked during a reloceatable or
41140 + final link. */
41141 + void (*_section_already_linked) (bfd *, struct bfd_section *,
41142 + struct bfd_link_info *);
41143 +
41144 + /* Routines to handle dynamic symbols and relocs. */
41145 +#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
41146 + NAME##_get_dynamic_symtab_upper_bound, \
41147 + NAME##_canonicalize_dynamic_symtab, \
41148 + NAME##_get_synthetic_symtab, \
41149 + NAME##_get_dynamic_reloc_upper_bound, \
41150 + NAME##_canonicalize_dynamic_reloc
41151 +
41152 + /* Get the amount of memory required to hold the dynamic symbols. */
41153 + long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
41154 + /* Read in the dynamic symbols. */
41155 + long (*_bfd_canonicalize_dynamic_symtab)
41156 + (bfd *, struct bfd_symbol **);
41157 + /* Create synthetized symbols. */
41158 + long (*_bfd_get_synthetic_symtab)
41159 + (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
41160 + struct bfd_symbol **);
41161 + /* Get the amount of memory required to hold the dynamic relocs. */
41162 + long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
41163 + /* Read in the dynamic relocs. */
41164 + long (*_bfd_canonicalize_dynamic_reloc)
41165 + (bfd *, arelent **, struct bfd_symbol **);
41166 +
41167 + /* Opposite endian version of this target. */
41168 + const struct bfd_target * alternative_target;
41169 +
41170 + /* Data for use by back-end routines, which isn't
41171 + generic enough to belong in this structure. */
41172 + const void *backend_data;
41173 +
41174 +} bfd_target;
41175 +
41176 +bfd_boolean bfd_set_default_target (const char *name);
41177 +
41178 +const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
41179 +
41180 +const char ** bfd_target_list (void);
41181 +
41182 +const bfd_target *bfd_search_for_target
41183 + (int (*search_func) (const bfd_target *, void *),
41184 + void *);
41185 +
41186 +/* Extracted from format.c. */
41187 +bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
41188 +
41189 +bfd_boolean bfd_check_format_matches
41190 + (bfd *abfd, bfd_format format, char ***matching);
41191 +
41192 +bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
41193 +
41194 +const char *bfd_format_string (bfd_format format);
41195 +
41196 +/* Extracted from linker.c. */
41197 +bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
41198 +
41199 +#define bfd_link_split_section(abfd, sec) \
41200 + BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
41201 +
41202 +void bfd_section_already_linked (bfd *abfd, asection *sec,
41203 + struct bfd_link_info *info);
41204 +
41205 +#define bfd_section_already_linked(abfd, sec, info) \
41206 + BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
41207 +
41208 +/* Extracted from simple.c. */
41209 +bfd_byte *bfd_simple_get_relocated_section_contents
41210 + (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
41211 +
41212 +#ifdef __cplusplus
41213 +}
41214 +#endif
41215 +#endif
41216 --- /dev/null
41217 +++ b/bfd/doc/libbfd.h
41218 @@ -0,0 +1,2074 @@
41219 +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
41220 + generated from "libbfd-in.h", "init.c", "libbfd.c", "bfdio.c",
41221 + "bfdwin.c", "cache.c", "reloc.c", "archures.c" and "elf.c".
41222 + Run "make headers" in your build bfd/ to regenerate. */
41223 +
41224 +/* libbfd.h -- Declarations used by bfd library *implementation*.
41225 + (This include file is not for users of the library.)
41226 +
41227 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
41228 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
41229 + Free Software Foundation, Inc.
41230 +
41231 + Written by Cygnus Support.
41232 +
41233 + This file is part of BFD, the Binary File Descriptor library.
41234 +
41235 + This program is free software; you can redistribute it and/or modify
41236 + it under the terms of the GNU General Public License as published by
41237 + the Free Software Foundation; either version 3 of the License, or
41238 + (at your option) any later version.
41239 +
41240 + This program is distributed in the hope that it will be useful,
41241 + but WITHOUT ANY WARRANTY; without even the implied warranty of
41242 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
41243 + GNU General Public License for more details.
41244 +
41245 + You should have received a copy of the GNU General Public License
41246 + along with this program; if not, write to the Free Software
41247 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
41248 + MA 02110-1301, USA. */
41249 +
41250 +#include "hashtab.h"
41251 +
41252 +/* Align an address upward to a boundary, expressed as a number of bytes.
41253 + E.g. align to an 8-byte boundary with argument of 8. Take care never
41254 + to wrap around if the address is within boundary-1 of the end of the
41255 + address space. */
41256 +#define BFD_ALIGN(this, boundary) \
41257 + ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this)) \
41258 + ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
41259 + : ~ (bfd_vma) 0)
41260 +
41261 +/* If you want to read and write large blocks, you might want to do it
41262 + in quanta of this amount */
41263 +#define DEFAULT_BUFFERSIZE 8192
41264 +
41265 +/* Set a tdata field. Can't use the other macros for this, since they
41266 + do casts, and casting to the left of assignment isn't portable. */
41267 +#define set_tdata(bfd, v) ((bfd)->tdata.any = (v))
41268 +
41269 +/* If BFD_IN_MEMORY is set for a BFD, then the iostream fields points
41270 + to an instance of this structure. */
41271 +
41272 +struct bfd_in_memory
41273 +{
41274 + /* Size of buffer. */
41275 + bfd_size_type size;
41276 + /* Buffer holding contents of BFD. */
41277 + bfd_byte *buffer;
41278 +};
41279 +
41280 +struct section_hash_entry
41281 +{
41282 + struct bfd_hash_entry root;
41283 + asection section;
41284 +};
41285 +
41286 +/* tdata for an archive. For an input archive, cache
41287 + needs to be free()'d. For an output archive, symdefs do. */
41288 +
41289 +struct artdata {
41290 + file_ptr first_file_filepos;
41291 + /* Speed up searching the armap */
41292 + htab_t cache;
41293 + bfd *archive_head; /* Only interesting in output routines */
41294 + carsym *symdefs; /* the symdef entries */
41295 + symindex symdef_count; /* how many there are */
41296 + char *extended_names; /* clever intel extension */
41297 + bfd_size_type extended_names_size; /* Size of extended names */
41298 + /* when more compilers are standard C, this can be a time_t */
41299 + long armap_timestamp; /* Timestamp value written into armap.
41300 + This is used for BSD archives to check
41301 + that the timestamp is recent enough
41302 + for the BSD linker to not complain,
41303 + just before we finish writing an
41304 + archive. */
41305 + file_ptr armap_datepos; /* Position within archive to seek to
41306 + rewrite the date field. */
41307 + void *tdata; /* Backend specific information. */
41308 +};
41309 +
41310 +#define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
41311 +
41312 +/* Goes in bfd's arelt_data slot */
41313 +struct areltdata {
41314 + char * arch_header; /* it's actually a string */
41315 + unsigned int parsed_size; /* octets of filesize not including ar_hdr */
41316 + char *filename; /* null-terminated */
41317 +};
41318 +
41319 +#define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
41320 +
41321 +extern void *bfd_malloc
41322 + (bfd_size_type);
41323 +extern void *bfd_realloc
41324 + (void *, bfd_size_type);
41325 +extern void *bfd_zmalloc
41326 + (bfd_size_type);
41327 +extern void *bfd_malloc2
41328 + (bfd_size_type, bfd_size_type);
41329 +extern void *bfd_realloc2
41330 + (void *, bfd_size_type, bfd_size_type);
41331 +extern void *bfd_zmalloc2
41332 + (bfd_size_type, bfd_size_type);
41333 +
41334 +extern void _bfd_default_error_handler (const char *s, ...);
41335 +extern bfd_error_handler_type _bfd_error_handler;
41336 +
41337 +/* These routines allocate and free things on the BFD's objalloc. */
41338 +
41339 +extern void *bfd_alloc
41340 + (bfd *, bfd_size_type);
41341 +extern void *bfd_zalloc
41342 + (bfd *, bfd_size_type);
41343 +extern void *bfd_alloc2
41344 + (bfd *, bfd_size_type, bfd_size_type);
41345 +extern void *bfd_zalloc2
41346 + (bfd *, bfd_size_type, bfd_size_type);
41347 +extern void bfd_release
41348 + (bfd *, void *);
41349 +
41350 +bfd * _bfd_create_empty_archive_element_shell
41351 + (bfd *obfd);
41352 +bfd * _bfd_look_for_bfd_in_cache
41353 + (bfd *, file_ptr);
41354 +bfd_boolean _bfd_add_bfd_to_archive_cache
41355 + (bfd *, file_ptr, bfd *);
41356 +bfd_boolean _bfd_generic_mkarchive
41357 + (bfd *abfd);
41358 +const bfd_target *bfd_generic_archive_p
41359 + (bfd *abfd);
41360 +bfd_boolean bfd_slurp_armap
41361 + (bfd *abfd);
41362 +bfd_boolean bfd_slurp_bsd_armap_f2
41363 + (bfd *abfd);
41364 +#define bfd_slurp_bsd_armap bfd_slurp_armap
41365 +#define bfd_slurp_coff_armap bfd_slurp_armap
41366 +bfd_boolean _bfd_slurp_extended_name_table
41367 + (bfd *abfd);
41368 +extern bfd_boolean _bfd_construct_extended_name_table
41369 + (bfd *, bfd_boolean, char **, bfd_size_type *);
41370 +bfd_boolean _bfd_write_archive_contents
41371 + (bfd *abfd);
41372 +bfd_boolean _bfd_compute_and_write_armap
41373 + (bfd *, unsigned int elength);
41374 +bfd *_bfd_get_elt_at_filepos
41375 + (bfd *archive, file_ptr filepos);
41376 +extern bfd *_bfd_generic_get_elt_at_index
41377 + (bfd *, symindex);
41378 +bfd * _bfd_new_bfd
41379 + (void);
41380 +void _bfd_delete_bfd
41381 + (bfd *);
41382 +bfd_boolean _bfd_free_cached_info
41383 + (bfd *);
41384 +
41385 +bfd_boolean bfd_false
41386 + (bfd *ignore);
41387 +bfd_boolean bfd_true
41388 + (bfd *ignore);
41389 +void *bfd_nullvoidptr
41390 + (bfd *ignore);
41391 +int bfd_0
41392 + (bfd *ignore);
41393 +unsigned int bfd_0u
41394 + (bfd *ignore);
41395 +long bfd_0l
41396 + (bfd *ignore);
41397 +long _bfd_n1
41398 + (bfd *ignore);
41399 +void bfd_void
41400 + (bfd *ignore);
41401 +
41402 +bfd *_bfd_new_bfd_contained_in
41403 + (bfd *);
41404 +const bfd_target *_bfd_dummy_target
41405 + (bfd *abfd);
41406 +
41407 +void bfd_dont_truncate_arname
41408 + (bfd *abfd, const char *filename, char *hdr);
41409 +void bfd_bsd_truncate_arname
41410 + (bfd *abfd, const char *filename, char *hdr);
41411 +void bfd_gnu_truncate_arname
41412 + (bfd *abfd, const char *filename, char *hdr);
41413 +
41414 +bfd_boolean bsd_write_armap
41415 + (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
41416 + int stridx);
41417 +
41418 +bfd_boolean coff_write_armap
41419 + (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
41420 + int stridx);
41421 +
41422 +extern void *_bfd_generic_read_ar_hdr
41423 + (bfd *);
41424 +extern void _bfd_ar_spacepad
41425 + (char *, size_t, const char *, long);
41426 +
41427 +extern void *_bfd_generic_read_ar_hdr_mag
41428 + (bfd *, const char *);
41429 +
41430 +bfd * bfd_generic_openr_next_archived_file
41431 + (bfd *archive, bfd *last_file);
41432 +
41433 +int bfd_generic_stat_arch_elt
41434 + (bfd *, struct stat *);
41435 +
41436 +#define _bfd_read_ar_hdr(abfd) \
41437 + BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
41438 +\f
41439 +/* Generic routines to use for BFD_JUMP_TABLE_GENERIC. Use
41440 + BFD_JUMP_TABLE_GENERIC (_bfd_generic). */
41441 +
41442 +#define _bfd_generic_close_and_cleanup bfd_true
41443 +#define _bfd_generic_bfd_free_cached_info bfd_true
41444 +extern bfd_boolean _bfd_generic_new_section_hook
41445 + (bfd *, asection *);
41446 +extern bfd_boolean _bfd_generic_get_section_contents
41447 + (bfd *, asection *, void *, file_ptr, bfd_size_type);
41448 +extern bfd_boolean _bfd_generic_get_section_contents_in_window
41449 + (bfd *, asection *, bfd_window *, file_ptr, bfd_size_type);
41450 +
41451 +/* Generic routines to use for BFD_JUMP_TABLE_COPY. Use
41452 + BFD_JUMP_TABLE_COPY (_bfd_generic). */
41453 +
41454 +#define _bfd_generic_bfd_copy_private_bfd_data \
41455 + ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
41456 +#define _bfd_generic_bfd_merge_private_bfd_data \
41457 + ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
41458 +#define _bfd_generic_bfd_set_private_flags \
41459 + ((bfd_boolean (*) (bfd *, flagword)) bfd_true)
41460 +#define _bfd_generic_bfd_copy_private_section_data \
41461 + ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true)
41462 +#define _bfd_generic_bfd_copy_private_symbol_data \
41463 + ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true)
41464 +#define _bfd_generic_bfd_copy_private_header_data \
41465 + ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
41466 +#define _bfd_generic_bfd_print_private_bfd_data \
41467 + ((bfd_boolean (*) (bfd *, void *)) bfd_true)
41468 +
41469 +extern bfd_boolean _bfd_generic_init_private_section_data
41470 + (bfd *, asection *, bfd *, asection *, struct bfd_link_info *);
41471 +
41472 +/* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
41473 + support. Use BFD_JUMP_TABLE_CORE (_bfd_nocore). */
41474 +
41475 +extern char *_bfd_nocore_core_file_failing_command
41476 + (bfd *);
41477 +extern int _bfd_nocore_core_file_failing_signal
41478 + (bfd *);
41479 +extern bfd_boolean _bfd_nocore_core_file_matches_executable_p
41480 + (bfd *, bfd *);
41481 +
41482 +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive
41483 + file support. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive). */
41484 +
41485 +#define _bfd_noarchive_slurp_armap bfd_false
41486 +#define _bfd_noarchive_slurp_extended_name_table bfd_false
41487 +#define _bfd_noarchive_construct_extended_name_table \
41488 + ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) \
41489 + bfd_false)
41490 +#define _bfd_noarchive_truncate_arname \
41491 + ((void (*) (bfd *, const char *, char *)) bfd_void)
41492 +#define _bfd_noarchive_write_armap \
41493 + ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \
41494 + bfd_false)
41495 +#define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr
41496 +#define _bfd_noarchive_openr_next_archived_file \
41497 + ((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr)
41498 +#define _bfd_noarchive_get_elt_at_index \
41499 + ((bfd *(*) (bfd *, symindex)) bfd_nullvoidptr)
41500 +#define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
41501 +#define _bfd_noarchive_update_armap_timestamp bfd_false
41502 +
41503 +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
41504 + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd). */
41505 +
41506 +#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
41507 +#define _bfd_archive_bsd_slurp_extended_name_table \
41508 + _bfd_slurp_extended_name_table
41509 +extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
41510 + (bfd *, char **, bfd_size_type *, const char **);
41511 +#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
41512 +#define _bfd_archive_bsd_write_armap bsd_write_armap
41513 +#define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
41514 +#define _bfd_archive_bsd_openr_next_archived_file \
41515 + bfd_generic_openr_next_archived_file
41516 +#define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
41517 +#define _bfd_archive_bsd_generic_stat_arch_elt \
41518 + bfd_generic_stat_arch_elt
41519 +extern bfd_boolean _bfd_archive_bsd_update_armap_timestamp
41520 + (bfd *);
41521 +
41522 +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
41523 + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff). */
41524 +
41525 +#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
41526 +#define _bfd_archive_coff_slurp_extended_name_table \
41527 + _bfd_slurp_extended_name_table
41528 +extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
41529 + (bfd *, char **, bfd_size_type *, const char **);
41530 +#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
41531 +#define _bfd_archive_coff_write_armap coff_write_armap
41532 +#define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
41533 +#define _bfd_archive_coff_openr_next_archived_file \
41534 + bfd_generic_openr_next_archived_file
41535 +#define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index
41536 +#define _bfd_archive_coff_generic_stat_arch_elt \
41537 + bfd_generic_stat_arch_elt
41538 +#define _bfd_archive_coff_update_armap_timestamp bfd_true
41539 +
41540 +/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
41541 + support. Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). */
41542 +
41543 +#define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1
41544 +#define _bfd_nosymbols_canonicalize_symtab \
41545 + ((long (*) (bfd *, asymbol **)) _bfd_n1)
41546 +#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
41547 +#define _bfd_nosymbols_print_symbol \
41548 + ((void (*) (bfd *, void *, asymbol *, bfd_print_symbol_type)) bfd_void)
41549 +#define _bfd_nosymbols_get_symbol_info \
41550 + ((void (*) (bfd *, asymbol *, symbol_info *)) bfd_void)
41551 +#define _bfd_nosymbols_bfd_is_local_label_name \
41552 + ((bfd_boolean (*) (bfd *, const char *)) bfd_false)
41553 +#define _bfd_nosymbols_bfd_is_target_special_symbol \
41554 + ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
41555 +#define _bfd_nosymbols_get_lineno \
41556 + ((alent *(*) (bfd *, asymbol *)) bfd_nullvoidptr)
41557 +#define _bfd_nosymbols_find_nearest_line \
41558 + ((bfd_boolean (*) (bfd *, asection *, asymbol **, bfd_vma, const char **, \
41559 + const char **, unsigned int *)) \
41560 + bfd_false)
41561 +#define _bfd_nosymbols_find_inliner_info \
41562 + ((bfd_boolean (*) (bfd *, const char **, const char **, unsigned int *)) \
41563 + bfd_false)
41564 +#define _bfd_nosymbols_bfd_make_debug_symbol \
41565 + ((asymbol *(*) (bfd *, void *, unsigned long)) bfd_nullvoidptr)
41566 +#define _bfd_nosymbols_read_minisymbols \
41567 + ((long (*) (bfd *, bfd_boolean, void **, unsigned int *)) _bfd_n1)
41568 +#define _bfd_nosymbols_minisymbol_to_symbol \
41569 + ((asymbol *(*) (bfd *, bfd_boolean, const void *, asymbol *)) \
41570 + bfd_nullvoidptr)
41571 +
41572 +/* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
41573 + support. Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs). */
41574 +
41575 +extern long _bfd_norelocs_get_reloc_upper_bound (bfd *, asection *);
41576 +extern long _bfd_norelocs_canonicalize_reloc (bfd *, asection *,
41577 + arelent **, asymbol **);
41578 +#define _bfd_norelocs_bfd_reloc_type_lookup \
41579 + ((reloc_howto_type *(*) (bfd *, bfd_reloc_code_real_type)) bfd_nullvoidptr)
41580 +#define _bfd_norelocs_bfd_reloc_name_lookup \
41581 + ((reloc_howto_type *(*) (bfd *, const char *)) bfd_nullvoidptr)
41582 +
41583 +/* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
41584 + be written. Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite). */
41585 +
41586 +#define _bfd_nowrite_set_arch_mach \
41587 + ((bfd_boolean (*) (bfd *, enum bfd_architecture, unsigned long)) \
41588 + bfd_false)
41589 +#define _bfd_nowrite_set_section_contents \
41590 + ((bfd_boolean (*) (bfd *, asection *, const void *, file_ptr, bfd_size_type)) \
41591 + bfd_false)
41592 +
41593 +/* Generic routines to use for BFD_JUMP_TABLE_WRITE. Use
41594 + BFD_JUMP_TABLE_WRITE (_bfd_generic). */
41595 +
41596 +#define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
41597 +extern bfd_boolean _bfd_generic_set_section_contents
41598 + (bfd *, asection *, const void *, file_ptr, bfd_size_type);
41599 +
41600 +/* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
41601 + support linking. Use BFD_JUMP_TABLE_LINK (_bfd_nolink). */
41602 +
41603 +#define _bfd_nolink_sizeof_headers \
41604 + ((int (*) (bfd *, struct bfd_link_info *)) bfd_0)
41605 +#define _bfd_nolink_bfd_get_relocated_section_contents \
41606 + ((bfd_byte *(*) (bfd *, struct bfd_link_info *, struct bfd_link_order *, \
41607 + bfd_byte *, bfd_boolean, asymbol **)) \
41608 + bfd_nullvoidptr)
41609 +#define _bfd_nolink_bfd_relax_section \
41610 + ((bfd_boolean (*) \
41611 + (bfd *, asection *, struct bfd_link_info *, bfd_boolean *)) \
41612 + bfd_false)
41613 +#define _bfd_nolink_bfd_gc_sections \
41614 + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
41615 + bfd_false)
41616 +#define _bfd_nolink_bfd_merge_sections \
41617 + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
41618 + bfd_false)
41619 +#define _bfd_nolink_bfd_is_group_section \
41620 + ((bfd_boolean (*) (bfd *, const struct bfd_section *)) \
41621 + bfd_false)
41622 +#define _bfd_nolink_bfd_discard_group \
41623 + ((bfd_boolean (*) (bfd *, struct bfd_section *)) \
41624 + bfd_false)
41625 +#define _bfd_nolink_bfd_link_hash_table_create \
41626 + ((struct bfd_link_hash_table *(*) (bfd *)) bfd_nullvoidptr)
41627 +#define _bfd_nolink_bfd_link_hash_table_free \
41628 + ((void (*) (struct bfd_link_hash_table *)) bfd_void)
41629 +#define _bfd_nolink_bfd_link_add_symbols \
41630 + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
41631 +#define _bfd_nolink_bfd_link_just_syms \
41632 + ((void (*) (asection *, struct bfd_link_info *)) bfd_void)
41633 +#define _bfd_nolink_bfd_final_link \
41634 + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
41635 +#define _bfd_nolink_bfd_link_split_section \
41636 + ((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
41637 +#define _bfd_nolink_section_already_linked \
41638 + ((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
41639 +
41640 +/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
41641 + have dynamic symbols or relocs. Use BFD_JUMP_TABLE_DYNAMIC
41642 + (_bfd_nodynamic). */
41643 +
41644 +#define _bfd_nodynamic_get_dynamic_symtab_upper_bound _bfd_n1
41645 +#define _bfd_nodynamic_canonicalize_dynamic_symtab \
41646 + ((long (*) (bfd *, asymbol **)) _bfd_n1)
41647 +#define _bfd_nodynamic_get_synthetic_symtab \
41648 + ((long (*) (bfd *, long, asymbol **, long, asymbol **, asymbol **)) _bfd_n1)
41649 +#define _bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_n1
41650 +#define _bfd_nodynamic_canonicalize_dynamic_reloc \
41651 + ((long (*) (bfd *, arelent **, asymbol **)) _bfd_n1)
41652 +\f
41653 +/* Generic routine to determine of the given symbol is a local
41654 + label. */
41655 +extern bfd_boolean bfd_generic_is_local_label_name
41656 + (bfd *, const char *);
41657 +
41658 +/* Generic minisymbol routines. */
41659 +extern long _bfd_generic_read_minisymbols
41660 + (bfd *, bfd_boolean, void **, unsigned int *);
41661 +extern asymbol *_bfd_generic_minisymbol_to_symbol
41662 + (bfd *, bfd_boolean, const void *, asymbol *);
41663 +
41664 +/* Find the nearest line using .stab/.stabstr sections. */
41665 +extern bfd_boolean _bfd_stab_section_find_nearest_line
41666 + (bfd *, asymbol **, asection *, bfd_vma, bfd_boolean *,
41667 + const char **, const char **, unsigned int *, void **);
41668 +
41669 +/* Find the nearest line using DWARF 1 debugging information. */
41670 +extern bfd_boolean _bfd_dwarf1_find_nearest_line
41671 + (bfd *, asection *, asymbol **, bfd_vma, const char **,
41672 + const char **, unsigned int *);
41673 +
41674 +/* Find the nearest line using DWARF 2 debugging information. */
41675 +extern bfd_boolean _bfd_dwarf2_find_nearest_line
41676 + (bfd *, asection *, asymbol **, bfd_vma, const char **, const char **,
41677 + unsigned int *, unsigned int, void **);
41678 +
41679 +/* Find the line using DWARF 2 debugging information. */
41680 +extern bfd_boolean _bfd_dwarf2_find_line
41681 + (bfd *, asymbol **, asymbol *, const char **,
41682 + unsigned int *, unsigned int, void **);
41683 +
41684 +bfd_boolean _bfd_generic_find_line
41685 + (bfd *, asymbol **, asymbol *, const char **, unsigned int *);
41686 +
41687 +/* Find inliner info after calling bfd_find_nearest_line. */
41688 +extern bfd_boolean _bfd_dwarf2_find_inliner_info
41689 + (bfd *, const char **, const char **, unsigned int *, void **);
41690 +
41691 +/* Create a new section entry. */
41692 +extern struct bfd_hash_entry *bfd_section_hash_newfunc
41693 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
41694 +
41695 +/* A routine to create entries for a bfd_link_hash_table. */
41696 +extern struct bfd_hash_entry *_bfd_link_hash_newfunc
41697 + (struct bfd_hash_entry *entry, struct bfd_hash_table *table,
41698 + const char *string);
41699 +
41700 +/* Initialize a bfd_link_hash_table. */
41701 +extern bfd_boolean _bfd_link_hash_table_init
41702 + (struct bfd_link_hash_table *, bfd *,
41703 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
41704 + struct bfd_hash_table *,
41705 + const char *),
41706 + unsigned int);
41707 +
41708 +/* Generic link hash table creation routine. */
41709 +extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
41710 + (bfd *);
41711 +
41712 +/* Generic link hash table destruction routine. */
41713 +extern void _bfd_generic_link_hash_table_free
41714 + (struct bfd_link_hash_table *);
41715 +
41716 +/* Generic add symbol routine. */
41717 +extern bfd_boolean _bfd_generic_link_add_symbols
41718 + (bfd *, struct bfd_link_info *);
41719 +
41720 +/* Generic add symbol routine. This version is used by targets for
41721 + which the linker must collect constructors and destructors by name,
41722 + as the collect2 program does. */
41723 +extern bfd_boolean _bfd_generic_link_add_symbols_collect
41724 + (bfd *, struct bfd_link_info *);
41725 +
41726 +/* Generic archive add symbol routine. */
41727 +extern bfd_boolean _bfd_generic_link_add_archive_symbols
41728 + (bfd *, struct bfd_link_info *,
41729 + bfd_boolean (*) (bfd *, struct bfd_link_info *, bfd_boolean *));
41730 +
41731 +/* Forward declaration to avoid prototype errors. */
41732 +typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
41733 +
41734 +/* Generic routine to add a single symbol. */
41735 +extern bfd_boolean _bfd_generic_link_add_one_symbol
41736 + (struct bfd_link_info *, bfd *, const char *name, flagword,
41737 + asection *, bfd_vma, const char *, bfd_boolean copy,
41738 + bfd_boolean constructor, struct bfd_link_hash_entry **);
41739 +
41740 +/* Generic routine to mark section as supplying symbols only. */
41741 +extern void _bfd_generic_link_just_syms
41742 + (asection *, struct bfd_link_info *);
41743 +
41744 +/* Generic link routine. */
41745 +extern bfd_boolean _bfd_generic_final_link
41746 + (bfd *, struct bfd_link_info *);
41747 +
41748 +extern bfd_boolean _bfd_generic_link_split_section
41749 + (bfd *, struct bfd_section *);
41750 +
41751 +extern void _bfd_generic_section_already_linked
41752 + (bfd *, struct bfd_section *, struct bfd_link_info *);
41753 +
41754 +/* Generic reloc_link_order processing routine. */
41755 +extern bfd_boolean _bfd_generic_reloc_link_order
41756 + (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
41757 +
41758 +/* Default link order processing routine. */
41759 +extern bfd_boolean _bfd_default_link_order
41760 + (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
41761 +
41762 +/* Count the number of reloc entries in a link order list. */
41763 +extern unsigned int _bfd_count_link_order_relocs
41764 + (struct bfd_link_order *);
41765 +
41766 +/* Final link relocation routine. */
41767 +extern bfd_reloc_status_type _bfd_final_link_relocate
41768 + (reloc_howto_type *, bfd *, asection *, bfd_byte *,
41769 + bfd_vma, bfd_vma, bfd_vma);
41770 +
41771 +/* Relocate a particular location by a howto and a value. */
41772 +extern bfd_reloc_status_type _bfd_relocate_contents
41773 + (reloc_howto_type *, bfd *, bfd_vma, bfd_byte *);
41774 +
41775 +/* Clear a given location using a given howto. */
41776 +extern void _bfd_clear_contents (reloc_howto_type *howto, bfd *input_bfd,
41777 + bfd_byte *location);
41778 +
41779 +/* Link stabs in sections in the first pass. */
41780 +
41781 +extern bfd_boolean _bfd_link_section_stabs
41782 + (bfd *, struct stab_info *, asection *, asection *, void **,
41783 + bfd_size_type *);
41784 +
41785 +/* Eliminate stabs for discarded functions and symbols. */
41786 +extern bfd_boolean _bfd_discard_section_stabs
41787 + (bfd *, asection *, void *, bfd_boolean (*) (bfd_vma, void *), void *);
41788 +
41789 +/* Write out the .stab section when linking stabs in sections. */
41790 +
41791 +extern bfd_boolean _bfd_write_section_stabs
41792 + (bfd *, struct stab_info *, asection *, void **, bfd_byte *);
41793 +
41794 +/* Write out the .stabstr string table when linking stabs in sections. */
41795 +
41796 +extern bfd_boolean _bfd_write_stab_strings
41797 + (bfd *, struct stab_info *);
41798 +
41799 +/* Find an offset within a .stab section when linking stabs in
41800 + sections. */
41801 +
41802 +extern bfd_vma _bfd_stab_section_offset
41803 + (asection *, void *, bfd_vma);
41804 +
41805 +/* Register a SEC_MERGE section as a candidate for merging. */
41806 +
41807 +extern bfd_boolean _bfd_add_merge_section
41808 + (bfd *, void **, asection *, void **);
41809 +
41810 +/* Attempt to merge SEC_MERGE sections. */
41811 +
41812 +extern bfd_boolean _bfd_merge_sections
41813 + (bfd *, struct bfd_link_info *, void *, void (*) (bfd *, asection *));
41814 +
41815 +/* Write out a merged section. */
41816 +
41817 +extern bfd_boolean _bfd_write_merged_section
41818 + (bfd *, asection *, void *);
41819 +
41820 +/* Find an offset within a modified SEC_MERGE section. */
41821 +
41822 +extern bfd_vma _bfd_merged_section_offset
41823 + (bfd *, asection **, void *, bfd_vma);
41824 +
41825 +/* Create a string table. */
41826 +extern struct bfd_strtab_hash *_bfd_stringtab_init
41827 + (void);
41828 +
41829 +/* Create an XCOFF .debug section style string table. */
41830 +extern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
41831 + (void);
41832 +
41833 +/* Free a string table. */
41834 +extern void _bfd_stringtab_free
41835 + (struct bfd_strtab_hash *);
41836 +
41837 +/* Get the size of a string table. */
41838 +extern bfd_size_type _bfd_stringtab_size
41839 + (struct bfd_strtab_hash *);
41840 +
41841 +/* Add a string to a string table. */
41842 +extern bfd_size_type _bfd_stringtab_add
41843 + (struct bfd_strtab_hash *, const char *, bfd_boolean hash, bfd_boolean copy);
41844 +
41845 +/* Write out a string table. */
41846 +extern bfd_boolean _bfd_stringtab_emit
41847 + (bfd *, struct bfd_strtab_hash *);
41848 +
41849 +/* Check that endianness of input and output file match. */
41850 +extern bfd_boolean _bfd_generic_verify_endian_match
41851 + (bfd *, bfd *);
41852 +\f
41853 +/* Macros to tell if bfds are read or write enabled.
41854 +
41855 + Note that bfds open for read may be scribbled into if the fd passed
41856 + to bfd_fdopenr is actually open both for read and write
41857 + simultaneously. However an output bfd will never be open for
41858 + read. Therefore sometimes you want to check bfd_read_p or
41859 + !bfd_read_p, and only sometimes bfd_write_p.
41860 +*/
41861 +
41862 +#define bfd_read_p(abfd) \
41863 + ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
41864 +#define bfd_write_p(abfd) \
41865 + ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
41866 +
41867 +void bfd_assert
41868 + (const char*,int);
41869 +
41870 +#define BFD_ASSERT(x) \
41871 + do { if (!(x)) bfd_assert(__FILE__,__LINE__); } while (0)
41872 +
41873 +#define BFD_FAIL() \
41874 + do { bfd_assert(__FILE__,__LINE__); } while (0)
41875 +
41876 +extern void _bfd_abort
41877 + (const char *, int, const char *) ATTRIBUTE_NORETURN;
41878 +
41879 +/* if gcc >= 2.6, we can give a function name, too */
41880 +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
41881 +#define __PRETTY_FUNCTION__ ((char *) NULL)
41882 +#endif
41883 +
41884 +#undef abort
41885 +#define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
41886 +
41887 +/* Manipulate a system FILE but using BFD's "file_ptr", rather than
41888 + the system "off_t" or "off64_t", as the offset. */
41889 +extern file_ptr real_ftell (FILE *file);
41890 +extern int real_fseek (FILE *file, file_ptr offset, int whence);
41891 +extern FILE *real_fopen (const char *filename, const char *modes);
41892 +
41893 +/* List of supported target vectors, and the default vector (if
41894 + bfd_default_vector[0] is NULL, there is no default). */
41895 +extern const bfd_target * const *bfd_target_vector;
41896 +extern const bfd_target *bfd_default_vector[];
41897 +
41898 +/* List of associated target vectors. */
41899 +extern const bfd_target * const *bfd_associated_vector;
41900 +
41901 +/* Functions shared by the ECOFF and MIPS ELF backends, which have no
41902 + other common header files. */
41903 +
41904 +#if defined(__STDC__) || defined(ALMOST_STDC)
41905 +struct ecoff_find_line;
41906 +#endif
41907 +
41908 +extern bfd_boolean _bfd_ecoff_locate_line
41909 + (bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
41910 + const struct ecoff_debug_swap * const, struct ecoff_find_line *,
41911 + const char **, const char **, unsigned int *);
41912 +extern bfd_boolean _bfd_ecoff_get_accumulated_pdr
41913 + (void *, bfd_byte *);
41914 +extern bfd_boolean _bfd_ecoff_get_accumulated_sym
41915 + (void *, bfd_byte *);
41916 +extern bfd_boolean _bfd_ecoff_get_accumulated_ss
41917 + (void *, bfd_byte *);
41918 +
41919 +extern bfd_vma _bfd_get_gp_value
41920 + (bfd *);
41921 +extern void _bfd_set_gp_value
41922 + (bfd *, bfd_vma);
41923 +
41924 +/* Function shared by the COFF and ELF SH backends, which have no
41925 + other common header files. */
41926 +
41927 +#ifndef _bfd_sh_align_load_span
41928 +extern bfd_boolean _bfd_sh_align_load_span
41929 + (bfd *, asection *, bfd_byte *,
41930 + bfd_boolean (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
41931 + void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bfd_boolean *);
41932 +#endif
41933 +
41934 +/* This is the shape of the elements inside the already_linked hash
41935 + table. It maps a name onto a list of already_linked elements with
41936 + the same name. */
41937 +
41938 +struct bfd_section_already_linked_hash_entry
41939 +{
41940 + struct bfd_hash_entry root;
41941 + struct bfd_section_already_linked *entry;
41942 +};
41943 +
41944 +struct bfd_section_already_linked
41945 +{
41946 + struct bfd_section_already_linked *next;
41947 + asection *sec;
41948 +};
41949 +
41950 +extern struct bfd_section_already_linked_hash_entry *
41951 + bfd_section_already_linked_table_lookup (const char *);
41952 +extern bfd_boolean bfd_section_already_linked_table_insert
41953 + (struct bfd_section_already_linked_hash_entry *, asection *);
41954 +extern void bfd_section_already_linked_table_traverse
41955 + (bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
41956 + void *), void *);
41957 +
41958 +extern bfd_vma read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *);
41959 +extern bfd_signed_vma read_signed_leb128 (bfd *, bfd_byte *, unsigned int *);
41960 +
41961 +/* Extracted from init.c. */
41962 +/* Extracted from libbfd.c. */
41963 +bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
41964 +
41965 +unsigned int bfd_log2 (bfd_vma x);
41966 +
41967 +/* Extracted from bfdio.c. */
41968 +struct bfd_iovec
41969 +{
41970 + /* To avoid problems with macros, a "b" rather than "f"
41971 + prefix is prepended to each method name. */
41972 + /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
41973 + bytes starting at PTR. Return the number of bytes actually
41974 + transfered (a read past end-of-file returns less than NBYTES),
41975 + or -1 (setting <<bfd_error>>) if an error occurs. */
41976 + file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
41977 + file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
41978 + file_ptr nbytes);
41979 + /* Return the current IOSTREAM file offset, or -1 (setting <<bfd_error>>
41980 + if an error occurs. */
41981 + file_ptr (*btell) (struct bfd *abfd);
41982 + /* For the following, on successful completion a value of 0 is returned.
41983 + Otherwise, a value of -1 is returned (and <<bfd_error>> is set). */
41984 + int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
41985 + int (*bclose) (struct bfd *abfd);
41986 + int (*bflush) (struct bfd *abfd);
41987 + int (*bstat) (struct bfd *abfd, struct stat *sb);
41988 +};
41989 +/* Extracted from bfdwin.c. */
41990 +struct _bfd_window_internal {
41991 + struct _bfd_window_internal *next;
41992 + void *data;
41993 + bfd_size_type size;
41994 + int refcount : 31; /* should be enough... */
41995 + unsigned mapped : 1; /* 1 = mmap, 0 = malloc */
41996 +};
41997 +/* Extracted from cache.c. */
41998 +bfd_boolean bfd_cache_init (bfd *abfd);
41999 +
42000 +bfd_boolean bfd_cache_close (bfd *abfd);
42001 +
42002 +FILE* bfd_open_file (bfd *abfd);
42003 +
42004 +/* Extracted from reloc.c. */
42005 +#ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
42006 +
42007 +static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
42008 +
42009 + "BFD_RELOC_64",
42010 + "BFD_RELOC_32",
42011 + "BFD_RELOC_26",
42012 + "BFD_RELOC_24",
42013 + "BFD_RELOC_16",
42014 + "BFD_RELOC_14",
42015 + "BFD_RELOC_8",
42016 + "BFD_RELOC_64_PCREL",
42017 + "BFD_RELOC_32_PCREL",
42018 + "BFD_RELOC_24_PCREL",
42019 + "BFD_RELOC_16_PCREL",
42020 + "BFD_RELOC_12_PCREL",
42021 + "BFD_RELOC_8_PCREL",
42022 + "BFD_RELOC_32_SECREL",
42023 + "BFD_RELOC_32_GOT_PCREL",
42024 + "BFD_RELOC_16_GOT_PCREL",
42025 + "BFD_RELOC_8_GOT_PCREL",
42026 + "BFD_RELOC_32_GOTOFF",
42027 + "BFD_RELOC_16_GOTOFF",
42028 + "BFD_RELOC_LO16_GOTOFF",
42029 + "BFD_RELOC_HI16_GOTOFF",
42030 + "BFD_RELOC_HI16_S_GOTOFF",
42031 + "BFD_RELOC_8_GOTOFF",
42032 + "BFD_RELOC_64_PLT_PCREL",
42033 + "BFD_RELOC_32_PLT_PCREL",
42034 + "BFD_RELOC_24_PLT_PCREL",
42035 + "BFD_RELOC_16_PLT_PCREL",
42036 + "BFD_RELOC_8_PLT_PCREL",
42037 + "BFD_RELOC_64_PLTOFF",
42038 + "BFD_RELOC_32_PLTOFF",
42039 + "BFD_RELOC_16_PLTOFF",
42040 + "BFD_RELOC_LO16_PLTOFF",
42041 + "BFD_RELOC_HI16_PLTOFF",
42042 + "BFD_RELOC_HI16_S_PLTOFF",
42043 + "BFD_RELOC_8_PLTOFF",
42044 + "BFD_RELOC_68K_GLOB_DAT",
42045 + "BFD_RELOC_68K_JMP_SLOT",
42046 + "BFD_RELOC_68K_RELATIVE",
42047 + "BFD_RELOC_32_BASEREL",
42048 + "BFD_RELOC_16_BASEREL",
42049 + "BFD_RELOC_LO16_BASEREL",
42050 + "BFD_RELOC_HI16_BASEREL",
42051 + "BFD_RELOC_HI16_S_BASEREL",
42052 + "BFD_RELOC_8_BASEREL",
42053 + "BFD_RELOC_RVA",
42054 + "BFD_RELOC_8_FFnn",
42055 + "BFD_RELOC_32_PCREL_S2",
42056 + "BFD_RELOC_16_PCREL_S2",
42057 + "BFD_RELOC_23_PCREL_S2",
42058 + "BFD_RELOC_HI22",
42059 + "BFD_RELOC_LO10",
42060 + "BFD_RELOC_GPREL16",
42061 + "BFD_RELOC_GPREL32",
42062 + "BFD_RELOC_I960_CALLJ",
42063 + "BFD_RELOC_NONE",
42064 + "BFD_RELOC_SPARC_WDISP22",
42065 + "BFD_RELOC_SPARC22",
42066 + "BFD_RELOC_SPARC13",
42067 + "BFD_RELOC_SPARC_GOT10",
42068 + "BFD_RELOC_SPARC_GOT13",
42069 + "BFD_RELOC_SPARC_GOT22",
42070 + "BFD_RELOC_SPARC_PC10",
42071 + "BFD_RELOC_SPARC_PC22",
42072 + "BFD_RELOC_SPARC_WPLT30",
42073 + "BFD_RELOC_SPARC_COPY",
42074 + "BFD_RELOC_SPARC_GLOB_DAT",
42075 + "BFD_RELOC_SPARC_JMP_SLOT",
42076 + "BFD_RELOC_SPARC_RELATIVE",
42077 + "BFD_RELOC_SPARC_UA16",
42078 + "BFD_RELOC_SPARC_UA32",
42079 + "BFD_RELOC_SPARC_UA64",
42080 + "BFD_RELOC_SPARC_BASE13",
42081 + "BFD_RELOC_SPARC_BASE22",
42082 + "BFD_RELOC_SPARC_10",
42083 + "BFD_RELOC_SPARC_11",
42084 + "BFD_RELOC_SPARC_OLO10",
42085 + "BFD_RELOC_SPARC_HH22",
42086 + "BFD_RELOC_SPARC_HM10",
42087 + "BFD_RELOC_SPARC_LM22",
42088 + "BFD_RELOC_SPARC_PC_HH22",
42089 + "BFD_RELOC_SPARC_PC_HM10",
42090 + "BFD_RELOC_SPARC_PC_LM22",
42091 + "BFD_RELOC_SPARC_WDISP16",
42092 + "BFD_RELOC_SPARC_WDISP19",
42093 + "BFD_RELOC_SPARC_7",
42094 + "BFD_RELOC_SPARC_6",
42095 + "BFD_RELOC_SPARC_5",
42096 + "BFD_RELOC_SPARC_PLT32",
42097 + "BFD_RELOC_SPARC_PLT64",
42098 + "BFD_RELOC_SPARC_HIX22",
42099 + "BFD_RELOC_SPARC_LOX10",
42100 + "BFD_RELOC_SPARC_H44",
42101 + "BFD_RELOC_SPARC_M44",
42102 + "BFD_RELOC_SPARC_L44",
42103 + "BFD_RELOC_SPARC_REGISTER",
42104 + "BFD_RELOC_SPARC_REV32",
42105 + "BFD_RELOC_SPARC_TLS_GD_HI22",
42106 + "BFD_RELOC_SPARC_TLS_GD_LO10",
42107 + "BFD_RELOC_SPARC_TLS_GD_ADD",
42108 + "BFD_RELOC_SPARC_TLS_GD_CALL",
42109 + "BFD_RELOC_SPARC_TLS_LDM_HI22",
42110 + "BFD_RELOC_SPARC_TLS_LDM_LO10",
42111 + "BFD_RELOC_SPARC_TLS_LDM_ADD",
42112 + "BFD_RELOC_SPARC_TLS_LDM_CALL",
42113 + "BFD_RELOC_SPARC_TLS_LDO_HIX22",
42114 + "BFD_RELOC_SPARC_TLS_LDO_LOX10",
42115 + "BFD_RELOC_SPARC_TLS_LDO_ADD",
42116 + "BFD_RELOC_SPARC_TLS_IE_HI22",
42117 + "BFD_RELOC_SPARC_TLS_IE_LO10",
42118 + "BFD_RELOC_SPARC_TLS_IE_LD",
42119 + "BFD_RELOC_SPARC_TLS_IE_LDX",
42120 + "BFD_RELOC_SPARC_TLS_IE_ADD",
42121 + "BFD_RELOC_SPARC_TLS_LE_HIX22",
42122 + "BFD_RELOC_SPARC_TLS_LE_LOX10",
42123 + "BFD_RELOC_SPARC_TLS_DTPMOD32",
42124 + "BFD_RELOC_SPARC_TLS_DTPMOD64",
42125 + "BFD_RELOC_SPARC_TLS_DTPOFF32",
42126 + "BFD_RELOC_SPARC_TLS_DTPOFF64",
42127 + "BFD_RELOC_SPARC_TLS_TPOFF32",
42128 + "BFD_RELOC_SPARC_TLS_TPOFF64",
42129 + "BFD_RELOC_SPU_IMM7",
42130 + "BFD_RELOC_SPU_IMM8",
42131 + "BFD_RELOC_SPU_IMM10",
42132 + "BFD_RELOC_SPU_IMM10W",
42133 + "BFD_RELOC_SPU_IMM16",
42134 + "BFD_RELOC_SPU_IMM16W",
42135 + "BFD_RELOC_SPU_IMM18",
42136 + "BFD_RELOC_SPU_PCREL9a",
42137 + "BFD_RELOC_SPU_PCREL9b",
42138 + "BFD_RELOC_SPU_PCREL16",
42139 + "BFD_RELOC_SPU_LO16",
42140 + "BFD_RELOC_SPU_HI16",
42141 + "BFD_RELOC_SPU_PPU32",
42142 + "BFD_RELOC_SPU_PPU64",
42143 + "BFD_RELOC_ALPHA_GPDISP_HI16",
42144 + "BFD_RELOC_ALPHA_GPDISP_LO16",
42145 + "BFD_RELOC_ALPHA_GPDISP",
42146 + "BFD_RELOC_ALPHA_LITERAL",
42147 + "BFD_RELOC_ALPHA_ELF_LITERAL",
42148 + "BFD_RELOC_ALPHA_LITUSE",
42149 + "BFD_RELOC_ALPHA_HINT",
42150 + "BFD_RELOC_ALPHA_LINKAGE",
42151 + "BFD_RELOC_ALPHA_CODEADDR",
42152 + "BFD_RELOC_ALPHA_GPREL_HI16",
42153 + "BFD_RELOC_ALPHA_GPREL_LO16",
42154 + "BFD_RELOC_ALPHA_BRSGP",
42155 + "BFD_RELOC_ALPHA_TLSGD",
42156 + "BFD_RELOC_ALPHA_TLSLDM",
42157 + "BFD_RELOC_ALPHA_DTPMOD64",
42158 + "BFD_RELOC_ALPHA_GOTDTPREL16",
42159 + "BFD_RELOC_ALPHA_DTPREL64",
42160 + "BFD_RELOC_ALPHA_DTPREL_HI16",
42161 + "BFD_RELOC_ALPHA_DTPREL_LO16",
42162 + "BFD_RELOC_ALPHA_DTPREL16",
42163 + "BFD_RELOC_ALPHA_GOTTPREL16",
42164 + "BFD_RELOC_ALPHA_TPREL64",
42165 + "BFD_RELOC_ALPHA_TPREL_HI16",
42166 + "BFD_RELOC_ALPHA_TPREL_LO16",
42167 + "BFD_RELOC_ALPHA_TPREL16",
42168 + "BFD_RELOC_MIPS_JMP",
42169 + "BFD_RELOC_MIPS16_JMP",
42170 + "BFD_RELOC_MIPS16_GPREL",
42171 + "BFD_RELOC_HI16",
42172 + "BFD_RELOC_HI16_S",
42173 + "BFD_RELOC_LO16",
42174 + "BFD_RELOC_HI16_PCREL",
42175 + "BFD_RELOC_HI16_S_PCREL",
42176 + "BFD_RELOC_LO16_PCREL",
42177 + "BFD_RELOC_MIPS16_HI16",
42178 + "BFD_RELOC_MIPS16_HI16_S",
42179 + "BFD_RELOC_MIPS16_LO16",
42180 + "BFD_RELOC_MIPS_LITERAL",
42181 + "BFD_RELOC_MIPS_GOT16",
42182 + "BFD_RELOC_MIPS_CALL16",
42183 + "BFD_RELOC_MIPS_GOT_HI16",
42184 + "BFD_RELOC_MIPS_GOT_LO16",
42185 + "BFD_RELOC_MIPS_CALL_HI16",
42186 + "BFD_RELOC_MIPS_CALL_LO16",
42187 + "BFD_RELOC_MIPS_SUB",
42188 + "BFD_RELOC_MIPS_GOT_PAGE",
42189 + "BFD_RELOC_MIPS_GOT_OFST",
42190 + "BFD_RELOC_MIPS_GOT_DISP",
42191 + "BFD_RELOC_MIPS_SHIFT5",
42192 + "BFD_RELOC_MIPS_SHIFT6",
42193 + "BFD_RELOC_MIPS_INSERT_A",
42194 + "BFD_RELOC_MIPS_INSERT_B",
42195 + "BFD_RELOC_MIPS_DELETE",
42196 + "BFD_RELOC_MIPS_HIGHEST",
42197 + "BFD_RELOC_MIPS_HIGHER",
42198 + "BFD_RELOC_MIPS_SCN_DISP",
42199 + "BFD_RELOC_MIPS_REL16",
42200 + "BFD_RELOC_MIPS_RELGOT",
42201 + "BFD_RELOC_MIPS_JALR",
42202 + "BFD_RELOC_MIPS_TLS_DTPMOD32",
42203 + "BFD_RELOC_MIPS_TLS_DTPREL32",
42204 + "BFD_RELOC_MIPS_TLS_DTPMOD64",
42205 + "BFD_RELOC_MIPS_TLS_DTPREL64",
42206 + "BFD_RELOC_MIPS_TLS_GD",
42207 + "BFD_RELOC_MIPS_TLS_LDM",
42208 + "BFD_RELOC_MIPS_TLS_DTPREL_HI16",
42209 + "BFD_RELOC_MIPS_TLS_DTPREL_LO16",
42210 + "BFD_RELOC_MIPS_TLS_GOTTPREL",
42211 + "BFD_RELOC_MIPS_TLS_TPREL32",
42212 + "BFD_RELOC_MIPS_TLS_TPREL64",
42213 + "BFD_RELOC_MIPS_TLS_TPREL_HI16",
42214 + "BFD_RELOC_MIPS_TLS_TPREL_LO16",
42215 +
42216 + "BFD_RELOC_MIPS_COPY",
42217 + "BFD_RELOC_MIPS_JUMP_SLOT",
42218 +
42219 + "BFD_RELOC_FRV_LABEL16",
42220 + "BFD_RELOC_FRV_LABEL24",
42221 + "BFD_RELOC_FRV_LO16",
42222 + "BFD_RELOC_FRV_HI16",
42223 + "BFD_RELOC_FRV_GPREL12",
42224 + "BFD_RELOC_FRV_GPRELU12",
42225 + "BFD_RELOC_FRV_GPREL32",
42226 + "BFD_RELOC_FRV_GPRELHI",
42227 + "BFD_RELOC_FRV_GPRELLO",
42228 + "BFD_RELOC_FRV_GOT12",
42229 + "BFD_RELOC_FRV_GOTHI",
42230 + "BFD_RELOC_FRV_GOTLO",
42231 + "BFD_RELOC_FRV_FUNCDESC",
42232 + "BFD_RELOC_FRV_FUNCDESC_GOT12",
42233 + "BFD_RELOC_FRV_FUNCDESC_GOTHI",
42234 + "BFD_RELOC_FRV_FUNCDESC_GOTLO",
42235 + "BFD_RELOC_FRV_FUNCDESC_VALUE",
42236 + "BFD_RELOC_FRV_FUNCDESC_GOTOFF12",
42237 + "BFD_RELOC_FRV_FUNCDESC_GOTOFFHI",
42238 + "BFD_RELOC_FRV_FUNCDESC_GOTOFFLO",
42239 + "BFD_RELOC_FRV_GOTOFF12",
42240 + "BFD_RELOC_FRV_GOTOFFHI",
42241 + "BFD_RELOC_FRV_GOTOFFLO",
42242 + "BFD_RELOC_FRV_GETTLSOFF",
42243 + "BFD_RELOC_FRV_TLSDESC_VALUE",
42244 + "BFD_RELOC_FRV_GOTTLSDESC12",
42245 + "BFD_RELOC_FRV_GOTTLSDESCHI",
42246 + "BFD_RELOC_FRV_GOTTLSDESCLO",
42247 + "BFD_RELOC_FRV_TLSMOFF12",
42248 + "BFD_RELOC_FRV_TLSMOFFHI",
42249 + "BFD_RELOC_FRV_TLSMOFFLO",
42250 + "BFD_RELOC_FRV_GOTTLSOFF12",
42251 + "BFD_RELOC_FRV_GOTTLSOFFHI",
42252 + "BFD_RELOC_FRV_GOTTLSOFFLO",
42253 + "BFD_RELOC_FRV_TLSOFF",
42254 + "BFD_RELOC_FRV_TLSDESC_RELAX",
42255 + "BFD_RELOC_FRV_GETTLSOFF_RELAX",
42256 + "BFD_RELOC_FRV_TLSOFF_RELAX",
42257 + "BFD_RELOC_FRV_TLSMOFF",
42258 +
42259 + "BFD_RELOC_MN10300_GOTOFF24",
42260 + "BFD_RELOC_MN10300_GOT32",
42261 + "BFD_RELOC_MN10300_GOT24",
42262 + "BFD_RELOC_MN10300_GOT16",
42263 + "BFD_RELOC_MN10300_COPY",
42264 + "BFD_RELOC_MN10300_GLOB_DAT",
42265 + "BFD_RELOC_MN10300_JMP_SLOT",
42266 + "BFD_RELOC_MN10300_RELATIVE",
42267 +
42268 + "BFD_RELOC_386_GOT32",
42269 + "BFD_RELOC_386_PLT32",
42270 + "BFD_RELOC_386_COPY",
42271 + "BFD_RELOC_386_GLOB_DAT",
42272 + "BFD_RELOC_386_JUMP_SLOT",
42273 + "BFD_RELOC_386_RELATIVE",
42274 + "BFD_RELOC_386_GOTOFF",
42275 + "BFD_RELOC_386_GOTPC",
42276 + "BFD_RELOC_386_TLS_TPOFF",
42277 + "BFD_RELOC_386_TLS_IE",
42278 + "BFD_RELOC_386_TLS_GOTIE",
42279 + "BFD_RELOC_386_TLS_LE",
42280 + "BFD_RELOC_386_TLS_GD",
42281 + "BFD_RELOC_386_TLS_LDM",
42282 + "BFD_RELOC_386_TLS_LDO_32",
42283 + "BFD_RELOC_386_TLS_IE_32",
42284 + "BFD_RELOC_386_TLS_LE_32",
42285 + "BFD_RELOC_386_TLS_DTPMOD32",
42286 + "BFD_RELOC_386_TLS_DTPOFF32",
42287 + "BFD_RELOC_386_TLS_TPOFF32",
42288 + "BFD_RELOC_386_TLS_GOTDESC",
42289 + "BFD_RELOC_386_TLS_DESC_CALL",
42290 + "BFD_RELOC_386_TLS_DESC",
42291 + "BFD_RELOC_X86_64_GOT32",
42292 + "BFD_RELOC_X86_64_PLT32",
42293 + "BFD_RELOC_X86_64_COPY",
42294 + "BFD_RELOC_X86_64_GLOB_DAT",
42295 + "BFD_RELOC_X86_64_JUMP_SLOT",
42296 + "BFD_RELOC_X86_64_RELATIVE",
42297 + "BFD_RELOC_X86_64_GOTPCREL",
42298 + "BFD_RELOC_X86_64_32S",
42299 + "BFD_RELOC_X86_64_DTPMOD64",
42300 + "BFD_RELOC_X86_64_DTPOFF64",
42301 + "BFD_RELOC_X86_64_TPOFF64",
42302 + "BFD_RELOC_X86_64_TLSGD",
42303 + "BFD_RELOC_X86_64_TLSLD",
42304 + "BFD_RELOC_X86_64_DTPOFF32",
42305 + "BFD_RELOC_X86_64_GOTTPOFF",
42306 + "BFD_RELOC_X86_64_TPOFF32",
42307 + "BFD_RELOC_X86_64_GOTOFF64",
42308 + "BFD_RELOC_X86_64_GOTPC32",
42309 + "BFD_RELOC_X86_64_GOT64",
42310 + "BFD_RELOC_X86_64_GOTPCREL64",
42311 + "BFD_RELOC_X86_64_GOTPC64",
42312 + "BFD_RELOC_X86_64_GOTPLT64",
42313 + "BFD_RELOC_X86_64_PLTOFF64",
42314 + "BFD_RELOC_X86_64_GOTPC32_TLSDESC",
42315 + "BFD_RELOC_X86_64_TLSDESC_CALL",
42316 + "BFD_RELOC_X86_64_TLSDESC",
42317 + "BFD_RELOC_NS32K_IMM_8",
42318 + "BFD_RELOC_NS32K_IMM_16",
42319 + "BFD_RELOC_NS32K_IMM_32",
42320 + "BFD_RELOC_NS32K_IMM_8_PCREL",
42321 + "BFD_RELOC_NS32K_IMM_16_PCREL",
42322 + "BFD_RELOC_NS32K_IMM_32_PCREL",
42323 + "BFD_RELOC_NS32K_DISP_8",
42324 + "BFD_RELOC_NS32K_DISP_16",
42325 + "BFD_RELOC_NS32K_DISP_32",
42326 + "BFD_RELOC_NS32K_DISP_8_PCREL",
42327 + "BFD_RELOC_NS32K_DISP_16_PCREL",
42328 + "BFD_RELOC_NS32K_DISP_32_PCREL",
42329 + "BFD_RELOC_PDP11_DISP_8_PCREL",
42330 + "BFD_RELOC_PDP11_DISP_6_PCREL",
42331 + "BFD_RELOC_PJ_CODE_HI16",
42332 + "BFD_RELOC_PJ_CODE_LO16",
42333 + "BFD_RELOC_PJ_CODE_DIR16",
42334 + "BFD_RELOC_PJ_CODE_DIR32",
42335 + "BFD_RELOC_PJ_CODE_REL16",
42336 + "BFD_RELOC_PJ_CODE_REL32",
42337 + "BFD_RELOC_PPC_B26",
42338 + "BFD_RELOC_PPC_BA26",
42339 + "BFD_RELOC_PPC_TOC16",
42340 + "BFD_RELOC_PPC_B16",
42341 + "BFD_RELOC_PPC_B16_BRTAKEN",
42342 + "BFD_RELOC_PPC_B16_BRNTAKEN",
42343 + "BFD_RELOC_PPC_BA16",
42344 + "BFD_RELOC_PPC_BA16_BRTAKEN",
42345 + "BFD_RELOC_PPC_BA16_BRNTAKEN",
42346 + "BFD_RELOC_PPC_COPY",
42347 + "BFD_RELOC_PPC_GLOB_DAT",
42348 + "BFD_RELOC_PPC_JMP_SLOT",
42349 + "BFD_RELOC_PPC_RELATIVE",
42350 + "BFD_RELOC_PPC_LOCAL24PC",
42351 + "BFD_RELOC_PPC_EMB_NADDR32",
42352 + "BFD_RELOC_PPC_EMB_NADDR16",
42353 + "BFD_RELOC_PPC_EMB_NADDR16_LO",
42354 + "BFD_RELOC_PPC_EMB_NADDR16_HI",
42355 + "BFD_RELOC_PPC_EMB_NADDR16_HA",
42356 + "BFD_RELOC_PPC_EMB_SDAI16",
42357 + "BFD_RELOC_PPC_EMB_SDA2I16",
42358 + "BFD_RELOC_PPC_EMB_SDA2REL",
42359 + "BFD_RELOC_PPC_EMB_SDA21",
42360 + "BFD_RELOC_PPC_EMB_MRKREF",
42361 + "BFD_RELOC_PPC_EMB_RELSEC16",
42362 + "BFD_RELOC_PPC_EMB_RELST_LO",
42363 + "BFD_RELOC_PPC_EMB_RELST_HI",
42364 + "BFD_RELOC_PPC_EMB_RELST_HA",
42365 + "BFD_RELOC_PPC_EMB_BIT_FLD",
42366 + "BFD_RELOC_PPC_EMB_RELSDA",
42367 + "BFD_RELOC_PPC64_HIGHER",
42368 + "BFD_RELOC_PPC64_HIGHER_S",
42369 + "BFD_RELOC_PPC64_HIGHEST",
42370 + "BFD_RELOC_PPC64_HIGHEST_S",
42371 + "BFD_RELOC_PPC64_TOC16_LO",
42372 + "BFD_RELOC_PPC64_TOC16_HI",
42373 + "BFD_RELOC_PPC64_TOC16_HA",
42374 + "BFD_RELOC_PPC64_TOC",
42375 + "BFD_RELOC_PPC64_PLTGOT16",
42376 + "BFD_RELOC_PPC64_PLTGOT16_LO",
42377 + "BFD_RELOC_PPC64_PLTGOT16_HI",
42378 + "BFD_RELOC_PPC64_PLTGOT16_HA",
42379 + "BFD_RELOC_PPC64_ADDR16_DS",
42380 + "BFD_RELOC_PPC64_ADDR16_LO_DS",
42381 + "BFD_RELOC_PPC64_GOT16_DS",
42382 + "BFD_RELOC_PPC64_GOT16_LO_DS",
42383 + "BFD_RELOC_PPC64_PLT16_LO_DS",
42384 + "BFD_RELOC_PPC64_SECTOFF_DS",
42385 + "BFD_RELOC_PPC64_SECTOFF_LO_DS",
42386 + "BFD_RELOC_PPC64_TOC16_DS",
42387 + "BFD_RELOC_PPC64_TOC16_LO_DS",
42388 + "BFD_RELOC_PPC64_PLTGOT16_DS",
42389 + "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
42390 + "BFD_RELOC_PPC_TLS",
42391 + "BFD_RELOC_PPC_DTPMOD",
42392 + "BFD_RELOC_PPC_TPREL16",
42393 + "BFD_RELOC_PPC_TPREL16_LO",
42394 + "BFD_RELOC_PPC_TPREL16_HI",
42395 + "BFD_RELOC_PPC_TPREL16_HA",
42396 + "BFD_RELOC_PPC_TPREL",
42397 + "BFD_RELOC_PPC_DTPREL16",
42398 + "BFD_RELOC_PPC_DTPREL16_LO",
42399 + "BFD_RELOC_PPC_DTPREL16_HI",
42400 + "BFD_RELOC_PPC_DTPREL16_HA",
42401 + "BFD_RELOC_PPC_DTPREL",
42402 + "BFD_RELOC_PPC_GOT_TLSGD16",
42403 + "BFD_RELOC_PPC_GOT_TLSGD16_LO",
42404 + "BFD_RELOC_PPC_GOT_TLSGD16_HI",
42405 + "BFD_RELOC_PPC_GOT_TLSGD16_HA",
42406 + "BFD_RELOC_PPC_GOT_TLSLD16",
42407 + "BFD_RELOC_PPC_GOT_TLSLD16_LO",
42408 + "BFD_RELOC_PPC_GOT_TLSLD16_HI",
42409 + "BFD_RELOC_PPC_GOT_TLSLD16_HA",
42410 + "BFD_RELOC_PPC_GOT_TPREL16",
42411 + "BFD_RELOC_PPC_GOT_TPREL16_LO",
42412 + "BFD_RELOC_PPC_GOT_TPREL16_HI",
42413 + "BFD_RELOC_PPC_GOT_TPREL16_HA",
42414 + "BFD_RELOC_PPC_GOT_DTPREL16",
42415 + "BFD_RELOC_PPC_GOT_DTPREL16_LO",
42416 + "BFD_RELOC_PPC_GOT_DTPREL16_HI",
42417 + "BFD_RELOC_PPC_GOT_DTPREL16_HA",
42418 + "BFD_RELOC_PPC64_TPREL16_DS",
42419 + "BFD_RELOC_PPC64_TPREL16_LO_DS",
42420 + "BFD_RELOC_PPC64_TPREL16_HIGHER",
42421 + "BFD_RELOC_PPC64_TPREL16_HIGHERA",
42422 + "BFD_RELOC_PPC64_TPREL16_HIGHEST",
42423 + "BFD_RELOC_PPC64_TPREL16_HIGHESTA",
42424 + "BFD_RELOC_PPC64_DTPREL16_DS",
42425 + "BFD_RELOC_PPC64_DTPREL16_LO_DS",
42426 + "BFD_RELOC_PPC64_DTPREL16_HIGHER",
42427 + "BFD_RELOC_PPC64_DTPREL16_HIGHERA",
42428 + "BFD_RELOC_PPC64_DTPREL16_HIGHEST",
42429 + "BFD_RELOC_PPC64_DTPREL16_HIGHESTA",
42430 + "BFD_RELOC_I370_D12",
42431 + "BFD_RELOC_CTOR",
42432 + "BFD_RELOC_ARM_PCREL_BRANCH",
42433 + "BFD_RELOC_ARM_PCREL_BLX",
42434 + "BFD_RELOC_THUMB_PCREL_BLX",
42435 + "BFD_RELOC_ARM_PCREL_CALL",
42436 + "BFD_RELOC_ARM_PCREL_JUMP",
42437 + "BFD_RELOC_THUMB_PCREL_BRANCH7",
42438 + "BFD_RELOC_THUMB_PCREL_BRANCH9",
42439 + "BFD_RELOC_THUMB_PCREL_BRANCH12",
42440 + "BFD_RELOC_THUMB_PCREL_BRANCH20",
42441 + "BFD_RELOC_THUMB_PCREL_BRANCH23",
42442 + "BFD_RELOC_THUMB_PCREL_BRANCH25",
42443 + "BFD_RELOC_ARM_OFFSET_IMM",
42444 + "BFD_RELOC_ARM_THUMB_OFFSET",
42445 + "BFD_RELOC_ARM_TARGET1",
42446 + "BFD_RELOC_ARM_ROSEGREL32",
42447 + "BFD_RELOC_ARM_SBREL32",
42448 + "BFD_RELOC_ARM_TARGET2",
42449 + "BFD_RELOC_ARM_PREL31",
42450 + "BFD_RELOC_ARM_MOVW",
42451 + "BFD_RELOC_ARM_MOVT",
42452 + "BFD_RELOC_ARM_MOVW_PCREL",
42453 + "BFD_RELOC_ARM_MOVT_PCREL",
42454 + "BFD_RELOC_ARM_THUMB_MOVW",
42455 + "BFD_RELOC_ARM_THUMB_MOVT",
42456 + "BFD_RELOC_ARM_THUMB_MOVW_PCREL",
42457 + "BFD_RELOC_ARM_THUMB_MOVT_PCREL",
42458 + "BFD_RELOC_ARM_JUMP_SLOT",
42459 + "BFD_RELOC_ARM_GLOB_DAT",
42460 + "BFD_RELOC_ARM_GOT32",
42461 + "BFD_RELOC_ARM_PLT32",
42462 + "BFD_RELOC_ARM_RELATIVE",
42463 + "BFD_RELOC_ARM_GOTOFF",
42464 + "BFD_RELOC_ARM_GOTPC",
42465 + "BFD_RELOC_ARM_TLS_GD32",
42466 + "BFD_RELOC_ARM_TLS_LDO32",
42467 + "BFD_RELOC_ARM_TLS_LDM32",
42468 + "BFD_RELOC_ARM_TLS_DTPOFF32",
42469 + "BFD_RELOC_ARM_TLS_DTPMOD32",
42470 + "BFD_RELOC_ARM_TLS_TPOFF32",
42471 + "BFD_RELOC_ARM_TLS_IE32",
42472 + "BFD_RELOC_ARM_TLS_LE32",
42473 + "BFD_RELOC_ARM_ALU_PC_G0_NC",
42474 + "BFD_RELOC_ARM_ALU_PC_G0",
42475 + "BFD_RELOC_ARM_ALU_PC_G1_NC",
42476 + "BFD_RELOC_ARM_ALU_PC_G1",
42477 + "BFD_RELOC_ARM_ALU_PC_G2",
42478 + "BFD_RELOC_ARM_LDR_PC_G0",
42479 + "BFD_RELOC_ARM_LDR_PC_G1",
42480 + "BFD_RELOC_ARM_LDR_PC_G2",
42481 + "BFD_RELOC_ARM_LDRS_PC_G0",
42482 + "BFD_RELOC_ARM_LDRS_PC_G1",
42483 + "BFD_RELOC_ARM_LDRS_PC_G2",
42484 + "BFD_RELOC_ARM_LDC_PC_G0",
42485 + "BFD_RELOC_ARM_LDC_PC_G1",
42486 + "BFD_RELOC_ARM_LDC_PC_G2",
42487 + "BFD_RELOC_ARM_ALU_SB_G0_NC",
42488 + "BFD_RELOC_ARM_ALU_SB_G0",
42489 + "BFD_RELOC_ARM_ALU_SB_G1_NC",
42490 + "BFD_RELOC_ARM_ALU_SB_G1",
42491 + "BFD_RELOC_ARM_ALU_SB_G2",
42492 + "BFD_RELOC_ARM_LDR_SB_G0",
42493 + "BFD_RELOC_ARM_LDR_SB_G1",
42494 + "BFD_RELOC_ARM_LDR_SB_G2",
42495 + "BFD_RELOC_ARM_LDRS_SB_G0",
42496 + "BFD_RELOC_ARM_LDRS_SB_G1",
42497 + "BFD_RELOC_ARM_LDRS_SB_G2",
42498 + "BFD_RELOC_ARM_LDC_SB_G0",
42499 + "BFD_RELOC_ARM_LDC_SB_G1",
42500 + "BFD_RELOC_ARM_LDC_SB_G2",
42501 + "BFD_RELOC_ARM_IMMEDIATE",
42502 + "BFD_RELOC_ARM_ADRL_IMMEDIATE",
42503 + "BFD_RELOC_ARM_T32_IMMEDIATE",
42504 + "BFD_RELOC_ARM_T32_ADD_IMM",
42505 + "BFD_RELOC_ARM_T32_IMM12",
42506 + "BFD_RELOC_ARM_T32_ADD_PC12",
42507 + "BFD_RELOC_ARM_SHIFT_IMM",
42508 + "BFD_RELOC_ARM_SMC",
42509 + "BFD_RELOC_ARM_SWI",
42510 + "BFD_RELOC_ARM_MULTI",
42511 + "BFD_RELOC_ARM_CP_OFF_IMM",
42512 + "BFD_RELOC_ARM_CP_OFF_IMM_S2",
42513 + "BFD_RELOC_ARM_T32_CP_OFF_IMM",
42514 + "BFD_RELOC_ARM_T32_CP_OFF_IMM_S2",
42515 + "BFD_RELOC_ARM_ADR_IMM",
42516 + "BFD_RELOC_ARM_LDR_IMM",
42517 + "BFD_RELOC_ARM_LITERAL",
42518 + "BFD_RELOC_ARM_IN_POOL",
42519 + "BFD_RELOC_ARM_OFFSET_IMM8",
42520 + "BFD_RELOC_ARM_T32_OFFSET_U8",
42521 + "BFD_RELOC_ARM_T32_OFFSET_IMM",
42522 + "BFD_RELOC_ARM_HWLITERAL",
42523 + "BFD_RELOC_ARM_THUMB_ADD",
42524 + "BFD_RELOC_ARM_THUMB_IMM",
42525 + "BFD_RELOC_ARM_THUMB_SHIFT",
42526 + "BFD_RELOC_SH_PCDISP8BY2",
42527 + "BFD_RELOC_SH_PCDISP12BY2",
42528 + "BFD_RELOC_SH_IMM3",
42529 + "BFD_RELOC_SH_IMM3U",
42530 + "BFD_RELOC_SH_DISP12",
42531 + "BFD_RELOC_SH_DISP12BY2",
42532 + "BFD_RELOC_SH_DISP12BY4",
42533 + "BFD_RELOC_SH_DISP12BY8",
42534 + "BFD_RELOC_SH_DISP20",
42535 + "BFD_RELOC_SH_DISP20BY8",
42536 + "BFD_RELOC_SH_IMM4",
42537 + "BFD_RELOC_SH_IMM4BY2",
42538 + "BFD_RELOC_SH_IMM4BY4",
42539 + "BFD_RELOC_SH_IMM8",
42540 + "BFD_RELOC_SH_IMM8BY2",
42541 + "BFD_RELOC_SH_IMM8BY4",
42542 + "BFD_RELOC_SH_PCRELIMM8BY2",
42543 + "BFD_RELOC_SH_PCRELIMM8BY4",
42544 + "BFD_RELOC_SH_SWITCH16",
42545 + "BFD_RELOC_SH_SWITCH32",
42546 + "BFD_RELOC_SH_USES",
42547 + "BFD_RELOC_SH_COUNT",
42548 + "BFD_RELOC_SH_ALIGN",
42549 + "BFD_RELOC_SH_CODE",
42550 + "BFD_RELOC_SH_DATA",
42551 + "BFD_RELOC_SH_LABEL",
42552 + "BFD_RELOC_SH_LOOP_START",
42553 + "BFD_RELOC_SH_LOOP_END",
42554 + "BFD_RELOC_SH_COPY",
42555 + "BFD_RELOC_SH_GLOB_DAT",
42556 + "BFD_RELOC_SH_JMP_SLOT",
42557 + "BFD_RELOC_SH_RELATIVE",
42558 + "BFD_RELOC_SH_GOTPC",
42559 + "BFD_RELOC_SH_GOT_LOW16",
42560 + "BFD_RELOC_SH_GOT_MEDLOW16",
42561 + "BFD_RELOC_SH_GOT_MEDHI16",
42562 + "BFD_RELOC_SH_GOT_HI16",
42563 + "BFD_RELOC_SH_GOTPLT_LOW16",
42564 + "BFD_RELOC_SH_GOTPLT_MEDLOW16",
42565 + "BFD_RELOC_SH_GOTPLT_MEDHI16",
42566 + "BFD_RELOC_SH_GOTPLT_HI16",
42567 + "BFD_RELOC_SH_PLT_LOW16",
42568 + "BFD_RELOC_SH_PLT_MEDLOW16",
42569 + "BFD_RELOC_SH_PLT_MEDHI16",
42570 + "BFD_RELOC_SH_PLT_HI16",
42571 + "BFD_RELOC_SH_GOTOFF_LOW16",
42572 + "BFD_RELOC_SH_GOTOFF_MEDLOW16",
42573 + "BFD_RELOC_SH_GOTOFF_MEDHI16",
42574 + "BFD_RELOC_SH_GOTOFF_HI16",
42575 + "BFD_RELOC_SH_GOTPC_LOW16",
42576 + "BFD_RELOC_SH_GOTPC_MEDLOW16",
42577 + "BFD_RELOC_SH_GOTPC_MEDHI16",
42578 + "BFD_RELOC_SH_GOTPC_HI16",
42579 + "BFD_RELOC_SH_COPY64",
42580 + "BFD_RELOC_SH_GLOB_DAT64",
42581 + "BFD_RELOC_SH_JMP_SLOT64",
42582 + "BFD_RELOC_SH_RELATIVE64",
42583 + "BFD_RELOC_SH_GOT10BY4",
42584 + "BFD_RELOC_SH_GOT10BY8",
42585 + "BFD_RELOC_SH_GOTPLT10BY4",
42586 + "BFD_RELOC_SH_GOTPLT10BY8",
42587 + "BFD_RELOC_SH_GOTPLT32",
42588 + "BFD_RELOC_SH_SHMEDIA_CODE",
42589 + "BFD_RELOC_SH_IMMU5",
42590 + "BFD_RELOC_SH_IMMS6",
42591 + "BFD_RELOC_SH_IMMS6BY32",
42592 + "BFD_RELOC_SH_IMMU6",
42593 + "BFD_RELOC_SH_IMMS10",
42594 + "BFD_RELOC_SH_IMMS10BY2",
42595 + "BFD_RELOC_SH_IMMS10BY4",
42596 + "BFD_RELOC_SH_IMMS10BY8",
42597 + "BFD_RELOC_SH_IMMS16",
42598 + "BFD_RELOC_SH_IMMU16",
42599 + "BFD_RELOC_SH_IMM_LOW16",
42600 + "BFD_RELOC_SH_IMM_LOW16_PCREL",
42601 + "BFD_RELOC_SH_IMM_MEDLOW16",
42602 + "BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
42603 + "BFD_RELOC_SH_IMM_MEDHI16",
42604 + "BFD_RELOC_SH_IMM_MEDHI16_PCREL",
42605 + "BFD_RELOC_SH_IMM_HI16",
42606 + "BFD_RELOC_SH_IMM_HI16_PCREL",
42607 + "BFD_RELOC_SH_PT_16",
42608 + "BFD_RELOC_SH_TLS_GD_32",
42609 + "BFD_RELOC_SH_TLS_LD_32",
42610 + "BFD_RELOC_SH_TLS_LDO_32",
42611 + "BFD_RELOC_SH_TLS_IE_32",
42612 + "BFD_RELOC_SH_TLS_LE_32",
42613 + "BFD_RELOC_SH_TLS_DTPMOD32",
42614 + "BFD_RELOC_SH_TLS_DTPOFF32",
42615 + "BFD_RELOC_SH_TLS_TPOFF32",
42616 + "BFD_RELOC_ARC_B22_PCREL",
42617 + "BFD_RELOC_ARC_B26",
42618 + "BFD_RELOC_BFIN_16_IMM",
42619 + "BFD_RELOC_BFIN_16_HIGH",
42620 + "BFD_RELOC_BFIN_4_PCREL",
42621 + "BFD_RELOC_BFIN_5_PCREL",
42622 + "BFD_RELOC_BFIN_16_LOW",
42623 + "BFD_RELOC_BFIN_10_PCREL",
42624 + "BFD_RELOC_BFIN_11_PCREL",
42625 + "BFD_RELOC_BFIN_12_PCREL_JUMP",
42626 + "BFD_RELOC_BFIN_12_PCREL_JUMP_S",
42627 + "BFD_RELOC_BFIN_24_PCREL_CALL_X",
42628 + "BFD_RELOC_BFIN_24_PCREL_JUMP_L",
42629 + "BFD_RELOC_BFIN_GOT17M4",
42630 + "BFD_RELOC_BFIN_GOTHI",
42631 + "BFD_RELOC_BFIN_GOTLO",
42632 + "BFD_RELOC_BFIN_FUNCDESC",
42633 + "BFD_RELOC_BFIN_FUNCDESC_GOT17M4",
42634 + "BFD_RELOC_BFIN_FUNCDESC_GOTHI",
42635 + "BFD_RELOC_BFIN_FUNCDESC_GOTLO",
42636 + "BFD_RELOC_BFIN_FUNCDESC_VALUE",
42637 + "BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4",
42638 + "BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI",
42639 + "BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO",
42640 + "BFD_RELOC_BFIN_GOTOFF17M4",
42641 + "BFD_RELOC_BFIN_GOTOFFHI",
42642 + "BFD_RELOC_BFIN_GOTOFFLO",
42643 + "BFD_RELOC_BFIN_GOT",
42644 + "BFD_RELOC_BFIN_PLTPC",
42645 + "BFD_ARELOC_BFIN_PUSH",
42646 + "BFD_ARELOC_BFIN_CONST",
42647 + "BFD_ARELOC_BFIN_ADD",
42648 + "BFD_ARELOC_BFIN_SUB",
42649 + "BFD_ARELOC_BFIN_MULT",
42650 + "BFD_ARELOC_BFIN_DIV",
42651 + "BFD_ARELOC_BFIN_MOD",
42652 + "BFD_ARELOC_BFIN_LSHIFT",
42653 + "BFD_ARELOC_BFIN_RSHIFT",
42654 + "BFD_ARELOC_BFIN_AND",
42655 + "BFD_ARELOC_BFIN_OR",
42656 + "BFD_ARELOC_BFIN_XOR",
42657 + "BFD_ARELOC_BFIN_LAND",
42658 + "BFD_ARELOC_BFIN_LOR",
42659 + "BFD_ARELOC_BFIN_LEN",
42660 + "BFD_ARELOC_BFIN_NEG",
42661 + "BFD_ARELOC_BFIN_COMP",
42662 + "BFD_ARELOC_BFIN_PAGE",
42663 + "BFD_ARELOC_BFIN_HWPAGE",
42664 + "BFD_ARELOC_BFIN_ADDR",
42665 + "BFD_RELOC_D10V_10_PCREL_R",
42666 + "BFD_RELOC_D10V_10_PCREL_L",
42667 + "BFD_RELOC_D10V_18",
42668 + "BFD_RELOC_D10V_18_PCREL",
42669 + "BFD_RELOC_D30V_6",
42670 + "BFD_RELOC_D30V_9_PCREL",
42671 + "BFD_RELOC_D30V_9_PCREL_R",
42672 + "BFD_RELOC_D30V_15",
42673 + "BFD_RELOC_D30V_15_PCREL",
42674 + "BFD_RELOC_D30V_15_PCREL_R",
42675 + "BFD_RELOC_D30V_21",
42676 + "BFD_RELOC_D30V_21_PCREL",
42677 + "BFD_RELOC_D30V_21_PCREL_R",
42678 + "BFD_RELOC_D30V_32",
42679 + "BFD_RELOC_D30V_32_PCREL",
42680 + "BFD_RELOC_DLX_HI16_S",
42681 + "BFD_RELOC_DLX_LO16",
42682 + "BFD_RELOC_DLX_JMP26",
42683 + "BFD_RELOC_M32C_HI8",
42684 + "BFD_RELOC_M32C_RL_JUMP",
42685 + "BFD_RELOC_M32C_RL_1ADDR",
42686 + "BFD_RELOC_M32C_RL_2ADDR",
42687 + "BFD_RELOC_M32R_24",
42688 + "BFD_RELOC_M32R_10_PCREL",
42689 + "BFD_RELOC_M32R_18_PCREL",
42690 + "BFD_RELOC_M32R_26_PCREL",
42691 + "BFD_RELOC_M32R_HI16_ULO",
42692 + "BFD_RELOC_M32R_HI16_SLO",
42693 + "BFD_RELOC_M32R_LO16",
42694 + "BFD_RELOC_M32R_SDA16",
42695 + "BFD_RELOC_M32R_GOT24",
42696 + "BFD_RELOC_M32R_26_PLTREL",
42697 + "BFD_RELOC_M32R_COPY",
42698 + "BFD_RELOC_M32R_GLOB_DAT",
42699 + "BFD_RELOC_M32R_JMP_SLOT",
42700 + "BFD_RELOC_M32R_RELATIVE",
42701 + "BFD_RELOC_M32R_GOTOFF",
42702 + "BFD_RELOC_M32R_GOTOFF_HI_ULO",
42703 + "BFD_RELOC_M32R_GOTOFF_HI_SLO",
42704 + "BFD_RELOC_M32R_GOTOFF_LO",
42705 + "BFD_RELOC_M32R_GOTPC24",
42706 + "BFD_RELOC_M32R_GOT16_HI_ULO",
42707 + "BFD_RELOC_M32R_GOT16_HI_SLO",
42708 + "BFD_RELOC_M32R_GOT16_LO",
42709 + "BFD_RELOC_M32R_GOTPC_HI_ULO",
42710 + "BFD_RELOC_M32R_GOTPC_HI_SLO",
42711 + "BFD_RELOC_M32R_GOTPC_LO",
42712 + "BFD_RELOC_V850_9_PCREL",
42713 + "BFD_RELOC_V850_22_PCREL",
42714 + "BFD_RELOC_V850_SDA_16_16_OFFSET",
42715 + "BFD_RELOC_V850_SDA_15_16_OFFSET",
42716 + "BFD_RELOC_V850_ZDA_16_16_OFFSET",
42717 + "BFD_RELOC_V850_ZDA_15_16_OFFSET",
42718 + "BFD_RELOC_V850_TDA_6_8_OFFSET",
42719 + "BFD_RELOC_V850_TDA_7_8_OFFSET",
42720 + "BFD_RELOC_V850_TDA_7_7_OFFSET",
42721 + "BFD_RELOC_V850_TDA_16_16_OFFSET",
42722 + "BFD_RELOC_V850_TDA_4_5_OFFSET",
42723 + "BFD_RELOC_V850_TDA_4_4_OFFSET",
42724 + "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
42725 + "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
42726 + "BFD_RELOC_V850_CALLT_6_7_OFFSET",
42727 + "BFD_RELOC_V850_CALLT_16_16_OFFSET",
42728 + "BFD_RELOC_V850_LONGCALL",
42729 + "BFD_RELOC_V850_LONGJUMP",
42730 + "BFD_RELOC_V850_ALIGN",
42731 + "BFD_RELOC_V850_LO16_SPLIT_OFFSET",
42732 + "BFD_RELOC_MN10300_32_PCREL",
42733 + "BFD_RELOC_MN10300_16_PCREL",
42734 + "BFD_RELOC_TIC30_LDP",
42735 + "BFD_RELOC_TIC54X_PARTLS7",
42736 + "BFD_RELOC_TIC54X_PARTMS9",
42737 + "BFD_RELOC_TIC54X_23",
42738 + "BFD_RELOC_TIC54X_16_OF_23",
42739 + "BFD_RELOC_TIC54X_MS7_OF_23",
42740 + "BFD_RELOC_FR30_48",
42741 + "BFD_RELOC_FR30_20",
42742 + "BFD_RELOC_FR30_6_IN_4",
42743 + "BFD_RELOC_FR30_8_IN_8",
42744 + "BFD_RELOC_FR30_9_IN_8",
42745 + "BFD_RELOC_FR30_10_IN_8",
42746 + "BFD_RELOC_FR30_9_PCREL",
42747 + "BFD_RELOC_FR30_12_PCREL",
42748 + "BFD_RELOC_MCORE_PCREL_IMM8BY4",
42749 + "BFD_RELOC_MCORE_PCREL_IMM11BY2",
42750 + "BFD_RELOC_MCORE_PCREL_IMM4BY2",
42751 + "BFD_RELOC_MCORE_PCREL_32",
42752 + "BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2",
42753 + "BFD_RELOC_MCORE_RVA",
42754 + "BFD_RELOC_MEP_8",
42755 + "BFD_RELOC_MEP_16",
42756 + "BFD_RELOC_MEP_32",
42757 + "BFD_RELOC_MEP_PCREL8A2",
42758 + "BFD_RELOC_MEP_PCREL12A2",
42759 + "BFD_RELOC_MEP_PCREL17A2",
42760 + "BFD_RELOC_MEP_PCREL24A2",
42761 + "BFD_RELOC_MEP_PCABS24A2",
42762 + "BFD_RELOC_MEP_LOW16",
42763 + "BFD_RELOC_MEP_HI16U",
42764 + "BFD_RELOC_MEP_HI16S",
42765 + "BFD_RELOC_MEP_GPREL",
42766 + "BFD_RELOC_MEP_TPREL",
42767 + "BFD_RELOC_MEP_TPREL7",
42768 + "BFD_RELOC_MEP_TPREL7A2",
42769 + "BFD_RELOC_MEP_TPREL7A4",
42770 + "BFD_RELOC_MEP_UIMM24",
42771 + "BFD_RELOC_MEP_ADDR24A4",
42772 + "BFD_RELOC_MEP_GNU_VTINHERIT",
42773 + "BFD_RELOC_MEP_GNU_VTENTRY",
42774 +
42775 + "BFD_RELOC_MMIX_GETA",
42776 + "BFD_RELOC_MMIX_GETA_1",
42777 + "BFD_RELOC_MMIX_GETA_2",
42778 + "BFD_RELOC_MMIX_GETA_3",
42779 + "BFD_RELOC_MMIX_CBRANCH",
42780 + "BFD_RELOC_MMIX_CBRANCH_J",
42781 + "BFD_RELOC_MMIX_CBRANCH_1",
42782 + "BFD_RELOC_MMIX_CBRANCH_2",
42783 + "BFD_RELOC_MMIX_CBRANCH_3",
42784 + "BFD_RELOC_MMIX_PUSHJ",
42785 + "BFD_RELOC_MMIX_PUSHJ_1",
42786 + "BFD_RELOC_MMIX_PUSHJ_2",
42787 + "BFD_RELOC_MMIX_PUSHJ_3",
42788 + "BFD_RELOC_MMIX_PUSHJ_STUBBABLE",
42789 + "BFD_RELOC_MMIX_JMP",
42790 + "BFD_RELOC_MMIX_JMP_1",
42791 + "BFD_RELOC_MMIX_JMP_2",
42792 + "BFD_RELOC_MMIX_JMP_3",
42793 + "BFD_RELOC_MMIX_ADDR19",
42794 + "BFD_RELOC_MMIX_ADDR27",
42795 + "BFD_RELOC_MMIX_REG_OR_BYTE",
42796 + "BFD_RELOC_MMIX_REG",
42797 + "BFD_RELOC_MMIX_BASE_PLUS_OFFSET",
42798 + "BFD_RELOC_MMIX_LOCAL",
42799 + "BFD_RELOC_AVR_7_PCREL",
42800 + "BFD_RELOC_AVR_13_PCREL",
42801 + "BFD_RELOC_AVR_16_PM",
42802 + "BFD_RELOC_AVR_LO8_LDI",
42803 + "BFD_RELOC_AVR_HI8_LDI",
42804 + "BFD_RELOC_AVR_HH8_LDI",
42805 + "BFD_RELOC_AVR_MS8_LDI",
42806 + "BFD_RELOC_AVR_LO8_LDI_NEG",
42807 + "BFD_RELOC_AVR_HI8_LDI_NEG",
42808 + "BFD_RELOC_AVR_HH8_LDI_NEG",
42809 + "BFD_RELOC_AVR_MS8_LDI_NEG",
42810 + "BFD_RELOC_AVR_LO8_LDI_PM",
42811 + "BFD_RELOC_AVR_LO8_LDI_GS",
42812 + "BFD_RELOC_AVR_HI8_LDI_PM",
42813 + "BFD_RELOC_AVR_HI8_LDI_GS",
42814 + "BFD_RELOC_AVR_HH8_LDI_PM",
42815 + "BFD_RELOC_AVR_LO8_LDI_PM_NEG",
42816 + "BFD_RELOC_AVR_HI8_LDI_PM_NEG",
42817 + "BFD_RELOC_AVR_HH8_LDI_PM_NEG",
42818 + "BFD_RELOC_AVR_CALL",
42819 + "BFD_RELOC_AVR_LDI",
42820 + "BFD_RELOC_AVR_6",
42821 + "BFD_RELOC_AVR_6_ADIW",
42822 + "BFD_RELOC_AVR32_DIFF32",
42823 + "BFD_RELOC_AVR32_DIFF16",
42824 + "BFD_RELOC_AVR32_DIFF8",
42825 + "BFD_RELOC_AVR32_GOT32",
42826 + "BFD_RELOC_AVR32_GOT16",
42827 + "BFD_RELOC_AVR32_GOT8",
42828 + "BFD_RELOC_AVR32_21S",
42829 + "BFD_RELOC_AVR32_16U",
42830 + "BFD_RELOC_AVR32_16S",
42831 + "BFD_RELOC_AVR32_SUB5",
42832 + "BFD_RELOC_AVR32_8S_EXT",
42833 + "BFD_RELOC_AVR32_8S",
42834 + "BFD_RELOC_AVR32_15S",
42835 + "BFD_RELOC_AVR32_22H_PCREL",
42836 + "BFD_RELOC_AVR32_18W_PCREL",
42837 + "BFD_RELOC_AVR32_16B_PCREL",
42838 + "BFD_RELOC_AVR32_16N_PCREL",
42839 + "BFD_RELOC_AVR32_14UW_PCREL",
42840 + "BFD_RELOC_AVR32_11H_PCREL",
42841 + "BFD_RELOC_AVR32_10UW_PCREL",
42842 + "BFD_RELOC_AVR32_9H_PCREL",
42843 + "BFD_RELOC_AVR32_9UW_PCREL",
42844 + "BFD_RELOC_AVR32_GOTPC",
42845 + "BFD_RELOC_AVR32_GOTCALL",
42846 + "BFD_RELOC_AVR32_LDA_GOT",
42847 + "BFD_RELOC_AVR32_GOT21S",
42848 + "BFD_RELOC_AVR32_GOT18SW",
42849 + "BFD_RELOC_AVR32_GOT16S",
42850 + "BFD_RELOC_AVR32_32_CPENT",
42851 + "BFD_RELOC_AVR32_CPCALL",
42852 + "BFD_RELOC_AVR32_16_CP",
42853 + "BFD_RELOC_AVR32_9W_CP",
42854 + "BFD_RELOC_AVR32_ALIGN",
42855 + "BFD_RELOC_AVR32_14UW",
42856 + "BFD_RELOC_AVR32_10UW",
42857 + "BFD_RELOC_AVR32_10SW",
42858 + "BFD_RELOC_AVR32_STHH_W",
42859 + "BFD_RELOC_AVR32_7UW",
42860 + "BFD_RELOC_AVR32_6S",
42861 + "BFD_RELOC_AVR32_6UW",
42862 + "BFD_RELOC_AVR32_4UH",
42863 + "BFD_RELOC_AVR32_3U",
42864 + "BFD_RELOC_390_12",
42865 + "BFD_RELOC_390_GOT12",
42866 + "BFD_RELOC_390_PLT32",
42867 + "BFD_RELOC_390_COPY",
42868 + "BFD_RELOC_390_GLOB_DAT",
42869 + "BFD_RELOC_390_JMP_SLOT",
42870 + "BFD_RELOC_390_RELATIVE",
42871 + "BFD_RELOC_390_GOTPC",
42872 + "BFD_RELOC_390_GOT16",
42873 + "BFD_RELOC_390_PC16DBL",
42874 + "BFD_RELOC_390_PLT16DBL",
42875 + "BFD_RELOC_390_PC32DBL",
42876 + "BFD_RELOC_390_PLT32DBL",
42877 + "BFD_RELOC_390_GOTPCDBL",
42878 + "BFD_RELOC_390_GOT64",
42879 + "BFD_RELOC_390_PLT64",
42880 + "BFD_RELOC_390_GOTENT",
42881 + "BFD_RELOC_390_GOTOFF64",
42882 + "BFD_RELOC_390_GOTPLT12",
42883 + "BFD_RELOC_390_GOTPLT16",
42884 + "BFD_RELOC_390_GOTPLT32",
42885 + "BFD_RELOC_390_GOTPLT64",
42886 + "BFD_RELOC_390_GOTPLTENT",
42887 + "BFD_RELOC_390_PLTOFF16",
42888 + "BFD_RELOC_390_PLTOFF32",
42889 + "BFD_RELOC_390_PLTOFF64",
42890 + "BFD_RELOC_390_TLS_LOAD",
42891 + "BFD_RELOC_390_TLS_GDCALL",
42892 + "BFD_RELOC_390_TLS_LDCALL",
42893 + "BFD_RELOC_390_TLS_GD32",
42894 + "BFD_RELOC_390_TLS_GD64",
42895 + "BFD_RELOC_390_TLS_GOTIE12",
42896 + "BFD_RELOC_390_TLS_GOTIE32",
42897 + "BFD_RELOC_390_TLS_GOTIE64",
42898 + "BFD_RELOC_390_TLS_LDM32",
42899 + "BFD_RELOC_390_TLS_LDM64",
42900 + "BFD_RELOC_390_TLS_IE32",
42901 + "BFD_RELOC_390_TLS_IE64",
42902 + "BFD_RELOC_390_TLS_IEENT",
42903 + "BFD_RELOC_390_TLS_LE32",
42904 + "BFD_RELOC_390_TLS_LE64",
42905 + "BFD_RELOC_390_TLS_LDO32",
42906 + "BFD_RELOC_390_TLS_LDO64",
42907 + "BFD_RELOC_390_TLS_DTPMOD",
42908 + "BFD_RELOC_390_TLS_DTPOFF",
42909 + "BFD_RELOC_390_TLS_TPOFF",
42910 + "BFD_RELOC_390_20",
42911 + "BFD_RELOC_390_GOT20",
42912 + "BFD_RELOC_390_GOTPLT20",
42913 + "BFD_RELOC_390_TLS_GOTIE20",
42914 + "BFD_RELOC_SCORE_DUMMY1",
42915 + "BFD_RELOC_SCORE_GPREL15",
42916 + "BFD_RELOC_SCORE_DUMMY2",
42917 + "BFD_RELOC_SCORE_JMP",
42918 + "BFD_RELOC_SCORE_BRANCH",
42919 + "BFD_RELOC_SCORE16_JMP",
42920 + "BFD_RELOC_SCORE16_BRANCH",
42921 + "BFD_RELOC_SCORE_GOT15",
42922 + "BFD_RELOC_SCORE_GOT_LO16",
42923 + "BFD_RELOC_SCORE_CALL15",
42924 + "BFD_RELOC_SCORE_DUMMY_HI16",
42925 + "BFD_RELOC_IP2K_FR9",
42926 + "BFD_RELOC_IP2K_BANK",
42927 + "BFD_RELOC_IP2K_ADDR16CJP",
42928 + "BFD_RELOC_IP2K_PAGE3",
42929 + "BFD_RELOC_IP2K_LO8DATA",
42930 + "BFD_RELOC_IP2K_HI8DATA",
42931 + "BFD_RELOC_IP2K_EX8DATA",
42932 + "BFD_RELOC_IP2K_LO8INSN",
42933 + "BFD_RELOC_IP2K_HI8INSN",
42934 + "BFD_RELOC_IP2K_PC_SKIP",
42935 + "BFD_RELOC_IP2K_TEXT",
42936 + "BFD_RELOC_IP2K_FR_OFFSET",
42937 + "BFD_RELOC_VPE4KMATH_DATA",
42938 + "BFD_RELOC_VPE4KMATH_INSN",
42939 + "BFD_RELOC_VTABLE_INHERIT",
42940 + "BFD_RELOC_VTABLE_ENTRY",
42941 + "BFD_RELOC_IA64_IMM14",
42942 + "BFD_RELOC_IA64_IMM22",
42943 + "BFD_RELOC_IA64_IMM64",
42944 + "BFD_RELOC_IA64_DIR32MSB",
42945 + "BFD_RELOC_IA64_DIR32LSB",
42946 + "BFD_RELOC_IA64_DIR64MSB",
42947 + "BFD_RELOC_IA64_DIR64LSB",
42948 + "BFD_RELOC_IA64_GPREL22",
42949 + "BFD_RELOC_IA64_GPREL64I",
42950 + "BFD_RELOC_IA64_GPREL32MSB",
42951 + "BFD_RELOC_IA64_GPREL32LSB",
42952 + "BFD_RELOC_IA64_GPREL64MSB",
42953 + "BFD_RELOC_IA64_GPREL64LSB",
42954 + "BFD_RELOC_IA64_LTOFF22",
42955 + "BFD_RELOC_IA64_LTOFF64I",
42956 + "BFD_RELOC_IA64_PLTOFF22",
42957 + "BFD_RELOC_IA64_PLTOFF64I",
42958 + "BFD_RELOC_IA64_PLTOFF64MSB",
42959 + "BFD_RELOC_IA64_PLTOFF64LSB",
42960 + "BFD_RELOC_IA64_FPTR64I",
42961 + "BFD_RELOC_IA64_FPTR32MSB",
42962 + "BFD_RELOC_IA64_FPTR32LSB",
42963 + "BFD_RELOC_IA64_FPTR64MSB",
42964 + "BFD_RELOC_IA64_FPTR64LSB",
42965 + "BFD_RELOC_IA64_PCREL21B",
42966 + "BFD_RELOC_IA64_PCREL21BI",
42967 + "BFD_RELOC_IA64_PCREL21M",
42968 + "BFD_RELOC_IA64_PCREL21F",
42969 + "BFD_RELOC_IA64_PCREL22",
42970 + "BFD_RELOC_IA64_PCREL60B",
42971 + "BFD_RELOC_IA64_PCREL64I",
42972 + "BFD_RELOC_IA64_PCREL32MSB",
42973 + "BFD_RELOC_IA64_PCREL32LSB",
42974 + "BFD_RELOC_IA64_PCREL64MSB",
42975 + "BFD_RELOC_IA64_PCREL64LSB",
42976 + "BFD_RELOC_IA64_LTOFF_FPTR22",
42977 + "BFD_RELOC_IA64_LTOFF_FPTR64I",
42978 + "BFD_RELOC_IA64_LTOFF_FPTR32MSB",
42979 + "BFD_RELOC_IA64_LTOFF_FPTR32LSB",
42980 + "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
42981 + "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
42982 + "BFD_RELOC_IA64_SEGREL32MSB",
42983 + "BFD_RELOC_IA64_SEGREL32LSB",
42984 + "BFD_RELOC_IA64_SEGREL64MSB",
42985 + "BFD_RELOC_IA64_SEGREL64LSB",
42986 + "BFD_RELOC_IA64_SECREL32MSB",
42987 + "BFD_RELOC_IA64_SECREL32LSB",
42988 + "BFD_RELOC_IA64_SECREL64MSB",
42989 + "BFD_RELOC_IA64_SECREL64LSB",
42990 + "BFD_RELOC_IA64_REL32MSB",
42991 + "BFD_RELOC_IA64_REL32LSB",
42992 + "BFD_RELOC_IA64_REL64MSB",
42993 + "BFD_RELOC_IA64_REL64LSB",
42994 + "BFD_RELOC_IA64_LTV32MSB",
42995 + "BFD_RELOC_IA64_LTV32LSB",
42996 + "BFD_RELOC_IA64_LTV64MSB",
42997 + "BFD_RELOC_IA64_LTV64LSB",
42998 + "BFD_RELOC_IA64_IPLTMSB",
42999 + "BFD_RELOC_IA64_IPLTLSB",
43000 + "BFD_RELOC_IA64_COPY",
43001 + "BFD_RELOC_IA64_LTOFF22X",
43002 + "BFD_RELOC_IA64_LDXMOV",
43003 + "BFD_RELOC_IA64_TPREL14",
43004 + "BFD_RELOC_IA64_TPREL22",
43005 + "BFD_RELOC_IA64_TPREL64I",
43006 + "BFD_RELOC_IA64_TPREL64MSB",
43007 + "BFD_RELOC_IA64_TPREL64LSB",
43008 + "BFD_RELOC_IA64_LTOFF_TPREL22",
43009 + "BFD_RELOC_IA64_DTPMOD64MSB",
43010 + "BFD_RELOC_IA64_DTPMOD64LSB",
43011 + "BFD_RELOC_IA64_LTOFF_DTPMOD22",
43012 + "BFD_RELOC_IA64_DTPREL14",
43013 + "BFD_RELOC_IA64_DTPREL22",
43014 + "BFD_RELOC_IA64_DTPREL64I",
43015 + "BFD_RELOC_IA64_DTPREL32MSB",
43016 + "BFD_RELOC_IA64_DTPREL32LSB",
43017 + "BFD_RELOC_IA64_DTPREL64MSB",
43018 + "BFD_RELOC_IA64_DTPREL64LSB",
43019 + "BFD_RELOC_IA64_LTOFF_DTPREL22",
43020 + "BFD_RELOC_M68HC11_HI8",
43021 + "BFD_RELOC_M68HC11_LO8",
43022 + "BFD_RELOC_M68HC11_3B",
43023 + "BFD_RELOC_M68HC11_RL_JUMP",
43024 + "BFD_RELOC_M68HC11_RL_GROUP",
43025 + "BFD_RELOC_M68HC11_LO16",
43026 + "BFD_RELOC_M68HC11_PAGE",
43027 + "BFD_RELOC_M68HC11_24",
43028 + "BFD_RELOC_M68HC12_5B",
43029 + "BFD_RELOC_16C_NUM08",
43030 + "BFD_RELOC_16C_NUM08_C",
43031 + "BFD_RELOC_16C_NUM16",
43032 + "BFD_RELOC_16C_NUM16_C",
43033 + "BFD_RELOC_16C_NUM32",
43034 + "BFD_RELOC_16C_NUM32_C",
43035 + "BFD_RELOC_16C_DISP04",
43036 + "BFD_RELOC_16C_DISP04_C",
43037 + "BFD_RELOC_16C_DISP08",
43038 + "BFD_RELOC_16C_DISP08_C",
43039 + "BFD_RELOC_16C_DISP16",
43040 + "BFD_RELOC_16C_DISP16_C",
43041 + "BFD_RELOC_16C_DISP24",
43042 + "BFD_RELOC_16C_DISP24_C",
43043 + "BFD_RELOC_16C_DISP24a",
43044 + "BFD_RELOC_16C_DISP24a_C",
43045 + "BFD_RELOC_16C_REG04",
43046 + "BFD_RELOC_16C_REG04_C",
43047 + "BFD_RELOC_16C_REG04a",
43048 + "BFD_RELOC_16C_REG04a_C",
43049 + "BFD_RELOC_16C_REG14",
43050 + "BFD_RELOC_16C_REG14_C",
43051 + "BFD_RELOC_16C_REG16",
43052 + "BFD_RELOC_16C_REG16_C",
43053 + "BFD_RELOC_16C_REG20",
43054 + "BFD_RELOC_16C_REG20_C",
43055 + "BFD_RELOC_16C_ABS20",
43056 + "BFD_RELOC_16C_ABS20_C",
43057 + "BFD_RELOC_16C_ABS24",
43058 + "BFD_RELOC_16C_ABS24_C",
43059 + "BFD_RELOC_16C_IMM04",
43060 + "BFD_RELOC_16C_IMM04_C",
43061 + "BFD_RELOC_16C_IMM16",
43062 + "BFD_RELOC_16C_IMM16_C",
43063 + "BFD_RELOC_16C_IMM20",
43064 + "BFD_RELOC_16C_IMM20_C",
43065 + "BFD_RELOC_16C_IMM24",
43066 + "BFD_RELOC_16C_IMM24_C",
43067 + "BFD_RELOC_16C_IMM32",
43068 + "BFD_RELOC_16C_IMM32_C",
43069 + "BFD_RELOC_CR16_NUM8",
43070 + "BFD_RELOC_CR16_NUM16",
43071 + "BFD_RELOC_CR16_NUM32",
43072 + "BFD_RELOC_CR16_NUM32a",
43073 + "BFD_RELOC_CR16_REGREL0",
43074 + "BFD_RELOC_CR16_REGREL4",
43075 + "BFD_RELOC_CR16_REGREL4a",
43076 + "BFD_RELOC_CR16_REGREL14",
43077 + "BFD_RELOC_CR16_REGREL14a",
43078 + "BFD_RELOC_CR16_REGREL16",
43079 + "BFD_RELOC_CR16_REGREL20",
43080 + "BFD_RELOC_CR16_REGREL20a",
43081 + "BFD_RELOC_CR16_ABS20",
43082 + "BFD_RELOC_CR16_ABS24",
43083 + "BFD_RELOC_CR16_IMM4",
43084 + "BFD_RELOC_CR16_IMM8",
43085 + "BFD_RELOC_CR16_IMM16",
43086 + "BFD_RELOC_CR16_IMM20",
43087 + "BFD_RELOC_CR16_IMM24",
43088 + "BFD_RELOC_CR16_IMM32",
43089 + "BFD_RELOC_CR16_IMM32a",
43090 + "BFD_RELOC_CR16_DISP4",
43091 + "BFD_RELOC_CR16_DISP8",
43092 + "BFD_RELOC_CR16_DISP16",
43093 + "BFD_RELOC_CR16_DISP20",
43094 + "BFD_RELOC_CR16_DISP24",
43095 + "BFD_RELOC_CR16_DISP24a",
43096 + "BFD_RELOC_CRX_REL4",
43097 + "BFD_RELOC_CRX_REL8",
43098 + "BFD_RELOC_CRX_REL8_CMP",
43099 + "BFD_RELOC_CRX_REL16",
43100 + "BFD_RELOC_CRX_REL24",
43101 + "BFD_RELOC_CRX_REL32",
43102 + "BFD_RELOC_CRX_REGREL12",
43103 + "BFD_RELOC_CRX_REGREL22",
43104 + "BFD_RELOC_CRX_REGREL28",
43105 + "BFD_RELOC_CRX_REGREL32",
43106 + "BFD_RELOC_CRX_ABS16",
43107 + "BFD_RELOC_CRX_ABS32",
43108 + "BFD_RELOC_CRX_NUM8",
43109 + "BFD_RELOC_CRX_NUM16",
43110 + "BFD_RELOC_CRX_NUM32",
43111 + "BFD_RELOC_CRX_IMM16",
43112 + "BFD_RELOC_CRX_IMM32",
43113 + "BFD_RELOC_CRX_SWITCH8",
43114 + "BFD_RELOC_CRX_SWITCH16",
43115 + "BFD_RELOC_CRX_SWITCH32",
43116 + "BFD_RELOC_CRIS_BDISP8",
43117 + "BFD_RELOC_CRIS_UNSIGNED_5",
43118 + "BFD_RELOC_CRIS_SIGNED_6",
43119 + "BFD_RELOC_CRIS_UNSIGNED_6",
43120 + "BFD_RELOC_CRIS_SIGNED_8",
43121 + "BFD_RELOC_CRIS_UNSIGNED_8",
43122 + "BFD_RELOC_CRIS_SIGNED_16",
43123 + "BFD_RELOC_CRIS_UNSIGNED_16",
43124 + "BFD_RELOC_CRIS_LAPCQ_OFFSET",
43125 + "BFD_RELOC_CRIS_UNSIGNED_4",
43126 + "BFD_RELOC_CRIS_COPY",
43127 + "BFD_RELOC_CRIS_GLOB_DAT",
43128 + "BFD_RELOC_CRIS_JUMP_SLOT",
43129 + "BFD_RELOC_CRIS_RELATIVE",
43130 + "BFD_RELOC_CRIS_32_GOT",
43131 + "BFD_RELOC_CRIS_16_GOT",
43132 + "BFD_RELOC_CRIS_32_GOTPLT",
43133 + "BFD_RELOC_CRIS_16_GOTPLT",
43134 + "BFD_RELOC_CRIS_32_GOTREL",
43135 + "BFD_RELOC_CRIS_32_PLT_GOTREL",
43136 + "BFD_RELOC_CRIS_32_PLT_PCREL",
43137 + "BFD_RELOC_860_COPY",
43138 + "BFD_RELOC_860_GLOB_DAT",
43139 + "BFD_RELOC_860_JUMP_SLOT",
43140 + "BFD_RELOC_860_RELATIVE",
43141 + "BFD_RELOC_860_PC26",
43142 + "BFD_RELOC_860_PLT26",
43143 + "BFD_RELOC_860_PC16",
43144 + "BFD_RELOC_860_LOW0",
43145 + "BFD_RELOC_860_SPLIT0",
43146 + "BFD_RELOC_860_LOW1",
43147 + "BFD_RELOC_860_SPLIT1",
43148 + "BFD_RELOC_860_LOW2",
43149 + "BFD_RELOC_860_SPLIT2",
43150 + "BFD_RELOC_860_LOW3",
43151 + "BFD_RELOC_860_LOGOT0",
43152 + "BFD_RELOC_860_SPGOT0",
43153 + "BFD_RELOC_860_LOGOT1",
43154 + "BFD_RELOC_860_SPGOT1",
43155 + "BFD_RELOC_860_LOGOTOFF0",
43156 + "BFD_RELOC_860_SPGOTOFF0",
43157 + "BFD_RELOC_860_LOGOTOFF1",
43158 + "BFD_RELOC_860_SPGOTOFF1",
43159 + "BFD_RELOC_860_LOGOTOFF2",
43160 + "BFD_RELOC_860_LOGOTOFF3",
43161 + "BFD_RELOC_860_LOPC",
43162 + "BFD_RELOC_860_HIGHADJ",
43163 + "BFD_RELOC_860_HAGOT",
43164 + "BFD_RELOC_860_HAGOTOFF",
43165 + "BFD_RELOC_860_HAPC",
43166 + "BFD_RELOC_860_HIGH",
43167 + "BFD_RELOC_860_HIGOT",
43168 + "BFD_RELOC_860_HIGOTOFF",
43169 + "BFD_RELOC_OPENRISC_ABS_26",
43170 + "BFD_RELOC_OPENRISC_REL_26",
43171 + "BFD_RELOC_H8_DIR16A8",
43172 + "BFD_RELOC_H8_DIR16R8",
43173 + "BFD_RELOC_H8_DIR24A8",
43174 + "BFD_RELOC_H8_DIR24R8",
43175 + "BFD_RELOC_H8_DIR32A16",
43176 + "BFD_RELOC_XSTORMY16_REL_12",
43177 + "BFD_RELOC_XSTORMY16_12",
43178 + "BFD_RELOC_XSTORMY16_24",
43179 + "BFD_RELOC_XSTORMY16_FPTR16",
43180 + "BFD_RELOC_RELC",
43181 +
43182 + "BFD_RELOC_XC16X_PAG",
43183 + "BFD_RELOC_XC16X_POF",
43184 + "BFD_RELOC_XC16X_SEG",
43185 + "BFD_RELOC_XC16X_SOF",
43186 + "BFD_RELOC_VAX_GLOB_DAT",
43187 + "BFD_RELOC_VAX_JMP_SLOT",
43188 + "BFD_RELOC_VAX_RELATIVE",
43189 + "BFD_RELOC_MT_PC16",
43190 + "BFD_RELOC_MT_HI16",
43191 + "BFD_RELOC_MT_LO16",
43192 + "BFD_RELOC_MT_GNU_VTINHERIT",
43193 + "BFD_RELOC_MT_GNU_VTENTRY",
43194 + "BFD_RELOC_MT_PCINSN8",
43195 + "BFD_RELOC_MSP430_10_PCREL",
43196 + "BFD_RELOC_MSP430_16_PCREL",
43197 + "BFD_RELOC_MSP430_16",
43198 + "BFD_RELOC_MSP430_16_PCREL_BYTE",
43199 + "BFD_RELOC_MSP430_16_BYTE",
43200 + "BFD_RELOC_MSP430_2X_PCREL",
43201 + "BFD_RELOC_MSP430_RL_PCREL",
43202 + "BFD_RELOC_IQ2000_OFFSET_16",
43203 + "BFD_RELOC_IQ2000_OFFSET_21",
43204 + "BFD_RELOC_IQ2000_UHI16",
43205 + "BFD_RELOC_XTENSA_RTLD",
43206 + "BFD_RELOC_XTENSA_GLOB_DAT",
43207 + "BFD_RELOC_XTENSA_JMP_SLOT",
43208 + "BFD_RELOC_XTENSA_RELATIVE",
43209 + "BFD_RELOC_XTENSA_PLT",
43210 + "BFD_RELOC_XTENSA_DIFF8",
43211 + "BFD_RELOC_XTENSA_DIFF16",
43212 + "BFD_RELOC_XTENSA_DIFF32",
43213 + "BFD_RELOC_XTENSA_SLOT0_OP",
43214 + "BFD_RELOC_XTENSA_SLOT1_OP",
43215 + "BFD_RELOC_XTENSA_SLOT2_OP",
43216 + "BFD_RELOC_XTENSA_SLOT3_OP",
43217 + "BFD_RELOC_XTENSA_SLOT4_OP",
43218 + "BFD_RELOC_XTENSA_SLOT5_OP",
43219 + "BFD_RELOC_XTENSA_SLOT6_OP",
43220 + "BFD_RELOC_XTENSA_SLOT7_OP",
43221 + "BFD_RELOC_XTENSA_SLOT8_OP",
43222 + "BFD_RELOC_XTENSA_SLOT9_OP",
43223 + "BFD_RELOC_XTENSA_SLOT10_OP",
43224 + "BFD_RELOC_XTENSA_SLOT11_OP",
43225 + "BFD_RELOC_XTENSA_SLOT12_OP",
43226 + "BFD_RELOC_XTENSA_SLOT13_OP",
43227 + "BFD_RELOC_XTENSA_SLOT14_OP",
43228 + "BFD_RELOC_XTENSA_SLOT0_ALT",
43229 + "BFD_RELOC_XTENSA_SLOT1_ALT",
43230 + "BFD_RELOC_XTENSA_SLOT2_ALT",
43231 + "BFD_RELOC_XTENSA_SLOT3_ALT",
43232 + "BFD_RELOC_XTENSA_SLOT4_ALT",
43233 + "BFD_RELOC_XTENSA_SLOT5_ALT",
43234 + "BFD_RELOC_XTENSA_SLOT6_ALT",
43235 + "BFD_RELOC_XTENSA_SLOT7_ALT",
43236 + "BFD_RELOC_XTENSA_SLOT8_ALT",
43237 + "BFD_RELOC_XTENSA_SLOT9_ALT",
43238 + "BFD_RELOC_XTENSA_SLOT10_ALT",
43239 + "BFD_RELOC_XTENSA_SLOT11_ALT",
43240 + "BFD_RELOC_XTENSA_SLOT12_ALT",
43241 + "BFD_RELOC_XTENSA_SLOT13_ALT",
43242 + "BFD_RELOC_XTENSA_SLOT14_ALT",
43243 + "BFD_RELOC_XTENSA_OP0",
43244 + "BFD_RELOC_XTENSA_OP1",
43245 + "BFD_RELOC_XTENSA_OP2",
43246 + "BFD_RELOC_XTENSA_ASM_EXPAND",
43247 + "BFD_RELOC_XTENSA_ASM_SIMPLIFY",
43248 + "BFD_RELOC_Z80_DISP8",
43249 + "BFD_RELOC_Z8K_DISP7",
43250 + "BFD_RELOC_Z8K_CALLR",
43251 + "BFD_RELOC_Z8K_IMM4L",
43252 + "@@overflow: BFD_RELOC_UNUSED@@",
43253 +};
43254 +#endif
43255 +
43256 +reloc_howto_type *bfd_default_reloc_type_lookup
43257 + (bfd *abfd, bfd_reloc_code_real_type code);
43258 +
43259 +bfd_boolean bfd_generic_relax_section
43260 + (bfd *abfd,
43261 + asection *section,
43262 + struct bfd_link_info *,
43263 + bfd_boolean *);
43264 +
43265 +bfd_boolean bfd_generic_gc_sections
43266 + (bfd *, struct bfd_link_info *);
43267 +
43268 +bfd_boolean bfd_generic_merge_sections
43269 + (bfd *, struct bfd_link_info *);
43270 +
43271 +bfd_byte *bfd_generic_get_relocated_section_contents
43272 + (bfd *abfd,
43273 + struct bfd_link_info *link_info,
43274 + struct bfd_link_order *link_order,
43275 + bfd_byte *data,
43276 + bfd_boolean relocatable,
43277 + asymbol **symbols);
43278 +
43279 +/* Extracted from archures.c. */
43280 +extern const bfd_arch_info_type bfd_default_arch_struct;
43281 +bfd_boolean bfd_default_set_arch_mach
43282 + (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
43283 +
43284 +const bfd_arch_info_type *bfd_default_compatible
43285 + (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
43286 +
43287 +bfd_boolean bfd_default_scan
43288 + (const struct bfd_arch_info *info, const char *string);
43289 +
43290 +/* Extracted from elf.c. */
43291 +struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
43292 +
43293 --- /dev/null
43294 +++ b/bfd/doc/libcoff.h
43295 @@ -0,0 +1,936 @@
43296 +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
43297 + generated from "libcoff-in.h" and "coffcode.h".
43298 + Run "make headers" in your build bfd/ to regenerate. */
43299 +
43300 +/* BFD COFF object file private structure.
43301 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
43302 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
43303 + Free Software Foundation, Inc.
43304 + Written by Cygnus Support.
43305 +
43306 + This file is part of BFD, the Binary File Descriptor library.
43307 +
43308 + This program is free software; you can redistribute it and/or modify
43309 + it under the terms of the GNU General Public License as published by
43310 + the Free Software Foundation; either version 3 of the License, or
43311 + (at your option) any later version.
43312 +
43313 + This program is distributed in the hope that it will be useful,
43314 + but WITHOUT ANY WARRANTY; without even the implied warranty of
43315 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
43316 + GNU General Public License for more details.
43317 +
43318 + You should have received a copy of the GNU General Public License
43319 + along with this program; if not, write to the Free Software
43320 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
43321 + MA 02110-1301, USA. */
43322 +
43323 +#include "bfdlink.h"
43324 +
43325 +/* Object file tdata; access macros. */
43326 +
43327 +#define coff_data(bfd) ((bfd)->tdata.coff_obj_data)
43328 +#define exec_hdr(bfd) (coff_data (bfd)->hdr)
43329 +#define obj_pe(bfd) (coff_data (bfd)->pe)
43330 +#define obj_symbols(bfd) (coff_data (bfd)->symbols)
43331 +#define obj_sym_filepos(bfd) (coff_data (bfd)->sym_filepos)
43332 +#define obj_relocbase(bfd) (coff_data (bfd)->relocbase)
43333 +#define obj_raw_syments(bfd) (coff_data (bfd)->raw_syments)
43334 +#define obj_raw_syment_count(bfd) (coff_data (bfd)->raw_syment_count)
43335 +#define obj_convert(bfd) (coff_data (bfd)->conversion_table)
43336 +#define obj_conv_table_size(bfd) (coff_data (bfd)->conv_table_size)
43337 +#define obj_coff_external_syms(bfd) (coff_data (bfd)->external_syms)
43338 +#define obj_coff_keep_syms(bfd) (coff_data (bfd)->keep_syms)
43339 +#define obj_coff_strings(bfd) (coff_data (bfd)->strings)
43340 +#define obj_coff_keep_strings(bfd) (coff_data (bfd)->keep_strings)
43341 +#define obj_coff_sym_hashes(bfd) (coff_data (bfd)->sym_hashes)
43342 +#define obj_coff_strings_written(bfd) (coff_data (bfd)->strings_written)
43343 +#define obj_coff_local_toc_table(bfd) (coff_data (bfd)->local_toc_sym_map)
43344 +
43345 +/* `Tdata' information kept for COFF files. */
43346 +
43347 +typedef struct coff_tdata
43348 +{
43349 + struct coff_symbol_struct *symbols; /* Symtab for input bfd. */
43350 + unsigned int *conversion_table;
43351 + int conv_table_size;
43352 + file_ptr sym_filepos;
43353 +
43354 + struct coff_ptr_struct *raw_syments;
43355 + unsigned long raw_syment_count;
43356 +
43357 + /* These are only valid once writing has begun. */
43358 + long int relocbase;
43359 +
43360 + /* These members communicate important constants about the symbol table
43361 + to GDB's symbol-reading code. These `constants' unfortunately vary
43362 + from coff implementation to implementation... */
43363 + unsigned local_n_btmask;
43364 + unsigned local_n_btshft;
43365 + unsigned local_n_tmask;
43366 + unsigned local_n_tshift;
43367 + unsigned local_symesz;
43368 + unsigned local_auxesz;
43369 + unsigned local_linesz;
43370 +
43371 + /* The unswapped external symbols. May be NULL. Read by
43372 + _bfd_coff_get_external_symbols. */
43373 + void * external_syms;
43374 + /* If this is TRUE, the external_syms may not be freed. */
43375 + bfd_boolean keep_syms;
43376 +
43377 + /* The string table. May be NULL. Read by
43378 + _bfd_coff_read_string_table. */
43379 + char *strings;
43380 + /* If this is TRUE, the strings may not be freed. */
43381 + bfd_boolean keep_strings;
43382 + /* If this is TRUE, the strings have been written out already. */
43383 + bfd_boolean strings_written;
43384 +
43385 + /* Is this a PE format coff file? */
43386 + int pe;
43387 + /* Used by the COFF backend linker. */
43388 + struct coff_link_hash_entry **sym_hashes;
43389 +
43390 + /* Used by the pe linker for PowerPC. */
43391 + int *local_toc_sym_map;
43392 +
43393 + struct bfd_link_info *link_info;
43394 +
43395 + /* Used by coff_find_nearest_line. */
43396 + void * line_info;
43397 +
43398 + /* A place to stash dwarf2 info for this bfd. */
43399 + void * dwarf2_find_line_info;
43400 +
43401 + /* The timestamp from the COFF file header. */
43402 + long timestamp;
43403 +
43404 + /* Copy of some of the f_flags bits in the COFF filehdr structure,
43405 + used by ARM code. */
43406 + flagword flags;
43407 +
43408 +} coff_data_type;
43409 +
43410 +/* Tdata for pe image files. */
43411 +typedef struct pe_tdata
43412 +{
43413 + coff_data_type coff;
43414 + struct internal_extra_pe_aouthdr pe_opthdr;
43415 + int dll;
43416 + int has_reloc_section;
43417 + bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
43418 + flagword real_flags;
43419 + int target_subsystem;
43420 + bfd_boolean force_minimum_alignment;
43421 +} pe_data_type;
43422 +
43423 +#define pe_data(bfd) ((bfd)->tdata.pe_obj_data)
43424 +
43425 +/* Tdata for XCOFF files. */
43426 +
43427 +struct xcoff_tdata
43428 +{
43429 + /* Basic COFF information. */
43430 + coff_data_type coff;
43431 +
43432 + /* TRUE if this is an XCOFF64 file. */
43433 + bfd_boolean xcoff64;
43434 +
43435 + /* TRUE if a large a.out header should be generated. */
43436 + bfd_boolean full_aouthdr;
43437 +
43438 + /* TOC value. */
43439 + bfd_vma toc;
43440 +
43441 + /* Index of section holding TOC. */
43442 + int sntoc;
43443 +
43444 + /* Index of section holding entry point. */
43445 + int snentry;
43446 +
43447 + /* .text alignment from optional header. */
43448 + int text_align_power;
43449 +
43450 + /* .data alignment from optional header. */
43451 + int data_align_power;
43452 +
43453 + /* modtype from optional header. */
43454 + short modtype;
43455 +
43456 + /* cputype from optional header. */
43457 + short cputype;
43458 +
43459 + /* maxdata from optional header. */
43460 + bfd_vma maxdata;
43461 +
43462 + /* maxstack from optional header. */
43463 + bfd_vma maxstack;
43464 +
43465 + /* Used by the XCOFF backend linker. */
43466 + asection **csects;
43467 + unsigned long *debug_indices;
43468 + unsigned int import_file_id;
43469 +};
43470 +
43471 +#define xcoff_data(abfd) ((abfd)->tdata.xcoff_obj_data)
43472 +
43473 +/* We take the address of the first element of an asymbol to ensure that the
43474 + macro is only ever applied to an asymbol. */
43475 +#define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
43476 +
43477 +/* The used_by_bfd field of a section may be set to a pointer to this
43478 + structure. */
43479 +
43480 +struct coff_section_tdata
43481 +{
43482 + /* The relocs, swapped into COFF internal form. This may be NULL. */
43483 + struct internal_reloc *relocs;
43484 + /* If this is TRUE, the relocs entry may not be freed. */
43485 + bfd_boolean keep_relocs;
43486 + /* The section contents. This may be NULL. */
43487 + bfd_byte *contents;
43488 + /* If this is TRUE, the contents entry may not be freed. */
43489 + bfd_boolean keep_contents;
43490 + /* Information cached by coff_find_nearest_line. */
43491 + bfd_vma offset;
43492 + unsigned int i;
43493 + const char *function;
43494 + /* Optional information about a COMDAT entry; NULL if not COMDAT. */
43495 + struct coff_comdat_info *comdat;
43496 + int line_base;
43497 + /* A pointer used for .stab linking optimizations. */
43498 + void * stab_info;
43499 + /* Available for individual backends. */
43500 + void * tdata;
43501 +};
43502 +
43503 +/* An accessor macro for the coff_section_tdata structure. */
43504 +#define coff_section_data(abfd, sec) \
43505 + ((struct coff_section_tdata *) (sec)->used_by_bfd)
43506 +
43507 +/* Tdata for sections in XCOFF files. This is used by the linker. */
43508 +
43509 +struct xcoff_section_tdata
43510 +{
43511 + /* Used for XCOFF csects created by the linker; points to the real
43512 + XCOFF section which contains this csect. */
43513 + asection *enclosing;
43514 + /* The lineno_count field for the enclosing section, because we are
43515 + going to clobber it there. */
43516 + unsigned int lineno_count;
43517 + /* The first and one past the last symbol indices for symbols used
43518 + by this csect. */
43519 + unsigned long first_symndx;
43520 + unsigned long last_symndx;
43521 +};
43522 +
43523 +/* An accessor macro the xcoff_section_tdata structure. */
43524 +#define xcoff_section_data(abfd, sec) \
43525 + ((struct xcoff_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
43526 +
43527 +/* Tdata for sections in PE files. */
43528 +
43529 +struct pei_section_tdata
43530 +{
43531 + /* The virtual size of the section. */
43532 + bfd_size_type virt_size;
43533 + /* The PE section flags. */
43534 + long pe_flags;
43535 +};
43536 +
43537 +/* An accessor macro for the pei_section_tdata structure. */
43538 +#define pei_section_data(abfd, sec) \
43539 + ((struct pei_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
43540 +
43541 +/* COFF linker hash table entries. */
43542 +
43543 +struct coff_link_hash_entry
43544 +{
43545 + struct bfd_link_hash_entry root;
43546 +
43547 + /* Symbol index in output file. Set to -1 initially. Set to -2 if
43548 + there is a reloc against this symbol. */
43549 + long indx;
43550 +
43551 + /* Symbol type. */
43552 + unsigned short type;
43553 +
43554 + /* Symbol class. */
43555 + unsigned char class;
43556 +
43557 + /* Number of auxiliary entries. */
43558 + char numaux;
43559 +
43560 + /* BFD to take auxiliary entries from. */
43561 + bfd *auxbfd;
43562 +
43563 + /* Pointer to array of auxiliary entries, if any. */
43564 + union internal_auxent *aux;
43565 +
43566 + /* Flag word; legal values follow. */
43567 + unsigned short coff_link_hash_flags;
43568 + /* Symbol is a PE section symbol. */
43569 +#define COFF_LINK_HASH_PE_SECTION_SYMBOL (01)
43570 +};
43571 +
43572 +/* COFF linker hash table. */
43573 +
43574 +struct coff_link_hash_table
43575 +{
43576 + struct bfd_link_hash_table root;
43577 + /* A pointer to information used to link stabs in sections. */
43578 + struct stab_info stab_info;
43579 +};
43580 +
43581 +/* Look up an entry in a COFF linker hash table. */
43582 +
43583 +#define coff_link_hash_lookup(table, string, create, copy, follow) \
43584 + ((struct coff_link_hash_entry *) \
43585 + bfd_link_hash_lookup (&(table)->root, (string), (create), \
43586 + (copy), (follow)))
43587 +
43588 +/* Traverse a COFF linker hash table. */
43589 +
43590 +#define coff_link_hash_traverse(table, func, info) \
43591 + (bfd_link_hash_traverse \
43592 + (&(table)->root, \
43593 + (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
43594 + (info)))
43595 +
43596 +/* Get the COFF linker hash table from a link_info structure. */
43597 +
43598 +#define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
43599 +
43600 +/* Functions in coffgen.c. */
43601 +extern const bfd_target *coff_object_p
43602 + (bfd *);
43603 +extern struct bfd_section *coff_section_from_bfd_index
43604 + (bfd *, int);
43605 +extern long coff_get_symtab_upper_bound
43606 + (bfd *);
43607 +extern long coff_canonicalize_symtab
43608 + (bfd *, asymbol **);
43609 +extern int coff_count_linenumbers
43610 + (bfd *);
43611 +extern struct coff_symbol_struct *coff_symbol_from
43612 + (bfd *, asymbol *);
43613 +extern bfd_boolean coff_renumber_symbols
43614 + (bfd *, int *);
43615 +extern void coff_mangle_symbols
43616 + (bfd *);
43617 +extern bfd_boolean coff_write_symbols
43618 + (bfd *);
43619 +extern bfd_boolean coff_write_linenumbers
43620 + (bfd *);
43621 +extern alent *coff_get_lineno
43622 + (bfd *, asymbol *);
43623 +extern asymbol *coff_section_symbol
43624 + (bfd *, char *);
43625 +extern bfd_boolean _bfd_coff_get_external_symbols
43626 + (bfd *);
43627 +extern const char *_bfd_coff_read_string_table
43628 + (bfd *);
43629 +extern bfd_boolean _bfd_coff_free_symbols
43630 + (bfd *);
43631 +extern struct coff_ptr_struct *coff_get_normalized_symtab
43632 + (bfd *);
43633 +extern long coff_get_reloc_upper_bound
43634 + (bfd *, sec_ptr);
43635 +extern asymbol *coff_make_empty_symbol
43636 + (bfd *);
43637 +extern void coff_print_symbol
43638 + (bfd *, void * filep, asymbol *, bfd_print_symbol_type);
43639 +extern void coff_get_symbol_info
43640 + (bfd *, asymbol *, symbol_info *ret);
43641 +extern bfd_boolean _bfd_coff_is_local_label_name
43642 + (bfd *, const char *);
43643 +extern asymbol *coff_bfd_make_debug_symbol
43644 + (bfd *, void *, unsigned long);
43645 +extern bfd_boolean coff_find_nearest_line
43646 + (bfd *, asection *, asymbol **, bfd_vma, const char **,
43647 + const char **, unsigned int *);
43648 +extern bfd_boolean coff_find_inliner_info
43649 + (bfd *, const char **, const char **, unsigned int *);
43650 +extern int coff_sizeof_headers
43651 + (bfd *, struct bfd_link_info *);
43652 +extern bfd_boolean bfd_coff_reloc16_relax_section
43653 + (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
43654 +extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents
43655 + (bfd *, struct bfd_link_info *, struct bfd_link_order *,
43656 + bfd_byte *, bfd_boolean, asymbol **);
43657 +extern bfd_vma bfd_coff_reloc16_get_value
43658 + (arelent *, struct bfd_link_info *, asection *);
43659 +extern void bfd_perform_slip
43660 + (bfd *, unsigned int, asection *, bfd_vma);
43661 +
43662 +/* Functions and types in cofflink.c. */
43663 +
43664 +#define STRING_SIZE_SIZE 4
43665 +
43666 +/* We use a hash table to merge identical enum, struct, and union
43667 + definitions in the linker. */
43668 +
43669 +/* Information we keep for a single element (an enum value, a
43670 + structure or union field) in the debug merge hash table. */
43671 +
43672 +struct coff_debug_merge_element
43673 +{
43674 + /* Next element. */
43675 + struct coff_debug_merge_element *next;
43676 +
43677 + /* Name. */
43678 + const char *name;
43679 +
43680 + /* Type. */
43681 + unsigned int type;
43682 +
43683 + /* Symbol index for complex type. */
43684 + long tagndx;
43685 +};
43686 +
43687 +/* A linked list of debug merge entries for a given name. */
43688 +
43689 +struct coff_debug_merge_type
43690 +{
43691 + /* Next type with the same name. */
43692 + struct coff_debug_merge_type *next;
43693 +
43694 + /* Class of type. */
43695 + int class;
43696 +
43697 + /* Symbol index where this type is defined. */
43698 + long indx;
43699 +
43700 + /* List of elements. */
43701 + struct coff_debug_merge_element *elements;
43702 +};
43703 +
43704 +/* Information we store in the debug merge hash table. */
43705 +
43706 +struct coff_debug_merge_hash_entry
43707 +{
43708 + struct bfd_hash_entry root;
43709 +
43710 + /* A list of types with this name. */
43711 + struct coff_debug_merge_type *types;
43712 +};
43713 +
43714 +/* The debug merge hash table. */
43715 +
43716 +struct coff_debug_merge_hash_table
43717 +{
43718 + struct bfd_hash_table root;
43719 +};
43720 +
43721 +/* Initialize a COFF debug merge hash table. */
43722 +
43723 +#define coff_debug_merge_hash_table_init(table) \
43724 + (bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \
43725 + sizeof (struct coff_debug_merge_hash_entry)))
43726 +
43727 +/* Free a COFF debug merge hash table. */
43728 +
43729 +#define coff_debug_merge_hash_table_free(table) \
43730 + (bfd_hash_table_free (&(table)->root))
43731 +
43732 +/* Look up an entry in a COFF debug merge hash table. */
43733 +
43734 +#define coff_debug_merge_hash_lookup(table, string, create, copy) \
43735 + ((struct coff_debug_merge_hash_entry *) \
43736 + bfd_hash_lookup (&(table)->root, (string), (create), (copy)))
43737 +
43738 +/* Information we keep for each section in the output file when doing
43739 + a relocatable link. */
43740 +
43741 +struct coff_link_section_info
43742 +{
43743 + /* The relocs to be output. */
43744 + struct internal_reloc *relocs;
43745 + /* For each reloc against a global symbol whose index was not known
43746 + when the reloc was handled, the global hash table entry. */
43747 + struct coff_link_hash_entry **rel_hashes;
43748 +};
43749 +
43750 +/* Information that we pass around while doing the final link step. */
43751 +
43752 +struct coff_final_link_info
43753 +{
43754 + /* General link information. */
43755 + struct bfd_link_info *info;
43756 + /* Output BFD. */
43757 + bfd *output_bfd;
43758 + /* Used to indicate failure in traversal routine. */
43759 + bfd_boolean failed;
43760 + /* If doing "task linking" set only during the time when we want the
43761 + global symbol writer to convert the storage class of defined global
43762 + symbols from global to static. */
43763 + bfd_boolean global_to_static;
43764 + /* Hash table for long symbol names. */
43765 + struct bfd_strtab_hash *strtab;
43766 + /* When doing a relocatable link, an array of information kept for
43767 + each output section, indexed by the target_index field. */
43768 + struct coff_link_section_info *section_info;
43769 + /* Symbol index of last C_FILE symbol (-1 if none). */
43770 + long last_file_index;
43771 + /* Contents of last C_FILE symbol. */
43772 + struct internal_syment last_file;
43773 + /* Symbol index of first aux entry of last .bf symbol with an empty
43774 + endndx field (-1 if none). */
43775 + long last_bf_index;
43776 + /* Contents of last_bf_index aux entry. */
43777 + union internal_auxent last_bf;
43778 + /* Hash table used to merge debug information. */
43779 + struct coff_debug_merge_hash_table debug_merge;
43780 + /* Buffer large enough to hold swapped symbols of any input file. */
43781 + struct internal_syment *internal_syms;
43782 + /* Buffer large enough to hold sections of symbols of any input file. */
43783 + asection **sec_ptrs;
43784 + /* Buffer large enough to hold output indices of symbols of any
43785 + input file. */
43786 + long *sym_indices;
43787 + /* Buffer large enough to hold output symbols for any input file. */
43788 + bfd_byte *outsyms;
43789 + /* Buffer large enough to hold external line numbers for any input
43790 + section. */
43791 + bfd_byte *linenos;
43792 + /* Buffer large enough to hold any input section. */
43793 + bfd_byte *contents;
43794 + /* Buffer large enough to hold external relocs of any input section. */
43795 + bfd_byte *external_relocs;
43796 + /* Buffer large enough to hold swapped relocs of any input section. */
43797 + struct internal_reloc *internal_relocs;
43798 +};
43799 +
43800 +/* Most COFF variants have no way to record the alignment of a
43801 + section. This struct is used to set a specific alignment based on
43802 + the name of the section. */
43803 +
43804 +struct coff_section_alignment_entry
43805 +{
43806 + /* The section name. */
43807 + const char *name;
43808 +
43809 + /* This is either (unsigned int) -1, indicating that the section
43810 + name must match exactly, or it is the number of letters which
43811 + must match at the start of the name. */
43812 + unsigned int comparison_length;
43813 +
43814 + /* These macros may be used to fill in the first two fields in a
43815 + structure initialization. */
43816 +#define COFF_SECTION_NAME_EXACT_MATCH(name) (name), ((unsigned int) -1)
43817 +#define COFF_SECTION_NAME_PARTIAL_MATCH(name) (name), (sizeof (name) - 1)
43818 +
43819 + /* Only use this entry if the default section alignment for this
43820 + target is at least that much (as a power of two). If this field
43821 + is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
43822 + unsigned int default_alignment_min;
43823 +
43824 + /* Only use this entry if the default section alignment for this
43825 + target is no greater than this (as a power of two). If this
43826 + field is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
43827 + unsigned int default_alignment_max;
43828 +
43829 +#define COFF_ALIGNMENT_FIELD_EMPTY ((unsigned int) -1)
43830 +
43831 + /* The desired alignment for this section (as a power of two). */
43832 + unsigned int alignment_power;
43833 +};
43834 +
43835 +extern struct bfd_hash_entry *_bfd_coff_link_hash_newfunc
43836 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
43837 +extern bfd_boolean _bfd_coff_link_hash_table_init
43838 + (struct coff_link_hash_table *, bfd *,
43839 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
43840 + struct bfd_hash_table *,
43841 + const char *),
43842 + unsigned int);
43843 +extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
43844 + (bfd *);
43845 +extern const char *_bfd_coff_internal_syment_name
43846 + (bfd *, const struct internal_syment *, char *);
43847 +extern bfd_boolean _bfd_coff_link_add_symbols
43848 + (bfd *, struct bfd_link_info *);
43849 +extern bfd_boolean _bfd_coff_final_link
43850 + (bfd *, struct bfd_link_info *);
43851 +extern struct internal_reloc *_bfd_coff_read_internal_relocs
43852 + (bfd *, asection *, bfd_boolean, bfd_byte *, bfd_boolean,
43853 + struct internal_reloc *);
43854 +extern bfd_boolean _bfd_coff_generic_relocate_section
43855 + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
43856 + struct internal_reloc *, struct internal_syment *, asection **);
43857 +extern struct bfd_hash_entry *_bfd_coff_debug_merge_hash_newfunc
43858 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
43859 +extern bfd_boolean _bfd_coff_write_global_sym
43860 + (struct coff_link_hash_entry *, void *);
43861 +extern bfd_boolean _bfd_coff_write_task_globals
43862 + (struct coff_link_hash_entry *, void *);
43863 +extern bfd_boolean _bfd_coff_link_input_bfd
43864 + (struct coff_final_link_info *, bfd *);
43865 +extern bfd_boolean _bfd_coff_reloc_link_order
43866 + (bfd *, struct coff_final_link_info *, asection *,
43867 + struct bfd_link_order *);
43868 +
43869 +
43870 +#define coff_get_section_contents_in_window \
43871 + _bfd_generic_get_section_contents_in_window
43872 +
43873 +/* Functions in xcofflink.c. */
43874 +
43875 +extern long _bfd_xcoff_get_dynamic_symtab_upper_bound
43876 + (bfd *);
43877 +extern long _bfd_xcoff_canonicalize_dynamic_symtab
43878 + (bfd *, asymbol **);
43879 +extern long _bfd_xcoff_get_dynamic_reloc_upper_bound
43880 + (bfd *);
43881 +extern long _bfd_xcoff_canonicalize_dynamic_reloc
43882 + (bfd *, arelent **, asymbol **);
43883 +extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create
43884 + (bfd *);
43885 +extern void _bfd_xcoff_bfd_link_hash_table_free
43886 + (struct bfd_link_hash_table *);
43887 +extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
43888 + (bfd *, struct bfd_link_info *);
43889 +extern bfd_boolean _bfd_xcoff_bfd_final_link
43890 + (bfd *, struct bfd_link_info *);
43891 +extern bfd_boolean _bfd_ppc_xcoff_relocate_section
43892 + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
43893 + struct internal_reloc *, struct internal_syment *, asection **);
43894 +
43895 +/* Functions in coff-ppc.c. FIXME: These are called be pe.em in the
43896 + linker, and so should start with bfd and be declared in bfd.h. */
43897 +
43898 +extern bfd_boolean ppc_allocate_toc_section
43899 + (struct bfd_link_info *);
43900 +extern bfd_boolean ppc_process_before_allocation
43901 + (bfd *, struct bfd_link_info *);
43902 +
43903 +/* Extracted from coffcode.h. */
43904 +typedef struct coff_ptr_struct
43905 +{
43906 + /* Remembers the offset from the first symbol in the file for
43907 + this symbol. Generated by coff_renumber_symbols. */
43908 + unsigned int offset;
43909 +
43910 + /* Should the value of this symbol be renumbered. Used for
43911 + XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */
43912 + unsigned int fix_value : 1;
43913 +
43914 + /* Should the tag field of this symbol be renumbered.
43915 + Created by coff_pointerize_aux. */
43916 + unsigned int fix_tag : 1;
43917 +
43918 + /* Should the endidx field of this symbol be renumbered.
43919 + Created by coff_pointerize_aux. */
43920 + unsigned int fix_end : 1;
43921 +
43922 + /* Should the x_csect.x_scnlen field be renumbered.
43923 + Created by coff_pointerize_aux. */
43924 + unsigned int fix_scnlen : 1;
43925 +
43926 + /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the
43927 + index into the line number entries. Set by coff_slurp_symbol_table. */
43928 + unsigned int fix_line : 1;
43929 +
43930 + /* The container for the symbol structure as read and translated
43931 + from the file. */
43932 + union
43933 + {
43934 + union internal_auxent auxent;
43935 + struct internal_syment syment;
43936 + } u;
43937 +} combined_entry_type;
43938 +
43939 +
43940 +/* Each canonical asymbol really looks like this: */
43941 +
43942 +typedef struct coff_symbol_struct
43943 +{
43944 + /* The actual symbol which the rest of BFD works with */
43945 + asymbol symbol;
43946 +
43947 + /* A pointer to the hidden information for this symbol */
43948 + combined_entry_type *native;
43949 +
43950 + /* A pointer to the linenumber information for this symbol */
43951 + struct lineno_cache_entry *lineno;
43952 +
43953 + /* Have the line numbers been relocated yet ? */
43954 + bfd_boolean done_lineno;
43955 +} coff_symbol_type;
43956 +/* COFF symbol classifications. */
43957 +
43958 +enum coff_symbol_classification
43959 +{
43960 + /* Global symbol. */
43961 + COFF_SYMBOL_GLOBAL,
43962 + /* Common symbol. */
43963 + COFF_SYMBOL_COMMON,
43964 + /* Undefined symbol. */
43965 + COFF_SYMBOL_UNDEFINED,
43966 + /* Local symbol. */
43967 + COFF_SYMBOL_LOCAL,
43968 + /* PE section symbol. */
43969 + COFF_SYMBOL_PE_SECTION
43970 +};
43971 +
43972 +typedef struct
43973 +{
43974 + void (*_bfd_coff_swap_aux_in)
43975 + (bfd *, void *, int, int, int, int, void *);
43976 +
43977 + void (*_bfd_coff_swap_sym_in)
43978 + (bfd *, void *, void *);
43979 +
43980 + void (*_bfd_coff_swap_lineno_in)
43981 + (bfd *, void *, void *);
43982 +
43983 + unsigned int (*_bfd_coff_swap_aux_out)
43984 + (bfd *, void *, int, int, int, int, void *);
43985 +
43986 + unsigned int (*_bfd_coff_swap_sym_out)
43987 + (bfd *, void *, void *);
43988 +
43989 + unsigned int (*_bfd_coff_swap_lineno_out)
43990 + (bfd *, void *, void *);
43991 +
43992 + unsigned int (*_bfd_coff_swap_reloc_out)
43993 + (bfd *, void *, void *);
43994 +
43995 + unsigned int (*_bfd_coff_swap_filehdr_out)
43996 + (bfd *, void *, void *);
43997 +
43998 + unsigned int (*_bfd_coff_swap_aouthdr_out)
43999 + (bfd *, void *, void *);
44000 +
44001 + unsigned int (*_bfd_coff_swap_scnhdr_out)
44002 + (bfd *, void *, void *);
44003 +
44004 + unsigned int _bfd_filhsz;
44005 + unsigned int _bfd_aoutsz;
44006 + unsigned int _bfd_scnhsz;
44007 + unsigned int _bfd_symesz;
44008 + unsigned int _bfd_auxesz;
44009 + unsigned int _bfd_relsz;
44010 + unsigned int _bfd_linesz;
44011 + unsigned int _bfd_filnmlen;
44012 + bfd_boolean _bfd_coff_long_filenames;
44013 + bfd_boolean _bfd_coff_long_section_names;
44014 + unsigned int _bfd_coff_default_section_alignment_power;
44015 + bfd_boolean _bfd_coff_force_symnames_in_strings;
44016 + unsigned int _bfd_coff_debug_string_prefix_length;
44017 +
44018 + void (*_bfd_coff_swap_filehdr_in)
44019 + (bfd *, void *, void *);
44020 +
44021 + void (*_bfd_coff_swap_aouthdr_in)
44022 + (bfd *, void *, void *);
44023 +
44024 + void (*_bfd_coff_swap_scnhdr_in)
44025 + (bfd *, void *, void *);
44026 +
44027 + void (*_bfd_coff_swap_reloc_in)
44028 + (bfd *abfd, void *, void *);
44029 +
44030 + bfd_boolean (*_bfd_coff_bad_format_hook)
44031 + (bfd *, void *);
44032 +
44033 + bfd_boolean (*_bfd_coff_set_arch_mach_hook)
44034 + (bfd *, void *);
44035 +
44036 + void * (*_bfd_coff_mkobject_hook)
44037 + (bfd *, void *, void *);
44038 +
44039 + bfd_boolean (*_bfd_styp_to_sec_flags_hook)
44040 + (bfd *, void *, const char *, asection *, flagword *);
44041 +
44042 + void (*_bfd_set_alignment_hook)
44043 + (bfd *, asection *, void *);
44044 +
44045 + bfd_boolean (*_bfd_coff_slurp_symbol_table)
44046 + (bfd *);
44047 +
44048 + bfd_boolean (*_bfd_coff_symname_in_debug)
44049 + (bfd *, struct internal_syment *);
44050 +
44051 + bfd_boolean (*_bfd_coff_pointerize_aux_hook)
44052 + (bfd *, combined_entry_type *, combined_entry_type *,
44053 + unsigned int, combined_entry_type *);
44054 +
44055 + bfd_boolean (*_bfd_coff_print_aux)
44056 + (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
44057 + combined_entry_type *, unsigned int);
44058 +
44059 + void (*_bfd_coff_reloc16_extra_cases)
44060 + (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
44061 + bfd_byte *, unsigned int *, unsigned int *);
44062 +
44063 + int (*_bfd_coff_reloc16_estimate)
44064 + (bfd *, asection *, arelent *, unsigned int,
44065 + struct bfd_link_info *);
44066 +
44067 + enum coff_symbol_classification (*_bfd_coff_classify_symbol)
44068 + (bfd *, struct internal_syment *);
44069 +
44070 + bfd_boolean (*_bfd_coff_compute_section_file_positions)
44071 + (bfd *);
44072 +
44073 + bfd_boolean (*_bfd_coff_start_final_link)
44074 + (bfd *, struct bfd_link_info *);
44075 +
44076 + bfd_boolean (*_bfd_coff_relocate_section)
44077 + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
44078 + struct internal_reloc *, struct internal_syment *, asection **);
44079 +
44080 + reloc_howto_type *(*_bfd_coff_rtype_to_howto)
44081 + (bfd *, asection *, struct internal_reloc *,
44082 + struct coff_link_hash_entry *, struct internal_syment *,
44083 + bfd_vma *);
44084 +
44085 + bfd_boolean (*_bfd_coff_adjust_symndx)
44086 + (bfd *, struct bfd_link_info *, bfd *, asection *,
44087 + struct internal_reloc *, bfd_boolean *);
44088 +
44089 + bfd_boolean (*_bfd_coff_link_add_one_symbol)
44090 + (struct bfd_link_info *, bfd *, const char *, flagword,
44091 + asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
44092 + struct bfd_link_hash_entry **);
44093 +
44094 + bfd_boolean (*_bfd_coff_link_output_has_begun)
44095 + (bfd *, struct coff_final_link_info *);
44096 +
44097 + bfd_boolean (*_bfd_coff_final_link_postscript)
44098 + (bfd *, struct coff_final_link_info *);
44099 +
44100 +} bfd_coff_backend_data;
44101 +
44102 +#define coff_backend_info(abfd) \
44103 + ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
44104 +
44105 +#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
44106 + ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
44107 +
44108 +#define bfd_coff_swap_sym_in(a,e,i) \
44109 + ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
44110 +
44111 +#define bfd_coff_swap_lineno_in(a,e,i) \
44112 + ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
44113 +
44114 +#define bfd_coff_swap_reloc_out(abfd, i, o) \
44115 + ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
44116 +
44117 +#define bfd_coff_swap_lineno_out(abfd, i, o) \
44118 + ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
44119 +
44120 +#define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
44121 + ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
44122 +
44123 +#define bfd_coff_swap_sym_out(abfd, i,o) \
44124 + ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
44125 +
44126 +#define bfd_coff_swap_scnhdr_out(abfd, i,o) \
44127 + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
44128 +
44129 +#define bfd_coff_swap_filehdr_out(abfd, i,o) \
44130 + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
44131 +
44132 +#define bfd_coff_swap_aouthdr_out(abfd, i,o) \
44133 + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
44134 +
44135 +#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
44136 +#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
44137 +#define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
44138 +#define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
44139 +#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
44140 +#define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz)
44141 +#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
44142 +#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
44143 +#define bfd_coff_long_filenames(abfd) \
44144 + (coff_backend_info (abfd)->_bfd_coff_long_filenames)
44145 +#define bfd_coff_long_section_names(abfd) \
44146 + (coff_backend_info (abfd)->_bfd_coff_long_section_names)
44147 +#define bfd_coff_default_section_alignment_power(abfd) \
44148 + (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
44149 +#define bfd_coff_swap_filehdr_in(abfd, i,o) \
44150 + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
44151 +
44152 +#define bfd_coff_swap_aouthdr_in(abfd, i,o) \
44153 + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
44154 +
44155 +#define bfd_coff_swap_scnhdr_in(abfd, i,o) \
44156 + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
44157 +
44158 +#define bfd_coff_swap_reloc_in(abfd, i, o) \
44159 + ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
44160 +
44161 +#define bfd_coff_bad_format_hook(abfd, filehdr) \
44162 + ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
44163 +
44164 +#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
44165 + ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
44166 +#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
44167 + ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
44168 + (abfd, filehdr, aouthdr))
44169 +
44170 +#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
44171 + ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
44172 + (abfd, scnhdr, name, section, flags_ptr))
44173 +
44174 +#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
44175 + ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
44176 +
44177 +#define bfd_coff_slurp_symbol_table(abfd)\
44178 + ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
44179 +
44180 +#define bfd_coff_symname_in_debug(abfd, sym)\
44181 + ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
44182 +
44183 +#define bfd_coff_force_symnames_in_strings(abfd)\
44184 + (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
44185 +
44186 +#define bfd_coff_debug_string_prefix_length(abfd)\
44187 + (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
44188 +
44189 +#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
44190 + ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
44191 + (abfd, file, base, symbol, aux, indaux))
44192 +
44193 +#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
44194 + reloc, data, src_ptr, dst_ptr)\
44195 + ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
44196 + (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
44197 +
44198 +#define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
44199 + ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
44200 + (abfd, section, reloc, shrink, link_info))
44201 +
44202 +#define bfd_coff_classify_symbol(abfd, sym)\
44203 + ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
44204 + (abfd, sym))
44205 +
44206 +#define bfd_coff_compute_section_file_positions(abfd)\
44207 + ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
44208 + (abfd))
44209 +
44210 +#define bfd_coff_start_final_link(obfd, info)\
44211 + ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
44212 + (obfd, info))
44213 +#define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
44214 + ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
44215 + (obfd, info, ibfd, o, con, rel, isyms, secs))
44216 +#define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
44217 + ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
44218 + (abfd, sec, rel, h, sym, addendp))
44219 +#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
44220 + ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
44221 + (obfd, info, ibfd, sec, rel, adjustedp))
44222 +#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
44223 + value, string, cp, coll, hashp)\
44224 + ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
44225 + (info, abfd, name, flags, section, value, string, cp, coll, hashp))
44226 +
44227 +#define bfd_coff_link_output_has_begun(a,p) \
44228 + ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
44229 +#define bfd_coff_final_link_postscript(a,p) \
44230 + ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
44231 +
44232 --- a/bfd/libbfd.h
44233 +++ b/bfd/libbfd.h
44234 @@ -1601,6 +1601,48 @@ static const char *const bfd_reloc_code_
44235 "BFD_RELOC_AVR_LDI",
44236 "BFD_RELOC_AVR_6",
44237 "BFD_RELOC_AVR_6_ADIW",
44238 + "BFD_RELOC_AVR32_DIFF32",
44239 + "BFD_RELOC_AVR32_DIFF16",
44240 + "BFD_RELOC_AVR32_DIFF8",
44241 + "BFD_RELOC_AVR32_GOT32",
44242 + "BFD_RELOC_AVR32_GOT16",
44243 + "BFD_RELOC_AVR32_GOT8",
44244 + "BFD_RELOC_AVR32_21S",
44245 + "BFD_RELOC_AVR32_16U",
44246 + "BFD_RELOC_AVR32_16S",
44247 + "BFD_RELOC_AVR32_SUB5",
44248 + "BFD_RELOC_AVR32_8S_EXT",
44249 + "BFD_RELOC_AVR32_8S",
44250 + "BFD_RELOC_AVR32_15S",
44251 + "BFD_RELOC_AVR32_22H_PCREL",
44252 + "BFD_RELOC_AVR32_18W_PCREL",
44253 + "BFD_RELOC_AVR32_16B_PCREL",
44254 + "BFD_RELOC_AVR32_16N_PCREL",
44255 + "BFD_RELOC_AVR32_14UW_PCREL",
44256 + "BFD_RELOC_AVR32_11H_PCREL",
44257 + "BFD_RELOC_AVR32_10UW_PCREL",
44258 + "BFD_RELOC_AVR32_9H_PCREL",
44259 + "BFD_RELOC_AVR32_9UW_PCREL",
44260 + "BFD_RELOC_AVR32_GOTPC",
44261 + "BFD_RELOC_AVR32_GOTCALL",
44262 + "BFD_RELOC_AVR32_LDA_GOT",
44263 + "BFD_RELOC_AVR32_GOT21S",
44264 + "BFD_RELOC_AVR32_GOT18SW",
44265 + "BFD_RELOC_AVR32_GOT16S",
44266 + "BFD_RELOC_AVR32_32_CPENT",
44267 + "BFD_RELOC_AVR32_CPCALL",
44268 + "BFD_RELOC_AVR32_16_CP",
44269 + "BFD_RELOC_AVR32_9W_CP",
44270 + "BFD_RELOC_AVR32_ALIGN",
44271 + "BFD_RELOC_AVR32_14UW",
44272 + "BFD_RELOC_AVR32_10UW",
44273 + "BFD_RELOC_AVR32_10SW",
44274 + "BFD_RELOC_AVR32_STHH_W",
44275 + "BFD_RELOC_AVR32_7UW",
44276 + "BFD_RELOC_AVR32_6S",
44277 + "BFD_RELOC_AVR32_6UW",
44278 + "BFD_RELOC_AVR32_4UH",
44279 + "BFD_RELOC_AVR32_3U",
44280 "BFD_RELOC_390_12",
44281 "BFD_RELOC_390_GOT12",
44282 "BFD_RELOC_390_PLT32",
44283 --- /dev/null
44284 +++ b/bfd/libtool
44285 @@ -0,0 +1,7871 @@
44286 +#! /bin/bash
44287 +
44288 +# libtool - Provide generalized library-building support services.
44289 +# Generated automatically by config.status (bfd) 2.18
44290 +# Libtool was configured on host hcegtvedt:
44291 +# NOTE: Changes made to this file will be lost: look at ltmain.sh.
44292 +#
44293 +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
44294 +# 2006, 2007, 2008 Free Software Foundation, Inc.
44295 +# Written by Gordon Matzigkeit, 1996
44296 +#
44297 +# This file is part of GNU Libtool.
44298 +#
44299 +# GNU Libtool is free software; you can redistribute it and/or
44300 +# modify it under the terms of the GNU General Public License as
44301 +# published by the Free Software Foundation; either version 2 of
44302 +# the License, or (at your option) any later version.
44303 +#
44304 +# As a special exception to the GNU General Public License,
44305 +# if you distribute this file as part of a program or library that
44306 +# is built using GNU Libtool, you may include this file under the
44307 +# same distribution terms that you use for the rest of that program.
44308 +#
44309 +# GNU Libtool is distributed in the hope that it will be useful,
44310 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
44311 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
44312 +# GNU General Public License for more details.
44313 +#
44314 +# You should have received a copy of the GNU General Public License
44315 +# along with GNU Libtool; see the file COPYING. If not, a copy
44316 +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
44317 +# obtained by writing to the Free Software Foundation, Inc.,
44318 +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
44319 +
44320 +
44321 +# The names of the tagged configurations supported by this script.
44322 +available_tags=""
44323 +
44324 +# ### BEGIN LIBTOOL CONFIG
44325 +
44326 +# Whether or not to build shared libraries.
44327 +build_libtool_libs=no
44328 +
44329 +# Which release of libtool.m4 was used?
44330 +macro_version=2.2.4
44331 +macro_revision=1.2976
44332 +
44333 +# Whether or not to build static libraries.
44334 +build_old_libs=yes
44335 +
44336 +# What type of objects to build.
44337 +pic_mode=default
44338 +
44339 +# Whether or not to optimize for fast installation.
44340 +fast_install=needless
44341 +
44342 +# The host system.
44343 +host_alias=i686-pc-linux-gnu
44344 +host=i686-pc-linux-gnu
44345 +host_os=linux-gnu
44346 +
44347 +# The build system.
44348 +build_alias=i686-pc-linux-gnu
44349 +build=i686-pc-linux-gnu
44350 +build_os=linux-gnu
44351 +
44352 +# A sed program that does not truncate output.
44353 +SED="/bin/sed"
44354 +
44355 +# Sed that helps us avoid accidentally triggering echo(1) options like -n.
44356 +Xsed="$SED -e 1s/^X//"
44357 +
44358 +# A grep program that handles long lines.
44359 +GREP="/bin/grep"
44360 +
44361 +# An ERE matcher.
44362 +EGREP="/bin/grep -E"
44363 +
44364 +# A literal string matcher.
44365 +FGREP="/bin/grep -F"
44366 +
44367 +# A BSD- or MS-compatible name lister.
44368 +NM="nm"
44369 +
44370 +# Whether we need soft or hard links.
44371 +LN_S="ln -s"
44372 +
44373 +# What is the maximum length of a command?
44374 +max_cmd_len=805306365
44375 +
44376 +# Object file suffix (normally "o").
44377 +objext=o
44378 +
44379 +# Executable file suffix (normally "").
44380 +exeext=
44381 +
44382 +# whether the shell understands "unset".
44383 +lt_unset=unset
44384 +
44385 +# turn spaces into newlines.
44386 +SP2NL="tr \\040 \\012"
44387 +
44388 +# turn newlines into spaces.
44389 +NL2SP="tr \\015\\012 \\040\\040"
44390 +
44391 +# How to create reloadable object files.
44392 +reload_flag=" -r"
44393 +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
44394 +
44395 +# Method to check whether dependent libraries are shared objects.
44396 +deplibs_check_method="pass_all"
44397 +
44398 +# Command to use when deplibs_check_method == "file_magic".
44399 +file_magic_cmd="\$MAGIC_CMD"
44400 +
44401 +# The archiver.
44402 +AR="ar"
44403 +AR_FLAGS="cru"
44404 +
44405 +# A symbol stripping program.
44406 +STRIP="strip"
44407 +
44408 +# Commands used to install an old-style archive.
44409 +RANLIB="ranlib"
44410 +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
44411 +old_postuninstall_cmds=""
44412 +
44413 +# A C compiler.
44414 +LTCC="gcc"
44415 +
44416 +# LTCC compiler flags.
44417 +LTCFLAGS="-g -O2"
44418 +
44419 +# Take the output of nm and produce a listing of raw symbols and C names.
44420 +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
44421 +
44422 +# Transform the output of nm in a proper C declaration.
44423 +global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
44424 +
44425 +# Transform the output of nm in a C name address pair.
44426 +global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'"
44427 +
44428 +# Transform the output of nm in a C name address pair when lib prefix is needed.
44429 +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'"
44430 +
44431 +# The name of the directory that contains temporary libtool files.
44432 +objdir=.libs
44433 +
44434 +# Shell to use when invoking shell scripts.
44435 +SHELL="/bin/bash"
44436 +
44437 +# An echo program that does not interpret backslashes.
44438 +ECHO="echo"
44439 +
44440 +# Used to examine libraries when file_magic_cmd begins with "file".
44441 +MAGIC_CMD=file
44442 +
44443 +# Must we lock files when doing compilation?
44444 +need_locks="no"
44445 +
44446 +# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
44447 +DSYMUTIL=""
44448 +
44449 +# Tool to change global to local symbols on Mac OS X.
44450 +NMEDIT=""
44451 +
44452 +# Tool to manipulate fat objects and archives on Mac OS X.
44453 +LIPO=""
44454 +
44455 +# ldd/readelf like tool for Mach-O binaries on Mac OS X.
44456 +OTOOL=""
44457 +
44458 +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
44459 +OTOOL64=""
44460 +
44461 +# Old archive suffix (normally "a").
44462 +libext=a
44463 +
44464 +# Shared library suffix (normally ".so").
44465 +shrext_cmds=".so"
44466 +
44467 +# The commands to extract the exported symbol list from a shared archive.
44468 +extract_expsyms_cmds=""
44469 +
44470 +# Variables whose values should be saved in libtool wrapper scripts and
44471 +# restored at link time.
44472 +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
44473 +
44474 +# Do we need the "lib" prefix for modules?
44475 +need_lib_prefix=no
44476 +
44477 +# Do we need a version for libraries?
44478 +need_version=no
44479 +
44480 +# Library versioning type.
44481 +version_type=linux
44482 +
44483 +# Shared library runtime path variable.
44484 +runpath_var=LD_RUN_PATH
44485 +
44486 +# Shared library path variable.
44487 +shlibpath_var=LD_LIBRARY_PATH
44488 +
44489 +# Is shlibpath searched before the hard-coded library search path?
44490 +shlibpath_overrides_runpath=no
44491 +
44492 +# Format of library name prefix.
44493 +libname_spec="lib\$name"
44494 +
44495 +# List of archive names. First name is the real one, the rest are links.
44496 +# The last name is the one that the linker finds with -lNAME
44497 +library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
44498 +
44499 +# The coded name of the library, if different from the real name.
44500 +soname_spec="\${libname}\${release}\${shared_ext}\$major"
44501 +
44502 +# Command to use after installation of a shared archive.
44503 +postinstall_cmds=""
44504 +
44505 +# Command to use after uninstallation of a shared archive.
44506 +postuninstall_cmds=""
44507 +
44508 +# Commands used to finish a libtool library installation in a directory.
44509 +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
44510 +
44511 +# As "finish_cmds", except a single script fragment to be evaled but
44512 +# not shown.
44513 +finish_eval=""
44514 +
44515 +# Whether we should hardcode library paths into libraries.
44516 +hardcode_into_libs=yes
44517 +
44518 +# Compile-time system search path for libraries.
44519 +sys_lib_search_path_spec="/usr/lib/gcc/i486-linux-gnu/4.2.4 /usr/lib /lib"
44520 +
44521 +# Run-time system search path for libraries.
44522 +sys_lib_dlsearch_path_spec="/lib /usr/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/lib/alsa-lib /usr/local/lib "
44523 +
44524 +# Whether dlopen is supported.
44525 +dlopen_support=unknown
44526 +
44527 +# Whether dlopen of programs is supported.
44528 +dlopen_self=unknown
44529 +
44530 +# Whether dlopen of statically linked programs is supported.
44531 +dlopen_self_static=unknown
44532 +
44533 +# Commands to strip libraries.
44534 +old_striplib="strip --strip-debug"
44535 +striplib="strip --strip-unneeded"
44536 +
44537 +
44538 +# The linker used to build libraries.
44539 +LD="ld"
44540 +
44541 +# Commands used to build an old-style archive.
44542 +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
44543 +
44544 +# A language specific compiler.
44545 +CC="gcc"
44546 +
44547 +# Is the compiler the GNU compiler?
44548 +with_gcc=yes
44549 +
44550 +# Compiler flag to turn off builtin functions.
44551 +no_builtin_flag=" -fno-builtin"
44552 +
44553 +# How to pass a linker flag through the compiler.
44554 +wl="-Wl,"
44555 +
44556 +# Additional compiler flags for building library objects.
44557 +pic_flag=" -fPIC -DPIC"
44558 +
44559 +# Compiler flag to prevent dynamic linking.
44560 +link_static_flag="-static"
44561 +
44562 +# Does compiler simultaneously support -c and -o options?
44563 +compiler_c_o="yes"
44564 +
44565 +# Whether or not to add -lc for building shared libraries.
44566 +build_libtool_need_lc=yes
44567 +
44568 +# Whether or not to disallow shared libs when runtime libs are static.
44569 +allow_libtool_libs_with_static_runtimes=no
44570 +
44571 +# Compiler flag to allow reflexive dlopens.
44572 +export_dynamic_flag_spec="\${wl}--export-dynamic"
44573 +
44574 +# Compiler flag to generate shared objects directly from archives.
44575 +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
44576 +
44577 +# Whether the compiler copes with passing no objects directly.
44578 +compiler_needs_object="no"
44579 +
44580 +# Create an old-style archive from a shared archive.
44581 +old_archive_from_new_cmds=""
44582 +
44583 +# Create a temporary old-style archive to link instead of a shared archive.
44584 +old_archive_from_expsyms_cmds=""
44585 +
44586 +# Commands used to build a shared archive.
44587 +archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
44588 +archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
44589 + cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
44590 + echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
44591 + \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
44592 +
44593 +# Commands used to build a loadable module if different from building
44594 +# a shared archive.
44595 +module_cmds=""
44596 +module_expsym_cmds=""
44597 +
44598 +# Whether we are building with GNU ld or not.
44599 +with_gnu_ld="yes"
44600 +
44601 +# Flag that allows shared libraries with undefined symbols to be built.
44602 +allow_undefined_flag=""
44603 +
44604 +# Flag that enforces no undefined symbols.
44605 +no_undefined_flag=""
44606 +
44607 +# Flag to hardcode $libdir into a binary during linking.
44608 +# This must work even if $libdir does not exist
44609 +hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
44610 +
44611 +# If ld is used when linking, flag to hardcode $libdir into a binary
44612 +# during linking. This must work even if $libdir does not exist.
44613 +hardcode_libdir_flag_spec_ld=""
44614 +
44615 +# Whether we need a single "-rpath" flag with a separated argument.
44616 +hardcode_libdir_separator=""
44617 +
44618 +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
44619 +# DIR into the resulting binary.
44620 +hardcode_direct=no
44621 +
44622 +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
44623 +# DIR into the resulting binary and the resulting library dependency is
44624 +# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
44625 +# library is relocated.
44626 +hardcode_direct_absolute=no
44627 +
44628 +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
44629 +# into the resulting binary.
44630 +hardcode_minus_L=no
44631 +
44632 +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
44633 +# into the resulting binary.
44634 +hardcode_shlibpath_var=unsupported
44635 +
44636 +# Set to "yes" if building a shared library automatically hardcodes DIR
44637 +# into the library and all subsequent libraries and executables linked
44638 +# against it.
44639 +hardcode_automatic=no
44640 +
44641 +# Set to yes if linker adds runtime paths of dependent libraries
44642 +# to runtime path list.
44643 +inherit_rpath=no
44644 +
44645 +# Whether libtool must link a program against all its dependency libraries.
44646 +link_all_deplibs=unknown
44647 +
44648 +# Fix the shell variable $srcfile for the compiler.
44649 +fix_srcfile_path=""
44650 +
44651 +# Set to "yes" if exported symbols are required.
44652 +always_export_symbols=no
44653 +
44654 +# The commands to list exported symbols.
44655 +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
44656 +
44657 +# Symbols that should not be listed in the preloaded symbols.
44658 +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
44659 +
44660 +# Symbols that must always be exported.
44661 +include_expsyms=""
44662 +
44663 +# Commands necessary for linking programs (against libraries) with templates.
44664 +prelink_cmds=""
44665 +
44666 +# Specify filename containing input files.
44667 +file_list_spec=""
44668 +
44669 +# How to hardcode a shared library path into an executable.
44670 +hardcode_action=immediate
44671 +
44672 +# ### END LIBTOOL CONFIG
44673 +
44674 +# Generated from ltmain.m4sh; do not edit by hand
44675 +
44676 +# ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
44677 +# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
44678 +
44679 +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
44680 +# This is free software; see the source for copying conditions. There is NO
44681 +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
44682 +
44683 +# This program is free software; you can redistribute it and/or modify
44684 +# it under the terms of the GNU General Public License as published by
44685 +# the Free Software Foundation; either version 2 of the License, or
44686 +# (at your option) any later version.
44687 +#
44688 +# This program is distributed in the hope that it will be useful, but
44689 +# WITHOUT ANY WARRANTY; without even the implied warranty of
44690 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
44691 +# General Public License for more details.
44692 +#
44693 +# You should have received a copy of the GNU General Public License
44694 +# along with this program; if not, write to the Free Software
44695 +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
44696 +#
44697 +# As a special exception to the GNU General Public License, if you
44698 +# distribute this file as part of a program that contains a
44699 +# configuration script generated by Autoconf, you may include it under
44700 +# the same distribution terms that you use for the rest of that program.
44701 +
44702 +# Usage: $progname [OPTION]... [MODE-ARG]...
44703 +#
44704 +# Provide generalized library-building support services.
44705 +#
44706 +# --config show all configuration variables
44707 +# --debug enable verbose shell tracing
44708 +# -n, --dry-run display commands without modifying any files
44709 +# --features display basic configuration information and exit
44710 +# --mode=MODE use operation mode MODE
44711 +# --preserve-dup-deps don't remove duplicate dependency libraries
44712 +# --quiet, --silent don't print informational messages
44713 +# --tag=TAG use configuration variables from tag TAG
44714 +# -v, --verbose print informational messages (default)
44715 +# --version print version information
44716 +# -h, --help print short or long help message
44717 +#
44718 +# MODE must be one of the following:
44719 +#
44720 +# clean remove files from the build directory
44721 +# compile compile a source file into a libtool object
44722 +# execute automatically set library path, then run a program
44723 +# finish complete the installation of libtool libraries
44724 +# install install libraries or executables
44725 +# link create a library or an executable
44726 +# uninstall remove libraries from an installed directory
44727 +#
44728 +# MODE-ARGS vary depending on the MODE.
44729 +# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
44730 +#
44731 +# When reporting a bug, please describe a test case to reproduce it and
44732 +# include the following information:
44733 +#
44734 +# host-triplet: $host
44735 +# shell: $SHELL
44736 +# compiler: $LTCC
44737 +# compiler flags: $LTCFLAGS
44738 +# linker: $LD (gnu? $with_gnu_ld)
44739 +# $progname: (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
44740 +# automake: $automake_version
44741 +# autoconf: $autoconf_version
44742 +#
44743 +# Report bugs to <bug-libtool@gnu.org>.
44744 +
44745 +PROGRAM=ltmain.sh
44746 +PACKAGE=libtool
44747 +VERSION=2.1a
44748 +TIMESTAMP=" 1.2435 2007/03/18 18:44:42"
44749 +package_revision=1.2435
44750 +
44751 +# Be Bourne compatible
44752 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
44753 + emulate sh
44754 + NULLCMD=:
44755 + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
44756 + # is contrary to our usage. Disable this feature.
44757 + alias -g '${1+"$@"}'='"$@"'
44758 + setopt NO_GLOB_SUBST
44759 +else
44760 + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
44761 +fi
44762 +BIN_SH=xpg4; export BIN_SH # for Tru64
44763 +DUALCASE=1; export DUALCASE # for MKS sh
44764 +
44765 +# NLS nuisances: We save the old values to restore during execute mode.
44766 +# Only set LANG and LC_ALL to C if already set.
44767 +# These must not be set unconditionally because not all systems understand
44768 +# e.g. LANG=C (notably SCO).
44769 +for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
44770 +do
44771 + eval "if test \"\${$lt_var+set}\" = set; then
44772 + save_$lt_var=\$$lt_var
44773 + $lt_var=C
44774 + export $lt_var
44775 + fi"
44776 +done
44777 +
44778 +$lt_unset CDPATH
44779 +
44780 +
44781 +
44782 +
44783 +
44784 +: ${CP="cp -f"}
44785 +: ${ECHO="echo"}
44786 +: ${EGREP="/bin/grep -E"}
44787 +: ${FGREP="/bin/grep -F"}
44788 +: ${GREP="/bin/grep"}
44789 +: ${LN_S="ln -s"}
44790 +: ${MAKE="make"}
44791 +: ${MKDIR="mkdir"}
44792 +: ${MV="mv -f"}
44793 +: ${RM="rm -f"}
44794 +: ${SED="/bin/sed"}
44795 +: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
44796 +: ${Xsed="$SED -e 1s/^X//"}
44797 +
44798 +# Global variables:
44799 +EXIT_SUCCESS=0
44800 +EXIT_FAILURE=1
44801 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
44802 +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
44803 +
44804 +exit_status=$EXIT_SUCCESS
44805 +
44806 +# Make sure IFS has a sensible default
44807 +lt_nl='
44808 +'
44809 +IFS=" $lt_nl"
44810 +
44811 +dirname="s,/[^/]*$,,"
44812 +basename="s,^.*/,,"
44813 +
44814 +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
44815 +# is ksh but when the shell is invoked as "sh" and the current value of
44816 +# the _XPG environment variable is not equal to 1 (one), the special
44817 +# positional parameter $0, within a function call, is the name of the
44818 +# function.
44819 +progpath="$0"
44820 +
44821 +# The name of this program:
44822 +# In the unlikely event $progname began with a '-', it would play havoc with
44823 +# func_echo (imagine progname=-n), so we prepend ./ in that case:
44824 +progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,./-,'`
44825 +
44826 +# Make sure we have an absolute path for reexecution:
44827 +case $progpath in
44828 + [\\/]*|[A-Za-z]:\\*) ;;
44829 + *[\\/]*)
44830 + progdir=`$ECHO "X$progpath" | $Xsed -e "$dirname"`
44831 + progdir=`cd "$progdir" && pwd`
44832 + progpath="$progdir/$progname"
44833 + ;;
44834 + *)
44835 + save_IFS="$IFS"
44836 + IFS=:
44837 + for progdir in $PATH; do
44838 + IFS="$save_IFS"
44839 + test -x "$progdir/$progname" && break
44840 + done
44841 + IFS="$save_IFS"
44842 + test -n "$progdir" || progdir=`pwd`
44843 + progpath="$progdir/$progname"
44844 + ;;
44845 +esac
44846 +
44847 +# Sed substitution that helps us do robust quoting. It backslashifies
44848 +# metacharacters that are still active within double-quoted strings.
44849 +Xsed="${SED}"' -e 1s/^X//'
44850 +sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
44851 +
44852 +# Same as above, but do not quote variable references.
44853 +double_quote_subst='s/\(["`\\]\)/\\\1/g'
44854 +
44855 +# Re-`\' parameter expansions in output of double_quote_subst that were
44856 +# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
44857 +# in input to double_quote_subst, that '$' was protected from expansion.
44858 +# Since each input `\' is now two `\'s, look for any number of runs of
44859 +# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
44860 +bs='\\'
44861 +bs2='\\\\'
44862 +bs4='\\\\\\\\'
44863 +dollar='\$'
44864 +sed_double_backslash="\
44865 + s/$bs4/&\\
44866 +/g
44867 + s/^$bs2$dollar/$bs&/
44868 + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
44869 + s/\n//g"
44870 +
44871 +# Standard options:
44872 +opt_dry_run=false
44873 +opt_help=false
44874 +opt_quiet=false
44875 +opt_verbose=false
44876 +
44877 +# func_echo arg...
44878 +# Echo program name prefixed message, along with the current mode
44879 +# name if it has been set yet.
44880 +func_echo ()
44881 +{
44882 + $ECHO "$progname${mode+: }$mode: "${1+"$@"}
44883 +}
44884 +
44885 +# func_verbose arg...
44886 +# Echo program name prefixed message in verbose mode only.
44887 +func_verbose ()
44888 +{
44889 + $opt_verbose && func_echo ${1+"$@"}
44890 +
44891 + # A bug in bash halts the script if the last line of a function
44892 + # fails when set -e is in force, so we need another command to
44893 + # work around that:
44894 + :
44895 +}
44896 +
44897 +# func_error arg...
44898 +# Echo program name prefixed message to standard error.
44899 +func_error ()
44900 +{
44901 + $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
44902 +}
44903 +
44904 +# func_warning arg...
44905 +# Echo program name prefixed warning message to standard error.
44906 +func_warning ()
44907 +{
44908 + $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
44909 +}
44910 +
44911 +# func_fatal_error arg...
44912 +# Echo program name prefixed message to standard error, and exit.
44913 +func_fatal_error ()
44914 +{
44915 + func_error ${1+"$@"}
44916 + exit $EXIT_FAILURE
44917 +}
44918 +
44919 +# func_fatal_help arg...
44920 +# Echo program name prefixed message to standard error, followed by
44921 +# a help hint, and exit.
44922 +func_fatal_help ()
44923 +{
44924 + func_error ${1+"$@"}
44925 + func_fatal_error "$help"
44926 +}
44927 +help="Try \`$progname --help' for more information." ## default
44928 +
44929 +
44930 +# func_grep expression filename
44931 +# Check whether EXPRESSION matches any line of FILENAME, without output.
44932 +func_grep ()
44933 +{
44934 + $GREP "$1" "$2" >/dev/null 2>&1
44935 +}
44936 +
44937 +
44938 +# func_mkdir_p directory-path
44939 +# Make sure the entire path to DIRECTORY-PATH is available.
44940 +func_mkdir_p ()
44941 +{
44942 + my_directory_path="$1"
44943 + my_dir_list=
44944 +
44945 + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
44946 +
44947 + # Protect directory names starting with `-'
44948 + case $my_directory_path in
44949 + -*) my_directory_path="./$my_directory_path" ;;
44950 + esac
44951 +
44952 + # While some portion of DIR does not yet exist...
44953 + while test ! -d "$my_directory_path"; do
44954 + # ...make a list in topmost first order. Use a colon delimited
44955 + # list incase some portion of path contains whitespace.
44956 + my_dir_list="$my_directory_path:$my_dir_list"
44957 +
44958 + # If the last portion added has no slash in it, the list is done
44959 + case $my_directory_path in */*) ;; *) break ;; esac
44960 +
44961 + # ...otherwise throw away the child directory and loop
44962 + my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
44963 + done
44964 + my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
44965 +
44966 + save_mkdir_p_IFS="$IFS"; IFS=':'
44967 + for my_dir in $my_dir_list; do
44968 + IFS="$save_mkdir_p_IFS"
44969 + # mkdir can fail with a `File exist' error if two processes
44970 + # try to create one of the directories concurrently. Don't
44971 + # stop in that case!
44972 + $MKDIR "$my_dir" 2>/dev/null || :
44973 + done
44974 + IFS="$save_mkdir_p_IFS"
44975 +
44976 + # Bail out if we (or some other process) failed to create a directory.
44977 + test -d "$my_directory_path" || \
44978 + func_fatal_error "Failed to create \`$1'"
44979 + fi
44980 +}
44981 +
44982 +
44983 +# func_mktempdir [string]
44984 +# Make a temporary directory that won't clash with other running
44985 +# libtool processes, and avoids race conditions if possible. If
44986 +# given, STRING is the basename for that directory.
44987 +func_mktempdir ()
44988 +{
44989 + my_template="${TMPDIR-/tmp}/${1-$progname}"
44990 +
44991 + if test "$opt_dry_run" = ":"; then
44992 + # Return a directory name, but don't create it in dry-run mode
44993 + my_tmpdir="${my_template}-$$"
44994 + else
44995 +
44996 + # If mktemp works, use that first and foremost
44997 + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
44998 +
44999 + if test ! -d "$my_tmpdir"; then
45000 + # Failing that, at least try and use $RANDOM to avoid a race
45001 + my_tmpdir="${my_template}-${RANDOM-0}$$"
45002 +
45003 + save_mktempdir_umask=`umask`
45004 + umask 0077
45005 + $MKDIR "$my_tmpdir"
45006 + umask $save_mktempdir_umask
45007 + fi
45008 +
45009 + # If we're not in dry-run mode, bomb out on failure
45010 + test -d "$my_tmpdir" || \
45011 + func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
45012 + fi
45013 +
45014 + $ECHO "X$my_tmpdir" | $Xsed
45015 +}
45016 +
45017 +
45018 +# func_quote_for_eval arg
45019 +# Aesthetically quote ARG to be evaled later.
45020 +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
45021 +# is double-quoted, suitable for a subsequent eval, whereas
45022 +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
45023 +# which are still active within double quotes backslashified.
45024 +func_quote_for_eval ()
45025 +{
45026 + case $1 in
45027 + *[\\\`\"\$]*)
45028 + func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
45029 + *)
45030 + func_quote_for_eval_unquoted_result="$1" ;;
45031 + esac
45032 +
45033 + case $func_quote_for_eval_unquoted_result in
45034 + # Double-quote args containing shell metacharacters to delay
45035 + # word splitting, command substitution and and variable
45036 + # expansion for a subsequent eval.
45037 + # Many Bourne shells cannot handle close brackets correctly
45038 + # in scan sets, so we specify it separately.
45039 + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
45040 + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
45041 + ;;
45042 + *)
45043 + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
45044 + esac
45045 +}
45046 +
45047 +
45048 +# func_quote_for_expand arg
45049 +# Aesthetically quote ARG to be evaled later; same as above,
45050 +# but do not quote variable references.
45051 +func_quote_for_expand ()
45052 +{
45053 + case $1 in
45054 + *[\\\`\"]*)
45055 + my_arg=`$ECHO "X$1" | $Xsed \
45056 + -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
45057 + *)
45058 + my_arg="$1" ;;
45059 + esac
45060 +
45061 + case $my_arg in
45062 + # Double-quote args containing shell metacharacters to delay
45063 + # word splitting and command substitution for a subsequent eval.
45064 + # Many Bourne shells cannot handle close brackets correctly
45065 + # in scan sets, so we specify it separately.
45066 + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
45067 + my_arg="\"$my_arg\""
45068 + ;;
45069 + esac
45070 +
45071 + func_quote_for_expand_result="$my_arg"
45072 +}
45073 +
45074 +
45075 +# func_show_eval cmd [fail_exp]
45076 +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
45077 +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
45078 +# is given, then evaluate it.
45079 +func_show_eval ()
45080 +{
45081 + my_cmd="$1"
45082 + my_fail_exp="${2-:}"
45083 +
45084 + ${opt_silent-false} || {
45085 + func_quote_for_expand "$my_cmd"
45086 + eval "func_echo $func_quote_for_expand_result"
45087 + }
45088 +
45089 + if ${opt_dry_run-false}; then :; else
45090 + eval "$my_cmd"
45091 + my_status=$?
45092 + if test "$my_status" -eq 0; then :; else
45093 + eval "(exit $my_status); $my_fail_exp"
45094 + fi
45095 + fi
45096 +}
45097 +
45098 +
45099 +
45100 +
45101 +
45102 +# func_version
45103 +# Echo version message to standard output and exit.
45104 +func_version ()
45105 +{
45106 + $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
45107 + s/^# //
45108 + s/^# *$//
45109 + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
45110 + p
45111 + }' < "$progpath"
45112 + exit $?
45113 +}
45114 +
45115 +# func_usage
45116 +# Echo short help message to standard output and exit.
45117 +func_usage ()
45118 +{
45119 + $SED -n '/^# Usage:/,/# -h/ {
45120 + s/^# //
45121 + s/^# *$//
45122 + s/\$progname/'$progname'/
45123 + p
45124 + }' < "$progpath"
45125 + $ECHO
45126 + $ECHO "run \`$progname --help | more' for full usage"
45127 + exit $?
45128 +}
45129 +
45130 +# func_help
45131 +# Echo long help message to standard output and exit.
45132 +func_help ()
45133 +{
45134 + $SED -n '/^# Usage:/,/# Report bugs to/ {
45135 + s/^# //
45136 + s/^# *$//
45137 + s*\$progname*'$progname'*
45138 + s*\$host*'"$host"'*
45139 + s*\$SHELL*'"$SHELL"'*
45140 + s*\$LTCC*'"$LTCC"'*
45141 + s*\$LTCFLAGS*'"$LTCFLAGS"'*
45142 + s*\$LD*'"$LD"'*
45143 + s/\$with_gnu_ld/'"$with_gnu_ld"'/
45144 + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
45145 + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
45146 + p
45147 + }' < "$progpath"
45148 + exit $?
45149 +}
45150 +
45151 +# func_missing_arg argname
45152 +# Echo program name prefixed message to standard error and set global
45153 +# exit_cmd.
45154 +func_missing_arg ()
45155 +{
45156 + func_error "missing argument for $1"
45157 + exit_cmd=exit
45158 +}
45159 +
45160 +exit_cmd=:
45161 +
45162 +
45163 +
45164 +
45165 +
45166 +# Check that we have a working $ECHO.
45167 +if test "X$1" = X--no-reexec; then
45168 + # Discard the --no-reexec flag, and continue.
45169 + shift
45170 +elif test "X$1" = X--fallback-echo; then
45171 + # Avoid inline document here, it may be left over
45172 + :
45173 +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
45174 + # Yippee, $ECHO works!
45175 + :
45176 +else
45177 + # Restart under the correct shell, and then maybe $ECHO will work.
45178 + exec $SHELL "$progpath" --no-reexec ${1+"$@"}
45179 +fi
45180 +
45181 +if test "X$1" = X--fallback-echo; then
45182 + # used as fallback echo
45183 + shift
45184 + cat <<EOF
45185 +$*
45186 +EOF
45187 + exit $EXIT_SUCCESS
45188 +fi
45189 +
45190 +magic="%%%MAGIC variable%%%"
45191 +
45192 +
45193 +# Global variables.
45194 +# $mode is unset
45195 +nonopt=
45196 +execute_dlfiles=
45197 +preserve_args=
45198 +lo2o="s/\\.lo\$/.${objext}/"
45199 +o2lo="s/\\.${objext}\$/.lo/"
45200 +extracted_archives=
45201 +extracted_serial=0
45202 +
45203 +opt_dry_run=false
45204 +opt_duplicate_deps=false
45205 +opt_silent=false
45206 +opt_debug=:
45207 +
45208 +# If this variable is set in any of the actions, the command in it
45209 +# will be execed at the end. This prevents here-documents from being
45210 +# left over by shells.
45211 +exec_cmd=
45212 +
45213 +# func_fatal_configuration arg...
45214 +# Echo program name prefixed message to standard error, followed by
45215 +# a configuration failure hint, and exit.
45216 +func_fatal_configuration ()
45217 +{
45218 + func_error ${1+"$@"}
45219 + func_error "See the $PACKAGE documentation for more information."
45220 + func_fatal_error "Fatal configuration error."
45221 +}
45222 +
45223 +
45224 +# func_config
45225 +# Display the configuration for all the tags in this script.
45226 +func_config ()
45227 +{
45228 + re_begincf='^# ### BEGIN LIBTOOL'
45229 + re_endcf='^# ### END LIBTOOL'
45230 +
45231 + # Default configuration.
45232 + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
45233 +
45234 + # Now print the configurations for the tags.
45235 + for tagname in $taglist; do
45236 + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
45237 + done
45238 +
45239 + exit $?
45240 +}
45241 +
45242 +# func_features
45243 +# Display the features supported by this script.
45244 +func_features ()
45245 +{
45246 + $ECHO "host: $host"
45247 + if test "$build_libtool_libs" = yes; then
45248 + $ECHO "enable shared libraries"
45249 + else
45250 + $ECHO "disable shared libraries"
45251 + fi
45252 + if test "$build_old_libs" = yes; then
45253 + $ECHO "enable static libraries"
45254 + else
45255 + $ECHO "disable static libraries"
45256 + fi
45257 +
45258 + exit $?
45259 +}
45260 +
45261 +# func_enable_tag tagname
45262 +# Verify that TAGNAME is valid, and either flag an error and exit, or
45263 +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
45264 +# variable here.
45265 +func_enable_tag ()
45266 +{
45267 + # Global variable:
45268 + tagname="$1"
45269 +
45270 + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
45271 + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
45272 + sed_extractcf="/$re_begincf/,/$re_endcf/p"
45273 +
45274 + # Validate tagname.
45275 + case $tagname in
45276 + *[!-_A-Za-z0-9,/]*)
45277 + func_fatal_error "invalid tag name: $tagname"
45278 + ;;
45279 + esac
45280 +
45281 + # Don't test for the "default" C tag, as we know it's
45282 + # there but not specially marked.
45283 + case $tagname in
45284 + CC) ;;
45285 + *)
45286 + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
45287 + taglist="$taglist $tagname"
45288 +
45289 + # Evaluate the configuration. Be careful to quote the path
45290 + # and the sed script, to avoid splitting on whitespace, but
45291 + # also don't use non-portable quotes within backquotes within
45292 + # quotes we have to do it in 2 steps:
45293 + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
45294 + eval "$extractedcf"
45295 + else
45296 + func_error "ignoring unknown tag $tagname"
45297 + fi
45298 + ;;
45299 + esac
45300 +}
45301 +
45302 +
45303 +func_mode_help ()
45304 +{
45305 + # We need to display help for each of the modes.
45306 + case $mode in
45307 + "")
45308 + # Generic help is extracted from the usage comments
45309 + # at the start of this file.
45310 + func_help
45311 + ;;
45312 +
45313 + clean)
45314 + $ECHO \
45315 +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
45316 +
45317 +Remove files from the build directory.
45318 +
45319 +RM is the name of the program to use to delete files associated with each FILE
45320 +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
45321 +to RM.
45322 +
45323 +If FILE is a libtool library, object or program, all the files associated
45324 +with it are deleted. Otherwise, only FILE itself is deleted using RM."
45325 + ;;
45326 +
45327 + compile)
45328 + $ECHO \
45329 +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
45330 +
45331 +Compile a source file into a libtool library object.
45332 +
45333 +This mode accepts the following additional options:
45334 +
45335 + -o OUTPUT-FILE set the output file name to OUTPUT-FILE
45336 + -no-suppress do not suppress compiler output for multiple passes
45337 + -prefer-pic try to building PIC objects only
45338 + -prefer-non-pic try to building non-PIC objects only
45339 + -shared do not build a \`.o' file suitable for static linking
45340 + -static only build a \`.o' file suitable for static linking
45341 +
45342 +COMPILE-COMMAND is a command to be used in creating a \`standard' object file
45343 +from the given SOURCEFILE.
45344 +
45345 +The output file name is determined by removing the directory component from
45346 +SOURCEFILE, then substituting the C source code suffix \`.c' with the
45347 +library object suffix, \`.lo'."
45348 + ;;
45349 +
45350 + execute)
45351 + $ECHO \
45352 +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
45353 +
45354 +Automatically set library path, then run a program.
45355 +
45356 +This mode accepts the following additional options:
45357 +
45358 + -dlopen FILE add the directory containing FILE to the library path
45359 +
45360 +This mode sets the library path environment variable according to \`-dlopen'
45361 +flags.
45362 +
45363 +If any of the ARGS are libtool executable wrappers, then they are translated
45364 +into their corresponding uninstalled binary, and any of their required library
45365 +directories are added to the library path.
45366 +
45367 +Then, COMMAND is executed, with ARGS as arguments."
45368 + ;;
45369 +
45370 + finish)
45371 + $ECHO \
45372 +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
45373 +
45374 +Complete the installation of libtool libraries.
45375 +
45376 +Each LIBDIR is a directory that contains libtool libraries.
45377 +
45378 +The commands that this mode executes may require superuser privileges. Use
45379 +the \`--dry-run' option if you just want to see what would be executed."
45380 + ;;
45381 +
45382 + install)
45383 + $ECHO \
45384 +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
45385 +
45386 +Install executables or libraries.
45387 +
45388 +INSTALL-COMMAND is the installation command. The first component should be
45389 +either the \`install' or \`cp' program.
45390 +
45391 +The following components of INSTALL-COMMAND are treated specially:
45392 +
45393 + -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
45394 +
45395 +The rest of the components are interpreted as arguments to that command (only
45396 +BSD-compatible install options are recognized)."
45397 + ;;
45398 +
45399 + link)
45400 + $ECHO \
45401 +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
45402 +
45403 +Link object files or libraries together to form another library, or to
45404 +create an executable program.
45405 +
45406 +LINK-COMMAND is a command using the C compiler that you would use to create
45407 +a program from several object files.
45408 +
45409 +The following components of LINK-COMMAND are treated specially:
45410 +
45411 + -all-static do not do any dynamic linking at all
45412 + -avoid-version do not add a version suffix if possible
45413 + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
45414 + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
45415 + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
45416 + -export-symbols SYMFILE
45417 + try to export only the symbols listed in SYMFILE
45418 + -export-symbols-regex REGEX
45419 + try to export only the symbols matching REGEX
45420 + -LLIBDIR search LIBDIR for required installed libraries
45421 + -lNAME OUTPUT-FILE requires the installed library libNAME
45422 + -module build a library that can dlopened
45423 + -no-fast-install disable the fast-install mode
45424 + -no-install link a not-installable executable
45425 + -no-undefined declare that a library does not refer to external symbols
45426 + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
45427 + -objectlist FILE Use a list of object files found in FILE to specify objects
45428 + -precious-files-regex REGEX
45429 + don't remove output files matching REGEX
45430 + -release RELEASE specify package release information
45431 + -rpath LIBDIR the created library will eventually be installed in LIBDIR
45432 + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
45433 + -shared only do dynamic linking of libtool libraries
45434 + -shrext SUFFIX override the standard shared library file extension
45435 + -static do not do any dynamic linking of uninstalled libtool libraries
45436 + -static-libtool-libs
45437 + do not do any dynamic linking of libtool libraries
45438 + -version-info CURRENT[:REVISION[:AGE]]
45439 + specify library version info [each variable defaults to 0]
45440 + -weak LIBNAME declare that the target provides the LIBNAME interface
45441 +
45442 +All other options (arguments beginning with \`-') are ignored.
45443 +
45444 +Every other argument is treated as a filename. Files ending in \`.la' are
45445 +treated as uninstalled libtool libraries, other files are standard or library
45446 +object files.
45447 +
45448 +If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
45449 +only library objects (\`.lo' files) may be specified, and \`-rpath' is
45450 +required, except when creating a convenience library.
45451 +
45452 +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
45453 +using \`ar' and \`ranlib', or on Windows using \`lib'.
45454 +
45455 +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
45456 +is created, otherwise an executable program is created."
45457 + ;;
45458 +
45459 + uninstall)
45460 + $ECHO \
45461 +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
45462 +
45463 +Remove libraries from an installation directory.
45464 +
45465 +RM is the name of the program to use to delete files associated with each FILE
45466 +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
45467 +to RM.
45468 +
45469 +If FILE is a libtool library, all the files associated with it are deleted.
45470 +Otherwise, only FILE itself is deleted using RM."
45471 + ;;
45472 +
45473 + *)
45474 + func_fatal_help "invalid operation mode \`$mode'"
45475 + ;;
45476 + esac
45477 +
45478 + $ECHO
45479 + $ECHO "Try \`$progname --help' for more information about other modes."
45480 +
45481 + exit $?
45482 +}
45483 +
45484 +# Generated shell functions inserted here.
45485 +
45486 +# func_dirname file append nondir_replacement
45487 +# Compute the dirname of FILE. If nonempty, add APPEND to the result,
45488 +# otherwise set result to NONDIR_REPLACEMENT.
45489 +func_dirname ()
45490 +{
45491 + case ${1} in
45492 + */*) func_dirname_result="${1%/*}${2}" ;;
45493 + * ) func_dirname_result="${3}" ;;
45494 + esac
45495 +}
45496 +
45497 +# func_basename file
45498 +func_basename ()
45499 +{
45500 + func_basename_result="${1##*/}"
45501 +}
45502 +
45503 +# func_dirname_and_basename file append nondir_replacement
45504 +# perform func_basename and func_dirname in a single function
45505 +# call:
45506 +# dirname: Compute the dirname of FILE. If nonempty,
45507 +# add APPEND to the result, otherwise set result
45508 +# to NONDIR_REPLACEMENT.
45509 +# value returned in "$func_dirname_result"
45510 +# basename: Compute filename of FILE.
45511 +# value retuned in "$func_basename_result"
45512 +# Implementation must be kept synchronized with func_dirname
45513 +# and func_basename. For efficiency, we do not delegate to
45514 +# those functions but instead duplicate the functionality here.
45515 +func_dirname_and_basename ()
45516 +{
45517 + case ${1} in
45518 + */*) func_dirname_result="${1%/*}${2}" ;;
45519 + * ) func_dirname_result="${3}" ;;
45520 + esac
45521 + func_basename_result="${1##*/}"
45522 +}
45523 +
45524 +# func_stripname prefix suffix name
45525 +# strip PREFIX and SUFFIX off of NAME.
45526 +# PREFIX and SUFFIX must not contain globbing or regex special
45527 +# characters, hashes, percent signs, but SUFFIX may contain a leading
45528 +# dot (in which case that matches only a dot).
45529 +func_stripname ()
45530 +{
45531 + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
45532 + # positional parameters, so assign one to ordinary parameter first.
45533 + func_stripname_result=${3}
45534 + func_stripname_result=${func_stripname_result#"${1}"}
45535 + func_stripname_result=${func_stripname_result%"${2}"}
45536 +}
45537 +
45538 +# func_opt_split
45539 +func_opt_split ()
45540 +{
45541 + func_opt_split_opt=${1%%=*}
45542 + func_opt_split_arg=${1#*=}
45543 +}
45544 +
45545 +# func_lo2o object
45546 +func_lo2o ()
45547 +{
45548 + case ${1} in
45549 + *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
45550 + *) func_lo2o_result=${1} ;;
45551 + esac
45552 +}
45553 +
45554 +# func_xform libobj-or-source
45555 +func_xform ()
45556 +{
45557 + func_xform_result=${1%.*}.lo
45558 +}
45559 +
45560 +# func_arith arithmetic-term...
45561 +func_arith ()
45562 +{
45563 + func_arith_result=$(( $* ))
45564 +}
45565 +
45566 +# func_len string
45567 +# STRING may not start with a hyphen.
45568 +func_len ()
45569 +{
45570 + func_len_result=${#1}
45571 +}
45572 +
45573 +
45574 +# func_append var value
45575 +# Append VALUE to the end of shell variable VAR.
45576 +func_append ()
45577 +{
45578 + eval "$1+=\$2"
45579 +}
45580 +# Generated shell functions inserted here.
45581 +
45582 +
45583 +# Parse options once, thoroughly. This comes as soon as possible in
45584 +# the script to make things like `libtool --version' happen quickly.
45585 +{
45586 +
45587 + # Shorthand for --mode=foo, only valid as the first argument
45588 + case $1 in
45589 + clean|clea|cle|cl)
45590 + shift; set dummy --mode clean ${1+"$@"}; shift
45591 + ;;
45592 + compile|compil|compi|comp|com|co|c)
45593 + shift; set dummy --mode compile ${1+"$@"}; shift
45594 + ;;
45595 + execute|execut|execu|exec|exe|ex|e)
45596 + shift; set dummy --mode execute ${1+"$@"}; shift
45597 + ;;
45598 + finish|finis|fini|fin|fi|f)
45599 + shift; set dummy --mode finish ${1+"$@"}; shift
45600 + ;;
45601 + install|instal|insta|inst|ins|in|i)
45602 + shift; set dummy --mode install ${1+"$@"}; shift
45603 + ;;
45604 + link|lin|li|l)
45605 + shift; set dummy --mode link ${1+"$@"}; shift
45606 + ;;
45607 + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
45608 + shift; set dummy --mode uninstall ${1+"$@"}; shift
45609 + ;;
45610 + esac
45611 +
45612 + # Parse non-mode specific arguments:
45613 + while test "$#" -gt 0; do
45614 + opt="$1"
45615 + shift
45616 +
45617 + case $opt in
45618 + --config) func_config ;;
45619 +
45620 + --debug) preserve_args="$preserve_args $opt"
45621 + func_echo "enabling shell trace mode"
45622 + opt_debug='set -x'
45623 + $opt_debug
45624 + ;;
45625 +
45626 + -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
45627 + execute_dlfiles="$execute_dlfiles $1"
45628 + shift
45629 + ;;
45630 +
45631 + --dry-run | -n) opt_dry_run=: ;;
45632 + --features) func_features ;;
45633 + --finish) mode="finish" ;;
45634 +
45635 + --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
45636 + case $1 in
45637 + # Valid mode arguments:
45638 + clean) ;;
45639 + compile) ;;
45640 + execute) ;;
45641 + finish) ;;
45642 + install) ;;
45643 + link) ;;
45644 + relink) ;;
45645 + uninstall) ;;
45646 +
45647 + # Catch anything else as an error
45648 + *) func_error "invalid argument for $opt"
45649 + exit_cmd=exit
45650 + break
45651 + ;;
45652 + esac
45653 +
45654 + mode="$1"
45655 + shift
45656 + ;;
45657 +
45658 + --preserve-dup-deps)
45659 + opt_duplicate_deps=: ;;
45660 +
45661 + --quiet|--silent) preserve_args="$preserve_args $opt"
45662 + opt_silent=:
45663 + ;;
45664 +
45665 + --verbose| -v) preserve_args="$preserve_args $opt"
45666 + opt_silent=false
45667 + ;;
45668 +
45669 + --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
45670 + preserve_args="$preserve_args $opt $1"
45671 + func_enable_tag "$1" # tagname is set here
45672 + shift
45673 + ;;
45674 +
45675 + # Separate optargs to long options:
45676 + -dlopen=*|--mode=*|--tag=*)
45677 + func_opt_split "$opt"
45678 + set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
45679 + shift
45680 + ;;
45681 +
45682 + -\?|-h) func_usage ;;
45683 + --help) opt_help=: ;;
45684 + --version) func_version ;;
45685 +
45686 + -*) func_fatal_help "unrecognized option \`$opt'" ;;
45687 +
45688 + *) nonopt="$opt"
45689 + break
45690 + ;;
45691 + esac
45692 + done
45693 +
45694 + # Now that we've collected a possible --mode arg, show help if necessary
45695 + $opt_help && func_mode_help
45696 +
45697 + case $host in
45698 + *cygwin* | *mingw* | *pw32*)
45699 + # don't eliminate duplications in $postdeps and $predeps
45700 + opt_duplicate_compiler_generated_deps=:
45701 + ;;
45702 + *)
45703 + opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
45704 + ;;
45705 + esac
45706 +
45707 + # Having warned about all mis-specified options, bail out if
45708 + # anything was wrong.
45709 + $exit_cmd $EXIT_FAILURE
45710 +}
45711 +
45712 +# func_check_version_match
45713 +# Ensure that we are using m4 macros, and libtool script from the same
45714 +# release of libtool.
45715 +func_check_version_match ()
45716 +{
45717 + if test "$package_revision" != "$macro_revision"; then
45718 + if test "$VERSION" != "$macro_version"; then
45719 + if test -z "$macro_version"; then
45720 + cat >&2 <<_LT_EOF
45721 +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
45722 +$progname: definition of this LT_INIT comes from an older release.
45723 +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
45724 +$progname: and run autoconf again.
45725 +_LT_EOF
45726 + else
45727 + cat >&2 <<_LT_EOF
45728 +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
45729 +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
45730 +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
45731 +$progname: and run autoconf again.
45732 +_LT_EOF
45733 + fi
45734 + else
45735 + cat >&2 <<_LT_EOF
45736 +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
45737 +$progname: but the definition of this LT_INIT comes from revision $macro_revision.
45738 +$progname: You should recreate aclocal.m4 with macros from revision $package_revision
45739 +$progname: of $PACKAGE $VERSION and run autoconf again.
45740 +_LT_EOF
45741 + fi
45742 +
45743 + exit $EXIT_MISMATCH
45744 + fi
45745 +}
45746 +
45747 +
45748 +## ----------- ##
45749 +## Main. ##
45750 +## ----------- ##
45751 +
45752 +{
45753 + # Sanity checks first:
45754 + func_check_version_match
45755 +
45756 + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
45757 + func_fatal_configuration "not configured to build any kind of library"
45758 + fi
45759 +
45760 + test -z "$mode" && func_fatal_error "error: you must specify a MODE."
45761 +
45762 +
45763 + # Darwin sucks
45764 + eval std_shrext=\"$shrext_cmds\"
45765 +
45766 +
45767 + # Only execute mode is allowed to have -dlopen flags.
45768 + if test -n "$execute_dlfiles" && test "$mode" != execute; then
45769 + func_error "unrecognized option \`-dlopen'"
45770 + $ECHO "$help" 1>&2
45771 + exit $EXIT_FAILURE
45772 + fi
45773 +
45774 + # Change the help message to a mode-specific one.
45775 + generic_help="$help"
45776 + help="Try \`$progname --help --mode=$mode' for more information."
45777 +}
45778 +
45779 +
45780 +# func_lalib_p file
45781 +# True iff FILE is a libtool `.la' library or `.lo' object file.
45782 +# This function is only a basic sanity check; it will hardly flush out
45783 +# determined imposters.
45784 +func_lalib_p ()
45785 +{
45786 + $SED -e 4q "$1" 2>/dev/null \
45787 + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
45788 +}
45789 +
45790 +# func_lalib_unsafe_p file
45791 +# True iff FILE is a libtool `.la' library or `.lo' object file.
45792 +# This function implements the same check as func_lalib_p without
45793 +# resorting to external programs. To this end, it redirects stdin and
45794 +# closes it afterwards, without saving the original file descriptor.
45795 +# As a safety measure, use it only where a negative result would be
45796 +# fatal anyway. Works if `file' does not exist.
45797 +func_lalib_unsafe_p ()
45798 +{
45799 + lalib_p=no
45800 + if test -r "$1" && exec 5<&1 <"$1"; then
45801 + for lalib_p_l in 1 2 3 4
45802 + do
45803 + read lalib_p_line
45804 + case "$lalib_p_line" in
45805 + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
45806 + esac
45807 + done
45808 + exec 1<&5 5<&-
45809 + fi
45810 + test "$lalib_p" = yes
45811 +}
45812 +
45813 +# func_ltwrapper_p file
45814 +# True iff FILE is a libtool wrapper script.
45815 +# This function is only a basic sanity check; it will hardly flush out
45816 +# determined imposters.
45817 +func_ltwrapper_p ()
45818 +{
45819 + func_lalib_p "$1"
45820 +}
45821 +
45822 +
45823 +# func_execute_cmds commands fail_cmd
45824 +# Execute tilde-delimited COMMANDS.
45825 +# If FAIL_CMD is given, eval that upon failure.
45826 +# FAIL_CMD may read-access the current command in variable CMD!
45827 +func_execute_cmds ()
45828 +{
45829 + $opt_debug
45830 + save_ifs=$IFS; IFS='~'
45831 + for cmd in $1; do
45832 + IFS=$save_ifs
45833 + eval cmd=\"$cmd\"
45834 + func_show_eval "$cmd" "${2-:}"
45835 + done
45836 + IFS=$save_ifs
45837 +}
45838 +
45839 +
45840 +# func_source file
45841 +# Source FILE, adding directory component if necessary.
45842 +# Note that it is not necessary on cygwin/mingw to append a dot to
45843 +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
45844 +# behavior happens only for exec(3), not for open(2)! Also, sourcing
45845 +# `FILE.' does not work on cygwin managed mounts.
45846 +func_source ()
45847 +{
45848 + $opt_debug
45849 + case $1 in
45850 + */* | *\\*) . "$1" ;;
45851 + *) . "./$1" ;;
45852 + esac
45853 +}
45854 +
45855 +
45856 +# func_win32_libid arg
45857 +# return the library type of file 'arg'
45858 +#
45859 +# Need a lot of goo to handle *both* DLLs and import libs
45860 +# Has to be a shell function in order to 'eat' the argument
45861 +# that is supplied when $file_magic_command is called.
45862 +func_win32_libid ()
45863 +{
45864 + $opt_debug
45865 + win32_libid_type="unknown"
45866 + win32_fileres=`file -L $1 2>/dev/null`
45867 + case $win32_fileres in
45868 + *ar\ archive\ import\ library*) # definitely import
45869 + win32_libid_type="x86 archive import"
45870 + ;;
45871 + *ar\ archive*) # could be an import, or static
45872 + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
45873 + $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
45874 + win32_nmres=`eval $NM -f posix -A $1 |
45875 + $SED -n -e '
45876 + 1,100{
45877 + / I /{
45878 + s,.*,import,
45879 + p
45880 + q
45881 + }
45882 + }'`
45883 + case $win32_nmres in
45884 + import*) win32_libid_type="x86 archive import";;
45885 + *) win32_libid_type="x86 archive static";;
45886 + esac
45887 + fi
45888 + ;;
45889 + *DLL*)
45890 + win32_libid_type="x86 DLL"
45891 + ;;
45892 + *executable*) # but shell scripts are "executable" too...
45893 + case $win32_fileres in
45894 + *MS\ Windows\ PE\ Intel*)
45895 + win32_libid_type="x86 DLL"
45896 + ;;
45897 + esac
45898 + ;;
45899 + esac
45900 + $ECHO "$win32_libid_type"
45901 +}
45902 +
45903 +
45904 +
45905 +# func_infer_tag arg
45906 +# Infer tagged configuration to use if any are available and
45907 +# if one wasn't chosen via the "--tag" command line option.
45908 +# Only attempt this if the compiler in the base compile
45909 +# command doesn't match the default compiler.
45910 +# arg is usually of the form 'gcc ...'
45911 +func_infer_tag ()
45912 +{
45913 + $opt_debug
45914 + if test -n "$available_tags" && test -z "$tagname"; then
45915 + CC_quoted=
45916 + for arg in $CC; do
45917 + func_quote_for_eval "$arg"
45918 + CC_quoted="$CC_quoted $func_quote_for_eval_result"
45919 + done
45920 + case $@ in
45921 + # Blanks in the command may have been stripped by the calling shell,
45922 + # but not from the CC environment variable when configure was run.
45923 + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
45924 + # Blanks at the start of $base_compile will cause this to fail
45925 + # if we don't check for them as well.
45926 + *)
45927 + for z in $available_tags; do
45928 + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
45929 + # Evaluate the configuration.
45930 + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
45931 + CC_quoted=
45932 + for arg in $CC; do
45933 + # Double-quote args containing other shell metacharacters.
45934 + func_quote_for_eval "$arg"
45935 + CC_quoted="$CC_quoted $func_quote_for_eval_result"
45936 + done
45937 + case "$@ " in
45938 + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
45939 + # The compiler in the base compile command matches
45940 + # the one in the tagged configuration.
45941 + # Assume this is the tagged configuration we want.
45942 + tagname=$z
45943 + break
45944 + ;;
45945 + esac
45946 + fi
45947 + done
45948 + # If $tagname still isn't set, then no tagged configuration
45949 + # was found and let the user know that the "--tag" command
45950 + # line option must be used.
45951 + if test -z "$tagname"; then
45952 + func_echo "unable to infer tagged configuration"
45953 + func_fatal_error "specify a tag with \`--tag'"
45954 +# else
45955 +# func_verbose "using $tagname tagged configuration"
45956 + fi
45957 + ;;
45958 + esac
45959 + fi
45960 +}
45961 +
45962 +
45963 +
45964 +# func_generate_dlsyms outputname originator pic_p
45965 +# Extract symbols from dlprefiles and create ${outputname}S.o with
45966 +# a dlpreopen symbol table.
45967 +func_generate_dlsyms ()
45968 +{
45969 + $opt_debug
45970 + my_outputname="$1"
45971 + my_originator="$2"
45972 + my_pic_p="${3-no}"
45973 + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
45974 + my_dlsyms=
45975 +
45976 + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
45977 + if test -n "$NM" && test -n "$global_symbol_pipe"; then
45978 + my_dlsyms="${my_outputname}S.c"
45979 + else
45980 + func_error "not configured to extract global symbols from dlpreopened files"
45981 + fi
45982 + fi
45983 +
45984 + if test -n "$my_dlsyms"; then
45985 + case $my_dlsyms in
45986 + "") ;;
45987 + *.c)
45988 + # Discover the nlist of each of the dlfiles.
45989 + nlist="$output_objdir/${my_outputname}.nm"
45990 +
45991 + func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
45992 +
45993 + # Parse the name list into a source file.
45994 + func_echo "creating $output_objdir/$my_dlsyms"
45995 +
45996 + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
45997 +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
45998 +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
45999 +
46000 +#ifdef __cplusplus
46001 +extern \"C\" {
46002 +#endif
46003 +
46004 +/* External symbol declarations for the compiler. */\
46005 +"
46006 +
46007 + if test "$dlself" = yes; then
46008 + func_echo "generating symbol list for \`$output'"
46009 +
46010 + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
46011 +
46012 + # Add our own program objects to the symbol list.
46013 + progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
46014 + for progfile in $progfiles; do
46015 + func_echo "extracting global C symbols from \`$progfile'"
46016 + $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
46017 + done
46018 +
46019 + if test -n "$exclude_expsyms"; then
46020 + $opt_dry_run || {
46021 + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
46022 + eval '$MV "$nlist"T "$nlist"'
46023 + }
46024 + fi
46025 +
46026 + if test -n "$export_symbols_regex"; then
46027 + $opt_dry_run || {
46028 + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
46029 + eval '$MV "$nlist"T "$nlist"'
46030 + }
46031 + fi
46032 +
46033 + # Prepare the list of exported symbols
46034 + if test -z "$export_symbols"; then
46035 + export_symbols="$output_objdir/$outputname.exp"
46036 + $opt_dry_run || {
46037 + $RM $export_symbols
46038 + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
46039 + case $host in
46040 + *cygwin* | *mingw* )
46041 + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
46042 + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
46043 + ;;
46044 + esac
46045 + }
46046 + else
46047 + $opt_dry_run || {
46048 + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
46049 + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
46050 + eval '$MV "$nlist"T "$nlist"'
46051 + case $host in
46052 + *cygwin | *mingw* )
46053 + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
46054 + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
46055 + ;;
46056 + esac
46057 + }
46058 + fi
46059 + fi
46060 +
46061 + for dlprefile in $dlprefiles; do
46062 + func_echo "extracting global C symbols from \`$dlprefile'"
46063 + func_basename "$dlprefile"
46064 + name="$func_basename_result"
46065 + $opt_dry_run || {
46066 + eval '$ECHO ": $name " >> "$nlist"'
46067 + eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
46068 + }
46069 + done
46070 +
46071 + $opt_dry_run || {
46072 + # Make sure we have at least an empty file.
46073 + test -f "$nlist" || : > "$nlist"
46074 +
46075 + if test -n "$exclude_expsyms"; then
46076 + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
46077 + $MV "$nlist"T "$nlist"
46078 + fi
46079 +
46080 + # Try sorting and uniquifying the output.
46081 + if $GREP -v "^: " < "$nlist" |
46082 + if sort -k 3 </dev/null >/dev/null 2>&1; then
46083 + sort -k 3
46084 + else
46085 + sort +2
46086 + fi |
46087 + uniq > "$nlist"S; then
46088 + :
46089 + else
46090 + $GREP -v "^: " < "$nlist" > "$nlist"S
46091 + fi
46092 +
46093 + if test -f "$nlist"S; then
46094 + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
46095 + else
46096 + $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
46097 + fi
46098 +
46099 + $ECHO >> "$output_objdir/$my_dlsyms" "\
46100 +
46101 +/* The mapping between symbol names and symbols. */
46102 +typedef struct {
46103 + const char *name;
46104 + void *address;
46105 +} lt_dlsymlist;
46106 +"
46107 + case $host in
46108 + *cygwin* | *mingw* )
46109 + $ECHO >> "$output_objdir/$my_dlsyms" "\
46110 +/* DATA imports from DLLs on WIN32 con't be const, because
46111 + runtime relocations are performed -- see ld's documentation
46112 + on pseudo-relocs. */"
46113 + lt_dlsym_const= ;;
46114 + *osf5*)
46115 + echo >> "$output_objdir/$my_dlsyms" "\
46116 +/* This system does not cope well with relocations in const data */"
46117 + lt_dlsym_const= ;;
46118 + *)
46119 + lt_dlsym_const=const ;;
46120 + esac
46121 +
46122 + $ECHO >> "$output_objdir/$my_dlsyms" "\
46123 +extern $lt_dlsym_const lt_dlsymlist
46124 +lt_${my_prefix}_LTX_preloaded_symbols[];
46125 +$lt_dlsym_const lt_dlsymlist
46126 +lt_${my_prefix}_LTX_preloaded_symbols[] =
46127 +{\
46128 + { \"$my_originator\", (void *) 0 },"
46129 +
46130 + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
46131 +
46132 + $ECHO >> "$output_objdir/$my_dlsyms" "\
46133 + {0, (void *) 0}
46134 +};
46135 +
46136 +/* This works around a problem in FreeBSD linker */
46137 +#ifdef FREEBSD_WORKAROUND
46138 +static const void *lt_preloaded_setup() {
46139 + return lt_${my_prefix}_LTX_preloaded_symbols;
46140 +}
46141 +#endif
46142 +
46143 +#ifdef __cplusplus
46144 +}
46145 +#endif\
46146 +"
46147 + } # !$opt_dry_run
46148 +
46149 + pic_flag_for_symtable=
46150 + case "$compile_command " in
46151 + *" -static "*) ;;
46152 + *)
46153 + case $host in
46154 + # compiling the symbol table file with pic_flag works around
46155 + # a FreeBSD bug that causes programs to crash when -lm is
46156 + # linked before any other PIC object. But we must not use
46157 + # pic_flag when linking with -static. The problem exists in
46158 + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
46159 + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
46160 + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
46161 + *-*-hpux*)
46162 + pic_flag_for_symtable=" $pic_flag" ;;
46163 + *)
46164 + if test "X$my_pic_p" != Xno; then
46165 + pic_flag_for_symtable=" $pic_flag"
46166 + fi
46167 + ;;
46168 + esac
46169 + ;;
46170 + esac
46171 + symtab_cflags=
46172 + for arg in $LTCFLAGS; do
46173 + case $arg in
46174 + -pie | -fpie | -fPIE) ;;
46175 + *) symtab_cflags="$symtab_cflags $arg" ;;
46176 + esac
46177 + done
46178 +
46179 + # Now compile the dynamic symbol file.
46180 + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
46181 +
46182 + # Clean up the generated files.
46183 + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
46184 +
46185 + # Transform the symbol file into the correct name.
46186 + symfileobj="$output_objdir/${my_outputname}S.$objext"
46187 + case $host in
46188 + *cygwin* | *mingw* )
46189 + if test -f "$output_objdir/$my_outputname.def"; then
46190 + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
46191 + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
46192 + else
46193 + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
46194 + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
46195 + fi
46196 + ;;
46197 + *)
46198 + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
46199 + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
46200 + ;;
46201 + esac
46202 + ;;
46203 + *)
46204 + func_fatal_error "unknown suffix for \`$my_dlsyms'"
46205 + ;;
46206 + esac
46207 + else
46208 + # We keep going just in case the user didn't refer to
46209 + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
46210 + # really was required.
46211 +
46212 + # Nullify the symbol file.
46213 + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
46214 + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
46215 + fi
46216 +}
46217 +
46218 +# func_extract_an_archive dir oldlib
46219 +func_extract_an_archive ()
46220 +{
46221 + $opt_debug
46222 + f_ex_an_ar_dir="$1"; shift
46223 + f_ex_an_ar_oldlib="$1"
46224 + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" 'exit $?'
46225 + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
46226 + :
46227 + else
46228 + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
46229 + fi
46230 +}
46231 +
46232 +
46233 +# func_extract_archives gentop oldlib ...
46234 +func_extract_archives ()
46235 +{
46236 + $opt_debug
46237 + my_gentop="$1"; shift
46238 + my_oldlibs=${1+"$@"}
46239 + my_oldobjs=""
46240 + my_xlib=""
46241 + my_xabs=""
46242 + my_xdir=""
46243 +
46244 + for my_xlib in $my_oldlibs; do
46245 + # Extract the objects.
46246 + case $my_xlib in
46247 + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
46248 + *) my_xabs=`pwd`"/$my_xlib" ;;
46249 + esac
46250 + func_basename "$my_xlib"
46251 + my_xlib="$func_basename_result"
46252 + my_xlib_u=$my_xlib
46253 + while :; do
46254 + case " $extracted_archives " in
46255 + *" $my_xlib_u "*)
46256 + extracted_serial=`expr $extracted_serial + 1`
46257 + my_xlib_u=lt$extracted_serial-$my_xlib ;;
46258 + *) break ;;
46259 + esac
46260 + done
46261 + extracted_archives="$extracted_archives $my_xlib_u"
46262 + my_xdir="$my_gentop/$my_xlib_u"
46263 +
46264 + func_mkdir_p "$my_xdir"
46265 +
46266 + case $host in
46267 + *-darwin*)
46268 + func_echo "Extracting $my_xabs"
46269 + # Do not bother doing anything if just a dry run
46270 + $opt_dry_run || {
46271 + darwin_orig_dir=`pwd`
46272 + cd $my_xdir || exit $?
46273 + darwin_archive=$my_xabs
46274 + darwin_curdir=`pwd`
46275 + darwin_base_archive=`basename $darwin_archive`
46276 + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
46277 + if test -n "$darwin_arches"; then
46278 + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
46279 + darwin_arch=
46280 + func_echo "$darwin_base_archive has multiple architectures $darwin_arches"
46281 + for darwin_arch in $darwin_arches ; do
46282 + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
46283 + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
46284 + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
46285 + func_extract_an_archive "`pwd`" "${darwin_base_archive}"
46286 + cd "$darwin_curdir"
46287 + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
46288 + done # $darwin_arches
46289 + ## Okay now we've a bunch of thin objects, gotta fatten them up :)
46290 + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
46291 + darwin_file=
46292 + darwin_files=
46293 + for darwin_file in $darwin_filelist; do
46294 + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
46295 + lipo -create -output "$darwin_file" $darwin_files
46296 + done # $darwin_filelist
46297 + $RM -rf unfat-$$
46298 + cd "$darwin_orig_dir"
46299 + else
46300 + cd $darwin_orig_dir
46301 + func_extract_an_archive "$my_xdir" "$my_xabs"
46302 + fi # $darwin_arches
46303 + } # !$opt_dry_run
46304 + ;;
46305 + *)
46306 + func_extract_an_archive "$my_xdir" "$my_xabs"
46307 + ;;
46308 + esac
46309 + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
46310 + done
46311 +
46312 + func_extract_archives_result="$my_oldobjs"
46313 +}
46314 +
46315 +
46316 +
46317 +# func_write_libtool_object output_name pic_name nonpic_name
46318 +# Create a libtool object file (analogous to a ".la" file),
46319 +# but don't create it if we're doing a dry run.
46320 +func_write_libtool_object ()
46321 +{
46322 + write_libobj=${1}
46323 + if test "$build_libtool_libs" = yes; then
46324 + write_lobj=\'${2}\'
46325 + else
46326 + write_lobj=none
46327 + fi
46328 +
46329 + if test "$build_old_libs" = yes; then
46330 + write_oldobj=\'${3}\'
46331 + else
46332 + write_oldobj=none
46333 + fi
46334 +
46335 + $opt_dry_run || {
46336 + cat >${write_libobj}T <<EOF
46337 +# $write_libobj - a libtool object file
46338 +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
46339 +#
46340 +# Please DO NOT delete this file!
46341 +# It is necessary for linking the library.
46342 +
46343 +# Name of the PIC object.
46344 +pic_object=$write_lobj
46345 +
46346 +# Name of the non-PIC object
46347 +non_pic_object=$write_oldobj
46348 +
46349 +EOF
46350 + mv -f "${write_libobj}T" "${write_libobj}"
46351 + }
46352 +}
46353 +
46354 +# func_mode_compile arg...
46355 +func_mode_compile ()
46356 +{
46357 + $opt_debug
46358 + # Get the compilation command and the source file.
46359 + base_compile=
46360 + srcfile="$nonopt" # always keep a non-empty value in "srcfile"
46361 + suppress_opt=yes
46362 + suppress_output=
46363 + arg_mode=normal
46364 + libobj=
46365 + later=
46366 + pie_flag=
46367 +
46368 + for arg
46369 + do
46370 + case $arg_mode in
46371 + arg )
46372 + # do not "continue". Instead, add this to base_compile
46373 + lastarg="$arg"
46374 + arg_mode=normal
46375 + ;;
46376 +
46377 + target )
46378 + libobj="$arg"
46379 + arg_mode=normal
46380 + continue
46381 + ;;
46382 +
46383 + normal )
46384 + # Accept any command-line options.
46385 + case $arg in
46386 + -o)
46387 + test -n "$libobj" && \
46388 + func_fatal_error "you cannot specify \`-o' more than once"
46389 + arg_mode=target
46390 + continue
46391 + ;;
46392 +
46393 + -pie | -fpie | -fPIE)
46394 + pie_flag="$pie_flag $arg"
46395 + continue
46396 + ;;
46397 +
46398 + -shared | -static | -prefer-pic | -prefer-non-pic)
46399 + later="$later $arg"
46400 + continue
46401 + ;;
46402 +
46403 + -no-suppress)
46404 + suppress_opt=no
46405 + continue
46406 + ;;
46407 +
46408 + -Xcompiler)
46409 + arg_mode=arg # the next one goes into the "base_compile" arg list
46410 + continue # The current "srcfile" will either be retained or
46411 + ;; # replaced later. I would guess that would be a bug.
46412 +
46413 + -Wc,*)
46414 + func_stripname '-Wc,' '' "$arg"
46415 + args=$func_stripname_result
46416 + lastarg=
46417 + save_ifs="$IFS"; IFS=','
46418 + for arg in $args; do
46419 + IFS="$save_ifs"
46420 + func_quote_for_eval "$arg"
46421 + lastarg="$lastarg $func_quote_for_eval_result"
46422 + done
46423 + IFS="$save_ifs"
46424 + func_stripname ' ' '' "$lastarg"
46425 + lastarg=$func_stripname_result
46426 +
46427 + # Add the arguments to base_compile.
46428 + base_compile="$base_compile $lastarg"
46429 + continue
46430 + ;;
46431 +
46432 + *)
46433 + # Accept the current argument as the source file.
46434 + # The previous "srcfile" becomes the current argument.
46435 + #
46436 + lastarg="$srcfile"
46437 + srcfile="$arg"
46438 + ;;
46439 + esac # case $arg
46440 + ;;
46441 + esac # case $arg_mode
46442 +
46443 + # Aesthetically quote the previous argument.
46444 + func_quote_for_eval "$lastarg"
46445 + base_compile="$base_compile $func_quote_for_eval_result"
46446 + done # for arg
46447 +
46448 + case $arg_mode in
46449 + arg)
46450 + func_fatal_error "you must specify an argument for -Xcompile"
46451 + ;;
46452 + target)
46453 + func_fatal_error "you must specify a target with \`-o'"
46454 + ;;
46455 + *)
46456 + # Get the name of the library object.
46457 + test -z "$libobj" && {
46458 + func_basename "$srcfile"
46459 + libobj="$func_basename_result"
46460 + }
46461 + ;;
46462 + esac
46463 +
46464 + # Recognize several different file suffixes.
46465 + # If the user specifies -o file.o, it is replaced with file.lo
46466 + xform='[cCFSifmso]'
46467 + case $libobj in
46468 + *.ada) xform=ada ;;
46469 + *.adb) xform=adb ;;
46470 + *.ads) xform=ads ;;
46471 + *.asm) xform=asm ;;
46472 + *.c++) xform=c++ ;;
46473 + *.cc) xform=cc ;;
46474 + *.ii) xform=ii ;;
46475 + *.class) xform=class ;;
46476 + *.cpp) xform=cpp ;;
46477 + *.cxx) xform=cxx ;;
46478 + *.[fF][09]?) xform='[fF][09].' ;;
46479 + *.for) xform=for ;;
46480 + *.java) xform=java ;;
46481 + *.obj) xform=obj ;;
46482 + esac
46483 +
46484 + libobj=`$ECHO "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
46485 +
46486 + case $libobj in
46487 + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
46488 + *)
46489 + func_fatal_error "cannot determine name of library object from \`$libobj'"
46490 + ;;
46491 + esac
46492 +
46493 + func_infer_tag $base_compile
46494 +
46495 + for arg in $later; do
46496 + case $arg in
46497 + -shared)
46498 + test "$build_libtool_libs" != yes && \
46499 + func_fatal_configuration "can not build a shared library"
46500 + build_old_libs=no
46501 + continue
46502 + ;;
46503 +
46504 + -static)
46505 + build_libtool_libs=no
46506 + build_old_libs=yes
46507 + continue
46508 + ;;
46509 +
46510 + -prefer-pic)
46511 + pic_mode=yes
46512 + continue
46513 + ;;
46514 +
46515 + -prefer-non-pic)
46516 + pic_mode=no
46517 + continue
46518 + ;;
46519 + esac
46520 + done
46521 +
46522 + func_quote_for_eval "$libobj"
46523 + test "X$libobj" != "X$func_quote_for_eval_result" \
46524 + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
46525 + && func_warning "libobj name \`$libobj' may not contain shell special characters."
46526 + func_basename "$obj"
46527 + objname="$func_basename_result"
46528 + func_dirname "$obj" "/" ""
46529 + xdir="$func_dirname_result"
46530 + lobj=${xdir}$objdir/$objname
46531 +
46532 + test -z "$base_compile" && \
46533 + func_fatal_help "you must specify a compilation command"
46534 +
46535 + # Delete any leftover library objects.
46536 + if test "$build_old_libs" = yes; then
46537 + removelist="$obj $lobj $libobj ${libobj}T"
46538 + else
46539 + removelist="$lobj $libobj ${libobj}T"
46540 + fi
46541 +
46542 + $opt_dry_run || $RM $removelist
46543 + trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
46544 +
46545 + # On Cygwin there's no "real" PIC flag so we must build both object types
46546 + case $host_os in
46547 + cygwin* | mingw* | pw32* | os2*)
46548 + pic_mode=default
46549 + ;;
46550 + esac
46551 + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
46552 + # non-PIC code in shared libraries is not supported
46553 + pic_mode=default
46554 + fi
46555 +
46556 + # Calculate the filename of the output object if compiler does
46557 + # not support -o with -c
46558 + if test "$compiler_c_o" = no; then
46559 + output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
46560 + lockfile="$output_obj.lock"
46561 + removelist="$removelist $output_obj $lockfile"
46562 + trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
46563 + else
46564 + output_obj=
46565 + need_locks=no
46566 + lockfile=
46567 + fi
46568 +
46569 + # Lock this critical section if it is needed
46570 + # We use this script file to make the link, it avoids creating a new file
46571 + if test "$need_locks" = yes; then
46572 + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
46573 + func_echo "Waiting for $lockfile to be removed"
46574 + sleep 2
46575 + done
46576 + elif test "$need_locks" = warn; then
46577 + if test -f "$lockfile"; then
46578 + $ECHO "\
46579 +*** ERROR, $lockfile exists and contains:
46580 +`cat $lockfile 2>/dev/null`
46581 +
46582 +This indicates that another process is trying to use the same
46583 +temporary object file, and libtool could not work around it because
46584 +your compiler does not support \`-c' and \`-o' together. If you
46585 +repeat this compilation, it may succeed, by chance, but you had better
46586 +avoid parallel builds (make -j) in this platform, or get a better
46587 +compiler."
46588 +
46589 + $opt_dry_run || $RM $removelist
46590 + exit $EXIT_FAILURE
46591 + fi
46592 + $ECHO "$srcfile" > "$lockfile"
46593 + fi
46594 +
46595 + if test -n "$fix_srcfile_path"; then
46596 + eval srcfile=\"$fix_srcfile_path\"
46597 + fi
46598 + func_quote_for_eval "$srcfile"
46599 + qsrcfile=$func_quote_for_eval_result
46600 +
46601 + $opt_dry_run || $RM "$libobj" "${libobj}T"
46602 +
46603 + # Only build a PIC object if we are building libtool libraries.
46604 + if test "$build_libtool_libs" = yes; then
46605 + # Without this assignment, base_compile gets emptied.
46606 + fbsd_hideous_sh_bug=$base_compile
46607 +
46608 + if test "$pic_mode" != no; then
46609 + command="$base_compile $qsrcfile $pic_flag"
46610 + else
46611 + # Don't build PIC code
46612 + command="$base_compile $qsrcfile"
46613 + fi
46614 +
46615 + func_mkdir_p "$xdir$objdir"
46616 +
46617 + if test -z "$output_obj"; then
46618 + # Place PIC objects in $objdir
46619 + command="$command -o $lobj"
46620 + fi
46621 +
46622 + $opt_dry_run || $RM "$lobj" "$output_obj"
46623 +
46624 + func_show_eval "$command" \
46625 + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
46626 +
46627 + if test "$need_locks" = warn &&
46628 + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
46629 + $ECHO "\
46630 +*** ERROR, $lockfile contains:
46631 +`cat $lockfile 2>/dev/null`
46632 +
46633 +but it should contain:
46634 +$srcfile
46635 +
46636 +This indicates that another process is trying to use the same
46637 +temporary object file, and libtool could not work around it because
46638 +your compiler does not support \`-c' and \`-o' together. If you
46639 +repeat this compilation, it may succeed, by chance, but you had better
46640 +avoid parallel builds (make -j) in this platform, or get a better
46641 +compiler."
46642 +
46643 + $opt_dry_run || $RM $removelist
46644 + exit $EXIT_FAILURE
46645 + fi
46646 +
46647 + # Just move the object if needed, then go on to compile the next one
46648 + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
46649 + func_show_eval '$MV "$output_obj" "$lobj"' \
46650 + 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
46651 + fi
46652 +
46653 + # Allow error messages only from the first compilation.
46654 + if test "$suppress_opt" = yes; then
46655 + suppress_output=' >/dev/null 2>&1'
46656 + fi
46657 + fi
46658 +
46659 + # Only build a position-dependent object if we build old libraries.
46660 + if test "$build_old_libs" = yes; then
46661 + if test "$pic_mode" != yes; then
46662 + # Don't build PIC code
46663 + command="$base_compile $qsrcfile$pie_flag"
46664 + else
46665 + command="$base_compile $qsrcfile $pic_flag"
46666 + fi
46667 + if test "$compiler_c_o" = yes; then
46668 + command="$command -o $obj"
46669 + fi
46670 +
46671 + # Suppress compiler output if we already did a PIC compilation.
46672 + command="$command$suppress_output"
46673 + $opt_dry_run || $RM "$obj" "$output_obj"
46674 + func_show_eval "$command" \
46675 + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
46676 +
46677 + if test "$need_locks" = warn &&
46678 + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
46679 + $ECHO "\
46680 +*** ERROR, $lockfile contains:
46681 +`cat $lockfile 2>/dev/null`
46682 +
46683 +but it should contain:
46684 +$srcfile
46685 +
46686 +This indicates that another process is trying to use the same
46687 +temporary object file, and libtool could not work around it because
46688 +your compiler does not support \`-c' and \`-o' together. If you
46689 +repeat this compilation, it may succeed, by chance, but you had better
46690 +avoid parallel builds (make -j) in this platform, or get a better
46691 +compiler."
46692 +
46693 + $opt_dry_run || $RM $removelist
46694 + exit $EXIT_FAILURE
46695 + fi
46696 +
46697 + # Just move the object if needed
46698 + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
46699 + func_show_eval '$MV "$output_obj" "$obj"' \
46700 + 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
46701 + fi
46702 + fi
46703 +
46704 + $opt_dry_run || {
46705 + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
46706 +
46707 + # Unlock the critical section if it was locked
46708 + if test "$need_locks" != no; then
46709 + $RM "$lockfile"
46710 + fi
46711 + }
46712 +
46713 + exit $EXIT_SUCCESS
46714 +}
46715 +
46716 +test "$mode" = compile && func_mode_compile ${1+"$@"}
46717 +
46718 +
46719 +# func_mode_execute arg...
46720 +func_mode_execute ()
46721 +{
46722 + $opt_debug
46723 + # The first argument is the command name.
46724 + cmd="$nonopt"
46725 + test -z "$cmd" && \
46726 + func_fatal_help "you must specify a COMMAND"
46727 +
46728 + # Handle -dlopen flags immediately.
46729 + for file in $execute_dlfiles; do
46730 + test -f "$file" \
46731 + || func_fatal_help "\`$file' is not a file"
46732 +
46733 + dir=
46734 + case $file in
46735 + *.la)
46736 + # Check to see that this really is a libtool archive.
46737 + func_lalib_unsafe_p "$file" \
46738 + || func_fatal_help "\`$lib' is not a valid libtool archive"
46739 +
46740 + # Read the libtool library.
46741 + dlname=
46742 + library_names=
46743 + func_source "$file"
46744 +
46745 + # Skip this library if it cannot be dlopened.
46746 + if test -z "$dlname"; then
46747 + # Warn if it was a shared library.
46748 + test -n "$library_names" && \
46749 + func_warning "\`$file' was not linked with \`-export-dynamic'"
46750 + continue
46751 + fi
46752 +
46753 + func_dirname "$file" "" "."
46754 + dir="$func_dirname_result"
46755 +
46756 + if test -f "$dir/$objdir/$dlname"; then
46757 + dir="$dir/$objdir"
46758 + else
46759 + if test ! -f "$dir/$dlname"; then
46760 + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
46761 + fi
46762 + fi
46763 + ;;
46764 +
46765 + *.lo)
46766 + # Just add the directory containing the .lo file.
46767 + func_dirname "$file" "" "."
46768 + dir="$func_dirname_result"
46769 + ;;
46770 +
46771 + *)
46772 + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
46773 + continue
46774 + ;;
46775 + esac
46776 +
46777 + # Get the absolute pathname.
46778 + absdir=`cd "$dir" && pwd`
46779 + test -n "$absdir" && dir="$absdir"
46780 +
46781 + # Now add the directory to shlibpath_var.
46782 + if eval "test -z \"\$$shlibpath_var\""; then
46783 + eval "$shlibpath_var=\"\$dir\""
46784 + else
46785 + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
46786 + fi
46787 + done
46788 +
46789 + # This variable tells wrapper scripts just to set shlibpath_var
46790 + # rather than running their programs.
46791 + libtool_execute_magic="$magic"
46792 +
46793 + # Check if any of the arguments is a wrapper script.
46794 + args=
46795 + for file
46796 + do
46797 + case $file in
46798 + -*) ;;
46799 + *)
46800 + # Do a test to see if this is really a libtool program.
46801 + if func_ltwrapper_p "$file"; then
46802 + func_source "$file"
46803 +
46804 + # Transform arg to wrapped name.
46805 + file="$progdir/$program"
46806 + fi
46807 + ;;
46808 + esac
46809 + # Quote arguments (to preserve shell metacharacters).
46810 + func_quote_for_eval "$file"
46811 + args="$args $func_quote_for_eval_result"
46812 + done
46813 +
46814 + if test "X$opt_dry_run" = Xfalse; then
46815 + if test -n "$shlibpath_var"; then
46816 + # Export the shlibpath_var.
46817 + eval "export $shlibpath_var"
46818 + fi
46819 +
46820 + # Restore saved environment variables
46821 + for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
46822 + do
46823 + eval "if test \"\${save_$lt_var+set}\" = set; then
46824 + $lt_var=\$save_$lt_var; export $lt_var
46825 + else
46826 + $lt_unset $lt_var
46827 + fi"
46828 + done
46829 +
46830 + # Now prepare to actually exec the command.
46831 + exec_cmd="\$cmd$args"
46832 + else
46833 + # Display what would be done.
46834 + if test -n "$shlibpath_var"; then
46835 + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
46836 + $ECHO "export $shlibpath_var"
46837 + fi
46838 + $ECHO "$cmd$args"
46839 + exit $EXIT_SUCCESS
46840 + fi
46841 +}
46842 +
46843 +test "$mode" = execute && func_mode_execute ${1+"$@"}
46844 +
46845 +
46846 +# func_mode_finish arg...
46847 +func_mode_finish ()
46848 +{
46849 + $opt_debug
46850 + libdirs="$nonopt"
46851 + admincmds=
46852 +
46853 + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
46854 + for dir
46855 + do
46856 + libdirs="$libdirs $dir"
46857 + done
46858 +
46859 + for libdir in $libdirs; do
46860 + if test -n "$finish_cmds"; then
46861 + # Do each command in the finish commands.
46862 + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
46863 +'"$cmd"'"'
46864 + fi
46865 + if test -n "$finish_eval"; then
46866 + # Do the single finish_eval.
46867 + eval cmds=\"$finish_eval\"
46868 + $opt_dry_run || eval "$cmds" || admincmds="$admincmds
46869 + $cmds"
46870 + fi
46871 + done
46872 + fi
46873 +
46874 + # Exit here if they wanted silent mode.
46875 + $opt_silent && exit $EXIT_SUCCESS
46876 +
46877 + $ECHO "X----------------------------------------------------------------------" | $Xsed
46878 + $ECHO "Libraries have been installed in:"
46879 + for libdir in $libdirs; do
46880 + $ECHO " $libdir"
46881 + done
46882 + $ECHO
46883 + $ECHO "If you ever happen to want to link against installed libraries"
46884 + $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
46885 + $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
46886 + $ECHO "flag during linking and do at least one of the following:"
46887 + if test -n "$shlibpath_var"; then
46888 + $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
46889 + $ECHO " during execution"
46890 + fi
46891 + if test -n "$runpath_var"; then
46892 + $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
46893 + $ECHO " during linking"
46894 + fi
46895 + if test -n "$hardcode_libdir_flag_spec"; then
46896 + libdir=LIBDIR
46897 + eval flag=\"$hardcode_libdir_flag_spec\"
46898 +
46899 + $ECHO " - use the \`$flag' linker flag"
46900 + fi
46901 + if test -n "$admincmds"; then
46902 + $ECHO " - have your system administrator run these commands:$admincmds"
46903 + fi
46904 + if test -f /etc/ld.so.conf; then
46905 + $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
46906 + fi
46907 + $ECHO
46908 +
46909 + $ECHO "See any operating system documentation about shared libraries for"
46910 + case $host in
46911 + solaris2.[6789]|solaris2.1[0-9])
46912 + $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
46913 + $ECHO "pages."
46914 + ;;
46915 + *)
46916 + $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
46917 + ;;
46918 + esac
46919 + $ECHO "X----------------------------------------------------------------------" | $Xsed
46920 + exit $EXIT_SUCCESS
46921 +}
46922 +
46923 +test "$mode" = finish && func_mode_finish ${1+"$@"}
46924 +
46925 +
46926 +# func_mode_install arg...
46927 +func_mode_install ()
46928 +{
46929 + $opt_debug
46930 + # There may be an optional sh(1) argument at the beginning of
46931 + # install_prog (especially on Windows NT).
46932 + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
46933 + # Allow the use of GNU shtool's install command.
46934 + $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
46935 + # Aesthetically quote it.
46936 + func_quote_for_eval "$nonopt"
46937 + install_prog="$func_quote_for_eval_result "
46938 + arg=$1
46939 + shift
46940 + else
46941 + install_prog=
46942 + arg=$nonopt
46943 + fi
46944 +
46945 + # The real first argument should be the name of the installation program.
46946 + # Aesthetically quote it.
46947 + func_quote_for_eval "$arg"
46948 + install_prog="$install_prog$func_quote_for_eval_result"
46949 +
46950 + # We need to accept at least all the BSD install flags.
46951 + dest=
46952 + files=
46953 + opts=
46954 + prev=
46955 + install_type=
46956 + isdir=no
46957 + stripme=
46958 + for arg
46959 + do
46960 + if test -n "$dest"; then
46961 + files="$files $dest"
46962 + dest=$arg
46963 + continue
46964 + fi
46965 +
46966 + case $arg in
46967 + -d) isdir=yes ;;
46968 + -f)
46969 + case " $install_prog " in
46970 + *[\\\ /]cp\ *) ;;
46971 + *) prev=$arg ;;
46972 + esac
46973 + ;;
46974 + -g | -m | -o)
46975 + prev=$arg
46976 + ;;
46977 + -s)
46978 + stripme=" -s"
46979 + continue
46980 + ;;
46981 + -*)
46982 + ;;
46983 + *)
46984 + # If the previous option needed an argument, then skip it.
46985 + if test -n "$prev"; then
46986 + prev=
46987 + else
46988 + dest=$arg
46989 + continue
46990 + fi
46991 + ;;
46992 + esac
46993 +
46994 + # Aesthetically quote the argument.
46995 + func_quote_for_eval "$arg"
46996 + install_prog="$install_prog $func_quote_for_eval_result"
46997 + done
46998 +
46999 + test -z "$install_prog" && \
47000 + func_fatal_help "you must specify an install program"
47001 +
47002 + test -n "$prev" && \
47003 + func_fatal_help "the \`$prev' option requires an argument"
47004 +
47005 + if test -z "$files"; then
47006 + if test -z "$dest"; then
47007 + func_fatal_help "no file or destination specified"
47008 + else
47009 + func_fatal_help "you must specify a destination"
47010 + fi
47011 + fi
47012 +
47013 + # Strip any trailing slash from the destination.
47014 + func_stripname '' '/' "$dest"
47015 + dest=$func_stripname_result
47016 +
47017 + # Check to see that the destination is a directory.
47018 + test -d "$dest" && isdir=yes
47019 + if test "$isdir" = yes; then
47020 + destdir="$dest"
47021 + destname=
47022 + else
47023 + func_dirname "$dest" "" "."
47024 + destdir="$func_dirname_result"
47025 + func_basename "$dest"
47026 + destname="$func_basename_result"
47027 +
47028 + # Not a directory, so check to see that there is only one file specified.
47029 + set dummy $files; shift
47030 + test "$#" -gt 1 && \
47031 + func_fatal_help "\`$dest' is not a directory"
47032 + fi
47033 + case $destdir in
47034 + [\\/]* | [A-Za-z]:[\\/]*) ;;
47035 + *)
47036 + for file in $files; do
47037 + case $file in
47038 + *.lo) ;;
47039 + *)
47040 + func_fatal_help "\`$destdir' must be an absolute directory name"
47041 + ;;
47042 + esac
47043 + done
47044 + ;;
47045 + esac
47046 +
47047 + # This variable tells wrapper scripts just to set variables rather
47048 + # than running their programs.
47049 + libtool_install_magic="$magic"
47050 +
47051 + staticlibs=
47052 + future_libdirs=
47053 + current_libdirs=
47054 + for file in $files; do
47055 +
47056 + # Do each installation.
47057 + case $file in
47058 + *.$libext)
47059 + # Do the static libraries later.
47060 + staticlibs="$staticlibs $file"
47061 + ;;
47062 +
47063 + *.la)
47064 + # Check to see that this really is a libtool archive.
47065 + func_lalib_unsafe_p "$file" \
47066 + || func_fatal_help "\`$file' is not a valid libtool archive"
47067 +
47068 + library_names=
47069 + old_library=
47070 + relink_command=
47071 + func_source "$file"
47072 +
47073 + # Add the libdir to current_libdirs if it is the destination.
47074 + if test "X$destdir" = "X$libdir"; then
47075 + case "$current_libdirs " in
47076 + *" $libdir "*) ;;
47077 + *) current_libdirs="$current_libdirs $libdir" ;;
47078 + esac
47079 + else
47080 + # Note the libdir as a future libdir.
47081 + case "$future_libdirs " in
47082 + *" $libdir "*) ;;
47083 + *) future_libdirs="$future_libdirs $libdir" ;;
47084 + esac
47085 + fi
47086 +
47087 + func_dirname "$file" "/" ""
47088 + dir="$func_dirname_result"
47089 + dir="$dir$objdir"
47090 +
47091 + if test -n "$relink_command"; then
47092 + # Determine the prefix the user has applied to our future dir.
47093 + inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
47094 +
47095 + # Don't allow the user to place us outside of our expected
47096 + # location b/c this prevents finding dependent libraries that
47097 + # are installed to the same prefix.
47098 + # At present, this check doesn't affect windows .dll's that
47099 + # are installed into $libdir/../bin (currently, that works fine)
47100 + # but it's something to keep an eye on.
47101 + test "$inst_prefix_dir" = "$destdir" && \
47102 + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
47103 +
47104 + if test -n "$inst_prefix_dir"; then
47105 + # Stick the inst_prefix_dir data into the link command.
47106 + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
47107 + else
47108 + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
47109 + fi
47110 +
47111 + func_warning "relinking \`$file'"
47112 + func_show_eval "$relink_command" \
47113 + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
47114 + fi
47115 +
47116 + # See the names of the shared library.
47117 + set dummy $library_names; shift
47118 + if test -n "$1"; then
47119 + realname="$1"
47120 + shift
47121 +
47122 + srcname="$realname"
47123 + test -n "$relink_command" && srcname="$realname"T
47124 +
47125 + # Install the shared library and build the symlinks.
47126 + func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
47127 + 'exit $?'
47128 + tstripme="$stripme"
47129 + case $host_os in
47130 + cygwin* | mingw* | pw32*)
47131 + case $realname in
47132 + *.dll.a)
47133 + tstripme=""
47134 + ;;
47135 + esac
47136 + ;;
47137 + esac
47138 + if test -n "$tstripme" && test -n "$striplib"; then
47139 + func_show_eval "$striplib $destdir/$realname" 'exit $?'
47140 + fi
47141 +
47142 + if test "$#" -gt 0; then
47143 + # Delete the old symlinks, and create new ones.
47144 + # Try `ln -sf' first, because the `ln' binary might depend on
47145 + # the symlink we replace! Solaris /bin/ln does not understand -f,
47146 + # so we also need to try rm && ln -s.
47147 + for linkname
47148 + do
47149 + test "$linkname" != "$realname" \
47150 + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
47151 + done
47152 + fi
47153 +
47154 + # Do each command in the postinstall commands.
47155 + lib="$destdir/$realname"
47156 + func_execute_cmds "$postinstall_cmds" 'exit $?'
47157 + fi
47158 +
47159 + # Install the pseudo-library for information purposes.
47160 + func_basename "$file"
47161 + name="$func_basename_result"
47162 + instname="$dir/$name"i
47163 + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
47164 +
47165 + # Maybe install the static library, too.
47166 + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
47167 + ;;
47168 +
47169 + *.lo)
47170 + # Install (i.e. copy) a libtool object.
47171 +
47172 + # Figure out destination file name, if it wasn't already specified.
47173 + if test -n "$destname"; then
47174 + destfile="$destdir/$destname"
47175 + else
47176 + func_basename "$file"
47177 + destfile="$func_basename_result"
47178 + destfile="$destdir/$destfile"
47179 + fi
47180 +
47181 + # Deduce the name of the destination old-style object file.
47182 + case $destfile in
47183 + *.lo)
47184 + func_lo2o "$destfile"
47185 + staticdest=$func_lo2o_result
47186 + ;;
47187 + *.$objext)
47188 + staticdest="$destfile"
47189 + destfile=
47190 + ;;
47191 + *)
47192 + func_fatal_help "cannot copy a libtool object to \`$destfile'"
47193 + ;;
47194 + esac
47195 +
47196 + # Install the libtool object if requested.
47197 + test -n "$destfile" && \
47198 + func_show_eval "$install_prog $file $destfile" 'exit $?'
47199 +
47200 + # Install the old object if enabled.
47201 + if test "$build_old_libs" = yes; then
47202 + # Deduce the name of the old-style object file.
47203 + func_lo2o "$file"
47204 + staticobj=$func_lo2o_result
47205 + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
47206 + fi
47207 + exit $EXIT_SUCCESS
47208 + ;;
47209 +
47210 + *)
47211 + # Figure out destination file name, if it wasn't already specified.
47212 + if test -n "$destname"; then
47213 + destfile="$destdir/$destname"
47214 + else
47215 + func_basename "$file"
47216 + destfile="$func_basename_result"
47217 + destfile="$destdir/$destfile"
47218 + fi
47219 +
47220 + # If the file is missing, and there is a .exe on the end, strip it
47221 + # because it is most likely a libtool script we actually want to
47222 + # install
47223 + stripped_ext=""
47224 + case $file in
47225 + *.exe)
47226 + if test ! -f "$file"; then
47227 + func_stripname '' '.exe' "$file"
47228 + file=$func_stripname_result
47229 + stripped_ext=".exe"
47230 + fi
47231 + ;;
47232 + esac
47233 +
47234 + # Do a test to see if this is really a libtool program.
47235 + case $host in
47236 + *cygwin*|*mingw*)
47237 + func_stripname '' '.exe' "$file"
47238 + wrapper=$func_stripname_result
47239 + ;;
47240 + *)
47241 + wrapper=$file
47242 + ;;
47243 + esac
47244 + if func_ltwrapper_p "$wrapper"; then
47245 + notinst_deplibs=
47246 + relink_command=
47247 +
47248 + func_source "$wrapper"
47249 +
47250 + # Check the variables that should have been set.
47251 + test -z "$generated_by_libtool_version" && \
47252 + func_fatal_error "invalid libtool wrapper script \`$wrapper'"
47253 +
47254 + finalize=yes
47255 + for lib in $notinst_deplibs; do
47256 + # Check to see that each library is installed.
47257 + libdir=
47258 + if test -f "$lib"; then
47259 + func_source "$lib"
47260 + fi
47261 + libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
47262 + if test -n "$libdir" && test ! -f "$libfile"; then
47263 + func_warning "\`$lib' has not been installed in \`$libdir'"
47264 + finalize=no
47265 + fi
47266 + done
47267 +
47268 + relink_command=
47269 + func_source "$wrapper"
47270 +
47271 + outputname=
47272 + if test "$fast_install" = no && test -n "$relink_command"; then
47273 + $opt_dry_run || {
47274 + if test "$finalize" = yes; then
47275 + tmpdir=`func_mktempdir`
47276 + func_basename "$file$stripped_ext"
47277 + file="$func_basename_result"
47278 + outputname="$tmpdir/$file"
47279 + # Replace the output file specification.
47280 + relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
47281 +
47282 + $opt_silent || {
47283 + func_quote_for_expand "$relink_command"
47284 + eval "func_echo $func_quote_for_expand_result"
47285 + }
47286 + if eval "$relink_command"; then :
47287 + else
47288 + func_error "error: relink \`$file' with the above command before installing it"
47289 + $opt_dry_run || ${RM}r "$tmpdir"
47290 + continue
47291 + fi
47292 + file="$outputname"
47293 + else
47294 + func_warning "cannot relink \`$file'"
47295 + fi
47296 + }
47297 + else
47298 + # Install the binary that we compiled earlier.
47299 + file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
47300 + fi
47301 + fi
47302 +
47303 + # remove .exe since cygwin /usr/bin/install will append another
47304 + # one anyway
47305 + case $install_prog,$host in
47306 + */usr/bin/install*,*cygwin*)
47307 + case $file:$destfile in
47308 + *.exe:*.exe)
47309 + # this is ok
47310 + ;;
47311 + *.exe:*)
47312 + destfile=$destfile.exe
47313 + ;;
47314 + *:*.exe)
47315 + func_stripname '' '.exe' "$destfile"
47316 + destfile=$func_stripname_result
47317 + ;;
47318 + esac
47319 + ;;
47320 + esac
47321 + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
47322 + $opt_dry_run || if test -n "$outputname"; then
47323 + ${RM}r "$tmpdir"
47324 + fi
47325 + ;;
47326 + esac
47327 + done
47328 +
47329 + for file in $staticlibs; do
47330 + func_basename "$file"
47331 + name="$func_basename_result"
47332 +
47333 + # Set up the ranlib parameters.
47334 + oldlib="$destdir/$name"
47335 +
47336 + func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
47337 +
47338 + if test -n "$stripme" && test -n "$old_striplib"; then
47339 + func_show_eval "$old_striplib $oldlib" 'exit $?'
47340 + fi
47341 +
47342 + # Do each command in the postinstall commands.
47343 + func_execute_cmds "$old_postinstall_cmds" 'exit $?'
47344 + done
47345 +
47346 + test -n "$future_libdirs" && \
47347 + func_warning "remember to run \`$progname --finish$future_libdirs'"
47348 +
47349 + if test -n "$current_libdirs"; then
47350 + # Maybe just do a dry run.
47351 + $opt_dry_run && current_libdirs=" -n$current_libdirs"
47352 + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
47353 + else
47354 + exit $EXIT_SUCCESS
47355 + fi
47356 +}
47357 +
47358 +test "$mode" = install && func_mode_install ${1+"$@"}
47359 +
47360 +
47361 +# func_mode_link arg...
47362 +func_mode_link ()
47363 +{
47364 + $opt_debug
47365 + case $host in
47366 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
47367 + # It is impossible to link a dll without this setting, and
47368 + # we shouldn't force the makefile maintainer to figure out
47369 + # which system we are compiling for in order to pass an extra
47370 + # flag for every libtool invocation.
47371 + # allow_undefined=no
47372 +
47373 + # FIXME: Unfortunately, there are problems with the above when trying
47374 + # to make a dll which has undefined symbols, in which case not
47375 + # even a static library is built. For now, we need to specify
47376 + # -no-undefined on the libtool link line when we can be certain
47377 + # that all symbols are satisfied, otherwise we get a static library.
47378 + allow_undefined=yes
47379 + ;;
47380 + *)
47381 + allow_undefined=yes
47382 + ;;
47383 + esac
47384 + libtool_args=$nonopt
47385 + base_compile="$nonopt $@"
47386 + compile_command=$nonopt
47387 + finalize_command=$nonopt
47388 +
47389 + compile_rpath=
47390 + finalize_rpath=
47391 + compile_shlibpath=
47392 + finalize_shlibpath=
47393 + convenience=
47394 + old_convenience=
47395 + deplibs=
47396 + old_deplibs=
47397 + compiler_flags=
47398 + linker_flags=
47399 + dllsearchpath=
47400 + lib_search_path=`pwd`
47401 + inst_prefix_dir=
47402 + new_inherited_linker_flags=
47403 +
47404 + avoid_version=no
47405 + dlfiles=
47406 + dlprefiles=
47407 + dlself=no
47408 + export_dynamic=no
47409 + export_symbols=
47410 + export_symbols_regex=
47411 + generated=
47412 + libobjs=
47413 + ltlibs=
47414 + module=no
47415 + no_install=no
47416 + objs=
47417 + non_pic_objects=
47418 + precious_files_regex=
47419 + prefer_static_libs=no
47420 + preload=no
47421 + prev=
47422 + prevarg=
47423 + release=
47424 + rpath=
47425 + xrpath=
47426 + perm_rpath=
47427 + temp_rpath=
47428 + thread_safe=no
47429 + vinfo=
47430 + vinfo_number=no
47431 + weak_libs=
47432 + single_module="${wl}-single_module"
47433 + func_infer_tag $base_compile
47434 +
47435 + # We need to know -static, to get the right output filenames.
47436 + for arg
47437 + do
47438 + case $arg in
47439 + -shared)
47440 + test "$build_libtool_libs" != yes && \
47441 + func_fatal_configuration "can not build a shared library"
47442 + build_old_libs=no
47443 + break
47444 + ;;
47445 + -all-static | -static | -static-libtool-libs)
47446 + case $arg in
47447 + -all-static)
47448 + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
47449 + func_warning "complete static linking is impossible in this configuration"
47450 + fi
47451 + if test -n "$link_static_flag"; then
47452 + dlopen_self=$dlopen_self_static
47453 + # See comment for -static flag below, for more details.
47454 + func_append compile_command " $link_static_flag"
47455 + func_append finalize_command " $link_static_flag"
47456 + fi
47457 + prefer_static_libs=yes
47458 + ;;
47459 + -static)
47460 + if test -z "$pic_flag" && test -n "$link_static_flag"; then
47461 + dlopen_self=$dlopen_self_static
47462 + fi
47463 + prefer_static_libs=built
47464 + ;;
47465 + -static-libtool-libs)
47466 + if test -z "$pic_flag" && test -n "$link_static_flag"; then
47467 + dlopen_self=$dlopen_self_static
47468 + fi
47469 + prefer_static_libs=yes
47470 + ;;
47471 + esac
47472 + build_libtool_libs=no
47473 + build_old_libs=yes
47474 + break
47475 + ;;
47476 + esac
47477 + done
47478 +
47479 + # See if our shared archives depend on static archives.
47480 + test -n "$old_archive_from_new_cmds" && build_old_libs=yes
47481 +
47482 + # Go through the arguments, transforming them on the way.
47483 + while test "$#" -gt 0; do
47484 + arg="$1"
47485 + shift
47486 + func_quote_for_eval "$arg"
47487 + qarg=$func_quote_for_eval_unquoted_result
47488 + func_append libtool_args " $func_quote_for_eval_result"
47489 +
47490 + # If the previous option needs an argument, assign it.
47491 + if test -n "$prev"; then
47492 + case $prev in
47493 + output)
47494 + func_append compile_command " @OUTPUT@"
47495 + func_append finalize_command " @OUTPUT@"
47496 + ;;
47497 + esac
47498 +
47499 + case $prev in
47500 + dlfiles|dlprefiles)
47501 + if test "$preload" = no; then
47502 + # Add the symbol object into the linking commands.
47503 + func_append compile_command " @SYMFILE@"
47504 + func_append finalize_command " @SYMFILE@"
47505 + preload=yes
47506 + fi
47507 + case $arg in
47508 + *.la | *.lo) ;; # We handle these cases below.
47509 + force)
47510 + if test "$dlself" = no; then
47511 + dlself=needless
47512 + export_dynamic=yes
47513 + fi
47514 + prev=
47515 + continue
47516 + ;;
47517 + self)
47518 + if test "$prev" = dlprefiles; then
47519 + dlself=yes
47520 + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
47521 + dlself=yes
47522 + else
47523 + dlself=needless
47524 + export_dynamic=yes
47525 + fi
47526 + prev=
47527 + continue
47528 + ;;
47529 + *)
47530 + if test "$prev" = dlfiles; then
47531 + dlfiles="$dlfiles $arg"
47532 + else
47533 + dlprefiles="$dlprefiles $arg"
47534 + fi
47535 + prev=
47536 + continue
47537 + ;;
47538 + esac
47539 + ;;
47540 + expsyms)
47541 + export_symbols="$arg"
47542 + test -f "$arg" \
47543 + || func_fatal_error "symbol file \`$arg' does not exist"
47544 + prev=
47545 + continue
47546 + ;;
47547 + expsyms_regex)
47548 + export_symbols_regex="$arg"
47549 + prev=
47550 + continue
47551 + ;;
47552 + framework)
47553 + case $host in
47554 + *-*-darwin*)
47555 + case "$deplibs " in
47556 + *" $qarg.ltframework "*) ;;
47557 + *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
47558 + ;;
47559 + esac
47560 + ;;
47561 + esac
47562 + prev=
47563 + continue
47564 + ;;
47565 + inst_prefix)
47566 + inst_prefix_dir="$arg"
47567 + prev=
47568 + continue
47569 + ;;
47570 + objectlist)
47571 + if test -f "$arg"; then
47572 + save_arg=$arg
47573 + moreargs=
47574 + for fil in `cat "$save_arg"`
47575 + do
47576 +# moreargs="$moreargs $fil"
47577 + arg=$fil
47578 + # A libtool-controlled object.
47579 +
47580 + # Check to see that this really is a libtool object.
47581 + if func_lalib_unsafe_p "$arg"; then
47582 + pic_object=
47583 + non_pic_object=
47584 +
47585 + # Read the .lo file
47586 + func_source "$arg"
47587 +
47588 + if test -z "$pic_object" ||
47589 + test -z "$non_pic_object" ||
47590 + test "$pic_object" = none &&
47591 + test "$non_pic_object" = none; then
47592 + func_fatal_error "cannot find name of object for \`$arg'"
47593 + fi
47594 +
47595 + # Extract subdirectory from the argument.
47596 + func_dirname "$arg" "/" ""
47597 + xdir="$func_dirname_result"
47598 +
47599 + if test "$pic_object" != none; then
47600 + # Prepend the subdirectory the object is found in.
47601 + pic_object="$xdir$pic_object"
47602 +
47603 + if test "$prev" = dlfiles; then
47604 + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
47605 + dlfiles="$dlfiles $pic_object"
47606 + prev=
47607 + continue
47608 + else
47609 + # If libtool objects are unsupported, then we need to preload.
47610 + prev=dlprefiles
47611 + fi
47612 + fi
47613 +
47614 + # CHECK ME: I think I busted this. -Ossama
47615 + if test "$prev" = dlprefiles; then
47616 + # Preload the old-style object.
47617 + dlprefiles="$dlprefiles $pic_object"
47618 + prev=
47619 + fi
47620 +
47621 + # A PIC object.
47622 + func_append libobjs " $pic_object"
47623 + arg="$pic_object"
47624 + fi
47625 +
47626 + # Non-PIC object.
47627 + if test "$non_pic_object" != none; then
47628 + # Prepend the subdirectory the object is found in.
47629 + non_pic_object="$xdir$non_pic_object"
47630 +
47631 + # A standard non-PIC object
47632 + func_append non_pic_objects " $non_pic_object"
47633 + if test -z "$pic_object" || test "$pic_object" = none ; then
47634 + arg="$non_pic_object"
47635 + fi
47636 + else
47637 + # If the PIC object exists, use it instead.
47638 + # $xdir was prepended to $pic_object above.
47639 + non_pic_object="$pic_object"
47640 + func_append non_pic_objects " $non_pic_object"
47641 + fi
47642 + else
47643 + # Only an error if not doing a dry-run.
47644 + if $opt_dry_run; then
47645 + # Extract subdirectory from the argument.
47646 + func_dirname "$arg" "/" ""
47647 + xdir="$func_dirname_result"
47648 +
47649 + func_lo2o "$arg"
47650 + pic_object=$xdir$objdir/$func_lo2o_result
47651 + non_pic_object=$xdir$func_lo2o_result
47652 + func_append libobjs " $pic_object"
47653 + func_append non_pic_objects " $non_pic_object"
47654 + else
47655 + func_fatal_error "\`$arg' is not a valid libtool object"
47656 + fi
47657 + fi
47658 + done
47659 + else
47660 + func_fatal_error "link input file \`$arg' does not exist"
47661 + fi
47662 + arg=$save_arg
47663 + prev=
47664 + continue
47665 + ;;
47666 + precious_regex)
47667 + precious_files_regex="$arg"
47668 + prev=
47669 + continue
47670 + ;;
47671 + release)
47672 + release="-$arg"
47673 + prev=
47674 + continue
47675 + ;;
47676 + rpath | xrpath)
47677 + # We need an absolute path.
47678 + case $arg in
47679 + [\\/]* | [A-Za-z]:[\\/]*) ;;
47680 + *)
47681 + func_fatal_error "only absolute run-paths are allowed"
47682 + ;;
47683 + esac
47684 + if test "$prev" = rpath; then
47685 + case "$rpath " in
47686 + *" $arg "*) ;;
47687 + *) rpath="$rpath $arg" ;;
47688 + esac
47689 + else
47690 + case "$xrpath " in
47691 + *" $arg "*) ;;
47692 + *) xrpath="$xrpath $arg" ;;
47693 + esac
47694 + fi
47695 + prev=
47696 + continue
47697 + ;;
47698 + shrext)
47699 + shrext_cmds="$arg"
47700 + prev=
47701 + continue
47702 + ;;
47703 + weak)
47704 + weak_libs="$weak_libs $arg"
47705 + prev=
47706 + continue
47707 + ;;
47708 + xcclinker)
47709 + linker_flags="$linker_flags $qarg"
47710 + compiler_flags="$compiler_flags $qarg"
47711 + prev=
47712 + func_append compile_command " $qarg"
47713 + func_append finalize_command " $qarg"
47714 + continue
47715 + ;;
47716 + xcompiler)
47717 + compiler_flags="$compiler_flags $qarg"
47718 + prev=
47719 + func_append compile_command " $qarg"
47720 + func_append finalize_command " $qarg"
47721 + continue
47722 + ;;
47723 + xlinker)
47724 + linker_flags="$linker_flags $qarg"
47725 + compiler_flags="$compiler_flags $wl$qarg"
47726 + prev=
47727 + func_append compile_command " $wl$qarg"
47728 + func_append finalize_command " $wl$qarg"
47729 + continue
47730 + ;;
47731 + *)
47732 + eval "$prev=\"\$arg\""
47733 + prev=
47734 + continue
47735 + ;;
47736 + esac
47737 + fi # test -n "$prev"
47738 +
47739 + prevarg="$arg"
47740 +
47741 + case $arg in
47742 + -all-static)
47743 + # The effects of -all-static are defined in a previous loop.
47744 + continue
47745 + ;;
47746 +
47747 + -allow-undefined)
47748 + # FIXME: remove this flag sometime in the future.
47749 + func_fatal_error "\`-allow-undefined' must not be used because it is the default"
47750 + ;;
47751 +
47752 + -avoid-version)
47753 + avoid_version=yes
47754 + continue
47755 + ;;
47756 +
47757 + -dlopen)
47758 + prev=dlfiles
47759 + continue
47760 + ;;
47761 +
47762 + -dlpreopen)
47763 + prev=dlprefiles
47764 + continue
47765 + ;;
47766 +
47767 + -export-dynamic)
47768 + export_dynamic=yes
47769 + continue
47770 + ;;
47771 +
47772 + -export-symbols | -export-symbols-regex)
47773 + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
47774 + func_fatal_error "more than one -exported-symbols argument is not allowed"
47775 + fi
47776 + if test "X$arg" = "X-export-symbols"; then
47777 + prev=expsyms
47778 + else
47779 + prev=expsyms_regex
47780 + fi
47781 + continue
47782 + ;;
47783 +
47784 + -framework)
47785 + prev=framework
47786 + continue
47787 + ;;
47788 +
47789 + -inst-prefix-dir)
47790 + prev=inst_prefix
47791 + continue
47792 + ;;
47793 +
47794 + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
47795 + # so, if we see these flags be careful not to treat them like -L
47796 + -L[A-Z][A-Z]*:*)
47797 + case $with_gcc/$host in
47798 + no/*-*-irix* | /*-*-irix*)
47799 + func_append compile_command " $arg"
47800 + func_append finalize_command " $arg"
47801 + ;;
47802 + esac
47803 + continue
47804 + ;;
47805 +
47806 + -L*)
47807 + func_stripname '-L' '' "$arg"
47808 + dir=$func_stripname_result
47809 + # We need an absolute path.
47810 + case $dir in
47811 + [\\/]* | [A-Za-z]:[\\/]*) ;;
47812 + *)
47813 + absdir=`cd "$dir" && pwd`
47814 + test -z "$absdir" && \
47815 + func_fatal_error "cannot determine absolute directory name of \`$dir'"
47816 + dir="$absdir"
47817 + ;;
47818 + esac
47819 + case "$deplibs " in
47820 + *" -L$dir "*) ;;
47821 + *)
47822 + deplibs="$deplibs -L$dir"
47823 + lib_search_path="$lib_search_path $dir"
47824 + ;;
47825 + esac
47826 + case $host in
47827 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
47828 + testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
47829 + case :$dllsearchpath: in
47830 + *":$dir:"*) ;;
47831 + *) dllsearchpath="$dllsearchpath:$dir";;
47832 + esac
47833 + case :$dllsearchpath: in
47834 + *":$testbindir:"*) ;;
47835 + *) dllsearchpath="$dllsearchpath:$testbindir";;
47836 + esac
47837 + ;;
47838 + esac
47839 + continue
47840 + ;;
47841 +
47842 + -l*)
47843 + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
47844 + case $host in
47845 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
47846 + # These systems don't actually have a C or math library (as such)
47847 + continue
47848 + ;;
47849 + *-*-os2*)
47850 + # These systems don't actually have a C library (as such)
47851 + test "X$arg" = "X-lc" && continue
47852 + ;;
47853 + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
47854 + # Do not include libc due to us having libc/libc_r.
47855 + test "X$arg" = "X-lc" && continue
47856 + ;;
47857 + *-*-rhapsody* | *-*-darwin1.[012])
47858 + # Rhapsody C and math libraries are in the System framework
47859 + deplibs="$deplibs System.ltframework"
47860 + continue
47861 + ;;
47862 + *-*-sco3.2v5* | *-*-sco5v6*)
47863 + # Causes problems with __ctype
47864 + test "X$arg" = "X-lc" && continue
47865 + ;;
47866 + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
47867 + # Compiler inserts libc in the correct place for threads to work
47868 + test "X$arg" = "X-lc" && continue
47869 + ;;
47870 + esac
47871 + elif test "X$arg" = "X-lc_r"; then
47872 + case $host in
47873 + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
47874 + # Do not include libc_r directly, use -pthread flag.
47875 + continue
47876 + ;;
47877 + esac
47878 + fi
47879 + deplibs="$deplibs $arg"
47880 + continue
47881 + ;;
47882 +
47883 + -module)
47884 + module=yes
47885 + continue
47886 + ;;
47887 +
47888 + # Tru64 UNIX uses -model [arg] to determine the layout of C++
47889 + # classes, name mangling, and exception handling.
47890 + # Darwin uses the -arch flag to determine output architecture.
47891 + -model|-arch|-isysroot)
47892 + compiler_flags="$compiler_flags $arg"
47893 + func_append compile_command " $arg"
47894 + func_append finalize_command " $arg"
47895 + prev=xcompiler
47896 + continue
47897 + ;;
47898 +
47899 + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
47900 + compiler_flags="$compiler_flags $arg"
47901 + func_append compile_command " $arg"
47902 + func_append finalize_command " $arg"
47903 + case "$new_inherited_linker_flags " in
47904 + *" $arg "*) ;;
47905 + * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
47906 + esac
47907 + continue
47908 + ;;
47909 +
47910 + -multi_module)
47911 + single_module="${wl}-multi_module"
47912 + continue
47913 + ;;
47914 +
47915 + -no-fast-install)
47916 + fast_install=no
47917 + continue
47918 + ;;
47919 +
47920 + -no-install)
47921 + case $host in
47922 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
47923 + # The PATH hackery in wrapper scripts is required on Windows
47924 + # in order for the loader to find any dlls it needs.
47925 + func_warning "\`-no-install' is ignored for $host"
47926 + func_warning "assuming \`-no-fast-install' instead"
47927 + fast_install=no
47928 + ;;
47929 + *) no_install=yes ;;
47930 + esac
47931 + continue
47932 + ;;
47933 +
47934 + -no-undefined)
47935 + allow_undefined=no
47936 + continue
47937 + ;;
47938 +
47939 + -objectlist)
47940 + prev=objectlist
47941 + continue
47942 + ;;
47943 +
47944 + -o) prev=output ;;
47945 +
47946 + -precious-files-regex)
47947 + prev=precious_regex
47948 + continue
47949 + ;;
47950 +
47951 + -release)
47952 + prev=release
47953 + continue
47954 + ;;
47955 +
47956 + -rpath)
47957 + prev=rpath
47958 + continue
47959 + ;;
47960 +
47961 + -R)
47962 + prev=xrpath
47963 + continue
47964 + ;;
47965 +
47966 + -R*)
47967 + func_stripname '-R' '' "$arg"
47968 + dir=$func_stripname_result
47969 + # We need an absolute path.
47970 + case $dir in
47971 + [\\/]* | [A-Za-z]:[\\/]*) ;;
47972 + *)
47973 + func_fatal_error "only absolute run-paths are allowed"
47974 + ;;
47975 + esac
47976 + case "$xrpath " in
47977 + *" $dir "*) ;;
47978 + *) xrpath="$xrpath $dir" ;;
47979 + esac
47980 + continue
47981 + ;;
47982 +
47983 + -shared)
47984 + # The effects of -shared are defined in a previous loop.
47985 + continue
47986 + ;;
47987 +
47988 + -shrext)
47989 + prev=shrext
47990 + continue
47991 + ;;
47992 +
47993 + -static | -static-libtool-libs)
47994 + # The effects of -static are defined in a previous loop.
47995 + # We used to do the same as -all-static on platforms that
47996 + # didn't have a PIC flag, but the assumption that the effects
47997 + # would be equivalent was wrong. It would break on at least
47998 + # Digital Unix and AIX.
47999 + continue
48000 + ;;
48001 +
48002 + -thread-safe)
48003 + thread_safe=yes
48004 + continue
48005 + ;;
48006 +
48007 + -version-info)
48008 + prev=vinfo
48009 + continue
48010 + ;;
48011 +
48012 + -version-number)
48013 + prev=vinfo
48014 + vinfo_number=yes
48015 + continue
48016 + ;;
48017 +
48018 + -weak)
48019 + prev=weak
48020 + continue
48021 + ;;
48022 +
48023 + -Wc,*)
48024 + func_stripname '-Wc,' '' "$arg"
48025 + args=$func_stripname_result
48026 + arg=
48027 + save_ifs="$IFS"; IFS=','
48028 + for flag in $args; do
48029 + IFS="$save_ifs"
48030 + func_quote_for_eval "$flag"
48031 + arg="$arg $wl$func_quote_for_eval_result"
48032 + compiler_flags="$compiler_flags $func_quote_for_eval_result"
48033 + done
48034 + IFS="$save_ifs"
48035 + func_stripname ' ' '' "$arg"
48036 + arg=$func_stripname_result
48037 + ;;
48038 +
48039 + -Wl,*)
48040 + func_stripname '-Wl,' '' "$arg"
48041 + args=$func_stripname_result
48042 + arg=
48043 + save_ifs="$IFS"; IFS=','
48044 + for flag in $args; do
48045 + IFS="$save_ifs"
48046 + func_quote_for_eval "$flag"
48047 + arg="$arg $wl$func_quote_for_eval_result"
48048 + compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
48049 + linker_flags="$linker_flags $func_quote_for_eval_result"
48050 + done
48051 + IFS="$save_ifs"
48052 + func_stripname ' ' '' "$arg"
48053 + arg=$func_stripname_result
48054 + ;;
48055 +
48056 + -Xcompiler)
48057 + prev=xcompiler
48058 + continue
48059 + ;;
48060 +
48061 + -Xlinker)
48062 + prev=xlinker
48063 + continue
48064 + ;;
48065 +
48066 + -XCClinker)
48067 + prev=xcclinker
48068 + continue
48069 + ;;
48070 +
48071 + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
48072 + # -r[0-9][0-9]* specifies the processor on the SGI compiler
48073 + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
48074 + # +DA*, +DD* enable 64-bit mode on the HP compiler
48075 + # -q* pass through compiler args for the IBM compiler
48076 + # -m*, -t[45]*, -txscale* pass through architecture-specific
48077 + # compiler args for GCC
48078 + # -F/path gives path to uninstalled frameworks, gcc on darwin
48079 + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
48080 + # @file GCC response files
48081 + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
48082 + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
48083 + func_quote_for_eval "$arg"
48084 + arg="$func_quote_for_eval_result"
48085 + func_append compile_command " $arg"
48086 + func_append finalize_command " $arg"
48087 + compiler_flags="$compiler_flags $arg"
48088 + continue
48089 + ;;
48090 +
48091 + # Some other compiler flag.
48092 + -* | +*)
48093 + func_quote_for_eval "$arg"
48094 + arg="$func_quote_for_eval_result"
48095 + ;;
48096 +
48097 + *.$objext)
48098 + # A standard object.
48099 + objs="$objs $arg"
48100 + ;;
48101 +
48102 + *.lo)
48103 + # A libtool-controlled object.
48104 +
48105 + # Check to see that this really is a libtool object.
48106 + if func_lalib_unsafe_p "$arg"; then
48107 + pic_object=
48108 + non_pic_object=
48109 +
48110 + # Read the .lo file
48111 + func_source "$arg"
48112 +
48113 + if test -z "$pic_object" ||
48114 + test -z "$non_pic_object" ||
48115 + test "$pic_object" = none &&
48116 + test "$non_pic_object" = none; then
48117 + func_fatal_error "cannot find name of object for \`$arg'"
48118 + fi
48119 +
48120 + # Extract subdirectory from the argument.
48121 + func_dirname "$arg" "/" ""
48122 + xdir="$func_dirname_result"
48123 +
48124 + if test "$pic_object" != none; then
48125 + # Prepend the subdirectory the object is found in.
48126 + pic_object="$xdir$pic_object"
48127 +
48128 + if test "$prev" = dlfiles; then
48129 + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48130 + dlfiles="$dlfiles $pic_object"
48131 + prev=
48132 + continue
48133 + else
48134 + # If libtool objects are unsupported, then we need to preload.
48135 + prev=dlprefiles
48136 + fi
48137 + fi
48138 +
48139 + # CHECK ME: I think I busted this. -Ossama
48140 + if test "$prev" = dlprefiles; then
48141 + # Preload the old-style object.
48142 + dlprefiles="$dlprefiles $pic_object"
48143 + prev=
48144 + fi
48145 +
48146 + # A PIC object.
48147 + func_append libobjs " $pic_object"
48148 + arg="$pic_object"
48149 + fi
48150 +
48151 + # Non-PIC object.
48152 + if test "$non_pic_object" != none; then
48153 + # Prepend the subdirectory the object is found in.
48154 + non_pic_object="$xdir$non_pic_object"
48155 +
48156 + # A standard non-PIC object
48157 + func_append non_pic_objects " $non_pic_object"
48158 + if test -z "$pic_object" || test "$pic_object" = none ; then
48159 + arg="$non_pic_object"
48160 + fi
48161 + else
48162 + # If the PIC object exists, use it instead.
48163 + # $xdir was prepended to $pic_object above.
48164 + non_pic_object="$pic_object"
48165 + func_append non_pic_objects " $non_pic_object"
48166 + fi
48167 + else
48168 + # Only an error if not doing a dry-run.
48169 + if $opt_dry_run; then
48170 + # Extract subdirectory from the argument.
48171 + func_dirname "$arg" "/" ""
48172 + xdir="$func_dirname_result"
48173 +
48174 + func_lo2o "$arg"
48175 + pic_object=$xdir$objdir/$func_lo2o_result
48176 + non_pic_object=$xdir$func_lo2o_result
48177 + func_append libobjs " $pic_object"
48178 + func_append non_pic_objects " $non_pic_object"
48179 + else
48180 + func_fatal_error "\`$arg' is not a valid libtool object"
48181 + fi
48182 + fi
48183 + ;;
48184 +
48185 + *.$libext)
48186 + # An archive.
48187 + deplibs="$deplibs $arg"
48188 + old_deplibs="$old_deplibs $arg"
48189 + continue
48190 + ;;
48191 +
48192 + *.la)
48193 + # A libtool-controlled library.
48194 +
48195 + if test "$prev" = dlfiles; then
48196 + # This library was specified with -dlopen.
48197 + dlfiles="$dlfiles $arg"
48198 + prev=
48199 + elif test "$prev" = dlprefiles; then
48200 + # The library was specified with -dlpreopen.
48201 + dlprefiles="$dlprefiles $arg"
48202 + prev=
48203 + else
48204 + deplibs="$deplibs $arg"
48205 + fi
48206 + continue
48207 + ;;
48208 +
48209 + # Some other compiler argument.
48210 + *)
48211 + # Unknown arguments in both finalize_command and compile_command need
48212 + # to be aesthetically quoted because they are evaled later.
48213 + func_quote_for_eval "$arg"
48214 + arg="$func_quote_for_eval_result"
48215 + ;;
48216 + esac # arg
48217 +
48218 + # Now actually substitute the argument into the commands.
48219 + if test -n "$arg"; then
48220 + func_append compile_command " $arg"
48221 + func_append finalize_command " $arg"
48222 + fi
48223 + done # argument parsing loop
48224 +
48225 + test -n "$prev" && \
48226 + func_fatal_help "the \`$prevarg' option requires an argument"
48227 +
48228 + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
48229 + eval arg=\"$export_dynamic_flag_spec\"
48230 + func_append compile_command " $arg"
48231 + func_append finalize_command " $arg"
48232 + fi
48233 +
48234 + oldlibs=
48235 + # calculate the name of the file, without its directory
48236 + func_basename "$output"
48237 + outputname="$func_basename_result"
48238 + libobjs_save="$libobjs"
48239 +
48240 + if test -n "$shlibpath_var"; then
48241 + # get the directories listed in $shlibpath_var
48242 + eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
48243 + else
48244 + shlib_search_path=
48245 + fi
48246 + eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
48247 + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
48248 +
48249 + func_dirname "$output" "/" ""
48250 + output_objdir="$func_dirname_result$objdir"
48251 + # Create the object directory.
48252 + func_mkdir_p "$output_objdir"
48253 +
48254 + # Determine the type of output
48255 + case $output in
48256 + "")
48257 + func_fatal_help "you must specify an output file"
48258 + ;;
48259 + *.$libext) linkmode=oldlib ;;
48260 + *.lo | *.$objext) linkmode=obj ;;
48261 + *.la) linkmode=lib ;;
48262 + *) linkmode=prog ;; # Anything else should be a program.
48263 + esac
48264 +
48265 + specialdeplibs=
48266 +
48267 + libs=
48268 + # Find all interdependent deplibs by searching for libraries
48269 + # that are linked more than once (e.g. -la -lb -la)
48270 + for deplib in $deplibs; do
48271 + if $opt_duplicate_deps ; then
48272 + case "$libs " in
48273 + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
48274 + esac
48275 + fi
48276 + libs="$libs $deplib"
48277 + done
48278 +
48279 + if test "$linkmode" = lib; then
48280 + libs="$predeps $libs $compiler_lib_search_path $postdeps"
48281 +
48282 + # Compute libraries that are listed more than once in $predeps
48283 + # $postdeps and mark them as special (i.e., whose duplicates are
48284 + # not to be eliminated).
48285 + pre_post_deps=
48286 + if $opt_duplicate_compiler_generated_deps; then
48287 + for pre_post_dep in $predeps $postdeps; do
48288 + case "$pre_post_deps " in
48289 + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
48290 + esac
48291 + pre_post_deps="$pre_post_deps $pre_post_dep"
48292 + done
48293 + fi
48294 + pre_post_deps=
48295 + fi
48296 +
48297 + deplibs=
48298 + newdependency_libs=
48299 + newlib_search_path=
48300 + need_relink=no # whether we're linking any uninstalled libtool libraries
48301 + notinst_deplibs= # not-installed libtool libraries
48302 + notinst_path= # paths that contain not-installed libtool libraries
48303 +
48304 + case $linkmode in
48305 + lib)
48306 + passes="conv dlpreopen link"
48307 + for file in $dlfiles $dlprefiles; do
48308 + case $file in
48309 + *.la) ;;
48310 + *)
48311 + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
48312 + ;;
48313 + esac
48314 + done
48315 + ;;
48316 + prog)
48317 + compile_deplibs=
48318 + finalize_deplibs=
48319 + alldeplibs=no
48320 + newdlfiles=
48321 + newdlprefiles=
48322 + passes="conv scan dlopen dlpreopen link"
48323 + ;;
48324 + *) passes="conv"
48325 + ;;
48326 + esac
48327 +
48328 + for pass in $passes; do
48329 + # The preopen pass in lib mode reverses $deplibs; put it back here
48330 + # so that -L comes before libs that need it for instance...
48331 + if test "$linkmode,$pass" = "lib,link"; then
48332 + ## FIXME: Find the place where the list is rebuilt in the wrong
48333 + ## order, and fix it there properly
48334 + tmp_deplibs=
48335 + for deplib in $deplibs; do
48336 + tmp_deplibs="$deplib $tmp_deplibs"
48337 + done
48338 + deplibs="$tmp_deplibs"
48339 + fi
48340 +
48341 + if test "$linkmode,$pass" = "lib,link" ||
48342 + test "$linkmode,$pass" = "prog,scan"; then
48343 + libs="$deplibs"
48344 + deplibs=
48345 + fi
48346 + if test "$linkmode" = prog; then
48347 + case $pass in
48348 + dlopen) libs="$dlfiles" ;;
48349 + dlpreopen) libs="$dlprefiles" ;;
48350 + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
48351 + esac
48352 + fi
48353 + if test "$linkmode,$pass" = "lib,dlpreopen"; then
48354 + # Collect and forward deplibs of preopened libtool libs
48355 + for lib in $dlprefiles; do
48356 + # Ignore non-libtool-libs
48357 + dependency_libs=
48358 + case $lib in
48359 + *.la) func_source "$lib" ;;
48360 + esac
48361 +
48362 + # Collect preopened libtool deplibs, except any this library
48363 + # has declared as weak libs
48364 + for deplib in $dependency_libs; do
48365 + deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
48366 + case " $weak_libs " in
48367 + *" $deplib_base "*) ;;
48368 + *) deplibs="$deplibs $deplib" ;;
48369 + esac
48370 + done
48371 + done
48372 + libs="$dlprefiles"
48373 + fi
48374 + if test "$pass" = dlopen; then
48375 + # Collect dlpreopened libraries
48376 + save_deplibs="$deplibs"
48377 + deplibs=
48378 + fi
48379 +
48380 + for deplib in $libs; do
48381 + lib=
48382 + found=no
48383 + case $deplib in
48384 + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
48385 + if test "$linkmode,$pass" = "prog,link"; then
48386 + compile_deplibs="$deplib $compile_deplibs"
48387 + finalize_deplibs="$deplib $finalize_deplibs"
48388 + else
48389 + compiler_flags="$compiler_flags $deplib"
48390 + if test "$linkmode" = lib ; then
48391 + case "$new_inherited_linker_flags " in
48392 + *" $deplib "*) ;;
48393 + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
48394 + esac
48395 + fi
48396 + fi
48397 + continue
48398 + ;;
48399 + -l*)
48400 + if test "$linkmode" != lib && test "$linkmode" != prog; then
48401 + func_warning "\`-l' is ignored for archives/objects"
48402 + continue
48403 + fi
48404 + func_stripname '-l' '' "$deplib"
48405 + name=$func_stripname_result
48406 + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
48407 + for search_ext in .la $std_shrext .so .a; do
48408 + # Search the libtool library
48409 + lib="$searchdir/lib${name}${search_ext}"
48410 + if test -f "$lib"; then
48411 + if test "$search_ext" = ".la"; then
48412 + found=yes
48413 + else
48414 + found=no
48415 + fi
48416 + break 2
48417 + fi
48418 + done
48419 + done
48420 + if test "$found" != yes; then
48421 + # deplib doesn't seem to be a libtool library
48422 + if test "$linkmode,$pass" = "prog,link"; then
48423 + compile_deplibs="$deplib $compile_deplibs"
48424 + finalize_deplibs="$deplib $finalize_deplibs"
48425 + else
48426 + deplibs="$deplib $deplibs"
48427 + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
48428 + fi
48429 + continue
48430 + else # deplib is a libtool library
48431 + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
48432 + # We need to do some special things here, and not later.
48433 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
48434 + case " $predeps $postdeps " in
48435 + *" $deplib "*)
48436 + if func_lalib_p "$lib"; then
48437 + library_names=
48438 + old_library=
48439 + func_source "$lib"
48440 + for l in $old_library $library_names; do
48441 + ll="$l"
48442 + done
48443 + if test "X$ll" = "X$old_library" ; then # only static version available
48444 + found=no
48445 + func_dirname "$lib" "" "."
48446 + ladir="$func_dirname_result"
48447 + lib=$ladir/$old_library
48448 + if test "$linkmode,$pass" = "prog,link"; then
48449 + compile_deplibs="$deplib $compile_deplibs"
48450 + finalize_deplibs="$deplib $finalize_deplibs"
48451 + else
48452 + deplibs="$deplib $deplibs"
48453 + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
48454 + fi
48455 + continue
48456 + fi
48457 + fi
48458 + ;;
48459 + *) ;;
48460 + esac
48461 + fi
48462 + fi
48463 + ;; # -l
48464 + *.ltframework)
48465 + if test "$linkmode,$pass" = "prog,link"; then
48466 + compile_deplibs="$deplib $compile_deplibs"
48467 + finalize_deplibs="$deplib $finalize_deplibs"
48468 + else
48469 + deplibs="$deplib $deplibs"
48470 + if test "$linkmode" = lib ; then
48471 + case "$new_inherited_linker_flags " in
48472 + *" $deplib "*) ;;
48473 + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
48474 + esac
48475 + fi
48476 + fi
48477 + continue
48478 + ;;
48479 + -L*)
48480 + case $linkmode in
48481 + lib)
48482 + deplibs="$deplib $deplibs"
48483 + test "$pass" = conv && continue
48484 + newdependency_libs="$deplib $newdependency_libs"
48485 + func_stripname '-L' '' "$deplib"
48486 + newlib_search_path="$newlib_search_path $func_stripname_result"
48487 + ;;
48488 + prog)
48489 + if test "$pass" = conv; then
48490 + deplibs="$deplib $deplibs"
48491 + continue
48492 + fi
48493 + if test "$pass" = scan; then
48494 + deplibs="$deplib $deplibs"
48495 + else
48496 + compile_deplibs="$deplib $compile_deplibs"
48497 + finalize_deplibs="$deplib $finalize_deplibs"
48498 + fi
48499 + func_stripname '-L' '' "$deplib"
48500 + newlib_search_path="$newlib_search_path $func_stripname_result"
48501 + ;;
48502 + *)
48503 + func_warning "\`-L' is ignored for archives/objects"
48504 + ;;
48505 + esac # linkmode
48506 + continue
48507 + ;; # -L
48508 + -R*)
48509 + if test "$pass" = link; then
48510 + func_stripname '-R' '' "$deplib"
48511 + dir=$func_stripname_result
48512 + # Make sure the xrpath contains only unique directories.
48513 + case "$xrpath " in
48514 + *" $dir "*) ;;
48515 + *) xrpath="$xrpath $dir" ;;
48516 + esac
48517 + fi
48518 + deplibs="$deplib $deplibs"
48519 + continue
48520 + ;;
48521 + *.la) lib="$deplib" ;;
48522 + *.$libext)
48523 + if test "$pass" = conv; then
48524 + deplibs="$deplib $deplibs"
48525 + continue
48526 + fi
48527 + case $linkmode in
48528 + lib)
48529 + # Linking convenience modules into shared libraries is allowed,
48530 + # but linking other static libraries is non-portable.
48531 + case " $dlpreconveniencelibs " in
48532 + *" $deplib "*) ;;
48533 + *)
48534 + valid_a_lib=no
48535 + case $deplibs_check_method in
48536 + match_pattern*)
48537 + set dummy $deplibs_check_method; shift
48538 + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
48539 + if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
48540 + | $EGREP "$match_pattern_regex" > /dev/null; then
48541 + valid_a_lib=yes
48542 + fi
48543 + ;;
48544 + pass_all)
48545 + valid_a_lib=yes
48546 + ;;
48547 + esac
48548 + if test "$valid_a_lib" != yes; then
48549 + $ECHO
48550 + $ECHO "*** Warning: Trying to link with static lib archive $deplib."
48551 + $ECHO "*** I have the capability to make that library automatically link in when"
48552 + $ECHO "*** you link to this library. But I can only do this if you have a"
48553 + $ECHO "*** shared version of the library, which you do not appear to have"
48554 + $ECHO "*** because the file extensions .$libext of this argument makes me believe"
48555 + $ECHO "*** that it is just a static archive that I should not use here."
48556 + else
48557 + $ECHO
48558 + $ECHO "*** Warning: Linking the shared library $output against the"
48559 + $ECHO "*** static library $deplib is not portable!"
48560 + deplibs="$deplib $deplibs"
48561 + fi
48562 + ;;
48563 + esac
48564 + continue
48565 + ;;
48566 + prog)
48567 + if test "$pass" != link; then
48568 + deplibs="$deplib $deplibs"
48569 + else
48570 + compile_deplibs="$deplib $compile_deplibs"
48571 + finalize_deplibs="$deplib $finalize_deplibs"
48572 + fi
48573 + continue
48574 + ;;
48575 + esac # linkmode
48576 + ;; # *.$libext
48577 + *.lo | *.$objext)
48578 + if test "$pass" = conv; then
48579 + deplibs="$deplib $deplibs"
48580 + elif test "$linkmode" = prog; then
48581 + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
48582 + # If there is no dlopen support or we're linking statically,
48583 + # we need to preload.
48584 + newdlprefiles="$newdlprefiles $deplib"
48585 + compile_deplibs="$deplib $compile_deplibs"
48586 + finalize_deplibs="$deplib $finalize_deplibs"
48587 + else
48588 + newdlfiles="$newdlfiles $deplib"
48589 + fi
48590 + fi
48591 + continue
48592 + ;;
48593 + %DEPLIBS%)
48594 + alldeplibs=yes
48595 + continue
48596 + ;;
48597 + esac # case $deplib
48598 +
48599 + if test "$found" = yes || test -f "$lib"; then :
48600 + else
48601 + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
48602 + fi
48603 +
48604 + # Check to see that this really is a libtool archive.
48605 + func_lalib_unsafe_p "$lib" \
48606 + || func_fatal_error "\`$lib' is not a valid libtool archive"
48607 +
48608 + func_dirname "$lib" "" "."
48609 + ladir="$func_dirname_result"
48610 +
48611 + dlname=
48612 + dlopen=
48613 + dlpreopen=
48614 + libdir=
48615 + library_names=
48616 + old_library=
48617 + inherited_linker_flags=
48618 + # If the library was installed with an old release of libtool,
48619 + # it will not redefine variables installed, or shouldnotlink
48620 + installed=yes
48621 + shouldnotlink=no
48622 + avoidtemprpath=
48623 +
48624 +
48625 + # Read the .la file
48626 + func_source "$lib"
48627 +
48628 + # Convert "-framework foo" to "foo.ltframework"
48629 + if test -n "$inherited_linker_flags"; then
48630 + tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
48631 + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
48632 + case " $new_inherited_linker_flags " in
48633 + *" $tmp_inherited_linker_flag "*) ;;
48634 + *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
48635 + esac
48636 + done
48637 + fi
48638 + dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
48639 + if test "$linkmode,$pass" = "prog,link"; then
48640 + compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
48641 + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
48642 + else
48643 + compiler_flags="$compiler_flags $inherited_linker_flags"
48644 + fi
48645 + if test "$linkmode,$pass" = "lib,link" ||
48646 + test "$linkmode,$pass" = "prog,scan" ||
48647 + { test "$linkmode" != prog && test "$linkmode" != lib; }; then
48648 + test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
48649 + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
48650 + fi
48651 +
48652 + if test "$pass" = conv; then
48653 + # Only check for convenience libraries
48654 + deplibs="$lib $deplibs"
48655 + if test -z "$libdir"; then
48656 + if test -z "$old_library"; then
48657 + func_fatal_error "cannot find name of link library for \`$lib'"
48658 + fi
48659 + # It is a libtool convenience library, so add in its objects.
48660 + convenience="$convenience $ladir/$objdir/$old_library"
48661 + old_convenience="$old_convenience $ladir/$objdir/$old_library"
48662 + elif test "$linkmode" != prog && test "$linkmode" != lib; then
48663 + func_fatal_error "\`$lib' is not a convenience library"
48664 + fi
48665 + tmp_libs=
48666 + for deplib in $dependency_libs; do
48667 + deplibs="$deplib $deplibs"
48668 + if $opt_duplicate_deps ; then
48669 + case "$tmp_libs " in
48670 + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
48671 + esac
48672 + fi
48673 + tmp_libs="$tmp_libs $deplib"
48674 + done
48675 + continue
48676 + fi # $pass = conv
48677 +
48678 +
48679 + # Get the name of the library we link against.
48680 + linklib=
48681 + for l in $old_library $library_names; do
48682 + linklib="$l"
48683 + done
48684 + if test -z "$linklib"; then
48685 + func_fatal_error "cannot find name of link library for \`$lib'"
48686 + fi
48687 +
48688 + # This library was specified with -dlopen.
48689 + if test "$pass" = dlopen; then
48690 + if test -z "$libdir"; then
48691 + func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
48692 + fi
48693 + if test -z "$dlname" ||
48694 + test "$dlopen_support" != yes ||
48695 + test "$build_libtool_libs" = no; then
48696 + # If there is no dlname, no dlopen support or we're linking
48697 + # statically, we need to preload. We also need to preload any
48698 + # dependent libraries so libltdl's deplib preloader doesn't
48699 + # bomb out in the load deplibs phase.
48700 + dlprefiles="$dlprefiles $lib $dependency_libs"
48701 + else
48702 + newdlfiles="$newdlfiles $lib"
48703 + fi
48704 + continue
48705 + fi # $pass = dlopen
48706 +
48707 + # We need an absolute path.
48708 + case $ladir in
48709 + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
48710 + *)
48711 + abs_ladir=`cd "$ladir" && pwd`
48712 + if test -z "$abs_ladir"; then
48713 + func_warning "cannot determine absolute directory name of \`$ladir'"
48714 + func_warning "passing it literally to the linker, although it might fail"
48715 + abs_ladir="$ladir"
48716 + fi
48717 + ;;
48718 + esac
48719 + func_basename "$lib"
48720 + laname="$func_basename_result"
48721 +
48722 + # Find the relevant object directory and library name.
48723 + if test "X$installed" = Xyes; then
48724 + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
48725 + func_warning "library \`$lib' was moved."
48726 + dir="$ladir"
48727 + absdir="$abs_ladir"
48728 + libdir="$abs_ladir"
48729 + else
48730 + dir="$libdir"
48731 + absdir="$libdir"
48732 + fi
48733 + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
48734 + else
48735 + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
48736 + dir="$ladir"
48737 + absdir="$abs_ladir"
48738 + # Remove this search path later
48739 + notinst_path="$notinst_path $abs_ladir"
48740 + else
48741 + dir="$ladir/$objdir"
48742 + absdir="$abs_ladir/$objdir"
48743 + # Remove this search path later
48744 + notinst_path="$notinst_path $abs_ladir"
48745 + fi
48746 + fi # $installed = yes
48747 + func_stripname 'lib' '.la' "$laname"
48748 + name=$func_stripname_result
48749 +
48750 + # This library was specified with -dlpreopen.
48751 + if test "$pass" = dlpreopen; then
48752 + if test -z "$libdir" && test "$linkmode" = prog; then
48753 + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
48754 + fi
48755 + # Prefer using a static library (so that no silly _DYNAMIC symbols
48756 + # are required to link).
48757 + if test -n "$old_library"; then
48758 + newdlprefiles="$newdlprefiles $dir/$old_library"
48759 + # Keep a list of preopened convenience libraries to check
48760 + # that they are being used correctly in the link pass.
48761 + test -z "$libdir" && \
48762 + dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
48763 + # Otherwise, use the dlname, so that lt_dlopen finds it.
48764 + elif test -n "$dlname"; then
48765 + newdlprefiles="$newdlprefiles $dir/$dlname"
48766 + else
48767 + newdlprefiles="$newdlprefiles $dir/$linklib"
48768 + fi
48769 + fi # $pass = dlpreopen
48770 +
48771 + if test -z "$libdir"; then
48772 + # Link the convenience library
48773 + if test "$linkmode" = lib; then
48774 + deplibs="$dir/$old_library $deplibs"
48775 + elif test "$linkmode,$pass" = "prog,link"; then
48776 + compile_deplibs="$dir/$old_library $compile_deplibs"
48777 + finalize_deplibs="$dir/$old_library $finalize_deplibs"
48778 + else
48779 + deplibs="$lib $deplibs" # used for prog,scan pass
48780 + fi
48781 + continue
48782 + fi
48783 +
48784 +
48785 + if test "$linkmode" = prog && test "$pass" != link; then
48786 + newlib_search_path="$newlib_search_path $ladir"
48787 + deplibs="$lib $deplibs"
48788 +
48789 + linkalldeplibs=no
48790 + if test "$link_all_deplibs" != no || test -z "$library_names" ||
48791 + test "$build_libtool_libs" = no; then
48792 + linkalldeplibs=yes
48793 + fi
48794 +
48795 + tmp_libs=
48796 + for deplib in $dependency_libs; do
48797 + case $deplib in
48798 + -L*) func_stripname '-L' '' "$deplib"
48799 + newlib_search_path="$newlib_search_path $func_stripname_result"
48800 + ;;
48801 + esac
48802 + # Need to link against all dependency_libs?
48803 + if test "$linkalldeplibs" = yes; then
48804 + deplibs="$deplib $deplibs"
48805 + else
48806 + # Need to hardcode shared library paths
48807 + # or/and link against static libraries
48808 + newdependency_libs="$deplib $newdependency_libs"
48809 + fi
48810 + if $opt_duplicate_deps ; then
48811 + case "$tmp_libs " in
48812 + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
48813 + esac
48814 + fi
48815 + tmp_libs="$tmp_libs $deplib"
48816 + done # for deplib
48817 + continue
48818 + fi # $linkmode = prog...
48819 +
48820 + if test "$linkmode,$pass" = "prog,link"; then
48821 + if test -n "$library_names" &&
48822 + { { test "$prefer_static_libs" = no ||
48823 + test "$prefer_static_libs,$installed" = "built,yes"; } ||
48824 + test -z "$old_library"; }; then
48825 + # We need to hardcode the library path
48826 + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
48827 + # Make sure the rpath contains only unique directories.
48828 + case "$temp_rpath:" in
48829 + *"$absdir:"*) ;;
48830 + *) temp_rpath="$temp_rpath$absdir:" ;;
48831 + esac
48832 + fi
48833 +
48834 + # Hardcode the library path.
48835 + # Skip directories that are in the system default run-time
48836 + # search path.
48837 + case " $sys_lib_dlsearch_path " in
48838 + *" $absdir "*) ;;
48839 + *)
48840 + case "$compile_rpath " in
48841 + *" $absdir "*) ;;
48842 + *) compile_rpath="$compile_rpath $absdir"
48843 + esac
48844 + ;;
48845 + esac
48846 + case " $sys_lib_dlsearch_path " in
48847 + *" $libdir "*) ;;
48848 + *)
48849 + case "$finalize_rpath " in
48850 + *" $libdir "*) ;;
48851 + *) finalize_rpath="$finalize_rpath $libdir"
48852 + esac
48853 + ;;
48854 + esac
48855 + fi # $linkmode,$pass = prog,link...
48856 +
48857 + if test "$alldeplibs" = yes &&
48858 + { test "$deplibs_check_method" = pass_all ||
48859 + { test "$build_libtool_libs" = yes &&
48860 + test -n "$library_names"; }; }; then
48861 + # We only need to search for static libraries
48862 + continue
48863 + fi
48864 + fi
48865 +
48866 + link_static=no # Whether the deplib will be linked statically
48867 + use_static_libs=$prefer_static_libs
48868 + if test "$use_static_libs" = built && test "$installed" = yes; then
48869 + use_static_libs=no
48870 + fi
48871 + if test -n "$library_names" &&
48872 + { test "$use_static_libs" = no || test -z "$old_library"; }; then
48873 + case $host in
48874 + *cygwin* | *mingw*)
48875 + # No point in relinking DLLs because paths are not encoded
48876 + notinst_deplibs="$notinst_deplibs $lib"
48877 + need_relink=no
48878 + ;;
48879 + *)
48880 + if test "$installed" = no; then
48881 + notinst_deplibs="$notinst_deplibs $lib"
48882 + need_relink=yes
48883 + fi
48884 + ;;
48885 + esac
48886 + # This is a shared library
48887 +
48888 + # Warn about portability, can't link against -module's on some
48889 + # systems (darwin). Don't bleat about dlopened modules though!
48890 + dlopenmodule=""
48891 + for dlpremoduletest in $dlprefiles; do
48892 + if test "X$dlpremoduletest" = "X$lib"; then
48893 + dlopenmodule="$dlpremoduletest"
48894 + break
48895 + fi
48896 + done
48897 + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
48898 + $ECHO
48899 + if test "$linkmode" = prog; then
48900 + $ECHO "*** Warning: Linking the executable $output against the loadable module"
48901 + else
48902 + $ECHO "*** Warning: Linking the shared library $output against the loadable module"
48903 + fi
48904 + $ECHO "*** $linklib is not portable!"
48905 + fi
48906 + if test "$linkmode" = lib &&
48907 + test "$hardcode_into_libs" = yes; then
48908 + # Hardcode the library path.
48909 + # Skip directories that are in the system default run-time
48910 + # search path.
48911 + case " $sys_lib_dlsearch_path " in
48912 + *" $absdir "*) ;;
48913 + *)
48914 + case "$compile_rpath " in
48915 + *" $absdir "*) ;;
48916 + *) compile_rpath="$compile_rpath $absdir"
48917 + esac
48918 + ;;
48919 + esac
48920 + case " $sys_lib_dlsearch_path " in
48921 + *" $libdir "*) ;;
48922 + *)
48923 + case "$finalize_rpath " in
48924 + *" $libdir "*) ;;
48925 + *) finalize_rpath="$finalize_rpath $libdir"
48926 + esac
48927 + ;;
48928 + esac
48929 + fi
48930 +
48931 + if test -n "$old_archive_from_expsyms_cmds"; then
48932 + # figure out the soname
48933 + set dummy $library_names
48934 + shift
48935 + realname="$1"
48936 + shift
48937 + libname=`eval "\\$ECHO \"$libname_spec\""`
48938 + # use dlname if we got it. it's perfectly good, no?
48939 + if test -n "$dlname"; then
48940 + soname="$dlname"
48941 + elif test -n "$soname_spec"; then
48942 + # bleh windows
48943 + case $host in
48944 + *cygwin* | mingw*)
48945 + major=`expr $current - $age`
48946 + versuffix="-$major"
48947 + ;;
48948 + esac
48949 + eval soname=\"$soname_spec\"
48950 + else
48951 + soname="$realname"
48952 + fi
48953 +
48954 + # Make a new name for the extract_expsyms_cmds to use
48955 + soroot="$soname"
48956 + func_basename "$soroot"
48957 + soname="$func_basename_result"
48958 + func_stripname 'lib' '.dll' "$soname"
48959 + newlib=libimp-$func_stripname_result.a
48960 +
48961 + # If the library has no export list, then create one now
48962 + if test -f "$output_objdir/$soname-def"; then :
48963 + else
48964 + func_echo "extracting exported symbol list from \`$soname'"
48965 + func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
48966 + fi
48967 +
48968 + # Create $newlib
48969 + if test -f "$output_objdir/$newlib"; then :; else
48970 + func_echo "generating import library for \`$soname'"
48971 + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
48972 + fi
48973 + # make sure the library variables are pointing to the new library
48974 + dir=$output_objdir
48975 + linklib=$newlib
48976 + fi # test -n "$old_archive_from_expsyms_cmds"
48977 +
48978 + if test "$linkmode" = prog || test "$mode" != relink; then
48979 + add_shlibpath=
48980 + add_dir=
48981 + add=
48982 + lib_linked=yes
48983 + case $hardcode_action in
48984 + immediate | unsupported)
48985 + if test "$hardcode_direct" = no; then
48986 + add="$dir/$linklib"
48987 + case $host in
48988 + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
48989 + *-*-sysv4*uw2*) add_dir="-L$dir" ;;
48990 + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
48991 + *-*-unixware7*) add_dir="-L$dir" ;;
48992 + *-*-darwin* )
48993 + # if the lib is a (non-dlopened) module then we can not
48994 + # link against it, someone is ignoring the earlier warnings
48995 + if /usr/bin/file -L $add 2> /dev/null |
48996 + $GREP ": [^:]* bundle" >/dev/null ; then
48997 + if test "X$dlopenmodule" != "X$lib"; then
48998 + $ECHO "*** Warning: lib $linklib is a module, not a shared library"
48999 + if test -z "$old_library" ; then
49000 + $ECHO
49001 + $ECHO "*** And there doesn't seem to be a static archive available"
49002 + $ECHO "*** The link will probably fail, sorry"
49003 + else
49004 + add="$dir/$old_library"
49005 + fi
49006 + elif test -n "$old_library"; then
49007 + add="$dir/$old_library"
49008 + fi
49009 + fi
49010 + esac
49011 + elif test "$hardcode_minus_L" = no; then
49012 + case $host in
49013 + *-*-sunos*) add_shlibpath="$dir" ;;
49014 + esac
49015 + add_dir="-L$dir"
49016 + add="-l$name"
49017 + elif test "$hardcode_shlibpath_var" = no; then
49018 + add_shlibpath="$dir"
49019 + add="-l$name"
49020 + else
49021 + lib_linked=no
49022 + fi
49023 + ;;
49024 + relink)
49025 + if test "$hardcode_direct" = yes &&
49026 + test "$hardcode_direct_absolute" = no; then
49027 + add="$dir/$linklib"
49028 + elif test "$hardcode_minus_L" = yes; then
49029 + add_dir="-L$dir"
49030 + # Try looking first in the location we're being installed to.
49031 + if test -n "$inst_prefix_dir"; then
49032 + case $libdir in
49033 + [\\/]*)
49034 + add_dir="$add_dir -L$inst_prefix_dir$libdir"
49035 + ;;
49036 + esac
49037 + fi
49038 + add="-l$name"
49039 + elif test "$hardcode_shlibpath_var" = yes; then
49040 + add_shlibpath="$dir"
49041 + add="-l$name"
49042 + else
49043 + lib_linked=no
49044 + fi
49045 + ;;
49046 + *) lib_linked=no ;;
49047 + esac
49048 +
49049 + if test "$lib_linked" != yes; then
49050 + func_fatal_configuration "unsupported hardcode properties"
49051 + fi
49052 +
49053 + if test -n "$add_shlibpath"; then
49054 + case :$compile_shlibpath: in
49055 + *":$add_shlibpath:"*) ;;
49056 + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
49057 + esac
49058 + fi
49059 + if test "$linkmode" = prog; then
49060 + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
49061 + test -n "$add" && compile_deplibs="$add $compile_deplibs"
49062 + else
49063 + test -n "$add_dir" && deplibs="$add_dir $deplibs"
49064 + test -n "$add" && deplibs="$add $deplibs"
49065 + if test "$hardcode_direct" != yes &&
49066 + test "$hardcode_minus_L" != yes &&
49067 + test "$hardcode_shlibpath_var" = yes; then
49068 + case :$finalize_shlibpath: in
49069 + *":$libdir:"*) ;;
49070 + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
49071 + esac
49072 + fi
49073 + fi
49074 + fi
49075 +
49076 + if test "$linkmode" = prog || test "$mode" = relink; then
49077 + add_shlibpath=
49078 + add_dir=
49079 + add=
49080 + # Finalize command for both is simple: just hardcode it.
49081 + if test "$hardcode_direct" = yes &&
49082 + test "$hardcode_direct_absolute" = no; then
49083 + add="$libdir/$linklib"
49084 + elif test "$hardcode_minus_L" = yes; then
49085 + add_dir="-L$libdir"
49086 + add="-l$name"
49087 + elif test "$hardcode_shlibpath_var" = yes; then
49088 + case :$finalize_shlibpath: in
49089 + *":$libdir:"*) ;;
49090 + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
49091 + esac
49092 + add="-l$name"
49093 + elif test "$hardcode_automatic" = yes; then
49094 + if test -n "$inst_prefix_dir" &&
49095 + test -f "$inst_prefix_dir$libdir/$linklib" ; then
49096 + add="$inst_prefix_dir$libdir/$linklib"
49097 + else
49098 + add="$libdir/$linklib"
49099 + fi
49100 + else
49101 + # We cannot seem to hardcode it, guess we'll fake it.
49102 + add_dir="-L$libdir"
49103 + # Try looking first in the location we're being installed to.
49104 + if test -n "$inst_prefix_dir"; then
49105 + case $libdir in
49106 + [\\/]*)
49107 + add_dir="$add_dir -L$inst_prefix_dir$libdir"
49108 + ;;
49109 + esac
49110 + fi
49111 + add="-l$name"
49112 + fi
49113 +
49114 + if test "$linkmode" = prog; then
49115 + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
49116 + test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
49117 + else
49118 + test -n "$add_dir" && deplibs="$add_dir $deplibs"
49119 + test -n "$add" && deplibs="$add $deplibs"
49120 + fi
49121 + fi
49122 + elif test "$linkmode" = prog; then
49123 + # Here we assume that one of hardcode_direct or hardcode_minus_L
49124 + # is not unsupported. This is valid on all known static and
49125 + # shared platforms.
49126 + if test "$hardcode_direct" != unsupported; then
49127 + test -n "$old_library" && linklib="$old_library"
49128 + compile_deplibs="$dir/$linklib $compile_deplibs"
49129 + finalize_deplibs="$dir/$linklib $finalize_deplibs"
49130 + else
49131 + compile_deplibs="-l$name -L$dir $compile_deplibs"
49132 + finalize_deplibs="-l$name -L$dir $finalize_deplibs"
49133 + fi
49134 + elif test "$build_libtool_libs" = yes; then
49135 + # Not a shared library
49136 + if test "$deplibs_check_method" != pass_all; then
49137 + # We're trying link a shared library against a static one
49138 + # but the system doesn't support it.
49139 +
49140 + # Just print a warning and add the library to dependency_libs so
49141 + # that the program can be linked against the static library.
49142 + $ECHO
49143 + $ECHO "*** Warning: This system can not link to static lib archive $lib."
49144 + $ECHO "*** I have the capability to make that library automatically link in when"
49145 + $ECHO "*** you link to this library. But I can only do this if you have a"
49146 + $ECHO "*** shared version of the library, which you do not appear to have."
49147 + if test "$module" = yes; then
49148 + $ECHO "*** But as you try to build a module library, libtool will still create "
49149 + $ECHO "*** a static module, that should work as long as the dlopening application"
49150 + $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
49151 + if test -z "$global_symbol_pipe"; then
49152 + $ECHO
49153 + $ECHO "*** However, this would only work if libtool was able to extract symbol"
49154 + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
49155 + $ECHO "*** not find such a program. So, this module is probably useless."
49156 + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
49157 + fi
49158 + if test "$build_old_libs" = no; then
49159 + build_libtool_libs=module
49160 + build_old_libs=yes
49161 + else
49162 + build_libtool_libs=no
49163 + fi
49164 + fi
49165 + else
49166 + deplibs="$dir/$old_library $deplibs"
49167 + link_static=yes
49168 + fi
49169 + fi # link shared/static library?
49170 +
49171 + if test "$linkmode" = lib; then
49172 + if test -n "$dependency_libs" &&
49173 + { test "$hardcode_into_libs" != yes ||
49174 + test "$build_old_libs" = yes ||
49175 + test "$link_static" = yes; }; then
49176 + # Extract -R from dependency_libs
49177 + temp_deplibs=
49178 + for libdir in $dependency_libs; do
49179 + case $libdir in
49180 + -R*) func_stripname '-R' '' "$libdir"
49181 + temp_xrpath=$func_stripname_result
49182 + case " $xrpath " in
49183 + *" $temp_xrpath "*) ;;
49184 + *) xrpath="$xrpath $temp_xrpath";;
49185 + esac;;
49186 + *) temp_deplibs="$temp_deplibs $libdir";;
49187 + esac
49188 + done
49189 + dependency_libs="$temp_deplibs"
49190 + fi
49191 +
49192 + newlib_search_path="$newlib_search_path $absdir"
49193 + # Link against this library
49194 + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
49195 + # ... and its dependency_libs
49196 + tmp_libs=
49197 + for deplib in $dependency_libs; do
49198 + newdependency_libs="$deplib $newdependency_libs"
49199 + if $opt_duplicate_deps ; then
49200 + case "$tmp_libs " in
49201 + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49202 + esac
49203 + fi
49204 + tmp_libs="$tmp_libs $deplib"
49205 + done
49206 +
49207 + if test "$link_all_deplibs" != no; then
49208 + # Add the search paths of all dependency libraries
49209 + for deplib in $dependency_libs; do
49210 + case $deplib in
49211 + -L*) path="$deplib" ;;
49212 + *.la)
49213 + func_dirname "$deplib" "" "."
49214 + dir="$func_dirname_result"
49215 + # We need an absolute path.
49216 + case $dir in
49217 + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
49218 + *)
49219 + absdir=`cd "$dir" && pwd`
49220 + if test -z "$absdir"; then
49221 + func_warning "cannot determine absolute directory name of \`$dir'"
49222 + absdir="$dir"
49223 + fi
49224 + ;;
49225 + esac
49226 + if $GREP "^installed=no" $deplib > /dev/null; then
49227 + case $host in
49228 + *-*-darwin*)
49229 + depdepl=
49230 + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
49231 + if test -n "$deplibrary_names" ; then
49232 + for tmp in $deplibrary_names ; do
49233 + depdepl=$tmp
49234 + done
49235 + if test -f "$absdir/$objdir/$depdepl" ; then
49236 + depdepl="$absdir/$objdir/$depdepl"
49237 + darwin_install_name=`otool -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
49238 + darwin_install_name=`$ECHO $darwin_install_name`
49239 + if test -z "$darwin_install_name"; then
49240 + darwin_install_name=`otool64 -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
49241 + darwin_install_name=`$ECHO $darwin_install_name`
49242 + fi
49243 + compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
49244 + linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
49245 + path=
49246 + fi
49247 + fi
49248 + ;;
49249 + *)
49250 + path="-L$absdir/$objdir"
49251 + ;;
49252 + esac
49253 + else
49254 + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
49255 + test -z "$libdir" && \
49256 + func_fatal_error "\`$deplib' is not a valid libtool archive"
49257 + test "$absdir" != "$libdir" && \
49258 + func_warning "\`$deplib' seems to be moved"
49259 +
49260 + path="-L$absdir"
49261 + fi
49262 + ;;
49263 + esac
49264 + case " $deplibs " in
49265 + *" $path "*) ;;
49266 + *) deplibs="$path $deplibs" ;;
49267 + esac
49268 + done
49269 + fi # link_all_deplibs != no
49270 + fi # linkmode = lib
49271 + done # for deplib in $libs
49272 + dependency_libs="$newdependency_libs"
49273 + if test "$pass" = dlpreopen; then
49274 + # Link the dlpreopened libraries before other libraries
49275 + for deplib in $save_deplibs; do
49276 + deplibs="$deplib $deplibs"
49277 + done
49278 + fi
49279 + if test "$pass" != dlopen; then
49280 + if test "$pass" != conv; then
49281 + # Make sure lib_search_path contains only unique directories.
49282 + lib_search_path=
49283 + for dir in $newlib_search_path; do
49284 + case "$lib_search_path " in
49285 + *" $dir "*) ;;
49286 + *) lib_search_path="$lib_search_path $dir" ;;
49287 + esac
49288 + done
49289 + newlib_search_path=
49290 + fi
49291 +
49292 + if test "$linkmode,$pass" != "prog,link"; then
49293 + vars="deplibs"
49294 + else
49295 + vars="compile_deplibs finalize_deplibs"
49296 + fi
49297 + for var in $vars dependency_libs; do
49298 + # Add libraries to $var in reverse order
49299 + eval tmp_libs=\"\$$var\"
49300 + new_libs=
49301 + for deplib in $tmp_libs; do
49302 + # FIXME: Pedantically, this is the right thing to do, so
49303 + # that some nasty dependency loop isn't accidentally
49304 + # broken:
49305 + #new_libs="$deplib $new_libs"
49306 + # Pragmatically, this seems to cause very few problems in
49307 + # practice:
49308 + case $deplib in
49309 + -L*) new_libs="$deplib $new_libs" ;;
49310 + -R*) ;;
49311 + *)
49312 + # And here is the reason: when a library appears more
49313 + # than once as an explicit dependence of a library, or
49314 + # is implicitly linked in more than once by the
49315 + # compiler, it is considered special, and multiple
49316 + # occurrences thereof are not removed. Compare this
49317 + # with having the same library being listed as a
49318 + # dependency of multiple other libraries: in this case,
49319 + # we know (pedantically, we assume) the library does not
49320 + # need to be listed more than once, so we keep only the
49321 + # last copy. This is not always right, but it is rare
49322 + # enough that we require users that really mean to play
49323 + # such unportable linking tricks to link the library
49324 + # using -Wl,-lname, so that libtool does not consider it
49325 + # for duplicate removal.
49326 + case " $specialdeplibs " in
49327 + *" $deplib "*) new_libs="$deplib $new_libs" ;;
49328 + *)
49329 + case " $new_libs " in
49330 + *" $deplib "*) ;;
49331 + *) new_libs="$deplib $new_libs" ;;
49332 + esac
49333 + ;;
49334 + esac
49335 + ;;
49336 + esac
49337 + done
49338 + tmp_libs=
49339 + for deplib in $new_libs; do
49340 + case $deplib in
49341 + -L*)
49342 + case " $tmp_libs " in
49343 + *" $deplib "*) ;;
49344 + *) tmp_libs="$tmp_libs $deplib" ;;
49345 + esac
49346 + ;;
49347 + *) tmp_libs="$tmp_libs $deplib" ;;
49348 + esac
49349 + done
49350 + eval $var=\"$tmp_libs\"
49351 + done # for var
49352 + fi
49353 + # Last step: remove runtime libs from dependency_libs
49354 + # (they stay in deplibs)
49355 + tmp_libs=
49356 + for i in $dependency_libs ; do
49357 + case " $predeps $postdeps $compiler_lib_search_path " in
49358 + *" $i "*)
49359 + i=""
49360 + ;;
49361 + esac
49362 + if test -n "$i" ; then
49363 + tmp_libs="$tmp_libs $i"
49364 + fi
49365 + done
49366 + dependency_libs=$tmp_libs
49367 + done # for pass
49368 + if test "$linkmode" = prog; then
49369 + dlfiles="$newdlfiles"
49370 + fi
49371 + if test "$linkmode" = prog || test "$linkmode" = lib; then
49372 + dlprefiles="$newdlprefiles"
49373 + fi
49374 +
49375 + case $linkmode in
49376 + oldlib)
49377 + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
49378 + func_warning "\`-dlopen' is ignored for archives"
49379 + fi
49380 +
49381 + test -n "$deplibs" && \
49382 + func_warning "\`-l' and \`-L' are ignored for archives"
49383 +
49384 +
49385 + test -n "$rpath" && \
49386 + func_warning "\`-rpath' is ignored for archives"
49387 +
49388 + test -n "$xrpath" && \
49389 + func_warning "\`-R' is ignored for archives"
49390 +
49391 + test -n "$vinfo" && \
49392 + func_warning "\`-version-info/-version-number' is ignored for archives"
49393 +
49394 + test -n "$release" && \
49395 + func_warning "\`-release' is ignored for archives"
49396 +
49397 + test -n "$export_symbols$export_symbols_regex" && \
49398 + func_warning "\`-export-symbols' is ignored for archives"
49399 +
49400 + # Now set the variables for building old libraries.
49401 + build_libtool_libs=no
49402 + oldlibs="$output"
49403 + objs="$objs$old_deplibs"
49404 + ;;
49405 +
49406 + lib)
49407 + # Make sure we only generate libraries of the form `libNAME.la'.
49408 + case $outputname in
49409 + lib*)
49410 + func_stripname 'lib' '.la' "$outputname"
49411 + name=$func_stripname_result
49412 + eval shared_ext=\"$shrext_cmds\"
49413 + eval libname=\"$libname_spec\"
49414 + ;;
49415 + *)
49416 + test "$module" = no && \
49417 + func_fatal_help "libtool library \`$output' must begin with \`lib'"
49418 +
49419 + if test "$need_lib_prefix" != no; then
49420 + # Add the "lib" prefix for modules if required
49421 + func_stripname '' '.la' "$outputname"
49422 + name=$func_stripname_result
49423 + eval shared_ext=\"$shrext_cmds\"
49424 + eval libname=\"$libname_spec\"
49425 + else
49426 + func_stripname '' '.la' "$outputname"
49427 + libname=$func_stripname_result
49428 + fi
49429 + ;;
49430 + esac
49431 +
49432 + if test -n "$objs"; then
49433 + if test "$deplibs_check_method" != pass_all; then
49434 + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
49435 + else
49436 + $ECHO
49437 + $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
49438 + $ECHO "*** objects $objs is not portable!"
49439 + libobjs="$libobjs $objs"
49440 + fi
49441 + fi
49442 +
49443 + test "$dlself" != no && \
49444 + func_warning "\`-dlopen self' is ignored for libtool libraries"
49445 +
49446 + set dummy $rpath
49447 + shift
49448 + test "$#" -gt 1 && \
49449 + func_warning "ignoring multiple \`-rpath's for a libtool library"
49450 +
49451 + install_libdir="$1"
49452 +
49453 + oldlibs=
49454 + if test -z "$rpath"; then
49455 + if test "$build_libtool_libs" = yes; then
49456 + # Building a libtool convenience library.
49457 + # Some compilers have problems with a `.al' extension so
49458 + # convenience libraries should have the same extension an
49459 + # archive normally would.
49460 + oldlibs="$output_objdir/$libname.$libext $oldlibs"
49461 + build_libtool_libs=convenience
49462 + build_old_libs=yes
49463 + fi
49464 +
49465 + test -n "$vinfo" && \
49466 + func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
49467 +
49468 + test -n "$release" && \
49469 + func_warning "\`-release' is ignored for convenience libraries"
49470 + else
49471 +
49472 + # Parse the version information argument.
49473 + save_ifs="$IFS"; IFS=':'
49474 + set dummy $vinfo 0 0 0
49475 + shift
49476 + IFS="$save_ifs"
49477 +
49478 + test -n "$7" && \
49479 + func_fatal_help "too many parameters to \`-version-info'"
49480 +
49481 + # convert absolute version numbers to libtool ages
49482 + # this retains compatibility with .la files and attempts
49483 + # to make the code below a bit more comprehensible
49484 +
49485 + case $vinfo_number in
49486 + yes)
49487 + number_major="$1"
49488 + number_minor="$2"
49489 + number_revision="$3"
49490 + #
49491 + # There are really only two kinds -- those that
49492 + # use the current revision as the major version
49493 + # and those that subtract age and use age as
49494 + # a minor version. But, then there is irix
49495 + # which has an extra 1 added just for fun
49496 + #
49497 + case $version_type in
49498 + darwin|linux|osf|windows|none)
49499 + current=`expr $number_major + $number_minor`
49500 + age="$number_minor"
49501 + revision="$number_revision"
49502 + ;;
49503 + freebsd-aout|freebsd-elf|sunos)
49504 + current="$number_major"
49505 + revision="$number_minor"
49506 + age="0"
49507 + ;;
49508 + irix|nonstopux)
49509 + current=`expr $number_major + $number_minor - 1`
49510 + age="$number_minor"
49511 + revision="$number_minor"
49512 + ;;
49513 + esac
49514 + ;;
49515 + no)
49516 + current="$1"
49517 + revision="$2"
49518 + age="$3"
49519 + ;;
49520 + esac
49521 +
49522 + # Check that each of the things are valid numbers.
49523 + case $current in
49524 + 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]) ;;
49525 + *)
49526 + func_error "CURRENT \`$current' must be a nonnegative integer"
49527 + func_fatal_error "\`$vinfo' is not valid version information"
49528 + ;;
49529 + esac
49530 +
49531 + case $revision in
49532 + 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]) ;;
49533 + *)
49534 + func_error "REVISION \`$revision' must be a nonnegative integer"
49535 + func_fatal_error "\`$vinfo' is not valid version information"
49536 + ;;
49537 + esac
49538 +
49539 + case $age in
49540 + 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]) ;;
49541 + *)
49542 + func_error "AGE \`$age' must be a nonnegative integer"
49543 + func_fatal_error "\`$vinfo' is not valid version information"
49544 + ;;
49545 + esac
49546 +
49547 + if test "$age" -gt "$current"; then
49548 + func_error "AGE \`$age' is greater than the current interface number \`$current'"
49549 + func_fatal_error "\`$vinfo' is not valid version information"
49550 + fi
49551 +
49552 + # Calculate the version variables.
49553 + major=
49554 + versuffix=
49555 + verstring=
49556 + case $version_type in
49557 + none) ;;
49558 +
49559 + darwin)
49560 + # Like Linux, but with the current version available in
49561 + # verstring for coding it into the library header
49562 + major=.`expr $current - $age`
49563 + versuffix="$major.$age.$revision"
49564 + # Darwin ld doesn't like 0 for these options...
49565 + minor_current=`expr $current + 1`
49566 + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
49567 + ;;
49568 +
49569 + freebsd-aout)
49570 + major=".$current"
49571 + versuffix=".$current.$revision";
49572 + ;;
49573 +
49574 + freebsd-elf)
49575 + major=".$current"
49576 + versuffix=".$current"
49577 + ;;
49578 +
49579 + irix | nonstopux)
49580 + major=`expr $current - $age + 1`
49581 +
49582 + case $version_type in
49583 + nonstopux) verstring_prefix=nonstopux ;;
49584 + *) verstring_prefix=sgi ;;
49585 + esac
49586 + verstring="$verstring_prefix$major.$revision"
49587 +
49588 + # Add in all the interfaces that we are compatible with.
49589 + loop=$revision
49590 + while test "$loop" -ne 0; do
49591 + iface=`expr $revision - $loop`
49592 + loop=`expr $loop - 1`
49593 + verstring="$verstring_prefix$major.$iface:$verstring"
49594 + done
49595 +
49596 + # Before this point, $major must not contain `.'.
49597 + major=.$major
49598 + versuffix="$major.$revision"
49599 + ;;
49600 +
49601 + linux)
49602 + major=.`expr $current - $age`
49603 + versuffix="$major.$age.$revision"
49604 + ;;
49605 +
49606 + osf)
49607 + major=.`expr $current - $age`
49608 + versuffix=".$current.$age.$revision"
49609 + verstring="$current.$age.$revision"
49610 +
49611 + # Add in all the interfaces that we are compatible with.
49612 + loop=$age
49613 + while test "$loop" -ne 0; do
49614 + iface=`expr $current - $loop`
49615 + loop=`expr $loop - 1`
49616 + verstring="$verstring:${iface}.0"
49617 + done
49618 +
49619 + # Make executables depend on our current version.
49620 + verstring="$verstring:${current}.0"
49621 + ;;
49622 +
49623 + qnx)
49624 + major=".$current"
49625 + versuffix=".$current"
49626 + ;;
49627 +
49628 + sunos)
49629 + major=".$current"
49630 + versuffix=".$current.$revision"
49631 + ;;
49632 +
49633 + windows)
49634 + # Use '-' rather than '.', since we only want one
49635 + # extension on DOS 8.3 filesystems.
49636 + major=`expr $current - $age`
49637 + versuffix="-$major"
49638 + ;;
49639 +
49640 + *)
49641 + func_fatal_configuration "unknown library version type \`$version_type'"
49642 + ;;
49643 + esac
49644 +
49645 + # Clear the version info if we defaulted, and they specified a release.
49646 + if test -z "$vinfo" && test -n "$release"; then
49647 + major=
49648 + case $version_type in
49649 + darwin)
49650 + # we can't check for "0.0" in archive_cmds due to quoting
49651 + # problems, so we reset it completely
49652 + verstring=
49653 + ;;
49654 + *)
49655 + verstring="0.0"
49656 + ;;
49657 + esac
49658 + if test "$need_version" = no; then
49659 + versuffix=
49660 + else
49661 + versuffix=".0.0"
49662 + fi
49663 + fi
49664 +
49665 + # Remove version info from name if versioning should be avoided
49666 + if test "$avoid_version" = yes && test "$need_version" = no; then
49667 + major=
49668 + versuffix=
49669 + verstring=""
49670 + fi
49671 +
49672 + # Check to see if the archive will have undefined symbols.
49673 + if test "$allow_undefined" = yes; then
49674 + if test "$allow_undefined_flag" = unsupported; then
49675 + func_warning "undefined symbols not allowed in $host shared libraries"
49676 + build_libtool_libs=no
49677 + build_old_libs=yes
49678 + fi
49679 + else
49680 + # Don't allow undefined symbols.
49681 + allow_undefined_flag="$no_undefined_flag"
49682 + fi
49683 +
49684 + fi
49685 +
49686 + func_generate_dlsyms "$libname" "$libname" "yes"
49687 + libobjs="$libobjs $symfileobj"
49688 + test "X$libobjs" = "X " && libobjs=
49689 +
49690 + if test "$mode" != relink; then
49691 + # Remove our outputs, but don't remove object files since they
49692 + # may have been created when compiling PIC objects.
49693 + removelist=
49694 + tempremovelist=`$ECHO "$output_objdir/*"`
49695 + for p in $tempremovelist; do
49696 + case $p in
49697 + *.$objext)
49698 + ;;
49699 + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
49700 + if test "X$precious_files_regex" != "X"; then
49701 + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
49702 + then
49703 + continue
49704 + fi
49705 + fi
49706 + removelist="$removelist $p"
49707 + ;;
49708 + *) ;;
49709 + esac
49710 + done
49711 + test -n "$removelist" && \
49712 + func_show_eval "${RM}r \$removelist"
49713 + fi
49714 +
49715 + # Now set the variables for building old libraries.
49716 + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
49717 + oldlibs="$oldlibs $output_objdir/$libname.$libext"
49718 +
49719 + # Transform .lo files to .o files.
49720 + oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
49721 + fi
49722 +
49723 + # Eliminate all temporary directories.
49724 + #for path in $notinst_path; do
49725 + # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
49726 + # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
49727 + # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
49728 + #done
49729 +
49730 + if test -n "$xrpath"; then
49731 + # If the user specified any rpath flags, then add them.
49732 + temp_xrpath=
49733 + for libdir in $xrpath; do
49734 + temp_xrpath="$temp_xrpath -R$libdir"
49735 + case "$finalize_rpath " in
49736 + *" $libdir "*) ;;
49737 + *) finalize_rpath="$finalize_rpath $libdir" ;;
49738 + esac
49739 + done
49740 + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
49741 + dependency_libs="$temp_xrpath $dependency_libs"
49742 + fi
49743 + fi
49744 +
49745 + # Make sure dlfiles contains only unique files that won't be dlpreopened
49746 + old_dlfiles="$dlfiles"
49747 + dlfiles=
49748 + for lib in $old_dlfiles; do
49749 + case " $dlprefiles $dlfiles " in
49750 + *" $lib "*) ;;
49751 + *) dlfiles="$dlfiles $lib" ;;
49752 + esac
49753 + done
49754 +
49755 + # Make sure dlprefiles contains only unique files
49756 + old_dlprefiles="$dlprefiles"
49757 + dlprefiles=
49758 + for lib in $old_dlprefiles; do
49759 + case "$dlprefiles " in
49760 + *" $lib "*) ;;
49761 + *) dlprefiles="$dlprefiles $lib" ;;
49762 + esac
49763 + done
49764 +
49765 + if test "$build_libtool_libs" = yes; then
49766 + if test -n "$rpath"; then
49767 + case $host in
49768 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
49769 + # these systems don't actually have a c library (as such)!
49770 + ;;
49771 + *-*-rhapsody* | *-*-darwin1.[012])
49772 + # Rhapsody C library is in the System framework
49773 + deplibs="$deplibs System.ltframework"
49774 + ;;
49775 + *-*-netbsd*)
49776 + # Don't link with libc until the a.out ld.so is fixed.
49777 + ;;
49778 + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
49779 + # Do not include libc due to us having libc/libc_r.
49780 + ;;
49781 + *-*-sco3.2v5* | *-*-sco5v6*)
49782 + # Causes problems with __ctype
49783 + ;;
49784 + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
49785 + # Compiler inserts libc in the correct place for threads to work
49786 + ;;
49787 + *)
49788 + # Add libc to deplibs on all other systems if necessary.
49789 + if test "$build_libtool_need_lc" = "yes"; then
49790 + deplibs="$deplibs -lc"
49791 + fi
49792 + ;;
49793 + esac
49794 + fi
49795 +
49796 + # Transform deplibs into only deplibs that can be linked in shared.
49797 + name_save=$name
49798 + libname_save=$libname
49799 + release_save=$release
49800 + versuffix_save=$versuffix
49801 + major_save=$major
49802 + # I'm not sure if I'm treating the release correctly. I think
49803 + # release should show up in the -l (ie -lgmp5) so we don't want to
49804 + # add it in twice. Is that correct?
49805 + release=""
49806 + versuffix=""
49807 + major=""
49808 + newdeplibs=
49809 + droppeddeps=no
49810 + case $deplibs_check_method in
49811 + pass_all)
49812 + # Don't check for shared/static. Everything works.
49813 + # This might be a little naive. We might want to check
49814 + # whether the library exists or not. But this is on
49815 + # osf3 & osf4 and I'm not really sure... Just
49816 + # implementing what was already the behavior.
49817 + newdeplibs=$deplibs
49818 + ;;
49819 + test_compile)
49820 + # This code stresses the "libraries are programs" paradigm to its
49821 + # limits. Maybe even breaks it. We compile a program, linking it
49822 + # against the deplibs as a proxy for the library. Then we can check
49823 + # whether they linked in statically or dynamically with ldd.
49824 + $opt_dry_run || $RM conftest.c
49825 + cat > conftest.c <<EOF
49826 + int main() { return 0; }
49827 +EOF
49828 + $opt_dry_run || $RM conftest
49829 + if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
49830 + ldd_output=`ldd conftest`
49831 + for i in $deplibs; do
49832 + name=`expr $i : '-l\(.*\)'`
49833 + # If $name is empty we are operating on a -L argument.
49834 + if test "$name" != "" && test "$name" != "0"; then
49835 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
49836 + case " $predeps $postdeps " in
49837 + *" $i "*)
49838 + newdeplibs="$newdeplibs $i"
49839 + i=""
49840 + ;;
49841 + esac
49842 + fi
49843 + if test -n "$i" ; then
49844 + libname=`eval "\\$ECHO \"$libname_spec\""`
49845 + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
49846 + set dummy $deplib_matches; shift
49847 + deplib_match=$1
49848 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
49849 + newdeplibs="$newdeplibs $i"
49850 + else
49851 + droppeddeps=yes
49852 + $ECHO
49853 + $ECHO "*** Warning: dynamic linker does not accept needed library $i."
49854 + $ECHO "*** I have the capability to make that library automatically link in when"
49855 + $ECHO "*** you link to this library. But I can only do this if you have a"
49856 + $ECHO "*** shared version of the library, which I believe you do not have"
49857 + $ECHO "*** because a test_compile did reveal that the linker did not use it for"
49858 + $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
49859 + fi
49860 + fi
49861 + else
49862 + newdeplibs="$newdeplibs $i"
49863 + fi
49864 + done
49865 + else
49866 + # Error occurred in the first compile. Let's try to salvage
49867 + # the situation: Compile a separate program for each library.
49868 + for i in $deplibs; do
49869 + name=`expr $i : '-l\(.*\)'`
49870 + # If $name is empty we are operating on a -L argument.
49871 + if test "$name" != "" && test "$name" != "0"; then
49872 + $opt_dry_run || $RM conftest
49873 + if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
49874 + ldd_output=`ldd conftest`
49875 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
49876 + case " $predeps $postdeps " in
49877 + *" $i "*)
49878 + newdeplibs="$newdeplibs $i"
49879 + i=""
49880 + ;;
49881 + esac
49882 + fi
49883 + if test -n "$i" ; then
49884 + libname=`eval "\\$ECHO \"$libname_spec\""`
49885 + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
49886 + set dummy $deplib_matches; shift
49887 + deplib_match=$1
49888 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
49889 + newdeplibs="$newdeplibs $i"
49890 + else
49891 + droppeddeps=yes
49892 + $ECHO
49893 + $ECHO "*** Warning: dynamic linker does not accept needed library $i."
49894 + $ECHO "*** I have the capability to make that library automatically link in when"
49895 + $ECHO "*** you link to this library. But I can only do this if you have a"
49896 + $ECHO "*** shared version of the library, which you do not appear to have"
49897 + $ECHO "*** because a test_compile did reveal that the linker did not use this one"
49898 + $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
49899 + fi
49900 + fi
49901 + else
49902 + droppeddeps=yes
49903 + $ECHO
49904 + $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
49905 + $ECHO "*** make it link in! You will probably need to install it or some"
49906 + $ECHO "*** library that it depends on before this library will be fully"
49907 + $ECHO "*** functional. Installing it before continuing would be even better."
49908 + fi
49909 + else
49910 + newdeplibs="$newdeplibs $i"
49911 + fi
49912 + done
49913 + fi
49914 + ;;
49915 + file_magic*)
49916 + set dummy $deplibs_check_method; shift
49917 + file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
49918 + for a_deplib in $deplibs; do
49919 + name=`expr $a_deplib : '-l\(.*\)'`
49920 + # If $name is empty we are operating on a -L argument.
49921 + if test "$name" != "" && test "$name" != "0"; then
49922 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
49923 + case " $predeps $postdeps " in
49924 + *" $a_deplib "*)
49925 + newdeplibs="$newdeplibs $a_deplib"
49926 + a_deplib=""
49927 + ;;
49928 + esac
49929 + fi
49930 + if test -n "$a_deplib" ; then
49931 + libname=`eval "\\$ECHO \"$libname_spec\""`
49932 + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
49933 + potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
49934 + for potent_lib in $potential_libs; do
49935 + # Follow soft links.
49936 + if ls -lLd "$potent_lib" 2>/dev/null |
49937 + $GREP " -> " >/dev/null; then
49938 + continue
49939 + fi
49940 + # The statement above tries to avoid entering an
49941 + # endless loop below, in case of cyclic links.
49942 + # We might still enter an endless loop, since a link
49943 + # loop can be closed while we follow links,
49944 + # but so what?
49945 + potlib="$potent_lib"
49946 + while test -h "$potlib" 2>/dev/null; do
49947 + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
49948 + case $potliblink in
49949 + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
49950 + *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
49951 + esac
49952 + done
49953 + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
49954 + $SED -e 10q |
49955 + $EGREP "$file_magic_regex" > /dev/null; then
49956 + newdeplibs="$newdeplibs $a_deplib"
49957 + a_deplib=""
49958 + break 2
49959 + fi
49960 + done
49961 + done
49962 + fi
49963 + if test -n "$a_deplib" ; then
49964 + droppeddeps=yes
49965 + $ECHO
49966 + $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
49967 + $ECHO "*** I have the capability to make that library automatically link in when"
49968 + $ECHO "*** you link to this library. But I can only do this if you have a"
49969 + $ECHO "*** shared version of the library, which you do not appear to have"
49970 + $ECHO "*** because I did check the linker path looking for a file starting"
49971 + if test -z "$potlib" ; then
49972 + $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
49973 + else
49974 + $ECHO "*** with $libname and none of the candidates passed a file format test"
49975 + $ECHO "*** using a file magic. Last file checked: $potlib"
49976 + fi
49977 + fi
49978 + else
49979 + # Add a -L argument.
49980 + newdeplibs="$newdeplibs $a_deplib"
49981 + fi
49982 + done # Gone through all deplibs.
49983 + ;;
49984 + match_pattern*)
49985 + set dummy $deplibs_check_method; shift
49986 + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
49987 + for a_deplib in $deplibs; do
49988 + name=`expr $a_deplib : '-l\(.*\)'`
49989 + # If $name is empty we are operating on a -L argument.
49990 + if test -n "$name" && test "$name" != "0"; then
49991 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
49992 + case " $predeps $postdeps " in
49993 + *" $a_deplib "*)
49994 + newdeplibs="$newdeplibs $a_deplib"
49995 + a_deplib=""
49996 + ;;
49997 + esac
49998 + fi
49999 + if test -n "$a_deplib" ; then
50000 + libname=`eval "\\$ECHO \"$libname_spec\""`
50001 + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
50002 + potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
50003 + for potent_lib in $potential_libs; do
50004 + potlib="$potent_lib" # see symlink-check above in file_magic test
50005 + if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
50006 + $EGREP "$match_pattern_regex" > /dev/null; then
50007 + newdeplibs="$newdeplibs $a_deplib"
50008 + a_deplib=""
50009 + break 2
50010 + fi
50011 + done
50012 + done
50013 + fi
50014 + if test -n "$a_deplib" ; then
50015 + droppeddeps=yes
50016 + $ECHO
50017 + $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
50018 + $ECHO "*** I have the capability to make that library automatically link in when"
50019 + $ECHO "*** you link to this library. But I can only do this if you have a"
50020 + $ECHO "*** shared version of the library, which you do not appear to have"
50021 + $ECHO "*** because I did check the linker path looking for a file starting"
50022 + if test -z "$potlib" ; then
50023 + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
50024 + else
50025 + $ECHO "*** with $libname and none of the candidates passed a file format test"
50026 + $ECHO "*** using a regex pattern. Last file checked: $potlib"
50027 + fi
50028 + fi
50029 + else
50030 + # Add a -L argument.
50031 + newdeplibs="$newdeplibs $a_deplib"
50032 + fi
50033 + done # Gone through all deplibs.
50034 + ;;
50035 + none | unknown | *)
50036 + newdeplibs=""
50037 + tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
50038 + -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
50039 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
50040 + for i in $predeps $postdeps ; do
50041 + # can't use Xsed below, because $i might contain '/'
50042 + tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
50043 + done
50044 + fi
50045 + if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' |
50046 + $GREP . >/dev/null; then
50047 + $ECHO
50048 + if test "X$deplibs_check_method" = "Xnone"; then
50049 + $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
50050 + else
50051 + $ECHO "*** Warning: inter-library dependencies are not known to be supported."
50052 + fi
50053 + $ECHO "*** All declared inter-library dependencies are being dropped."
50054 + droppeddeps=yes
50055 + fi
50056 + ;;
50057 + esac
50058 + versuffix=$versuffix_save
50059 + major=$major_save
50060 + release=$release_save
50061 + libname=$libname_save
50062 + name=$name_save
50063 +
50064 + case $host in
50065 + *-*-rhapsody* | *-*-darwin1.[012])
50066 + # On Rhapsody replace the C library with the System framework
50067 + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
50068 + ;;
50069 + esac
50070 +
50071 + if test "$droppeddeps" = yes; then
50072 + if test "$module" = yes; then
50073 + $ECHO
50074 + $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
50075 + $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
50076 + $ECHO "*** a static module, that should work as long as the dlopening"
50077 + $ECHO "*** application is linked with the -dlopen flag."
50078 + if test -z "$global_symbol_pipe"; then
50079 + $ECHO
50080 + $ECHO "*** However, this would only work if libtool was able to extract symbol"
50081 + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
50082 + $ECHO "*** not find such a program. So, this module is probably useless."
50083 + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
50084 + fi
50085 + if test "$build_old_libs" = no; then
50086 + oldlibs="$output_objdir/$libname.$libext"
50087 + build_libtool_libs=module
50088 + build_old_libs=yes
50089 + else
50090 + build_libtool_libs=no
50091 + fi
50092 + else
50093 + $ECHO "*** The inter-library dependencies that have been dropped here will be"
50094 + $ECHO "*** automatically added whenever a program is linked with this library"
50095 + $ECHO "*** or is declared to -dlopen it."
50096 +
50097 + if test "$allow_undefined" = no; then
50098 + $ECHO
50099 + $ECHO "*** Since this library must not contain undefined symbols,"
50100 + $ECHO "*** because either the platform does not support them or"
50101 + $ECHO "*** it was explicitly requested with -no-undefined,"
50102 + $ECHO "*** libtool will only create a static version of it."
50103 + if test "$build_old_libs" = no; then
50104 + oldlibs="$output_objdir/$libname.$libext"
50105 + build_libtool_libs=module
50106 + build_old_libs=yes
50107 + else
50108 + build_libtool_libs=no
50109 + fi
50110 + fi
50111 + fi
50112 + fi
50113 + # Done checking deplibs!
50114 + deplibs=$newdeplibs
50115 + fi
50116 + # Time to change all our "foo.ltframework" stuff back to "-framework foo"
50117 + case $host in
50118 + *-*-darwin*)
50119 + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
50120 + new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
50121 + deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
50122 + ;;
50123 + esac
50124 +
50125 + # move library search paths that coincide with paths to not yet
50126 + # installed libraries to the beginning of the library search list
50127 + new_libs=
50128 + for path in $notinst_path; do
50129 + case " $new_libs " in
50130 + *" -L$path/$objdir "*) ;;
50131 + *)
50132 + case " $deplibs " in
50133 + *" -L$path/$objdir "*)
50134 + new_libs="$new_libs -L$path/$objdir" ;;
50135 + esac
50136 + ;;
50137 + esac
50138 + done
50139 + for deplib in $deplibs; do
50140 + case $deplib in
50141 + -L*)
50142 + case " $new_libs " in
50143 + *" $deplib "*) ;;
50144 + *) new_libs="$new_libs $deplib" ;;
50145 + esac
50146 + ;;
50147 + *) new_libs="$new_libs $deplib" ;;
50148 + esac
50149 + done
50150 + deplibs="$new_libs"
50151 +
50152 + # All the library-specific variables (install_libdir is set above).
50153 + library_names=
50154 + old_library=
50155 + dlname=
50156 +
50157 + # Test again, we may have decided not to build it any more
50158 + if test "$build_libtool_libs" = yes; then
50159 + if test "$hardcode_into_libs" = yes; then
50160 + # Hardcode the library paths
50161 + hardcode_libdirs=
50162 + dep_rpath=
50163 + rpath="$finalize_rpath"
50164 + test "$mode" != relink && rpath="$compile_rpath$rpath"
50165 + for libdir in $rpath; do
50166 + if test -n "$hardcode_libdir_flag_spec"; then
50167 + if test -n "$hardcode_libdir_separator"; then
50168 + if test -z "$hardcode_libdirs"; then
50169 + hardcode_libdirs="$libdir"
50170 + else
50171 + # Just accumulate the unique libdirs.
50172 + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
50173 + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
50174 + ;;
50175 + *)
50176 + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
50177 + ;;
50178 + esac
50179 + fi
50180 + else
50181 + eval flag=\"$hardcode_libdir_flag_spec\"
50182 + dep_rpath="$dep_rpath $flag"
50183 + fi
50184 + elif test -n "$runpath_var"; then
50185 + case "$perm_rpath " in
50186 + *" $libdir "*) ;;
50187 + *) perm_rpath="$perm_rpath $libdir" ;;
50188 + esac
50189 + fi
50190 + done
50191 + # Substitute the hardcoded libdirs into the rpath.
50192 + if test -n "$hardcode_libdir_separator" &&
50193 + test -n "$hardcode_libdirs"; then
50194 + libdir="$hardcode_libdirs"
50195 + if test -n "$hardcode_libdir_flag_spec_ld"; then
50196 + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
50197 + else
50198 + eval dep_rpath=\"$hardcode_libdir_flag_spec\"
50199 + fi
50200 + fi
50201 + if test -n "$runpath_var" && test -n "$perm_rpath"; then
50202 + # We should set the runpath_var.
50203 + rpath=
50204 + for dir in $perm_rpath; do
50205 + rpath="$rpath$dir:"
50206 + done
50207 + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
50208 + fi
50209 + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
50210 + fi
50211 +
50212 + shlibpath="$finalize_shlibpath"
50213 + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
50214 + if test -n "$shlibpath"; then
50215 + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
50216 + fi
50217 +
50218 + # Get the real and link names of the library.
50219 + eval shared_ext=\"$shrext_cmds\"
50220 + eval library_names=\"$library_names_spec\"
50221 + set dummy $library_names
50222 + shift
50223 + realname="$1"
50224 + shift
50225 +
50226 + if test -n "$soname_spec"; then
50227 + eval soname=\"$soname_spec\"
50228 + else
50229 + soname="$realname"
50230 + fi
50231 + if test -z "$dlname"; then
50232 + dlname=$soname
50233 + fi
50234 +
50235 + lib="$output_objdir/$realname"
50236 + linknames=
50237 + for link
50238 + do
50239 + linknames="$linknames $link"
50240 + done
50241 +
50242 + # Use standard objects if they are pic
50243 + test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
50244 + test "X$libobjs" = "X " && libobjs=
50245 +
50246 + delfiles=
50247 + if test -n "$export_symbols" && test -n "$include_expsyms"; then
50248 + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
50249 + export_symbols="$output_objdir/$libname.uexp"
50250 + delfiles="$delfiles $export_symbols"
50251 + fi
50252 +
50253 + orig_export_symbols=
50254 + case $host_os in
50255 + cygwin* | mingw*)
50256 + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
50257 + # exporting using user supplied symfile
50258 + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
50259 + # and it's NOT already a .def file. Must figure out
50260 + # which of the given symbols are data symbols and tag
50261 + # them as such. So, trigger use of export_symbols_cmds.
50262 + # export_symbols gets reassigned inside the "prepare
50263 + # the list of exported symbols" if statement, so the
50264 + # include_expsyms logic still works.
50265 + orig_export_symbols="$export_symbols"
50266 + export_symbols=
50267 + always_export_symbols=yes
50268 + fi
50269 + fi
50270 + ;;
50271 + esac
50272 +
50273 + # Prepare the list of exported symbols
50274 + if test -z "$export_symbols"; then
50275 + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
50276 + func_echo "generating symbol list for \`$libname.la'"
50277 + export_symbols="$output_objdir/$libname.exp"
50278 + $opt_dry_run || $RM $export_symbols
50279 + cmds=$export_symbols_cmds
50280 + save_ifs="$IFS"; IFS='~'
50281 + for cmd in $cmds; do
50282 + IFS="$save_ifs"
50283 + eval cmd=\"$cmd\"
50284 + if len=`expr "X$cmd" : ".*"` &&
50285 + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
50286 + func_show_eval "$cmd" 'exit $?'
50287 + skipped_export=false
50288 + else
50289 + # The command line is too long to execute in one step.
50290 + func_echo "using reloadable object file for export list..."
50291 + skipped_export=:
50292 + # Break out early, otherwise skipped_export may be
50293 + # set to false by a later but shorter cmd.
50294 + break
50295 + fi
50296 + done
50297 + IFS="$save_ifs"
50298 + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
50299 + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
50300 + func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
50301 + fi
50302 + fi
50303 + fi
50304 +
50305 + if test -n "$export_symbols" && test -n "$include_expsyms"; then
50306 + tmp_export_symbols="$export_symbols"
50307 + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
50308 + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
50309 + fi
50310 +
50311 + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
50312 + # The given exports_symbols file has to be filtered, so filter it.
50313 + func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
50314 + # FIXME: $output_objdir/$libname.filter potentially contains lots of
50315 + # 's' commands which not all seds can handle. GNU sed should be fine
50316 + # though. Also, the filter scales superlinearly with the number of
50317 + # global variables. join(1) would be nice here, but unfortunately
50318 + # isn't a blessed tool.
50319 + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
50320 + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
50321 + export_symbols=$output_objdir/$libname.def
50322 + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
50323 + fi
50324 +
50325 + tmp_deplibs=
50326 + for test_deplib in $deplibs; do
50327 + case " $convenience " in
50328 + *" $test_deplib "*) ;;
50329 + *)
50330 + tmp_deplibs="$tmp_deplibs $test_deplib"
50331 + ;;
50332 + esac
50333 + done
50334 + deplibs="$tmp_deplibs"
50335 +
50336 + if test -n "$convenience"; then
50337 + if test -n "$whole_archive_flag_spec" &&
50338 + test "$compiler_needs_object" = yes &&
50339 + test -z "$libobjs"; then
50340 + # extract the archives, so we have objects to list.
50341 + # TODO: could optimize this to just extract one archive.
50342 + whole_archive_flag_spec=
50343 + fi
50344 + if test -n "$whole_archive_flag_spec"; then
50345 + save_libobjs=$libobjs
50346 + eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
50347 + test "X$libobjs" = "X " && libobjs=
50348 + else
50349 + gentop="$output_objdir/${outputname}x"
50350 + generated="$generated $gentop"
50351 +
50352 + func_extract_archives $gentop $convenience
50353 + libobjs="$libobjs $func_extract_archives_result"
50354 + test "X$libobjs" = "X " && libobjs=
50355 + fi
50356 + fi
50357 +
50358 + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
50359 + eval flag=\"$thread_safe_flag_spec\"
50360 + linker_flags="$linker_flags $flag"
50361 + fi
50362 +
50363 + # Make a backup of the uninstalled library when relinking
50364 + if test "$mode" = relink; then
50365 + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
50366 + fi
50367 +
50368 + # Do each of the archive commands.
50369 + if test "$module" = yes && test -n "$module_cmds" ; then
50370 + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
50371 + eval test_cmds=\"$module_expsym_cmds\"
50372 + cmds=$module_expsym_cmds
50373 + else
50374 + eval test_cmds=\"$module_cmds\"
50375 + cmds=$module_cmds
50376 + fi
50377 + else
50378 + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
50379 + eval test_cmds=\"$archive_expsym_cmds\"
50380 + cmds=$archive_expsym_cmds
50381 + else
50382 + eval test_cmds=\"$archive_cmds\"
50383 + cmds=$archive_cmds
50384 + fi
50385 + fi
50386 +
50387 + if test "X$skipped_export" != "X:" &&
50388 + len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
50389 + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
50390 + :
50391 + else
50392 + # The command line is too long to link in one step, link piecewise
50393 + # or, if using GNU ld and skipped_export is not :, use a linker
50394 + # script.
50395 +
50396 + # Save the value of $output and $libobjs because we want to
50397 + # use them later. If we have whole_archive_flag_spec, we
50398 + # want to use save_libobjs as it was before
50399 + # whole_archive_flag_spec was expanded, because we can't
50400 + # assume the linker understands whole_archive_flag_spec.
50401 + # This may have to be revisited, in case too many
50402 + # convenience libraries get linked in and end up exceeding
50403 + # the spec.
50404 + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
50405 + save_libobjs=$libobjs
50406 + fi
50407 + save_output=$output
50408 + output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
50409 +
50410 + # Clear the reloadable object creation command queue and
50411 + # initialize k to one.
50412 + test_cmds=
50413 + concat_cmds=
50414 + objlist=
50415 + last_robj=
50416 + k=1
50417 +
50418 + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
50419 + output=${output_objdir}/${output_la}.lnkscript
50420 + func_echo "creating GNU ld script: $output"
50421 + $ECHO 'INPUT (' > $output
50422 + for obj in $save_libobjs
50423 + do
50424 + $ECHO "$obj" >> $output
50425 + done
50426 + $ECHO ')' >> $output
50427 + delfiles="$delfiles $output"
50428 + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
50429 + output=${output_objdir}/${output_la}.lnk
50430 + func_echo "creating linker input file list: $output"
50431 + : > $output
50432 + set x $save_libobjs
50433 + shift
50434 + firstobj=
50435 + if test "$compiler_needs_object" = yes; then
50436 + firstobj="$1 "
50437 + shift
50438 + fi
50439 + for obj
50440 + do
50441 + $ECHO "$obj" >> $output
50442 + done
50443 + delfiles="$delfiles $output"
50444 + output=$firstobj\"$file_list_spec$output\"
50445 + else
50446 + if test -n "$save_libobjs"; then
50447 + func_echo "creating reloadable object files..."
50448 + output=$output_objdir/$output_la-${k}.$objext
50449 + # Loop over the list of objects to be linked.
50450 + for obj in $save_libobjs
50451 + do
50452 + eval test_cmds=\"$reload_cmds $objlist $last_robj\"
50453 + if test "X$objlist" = X ||
50454 + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
50455 + test "$len" -le "$max_cmd_len"; }; then
50456 + objlist="$objlist $obj"
50457 + else
50458 + # The command $test_cmds is almost too long, add a
50459 + # command to the queue.
50460 + if test "$k" -eq 1 ; then
50461 + # The first file doesn't have a previous command to add.
50462 + eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
50463 + else
50464 + # All subsequent reloadable object files will link in
50465 + # the last one created.
50466 + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
50467 + fi
50468 + last_robj=$output_objdir/$output_la-${k}.$objext
50469 + k=`expr $k + 1`
50470 + output=$output_objdir/$output_la-${k}.$objext
50471 + objlist=$obj
50472 + len=1
50473 + fi
50474 + done
50475 + # Handle the remaining objects by creating one last
50476 + # reloadable object file. All subsequent reloadable object
50477 + # files will link in the last one created.
50478 + test -z "$concat_cmds" || concat_cmds=$concat_cmds~
50479 + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
50480 +
50481 + # Set up a command to remove the reloadable object files
50482 + # after they are used.
50483 + i=0
50484 + while test "$i" -lt "$k"
50485 + do
50486 + i=`expr $i + 1`
50487 + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
50488 + done
50489 + else
50490 + output=
50491 + fi
50492 +
50493 + if ${skipped_export-false}; then
50494 + func_echo "generating symbol list for \`$libname.la'"
50495 + export_symbols="$output_objdir/$libname.exp"
50496 + $opt_dry_run || $RM $export_symbols
50497 + libobjs=$output
50498 + # Append the command to create the export file.
50499 + test -z "$concat_cmds" || concat_cmds=$concat_cmds~
50500 + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
50501 + fi
50502 +
50503 + test -n "$save_libobjs" &&
50504 + func_echo "creating a temporary reloadable object file: $output"
50505 +
50506 + # Loop through the commands generated above and execute them.
50507 + save_ifs="$IFS"; IFS='~'
50508 + for cmd in $concat_cmds; do
50509 + IFS="$save_ifs"
50510 + $opt_silent || {
50511 + func_quote_for_expand "$cmd"
50512 + eval "func_echo $func_quote_for_expand_result"
50513 + }
50514 + $opt_dry_run || eval "$cmd" || {
50515 + lt_exit=$?
50516 +
50517 + # Restore the uninstalled library and exit
50518 + if test "$mode" = relink; then
50519 + ( cd "$output_objdir" && \
50520 + $RM "${realname}T" && \
50521 + $MV "${realname}U" "$realname" )
50522 + fi
50523 +
50524 + exit $lt_exit
50525 + }
50526 + done
50527 + IFS="$save_ifs"
50528 +
50529 + if test -n "$export_symbols_regex" && ${skipped_export-false}; then
50530 + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
50531 + func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
50532 + fi
50533 + fi
50534 +
50535 + if ${skipped_export-false}; then
50536 + if test -n "$export_symbols" && test -n "$include_expsyms"; then
50537 + tmp_export_symbols="$export_symbols"
50538 + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
50539 + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
50540 + fi
50541 +
50542 + if test -n "$orig_export_symbols"; then
50543 + # The given exports_symbols file has to be filtered, so filter it.
50544 + func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
50545 + # FIXME: $output_objdir/$libname.filter potentially contains lots of
50546 + # 's' commands which not all seds can handle. GNU sed should be fine
50547 + # though. Also, the filter scales superlinearly with the number of
50548 + # global variables. join(1) would be nice here, but unfortunately
50549 + # isn't a blessed tool.
50550 + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
50551 + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
50552 + export_symbols=$output_objdir/$libname.def
50553 + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
50554 + fi
50555 + fi
50556 +
50557 + libobjs=$output
50558 + # Restore the value of output.
50559 + output=$save_output
50560 +
50561 + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
50562 + eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
50563 + test "X$libobjs" = "X " && libobjs=
50564 + fi
50565 + # Expand the library linking commands again to reset the
50566 + # value of $libobjs for piecewise linking.
50567 +
50568 + # Do each of the archive commands.
50569 + if test "$module" = yes && test -n "$module_cmds" ; then
50570 + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
50571 + cmds=$module_expsym_cmds
50572 + else
50573 + cmds=$module_cmds
50574 + fi
50575 + else
50576 + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
50577 + cmds=$archive_expsym_cmds
50578 + else
50579 + cmds=$archive_cmds
50580 + fi
50581 + fi
50582 + fi
50583 +
50584 + if test -n "$delfiles"; then
50585 + # Append the command to remove temporary files to $cmds.
50586 + eval cmds=\"\$cmds~\$RM $delfiles\"
50587 + fi
50588 +
50589 + # Add any objects from preloaded convenience libraries
50590 + if test -n "$dlprefiles"; then
50591 + gentop="$output_objdir/${outputname}x"
50592 + generated="$generated $gentop"
50593 +
50594 + func_extract_archives $gentop $dlprefiles
50595 + libobjs="$libobjs $func_extract_archives_result"
50596 + test "X$libobjs" = "X " && libobjs=
50597 + fi
50598 +
50599 + save_ifs="$IFS"; IFS='~'
50600 + for cmd in $cmds; do
50601 + IFS="$save_ifs"
50602 + eval cmd=\"$cmd\"
50603 + $opt_silent || {
50604 + func_quote_for_expand "$cmd"
50605 + eval "func_echo $func_quote_for_expand_result"
50606 + }
50607 + $opt_dry_run || eval "$cmd" || {
50608 + lt_exit=$?
50609 +
50610 + # Restore the uninstalled library and exit
50611 + if test "$mode" = relink; then
50612 + ( cd "$output_objdir" && \
50613 + $RM "${realname}T" && \
50614 + $MV "${realname}U" "$realname" )
50615 + fi
50616 +
50617 + exit $lt_exit
50618 + }
50619 + done
50620 + IFS="$save_ifs"
50621 +
50622 + # Restore the uninstalled library and exit
50623 + if test "$mode" = relink; then
50624 + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
50625 +
50626 + if test -n "$convenience"; then
50627 + if test -z "$whole_archive_flag_spec"; then
50628 + func_show_eval '${RM}r "$gentop"'
50629 + fi
50630 + fi
50631 +
50632 + exit $EXIT_SUCCESS
50633 + fi
50634 +
50635 + # Create links to the real library.
50636 + for linkname in $linknames; do
50637 + if test "$realname" != "$linkname"; then
50638 + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
50639 + fi
50640 + done
50641 +
50642 + # If -module or -export-dynamic was specified, set the dlname.
50643 + if test "$module" = yes || test "$export_dynamic" = yes; then
50644 + # On all known operating systems, these are identical.
50645 + dlname="$soname"
50646 + fi
50647 + fi
50648 + ;;
50649 +
50650 + obj)
50651 + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
50652 + func_warning "\`-dlopen' is ignored for objects"
50653 + fi
50654 +
50655 + test -n "$deplibs" && \
50656 + func_warning "\`-l' and \`-L' are ignored for objects"
50657 +
50658 + test -n "$rpath" && \
50659 + func_warning "\`-rpath' is ignored for objects"
50660 +
50661 + test -n "$xrpath" && \
50662 + func_warning "\`-R' is ignored for objects"
50663 +
50664 + test -n "$vinfo" && \
50665 + func_warning "\`-version-info' is ignored for objects"
50666 +
50667 + test -n "$release" && \
50668 + func_warning "\`-release' is ignored for objects"
50669 +
50670 + case $output in
50671 + *.lo)
50672 + test -n "$objs$old_deplibs" && \
50673 + func_fatal_error "cannot build library object \`$output' from non-libtool objects"
50674 +
50675 + libobj=$output
50676 + func_lo2o "$libobj"
50677 + obj=$func_lo2o_result
50678 + ;;
50679 + *)
50680 + libobj=
50681 + obj="$output"
50682 + ;;
50683 + esac
50684 +
50685 + # Delete the old objects.
50686 + $opt_dry_run || $RM $obj $libobj
50687 +
50688 + # Objects from convenience libraries. This assumes
50689 + # single-version convenience libraries. Whenever we create
50690 + # different ones for PIC/non-PIC, this we'll have to duplicate
50691 + # the extraction.
50692 + reload_conv_objs=
50693 + gentop=
50694 + # reload_cmds runs $LD directly, so let us get rid of
50695 + # -Wl from whole_archive_flag_spec and hope we can get by with
50696 + # turning comma into space..
50697 + wl=
50698 +
50699 + if test -n "$convenience"; then
50700 + if test -n "$whole_archive_flag_spec"; then
50701 + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
50702 + reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
50703 + else
50704 + gentop="$output_objdir/${obj}x"
50705 + generated="$generated $gentop"
50706 +
50707 + func_extract_archives $gentop $convenience
50708 + reload_conv_objs="$reload_objs $func_extract_archives_result"
50709 + fi
50710 + fi
50711 +
50712 + # Create the old-style object.
50713 + 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
50714 +
50715 + output="$obj"
50716 + func_execute_cmds "$reload_cmds" 'exit $?'
50717 +
50718 + # Exit if we aren't doing a library object file.
50719 + if test -z "$libobj"; then
50720 + if test -n "$gentop"; then
50721 + func_show_eval '${RM}r "$gentop"'
50722 + fi
50723 +
50724 + exit $EXIT_SUCCESS
50725 + fi
50726 +
50727 + if test "$build_libtool_libs" != yes; then
50728 + if test -n "$gentop"; then
50729 + func_show_eval '${RM}r "$gentop"'
50730 + fi
50731 +
50732 + # Create an invalid libtool object if no PIC, so that we don't
50733 + # accidentally link it into a program.
50734 + # $show "echo timestamp > $libobj"
50735 + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
50736 + exit $EXIT_SUCCESS
50737 + fi
50738 +
50739 + if test -n "$pic_flag" || test "$pic_mode" != default; then
50740 + # Only do commands if we really have different PIC objects.
50741 + reload_objs="$libobjs $reload_conv_objs"
50742 + output="$libobj"
50743 + func_execute_cmds "$reload_cmds" 'exit $?'
50744 + fi
50745 +
50746 + if test -n "$gentop"; then
50747 + func_show_eval '${RM}r "$gentop"'
50748 + fi
50749 +
50750 + exit $EXIT_SUCCESS
50751 + ;;
50752 +
50753 + prog)
50754 + case $host in
50755 + *cygwin*) func_stripname '' '.exe' "$output"
50756 + output=$func_stripname_result.exe;;
50757 + esac
50758 + test -n "$vinfo" && \
50759 + func_warning "\`-version-info' is ignored for programs"
50760 +
50761 + test -n "$release" && \
50762 + func_warning "\`-release' is ignored for programs"
50763 +
50764 + test "$preload" = yes \
50765 + && test "$dlopen_support" = unknown \
50766 + && test "$dlopen_self" = unknown \
50767 + && test "$dlopen_self_static" = unknown && \
50768 + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
50769 +
50770 + case $host in
50771 + *-*-rhapsody* | *-*-darwin1.[012])
50772 + # On Rhapsody replace the C library is the System framework
50773 + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
50774 + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
50775 + ;;
50776 + esac
50777 +
50778 + case $host in
50779 + *-*-darwin*)
50780 + # Don't allow lazy linking, it breaks C++ global constructors
50781 + # But is supposedly fixed on 10.4 or later (yay!).
50782 + if test "$tagname" = CXX ; then
50783 + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
50784 + 10.[0123])
50785 + compile_command="$compile_command ${wl}-bind_at_load"
50786 + finalize_command="$finalize_command ${wl}-bind_at_load"
50787 + ;;
50788 + esac
50789 + fi
50790 + # Time to change all our "foo.ltframework" stuff back to "-framework foo"
50791 + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
50792 + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
50793 + ;;
50794 + esac
50795 +
50796 +
50797 + # move library search paths that coincide with paths to not yet
50798 + # installed libraries to the beginning of the library search list
50799 + new_libs=
50800 + for path in $notinst_path; do
50801 + case " $new_libs " in
50802 + *" -L$path/$objdir "*) ;;
50803 + *)
50804 + case " $compile_deplibs " in
50805 + *" -L$path/$objdir "*)
50806 + new_libs="$new_libs -L$path/$objdir" ;;
50807 + esac
50808 + ;;
50809 + esac
50810 + done
50811 + for deplib in $compile_deplibs; do
50812 + case $deplib in
50813 + -L*)
50814 + case " $new_libs " in
50815 + *" $deplib "*) ;;
50816 + *) new_libs="$new_libs $deplib" ;;
50817 + esac
50818 + ;;
50819 + *) new_libs="$new_libs $deplib" ;;
50820 + esac
50821 + done
50822 + compile_deplibs="$new_libs"
50823 +
50824 +
50825 + compile_command="$compile_command $compile_deplibs"
50826 + finalize_command="$finalize_command $finalize_deplibs"
50827 +
50828 + if test -n "$rpath$xrpath"; then
50829 + # If the user specified any rpath flags, then add them.
50830 + for libdir in $rpath $xrpath; do
50831 + # This is the magic to use -rpath.
50832 + case "$finalize_rpath " in
50833 + *" $libdir "*) ;;
50834 + *) finalize_rpath="$finalize_rpath $libdir" ;;
50835 + esac
50836 + done
50837 + fi
50838 +
50839 + # Now hardcode the library paths
50840 + rpath=
50841 + hardcode_libdirs=
50842 + for libdir in $compile_rpath $finalize_rpath; do
50843 + if test -n "$hardcode_libdir_flag_spec"; then
50844 + if test -n "$hardcode_libdir_separator"; then
50845 + if test -z "$hardcode_libdirs"; then
50846 + hardcode_libdirs="$libdir"
50847 + else
50848 + # Just accumulate the unique libdirs.
50849 + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
50850 + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
50851 + ;;
50852 + *)
50853 + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
50854 + ;;
50855 + esac
50856 + fi
50857 + else
50858 + eval flag=\"$hardcode_libdir_flag_spec\"
50859 + rpath="$rpath $flag"
50860 + fi
50861 + elif test -n "$runpath_var"; then
50862 + case "$perm_rpath " in
50863 + *" $libdir "*) ;;
50864 + *) perm_rpath="$perm_rpath $libdir" ;;
50865 + esac
50866 + fi
50867 + case $host in
50868 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
50869 + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
50870 + case :$dllsearchpath: in
50871 + *":$libdir:"*) ;;
50872 + *) dllsearchpath="$dllsearchpath:$libdir";;
50873 + esac
50874 + case :$dllsearchpath: in
50875 + *":$testbindir:"*) ;;
50876 + *) dllsearchpath="$dllsearchpath:$testbindir";;
50877 + esac
50878 + ;;
50879 + esac
50880 + done
50881 + # Substitute the hardcoded libdirs into the rpath.
50882 + if test -n "$hardcode_libdir_separator" &&
50883 + test -n "$hardcode_libdirs"; then
50884 + libdir="$hardcode_libdirs"
50885 + eval rpath=\" $hardcode_libdir_flag_spec\"
50886 + fi
50887 + compile_rpath="$rpath"
50888 +
50889 + rpath=
50890 + hardcode_libdirs=
50891 + for libdir in $finalize_rpath; do
50892 + if test -n "$hardcode_libdir_flag_spec"; then
50893 + if test -n "$hardcode_libdir_separator"; then
50894 + if test -z "$hardcode_libdirs"; then
50895 + hardcode_libdirs="$libdir"
50896 + else
50897 + # Just accumulate the unique libdirs.
50898 + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
50899 + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
50900 + ;;
50901 + *)
50902 + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
50903 + ;;
50904 + esac
50905 + fi
50906 + else
50907 + eval flag=\"$hardcode_libdir_flag_spec\"
50908 + rpath="$rpath $flag"
50909 + fi
50910 + elif test -n "$runpath_var"; then
50911 + case "$finalize_perm_rpath " in
50912 + *" $libdir "*) ;;
50913 + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
50914 + esac
50915 + fi
50916 + done
50917 + # Substitute the hardcoded libdirs into the rpath.
50918 + if test -n "$hardcode_libdir_separator" &&
50919 + test -n "$hardcode_libdirs"; then
50920 + libdir="$hardcode_libdirs"
50921 + eval rpath=\" $hardcode_libdir_flag_spec\"
50922 + fi
50923 + finalize_rpath="$rpath"
50924 +
50925 + if test -n "$libobjs" && test "$build_old_libs" = yes; then
50926 + # Transform all the library objects into standard objects.
50927 + compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
50928 + finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
50929 + fi
50930 +
50931 + func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
50932 +
50933 + # template prelinking step
50934 + if test -n "$prelink_cmds"; then
50935 + func_execute_cmds "$prelink_cmds" 'exit $?'
50936 + fi
50937 +
50938 + wrappers_required=yes
50939 + case $host in
50940 + *cygwin* | *mingw* )
50941 + if test "$build_libtool_libs" != yes; then
50942 + wrappers_required=no
50943 + fi
50944 + ;;
50945 + *)
50946 + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
50947 + wrappers_required=no
50948 + fi
50949 + ;;
50950 + esac
50951 + if test "$wrappers_required" = no; then
50952 + # Replace the output file specification.
50953 + compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
50954 + link_command="$compile_command$compile_rpath"
50955 +
50956 + # We have no uninstalled library dependencies, so finalize right now.
50957 + exit_status=0
50958 + func_show_eval "$link_command" 'exit_status=$?'
50959 +
50960 + # Delete the generated files.
50961 + if test -f "$output_objdir/${outputname}S.${objext}"; then
50962 + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
50963 + fi
50964 +
50965 + exit $exit_status
50966 + fi
50967 +
50968 + if test -n "$compile_shlibpath$finalize_shlibpath"; then
50969 + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
50970 + fi
50971 + if test -n "$finalize_shlibpath"; then
50972 + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
50973 + fi
50974 +
50975 + compile_var=
50976 + finalize_var=
50977 + if test -n "$runpath_var"; then
50978 + if test -n "$perm_rpath"; then
50979 + # We should set the runpath_var.
50980 + rpath=
50981 + for dir in $perm_rpath; do
50982 + rpath="$rpath$dir:"
50983 + done
50984 + compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
50985 + fi
50986 + if test -n "$finalize_perm_rpath"; then
50987 + # We should set the runpath_var.
50988 + rpath=
50989 + for dir in $finalize_perm_rpath; do
50990 + rpath="$rpath$dir:"
50991 + done
50992 + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
50993 + fi
50994 + fi
50995 +
50996 + if test "$no_install" = yes; then
50997 + # We don't need to create a wrapper script.
50998 + link_command="$compile_var$compile_command$compile_rpath"
50999 + # Replace the output file specification.
51000 + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
51001 + # Delete the old output file.
51002 + $opt_dry_run || $RM $output
51003 + # Link the executable and exit
51004 + func_show_eval "$link_command" 'exit $?'
51005 + exit $EXIT_SUCCESS
51006 + fi
51007 +
51008 + if test "$hardcode_action" = relink; then
51009 + # Fast installation is not supported
51010 + link_command="$compile_var$compile_command$compile_rpath"
51011 + relink_command="$finalize_var$finalize_command$finalize_rpath"
51012 +
51013 + func_warning "this platform does not like uninstalled shared libraries"
51014 + func_warning "\`$output' will be relinked during installation"
51015 + else
51016 + if test "$fast_install" != no; then
51017 + link_command="$finalize_var$compile_command$finalize_rpath"
51018 + if test "$fast_install" = yes; then
51019 + relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
51020 + else
51021 + # fast_install is set to needless
51022 + relink_command=
51023 + fi
51024 + else
51025 + link_command="$compile_var$compile_command$compile_rpath"
51026 + relink_command="$finalize_var$finalize_command$finalize_rpath"
51027 + fi
51028 + fi
51029 +
51030 + # Replace the output file specification.
51031 + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
51032 +
51033 + # Delete the old output files.
51034 + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
51035 +
51036 + func_show_eval "$link_command" 'exit $?'
51037 +
51038 + # Now create the wrapper script.
51039 + func_echo "creating $output"
51040 +
51041 + # Quote the relink command for shipping.
51042 + if test -n "$relink_command"; then
51043 + # Preserve any variables that may affect compiler behavior
51044 + for var in $variables_saved_for_relink; do
51045 + if eval test -z \"\${$var+set}\"; then
51046 + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
51047 + elif eval var_value=\$$var; test -z "$var_value"; then
51048 + relink_command="$var=; export $var; $relink_command"
51049 + else
51050 + func_quote_for_eval "$var_value"
51051 + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
51052 + fi
51053 + done
51054 + relink_command="(cd `pwd`; $relink_command)"
51055 + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
51056 + fi
51057 +
51058 + # Quote $ECHO for shipping.
51059 + if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
51060 + case $progpath in
51061 + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
51062 + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
51063 + esac
51064 + qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
51065 + else
51066 + qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
51067 + fi
51068 +
51069 + # Only actually do things if not in dry run mode.
51070 + $opt_dry_run || {
51071 + # win32 will think the script is a binary if it has
51072 + # a .exe suffix, so we strip it off here.
51073 + case $output in
51074 + *.exe) func_stripname '' '.exe' "$output"
51075 + output=$func_stripname_result ;;
51076 + esac
51077 + # test for cygwin because mv fails w/o .exe extensions
51078 + case $host in
51079 + *cygwin*)
51080 + exeext=.exe
51081 + func_stripname '' '.exe' "$outputname"
51082 + outputname=$func_stripname_result ;;
51083 + *) exeext= ;;
51084 + esac
51085 + case $host in
51086 + *cygwin* | *mingw* )
51087 + output_name=`basename $output`
51088 + output_path=`dirname $output`
51089 + cwrappersource="$output_path/$objdir/lt-$output_name.c"
51090 + cwrapper="$output_path/$output_name.exe"
51091 + $RM $cwrappersource $cwrapper
51092 + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
51093 +
51094 + cat > $cwrappersource <<EOF
51095 +
51096 +/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
51097 + Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
51098 +
51099 + The $output program cannot be directly executed until all the libtool
51100 + libraries that it depends on are installed.
51101 +
51102 + This wrapper executable should never be moved out of the build directory.
51103 + If it is, it will not operate correctly.
51104 +
51105 + Currently, it simply execs the wrapper *script* "/bin/sh $output",
51106 + but could eventually absorb all of the scripts functionality and
51107 + exec $objdir/$outputname directly.
51108 +*/
51109 +EOF
51110 + cat >> $cwrappersource<<"EOF"
51111 +#include <stdio.h>
51112 +#include <stdlib.h>
51113 +#include <unistd.h>
51114 +#include <malloc.h>
51115 +#include <stdarg.h>
51116 +#include <assert.h>
51117 +#include <string.h>
51118 +#include <ctype.h>
51119 +#include <sys/stat.h>
51120 +
51121 +#if defined(PATH_MAX)
51122 +# define LT_PATHMAX PATH_MAX
51123 +#elif defined(MAXPATHLEN)
51124 +# define LT_PATHMAX MAXPATHLEN
51125 +#else
51126 +# define LT_PATHMAX 1024
51127 +#endif
51128 +
51129 +#ifndef DIR_SEPARATOR
51130 +# define DIR_SEPARATOR '/'
51131 +# define PATH_SEPARATOR ':'
51132 +#endif
51133 +
51134 +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
51135 + defined (__OS2__)
51136 +# define HAVE_DOS_BASED_FILE_SYSTEM
51137 +# ifndef DIR_SEPARATOR_2
51138 +# define DIR_SEPARATOR_2 '\\'
51139 +# endif
51140 +# ifndef PATH_SEPARATOR_2
51141 +# define PATH_SEPARATOR_2 ';'
51142 +# endif
51143 +#endif
51144 +
51145 +#ifndef DIR_SEPARATOR_2
51146 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
51147 +#else /* DIR_SEPARATOR_2 */
51148 +# define IS_DIR_SEPARATOR(ch) \
51149 + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
51150 +#endif /* DIR_SEPARATOR_2 */
51151 +
51152 +#ifndef PATH_SEPARATOR_2
51153 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
51154 +#else /* PATH_SEPARATOR_2 */
51155 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
51156 +#endif /* PATH_SEPARATOR_2 */
51157 +
51158 +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
51159 +#define XFREE(stale) do { \
51160 + if (stale) { free ((void *) stale); stale = 0; } \
51161 +} while (0)
51162 +
51163 +/* -DDEBUG is fairly common in CFLAGS. */
51164 +#undef DEBUG
51165 +#if defined DEBUGWRAPPER
51166 +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
51167 +#else
51168 +# define DEBUG(format, ...)
51169 +#endif
51170 +
51171 +const char *program_name = NULL;
51172 +
51173 +void * xmalloc (size_t num);
51174 +char * xstrdup (const char *string);
51175 +const char * base_name (const char *name);
51176 +char * find_executable(const char *wrapper);
51177 +int check_executable(const char *path);
51178 +char * strendzap(char *str, const char *pat);
51179 +void lt_fatal (const char *message, ...);
51180 +
51181 +int
51182 +main (int argc, char *argv[])
51183 +{
51184 + char **newargz;
51185 + int i;
51186 +
51187 + program_name = (char *) xstrdup (base_name (argv[0]));
51188 + DEBUG("(main) argv[0] : %s\n",argv[0]);
51189 + DEBUG("(main) program_name : %s\n",program_name);
51190 + newargz = XMALLOC(char *, argc+2);
51191 +EOF
51192 +
51193 + cat >> $cwrappersource <<EOF
51194 + newargz[0] = (char *) xstrdup("$SHELL");
51195 +EOF
51196 +
51197 + cat >> $cwrappersource <<"EOF"
51198 + newargz[1] = find_executable(argv[0]);
51199 + if (newargz[1] == NULL)
51200 + lt_fatal("Couldn't find %s", argv[0]);
51201 + DEBUG("(main) found exe at : %s\n",newargz[1]);
51202 + /* we know the script has the same name, without the .exe */
51203 + /* so make sure newargz[1] doesn't end in .exe */
51204 + strendzap(newargz[1],".exe");
51205 + for (i = 1; i < argc; i++)
51206 + newargz[i+1] = xstrdup(argv[i]);
51207 + newargz[argc+1] = NULL;
51208 +
51209 + for (i=0; i<argc+1; i++)
51210 + {
51211 + DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
51212 + ;
51213 + }
51214 +
51215 +EOF
51216 +
51217 + case $host_os in
51218 + mingw*)
51219 + cat >> $cwrappersource <<EOF
51220 + execv("$SHELL",(char const **)newargz);
51221 +EOF
51222 + ;;
51223 + *)
51224 + cat >> $cwrappersource <<EOF
51225 + execv("$SHELL",newargz);
51226 +EOF
51227 + ;;
51228 + esac
51229 +
51230 + cat >> $cwrappersource <<"EOF"
51231 + return 127;
51232 +}
51233 +
51234 +void *
51235 +xmalloc (size_t num)
51236 +{
51237 + void * p = (void *) malloc (num);
51238 + if (!p)
51239 + lt_fatal ("Memory exhausted");
51240 +
51241 + return p;
51242 +}
51243 +
51244 +char *
51245 +xstrdup (const char *string)
51246 +{
51247 + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
51248 +;
51249 +}
51250 +
51251 +const char *
51252 +base_name (const char *name)
51253 +{
51254 + const char *base;
51255 +
51256 +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
51257 + /* Skip over the disk name in MSDOS pathnames. */
51258 + if (isalpha ((unsigned char)name[0]) && name[1] == ':')
51259 + name += 2;
51260 +#endif
51261 +
51262 + for (base = name; *name; name++)
51263 + if (IS_DIR_SEPARATOR (*name))
51264 + base = name + 1;
51265 + return base;
51266 +}
51267 +
51268 +int
51269 +check_executable(const char * path)
51270 +{
51271 + struct stat st;
51272 +
51273 + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
51274 + if ((!path) || (!*path))
51275 + return 0;
51276 +
51277 + if ((stat (path, &st) >= 0) &&
51278 + (
51279 + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
51280 +#if defined (S_IXOTH)
51281 + ((st.st_mode & S_IXOTH) == S_IXOTH) ||
51282 +#endif
51283 +#if defined (S_IXGRP)
51284 + ((st.st_mode & S_IXGRP) == S_IXGRP) ||
51285 +#endif
51286 + ((st.st_mode & S_IXUSR) == S_IXUSR))
51287 + )
51288 + return 1;
51289 + else
51290 + return 0;
51291 +}
51292 +
51293 +/* Searches for the full path of the wrapper. Returns
51294 + newly allocated full path name if found, NULL otherwise */
51295 +char *
51296 +find_executable (const char* wrapper)
51297 +{
51298 + int has_slash = 0;
51299 + const char* p;
51300 + const char* p_next;
51301 + /* static buffer for getcwd */
51302 + char tmp[LT_PATHMAX + 1];
51303 + int tmp_len;
51304 + char* concat_name;
51305 +
51306 + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
51307 +
51308 + if ((wrapper == NULL) || (*wrapper == '\0'))
51309 + return NULL;
51310 +
51311 + /* Absolute path? */
51312 +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
51313 + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
51314 + {
51315 + concat_name = xstrdup (wrapper);
51316 + if (check_executable(concat_name))
51317 + return concat_name;
51318 + XFREE(concat_name);
51319 + }
51320 + else
51321 + {
51322 +#endif
51323 + if (IS_DIR_SEPARATOR (wrapper[0]))
51324 + {
51325 + concat_name = xstrdup (wrapper);
51326 + if (check_executable(concat_name))
51327 + return concat_name;
51328 + XFREE(concat_name);
51329 + }
51330 +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
51331 + }
51332 +#endif
51333 +
51334 + for (p = wrapper; *p; p++)
51335 + if (*p == '/')
51336 + {
51337 + has_slash = 1;
51338 + break;
51339 + }
51340 + if (!has_slash)
51341 + {
51342 + /* no slashes; search PATH */
51343 + const char* path = getenv ("PATH");
51344 + if (path != NULL)
51345 + {
51346 + for (p = path; *p; p = p_next)
51347 + {
51348 + const char* q;
51349 + size_t p_len;
51350 + for (q = p; *q; q++)
51351 + if (IS_PATH_SEPARATOR(*q))
51352 + break;
51353 + p_len = q - p;
51354 + p_next = (*q == '\0' ? q : q + 1);
51355 + if (p_len == 0)
51356 + {
51357 + /* empty path: current directory */
51358 + if (getcwd (tmp, LT_PATHMAX) == NULL)
51359 + lt_fatal ("getcwd failed");
51360 + tmp_len = strlen(tmp);
51361 + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
51362 + memcpy (concat_name, tmp, tmp_len);
51363 + concat_name[tmp_len] = '/';
51364 + strcpy (concat_name + tmp_len + 1, wrapper);
51365 + }
51366 + else
51367 + {
51368 + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
51369 + memcpy (concat_name, p, p_len);
51370 + concat_name[p_len] = '/';
51371 + strcpy (concat_name + p_len + 1, wrapper);
51372 + }
51373 + if (check_executable(concat_name))
51374 + return concat_name;
51375 + XFREE(concat_name);
51376 + }
51377 + }
51378 + /* not found in PATH; assume curdir */
51379 + }
51380 + /* Relative path | not found in path: prepend cwd */
51381 + if (getcwd (tmp, LT_PATHMAX) == NULL)
51382 + lt_fatal ("getcwd failed");
51383 + tmp_len = strlen(tmp);
51384 + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
51385 + memcpy (concat_name, tmp, tmp_len);
51386 + concat_name[tmp_len] = '/';
51387 + strcpy (concat_name + tmp_len + 1, wrapper);
51388 +
51389 + if (check_executable(concat_name))
51390 + return concat_name;
51391 + XFREE(concat_name);
51392 + return NULL;
51393 +}
51394 +
51395 +char *
51396 +strendzap(char *str, const char *pat)
51397 +{
51398 + size_t len, patlen;
51399 +
51400 + assert(str != NULL);
51401 + assert(pat != NULL);
51402 +
51403 + len = strlen(str);
51404 + patlen = strlen(pat);
51405 +
51406 + if (patlen <= len)
51407 + {
51408 + str += len - patlen;
51409 + if (strcmp(str, pat) == 0)
51410 + *str = '\0';
51411 + }
51412 + return str;
51413 +}
51414 +
51415 +static void
51416 +lt_error_core (int exit_status, const char * mode,
51417 + const char * message, va_list ap)
51418 +{
51419 + fprintf (stderr, "%s: %s: ", program_name, mode);
51420 + vfprintf (stderr, message, ap);
51421 + fprintf (stderr, ".\n");
51422 +
51423 + if (exit_status >= 0)
51424 + exit (exit_status);
51425 +}
51426 +
51427 +void
51428 +lt_fatal (const char *message, ...)
51429 +{
51430 + va_list ap;
51431 + va_start (ap, message);
51432 + lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
51433 + va_end (ap);
51434 +}
51435 +EOF
51436 + # we should really use a build-platform specific compiler
51437 + # here, but OTOH, the wrappers (shell script and this C one)
51438 + # are only useful if you want to execute the "real" binary.
51439 + # Since the "real" binary is built for $host, then this
51440 + # wrapper might as well be built for $host, too.
51441 + $opt_dry_run || $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
51442 + ;;
51443 + esac
51444 + $RM $output
51445 + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
51446 +
51447 + $ECHO > $output "\
51448 +#! $SHELL
51449 +
51450 +# $output - temporary wrapper script for $objdir/$outputname
51451 +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
51452 +#
51453 +# The $output program cannot be directly executed until all the libtool
51454 +# libraries that it depends on are installed.
51455 +#
51456 +# This wrapper script should never be moved out of the build directory.
51457 +# If it is, it will not operate correctly.
51458 +
51459 +# Sed substitution that helps us do robust quoting. It backslashifies
51460 +# metacharacters that are still active within double-quoted strings.
51461 +Xsed='${SED} -e 1s/^X//'
51462 +sed_quote_subst='$sed_quote_subst'
51463 +
51464 +# Be Bourne compatible
51465 +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
51466 + emulate sh
51467 + NULLCMD=:
51468 + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
51469 + # is contrary to our usage. Disable this feature.
51470 + alias -g '\${1+\"\$@\"}'='\"\$@\"'
51471 + setopt NO_GLOB_SUBST
51472 +else
51473 + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
51474 +fi
51475 +BIN_SH=xpg4; export BIN_SH # for Tru64
51476 +DUALCASE=1; export DUALCASE # for MKS sh
51477 +
51478 +# The HP-UX ksh and POSIX shell print the target directory to stdout
51479 +# if CDPATH is set.
51480 +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
51481 +
51482 +relink_command=\"$relink_command\"
51483 +
51484 +# This environment variable determines our operation mode.
51485 +if test \"\$libtool_install_magic\" = \"$magic\"; then
51486 + # install mode needs the following variables:
51487 + generated_by_libtool_version='$macro_version'
51488 + notinst_deplibs='$notinst_deplibs'
51489 +else
51490 + # When we are sourced in execute mode, \$file and \$ECHO are already set.
51491 + if test \"\$libtool_execute_magic\" != \"$magic\"; then
51492 + ECHO=\"$qecho\"
51493 + file=\"\$0\"
51494 + # Make sure echo works.
51495 + if test \"X\$1\" = X--no-reexec; then
51496 + # Discard the --no-reexec flag, and continue.
51497 + shift
51498 + elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
51499 + # Yippee, \$ECHO works!
51500 + :
51501 + else
51502 + # Restart under the correct shell, and then maybe \$ECHO will work.
51503 + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
51504 + fi
51505 + fi\
51506 +"
51507 + $ECHO >> $output "\
51508 +
51509 + # Find the directory that this script lives in.
51510 + thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
51511 + test \"x\$thisdir\" = \"x\$file\" && thisdir=.
51512 +
51513 + # Follow symbolic links until we get to the real thisdir.
51514 + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
51515 + while test -n \"\$file\"; do
51516 + destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
51517 +
51518 + # If there was a directory component, then change thisdir.
51519 + if test \"x\$destdir\" != \"x\$file\"; then
51520 + case \"\$destdir\" in
51521 + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
51522 + *) thisdir=\"\$thisdir/\$destdir\" ;;
51523 + esac
51524 + fi
51525 +
51526 + file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
51527 + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
51528 + done
51529 +
51530 + # Try to get the absolute directory name.
51531 + absdir=\`cd \"\$thisdir\" && pwd\`
51532 + test -n \"\$absdir\" && thisdir=\"\$absdir\"
51533 +"
51534 +
51535 + if test "$fast_install" = yes; then
51536 + $ECHO >> $output "\
51537 + program=lt-'$outputname'$exeext
51538 + progdir=\"\$thisdir/$objdir\"
51539 +
51540 + if test ! -f \"\$progdir/\$program\" ||
51541 + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
51542 + test \"X\$file\" != \"X\$progdir/\$program\"; }; then
51543 +
51544 + file=\"\$\$-\$program\"
51545 +
51546 + if test ! -d \"\$progdir\"; then
51547 + $MKDIR \"\$progdir\"
51548 + else
51549 + $RM \"\$progdir/\$file\"
51550 + fi"
51551 +
51552 + $ECHO >> $output "\
51553 +
51554 + # relink executable if necessary
51555 + if test -n \"\$relink_command\"; then
51556 + if relink_command_output=\`eval \$relink_command 2>&1\`; then :
51557 + else
51558 + $ECHO \"\$relink_command_output\" >&2
51559 + $RM \"\$progdir/\$file\"
51560 + exit 1
51561 + fi
51562 + fi
51563 +
51564 + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
51565 + { $RM \"\$progdir/\$program\";
51566 + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
51567 + $RM \"\$progdir/\$file\"
51568 + fi"
51569 + else
51570 + $ECHO >> $output "\
51571 + program='$outputname'
51572 + progdir=\"\$thisdir/$objdir\"
51573 +"
51574 + fi
51575 +
51576 + $ECHO >> $output "\
51577 +
51578 + if test -f \"\$progdir/\$program\"; then"
51579 +
51580 + # Export our shlibpath_var if we have one.
51581 + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
51582 + $ECHO >> $output "\
51583 + # Add our own library path to $shlibpath_var
51584 + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
51585 +
51586 + # Some systems cannot cope with colon-terminated $shlibpath_var
51587 + # The second colon is a workaround for a bug in BeOS R4 sed
51588 + $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
51589 +
51590 + export $shlibpath_var
51591 +"
51592 + fi
51593 +
51594 + # fixup the dll searchpath if we need to.
51595 + if test -n "$dllsearchpath"; then
51596 + $ECHO >> $output "\
51597 + # Add the dll search path components to the executable PATH
51598 + PATH=$dllsearchpath:\$PATH
51599 +"
51600 + fi
51601 +
51602 + $ECHO >> $output "\
51603 + if test \"\$libtool_execute_magic\" != \"$magic\"; then
51604 + # Run the actual program with our arguments.
51605 +"
51606 + case $host in
51607 + # Backslashes separate directories on plain windows
51608 + *-*-mingw | *-*-os2*)
51609 + $ECHO >> $output "\
51610 + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
51611 +"
51612 + ;;
51613 +
51614 + *)
51615 + $ECHO >> $output "\
51616 + exec \"\$progdir/\$program\" \${1+\"\$@\"}
51617 +"
51618 + ;;
51619 + esac
51620 + $ECHO >> $output "\
51621 + \$ECHO \"\$0: cannot exec \$program \$*\"
51622 + exit 1
51623 + fi
51624 + else
51625 + # The program doesn't exist.
51626 + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
51627 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
51628 + $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
51629 + exit 1
51630 + fi
51631 +fi\
51632 +"
51633 + chmod +x $output
51634 + }
51635 + exit $EXIT_SUCCESS
51636 + ;;
51637 + esac
51638 +
51639 + # See if we need to build an old-fashioned archive.
51640 + for oldlib in $oldlibs; do
51641 +
51642 + if test "$build_libtool_libs" = convenience; then
51643 + oldobjs="$libobjs_save $symfileobj"
51644 + addlibs="$convenience"
51645 + build_libtool_libs=no
51646 + else
51647 + if test "$build_libtool_libs" = module; then
51648 + oldobjs="$libobjs_save"
51649 + build_libtool_libs=no
51650 + else
51651 + oldobjs="$old_deplibs $non_pic_objects"
51652 + if test "$preload" = yes && test -f "$symfileobj"; then
51653 + oldobjs="$oldobjs $symfileobj"
51654 + fi
51655 + fi
51656 + addlibs="$old_convenience"
51657 + fi
51658 +
51659 + if test -n "$addlibs"; then
51660 + gentop="$output_objdir/${outputname}x"
51661 + generated="$generated $gentop"
51662 +
51663 + func_extract_archives $gentop $addlibs
51664 + oldobjs="$oldobjs $func_extract_archives_result"
51665 + fi
51666 +
51667 + # Do each command in the archive commands.
51668 + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
51669 + cmds=$old_archive_from_new_cmds
51670 + else
51671 +
51672 + # Add any objects from preloaded convenience libraries
51673 + if test -n "$dlprefiles"; then
51674 + gentop="$output_objdir/${outputname}x"
51675 + generated="$generated $gentop"
51676 +
51677 + func_extract_archives $gentop $dlprefiles
51678 + oldobjs="$oldobjs $func_extract_archives_result"
51679 + fi
51680 +
51681 + # POSIX demands no paths to be encoded in archives. We have
51682 + # to avoid creating archives with duplicate basenames if we
51683 + # might have to extract them afterwards, e.g., when creating a
51684 + # static archive out of a convenience library, or when linking
51685 + # the entirety of a libtool archive into another (currently
51686 + # not supported by libtool).
51687 + if (for obj in $oldobjs
51688 + do
51689 + func_basename "$obj"
51690 + $ECHO "$func_basename_result"
51691 + done | sort | sort -uc >/dev/null 2>&1); then
51692 + :
51693 + else
51694 + $ECHO "copying selected object files to avoid basename conflicts..."
51695 + gentop="$output_objdir/${outputname}x"
51696 + generated="$generated $gentop"
51697 + func_mkdir_p "$gentop"
51698 + save_oldobjs=$oldobjs
51699 + oldobjs=
51700 + counter=1
51701 + for obj in $save_oldobjs
51702 + do
51703 + func_basename "$obj"
51704 + objbase="$func_basename_result"
51705 + case " $oldobjs " in
51706 + " ") oldobjs=$obj ;;
51707 + *[\ /]"$objbase "*)
51708 + while :; do
51709 + # Make sure we don't pick an alternate name that also
51710 + # overlaps.
51711 + newobj=lt$counter-$objbase
51712 + counter=`expr $counter + 1`
51713 + case " $oldobjs " in
51714 + *[\ /]"$newobj "*) ;;
51715 + *) if test ! -f "$gentop/$newobj"; then break; fi ;;
51716 + esac
51717 + done
51718 + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
51719 + oldobjs="$oldobjs $gentop/$newobj"
51720 + ;;
51721 + *) oldobjs="$oldobjs $obj" ;;
51722 + esac
51723 + done
51724 + fi
51725 + eval cmds=\"$old_archive_cmds\"
51726 +
51727 + if len=`expr "X$cmds" : ".*" 2>/dev/null` &&
51728 + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
51729 + cmds=$old_archive_cmds
51730 + else
51731 + # the command line is too long to link in one step, link in parts
51732 + func_echo "using piecewise archive linking..."
51733 + save_RANLIB=$RANLIB
51734 + RANLIB=:
51735 + objlist=
51736 + concat_cmds=
51737 + save_oldobjs=$oldobjs
51738 + # Is there a better way of finding the last object in the list?
51739 + for obj in $save_oldobjs
51740 + do
51741 + last_oldobj=$obj
51742 + done
51743 + for obj in $save_oldobjs
51744 + do
51745 + oldobjs="$objlist $obj"
51746 + objlist="$objlist $obj"
51747 + eval test_cmds=\"$old_archive_cmds\"
51748 + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
51749 + test "$len" -le "$max_cmd_len"; then
51750 + :
51751 + else
51752 + # the above command should be used before it gets too long
51753 + oldobjs=$objlist
51754 + if test "$obj" = "$last_oldobj" ; then
51755 + RANLIB=$save_RANLIB
51756 + fi
51757 + test -z "$concat_cmds" || concat_cmds=$concat_cmds~
51758 + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
51759 + objlist=
51760 + fi
51761 + done
51762 + RANLIB=$save_RANLIB
51763 + oldobjs=$objlist
51764 + if test "X$oldobjs" = "X" ; then
51765 + eval cmds=\"\$concat_cmds\"
51766 + else
51767 + eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
51768 + fi
51769 + fi
51770 + fi
51771 + func_execute_cmds "$cmds" 'exit $?'
51772 + done
51773 +
51774 + test -n "$generated" && \
51775 + func_show_eval "${RM}r$generated"
51776 +
51777 + # Now create the libtool archive.
51778 + case $output in
51779 + *.la)
51780 + old_library=
51781 + test "$build_old_libs" = yes && old_library="$libname.$libext"
51782 + func_echo "creating $output"
51783 +
51784 + # Preserve any variables that may affect compiler behavior
51785 + for var in $variables_saved_for_relink; do
51786 + if eval test -z \"\${$var+set}\"; then
51787 + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
51788 + elif eval var_value=\$$var; test -z "$var_value"; then
51789 + relink_command="$var=; export $var; $relink_command"
51790 + else
51791 + func_quote_for_eval "$var_value"
51792 + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
51793 + fi
51794 + done
51795 + # Quote the link command for shipping.
51796 + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
51797 + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
51798 + if test "$hardcode_automatic" = yes ; then
51799 + relink_command=
51800 + fi
51801 +
51802 + # Only create the output if not a dry run.
51803 + $opt_dry_run || {
51804 + for installed in no yes; do
51805 + if test "$installed" = yes; then
51806 + if test -z "$install_libdir"; then
51807 + break
51808 + fi
51809 + output="$output_objdir/$outputname"i
51810 + # Replace all uninstalled libtool libraries with the installed ones
51811 + newdependency_libs=
51812 + for deplib in $dependency_libs; do
51813 + case $deplib in
51814 + *.la)
51815 + func_basename "$deplib"
51816 + name="$func_basename_result"
51817 + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
51818 + test -z "$libdir" && \
51819 + func_fatal_error "\`$deplib' is not a valid libtool archive"
51820 + newdependency_libs="$newdependency_libs $libdir/$name"
51821 + ;;
51822 + *) newdependency_libs="$newdependency_libs $deplib" ;;
51823 + esac
51824 + done
51825 + dependency_libs="$newdependency_libs"
51826 + newdlfiles=
51827 +
51828 + for lib in $dlfiles; do
51829 + case $lib in
51830 + *.la)
51831 + func_basename "$lib"
51832 + name="$func_basename_result"
51833 + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
51834 + test -z "$libdir" && \
51835 + func_fatal_error "\`$lib' is not a valid libtool archive"
51836 + newdlfiles="$newdlfiles $libdir/$name"
51837 + ;;
51838 + *) newdlfiles="$newdlfiles $lib" ;;
51839 + esac
51840 + done
51841 + dlfiles="$newdlfiles"
51842 + newdlprefiles=
51843 + for lib in $dlprefiles; do
51844 + case $lib in
51845 + *.la)
51846 + # Only pass preopened files to the pseudo-archive (for
51847 + # eventual linking with the app. that links it) if we
51848 + # didn't already link the preopened objects directly into
51849 + # the library:
51850 + func_basename "$lib"
51851 + name="$func_basename_result"
51852 + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
51853 + test -z "$libdir" && \
51854 + func_fatal_error "\`$lib' is not a valid libtool archive"
51855 + newdlprefiles="$newdlprefiles $libdir/$name"
51856 + ;;
51857 + esac
51858 + done
51859 + dlprefiles="$newdlprefiles"
51860 + else
51861 + newdlfiles=
51862 + for lib in $dlfiles; do
51863 + case $lib in
51864 + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
51865 + *) abs=`pwd`"/$lib" ;;
51866 + esac
51867 + newdlfiles="$newdlfiles $abs"
51868 + done
51869 + dlfiles="$newdlfiles"
51870 + newdlprefiles=
51871 + for lib in $dlprefiles; do
51872 + case $lib in
51873 + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
51874 + *) abs=`pwd`"/$lib" ;;
51875 + esac
51876 + newdlprefiles="$newdlprefiles $abs"
51877 + done
51878 + dlprefiles="$newdlprefiles"
51879 + fi
51880 + $RM $output
51881 + # place dlname in correct position for cygwin
51882 + tdlname=$dlname
51883 + case $host,$output,$installed,$module,$dlname in
51884 + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
51885 + esac
51886 + $ECHO > $output "\
51887 +# $outputname - a libtool library file
51888 +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
51889 +#
51890 +# Please DO NOT delete this file!
51891 +# It is necessary for linking the library.
51892 +
51893 +# The name that we can dlopen(3).
51894 +dlname='$tdlname'
51895 +
51896 +# Names of this library.
51897 +library_names='$library_names'
51898 +
51899 +# The name of the static archive.
51900 +old_library='$old_library'
51901 +
51902 +# Linker flags that can not go in dependency_libs.
51903 +inherited_linker_flags='$new_inherited_linker_flags'
51904 +
51905 +# Libraries that this one depends upon.
51906 +dependency_libs='$dependency_libs'
51907 +
51908 +# Names of additional weak libraries provided by this library
51909 +weak_library_names='$weak_libs'
51910 +
51911 +# Version information for $libname.
51912 +current=$current
51913 +age=$age
51914 +revision=$revision
51915 +
51916 +# Is this an already installed library?
51917 +installed=$installed
51918 +
51919 +# Should we warn about portability when linking against -modules?
51920 +shouldnotlink=$module
51921 +
51922 +# Files to dlopen/dlpreopen
51923 +dlopen='$dlfiles'
51924 +dlpreopen='$dlprefiles'
51925 +
51926 +# Directory that this library needs to be installed in:
51927 +libdir='$install_libdir'"
51928 + if test "$installed" = no && test "$need_relink" = yes; then
51929 + $ECHO >> $output "\
51930 +relink_command=\"$relink_command\""
51931 + fi
51932 + done
51933 + }
51934 +
51935 + # Do a symbolic link so that the libtool archive can be found in
51936 + # LD_LIBRARY_PATH before the program is installed.
51937 + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
51938 + ;;
51939 + esac
51940 + exit $EXIT_SUCCESS
51941 +}
51942 +
51943 +{ test "$mode" = link || test "$mode" = relink; } &&
51944 + func_mode_link ${1+"$@"}
51945 +
51946 +
51947 +# func_mode_uninstall arg...
51948 +func_mode_uninstall ()
51949 +{
51950 + $opt_debug
51951 + RM="$nonopt"
51952 + files=
51953 + rmforce=
51954 + exit_status=0
51955 +
51956 + # This variable tells wrapper scripts just to set variables rather
51957 + # than running their programs.
51958 + libtool_install_magic="$magic"
51959 +
51960 + for arg
51961 + do
51962 + case $arg in
51963 + -f) RM="$RM $arg"; rmforce=yes ;;
51964 + -*) RM="$RM $arg" ;;
51965 + *) files="$files $arg" ;;
51966 + esac
51967 + done
51968 +
51969 + test -z "$RM" && \
51970 + func_fatal_help "you must specify an RM program"
51971 +
51972 + rmdirs=
51973 +
51974 + origobjdir="$objdir"
51975 + for file in $files; do
51976 + func_dirname "$file" "" "."
51977 + dir="$func_dirname_result"
51978 + if test "X$dir" = X.; then
51979 + objdir="$origobjdir"
51980 + else
51981 + objdir="$dir/$origobjdir"
51982 + fi
51983 + func_basename "$file"
51984 + name="$func_basename_result"
51985 + test "$mode" = uninstall && objdir="$dir"
51986 +
51987 + # Remember objdir for removal later, being careful to avoid duplicates
51988 + if test "$mode" = clean; then
51989 + case " $rmdirs " in
51990 + *" $objdir "*) ;;
51991 + *) rmdirs="$rmdirs $objdir" ;;
51992 + esac
51993 + fi
51994 +
51995 + # Don't error if the file doesn't exist and rm -f was used.
51996 + if { test -L "$file"; } >/dev/null 2>&1 ||
51997 + { test -h "$file"; } >/dev/null 2>&1 ||
51998 + test -f "$file"; then
51999 + :
52000 + elif test -d "$file"; then
52001 + exit_status=1
52002 + continue
52003 + elif test "$rmforce" = yes; then
52004 + continue
52005 + fi
52006 +
52007 + rmfiles="$file"
52008 +
52009 + case $name in
52010 + *.la)
52011 + # Possibly a libtool archive, so verify it.
52012 + if func_lalib_p "$file"; then
52013 + func_source $dir/$name
52014 +
52015 + # Delete the libtool libraries and symlinks.
52016 + for n in $library_names; do
52017 + rmfiles="$rmfiles $objdir/$n"
52018 + done
52019 + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
52020 +
52021 + case "$mode" in
52022 + clean)
52023 + case " $library_names " in
52024 + # " " in the beginning catches empty $dlname
52025 + *" $dlname "*) ;;
52026 + *) rmfiles="$rmfiles $objdir/$dlname" ;;
52027 + esac
52028 + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
52029 + ;;
52030 + uninstall)
52031 + if test -n "$library_names"; then
52032 + # Do each command in the postuninstall commands.
52033 + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
52034 + fi
52035 +
52036 + if test -n "$old_library"; then
52037 + # Do each command in the old_postuninstall commands.
52038 + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
52039 + fi
52040 + # FIXME: should reinstall the best remaining shared library.
52041 + ;;
52042 + esac
52043 + fi
52044 + ;;
52045 +
52046 + *.lo)
52047 + # Possibly a libtool object, so verify it.
52048 + if func_lalib_p "$file"; then
52049 +
52050 + # Read the .lo file
52051 + func_source $dir/$name
52052 +
52053 + # Add PIC object to the list of files to remove.
52054 + if test -n "$pic_object" &&
52055 + test "$pic_object" != none; then
52056 + rmfiles="$rmfiles $dir/$pic_object"
52057 + fi
52058 +
52059 + # Add non-PIC object to the list of files to remove.
52060 + if test -n "$non_pic_object" &&
52061 + test "$non_pic_object" != none; then
52062 + rmfiles="$rmfiles $dir/$non_pic_object"
52063 + fi
52064 + fi
52065 + ;;
52066 +
52067 + *)
52068 + if test "$mode" = clean ; then
52069 + noexename=$name
52070 + case $file in
52071 + *.exe)
52072 + func_stripname '' '.exe' "$file"
52073 + file=$func_stripname_result
52074 + func_stripname '' '.exe' "$name"
52075 + noexename=$func_stripname_result
52076 + # $file with .exe has already been added to rmfiles,
52077 + # add $file without .exe
52078 + rmfiles="$rmfiles $file"
52079 + ;;
52080 + esac
52081 + # Do a test to see if this is a libtool program.
52082 + if func_ltwrapper_p "$file"; then
52083 + relink_command=
52084 + func_source $dir/$noexename
52085 +
52086 + # note $name still contains .exe if it was in $file originally
52087 + # as does the version of $file that was added into $rmfiles
52088 + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
52089 + if test "$fast_install" = yes && test -n "$relink_command"; then
52090 + rmfiles="$rmfiles $objdir/lt-$name"
52091 + fi
52092 + if test "X$noexename" != "X$name" ; then
52093 + rmfiles="$rmfiles $objdir/lt-${noexename}.c"
52094 + fi
52095 + fi
52096 + fi
52097 + ;;
52098 + esac
52099 + func_show_eval "$RM $rmfiles" 'exit_status=1'
52100 + done
52101 + objdir="$origobjdir"
52102 +
52103 + # Try to remove the ${objdir}s in the directories where we deleted files
52104 + for dir in $rmdirs; do
52105 + if test -d "$dir"; then
52106 + func_show_eval "rmdir $dir >/dev/null 2>&1"
52107 + fi
52108 + done
52109 +
52110 + exit $exit_status
52111 +}
52112 +
52113 +{ test "$mode" = uninstall || test "$mode" = clean; } &&
52114 + func_mode_uninstall ${1+"$@"}
52115 +
52116 +test -z "$mode" && {
52117 + help="$generic_help"
52118 + func_fatal_help "you must specify a MODE"
52119 +}
52120 +
52121 +test -z "$exec_cmd" && \
52122 + func_fatal_help "invalid operation mode \`$mode'"
52123 +
52124 +if test -n "$exec_cmd"; then
52125 + eval exec "$exec_cmd"
52126 + exit $EXIT_FAILURE
52127 +fi
52128 +
52129 +exit $exit_status
52130 +
52131 +
52132 +# The TAGs below are defined such that we never get into a situation
52133 +# in which we disable both kinds of libraries. Given conflicting
52134 +# choices, we go for a static library, that is the most portable,
52135 +# since we can't tell whether shared libraries were disabled because
52136 +# the user asked for that or because the platform doesn't support
52137 +# them. This is particularly important on AIX, because we don't
52138 +# support having both static and shared libraries enabled at the same
52139 +# time on that platform, so we default to a shared-only configuration.
52140 +# If a disable-shared tag is given, we'll fallback to a static-only
52141 +# configuration. But we'll never go from static-only to shared-only.
52142 +
52143 +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
52144 +build_libtool_libs=no
52145 +build_old_libs=yes
52146 +# ### END LIBTOOL TAG CONFIG: disable-shared
52147 +
52148 +# ### BEGIN LIBTOOL TAG CONFIG: disable-static
52149 +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
52150 +# ### END LIBTOOL TAG CONFIG: disable-static
52151 +
52152 +# Local Variables:
52153 +# mode:shell-script
52154 +# sh-indentation:2
52155 +# End:
52156 +# vi:sw=2
52157 --- a/bfd/Makefile.in
52158 +++ b/bfd/Makefile.in
52159 @@ -312,6 +312,7 @@ ALL_MACHINES = \
52160 cpu-arc.lo \
52161 cpu-arm.lo \
52162 cpu-avr.lo \
52163 + cpu-avr32.lo \
52164 cpu-bfin.lo \
52165 cpu-cr16.lo \
52166 cpu-cr16c.lo \
52167 @@ -493,6 +494,7 @@ BFD32_BACKENDS = \
52168 elf32-arc.lo \
52169 elf32-arm.lo \
52170 elf32-avr.lo \
52171 + elf32-avr32.lo \
52172 elf32-bfin.lo \
52173 elf32-cr16.lo \
52174 elf32-cr16c.lo \
52175 @@ -1908,6 +1910,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
52176 $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
52177 $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
52178 $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
52179 +elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
52180 + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
52181 + $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
52182 + elf32-target.h
52183 elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
52184 $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
52185 $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
52186 --- /dev/null
52187 +++ b/bfd/po/Makefile.in
52188 @@ -0,0 +1,297 @@
52189 +# Makefile for program source directory in GNU NLS utilities package.
52190 +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
52191 +# Copyright 2001, 2003, 2006 Free Software Foundation, Inc.
52192 +#
52193 +# This file may be copied and used freely without restrictions. It can
52194 +# be used in projects which are not available under the GNU Public License
52195 +# but which still want to provide support for the GNU gettext functionality.
52196 +# Please note that the actual code is *not* freely available.
52197 +
52198 +PACKAGE = bfd
52199 +VERSION = 2.18
52200 +
52201 +SHELL = /bin/sh
52202 +
52203 +
52204 +srcdir = .
52205 +top_srcdir = ..
52206 +
52207 +top_builddir = ..
52208 +
52209 +prefix = /usr
52210 +exec_prefix = ${prefix}
52211 +datadir = $(prefix)/share
52212 +localedir = $(datadir)/locale
52213 +gnulocaledir = $(prefix)/share/locale
52214 +gettextsrcdir = $(prefix)/share/gettext/po
52215 +subdir = po
52216 +
52217 +DESTDIR =
52218 +
52219 +INSTALL = /usr/bin/install -c
52220 +INSTALL_DATA = ${INSTALL} -m 644
52221 +MKINSTALLDIRS = $(top_builddir)/./../mkinstalldirs
52222 +
52223 +CC = gcc
52224 +GENCAT = gencat
52225 +GMSGFMT = PATH=../src:$$PATH /usr/bin/msgfmt
52226 +MSGFMT = /usr/bin/msgfmt
52227 +XGETTEXT = PATH=../src:$$PATH /usr/bin/xgettext
52228 +MSGMERGE = PATH=../src:$$PATH msgmerge
52229 +
52230 +DEFS = -DHAVE_CONFIG_H
52231 +CFLAGS = -g -O2
52232 +CPPFLAGS =
52233 +
52234 +INCLUDES = -I.. -I$(top_srcdir)/intl
52235 +
52236 +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
52237 +
52238 +SOURCES = cat-id-tbl.c
52239 +POFILES = @POFILES@
52240 +GMOFILES = @GMOFILES@
52241 +DISTFILES = ChangeLog Makefile.in.in SRC-POTFILES.in BLD-POTFILES.in $(PACKAGE).pot \
52242 +stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
52243 +
52244 +# Note - the following line gets processed by bfd/configure and amended
52245 +# to contain the full list of source dir POTFILES.
52246 +SRC-POTFILES = \
52247 +
52248 +# Note - the following line gets processed by bfd/configure and amended
52249 +# to contain the full list of build dir POTFILES.
52250 +BLD-POTFILES = \
52251 +
52252 +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
52253 +CATOBJEXT = .gmo
52254 +INSTOBJEXT = .mo
52255 +
52256 +.SUFFIXES:
52257 +.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
52258 +
52259 +.c.o:
52260 + $(COMPILE) $<
52261 +
52262 +.po.pox:
52263 + $(MAKE) $(PACKAGE).pot
52264 + $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
52265 +
52266 +.po.mo:
52267 + $(MSGFMT) -o $@ $<
52268 +
52269 +.po.gmo:
52270 + file=`echo $* | sed 's,.*/,,'`.gmo \
52271 + && rm -f $$file && $(GMSGFMT) -o $$file $<
52272 +
52273 +.po.cat:
52274 + sed -f ../intl/po2msg.sed < $< > $*.msg \
52275 + && rm -f $@ && $(GENCAT) $@ $*.msg
52276 +
52277 +
52278 +all: all-yes
52279 +
52280 +all-yes: $(CATALOGS) # $(PACKAGE).pot
52281 +all-no:
52282 +
52283 +$(srcdir)/$(PACKAGE).pot: $(SRC-POTFILES) $(BLD-POTFILES)
52284 + $(XGETTEXT) --default-domain=$(PACKAGE) \
52285 + --directory=$(top_srcdir) \
52286 + --add-comments --keyword=_ --keyword=N_ \
52287 + --msgid-bugs-address=bug-binutils@gnu.org \
52288 + --files-from=$(srcdir)/SRC-POTFILES.in
52289 + $(XGETTEXT) --default-domain=$(PACKAGE) \
52290 + --directory=.. \
52291 + --directory=. \
52292 + --add-comments --keyword=_ --keyword=N_ \
52293 + --join-existing \
52294 + --msgid-bugs-address=bug-binutils@gnu.org \
52295 + --files-from=$(srcdir)/BLD-POTFILES.in
52296 + rm -f $(srcdir)/$(PACKAGE).pot
52297 + mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
52298 +
52299 +$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
52300 +$(srcdir)/stamp-cat-id: $(PACKAGE).pot
52301 + rm -f cat-id-tbl.tmp
52302 + sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
52303 + | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
52304 + if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
52305 + rm cat-id-tbl.tmp; \
52306 + else \
52307 + echo cat-id-tbl.c changed; \
52308 + rm -f $(srcdir)/cat-id-tbl.c; \
52309 + mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
52310 + fi
52311 + cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
52312 +
52313 +
52314 +install: install-exec install-data
52315 +install-exec:
52316 +install-info:
52317 +install-html:
52318 +install-data: install-data-yes
52319 +install-data-no: all
52320 +install-data-yes: all
52321 + if test -r $(MKINSTALLDIRS); then \
52322 + $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
52323 + else \
52324 + $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
52325 + fi
52326 + @catalogs='$(CATALOGS)'; \
52327 + for cat in $$catalogs; do \
52328 + cat=`basename $$cat`; \
52329 + case "$$cat" in \
52330 + *.gmo) destdir=$(gnulocaledir);; \
52331 + *) destdir=$(localedir);; \
52332 + esac; \
52333 + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
52334 + dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
52335 + if test -r $(MKINSTALLDIRS); then \
52336 + $(MKINSTALLDIRS) $$dir; \
52337 + else \
52338 + $(top_srcdir)/mkinstalldirs $$dir; \
52339 + fi; \
52340 + if test -r $$cat; then \
52341 + $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
52342 + echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
52343 + else \
52344 + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
52345 + echo "installing $(srcdir)/$$cat as" \
52346 + "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
52347 + fi; \
52348 + if test -r $$cat.m; then \
52349 + $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
52350 + echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
52351 + else \
52352 + if test -r $(srcdir)/$$cat.m ; then \
52353 + $(INSTALL_DATA) $(srcdir)/$$cat.m \
52354 + $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
52355 + echo "installing $(srcdir)/$$cat as" \
52356 + "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
52357 + else \
52358 + true; \
52359 + fi; \
52360 + fi; \
52361 + done
52362 + if test "$(PACKAGE)" = "gettext"; then \
52363 + if test -r $(MKINSTALLDIRS); then \
52364 + $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
52365 + else \
52366 + $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
52367 + fi; \
52368 + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
52369 + $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
52370 + else \
52371 + : ; \
52372 + fi
52373 +
52374 +# Define this as empty until I found a useful application.
52375 +installcheck:
52376 +
52377 +uninstall:
52378 + catalogs='$(CATALOGS)'; \
52379 + for cat in $$catalogs; do \
52380 + cat=`basename $$cat`; \
52381 + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
52382 + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
52383 + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
52384 + rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
52385 + rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
52386 + done
52387 + rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in
52388 +
52389 +check: all
52390 +
52391 +cat-id-tbl.o: ../intl/libgettext.h
52392 +
52393 +html dvi pdf ps info tags TAGS ID:
52394 +
52395 +mostlyclean:
52396 + rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
52397 + rm -fr *.o
52398 +
52399 +clean: mostlyclean
52400 +
52401 +distclean: clean
52402 + rm -f Makefile Makefile.in *.mo *.msg *.cat *.cat.m
52403 + rm -f SRC-POTFILES BLD-POTFILES
52404 +
52405 +maintainer-clean: distclean
52406 + @echo "This command is intended for maintainers to use;"
52407 + @echo "it deletes files that may require special tools to rebuild."
52408 + rm -f $(GMOFILES) SRC-POTFILES.in BLD-POTFILES.in
52409 +
52410 +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
52411 +dist distdir: update-po $(DISTFILES)
52412 + dists="$(DISTFILES)"; \
52413 + for file in $$dists; do \
52414 + ln $(srcdir)/$$file $(distdir) 2> /dev/null \
52415 + || cp -p $(srcdir)/$$file $(distdir); \
52416 + done
52417 +
52418 +update-po: Makefile
52419 + $(MAKE) $(PACKAGE).pot
52420 + PATH=`pwd`/../src:$$PATH; \
52421 + cd $(srcdir); \
52422 + catalogs='$(CATALOGS)'; \
52423 + for cat in $$catalogs; do \
52424 + cat=`basename $$cat`; \
52425 + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
52426 + mv $$lang.po $$lang.old.po; \
52427 + echo "$$lang:"; \
52428 + if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
52429 + rm -f $$lang.old.po; \
52430 + else \
52431 + echo "msgmerge for $$cat failed!"; \
52432 + rm -f $$lang.po; \
52433 + mv $$lang.old.po $$lang.po; \
52434 + fi; \
52435 + done
52436 +
52437 +SRC-POTFILES: SRC-POTFILES.in
52438 + ( if test 'x$(srcdir)' != 'x.'; then \
52439 + posrcprefix='$(top_srcdir)/'; \
52440 + else \
52441 + posrcprefix="../"; \
52442 + fi; \
52443 + rm -f $@-t $@ \
52444 + && (sed -e '/^#/d' \
52445 + -e '/^[ ]*$$/d' \
52446 + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
52447 + | sed -e '$$s/\\$$//') > $@-t \
52448 + && chmod a-w $@-t \
52449 + && mv $@-t $@ )
52450 +
52451 +BLD-POTFILES: BLD-POTFILES.in
52452 + ( rm -f $@-t $@ \
52453 + && (sed -e '/^#/d' \
52454 + -e '/^[ ]*$$/d' \
52455 + -e "s@.*@ ../& \\\\@" < $(srcdir)/$@.in \
52456 + | sed -e '$$s/\\$$//') > $@-t \
52457 + && chmod a-w $@-t \
52458 + && mv $@-t $@ )
52459 +
52460 +SRC-POTFILES.in: # ../Makefile
52461 + cd .. && $(MAKE) po/SRC-POTFILES.in
52462 +
52463 +BLD-POTFILES.in: # ../Makefile
52464 + cd .. && $(MAKE) po/BLD-POTFILES.in
52465 +
52466 +# Note - The presence of SRC-POTFILES and BLD-POTFILES as dependencies
52467 +# here breaks the implementation of the 'distclean' rule for maintainers.
52468 +# This is because if 'make distclean' is run in the BFD directory, the
52469 +# Makefile there will be deleted before 'distclean' is made here, and so
52470 +# the dependency SRC-POTFILES -> SRC-POTFILES.in -> ../Makefile cannot
52471 +# be satisfied.
52472 +#
52473 +# The SRC-POTFILES and BLD-POTFILES dependencies cannot be removed,
52474 +# however since it is necessary that these files be built during
52475 +# *configure* time, so that configure can insert them into the
52476 +# po/Makefile that it is creating, so that the Makefile will have
52477 +# the correct dependencies.
52478 +Makefile: Make-in ../config.status SRC-POTFILES BLD-POTFILES
52479 + cd .. \
52480 + && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
52481 + CONFIG_HEADERS= $(SHELL) ./config.status
52482 +
52483 +# Tell versions [3.59,3.63) of GNU make not to export all variables.
52484 +# Otherwise a system limit (for SysV at least) may be exceeded.
52485 +.NOEXPORT:
52486 --- a/binutils/Makefile.in
52487 +++ b/binutils/Makefile.in
52488 @@ -1327,7 +1327,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
52489 $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
52490 $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
52491 $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
52492 - $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
52493 + $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
52494 $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
52495 $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
52496 $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
52497 --- a/ld/Makefile.in
52498 +++ b/ld/Makefile.in
52499 @@ -384,7 +384,34 @@ ALL_EMULATIONS = \
52500 eavr3.o \
52501 eavr4.o \
52502 eavr5.o \
52503 - eavr6.o \
52504 + eavr6.o \
52505 + eavr32elf_ap7000.o \
52506 + eavr32elf_ap7001.o \
52507 + eavr32elf_ap7002.o \
52508 + eavr32elf_ap7200.o \
52509 + eavr32elf_uc3a0128.o \
52510 + eavr32elf_uc3a0256.o \
52511 + eavr32elf_uc3a0512.o \
52512 + eavr32elf_uc3a0512es.o \
52513 + eavr32elf_uc3a1128.o \
52514 + eavr32elf_uc3a1256.o \
52515 + eavr32elf_uc3a1512es.o \
52516 + eavr32elf_uc3a1512.o \
52517 + eavr32elf_uc3a364.o \
52518 + eavr32elf_uc3a364s.o \
52519 + eavr32elf_uc3a3128.o \
52520 + eavr32elf_uc3a3128s.o \
52521 + eavr32elf_uc3a3256.o \
52522 + eavr32elf_uc3a3256s.o \
52523 + eavr32elf_uc3b064.o \
52524 + eavr32elf_uc3b0128.o \
52525 + eavr32elf_uc3b0256es.o \
52526 + eavr32elf_uc3b0256.o \
52527 + eavr32elf_uc3b164.o \
52528 + eavr32elf_uc3b1128.o \
52529 + eavr32elf_uc3b1256es.o \
52530 + eavr32elf_uc3b1256.o \
52531 + eavr32linux.o \
52532 ecoff_i860.o \
52533 ecoff_sparc.o \
52534 eelf32_spu.o \
52535 @@ -1448,6 +1475,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
52536 $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
52537 ${GEN_DEPENDS}
52538 ${GENSCRIPTS} avr6 "$(tdir_avr2)"
52539 +eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
52540 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52541 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52542 + ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
52543 +eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
52544 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52545 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52546 + ${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
52547 +eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
52548 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52549 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52550 + ${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
52551 +eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
52552 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52553 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52554 + ${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
52555 +eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
52556 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52557 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52558 + ${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
52559 +eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
52560 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52561 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52562 + ${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
52563 +eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
52564 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52565 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52566 + ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
52567 +eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
52568 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52569 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52570 + ${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
52571 +eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
52572 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52573 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52574 + ${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
52575 +eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
52576 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52577 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52578 + ${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
52579 +eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
52580 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52581 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52582 + ${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
52583 +eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
52584 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52585 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52586 + ${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
52587 +eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
52588 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52589 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52590 + ${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
52591 +eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
52592 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52593 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52594 + ${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
52595 +eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
52596 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52597 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52598 + ${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
52599 +eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
52600 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52601 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52602 + ${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
52603 +eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
52604 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52605 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52606 + ${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
52607 +eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
52608 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52609 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52610 + ${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
52611 +eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
52612 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52613 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52614 + ${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
52615 +eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
52616 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52617 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52618 + ${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
52619 +eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
52620 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52621 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52622 + ${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
52623 +eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
52624 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52625 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52626 + ${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
52627 +eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
52628 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52629 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52630 + ${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
52631 +eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
52632 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52633 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52634 + ${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
52635 +eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
52636 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52637 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52638 + ${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
52639 +eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
52640 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52641 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
52642 + ${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
52643 +eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
52644 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
52645 + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
52646 + ${GENSCRIPTS} avr32linux "$(tdir_avr32)"
52647 ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
52648 $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
52649 ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
52650 @@ -2679,7 +2814,9 @@ install-exec-local: ld-new$(EXEEXT)
52651 || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
52652 fi
52653
52654 -install-data-local:
52655 +# We want install to imply install-info as per GNU standards, despite the
52656 +# cygnus option.
52657 +install-data-local: install-info
52658 $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
52659 for f in ldscripts/*; do \
52660 $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
52661 --- /dev/null
52662 +++ b/libiberty/required-list
52663 @@ -0,0 +1 @@
52664 +./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
52665 --- a/opcodes/configure
52666 +++ b/opcodes/configure
52667 @@ -11418,6 +11418,7 @@ if test x${all_targets} = xfalse ; then
52668 bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
52669 bfd_arm_arch) ta="$ta arm-dis.lo" ;;
52670 bfd_avr_arch) ta="$ta avr-dis.lo" ;;
52671 + bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
52672 bfd_bfin_arch) ta="$ta bfin-dis.lo" ;;
52673 bfd_cr16_arch) ta="$ta cr16-dis.lo cr16-opc.lo" ;;
52674 bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
52675 @@ -11476,7 +11477,7 @@ if test x${all_targets} = xfalse ; then
52676 ta="$ta sh64-dis.lo sh64-opc.lo"
52677 archdefs="$archdefs -DINCLUDE_SHMEDIA"
52678 break;;
52679 - esac;
52680 + esac
52681 done
52682 ta="$ta sh-dis.lo cgen-bitset.lo" ;;
52683 bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
52684 --- a/opcodes/Makefile.in
52685 +++ b/opcodes/Makefile.in
52686 @@ -257,6 +257,7 @@ LIBIBERTY = ../libiberty/libiberty.a
52687 # Header files.
52688 HFILES = \
52689 cgen-ops.h cgen-types.h \
52690 + avr32-asm.h avr32-opc.h \
52691 fr30-desc.h fr30-opc.h \
52692 frv-desc.h frv-opc.h \
52693 h8500-opc.h \
52694 @@ -291,6 +292,9 @@ CFILES = \
52695 arc-ext.c \
52696 arm-dis.c \
52697 avr-dis.c \
52698 + avr32-asm.c \
52699 + avr32-dis.c \
52700 + avr32-opc.c \
52701 bfin-dis.c \
52702 cgen-asm.c \
52703 cgen-bitset.c \
52704 @@ -445,6 +449,9 @@ ALL_MACHINES = \
52705 arc-ext.lo \
52706 arm-dis.lo \
52707 avr-dis.lo \
52708 + avr32-asm.lo \
52709 + avr32-dis.lo \
52710 + avr32-opc.lo \
52711 bfin-dis.lo \
52712 cgen-asm.lo \
52713 cgen-bitset.lo \
52714 @@ -1225,6 +1232,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h
52715 $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
52716 opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
52717 $(INCDIR)/opcode/avr.h
52718 +avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
52719 + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
52720 + $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
52721 + $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
52722 +avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
52723 + $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
52724 + avr32-opc.h opintl.h
52725 +avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
52726 + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
52727 bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
52728 $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
52729 cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
This page took 2.197545 seconds and 5 git commands to generate.