b85a25b46820f39ef2f65ff9f0a31b68e2b8aac2
[openwrt/svn-archive/archive.git] / toolchain / binutils / patches / 2.18 / 500-avr32.patch
1 Index: binutils-2.18/bfd/archures.c
2 ===================================================================
3 --- binutils-2.18.orig/bfd/archures.c 2008-11-25 15:24:48.000000000 +0100
4 +++ binutils-2.18/bfd/archures.c 2008-11-25 15:25:40.000000000 +0100
5 @@ -346,6 +346,11 @@
6 .#define bfd_mach_avr4 4
7 .#define bfd_mach_avr5 5
8 .#define bfd_mach_avr6 6
9 +. bfd_arch_avr32, {* Atmel AVR32 *}
10 +.#define bfd_mach_avr32_ap 7000
11 +.#define bfd_mach_avr32_uc 3000
12 +.#define bfd_mach_avr32_ucr1 3001
13 +.#define bfd_mach_avr32_ucr2 3002
14 . bfd_arch_bfin, {* ADI Blackfin *}
15 .#define bfd_mach_bfin 1
16 . bfd_arch_cr16, {* National Semiconductor CompactRISC (ie CR16). *}
17 @@ -438,6 +443,7 @@
18 extern const bfd_arch_info_type bfd_arc_arch;
19 extern const bfd_arch_info_type bfd_arm_arch;
20 extern const bfd_arch_info_type bfd_avr_arch;
21 +extern const bfd_arch_info_type bfd_avr32_arch;
22 extern const bfd_arch_info_type bfd_bfin_arch;
23 extern const bfd_arch_info_type bfd_cr16_arch;
24 extern const bfd_arch_info_type bfd_cr16c_arch;
25 @@ -509,6 +515,7 @@
26 &bfd_arc_arch,
27 &bfd_arm_arch,
28 &bfd_avr_arch,
29 + &bfd_avr32_arch,
30 &bfd_bfin_arch,
31 &bfd_cr16_arch,
32 &bfd_cr16c_arch,
33 Index: binutils-2.18/bfd/config.bfd
34 ===================================================================
35 --- binutils-2.18.orig/bfd/config.bfd 2008-11-25 15:24:48.000000000 +0100
36 +++ binutils-2.18/bfd/config.bfd 2008-11-25 15:25:40.000000000 +0100
37 @@ -335,6 +335,10 @@
38 targ_underscore=yes
39 ;;
40
41 + avr32-*-*)
42 + targ_defvec=bfd_elf32_avr32_vec
43 + ;;
44 +
45 c30-*-*aout* | tic30-*-*aout*)
46 targ_defvec=tic30_aout_vec
47 ;;
48 Index: binutils-2.18/bfd/configure.in
49 ===================================================================
50 --- binutils-2.18.orig/bfd/configure.in 2008-11-25 15:24:48.000000000 +0100
51 +++ binutils-2.18/bfd/configure.in 2008-11-25 15:25:40.000000000 +0100
52 @@ -619,6 +619,7 @@
53 bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
54 bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
55 bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
56 + bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
57 bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
58 bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
59 bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
60 Index: binutils-2.18/bfd/cpu-avr32.c
61 ===================================================================
62 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
63 +++ binutils-2.18/bfd/cpu-avr32.c 2008-11-25 15:25:40.000000000 +0100
64 @@ -0,0 +1,51 @@
65 +/* BFD library support routines for AVR32.
66 + Copyright 2003-2006 Atmel Corporation.
67 +
68 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
69 +
70 + This is part of BFD, the Binary File Descriptor library.
71 +
72 + This program is free software; you can redistribute it and/or modify
73 + it under the terms of the GNU General Public License as published by
74 + the Free Software Foundation; either version 2 of the License, or
75 + (at your option) any later version.
76 +
77 + This program is distributed in the hope that it will be useful,
78 + but WITHOUT ANY WARRANTY; without even the implied warranty of
79 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
80 + GNU General Public License for more details.
81 +
82 + You should have received a copy of the GNU General Public License
83 + along with this program; if not, write to the Free Software
84 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
85 +
86 +#include "bfd.h"
87 +#include "sysdep.h"
88 +#include "libbfd.h"
89 +
90 +#define N(machine, print, default, next) \
91 + { \
92 + 32, /* 32 bits in a word */ \
93 + 32, /* 32 bits in an address */ \
94 + 8, /* 8 bits in a byte */ \
95 + bfd_arch_avr32, /* architecture */ \
96 + machine, /* machine */ \
97 + "avr32", /* arch name */ \
98 + print, /* printable name */ \
99 + 1, /* section align power */ \
100 + default, /* the default machine? */ \
101 + bfd_default_compatible, \
102 + bfd_default_scan, \
103 + next, \
104 + }
105 +
106 +static const bfd_arch_info_type cpu_info[] =
107 +{
108 + N(bfd_mach_avr32_ap, "avr32:ap", FALSE, &cpu_info[1]),
109 + N(bfd_mach_avr32_uc, "avr32:uc", FALSE, &cpu_info[2]),
110 + N(bfd_mach_avr32_ucr1, "avr32:ucr1", FALSE, &cpu_info[3]),
111 + N(bfd_mach_avr32_ucr2, "avr32:ucr2", FALSE, NULL),
112 +};
113 +
114 +const bfd_arch_info_type bfd_avr32_arch =
115 + N(bfd_mach_avr32_ap, "avr32", TRUE, &cpu_info[0]);
116 Index: binutils-2.18/bfd/elf32-avr32.c
117 ===================================================================
118 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
119 +++ binutils-2.18/bfd/elf32-avr32.c 2008-11-25 15:25:40.000000000 +0100
120 @@ -0,0 +1,3915 @@
121 +/* AVR32-specific support for 32-bit ELF.
122 + Copyright 2003-2006 Atmel Corporation.
123 +
124 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
125 +
126 + This file is part of BFD, the Binary File Descriptor library.
127 +
128 + This program is free software; you can redistribute it and/or modify
129 + it under the terms of the GNU General Public License as published by
130 + the Free Software Foundation; either version 2 of the License, or
131 + (at your option) any later version.
132 +
133 + This program is distributed in the hope that it will be useful,
134 + but WITHOUT ANY WARRANTY; without even the implied warranty of
135 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
136 + GNU General Public License for more details.
137 +
138 + You should have received a copy of the GNU General Public License
139 + along with this program; if not, write to the Free Software
140 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
141 +
142 +#include "bfd.h"
143 +#include "sysdep.h"
144 +#include "bfdlink.h"
145 +#include "libbfd.h"
146 +#include "elf-bfd.h"
147 +#include "elf/avr32.h"
148 +#include "elf32-avr32.h"
149 +
150 +#define xDEBUG
151 +#define xRELAX_DEBUG
152 +
153 +#ifdef DEBUG
154 +# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
155 +#else
156 +# define pr_debug(fmt, args...) do { } while (0)
157 +#endif
158 +
159 +#ifdef RELAX_DEBUG
160 +# define RDBG(fmt, args...) fprintf(stderr, fmt, ##args)
161 +#else
162 +# define RDBG(fmt, args...) do { } while (0)
163 +#endif
164 +
165 +/* When things go wrong, we want it to blow up, damnit! */
166 +#undef BFD_ASSERT
167 +#undef abort
168 +#define BFD_ASSERT(expr) \
169 + do \
170 + { \
171 + if (!(expr)) \
172 + { \
173 + bfd_assert(__FILE__, __LINE__); \
174 + abort(); \
175 + } \
176 + } \
177 + while (0)
178 +
179 +/* The name of the dynamic interpreter. This is put in the .interp section. */
180 +#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
181 +
182 +#define AVR32_GOT_HEADER_SIZE 8
183 +#define AVR32_FUNCTION_STUB_SIZE 8
184 +
185 +#define ELF_R_INFO(x, y) ELF32_R_INFO(x, y)
186 +#define ELF_R_TYPE(x) ELF32_R_TYPE(x)
187 +#define ELF_R_SYM(x) ELF32_R_SYM(x)
188 +
189 +#define NOP_OPCODE 0xd703
190 +
191 +
192 +/* Mapping between BFD relocations and ELF relocations */
193 +
194 +static reloc_howto_type *
195 +bfd_elf32_bfd_reloc_type_lookup(bfd *abfd, bfd_reloc_code_real_type code);
196 +
197 +static reloc_howto_type *
198 +bfd_elf32_bfd_reloc_name_lookup(bfd *abfd, const char *r_name);
199 +
200 +static void
201 +avr32_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst);
202 +
203 +/* Generic HOWTO */
204 +#define GENH(name, align, size, bitsize, pcrel, bitpos, complain, mask) \
205 + HOWTO(name, align, size, bitsize, pcrel, bitpos, \
206 + complain_overflow_##complain, bfd_elf_generic_reloc, #name, \
207 + FALSE, 0, mask, pcrel)
208 +
209 +static reloc_howto_type elf_avr32_howto_table[] = {
210 + /* NAME ALN SZ BSZ PCREL BP COMPLAIN MASK */
211 + GENH(R_AVR32_NONE, 0, 0, 0, FALSE, 0, dont, 0x00000000),
212 +
213 + GENH(R_AVR32_32, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
214 + GENH(R_AVR32_16, 0, 1, 16, FALSE, 0, bitfield, 0x0000ffff),
215 + GENH(R_AVR32_8, 0, 0, 8, FALSE, 0, bitfield, 0x000000ff),
216 + GENH(R_AVR32_32_PCREL, 0, 2, 32, TRUE, 0, signed, 0xffffffff),
217 + GENH(R_AVR32_16_PCREL, 0, 1, 16, TRUE, 0, signed, 0x0000ffff),
218 + GENH(R_AVR32_8_PCREL, 0, 0, 8, TRUE, 0, signed, 0x000000ff),
219 +
220 + /* Difference between two symbol (sym2 - sym1). The reloc encodes
221 + the value of sym1. The field contains the difference before any
222 + relaxing is done. */
223 + GENH(R_AVR32_DIFF32, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
224 + GENH(R_AVR32_DIFF16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff),
225 + GENH(R_AVR32_DIFF8, 0, 0, 8, FALSE, 0, signed, 0x000000ff),
226 +
227 + GENH(R_AVR32_GOT32, 0, 2, 32, FALSE, 0, signed, 0xffffffff),
228 + GENH(R_AVR32_GOT16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff),
229 + GENH(R_AVR32_GOT8, 0, 0, 8, FALSE, 0, signed, 0x000000ff),
230 +
231 + GENH(R_AVR32_21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff),
232 + GENH(R_AVR32_16U, 0, 2, 16, FALSE, 0, unsigned, 0x0000ffff),
233 + GENH(R_AVR32_16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff),
234 + GENH(R_AVR32_8S, 0, 1, 8, FALSE, 4, signed, 0x00000ff0),
235 + GENH(R_AVR32_8S_EXT, 0, 2, 8, FALSE, 0, signed, 0x000000ff),
236 +
237 + GENH(R_AVR32_22H_PCREL, 1, 2, 21, TRUE, 0, signed, 0x1e10ffff),
238 + GENH(R_AVR32_18W_PCREL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff),
239 + GENH(R_AVR32_16B_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
240 + GENH(R_AVR32_16N_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
241 + GENH(R_AVR32_14UW_PCREL, 2, 2, 12, TRUE, 0, unsigned, 0x0000f0ff),
242 + GENH(R_AVR32_11H_PCREL, 1, 1, 10, TRUE, 4, signed, 0x00000ff3),
243 + GENH(R_AVR32_10UW_PCREL, 2, 2, 8, TRUE, 0, unsigned, 0x000000ff),
244 + GENH(R_AVR32_9H_PCREL, 1, 1, 8, TRUE, 4, signed, 0x00000ff0),
245 + GENH(R_AVR32_9UW_PCREL, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0),
246 +
247 + GENH(R_AVR32_HI16, 16, 2, 16, FALSE, 0, dont, 0x0000ffff),
248 + GENH(R_AVR32_LO16, 0, 2, 16, FALSE, 0, dont, 0x0000ffff),
249 +
250 + GENH(R_AVR32_GOTPC, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
251 + GENH(R_AVR32_GOTCALL, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff),
252 + GENH(R_AVR32_LDA_GOT, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff),
253 + GENH(R_AVR32_GOT21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff),
254 + GENH(R_AVR32_GOT18SW, 2, 2, 16, FALSE, 0, signed, 0x0000ffff),
255 + GENH(R_AVR32_GOT16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff),
256 + GENH(R_AVR32_GOT7UW, 2, 1, 5, FALSE, 4, unsigned, 0x000001f0),
257 +
258 + GENH(R_AVR32_32_CPENT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
259 + GENH(R_AVR32_CPCALL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff),
260 + GENH(R_AVR32_16_CP, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
261 + GENH(R_AVR32_9W_CP, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0),
262 +
263 + GENH(R_AVR32_RELATIVE, 0, 2, 32, FALSE, 0, signed, 0xffffffff),
264 + GENH(R_AVR32_GLOB_DAT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
265 + GENH(R_AVR32_JMP_SLOT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
266 +
267 + GENH(R_AVR32_ALIGN, 0, 1, 0, FALSE, 0, unsigned, 0x00000000),
268 +
269 + GENH(R_AVR32_15S, 2, 2, 15, FALSE, 0, signed, 0x00007fff),
270 +};
271 +
272 +struct elf_reloc_map
273 +{
274 + bfd_reloc_code_real_type bfd_reloc_val;
275 + unsigned char elf_reloc_val;
276 +};
277 +
278 +static const struct elf_reloc_map avr32_reloc_map[] =
279 +{
280 + { BFD_RELOC_NONE, R_AVR32_NONE },
281 +
282 + { BFD_RELOC_32, R_AVR32_32 },
283 + { BFD_RELOC_16, R_AVR32_16 },
284 + { BFD_RELOC_8, R_AVR32_8 },
285 + { BFD_RELOC_32_PCREL, R_AVR32_32_PCREL },
286 + { BFD_RELOC_16_PCREL, R_AVR32_16_PCREL },
287 + { BFD_RELOC_8_PCREL, R_AVR32_8_PCREL },
288 + { BFD_RELOC_AVR32_DIFF32, R_AVR32_DIFF32 },
289 + { BFD_RELOC_AVR32_DIFF16, R_AVR32_DIFF16 },
290 + { BFD_RELOC_AVR32_DIFF8, R_AVR32_DIFF8 },
291 + { BFD_RELOC_AVR32_GOT32, R_AVR32_GOT32 },
292 + { BFD_RELOC_AVR32_GOT16, R_AVR32_GOT16 },
293 + { BFD_RELOC_AVR32_GOT8, R_AVR32_GOT8 },
294 +
295 + { BFD_RELOC_AVR32_21S, R_AVR32_21S },
296 + { BFD_RELOC_AVR32_16U, R_AVR32_16U },
297 + { BFD_RELOC_AVR32_16S, R_AVR32_16S },
298 + { BFD_RELOC_AVR32_SUB5, R_AVR32_16S },
299 + { BFD_RELOC_AVR32_8S_EXT, R_AVR32_8S_EXT },
300 + { BFD_RELOC_AVR32_8S, R_AVR32_8S },
301 +
302 + { BFD_RELOC_AVR32_22H_PCREL, R_AVR32_22H_PCREL },
303 + { BFD_RELOC_AVR32_18W_PCREL, R_AVR32_18W_PCREL },
304 + { BFD_RELOC_AVR32_16B_PCREL, R_AVR32_16B_PCREL },
305 + { BFD_RELOC_AVR32_16N_PCREL, R_AVR32_16N_PCREL },
306 + { BFD_RELOC_AVR32_11H_PCREL, R_AVR32_11H_PCREL },
307 + { BFD_RELOC_AVR32_10UW_PCREL, R_AVR32_10UW_PCREL },
308 + { BFD_RELOC_AVR32_9H_PCREL, R_AVR32_9H_PCREL },
309 + { BFD_RELOC_AVR32_9UW_PCREL, R_AVR32_9UW_PCREL },
310 +
311 + { BFD_RELOC_HI16, R_AVR32_HI16 },
312 + { BFD_RELOC_LO16, R_AVR32_LO16 },
313 +
314 + { BFD_RELOC_AVR32_GOTPC, R_AVR32_GOTPC },
315 + { BFD_RELOC_AVR32_GOTCALL, R_AVR32_GOTCALL },
316 + { BFD_RELOC_AVR32_LDA_GOT, R_AVR32_LDA_GOT },
317 + { BFD_RELOC_AVR32_GOT21S, R_AVR32_GOT21S },
318 + { BFD_RELOC_AVR32_GOT18SW, R_AVR32_GOT18SW },
319 + { BFD_RELOC_AVR32_GOT16S, R_AVR32_GOT16S },
320 + /* GOT7UW should never be generated by the assembler */
321 +
322 + { BFD_RELOC_AVR32_32_CPENT, R_AVR32_32_CPENT },
323 + { BFD_RELOC_AVR32_CPCALL, R_AVR32_CPCALL },
324 + { BFD_RELOC_AVR32_16_CP, R_AVR32_16_CP },
325 + { BFD_RELOC_AVR32_9W_CP, R_AVR32_9W_CP },
326 +
327 + { BFD_RELOC_AVR32_ALIGN, R_AVR32_ALIGN },
328 +
329 + { BFD_RELOC_AVR32_15S, R_AVR32_15S },
330 +};
331 +
332 +static reloc_howto_type *
333 +bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
334 + bfd_reloc_code_real_type code)
335 +{
336 + unsigned int i;
337 +
338 + for (i = 0; i < sizeof(avr32_reloc_map) / sizeof(struct elf_reloc_map); i++)
339 + {
340 + if (avr32_reloc_map[i].bfd_reloc_val == code)
341 + return &elf_avr32_howto_table[avr32_reloc_map[i].elf_reloc_val];
342 + }
343 +
344 + return NULL;
345 +}
346 +
347 +static reloc_howto_type *
348 +bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
349 + const char *r_name)
350 +{
351 + unsigned int i;
352 +
353 + for (i = 0;
354 + i < sizeof (elf_avr32_howto_table) / sizeof (elf_avr32_howto_table[0]);
355 + i++)
356 + if (elf_avr32_howto_table[i].name != NULL
357 + && strcasecmp (elf_avr32_howto_table[i].name, r_name) == 0)
358 + return &elf_avr32_howto_table[i];
359 +
360 + return NULL;
361 +}
362 +
363 +/* Set the howto pointer for an AVR32 ELF reloc. */
364 +static void
365 +avr32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
366 + arelent *cache_ptr,
367 + Elf_Internal_Rela *dst)
368 +{
369 + unsigned int r_type;
370 +
371 + r_type = ELF32_R_TYPE (dst->r_info);
372 + BFD_ASSERT (r_type < (unsigned int) R_AVR32_max);
373 + cache_ptr->howto = &elf_avr32_howto_table[r_type];
374 +}
375 +
376 +
377 +/* AVR32 ELF linker hash table and associated hash entries. */
378 +
379 +static struct bfd_hash_entry *
380 +avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
381 + struct bfd_hash_table *table,
382 + const char *string);
383 +static void
384 +avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
385 + struct elf_link_hash_entry *dir,
386 + struct elf_link_hash_entry *ind);
387 +static struct bfd_link_hash_table *
388 +avr32_elf_link_hash_table_create(bfd *abfd);
389 +
390 +/*
391 + Try to limit memory usage to something reasonable when sorting the
392 + GOT. If just a couple of entries end up getting more references
393 + than this, it won't affect performance at all, but if there are many
394 + of them, we could end up with the wrong symbols being assigned the
395 + first GOT entries.
396 +*/
397 +#define MAX_NR_GOT_HOLES 2048
398 +
399 +/*
400 + AVR32 GOT entry. We need to keep track of refcounts and offsets
401 + simultaneously, since we need the offsets during relaxation, and we
402 + also want to be able to drop GOT entries during relaxation. In
403 + addition to this, we want to keep the list of GOT entries sorted so
404 + that we can keep the most-used entries at the lowest offsets.
405 +*/
406 +struct got_entry
407 +{
408 + struct got_entry *next;
409 + struct got_entry **pprev;
410 + int refcount;
411 + bfd_signed_vma offset;
412 +};
413 +
414 +struct elf_avr32_link_hash_entry
415 +{
416 + struct elf_link_hash_entry root;
417 +
418 + /* Number of runtime relocations against this symbol. */
419 + unsigned int possibly_dynamic_relocs;
420 +
421 + /* If there are anything but R_AVR32_GOT18 relocations against this
422 + symbol, it means that someone may be taking the address of the
423 + function, and we should therefore not create a stub. */
424 + bfd_boolean no_fn_stub;
425 +
426 + /* If there is a R_AVR32_32 relocation in a read-only section
427 + against this symbol, we could be in trouble. If we're linking a
428 + shared library or this symbol is defined in one, it means we must
429 + emit a run-time reloc for it and that's not allowed in read-only
430 + sections. */
431 + asection *readonly_reloc_sec;
432 + bfd_vma readonly_reloc_offset;
433 +
434 + /* Record which frag (if any) contains the symbol. This is used
435 + during relaxation in order to avoid having to update all symbols
436 + whenever we move something. For local symbols, this information
437 + is in the local_sym_frag member of struct elf_obj_tdata. */
438 + struct fragment *sym_frag;
439 +};
440 +#define avr32_elf_hash_entry(ent) ((struct elf_avr32_link_hash_entry *)(ent))
441 +
442 +struct elf_avr32_link_hash_table
443 +{
444 + struct elf_link_hash_table root;
445 +
446 + /* Shortcuts to get to dynamic linker sections. */
447 + asection *sgot;
448 + asection *srelgot;
449 + asection *sstub;
450 +
451 + /* We use a variation of Pigeonhole Sort to sort the GOT. After the
452 + initial refcounts have been determined, we initialize
453 + nr_got_holes to the highest refcount ever seen and allocate an
454 + array of nr_got_holes entries for got_hole. Each GOT entry is
455 + then stored in this array at the index given by its refcount.
456 +
457 + When a GOT entry has its refcount decremented during relaxation,
458 + it is moved to a lower index in the got_hole array.
459 + */
460 + struct got_entry **got_hole;
461 + int nr_got_holes;
462 +
463 + /* Dynamic relocations to local symbols. Only used when linking a
464 + shared library and -Bsymbolic is not given. */
465 + unsigned int local_dynamic_relocs;
466 +
467 + bfd_boolean relocations_analyzed;
468 + bfd_boolean symbols_adjusted;
469 + bfd_boolean repeat_pass;
470 + bfd_boolean direct_data_refs;
471 + unsigned int relax_iteration;
472 + unsigned int relax_pass;
473 +};
474 +#define avr32_elf_hash_table(p) \
475 + ((struct elf_avr32_link_hash_table *)((p)->hash))
476 +
477 +static struct bfd_hash_entry *
478 +avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
479 + struct bfd_hash_table *table,
480 + const char *string)
481 +{
482 + struct elf_avr32_link_hash_entry *ret = avr32_elf_hash_entry(entry);
483 +
484 + /* Allocate the structure if it hasn't already been allocated by a
485 + subclass */
486 + if (ret == NULL)
487 + ret = (struct elf_avr32_link_hash_entry *)
488 + bfd_hash_allocate(table, sizeof(struct elf_avr32_link_hash_entry));
489 +
490 + if (ret == NULL)
491 + return NULL;
492 +
493 + memset(ret, 0, sizeof(struct elf_avr32_link_hash_entry));
494 +
495 + /* Give the superclass a chance */
496 + ret = (struct elf_avr32_link_hash_entry *)
497 + _bfd_elf_link_hash_newfunc((struct bfd_hash_entry *)ret, table, string);
498 +
499 + return (struct bfd_hash_entry *)ret;
500 +}
501 +
502 +/* Copy data from an indirect symbol to its direct symbol, hiding the
503 + old indirect symbol. Process additional relocation information.
504 + Also called for weakdefs, in which case we just let
505 + _bfd_elf_link_hash_copy_indirect copy the flags for us. */
506 +
507 +static void
508 +avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
509 + struct elf_link_hash_entry *dir,
510 + struct elf_link_hash_entry *ind)
511 +{
512 + struct elf_avr32_link_hash_entry *edir, *eind;
513 +
514 + _bfd_elf_link_hash_copy_indirect (info, dir, ind);
515 +
516 + if (ind->root.type != bfd_link_hash_indirect)
517 + return;
518 +
519 + edir = (struct elf_avr32_link_hash_entry *)dir;
520 + eind = (struct elf_avr32_link_hash_entry *)ind;
521 +
522 + edir->possibly_dynamic_relocs += eind->possibly_dynamic_relocs;
523 + edir->no_fn_stub = edir->no_fn_stub || eind->no_fn_stub;
524 +}
525 +
526 +static struct bfd_link_hash_table *
527 +avr32_elf_link_hash_table_create(bfd *abfd)
528 +{
529 + struct elf_avr32_link_hash_table *ret;
530 +
531 + ret = bfd_zmalloc(sizeof(*ret));
532 + if (ret == NULL)
533 + return NULL;
534 +
535 + if (! _bfd_elf_link_hash_table_init(&ret->root, abfd,
536 + avr32_elf_link_hash_newfunc,
537 + sizeof (struct elf_avr32_link_hash_entry)))
538 + {
539 + free(ret);
540 + return NULL;
541 + }
542 +
543 + /* Prevent the BFD core from creating bogus got_entry pointers */
544 + ret->root.init_got_refcount.glist = NULL;
545 + ret->root.init_plt_refcount.glist = NULL;
546 + ret->root.init_got_offset.glist = NULL;
547 + ret->root.init_plt_offset.glist = NULL;
548 +
549 + return &ret->root.root;
550 +}
551 +
552 +
553 +/* Initial analysis and creation of dynamic sections and symbols */
554 +
555 +static asection *
556 +create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
557 + unsigned int align_power);
558 +static struct elf_link_hash_entry *
559 +create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
560 + const char *name, asection *sec,
561 + bfd_vma offset);
562 +static bfd_boolean
563 +avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info);
564 +static bfd_boolean
565 +avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info);
566 +static bfd_boolean
567 +avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
568 + const Elf_Internal_Rela *relocs);
569 +static bfd_boolean
570 +avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
571 + struct elf_link_hash_entry *h);
572 +
573 +static asection *
574 +create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
575 + unsigned int align_power)
576 +{
577 + asection *sec;
578 +
579 + sec = bfd_make_section(dynobj, name);
580 + if (!sec
581 + || !bfd_set_section_flags(dynobj, sec, flags)
582 + || !bfd_set_section_alignment(dynobj, sec, align_power))
583 + return NULL;
584 +
585 + return sec;
586 +}
587 +
588 +static struct elf_link_hash_entry *
589 +create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
590 + const char *name, asection *sec,
591 + bfd_vma offset)
592 +{
593 + struct bfd_link_hash_entry *bh = NULL;
594 + struct elf_link_hash_entry *h;
595 + const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
596 +
597 + if (!(_bfd_generic_link_add_one_symbol
598 + (info, dynobj, name, BSF_GLOBAL, sec, offset, NULL, FALSE,
599 + bed->collect, &bh)))
600 + return NULL;
601 +
602 + h = (struct elf_link_hash_entry *)bh;
603 + h->def_regular = 1;
604 + h->type = STT_OBJECT;
605 + h->other = STV_HIDDEN;
606 +
607 + return h;
608 +}
609 +
610 +static bfd_boolean
611 +avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info)
612 +{
613 + struct elf_avr32_link_hash_table *htab;
614 + flagword flags;
615 + const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
616 +
617 + htab = avr32_elf_hash_table(info);
618 + flags = bed->dynamic_sec_flags;
619 +
620 + if (htab->sgot)
621 + return TRUE;
622 +
623 + htab->sgot = create_dynamic_section(dynobj, ".got", flags, 2);
624 + if (!htab->srelgot)
625 + htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
626 + flags | SEC_READONLY, 2);
627 +
628 + if (!htab->sgot || !htab->srelgot)
629 + return FALSE;
630 +
631 + htab->root.hgot = create_dynamic_symbol(dynobj, info, "_GLOBAL_OFFSET_TABLE_",
632 + htab->sgot, 0);
633 + if (!htab->root.hgot)
634 + return FALSE;
635 +
636 + /* Make room for the GOT header */
637 + htab->sgot->size += bed->got_header_size;
638 +
639 + return TRUE;
640 +}
641 +
642 +/* (1) Create all dynamic (i.e. linker generated) sections that we may
643 + need during the link */
644 +
645 +static bfd_boolean
646 +avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
647 +{
648 + struct elf_avr32_link_hash_table *htab;
649 + flagword flags;
650 + const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
651 +
652 + pr_debug("(1) create dynamic sections\n");
653 +
654 + htab = avr32_elf_hash_table(info);
655 + flags = bed->dynamic_sec_flags;
656 +
657 + if (!avr32_elf_create_got_section (dynobj, info))
658 + return FALSE;
659 +
660 + if (!htab->sstub)
661 + htab->sstub = create_dynamic_section(dynobj, ".stub",
662 + flags | SEC_READONLY | SEC_CODE, 2);
663 +
664 + if (!htab->sstub)
665 + return FALSE;
666 +
667 + return TRUE;
668 +}
669 +
670 +/* (2) Go through all the relocs and count any potential GOT- or
671 + PLT-references to each symbol */
672 +
673 +static bfd_boolean
674 +avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
675 + const Elf_Internal_Rela *relocs)
676 +{
677 + Elf_Internal_Shdr *symtab_hdr;
678 + struct elf_avr32_link_hash_table *htab;
679 + struct elf_link_hash_entry **sym_hashes;
680 + const Elf_Internal_Rela *rel, *rel_end;
681 + struct got_entry **local_got_ents;
682 + struct got_entry *got;
683 + const struct elf_backend_data *bed = get_elf_backend_data (abfd);
684 + asection *sgot;
685 + bfd *dynobj;
686 +
687 + pr_debug("(2) check relocs for %s:<%s> (size 0x%lx)\n",
688 + abfd->filename, sec->name, sec->size);
689 +
690 + if (info->relocatable)
691 + return TRUE;
692 +
693 + dynobj = elf_hash_table(info)->dynobj;
694 + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
695 + sym_hashes = elf_sym_hashes(abfd);
696 + htab = avr32_elf_hash_table(info);
697 + local_got_ents = elf_local_got_ents(abfd);
698 + sgot = htab->sgot;
699 +
700 + rel_end = relocs + sec->reloc_count;
701 + for (rel = relocs; rel < rel_end; rel++)
702 + {
703 + unsigned long r_symndx, r_type;
704 + struct elf_avr32_link_hash_entry *h;
705 +
706 + r_symndx = ELF32_R_SYM(rel->r_info);
707 + r_type = ELF32_R_TYPE(rel->r_info);
708 +
709 + /* Local symbols use local_got_ents, while others store the same
710 + information in the hash entry */
711 + if (r_symndx < symtab_hdr->sh_info)
712 + {
713 + pr_debug(" (2a) processing local symbol %lu\n", r_symndx);
714 + h = NULL;
715 + }
716 + else
717 + {
718 + h = (struct elf_avr32_link_hash_entry *)
719 + sym_hashes[r_symndx - symtab_hdr->sh_info];
720 + while (h->root.type == bfd_link_hash_indirect
721 + || h->root.type == bfd_link_hash_warning)
722 + h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
723 + pr_debug(" (2a) processing symbol %s\n", h->root.root.root.string);
724 + }
725 +
726 + /* Some relocs require special sections to be created. */
727 + switch (r_type)
728 + {
729 + case R_AVR32_GOT32:
730 + case R_AVR32_GOT16:
731 + case R_AVR32_GOT8:
732 + case R_AVR32_GOT21S:
733 + case R_AVR32_GOT18SW:
734 + case R_AVR32_GOT16S:
735 + case R_AVR32_GOT7UW:
736 + case R_AVR32_LDA_GOT:
737 + case R_AVR32_GOTCALL:
738 + if (rel->r_addend)
739 + {
740 + if (info->callbacks->reloc_dangerous
741 + (info, _("Non-zero addend on GOT-relative relocation"),
742 + abfd, sec, rel->r_offset) == FALSE)
743 + return FALSE;
744 + }
745 + /* fall through */
746 + case R_AVR32_GOTPC:
747 + if (dynobj == NULL)
748 + elf_hash_table(info)->dynobj = dynobj = abfd;
749 + if (sgot == NULL && !avr32_elf_create_got_section(dynobj, info))
750 + return FALSE;
751 + break;
752 + case R_AVR32_32:
753 + /* We may need to create .rela.dyn later on. */
754 + if (dynobj == NULL
755 + && (info->shared || h != NULL)
756 + && (sec->flags & SEC_ALLOC))
757 + elf_hash_table(info)->dynobj = dynobj = abfd;
758 + break;
759 + }
760 +
761 + if (h != NULL && r_type != R_AVR32_GOT18SW)
762 + h->no_fn_stub = TRUE;
763 +
764 + switch (r_type)
765 + {
766 + case R_AVR32_GOT32:
767 + case R_AVR32_GOT16:
768 + case R_AVR32_GOT8:
769 + case R_AVR32_GOT21S:
770 + case R_AVR32_GOT18SW:
771 + case R_AVR32_GOT16S:
772 + case R_AVR32_GOT7UW:
773 + case R_AVR32_LDA_GOT:
774 + case R_AVR32_GOTCALL:
775 + if (h != NULL)
776 + {
777 + got = h->root.got.glist;
778 + if (!got)
779 + {
780 + got = bfd_zalloc(abfd, sizeof(struct got_entry));
781 + if (!got)
782 + return FALSE;
783 + h->root.got.glist = got;
784 + }
785 + }
786 + else
787 + {
788 + if (!local_got_ents)
789 + {
790 + bfd_size_type size;
791 + bfd_size_type i;
792 + struct got_entry *tmp_entry;
793 +
794 + size = symtab_hdr->sh_info;
795 + size *= sizeof(struct got_entry *) + sizeof(struct got_entry);
796 + local_got_ents = bfd_zalloc(abfd, size);
797 + if (!local_got_ents)
798 + return FALSE;
799 +
800 + elf_local_got_ents(abfd) = local_got_ents;
801 +
802 + tmp_entry = (struct got_entry *)(local_got_ents
803 + + symtab_hdr->sh_info);
804 + for (i = 0; i < symtab_hdr->sh_info; i++)
805 + local_got_ents[i] = &tmp_entry[i];
806 + }
807 +
808 + got = local_got_ents[r_symndx];
809 + }
810 +
811 + got->refcount++;
812 + if (got->refcount > htab->nr_got_holes)
813 + htab->nr_got_holes = got->refcount;
814 + break;
815 +
816 + case R_AVR32_32:
817 + if ((info->shared || h != NULL)
818 + && (sec->flags & SEC_ALLOC))
819 + {
820 + if (htab->srelgot == NULL)
821 + {
822 + htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
823 + bed->dynamic_sec_flags
824 + | SEC_READONLY, 2);
825 + if (htab->srelgot == NULL)
826 + return FALSE;
827 + }
828 +
829 + if (sec->flags & SEC_READONLY
830 + && !h->readonly_reloc_sec)
831 + {
832 + h->readonly_reloc_sec = sec;
833 + h->readonly_reloc_offset = rel->r_offset;
834 + }
835 +
836 + if (h != NULL)
837 + {
838 + pr_debug("Non-GOT reference to symbol %s\n",
839 + h->root.root.root.string);
840 + h->possibly_dynamic_relocs++;
841 + }
842 + else
843 + {
844 + pr_debug("Non-GOT reference to local symbol %lu\n",
845 + r_symndx);
846 + htab->local_dynamic_relocs++;
847 + }
848 + }
849 +
850 + break;
851 +
852 + /* TODO: GNU_VTINHERIT and GNU_VTENTRY */
853 + }
854 + }
855 +
856 + return TRUE;
857 +}
858 +
859 +/* (3) Adjust a symbol defined by a dynamic object and referenced by a
860 + regular object. The current definition is in some section of the
861 + dynamic object, but we're not including those sections. We have to
862 + change the definition to something the rest of the link can
863 + understand. */
864 +
865 +static bfd_boolean
866 +avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
867 + struct elf_link_hash_entry *h)
868 +{
869 + struct elf_avr32_link_hash_table *htab;
870 + struct elf_avr32_link_hash_entry *havr;
871 + bfd *dynobj;
872 +
873 + pr_debug("(3) adjust dynamic symbol %s\n", h->root.root.string);
874 +
875 + htab = avr32_elf_hash_table(info);
876 + havr = (struct elf_avr32_link_hash_entry *)h;
877 + dynobj = elf_hash_table(info)->dynobj;
878 +
879 + /* Make sure we know what is going on here. */
880 + BFD_ASSERT (dynobj != NULL
881 + && (h->u.weakdef != NULL
882 + || (h->def_dynamic
883 + && h->ref_regular
884 + && !h->def_regular)));
885 +
886 + /* We don't want dynamic relocations in read-only sections. */
887 + if (havr->readonly_reloc_sec)
888 + {
889 + if (info->callbacks->reloc_dangerous
890 + (info, _("dynamic relocation in read-only section"),
891 + havr->readonly_reloc_sec->owner, havr->readonly_reloc_sec,
892 + havr->readonly_reloc_offset) == FALSE)
893 + return FALSE;
894 + }
895 +
896 + /* If this is a function, create a stub if possible and set the
897 + symbol to the stub location. */
898 + if (0 && !havr->no_fn_stub)
899 + {
900 + if (!h->def_regular)
901 + {
902 + asection *s = htab->sstub;
903 +
904 + BFD_ASSERT(s != NULL);
905 +
906 + h->root.u.def.section = s;
907 + h->root.u.def.value = s->size;
908 + h->plt.offset = s->size;
909 + s->size += AVR32_FUNCTION_STUB_SIZE;
910 +
911 + return TRUE;
912 + }
913 + }
914 + else if (h->type == STT_FUNC)
915 + {
916 + /* This will set the entry for this symbol in the GOT to 0, and
917 + the dynamic linker will take care of this. */
918 + h->root.u.def.value = 0;
919 + return TRUE;
920 + }
921 +
922 + /* If this is a weak symbol, and there is a real definition, the
923 + processor independent code will have arranged for us to see the
924 + real definition first, and we can just use the same value. */
925 + if (h->u.weakdef != NULL)
926 + {
927 + BFD_ASSERT(h->u.weakdef->root.type == bfd_link_hash_defined
928 + || h->u.weakdef->root.type == bfd_link_hash_defweak);
929 + h->root.u.def.section = h->u.weakdef->root.u.def.section;
930 + h->root.u.def.value = h->u.weakdef->root.u.def.value;
931 + return TRUE;
932 + }
933 +
934 + /* This is a reference to a symbol defined by a dynamic object which
935 + is not a function. */
936 +
937 + return TRUE;
938 +}
939 +
940 +
941 +/* Garbage-collection of unused sections */
942 +
943 +static asection *
944 +avr32_elf_gc_mark_hook(asection *sec,
945 + struct bfd_link_info *info ATTRIBUTE_UNUSED,
946 + Elf_Internal_Rela *rel,
947 + struct elf_link_hash_entry *h,
948 + Elf_Internal_Sym *sym)
949 +{
950 + if (h)
951 + {
952 + switch (ELF32_R_TYPE(rel->r_info))
953 + {
954 + /* TODO: VTINHERIT/VTENTRY */
955 + default:
956 + switch (h->root.type)
957 + {
958 + case bfd_link_hash_defined:
959 + case bfd_link_hash_defweak:
960 + return h->root.u.def.section;
961 +
962 + case bfd_link_hash_common:
963 + return h->root.u.c.p->section;
964 +
965 + default:
966 + break;
967 + }
968 + }
969 + }
970 + else
971 + return bfd_section_from_elf_index(sec->owner, sym->st_shndx);
972 +
973 + return NULL;
974 +}
975 +
976 +/* Update the GOT entry reference counts for the section being removed. */
977 +static bfd_boolean
978 +avr32_elf_gc_sweep_hook(bfd *abfd,
979 + struct bfd_link_info *info ATTRIBUTE_UNUSED,
980 + asection *sec,
981 + const Elf_Internal_Rela *relocs)
982 +{
983 + Elf_Internal_Shdr *symtab_hdr;
984 + struct elf_avr32_link_hash_entry **sym_hashes;
985 + struct got_entry **local_got_ents;
986 + const Elf_Internal_Rela *rel, *relend;
987 +
988 + if (!(sec->flags & SEC_ALLOC))
989 + return TRUE;
990 +
991 + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
992 + sym_hashes = (struct elf_avr32_link_hash_entry **)elf_sym_hashes(abfd);
993 + local_got_ents = elf_local_got_ents(abfd);
994 +
995 + relend = relocs + sec->reloc_count;
996 + for (rel = relocs; rel < relend; rel++)
997 + {
998 + unsigned long r_symndx;
999 + unsigned int r_type;
1000 + struct elf_avr32_link_hash_entry *h = NULL;
1001 +
1002 + r_symndx = ELF32_R_SYM(rel->r_info);
1003 + if (r_symndx >= symtab_hdr->sh_info)
1004 + {
1005 + h = sym_hashes[r_symndx - symtab_hdr->sh_info];
1006 + while (h->root.root.type == bfd_link_hash_indirect
1007 + || h->root.root.type == bfd_link_hash_warning)
1008 + h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
1009 + }
1010 +
1011 + r_type = ELF32_R_TYPE(rel->r_info);
1012 +
1013 + switch (r_type)
1014 + {
1015 + case R_AVR32_GOT32:
1016 + case R_AVR32_GOT16:
1017 + case R_AVR32_GOT8:
1018 + case R_AVR32_GOT21S:
1019 + case R_AVR32_GOT18SW:
1020 + case R_AVR32_GOT16S:
1021 + case R_AVR32_GOT7UW:
1022 + case R_AVR32_LDA_GOT:
1023 + case R_AVR32_GOTCALL:
1024 + if (h)
1025 + h->root.got.glist->refcount--;
1026 + else
1027 + local_got_ents[r_symndx]->refcount--;
1028 + break;
1029 +
1030 + case R_AVR32_32:
1031 + if (info->shared || h)
1032 + {
1033 + if (h)
1034 + h->possibly_dynamic_relocs--;
1035 + else
1036 + avr32_elf_hash_table(info)->local_dynamic_relocs--;
1037 + }
1038 +
1039 + default:
1040 + break;
1041 + }
1042 + }
1043 +
1044 + return TRUE;
1045 +}
1046 +
1047 +/* Sizing and refcounting of dynamic sections */
1048 +
1049 +static void
1050 +insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
1051 +static void
1052 +unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
1053 +static void
1054 +ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
1055 +static bfd_boolean
1056 +assign_got_offsets(struct elf_avr32_link_hash_table *htab);
1057 +static bfd_boolean
1058 +allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info);
1059 +static bfd_boolean
1060 +avr32_elf_size_dynamic_sections (bfd *output_bfd,
1061 + struct bfd_link_info *info);
1062 +
1063 +static void
1064 +insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
1065 +{
1066 + /* Any entries with got_refcount > htab->nr_got_holes end up in the
1067 + * last pigeonhole without any sorting. We expect the number of such
1068 + * entries to be small, so it is very unlikely to affect
1069 + * performance. */
1070 + int entry = got->refcount;
1071 +
1072 + if (entry > htab->nr_got_holes)
1073 + entry = htab->nr_got_holes;
1074 +
1075 + got->pprev = &htab->got_hole[entry];
1076 + got->next = htab->got_hole[entry];
1077 +
1078 + if (got->next)
1079 + got->next->pprev = &got->next;
1080 +
1081 + htab->got_hole[entry] = got;
1082 +}
1083 +
1084 +/* Decrement the refcount of a GOT entry and update its position in
1085 + the pigeonhole array. */
1086 +static void
1087 +unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
1088 +{
1089 + BFD_ASSERT(got->refcount > 0);
1090 +
1091 + if (got->next)
1092 + got->next->pprev = got->pprev;
1093 +
1094 + *(got->pprev) = got->next;
1095 + got->refcount--;
1096 + insert_got_entry(htab, got);
1097 +}
1098 +
1099 +static void
1100 +ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
1101 +{
1102 + if (got->next)
1103 + got->next->pprev = got->pprev;
1104 +
1105 + *(got->pprev) = got->next;
1106 + got->refcount++;
1107 + insert_got_entry(htab, got);
1108 +
1109 + BFD_ASSERT(got->refcount > 0);
1110 +}
1111 +
1112 +/* Assign offsets to all GOT entries we intend to keep. The entries
1113 + that are referenced most often are placed at low offsets so that we
1114 + can use compact instructions as much as possible.
1115 +
1116 + Returns TRUE if any offsets or the total size of the GOT changed. */
1117 +
1118 +static bfd_boolean
1119 +assign_got_offsets(struct elf_avr32_link_hash_table *htab)
1120 +{
1121 + struct got_entry *got;
1122 + bfd_size_type got_size = 0;
1123 + bfd_boolean changed = FALSE;
1124 + bfd_signed_vma offset;
1125 + int i;
1126 +
1127 + /* The GOT header provides the address of the DYNAMIC segment, so
1128 + we need that even if the GOT is otherwise empty. */
1129 + if (htab->root.dynamic_sections_created)
1130 + got_size = AVR32_GOT_HEADER_SIZE;
1131 +
1132 + for (i = htab->nr_got_holes; i > 0; i--)
1133 + {
1134 + got = htab->got_hole[i];
1135 + while (got)
1136 + {
1137 + if (got->refcount > 0)
1138 + {
1139 + offset = got_size;
1140 + if (got->offset != offset)
1141 + {
1142 + RDBG("GOT offset changed: %ld -> %ld\n",
1143 + got->offset, offset);
1144 + changed = TRUE;
1145 + }
1146 + got->offset = offset;
1147 + got_size += 4;
1148 + }
1149 + got = got->next;
1150 + }
1151 + }
1152 +
1153 + if (htab->sgot->size != got_size)
1154 + {
1155 + RDBG("GOT size changed: %lu -> %lu\n", htab->sgot->size,
1156 + got_size);
1157 + changed = TRUE;
1158 + }
1159 + htab->sgot->size = got_size;
1160 +
1161 + RDBG("assign_got_offsets: total size %lu (%s)\n",
1162 + got_size, changed ? "changed" : "no change");
1163 +
1164 + return changed;
1165 +}
1166 +
1167 +static bfd_boolean
1168 +allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info)
1169 +{
1170 + struct bfd_link_info *info = _info;
1171 + struct elf_avr32_link_hash_table *htab;
1172 + struct elf_avr32_link_hash_entry *havr;
1173 + struct got_entry *got;
1174 +
1175 + pr_debug(" (4b) allocate_dynrelocs: %s\n", h->root.root.string);
1176 +
1177 + if (h->root.type == bfd_link_hash_indirect)
1178 + return TRUE;
1179 +
1180 + if (h->root.type == bfd_link_hash_warning)
1181 + /* When warning symbols are created, they **replace** the "real"
1182 + entry in the hash table, thus we never get to see the real
1183 + symbol in a hash traversal. So look at it now. */
1184 + h = (struct elf_link_hash_entry *) h->root.u.i.link;
1185 +
1186 + htab = avr32_elf_hash_table(info);
1187 + havr = (struct elf_avr32_link_hash_entry *)h;
1188 +
1189 + got = h->got.glist;
1190 +
1191 + /* If got is NULL, the symbol is never referenced through the GOT */
1192 + if (got && got->refcount > 0)
1193 + {
1194 + insert_got_entry(htab, got);
1195 +
1196 + /* Shared libraries need relocs for all GOT entries unless the
1197 + symbol is forced local or -Bsymbolic is used. Others need
1198 + relocs for everything that is not guaranteed to be defined in
1199 + a regular object. */
1200 + if ((info->shared
1201 + && !info->symbolic
1202 + && h->dynindx != -1)
1203 + || (htab->root.dynamic_sections_created
1204 + && h->def_dynamic
1205 + && !h->def_regular))
1206 + htab->srelgot->size += sizeof(Elf32_External_Rela);
1207 + }
1208 +
1209 + if (havr->possibly_dynamic_relocs
1210 + && (info->shared
1211 + || (elf_hash_table(info)->dynamic_sections_created
1212 + && h->def_dynamic
1213 + && !h->def_regular)))
1214 + {
1215 + pr_debug("Allocating %d dynamic reloc against symbol %s...\n",
1216 + havr->possibly_dynamic_relocs, h->root.root.string);
1217 + htab->srelgot->size += (havr->possibly_dynamic_relocs
1218 + * sizeof(Elf32_External_Rela));
1219 + }
1220 +
1221 + return TRUE;
1222 +}
1223 +
1224 +/* (4) Calculate the sizes of the linker-generated sections and
1225 + allocate memory for them. */
1226 +
1227 +static bfd_boolean
1228 +avr32_elf_size_dynamic_sections (bfd *output_bfd,
1229 + struct bfd_link_info *info)
1230 +{
1231 + struct elf_avr32_link_hash_table *htab;
1232 + bfd *dynobj;
1233 + asection *s;
1234 + bfd *ibfd;
1235 + bfd_boolean relocs;
1236 +
1237 + pr_debug("(4) size dynamic sections\n");
1238 +
1239 + htab = avr32_elf_hash_table(info);
1240 + dynobj = htab->root.dynobj;
1241 + BFD_ASSERT(dynobj != NULL);
1242 +
1243 + if (htab->root.dynamic_sections_created)
1244 + {
1245 + /* Initialize the contents of the .interp section to the name of
1246 + the dynamic loader */
1247 + if (info->executable)
1248 + {
1249 + s = bfd_get_section_by_name(dynobj, ".interp");
1250 + BFD_ASSERT(s != NULL);
1251 + s->size = sizeof(ELF_DYNAMIC_INTERPRETER);
1252 + s->contents = (unsigned char *)ELF_DYNAMIC_INTERPRETER;
1253 + }
1254 + }
1255 +
1256 + if (htab->nr_got_holes > 0)
1257 + {
1258 + /* Allocate holes for the pigeonhole sort algorithm */
1259 + pr_debug("Highest GOT refcount: %d\n", htab->nr_got_holes);
1260 +
1261 + /* Limit the memory usage by clipping the number of pigeonholes
1262 + * at a predefined maximum. All entries with a higher refcount
1263 + * will end up in the last pigeonhole. */
1264 + if (htab->nr_got_holes >= MAX_NR_GOT_HOLES)
1265 + {
1266 + htab->nr_got_holes = MAX_NR_GOT_HOLES - 1;
1267 +
1268 + pr_debug("Limiting maximum number of GOT pigeonholes to %u\n",
1269 + htab->nr_got_holes);
1270 + }
1271 + htab->got_hole = bfd_zalloc(output_bfd,
1272 + sizeof(struct got_entry *)
1273 + * (htab->nr_got_holes + 1));
1274 + if (!htab->got_hole)
1275 + return FALSE;
1276 +
1277 + /* Set up .got offsets for local syms. */
1278 + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
1279 + {
1280 + struct got_entry **local_got;
1281 + struct got_entry **end_local_got;
1282 + Elf_Internal_Shdr *symtab_hdr;
1283 + bfd_size_type locsymcount;
1284 +
1285 + pr_debug(" (4a) processing file %s...\n", ibfd->filename);
1286 +
1287 + BFD_ASSERT(bfd_get_flavour(ibfd) == bfd_target_elf_flavour);
1288 +
1289 + local_got = elf_local_got_ents(ibfd);
1290 + if (!local_got)
1291 + continue;
1292 +
1293 + symtab_hdr = &elf_tdata(ibfd)->symtab_hdr;
1294 + locsymcount = symtab_hdr->sh_info;
1295 + end_local_got = local_got + locsymcount;
1296 +
1297 + for (; local_got < end_local_got; ++local_got)
1298 + insert_got_entry(htab, *local_got);
1299 + }
1300 + }
1301 +
1302 + /* Allocate global sym .got entries and space for global sym
1303 + dynamic relocs */
1304 + elf_link_hash_traverse(&htab->root, allocate_dynrelocs, info);
1305 +
1306 + /* Now that we have sorted the GOT entries, we are ready to
1307 + assign offsets and determine the initial size of the GOT. */
1308 + if (htab->sgot)
1309 + assign_got_offsets(htab);
1310 +
1311 + /* Allocate space for local sym dynamic relocs */
1312 + BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared);
1313 + if (htab->local_dynamic_relocs)
1314 + htab->srelgot->size += (htab->local_dynamic_relocs
1315 + * sizeof(Elf32_External_Rela));
1316 +
1317 + /* We now have determined the sizes of the various dynamic
1318 + sections. Allocate memory for them. */
1319 + relocs = FALSE;
1320 + for (s = dynobj->sections; s; s = s->next)
1321 + {
1322 + if ((s->flags & SEC_LINKER_CREATED) == 0)
1323 + continue;
1324 +
1325 + if (s == htab->sgot
1326 + || s == htab->sstub)
1327 + {
1328 + /* Strip this section if we don't need it */
1329 + }
1330 + else if (strncmp (bfd_get_section_name(dynobj, s), ".rela", 5) == 0)
1331 + {
1332 + if (s->size != 0)
1333 + relocs = TRUE;
1334 +
1335 + s->reloc_count = 0;
1336 + }
1337 + else
1338 + {
1339 + /* It's not one of our sections */
1340 + continue;
1341 + }
1342 +
1343 + if (s->size == 0)
1344 + {
1345 + /* Strip unneeded sections */
1346 + pr_debug("Stripping section %s from output...\n", s->name);
1347 + /* deleted function in 2.17
1348 + _bfd_strip_section_from_output(info, s);
1349 + */
1350 + continue;
1351 + }
1352 +
1353 + s->contents = bfd_zalloc(dynobj, s->size);
1354 + if (s->contents == NULL)
1355 + return FALSE;
1356 + }
1357 +
1358 + if (htab->root.dynamic_sections_created)
1359 + {
1360 + /* Add some entries to the .dynamic section. We fill in the
1361 + values later, in sh_elf_finish_dynamic_sections, but we
1362 + must add the entries now so that we get the correct size for
1363 + the .dynamic section. The DT_DEBUG entry is filled in by the
1364 + dynamic linker and used by the debugger. */
1365 +#define add_dynamic_entry(TAG, VAL) _bfd_elf_add_dynamic_entry(info, TAG, VAL)
1366 +
1367 + if (!add_dynamic_entry(DT_PLTGOT, 0))
1368 + return FALSE;
1369 + if (!add_dynamic_entry(DT_AVR32_GOTSZ, 0))
1370 + return FALSE;
1371 +
1372 + if (info->executable)
1373 + {
1374 + if (!add_dynamic_entry(DT_DEBUG, 0))
1375 + return FALSE;
1376 + }
1377 + if (relocs)
1378 + {
1379 + if (!add_dynamic_entry(DT_RELA, 0)
1380 + || !add_dynamic_entry(DT_RELASZ, 0)
1381 + || !add_dynamic_entry(DT_RELAENT,
1382 + sizeof(Elf32_External_Rela)))
1383 + return FALSE;
1384 + }
1385 + }
1386 +#undef add_dynamic_entry
1387 +
1388 + return TRUE;
1389 +}
1390 +
1391 +
1392 +/* Access to internal relocations, section contents and symbols.
1393 + (stolen from the xtensa port) */
1394 +
1395 +static Elf_Internal_Rela *
1396 +retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory);
1397 +static void
1398 +pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
1399 +static void
1400 +release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
1401 +static bfd_byte *
1402 +retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory);
1403 +/*
1404 +static void
1405 +pin_contents (asection *sec, bfd_byte *contents);
1406 +*/
1407 +static void
1408 +release_contents (asection *sec, bfd_byte *contents);
1409 +static Elf_Internal_Sym *
1410 +retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory);
1411 +/*
1412 +static void
1413 +pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
1414 +*/
1415 +static void
1416 +release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
1417 +
1418 +/* During relaxation, we need to modify relocations, section contents,
1419 + and symbol definitions, and we need to keep the original values from
1420 + being reloaded from the input files, i.e., we need to "pin" the
1421 + modified values in memory. We also want to continue to observe the
1422 + setting of the "keep-memory" flag. The following functions wrap the
1423 + standard BFD functions to take care of this for us. */
1424 +
1425 +static Elf_Internal_Rela *
1426 +retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory)
1427 +{
1428 + /* _bfd_elf_link_read_relocs knows about caching, so no need for us
1429 + to be clever here. */
1430 + return _bfd_elf_link_read_relocs(abfd, sec, NULL, NULL, keep_memory);
1431 +}
1432 +
1433 +static void
1434 +pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
1435 +{
1436 + elf_section_data (sec)->relocs = internal_relocs;
1437 +}
1438 +
1439 +static void
1440 +release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
1441 +{
1442 + if (internal_relocs
1443 + && elf_section_data (sec)->relocs != internal_relocs)
1444 + free (internal_relocs);
1445 +}
1446 +
1447 +static bfd_byte *
1448 +retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory)
1449 +{
1450 + bfd_byte *contents;
1451 + bfd_size_type sec_size;
1452 +
1453 + sec_size = bfd_get_section_limit (abfd, sec);
1454 + contents = elf_section_data (sec)->this_hdr.contents;
1455 +
1456 + if (contents == NULL && sec_size != 0)
1457 + {
1458 + if (!bfd_malloc_and_get_section (abfd, sec, &contents))
1459 + {
1460 + if (contents)
1461 + free (contents);
1462 + return NULL;
1463 + }
1464 + if (keep_memory)
1465 + elf_section_data (sec)->this_hdr.contents = contents;
1466 + }
1467 + return contents;
1468 +}
1469 +
1470 +/*
1471 +static void
1472 +pin_contents (asection *sec, bfd_byte *contents)
1473 +{
1474 + elf_section_data (sec)->this_hdr.contents = contents;
1475 +}
1476 +*/
1477 +static void
1478 +release_contents (asection *sec, bfd_byte *contents)
1479 +{
1480 + if (contents && elf_section_data (sec)->this_hdr.contents != contents)
1481 + free (contents);
1482 +}
1483 +
1484 +static Elf_Internal_Sym *
1485 +retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory)
1486 +{
1487 + Elf_Internal_Shdr *symtab_hdr;
1488 + Elf_Internal_Sym *isymbuf;
1489 + size_t locsymcount;
1490 +
1491 + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
1492 + locsymcount = symtab_hdr->sh_info;
1493 +
1494 + isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
1495 + if (isymbuf == NULL && locsymcount != 0)
1496 + {
1497 + isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0,
1498 + NULL, NULL, NULL);
1499 + if (isymbuf && keep_memory)
1500 + symtab_hdr->contents = (unsigned char *) isymbuf;
1501 + }
1502 +
1503 + return isymbuf;
1504 +}
1505 +
1506 +/*
1507 +static void
1508 +pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
1509 +{
1510 + elf_tdata (input_bfd)->symtab_hdr.contents = (unsigned char *)isymbuf;
1511 +}
1512 +
1513 +*/
1514 +static void
1515 +release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
1516 +{
1517 + if (isymbuf && (elf_tdata (input_bfd)->symtab_hdr.contents
1518 + != (unsigned char *)isymbuf))
1519 + free (isymbuf);
1520 +}
1521 +
1522 +\f/* Data structures used during relaxation. */
1523 +
1524 +enum relax_state_id {
1525 + RS_ERROR = -1,
1526 + RS_NONE = 0,
1527 + RS_ALIGN,
1528 + RS_CPENT,
1529 + RS_PIC_CALL,
1530 + RS_PIC_MCALL,
1531 + RS_PIC_RCALL2,
1532 + RS_PIC_RCALL1,
1533 + RS_PIC_LDA,
1534 + RS_PIC_LDW4,
1535 + RS_PIC_LDW3,
1536 + RS_PIC_SUB5,
1537 + RS_NOPIC_MCALL,
1538 + RS_NOPIC_RCALL2,
1539 + RS_NOPIC_RCALL1,
1540 + RS_NOPIC_LDW4,
1541 + RS_NOPIC_LDDPC,
1542 + RS_NOPIC_SUB5,
1543 + RS_NOPIC_MOV2,
1544 + RS_NOPIC_MOV1,
1545 + RS_RCALL2,
1546 + RS_RCALL1,
1547 + RS_BRC2,
1548 + RS_BRC1,
1549 + RS_BRAL,
1550 + RS_RJMP,
1551 + RS_MAX,
1552 +};
1553 +
1554 +enum reference_type {
1555 + REF_ABSOLUTE,
1556 + REF_PCREL,
1557 + REF_CPOOL,
1558 + REF_GOT,
1559 +};
1560 +
1561 +struct relax_state
1562 +{
1563 + const char *name;
1564 + enum relax_state_id id;
1565 + enum relax_state_id direct;
1566 + enum relax_state_id next;
1567 + enum relax_state_id prev;
1568 +
1569 + enum reference_type reftype;
1570 +
1571 + unsigned int r_type;
1572 +
1573 + bfd_vma opcode;
1574 + bfd_vma opcode_mask;
1575 +
1576 + bfd_signed_vma range_min;
1577 + bfd_signed_vma range_max;
1578 +
1579 + bfd_size_type size;
1580 +};
1581 +
1582 +/*
1583 + * This is for relocs that
1584 + * a) has an addend or is of type R_AVR32_DIFF32, and
1585 + * b) references a different section than it's in, and
1586 + * c) references a section that is relaxable
1587 + *
1588 + * as well as relocs that references the constant pool, in which case
1589 + * the add_frag member points to the frag containing the constant pool
1590 + * entry.
1591 + *
1592 + * Such relocs must be fixed up whenever we delete any code. Sections
1593 + * that don't have any relocs with all of the above properties don't
1594 + * have any additional reloc data, but sections that do will have
1595 + * additional data for all its relocs.
1596 + */
1597 +struct avr32_reloc_data
1598 +{
1599 + struct fragment *add_frag;
1600 + struct fragment *sub_frag;
1601 +};
1602 +
1603 +/*
1604 + * A 'fragment' is a relaxable entity, that is, code may be added or
1605 + * deleted at the end of a fragment. When this happens, all subsequent
1606 + * fragments in the list will have their offsets updated.
1607 + */
1608 +struct fragment
1609 +{
1610 + enum relax_state_id state;
1611 + enum relax_state_id initial_state;
1612 +
1613 + Elf_Internal_Rela *rela;
1614 + bfd_size_type size;
1615 + bfd_vma offset;
1616 + int size_adjust;
1617 + int offset_adjust;
1618 + bfd_boolean has_grown;
1619 +
1620 + /* Only used by constant pool entries. When this drops to zero, the
1621 + frag is discarded (i.e. size_adjust is set to -4.) */
1622 + int refcount;
1623 +};
1624 +
1625 +struct avr32_relax_data
1626 +{
1627 + unsigned int frag_count;
1628 + struct fragment *frag;
1629 + struct avr32_reloc_data *reloc_data;
1630 +
1631 + /* TRUE if this section has one or more relaxable relocations */
1632 + bfd_boolean is_relaxable;
1633 + unsigned int iteration;
1634 +};
1635 +
1636 +struct avr32_section_data
1637 +{
1638 + struct bfd_elf_section_data elf;
1639 + struct avr32_relax_data relax_data;
1640 +};
1641 +
1642 +\f/* Relax state definitions */
1643 +
1644 +#define PIC_MOV2_OPCODE 0xe0600000
1645 +#define PIC_MOV2_MASK 0xe1e00000
1646 +#define PIC_MOV2_RANGE_MIN (-1048576 * 4)
1647 +#define PIC_MOV2_RANGE_MAX (1048575 * 4)
1648 +#define PIC_MCALL_OPCODE 0xf0160000
1649 +#define PIC_MCALL_MASK 0xffff0000
1650 +#define PIC_MCALL_RANGE_MIN (-131072)
1651 +#define PIC_MCALL_RANGE_MAX (131068)
1652 +#define RCALL2_OPCODE 0xe0a00000
1653 +#define RCALL2_MASK 0xe1ef0000
1654 +#define RCALL2_RANGE_MIN (-2097152)
1655 +#define RCALL2_RANGE_MAX (2097150)
1656 +#define RCALL1_OPCODE 0xc00c0000
1657 +#define RCALL1_MASK 0xf00c0000
1658 +#define RCALL1_RANGE_MIN (-1024)
1659 +#define RCALL1_RANGE_MAX (1022)
1660 +#define PIC_LDW4_OPCODE 0xecf00000
1661 +#define PIC_LDW4_MASK 0xfff00000
1662 +#define PIC_LDW4_RANGE_MIN (-32768)
1663 +#define PIC_LDW4_RANGE_MAX (32767)
1664 +#define PIC_LDW3_OPCODE 0x6c000000
1665 +#define PIC_LDW3_MASK 0xfe000000
1666 +#define PIC_LDW3_RANGE_MIN (0)
1667 +#define PIC_LDW3_RANGE_MAX (124)
1668 +#define SUB5_PC_OPCODE 0xfec00000
1669 +#define SUB5_PC_MASK 0xfff00000
1670 +#define SUB5_PC_RANGE_MIN (-32768)
1671 +#define SUB5_PC_RANGE_MAX (32767)
1672 +#define NOPIC_MCALL_OPCODE 0xf01f0000
1673 +#define NOPIC_MCALL_MASK 0xffff0000
1674 +#define NOPIC_MCALL_RANGE_MIN PIC_MCALL_RANGE_MIN
1675 +#define NOPIC_MCALL_RANGE_MAX PIC_MCALL_RANGE_MAX
1676 +#define NOPIC_LDW4_OPCODE 0xfef00000
1677 +#define NOPIC_LDW4_MASK 0xfff00000
1678 +#define NOPIC_LDW4_RANGE_MIN PIC_LDW4_RANGE_MIN
1679 +#define NOPIC_LDW4_RANGE_MAX PIC_LDW4_RANGE_MAX
1680 +#define LDDPC_OPCODE 0x48000000
1681 +#define LDDPC_MASK 0xf8000000
1682 +#define LDDPC_RANGE_MIN 0
1683 +#define LDDPC_RANGE_MAX 508
1684 +
1685 +#define NOPIC_MOV2_OPCODE 0xe0600000
1686 +#define NOPIC_MOV2_MASK 0xe1e00000
1687 +#define NOPIC_MOV2_RANGE_MIN (-1048576)
1688 +#define NOPIC_MOV2_RANGE_MAX (1048575)
1689 +#define NOPIC_MOV1_OPCODE 0x30000000
1690 +#define NOPIC_MOV1_MASK 0xf0000000
1691 +#define NOPIC_MOV1_RANGE_MIN (-128)
1692 +#define NOPIC_MOV1_RANGE_MAX (127)
1693 +
1694 +/* Only brc2 variants with cond[3] == 0 is considered, since the
1695 + others are not relaxable. bral is a special case and is handled
1696 + separately. */
1697 +#define BRC2_OPCODE 0xe0800000
1698 +#define BRC2_MASK 0xe1e80000
1699 +#define BRC2_RANGE_MIN (-2097152)
1700 +#define BRC2_RANGE_MAX (2097150)
1701 +#define BRC1_OPCODE 0xc0000000
1702 +#define BRC1_MASK 0xf0080000
1703 +#define BRC1_RANGE_MIN (-256)
1704 +#define BRC1_RANGE_MAX (254)
1705 +#define BRAL_OPCODE 0xe08f0000
1706 +#define BRAL_MASK 0xe1ef0000
1707 +#define BRAL_RANGE_MIN BRC2_RANGE_MIN
1708 +#define BRAL_RANGE_MAX BRC2_RANGE_MAX
1709 +#define RJMP_OPCODE 0xc0080000
1710 +#define RJMP_MASK 0xf00c0000
1711 +#define RJMP_RANGE_MIN (-1024)
1712 +#define RJMP_RANGE_MAX (1022)
1713 +
1714 +/* Define a relax state using the GOT */
1715 +#define RG(id, dir, next, prev, r_type, opc, size) \
1716 + { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_GOT, \
1717 + R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
1718 + opc##_RANGE_MIN, opc##_RANGE_MAX, size }
1719 +/* Define a relax state using the Constant Pool */
1720 +#define RC(id, dir, next, prev, r_type, opc, size) \
1721 + { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_CPOOL, \
1722 + R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
1723 + opc##_RANGE_MIN, opc##_RANGE_MAX, size }
1724 +
1725 +/* Define a relax state using pc-relative direct reference */
1726 +#define RP(id, dir, next, prev, r_type, opc, size) \
1727 + { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_PCREL, \
1728 + R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
1729 + opc##_RANGE_MIN, opc##_RANGE_MAX, size }
1730 +
1731 +/* Define a relax state using non-pc-relative direct reference */
1732 +#define RD(id, dir, next, prev, r_type, opc, size) \
1733 + { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_ABSOLUTE, \
1734 + R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
1735 + opc##_RANGE_MIN, opc##_RANGE_MAX, size }
1736 +
1737 +/* Define a relax state that will be handled specially */
1738 +#define RS(id, r_type, size) \
1739 + { "RS_"#id, RS_##id, RS_NONE, RS_NONE, RS_NONE, REF_ABSOLUTE, \
1740 + R_AVR32_##r_type, 0, 0, 0, 0, size }
1741 +
1742 +const struct relax_state relax_state[RS_MAX] = {
1743 + RS(NONE, NONE, 0),
1744 + RS(ALIGN, ALIGN, 0),
1745 + RS(CPENT, 32_CPENT, 4),
1746 +
1747 + RG(PIC_CALL, PIC_RCALL1, PIC_MCALL, NONE, GOTCALL, PIC_MOV2, 10),
1748 + RG(PIC_MCALL, PIC_RCALL1, NONE, PIC_CALL, GOT18SW, PIC_MCALL, 4),
1749 + RP(PIC_RCALL2, NONE, PIC_RCALL1, PIC_MCALL, 22H_PCREL, RCALL2, 4),
1750 + RP(PIC_RCALL1, NONE, NONE, PIC_RCALL2, 11H_PCREL, RCALL1, 2),
1751 +
1752 + RG(PIC_LDA, PIC_SUB5, PIC_LDW4, NONE, LDA_GOT, PIC_MOV2, 8),
1753 + RG(PIC_LDW4, PIC_SUB5, PIC_LDW3, PIC_LDA, GOT16S, PIC_LDW4, 4),
1754 + RG(PIC_LDW3, PIC_SUB5, NONE, PIC_LDW4, GOT7UW, PIC_LDW3, 2),
1755 + RP(PIC_SUB5, NONE, NONE, PIC_LDW3, 16N_PCREL, SUB5_PC, 4),
1756 +
1757 + RC(NOPIC_MCALL, NOPIC_RCALL1, NONE, NONE, CPCALL, NOPIC_MCALL, 4),
1758 + RP(NOPIC_RCALL2, NONE, NOPIC_RCALL1, NOPIC_MCALL, 22H_PCREL, RCALL2, 4),
1759 + RP(NOPIC_RCALL1, NONE, NONE, NOPIC_RCALL2, 11H_PCREL, RCALL1, 2),
1760 +
1761 + RC(NOPIC_LDW4, NOPIC_MOV1, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4),
1762 + RC(NOPIC_LDDPC, NOPIC_MOV1, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2),
1763 + RP(NOPIC_SUB5, NOPIC_MOV1, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4),
1764 + RD(NOPIC_MOV2, NONE, NOPIC_MOV1, NOPIC_SUB5, 21S, NOPIC_MOV2, 4),
1765 + RD(NOPIC_MOV1, NONE, NONE, NOPIC_MOV2, 8S, NOPIC_MOV1, 2),
1766 +
1767 + RP(RCALL2, NONE, RCALL1, NONE, 22H_PCREL, RCALL2, 4),
1768 + RP(RCALL1, NONE, NONE, RCALL2, 11H_PCREL, RCALL1, 2),
1769 + RP(BRC2, NONE, BRC1, NONE, 22H_PCREL, BRC2, 4),
1770 + RP(BRC1, NONE, NONE, BRC2, 9H_PCREL, BRC1, 2),
1771 + RP(BRAL, NONE, RJMP, NONE, 22H_PCREL, BRAL, 4),
1772 + RP(RJMP, NONE, NONE, BRAL, 11H_PCREL, RJMP, 2),
1773 +};
1774 +
1775 +static bfd_boolean
1776 +avr32_elf_new_section_hook(bfd *abfd, asection *sec)
1777 +{
1778 + struct avr32_section_data *sdata;
1779 +
1780 + sdata = bfd_zalloc(abfd, sizeof(struct avr32_section_data));
1781 + if (!sdata)
1782 + return FALSE;
1783 +
1784 + sec->used_by_bfd = sdata;
1785 + return _bfd_elf_new_section_hook(abfd, sec);
1786 +}
1787 +
1788 +static struct avr32_relax_data *
1789 +avr32_relax_data(asection *sec)
1790 +{
1791 + struct avr32_section_data *sdata;
1792 +
1793 + BFD_ASSERT(sec->used_by_bfd);
1794 +
1795 + sdata = (struct avr32_section_data *)elf_section_data(sec);
1796 + return &sdata->relax_data;
1797 +}
1798 +
1799 +\f/* Link-time relaxation */
1800 +
1801 +static bfd_boolean
1802 +avr32_elf_relax_section(bfd *abfd, asection *sec,
1803 + struct bfd_link_info *info, bfd_boolean *again);
1804 +
1805 +enum relax_pass_id {
1806 + RELAX_PASS_SIZE_FRAGS,
1807 + RELAX_PASS_MOVE_DATA,
1808 +};
1809 +
1810 +/* Stolen from the xtensa port */
1811 +static int
1812 +internal_reloc_compare (const void *ap, const void *bp)
1813 +{
1814 + const Elf_Internal_Rela *a = (const Elf_Internal_Rela *) ap;
1815 + const Elf_Internal_Rela *b = (const Elf_Internal_Rela *) bp;
1816 +
1817 + if (a->r_offset != b->r_offset)
1818 + return (a->r_offset - b->r_offset);
1819 +
1820 + /* We don't need to sort on these criteria for correctness,
1821 + but enforcing a more strict ordering prevents unstable qsort
1822 + from behaving differently with different implementations.
1823 + Without the code below we get correct but different results
1824 + on Solaris 2.7 and 2.8. We would like to always produce the
1825 + same results no matter the host. */
1826 +
1827 + if (a->r_info != b->r_info)
1828 + return (a->r_info - b->r_info);
1829 +
1830 + return (a->r_addend - b->r_addend);
1831 +}
1832 +
1833 +static enum relax_state_id
1834 +get_pcrel22_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
1835 + const Elf_Internal_Rela *rela)
1836 +{
1837 + bfd_byte *contents;
1838 + bfd_vma insn;
1839 + enum relax_state_id rs = RS_NONE;
1840 +
1841 + contents = retrieve_contents(abfd, sec, info->keep_memory);
1842 + if (!contents)
1843 + return RS_ERROR;
1844 +
1845 + insn = bfd_get_32(abfd, contents + rela->r_offset);
1846 + if ((insn & RCALL2_MASK) == RCALL2_OPCODE)
1847 + rs = RS_RCALL2;
1848 + else if ((insn & BRAL_MASK) == BRAL_OPCODE)
1849 + /* Optimizing bral -> rjmp gets us into all kinds of
1850 + trouble with jump tables. Better not do it. */
1851 + rs = RS_NONE;
1852 + else if ((insn & BRC2_MASK) == BRC2_OPCODE)
1853 + rs = RS_BRC2;
1854 +
1855 + release_contents(sec, contents);
1856 +
1857 + return rs;
1858 +}
1859 +
1860 +static enum relax_state_id
1861 +get_initial_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
1862 + const Elf_Internal_Rela *rela)
1863 +{
1864 + switch (ELF_R_TYPE(rela->r_info))
1865 + {
1866 + case R_AVR32_GOTCALL:
1867 + return RS_PIC_CALL;
1868 + case R_AVR32_GOT18SW:
1869 + return RS_PIC_MCALL;
1870 + case R_AVR32_LDA_GOT:
1871 + return RS_PIC_LDA;
1872 + case R_AVR32_GOT16S:
1873 + return RS_PIC_LDW4;
1874 + case R_AVR32_CPCALL:
1875 + return RS_NOPIC_MCALL;
1876 + case R_AVR32_16_CP:
1877 + return RS_NOPIC_LDW4;
1878 + case R_AVR32_9W_CP:
1879 + return RS_NOPIC_LDDPC;
1880 + case R_AVR32_ALIGN:
1881 + return RS_ALIGN;
1882 + case R_AVR32_32_CPENT:
1883 + return RS_CPENT;
1884 + case R_AVR32_22H_PCREL:
1885 + return get_pcrel22_relax_state(abfd, sec, info, rela);
1886 + case R_AVR32_9H_PCREL:
1887 + return RS_BRC1;
1888 + default:
1889 + return RS_NONE;
1890 + }
1891 +}
1892 +
1893 +static bfd_boolean
1894 +reloc_is_cpool_ref(const Elf_Internal_Rela *rela)
1895 +{
1896 + switch (ELF_R_TYPE(rela->r_info))
1897 + {
1898 + case R_AVR32_CPCALL:
1899 + case R_AVR32_16_CP:
1900 + case R_AVR32_9W_CP:
1901 + return TRUE;
1902 + default:
1903 + return FALSE;
1904 + }
1905 +}
1906 +
1907 +static struct fragment *
1908 +new_frag(bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
1909 + struct avr32_relax_data *rd, enum relax_state_id state,
1910 + Elf_Internal_Rela *rela)
1911 +{
1912 + struct fragment *frag;
1913 + bfd_size_type r_size;
1914 + bfd_vma r_offset;
1915 + unsigned int i = rd->frag_count;
1916 +
1917 + BFD_ASSERT(state >= RS_NONE && state < RS_MAX);
1918 +
1919 + rd->frag_count++;
1920 + frag = bfd_realloc(rd->frag, sizeof(struct fragment) * rd->frag_count);
1921 + if (!frag)
1922 + return NULL;
1923 + rd->frag = frag;
1924 +
1925 + frag += i;
1926 + memset(frag, 0, sizeof(struct fragment));
1927 +
1928 + if (state == RS_ALIGN)
1929 + r_size = (((rela->r_offset + (1 << rela->r_addend) - 1)
1930 + & ~((1 << rela->r_addend) - 1)) - rela->r_offset);
1931 + else
1932 + r_size = relax_state[state].size;
1933 +
1934 + if (rela)
1935 + r_offset = rela->r_offset;
1936 + else
1937 + r_offset = sec->size;
1938 +
1939 + if (i == 0)
1940 + {
1941 + frag->offset = 0;
1942 + frag->size = r_offset + r_size;
1943 + }
1944 + else
1945 + {
1946 + frag->offset = rd->frag[i - 1].offset + rd->frag[i - 1].size;
1947 + frag->size = r_offset + r_size - frag->offset;
1948 + }
1949 +
1950 + if (state != RS_CPENT)
1951 + /* Make sure we don't discard this frag */
1952 + frag->refcount = 1;
1953 +
1954 + frag->initial_state = frag->state = state;
1955 + frag->rela = rela;
1956 +
1957 + return frag;
1958 +}
1959 +
1960 +static struct fragment *
1961 +find_frag(asection *sec, bfd_vma offset)
1962 +{
1963 + struct fragment *first, *last;
1964 + struct avr32_relax_data *rd = avr32_relax_data(sec);
1965 +
1966 + if (rd->frag_count == 0)
1967 + return NULL;
1968 +
1969 + first = &rd->frag[0];
1970 + last = &rd->frag[rd->frag_count - 1];
1971 +
1972 + /* This may be a reloc referencing the end of a section. The last
1973 + frag will never have a reloc associated with it, so its size will
1974 + never change, thus the offset adjustment of the last frag will
1975 + always be the same as the offset adjustment of the end of the
1976 + section. */
1977 + if (offset == sec->size)
1978 + {
1979 + BFD_ASSERT(last->offset + last->size == sec->size);
1980 + BFD_ASSERT(!last->rela);
1981 + return last;
1982 + }
1983 +
1984 + while (first <= last)
1985 + {
1986 + struct fragment *mid;
1987 +
1988 + mid = (last - first) / 2 + first;
1989 + if ((mid->offset + mid->size) <= offset)
1990 + first = mid + 1;
1991 + else if (mid->offset > offset)
1992 + last = mid - 1;
1993 + else
1994 + return mid;
1995 + }
1996 +
1997 + return NULL;
1998 +}
1999 +
2000 +/* Look through all relocs in a section and determine if any relocs
2001 + may be affected by relaxation in other sections. If so, allocate
2002 + an array of additional relocation data which links the affected
2003 + relocations to the frag(s) where the relaxation may occur.
2004 +
2005 + This function also links cpool references to cpool entries and
2006 + increments the refcount of the latter when this happens. */
2007 +
2008 +static bfd_boolean
2009 +allocate_reloc_data(bfd *abfd, asection *sec, Elf_Internal_Rela *relocs,
2010 + struct bfd_link_info *info)
2011 +{
2012 + Elf_Internal_Shdr *symtab_hdr;
2013 + Elf_Internal_Sym *isymbuf = NULL;
2014 + struct avr32_relax_data *rd;
2015 + unsigned int i;
2016 + bfd_boolean ret = FALSE;
2017 +
2018 + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
2019 + rd = avr32_relax_data(sec);
2020 +
2021 + RDBG("%s<%s>: allocate_reloc_data\n", abfd->filename, sec->name);
2022 +
2023 + for (i = 0; i < sec->reloc_count; i++)
2024 + {
2025 + Elf_Internal_Rela *rel = &relocs[i];
2026 + asection *sym_sec;
2027 + unsigned long r_symndx;
2028 + bfd_vma sym_value;
2029 +
2030 + if (!rel->r_addend && ELF_R_TYPE(rel->r_info) != R_AVR32_DIFF32
2031 + && !reloc_is_cpool_ref(rel))
2032 + continue;
2033 +
2034 + r_symndx = ELF_R_SYM(rel->r_info);
2035 +
2036 + if (r_symndx < symtab_hdr->sh_info)
2037 + {
2038 + Elf_Internal_Sym *isym;
2039 +
2040 + if (!isymbuf)
2041 + isymbuf = retrieve_local_syms(abfd, info->keep_memory);
2042 + if (!isymbuf)
2043 + return FALSE;
2044 +
2045 + isym = &isymbuf[r_symndx];
2046 + sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
2047 + sym_value = isym->st_value;
2048 + }
2049 + else
2050 + {
2051 + struct elf_link_hash_entry *h;
2052 +
2053 + h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
2054 +
2055 + while (h->root.type == bfd_link_hash_indirect
2056 + || h->root.type == bfd_link_hash_warning)
2057 + h = (struct elf_link_hash_entry *)h->root.u.i.link;
2058 +
2059 + if (h->root.type != bfd_link_hash_defined
2060 + && h->root.type != bfd_link_hash_defweak)
2061 + continue;
2062 +
2063 + sym_sec = h->root.u.def.section;
2064 + sym_value = h->root.u.def.value;
2065 + }
2066 +
2067 + if (sym_sec && avr32_relax_data(sym_sec)->is_relaxable)
2068 + {
2069 + bfd_size_type size;
2070 + struct fragment *frag;
2071 +
2072 + if (!rd->reloc_data)
2073 + {
2074 + size = sizeof(struct avr32_reloc_data) * sec->reloc_count;
2075 + rd->reloc_data = bfd_zalloc(abfd, size);
2076 + if (!rd->reloc_data)
2077 + goto out;
2078 + }
2079 +
2080 + RDBG("[%3d] 0x%04lx: target: 0x%lx + 0x%lx",
2081 + i, rel->r_offset, sym_value, rel->r_addend);
2082 +
2083 + frag = find_frag(sym_sec, sym_value + rel->r_addend);
2084 + BFD_ASSERT(frag);
2085 + rd->reloc_data[i].add_frag = frag;
2086 +
2087 + RDBG(" -> %s<%s>:%04lx\n", sym_sec->owner->filename, sym_sec->name,
2088 + frag->rela ? frag->rela->r_offset : sym_sec->size);
2089 +
2090 + if (reloc_is_cpool_ref(rel))
2091 + {
2092 + BFD_ASSERT(ELF_R_TYPE(frag->rela->r_info) == R_AVR32_32_CPENT);
2093 + frag->refcount++;
2094 + }
2095 +
2096 + if (ELF_R_TYPE(rel->r_info) == R_AVR32_DIFF32)
2097 + {
2098 + bfd_byte *contents;
2099 + bfd_signed_vma diff;
2100 +
2101 + contents = retrieve_contents(abfd, sec, info->keep_memory);
2102 + if (!contents)
2103 + goto out;
2104 +
2105 + diff = bfd_get_signed_32(abfd, contents + rel->r_offset);
2106 + frag = find_frag(sym_sec, sym_value + rel->r_addend + diff);
2107 + BFD_ASSERT(frag);
2108 + rd->reloc_data[i].sub_frag = frag;
2109 +
2110 + release_contents(sec, contents);
2111 + }
2112 + }
2113 + }
2114 +
2115 + ret = TRUE;
2116 +
2117 + out:
2118 + release_local_syms(abfd, isymbuf);
2119 + return ret;
2120 +}
2121 +
2122 +static bfd_boolean
2123 +global_sym_set_frag(struct elf_avr32_link_hash_entry *havr,
2124 + struct bfd_link_info *info ATTRIBUTE_UNUSED)
2125 +{
2126 + struct fragment *frag;
2127 + asection *sec;
2128 +
2129 + if (havr->root.root.type != bfd_link_hash_defined
2130 + && havr->root.root.type != bfd_link_hash_defweak)
2131 + return TRUE;
2132 +
2133 + sec = havr->root.root.u.def.section;
2134 + if (bfd_is_const_section(sec)
2135 + || !avr32_relax_data(sec)->is_relaxable)
2136 + return TRUE;
2137 +
2138 + frag = find_frag(sec, havr->root.root.u.def.value);
2139 + if (!frag)
2140 + {
2141 + unsigned int i;
2142 + struct avr32_relax_data *rd = avr32_relax_data(sec);
2143 +
2144 + RDBG("In %s: No frag for %s <%s+%lu> (limit %lu)\n",
2145 + sec->owner->filename, havr->root.root.root.string,
2146 + sec->name, havr->root.root.u.def.value, sec->size);
2147 + for (i = 0; i < rd->frag_count; i++)
2148 + RDBG(" %8lu - %8lu\n", rd->frag[i].offset,
2149 + rd->frag[i].offset + rd->frag[i].size);
2150 + }
2151 + BFD_ASSERT(frag);
2152 +
2153 + havr->sym_frag = frag;
2154 + return TRUE;
2155 +}
2156 +
2157 +static bfd_boolean
2158 +analyze_relocations(struct bfd_link_info *info)
2159 +{
2160 + bfd *abfd;
2161 + asection *sec;
2162 +
2163 + /* Divide all relaxable sections into fragments */
2164 + for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
2165 + {
2166 + if (!(elf_elfheader(abfd)->e_flags & EF_AVR32_LINKRELAX))
2167 + {
2168 + if (!(*info->callbacks->warning)
2169 + (info, _("input is not relaxable"), NULL, abfd, NULL, 0))
2170 + return FALSE;
2171 + continue;
2172 + }
2173 +
2174 + for (sec = abfd->sections; sec; sec = sec->next)
2175 + {
2176 + struct avr32_relax_data *rd;
2177 + struct fragment *frag;
2178 + Elf_Internal_Rela *relocs;
2179 + unsigned int i;
2180 + bfd_boolean ret = TRUE;
2181 +
2182 + if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
2183 + continue;
2184 +
2185 + rd = avr32_relax_data(sec);
2186 +
2187 + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
2188 + if (!relocs)
2189 + return FALSE;
2190 +
2191 + qsort(relocs, sec->reloc_count, sizeof(Elf_Internal_Rela),
2192 + internal_reloc_compare);
2193 +
2194 + for (i = 0; i < sec->reloc_count; i++)
2195 + {
2196 + enum relax_state_id state;
2197 +
2198 + ret = FALSE;
2199 + state = get_initial_relax_state(abfd, sec, info, &relocs[i]);
2200 + if (state == RS_ERROR)
2201 + break;
2202 +
2203 + if (state)
2204 + {
2205 + frag = new_frag(abfd, sec, rd, state, &relocs[i]);
2206 + if (!frag)
2207 + break;
2208 +
2209 + pin_internal_relocs(sec, relocs);
2210 + rd->is_relaxable = TRUE;
2211 + }
2212 +
2213 + ret = TRUE;
2214 + }
2215 +
2216 + release_internal_relocs(sec, relocs);
2217 + if (!ret)
2218 + return ret;
2219 +
2220 + if (rd->is_relaxable)
2221 + {
2222 + frag = new_frag(abfd, sec, rd, RS_NONE, NULL);
2223 + if (!frag)
2224 + return FALSE;
2225 + }
2226 + }
2227 + }
2228 +
2229 + /* Link each global symbol to the fragment where it's defined. */
2230 + elf_link_hash_traverse(elf_hash_table(info), global_sym_set_frag, info);
2231 +
2232 + /* Do the same for local symbols. */
2233 + for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
2234 + {
2235 + Elf_Internal_Sym *isymbuf, *isym;
2236 + struct fragment **local_sym_frag;
2237 + unsigned int i, sym_count;
2238 +
2239 + sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
2240 + if (sym_count == 0)
2241 + continue;
2242 +
2243 + local_sym_frag = bfd_zalloc(abfd, sym_count * sizeof(struct fragment *));
2244 + if (!local_sym_frag)
2245 + return FALSE;
2246 + elf_tdata(abfd)->local_sym_frag = local_sym_frag;
2247 +
2248 + isymbuf = retrieve_local_syms(abfd, info->keep_memory);
2249 + if (!isymbuf)
2250 + return FALSE;
2251 +
2252 + for (i = 0; i < sym_count; i++)
2253 + {
2254 + struct avr32_relax_data *rd;
2255 + struct fragment *frag;
2256 + asection *sec;
2257 +
2258 + isym = &isymbuf[i];
2259 +
2260 + sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
2261 + if (!sec)
2262 + continue;
2263 +
2264 + rd = avr32_relax_data(sec);
2265 + if (!rd->is_relaxable)
2266 + continue;
2267 +
2268 + frag = find_frag(sec, isym->st_value);
2269 + BFD_ASSERT(frag);
2270 +
2271 + local_sym_frag[i] = frag;
2272 + }
2273 +
2274 + release_local_syms(abfd, isymbuf);
2275 + }
2276 +
2277 + /* And again for relocs with addends and constant pool references */
2278 + for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
2279 + for (sec = abfd->sections; sec; sec = sec->next)
2280 + {
2281 + Elf_Internal_Rela *relocs;
2282 + bfd_boolean ret;
2283 +
2284 + if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
2285 + continue;
2286 +
2287 + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
2288 + if (!relocs)
2289 + return FALSE;
2290 +
2291 + ret = allocate_reloc_data(abfd, sec, relocs, info);
2292 +
2293 + release_internal_relocs(sec, relocs);
2294 + if (ret == FALSE)
2295 + return ret;
2296 + }
2297 +
2298 + return TRUE;
2299 +}
2300 +
2301 +static bfd_boolean
2302 +rs_is_good_enough(const struct relax_state *rs, struct fragment *frag,
2303 + bfd_vma symval, bfd_vma addr, struct got_entry *got,
2304 + struct avr32_reloc_data *ind_data,
2305 + bfd_signed_vma offset_adjust)
2306 +{
2307 + bfd_signed_vma target = 0;
2308 +
2309 + switch (rs->reftype)
2310 + {
2311 + case REF_ABSOLUTE:
2312 + target = symval;
2313 + break;
2314 + case REF_PCREL:
2315 + target = symval - addr;
2316 + break;
2317 + case REF_CPOOL:
2318 + /* cpool frags are always in the same section and always after
2319 + all frags referring to it. So it's always correct to add in
2320 + offset_adjust here. */
2321 + target = (ind_data->add_frag->offset + ind_data->add_frag->offset_adjust
2322 + + offset_adjust - frag->offset - frag->offset_adjust);
2323 + break;
2324 + case REF_GOT:
2325 + target = got->offset;
2326 + break;
2327 + default:
2328 + abort();
2329 + }
2330 +
2331 + if (target >= rs->range_min && target <= rs->range_max)
2332 + return TRUE;
2333 + else
2334 + return FALSE;
2335 +}
2336 +
2337 +static bfd_boolean
2338 +avr32_size_frags(bfd *abfd, asection *sec, struct bfd_link_info *info)
2339 +{
2340 + struct elf_avr32_link_hash_table *htab;
2341 + struct avr32_relax_data *rd;
2342 + Elf_Internal_Shdr *symtab_hdr;
2343 + Elf_Internal_Rela *relocs = NULL;
2344 + Elf_Internal_Sym *isymbuf = NULL;
2345 + struct got_entry **local_got_ents;
2346 + struct fragment **local_sym_frag;
2347 + bfd_boolean ret = FALSE;
2348 + bfd_signed_vma delta = 0;
2349 + unsigned int i;
2350 +
2351 + htab = avr32_elf_hash_table(info);
2352 + rd = avr32_relax_data(sec);
2353 +
2354 + if (sec == htab->sgot)
2355 + {
2356 + RDBG("Relaxing GOT section (vma: 0x%lx)\n",
2357 + sec->output_section->vma + sec->output_offset);
2358 + if (assign_got_offsets(htab))
2359 + htab->repeat_pass = TRUE;
2360 + return TRUE;
2361 + }
2362 +
2363 + if (!rd->is_relaxable)
2364 + return TRUE;
2365 +
2366 + if (!sec->rawsize)
2367 + sec->rawsize = sec->size;
2368 +
2369 + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
2370 + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
2371 + if (!relocs)
2372 + goto out;
2373 +
2374 + isymbuf = retrieve_local_syms(abfd, info->keep_memory);
2375 + if (!isymbuf)
2376 + goto out;
2377 +
2378 + local_got_ents = elf_local_got_ents(abfd);
2379 + local_sym_frag = elf_tdata(abfd)->local_sym_frag;
2380 +
2381 + RDBG("size_frags: %s<%s>\n vma: 0x%08lx, size: 0x%08lx\n",
2382 + abfd->filename, sec->name,
2383 + sec->output_section->vma + sec->output_offset, sec->size);
2384 +
2385 + for (i = 0; i < rd->frag_count; i++)
2386 + {
2387 + struct fragment *frag = &rd->frag[i];
2388 + struct avr32_reloc_data *r_data = NULL, *ind_data = NULL;
2389 + const struct relax_state *state, *next_state;
2390 + struct fragment *target_frag = NULL;
2391 + asection *sym_sec = NULL;
2392 + Elf_Internal_Rela *rela;
2393 + struct got_entry *got;
2394 + bfd_vma symval, r_offset, addend, addr;
2395 + bfd_signed_vma size_adjust = 0, distance;
2396 + unsigned long r_symndx;
2397 + bfd_boolean defined = TRUE, dynamic = FALSE;
2398 + unsigned char sym_type;
2399 +
2400 + frag->offset_adjust += delta;
2401 + state = next_state = &relax_state[frag->state];
2402 + rela = frag->rela;
2403 +
2404 + BFD_ASSERT(state->id == frag->state);
2405 +
2406 + RDBG(" 0x%04lx%c%d: %s [size %ld]", rela ? rela->r_offset : sec->rawsize,
2407 + (frag->offset_adjust < 0)?'-':'+',
2408 + abs(frag->offset_adjust), state->name, state->size);
2409 +
2410 + if (!rela)
2411 + {
2412 + RDBG(": no reloc, ignoring\n");
2413 + continue;
2414 + }
2415 +
2416 + BFD_ASSERT((unsigned int)(rela - relocs) < sec->reloc_count);
2417 + BFD_ASSERT(state != RS_NONE);
2418 +
2419 + r_offset = rela->r_offset + frag->offset_adjust;
2420 + addr = sec->output_section->vma + sec->output_offset + r_offset;
2421 +
2422 + switch (frag->state)
2423 + {
2424 + case RS_ALIGN:
2425 + size_adjust = ((addr + (1 << rela->r_addend) - 1)
2426 + & ~((1 << rela->r_addend) - 1));
2427 + size_adjust -= (sec->output_section->vma + sec->output_offset
2428 + + frag->offset + frag->offset_adjust
2429 + + frag->size + frag->size_adjust);
2430 +
2431 + RDBG(": adjusting size %lu -> %lu\n", frag->size + frag->size_adjust,
2432 + frag->size + frag->size_adjust + size_adjust);
2433 + break;
2434 +
2435 + case RS_CPENT:
2436 + if (frag->refcount == 0 && frag->size_adjust == 0)
2437 + {
2438 + RDBG(": discarding frag\n");
2439 + size_adjust = -4;
2440 + }
2441 + else if (frag->refcount > 0 && frag->size_adjust < 0)
2442 + {
2443 + RDBG(": un-discarding frag\n");
2444 + size_adjust = 4;
2445 + }
2446 + break;
2447 +
2448 + default:
2449 + if (rd->reloc_data)
2450 + r_data = &rd->reloc_data[frag->rela - relocs];
2451 +
2452 + /* If this is a cpool reference, we want the symbol that the
2453 + cpool entry refers to, not the symbol for the cpool entry
2454 + itself, as we already know what frag it's in. */
2455 + if (relax_state[frag->initial_state].reftype == REF_CPOOL)
2456 + {
2457 + Elf_Internal_Rela *irela = r_data->add_frag->rela;
2458 +
2459 + r_symndx = ELF_R_SYM(irela->r_info);
2460 + addend = irela->r_addend;
2461 +
2462 + /* The constant pool must be in the same section as the
2463 + reloc referring to it. */
2464 + BFD_ASSERT((unsigned long)(irela - relocs) < sec->reloc_count);
2465 +
2466 + ind_data = r_data;
2467 + r_data = &rd->reloc_data[irela - relocs];
2468 + }
2469 + else
2470 + {
2471 + r_symndx = ELF_R_SYM(rela->r_info);
2472 + addend = rela->r_addend;
2473 + }
2474 +
2475 + /* Get the value of the symbol referred to by the reloc. */
2476 + if (r_symndx < symtab_hdr->sh_info)
2477 + {
2478 + Elf_Internal_Sym *isym;
2479 +
2480 + isym = isymbuf + r_symndx;
2481 + symval = 0;
2482 +
2483 + RDBG(" local sym %lu: ", r_symndx);
2484 +
2485 + if (isym->st_shndx == SHN_UNDEF)
2486 + defined = FALSE;
2487 + else if (isym->st_shndx == SHN_ABS)
2488 + sym_sec = bfd_abs_section_ptr;
2489 + else if (isym->st_shndx == SHN_COMMON)
2490 + sym_sec = bfd_com_section_ptr;
2491 + else
2492 + sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
2493 +
2494 + symval = isym->st_value;
2495 + sym_type = ELF_ST_TYPE(isym->st_info);
2496 + target_frag = local_sym_frag[r_symndx];
2497 +
2498 + if (local_got_ents)
2499 + got = local_got_ents[r_symndx];
2500 + else
2501 + got = NULL;
2502 + }
2503 + else
2504 + {
2505 + /* Global symbol */
2506 + unsigned long index;
2507 + struct elf_link_hash_entry *h;
2508 + struct elf_avr32_link_hash_entry *havr;
2509 +
2510 + index = r_symndx - symtab_hdr->sh_info;
2511 + h = elf_sym_hashes(abfd)[index];
2512 + BFD_ASSERT(h != NULL);
2513 +
2514 + while (h->root.type == bfd_link_hash_indirect
2515 + || h->root.type == bfd_link_hash_warning)
2516 + h = (struct elf_link_hash_entry *)h->root.u.i.link;
2517 +
2518 + havr = (struct elf_avr32_link_hash_entry *)h;
2519 + got = h->got.glist;
2520 +
2521 + symval = 0;
2522 +
2523 + RDBG(" %s: ", h->root.root.string);
2524 +
2525 + if (h->root.type != bfd_link_hash_defined
2526 + && h->root.type != bfd_link_hash_defweak)
2527 + {
2528 + RDBG("(undef)");
2529 + defined = FALSE;
2530 + }
2531 + else if ((info->shared && !info->symbolic && h->dynindx != -1)
2532 + || (htab->root.dynamic_sections_created
2533 + && h->def_dynamic && !h->def_regular))
2534 + {
2535 + RDBG("(dynamic)");
2536 + dynamic = TRUE;
2537 + sym_sec = h->root.u.def.section;
2538 + }
2539 + else
2540 + {
2541 + sym_sec = h->root.u.def.section;
2542 + symval = h->root.u.def.value;
2543 + target_frag = havr->sym_frag;
2544 + }
2545 +
2546 + sym_type = h->type;
2547 + }
2548 +
2549 + /* Thanks to elf32-ppc for this one. */
2550 + if (sym_sec && sym_sec->sec_info_type == ELF_INFO_TYPE_MERGE)
2551 + {
2552 + /* At this stage in linking, no SEC_MERGE symbol has been
2553 + adjusted, so all references to such symbols need to be
2554 + passed through _bfd_merged_section_offset. (Later, in
2555 + relocate_section, all SEC_MERGE symbols *except* for
2556 + section symbols have been adjusted.)
2557 +
2558 + SEC_MERGE sections are not relaxed by us, as they
2559 + shouldn't contain any code. */
2560 +
2561 + BFD_ASSERT(!target_frag && !(r_data && r_data->add_frag));
2562 +
2563 + /* gas may reduce relocations against symbols in SEC_MERGE
2564 + sections to a relocation against the section symbol when
2565 + the original addend was zero. When the reloc is against
2566 + a section symbol we should include the addend in the
2567 + offset passed to _bfd_merged_section_offset, since the
2568 + location of interest is the original symbol. On the
2569 + other hand, an access to "sym+addend" where "sym" is not
2570 + a section symbol should not include the addend; Such an
2571 + access is presumed to be an offset from "sym"; The
2572 + location of interest is just "sym". */
2573 + RDBG("\n MERGE: %s: 0x%lx+0x%lx+0x%lx -> ",
2574 + (sym_type == STT_SECTION)?"section":"not section",
2575 + sym_sec->output_section->vma + sym_sec->output_offset,
2576 + symval, addend);
2577 +
2578 + if (sym_type == STT_SECTION)
2579 + symval += addend;
2580 +
2581 + symval = (_bfd_merged_section_offset
2582 + (abfd, &sym_sec,
2583 + elf_section_data(sym_sec)->sec_info, symval));
2584 +
2585 + if (sym_type != STT_SECTION)
2586 + symval += addend;
2587 + }
2588 + else
2589 + symval += addend;
2590 +
2591 + if (defined && !dynamic)
2592 + {
2593 + RDBG("0x%lx+0x%lx",
2594 + sym_sec->output_section->vma + sym_sec->output_offset,
2595 + symval);
2596 + symval += sym_sec->output_section->vma + sym_sec->output_offset;
2597 + }
2598 +
2599 + if (r_data && r_data->add_frag)
2600 + /* If the add_frag pointer is set, it means that this reloc
2601 + has an addend that may be affected by relaxation. */
2602 + target_frag = r_data->add_frag;
2603 +
2604 + if (target_frag)
2605 + {
2606 + symval += target_frag->offset_adjust;
2607 +
2608 + /* If target_frag comes after this frag in the same
2609 + section, we should assume that it will be moved by
2610 + the same amount we are. */
2611 + if ((target_frag - rd->frag) < (int)rd->frag_count
2612 + && target_frag > frag)
2613 + symval += delta;
2614 + }
2615 +
2616 + distance = symval - addr;
2617 +
2618 + /* First, try to make a direct reference. If the symbol is
2619 + dynamic or undefined, we must take care not to change its
2620 + reference type, that is, we can't make it direct.
2621 +
2622 + Also, it seems like some sections may actually be resized
2623 + after the relaxation code is done, so we can't really
2624 + trust that our "distance" is correct. There's really no
2625 + easy solution to this problem, so we'll just disallow
2626 + direct references to SEC_DATA sections.
2627 +
2628 + Oh, and .bss isn't actually SEC_DATA, so we disallow
2629 + !SEC_HAS_CONTENTS as well. */
2630 + if (!dynamic && defined
2631 + && (htab->direct_data_refs
2632 + || (!(sym_sec->flags & SEC_DATA)
2633 + && (sym_sec->flags & SEC_HAS_CONTENTS)))
2634 + && next_state->direct)
2635 + {
2636 + next_state = &relax_state[next_state->direct];
2637 + RDBG(" D-> %s", next_state->name);
2638 + }
2639 +
2640 + /* Iterate backwards until we find a state that fits. */
2641 + while (next_state->prev
2642 + && !rs_is_good_enough(next_state, frag, symval, addr,
2643 + got, ind_data, delta))
2644 + {
2645 + next_state = &relax_state[next_state->prev];
2646 + RDBG(" P-> %s", next_state->name);
2647 + }
2648 +
2649 + /* Then try to find the best possible state. */
2650 + while (next_state->next)
2651 + {
2652 + const struct relax_state *candidate;
2653 +
2654 + candidate = &relax_state[next_state->next];
2655 + if (!rs_is_good_enough(candidate, frag, symval, addr, got,
2656 + ind_data, delta))
2657 + break;
2658 +
2659 + next_state = candidate;
2660 + RDBG(" N-> %s", next_state->name);
2661 + }
2662 +
2663 + RDBG(" [size %ld]\n", next_state->size);
2664 +
2665 + BFD_ASSERT(next_state->id);
2666 + BFD_ASSERT(!dynamic || next_state->reftype == REF_GOT);
2667 +
2668 + size_adjust = next_state->size - state->size;
2669 +
2670 + /* There's a theoretical possibility that shrinking one frag
2671 + may cause another to grow, which may cause the first one to
2672 + grow as well, and we're back where we started. Avoid this
2673 + scenario by disallowing a frag that has grown to ever
2674 + shrink again. */
2675 + if (state->reftype == REF_GOT && next_state->reftype != REF_GOT)
2676 + {
2677 + if (frag->has_grown)
2678 + next_state = state;
2679 + else
2680 + unref_got_entry(htab, got);
2681 + }
2682 + else if (state->reftype != REF_GOT && next_state->reftype == REF_GOT)
2683 + {
2684 + ref_got_entry(htab, got);
2685 + frag->has_grown = TRUE;
2686 + }
2687 + else if (state->reftype == REF_CPOOL
2688 + && next_state->reftype != REF_CPOOL)
2689 + {
2690 + if (frag->has_grown)
2691 + next_state = state;
2692 + else
2693 + ind_data->add_frag->refcount--;
2694 + }
2695 + else if (state->reftype != REF_CPOOL
2696 + && next_state->reftype == REF_CPOOL)
2697 + {
2698 + ind_data->add_frag->refcount++;
2699 + frag->has_grown = TRUE;
2700 + }
2701 + else
2702 + {
2703 + if (frag->has_grown && size_adjust < 0)
2704 + next_state = state;
2705 + else if (size_adjust > 0)
2706 + frag->has_grown = TRUE;
2707 + }
2708 +
2709 + size_adjust = next_state->size - state->size;
2710 + frag->state = next_state->id;
2711 +
2712 + break;
2713 + }
2714 +
2715 + if (size_adjust)
2716 + htab->repeat_pass = TRUE;
2717 +
2718 + frag->size_adjust += size_adjust;
2719 + sec->size += size_adjust;
2720 + delta += size_adjust;
2721 +
2722 + BFD_ASSERT((frag->offset + frag->offset_adjust
2723 + + frag->size + frag->size_adjust)
2724 + == (frag[1].offset + frag[1].offset_adjust + delta));
2725 + }
2726 +
2727 + ret = TRUE;
2728 +
2729 + out:
2730 + release_local_syms(abfd, isymbuf);
2731 + release_internal_relocs(sec, relocs);
2732 + return ret;
2733 +}
2734 +
2735 +static bfd_boolean
2736 +adjust_global_symbol(struct elf_avr32_link_hash_entry *havr,
2737 + struct bfd_link_info *info ATTRIBUTE_UNUSED)
2738 +{
2739 + struct elf_link_hash_entry *h = &havr->root;
2740 +
2741 + if (havr->sym_frag && (h->root.type == bfd_link_hash_defined
2742 + || h->root.type == bfd_link_hash_defweak))
2743 + {
2744 + RDBG("adjust_global_symbol: %s 0x%08lx -> 0x%08lx\n",
2745 + h->root.root.string, h->root.u.def.value,
2746 + h->root.u.def.value + havr->sym_frag->offset_adjust);
2747 + h->root.u.def.value += havr->sym_frag->offset_adjust;
2748 + }
2749 + return TRUE;
2750 +}
2751 +
2752 +static bfd_boolean
2753 +adjust_syms(struct bfd_link_info *info)
2754 +{
2755 + struct elf_avr32_link_hash_table *htab;
2756 + bfd *abfd;
2757 +
2758 + htab = avr32_elf_hash_table(info);
2759 + elf_link_hash_traverse(&htab->root, adjust_global_symbol, info);
2760 +
2761 + for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
2762 + {
2763 + Elf_Internal_Sym *isymbuf;
2764 + struct fragment **local_sym_frag, *frag;
2765 + unsigned int i, sym_count;
2766 +
2767 + sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
2768 + if (sym_count == 0)
2769 + continue;
2770 +
2771 + isymbuf = retrieve_local_syms(abfd, info->keep_memory);
2772 + if (!isymbuf)
2773 + return FALSE;
2774 +
2775 + local_sym_frag = elf_tdata(abfd)->local_sym_frag;
2776 +
2777 + for (i = 0; i < sym_count; i++)
2778 + {
2779 + frag = local_sym_frag[i];
2780 + if (frag)
2781 + {
2782 + RDBG("adjust_local_symbol: %s[%u] 0x%08lx -> 0x%08lx\n",
2783 + abfd->filename, i, isymbuf[i].st_value,
2784 + isymbuf[i].st_value + frag->offset_adjust);
2785 + isymbuf[i].st_value += frag->offset_adjust;
2786 + }
2787 + }
2788 +
2789 + release_local_syms(abfd, isymbuf);
2790 + }
2791 +
2792 + htab->symbols_adjusted = TRUE;
2793 + return TRUE;
2794 +}
2795 +
2796 +static bfd_boolean
2797 +adjust_relocs(bfd *abfd, asection *sec, struct bfd_link_info *info)
2798 +{
2799 + struct avr32_relax_data *rd;
2800 + Elf_Internal_Rela *relocs;
2801 + Elf_Internal_Shdr *symtab_hdr;
2802 + unsigned int i;
2803 + bfd_boolean ret = FALSE;
2804 +
2805 + rd = avr32_relax_data(sec);
2806 + if (!rd->reloc_data)
2807 + return TRUE;
2808 +
2809 + RDBG("adjust_relocs: %s<%s> (count: %u)\n", abfd->filename, sec->name,
2810 + sec->reloc_count);
2811 +
2812 + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
2813 + if (!relocs)
2814 + return FALSE;
2815 +
2816 + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
2817 +
2818 + for (i = 0; i < sec->reloc_count; i++)
2819 + {
2820 + Elf_Internal_Rela *rela = &relocs[i];
2821 + struct avr32_reloc_data *r_data = &rd->reloc_data[i];
2822 + struct fragment *sym_frag;
2823 + unsigned long r_symndx;
2824 +
2825 + if (r_data->add_frag)
2826 + {
2827 + r_symndx = ELF_R_SYM(rela->r_info);
2828 +
2829 + if (r_symndx < symtab_hdr->sh_info)
2830 + sym_frag = elf_tdata(abfd)->local_sym_frag[r_symndx];
2831 + else
2832 + {
2833 + struct elf_link_hash_entry *h;
2834 +
2835 + h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
2836 +
2837 + while (h->root.type == bfd_link_hash_indirect
2838 + || h->root.type == bfd_link_hash_warning)
2839 + h = (struct elf_link_hash_entry *)h->root.u.i.link;
2840 +
2841 + BFD_ASSERT(h->root.type == bfd_link_hash_defined
2842 + || h->root.type == bfd_link_hash_defweak);
2843 +
2844 + sym_frag = ((struct elf_avr32_link_hash_entry *)h)->sym_frag;
2845 + }
2846 +
2847 + RDBG(" addend: 0x%08lx -> 0x%08lx\n",
2848 + rela->r_addend,
2849 + rela->r_addend + r_data->add_frag->offset_adjust
2850 + - (sym_frag ? sym_frag->offset_adjust : 0));
2851 +
2852 + /* If this is against a section symbol, we won't find any
2853 + sym_frag, so we'll just adjust the addend. */
2854 + rela->r_addend += r_data->add_frag->offset_adjust;
2855 + if (sym_frag)
2856 + rela->r_addend -= sym_frag->offset_adjust;
2857 +
2858 + if (r_data->sub_frag)
2859 + {
2860 + bfd_byte *contents;
2861 + bfd_signed_vma diff;
2862 +
2863 + contents = retrieve_contents(abfd, sec, info->keep_memory);
2864 + if (!contents)
2865 + goto out;
2866 +
2867 + /* I realize now that sub_frag is misnamed. It's
2868 + actually add_frag which is subtracted in this
2869 + case... */
2870 + diff = bfd_get_signed_32(abfd, contents + rela->r_offset);
2871 + diff += (r_data->sub_frag->offset_adjust
2872 + - r_data->add_frag->offset_adjust);
2873 + bfd_put_32(abfd, diff, contents + rela->r_offset);
2874 +
2875 + RDBG(" 0x%lx: DIFF32 updated: 0x%lx\n", rela->r_offset, diff);
2876 +
2877 + release_contents(sec, contents);
2878 + }
2879 + }
2880 + else
2881 + BFD_ASSERT(!r_data->sub_frag);
2882 + }
2883 +
2884 + ret = TRUE;
2885 +
2886 + out:
2887 + release_internal_relocs(sec, relocs);
2888 + return ret;
2889 +}
2890 +
2891 +static bfd_boolean
2892 +avr32_move_data(bfd *abfd, asection *sec, struct bfd_link_info *info)
2893 +{
2894 + struct elf_avr32_link_hash_table *htab;
2895 + struct avr32_relax_data *rd;
2896 + struct fragment *frag, *fragend;
2897 + Elf_Internal_Rela *relocs = NULL;
2898 + bfd_byte *contents = NULL;
2899 + unsigned int i;
2900 + bfd_boolean ret = FALSE;
2901 +
2902 + htab = avr32_elf_hash_table(info);
2903 + rd = avr32_relax_data(sec);
2904 +
2905 + if (!htab->symbols_adjusted)
2906 + if (!adjust_syms(info))
2907 + return FALSE;
2908 +
2909 + if (rd->is_relaxable)
2910 + {
2911 + /* Resize the section first, so that we can be sure that enough
2912 + memory is allocated in case the section has grown. */
2913 + if (sec->size > sec->rawsize
2914 + && elf_section_data(sec)->this_hdr.contents)
2915 + {
2916 + /* We must not use cached data if the section has grown. */
2917 + free(elf_section_data(sec)->this_hdr.contents);
2918 + elf_section_data(sec)->this_hdr.contents = NULL;
2919 + }
2920 +
2921 + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
2922 + if (!relocs)
2923 + goto out;
2924 + contents = retrieve_contents(abfd, sec, info->keep_memory);
2925 + if (!contents)
2926 + goto out;
2927 +
2928 + fragend = rd->frag + rd->frag_count;
2929 +
2930 + RDBG("move_data: %s<%s>: relocs=%p, contents=%p\n",
2931 + abfd->filename, sec->name, relocs, contents);
2932 +
2933 + /* First, move the data into place. We must take care to move
2934 + frags in the right order so that we don't accidentally
2935 + overwrite parts of the next frag. */
2936 + for (frag = rd->frag; frag < fragend; frag++)
2937 + {
2938 + RDBG(" 0x%08lx%c0x%x: size 0x%lx%c0x%x\n",
2939 + frag->offset, frag->offset_adjust >= 0 ? '+' : '-',
2940 + abs(frag->offset_adjust),
2941 + frag->size, frag->size_adjust >= 0 ? '+' : '-',
2942 + abs(frag->size_adjust));
2943 + if (frag->offset_adjust > 0)
2944 + {
2945 + struct fragment *prev = frag - 1;
2946 + struct fragment *last;
2947 +
2948 + for (last = frag; last < fragend && last->offset_adjust > 0;
2949 + last++) ;
2950 +
2951 + if (last == fragend)
2952 + last--;
2953 +
2954 + for (frag = last; frag != prev; frag--)
2955 + {
2956 + if (frag->offset_adjust
2957 + && frag->size + frag->size_adjust > 0)
2958 + {
2959 + RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
2960 + frag->offset, frag->offset + frag->offset_adjust,
2961 + frag->size + frag->size_adjust);
2962 + memmove(contents + frag->offset + frag->offset_adjust,
2963 + contents + frag->offset,
2964 + frag->size + frag->size_adjust);
2965 + }
2966 + }
2967 + frag = last;
2968 + }
2969 + else if (frag->offset_adjust && frag->size + frag->size_adjust > 0)
2970 + {
2971 + RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
2972 + frag->offset, frag->offset + frag->offset_adjust,
2973 + frag->size + frag->size_adjust);
2974 + memmove(contents + frag->offset + frag->offset_adjust,
2975 + contents + frag->offset,
2976 + frag->size + frag->size_adjust);
2977 + }
2978 + }
2979 +
2980 + i = 0;
2981 +
2982 + for (frag = rd->frag; frag < fragend; frag++)
2983 + {
2984 + const struct relax_state *state, *istate;
2985 + struct avr32_reloc_data *r_data = NULL;
2986 +
2987 + istate = &relax_state[frag->initial_state];
2988 + state = &relax_state[frag->state];
2989 +
2990 + if (rd->reloc_data)
2991 + r_data = &rd->reloc_data[frag->rela - relocs];
2992 +
2993 + BFD_ASSERT((long)(frag->size + frag->size_adjust) >= 0);
2994 + BFD_ASSERT(state->reftype != REF_CPOOL
2995 + || r_data->add_frag->refcount > 0);
2996 +
2997 + if (istate->reftype == REF_CPOOL && state->reftype != REF_CPOOL)
2998 + {
2999 + struct fragment *ifrag;
3000 +
3001 + /* An indirect reference through the cpool has been
3002 + converted to a direct reference. We must update the
3003 + reloc to point to the symbol itself instead of the
3004 + constant pool entry. The reloc type will be updated
3005 + later. */
3006 + ifrag = r_data->add_frag;
3007 + frag->rela->r_info = ifrag->rela->r_info;
3008 + frag->rela->r_addend = ifrag->rela->r_addend;
3009 +
3010 + /* Copy the reloc data so the addend will be adjusted
3011 + correctly later. */
3012 + *r_data = rd->reloc_data[ifrag->rela - relocs];
3013 + }
3014 +
3015 + /* Move all relocs covered by this frag. */
3016 + if (frag->rela)
3017 + BFD_ASSERT(&relocs[i] <= frag->rela);
3018 + else
3019 + BFD_ASSERT((frag + 1) == fragend && frag->state == RS_NONE);
3020 +
3021 + if (frag == rd->frag)
3022 + BFD_ASSERT(i == 0);
3023 + else
3024 + BFD_ASSERT(&relocs[i] > frag[-1].rela);
3025 +
3026 + /* If non-null, frag->rela is the last relocation in the
3027 + fragment. frag->rela can only be null in the last
3028 + fragment, so in that case, we'll just do the rest. */
3029 + for (; (i < sec->reloc_count
3030 + && (!frag->rela || &relocs[i] <= frag->rela)); i++)
3031 + {
3032 + RDBG("[%4u] r_offset 0x%08lx -> 0x%08lx\n", i, relocs[i].r_offset,
3033 + relocs[i].r_offset + frag->offset_adjust);
3034 + relocs[i].r_offset += frag->offset_adjust;
3035 + }
3036 +
3037 + if (frag->refcount == 0)
3038 + {
3039 + /* If this frag is to be discarded, make sure we won't
3040 + relocate it later on. */
3041 + BFD_ASSERT(frag->state == RS_CPENT);
3042 + frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
3043 + R_AVR32_NONE);
3044 + }
3045 + else if (frag->state == RS_ALIGN)
3046 + {
3047 + bfd_vma addr, addr_end;
3048 +
3049 + addr = frag->rela->r_offset;
3050 + addr_end = (frag->offset + frag->offset_adjust
3051 + + frag->size + frag->size_adjust);
3052 +
3053 + /* If the section is executable, insert NOPs.
3054 + Otherwise, insert zeroes. */
3055 + if (sec->flags & SEC_CODE)
3056 + {
3057 + if (addr & 1)
3058 + {
3059 + bfd_put_8(abfd, 0, contents + addr);
3060 + addr++;
3061 + }
3062 +
3063 + BFD_ASSERT(!((addr_end - addr) & 1));
3064 +
3065 + while (addr < addr_end)
3066 + {
3067 + bfd_put_16(abfd, NOP_OPCODE, contents + addr);
3068 + addr += 2;
3069 + }
3070 + }
3071 + else
3072 + memset(contents + addr, 0, addr_end - addr);
3073 + }
3074 + else if (state->opcode_mask)
3075 + {
3076 + bfd_vma insn;
3077 +
3078 + /* Update the opcode and the relocation type unless it's a
3079 + "special" relax state (i.e. RS_NONE, RS_ALIGN or
3080 + RS_CPENT.), in which case the opcode mask is zero. */
3081 + insn = bfd_get_32(abfd, contents + frag->rela->r_offset);
3082 + insn &= ~state->opcode_mask;
3083 + insn |= state->opcode;
3084 + RDBG(" 0x%lx: inserting insn %08lx\n",
3085 + frag->rela->r_offset, insn);
3086 + bfd_put_32(abfd, insn, contents + frag->rela->r_offset);
3087 +
3088 + frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
3089 + state->r_type);
3090 + }
3091 +
3092 + if ((frag + 1) == fragend)
3093 + BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
3094 + + frag->size_adjust) == sec->size);
3095 + else
3096 + BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
3097 + + frag->size_adjust)
3098 + == (frag[1].offset + frag[1].offset_adjust));
3099 + }
3100 + }
3101 +
3102 + /* Adjust reloc addends and DIFF32 differences */
3103 + if (!adjust_relocs(abfd, sec, info))
3104 + return FALSE;
3105 +
3106 + ret = TRUE;
3107 +
3108 + out:
3109 + release_contents(sec, contents);
3110 + release_internal_relocs(sec, relocs);
3111 + return ret;
3112 +}
3113 +
3114 +static bfd_boolean
3115 +avr32_elf_relax_section(bfd *abfd, asection *sec,
3116 + struct bfd_link_info *info, bfd_boolean *again)
3117 +{
3118 + struct elf_avr32_link_hash_table *htab;
3119 + struct avr32_relax_data *rd;
3120 +
3121 + *again = FALSE;
3122 + if (info->relocatable)
3123 + return TRUE;
3124 +
3125 + htab = avr32_elf_hash_table(info);
3126 + if ((!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
3127 + && sec != htab->sgot)
3128 + return TRUE;
3129 +
3130 + if (!htab->relocations_analyzed)
3131 + {
3132 + if (!analyze_relocations(info))
3133 + return FALSE;
3134 + htab->relocations_analyzed = TRUE;
3135 + }
3136 +
3137 + rd = avr32_relax_data(sec);
3138 +
3139 + if (rd->iteration != htab->relax_iteration)
3140 + {
3141 + if (!htab->repeat_pass)
3142 + htab->relax_pass++;
3143 + htab->relax_iteration++;
3144 + htab->repeat_pass = FALSE;
3145 + }
3146 +
3147 + rd->iteration++;
3148 +
3149 + switch (htab->relax_pass)
3150 + {
3151 + case RELAX_PASS_SIZE_FRAGS:
3152 + if (!avr32_size_frags(abfd, sec, info))
3153 + return FALSE;
3154 + *again = TRUE;
3155 + break;
3156 + case RELAX_PASS_MOVE_DATA:
3157 + if (!avr32_move_data(abfd, sec, info))
3158 + return FALSE;
3159 + break;
3160 + }
3161 +
3162 + return TRUE;
3163 +}
3164 +
3165 +
3166 +/* Relocation */
3167 +
3168 +static bfd_reloc_status_type
3169 +avr32_check_reloc_value(asection *sec, Elf_Internal_Rela *rela,
3170 + bfd_signed_vma relocation, reloc_howto_type *howto);
3171 +static bfd_reloc_status_type
3172 +avr32_final_link_relocate(reloc_howto_type *howto, bfd *input_bfd,
3173 + asection *input_section, bfd_byte *contents,
3174 + Elf_Internal_Rela *rel, bfd_vma value);
3175 +static bfd_boolean
3176 +avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
3177 + bfd *input_bfd, asection *input_section,
3178 + bfd_byte *contents, Elf_Internal_Rela *relocs,
3179 + Elf_Internal_Sym *local_syms,
3180 + asection **local_sections);
3181 +
3182 +
3183 +#define symbol_address(symbol) \
3184 + symbol->value + symbol->section->output_section->vma \
3185 + + symbol->section->output_offset
3186 +
3187 +#define avr32_elf_insert_field(size, field, abfd, reloc_entry, data) \
3188 + do \
3189 + { \
3190 + unsigned long x; \
3191 + x = bfd_get_##size (abfd, data + reloc_entry->address); \
3192 + x &= ~reloc_entry->howto->dst_mask; \
3193 + x |= field & reloc_entry->howto->dst_mask; \
3194 + bfd_put_##size (abfd, (bfd_vma) x, data + reloc_entry->address); \
3195 + } \
3196 + while(0)
3197 +
3198 +static bfd_reloc_status_type
3199 +avr32_check_reloc_value(asection *sec ATTRIBUTE_UNUSED,
3200 + Elf_Internal_Rela *rela ATTRIBUTE_UNUSED,
3201 + bfd_signed_vma relocation,
3202 + reloc_howto_type *howto)
3203 +{
3204 + bfd_vma reloc_u;
3205 +
3206 + /* We take "complain_overflow_dont" to mean "don't complain on
3207 + alignment either". This way, we don't have to special-case
3208 + R_AVR32_HI16 */
3209 + if (howto->complain_on_overflow == complain_overflow_dont)
3210 + return bfd_reloc_ok;
3211 +
3212 + /* Check if the value is correctly aligned */
3213 + if (relocation & ((1 << howto->rightshift) - 1))
3214 + {
3215 + RDBG("misaligned: %s<%s+%lx>: %s: 0x%lx (align %u)\n",
3216 + sec->owner->filename, sec->name, rela->r_offset,
3217 + howto->name, relocation, howto->rightshift);
3218 + return bfd_reloc_overflow;
3219 + }
3220 +
3221 + /* Now, get rid of the unnecessary bits */
3222 + relocation >>= howto->rightshift;
3223 + reloc_u = (bfd_vma)relocation;
3224 +
3225 + switch (howto->complain_on_overflow)
3226 + {
3227 + case complain_overflow_unsigned:
3228 + case complain_overflow_bitfield:
3229 + if (reloc_u > (unsigned long)((1 << howto->bitsize) - 1))
3230 + {
3231 + RDBG("unsigned overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
3232 + sec->owner->filename, sec->name, rela->r_offset,
3233 + howto->name, reloc_u, howto->bitsize);
3234 + RDBG("reloc vma: 0x%lx\n",
3235 + sec->output_section->vma + sec->output_offset + rela->r_offset);
3236 +
3237 + return bfd_reloc_overflow;
3238 + }
3239 + break;
3240 + case complain_overflow_signed:
3241 + if (relocation > (1 << (howto->bitsize - 1)) - 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, reloc_u, 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 + if (relocation < -(1 << (howto->bitsize - 1)))
3252 + {
3253 + RDBG("signed overflow: %s<%s+%lx>: %s: -0x%lx (size %u)\n",
3254 + sec->owner->filename, sec->name, rela->r_offset,
3255 + howto->name, -relocation, howto->bitsize);
3256 + RDBG("reloc vma: 0x%lx\n",
3257 + sec->output_section->vma + sec->output_offset + rela->r_offset);
3258 +
3259 + return bfd_reloc_overflow;
3260 + }
3261 + break;
3262 + default:
3263 + abort();
3264 + }
3265 +
3266 + return bfd_reloc_ok;
3267 +}
3268 +
3269 +
3270 +static bfd_reloc_status_type
3271 +avr32_final_link_relocate(reloc_howto_type *howto,
3272 + bfd *input_bfd,
3273 + asection *input_section,
3274 + bfd_byte *contents,
3275 + Elf_Internal_Rela *rel,
3276 + bfd_vma value)
3277 +{
3278 + bfd_vma field;
3279 + bfd_vma relocation;
3280 + bfd_reloc_status_type status;
3281 + bfd_byte *p = contents + rel->r_offset;
3282 + unsigned long x;
3283 +
3284 + pr_debug(" (6b) final link relocate\n");
3285 +
3286 + /* Sanity check the address */
3287 + if (rel->r_offset > input_section->size)
3288 + {
3289 + (*_bfd_error_handler)
3290 + ("%B: %A+0x%lx: offset out of range (section size: 0x%lx)",
3291 + input_bfd, input_section, rel->r_offset, input_section->size);
3292 + return bfd_reloc_outofrange;
3293 + }
3294 +
3295 + relocation = value + rel->r_addend;
3296 +
3297 + if (howto->pc_relative)
3298 + {
3299 + bfd_vma addr;
3300 +
3301 + addr = input_section->output_section->vma
3302 + + input_section->output_offset + rel->r_offset;
3303 + addr &= ~0UL << howto->rightshift;
3304 + relocation -= addr;
3305 + }
3306 +
3307 + switch (ELF32_R_TYPE(rel->r_info))
3308 + {
3309 + case R_AVR32_16N_PCREL:
3310 + /* sub reg, pc, . - (sym + addend) */
3311 + relocation = -relocation;
3312 + break;
3313 + }
3314 +
3315 + status = avr32_check_reloc_value(input_section, rel, relocation, howto);
3316 +
3317 + relocation >>= howto->rightshift;
3318 + if (howto->bitsize == 21)
3319 + field = (relocation & 0xffff)
3320 + | ((relocation & 0x10000) << 4)
3321 + | ((relocation & 0x1e0000) << 8);
3322 + else if (howto->bitsize == 12)
3323 + field = (relocation & 0xff) | ((relocation & 0xf00) << 4);
3324 + else if (howto->bitsize == 10)
3325 + field = ((relocation & 0xff) << 4)
3326 + | ((relocation & 0x300) >> 8);
3327 + else
3328 + field = relocation << howto->bitpos;
3329 +
3330 + switch (howto->size)
3331 + {
3332 + case 0:
3333 + x = bfd_get_8 (input_bfd, p);
3334 + x &= ~howto->dst_mask;
3335 + x |= field & howto->dst_mask;
3336 + bfd_put_8 (input_bfd, (bfd_vma) x, p);
3337 + break;
3338 + case 1:
3339 + x = bfd_get_16 (input_bfd, p);
3340 + x &= ~howto->dst_mask;
3341 + x |= field & howto->dst_mask;
3342 + bfd_put_16 (input_bfd, (bfd_vma) x, p);
3343 + break;
3344 + case 2:
3345 + x = bfd_get_32 (input_bfd, p);
3346 + x &= ~howto->dst_mask;
3347 + x |= field & howto->dst_mask;
3348 + bfd_put_32 (input_bfd, (bfd_vma) x, p);
3349 + break;
3350 + default:
3351 + abort();
3352 + }
3353 +
3354 + return status;
3355 +}
3356 +
3357 +/* (6) Apply relocations to the normal (non-dynamic) sections */
3358 +
3359 +static bfd_boolean
3360 +avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
3361 + bfd *input_bfd, asection *input_section,
3362 + bfd_byte *contents, Elf_Internal_Rela *relocs,
3363 + Elf_Internal_Sym *local_syms,
3364 + asection **local_sections)
3365 +{
3366 + struct elf_avr32_link_hash_table *htab;
3367 + Elf_Internal_Shdr *symtab_hdr;
3368 + Elf_Internal_Rela *rel, *relend;
3369 + struct elf_link_hash_entry **sym_hashes;
3370 + struct got_entry **local_got_ents;
3371 + asection *sgot;
3372 + asection *srelgot;
3373 +
3374 + pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n",
3375 + input_bfd->filename, input_section->name, input_section->size);
3376 +
3377 + /* If we're doing a partial link, we don't have to do anything since
3378 + we're using RELA relocations */
3379 + if (info->relocatable)
3380 + return TRUE;
3381 +
3382 + htab = avr32_elf_hash_table(info);
3383 + symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr;
3384 + sym_hashes = elf_sym_hashes(input_bfd);
3385 + local_got_ents = elf_local_got_ents(input_bfd);
3386 + sgot = htab->sgot;
3387 + srelgot = htab->srelgot;
3388 +
3389 + relend = relocs + input_section->reloc_count;
3390 + for (rel = relocs; rel < relend; rel++)
3391 + {
3392 + unsigned long r_type, r_symndx;
3393 + reloc_howto_type *howto;
3394 + Elf_Internal_Sym *sym = NULL;
3395 + struct elf_link_hash_entry *h = NULL;
3396 + asection *sec = NULL;
3397 + bfd_vma value;
3398 + bfd_vma offset;
3399 + bfd_reloc_status_type status;
3400 +
3401 + r_type = ELF32_R_TYPE(rel->r_info);
3402 + r_symndx = ELF32_R_SYM(rel->r_info);
3403 +
3404 + if (r_type == R_AVR32_NONE
3405 + || r_type == R_AVR32_ALIGN
3406 + || r_type == R_AVR32_DIFF32
3407 + || r_type == R_AVR32_DIFF16
3408 + || r_type == R_AVR32_DIFF8)
3409 + continue;
3410 +
3411 + /* Sanity check */
3412 + if (r_type > R_AVR32_max)
3413 + {
3414 + bfd_set_error(bfd_error_bad_value);
3415 + return FALSE;
3416 + }
3417 +
3418 + howto = &elf_avr32_howto_table[r_type];
3419 +
3420 + if (r_symndx < symtab_hdr->sh_info)
3421 + {
3422 + sym = local_syms + r_symndx;
3423 + sec = local_sections[r_symndx];
3424 +
3425 + pr_debug(" (6a) processing %s against local symbol %lu\n",
3426 + howto->name, r_symndx);
3427 +
3428 + /* The following function changes rel->r_addend behind our back. */
3429 + value = _bfd_elf_rela_local_sym(output_bfd, sym, &sec, rel);
3430 + pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend);
3431 + }
3432 + else
3433 + {
3434 + if (sym_hashes == NULL)
3435 + return FALSE;
3436 +
3437 + h = sym_hashes[r_symndx - symtab_hdr->sh_info];
3438 + while (h->root.type == bfd_link_hash_indirect
3439 + || h->root.type == bfd_link_hash_warning)
3440 + h = (struct elf_link_hash_entry *)h->root.u.i.link;
3441 +
3442 + pr_debug(" (6a) processing %s against symbol %s\n",
3443 + howto->name, h->root.root.string);
3444 +
3445 + if (h->root.type == bfd_link_hash_defined
3446 + || h->root.type == bfd_link_hash_defweak)
3447 + {
3448 + bfd_boolean dyn;
3449 +
3450 + dyn = htab->root.dynamic_sections_created;
3451 + sec = h->root.u.def.section;
3452 +
3453 + if (sec->output_section)
3454 + value = (h->root.u.def.value
3455 + + sec->output_section->vma
3456 + + sec->output_offset);
3457 + else
3458 + value = h->root.u.def.value;
3459 + }
3460 + else if (h->root.type == bfd_link_hash_undefweak)
3461 + value = 0;
3462 + else if (info->unresolved_syms_in_objects == RM_IGNORE
3463 + && ELF_ST_VISIBILITY(h->other) == STV_DEFAULT)
3464 + value = 0;
3465 + else
3466 + {
3467 + bfd_boolean err;
3468 + err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
3469 + || ELF_ST_VISIBILITY(h->other) != STV_DEFAULT);
3470 + if (!info->callbacks->undefined_symbol
3471 + (info, h->root.root.string, input_bfd,
3472 + input_section, rel->r_offset, err))
3473 + return FALSE;
3474 + value = 0;
3475 + }
3476 +
3477 + pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend);
3478 + }
3479 +
3480 + switch (r_type)
3481 + {
3482 + case R_AVR32_GOT32:
3483 + case R_AVR32_GOT16:
3484 + case R_AVR32_GOT8:
3485 + case R_AVR32_GOT21S:
3486 + case R_AVR32_GOT18SW:
3487 + case R_AVR32_GOT16S:
3488 + case R_AVR32_GOT7UW:
3489 + case R_AVR32_LDA_GOT:
3490 + case R_AVR32_GOTCALL:
3491 + BFD_ASSERT(sgot != NULL);
3492 +
3493 + if (h != NULL)
3494 + {
3495 + BFD_ASSERT(h->got.glist->refcount > 0);
3496 + offset = h->got.glist->offset;
3497 +
3498 + BFD_ASSERT(offset < sgot->size);
3499 + if (!elf_hash_table(info)->dynamic_sections_created
3500 + || (h->def_regular
3501 + && (!info->shared
3502 + || info->symbolic
3503 + || h->dynindx == -1)))
3504 + {
3505 + /* This is actually a static link, or it is a
3506 + -Bsymbolic link and the symbol is defined
3507 + locally, or the symbol was forced to be local. */
3508 + bfd_put_32(output_bfd, value, sgot->contents + offset);
3509 + }
3510 + }
3511 + else
3512 + {
3513 + BFD_ASSERT(local_got_ents &&
3514 + local_got_ents[r_symndx]->refcount > 0);
3515 + offset = local_got_ents[r_symndx]->offset;
3516 +
3517 + /* Local GOT entries don't have relocs. If this is a
3518 + shared library, the dynamic linker will add the load
3519 + address to the initial value at startup. */
3520 + BFD_ASSERT(offset < sgot->size);
3521 + pr_debug("Initializing GOT entry at offset %lu: 0x%lx\n",
3522 + offset, value);
3523 + bfd_put_32 (output_bfd, value, sgot->contents + offset);
3524 + }
3525 +
3526 + value = sgot->output_offset + offset;
3527 + pr_debug("GOT reference: New value %lx\n", value);
3528 + break;
3529 +
3530 + case R_AVR32_GOTPC:
3531 + /* This relocation type is for constant pool entries used in
3532 + the calculation "Rd = PC - (PC - GOT)", where the
3533 + constant pool supplies the constant (PC - GOT)
3534 + offset. The symbol value + addend indicates where the
3535 + value of PC is taken. */
3536 + value -= sgot->output_section->vma;
3537 + break;
3538 +
3539 + case R_AVR32_32_PCREL:
3540 + /* We must adjust r_offset to account for discarded data in
3541 + the .eh_frame section. This is probably not the right
3542 + way to do this, since AFAICS all other architectures do
3543 + it some other way. I just can't figure out how... */
3544 + {
3545 + bfd_vma r_offset;
3546 +
3547 + r_offset = _bfd_elf_section_offset(output_bfd, info,
3548 + input_section,
3549 + rel->r_offset);
3550 + if (r_offset == (bfd_vma)-1
3551 + || r_offset == (bfd_vma)-2)
3552 + continue;
3553 + rel->r_offset = r_offset;
3554 + }
3555 + break;
3556 +
3557 + case R_AVR32_32:
3558 + /* We need to emit a run-time relocation in the following cases:
3559 + - we're creating a shared library
3560 + - the symbol is not defined in any regular objects
3561 +
3562 + Of course, sections that aren't going to be part of the
3563 + run-time image will not get any relocs, and undefined
3564 + symbols won't have any either (only weak undefined
3565 + symbols should get this far). */
3566 + if ((info->shared
3567 + || (elf_hash_table(info)->dynamic_sections_created
3568 + && h != NULL
3569 + && h->def_dynamic
3570 + && !h->def_regular))
3571 + && r_symndx != 0
3572 + && (input_section->flags & SEC_ALLOC))
3573 + {
3574 + Elf_Internal_Rela outrel;
3575 + bfd_byte *loc;
3576 + bfd_boolean skip, relocate;
3577 + struct elf_avr32_link_hash_entry *avrh;
3578 +
3579 + pr_debug("Going to generate dynamic reloc...\n");
3580 +
3581 + skip = FALSE;
3582 + relocate = FALSE;
3583 +
3584 + outrel.r_offset = _bfd_elf_section_offset(output_bfd, info,
3585 + input_section,
3586 + rel->r_offset);
3587 + if (outrel.r_offset == (bfd_vma)-1)
3588 + skip = TRUE;
3589 + else if (outrel.r_offset == (bfd_vma)-2)
3590 + skip = TRUE, relocate = TRUE;
3591 +
3592 + outrel.r_offset += (input_section->output_section->vma
3593 + + input_section->output_offset);
3594 +
3595 + pr_debug(" ... offset %lx, dynindx %ld\n",
3596 + outrel.r_offset, h ? h->dynindx : -1);
3597 +
3598 + if (skip)
3599 + memset(&outrel, 0, sizeof(outrel));
3600 + else
3601 + {
3602 + avrh = (struct elf_avr32_link_hash_entry *)h;
3603 + /* h->dynindx may be -1 if this symbol was marked to
3604 + become local. */
3605 + if (h == NULL
3606 + || ((info->symbolic || h->dynindx == -1)
3607 + && h->def_regular))
3608 + {
3609 + relocate = TRUE;
3610 + outrel.r_info = ELF32_R_INFO(0, R_AVR32_RELATIVE);
3611 + outrel.r_addend = value + rel->r_addend;
3612 + pr_debug(" ... R_AVR32_RELATIVE\n");
3613 + }
3614 + else
3615 + {
3616 + BFD_ASSERT(h->dynindx != -1);
3617 + relocate = TRUE;
3618 + outrel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
3619 + outrel.r_addend = rel->r_addend;
3620 + pr_debug(" ... R_AVR32_GLOB_DAT\n");
3621 + }
3622 + }
3623 +
3624 + pr_debug("srelgot reloc_count: %d, size %lu\n",
3625 + srelgot->reloc_count, srelgot->size);
3626 +
3627 + loc = srelgot->contents;
3628 + loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela);
3629 + bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc);
3630 +
3631 + BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
3632 + <= srelgot->size);
3633 +
3634 + if (!relocate)
3635 + continue;
3636 + }
3637 + break;
3638 + }
3639 +
3640 + status = avr32_final_link_relocate(howto, input_bfd, input_section,
3641 + contents, rel, value);
3642 +
3643 + switch (status)
3644 + {
3645 + case bfd_reloc_ok:
3646 + break;
3647 +
3648 + case bfd_reloc_overflow:
3649 + {
3650 + const char *name;
3651 +
3652 + if (h != NULL)
3653 + name = h->root.root.string;
3654 + else
3655 + {
3656 + name = bfd_elf_string_from_elf_section(input_bfd,
3657 + symtab_hdr->sh_link,
3658 + sym->st_name);
3659 + if (name == NULL)
3660 + return FALSE;
3661 + if (*name == '\0')
3662 + name = bfd_section_name(input_bfd, sec);
3663 + }
3664 + if (!((*info->callbacks->reloc_overflow)
3665 + (info, (h ? &h->root : NULL), name, howto->name,
3666 + rel->r_addend, input_bfd, input_section, rel->r_offset)))
3667 + return FALSE;
3668 + }
3669 + break;
3670 +
3671 + case bfd_reloc_outofrange:
3672 + default:
3673 + abort();
3674 + }
3675 + }
3676 +
3677 + return TRUE;
3678 +}
3679 +
3680 +
3681 +/* Additional processing of dynamic sections after relocation */
3682 +
3683 +static bfd_boolean
3684 +avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
3685 + struct elf_link_hash_entry *h,
3686 + Elf_Internal_Sym *sym);
3687 +static bfd_boolean
3688 +avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info);
3689 +
3690 +
3691 +/* (7) Initialize the contents of a dynamic symbol and/or emit
3692 + relocations for it */
3693 +
3694 +static bfd_boolean
3695 +avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
3696 + struct elf_link_hash_entry *h,
3697 + Elf_Internal_Sym *sym)
3698 +{
3699 + struct elf_avr32_link_hash_table *htab;
3700 + struct got_entry *got;
3701 +
3702 + pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string);
3703 +
3704 + htab = avr32_elf_hash_table(info);
3705 + got = h->got.glist;
3706 +
3707 + if (got && got->refcount > 0)
3708 + {
3709 + asection *sgot;
3710 + asection *srelgot;
3711 + Elf_Internal_Rela rel;
3712 + bfd_byte *loc;
3713 +
3714 + /* This symbol has an entry in the GOT. Set it up. */
3715 + sgot = htab->sgot;
3716 + srelgot = htab->srelgot;
3717 + BFD_ASSERT(sgot && srelgot);
3718 +
3719 + rel.r_offset = (sgot->output_section->vma
3720 + + sgot->output_offset
3721 + + got->offset);
3722 +
3723 + /* If this is a static link, or it is a -Bsymbolic link and the
3724 + symbol is defined locally or was forced to be local because
3725 + of a version file, we just want to emit a RELATIVE reloc. The
3726 + entry in the global offset table will already have been
3727 + initialized in the relocate_section function. */
3728 + if ((info->shared
3729 + && !info->symbolic
3730 + && h->dynindx != -1)
3731 + || (htab->root.dynamic_sections_created
3732 + && h->def_dynamic
3733 + && !h->def_regular))
3734 + {
3735 + bfd_put_32(output_bfd, 0, sgot->contents + got->offset);
3736 + rel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
3737 + rel.r_addend = 0;
3738 +
3739 + pr_debug("GOT reloc R_AVR32_GLOB_DAT, dynindx: %ld\n", h->dynindx);
3740 + pr_debug(" srelgot reloc_count: %d, size: %lu\n",
3741 + srelgot->reloc_count, srelgot->size);
3742 +
3743 + loc = (srelgot->contents
3744 + + srelgot->reloc_count++ * sizeof(Elf32_External_Rela));
3745 + bfd_elf32_swap_reloca_out(output_bfd, &rel, loc);
3746 +
3747 + BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
3748 + <= srelgot->size);
3749 + }
3750 + }
3751 +
3752 + /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute */
3753 + if (strcmp(h->root.root.string, "_DYNAMIC") == 0
3754 + || strcmp(h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
3755 + sym->st_shndx = SHN_ABS;
3756 +
3757 + return TRUE;
3758 +}
3759 +
3760 +/* (8) Do any remaining initialization of the dynamic sections */
3761 +
3762 +static bfd_boolean
3763 +avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info)
3764 +{
3765 + struct elf_avr32_link_hash_table *htab;
3766 + asection *sgot, *sdyn;
3767 +
3768 + pr_debug("(8) finish dynamic sections\n");
3769 +
3770 + htab = avr32_elf_hash_table(info);
3771 + sgot = htab->sgot;
3772 + sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic");
3773 +
3774 + if (htab->root.dynamic_sections_created)
3775 + {
3776 + Elf32_External_Dyn *dyncon, *dynconend;
3777 +
3778 + BFD_ASSERT(sdyn && sgot && sgot->size >= AVR32_GOT_HEADER_SIZE);
3779 +
3780 + dyncon = (Elf32_External_Dyn *)sdyn->contents;
3781 + dynconend = (Elf32_External_Dyn *)(sdyn->contents + sdyn->size);
3782 + for (; dyncon < dynconend; dyncon++)
3783 + {
3784 + Elf_Internal_Dyn dyn;
3785 + asection *s;
3786 +
3787 + bfd_elf32_swap_dyn_in(htab->root.dynobj, dyncon, &dyn);
3788 +
3789 + switch (dyn.d_tag)
3790 + {
3791 + default:
3792 + break;
3793 +
3794 + case DT_PLTGOT:
3795 + s = sgot->output_section;
3796 + BFD_ASSERT(s != NULL);
3797 + dyn.d_un.d_ptr = s->vma;
3798 + bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
3799 + break;
3800 +
3801 + case DT_AVR32_GOTSZ:
3802 + s = sgot->output_section;
3803 + BFD_ASSERT(s != NULL);
3804 + dyn.d_un.d_val = s->size;
3805 + bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
3806 + break;
3807 + }
3808 + }
3809 +
3810 + /* Fill in the first two entries in the global offset table */
3811 + bfd_put_32(output_bfd,
3812 + sdyn->output_section->vma + sdyn->output_offset,
3813 + sgot->contents);
3814 +
3815 + /* The runtime linker will fill this one in with the address of
3816 + the run-time link map */
3817 + bfd_put_32(output_bfd, 0, sgot->contents + 4);
3818 + }
3819 +
3820 + if (sgot)
3821 + elf_section_data(sgot->output_section)->this_hdr.sh_entsize = 4;
3822 +
3823 + return TRUE;
3824 +}
3825 +
3826 +
3827 +/* AVR32-specific private ELF data */
3828 +
3829 +static bfd_boolean
3830 +avr32_elf_set_private_flags(bfd *abfd, flagword flags);
3831 +static bfd_boolean
3832 +avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
3833 +static bfd_boolean
3834 +avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
3835 +static bfd_boolean
3836 +avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr);
3837 +
3838 +static bfd_boolean
3839 +avr32_elf_set_private_flags(bfd *abfd, flagword flags)
3840 +{
3841 + elf_elfheader(abfd)->e_flags = flags;
3842 + elf_flags_init(abfd) = TRUE;
3843 +
3844 + return TRUE;
3845 +}
3846 +
3847 +/* Copy backend specific data from one object module to another. */
3848 +
3849 +static bfd_boolean
3850 +avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd)
3851 +{
3852 + elf_elfheader(obfd)->e_flags = elf_elfheader(ibfd)->e_flags;
3853 + return TRUE;
3854 +}
3855 +
3856 +/* Merge backend specific data from an object file to the output
3857 + object file when linking. */
3858 +
3859 +static bfd_boolean
3860 +avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd)
3861 +{
3862 + flagword out_flags, in_flags;
3863 +
3864 + pr_debug("(0) merge_private_bfd_data: %s -> %s\n",
3865 + ibfd->filename, obfd->filename);
3866 +
3867 + in_flags = elf_elfheader(ibfd)->e_flags;
3868 + out_flags = elf_elfheader(obfd)->e_flags;
3869 +
3870 + if (elf_flags_init(obfd))
3871 + {
3872 + /* If one of the inputs are non-PIC, the output must be
3873 + considered non-PIC. The same applies to linkrelax. */
3874 + if (!(in_flags & EF_AVR32_PIC))
3875 + out_flags &= ~EF_AVR32_PIC;
3876 + if (!(in_flags & EF_AVR32_LINKRELAX))
3877 + out_flags &= ~EF_AVR32_LINKRELAX;
3878 + }
3879 + else
3880 + {
3881 + elf_flags_init(obfd) = TRUE;
3882 + out_flags = in_flags;
3883 + }
3884 +
3885 + elf_elfheader(obfd)->e_flags = out_flags;
3886 +
3887 + return TRUE;
3888 +}
3889 +
3890 +static bfd_boolean
3891 +avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr)
3892 +{
3893 + FILE *file = (FILE *)ptr;
3894 + unsigned long flags;
3895 +
3896 + BFD_ASSERT(abfd != NULL && ptr != NULL);
3897 +
3898 + _bfd_elf_print_private_bfd_data(abfd, ptr);
3899 +
3900 + flags = elf_elfheader(abfd)->e_flags;
3901 +
3902 + fprintf(file, _("private flags = %lx:"), elf_elfheader(abfd)->e_flags);
3903 +
3904 + if (flags & EF_AVR32_PIC)
3905 + fprintf(file, " [PIC]");
3906 + if (flags & EF_AVR32_LINKRELAX)
3907 + fprintf(file, " [linker relaxable]");
3908 +
3909 + flags &= ~(EF_AVR32_PIC | EF_AVR32_LINKRELAX);
3910 +
3911 + if (flags)
3912 + fprintf(file, _("<Unrecognized flag bits set>"));
3913 +
3914 + fputc('\n', file);
3915 +
3916 + return TRUE;
3917 +}
3918 +
3919 +/* Set avr32-specific linker options. */
3920 +void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
3921 + int direct_data_refs)
3922 +{
3923 + struct elf_avr32_link_hash_table *htab;
3924 +
3925 + htab = avr32_elf_hash_table (info);
3926 + htab->direct_data_refs = !!direct_data_refs;
3927 +}
3928 +
3929 +
3930 +
3931 +/* Understanding core dumps */
3932 +
3933 +static bfd_boolean
3934 +avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note);
3935 +static bfd_boolean
3936 +avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note);
3937 +
3938 +static bfd_boolean
3939 +avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note)
3940 +{
3941 + /* Linux/AVR32B elf_prstatus */
3942 + if (note->descsz != 148)
3943 + return FALSE;
3944 +
3945 + /* pr_cursig */
3946 + elf_tdata(abfd)->core_signal = bfd_get_16(abfd, note->descdata + 12);
3947 +
3948 + /* pr_pid */
3949 + elf_tdata(abfd)->core_pid = bfd_get_32(abfd, note->descdata + 24);
3950 +
3951 + /* Make a ".reg/999" section for pr_reg. The size is for 16
3952 + general-purpose registers, SR and r12_orig (18 * 4 = 72). */
3953 + return _bfd_elfcore_make_pseudosection(abfd, ".reg", 72,
3954 + note->descpos + 72);
3955 +}
3956 +
3957 +static bfd_boolean
3958 +avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note)
3959 +{
3960 + /* Linux/AVR32B elf_prpsinfo */
3961 + if (note->descsz != 128)
3962 + return FALSE;
3963 +
3964 + elf_tdata(abfd)->core_program
3965 + = _bfd_elfcore_strndup(abfd, note->descdata + 32, 16);
3966 + elf_tdata(abfd)->core_command
3967 + = _bfd_elfcore_strndup(abfd, note->descdata + 48, 80);
3968 +
3969 + /* Note that for some reason, a spurious space is tacked
3970 + onto the end of the args in some (at least one anyway)
3971 + implementations, so strip it off if it exists. */
3972 +
3973 + {
3974 + char *command = elf_tdata (abfd)->core_command;
3975 + int n = strlen (command);
3976 +
3977 + if (0 < n && command[n - 1] == ' ')
3978 + command[n - 1] = '\0';
3979 + }
3980 +
3981 + return TRUE;
3982 +}
3983 +
3984 +
3985 +#define ELF_ARCH bfd_arch_avr32
3986 +#define ELF_MACHINE_CODE EM_AVR32
3987 +#define ELF_MAXPAGESIZE 0x1000
3988 +
3989 +#define TARGET_BIG_SYM bfd_elf32_avr32_vec
3990 +#define TARGET_BIG_NAME "elf32-avr32"
3991 +
3992 +#define elf_backend_grok_prstatus avr32_elf_grok_prstatus
3993 +#define elf_backend_grok_psinfo avr32_elf_grok_psinfo
3994 +
3995 +/* Only RELA relocations are used */
3996 +#define elf_backend_may_use_rel_p 0
3997 +#define elf_backend_may_use_rela_p 1
3998 +#define elf_backend_default_use_rela_p 1
3999 +#define elf_backend_rela_normal 1
4000 +#define elf_info_to_howto_rel NULL
4001 +#define elf_info_to_howto avr32_info_to_howto
4002 +
4003 +#define bfd_elf32_bfd_copy_private_bfd_data avr32_elf_copy_private_bfd_data
4004 +#define bfd_elf32_bfd_merge_private_bfd_data avr32_elf_merge_private_bfd_data
4005 +#define bfd_elf32_bfd_set_private_flags avr32_elf_set_private_flags
4006 +#define bfd_elf32_bfd_print_private_bfd_data avr32_elf_print_private_bfd_data
4007 +#define bfd_elf32_new_section_hook avr32_elf_new_section_hook
4008 +
4009 +#define elf_backend_gc_mark_hook avr32_elf_gc_mark_hook
4010 +#define elf_backend_gc_sweep_hook avr32_elf_gc_sweep_hook
4011 +#define elf_backend_relocate_section avr32_elf_relocate_section
4012 +#define elf_backend_copy_indirect_symbol avr32_elf_copy_indirect_symbol
4013 +#define elf_backend_create_dynamic_sections avr32_elf_create_dynamic_sections
4014 +#define bfd_elf32_bfd_link_hash_table_create avr32_elf_link_hash_table_create
4015 +#define elf_backend_adjust_dynamic_symbol avr32_elf_adjust_dynamic_symbol
4016 +#define elf_backend_size_dynamic_sections avr32_elf_size_dynamic_sections
4017 +#define elf_backend_finish_dynamic_symbol avr32_elf_finish_dynamic_symbol
4018 +#define elf_backend_finish_dynamic_sections avr32_elf_finish_dynamic_sections
4019 +
4020 +#define bfd_elf32_bfd_relax_section avr32_elf_relax_section
4021 +
4022 +/* Find out which symbols need an entry in .got. */
4023 +#define elf_backend_check_relocs avr32_check_relocs
4024 +#define elf_backend_can_refcount 1
4025 +#define elf_backend_can_gc_sections 1
4026 +#define elf_backend_plt_readonly 1
4027 +#define elf_backend_plt_not_loaded 1
4028 +#define elf_backend_want_plt_sym 0
4029 +#define elf_backend_plt_alignment 2
4030 +#define elf_backend_want_dynbss 0
4031 +#define elf_backend_want_got_plt 0
4032 +#define elf_backend_want_got_sym 1
4033 +#define elf_backend_got_header_size AVR32_GOT_HEADER_SIZE
4034 +
4035 +#include "elf32-target.h"
4036 Index: binutils-2.18/bfd/elf32-avr32.h
4037 ===================================================================
4038 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
4039 +++ binutils-2.18/bfd/elf32-avr32.h 2008-11-25 15:25:40.000000000 +0100
4040 @@ -0,0 +1,23 @@
4041 +/* AVR32-specific support for 32-bit ELF.
4042 + Copyright 2007 Atmel Corporation.
4043 +
4044 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
4045 +
4046 + This file is part of BFD, the Binary File Descriptor library.
4047 +
4048 + This program is free software; you can redistribute it and/or modify
4049 + it under the terms of the GNU General Public License as published by
4050 + the Free Software Foundation; either version 2 of the License, or
4051 + (at your option) any later version.
4052 +
4053 + This program is distributed in the hope that it will be useful,
4054 + but WITHOUT ANY WARRANTY; without even the implied warranty of
4055 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4056 + GNU General Public License for more details.
4057 +
4058 + You should have received a copy of the GNU General Public License
4059 + along with this program; if not, write to the Free Software
4060 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
4061 +
4062 +void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
4063 + int direct_data_refs);
4064 Index: binutils-2.18/bfd/elf-bfd.h
4065 ===================================================================
4066 --- binutils-2.18.orig/bfd/elf-bfd.h 2008-11-25 15:24:48.000000000 +0100
4067 +++ binutils-2.18/bfd/elf-bfd.h 2008-11-25 15:25:40.000000000 +0100
4068 @@ -1400,6 +1400,10 @@
4069 find_nearest_line. */
4070 struct mips_elf_find_line *find_line_info;
4071
4072 + /* Used by AVR32 ELF relaxation code. Contains an array of pointers
4073 + for each local symbol to the fragment where it is defined. */
4074 + struct fragment **local_sym_frag;
4075 +
4076 /* A place to stash dwarf1 info for this bfd. */
4077 struct dwarf1_debug *dwarf1_find_line_info;
4078
4079 Index: binutils-2.18/bfd/Makefile.am
4080 ===================================================================
4081 --- binutils-2.18.orig/bfd/Makefile.am 2008-11-25 15:24:48.000000000 +0100
4082 +++ binutils-2.18/bfd/Makefile.am 2008-11-25 15:25:40.000000000 +0100
4083 @@ -63,6 +63,7 @@
4084 cpu-arc.lo \
4085 cpu-arm.lo \
4086 cpu-avr.lo \
4087 + cpu-avr32.lo \
4088 cpu-bfin.lo \
4089 cpu-cr16.lo \
4090 cpu-cr16c.lo \
4091 @@ -243,6 +244,7 @@
4092 elf32-arc.lo \
4093 elf32-arm.lo \
4094 elf32-avr.lo \
4095 + elf32-avr32.lo \
4096 elf32-bfin.lo \
4097 elf32-cr16.lo \
4098 elf32-cr16c.lo \
4099 @@ -1328,6 +1330,10 @@
4100 $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
4101 $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
4102 $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
4103 +elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
4104 + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
4105 + $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
4106 + elf32-target.h
4107 elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
4108 $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
4109 $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
4110 Index: binutils-2.18/bfd/reloc.c
4111 ===================================================================
4112 --- binutils-2.18.orig/bfd/reloc.c 2008-11-25 15:24:48.000000000 +0100
4113 +++ binutils-2.18/bfd/reloc.c 2008-11-25 15:25:40.000000000 +0100
4114 @@ -3948,6 +3948,131 @@
4115 instructions
4116
4117 ENUM
4118 + BFD_RELOC_AVR32_DIFF32
4119 +ENUMX
4120 + BFD_RELOC_AVR32_DIFF16
4121 +ENUMX
4122 + BFD_RELOC_AVR32_DIFF8
4123 +ENUMDOC
4124 + Difference between two labels: L2 - L1. The value of L1 is encoded
4125 + as sym + addend, while the initial difference after assembly is
4126 + inserted into the object file by the assembler.
4127 +ENUM
4128 + BFD_RELOC_AVR32_GOT32
4129 +ENUMX
4130 + BFD_RELOC_AVR32_GOT16
4131 +ENUMX
4132 + BFD_RELOC_AVR32_GOT8
4133 +ENUMDOC
4134 + Reference to a symbol through the Global Offset Table. The linker
4135 + will allocate an entry for symbol in the GOT and insert the offset
4136 + of this entry as the relocation value.
4137 +ENUM
4138 + BFD_RELOC_AVR32_21S
4139 +ENUMX
4140 + BFD_RELOC_AVR32_16U
4141 +ENUMX
4142 + BFD_RELOC_AVR32_16S
4143 +ENUMX
4144 + BFD_RELOC_AVR32_SUB5
4145 +ENUMX
4146 + BFD_RELOC_AVR32_8S_EXT
4147 +ENUMX
4148 + BFD_RELOC_AVR32_8S
4149 +ENUMX
4150 + BFD_RELOC_AVR32_15S
4151 +ENUMDOC
4152 + Normal (non-pc-relative) code relocations. Alignment and signedness
4153 + is indicated by the suffixes. S means signed, U means unsigned. W
4154 + means word-aligned, H means halfword-aligned, neither means
4155 + byte-aligned (no alignment.) SUB5 is the same relocation as 16S.
4156 +ENUM
4157 + BFD_RELOC_AVR32_22H_PCREL
4158 +ENUMX
4159 + BFD_RELOC_AVR32_18W_PCREL
4160 +ENUMX
4161 + BFD_RELOC_AVR32_16B_PCREL
4162 +ENUMX
4163 + BFD_RELOC_AVR32_16N_PCREL
4164 +ENUMX
4165 + BFD_RELOC_AVR32_14UW_PCREL
4166 +ENUMX
4167 + BFD_RELOC_AVR32_11H_PCREL
4168 +ENUMX
4169 + BFD_RELOC_AVR32_10UW_PCREL
4170 +ENUMX
4171 + BFD_RELOC_AVR32_9H_PCREL
4172 +ENUMX
4173 + BFD_RELOC_AVR32_9UW_PCREL
4174 +ENUMDOC
4175 + PC-relative relocations are signed if neither 'U' nor 'S' is
4176 + specified. However, we explicitly tack on a 'B' to indicate no
4177 + alignment, to avoid confusion with data relocs. All of these resolve
4178 + to sym + addend - offset, except the one with 'N' (negated) suffix.
4179 + This particular one resolves to offset - sym - addend.
4180 +ENUM
4181 + BFD_RELOC_AVR32_GOTPC
4182 +ENUMDOC
4183 + Subtract the link-time address of the GOT from (symbol + addend)
4184 + and insert the result.
4185 +ENUM
4186 + BFD_RELOC_AVR32_GOTCALL
4187 +ENUMX
4188 + BFD_RELOC_AVR32_LDA_GOT
4189 +ENUMX
4190 + BFD_RELOC_AVR32_GOT21S
4191 +ENUMX
4192 + BFD_RELOC_AVR32_GOT18SW
4193 +ENUMX
4194 + BFD_RELOC_AVR32_GOT16S
4195 +ENUMDOC
4196 + Reference to a symbol through the GOT. The linker will allocate an
4197 + entry for symbol in the GOT and insert the offset of this entry as
4198 + the relocation value. addend must be zero. As usual, 'S' means
4199 + signed, 'W' means word-aligned, etc.
4200 +ENUM
4201 + BFD_RELOC_AVR32_32_CPENT
4202 +ENUMDOC
4203 + 32-bit constant pool entry. I don't think 8- and 16-bit entries make
4204 + a whole lot of sense.
4205 +ENUM
4206 + BFD_RELOC_AVR32_CPCALL
4207 +ENUMX
4208 + BFD_RELOC_AVR32_16_CP
4209 +ENUMX
4210 + BFD_RELOC_AVR32_9W_CP
4211 +ENUMDOC
4212 + Constant pool references. Some of these relocations are signed,
4213 + others are unsigned. It doesn't really matter, since the constant
4214 + pool always comes after the code that references it.
4215 +ENUM
4216 + BFD_RELOC_AVR32_ALIGN
4217 +ENUMDOC
4218 + sym must be the absolute symbol. The addend specifies the alignment
4219 + order, e.g. if addend is 2, the linker must add padding so that the
4220 + next address is aligned to a 4-byte boundary.
4221 +ENUM
4222 + BFD_RELOC_AVR32_14UW
4223 +ENUMX
4224 + BFD_RELOC_AVR32_10UW
4225 +ENUMX
4226 + BFD_RELOC_AVR32_10SW
4227 +ENUMX
4228 + BFD_RELOC_AVR32_STHH_W
4229 +ENUMX
4230 + BFD_RELOC_AVR32_7UW
4231 +ENUMX
4232 + BFD_RELOC_AVR32_6S
4233 +ENUMX
4234 + BFD_RELOC_AVR32_6UW
4235 +ENUMX
4236 + BFD_RELOC_AVR32_4UH
4237 +ENUMX
4238 + BFD_RELOC_AVR32_3U
4239 +ENUMDOC
4240 + Code relocations that will never make it to the output file.
4241 +
4242 +ENUM
4243 BFD_RELOC_390_12
4244 ENUMDOC
4245 Direct 12 bit.
4246 Index: binutils-2.18/bfd/targets.c
4247 ===================================================================
4248 --- binutils-2.18.orig/bfd/targets.c 2008-11-25 15:24:48.000000000 +0100
4249 +++ binutils-2.18/bfd/targets.c 2008-11-25 15:25:40.000000000 +0100
4250 @@ -564,6 +564,7 @@
4251 extern const bfd_target bfd_efi_app_x86_64_vec;
4252 extern const bfd_target bfd_efi_app_ia64_vec;
4253 extern const bfd_target bfd_elf32_avr_vec;
4254 +extern const bfd_target bfd_elf32_avr32_vec;
4255 extern const bfd_target bfd_elf32_bfin_vec;
4256 extern const bfd_target bfd_elf32_bfinfdpic_vec;
4257 extern const bfd_target bfd_elf32_big_generic_vec;
4258 @@ -884,6 +885,7 @@
4259 &bfd_efi_app_ia64_vec,
4260 #endif
4261 &bfd_elf32_avr_vec,
4262 + &bfd_elf32_avr32_vec,
4263 &bfd_elf32_bfin_vec,
4264 &bfd_elf32_bfinfdpic_vec,
4265
4266 Index: binutils-2.18/binutils/Makefile.am
4267 ===================================================================
4268 --- binutils-2.18.orig/binutils/Makefile.am 2008-11-25 15:24:48.000000000 +0100
4269 +++ binutils-2.18/binutils/Makefile.am 2008-11-25 15:25:40.000000000 +0100
4270 @@ -577,7 +577,7 @@
4271 $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
4272 $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
4273 $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
4274 - $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
4275 + $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
4276 $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
4277 $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
4278 $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
4279 Index: binutils-2.18/binutils/readelf.c
4280 ===================================================================
4281 --- binutils-2.18.orig/binutils/readelf.c 2008-11-25 15:24:48.000000000 +0100
4282 +++ binutils-2.18/binutils/readelf.c 2008-11-25 15:25:40.000000000 +0100
4283 @@ -21,7 +21,7 @@
4284 along with this program; if not, write to the Free Software
4285 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
4286 02110-1301, USA. */
4287 -\f
4288 +
4289 /* The difference between readelf and objdump:
4290
4291 Both programs are capable of displaying the contents of ELF format files,
4292 @@ -40,7 +40,7 @@
4293 There is also the case that readelf can provide more information about an
4294 ELF file than is provided by objdump. In particular it can display DWARF
4295 debugging information which (at the moment) objdump cannot. */
4296 -\f
4297 +
4298 #include "sysdep.h"
4299 #include <assert.h>
4300 #include <sys/stat.h>
4301 @@ -109,6 +109,7 @@
4302 #include "elf/arc.h"
4303 #include "elf/arm.h"
4304 #include "elf/avr.h"
4305 +#include "elf/avr32.h"
4306 #include "elf/bfin.h"
4307 #include "elf/cr16.h"
4308 #include "elf/cris.h"
4309 @@ -303,7 +304,7 @@
4310 #define streq(a,b) (strcmp ((a), (b)) == 0)
4311 #define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
4312 #define const_strneq(a,b) (strncmp ((a), (b), sizeof (b) - 1) == 0)
4313 -\f
4314 +
4315 static void *
4316 get_data (void *var, FILE *file, long offset, size_t size, size_t nmemb,
4317 const char *reason)
4318 @@ -614,6 +615,7 @@
4319 case EM_ALPHA:
4320 case EM_ALTERA_NIOS2:
4321 case EM_AVR:
4322 + case EM_AVR32:
4323 case EM_AVR_OLD:
4324 case EM_BLACKFIN:
4325 case EM_CR16:
4326 @@ -1006,6 +1008,10 @@
4327 rtype = elf_avr_reloc_type (type);
4328 break;
4329
4330 + case EM_AVR32:
4331 + rtype = elf_avr32_reloc_type (type);
4332 + break;
4333 +
4334 case EM_OLD_SPARCV9:
4335 case EM_SPARC32PLUS:
4336 case EM_SPARCV9:
4337 @@ -1763,6 +1769,7 @@
4338 case EM_VAX: return "Digital VAX";
4339 case EM_AVR_OLD:
4340 case EM_AVR: return "Atmel AVR 8-bit microcontroller";
4341 + case EM_AVR32: return "Atmel AVR32";
4342 case EM_CRIS: return "Axis Communications 32-bit embedded processor";
4343 case EM_JAVELIN: return "Infineon Technologies 32-bit embedded cpu";
4344 case EM_FIREPATH: return "Element 14 64-bit DSP processor";
4345 Index: binutils-2.18/gas/as.c
4346 ===================================================================
4347 --- binutils-2.18.orig/gas/as.c 2008-11-25 15:24:48.000000000 +0100
4348 +++ binutils-2.18/gas/as.c 2008-11-25 15:25:40.000000000 +0100
4349 @@ -441,10 +441,10 @@
4350 the end of the preceeding line so that it is simpler to
4351 selectively add and remove lines from this list. */
4352 {"alternate", no_argument, NULL, OPTION_ALTERNATE}
4353 - /* The entry for "a" is here to prevent getopt_long_only() from
4354 - considering that -a is an abbreviation for --alternate. This is
4355 - necessary because -a=<FILE> is a valid switch but getopt would
4356 - normally reject it since --alternate does not take an argument. */
4357 + /* The next two entries are here to prevent getopt_long_only() from
4358 + considering that -a or -al is an abbreviation for --alternate.
4359 + This is necessary because -a=<FILE> is a valid switch but getopt
4360 + would normally reject it since --alternate does not take an argument. */
4361 ,{"a", optional_argument, NULL, 'a'}
4362 /* Handle -al=<FILE>. */
4363 ,{"al", optional_argument, NULL, OPTION_AL}
4364 @@ -803,8 +803,15 @@
4365 case 'a':
4366 if (optarg)
4367 {
4368 - if (optarg != old_argv[optind] && optarg[-1] == '=')
4369 - --optarg;
4370 + /* If optarg is part of the -a switch and not a separate argument
4371 + in its own right, then scan backwards to the just after the -a.
4372 + This means skipping over both '=' and 'l' which might have been
4373 + taken to be part of the -a switch itself. */
4374 + if (optarg != old_argv[optind])
4375 + {
4376 + while (optarg[-1] == '=' || optarg[-1] == 'l')
4377 + --optarg;
4378 + }
4379
4380 if (md_parse_option (optc, optarg) != 0)
4381 break;
4382 @@ -1234,7 +1241,7 @@
4383 keep_it = 0;
4384
4385 if (!keep_it)
4386 - unlink_if_ordinary (out_file_name);
4387 + unlink (out_file_name);
4388
4389 input_scrub_end ();
4390
4391 Index: binutils-2.18/gas/config/bfin-aux.h
4392 ===================================================================
4393 --- binutils-2.18.orig/gas/config/bfin-aux.h 2008-11-25 15:24:48.000000000 +0100
4394 +++ binutils-2.18/gas/config/bfin-aux.h 2008-11-25 15:25:40.000000000 +0100
4395 @@ -1,151 +1,151 @@
4396 -/* bfin-aux.h ADI Blackfin Header file for gas
4397 - Copyright 2005, 2007
4398 - Free Software Foundation, Inc.
4399 -
4400 - This file is part of GAS, the GNU Assembler.
4401 -
4402 - GAS is free software; you can redistribute it and/or modify
4403 - it under the terms of the GNU General Public License as published by
4404 - the Free Software Foundation; either version 3, or (at your option)
4405 - any later version.
4406 -
4407 - GAS is distributed in the hope that it will be useful,
4408 - but WITHOUT ANY WARRANTY; without even the implied warranty of
4409 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4410 - GNU General Public License for more details.
4411 -
4412 - You should have received a copy of the GNU General Public License
4413 - along with GAS; see the file COPYING. If not, write to the Free
4414 - Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
4415 - 02110-1301, USA. */
4416 -
4417 -#include "bfin-defs.h"
4418 -
4419 -#define REG_T Register *
4420 -
4421 -INSTR_T
4422 -bfin_gen_dsp32mac (int op1, int mm, int mmod, int w1, int p,
4423 - int h01, int h11, int h00, int h10,
4424 - int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
4425 -
4426 -INSTR_T
4427 -bfin_gen_dsp32mult (int op1, int mm, int mmod, int w1, int p,
4428 - int h01, int h11, int h00, int h10,
4429 - int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
4430 -
4431 -INSTR_T
4432 -bfin_gen_dsp32alu (int HL, int aopcde, int aop, int s, int x,
4433 - REG_T dst0, REG_T dst1, REG_T src0, REG_T src1);
4434 -
4435 -INSTR_T
4436 -bfin_gen_dsp32shift (int sopcde, REG_T dst0, REG_T src0, REG_T src1,
4437 - int sop, int hls);
4438 -
4439 -INSTR_T
4440 -bfin_gen_dsp32shiftimm (int sopcde, REG_T dst0, int immag, REG_T src1,
4441 - int sop, int hls);
4442 -
4443 -INSTR_T
4444 -bfin_gen_ldimmhalf (REG_T reg, int h, int s, int z, Expr_Node *hword,
4445 - int reloc);
4446 -
4447 -INSTR_T
4448 -bfin_gen_ldstidxi (REG_T ptr, REG_T reg, int w, int sz, int z,
4449 - Expr_Node *offset);
4450 -
4451 -INSTR_T
4452 -bfin_gen_ldst (REG_T ptr, REG_T reg, int aop, int sz, int z, int w);
4453 -
4454 -INSTR_T
4455 -bfin_gen_ldstii (REG_T ptr, REG_T reg, Expr_Node *offset, int w, int op);
4456 -
4457 -INSTR_T
4458 -bfin_gen_ldstiifp (REG_T reg, Expr_Node *offset, int w);
4459 -
4460 -INSTR_T
4461 -bfin_gen_ldstpmod (REG_T ptr, REG_T reg, int aop, int w, REG_T idx);
4462 -
4463 -INSTR_T
4464 -bfin_gen_dspldst (REG_T i, REG_T reg, int aop, int w, int m);
4465 -
4466 -INSTR_T
4467 -bfin_gen_alu2op (REG_T dst, REG_T src, int opc);
4468 -
4469 -INSTR_T
4470 -bfin_gen_compi2opd (REG_T dst, int src, int op);
4471 -
4472 -INSTR_T
4473 -bfin_gen_compi2opp (REG_T dst, int src, int op);
4474 -
4475 -INSTR_T
4476 -bfin_gen_dagmodik (REG_T i, int op);
4477 -
4478 -INSTR_T
4479 -bfin_gen_dagmodim (REG_T i, REG_T m, int op, int br);
4480 -
4481 -INSTR_T
4482 -bfin_gen_ptr2op (REG_T dst, REG_T src, int opc);
4483 -
4484 -INSTR_T
4485 -bfin_gen_logi2op (int dst, int src, int opc);
4486 -
4487 -INSTR_T
4488 -bfin_gen_comp3op (REG_T src0, REG_T src1, REG_T dst, int opc);
4489 -
4490 -INSTR_T
4491 -bfin_gen_ccmv (REG_T src, REG_T dst, int t);
4492 -
4493 -INSTR_T
4494 -bfin_gen_ccflag (REG_T x, int y, int opc, int i, int g);
4495 -
4496 -INSTR_T
4497 -bfin_gen_cc2stat (int cbit, int op, int d);
4498 -
4499 -INSTR_T
4500 -bfin_gen_regmv (REG_T src, REG_T dst);
4501 -
4502 -INSTR_T
4503 -bfin_gen_cc2dreg (int op, REG_T reg);
4504 -
4505 -INSTR_T
4506 -bfin_gen_brcc (int t, int b, Expr_Node *offset);
4507 -
4508 -INSTR_T
4509 -bfin_gen_ujump (Expr_Node *offset);
4510 -
4511 -INSTR_T
4512 -bfin_gen_cactrl (REG_T reg, int a, int op);
4513 -
4514 -INSTR_T
4515 -bfin_gen_progctrl (int prgfunc, int poprnd);
4516 -
4517 -INSTR_T
4518 -bfin_gen_loopsetup (Expr_Node *soffset, REG_T c, int rop,
4519 - Expr_Node *eoffset, REG_T reg);
4520 -
4521 -INSTR_T
4522 -bfin_gen_loop (Expr_Node *expr, REG_T reg, int rop, REG_T preg);
4523 -
4524 -INSTR_T
4525 -bfin_gen_pushpopmultiple (int dr, int pr, int d, int p, int w);
4526 -
4527 -INSTR_T
4528 -bfin_gen_pushpopreg (REG_T reg, int w);
4529 -
4530 -INSTR_T
4531 -bfin_gen_calla (Expr_Node *addr, int s);
4532 -
4533 -INSTR_T
4534 -bfin_gen_linkage (int r, int framesize);
4535 -
4536 -INSTR_T
4537 -bfin_gen_pseudodbg (int fn, int reg, int grp);
4538 -
4539 -INSTR_T
4540 -bfin_gen_pseudodbg_assert (int dbgop, REG_T regtest, int expected);
4541 -
4542 -bfd_boolean
4543 -bfin_resource_conflict (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
4544 -
4545 -INSTR_T
4546 -bfin_gen_multi_instr (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
4547 +/* bfin-aux.h ADI Blackfin Header file for gas
4548 + Copyright 2005, 2007
4549 + Free Software Foundation, Inc.
4550 +
4551 + This file is part of GAS, the GNU Assembler.
4552 +
4553 + GAS is free software; you can redistribute it and/or modify
4554 + it under the terms of the GNU General Public License as published by
4555 + the Free Software Foundation; either version 3, or (at your option)
4556 + any later version.
4557 +
4558 + GAS is distributed in the hope that it will be useful,
4559 + but WITHOUT ANY WARRANTY; without even the implied warranty of
4560 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4561 + GNU General Public License for more details.
4562 +
4563 + You should have received a copy of the GNU General Public License
4564 + along with GAS; see the file COPYING. If not, write to the Free
4565 + Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
4566 + 02110-1301, USA. */
4567 +
4568 +#include "bfin-defs.h"
4569 +
4570 +#define REG_T Register *
4571 +
4572 +INSTR_T
4573 +bfin_gen_dsp32mac (int op1, int mm, int mmod, int w1, int p,
4574 + int h01, int h11, int h00, int h10,
4575 + int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
4576 +
4577 +INSTR_T
4578 +bfin_gen_dsp32mult (int op1, int mm, int mmod, int w1, int p,
4579 + int h01, int h11, int h00, int h10,
4580 + int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
4581 +
4582 +INSTR_T
4583 +bfin_gen_dsp32alu (int HL, int aopcde, int aop, int s, int x,
4584 + REG_T dst0, REG_T dst1, REG_T src0, REG_T src1);
4585 +
4586 +INSTR_T
4587 +bfin_gen_dsp32shift (int sopcde, REG_T dst0, REG_T src0, REG_T src1,
4588 + int sop, int hls);
4589 +
4590 +INSTR_T
4591 +bfin_gen_dsp32shiftimm (int sopcde, REG_T dst0, int immag, REG_T src1,
4592 + int sop, int hls);
4593 +
4594 +INSTR_T
4595 +bfin_gen_ldimmhalf (REG_T reg, int h, int s, int z, Expr_Node *hword,
4596 + int reloc);
4597 +
4598 +INSTR_T
4599 +bfin_gen_ldstidxi (REG_T ptr, REG_T reg, int w, int sz, int z,
4600 + Expr_Node *offset);
4601 +
4602 +INSTR_T
4603 +bfin_gen_ldst (REG_T ptr, REG_T reg, int aop, int sz, int z, int w);
4604 +
4605 +INSTR_T
4606 +bfin_gen_ldstii (REG_T ptr, REG_T reg, Expr_Node *offset, int w, int op);
4607 +
4608 +INSTR_T
4609 +bfin_gen_ldstiifp (REG_T reg, Expr_Node *offset, int w);
4610 +
4611 +INSTR_T
4612 +bfin_gen_ldstpmod (REG_T ptr, REG_T reg, int aop, int w, REG_T idx);
4613 +
4614 +INSTR_T
4615 +bfin_gen_dspldst (REG_T i, REG_T reg, int aop, int w, int m);
4616 +
4617 +INSTR_T
4618 +bfin_gen_alu2op (REG_T dst, REG_T src, int opc);
4619 +
4620 +INSTR_T
4621 +bfin_gen_compi2opd (REG_T dst, int src, int op);
4622 +
4623 +INSTR_T
4624 +bfin_gen_compi2opp (REG_T dst, int src, int op);
4625 +
4626 +INSTR_T
4627 +bfin_gen_dagmodik (REG_T i, int op);
4628 +
4629 +INSTR_T
4630 +bfin_gen_dagmodim (REG_T i, REG_T m, int op, int br);
4631 +
4632 +INSTR_T
4633 +bfin_gen_ptr2op (REG_T dst, REG_T src, int opc);
4634 +
4635 +INSTR_T
4636 +bfin_gen_logi2op (int dst, int src, int opc);
4637 +
4638 +INSTR_T
4639 +bfin_gen_comp3op (REG_T src0, REG_T src1, REG_T dst, int opc);
4640 +
4641 +INSTR_T
4642 +bfin_gen_ccmv (REG_T src, REG_T dst, int t);
4643 +
4644 +INSTR_T
4645 +bfin_gen_ccflag (REG_T x, int y, int opc, int i, int g);
4646 +
4647 +INSTR_T
4648 +bfin_gen_cc2stat (int cbit, int op, int d);
4649 +
4650 +INSTR_T
4651 +bfin_gen_regmv (REG_T src, REG_T dst);
4652 +
4653 +INSTR_T
4654 +bfin_gen_cc2dreg (int op, REG_T reg);
4655 +
4656 +INSTR_T
4657 +bfin_gen_brcc (int t, int b, Expr_Node *offset);
4658 +
4659 +INSTR_T
4660 +bfin_gen_ujump (Expr_Node *offset);
4661 +
4662 +INSTR_T
4663 +bfin_gen_cactrl (REG_T reg, int a, int op);
4664 +
4665 +INSTR_T
4666 +bfin_gen_progctrl (int prgfunc, int poprnd);
4667 +
4668 +INSTR_T
4669 +bfin_gen_loopsetup (Expr_Node *soffset, REG_T c, int rop,
4670 + Expr_Node *eoffset, REG_T reg);
4671 +
4672 +INSTR_T
4673 +bfin_gen_loop (Expr_Node *expr, REG_T reg, int rop, REG_T preg);
4674 +
4675 +INSTR_T
4676 +bfin_gen_pushpopmultiple (int dr, int pr, int d, int p, int w);
4677 +
4678 +INSTR_T
4679 +bfin_gen_pushpopreg (REG_T reg, int w);
4680 +
4681 +INSTR_T
4682 +bfin_gen_calla (Expr_Node *addr, int s);
4683 +
4684 +INSTR_T
4685 +bfin_gen_linkage (int r, int framesize);
4686 +
4687 +INSTR_T
4688 +bfin_gen_pseudodbg (int fn, int reg, int grp);
4689 +
4690 +INSTR_T
4691 +bfin_gen_pseudodbg_assert (int dbgop, REG_T regtest, int expected);
4692 +
4693 +bfd_boolean
4694 +bfin_resource_conflict (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
4695 +
4696 +INSTR_T
4697 +bfin_gen_multi_instr (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
4698 Index: binutils-2.18/gas/config/tc-avr32.c
4699 ===================================================================
4700 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
4701 +++ binutils-2.18/gas/config/tc-avr32.c 2008-11-25 15:25:40.000000000 +0100
4702 @@ -0,0 +1,4800 @@
4703 +/* Assembler implementation for AVR32.
4704 + Copyright 2003-2006 Atmel Corporation.
4705 +
4706 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
4707 +
4708 + This file is part of GAS, the GNU Assembler.
4709 +
4710 + GAS is free software; you can redistribute it and/or modify it
4711 + under the terms of the GNU General Public License as published by
4712 + the Free Software Foundation; either version 2, or (at your option)
4713 + any later version.
4714 +
4715 + GAS is distributed in the hope that it will be useful, but WITHOUT
4716 + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
4717 + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
4718 + License for more details.
4719 +
4720 + You should have received a copy of the GNU General Public License
4721 + along with GAS; see the file COPYING. If not, write to the Free
4722 + Software Foundation, 59 Temple Place - Suite 330, Boston, MA
4723 + 02111-1307, USA. */
4724 +
4725 +#include <stdio.h>
4726 +#include "as.h"
4727 +#include "safe-ctype.h"
4728 +#include "subsegs.h"
4729 +#include "symcat.h"
4730 +#include "opcodes/avr32-opc.h"
4731 +#include "opcodes/avr32-asm.h"
4732 +#include "elf/avr32.h"
4733 +#include "dwarf2dbg.h"
4734 +
4735 +#define xDEBUG
4736 +#define xOPC_CONSISTENCY_CHECK
4737 +
4738 +#ifdef DEBUG
4739 +# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
4740 +#else
4741 +# define pr_debug(fmt, args...)
4742 +#endif
4743 +
4744 +/* 3 MSB of instruction word indicate group. Group 7 -> extended */
4745 +#define AVR32_COMPACT_P(opcode) ((opcode[0] & 0xe0) != 0xe0)
4746 +
4747 +#define streq(a, b) (strcmp(a, b) == 0)
4748 +#define skip_whitespace(str) do { while(*(str) == ' ') ++(str); } while(0)
4749 +
4750 +/* Flags given on the command line */
4751 +static int avr32_pic = FALSE;
4752 +int linkrelax = FALSE;
4753 +int avr32_iarcompat = FALSE;
4754 +
4755 +/* This array holds the chars that always start a comment. */
4756 +const char comment_chars[] = "#";
4757 +
4758 +/* This array holds the chars that only start a comment at the
4759 + beginning of a line. We must include '#' here because the compiler
4760 + may produce #APP and #NO_APP in its output. */
4761 +const char line_comment_chars[] = "#";
4762 +
4763 +/* These may be used instead of newline (same as ';' in C). */
4764 +const char line_separator_chars[] = ";";
4765 +
4766 +/* Chars that can be used to separate mantissa from exponent in
4767 + floating point numbers. */
4768 +const char EXP_CHARS[] = "eE";
4769 +
4770 +/* Chars that mean this number is a floating point constant. */
4771 +const char FLT_CHARS[] = "dD";
4772 +
4773 +/* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
4774 +symbolS *GOT_symbol;
4775 +
4776 +static struct hash_control *avr32_mnemonic_htab;
4777 +
4778 +struct avr32_ifield_data
4779 +{
4780 + bfd_vma value;
4781 + /* FIXME: Get rid of align_order and complain. complain is never
4782 + used, align_order is used in one place. Try to use the relax
4783 + table instead. */
4784 + unsigned int align_order;
4785 +};
4786 +
4787 +struct avr32_insn
4788 +{
4789 + const struct avr32_syntax *syntax;
4790 + expressionS immediate;
4791 + int pcrel;
4792 + int force_extended;
4793 + unsigned int next_slot;
4794 + bfd_reloc_code_real_type r_type;
4795 + struct avr32_ifield_data field_value[AVR32_MAX_FIELDS];
4796 +};
4797 +
4798 +static struct avr32_insn current_insn;
4799 +
4800 +/* The target specific pseudo-ops we support. */
4801 +static void s_rseg (int);
4802 +static void s_cpool(int);
4803 +
4804 +const pseudo_typeS md_pseudo_table[] =
4805 +{
4806 + /* Make sure that .word is 32 bits */
4807 + { "word", cons, 4 },
4808 + { "file", (void (*) PARAMS ((int))) dwarf2_directive_file, 0 },
4809 + { "loc", dwarf2_directive_loc, 0 },
4810 +
4811 + /* .lcomm requires an explicit alignment parameter */
4812 + { "lcomm", s_lcomm, 1 },
4813 +
4814 + /* AVR32-specific pseudo-ops */
4815 + { "cpool", s_cpool, 0},
4816 +
4817 + /* IAR compatible pseudo-ops */
4818 + { "program", s_ignore, 0 },
4819 + { "public", s_globl, 0 },
4820 + { "extern", s_ignore, 0 },
4821 + { "module", s_ignore, 0 },
4822 + { "rseg", s_rseg, 0 },
4823 + { "dc8", cons, 1 },
4824 + { "dc16", cons, 2 },
4825 + { "dc32", cons, 4 },
4826 +
4827 + { NULL, NULL, 0 }
4828 +};
4829 +
4830 +/* Questionable stuff starts here */
4831 +
4832 +enum avr32_opinfo {
4833 + AVR32_OPINFO_NONE = BFD_RELOC_NONE,
4834 + AVR32_OPINFO_GOT,
4835 + AVR32_OPINFO_TLSGD,
4836 + AVR32_OPINFO_HI,
4837 + AVR32_OPINFO_LO,
4838 +};
4839 +
4840 +enum avr32_arch {
4841 + ARCH_TYPE_AP,
4842 + ARCH_TYPE_UCR1,
4843 + ARCH_TYPE_UCR2,
4844 +};
4845 +
4846 +struct arch_type_s
4847 +{
4848 + /* Architecture name */
4849 + char *name;
4850 + /* Instruction Set Architecture Flags */
4851 + unsigned long isa_flags;
4852 +};
4853 +
4854 +struct part_type_s
4855 +{
4856 + /* Part name */
4857 + char *name;
4858 + /* Architecture type */
4859 + unsigned int arch;
4860 +};
4861 +
4862 +static struct arch_type_s arch_types[] =
4863 +{
4864 + {"ap", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_PICO},
4865 + {"ucr1", AVR32_V1 | AVR32_DSP | AVR32_RMW},
4866 + {"ucr2", AVR32_V1 | AVR32_V2 | AVR32_DSP | AVR32_RMW},
4867 + {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO},
4868 + {NULL, 0}
4869 +};
4870 +
4871 +static struct part_type_s part_types[] = {
4872 + {"ap7000", ARCH_TYPE_AP},
4873 + {"ap7001", ARCH_TYPE_AP},
4874 + {"ap7002", ARCH_TYPE_AP},
4875 + {"ap7200", ARCH_TYPE_AP},
4876 + {"uc3a0128", ARCH_TYPE_UCR2},
4877 + {"uc3a0256", ARCH_TYPE_UCR2},
4878 + {"uc3a0512es", ARCH_TYPE_UCR1},
4879 + {"uc3a0512", ARCH_TYPE_UCR2},
4880 + {"uc3a1128", ARCH_TYPE_UCR2},
4881 + {"uc3a1256es", ARCH_TYPE_UCR1},
4882 + {"uc3a1256", ARCH_TYPE_UCR2},
4883 + {"uc3a1512es", ARCH_TYPE_UCR1},
4884 + {"uc3a1512", ARCH_TYPE_UCR2},
4885 + {"uc3a364", ARCH_TYPE_UCR2},
4886 + {"uc3a364s", ARCH_TYPE_UCR2},
4887 + {"uc3a3128", ARCH_TYPE_UCR2},
4888 + {"uc3a3128s", ARCH_TYPE_UCR2},
4889 + {"uc3a3256", ARCH_TYPE_UCR2},
4890 + {"uc3a3256s", ARCH_TYPE_UCR2},
4891 + {"uc3b064", ARCH_TYPE_UCR1},
4892 + {"uc3b0128", ARCH_TYPE_UCR1},
4893 + {"uc3b0256es", ARCH_TYPE_UCR1},
4894 + {"uc3b0256", ARCH_TYPE_UCR1},
4895 + {"uc3b164", ARCH_TYPE_UCR1},
4896 + {"uc3b1128", ARCH_TYPE_UCR1},
4897 + {"uc3b1256es", ARCH_TYPE_UCR1},
4898 + {"uc3b1256", ARCH_TYPE_UCR1},
4899 + {NULL, 0}
4900 +};
4901 +
4902 +/* Current architecture type. */
4903 +static struct arch_type_s default_arch = {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO };
4904 +static struct arch_type_s *avr32_arch = &default_arch;
4905 +
4906 +/* Display nicely formatted list of known part- and architecture names. */
4907 +
4908 +static void
4909 +show_arch_list (FILE *stream)
4910 +{
4911 + int i, x;
4912 +
4913 + fprintf (stream, _("Known architecture names:"));
4914 + x = 1000;
4915 +
4916 + for (i = 0; arch_types[i].name; i++)
4917 + {
4918 + int len = strlen (arch_types[i].name);
4919 +
4920 + x += len + 1;
4921 +
4922 + if (x < 75)
4923 + fprintf (stream, " %s", arch_types[i].name);
4924 + else
4925 + {
4926 + fprintf (stream, "\n %s", arch_types[i].name);
4927 + x = len + 2;
4928 + }
4929 + }
4930 +
4931 + fprintf (stream, "\n");
4932 +}
4933 +
4934 +static void
4935 +show_part_list (FILE *stream)
4936 +{
4937 + int i, x;
4938 +
4939 + fprintf (stream, _("Known part names:"));
4940 + x = 1000;
4941 +
4942 + for (i = 0; part_types[i].name; i++)
4943 + {
4944 + int len = strlen(part_types[i].name);
4945 +
4946 + x += len + 1;
4947 +
4948 + if (x < 75)
4949 + fprintf (stream, " %s", part_types[i].name);
4950 + else
4951 + {
4952 + fprintf(stream, "\n %s", part_types[i].name);
4953 + x = len + 2;
4954 + }
4955 + }
4956 +
4957 + fprintf (stream, "\n");
4958 +}
4959 +
4960 +const char *md_shortopts = "";
4961 +struct option md_longopts[] =
4962 +{
4963 +#define OPTION_ARCH (OPTION_MD_BASE)
4964 +#define OPTION_PART (OPTION_ARCH + 1)
4965 +#define OPTION_IAR (OPTION_PART + 1)
4966 +#define OPTION_PIC (OPTION_IAR + 1)
4967 +#define OPTION_NOPIC (OPTION_PIC + 1)
4968 +#define OPTION_LINKRELAX (OPTION_NOPIC + 1)
4969 +#define OPTION_NOLINKRELAX (OPTION_LINKRELAX + 1)
4970 +#define OPTION_DIRECT_DATA_REFS (OPTION_NOLINKRELAX + 1)
4971 + {"march", required_argument, NULL, OPTION_ARCH},
4972 + {"mpart", required_argument, NULL, OPTION_PART},
4973 + {"iar", no_argument, NULL, OPTION_IAR},
4974 + {"pic", no_argument, NULL, OPTION_PIC},
4975 + {"no-pic", no_argument, NULL, OPTION_NOPIC},
4976 + {"linkrelax", no_argument, NULL, OPTION_LINKRELAX},
4977 + {"no-linkrelax", no_argument, NULL, OPTION_NOLINKRELAX},
4978 + /* deprecated alias for -mpart=xxx */
4979 + {"mcpu", required_argument, NULL, OPTION_PART},
4980 + {NULL, no_argument, NULL, 0}
4981 +};
4982 +
4983 +size_t md_longopts_size = sizeof (md_longopts);
4984 +
4985 +void
4986 +md_show_usage (FILE *stream)
4987 +{
4988 + fprintf (stream, _("\
4989 +AVR32 options:\n\
4990 + -march=[arch-name] Select cpu architecture. [Default `all-insn']\n\
4991 + -mpart=[part-name] Select specific part. [Default `none']\n\
4992 + --pic Produce Position-Independent Code\n\
4993 + --no-pic Don't produce Position-Independent Code\n\
4994 + --linkrelax Produce output suitable for linker relaxing\n\
4995 + --no-linkrelax Don't produce output suitable for linker relaxing\n"));
4996 + show_arch_list(stream);
4997 +}
4998 +
4999 +int
5000 +md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
5001 +{
5002 + switch (c)
5003 + {
5004 + case OPTION_ARCH:
5005 + {
5006 + int i;
5007 + char *s = alloca (strlen (arg) + 1);
5008 +
5009 + {
5010 + char *t = s;
5011 + char *arg1 = arg;
5012 +
5013 + do
5014 + *t = TOLOWER (*arg1++);
5015 + while (*t++);
5016 + }
5017 +
5018 + /* Add backward compability */
5019 + if (strcmp ("uc", s)== 0)
5020 + {
5021 + as_warn("Deprecated arch `%s' specified. "
5022 + "Please use '-march=ucr1' instead. "
5023 + "Converting to arch 'ucr1'\n",
5024 + s);
5025 + s="ucr1";
5026 + }
5027 +
5028 + for (i = 0; arch_types[i].name; ++i)
5029 + if (strcmp (arch_types[i].name, s) == 0)
5030 + break;
5031 +
5032 + if (!arch_types[i].name)
5033 + {
5034 + show_arch_list (stderr);
5035 + as_fatal (_("unknown architecture: %s\n"), arg);
5036 + }
5037 +
5038 + avr32_arch = &arch_types[i];
5039 + break;
5040 + }
5041 + case OPTION_PART:
5042 + {
5043 + int i;
5044 + char *s = alloca (strlen (arg) + 1);
5045 + char *t = s;
5046 + char *p = arg;
5047 +
5048 + /* If arch type has already been set, don't bother.
5049 + -march= always overrides -mpart= */
5050 + if (avr32_arch != &default_arch)
5051 + break;
5052 +
5053 + do
5054 + *t = TOLOWER (*p++);
5055 + while (*t++);
5056 +
5057 + for (i = 0; part_types[i].name; ++i)
5058 + if (strcmp (part_types[i].name, s) == 0)
5059 + break;
5060 +
5061 + if (!part_types[i].name)
5062 + {
5063 + show_part_list (stderr);
5064 + as_fatal (_("unknown part: %s\n"), arg);
5065 + }
5066 +
5067 + avr32_arch = &arch_types[part_types[i].arch];
5068 + break;
5069 + }
5070 + case OPTION_IAR:
5071 + avr32_iarcompat = 1;
5072 + break;
5073 + case OPTION_PIC:
5074 + avr32_pic = 1;
5075 + break;
5076 + case OPTION_NOPIC:
5077 + avr32_pic = 0;
5078 + break;
5079 + case OPTION_LINKRELAX:
5080 + linkrelax = 1;
5081 + break;
5082 + case OPTION_NOLINKRELAX:
5083 + linkrelax = 0;
5084 + break;
5085 + default:
5086 + return 0;
5087 + }
5088 + return 1;
5089 +}
5090 +
5091 +/* Can't use symbol_new here, so have to create a symbol and then at
5092 + a later date assign it a value. Thats what these functions do.
5093 +
5094 + Shamelessly stolen from ARM. */
5095 +
5096 +static void
5097 +symbol_locate (symbolS * symbolP,
5098 + const char * name, /* It is copied, the caller can modify. */
5099 + segT segment, /* Segment identifier (SEG_<something>). */
5100 + valueT valu, /* Symbol value. */
5101 + fragS * frag) /* Associated fragment. */
5102 +{
5103 + unsigned int name_length;
5104 + char * preserved_copy_of_name;
5105 +
5106 + name_length = strlen (name) + 1; /* +1 for \0. */
5107 + obstack_grow (&notes, name, name_length);
5108 + preserved_copy_of_name = obstack_finish (&notes);
5109 +#ifdef STRIP_UNDERSCORE
5110 + if (preserved_copy_of_name[0] == '_')
5111 + preserved_copy_of_name++;
5112 +#endif
5113 +
5114 +#ifdef tc_canonicalize_symbol_name
5115 + preserved_copy_of_name =
5116 + tc_canonicalize_symbol_name (preserved_copy_of_name);
5117 +#endif
5118 +
5119 + S_SET_NAME (symbolP, preserved_copy_of_name);
5120 +
5121 + S_SET_SEGMENT (symbolP, segment);
5122 + S_SET_VALUE (symbolP, valu);
5123 + symbol_clear_list_pointers (symbolP);
5124 +
5125 + symbol_set_frag (symbolP, frag);
5126 +
5127 + /* Link to end of symbol chain. */
5128 + {
5129 + extern int symbol_table_frozen;
5130 +
5131 + if (symbol_table_frozen)
5132 + abort ();
5133 + }
5134 +
5135 + symbol_append (symbolP, symbol_lastP, & symbol_rootP, & symbol_lastP);
5136 +
5137 + obj_symbol_new_hook (symbolP);
5138 +
5139 +#ifdef tc_symbol_new_hook
5140 + tc_symbol_new_hook (symbolP);
5141 +#endif
5142 +
5143 +#ifdef DEBUG_SYMS
5144 + verify_symbol_chain (symbol_rootP, symbol_lastP);
5145 +#endif /* DEBUG_SYMS */
5146 +}
5147 +
5148 +struct cpool_entry
5149 +{
5150 + int refcount;
5151 + offsetT offset;
5152 + expressionS exp;
5153 +};
5154 +
5155 +struct cpool
5156 +{
5157 + struct cpool *next;
5158 + int used;
5159 + struct cpool_entry *literals;
5160 + unsigned int padding;
5161 + unsigned int next_free_entry;
5162 + unsigned int id;
5163 + symbolS *symbol;
5164 + segT section;
5165 + subsegT sub_section;
5166 +};
5167 +
5168 +struct cpool *cpool_list = NULL;
5169 +
5170 +static struct cpool *
5171 +find_cpool(segT section, subsegT sub_section)
5172 +{
5173 + struct cpool *pool;
5174 +
5175 + for (pool = cpool_list; pool != NULL; pool = pool->next)
5176 + {
5177 + if (!pool->used
5178 + && pool->section == section
5179 + && pool->sub_section == sub_section)
5180 + break;
5181 + }
5182 +
5183 + return pool;
5184 +}
5185 +
5186 +static struct cpool *
5187 +find_or_make_cpool(segT section, subsegT sub_section)
5188 +{
5189 + static unsigned int next_cpool_id = 0;
5190 + struct cpool *pool;
5191 +
5192 + pool = find_cpool(section, sub_section);
5193 +
5194 + if (!pool)
5195 + {
5196 + pool = xmalloc(sizeof(*pool));
5197 + if (!pool)
5198 + return NULL;
5199 +
5200 + pool->used = 0;
5201 + pool->literals = NULL;
5202 + pool->padding = 0;
5203 + pool->next_free_entry = 0;
5204 + pool->section = section;
5205 + pool->sub_section = sub_section;
5206 + pool->next = cpool_list;
5207 + pool->symbol = NULL;
5208 +
5209 + cpool_list = pool;
5210 + }
5211 +
5212 + /* NULL symbol means that the pool is new or has just been emptied. */
5213 + if (!pool->symbol)
5214 + {
5215 + pool->symbol = symbol_create(FAKE_LABEL_NAME, undefined_section,
5216 + 0, &zero_address_frag);
5217 + pool->id = next_cpool_id++;
5218 + }
5219 +
5220 + return pool;
5221 +}
5222 +
5223 +static struct cpool *
5224 +add_to_cpool(expressionS *exp, unsigned int *index, int ref)
5225 +{
5226 + struct cpool *pool;
5227 + unsigned int entry;
5228 +
5229 + pool = find_or_make_cpool(now_seg, now_subseg);
5230 +
5231 + /* Check if this constant is already in the pool. */
5232 + for (entry = 0; entry < pool->next_free_entry; entry++)
5233 + {
5234 + if ((pool->literals[entry].exp.X_op == exp->X_op)
5235 + && (exp->X_op == O_constant)
5236 + && (pool->literals[entry].exp.X_add_number
5237 + == exp->X_add_number)
5238 + && (pool->literals[entry].exp.X_unsigned
5239 + == exp->X_unsigned))
5240 + break;
5241 +
5242 + if ((pool->literals[entry].exp.X_op == exp->X_op)
5243 + && (exp->X_op == O_symbol)
5244 + && (pool->literals[entry].exp.X_add_number
5245 + == exp->X_add_number)
5246 + && (pool->literals[entry].exp.X_add_symbol
5247 + == exp->X_add_symbol)
5248 + && (pool->literals[entry].exp.X_op_symbol
5249 + == exp->X_op_symbol))
5250 + break;
5251 + }
5252 +
5253 + /* Create an entry if we didn't find a match */
5254 + if (entry == pool->next_free_entry)
5255 + {
5256 + pool->literals = xrealloc(pool->literals,
5257 + sizeof(struct cpool_entry) * (entry + 1));
5258 + pool->literals[entry].exp = *exp;
5259 + pool->literals[entry].refcount = 0;
5260 + pool->next_free_entry++;
5261 + }
5262 +
5263 + if (index)
5264 + *index = entry;
5265 + if (ref)
5266 + pool->literals[entry].refcount++;
5267 +
5268 + return pool;
5269 +}
5270 +
5271 +struct avr32_operand
5272 +{
5273 + int id;
5274 + int is_signed;
5275 + int is_pcrel;
5276 + int align_order;
5277 + int (*match)(char *str);
5278 + void (*parse)(const struct avr32_operand *op, char *str, int opindex);
5279 +};
5280 +
5281 +static int
5282 +match_anything(char *str ATTRIBUTE_UNUSED)
5283 +{
5284 + return 1;
5285 +}
5286 +
5287 +static int
5288 +match_intreg(char *str)
5289 +{
5290 + int regid, ret = 1;
5291 +
5292 + regid = avr32_parse_intreg(str);
5293 + if (regid < 0)
5294 + ret = 0;
5295 +
5296 + pr_debug("match_intreg: `%s': %d\n", str, ret);
5297 +
5298 + return ret;
5299 +}
5300 +
5301 +static int
5302 +match_intreg_predec(char *str)
5303 +{
5304 + int regid;
5305 +
5306 + if (str[0] != '-' || str[1] != '-')
5307 + return 0;
5308 +
5309 + regid = avr32_parse_intreg(str + 2);
5310 + if (regid < 0)
5311 + return 0;
5312 +
5313 + return 1;
5314 +}
5315 +
5316 +static int
5317 +match_intreg_postinc(char *str)
5318 +{
5319 + int regid, ret = 1;
5320 + char *p, c;
5321 +
5322 + for (p = str; *p; p++)
5323 + if (*p == '+')
5324 + break;
5325 +
5326 + if (p[0] != '+' || p[1] != '+')
5327 + return 0;
5328 +
5329 + c = *p, *p = 0;
5330 + regid = avr32_parse_intreg(str);
5331 + if (regid < 0)
5332 + ret = 0;
5333 +
5334 + *p = c;
5335 + return ret;
5336 +}
5337 +
5338 +static int
5339 +match_intreg_lsl(char *str)
5340 +{
5341 + int regid, ret = 1;
5342 + char *p, c;
5343 +
5344 + for (p = str; *p; p++)
5345 + if (*p == '<')
5346 + break;
5347 +
5348 + if (p[0] && p[1] != '<')
5349 + return 0;
5350 +
5351 + c = *p, *p = 0;
5352 + regid = avr32_parse_intreg(str);
5353 + if (regid < 0)
5354 + ret = 0;
5355 +
5356 + *p = c;
5357 + return ret;
5358 +}
5359 +
5360 +static int
5361 +match_intreg_lsr(char *str)
5362 +{
5363 + int regid, ret = 1;
5364 + char *p, c;
5365 +
5366 + for (p = str; *p; p++)
5367 + if (*p == '>')
5368 + break;
5369 +
5370 + if (p[0] && p[1] != '>')
5371 + return 0;
5372 +
5373 + c = *p, *p = 0;
5374 +
5375 + regid = avr32_parse_intreg(str);
5376 + if (regid < 0)
5377 + ret = 0;
5378 +
5379 + *p = c;
5380 + return ret;
5381 +}
5382 +
5383 +static int
5384 +match_intreg_part(char *str)
5385 +{
5386 + int regid, ret = 1;
5387 + char *p, c;
5388 +
5389 + for (p = str; *p; p++)
5390 + if (*p == ':')
5391 + break;
5392 +
5393 + if (p[0] != ':' || !ISPRINT(p[1]) || p[2] != '\0')
5394 + return 0;
5395 +
5396 + c = *p, *p = 0;
5397 + regid = avr32_parse_intreg(str);
5398 + if (regid < 0)
5399 + ret = 0;
5400 +
5401 + *p = c;
5402 +
5403 + return ret;
5404 +}
5405 +
5406 +#define match_intreg_disp match_anything
5407 +
5408 +static int
5409 +match_intreg_index(char *str)
5410 +{
5411 + int regid, ret = 1;
5412 + char *p, *end, c;
5413 +
5414 + for (p = str; *p; p++)
5415 + if (*p == '[')
5416 + break;
5417 +
5418 + /* don't allow empty displacement here (it makes no sense) */
5419 + if (p[0] != '[')
5420 + return 0;
5421 +
5422 + for (end = p + 1; *end; end++) ;
5423 + if (*(--end) != ']')
5424 + return 0;
5425 +
5426 + c = *end, *end = 0;
5427 + if (!match_intreg_lsl(p + 1))
5428 + ret = 0;
5429 + *end = c;
5430 +
5431 + if (ret)
5432 + {
5433 + c = *p, *p = 0;
5434 + regid = avr32_parse_intreg(str);
5435 + if (regid < 0)
5436 + ret = 0;
5437 + *p = c;
5438 + }
5439 +
5440 + return ret;
5441 +}
5442 +
5443 +static int
5444 +match_intreg_xindex(char *str)
5445 +{
5446 + int regid, ret = 1;
5447 + char *p, *end, c;
5448 +
5449 + for (p = str; *p; p++)
5450 + if (*p == '[')
5451 + break;
5452 +
5453 + /* empty displacement makes no sense here either */
5454 + if (p[0] != '[')
5455 + return 0;
5456 +
5457 + for (end = p + 1; *end; end++)
5458 + if (*end == '<')
5459 + break;
5460 +
5461 + if (!streq(end, "<<2]"))
5462 + return 0;
5463 +
5464 + c = *end, *end = 0;
5465 + if (!match_intreg_part(p + 1))
5466 + ret = 0;
5467 + *end = c;
5468 +
5469 + if (ret)
5470 + {
5471 + c = *p, *p = 0;
5472 + regid = avr32_parse_intreg(str);
5473 + if (regid < 0)
5474 + ret = 0;
5475 + *p = c;
5476 + }
5477 +
5478 + return ret;
5479 +}
5480 +
5481 +/* The PC_UDISP_W operator may show up as a label or as a pc[disp]
5482 + expression. So there's no point in attempting to match this... */
5483 +#define match_pc_disp match_anything
5484 +
5485 +static int
5486 +match_sp(char *str)
5487 +{
5488 + /* SP in any form will do */
5489 + return avr32_parse_intreg(str) == AVR32_REG_SP;
5490 +}
5491 +
5492 +static int
5493 +match_sp_disp(char *str)
5494 +{
5495 + int regid, ret = 1;
5496 + char *p, c;
5497 +
5498 + for (p = str; *p; p++)
5499 + if (*p == '[')
5500 + break;
5501 +
5502 + /* allow empty displacement, meaning zero */
5503 + if (p[0] == '[')
5504 + {
5505 + char *end;
5506 + for (end = p + 1; *end; end++) ;
5507 + if (end[-1] != ']')
5508 + return 0;
5509 + }
5510 +
5511 + c = *p, *p = 0;
5512 + regid = avr32_parse_intreg(str);
5513 + if (regid != AVR32_REG_SP)
5514 + ret = 0;
5515 +
5516 + *p = c;
5517 + return ret;
5518 +}
5519 +
5520 +static int
5521 +match_cpno(char *str)
5522 +{
5523 + if (strncasecmp(str, "cp", 2) != 0)
5524 + return 0;
5525 + return 1;
5526 +}
5527 +
5528 +static int
5529 +match_cpreg(char *str)
5530 +{
5531 + if (strncasecmp(str, "cr", 2) != 0)
5532 + return 0;
5533 + return 1;
5534 +}
5535 +
5536 +/* We allow complex expressions, and register names may show up as
5537 + symbols. Just make sure immediate expressions are always matched
5538 + last. */
5539 +#define match_const match_anything
5540 +#define match_jmplabel match_anything
5541 +#define match_number match_anything
5542 +
5543 +/* Mnemonics that take reglists never accept anything else */
5544 +#define match_reglist8 match_anything
5545 +#define match_reglist9 match_anything
5546 +#define match_reglist16 match_anything
5547 +#define match_reglist_ldm match_anything
5548 +#define match_reglist_cp8 match_anything
5549 +#define match_reglist_cpd8 match_anything
5550 +
5551 +/* Ditto for retval, jospinc and mcall */
5552 +#define match_retval match_anything
5553 +#define match_jospinc match_anything
5554 +#define match_mcall match_anything
5555 +
5556 +/* COH is used to select between two different syntaxes */
5557 +static int
5558 +match_coh(char *str)
5559 +{
5560 + return strcasecmp(str, "coh") == 0;
5561 +}
5562 +
5563 +static int
5564 +match_fpreg(char *str)
5565 +{
5566 + unsigned long regid;
5567 + char *endptr;
5568 +
5569 + if ((str[0] != 'f' && str[0] != 'F')
5570 + || (str[1] != 'r' && str[1] != 'R'))
5571 + return 0;
5572 +
5573 + str += 2;
5574 + regid = strtoul(str, &endptr, 10);
5575 + if (!*str || *endptr)
5576 + return 0;
5577 +
5578 + return 1;
5579 +}
5580 +
5581 +static int
5582 +match_picoreg(char *str)
5583 +{
5584 + int regid;
5585 +
5586 + regid = avr32_parse_picoreg(str);
5587 + if (regid < 0)
5588 + return 0;
5589 + return 1;
5590 +}
5591 +
5592 +#define match_pico_reglist_w match_anything
5593 +#define match_pico_reglist_d match_anything
5594 +
5595 +static int
5596 +match_pico_in(char *str)
5597 +{
5598 + unsigned long regid;
5599 + char *end;
5600 +
5601 + if (strncasecmp(str, "in", 2) != 0)
5602 + return 0;
5603 +
5604 + str += 2;
5605 + regid = strtoul(str, &end, 10);
5606 + if (!*str || *end)
5607 + return 0;
5608 +
5609 + return 1;
5610 +}
5611 +
5612 +static int
5613 +match_pico_out0(char *str)
5614 +{
5615 + if (strcasecmp(str, "out0") != 0)
5616 + return 0;
5617 + return 1;
5618 +}
5619 +
5620 +static int
5621 +match_pico_out1(char *str)
5622 +{
5623 + if (strcasecmp(str, "out1") != 0)
5624 + return 0;
5625 + return 1;
5626 +}
5627 +
5628 +static int
5629 +match_pico_out2(char *str)
5630 +{
5631 + if (strcasecmp(str, "out2") != 0)
5632 + return 0;
5633 + return 1;
5634 +}
5635 +
5636 +static int
5637 +match_pico_out3(char *str)
5638 +{
5639 + if (strcasecmp(str, "out3") != 0)
5640 + return 0;
5641 + return 1;
5642 +}
5643 +
5644 +static void parse_nothing(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5645 + char *str ATTRIBUTE_UNUSED,
5646 + int opindex ATTRIBUTE_UNUSED)
5647 +{
5648 + /* Do nothing (this is used for "match-only" operands like COH) */
5649 +}
5650 +
5651 +static void
5652 +parse_const(const struct avr32_operand *op, char *str,
5653 + int opindex ATTRIBUTE_UNUSED)
5654 +{
5655 + expressionS *exp = &current_insn.immediate;
5656 + expressionS *sym_exp;
5657 + int slot;
5658 + char *save;
5659 +
5660 + pr_debug("parse_const: `%s' (signed: %d, pcrel: %d, align: %d)\n",
5661 + str, op->is_signed, op->is_pcrel, op->align_order);
5662 +
5663 + save = input_line_pointer;
5664 + input_line_pointer = str;
5665 +
5666 + expression(exp);
5667 +
5668 + slot = current_insn.next_slot++;
5669 + current_insn.field_value[slot].align_order = op->align_order;
5670 + current_insn.pcrel = op->is_pcrel;
5671 +
5672 + switch (exp->X_op)
5673 + {
5674 + case O_illegal:
5675 + as_bad(_("illegal operand"));
5676 + break;
5677 + case O_absent:
5678 + as_bad(_("missing operand"));
5679 + break;
5680 + case O_constant:
5681 + pr_debug(" -> constant: %ld\n", (long)exp->X_add_number);
5682 + current_insn.field_value[slot].value = exp->X_add_number;
5683 + break;
5684 + case O_uminus:
5685 + pr_debug(" -> uminus\n");
5686 + sym_exp = symbol_get_value_expression(exp->X_add_symbol);
5687 + switch (sym_exp->X_op) {
5688 + case O_subtract:
5689 + pr_debug(" -> subtract: switching operands\n");
5690 + exp->X_op_symbol = sym_exp->X_add_symbol;
5691 + exp->X_add_symbol = sym_exp->X_op_symbol;
5692 + exp->X_op = O_subtract;
5693 + /* TODO: Remove the old X_add_symbol */
5694 + break;
5695 + default:
5696 + as_bad(_("Expression too complex\n"));
5697 + break;
5698 + }
5699 + break;
5700 +#if 0
5701 + case O_subtract:
5702 + /* Any expression subtracting a symbol from the current section
5703 + can be made PC-relative by adding the right offset. */
5704 + if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
5705 + current_insn.pcrel = TRUE;
5706 + pr_debug(" -> subtract: pcrel? %s\n",
5707 + current_insn.pcrel ? "yes" : "no");
5708 + /* fall through */
5709 +#endif
5710 + default:
5711 + pr_debug(" -> (%p <%d> %p + %d)\n",
5712 + exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
5713 + exp->X_add_number);
5714 + current_insn.field_value[slot].value = 0;
5715 + break;
5716 + }
5717 +
5718 + input_line_pointer = save;
5719 +}
5720 +
5721 +static void
5722 +parse_jmplabel(const struct avr32_operand *op, char *str,
5723 + int opindex ATTRIBUTE_UNUSED)
5724 +{
5725 + expressionS *exp = &current_insn.immediate;
5726 + int slot;
5727 + char *save;
5728 +
5729 + pr_debug("parse_jmplabel: `%s' (signed: %d, pcrel: %d, align: %d)\n",
5730 + str, op->is_signed, op->is_pcrel, op->align_order);
5731 +
5732 + save = input_line_pointer;
5733 + input_line_pointer = str;
5734 +
5735 + expression(exp);
5736 +
5737 + slot = current_insn.next_slot++;
5738 + current_insn.field_value[slot].align_order = op->align_order;
5739 + current_insn.pcrel = TRUE;
5740 +
5741 + switch (exp->X_op)
5742 + {
5743 + case O_illegal:
5744 + as_bad(_("illegal operand"));
5745 + break;
5746 + case O_absent:
5747 + as_bad(_("missing operand"));
5748 + break;
5749 + case O_constant:
5750 + pr_debug(" -> constant: %ld\n", (long)exp->X_add_number);
5751 + current_insn.field_value[slot].value = exp->X_add_number;
5752 + current_insn.pcrel = 0;
5753 + break;
5754 + default:
5755 + pr_debug(" -> (%p <%d> %p + %d)\n",
5756 + exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
5757 + exp->X_add_number);
5758 + current_insn.field_value[slot].value = 0;
5759 + break;
5760 + }
5761 +
5762 + input_line_pointer = save;
5763 +}
5764 +
5765 +static void
5766 +parse_intreg(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5767 + char *str, int opindex ATTRIBUTE_UNUSED)
5768 +{
5769 + int regid, slot;
5770 +
5771 + pr_debug("parse_intreg: `%s'\n", str);
5772 +
5773 + regid = avr32_parse_intreg(str);
5774 + assert(regid >= 0);
5775 +
5776 + slot = current_insn.next_slot++;
5777 + current_insn.field_value[slot].value = regid;
5778 + current_insn.field_value[slot].align_order = op->align_order;
5779 +}
5780 +
5781 +static void
5782 +parse_intreg_predec(const struct avr32_operand *op, char *str, int opindex)
5783 +{
5784 + parse_intreg(op, str + 2, opindex);
5785 +}
5786 +
5787 +static void
5788 +parse_intreg_postinc(const struct avr32_operand *op, char *str, int opindex)
5789 +{
5790 + char *p, c;
5791 +
5792 + pr_debug("parse_intreg_postinc: `%s'\n", str);
5793 +
5794 + for (p = str; *p != '+'; p++) ;
5795 +
5796 + c = *p, *p = 0;
5797 + parse_intreg(op, str, opindex);
5798 + *p = c;
5799 +}
5800 +
5801 +static void
5802 +parse_intreg_shift(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5803 + char *str, int opindex ATTRIBUTE_UNUSED)
5804 +{
5805 + int regid, slot, shift = 0;
5806 + char *p, c;
5807 + char shiftop;
5808 +
5809 + pr_debug("parse Ry<<sa: `%s'\n", str);
5810 +
5811 + for (p = str; *p; p++)
5812 + if (*p == '<' || *p == '>')
5813 + break;
5814 +
5815 + shiftop = *p;
5816 +
5817 + c = *p, *p = 0;
5818 + regid = avr32_parse_intreg(str);
5819 + assert(regid >= 0);
5820 + *p = c;
5821 +
5822 + if (c)
5823 + {
5824 + if (p[0] != shiftop || p[1] != shiftop)
5825 + as_bad(_("expected shift operator in `%s'"), p);
5826 + else
5827 + {
5828 + expressionS exp;
5829 + char *saved;
5830 +
5831 + saved = input_line_pointer;
5832 + input_line_pointer = p + 2;
5833 + expression(&exp);
5834 + input_line_pointer = saved;
5835 +
5836 + if (exp.X_op != O_constant)
5837 + as_bad(_("shift amount must be a numeric constant"));
5838 + else
5839 + shift = exp.X_add_number;
5840 + }
5841 + }
5842 +
5843 + slot = current_insn.next_slot++;
5844 + current_insn.field_value[slot].value = regid;
5845 + slot = current_insn.next_slot++;
5846 + current_insn.field_value[slot].value = shift;
5847 +}
5848 +
5849 +/* The match() function selected the right opcode, so it doesn't
5850 + matter which way we shift any more. */
5851 +#define parse_intreg_lsl parse_intreg_shift
5852 +#define parse_intreg_lsr parse_intreg_shift
5853 +
5854 +static void
5855 +parse_intreg_part(const struct avr32_operand *op, char *str,
5856 + int opindex ATTRIBUTE_UNUSED)
5857 +{
5858 + static const char bparts[] = { 'b', 'l', 'u', 't' };
5859 + static const char hparts[] = { 'b', 't' };
5860 + unsigned int slot, sel;
5861 + int regid;
5862 + char *p, c;
5863 +
5864 + pr_debug("parse reg:part `%s'\n", str);
5865 +
5866 + for (p = str; *p; p++)
5867 + if (*p == ':')
5868 + break;
5869 +
5870 + c = *p, *p = 0;
5871 + regid = avr32_parse_intreg(str);
5872 + assert(regid >= 0);
5873 + *p = c;
5874 +
5875 + assert(c == ':');
5876 +
5877 + if (op->align_order)
5878 + {
5879 + for (sel = 0; sel < sizeof(hparts); sel++)
5880 + if (TOLOWER(p[1]) == hparts[sel])
5881 + break;
5882 +
5883 + if (sel >= sizeof(hparts))
5884 + {
5885 + as_bad(_("invalid halfword selector `%c' (must be either b or t)"),
5886 + p[1]);
5887 + sel = 0;
5888 + }
5889 + }
5890 + else
5891 + {
5892 + for (sel = 0; sel < sizeof(bparts); sel++)
5893 + if (TOLOWER(p[1]) == bparts[sel])
5894 + break;
5895 +
5896 + if (sel >= sizeof(bparts))
5897 + {
5898 + as_bad(_("invalid byte selector `%c' (must be one of b,l,u,t)"),
5899 + p[1]);
5900 + sel = 0;
5901 + }
5902 + }
5903 +
5904 + slot = current_insn.next_slot++;
5905 + current_insn.field_value[slot].value = regid;
5906 + slot = current_insn.next_slot++;
5907 + current_insn.field_value[slot].value = sel;
5908 +}
5909 +
5910 +/* This is the parser for "Rp[displacement]" expressions. In addition
5911 + to the "official" syntax, we accept a label as a replacement for
5912 + the register expression. This syntax implies Rp=PC and the
5913 + displacement is the pc-relative distance to the label. */
5914 +static void
5915 +parse_intreg_disp(const struct avr32_operand *op, char *str, int opindex)
5916 +{
5917 + expressionS *exp = &current_insn.immediate;
5918 + int slot, regid;
5919 + char *save, *p, c;
5920 +
5921 + pr_debug("parse_intreg_disp: `%s' (signed: %d, pcrel: %d, align: %d)\n",
5922 + str, op->is_signed, op->is_pcrel, op->align_order);
5923 +
5924 + for (p = str; *p; p++)
5925 + if (*p == '[')
5926 + break;
5927 +
5928 + slot = current_insn.next_slot++;
5929 +
5930 + /* First, check if we have a valid register either before '[' or as
5931 + the sole expression. If so, we use the Rp[disp] syntax. */
5932 + c = *p, *p = 0;
5933 + regid = avr32_parse_intreg(str);
5934 + *p = c;
5935 +
5936 + if (regid >= 0)
5937 + {
5938 + current_insn.field_value[slot].value = regid;
5939 +
5940 + slot = current_insn.next_slot++;
5941 + current_insn.field_value[slot].align_order = op->align_order;
5942 +
5943 + if (c == '[')
5944 + {
5945 + save = input_line_pointer;
5946 + input_line_pointer = p + 1;
5947 +
5948 + expression(exp);
5949 +
5950 + if (*input_line_pointer != ']')
5951 + as_bad(_("junk after displacement expression"));
5952 +
5953 + input_line_pointer = save;
5954 +
5955 + switch (exp->X_op)
5956 + {
5957 + case O_illegal:
5958 + as_bad(_("illegal displacement expression"));
5959 + break;
5960 + case O_absent:
5961 + as_bad(_("missing displacement expression"));
5962 + break;
5963 + case O_constant:
5964 + pr_debug(" -> constant: %ld\n", exp->X_add_number);
5965 + current_insn.field_value[slot].value = exp->X_add_number;
5966 + break;
5967 +#if 0
5968 + case O_subtract:
5969 + if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
5970 + current_insn.pcrel = TRUE;
5971 + pr_debug(" -> subtract: pcrel? %s\n",
5972 + current_insn.pcrel ? "yes" : "no");
5973 + /* fall through */
5974 +#endif
5975 + default:
5976 + pr_debug(" -> (%p <%d> %p + %d)\n",
5977 + exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
5978 + exp->X_add_number);
5979 + current_insn.field_value[slot].value = 0;
5980 + }
5981 + }
5982 + else
5983 + {
5984 + exp->X_op = O_constant;
5985 + exp->X_add_number = 0;
5986 + current_insn.field_value[slot].value = 0;
5987 + }
5988 + }
5989 + else
5990 + {
5991 + /* Didn't find a valid register. Try parsing it as a label. */
5992 + current_insn.field_value[slot].value = AVR32_REG_PC;
5993 + parse_jmplabel(op, str, opindex);
5994 + }
5995 +}
5996 +
5997 +static void
5998 +parse_intreg_index(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5999 + char *str, int opindex ATTRIBUTE_UNUSED)
6000 +{
6001 + int slot, regid;
6002 + char *p, *end, c;
6003 +
6004 + for (p = str; *p; p++)
6005 + if (*p == '[')
6006 + break;
6007 +
6008 + assert(*p);
6009 +
6010 + c = *p, *p = 0;
6011 + regid = avr32_parse_intreg(str);
6012 + assert(regid >= 0);
6013 + *p = c;
6014 +
6015 + slot = current_insn.next_slot++;
6016 + current_insn.field_value[slot].value = regid;
6017 +
6018 + p++;
6019 + for (end = p; *end; end++)
6020 + if (*end == ']' || *end == '<')
6021 + break;
6022 +
6023 + assert(*end);
6024 +
6025 + c = *end, *end = 0;
6026 + regid = avr32_parse_intreg(p);
6027 + assert(regid >= 0);
6028 + *end = c;
6029 +
6030 + slot = current_insn.next_slot++;
6031 + current_insn.field_value[slot].value = regid;
6032 +
6033 + slot = current_insn.next_slot++;
6034 + current_insn.field_value[slot].value = 0;
6035 +
6036 + if (*end == '<')
6037 + {
6038 + expressionS exp;
6039 + char *save;
6040 +
6041 + p = end + 2;
6042 + for (end = p; *end; end++)
6043 + if (*end == ']')
6044 + break;
6045 +
6046 + assert(*end == ']');
6047 +
6048 + c = *end, *end = 0;
6049 + save = input_line_pointer;
6050 + input_line_pointer = p;
6051 + expression(&exp);
6052 +
6053 + if (*input_line_pointer)
6054 + as_bad(_("junk after shift expression"));
6055 +
6056 + *end = c;
6057 + input_line_pointer = save;
6058 +
6059 + if (exp.X_op == O_constant)
6060 + current_insn.field_value[slot].value = exp.X_add_number;
6061 + else
6062 + as_bad(_("shift expression too complex"));
6063 + }
6064 +}
6065 +
6066 +static void
6067 +parse_intreg_xindex(const struct avr32_operand *op, char *str, int opindex)
6068 +{
6069 + int slot, regid;
6070 + char *p, *end, c;
6071 +
6072 + for (p = str; *p; p++)
6073 + if (*p == '[')
6074 + break;
6075 +
6076 + assert(*p);
6077 +
6078 + c = *p, *p = 0;
6079 + regid = avr32_parse_intreg(str);
6080 + assert(regid >= 0);
6081 + *p = c;
6082 +
6083 + slot = current_insn.next_slot++;
6084 + current_insn.field_value[slot].value = regid;
6085 +
6086 + p++;
6087 + for (end = p; *end; end++)
6088 + if (*end == '<')
6089 + break;
6090 +
6091 + assert(*end);
6092 +
6093 + c = *end, *end = 0;
6094 + parse_intreg_part(op, p, opindex);
6095 + *end = c;
6096 +}
6097 +
6098 +static void
6099 +parse_pc_disp(const struct avr32_operand *op, char *str, int opindex)
6100 +{
6101 + char *p, c;
6102 +
6103 + for (p = str; *p; p++)
6104 + if (*p == '[')
6105 + break;
6106 +
6107 + /* The lddpc instruction comes in two different syntax variants:
6108 + lddpc reg, expression
6109 + lddpc reg, pc[disp]
6110 + If the operand contains a '[', we use the second form. */
6111 + if (*p)
6112 + {
6113 + int regid;
6114 +
6115 + c = *p, *p = 0;
6116 + regid = avr32_parse_intreg(str);
6117 + *p = c;
6118 + if (regid == AVR32_REG_PC)
6119 + {
6120 + char *end;
6121 +
6122 + for (end = ++p; *end; end++) ;
6123 + if (*(--end) != ']')
6124 + as_bad(_("unrecognized form of instruction: `%s'"), str);
6125 + else
6126 + {
6127 + c = *end, *end = 0;
6128 + parse_const(op, p, opindex);
6129 + *end = c;
6130 + current_insn.pcrel = 0;
6131 + }
6132 + }
6133 + else
6134 + as_bad(_("unrecognized form of instruction: `%s'"), str);
6135 + }
6136 + else
6137 + {
6138 + parse_jmplabel(op, str, opindex);
6139 + }
6140 +}
6141 +
6142 +static void parse_sp(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6143 + char *str ATTRIBUTE_UNUSED,
6144 + int opindex ATTRIBUTE_UNUSED)
6145 +{
6146 + int slot;
6147 +
6148 + slot = current_insn.next_slot++;
6149 + current_insn.field_value[slot].value = AVR32_REG_SP;
6150 +}
6151 +
6152 +static void
6153 +parse_sp_disp(const struct avr32_operand *op, char *str, int opindex)
6154 +{
6155 + char *p, c;
6156 +
6157 + for (; *str; str++)
6158 + if (*str == '[')
6159 + break;
6160 +
6161 + assert(*str);
6162 +
6163 + for (p = ++str; *p; p++)
6164 + if (*p == ']')
6165 + break;
6166 +
6167 + c = *p, *p = 0;
6168 + parse_const(op, str, opindex);
6169 + *p = c;
6170 +}
6171 +
6172 +static void
6173 +parse_cpno(const struct avr32_operand *op ATTRIBUTE_UNUSED, char *str,
6174 + int opindex ATTRIBUTE_UNUSED)
6175 +{
6176 + int slot;
6177 +
6178 + str += 2;
6179 + if (*str == '#')
6180 + str++;
6181 + if (*str < '0' || *str > '7' || str[1])
6182 + as_bad(_("invalid coprocessor `%s'"), str);
6183 +
6184 + slot = current_insn.next_slot++;
6185 + current_insn.field_value[slot].value = *str - '0';
6186 +}
6187 +
6188 +static void
6189 +parse_cpreg(const struct avr32_operand *op, char *str,
6190 + int opindex ATTRIBUTE_UNUSED)
6191 +{
6192 + unsigned int crid;
6193 + int slot;
6194 + char *endptr;
6195 +
6196 + str += 2;
6197 + crid = strtoul(str, &endptr, 10);
6198 + if (*endptr || crid > 15 || crid & ((1 << op->align_order) - 1))
6199 + as_bad(_("invalid coprocessor register `%s'"), str);
6200 +
6201 + crid >>= op->align_order;
6202 +
6203 + slot = current_insn.next_slot++;
6204 + current_insn.field_value[slot].value = crid;
6205 +}
6206 +
6207 +static void
6208 +parse_number(const struct avr32_operand *op, char *str,
6209 + int opindex ATTRIBUTE_UNUSED)
6210 +{
6211 + expressionS exp;
6212 + int slot;
6213 + char *save;
6214 +
6215 + save = input_line_pointer;
6216 + input_line_pointer = str;
6217 + expression(&exp);
6218 + input_line_pointer = save;
6219 +
6220 + slot = current_insn.next_slot++;
6221 + current_insn.field_value[slot].align_order = op->align_order;
6222 +
6223 + if (exp.X_op == O_constant)
6224 + current_insn.field_value[slot].value = exp.X_add_number;
6225 + else
6226 + as_bad(_("invalid numeric expression `%s'"), str);
6227 +}
6228 +
6229 +static void
6230 +parse_reglist8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6231 + char *str, int opindex ATTRIBUTE_UNUSED)
6232 +{
6233 + unsigned long regmask;
6234 + unsigned long value = 0;
6235 + int slot;
6236 + char *tail;
6237 +
6238 + regmask = avr32_parse_reglist(str, &tail);
6239 + if (*tail)
6240 + as_bad(_("invalid register list `%s'"), str);
6241 + else
6242 + {
6243 + if (avr32_make_regmask8(regmask, &value))
6244 + as_bad(_("register list `%s' doesn't fit"), str);
6245 + }
6246 +
6247 + slot = current_insn.next_slot++;
6248 + current_insn.field_value[slot].value = value;
6249 +}
6250 +
6251 +static int
6252 +parse_reglist_tail(char *str, unsigned long regmask)
6253 +{
6254 + expressionS exp;
6255 + char *save, *p, c;
6256 + int regid;
6257 +
6258 + for (p = str + 1; *p; p++)
6259 + if (*p == '=')
6260 + break;
6261 +
6262 + if (!*p)
6263 + {
6264 + as_bad(_("invalid register list `%s'"), str);
6265 + return -2;
6266 + }
6267 +
6268 + c = *p, *p = 0;
6269 + regid = avr32_parse_intreg(str);
6270 + *p = c;
6271 +
6272 + if (regid != 12)
6273 + {
6274 + as_bad(_("invalid register list `%s'"), str);
6275 + return -2;
6276 + }
6277 +
6278 + /* If we have an assignment, we must pop PC and we must _not_
6279 + pop LR or R12 */
6280 + if (!(regmask & (1 << AVR32_REG_PC)))
6281 + {
6282 + as_bad(_("return value specified for non-return instruction"));
6283 + return -2;
6284 + }
6285 + else if (regmask & ((1 << AVR32_REG_R12) | (1 << AVR32_REG_LR)))
6286 + {
6287 + as_bad(_("can't pop LR or R12 when specifying return value"));
6288 + return -2;
6289 + }
6290 +
6291 + save = input_line_pointer;
6292 + input_line_pointer = p + 1;
6293 + expression(&exp);
6294 + input_line_pointer = save;
6295 +
6296 + if (exp.X_op != O_constant
6297 + || exp.X_add_number < -1
6298 + || exp.X_add_number > 1)
6299 + {
6300 + as_bad(_("invalid return value `%s'"), str);
6301 + return -2;
6302 + }
6303 +
6304 + return exp.X_add_number;
6305 +}
6306 +
6307 +static void
6308 +parse_reglist9(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6309 + char *str, int opindex ATTRIBUTE_UNUSED)
6310 +{
6311 + unsigned long regmask;
6312 + unsigned long value = 0, kbit = 0;
6313 + int slot;
6314 + char *tail;
6315 +
6316 + regmask = avr32_parse_reglist(str, &tail);
6317 + /* printf("parsed reglist16: %04lx, tail: `%s'\n", regmask, tail); */
6318 + if (*tail)
6319 + {
6320 + int retval;
6321 +
6322 + retval = parse_reglist_tail(tail, regmask);
6323 +
6324 + switch (retval)
6325 + {
6326 + case -1:
6327 + regmask |= 1 << AVR32_REG_LR;
6328 + break;
6329 + case 0:
6330 + break;
6331 + case 1:
6332 + regmask |= 1 << AVR32_REG_R12;
6333 + break;
6334 + default:
6335 + break;
6336 + }
6337 +
6338 + kbit = 1;
6339 + }
6340 +
6341 + if (avr32_make_regmask8(regmask, &value))
6342 + as_bad(_("register list `%s' doesn't fit"), str);
6343 +
6344 +
6345 + slot = current_insn.next_slot++;
6346 + current_insn.field_value[slot].value = (value << 1) | kbit;
6347 +}
6348 +
6349 +static void
6350 +parse_reglist16(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6351 + char *str, int opindex ATTRIBUTE_UNUSED)
6352 +{
6353 + unsigned long regmask;
6354 + int slot;
6355 + char *tail;
6356 +
6357 + regmask = avr32_parse_reglist(str, &tail);
6358 + if (*tail)
6359 + as_bad(_("invalid register list `%s'"), str);
6360 +
6361 + slot = current_insn.next_slot++;
6362 + current_insn.field_value[slot].value = regmask;
6363 +}
6364 +
6365 +static void
6366 +parse_reglist_ldm(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6367 + char *str, int opindex ATTRIBUTE_UNUSED)
6368 +{
6369 + unsigned long regmask;
6370 + int slot, rp, w_bit = 0;
6371 + char *tail, *p, c;
6372 +
6373 + for (p = str; *p && *p != ','; p++)
6374 + if (*p == '+')
6375 + break;
6376 +
6377 + c = *p, *p = 0;
6378 + rp = avr32_parse_intreg(str);
6379 + *p = c;
6380 + if (rp < 0)
6381 + {
6382 + as_bad(_("invalid destination register in `%s'"), str);
6383 + return;
6384 + }
6385 +
6386 + if (p[0] == '+' && p[1] == '+')
6387 + {
6388 + w_bit = 1;
6389 + p += 2;
6390 + }
6391 +
6392 + if (*p != ',')
6393 + {
6394 + as_bad(_("expected `,' after destination register in `%s'"), str);
6395 + return;
6396 + }
6397 +
6398 + str = p + 1;
6399 + regmask = avr32_parse_reglist(str, &tail);
6400 + if (*tail)
6401 + {
6402 + int retval;
6403 +
6404 + if (rp != AVR32_REG_SP)
6405 + {
6406 + as_bad(_("junk at end of line: `%s'"), tail);
6407 + return;
6408 + }
6409 +
6410 + rp = AVR32_REG_PC;
6411 +
6412 + retval = parse_reglist_tail(tail, regmask);
6413 +
6414 + switch (retval)
6415 + {
6416 + case -1:
6417 + regmask |= 1 << AVR32_REG_LR;
6418 + break;
6419 + case 0:
6420 + break;
6421 + case 1:
6422 + regmask |= 1 << AVR32_REG_R12;
6423 + break;
6424 + default:
6425 + return;
6426 + }
6427 + }
6428 +
6429 + slot = current_insn.next_slot++;
6430 + current_insn.field_value[slot].value = rp;
6431 + slot = current_insn.next_slot++;
6432 + current_insn.field_value[slot].value = w_bit;
6433 + slot = current_insn.next_slot++;
6434 + current_insn.field_value[slot].value = regmask;
6435 +}
6436 +
6437 +static void
6438 +parse_reglist_cp8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6439 + char *str, int opindex ATTRIBUTE_UNUSED)
6440 +{
6441 + unsigned long regmask;
6442 + int slot, h_bit = 0;
6443 + char *tail;
6444 +
6445 + regmask = avr32_parse_cpreglist(str, &tail);
6446 + if (*tail)
6447 + as_bad(_("junk at end of line: `%s'"), tail);
6448 + else if (regmask & 0xffUL)
6449 + {
6450 + if (regmask & 0xff00UL)
6451 + as_bad(_("register list `%s' doesn't fit"), str);
6452 + regmask &= 0xff;
6453 + }
6454 + else if (regmask & 0xff00UL)
6455 + {
6456 + regmask >>= 8;
6457 + h_bit = 1;
6458 + }
6459 + else
6460 + as_warn(_("register list is empty"));
6461 +
6462 + slot = current_insn.next_slot++;
6463 + current_insn.field_value[slot].value = regmask;
6464 + slot = current_insn.next_slot++;
6465 + current_insn.field_value[slot].value = h_bit;
6466 +}
6467 +
6468 +static void
6469 +parse_reglist_cpd8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6470 + char *str, int opindex ATTRIBUTE_UNUSED)
6471 +{
6472 + unsigned long regmask, regmask_d = 0;
6473 + int slot, i;
6474 + char *tail;
6475 +
6476 + regmask = avr32_parse_cpreglist(str, &tail);
6477 + if (*tail)
6478 + as_bad(_("junk at end of line: `%s'"), tail);
6479 +
6480 + for (i = 0; i < 8; i++)
6481 + {
6482 + if (regmask & 1)
6483 + {
6484 + if (!(regmask & 2))
6485 + {
6486 + as_bad(_("register list `%s' doesn't fit"), str);
6487 + break;
6488 + }
6489 + regmask_d |= 1 << i;
6490 + }
6491 + else if (regmask & 2)
6492 + {
6493 + as_bad(_("register list `%s' doesn't fit"), str);
6494 + break;
6495 + }
6496 +
6497 + regmask >>= 2;
6498 + }
6499 +
6500 + slot = current_insn.next_slot++;
6501 + current_insn.field_value[slot].value = regmask_d;
6502 +}
6503 +
6504 +static void
6505 +parse_retval(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6506 + char *str, int opindex ATTRIBUTE_UNUSED)
6507 +{
6508 + int regid, slot;
6509 +
6510 + regid = avr32_parse_intreg(str);
6511 + if (regid < 0)
6512 + {
6513 + expressionS exp;
6514 + char *save;
6515 +
6516 + regid = 0;
6517 +
6518 + save = input_line_pointer;
6519 + input_line_pointer = str;
6520 + expression(&exp);
6521 + input_line_pointer = save;
6522 +
6523 + if (exp.X_op != O_constant)
6524 + as_bad(_("invalid return value `%s'"), str);
6525 + else
6526 + switch (exp.X_add_number)
6527 + {
6528 + case -1:
6529 + regid = AVR32_REG_LR;
6530 + break;
6531 + case 0:
6532 + regid = AVR32_REG_SP;
6533 + break;
6534 + case 1:
6535 + regid = AVR32_REG_PC;
6536 + break;
6537 + default:
6538 + as_bad(_("invalid return value `%s'"), str);
6539 + break;
6540 + }
6541 + }
6542 +
6543 + slot = current_insn.next_slot++;
6544 + current_insn.field_value[slot].value = regid;
6545 +}
6546 +
6547 +#define parse_mcall parse_intreg_disp
6548 +
6549 +static void
6550 +parse_jospinc(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6551 + char *str, int opindex ATTRIBUTE_UNUSED)
6552 +{
6553 + expressionS exp;
6554 + int slot;
6555 + char *save;
6556 +
6557 + save = input_line_pointer;
6558 + input_line_pointer = str;
6559 + expression(&exp);
6560 + input_line_pointer = save;
6561 +
6562 + slot = current_insn.next_slot++;
6563 +
6564 + if (exp.X_op == O_constant)
6565 + {
6566 + if (exp.X_add_number > 0)
6567 + exp.X_add_number--;
6568 + current_insn.field_value[slot].value = exp.X_add_number;
6569 + }
6570 + else
6571 + as_bad(_("invalid numeric expression `%s'"), str);
6572 +}
6573 +
6574 +#define parse_coh parse_nothing
6575 +
6576 +static void
6577 +parse_fpreg(const struct avr32_operand *op,
6578 + char *str, int opindex ATTRIBUTE_UNUSED)
6579 +{
6580 + unsigned long regid;
6581 + int slot;
6582 +
6583 + regid = strtoul(str + 2, NULL, 10);
6584 +
6585 + if ((regid >= 16) || (regid & ((1 << op->align_order) - 1)))
6586 + as_bad(_("invalid floating-point register `%s'"), str);
6587 +
6588 + slot = current_insn.next_slot++;
6589 + current_insn.field_value[slot].value = regid;
6590 + current_insn.field_value[slot].align_order = op->align_order;
6591 +}
6592 +
6593 +static void
6594 +parse_picoreg(const struct avr32_operand *op,
6595 + char *str, int opindex ATTRIBUTE_UNUSED)
6596 +{
6597 + unsigned long regid;
6598 + int slot;
6599 +
6600 + regid = avr32_parse_picoreg(str);
6601 + if (regid & ((1 << op->align_order) - 1))
6602 + as_bad(_("invalid double-word PiCo register `%s'"), str);
6603 +
6604 + slot = current_insn.next_slot++;
6605 + current_insn.field_value[slot].value = regid;
6606 + current_insn.field_value[slot].align_order = op->align_order;
6607 +}
6608 +
6609 +static void
6610 +parse_pico_reglist_w(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6611 + char *str, int opindex ATTRIBUTE_UNUSED)
6612 +{
6613 + unsigned long regmask;
6614 + int slot, h_bit = 0;
6615 + char *tail;
6616 +
6617 + regmask = avr32_parse_pico_reglist(str, &tail);
6618 + if (*tail)
6619 + as_bad(_("junk at end of line: `%s'"), tail);
6620 +
6621 + if (regmask & 0x00ffUL)
6622 + {
6623 + if (regmask & 0xff00UL)
6624 + as_bad(_("register list `%s' doesn't fit"), str);
6625 + regmask &= 0x00ffUL;
6626 + }
6627 + else if (regmask & 0xff00UL)
6628 + {
6629 + regmask >>= 8;
6630 + h_bit = 1;
6631 + }
6632 + else
6633 + as_warn(_("register list is empty"));
6634 +
6635 + slot = current_insn.next_slot++;
6636 + current_insn.field_value[slot].value = regmask;
6637 + slot = current_insn.next_slot++;
6638 + current_insn.field_value[slot].value = h_bit;
6639 +}
6640 +
6641 +static void
6642 +parse_pico_reglist_d(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6643 + char *str, int opindex ATTRIBUTE_UNUSED)
6644 +{
6645 + unsigned long regmask, regmask_d = 0;
6646 + int slot, i;
6647 + char *tail;
6648 +
6649 + regmask = avr32_parse_pico_reglist(str, &tail);
6650 + if (*tail)
6651 + as_bad(_("junk at end of line: `%s'"), tail);
6652 +
6653 + for (i = 0; i < 8; i++)
6654 + {
6655 + if (regmask & 1)
6656 + {
6657 + if (!(regmask & 2))
6658 + {
6659 + as_bad(_("register list `%s' doesn't fit"), str);
6660 + break;
6661 + }
6662 + regmask_d |= 1 << i;
6663 + }
6664 + else if (regmask & 2)
6665 + {
6666 + as_bad(_("register list `%s' doesn't fit"), str);
6667 + break;
6668 + }
6669 +
6670 + regmask >>= 2;
6671 + }
6672 +
6673 + slot = current_insn.next_slot++;
6674 + current_insn.field_value[slot].value = regmask_d;
6675 +}
6676 +
6677 +static void
6678 +parse_pico_in(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6679 + char *str, int opindex ATTRIBUTE_UNUSED)
6680 +{
6681 + unsigned long regid;
6682 + int slot;
6683 +
6684 + regid = strtoul(str + 2, NULL, 10);
6685 +
6686 + if (regid >= 12)
6687 + as_bad(_("invalid PiCo IN register `%s'"), str);
6688 +
6689 + slot = current_insn.next_slot++;
6690 + current_insn.field_value[slot].value = regid;
6691 + current_insn.field_value[slot].align_order = 0;
6692 +}
6693 +
6694 +#define parse_pico_out0 parse_nothing
6695 +#define parse_pico_out1 parse_nothing
6696 +#define parse_pico_out2 parse_nothing
6697 +#define parse_pico_out3 parse_nothing
6698 +
6699 +#define OP(name, sgn, pcrel, align, func) \
6700 + { AVR32_OPERAND_##name, sgn, pcrel, align, match_##func, parse_##func }
6701 +
6702 +struct avr32_operand avr32_operand_table[] = {
6703 + OP(INTREG, 0, 0, 0, intreg),
6704 + OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
6705 + OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
6706 + OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
6707 + OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
6708 + OP(INTREG_BSEL, 0, 0, 0, intreg_part),
6709 + OP(INTREG_HSEL, 0, 0, 1, intreg_part),
6710 + OP(INTREG_SDISP, 1, 0, 0, intreg_disp),
6711 + OP(INTREG_SDISP_H, 1, 0, 1, intreg_disp),
6712 + OP(INTREG_SDISP_W, 1, 0, 2, intreg_disp),
6713 + OP(INTREG_UDISP, 0, 0, 0, intreg_disp),
6714 + OP(INTREG_UDISP_H, 0, 0, 1, intreg_disp),
6715 + OP(INTREG_UDISP_W, 0, 0, 2, intreg_disp),
6716 + OP(INTREG_INDEX, 0, 0, 0, intreg_index),
6717 + OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
6718 + OP(DWREG, 0, 0, 1, intreg),
6719 + OP(PC_UDISP_W, 0, 1, 2, pc_disp),
6720 + OP(SP, 0, 0, 0, sp),
6721 + OP(SP_UDISP_W, 0, 0, 2, sp_disp),
6722 + OP(CPNO, 0, 0, 0, cpno),
6723 + OP(CPREG, 0, 0, 0, cpreg),
6724 + OP(CPREG_D, 0, 0, 1, cpreg),
6725 + OP(UNSIGNED_CONST, 0, 0, 0, const),
6726 + OP(UNSIGNED_CONST_W, 0, 0, 2, const),
6727 + OP(SIGNED_CONST, 1, 0, 0, const),
6728 + OP(SIGNED_CONST_W, 1, 0, 2, const),
6729 + OP(JMPLABEL, 1, 1, 1, jmplabel),
6730 + OP(UNSIGNED_NUMBER, 0, 0, 0, number),
6731 + OP(UNSIGNED_NUMBER_W, 0, 0, 2, number),
6732 + OP(REGLIST8, 0, 0, 0, reglist8),
6733 + OP(REGLIST9, 0, 0, 0, reglist9),
6734 + OP(REGLIST16, 0, 0, 0, reglist16),
6735 + OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
6736 + OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
6737 + OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
6738 + OP(RETVAL, 0, 0, 0, retval),
6739 + OP(MCALL, 1, 0, 2, mcall),
6740 + OP(JOSPINC, 0, 0, 0, jospinc),
6741 + OP(COH, 0, 0, 0, coh),
6742 + OP(FPREG_S, 0, 0, 0, fpreg),
6743 + OP(FPREG_D, 0, 0, 1, fpreg),
6744 + OP(PICO_REG_W, 0, 0, 0, picoreg),
6745 + OP(PICO_REG_D, 0, 0, 1, picoreg),
6746 + OP(PICO_REGLIST_W, 0, 0, 0, pico_reglist_w),
6747 + OP(PICO_REGLIST_D, 0, 0, 0, pico_reglist_d),
6748 + OP(PICO_IN, 0, 0, 0, pico_in),
6749 + OP(PICO_OUT0, 0, 0, 0, pico_out0),
6750 + OP(PICO_OUT1, 0, 0, 0, pico_out1),
6751 + OP(PICO_OUT2, 0, 0, 0, pico_out2),
6752 + OP(PICO_OUT3, 0, 0, 0, pico_out3),
6753 +};
6754 +
6755 +symbolS *
6756 +md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
6757 +{
6758 + pr_debug("md_undefined_symbol: %s\n", name);
6759 + return 0;
6760 +}
6761 +
6762 +struct avr32_relax_type
6763 +{
6764 + long lower_bound;
6765 + long upper_bound;
6766 + unsigned char align;
6767 + unsigned char length;
6768 + signed short next;
6769 +};
6770 +
6771 +#define EMPTY { 0, 0, 0, 0, -1 }
6772 +#define C(lower, upper, align, next) \
6773 + { (lower), (upper), (align), 2, AVR32_OPC_##next }
6774 +#define E(lower, upper, align) \
6775 + { (lower), (upper), (align), 4, -1 }
6776 +
6777 +static const struct avr32_relax_type avr32_relax_table[] =
6778 + {
6779 + /* 0 */
6780 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6781 + EMPTY, EMPTY, EMPTY,
6782 + E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0),
6783 + EMPTY,
6784 + /* 16 */
6785 + EMPTY, EMPTY, EMPTY, EMPTY,
6786 +
6787 + C(-256, 254, 1, BREQ2), C(-256, 254, 1, BRNE2),
6788 + C(-256, 254, 1, BRCC2), C(-256, 254, 1, BRCS2),
6789 + C(-256, 254, 1, BRGE2), C(-256, 254, 1, BRLT2),
6790 + C(-256, 254, 1, BRMI2), C(-256, 254, 1, BRPL2),
6791 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6792 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6793 + /* 32 */
6794 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6795 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6796 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6797 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6798 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6799 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6800 +
6801 + EMPTY, EMPTY, EMPTY, EMPTY,
6802 + /* 48 */
6803 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6804 + EMPTY, EMPTY, EMPTY,
6805 +
6806 + C(-32, 31, 0, CP_W3), E(-1048576, 1048575, 0),
6807 +
6808 + EMPTY, EMPTY, EMPTY,
6809 + /* 64: csrfcz */
6810 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6811 + E(0, 65535, 0), E(0, 65535, 0),
6812 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6813 + E(-32768, 32767, 0),
6814 + /* 80: LD_SB2 */
6815 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6816 +
6817 + C(0, 7, 0, LD_UB4), E(-32768, 32767, 0),
6818 +
6819 + EMPTY,
6820 + EMPTY, EMPTY,
6821 +
6822 + C(0, 14, 1, LD_SH4), E(-32768, 32767, 0),
6823 +
6824 + EMPTY, EMPTY, EMPTY,
6825 +
6826 + C(0, 14, 1, LD_UH4),
6827 +
6828 + /* 96: LD_UH4 */
6829 + E(-32768, 32767, 0),
6830 +
6831 + EMPTY, EMPTY, EMPTY, EMPTY,
6832 +
6833 + C(0, 124, 2, LD_W4), E(-32768, 32767, 0),
6834 +
6835 + E(0, 1020, 2), /* LDC_D1 */
6836 + EMPTY, EMPTY,
6837 + E(0, 1020, 2), /* LDC_W1 */
6838 + EMPTY, EMPTY,
6839 + E(0, 16380, 2), /* LDC0_D */
6840 + E(0, 16380, 2), /* LDC0_W */
6841 + EMPTY,
6842 +
6843 + /* 112: LDCM_D_PU */
6844 + EMPTY, EMPTY, EMPTY,
6845 +
6846 + C(0, 508, 2, LDDPC_EXT), E(-32768, 32767, 0),
6847 +
6848 + EMPTY,EMPTY, EMPTY,
6849 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6850 +
6851 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6852 + /* 134: MACHH_W */
6853 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6854 + E(-131072, 131068, 2), /* MCALL */
6855 + E(0, 1020, 2), /* MFDR */
6856 + E(0, 1020, 2), /* MFSR */
6857 + EMPTY, EMPTY,
6858 +
6859 + C(-128, 127, 0, MOV2), E(-1048576, 1048575, 0),
6860 +
6861 + EMPTY, EMPTY, EMPTY,
6862 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6863 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6864 +
6865 + E(-128, 127, 0), /* MOVEQ2 */
6866 + E(-128, 127, 0), /* MOVNE2 */
6867 + E(-128, 127, 0), /* MOVCC2 */
6868 + E(-128, 127, 0), /* 166: MOVCS2 */
6869 + E(-128, 127, 0), /* MOVGE2 */
6870 + E(-128, 127, 0), /* MOVLT2 */
6871 + E(-128, 127, 0), /* MOVMI2 */
6872 + E(-128, 127, 0), /* MOVPL2 */
6873 + E(-128, 127, 0), /* MOVLS2 */
6874 + E(-128, 127, 0), /* MOVGT2 */
6875 + E(-128, 127, 0), /* MOVLE2 */
6876 + E(-128, 127, 0), /* MOVHI2 */
6877 + E(-128, 127, 0), /* MOVVS2 */
6878 + E(-128, 127, 0), /* MOVVC2 */
6879 + E(-128, 127, 0), /* MOVQS2 */
6880 + E(-128, 127, 0), /* MOVAL2 */
6881 +
6882 + E(0, 1020, 2), /* MTDR */
6883 + E(0, 1020, 2), /* MTSR */
6884 + EMPTY,
6885 + EMPTY,
6886 + E(-128, 127, 0), /* MUL3 */
6887 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6888 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6889 + /* 198: MVCR_W */
6890 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6891 + E(0, 65535, 0), E(0, 65535, 0),
6892 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6893 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6894 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6895 + /* 230: PASR_H */
6896 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6897 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6898 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6899 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6900 + /* 262: PUNPCKSB_H */
6901 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6902 +
6903 + C(-1024, 1022, 1, RCALL2), E(-2097152, 2097150, 1),
6904 +
6905 + EMPTY,
6906 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6907 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6908 + EMPTY, EMPTY, EMPTY,
6909 +
6910 + C(-1024, 1022, 1, BRAL),
6911 +
6912 + EMPTY, EMPTY, EMPTY,
6913 + E(-128, 127, 0), /* RSUB2 */
6914 + /* 294: SATADD_H */
6915 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6916 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6917 + E(0, 255, 0), /* SLEEP */
6918 + EMPTY, EMPTY,
6919 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6920 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6921 + /* 326: ST_B2 */
6922 + EMPTY, EMPTY,
6923 + C(0, 7, 0, ST_B4), E(-32768, 32767, 0),
6924 + EMPTY, EMPTY, EMPTY, EMPTY,
6925 + E(-32768, 32767, 0),
6926 + EMPTY, EMPTY, EMPTY,
6927 + C(0, 14, 1, ST_H4), E(-32768, 32767, 0),
6928 + EMPTY, EMPTY,
6929 + EMPTY,
6930 + C(0, 60, 2, ST_W4), E(-32768, 32767, 0),
6931 + E(0, 1020, 2), /* STC_D1 */
6932 + EMPTY, EMPTY,
6933 + E(0, 1020, 2), /* STC_W1 */
6934 + EMPTY, EMPTY,
6935 + E(0, 16380, 2), /* STC0_D */
6936 + E(0, 16380, 2), /* STC0_W */
6937 +
6938 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6939 + /* 358: STDSP */
6940 + EMPTY, EMPTY,
6941 + E(0, 1020, 2), /* STHH_W1 */
6942 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6943 + EMPTY, EMPTY, EMPTY,
6944 + E(-32768, 32767, 0),
6945 + C(-512, 508, 2, SUB4),
6946 + C(-128, 127, 0, SUB4), E(-1048576, 1048576, 0),
6947 + /* SUB{cond} */
6948 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6949 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6950 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6951 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6952 + /* SUBF{cond} */
6953 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6954 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6955 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6956 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6957 + EMPTY,
6958 +
6959 + /* 406: SWAP_B */
6960 + EMPTY, EMPTY, EMPTY,
6961 + E(0, 255, 0), /* SYNC */
6962 + EMPTY, EMPTY, EMPTY, EMPTY,
6963 + /* 414: TST */
6964 + EMPTY, EMPTY, E(-65536, 65535, 2), E(-65536, 65535, 2), E(-65536, 65535, 2), EMPTY, EMPTY, EMPTY,
6965 + /* 422: RSUB{cond} */
6966 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6967 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6968 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6969 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6970 + /* 436: ADD{cond} */
6971 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6972 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6973 + /* 454: SUB{cond} */
6974 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6975 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6976 + /* 472: AND{cond} */
6977 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6978 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6979 + /* 486: OR{cond} */
6980 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6981 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6982 + /* 502: EOR{cond} */
6983 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6984 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6985 + /* 518: LD.w{cond} */
6986 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6987 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6988 + /* 534: LD.sh{cond} */
6989 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6990 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6991 + /* 550: LD.uh{cond} */
6992 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6993 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6994 + /* 566: LD.sb{cond} */
6995 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6996 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6997 + /* 582: LD.ub{cond} */
6998 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6999 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
7000 + /* 596: ST.w{cond} */
7001 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
7002 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
7003 + /* 614: ST.h{cond} */
7004 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
7005 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
7006 + /* 630: ST.b{cond} */
7007 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
7008 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
7009 + /* 646: movh */
7010 + E(0, 65535, 0)
7011 + };
7012 +
7013 +#undef E
7014 +#undef C
7015 +#undef EMPTY
7016 +
7017 +#define AVR32_RS_NONE (-1)
7018 +
7019 +#define avr32_rs_size(state) (avr32_relax_table[(state)].length)
7020 +#define avr32_rs_align(state) (avr32_relax_table[(state)].align)
7021 +#define relax_more(state) (avr32_relax_table[(state)].next)
7022 +
7023 +#define opc_initial_substate(opc) ((opc)->id)
7024 +
7025 +static int need_relax(int subtype, offsetT distance)
7026 +{
7027 + offsetT upper_bound, lower_bound;
7028 +
7029 + upper_bound = avr32_relax_table[subtype].upper_bound;
7030 + lower_bound = avr32_relax_table[subtype].lower_bound;
7031 +
7032 + if (distance & ((1 << avr32_rs_align(subtype)) - 1))
7033 + return 1;
7034 + if ((distance > upper_bound) || (distance < lower_bound))
7035 + return 1;
7036 +
7037 + return 0;
7038 +}
7039 +
7040 +enum {
7041 + LDA_SUBTYPE_MOV1,
7042 + LDA_SUBTYPE_MOV2,
7043 + LDA_SUBTYPE_SUB,
7044 + LDA_SUBTYPE_LDDPC,
7045 + LDA_SUBTYPE_LDW,
7046 + LDA_SUBTYPE_GOTLOAD,
7047 + LDA_SUBTYPE_GOTLOAD_LARGE,
7048 +};
7049 +
7050 +enum {
7051 + CALL_SUBTYPE_RCALL1,
7052 + CALL_SUBTYPE_RCALL2,
7053 + CALL_SUBTYPE_MCALL_CP,
7054 + CALL_SUBTYPE_MCALL_GOT,
7055 + CALL_SUBTYPE_MCALL_LARGE,
7056 +};
7057 +
7058 +#define LDA_INITIAL_SIZE (avr32_pic ? 4 : 2)
7059 +#define CALL_INITIAL_SIZE 2
7060 +
7061 +#define need_reloc(sym, seg, pcrel) \
7062 + (!(S_IS_DEFINED(sym) \
7063 + && ((pcrel && S_GET_SEGMENT(sym) == seg) \
7064 + || (!pcrel && S_GET_SEGMENT(sym) == absolute_section))) \
7065 + || S_FORCE_RELOC(sym, 1))
7066 +
7067 +/* Return an initial guess of the length by which a fragment must grow to
7068 + hold a branch to reach its destination.
7069 + Also updates fr_type/fr_subtype as necessary.
7070 +
7071 + Called just before doing relaxation.
7072 + Any symbol that is now undefined will not become defined.
7073 + The guess for fr_var is ACTUALLY the growth beyond fr_fix.
7074 + Whatever we do to grow fr_fix or fr_var contributes to our returned value.
7075 + Although it may not be explicit in the frag, pretend fr_var starts with a
7076 + 0 value. */
7077 +
7078 +static int
7079 +avr32_default_estimate_size_before_relax (fragS *fragP, segT segment)
7080 +{
7081 + int growth = 0;
7082 +
7083 + assert(fragP);
7084 + assert(fragP->fr_symbol);
7085 +
7086 + if (fragP->tc_frag_data.force_extended
7087 + || need_reloc(fragP->fr_symbol, segment, fragP->tc_frag_data.pcrel))
7088 + {
7089 + int largest_state = fragP->fr_subtype;
7090 + while (relax_more(largest_state) != AVR32_RS_NONE)
7091 + largest_state = relax_more(largest_state);
7092 + growth = avr32_rs_size(largest_state) - fragP->fr_var;
7093 + }
7094 + else
7095 + {
7096 + growth = avr32_rs_size(fragP->fr_subtype) - fragP->fr_var;
7097 + }
7098 +
7099 + pr_debug("%s:%d: md_estimate_size_before_relax: %d\n",
7100 + fragP->fr_file, fragP->fr_line, growth);
7101 +
7102 + return growth;
7103 +}
7104 +
7105 +static int
7106 +avr32_lda_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
7107 +{
7108 + return fragP->fr_var - LDA_INITIAL_SIZE;
7109 +}
7110 +
7111 +static int
7112 +avr32_call_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
7113 +{
7114 + return fragP->fr_var - CALL_INITIAL_SIZE;
7115 +}
7116 +
7117 +static int
7118 +avr32_cpool_estimate_size_before_relax(fragS *fragP,
7119 + segT segment ATTRIBUTE_UNUSED)
7120 +{
7121 + return fragP->fr_var;
7122 +}
7123 +
7124 +/* This macro may be defined to relax a frag. GAS will call this with the
7125 + * segment, the frag, and the change in size of all previous frags;
7126 + * md_relax_frag should return the change in size of the frag. */
7127 +static long
7128 +avr32_default_relax_frag (segT segment, fragS *fragP, long stretch)
7129 +{
7130 + int state, next_state;
7131 + symbolS *symbolP; /* The target symbol */
7132 + long growth = 0;
7133 +
7134 + state = next_state = fragP->fr_subtype;
7135 +
7136 + symbolP = fragP->fr_symbol;
7137 +
7138 + if (fragP->tc_frag_data.force_extended
7139 + || need_reloc(symbolP, segment, fragP->tc_frag_data.pcrel))
7140 + {
7141 + /* Symbol must be resolved by the linker. Emit the largest
7142 + possible opcode. */
7143 + while (relax_more(next_state) != AVR32_RS_NONE)
7144 + next_state = relax_more(next_state);
7145 + }
7146 + else
7147 + {
7148 + addressT address; /* The address of fragP */
7149 + addressT target; /* The address of the target symbol */
7150 + offsetT distance; /* The distance between the insn and the symbol */
7151 + fragS *sym_frag;
7152 +
7153 + address = fragP->fr_address;
7154 + target = fragP->fr_offset;
7155 + symbolP = fragP->fr_symbol;
7156 + sym_frag = symbol_get_frag(symbolP);
7157 +
7158 + address += fragP->fr_fix - fragP->fr_var;
7159 + target += S_GET_VALUE(symbolP);
7160 +
7161 + if (stretch != 0
7162 + && sym_frag->relax_marker != fragP->relax_marker
7163 + && S_GET_SEGMENT(symbolP) == segment)
7164 + /* if it was correctly aligned before, make sure it stays aligned */
7165 + target += stretch & (~0UL << avr32_rs_align(state));
7166 +
7167 + if (fragP->tc_frag_data.pcrel)
7168 + distance = target - (address & (~0UL << avr32_rs_align(state)));
7169 + else
7170 + distance = target;
7171 +
7172 + pr_debug("%s:%d: relax more? 0x%x - 0x%x = 0x%x (%d), align %d\n",
7173 + fragP->fr_file, fragP->fr_line, target, address,
7174 + distance, distance, avr32_rs_align(state));
7175 +
7176 + if (need_relax(state, distance))
7177 + {
7178 + if (relax_more(state) != AVR32_RS_NONE)
7179 + next_state = relax_more(state);
7180 + pr_debug("%s:%d: relax more %d -> %d (%d - %d, align %d)\n",
7181 + fragP->fr_file, fragP->fr_line, state, next_state,
7182 + target, address, avr32_rs_align(state));
7183 + }
7184 + }
7185 +
7186 + growth = avr32_rs_size(next_state) - avr32_rs_size(state);
7187 + fragP->fr_subtype = next_state;
7188 +
7189 + pr_debug("%s:%d: md_relax_frag: growth=%d, subtype=%d, opc=0x%08lx\n",
7190 + fragP->fr_file, fragP->fr_line, growth, fragP->fr_subtype,
7191 + avr32_opc_table[next_state].value);
7192 +
7193 + return growth;
7194 +}
7195 +
7196 +static long
7197 +avr32_lda_relax_frag(segT segment, fragS *fragP, long stretch)
7198 +{
7199 + struct cpool *pool= NULL;
7200 + unsigned int entry = 0;
7201 + addressT address, target;
7202 + offsetT distance;
7203 + symbolS *symbolP;
7204 + fragS *sym_frag;
7205 + long old_size, new_size;
7206 +
7207 + symbolP = fragP->fr_symbol;
7208 + old_size = fragP->fr_var;
7209 + if (!avr32_pic)
7210 + {
7211 + pool = fragP->tc_frag_data.pool;
7212 + entry = fragP->tc_frag_data.pool_entry;
7213 + }
7214 +
7215 + address = fragP->fr_address;
7216 + address += fragP->fr_fix - LDA_INITIAL_SIZE;
7217 +
7218 + if (!S_IS_DEFINED(symbolP) || S_FORCE_RELOC(symbolP, 1))
7219 + goto relax_max;
7220 +
7221 + target = fragP->fr_offset;
7222 + sym_frag = symbol_get_frag(symbolP);
7223 + target += S_GET_VALUE(symbolP);
7224 +
7225 + if (sym_frag->relax_marker != fragP->relax_marker
7226 + && S_GET_SEGMENT(symbolP) == segment)
7227 + target += stretch;
7228 +
7229 + distance = target - address;
7230 +
7231 + pr_debug("lda_relax_frag: target: %d, address: %d, var: %d\n",
7232 + target, address, fragP->fr_var);
7233 +
7234 + if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
7235 + && target <= 127 && (offsetT)target >= -128)
7236 + {
7237 + if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
7238 + || fragP->fr_subtype == LDA_SUBTYPE_LDW)
7239 + pool->literals[entry].refcount--;
7240 + new_size = 2;
7241 + fragP->fr_subtype = LDA_SUBTYPE_MOV1;
7242 + }
7243 + else if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
7244 + && target <= 1048575 && (offsetT)target >= -1048576)
7245 + {
7246 + if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
7247 + || fragP->fr_subtype == LDA_SUBTYPE_LDW)
7248 + pool->literals[entry].refcount--;
7249 + new_size = 4;
7250 + fragP->fr_subtype = LDA_SUBTYPE_MOV2;
7251 + }
7252 + else if (!linkrelax && S_GET_SEGMENT(symbolP) == segment
7253 + /* the field will be negated, so this is really -(-32768)
7254 + and -(32767) */
7255 + && distance <= 32768 && distance >= -32767)
7256 + {
7257 + if (!avr32_pic
7258 + && (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
7259 + || fragP->fr_subtype == LDA_SUBTYPE_LDW))
7260 + pool->literals[entry].refcount--;
7261 + new_size = 4;
7262 + fragP->fr_subtype = LDA_SUBTYPE_SUB;
7263 + }
7264 + else
7265 + {
7266 + relax_max:
7267 + if (avr32_pic)
7268 + {
7269 + if (linkrelax)
7270 + {
7271 + new_size = 8;
7272 + fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD_LARGE;
7273 + }
7274 + else
7275 + {
7276 + new_size = 4;
7277 + fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD;
7278 + }
7279 + }
7280 + else
7281 + {
7282 + if (fragP->fr_subtype != LDA_SUBTYPE_LDDPC
7283 + && fragP->fr_subtype != LDA_SUBTYPE_LDW)
7284 + pool->literals[entry].refcount++;
7285 +
7286 + sym_frag = symbol_get_frag(pool->symbol);
7287 + target = (sym_frag->fr_address + sym_frag->fr_fix
7288 + + pool->padding + pool->literals[entry].offset);
7289 +
7290 + pr_debug("cpool sym address: 0x%lx\n",
7291 + sym_frag->fr_address + sym_frag->fr_fix);
7292 +
7293 + know(pool->section == segment);
7294 +
7295 + if (sym_frag->relax_marker != fragP->relax_marker)
7296 + target += stretch;
7297 +
7298 + distance = target - address;
7299 + if (distance <= 508 && distance >= 0)
7300 + {
7301 + new_size = 2;
7302 + fragP->fr_subtype = LDA_SUBTYPE_LDDPC;
7303 + }
7304 + else
7305 + {
7306 + new_size = 4;
7307 + fragP->fr_subtype = LDA_SUBTYPE_LDW;
7308 + }
7309 +
7310 + pr_debug("lda_relax_frag (cpool): target=0x%lx, address=0x%lx, refcount=%d\n",
7311 + target, address, pool->literals[entry].refcount);
7312 + }
7313 + }
7314 +
7315 + fragP->fr_var = new_size;
7316 +
7317 + pr_debug("%s:%d: lda: relax pass done. subtype: %d, growth: %ld\n",
7318 + fragP->fr_file, fragP->fr_line,
7319 + fragP->fr_subtype, new_size - old_size);
7320 +
7321 + return new_size - old_size;
7322 +}
7323 +
7324 +static long
7325 +avr32_call_relax_frag(segT segment, fragS *fragP, long stretch)
7326 +{
7327 + struct cpool *pool = NULL;
7328 + unsigned int entry = 0;
7329 + addressT address, target;
7330 + offsetT distance;
7331 + symbolS *symbolP;
7332 + fragS *sym_frag;
7333 + long old_size, new_size;
7334 +
7335 + symbolP = fragP->fr_symbol;
7336 + old_size = fragP->fr_var;
7337 + if (!avr32_pic)
7338 + {
7339 + pool = fragP->tc_frag_data.pool;
7340 + entry = fragP->tc_frag_data.pool_entry;
7341 + }
7342 +
7343 + address = fragP->fr_address;
7344 + address += fragP->fr_fix - CALL_INITIAL_SIZE;
7345 +
7346 + if (need_reloc(symbolP, segment, 1))
7347 + {
7348 + pr_debug("call: must emit reloc\n");
7349 + goto relax_max;
7350 + }
7351 +
7352 + target = fragP->fr_offset;
7353 + sym_frag = symbol_get_frag(symbolP);
7354 + target += S_GET_VALUE(symbolP);
7355 +
7356 + if (sym_frag->relax_marker != fragP->relax_marker
7357 + && S_GET_SEGMENT(symbolP) == segment)
7358 + target += stretch;
7359 +
7360 + distance = target - address;
7361 +
7362 + if (distance <= 1022 && distance >= -1024)
7363 + {
7364 + pr_debug("call: distance is %d, emitting short rcall\n", distance);
7365 + if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
7366 + pool->literals[entry].refcount--;
7367 + new_size = 2;
7368 + fragP->fr_subtype = CALL_SUBTYPE_RCALL1;
7369 + }
7370 + else if (distance <= 2097150 && distance >= -2097152)
7371 + {
7372 + pr_debug("call: distance is %d, emitting long rcall\n", distance);
7373 + if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
7374 + pool->literals[entry].refcount--;
7375 + new_size = 4;
7376 + fragP->fr_subtype = CALL_SUBTYPE_RCALL2;
7377 + }
7378 + else
7379 + {
7380 + pr_debug("call: distance %d too far, emitting something big\n", distance);
7381 +
7382 + relax_max:
7383 + if (avr32_pic)
7384 + {
7385 + if (linkrelax)
7386 + {
7387 + new_size = 10;
7388 + fragP->fr_subtype = CALL_SUBTYPE_MCALL_LARGE;
7389 + }
7390 + else
7391 + {
7392 + new_size = 4;
7393 + fragP->fr_subtype = CALL_SUBTYPE_MCALL_GOT;
7394 + }
7395 + }
7396 + else
7397 + {
7398 + if (fragP->fr_subtype != CALL_SUBTYPE_MCALL_CP)
7399 + pool->literals[entry].refcount++;
7400 +
7401 + new_size = 4;
7402 + fragP->fr_subtype = CALL_SUBTYPE_MCALL_CP;
7403 + }
7404 + }
7405 +
7406 + fragP->fr_var = new_size;
7407 +
7408 + pr_debug("%s:%d: call: relax pass done, growth: %d, fr_var: %d\n",
7409 + fragP->fr_file, fragP->fr_line,
7410 + new_size - old_size, fragP->fr_var);
7411 +
7412 + return new_size - old_size;
7413 +}
7414 +
7415 +static long
7416 +avr32_cpool_relax_frag(segT segment ATTRIBUTE_UNUSED,
7417 + fragS *fragP,
7418 + long stretch ATTRIBUTE_UNUSED)
7419 +{
7420 + struct cpool *pool;
7421 + addressT address;
7422 + long old_size, new_size;
7423 + unsigned int entry;
7424 +
7425 + pool = fragP->tc_frag_data.pool;
7426 + address = fragP->fr_address + fragP->fr_fix;
7427 + old_size = fragP->fr_var;
7428 + new_size = 0;
7429 +
7430 + for (entry = 0; entry < pool->next_free_entry; entry++)
7431 + {
7432 + if (pool->literals[entry].refcount > 0)
7433 + {
7434 + pool->literals[entry].offset = new_size;
7435 + new_size += 4;
7436 + }
7437 + }
7438 +
7439 + fragP->fr_var = new_size;
7440 +
7441 + return new_size - old_size;
7442 +}
7443 +
7444 +/* *fragP has been relaxed to its final size, and now needs to have
7445 + the bytes inside it modified to conform to the new size.
7446 +
7447 + Called after relaxation is finished.
7448 + fragP->fr_type == rs_machine_dependent.
7449 + fragP->fr_subtype is the subtype of what the address relaxed to. */
7450 +
7451 +static void
7452 +avr32_default_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
7453 + segT segment ATTRIBUTE_UNUSED,
7454 + fragS *fragP)
7455 +{
7456 + const struct avr32_opcode *opc;
7457 + const struct avr32_ifield *ifield;
7458 + bfd_reloc_code_real_type r_type;
7459 + symbolS *symbolP;
7460 + fixS *fixP;
7461 + bfd_vma value;
7462 + int subtype;
7463 +
7464 + opc = &avr32_opc_table[fragP->fr_subtype];
7465 + ifield = opc->fields[opc->var_field];
7466 + symbolP = fragP->fr_symbol;
7467 + subtype = fragP->fr_subtype;
7468 + r_type = opc->reloc_type;
7469 +
7470 + /* Clear the opcode bits and the bits belonging to the relaxed
7471 + field. We assume all other fields stay the same. */
7472 + value = bfd_getb32(fragP->fr_opcode);
7473 + value &= ~(opc->mask | ifield->mask);
7474 +
7475 + /* Insert the new opcode */
7476 + value |= opc->value;
7477 + bfd_putb32(value, fragP->fr_opcode);
7478 +
7479 + fragP->fr_fix += opc->size - fragP->fr_var;
7480 +
7481 + if (fragP->tc_frag_data.reloc_info != AVR32_OPINFO_NONE)
7482 + {
7483 + switch (fragP->tc_frag_data.reloc_info)
7484 + {
7485 + case AVR32_OPINFO_HI:
7486 + r_type = BFD_RELOC_HI16;
7487 + break;
7488 + case AVR32_OPINFO_LO:
7489 + r_type = BFD_RELOC_LO16;
7490 + break;
7491 + case AVR32_OPINFO_GOT:
7492 + switch (r_type)
7493 + {
7494 + case BFD_RELOC_AVR32_18W_PCREL:
7495 + r_type = BFD_RELOC_AVR32_GOT18SW;
7496 + break;
7497 + case BFD_RELOC_AVR32_16S:
7498 + r_type = BFD_RELOC_AVR32_GOT16S;
7499 + break;
7500 + default:
7501 + BAD_CASE(r_type);
7502 + break;
7503 + }
7504 + break;
7505 + default:
7506 + BAD_CASE(fragP->tc_frag_data.reloc_info);
7507 + break;
7508 + }
7509 + }
7510 +
7511 + pr_debug("%s:%d: convert_frag: new %s fixup\n",
7512 + fragP->fr_file, fragP->fr_line,
7513 + bfd_get_reloc_code_name(r_type));
7514 +
7515 +#if 1
7516 + fixP = fix_new_exp(fragP, fragP->fr_fix - opc->size, opc->size,
7517 + &fragP->tc_frag_data.exp,
7518 + fragP->tc_frag_data.pcrel, r_type);
7519 +#else
7520 + fixP = fix_new(fragP, fragP->fr_fix - opc->size, opc->size, symbolP,
7521 + fragP->fr_offset, fragP->tc_frag_data.pcrel, r_type);
7522 +#endif
7523 +
7524 + /* Revert fix_new brain damage. "dot_value" is the value of PC at
7525 + the point of the fixup, relative to the frag address. fix_new()
7526 + and friends think they are only being called during the assembly
7527 + pass, not during relaxation or similar, so fx_dot_value, fx_file
7528 + and fx_line are all initialized to the wrong value. But we don't
7529 + know the size of the fixup until now, so we really can't live up
7530 + to the assumptions these functions make about the target. What
7531 + do these functions think the "where" and "frag" argument mean
7532 + anyway? */
7533 + fixP->fx_dot_value = fragP->fr_fix - opc->size;
7534 + fixP->fx_file = fragP->fr_file;
7535 + fixP->fx_line = fragP->fr_line;
7536 +
7537 + fixP->tc_fix_data.ifield = ifield;
7538 + fixP->tc_fix_data.align = avr32_rs_align(subtype);
7539 + fixP->tc_fix_data.min = avr32_relax_table[subtype].lower_bound;
7540 + fixP->tc_fix_data.max = avr32_relax_table[subtype].upper_bound;
7541 +}
7542 +
7543 +static void
7544 +avr32_lda_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
7545 + segT segment ATTRIBUTE_UNUSED,
7546 + fragS *fragP)
7547 +{
7548 + const struct avr32_opcode *opc;
7549 + const struct avr32_ifield *ifield;
7550 + bfd_reloc_code_real_type r_type;
7551 + expressionS exp;
7552 + struct cpool *pool;
7553 + fixS *fixP;
7554 + bfd_vma value;
7555 + int regid, pcrel = 0, align = 0;
7556 + char *p;
7557 +
7558 + r_type = BFD_RELOC_NONE;
7559 + regid = fragP->tc_frag_data.reloc_info;
7560 + p = fragP->fr_opcode;
7561 + exp.X_add_symbol = fragP->fr_symbol;
7562 + exp.X_add_number = fragP->fr_offset;
7563 + exp.X_op = O_symbol;
7564 +
7565 + pr_debug("%s:%d: lda_convert_frag, subtype: %d, fix: %d, var: %d, regid: %d\n",
7566 + fragP->fr_file, fragP->fr_line,
7567 + fragP->fr_subtype, fragP->fr_fix, fragP->fr_var, regid);
7568 +
7569 + switch (fragP->fr_subtype)
7570 + {
7571 + case LDA_SUBTYPE_MOV1:
7572 + opc = &avr32_opc_table[AVR32_OPC_MOV1];
7573 + opc->fields[0]->insert(opc->fields[0], p, regid);
7574 + ifield = opc->fields[1];
7575 + r_type = opc->reloc_type;
7576 + break;
7577 + case LDA_SUBTYPE_MOV2:
7578 + opc = &avr32_opc_table[AVR32_OPC_MOV2];
7579 + opc->fields[0]->insert(opc->fields[0], p, regid);
7580 + ifield = opc->fields[1];
7581 + r_type = opc->reloc_type;
7582 + break;
7583 + case LDA_SUBTYPE_SUB:
7584 + opc = &avr32_opc_table[AVR32_OPC_SUB5];
7585 + opc->fields[0]->insert(opc->fields[0], p, regid);
7586 + opc->fields[1]->insert(opc->fields[1], p, AVR32_REG_PC);
7587 + ifield = opc->fields[2];
7588 + r_type = BFD_RELOC_AVR32_16N_PCREL;
7589 +
7590 + /* Pretend that SUB5 isn't a "negated" pcrel expression for now.
7591 + We'll have to fix it up later when we know whether to
7592 + generate a reloc for it (in which case the linker will negate
7593 + it, so we shouldn't). */
7594 + pcrel = 1;
7595 + break;
7596 + case LDA_SUBTYPE_LDDPC:
7597 + opc = &avr32_opc_table[AVR32_OPC_LDDPC];
7598 + align = 2;
7599 + r_type = BFD_RELOC_AVR32_9W_CP;
7600 + goto cpool_common;
7601 + case LDA_SUBTYPE_LDW:
7602 + opc = &avr32_opc_table[AVR32_OPC_LDDPC_EXT];
7603 + r_type = BFD_RELOC_AVR32_16_CP;
7604 + cpool_common:
7605 + opc->fields[0]->insert(opc->fields[0], p, regid);
7606 + ifield = opc->fields[1];
7607 + pool = fragP->tc_frag_data.pool;
7608 + exp.X_add_symbol = pool->symbol;
7609 + exp.X_add_number = pool->literals[fragP->tc_frag_data.pool_entry].offset;
7610 + pcrel = 1;
7611 + break;
7612 + case LDA_SUBTYPE_GOTLOAD_LARGE:
7613 + /* ld.w Rd, r6[Rd << 2] (last) */
7614 + opc = &avr32_opc_table[AVR32_OPC_LD_W5];
7615 + bfd_putb32(opc->value, p + 4);
7616 + opc->fields[0]->insert(opc->fields[0], p + 4, regid);
7617 + opc->fields[1]->insert(opc->fields[1], p + 4, 6);
7618 + opc->fields[2]->insert(opc->fields[2], p + 4, regid);
7619 + opc->fields[3]->insert(opc->fields[3], p + 4, 2);
7620 +
7621 + /* mov Rd, (got_offset / 4) */
7622 + opc = &avr32_opc_table[AVR32_OPC_MOV2];
7623 + opc->fields[0]->insert(opc->fields[0], p, regid);
7624 + ifield = opc->fields[1];
7625 + r_type = BFD_RELOC_AVR32_LDA_GOT;
7626 + break;
7627 + case LDA_SUBTYPE_GOTLOAD:
7628 + opc = &avr32_opc_table[AVR32_OPC_LD_W4];
7629 + opc->fields[0]->insert(opc->fields[0], p, regid);
7630 + opc->fields[1]->insert(opc->fields[1], p, 6);
7631 + ifield = opc->fields[2];
7632 + if (r_type == BFD_RELOC_NONE)
7633 + r_type = BFD_RELOC_AVR32_GOT16S;
7634 + break;
7635 + default:
7636 + BAD_CASE(fragP->fr_subtype);
7637 + }
7638 +
7639 + value = bfd_getb32(p);
7640 + value &= ~(opc->mask | ifield->mask);
7641 + value |= opc->value;
7642 + bfd_putb32(value, p);
7643 +
7644 + fragP->fr_fix += fragP->fr_var - LDA_INITIAL_SIZE;
7645 +
7646 + if (fragP->fr_next
7647 + && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
7648 + != fragP->fr_fix))
7649 + {
7650 + fprintf(stderr, "LDA frag: fr_fix is wrong! fragP->fr_var = %ld, r_type = %s\n",
7651 + fragP->fr_var, bfd_get_reloc_code_name(r_type));
7652 + abort();
7653 + }
7654 +
7655 + fixP = fix_new_exp(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
7656 + &exp, pcrel, r_type);
7657 +
7658 + /* Revert fix_new brain damage. "dot_value" is the value of PC at
7659 + the point of the fixup, relative to the frag address. fix_new()
7660 + and friends think they are only being called during the assembly
7661 + pass, not during relaxation or similar, so fx_dot_value, fx_file
7662 + and fx_line are all initialized to the wrong value. But we don't
7663 + know the size of the fixup until now, so we really can't live up
7664 + to the assumptions these functions make about the target. What
7665 + do these functions think the "where" and "frag" argument mean
7666 + anyway? */
7667 + fixP->fx_dot_value = fragP->fr_fix - opc->size;
7668 + fixP->fx_file = fragP->fr_file;
7669 + fixP->fx_line = fragP->fr_line;
7670 +
7671 + fixP->tc_fix_data.ifield = ifield;
7672 + fixP->tc_fix_data.align = align;
7673 + /* these are only used if the fixup can actually be resolved */
7674 + fixP->tc_fix_data.min = -32768;
7675 + fixP->tc_fix_data.max = 32767;
7676 +}
7677 +
7678 +static void
7679 +avr32_call_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
7680 + segT segment ATTRIBUTE_UNUSED,
7681 + fragS *fragP)
7682 +{
7683 + const struct avr32_opcode *opc = NULL;
7684 + const struct avr32_ifield *ifield;
7685 + bfd_reloc_code_real_type r_type;
7686 + symbolS *symbol;
7687 + offsetT offset;
7688 + fixS *fixP;
7689 + bfd_vma value;
7690 + int pcrel = 0, align = 0;
7691 + char *p;
7692 +
7693 + symbol = fragP->fr_symbol;
7694 + offset = fragP->fr_offset;
7695 + r_type = BFD_RELOC_NONE;
7696 + p = fragP->fr_opcode;
7697 +
7698 + pr_debug("%s:%d: call_convert_frag, subtype: %d, fix: %d, var: %d\n",
7699 + fragP->fr_file, fragP->fr_line,
7700 + fragP->fr_subtype, fragP->fr_fix, fragP->fr_var);
7701 +
7702 + switch (fragP->fr_subtype)
7703 + {
7704 + case CALL_SUBTYPE_RCALL1:
7705 + opc = &avr32_opc_table[AVR32_OPC_RCALL1];
7706 + /* fall through */
7707 + case CALL_SUBTYPE_RCALL2:
7708 + if (!opc)
7709 + opc = &avr32_opc_table[AVR32_OPC_RCALL2];
7710 + ifield = opc->fields[0];
7711 + r_type = opc->reloc_type;
7712 + pcrel = 1;
7713 + align = 1;
7714 + break;
7715 + case CALL_SUBTYPE_MCALL_CP:
7716 + opc = &avr32_opc_table[AVR32_OPC_MCALL];
7717 + opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_PC);
7718 + ifield = opc->fields[1];
7719 + r_type = BFD_RELOC_AVR32_CPCALL;
7720 + symbol = fragP->tc_frag_data.pool->symbol;
7721 + offset = fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].offset;
7722 + assert(fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].refcount > 0);
7723 + pcrel = 1;
7724 + align = 2;
7725 + break;
7726 + case CALL_SUBTYPE_MCALL_GOT:
7727 + opc = &avr32_opc_table[AVR32_OPC_MCALL];
7728 + opc->fields[0]->insert(opc->fields[0], p, 6);
7729 + ifield = opc->fields[1];
7730 + r_type = BFD_RELOC_AVR32_GOT18SW;
7731 + break;
7732 + case CALL_SUBTYPE_MCALL_LARGE:
7733 + assert(fragP->fr_var == 10);
7734 + /* ld.w lr, r6[lr << 2] */
7735 + opc = &avr32_opc_table[AVR32_OPC_LD_W5];
7736 + bfd_putb32(opc->value, p + 4);
7737 + opc->fields[0]->insert(opc->fields[0], p + 4, AVR32_REG_LR);
7738 + opc->fields[1]->insert(opc->fields[1], p + 4, 6);
7739 + opc->fields[2]->insert(opc->fields[2], p + 4, AVR32_REG_LR);
7740 + opc->fields[3]->insert(opc->fields[3], p + 4, 2);
7741 +
7742 + /* icall lr */
7743 + opc = &avr32_opc_table[AVR32_OPC_ICALL];
7744 + bfd_putb16(opc->value >> 16, p + 8);
7745 + opc->fields[0]->insert(opc->fields[0], p + 8, AVR32_REG_LR);
7746 +
7747 + /* mov lr, (got_offset / 4) */
7748 + opc = &avr32_opc_table[AVR32_OPC_MOV2];
7749 + opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_LR);
7750 + ifield = opc->fields[1];
7751 + r_type = BFD_RELOC_AVR32_GOTCALL;
7752 + break;
7753 + default:
7754 + BAD_CASE(fragP->fr_subtype);
7755 + }
7756 +
7757 + /* Insert the opcode and clear the variable ifield */
7758 + value = bfd_getb32(p);
7759 + value &= ~(opc->mask | ifield->mask);
7760 + value |= opc->value;
7761 + bfd_putb32(value, p);
7762 +
7763 + fragP->fr_fix += fragP->fr_var - CALL_INITIAL_SIZE;
7764 +
7765 + if (fragP->fr_next
7766 + && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
7767 + != fragP->fr_fix))
7768 + {
7769 + fprintf(stderr, "%s:%d: fr_fix %lu is wrong! fr_var=%lu, r_type=%s\n",
7770 + fragP->fr_file, fragP->fr_line,
7771 + fragP->fr_fix, fragP->fr_var, bfd_get_reloc_code_name(r_type));
7772 + fprintf(stderr, "fr_fix should be %ld. next frag is %s:%d\n",
7773 + (offsetT)(fragP->fr_next->fr_address - fragP->fr_address),
7774 + fragP->fr_next->fr_file, fragP->fr_next->fr_line);
7775 + }
7776 +
7777 + fixP = fix_new(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
7778 + symbol, offset, pcrel, r_type);
7779 +
7780 + /* Revert fix_new brain damage. "dot_value" is the value of PC at
7781 + the point of the fixup, relative to the frag address. fix_new()
7782 + and friends think they are only being called during the assembly
7783 + pass, not during relaxation or similar, so fx_dot_value, fx_file
7784 + and fx_line are all initialized to the wrong value. But we don't
7785 + know the size of the fixup until now, so we really can't live up
7786 + to the assumptions these functions make about the target. What
7787 + do these functions think the "where" and "frag" argument mean
7788 + anyway? */
7789 + fixP->fx_dot_value = fragP->fr_fix - opc->size;
7790 + fixP->fx_file = fragP->fr_file;
7791 + fixP->fx_line = fragP->fr_line;
7792 +
7793 + fixP->tc_fix_data.ifield = ifield;
7794 + fixP->tc_fix_data.align = align;
7795 + /* these are only used if the fixup can actually be resolved */
7796 + fixP->tc_fix_data.min = -2097152;
7797 + fixP->tc_fix_data.max = 2097150;
7798 +}
7799 +
7800 +static void
7801 +avr32_cpool_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
7802 + segT segment ATTRIBUTE_UNUSED,
7803 + fragS *fragP)
7804 +{
7805 + struct cpool *pool;
7806 + addressT address;
7807 + unsigned int entry;
7808 + char *p;
7809 + char sym_name[20];
7810 +
7811 + /* Did we get rid of the frag altogether? */
7812 + if (!fragP->fr_var)
7813 + return;
7814 +
7815 + pool = fragP->tc_frag_data.pool;
7816 + address = fragP->fr_address + fragP->fr_fix;
7817 + p = fragP->fr_literal + fragP->fr_fix;
7818 +
7819 + sprintf(sym_name, "$$cp_\002%x", pool->id);
7820 + symbol_locate(pool->symbol, sym_name, pool->section, fragP->fr_fix, fragP);
7821 + symbol_table_insert(pool->symbol);
7822 +
7823 + for (entry = 0; entry < pool->next_free_entry; entry++)
7824 + {
7825 + if (pool->literals[entry].refcount > 0)
7826 + {
7827 + fix_new_exp(fragP, fragP->fr_fix, 4, &pool->literals[entry].exp,
7828 + FALSE, BFD_RELOC_AVR32_32_CPENT);
7829 + fragP->fr_fix += 4;
7830 + }
7831 + }
7832 +}
7833 +
7834 +static struct avr32_relaxer avr32_default_relaxer = {
7835 + .estimate_size = avr32_default_estimate_size_before_relax,
7836 + .relax_frag = avr32_default_relax_frag,
7837 + .convert_frag = avr32_default_convert_frag,
7838 +};
7839 +static struct avr32_relaxer avr32_lda_relaxer = {
7840 + .estimate_size = avr32_lda_estimate_size_before_relax,
7841 + .relax_frag = avr32_lda_relax_frag,
7842 + .convert_frag = avr32_lda_convert_frag,
7843 +};
7844 +static struct avr32_relaxer avr32_call_relaxer = {
7845 + .estimate_size = avr32_call_estimate_size_before_relax,
7846 + .relax_frag = avr32_call_relax_frag,
7847 + .convert_frag = avr32_call_convert_frag,
7848 +};
7849 +static struct avr32_relaxer avr32_cpool_relaxer = {
7850 + .estimate_size = avr32_cpool_estimate_size_before_relax,
7851 + .relax_frag = avr32_cpool_relax_frag,
7852 + .convert_frag = avr32_cpool_convert_frag,
7853 +};
7854 +
7855 +static void s_cpool(int arg ATTRIBUTE_UNUSED)
7856 +{
7857 + struct cpool *pool;
7858 + unsigned int max_size;
7859 + char *buf;
7860 +
7861 + pool = find_cpool(now_seg, now_subseg);
7862 + if (!pool || !pool->symbol || pool->next_free_entry == 0)
7863 + return;
7864 +
7865 + /* Make sure the constant pool is properly aligned */
7866 + frag_align_code(2, 0);
7867 + if (bfd_get_section_alignment(stdoutput, pool->section) < 2)
7868 + bfd_set_section_alignment(stdoutput, pool->section, 2);
7869 +
7870 + /* Assume none of the entries are discarded, and that we need the
7871 + maximum amount of alignment. But we're not going to allocate
7872 + anything up front. */
7873 + max_size = pool->next_free_entry * 4 + 2;
7874 + frag_grow(max_size);
7875 + buf = frag_more(0);
7876 +
7877 + frag_now->tc_frag_data.relaxer = &avr32_cpool_relaxer;
7878 + frag_now->tc_frag_data.pool = pool;
7879 +
7880 + symbol_set_frag(pool->symbol, frag_now);
7881 +
7882 + /* Assume zero initial size, allowing other relaxers to be
7883 + optimistic about things. */
7884 + frag_var(rs_machine_dependent, max_size, 0,
7885 + 0, pool->symbol, 0, NULL);
7886 +
7887 + /* Mark the pool as empty. */
7888 + pool->used = 1;
7889 +}
7890 +
7891 +/* The location from which a PC relative jump should be calculated,
7892 + given a PC relative reloc. */
7893 +
7894 +long
7895 +md_pcrel_from_section (fixS *fixP, segT sec)
7896 +{
7897 + pr_debug("pcrel_from_section, fx_offset = %d\n", fixP->fx_offset);
7898 +
7899 + if (fixP->fx_addsy != NULL
7900 + && (! S_IS_DEFINED (fixP->fx_addsy)
7901 + || S_GET_SEGMENT (fixP->fx_addsy) != sec
7902 + || S_FORCE_RELOC(fixP->fx_addsy, 1)))
7903 + {
7904 + pr_debug("Unknown pcrel symbol: %s\n", S_GET_NAME(fixP->fx_addsy));
7905 +
7906 + /* The symbol is undefined (or is defined but not in this section).
7907 + Let the linker figure it out. */
7908 + return 0;
7909 + }
7910 +
7911 + pr_debug("pcrel from %x + %x, symbol: %s (%x)\n",
7912 + fixP->fx_frag->fr_address, fixP->fx_where,
7913 + fixP->fx_addsy?S_GET_NAME(fixP->fx_addsy):"(null)",
7914 + fixP->fx_addsy?S_GET_VALUE(fixP->fx_addsy):0);
7915 +
7916 + return ((fixP->fx_frag->fr_address + fixP->fx_where)
7917 + & (~0UL << fixP->tc_fix_data.align));
7918 +}
7919 +
7920 +valueT
7921 +md_section_align (segT segment, valueT size)
7922 +{
7923 + int align = bfd_get_section_alignment (stdoutput, segment);
7924 + return ((size + (1 << align) - 1) & (-1 << align));
7925 +}
7926 +
7927 +static int syntax_matches(const struct avr32_syntax *syntax,
7928 + char *str)
7929 +{
7930 + int i;
7931 +
7932 + pr_debug("syntax %d matches `%s'?\n", syntax->id, str);
7933 +
7934 + if (syntax->nr_operands < 0)
7935 + {
7936 + struct avr32_operand *op;
7937 + int optype;
7938 +
7939 + for (i = 0; i < (-syntax->nr_operands - 1); i++)
7940 + {
7941 + char *p;
7942 + char c;
7943 +
7944 + optype = syntax->operand[i];
7945 + assert(optype < AVR32_NR_OPERANDS);
7946 + op = &avr32_operand_table[optype];
7947 +
7948 + for (p = str; *p; p++)
7949 + if (*p == ',')
7950 + break;
7951 +
7952 + if (p == str)
7953 + return 0;
7954 +
7955 + c = *p;
7956 + *p = 0;
7957 +
7958 + if (!op->match(str))
7959 + {
7960 + *p = c;
7961 + return 0;
7962 + }
7963 +
7964 + str = p;
7965 + *p = c;
7966 + if (c)
7967 + str++;
7968 + }
7969 +
7970 + optype = syntax->operand[i];
7971 + assert(optype < AVR32_NR_OPERANDS);
7972 + op = &avr32_operand_table[optype];
7973 +
7974 + if (!op->match(str))
7975 + return 0;
7976 + return 1;
7977 + }
7978 +
7979 + for (i = 0; i < syntax->nr_operands; i++)
7980 + {
7981 + struct avr32_operand *op;
7982 + int optype = syntax->operand[i];
7983 + char *p;
7984 + char c;
7985 +
7986 + assert(optype < AVR32_NR_OPERANDS);
7987 + op = &avr32_operand_table[optype];
7988 +
7989 + for (p = str; *p; p++)
7990 + if (*p == ',')
7991 + break;
7992 +
7993 + if (p == str)
7994 + return 0;
7995 +
7996 + c = *p;
7997 + *p = 0;
7998 +
7999 + if (!op->match(str))
8000 + {
8001 + *p = c;
8002 + return 0;
8003 + }
8004 +
8005 + str = p;
8006 + *p = c;
8007 + if (c)
8008 + str++;
8009 + }
8010 +
8011 + if (*str == '\0')
8012 + return 1;
8013 +
8014 + if ((*str == 'e' || *str == 'E') && !str[1])
8015 + return 1;
8016 +
8017 + return 0;
8018 +}
8019 +
8020 +static int parse_operands(char *str)
8021 +{
8022 + int i;
8023 +
8024 + if (current_insn.syntax->nr_operands < 0)
8025 + {
8026 + int optype;
8027 + struct avr32_operand *op;
8028 +
8029 + for (i = 0; i < (-current_insn.syntax->nr_operands - 1); i++)
8030 + {
8031 + char *p;
8032 + char c;
8033 +
8034 + optype = current_insn.syntax->operand[i];
8035 + op = &avr32_operand_table[optype];
8036 +
8037 + for (p = str; *p; p++)
8038 + if (*p == ',')
8039 + break;
8040 +
8041 + assert(p != str);
8042 +
8043 + c = *p, *p = 0;
8044 + op->parse(op, str, i);
8045 + *p = c;
8046 +
8047 + str = p;
8048 + if (c) str++;
8049 + }
8050 +
8051 + /* give the rest of the line to the last operand */
8052 + optype = current_insn.syntax->operand[i];
8053 + op = &avr32_operand_table[optype];
8054 + op->parse(op, str, i);
8055 + }
8056 + else
8057 + {
8058 + for (i = 0; i < current_insn.syntax->nr_operands; i++)
8059 + {
8060 + int optype = current_insn.syntax->operand[i];
8061 + struct avr32_operand *op = &avr32_operand_table[optype];
8062 + char *p;
8063 + char c;
8064 +
8065 + skip_whitespace(str);
8066 +
8067 + for (p = str; *p; p++)
8068 + if (*p == ',')
8069 + break;
8070 +
8071 + assert(p != str);
8072 +
8073 + c = *p, *p = 0;
8074 + op->parse(op, str, i);
8075 + *p = c;
8076 +
8077 + str = p;
8078 + if (c) str++;
8079 + }
8080 +
8081 + if (*str == 'E' || *str == 'e')
8082 + current_insn.force_extended = 1;
8083 + }
8084 +
8085 + return 0;
8086 +}
8087 +
8088 +static const char *
8089 +finish_insn(const struct avr32_opcode *opc)
8090 +{
8091 + expressionS *exp = &current_insn.immediate;
8092 + unsigned int i;
8093 + int will_relax = 0;
8094 + char *buf;
8095 +
8096 + assert(current_insn.next_slot == opc->nr_fields);
8097 +
8098 + pr_debug("%s:%d: finish_insn: trying opcode %d\n",
8099 + frag_now->fr_file, frag_now->fr_line, opc->id);
8100 +
8101 + /* Go through the relaxation stage for all instructions that can
8102 + possibly take a symbolic immediate. The relax code will take
8103 + care of range checking and alignment. */
8104 + if (opc->var_field != -1)
8105 + {
8106 + int substate, largest_substate;
8107 + symbolS *sym;
8108 + offsetT off;
8109 +
8110 + will_relax = 1;
8111 + substate = largest_substate = opc_initial_substate(opc);
8112 +
8113 + while (relax_more(largest_substate) != AVR32_RS_NONE)
8114 + largest_substate = relax_more(largest_substate);
8115 +
8116 + pr_debug("will relax. initial substate: %d (size %d), largest substate: %d (size %d)\n",
8117 + substate, avr32_rs_size(substate),
8118 + largest_substate, avr32_rs_size(largest_substate));
8119 +
8120 + /* make sure we have enough room for the largest possible opcode */
8121 + frag_grow(avr32_rs_size(largest_substate));
8122 + buf = frag_more(opc->size);
8123 +
8124 + dwarf2_emit_insn(opc->size);
8125 +
8126 + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_NONE;
8127 + frag_now->tc_frag_data.pcrel = current_insn.pcrel;
8128 + frag_now->tc_frag_data.force_extended = current_insn.force_extended;
8129 + frag_now->tc_frag_data.relaxer = &avr32_default_relaxer;
8130 +
8131 + if (exp->X_op == O_hi)
8132 + {
8133 + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_HI;
8134 + exp->X_op = exp->X_md;
8135 + }
8136 + else if (exp->X_op == O_lo)
8137 + {
8138 + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_LO;
8139 + exp->X_op = exp->X_md;
8140 + }
8141 + else if (exp->X_op == O_got)
8142 + {
8143 + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_GOT;
8144 + exp->X_op = O_symbol;
8145 + }
8146 +
8147 +#if 0
8148 + if ((opc->reloc_type == BFD_RELOC_AVR32_SUB5)
8149 + && exp->X_op == O_subtract)
8150 + {
8151 + symbolS *tmp;
8152 + tmp = exp->X_add_symbol;
8153 + exp->X_add_symbol = exp->X_op_symbol;
8154 + exp->X_op_symbol = tmp;
8155 + }
8156 +#endif
8157 +
8158 + frag_now->tc_frag_data.exp = current_insn.immediate;
8159 +
8160 + sym = exp->X_add_symbol;
8161 + off = exp->X_add_number;
8162 + if (exp->X_op != O_symbol)
8163 + {
8164 + sym = make_expr_symbol(exp);
8165 + off = 0;
8166 + }
8167 +
8168 + frag_var(rs_machine_dependent,
8169 + avr32_rs_size(largest_substate) - opc->size,
8170 + opc->size,
8171 + substate, sym, off, buf);
8172 + }
8173 + else
8174 + {
8175 + assert(avr32_rs_size(opc_initial_substate(opc)) == 0);
8176 +
8177 + /* Make sure we always have room for another whole word, as the ifield
8178 + inserters can only write words. */
8179 + frag_grow(4);
8180 + buf = frag_more(opc->size);
8181 + dwarf2_emit_insn(opc->size);
8182 + }
8183 +
8184 + assert(!(opc->value & ~opc->mask));
8185 +
8186 + pr_debug("inserting opcode: 0x%lx\n", opc->value);
8187 + bfd_putb32(opc->value, buf);
8188 +
8189 + for (i = 0; i < opc->nr_fields; i++)
8190 + {
8191 + const struct avr32_ifield *f = opc->fields[i];
8192 + const struct avr32_ifield_data *fd = &current_insn.field_value[i];
8193 +
8194 + pr_debug("inserting field: 0x%lx & 0x%lx\n",
8195 + fd->value >> fd->align_order, f->mask);
8196 +
8197 + f->insert(f, buf, fd->value >> fd->align_order);
8198 + }
8199 +
8200 + assert(will_relax || !current_insn.immediate.X_add_symbol);
8201 + return NULL;
8202 +}
8203 +
8204 +static const char *
8205 +finish_alias(const struct avr32_alias *alias)
8206 +{
8207 + const struct avr32_opcode *opc;
8208 + struct {
8209 + unsigned long value;
8210 + unsigned long align;
8211 + } mapped_operand[AVR32_MAX_OPERANDS];
8212 + unsigned int i;
8213 +
8214 + opc = alias->opc;
8215 +
8216 + /* Remap the operands from the alias to the real opcode */
8217 + for (i = 0; i < opc->nr_fields; i++)
8218 + {
8219 + if (alias->operand_map[i].is_opindex)
8220 + {
8221 + struct avr32_ifield_data *fd;
8222 + fd = &current_insn.field_value[alias->operand_map[i].value];
8223 + mapped_operand[i].value = fd->value;
8224 + mapped_operand[i].align = fd->align_order;
8225 + }
8226 + else
8227 + {
8228 + mapped_operand[i].value = alias->operand_map[i].value;
8229 + mapped_operand[i].align = 0;
8230 + }
8231 + }
8232 +
8233 + for (i = 0; i < opc->nr_fields; i++)
8234 + {
8235 + current_insn.field_value[i].value = mapped_operand[i].value;
8236 + if (opc->id == AVR32_OPC_COP)
8237 + current_insn.field_value[i].align_order = 0;
8238 + else
8239 + current_insn.field_value[i].align_order
8240 + = mapped_operand[i].align;
8241 + }
8242 +
8243 + current_insn.next_slot = opc->nr_fields;
8244 +
8245 + return finish_insn(opc);
8246 +}
8247 +
8248 +static const char *
8249 +finish_lda(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
8250 +{
8251 + expressionS *exp = &current_insn.immediate;
8252 + relax_substateT initial_subtype;
8253 + symbolS *sym;
8254 + offsetT off;
8255 + int initial_size, max_size;
8256 + char *buf;
8257 +
8258 + initial_size = LDA_INITIAL_SIZE;
8259 +
8260 + if (avr32_pic)
8261 + {
8262 + initial_subtype = LDA_SUBTYPE_SUB;
8263 + if (linkrelax)
8264 + max_size = 8;
8265 + else
8266 + max_size = 4;
8267 + }
8268 + else
8269 + {
8270 + initial_subtype = LDA_SUBTYPE_MOV1;
8271 + max_size = 4;
8272 + }
8273 +
8274 + frag_grow(max_size);
8275 + buf = frag_more(initial_size);
8276 + dwarf2_emit_insn(initial_size);
8277 +
8278 + if (exp->X_op == O_symbol)
8279 + {
8280 + sym = exp->X_add_symbol;
8281 + off = exp->X_add_number;
8282 + }
8283 + else
8284 + {
8285 + sym = make_expr_symbol(exp);
8286 + off = 0;
8287 + }
8288 +
8289 + frag_now->tc_frag_data.reloc_info = current_insn.field_value[0].value;
8290 + frag_now->tc_frag_data.relaxer = &avr32_lda_relaxer;
8291 +
8292 + if (!avr32_pic)
8293 + {
8294 + /* The relaxer will bump the refcount if necessary */
8295 + frag_now->tc_frag_data.pool
8296 + = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
8297 + }
8298 +
8299 + frag_var(rs_machine_dependent, max_size - initial_size,
8300 + initial_size, initial_subtype, sym, off, buf);
8301 +
8302 + return NULL;
8303 +}
8304 +
8305 +static const char *
8306 +finish_call(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
8307 +{
8308 + expressionS *exp = &current_insn.immediate;
8309 + symbolS *sym;
8310 + offsetT off;
8311 + int initial_size, max_size;
8312 + char *buf;
8313 +
8314 + initial_size = CALL_INITIAL_SIZE;
8315 +
8316 + if (avr32_pic)
8317 + {
8318 + if (linkrelax)
8319 + max_size = 10;
8320 + else
8321 + max_size = 4;
8322 + }
8323 + else
8324 + max_size = 4;
8325 +
8326 + frag_grow(max_size);
8327 + buf = frag_more(initial_size);
8328 + dwarf2_emit_insn(initial_size);
8329 +
8330 + frag_now->tc_frag_data.relaxer = &avr32_call_relaxer;
8331 +
8332 + if (exp->X_op == O_symbol)
8333 + {
8334 + sym = exp->X_add_symbol;
8335 + off = exp->X_add_number;
8336 + }
8337 + else
8338 + {
8339 + sym = make_expr_symbol(exp);
8340 + off = 0;
8341 + }
8342 +
8343 + if (!avr32_pic)
8344 + {
8345 + /* The relaxer will bump the refcount if necessary */
8346 + frag_now->tc_frag_data.pool
8347 + = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
8348 + }
8349 +
8350 + frag_var(rs_machine_dependent, max_size - initial_size,
8351 + initial_size, CALL_SUBTYPE_RCALL1, sym, off, buf);
8352 +
8353 + return NULL;
8354 +}
8355 +
8356 +void
8357 +md_begin (void)
8358 +{
8359 + unsigned long flags = 0;
8360 + int i;
8361 +
8362 + avr32_mnemonic_htab = hash_new();
8363 +
8364 + if (!avr32_mnemonic_htab)
8365 + as_fatal(_("virtual memory exhausted"));
8366 +
8367 + for (i = 0; i < AVR32_NR_MNEMONICS; i++)
8368 + {
8369 + hash_insert(avr32_mnemonic_htab, avr32_mnemonic_table[i].name,
8370 + (void *)&avr32_mnemonic_table[i]);
8371 + }
8372 +
8373 + if (linkrelax)
8374 + flags |= EF_AVR32_LINKRELAX;
8375 + if (avr32_pic)
8376 + flags |= EF_AVR32_PIC;
8377 +
8378 + bfd_set_private_flags(stdoutput, flags);
8379 +
8380 +#ifdef OPC_CONSISTENCY_CHECK
8381 + if (sizeof(avr32_operand_table)/sizeof(avr32_operand_table[0])
8382 + < AVR32_NR_OPERANDS)
8383 + as_fatal(_("operand table is incomplete"));
8384 +
8385 + for (i = 0; i < AVR32_NR_OPERANDS; i++)
8386 + if (avr32_operand_table[i].id != i)
8387 + as_fatal(_("operand table inconsistency found at index %d\n"), i);
8388 + pr_debug("%d operands verified\n", AVR32_NR_OPERANDS);
8389 +
8390 + for (i = 0; i < AVR32_NR_IFIELDS; i++)
8391 + if (avr32_ifield_table[i].id != i)
8392 + as_fatal(_("ifield table inconsistency found at index %d\n"), i);
8393 + pr_debug("%d instruction fields verified\n", AVR32_NR_IFIELDS);
8394 +
8395 + for (i = 0; i < AVR32_NR_OPCODES; i++)
8396 + {
8397 + if (avr32_opc_table[i].id != i)
8398 + as_fatal(_("opcode table inconsistency found at index %d\n"), i);
8399 + if ((avr32_opc_table[i].var_field == -1
8400 + && avr32_relax_table[i].length != 0)
8401 + || (avr32_opc_table[i].var_field != -1
8402 + && avr32_relax_table[i].length == 0))
8403 + as_fatal(_("relax table inconsistency found at index %d\n"), i);
8404 + }
8405 + pr_debug("%d opcodes verified\n", AVR32_NR_OPCODES);
8406 +
8407 + for (i = 0; i < AVR32_NR_SYNTAX; i++)
8408 + if (avr32_syntax_table[i].id != i)
8409 + as_fatal(_("syntax table inconsistency found at index %d\n"), i);
8410 + pr_debug("%d syntax variants verified\n", AVR32_NR_SYNTAX);
8411 +
8412 + for (i = 0; i < AVR32_NR_ALIAS; i++)
8413 + if (avr32_alias_table[i].id != i)
8414 + as_fatal(_("alias table inconsistency found at index %d\n"), i);
8415 + pr_debug("%d aliases verified\n", AVR32_NR_ALIAS);
8416 +
8417 + for (i = 0; i < AVR32_NR_MNEMONICS; i++)
8418 + if (avr32_mnemonic_table[i].id != i)
8419 + as_fatal(_("mnemonic table inconsistency found at index %d\n"), i);
8420 + pr_debug("%d mnemonics verified\n", AVR32_NR_MNEMONICS);
8421 +#endif
8422 +}
8423 +
8424 +void
8425 +md_assemble (char *str)
8426 +{
8427 + struct avr32_mnemonic *mnemonic;
8428 + char *p, c;
8429 +
8430 + memset(&current_insn, 0, sizeof(current_insn));
8431 + current_insn.immediate.X_op = O_constant;
8432 +
8433 + skip_whitespace(str);
8434 + for (p = str; *p; p++)
8435 + if (*p == ' ')
8436 + break;
8437 + c = *p;
8438 + *p = 0;
8439 +
8440 + mnemonic = hash_find(avr32_mnemonic_htab, str);
8441 + *p = c;
8442 + if (c) p++;
8443 +
8444 + if (mnemonic)
8445 + {
8446 + const struct avr32_syntax *syntax;
8447 +
8448 + for (syntax = mnemonic->syntax; syntax; syntax = syntax->next)
8449 + {
8450 + const char *errmsg = NULL;
8451 +
8452 + if (syntax_matches(syntax, p))
8453 + {
8454 + if (!(syntax->isa_flags & avr32_arch->isa_flags))
8455 + {
8456 + as_bad(_("Selected architecture `%s' does not support `%s'"),
8457 + avr32_arch->name, str);
8458 + return;
8459 + }
8460 +
8461 + current_insn.syntax = syntax;
8462 + parse_operands(p);
8463 +
8464 + switch (syntax->type)
8465 + {
8466 + case AVR32_PARSER_NORMAL:
8467 + errmsg = finish_insn(syntax->u.opc);
8468 + break;
8469 + case AVR32_PARSER_ALIAS:
8470 + errmsg = finish_alias(syntax->u.alias);
8471 + break;
8472 + case AVR32_PARSER_LDA:
8473 + errmsg = finish_lda(syntax);
8474 + break;
8475 + case AVR32_PARSER_CALL:
8476 + errmsg = finish_call(syntax);
8477 + break;
8478 + default:
8479 + BAD_CASE(syntax->type);
8480 + break;
8481 + }
8482 +
8483 + if (errmsg)
8484 + as_bad("%s in `%s'", errmsg, str);
8485 +
8486 + return;
8487 + }
8488 + }
8489 +
8490 + as_bad(_("unrecognized form of instruction: `%s'"), str);
8491 + }
8492 + else
8493 + as_bad(_("unrecognized instruction `%s'"), str);
8494 +}
8495 +
8496 +void avr32_cleanup(void)
8497 +{
8498 + struct cpool *pool;
8499 +
8500 + /* Emit any constant pools that haven't been explicitly flushed with
8501 + a .cpool directive. */
8502 + for (pool = cpool_list; pool; pool = pool->next)
8503 + {
8504 + subseg_set(pool->section, pool->sub_section);
8505 + s_cpool(0);
8506 + }
8507 +}
8508 +
8509 +/* Handle any PIC-related operands in data allocation pseudo-ops */
8510 +void
8511 +avr32_cons_fix_new (fragS *frag, int off, int size, expressionS *exp)
8512 +{
8513 + bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED;
8514 + int pcrel = 0;
8515 +
8516 + pr_debug("%s:%u: cons_fix_new, add_sym: %s, op_sym: %s, op: %d, add_num: %d\n",
8517 + frag->fr_file, frag->fr_line,
8518 + exp->X_add_symbol?S_GET_NAME(exp->X_add_symbol):"(none)",
8519 + exp->X_op_symbol?S_GET_NAME(exp->X_op_symbol):"(none)",
8520 + exp->X_op, exp->X_add_number);
8521 +
8522 + if (exp->X_op == O_subtract && exp->X_op_symbol)
8523 + {
8524 + if (exp->X_op_symbol == GOT_symbol)
8525 + {
8526 + if (size != 4)
8527 + goto bad_size;
8528 + r_type = BFD_RELOC_AVR32_GOTPC;
8529 + exp->X_op = O_symbol;
8530 + exp->X_op_symbol = NULL;
8531 + }
8532 + }
8533 + else if (exp->X_op == O_got)
8534 + {
8535 + switch (size)
8536 + {
8537 + case 1:
8538 + r_type = BFD_RELOC_AVR32_GOT8;
8539 + break;
8540 + case 2:
8541 + r_type = BFD_RELOC_AVR32_GOT16;
8542 + break;
8543 + case 4:
8544 + r_type = BFD_RELOC_AVR32_GOT32;
8545 + break;
8546 + default:
8547 + goto bad_size;
8548 + }
8549 +
8550 + exp->X_op = O_symbol;
8551 + }
8552 +
8553 + if (r_type == BFD_RELOC_UNUSED)
8554 + switch (size)
8555 + {
8556 + case 1:
8557 + r_type = BFD_RELOC_8;
8558 + break;
8559 + case 2:
8560 + r_type = BFD_RELOC_16;
8561 + break;
8562 + case 4:
8563 + r_type = BFD_RELOC_32;
8564 + break;
8565 + default:
8566 + goto bad_size;
8567 + }
8568 + else if (size != 4)
8569 + {
8570 + bad_size:
8571 + as_bad(_("unsupported BFD relocation size %u"), size);
8572 + r_type = BFD_RELOC_UNUSED;
8573 + }
8574 +
8575 + fix_new_exp (frag, off, size, exp, pcrel, r_type);
8576 +}
8577 +
8578 +static void
8579 +avr32_frob_section(bfd *abfd ATTRIBUTE_UNUSED, segT sec,
8580 + void *ignore ATTRIBUTE_UNUSED)
8581 +{
8582 + segment_info_type *seginfo;
8583 + fixS *fix;
8584 +
8585 + seginfo = seg_info(sec);
8586 + if (!seginfo)
8587 + return;
8588 +
8589 + for (fix = seginfo->fix_root; fix; fix = fix->fx_next)
8590 + {
8591 + if (fix->fx_done)
8592 + continue;
8593 +
8594 + if (fix->fx_r_type == BFD_RELOC_AVR32_SUB5
8595 + && fix->fx_addsy && fix->fx_subsy)
8596 + {
8597 + if (S_GET_SEGMENT(fix->fx_addsy) != S_GET_SEGMENT(fix->fx_subsy)
8598 + || linkrelax)
8599 + {
8600 + symbolS *tmp;
8601 +#ifdef DEBUG
8602 + fprintf(stderr, "Swapping symbols in fixup:\n");
8603 + print_fixup(fix);
8604 +#endif
8605 + tmp = fix->fx_addsy;
8606 + fix->fx_addsy = fix->fx_subsy;
8607 + fix->fx_subsy = tmp;
8608 + fix->fx_offset = -fix->fx_offset;
8609 + }
8610 + }
8611 + }
8612 +}
8613 +
8614 +/* We need to look for SUB5 instructions with expressions that will be
8615 + made PC-relative and switch fx_addsy with fx_subsy. This has to be
8616 + done before adjustment or the wrong symbol might be adjusted.
8617 +
8618 + This applies to fixups that are a result of expressions like -(sym
8619 + - .) and that will make it all the way to md_apply_fix3(). LDA
8620 + does the right thing in convert_frag, so we must not convert
8621 + those. */
8622 +void
8623 +avr32_frob_file(void)
8624 +{
8625 + /* if (1 || !linkrelax)
8626 + return; */
8627 +
8628 + bfd_map_over_sections(stdoutput, avr32_frob_section, NULL);
8629 +}
8630 +
8631 +static bfd_boolean
8632 +convert_to_diff_reloc(fixS *fixP)
8633 +{
8634 + switch (fixP->fx_r_type)
8635 + {
8636 + case BFD_RELOC_32:
8637 + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
8638 + break;
8639 + case BFD_RELOC_16:
8640 + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF16;
8641 + break;
8642 + case BFD_RELOC_8:
8643 + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF8;
8644 + break;
8645 + default:
8646 + return FALSE;
8647 + }
8648 +
8649 + return TRUE;
8650 +}
8651 +
8652 +/* Simplify a fixup. If possible, the fixup is reduced to a single
8653 + constant which is written to the output file. Otherwise, a
8654 + relocation is generated so that the linker can take care of the
8655 + rest.
8656 +
8657 + ELF relocations have certain constraints: They can only take a
8658 + single symbol and a single addend. This means that for difference
8659 + expressions, we _must_ get rid of the fx_subsy symbol somehow.
8660 +
8661 + The difference between two labels in the same section can be
8662 + calculated directly unless 'linkrelax' is set, or a relocation is
8663 + forced. If so, we must emit a R_AVR32_DIFFxx relocation. If there
8664 + are addends involved at this point, we must be especially careful
8665 + as the relocation must point exactly to the symbol being
8666 + subtracted.
8667 +
8668 + When subtracting a symbol defined in the same section as the fixup,
8669 + we might be able to convert it to a PC-relative expression, unless
8670 + linkrelax is set. If this is the case, there's no way we can make
8671 + sure that the difference between the fixup and fx_subsy stays
8672 + constant. So for now, we're just going to disallow that.
8673 + */
8674 +void
8675 +avr32_process_fixup(fixS *fixP, segT this_segment)
8676 +{
8677 + segT add_symbol_segment = absolute_section;
8678 + segT sub_symbol_segment = absolute_section;
8679 + symbolS *fx_addsy, *fx_subsy;
8680 + offsetT value = 0, fx_offset;
8681 + bfd_boolean apply = FALSE;
8682 +
8683 + assert(this_segment != absolute_section);
8684 +
8685 + if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
8686 + {
8687 + as_bad_where(fixP->fx_file, fixP->fx_line,
8688 + _("Bad relocation type %d\n"), fixP->fx_r_type);
8689 + return;
8690 + }
8691 +
8692 + /* BFD_RELOC_AVR32_SUB5 fixups have been swapped by avr32_frob_section() */
8693 + fx_addsy = fixP->fx_addsy;
8694 + fx_subsy = fixP->fx_subsy;
8695 + fx_offset = fixP->fx_offset;
8696 +
8697 + if (fx_addsy)
8698 + add_symbol_segment = S_GET_SEGMENT(fx_addsy);
8699 +
8700 + if (fx_subsy)
8701 + {
8702 + resolve_symbol_value(fx_subsy);
8703 + sub_symbol_segment = S_GET_SEGMENT(fx_subsy);
8704 +
8705 + if (sub_symbol_segment == this_segment
8706 + && (!linkrelax
8707 + || S_GET_VALUE(fx_subsy) == (fixP->fx_frag->fr_address
8708 + + fixP->fx_where)))
8709 + {
8710 + fixP->fx_pcrel = TRUE;
8711 + fx_offset += (fixP->fx_frag->fr_address + fixP->fx_where
8712 + - S_GET_VALUE(fx_subsy));
8713 + fx_subsy = NULL;
8714 + }
8715 + else if (sub_symbol_segment == absolute_section)
8716 + {
8717 + /* The symbol is really a constant. */
8718 + fx_offset -= S_GET_VALUE(fx_subsy);
8719 + fx_subsy = NULL;
8720 + }
8721 + else if (SEG_NORMAL(add_symbol_segment)
8722 + && sub_symbol_segment == add_symbol_segment
8723 + && (!linkrelax || convert_to_diff_reloc(fixP)))
8724 + {
8725 + /* Difference between two labels in the same section. */
8726 + if (linkrelax)
8727 + {
8728 + /* convert_to_diff() has ensured that the reloc type is
8729 + either DIFF32, DIFF16 or DIFF8. */
8730 + value = (S_GET_VALUE(fx_addsy) + fixP->fx_offset
8731 + - S_GET_VALUE(fx_subsy));
8732 +
8733 + /* Try to convert it to a section symbol if possible */
8734 + if (!S_FORCE_RELOC(fx_addsy, 1)
8735 + && !(sub_symbol_segment->flags & SEC_THREAD_LOCAL))
8736 + {
8737 + fx_offset = S_GET_VALUE(fx_subsy);
8738 + fx_addsy = section_symbol(sub_symbol_segment);
8739 + }
8740 + else
8741 + {
8742 + fx_addsy = fx_subsy;
8743 + fx_offset = 0;
8744 + }
8745 +
8746 + fx_subsy = NULL;
8747 + apply = TRUE;
8748 + }
8749 + else
8750 + {
8751 + fx_offset += S_GET_VALUE(fx_addsy);
8752 + fx_offset -= S_GET_VALUE(fx_subsy);
8753 + fx_addsy = NULL;
8754 + fx_subsy = NULL;
8755 + }
8756 + }
8757 + else
8758 + {
8759 + as_bad_where(fixP->fx_file, fixP->fx_line,
8760 + _("can't resolve `%s' {%s section} - `%s' {%s section}"),
8761 + fx_addsy ? S_GET_NAME (fx_addsy) : "0",
8762 + segment_name (add_symbol_segment),
8763 + S_GET_NAME (fx_subsy),
8764 + segment_name (sub_symbol_segment));
8765 + return;
8766 + }
8767 + }
8768 +
8769 + if (fx_addsy && !TC_FORCE_RELOCATION(fixP))
8770 + {
8771 + if (add_symbol_segment == this_segment
8772 + && fixP->fx_pcrel)
8773 + {
8774 + value += S_GET_VALUE(fx_addsy);
8775 + value -= md_pcrel_from_section(fixP, this_segment);
8776 + fx_addsy = NULL;
8777 + fixP->fx_pcrel = FALSE;
8778 + }
8779 + else if (add_symbol_segment == absolute_section)
8780 + {
8781 + fx_offset += S_GET_VALUE(fixP->fx_addsy);
8782 + fx_addsy = NULL;
8783 + }
8784 + }
8785 +
8786 + if (!fx_addsy)
8787 + fixP->fx_done = TRUE;
8788 +
8789 + if (fixP->fx_pcrel)
8790 + {
8791 + if (fx_addsy != NULL
8792 + && S_IS_DEFINED(fx_addsy)
8793 + && S_GET_SEGMENT(fx_addsy) != this_segment)
8794 + value += md_pcrel_from_section(fixP, this_segment);
8795 +
8796 + switch (fixP->fx_r_type)
8797 + {
8798 + case BFD_RELOC_32:
8799 + fixP->fx_r_type = BFD_RELOC_32_PCREL;
8800 + break;
8801 + case BFD_RELOC_16:
8802 + fixP->fx_r_type = BFD_RELOC_16_PCREL;
8803 + break;
8804 + case BFD_RELOC_8:
8805 + fixP->fx_r_type = BFD_RELOC_8_PCREL;
8806 + break;
8807 + case BFD_RELOC_AVR32_SUB5:
8808 + fixP->fx_r_type = BFD_RELOC_AVR32_16N_PCREL;
8809 + break;
8810 + case BFD_RELOC_AVR32_16S:
8811 + fixP->fx_r_type = BFD_RELOC_AVR32_16B_PCREL;
8812 + break;
8813 + case BFD_RELOC_AVR32_14UW:
8814 + fixP->fx_r_type = BFD_RELOC_AVR32_14UW_PCREL;
8815 + break;
8816 + case BFD_RELOC_AVR32_10UW:
8817 + fixP->fx_r_type = BFD_RELOC_AVR32_10UW_PCREL;
8818 + break;
8819 + default:
8820 + /* Should have been taken care of already */
8821 + break;
8822 + }
8823 + }
8824 +
8825 + if (fixP->fx_done || apply)
8826 + {
8827 + const struct avr32_ifield *ifield;
8828 + char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
8829 +
8830 + if (fixP->fx_done)
8831 + value += fx_offset;
8832 +
8833 + switch (fixP->fx_r_type)
8834 + {
8835 + case BFD_RELOC_32:
8836 + case BFD_RELOC_16:
8837 + case BFD_RELOC_8:
8838 + case BFD_RELOC_AVR32_DIFF32:
8839 + case BFD_RELOC_AVR32_DIFF16:
8840 + case BFD_RELOC_AVR32_DIFF8:
8841 + md_number_to_chars(buf, value, fixP->fx_size);
8842 + break;
8843 + case BFD_RELOC_HI16:
8844 + value >>= 16;
8845 + case BFD_RELOC_LO16:
8846 + value &= 0xffff;
8847 + md_number_to_chars(buf + 2, value, 2);
8848 + break;
8849 + case BFD_RELOC_AVR32_16N_PCREL:
8850 + value = -value;
8851 + /* fall through */
8852 + case BFD_RELOC_AVR32_22H_PCREL:
8853 + case BFD_RELOC_AVR32_18W_PCREL:
8854 + case BFD_RELOC_AVR32_16B_PCREL:
8855 + case BFD_RELOC_AVR32_11H_PCREL:
8856 + case BFD_RELOC_AVR32_9H_PCREL:
8857 + case BFD_RELOC_AVR32_9UW_PCREL:
8858 + case BFD_RELOC_AVR32_3U:
8859 + case BFD_RELOC_AVR32_4UH:
8860 + case BFD_RELOC_AVR32_6UW:
8861 + case BFD_RELOC_AVR32_6S:
8862 + case BFD_RELOC_AVR32_7UW:
8863 + case BFD_RELOC_AVR32_8S_EXT:
8864 + case BFD_RELOC_AVR32_8S:
8865 + case BFD_RELOC_AVR32_10UW:
8866 + case BFD_RELOC_AVR32_10SW:
8867 + case BFD_RELOC_AVR32_STHH_W:
8868 + case BFD_RELOC_AVR32_14UW:
8869 + case BFD_RELOC_AVR32_16S:
8870 + case BFD_RELOC_AVR32_16U:
8871 + case BFD_RELOC_AVR32_21S:
8872 + case BFD_RELOC_AVR32_SUB5:
8873 + case BFD_RELOC_AVR32_CPCALL:
8874 + case BFD_RELOC_AVR32_16_CP:
8875 + case BFD_RELOC_AVR32_9W_CP:
8876 + case BFD_RELOC_AVR32_15S:
8877 + ifield = fixP->tc_fix_data.ifield;
8878 + pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
8879 + fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
8880 + fixP->tc_fix_data.align);
8881 + if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
8882 + as_bad_where(fixP->fx_file, fixP->fx_line,
8883 + _("operand out of range (%ld not between %ld and %ld)"),
8884 + value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
8885 + if (value & ((1 << fixP->tc_fix_data.align) - 1))
8886 + as_bad_where(fixP->fx_file, fixP->fx_line,
8887 + _("misaligned operand (required alignment: %d)"),
8888 + 1 << fixP->tc_fix_data.align);
8889 + ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
8890 + break;
8891 + case BFD_RELOC_AVR32_ALIGN:
8892 + /* Nothing to do */
8893 + fixP->fx_done = FALSE;
8894 + break;
8895 + default:
8896 + as_fatal("reloc type %s not handled\n",
8897 + bfd_get_reloc_code_name(fixP->fx_r_type));
8898 + }
8899 + }
8900 +
8901 + fixP->fx_addsy = fx_addsy;
8902 + fixP->fx_subsy = fx_subsy;
8903 + fixP->fx_offset = fx_offset;
8904 +
8905 + if (!fixP->fx_done)
8906 + {
8907 + if (!fixP->fx_addsy)
8908 + fixP->fx_addsy = abs_section_sym;
8909 +
8910 + symbol_mark_used_in_reloc(fixP->fx_addsy);
8911 + if (fixP->fx_subsy)
8912 + abort();
8913 + }
8914 +}
8915 +
8916 +#if 0
8917 +void
8918 +md_apply_fix3 (fixS *fixP, valueT *valP, segT seg)
8919 +{
8920 + const struct avr32_ifield *ifield;
8921 + offsetT value = *valP;
8922 + char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
8923 + bfd_boolean apply;
8924 +
8925 + pr_debug("%s:%u: apply_fix3: r_type=%d value=%lx offset=%lx\n",
8926 + fixP->fx_file, fixP->fx_line, fixP->fx_r_type, *valP,
8927 + fixP->fx_offset);
8928 +
8929 + if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
8930 + {
8931 + as_bad_where(fixP->fx_file, fixP->fx_line,
8932 + _("Bad relocation type %d\n"), fixP->fx_r_type);
8933 + return;
8934 + }
8935 +
8936 + if (!fixP->fx_addsy && !fixP->fx_subsy)
8937 + fixP->fx_done = 1;
8938 +
8939 + if (fixP->fx_pcrel)
8940 + {
8941 + if (fixP->fx_addsy != NULL
8942 + && S_IS_DEFINED(fixP->fx_addsy)
8943 + && S_GET_SEGMENT(fixP->fx_addsy) != seg)
8944 + value += md_pcrel_from_section(fixP, seg);
8945 +
8946 + switch (fixP->fx_r_type)
8947 + {
8948 + case BFD_RELOC_32:
8949 + fixP->fx_r_type = BFD_RELOC_32_PCREL;
8950 + break;
8951 + case BFD_RELOC_16:
8952 + case BFD_RELOC_8:
8953 + as_bad_where (fixP->fx_file, fixP->fx_line,
8954 + _("8- and 16-bit PC-relative relocations not supported"));
8955 + break;
8956 + case BFD_RELOC_AVR32_SUB5:
8957 + fixP->fx_r_type = BFD_RELOC_AVR32_PCREL_SUB5;
8958 + break;
8959 + case BFD_RELOC_AVR32_16S:
8960 + fixP->fx_r_type = BFD_RELOC_AVR32_16_PCREL;
8961 + break;
8962 + default:
8963 + /* Should have been taken care of already */
8964 + break;
8965 + }
8966 + }
8967 +
8968 + if (fixP->fx_r_type == BFD_RELOC_32
8969 + && fixP->fx_subsy)
8970 + {
8971 + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
8972 +
8973 + /* Offsets are only allowed if it's a result of adjusting a
8974 + local symbol into a section-relative offset.
8975 + tc_fix_adjustable() should prevent any adjustment if there
8976 + was an offset involved before. */
8977 + if (fixP->fx_offset && !symbol_section_p(fixP->fx_addsy))
8978 + as_bad_where(fixP->fx_file, fixP->fx_line,
8979 + _("cannot represent symbol difference with an offset"));
8980 +
8981 + value = (S_GET_VALUE(fixP->fx_addsy) + fixP->fx_offset
8982 + - S_GET_VALUE(fixP->fx_subsy));
8983 +
8984 + /* The difference before any relaxing takes place is written
8985 + out, and the DIFF32 reloc identifies the address of the first
8986 + symbol (i.e. the on that's subtracted.) */
8987 + *valP = value;
8988 + fixP->fx_offset -= value;
8989 + fixP->fx_subsy = NULL;
8990 +
8991 + md_number_to_chars(buf, value, fixP->fx_size);
8992 + }
8993 +
8994 + if (fixP->fx_done)
8995 + {
8996 + switch (fixP->fx_r_type)
8997 + {
8998 + case BFD_RELOC_8:
8999 + case BFD_RELOC_16:
9000 + case BFD_RELOC_32:
9001 + md_number_to_chars(buf, value, fixP->fx_size);
9002 + break;
9003 + case BFD_RELOC_HI16:
9004 + value >>= 16;
9005 + case BFD_RELOC_LO16:
9006 + value &= 0xffff;
9007 + *valP = value;
9008 + md_number_to_chars(buf + 2, value, 2);
9009 + break;
9010 + case BFD_RELOC_AVR32_PCREL_SUB5:
9011 + value = -value;
9012 + /* fall through */
9013 + case BFD_RELOC_AVR32_9_PCREL:
9014 + case BFD_RELOC_AVR32_11_PCREL:
9015 + case BFD_RELOC_AVR32_16_PCREL:
9016 + case BFD_RELOC_AVR32_18_PCREL:
9017 + case BFD_RELOC_AVR32_22_PCREL:
9018 + case BFD_RELOC_AVR32_3U:
9019 + case BFD_RELOC_AVR32_4UH:
9020 + case BFD_RELOC_AVR32_6UW:
9021 + case BFD_RELOC_AVR32_6S:
9022 + case BFD_RELOC_AVR32_7UW:
9023 + case BFD_RELOC_AVR32_8S:
9024 + case BFD_RELOC_AVR32_10UW:
9025 + case BFD_RELOC_AVR32_10SW:
9026 + case BFD_RELOC_AVR32_14UW:
9027 + case BFD_RELOC_AVR32_16S:
9028 + case BFD_RELOC_AVR32_16U:
9029 + case BFD_RELOC_AVR32_21S:
9030 + case BFD_RELOC_AVR32_BRC1:
9031 + case BFD_RELOC_AVR32_SUB5:
9032 + case BFD_RELOC_AVR32_CPCALL:
9033 + case BFD_RELOC_AVR32_16_CP:
9034 + case BFD_RELOC_AVR32_9_CP:
9035 + case BFD_RELOC_AVR32_15S:
9036 + ifield = fixP->tc_fix_data.ifield;
9037 + pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
9038 + fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
9039 + fixP->tc_fix_data.align);
9040 + if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
9041 + as_bad_where(fixP->fx_file, fixP->fx_line,
9042 + _("operand out of range (%ld not between %ld and %ld)"),
9043 + value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
9044 + if (value & ((1 << fixP->tc_fix_data.align) - 1))
9045 + as_bad_where(fixP->fx_file, fixP->fx_line,
9046 + _("misaligned operand (required alignment: %d)"),
9047 + 1 << fixP->tc_fix_data.align);
9048 + ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
9049 + break;
9050 + case BFD_RELOC_AVR32_ALIGN:
9051 + /* Nothing to do */
9052 + fixP->fx_done = FALSE;
9053 + break;
9054 + default:
9055 + as_fatal("reloc type %s not handled\n",
9056 + bfd_get_reloc_code_name(fixP->fx_r_type));
9057 + }
9058 + }
9059 +}
9060 +#endif
9061 +
9062 +arelent *
9063 +tc_gen_reloc (asection *section ATTRIBUTE_UNUSED,
9064 + fixS *fixp)
9065 +{
9066 + arelent *reloc;
9067 + bfd_reloc_code_real_type code;
9068 +
9069 + reloc = xmalloc (sizeof (arelent));
9070 +
9071 + reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *));
9072 + *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
9073 + reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
9074 + reloc->addend = fixp->fx_offset;
9075 + code = fixp->fx_r_type;
9076 +
9077 + reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
9078 +
9079 + if (reloc->howto == NULL)
9080 + {
9081 + as_bad_where (fixp->fx_file, fixp->fx_line,
9082 + _("cannot represent relocation %s in this object file format"),
9083 + bfd_get_reloc_code_name (code));
9084 + return NULL;
9085 + }
9086 +
9087 + return reloc;
9088 +}
9089 +
9090 +bfd_boolean
9091 +avr32_force_reloc(fixS *fixP)
9092 +{
9093 + if (linkrelax && fixP->fx_addsy
9094 + && !(S_GET_SEGMENT(fixP->fx_addsy)->flags & SEC_DEBUGGING)
9095 + && S_GET_SEGMENT(fixP->fx_addsy) != absolute_section)
9096 + {
9097 + pr_debug(stderr, "force reloc: addsy=%p, r_type=%d, sec=%s\n",
9098 + fixP->fx_addsy, fixP->fx_r_type, S_GET_SEGMENT(fixP->fx_addsy)->name);
9099 + return 1;
9100 + }
9101 +
9102 + return generic_force_reloc(fixP);
9103 +}
9104 +
9105 +bfd_boolean
9106 +avr32_fix_adjustable(fixS *fixP)
9107 +{
9108 + switch (fixP->fx_r_type)
9109 + {
9110 + /* GOT relocations can't have addends since BFD treats all
9111 + references to a given symbol the same. This means that we
9112 + must avoid section-relative references to local symbols when
9113 + dealing with these kinds of relocs */
9114 + case BFD_RELOC_AVR32_GOT32:
9115 + case BFD_RELOC_AVR32_GOT16:
9116 + case BFD_RELOC_AVR32_GOT8:
9117 + case BFD_RELOC_AVR32_GOT21S:
9118 + case BFD_RELOC_AVR32_GOT18SW:
9119 + case BFD_RELOC_AVR32_GOT16S:
9120 + case BFD_RELOC_AVR32_LDA_GOT:
9121 + case BFD_RELOC_AVR32_GOTCALL:
9122 + pr_debug("fix not adjustable\n");
9123 + return 0;
9124 +
9125 + default:
9126 + break;
9127 + }
9128 +
9129 + return 1;
9130 +}
9131 +
9132 +/* When we want the linker to be able to relax the code, we need to
9133 + output a reloc for every .align directive requesting an alignment
9134 + to a four byte boundary or larger. If we don't do this, the linker
9135 + can't guarantee that the alignment is actually maintained in the
9136 + linker output.
9137 +
9138 + TODO: Might as well insert proper NOPs while we're at it... */
9139 +void
9140 +avr32_handle_align(fragS *frag)
9141 +{
9142 + if (linkrelax
9143 + && frag->fr_type == rs_align_code
9144 + && frag->fr_address + frag->fr_fix > 0
9145 + && frag->fr_offset > 0)
9146 + {
9147 + /* The alignment order (fr_offset) is stored in the addend. */
9148 + fix_new(frag, frag->fr_fix, 2, &abs_symbol, frag->fr_offset,
9149 + FALSE, BFD_RELOC_AVR32_ALIGN);
9150 + }
9151 +}
9152 +
9153 +/* Relax_align. Advance location counter to next address that has 'alignment'
9154 + lowest order bits all 0s, return size of adjustment made. */
9155 +relax_addressT
9156 +avr32_relax_align(segT segment ATTRIBUTE_UNUSED,
9157 + fragS *fragP,
9158 + relax_addressT address)
9159 +{
9160 + relax_addressT mask;
9161 + relax_addressT new_address;
9162 + int alignment;
9163 +
9164 + alignment = fragP->fr_offset;
9165 + mask = ~((~0) << alignment);
9166 + new_address = (address + mask) & (~mask);
9167 +
9168 + return new_address - address;
9169 +}
9170 +
9171 +/* Turn a string in input_line_pointer into a floating point constant
9172 + of type type, and store the appropriate bytes in *litP. The number
9173 + of LITTLENUMS emitted is stored in *sizeP . An error message is
9174 + returned, or NULL on OK. */
9175 +
9176 +/* Equal to MAX_PRECISION in atof-ieee.c */
9177 +#define MAX_LITTLENUMS 6
9178 +
9179 +char *
9180 +md_atof (type, litP, sizeP)
9181 +char type;
9182 +char * litP;
9183 +int * sizeP;
9184 +{
9185 + int i;
9186 + int prec;
9187 + LITTLENUM_TYPE words [MAX_LITTLENUMS];
9188 + char * t;
9189 +
9190 + switch (type)
9191 + {
9192 + case 'f':
9193 + case 'F':
9194 + case 's':
9195 + case 'S':
9196 + prec = 2;
9197 + break;
9198 +
9199 + case 'd':
9200 + case 'D':
9201 + case 'r':
9202 + case 'R':
9203 + prec = 4;
9204 + break;
9205 +
9206 + /* FIXME: Some targets allow other format chars for bigger sizes here. */
9207 +
9208 + default:
9209 + * sizeP = 0;
9210 + return _("Bad call to md_atof()");
9211 + }
9212 +
9213 + t = atof_ieee (input_line_pointer, type, words);
9214 + if (t)
9215 + input_line_pointer = t;
9216 + * sizeP = prec * sizeof (LITTLENUM_TYPE);
9217 +
9218 + for (i = 0; i < prec; i++)
9219 + {
9220 + md_number_to_chars (litP, (valueT) words[i],
9221 + sizeof (LITTLENUM_TYPE));
9222 + litP += sizeof (LITTLENUM_TYPE);
9223 + }
9224 +
9225 + return 0;
9226 +}
9227 +
9228 +static char *avr32_end_of_match(char *cont, char *what)
9229 +{
9230 + int len = strlen (what);
9231 +
9232 + if (! is_part_of_name (cont[len])
9233 + && strncasecmp (cont, what, len) == 0)
9234 + return cont + len;
9235 +
9236 + return NULL;
9237 +}
9238 +
9239 +int
9240 +avr32_parse_name (char const *name, expressionS *exp, char *nextchar)
9241 +{
9242 + char *next = input_line_pointer;
9243 + char *next_end;
9244 +
9245 + pr_debug("parse_name: %s, nextchar=%c (%02x)\n", name, *nextchar, *nextchar);
9246 +
9247 + if (*nextchar == '(')
9248 + {
9249 + if (strcasecmp(name, "hi") == 0)
9250 + {
9251 + *next = *nextchar;
9252 +
9253 + expression(exp);
9254 +
9255 + if (exp->X_op == O_constant)
9256 + {
9257 + pr_debug(" -> constant hi(0x%08lx) -> 0x%04lx\n",
9258 + exp->X_add_number, exp->X_add_number >> 16);
9259 + exp->X_add_number = (exp->X_add_number >> 16) & 0xffff;
9260 + }
9261 + else
9262 + {
9263 + exp->X_md = exp->X_op;
9264 + exp->X_op = O_hi;
9265 + }
9266 +
9267 + return 1;
9268 + }
9269 + else if (strcasecmp(name, "lo") == 0)
9270 + {
9271 + *next = *nextchar;
9272 +
9273 + expression(exp);
9274 +
9275 + if (exp->X_op == O_constant)
9276 + exp->X_add_number &= 0xffff;
9277 + else
9278 + {
9279 + exp->X_md = exp->X_op;
9280 + exp->X_op = O_lo;
9281 + }
9282 +
9283 + return 1;
9284 + }
9285 + }
9286 + else if (*nextchar == '@')
9287 + {
9288 + exp->X_md = exp->X_op;
9289 +
9290 + if ((next_end = avr32_end_of_match (next + 1, "got")))
9291 + exp->X_op = O_got;
9292 + else if ((next_end = avr32_end_of_match (next + 1, "tlsgd")))
9293 + exp->X_op = O_tlsgd;
9294 + /* Add more as needed */
9295 + else
9296 + {
9297 + char c;
9298 + input_line_pointer++;
9299 + c = get_symbol_end();
9300 + as_bad (_("unknown relocation override `%s'"), next + 1);
9301 + *input_line_pointer = c;
9302 + input_line_pointer = next;
9303 + return 0;
9304 + }
9305 +
9306 + exp->X_op_symbol = NULL;
9307 + exp->X_add_symbol = symbol_find_or_make (name);
9308 + exp->X_add_number = 0;
9309 +
9310 + *input_line_pointer = *nextchar;
9311 + input_line_pointer = next_end;
9312 + *nextchar = *input_line_pointer;
9313 + *input_line_pointer = '\0';
9314 + return 1;
9315 + }
9316 + else if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0)
9317 + {
9318 + if (!GOT_symbol)
9319 + GOT_symbol = symbol_find_or_make(name);
9320 +
9321 + exp->X_add_symbol = GOT_symbol;
9322 + exp->X_op = O_symbol;
9323 + exp->X_add_number = 0;
9324 + return 1;
9325 + }
9326 +
9327 + return 0;
9328 +}
9329 +
9330 +static void
9331 +s_rseg (int value ATTRIBUTE_UNUSED)
9332 +{
9333 + /* Syntax: RSEG segment_name [:type] [NOROOT|ROOT] [(align)]
9334 + * Defaults:
9335 + * - type: undocumented ("typically CODE or DATA")
9336 + * - ROOT
9337 + * - align: 1 for code, 0 for others
9338 + *
9339 + * TODO: NOROOT is ignored. If gas supports discardable segments, it should
9340 + * be implemented.
9341 + */
9342 + char *name, *end;
9343 + int length, type, attr;
9344 + int align = 0;
9345 +
9346 + SKIP_WHITESPACE();
9347 +
9348 + end = input_line_pointer;
9349 + while (0 == strchr ("\n\t;:( ", *end))
9350 + end++;
9351 + if (end == input_line_pointer)
9352 + {
9353 + as_warn (_("missing name"));
9354 + ignore_rest_of_line();
9355 + return;
9356 + }
9357 +
9358 + name = xmalloc (end - input_line_pointer + 1);
9359 + memcpy (name, input_line_pointer, end - input_line_pointer);
9360 + name[end - input_line_pointer] = '\0';
9361 + input_line_pointer = end;
9362 +
9363 + SKIP_WHITESPACE();
9364 +
9365 + type = SHT_NULL;
9366 + attr = 0;
9367 +
9368 + if (*input_line_pointer == ':')
9369 + {
9370 + /* Skip the colon */
9371 + ++input_line_pointer;
9372 + SKIP_WHITESPACE();
9373 +
9374 + /* Possible options at this point:
9375 + * - flag (ROOT or NOROOT)
9376 + * - a segment type
9377 + */
9378 + end = input_line_pointer;
9379 + while (0 == strchr ("\n\t;:( ", *end))
9380 + end++;
9381 + length = end - input_line_pointer;
9382 + if (((length == 4) && (0 == strncasecmp( input_line_pointer, "ROOT", 4))) ||
9383 + ((length == 6) && (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
9384 + {
9385 + /* Ignore ROOT/NOROOT */
9386 + input_line_pointer = end;
9387 + }
9388 + else
9389 + {
9390 + /* Must be a segment type */
9391 + switch (*input_line_pointer)
9392 + {
9393 + case 'C':
9394 + case 'c':
9395 + if ((length == 4) &&
9396 + (0 == strncasecmp (input_line_pointer, "CODE", 4)))
9397 + {
9398 + attr |= SHF_ALLOC | SHF_EXECINSTR;
9399 + type = SHT_PROGBITS;
9400 + align = 1;
9401 + break;
9402 + }
9403 + if ((length == 5) &&
9404 + (0 == strncasecmp (input_line_pointer, "CONST", 5)))
9405 + {
9406 + attr |= SHF_ALLOC;
9407 + type = SHT_PROGBITS;
9408 + break;
9409 + }
9410 + goto de_fault;
9411 +
9412 + case 'D':
9413 + case 'd':
9414 + if ((length == 4) &&
9415 + (0 == strncasecmp (input_line_pointer, "DATA", 4)))
9416 + {
9417 + attr |= SHF_ALLOC | SHF_WRITE;
9418 + type = SHT_PROGBITS;
9419 + break;
9420 + }
9421 + goto de_fault;
9422 +
9423 + /* TODO: Add FAR*, HUGE*, IDATA and NEAR* if necessary */
9424 +
9425 + case 'U':
9426 + case 'u':
9427 + if ((length == 7) &&
9428 + (0 == strncasecmp (input_line_pointer, "UNTYPED", 7)))
9429 + break;
9430 + goto de_fault;
9431 +
9432 + /* TODO: Add XDATA and ZPAGE if necessary */
9433 +
9434 + de_fault:
9435 + default:
9436 + as_warn (_("unrecognized segment type"));
9437 + }
9438 +
9439 + input_line_pointer = end;
9440 + SKIP_WHITESPACE();
9441 +
9442 + if (*input_line_pointer == ':')
9443 + {
9444 + /* ROOT/NOROOT */
9445 + ++input_line_pointer;
9446 + SKIP_WHITESPACE();
9447 +
9448 + end = input_line_pointer;
9449 + while (0 == strchr ("\n\t;:( ", *end))
9450 + end++;
9451 + length = end - input_line_pointer;
9452 + if (! ((length == 4) &&
9453 + (0 == strncasecmp( input_line_pointer, "ROOT", 4))) &&
9454 + ! ((length == 6) &&
9455 + (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
9456 + {
9457 + as_warn (_("unrecognized segment flag"));
9458 + }
9459 +
9460 + input_line_pointer = end;
9461 + SKIP_WHITESPACE();
9462 + }
9463 + }
9464 + }
9465 +
9466 + if (*input_line_pointer == '(')
9467 + {
9468 + align = get_absolute_expression ();
9469 + }
9470 +
9471 + demand_empty_rest_of_line();
9472 +
9473 + obj_elf_change_section (name, type, attr, 0, NULL, 0, 0);
9474 +#ifdef AVR32_DEBUG
9475 + fprintf( stderr, "RSEG: Changed section to %s, type: 0x%x, attr: 0x%x\n",
9476 + name, type, attr );
9477 + fprintf( stderr, "RSEG: Aligning to 2**%d\n", align );
9478 +#endif
9479 +
9480 + if (align > 15)
9481 + {
9482 + align = 15;
9483 + as_warn (_("alignment too large: %u assumed"), align);
9484 + }
9485 +
9486 + /* Hope not, that is */
9487 + assert (now_seg != absolute_section);
9488 +
9489 + /* Only make a frag if we HAVE to... */
9490 + if (align != 0 && !need_pass_2)
9491 + {
9492 + if (subseg_text_p (now_seg))
9493 + frag_align_code (align, 0);
9494 + else
9495 + frag_align (align, 0, 0);
9496 + }
9497 +
9498 + record_alignment (now_seg, align - OCTETS_PER_BYTE_POWER);
9499 +}
9500 +
9501 +/* vim: syntax=c sw=2
9502 + */
9503 Index: binutils-2.18/gas/config/tc-avr32.h
9504 ===================================================================
9505 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
9506 +++ binutils-2.18/gas/config/tc-avr32.h 2008-11-25 15:25:40.000000000 +0100
9507 @@ -0,0 +1,325 @@
9508 +/* Assembler definitions for AVR32.
9509 + Copyright 2003-2006 Atmel Corporation.
9510 +
9511 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
9512 +
9513 + This file is part of GAS, the GNU Assembler.
9514 +
9515 + GAS is free software; you can redistribute it and/or modify it
9516 + under the terms of the GNU General Public License as published by
9517 + the Free Software Foundation; either version 2, or (at your option)
9518 + any later version.
9519 +
9520 + GAS is distributed in the hope that it will be useful, but WITHOUT
9521 + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
9522 + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
9523 + License for more details.
9524 +
9525 + You should have received a copy of the GNU General Public License
9526 + along with GAS; see the file COPYING. If not, write to the Free
9527 + Software Foundation, 59 Temple Place - Suite 330, Boston, MA
9528 + 02111-1307, USA. */
9529 +
9530 +#if 0
9531 +#define DEBUG
9532 +#define DEBUG1
9533 +#define DEBUG2
9534 +#define DEBUG3
9535 +#define DEBUG4
9536 +#define DEBUG5
9537 +#endif
9538 +
9539 +/* Are we trying to be compatible with the IAR assembler? (--iar) */
9540 +extern int avr32_iarcompat;
9541 +
9542 +/* By convention, you should define this macro in the `.h' file. For
9543 + example, `tc-m68k.h' defines `TC_M68K'. You might have to use this
9544 + if it is necessary to add CPU specific code to the object format
9545 + file. */
9546 +#define TC_AVR32
9547 +
9548 +/* This macro is the BFD target name to use when creating the output
9549 + file. This will normally depend upon the `OBJ_FMT' macro. */
9550 +#define TARGET_FORMAT "elf32-avr32"
9551 +
9552 +/* This macro is the BFD architecture to pass to `bfd_set_arch_mach'. */
9553 +#define TARGET_ARCH bfd_arch_avr32
9554 +
9555 +/* This macro is the BFD machine number to pass to
9556 + `bfd_set_arch_mach'. If it is not defined, GAS will use 0. */
9557 +#define TARGET_MACH 0
9558 +
9559 +/* UNDOCUMENTED: Allow //-style comments */
9560 +#define DOUBLESLASH_LINE_COMMENTS
9561 +
9562 +/* You should define this macro to be non-zero if the target is big
9563 + endian, and zero if the target is little endian. */
9564 +#define TARGET_BYTES_BIG_ENDIAN 1
9565 +
9566 +/* FIXME: It seems that GAS only expects a one-byte opcode...
9567 + #define NOP_OPCODE 0xd703 */
9568 +
9569 +/* If you define this macro, GAS will warn about the use of
9570 + nonstandard escape sequences in a string. */
9571 +#undef ONLY_STANDARD_ESCAPES
9572 +
9573 +#define DWARF2_FORMAT() dwarf2_format_32bit
9574 +
9575 +/* Instructions are either 2 or 4 bytes long */
9576 +/* #define DWARF2_LINE_MIN_INSN_LENGTH 2 */
9577 +
9578 +/* GAS will call this function for any expression that can not be
9579 + recognized. When the function is called, `input_line_pointer'
9580 + will point to the start of the expression. */
9581 +#define md_operand(x)
9582 +
9583 +#define md_parse_name(name, expr, mode, c) avr32_parse_name(name, expr, c)
9584 +extern int avr32_parse_name(const char *, struct expressionS *, char *);
9585 +
9586 +/* You may define this macro to generate a fixup for a data
9587 + allocation pseudo-op. */
9588 +#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP) \
9589 + avr32_cons_fix_new(FRAG, OFF, LEN, EXP)
9590 +void avr32_cons_fix_new (fragS *, int, int, expressionS *);
9591 +
9592 +/* `extsym - .' expressions can be emitted using PC-relative relocs */
9593 +#define DIFF_EXPR_OK
9594 +
9595 +/* This is used to construct expressions out of @gotoff, etc. The
9596 + relocation type is stored in X_md */
9597 +#define O_got O_md1
9598 +#define O_hi O_md2
9599 +#define O_lo O_md3
9600 +#define O_tlsgd O_md4
9601 +
9602 +/* You may define this macro to parse an expression used in a data
9603 + allocation pseudo-op such as `.word'. You can use this to
9604 + recognize relocation directives that may appear in such directives. */
9605 +/* #define TC_PARSE_CONS_EXPRESSION(EXPR,N) avr_parse_cons_expression (EXPR,N)
9606 + void avr_parse_cons_expression (expressionS *exp, int nbytes); */
9607 +
9608 +/* This should just call either `number_to_chars_bigendian' or
9609 + `number_to_chars_littleendian', whichever is appropriate. On
9610 + targets like the MIPS which support options to change the
9611 + endianness, which function to call is a runtime decision. On
9612 + other targets, `md_number_to_chars' can be a simple macro. */
9613 +#define md_number_to_chars number_to_chars_bigendian
9614 +
9615 +/* `md_short_jump_size'
9616 + `md_long_jump_size'
9617 + `md_create_short_jump'
9618 + `md_create_long_jump'
9619 + If `WORKING_DOT_WORD' is defined, GAS will not do broken word
9620 + processing (*note Broken words::.). Otherwise, you should set
9621 + `md_short_jump_size' to the size of a short jump (a jump that is
9622 + just long enough to jump around a long jmp) and
9623 + `md_long_jump_size' to the size of a long jump (a jump that can go
9624 + anywhere in the function), You should define
9625 + `md_create_short_jump' to create a short jump around a long jump,
9626 + and define `md_create_long_jump' to create a long jump. */
9627 +#define WORKING_DOT_WORD
9628 +
9629 +/* If you define this macro, it means that `tc_gen_reloc' may return
9630 + multiple relocation entries for a single fixup. In this case, the
9631 + return value of `tc_gen_reloc' is a pointer to a null terminated
9632 + array. */
9633 +#undef RELOC_EXPANSION_POSSIBLE
9634 +
9635 +/* If you define this macro, GAS will not require pseudo-ops to start with a .
9636 + character. */
9637 +#define NO_PSEUDO_DOT (avr32_iarcompat)
9638 +
9639 +/* The IAR assembler uses $ as the location counter. Unfortunately, we
9640 + can't make this dependent on avr32_iarcompat... */
9641 +#define DOLLAR_DOT
9642 +
9643 +/* Values passed to md_apply_fix3 don't include the symbol value. */
9644 +#define MD_APPLY_SYM_VALUE(FIX) 0
9645 +
9646 +/* The number of bytes to put into a word in a listing. This affects
9647 + the way the bytes are clumped together in the listing. For
9648 + example, a value of 2 might print `1234 5678' where a value of 1
9649 + would print `12 34 56 78'. The default value is 4. */
9650 +#define LISTING_WORD_SIZE 4
9651 +
9652 +/* extern const struct relax_type md_relax_table[];
9653 +#define TC_GENERIC_RELAX_TABLE md_relax_table */
9654 +
9655 +/*
9656 + An `.lcomm' directive with no explicit alignment parameter will use
9657 + this macro to set P2VAR to the alignment that a request for SIZE
9658 + bytes will have. The alignment is expressed as a power of two. If
9659 + no alignment should take place, the macro definition should do
9660 + nothing. Some targets define a `.bss' directive that is also
9661 + affected by this macro. The default definition will set P2VAR to
9662 + the truncated power of two of sizes up to eight bytes.
9663 +
9664 + We want doublewords to be word-aligned, so we're going to modify the
9665 + default definition a tiny bit.
9666 +*/
9667 +#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) \
9668 + do \
9669 + { \
9670 + if ((SIZE) >= 4) \
9671 + (P2VAR) = 2; \
9672 + else if ((SIZE) >= 2) \
9673 + (P2VAR) = 1; \
9674 + else \
9675 + (P2VAR) = 0; \
9676 + } \
9677 + while (0)
9678 +
9679 +/* When relaxing, we need to generate relocations for alignment
9680 + directives. */
9681 +#define HANDLE_ALIGN(frag) avr32_handle_align(frag)
9682 +extern void avr32_handle_align(fragS *);
9683 +
9684 +/* See internals doc for explanation. Oh wait...
9685 + Now, can you guess where "alignment" comes from? ;-) */
9686 +#define MAX_MEM_FOR_RS_ALIGN_CODE ((1 << alignment) - 1)
9687 +
9688 +/* We need to stop gas from reducing certain expressions (e.g. GOT
9689 + references) */
9690 +#define tc_fix_adjustable(fix) avr32_fix_adjustable(fix)
9691 +extern bfd_boolean avr32_fix_adjustable(struct fix *);
9692 +
9693 +/* The linker needs to be passed a little more information when relaxing. */
9694 +#define TC_FORCE_RELOCATION(fix) avr32_force_reloc(fix)
9695 +extern bfd_boolean avr32_force_reloc(struct fix *);
9696 +
9697 +/* I'm tired of working around all the madness in fixup_segment().
9698 + This hook will do basically the same things as the generic code,
9699 + and then it will "goto" right past it. */
9700 +#define TC_VALIDATE_FIX(FIX, SEG, SKIP) \
9701 + do \
9702 + { \
9703 + avr32_process_fixup(FIX, SEG); \
9704 + if (!(FIX)->fx_done) \
9705 + ++seg_reloc_count; \
9706 + goto SKIP; \
9707 + } \
9708 + while (0)
9709 +extern void avr32_process_fixup(struct fix *fixP, segT this_segment);
9710 +
9711 +/* Positive values of TC_FX_SIZE_SLACK allow a target to define
9712 + fixups that far past the end of a frag. Having such fixups
9713 + is of course most most likely a bug in setting fx_size correctly.
9714 + A negative value disables the fixup check entirely, which is
9715 + appropriate for something like the Renesas / SuperH SH_COUNT
9716 + reloc. */
9717 +/* This target is buggy, and sets fix size too large. */
9718 +#define TC_FX_SIZE_SLACK(FIX) -1
9719 +
9720 +/* We don't want the gas core to make any assumptions about our way of
9721 + doing linkrelaxing. */
9722 +#define TC_LINKRELAX_FIXUP(SEG) 0
9723 +
9724 +/* ... but we do want it to insert lots of padding. */
9725 +#define LINKER_RELAXING_SHRINKS_ONLY
9726 +
9727 +/* Better do it ourselves, really... */
9728 +#define TC_RELAX_ALIGN(SEG, FRAG, ADDR) avr32_relax_align(SEG, FRAG, ADDR)
9729 +extern relax_addressT
9730 +avr32_relax_align(segT segment, fragS *fragP, relax_addressT address);
9731 +
9732 +/* Use line number format that is amenable to linker relaxation. */
9733 +#define DWARF2_USE_FIXED_ADVANCE_PC (linkrelax != 0)
9734 +
9735 +/* This is called by write_object_file() just before symbols are
9736 + attempted converted into section symbols. */
9737 +#define tc_frob_file_before_adjust() avr32_frob_file()
9738 +extern void avr32_frob_file(void);
9739 +
9740 +/* If you define this macro, GAS will call it at the end of each input
9741 + file. */
9742 +#define md_cleanup() avr32_cleanup()
9743 +extern void avr32_cleanup(void);
9744 +
9745 +/* There's an AVR32-specific hack in operand() which creates O_md
9746 + expressions when encountering HWRD or LWRD. We need to generate
9747 + proper relocs for them */
9748 +/* #define md_cgen_record_fixup_exp avr32_cgen_record_fixup_exp */
9749 +
9750 +/* I needed to add an extra hook in gas_cgen_finish_insn() for
9751 + conversion of O_md* operands because md_cgen_record_fixup_exp()
9752 + isn't called for relaxable insns */
9753 +/* #define md_cgen_convert_expr(exp, opinfo) avr32_cgen_convert_expr(exp, opinfo)
9754 + int avr32_cgen_convert_expr(expressionS *, int); */
9755 +
9756 +/* #define tc_gen_reloc gas_cgen_tc_gen_reloc */
9757 +
9758 +/* If you define this macro, it should return the position from which
9759 + the PC relative adjustment for a PC relative fixup should be
9760 + made. On many processors, the base of a PC relative instruction is
9761 + the next instruction, so this macro would return the length of an
9762 + instruction, plus the address of the PC relative fixup. The latter
9763 + can be calculated as fixp->fx_where + fixp->fx_frag->fr_address. */
9764 +extern long md_pcrel_from_section (struct fix *, segT);
9765 +#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
9766 +
9767 +#define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L'))
9768 +#define LOCAL_LABELS_FB 1
9769 +
9770 +struct avr32_relaxer
9771 +{
9772 + int (*estimate_size)(fragS *, segT);
9773 + long (*relax_frag)(segT, fragS *, long);
9774 + void (*convert_frag)(bfd *, segT, fragS *);
9775 +};
9776 +
9777 +/* AVR32 has quite complex instruction coding, which means we need
9778 + * lots of information in order to do the right thing during relaxing
9779 + * (basically, we need to be able to reconstruct a whole new opcode if
9780 + * necessary) */
9781 +#define TC_FRAG_TYPE struct avr32_frag_data
9782 +
9783 +struct cpool;
9784 +
9785 +struct avr32_frag_data
9786 +{
9787 + /* TODO: Maybe add an expression object here so that we can use
9788 + fix_new_exp() in md_convert_frag? We may have to decide
9789 + pcrel-ness in md_estimate_size_before_relax() as well...or we
9790 + might do it when parsing. Doing it while parsing may fail
9791 + because the sub_symbol is undefined then... */
9792 + int pcrel;
9793 + int force_extended;
9794 + int reloc_info;
9795 + struct avr32_relaxer *relaxer;
9796 + expressionS exp;
9797 +
9798 + /* Points to associated constant pool, for use by LDA and CALL in
9799 + non-pic mode, and when relaxing the .cpool directive */
9800 + struct cpool *pool;
9801 + unsigned int pool_entry;
9802 +};
9803 +
9804 +/* We will have to initialize the fields explicitly when needed */
9805 +#define TC_FRAG_INIT(fragP)
9806 +
9807 +#define md_estimate_size_before_relax(fragP, segT) \
9808 + ((fragP)->tc_frag_data.relaxer->estimate_size(fragP, segT))
9809 +#define md_relax_frag(segment, fragP, stretch) \
9810 + ((fragP)->tc_frag_data.relaxer->relax_frag(segment, fragP, stretch))
9811 +#define md_convert_frag(abfd, segment, fragP) \
9812 + ((fragP)->tc_frag_data.relaxer->convert_frag(abfd, segment, fragP))
9813 +
9814 +#define TC_FIX_TYPE struct avr32_fix_data
9815 +
9816 +struct avr32_fix_data
9817 +{
9818 + const struct avr32_ifield *ifield;
9819 + unsigned int align;
9820 + long min;
9821 + long max;
9822 +};
9823 +
9824 +#define TC_INIT_FIX_DATA(fixP) \
9825 + do \
9826 + { \
9827 + (fixP)->tc_fix_data.ifield = NULL; \
9828 + (fixP)->tc_fix_data.align = 0; \
9829 + (fixP)->tc_fix_data.min = 0; \
9830 + (fixP)->tc_fix_data.max = 0; \
9831 + } \
9832 + while (0)
9833 Index: binutils-2.18/gas/configure.tgt
9834 ===================================================================
9835 --- binutils-2.18.orig/gas/configure.tgt 2008-11-25 15:24:48.000000000 +0100
9836 +++ binutils-2.18/gas/configure.tgt 2008-11-25 15:25:40.000000000 +0100
9837 @@ -33,6 +33,7 @@
9838 am33_2.0) cpu_type=mn10300 endian=little ;;
9839 arm*be|arm*b) cpu_type=arm endian=big ;;
9840 arm*) cpu_type=arm endian=little ;;
9841 + avr32*) cpu_type=avr32 endian=big ;;
9842 bfin*) cpu_type=bfin endian=little ;;
9843 c4x*) cpu_type=tic4x ;;
9844 cr16*) cpu_type=cr16 endian=little ;;
9845 @@ -129,6 +130,9 @@
9846 bfin-*elf) fmt=elf ;;
9847 cr16-*-elf*) fmt=elf ;;
9848
9849 + avr32-*-linux*) fmt=elf em=linux bfd_gas=yes ;;
9850 + avr32*) fmt=elf bfd_gas=yes ;;
9851 +
9852 cris-*-linux-* | crisv32-*-linux-*)
9853 fmt=multi em=linux ;;
9854 cris-*-* | crisv32-*-*) fmt=multi ;;
9855 Index: binutils-2.18/gas/doc/all.texi
9856 ===================================================================
9857 --- binutils-2.18.orig/gas/doc/all.texi 2008-11-25 15:24:48.000000000 +0100
9858 +++ binutils-2.18/gas/doc/all.texi 2008-11-25 15:25:40.000000000 +0100
9859 @@ -30,6 +30,7 @@
9860 @set ARC
9861 @set ARM
9862 @set AVR
9863 +@set AVR32
9864 @set BFIN
9865 @set CR16
9866 @set CRIS
9867 Index: binutils-2.18/gas/doc/as.texinfo
9868 ===================================================================
9869 --- binutils-2.18.orig/gas/doc/as.texinfo 2008-11-25 15:24:48.000000000 +0100
9870 +++ binutils-2.18/gas/doc/as.texinfo 2008-11-25 15:25:40.000000000 +0100
9871 @@ -6353,6 +6353,9 @@
9872 @ifset AVR
9873 * AVR-Dependent:: AVR Dependent Features
9874 @end ifset
9875 +@ifset AVR32
9876 +* AVR32-Dependent:: AVR32 Dependent Features
9877 +@end ifset
9878 @ifset BFIN
9879 * BFIN-Dependent:: BFIN Dependent Features
9880 @end ifset
9881 @@ -6476,6 +6479,10 @@
9882 @include c-avr.texi
9883 @end ifset
9884
9885 +@ifset AVR32
9886 +@include c-avr32.texi
9887 +@end ifset
9888 +
9889 @ifset BFIN
9890 @include c-bfin.texi
9891 @end ifset
9892 Index: binutils-2.18/gas/doc/c-avr32.texi
9893 ===================================================================
9894 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
9895 +++ binutils-2.18/gas/doc/c-avr32.texi 2008-11-25 15:25:40.000000000 +0100
9896 @@ -0,0 +1,247 @@
9897 +@c Copyright 2005, 2006
9898 +@c Atmel Corporation
9899 +@c This is part of the GAS manual.
9900 +@c For copying conditions, see the file as.texinfo.
9901 +
9902 +@ifset GENERIC
9903 +@page
9904 +@node AVR32-Dependent
9905 +@chapter AVR32 Dependent Features
9906 +@end ifset
9907 +
9908 +@ifclear GENERIC
9909 +@node Machine Dependencies
9910 +@chapter AVR32 Dependent Features
9911 +@end ifclear
9912 +
9913 +@cindex AVR32 support
9914 +@menu
9915 +* AVR32 Options:: Options
9916 +* AVR32 Syntax:: Syntax
9917 +* AVR32 Directives:: Directives
9918 +* AVR32 Opcodes:: Opcodes
9919 +@end menu
9920 +
9921 +@node AVR32 Options
9922 +@section Options
9923 +@cindex AVR32 options
9924 +@cindex options for AVR32
9925 +
9926 +There are currently no AVR32-specific options. However, the following
9927 +options are planned:
9928 +
9929 +@table @code
9930 +
9931 +@cindex @code{--pic} command line option, AVR32
9932 +@cindex PIC code generation for AVR32
9933 +@item --pic
9934 +This option specifies that the output of the assembler should be marked
9935 +as position-independent code (PIC). It will also ensure that
9936 +pseudo-instructions that deal with address calculation are output as
9937 +PIC, and that all absolute address references in the code are marked as
9938 +such.
9939 +
9940 +@cindex @code{--linkrelax} command line option, AVR32
9941 +@item --linkrelax
9942 +This option specifies that the output of the assembler should be marked
9943 +as linker-relaxable. It will also ensure that all PC-relative operands
9944 +that may change during linker relaxation get appropriate relocations.
9945 +
9946 +@end table
9947 +
9948 +
9949 +@node AVR32 Syntax
9950 +@section Syntax
9951 +@menu
9952 +* AVR32-Chars:: Special Characters
9953 +* AVR32-Symrefs:: Symbol references
9954 +@end menu
9955 +
9956 +@node AVR32-Chars
9957 +@subsection Special Characters
9958 +
9959 +@cindex line comment character, AVR32
9960 +@cindex AVR32 line comment character
9961 +The presence of a @samp{//} on a line indicates the start of a comment
9962 +that extends to the end of the current line. If a @samp{#} appears as
9963 +the first character of a line, the whole line is treated as a comment.
9964 +
9965 +@cindex line separator, AVR32
9966 +@cindex statement separator, AVR32
9967 +@cindex AVR32 line separator
9968 +The @samp{;} character can be used instead of a newline to separate
9969 +statements.
9970 +
9971 +@node AVR32-Symrefs
9972 +@subsection Symbol references
9973 +
9974 +The absolute value of a symbol can be obtained by simply naming the
9975 +symbol. However, as AVR32 symbols have 32-bit values, most symbols have
9976 +values that are outside the range of any instructions.
9977 +
9978 +Instructions that take a PC-relative offset, e.g. @code{lddpc} or
9979 +@code{rcall}, can also reference a symbol by simply naming the symbol
9980 +(no explicit calculations necessary). In this case, the assembler or
9981 +linker subtracts the address of the instruction from the symbol's value
9982 +and inserts the result into the instruction. Note that even though an
9983 +overflow is less likely to happen for a relative reference than for an
9984 +absolute reference, the assembler or linker will generate an error if
9985 +the referenced symbol is too far away from the current location.
9986 +
9987 +Relative references can be used for data as well. For example:
9988 +
9989 +@smallexample
9990 + lddpc r0, 2f
9991 +1: add r0, pc
9992 + ...
9993 + .align 2
9994 +2: .int @var{some_symbol} - 1b
9995 +@end smallexample
9996 +
9997 +Here, r0 will end up with the run-time address of @var{some_symbol} even
9998 +if the program was loaded at a different address than it was linked
9999 +(position-independent code).
10000 +
10001 +@subsubsection Symbol modifiers
10002 +
10003 +@table @code
10004 +
10005 +@item @code{hi(@var{symbol})}
10006 +Evaluates to the value of the symbol shifted right 16 bits. This will
10007 +work even if @var{symbol} is defined in a different module.
10008 +
10009 +@item @code{lo(@var{symbol})}
10010 +Evaluates to the low 16 bits of the symbol's value. This will work even
10011 +if @var{symbol} is defined in a different module.
10012 +
10013 +@item @code{@var{symbol}@@got}
10014 +Create a GOT entry for @var{symbol} and return the offset of that entry
10015 +relative to the GOT base.
10016 +
10017 +@end table
10018 +
10019 +
10020 +@node AVR32 Directives
10021 +@section Directives
10022 +@cindex machine directives, AVR32
10023 +@cindex AVR32 directives
10024 +
10025 +@table @code
10026 +
10027 +@cindex @code{.cpool} directive, AVR32
10028 +@item .cpool
10029 +This directive causes the current contents of the constant pool to be
10030 +dumped into the current section at the current location (aligned to a
10031 +word boundary). @code{GAS} maintains a separate constant pool for each
10032 +section and each sub-section. The @code{.cpool} directive will only
10033 +affect the constant pool of the current section and sub-section. At the
10034 +end of assembly, all remaining, non-empty constant pools will
10035 +automatically be dumped.
10036 +
10037 +@end table
10038 +
10039 +
10040 +@node AVR32 Opcodes
10041 +@section Opcodes
10042 +@cindex AVR32 opcodes
10043 +@cindex opcodes for AVR32
10044 +
10045 +@code{@value{AS}} implements all the standard AVR32 opcodes. It also
10046 +implements several pseudo-opcodes, which are recommended to use wherever
10047 +possible because they give the tool chain better freedom to generate
10048 +optimal code.
10049 +
10050 +@table @code
10051 +
10052 +@cindex @code{LDA.W reg, symbol} pseudo op, AVR32
10053 +@item LDA.W
10054 +@smallexample
10055 + lda.w @var{reg}, @var{symbol}
10056 +@end smallexample
10057 +
10058 +This instruction will load the address of @var{symbol} into
10059 +@var{reg}. The instruction will evaluate to one of the following,
10060 +depending on the relative distance to the symbol, the relative distance
10061 +to the constant pool and whether the @code{--pic} option has been
10062 +specified. If the @code{--pic} option has not been specified, the
10063 +alternatives are as follows:
10064 +@smallexample
10065 + /* @var{symbol} evaluates to a small enough value */
10066 + mov @var{reg}, @var{symbol}
10067 +
10068 + /* (. - @var{symbol}) evaluates to a small enough value */
10069 + sub @var{reg}, pc, . - @var{symbol}
10070 +
10071 + /* Constant pool is close enough */
10072 + lddpc @var{reg}, @var{cpent}
10073 + ...
10074 +@var{cpent}:
10075 + .long @var{symbol}
10076 +
10077 + /* Otherwise (not implemented yet, probably not necessary) */
10078 + mov @var{reg}, lo(@var{symbol})
10079 + orh @var{reg}, hi(@var{symbol})
10080 +@end smallexample
10081 +
10082 +If the @code{--pic} option has been specified, the alternatives are as
10083 +follows:
10084 +@smallexample
10085 + /* (. - @var{symbol}) evaluates to a small enough value */
10086 + sub @var{reg}, pc, . - @var{symbol}
10087 +
10088 + /* If @code{--linkrelax} not specified */
10089 + ld.w @var{reg}, r6[@var{symbol}@@got]
10090 +
10091 + /* Otherwise */
10092 + mov @var{reg}, @var{symbol}@@got / 4
10093 + ld.w @var{reg}, r6[@var{reg} << 2]
10094 +@end smallexample
10095 +
10096 +If @var{symbol} is not defined in the same file and section as the
10097 +@code{LDA.W} instruction, the most pessimistic alternative of the
10098 +above is selected. The linker may convert it back into the most
10099 +optimal alternative when the final value of all symbols is known.
10100 +
10101 +@cindex @code{CALL symbol} pseudo op, AVR32
10102 +@item CALL
10103 +@smallexample
10104 + call @var{symbol}
10105 +@end smallexample
10106 +
10107 +This instruction will insert code to call the subroutine identified by
10108 +@var{symbol}. It will evaluate to one of the following, depending on
10109 +the relative distance to the symbol as well as the @code{--linkrelax}
10110 +and @code{--pic} command-line options.
10111 +
10112 +If @var{symbol} is defined in the same section and input file, and the
10113 +distance is small enough, an @code{rcall} instruction is inserted:
10114 +@smallexample
10115 + rcall @var{symbol}
10116 +@end smallexample
10117 +
10118 +Otherwise, if the @code{--pic} option has not been specified:
10119 +@smallexample
10120 + mcall @var{cpent}
10121 + ...
10122 +@var{cpent}:
10123 + .long @var{symbol}
10124 +@end smallexample
10125 +
10126 +Finally, if nothing else fits and the @code{--pic} option has been
10127 +specified, the assembler will indirect the call through the Global
10128 +Offset Table:
10129 +@smallexample
10130 + /* If @code{--linkrelax} not specified */
10131 + mcall r6[@var{symbol}@@got]
10132 +
10133 + /* If @code{--linkrelax} specified */
10134 + mov lr, @var{symbol}@@got / 4
10135 + ld.w lr, r6[lr << 2]
10136 + icall lr
10137 +@end smallexample
10138 +
10139 +The linker, after determining the final value of @var{symbol}, may
10140 +convert any of these into more optimal alternatives. This includes
10141 +deleting any superfluous constant pool- and GOT-entries.
10142 +
10143 +@end table
10144 Index: binutils-2.18/gas/doc/Makefile.am
10145 ===================================================================
10146 --- binutils-2.18.orig/gas/doc/Makefile.am 2008-11-25 15:24:48.000000000 +0100
10147 +++ binutils-2.18/gas/doc/Makefile.am 2008-11-25 15:25:40.000000000 +0100
10148 @@ -33,6 +33,7 @@
10149 c-arc.texi \
10150 c-arm.texi \
10151 c-avr.texi \
10152 + c-avr32.texi \
10153 c-bfin.texi \
10154 c-cr16.texi \
10155 c-d10v.texi \
10156 Index: binutils-2.18/gas/Makefile.am
10157 ===================================================================
10158 --- binutils-2.18.orig/gas/Makefile.am 2008-11-25 15:24:48.000000000 +0100
10159 +++ binutils-2.18/gas/Makefile.am 2008-11-25 15:25:40.000000000 +0100
10160 @@ -47,6 +47,7 @@
10161 arc \
10162 arm \
10163 avr \
10164 + avr32 \
10165 bfin \
10166 cr16 \
10167 cris \
10168 @@ -241,6 +242,7 @@
10169 config/tc-arc.c \
10170 config/tc-arm.c \
10171 config/tc-avr.c \
10172 + config/tc-avr32.c \
10173 config/tc-bfin.c \
10174 config/tc-cr16.c \
10175 config/tc-cris.c \
10176 @@ -296,6 +298,7 @@
10177 config/tc-arc.h \
10178 config/tc-arm.h \
10179 config/tc-avr.h \
10180 + config/tc-avr32.h \
10181 config/tc-bfin.h \
10182 config/tc-cr16.h \
10183 config/tc-cris.h \
10184 @@ -1050,6 +1053,11 @@
10185 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
10186 $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
10187 $(INCDIR)/opcode/avr.h
10188 +DEPTC_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
10189 + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
10190 + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
10191 + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
10192 + $(srcdir)/../opcodes/avr32-opc.h $(srcdir)/../opcodes/avr32-asm.h
10193 DEPTC_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
10194 $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
10195 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
10196 @@ -1487,6 +1495,11 @@
10197 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
10198 $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
10199 $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
10200 +DEPOBJ_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
10201 + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
10202 + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
10203 + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
10204 + struc-symbol.h dwarf2dbg.h
10205 DEPOBJ_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
10206 $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
10207 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
10208 @@ -1858,6 +1871,9 @@
10209 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cr16.h dwarf2dbg.h \
10210 $(srcdir)/config/obj-coff.h $(INCDIR)/coff/internal.h \
10211 $(BFDDIR)/libcoff.h
10212 +DEP_avr32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
10213 + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
10214 + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h
10215 DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
10216 $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
10217 DEP_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
10218 Index: binutils-2.18/gas/testsuite/gas/avr32/aliases.d
10219 ===================================================================
10220 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
10221 +++ binutils-2.18/gas/testsuite/gas/avr32/aliases.d 2008-11-25 15:25:40.000000000 +0100
10222 @@ -0,0 +1,19 @@
10223 +#as:
10224 +#objdump: -dr
10225 +#name: aliases
10226 +
10227 +.*: +file format .*
10228 +
10229 +Disassembly of section \.text:
10230 +
10231 +00000000 <ld_nodisp>:
10232 + 0: 19 80 [ \t]+ld\.ub r0,r12\[0x0\]
10233 + 2: f9 20 00 00[ \t]+ld\.sb r0,r12\[0\]
10234 + 6: 98 80 [ \t]+ld\.uh r0,r12\[0x0\]
10235 + 8: 98 00 [ \t]+ld\.sh r0,r12\[0x0\]
10236 + a: 78 00 [ \t]+ld\.w r0,r12\[0x0\]
10237 +
10238 +0000000c <st_nodisp>:
10239 + c: b8 80 [ \t]+st\.b r12\[0x0\],r0
10240 + e: b8 00 [ \t]+st\.h r12\[0x0\],r0
10241 + 10: 99 00 [ \t]+st\.w r12\[0x0\],r0
10242 Index: binutils-2.18/gas/testsuite/gas/avr32/aliases.s
10243 ===================================================================
10244 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
10245 +++ binutils-2.18/gas/testsuite/gas/avr32/aliases.s 2008-11-25 15:25:40.000000000 +0100
10246 @@ -0,0 +1,14 @@
10247 + .text
10248 + .global ld_nodisp
10249 +ld_nodisp:
10250 + ld.ub r0, r12
10251 + ld.sb r0, r12
10252 + ld.uh r0, r12
10253 + ld.sh r0, r12
10254 + ld.w r0, r12
10255 +
10256 + .global st_nodisp
10257 +st_nodisp:
10258 + st.b r12, r0
10259 + st.h r12, r0
10260 + st.w r12, r0
10261 Index: binutils-2.18/gas/testsuite/gas/avr32/allinsn.d
10262 ===================================================================
10263 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
10264 +++ binutils-2.18/gas/testsuite/gas/avr32/allinsn.d 2008-11-25 15:25:40.000000000 +0100
10265 @@ -0,0 +1,2987 @@
10266 +#as:
10267 +#objdump: -dr
10268 +#name: allinsn
10269 +
10270 +.*: +file format .*
10271 +
10272 +Disassembly of section \.text:
10273 +
10274 +[0-9a-f]* <ld_d5>:
10275 + *[0-9a-f]*: fe 0f 02 3e ld\.d lr,pc\[pc<<0x3\]
10276 + *[0-9a-f]*: e0 00 02 00 ld\.d r0,r0\[r0\]
10277 + *[0-9a-f]*: ea 05 02 26 ld\.d r6,r5\[r5<<0x2\]
10278 + *[0-9a-f]*: e8 04 02 14 ld\.d r4,r4\[r4<<0x1\]
10279 + *[0-9a-f]*: fc 0e 02 1e ld\.d lr,lr\[lr<<0x1\]
10280 + *[0-9a-f]*: e6 0d 02 2a ld\.d r10,r3\[sp<<0x2\]
10281 + *[0-9a-f]*: f4 06 02 28 ld\.d r8,r10\[r6<<0x2\]
10282 + *[0-9a-f]*: ee 09 02 02 ld\.d r2,r7\[r9\]
10283 +
10284 +[0-9a-f]* <ld_w5>:
10285 + *[0-9a-f]*: fe 0f 03 0f ld\.w pc,pc\[pc\]
10286 + *[0-9a-f]*: f8 0c 03 3c ld\.w r12,r12\[r12<<0x3\]
10287 + *[0-9a-f]*: ea 05 03 25 ld\.w r5,r5\[r5<<0x2\]
10288 + *[0-9a-f]*: e8 04 03 14 ld\.w r4,r4\[r4<<0x1\]
10289 + *[0-9a-f]*: fc 0e 03 1e ld\.w lr,lr\[lr<<0x1\]
10290 + *[0-9a-f]*: f2 09 03 02 ld\.w r2,r9\[r9\]
10291 + *[0-9a-f]*: e4 06 03 0b ld\.w r11,r2\[r6\]
10292 + *[0-9a-f]*: e4 0d 03 30 ld\.w r0,r2\[sp<<0x3\]
10293 +
10294 +[0-9a-f]* <ld_sh5>:
10295 + *[0-9a-f]*: fe 0f 04 0f ld\.sh pc,pc\[pc\]
10296 + *[0-9a-f]*: f8 0c 04 3c ld\.sh r12,r12\[r12<<0x3\]
10297 + *[0-9a-f]*: ea 05 04 25 ld\.sh r5,r5\[r5<<0x2\]
10298 + *[0-9a-f]*: e8 04 04 14 ld\.sh r4,r4\[r4<<0x1\]
10299 + *[0-9a-f]*: fc 0e 04 1e ld\.sh lr,lr\[lr<<0x1\]
10300 + *[0-9a-f]*: e0 0f 04 2b ld\.sh r11,r0\[pc<<0x2\]
10301 + *[0-9a-f]*: fa 06 04 2a ld\.sh r10,sp\[r6<<0x2\]
10302 + *[0-9a-f]*: e4 02 04 0c ld\.sh r12,r2\[r2\]
10303 +
10304 +[0-9a-f]* <ld_uh5>:
10305 + *[0-9a-f]*: fe 0f 05 0f ld\.uh pc,pc\[pc\]
10306 + *[0-9a-f]*: f8 0c 05 3c ld\.uh r12,r12\[r12<<0x3\]
10307 + *[0-9a-f]*: ea 05 05 25 ld\.uh r5,r5\[r5<<0x2\]
10308 + *[0-9a-f]*: e8 04 05 14 ld\.uh r4,r4\[r4<<0x1\]
10309 + *[0-9a-f]*: fc 0e 05 1e ld\.uh lr,lr\[lr<<0x1\]
10310 + *[0-9a-f]*: fe 0e 05 38 ld\.uh r8,pc\[lr<<0x3\]
10311 + *[0-9a-f]*: e2 0f 05 16 ld\.uh r6,r1\[pc<<0x1\]
10312 + *[0-9a-f]*: fc 0d 05 16 ld\.uh r6,lr\[sp<<0x1\]
10313 +
10314 +[0-9a-f]* <ld_sb2>:
10315 + *[0-9a-f]*: fe 0f 06 0f ld\.sb pc,pc\[pc\]
10316 + *[0-9a-f]*: f8 0c 06 3c ld\.sb r12,r12\[r12<<0x3\]
10317 + *[0-9a-f]*: ea 05 06 25 ld\.sb r5,r5\[r5<<0x2\]
10318 + *[0-9a-f]*: e8 04 06 14 ld\.sb r4,r4\[r4<<0x1\]
10319 + *[0-9a-f]*: fc 0e 06 1e ld\.sb lr,lr\[lr<<0x1\]
10320 + *[0-9a-f]*: e2 0f 06 39 ld\.sb r9,r1\[pc<<0x3\]
10321 + *[0-9a-f]*: e6 0b 06 10 ld\.sb r0,r3\[r11<<0x1\]
10322 + *[0-9a-f]*: ea 05 06 1a ld\.sb r10,r5\[r5<<0x1\]
10323 +
10324 +[0-9a-f]* <ld_ub5>:
10325 + *[0-9a-f]*: fe 0f 07 0f ld\.ub pc,pc\[pc\]
10326 + *[0-9a-f]*: f8 0c 07 3c ld\.ub r12,r12\[r12<<0x3\]
10327 + *[0-9a-f]*: ea 05 07 25 ld\.ub r5,r5\[r5<<0x2\]
10328 + *[0-9a-f]*: e8 04 07 14 ld\.ub r4,r4\[r4<<0x1\]
10329 + *[0-9a-f]*: fc 0e 07 1e ld\.ub lr,lr\[lr<<0x1\]
10330 + *[0-9a-f]*: f8 07 07 36 ld\.ub r6,r12\[r7<<0x3\]
10331 + *[0-9a-f]*: ec 0c 07 02 ld\.ub r2,r6\[r12\]
10332 + *[0-9a-f]*: ee 0b 07 10 ld\.ub r0,r7\[r11<<0x1\]
10333 +
10334 +[0-9a-f]* <st_d5>:
10335 + *[0-9a-f]*: fe 0f 08 0e st\.d pc\[pc\],lr
10336 + *[0-9a-f]*: f8 0c 08 3c st\.d r12\[r12<<0x3\],r12
10337 + *[0-9a-f]*: ea 05 08 26 st\.d r5\[r5<<0x2\],r6
10338 + *[0-9a-f]*: e8 04 08 14 st\.d r4\[r4<<0x1\],r4
10339 + *[0-9a-f]*: fc 0e 08 1e st\.d lr\[lr<<0x1\],lr
10340 + *[0-9a-f]*: e2 09 08 14 st\.d r1\[r9<<0x1\],r4
10341 + *[0-9a-f]*: f4 02 08 14 st\.d r10\[r2<<0x1\],r4
10342 + *[0-9a-f]*: f8 06 08 0e st\.d r12\[r6\],lr
10343 +
10344 +[0-9a-f]* <st_w5>:
10345 + *[0-9a-f]*: fe 0f 09 0f st\.w pc\[pc\],pc
10346 + *[0-9a-f]*: f8 0c 09 3c st\.w r12\[r12<<0x3\],r12
10347 + *[0-9a-f]*: ea 05 09 25 st\.w r5\[r5<<0x2\],r5
10348 + *[0-9a-f]*: e8 04 09 14 st\.w r4\[r4<<0x1\],r4
10349 + *[0-9a-f]*: fc 0e 09 1e st\.w lr\[lr<<0x1\],lr
10350 + *[0-9a-f]*: e2 0a 09 03 st\.w r1\[r10\],r3
10351 + *[0-9a-f]*: e0 0a 09 19 st\.w r0\[r10<<0x1\],r9
10352 + *[0-9a-f]*: e8 05 09 3f st\.w r4\[r5<<0x3\],pc
10353 +
10354 +[0-9a-f]* <st_h5>:
10355 + *[0-9a-f]*: fe 0f 0a 0f st\.h pc\[pc\],pc
10356 + *[0-9a-f]*: f8 0c 0a 3c st\.h r12\[r12<<0x3\],r12
10357 + *[0-9a-f]*: ea 05 0a 25 st\.h r5\[r5<<0x2\],r5
10358 + *[0-9a-f]*: e8 04 0a 14 st\.h r4\[r4<<0x1\],r4
10359 + *[0-9a-f]*: fc 0e 0a 1e st\.h lr\[lr<<0x1\],lr
10360 + *[0-9a-f]*: e4 09 0a 0b st\.h r2\[r9\],r11
10361 + *[0-9a-f]*: ea 01 0a 2c st\.h r5\[r1<<0x2\],r12
10362 + *[0-9a-f]*: fe 08 0a 23 st\.h pc\[r8<<0x2\],r3
10363 +
10364 +[0-9a-f]* <st_b5>:
10365 + *[0-9a-f]*: fe 0f 0b 0f st\.b pc\[pc\],pc
10366 + *[0-9a-f]*: f8 0c 0b 3c st\.b r12\[r12<<0x3\],r12
10367 + *[0-9a-f]*: ea 05 0b 25 st\.b r5\[r5<<0x2\],r5
10368 + *[0-9a-f]*: e8 04 0b 14 st\.b r4\[r4<<0x1\],r4
10369 + *[0-9a-f]*: fc 0e 0b 1e st\.b lr\[lr<<0x1\],lr
10370 + *[0-9a-f]*: e2 08 0b 16 st\.b r1\[r8<<0x1\],r6
10371 + *[0-9a-f]*: fc 0e 0b 31 st\.b lr\[lr<<0x3\],r1
10372 + *[0-9a-f]*: ea 00 0b 2f st\.b r5\[r0<<0x2\],pc
10373 +
10374 +[0-9a-f]* <divs>:
10375 + *[0-9a-f]*: fe 0f 0c 0f divs pc,pc,pc
10376 + *[0-9a-f]*: f8 0c 0c 0c divs r12,r12,r12
10377 + *[0-9a-f]*: ea 05 0c 05 divs r5,r5,r5
10378 + *[0-9a-f]*: e8 04 0c 04 divs r4,r4,r4
10379 + *[0-9a-f]*: fc 0e 0c 0e divs lr,lr,lr
10380 + *[0-9a-f]*: fe 0f 0c 03 divs r3,pc,pc
10381 + *[0-9a-f]*: f8 02 0c 09 divs r9,r12,r2
10382 + *[0-9a-f]*: e8 01 0c 07 divs r7,r4,r1
10383 +
10384 +[0-9a-f]* <add1>:
10385 + *[0-9a-f]*: 1e 0f add pc,pc
10386 + *[0-9a-f]*: 18 0c add r12,r12
10387 + *[0-9a-f]*: 0a 05 add r5,r5
10388 + *[0-9a-f]*: 08 04 add r4,r4
10389 + *[0-9a-f]*: 1c 0e add lr,lr
10390 + *[0-9a-f]*: 12 0c add r12,r9
10391 + *[0-9a-f]*: 06 06 add r6,r3
10392 + *[0-9a-f]*: 18 0a add r10,r12
10393 +
10394 +[0-9a-f]* <sub1>:
10395 + *[0-9a-f]*: 1e 1f sub pc,pc
10396 + *[0-9a-f]*: 18 1c sub r12,r12
10397 + *[0-9a-f]*: 0a 15 sub r5,r5
10398 + *[0-9a-f]*: 08 14 sub r4,r4
10399 + *[0-9a-f]*: 1c 1e sub lr,lr
10400 + *[0-9a-f]*: 0c 1e sub lr,r6
10401 + *[0-9a-f]*: 1a 10 sub r0,sp
10402 + *[0-9a-f]*: 18 16 sub r6,r12
10403 +
10404 +[0-9a-f]* <rsub1>:
10405 + *[0-9a-f]*: 1e 2f rsub pc,pc
10406 + *[0-9a-f]*: 18 2c rsub r12,r12
10407 + *[0-9a-f]*: 0a 25 rsub r5,r5
10408 + *[0-9a-f]*: 08 24 rsub r4,r4
10409 + *[0-9a-f]*: 1c 2e rsub lr,lr
10410 + *[0-9a-f]*: 1a 2b rsub r11,sp
10411 + *[0-9a-f]*: 08 27 rsub r7,r4
10412 + *[0-9a-f]*: 02 29 rsub r9,r1
10413 +
10414 +[0-9a-f]* <cp1>:
10415 + *[0-9a-f]*: 1e 3f cp\.w pc,pc
10416 + *[0-9a-f]*: 18 3c cp\.w r12,r12
10417 + *[0-9a-f]*: 0a 35 cp\.w r5,r5
10418 + *[0-9a-f]*: 08 34 cp\.w r4,r4
10419 + *[0-9a-f]*: 1c 3e cp\.w lr,lr
10420 + *[0-9a-f]*: 04 36 cp\.w r6,r2
10421 + *[0-9a-f]*: 12 30 cp\.w r0,r9
10422 + *[0-9a-f]*: 1a 33 cp\.w r3,sp
10423 +
10424 +[0-9a-f]* <or1>:
10425 + *[0-9a-f]*: 1e 4f or pc,pc
10426 + *[0-9a-f]*: 18 4c or r12,r12
10427 + *[0-9a-f]*: 0a 45 or r5,r5
10428 + *[0-9a-f]*: 08 44 or r4,r4
10429 + *[0-9a-f]*: 1c 4e or lr,lr
10430 + *[0-9a-f]*: 12 44 or r4,r9
10431 + *[0-9a-f]*: 08 4b or r11,r4
10432 + *[0-9a-f]*: 00 44 or r4,r0
10433 +
10434 +[0-9a-f]* <eor1>:
10435 + *[0-9a-f]*: 1e 5f eor pc,pc
10436 + *[0-9a-f]*: 18 5c eor r12,r12
10437 + *[0-9a-f]*: 0a 55 eor r5,r5
10438 + *[0-9a-f]*: 08 54 eor r4,r4
10439 + *[0-9a-f]*: 1c 5e eor lr,lr
10440 + *[0-9a-f]*: 16 5c eor r12,r11
10441 + *[0-9a-f]*: 02 50 eor r0,r1
10442 + *[0-9a-f]*: 1e 55 eor r5,pc
10443 +
10444 +[0-9a-f]* <and1>:
10445 + *[0-9a-f]*: 1e 6f and pc,pc
10446 + *[0-9a-f]*: 18 6c and r12,r12
10447 + *[0-9a-f]*: 0a 65 and r5,r5
10448 + *[0-9a-f]*: 08 64 and r4,r4
10449 + *[0-9a-f]*: 1c 6e and lr,lr
10450 + *[0-9a-f]*: 02 68 and r8,r1
10451 + *[0-9a-f]*: 1a 60 and r0,sp
10452 + *[0-9a-f]*: 0a 6a and r10,r5
10453 +
10454 +[0-9a-f]* <tst>:
10455 + *[0-9a-f]*: 1e 7f tst pc,pc
10456 + *[0-9a-f]*: 18 7c tst r12,r12
10457 + *[0-9a-f]*: 0a 75 tst r5,r5
10458 + *[0-9a-f]*: 08 74 tst r4,r4
10459 + *[0-9a-f]*: 1c 7e tst lr,lr
10460 + *[0-9a-f]*: 18 70 tst r0,r12
10461 + *[0-9a-f]*: 0c 7a tst r10,r6
10462 + *[0-9a-f]*: 08 7d tst sp,r4
10463 +
10464 +[0-9a-f]* <andn>:
10465 + *[0-9a-f]*: 1e 8f andn pc,pc
10466 + *[0-9a-f]*: 18 8c andn r12,r12
10467 + *[0-9a-f]*: 0a 85 andn r5,r5
10468 + *[0-9a-f]*: 08 84 andn r4,r4
10469 + *[0-9a-f]*: 1c 8e andn lr,lr
10470 + *[0-9a-f]*: 18 89 andn r9,r12
10471 + *[0-9a-f]*: 1a 8b andn r11,sp
10472 + *[0-9a-f]*: 0a 8c andn r12,r5
10473 +
10474 +[0-9a-f]* <mov3>:
10475 + *[0-9a-f]*: 1e 9f mov pc,pc
10476 + *[0-9a-f]*: 18 9c mov r12,r12
10477 + *[0-9a-f]*: 0a 95 mov r5,r5
10478 + *[0-9a-f]*: 08 94 mov r4,r4
10479 + *[0-9a-f]*: 1c 9e mov lr,lr
10480 + *[0-9a-f]*: 12 95 mov r5,r9
10481 + *[0-9a-f]*: 16 9b mov r11,r11
10482 + *[0-9a-f]*: 1c 92 mov r2,lr
10483 +
10484 +[0-9a-f]* <st_w1>:
10485 + *[0-9a-f]*: 1e af st\.w pc\+\+,pc
10486 + *[0-9a-f]*: 18 ac st\.w r12\+\+,r12
10487 + *[0-9a-f]*: 0a a5 st\.w r5\+\+,r5
10488 + *[0-9a-f]*: 08 a4 st\.w r4\+\+,r4
10489 + *[0-9a-f]*: 1c ae st\.w lr\+\+,lr
10490 + *[0-9a-f]*: 02 ab st\.w r1\+\+,r11
10491 + *[0-9a-f]*: 1a a0 st\.w sp\+\+,r0
10492 + *[0-9a-f]*: 1a a1 st\.w sp\+\+,r1
10493 +
10494 +[0-9a-f]* <st_h1>:
10495 + *[0-9a-f]*: 1e bf st\.h pc\+\+,pc
10496 + *[0-9a-f]*: 18 bc st\.h r12\+\+,r12
10497 + *[0-9a-f]*: 0a b5 st\.h r5\+\+,r5
10498 + *[0-9a-f]*: 08 b4 st\.h r4\+\+,r4
10499 + *[0-9a-f]*: 1c be st\.h lr\+\+,lr
10500 + *[0-9a-f]*: 18 bd st\.h r12\+\+,sp
10501 + *[0-9a-f]*: 0e be st\.h r7\+\+,lr
10502 + *[0-9a-f]*: 0e b4 st\.h r7\+\+,r4
10503 +
10504 +[0-9a-f]* <st_b1>:
10505 + *[0-9a-f]*: 1e cf st\.b pc\+\+,pc
10506 + *[0-9a-f]*: 18 cc st\.b r12\+\+,r12
10507 + *[0-9a-f]*: 0a c5 st\.b r5\+\+,r5
10508 + *[0-9a-f]*: 08 c4 st\.b r4\+\+,r4
10509 + *[0-9a-f]*: 1c ce st\.b lr\+\+,lr
10510 + *[0-9a-f]*: 12 cd st\.b r9\+\+,sp
10511 + *[0-9a-f]*: 02 cd st\.b r1\+\+,sp
10512 + *[0-9a-f]*: 00 c4 st\.b r0\+\+,r4
10513 +
10514 +[0-9a-f]* <st_w2>:
10515 + *[0-9a-f]*: 1e df st\.w --pc,pc
10516 + *[0-9a-f]*: 18 dc st\.w --r12,r12
10517 + *[0-9a-f]*: 0a d5 st\.w --r5,r5
10518 + *[0-9a-f]*: 08 d4 st\.w --r4,r4
10519 + *[0-9a-f]*: 1c de st\.w --lr,lr
10520 + *[0-9a-f]*: 02 d7 st\.w --r1,r7
10521 + *[0-9a-f]*: 06 d9 st\.w --r3,r9
10522 + *[0-9a-f]*: 0a d5 st\.w --r5,r5
10523 +
10524 +[0-9a-f]* <st_h2>:
10525 + *[0-9a-f]*: 1e ef st\.h --pc,pc
10526 + *[0-9a-f]*: 18 ec st\.h --r12,r12
10527 + *[0-9a-f]*: 0a e5 st\.h --r5,r5
10528 + *[0-9a-f]*: 08 e4 st\.h --r4,r4
10529 + *[0-9a-f]*: 1c ee st\.h --lr,lr
10530 + *[0-9a-f]*: 0a e7 st\.h --r5,r7
10531 + *[0-9a-f]*: 10 e8 st\.h --r8,r8
10532 + *[0-9a-f]*: 0e e2 st\.h --r7,r2
10533 +
10534 +[0-9a-f]* <st_b2>:
10535 + *[0-9a-f]*: 1e ff st\.b --pc,pc
10536 + *[0-9a-f]*: 18 fc st\.b --r12,r12
10537 + *[0-9a-f]*: 0a f5 st\.b --r5,r5
10538 + *[0-9a-f]*: 08 f4 st\.b --r4,r4
10539 + *[0-9a-f]*: 1c fe st\.b --lr,lr
10540 + *[0-9a-f]*: 1a fd st\.b --sp,sp
10541 + *[0-9a-f]*: 1a fb st\.b --sp,r11
10542 + *[0-9a-f]*: 08 f5 st\.b --r4,r5
10543 +
10544 +[0-9a-f]* <ld_w1>:
10545 + *[0-9a-f]*: 1f 0f ld\.w pc,pc\+\+
10546 + *[0-9a-f]*: 19 0c ld\.w r12,r12\+\+
10547 + *[0-9a-f]*: 0b 05 ld\.w r5,r5\+\+
10548 + *[0-9a-f]*: 09 04 ld\.w r4,r4\+\+
10549 + *[0-9a-f]*: 1d 0e ld\.w lr,lr\+\+
10550 + *[0-9a-f]*: 0f 03 ld\.w r3,r7\+\+
10551 + *[0-9a-f]*: 1d 03 ld\.w r3,lr\+\+
10552 + *[0-9a-f]*: 0b 0c ld\.w r12,r5\+\+
10553 +
10554 +[0-9a-f]* <ld_sh1>:
10555 + *[0-9a-f]*: 1f 1f ld\.sh pc,pc\+\+
10556 + *[0-9a-f]*: 19 1c ld\.sh r12,r12\+\+
10557 + *[0-9a-f]*: 0b 15 ld\.sh r5,r5\+\+
10558 + *[0-9a-f]*: 09 14 ld\.sh r4,r4\+\+
10559 + *[0-9a-f]*: 1d 1e ld\.sh lr,lr\+\+
10560 + *[0-9a-f]*: 05 1b ld\.sh r11,r2\+\+
10561 + *[0-9a-f]*: 11 12 ld\.sh r2,r8\+\+
10562 + *[0-9a-f]*: 0d 17 ld\.sh r7,r6\+\+
10563 +
10564 +[0-9a-f]* <ld_uh1>:
10565 + *[0-9a-f]*: 1f 2f ld\.uh pc,pc\+\+
10566 + *[0-9a-f]*: 19 2c ld\.uh r12,r12\+\+
10567 + *[0-9a-f]*: 0b 25 ld\.uh r5,r5\+\+
10568 + *[0-9a-f]*: 09 24 ld\.uh r4,r4\+\+
10569 + *[0-9a-f]*: 1d 2e ld\.uh lr,lr\+\+
10570 + *[0-9a-f]*: 0f 26 ld\.uh r6,r7\+\+
10571 + *[0-9a-f]*: 17 2a ld\.uh r10,r11\+\+
10572 + *[0-9a-f]*: 09 2e ld\.uh lr,r4\+\+
10573 +
10574 +[0-9a-f]* <ld_ub1>:
10575 + *[0-9a-f]*: 1f 3f ld\.ub pc,pc\+\+
10576 + *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+
10577 + *[0-9a-f]*: 0b 35 ld\.ub r5,r5\+\+
10578 + *[0-9a-f]*: 09 34 ld\.ub r4,r4\+\+
10579 + *[0-9a-f]*: 1d 3e ld\.ub lr,lr\+\+
10580 + *[0-9a-f]*: 1d 38 ld\.ub r8,lr\+\+
10581 + *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+
10582 + *[0-9a-f]*: 15 3b ld\.ub r11,r10\+\+
10583 +
10584 +[0-9a-f]* <ld_w2>:
10585 + *[0-9a-f]*: 1f 4f ld\.w pc,--pc
10586 + *[0-9a-f]*: 19 4c ld\.w r12,--r12
10587 + *[0-9a-f]*: 0b 45 ld\.w r5,--r5
10588 + *[0-9a-f]*: 09 44 ld\.w r4,--r4
10589 + *[0-9a-f]*: 1d 4e ld\.w lr,--lr
10590 + *[0-9a-f]*: 1d 4a ld\.w r10,--lr
10591 + *[0-9a-f]*: 13 4c ld\.w r12,--r9
10592 + *[0-9a-f]*: 0b 46 ld\.w r6,--r5
10593 +
10594 +[0-9a-f]* <ld_sh2>:
10595 + *[0-9a-f]*: 1f 5f ld\.sh pc,--pc
10596 + *[0-9a-f]*: 19 5c ld\.sh r12,--r12
10597 + *[0-9a-f]*: 0b 55 ld\.sh r5,--r5
10598 + *[0-9a-f]*: 09 54 ld\.sh r4,--r4
10599 + *[0-9a-f]*: 1d 5e ld\.sh lr,--lr
10600 + *[0-9a-f]*: 15 5f ld\.sh pc,--r10
10601 + *[0-9a-f]*: 07 56 ld\.sh r6,--r3
10602 + *[0-9a-f]*: 0d 54 ld\.sh r4,--r6
10603 +
10604 +[0-9a-f]* <ld_uh2>:
10605 + *[0-9a-f]*: 1f 6f ld\.uh pc,--pc
10606 + *[0-9a-f]*: 19 6c ld\.uh r12,--r12
10607 + *[0-9a-f]*: 0b 65 ld\.uh r5,--r5
10608 + *[0-9a-f]*: 09 64 ld\.uh r4,--r4
10609 + *[0-9a-f]*: 1d 6e ld\.uh lr,--lr
10610 + *[0-9a-f]*: 05 63 ld\.uh r3,--r2
10611 + *[0-9a-f]*: 01 61 ld\.uh r1,--r0
10612 + *[0-9a-f]*: 13 62 ld\.uh r2,--r9
10613 +
10614 +[0-9a-f]* <ld_ub2>:
10615 + *[0-9a-f]*: 1f 7f ld\.ub pc,--pc
10616 + *[0-9a-f]*: 19 7c ld\.ub r12,--r12
10617 + *[0-9a-f]*: 0b 75 ld\.ub r5,--r5
10618 + *[0-9a-f]*: 09 74 ld\.ub r4,--r4
10619 + *[0-9a-f]*: 1d 7e ld\.ub lr,--lr
10620 + *[0-9a-f]*: 03 71 ld\.ub r1,--r1
10621 + *[0-9a-f]*: 0d 70 ld\.ub r0,--r6
10622 + *[0-9a-f]*: 0f 72 ld\.ub r2,--r7
10623 +
10624 +[0-9a-f]* <ld_ub3>:
10625 + *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\]
10626 + *[0-9a-f]*: 19 fc ld\.ub r12,r12\[0x7\]
10627 + *[0-9a-f]*: 0b c5 ld\.ub r5,r5\[0x4\]
10628 + *[0-9a-f]*: 09 b4 ld\.ub r4,r4\[0x3\]
10629 + *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\]
10630 + *[0-9a-f]*: 13 e6 ld\.ub r6,r9\[0x6\]
10631 + *[0-9a-f]*: 1d c2 ld\.ub r2,lr\[0x4\]
10632 + *[0-9a-f]*: 11 81 ld\.ub r1,r8\[0x0\]
10633 +
10634 +[0-9a-f]* <sub3_sp>:
10635 + *[0-9a-f]*: 20 0d sub sp,0
10636 + *[0-9a-f]*: 2f fd sub sp,-4
10637 + *[0-9a-f]*: 28 0d sub sp,-512
10638 + *[0-9a-f]*: 27 fd sub sp,508
10639 + *[0-9a-f]*: 20 1d sub sp,4
10640 + *[0-9a-f]*: 20 bd sub sp,44
10641 + *[0-9a-f]*: 20 2d sub sp,8
10642 + *[0-9a-f]*: 25 7d sub sp,348
10643 +
10644 +[0-9a-f]* <sub3>:
10645 + *[0-9a-f]*: 20 0f sub pc,0
10646 + *[0-9a-f]*: 2f fc sub r12,-1
10647 + *[0-9a-f]*: 28 05 sub r5,-128
10648 + *[0-9a-f]*: 27 f4 sub r4,127
10649 + *[0-9a-f]*: 20 1e sub lr,1
10650 + *[0-9a-f]*: 2d 76 sub r6,-41
10651 + *[0-9a-f]*: 22 54 sub r4,37
10652 + *[0-9a-f]*: 23 8c sub r12,56
10653 +
10654 +[0-9a-f]* <mov1>:
10655 + *[0-9a-f]*: 30 0f mov pc,0
10656 + *[0-9a-f]*: 3f fc mov r12,-1
10657 + *[0-9a-f]*: 38 05 mov r5,-128
10658 + *[0-9a-f]*: 37 f4 mov r4,127
10659 + *[0-9a-f]*: 30 1e mov lr,1
10660 + *[0-9a-f]*: 30 ef mov pc,14
10661 + *[0-9a-f]*: 39 c6 mov r6,-100
10662 + *[0-9a-f]*: 38 6e mov lr,-122
10663 +
10664 +[0-9a-f]* <lddsp>:
10665 + *[0-9a-f]*: 40 0f lddsp pc,sp\[0x0\]
10666 + *[0-9a-f]*: 47 fc lddsp r12,sp\[0x1fc\]
10667 + *[0-9a-f]*: 44 05 lddsp r5,sp\[0x100\]
10668 + *[0-9a-f]*: 43 f4 lddsp r4,sp\[0xfc\]
10669 + *[0-9a-f]*: 40 1e lddsp lr,sp\[0x4\]
10670 + *[0-9a-f]*: 44 0e lddsp lr,sp\[0x100\]
10671 + *[0-9a-f]*: 40 5c lddsp r12,sp\[0x14\]
10672 + *[0-9a-f]*: 47 69 lddsp r9,sp\[0x1d8\]
10673 +
10674 +[0-9a-f]* <lddpc>:
10675 + *[0-9a-f]*: 48 0f lddpc pc,[0-9a-f]* <.*>
10676 + *[0-9a-f]*: 4f f0 lddpc r0,[0-9a-f]* <.*>
10677 + *[0-9a-f]*: 4c 08 lddpc r8,[0-9a-f]* <.*>
10678 + *[0-9a-f]*: 4b f7 lddpc r7,[0-9a-f]* <.*>
10679 + *[0-9a-f]*: 48 1e lddpc lr,[0-9a-f]* <.*>
10680 + *[0-9a-f]*: 4f 6d lddpc sp,[0-9a-f]* <.*>
10681 + *[0-9a-f]*: 49 e6 lddpc r6,[0-9a-f]* <.*>
10682 + *[0-9a-f]*: 48 7b lddpc r11,[0-9a-f]* <.*>
10683 +
10684 +[0-9a-f]* <stdsp>:
10685 + *[0-9a-f]*: 50 0f stdsp sp\[0x0\],pc
10686 + *[0-9a-f]*: 57 fc stdsp sp\[0x1fc\],r12
10687 + *[0-9a-f]*: 54 05 stdsp sp\[0x100\],r5
10688 + *[0-9a-f]*: 53 f4 stdsp sp\[0xfc\],r4
10689 + *[0-9a-f]*: 50 1e stdsp sp\[0x4\],lr
10690 + *[0-9a-f]*: 54 cf stdsp sp\[0x130\],pc
10691 + *[0-9a-f]*: 54 00 stdsp sp\[0x100\],r0
10692 + *[0-9a-f]*: 55 45 stdsp sp\[0x150\],r5
10693 +
10694 +[0-9a-f]* <cp2>:
10695 + *[0-9a-f]*: 58 0f cp.w pc,0
10696 + *[0-9a-f]*: 5b fc cp.w r12,-1
10697 + *[0-9a-f]*: 5a 05 cp.w r5,-32
10698 + *[0-9a-f]*: 59 f4 cp.w r4,31
10699 + *[0-9a-f]*: 58 1e cp.w lr,1
10700 + *[0-9a-f]*: 58 38 cp.w r8,3
10701 + *[0-9a-f]*: 59 0e cp.w lr,16
10702 + *[0-9a-f]*: 5a 67 cp.w r7,-26
10703 +
10704 +[0-9a-f]* <acr>:
10705 + *[0-9a-f]*: 5c 0f acr pc
10706 + *[0-9a-f]*: 5c 0c acr r12
10707 + *[0-9a-f]*: 5c 05 acr r5
10708 + *[0-9a-f]*: 5c 04 acr r4
10709 + *[0-9a-f]*: 5c 0e acr lr
10710 + *[0-9a-f]*: 5c 02 acr r2
10711 + *[0-9a-f]*: 5c 0c acr r12
10712 + *[0-9a-f]*: 5c 0f acr pc
10713 +
10714 +[0-9a-f]* <scr>:
10715 + *[0-9a-f]*: 5c 1f scr pc
10716 + *[0-9a-f]*: 5c 1c scr r12
10717 + *[0-9a-f]*: 5c 15 scr r5
10718 + *[0-9a-f]*: 5c 14 scr r4
10719 + *[0-9a-f]*: 5c 1e scr lr
10720 + *[0-9a-f]*: 5c 1f scr pc
10721 + *[0-9a-f]*: 5c 16 scr r6
10722 + *[0-9a-f]*: 5c 11 scr r1
10723 +
10724 +[0-9a-f]* <cpc0>:
10725 + *[0-9a-f]*: 5c 2f cpc pc
10726 + *[0-9a-f]*: 5c 2c cpc r12
10727 + *[0-9a-f]*: 5c 25 cpc r5
10728 + *[0-9a-f]*: 5c 24 cpc r4
10729 + *[0-9a-f]*: 5c 2e cpc lr
10730 + *[0-9a-f]*: 5c 2f cpc pc
10731 + *[0-9a-f]*: 5c 24 cpc r4
10732 + *[0-9a-f]*: 5c 29 cpc r9
10733 +
10734 +[0-9a-f]* <neg>:
10735 + *[0-9a-f]*: 5c 3f neg pc
10736 + *[0-9a-f]*: 5c 3c neg r12
10737 + *[0-9a-f]*: 5c 35 neg r5
10738 + *[0-9a-f]*: 5c 34 neg r4
10739 + *[0-9a-f]*: 5c 3e neg lr
10740 + *[0-9a-f]*: 5c 37 neg r7
10741 + *[0-9a-f]*: 5c 31 neg r1
10742 + *[0-9a-f]*: 5c 39 neg r9
10743 +
10744 +[0-9a-f]* <abs>:
10745 + *[0-9a-f]*: 5c 4f abs pc
10746 + *[0-9a-f]*: 5c 4c abs r12
10747 + *[0-9a-f]*: 5c 45 abs r5
10748 + *[0-9a-f]*: 5c 44 abs r4
10749 + *[0-9a-f]*: 5c 4e abs lr
10750 + *[0-9a-f]*: 5c 46 abs r6
10751 + *[0-9a-f]*: 5c 46 abs r6
10752 + *[0-9a-f]*: 5c 44 abs r4
10753 +
10754 +[0-9a-f]* <castu_b>:
10755 + *[0-9a-f]*: 5c 5f castu\.b pc
10756 + *[0-9a-f]*: 5c 5c castu\.b r12
10757 + *[0-9a-f]*: 5c 55 castu\.b r5
10758 + *[0-9a-f]*: 5c 54 castu\.b r4
10759 + *[0-9a-f]*: 5c 5e castu\.b lr
10760 + *[0-9a-f]*: 5c 57 castu\.b r7
10761 + *[0-9a-f]*: 5c 5d castu\.b sp
10762 + *[0-9a-f]*: 5c 59 castu\.b r9
10763 +
10764 +[0-9a-f]* <casts_b>:
10765 + *[0-9a-f]*: 5c 6f casts\.b pc
10766 + *[0-9a-f]*: 5c 6c casts\.b r12
10767 + *[0-9a-f]*: 5c 65 casts\.b r5
10768 + *[0-9a-f]*: 5c 64 casts\.b r4
10769 + *[0-9a-f]*: 5c 6e casts\.b lr
10770 + *[0-9a-f]*: 5c 6b casts\.b r11
10771 + *[0-9a-f]*: 5c 61 casts\.b r1
10772 + *[0-9a-f]*: 5c 6a casts\.b r10
10773 +
10774 +[0-9a-f]* <castu_h>:
10775 + *[0-9a-f]*: 5c 7f castu\.h pc
10776 + *[0-9a-f]*: 5c 7c castu\.h r12
10777 + *[0-9a-f]*: 5c 75 castu\.h r5
10778 + *[0-9a-f]*: 5c 74 castu\.h r4
10779 + *[0-9a-f]*: 5c 7e castu\.h lr
10780 + *[0-9a-f]*: 5c 7a castu\.h r10
10781 + *[0-9a-f]*: 5c 7b castu\.h r11
10782 + *[0-9a-f]*: 5c 71 castu\.h r1
10783 +
10784 +[0-9a-f]* <casts_h>:
10785 + *[0-9a-f]*: 5c 8f casts\.h pc
10786 + *[0-9a-f]*: 5c 8c casts\.h r12
10787 + *[0-9a-f]*: 5c 85 casts\.h r5
10788 + *[0-9a-f]*: 5c 84 casts\.h r4
10789 + *[0-9a-f]*: 5c 8e casts\.h lr
10790 + *[0-9a-f]*: 5c 80 casts\.h r0
10791 + *[0-9a-f]*: 5c 85 casts\.h r5
10792 + *[0-9a-f]*: 5c 89 casts\.h r9
10793 +
10794 +[0-9a-f]* <brev>:
10795 + *[0-9a-f]*: 5c 9f brev pc
10796 + *[0-9a-f]*: 5c 9c brev r12
10797 + *[0-9a-f]*: 5c 95 brev r5
10798 + *[0-9a-f]*: 5c 94 brev r4
10799 + *[0-9a-f]*: 5c 9e brev lr
10800 + *[0-9a-f]*: 5c 95 brev r5
10801 + *[0-9a-f]*: 5c 9a brev r10
10802 + *[0-9a-f]*: 5c 98 brev r8
10803 +
10804 +[0-9a-f]* <swap_h>:
10805 + *[0-9a-f]*: 5c af swap\.h pc
10806 + *[0-9a-f]*: 5c ac swap\.h r12
10807 + *[0-9a-f]*: 5c a5 swap\.h r5
10808 + *[0-9a-f]*: 5c a4 swap\.h r4
10809 + *[0-9a-f]*: 5c ae swap\.h lr
10810 + *[0-9a-f]*: 5c a7 swap\.h r7
10811 + *[0-9a-f]*: 5c a0 swap\.h r0
10812 + *[0-9a-f]*: 5c a8 swap\.h r8
10813 +
10814 +[0-9a-f]* <swap_b>:
10815 + *[0-9a-f]*: 5c bf swap\.b pc
10816 + *[0-9a-f]*: 5c bc swap\.b r12
10817 + *[0-9a-f]*: 5c b5 swap\.b r5
10818 + *[0-9a-f]*: 5c b4 swap\.b r4
10819 + *[0-9a-f]*: 5c be swap\.b lr
10820 + *[0-9a-f]*: 5c ba swap\.b r10
10821 + *[0-9a-f]*: 5c bc swap\.b r12
10822 + *[0-9a-f]*: 5c b1 swap\.b r1
10823 +
10824 +[0-9a-f]* <swap_bh>:
10825 + *[0-9a-f]*: 5c cf swap\.bh pc
10826 + *[0-9a-f]*: 5c cc swap\.bh r12
10827 + *[0-9a-f]*: 5c c5 swap\.bh r5
10828 + *[0-9a-f]*: 5c c4 swap\.bh r4
10829 + *[0-9a-f]*: 5c ce swap\.bh lr
10830 + *[0-9a-f]*: 5c c9 swap\.bh r9
10831 + *[0-9a-f]*: 5c c4 swap\.bh r4
10832 + *[0-9a-f]*: 5c c1 swap\.bh r1
10833 +
10834 +[0-9a-f]* <One_s_compliment>:
10835 + *[0-9a-f]*: 5c df com pc
10836 + *[0-9a-f]*: 5c dc com r12
10837 + *[0-9a-f]*: 5c d5 com r5
10838 + *[0-9a-f]*: 5c d4 com r4
10839 + *[0-9a-f]*: 5c de com lr
10840 + *[0-9a-f]*: 5c d2 com r2
10841 + *[0-9a-f]*: 5c d2 com r2
10842 + *[0-9a-f]*: 5c d7 com r7
10843 +
10844 +[0-9a-f]* <tnbz>:
10845 + *[0-9a-f]*: 5c ef tnbz pc
10846 + *[0-9a-f]*: 5c ec tnbz r12
10847 + *[0-9a-f]*: 5c e5 tnbz r5
10848 + *[0-9a-f]*: 5c e4 tnbz r4
10849 + *[0-9a-f]*: 5c ee tnbz lr
10850 + *[0-9a-f]*: 5c e8 tnbz r8
10851 + *[0-9a-f]*: 5c ec tnbz r12
10852 + *[0-9a-f]*: 5c ef tnbz pc
10853 +
10854 +[0-9a-f]* <rol>:
10855 + *[0-9a-f]*: 5c ff rol pc
10856 + *[0-9a-f]*: 5c fc rol r12
10857 + *[0-9a-f]*: 5c f5 rol r5
10858 + *[0-9a-f]*: 5c f4 rol r4
10859 + *[0-9a-f]*: 5c fe rol lr
10860 + *[0-9a-f]*: 5c fa rol r10
10861 + *[0-9a-f]*: 5c f9 rol r9
10862 + *[0-9a-f]*: 5c f5 rol r5
10863 +
10864 +[0-9a-f]* <ror>:
10865 + *[0-9a-f]*: 5d 0f ror pc
10866 + *[0-9a-f]*: 5d 0c ror r12
10867 + *[0-9a-f]*: 5d 05 ror r5
10868 + *[0-9a-f]*: 5d 04 ror r4
10869 + *[0-9a-f]*: 5d 0e ror lr
10870 + *[0-9a-f]*: 5d 08 ror r8
10871 + *[0-9a-f]*: 5d 04 ror r4
10872 + *[0-9a-f]*: 5d 07 ror r7
10873 +
10874 +[0-9a-f]* <icall>:
10875 + *[0-9a-f]*: 5d 1f icall pc
10876 + *[0-9a-f]*: 5d 1c icall r12
10877 + *[0-9a-f]*: 5d 15 icall r5
10878 + *[0-9a-f]*: 5d 14 icall r4
10879 + *[0-9a-f]*: 5d 1e icall lr
10880 + *[0-9a-f]*: 5d 13 icall r3
10881 + *[0-9a-f]*: 5d 11 icall r1
10882 + *[0-9a-f]*: 5d 13 icall r3
10883 +
10884 +[0-9a-f]* <mustr>:
10885 + *[0-9a-f]*: 5d 2f mustr pc
10886 + *[0-9a-f]*: 5d 2c mustr r12
10887 + *[0-9a-f]*: 5d 25 mustr r5
10888 + *[0-9a-f]*: 5d 24 mustr r4
10889 + *[0-9a-f]*: 5d 2e mustr lr
10890 + *[0-9a-f]*: 5d 21 mustr r1
10891 + *[0-9a-f]*: 5d 24 mustr r4
10892 + *[0-9a-f]*: 5d 2c mustr r12
10893 +
10894 +[0-9a-f]* <musfr>:
10895 + *[0-9a-f]*: 5d 3f musfr pc
10896 + *[0-9a-f]*: 5d 3c musfr r12
10897 + *[0-9a-f]*: 5d 35 musfr r5
10898 + *[0-9a-f]*: 5d 34 musfr r4
10899 + *[0-9a-f]*: 5d 3e musfr lr
10900 + *[0-9a-f]*: 5d 3b musfr r11
10901 + *[0-9a-f]*: 5d 3c musfr r12
10902 + *[0-9a-f]*: 5d 32 musfr r2
10903 +
10904 +[0-9a-f]* <ret_cond>:
10905 + *[0-9a-f]*: 5e 0f reteq 1
10906 + *[0-9a-f]*: 5e fc retal r12
10907 + *[0-9a-f]*: 5e 85 retls r5
10908 + *[0-9a-f]*: 5e 74 retpl r4
10909 + *[0-9a-f]*: 5e 1e retne -1
10910 + *[0-9a-f]*: 5e 90 retgt r0
10911 + *[0-9a-f]*: 5e 9c retgt r12
10912 + *[0-9a-f]*: 5e 4a retge r10
10913 +
10914 +[0-9a-f]* <sr_cond>:
10915 + *[0-9a-f]*: 5f 0f sreq pc
10916 + *[0-9a-f]*: 5f fc sral r12
10917 + *[0-9a-f]*: 5f 85 srls r5
10918 + *[0-9a-f]*: 5f 74 srpl r4
10919 + *[0-9a-f]*: 5f 1e srne lr
10920 + *[0-9a-f]*: 5f 50 srlt r0
10921 + *[0-9a-f]*: 5f fd sral sp
10922 + *[0-9a-f]*: 5f 49 srge r9
10923 +
10924 +[0-9a-f]* <ld_w3>:
10925 + *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\]
10926 + *[0-9a-f]*: 79 fc ld\.w r12,r12\[0x7c\]
10927 + *[0-9a-f]*: 6b 05 ld\.w r5,r5\[0x40\]
10928 + *[0-9a-f]*: 68 f4 ld\.w r4,r4\[0x3c\]
10929 + *[0-9a-f]*: 7c 1e ld\.w lr,lr\[0x4\]
10930 + *[0-9a-f]*: 64 dd ld\.w sp,r2\[0x34\]
10931 + *[0-9a-f]*: 62 29 ld\.w r9,r1\[0x8\]
10932 + *[0-9a-f]*: 7a f5 ld\.w r5,sp\[0x3c\]
10933 +
10934 +[0-9a-f]* <ld_sh3>:
10935 + *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\]
10936 + *[0-9a-f]*: 98 7c ld\.sh r12,r12\[0xe\]
10937 + *[0-9a-f]*: 8a 45 ld\.sh r5,r5\[0x8\]
10938 + *[0-9a-f]*: 88 34 ld\.sh r4,r4\[0x6\]
10939 + *[0-9a-f]*: 9c 1e ld\.sh lr,lr\[0x2\]
10940 + *[0-9a-f]*: 84 44 ld\.sh r4,r2\[0x8\]
10941 + *[0-9a-f]*: 9c 5d ld\.sh sp,lr\[0xa\]
10942 + *[0-9a-f]*: 96 12 ld\.sh r2,r11\[0x2\]
10943 +
10944 +[0-9a-f]* <ld_uh3>:
10945 + *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\]
10946 + *[0-9a-f]*: 98 fc ld\.uh r12,r12\[0xe\]
10947 + *[0-9a-f]*: 8a c5 ld\.uh r5,r5\[0x8\]
10948 + *[0-9a-f]*: 88 b4 ld\.uh r4,r4\[0x6\]
10949 + *[0-9a-f]*: 9c 9e ld\.uh lr,lr\[0x2\]
10950 + *[0-9a-f]*: 80 da ld\.uh r10,r0\[0xa\]
10951 + *[0-9a-f]*: 96 c8 ld\.uh r8,r11\[0x8\]
10952 + *[0-9a-f]*: 84 ea ld\.uh r10,r2\[0xc\]
10953 +
10954 +[0-9a-f]* <st_w3>:
10955 + *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc
10956 + *[0-9a-f]*: 99 fc st\.w r12\[0x3c\],r12
10957 + *[0-9a-f]*: 8b 85 st\.w r5\[0x20\],r5
10958 + *[0-9a-f]*: 89 74 st\.w r4\[0x1c\],r4
10959 + *[0-9a-f]*: 9d 1e st\.w lr\[0x4\],lr
10960 + *[0-9a-f]*: 8f bb st\.w r7\[0x2c\],r11
10961 + *[0-9a-f]*: 85 66 st\.w r2\[0x18\],r6
10962 + *[0-9a-f]*: 89 39 st\.w r4\[0xc\],r9
10963 +
10964 +[0-9a-f]* <st_h3>:
10965 + *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc
10966 + *[0-9a-f]*: b8 7c st\.h r12\[0xe\],r12
10967 + *[0-9a-f]*: aa 45 st\.h r5\[0x8\],r5
10968 + *[0-9a-f]*: a8 34 st\.h r4\[0x6\],r4
10969 + *[0-9a-f]*: bc 1e st\.h lr\[0x2\],lr
10970 + *[0-9a-f]*: bc 5c st\.h lr\[0xa\],r12
10971 + *[0-9a-f]*: ac 20 st\.h r6\[0x4\],r0
10972 + *[0-9a-f]*: aa 6d st\.h r5\[0xc\],sp
10973 +
10974 +[0-9a-f]* <st_b3>:
10975 + *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc
10976 + *[0-9a-f]*: b8 fc st\.b r12\[0x7\],r12
10977 + *[0-9a-f]*: aa c5 st\.b r5\[0x4\],r5
10978 + *[0-9a-f]*: a8 b4 st\.b r4\[0x3\],r4
10979 + *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr
10980 + *[0-9a-f]*: b8 e9 st\.b r12\[0x6\],r9
10981 + *[0-9a-f]*: a4 be st\.b r2\[0x3\],lr
10982 + *[0-9a-f]*: a2 bb st\.b r1\[0x3\],r11
10983 +
10984 +[0-9a-f]* <ldd>:
10985 + *[0-9a-f]*: bf 00 ld\.d r0,pc
10986 + *[0-9a-f]*: b9 0e ld\.d lr,r12
10987 + *[0-9a-f]*: ab 08 ld\.d r8,r5
10988 + *[0-9a-f]*: a9 06 ld\.d r6,r4
10989 + *[0-9a-f]*: bd 02 ld\.d r2,lr
10990 + *[0-9a-f]*: af 0e ld\.d lr,r7
10991 + *[0-9a-f]*: a9 04 ld\.d r4,r4
10992 + *[0-9a-f]*: bf 0e ld\.d lr,pc
10993 +
10994 +[0-9a-f]* <ldd_postinc>:
10995 + *[0-9a-f]*: bf 01 ld\.d r0,pc\+\+
10996 + *[0-9a-f]*: b9 0f ld\.d lr,r12\+\+
10997 + *[0-9a-f]*: ab 09 ld\.d r8,r5\+\+
10998 + *[0-9a-f]*: a9 07 ld\.d r6,r4\+\+
10999 + *[0-9a-f]*: bd 03 ld\.d r2,lr\+\+
11000 + *[0-9a-f]*: ab 0f ld\.d lr,r5\+\+
11001 + *[0-9a-f]*: b7 0d ld\.d r12,r11\+\+
11002 + *[0-9a-f]*: b9 03 ld\.d r2,r12\+\+
11003 +
11004 +[0-9a-f]* <ldd_predec>:
11005 + *[0-9a-f]*: bf 10 ld\.d r0,--pc
11006 + *[0-9a-f]*: b9 1e ld\.d lr,--r12
11007 + *[0-9a-f]*: ab 18 ld\.d r8,--r5
11008 + *[0-9a-f]*: a9 16 ld\.d r6,--r4
11009 + *[0-9a-f]*: bd 12 ld\.d r2,--lr
11010 + *[0-9a-f]*: a1 18 ld\.d r8,--r0
11011 + *[0-9a-f]*: bf 1a ld\.d r10,--pc
11012 + *[0-9a-f]*: a9 12 ld\.d r2,--r4
11013 +
11014 +[0-9a-f]* <std>:
11015 + *[0-9a-f]*: bf 11 st\.d pc,r0
11016 + *[0-9a-f]*: b9 1f st\.d r12,lr
11017 + *[0-9a-f]*: ab 19 st\.d r5,r8
11018 + *[0-9a-f]*: a9 17 st\.d r4,r6
11019 + *[0-9a-f]*: bd 13 st\.d lr,r2
11020 + *[0-9a-f]*: a1 1d st\.d r0,r12
11021 + *[0-9a-f]*: bb 15 st\.d sp,r4
11022 + *[0-9a-f]*: b9 1d st\.d r12,r12
11023 +
11024 +[0-9a-f]* <std_postinc>:
11025 + *[0-9a-f]*: bf 20 st\.d pc\+\+,r0
11026 + *[0-9a-f]*: b9 2e st\.d r12\+\+,lr
11027 + *[0-9a-f]*: ab 28 st\.d r5\+\+,r8
11028 + *[0-9a-f]*: a9 26 st\.d r4\+\+,r6
11029 + *[0-9a-f]*: bd 22 st\.d lr\+\+,r2
11030 + *[0-9a-f]*: bb 26 st\.d sp\+\+,r6
11031 + *[0-9a-f]*: b5 26 st\.d r10\+\+,r6
11032 + *[0-9a-f]*: af 22 st\.d r7\+\+,r2
11033 +
11034 +[0-9a-f]* <std_predec>:
11035 + *[0-9a-f]*: bf 21 st\.d --pc,r0
11036 + *[0-9a-f]*: b9 2f st\.d --r12,lr
11037 + *[0-9a-f]*: ab 29 st\.d --r5,r8
11038 + *[0-9a-f]*: a9 27 st\.d --r4,r6
11039 + *[0-9a-f]*: bd 23 st\.d --lr,r2
11040 + *[0-9a-f]*: a7 27 st\.d --r3,r6
11041 + *[0-9a-f]*: bd 23 st\.d --lr,r2
11042 + *[0-9a-f]*: a1 25 st\.d --r0,r4
11043 +
11044 +[0-9a-f]* <mul>:
11045 + *[0-9a-f]*: bf 3f mul pc,pc
11046 + *[0-9a-f]*: b9 3c mul r12,r12
11047 + *[0-9a-f]*: ab 35 mul r5,r5
11048 + *[0-9a-f]*: a9 34 mul r4,r4
11049 + *[0-9a-f]*: bd 3e mul lr,lr
11050 + *[0-9a-f]*: bd 3a mul r10,lr
11051 + *[0-9a-f]*: b1 30 mul r0,r8
11052 + *[0-9a-f]*: ab 38 mul r8,r5
11053 +
11054 +[0-9a-f]* <asr_imm5>:
11055 + *[0-9a-f]*: a1 4f asr pc,0x0
11056 + *[0-9a-f]*: bf 5c asr r12,0x1f
11057 + *[0-9a-f]*: b1 45 asr r5,0x10
11058 + *[0-9a-f]*: af 54 asr r4,0xf
11059 + *[0-9a-f]*: a1 5e asr lr,0x1
11060 + *[0-9a-f]*: b7 56 asr r6,0x17
11061 + *[0-9a-f]*: b3 46 asr r6,0x12
11062 + *[0-9a-f]*: a9 45 asr r5,0x8
11063 +
11064 +[0-9a-f]* <lsl_imm5>:
11065 + *[0-9a-f]*: a1 6f lsl pc,0x0
11066 + *[0-9a-f]*: bf 7c lsl r12,0x1f
11067 + *[0-9a-f]*: b1 65 lsl r5,0x10
11068 + *[0-9a-f]*: af 74 lsl r4,0xf
11069 + *[0-9a-f]*: a1 7e lsl lr,0x1
11070 + *[0-9a-f]*: ad 7c lsl r12,0xd
11071 + *[0-9a-f]*: b1 66 lsl r6,0x10
11072 + *[0-9a-f]*: b9 71 lsl r1,0x19
11073 +
11074 +[0-9a-f]* <lsr_imm5>:
11075 + *[0-9a-f]*: a1 8f lsr pc,0x0
11076 + *[0-9a-f]*: bf 9c lsr r12,0x1f
11077 + *[0-9a-f]*: b1 85 lsr r5,0x10
11078 + *[0-9a-f]*: af 94 lsr r4,0xf
11079 + *[0-9a-f]*: a1 9e lsr lr,0x1
11080 + *[0-9a-f]*: a1 90 lsr r0,0x1
11081 + *[0-9a-f]*: ab 88 lsr r8,0xa
11082 + *[0-9a-f]*: bb 87 lsr r7,0x1a
11083 +
11084 +[0-9a-f]* <sbr>:
11085 + *[0-9a-f]*: a1 af sbr pc,0x0
11086 + *[0-9a-f]*: bf bc sbr r12,0x1f
11087 + *[0-9a-f]*: b1 a5 sbr r5,0x10
11088 + *[0-9a-f]*: af b4 sbr r4,0xf
11089 + *[0-9a-f]*: a1 be sbr lr,0x1
11090 + *[0-9a-f]*: bf b8 sbr r8,0x1f
11091 + *[0-9a-f]*: b7 a6 sbr r6,0x16
11092 + *[0-9a-f]*: b7 b1 sbr r1,0x17
11093 +
11094 +[0-9a-f]* <cbr>:
11095 + *[0-9a-f]*: a1 cf cbr pc,0x0
11096 + *[0-9a-f]*: bf dc cbr r12,0x1f
11097 + *[0-9a-f]*: b1 c5 cbr r5,0x10
11098 + *[0-9a-f]*: af d4 cbr r4,0xf
11099 + *[0-9a-f]*: a1 de cbr lr,0x1
11100 + *[0-9a-f]*: ab cc cbr r12,0xa
11101 + *[0-9a-f]*: b7 c7 cbr r7,0x16
11102 + *[0-9a-f]*: a9 d8 cbr r8,0x9
11103 +
11104 +[0-9a-f]* <brc1>:
11105 + *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*>
11106 + *[0-9a-f]*: cf f7 brpl [0-9a-f]* <.*>
11107 + *[0-9a-f]*: c8 04 brge [0-9a-f]* <.*>
11108 + *[0-9a-f]*: c7 f3 brcs [0-9a-f]* <.*>
11109 + *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*>
11110 + *[0-9a-f]*: c7 33 brcs [0-9a-f]* <.*>
11111 + *[0-9a-f]*: cf 70 breq [0-9a-f]* <.*>
11112 + *[0-9a-f]*: c0 60 breq [0-9a-f]* <.*>
11113 +
11114 +[0-9a-f]* <rjmp>:
11115 + *[0-9a-f]*: c0 08 rjmp [0-9a-f]* <.*>
11116 + *[0-9a-f]*: cf fb rjmp [0-9a-f]* <.*>
11117 + *[0-9a-f]*: c0 0a rjmp [0-9a-f]* <.*>
11118 + *[0-9a-f]*: cf f9 rjmp [0-9a-f]* <.*>
11119 + *[0-9a-f]*: c0 18 rjmp [0-9a-f]* <.*>
11120 + *[0-9a-f]*: c1 fa rjmp [0-9a-f]* <.*>
11121 + *[0-9a-f]*: c0 78 rjmp [0-9a-f]* <.*>
11122 + *[0-9a-f]*: cf ea rjmp [0-9a-f]* <.*>
11123 +
11124 +[0-9a-f]* <rcall1>:
11125 + *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*>
11126 + *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*>
11127 + *[0-9a-f]*: c0 0e rcall [0-9a-f]* <.*>
11128 + *[0-9a-f]*: cf fd rcall [0-9a-f]* <.*>
11129 + *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*>
11130 + *[0-9a-f]*: c6 cc rcall [0-9a-f]* <.*>
11131 + *[0-9a-f]*: cf 7e rcall [0-9a-f]* <.*>
11132 + *[0-9a-f]*: c1 ae rcall [0-9a-f]* <.*>
11133 +
11134 +[0-9a-f]* <acall>:
11135 + *[0-9a-f]*: d0 00 acall 0x0
11136 + *[0-9a-f]*: df f0 acall 0x3fc
11137 + *[0-9a-f]*: d8 00 acall 0x200
11138 + *[0-9a-f]*: d7 f0 acall 0x1fc
11139 + *[0-9a-f]*: d0 10 acall 0x4
11140 + *[0-9a-f]*: d5 90 acall 0x164
11141 + *[0-9a-f]*: d4 c0 acall 0x130
11142 + *[0-9a-f]*: d2 b0 acall 0xac
11143 +
11144 +[0-9a-f]* <scall>:
11145 + *[0-9a-f]*: d7 33 scall
11146 + *[0-9a-f]*: d7 33 scall
11147 + *[0-9a-f]*: d7 33 scall
11148 + *[0-9a-f]*: d7 33 scall
11149 + *[0-9a-f]*: d7 33 scall
11150 + *[0-9a-f]*: d7 33 scall
11151 + *[0-9a-f]*: d7 33 scall
11152 + *[0-9a-f]*: d7 33 scall
11153 +
11154 +[0-9a-f]* <popm>:
11155 + *[0-9a-f]*: d8 02 popm pc
11156 + *[0-9a-f]*: dd fa popm r0-r11,pc,r12=-1
11157 + *[0-9a-f]*: d4 02 popm lr
11158 + *[0-9a-f]*: db fa popm r0-r11,pc,r12=1
11159 + *[0-9a-f]*: d0 12 popm r0-r3
11160 + *[0-9a-f]*: d8 e2 popm r4-r10,pc
11161 + *[0-9a-f]*: d9 1a popm r0-r3,r11,pc,r12=0
11162 + *[0-9a-f]*: d7 b2 popm r0-r7,r10-r12,lr
11163 +
11164 +[0-9a-f]* <pushm>:
11165 + *[0-9a-f]*: d8 01 pushm pc
11166 + *[0-9a-f]*: df f1 pushm r0-r12,lr-pc
11167 + *[0-9a-f]*: d8 01 pushm pc
11168 + *[0-9a-f]*: d7 f1 pushm r0-r12,lr
11169 + *[0-9a-f]*: d0 11 pushm r0-r3
11170 + *[0-9a-f]*: dc c1 pushm r8-r10,lr-pc
11171 + *[0-9a-f]*: d0 91 pushm r0-r3,r10
11172 + *[0-9a-f]*: d2 41 pushm r8-r9,r12
11173 +
11174 +[0-9a-f]* <popm_n>:
11175 +.*
11176 +.*
11177 +.*
11178 +.*
11179 +.*
11180 +.*
11181 +.*
11182 +.*
11183 +
11184 +[0-9a-f]* <pushm_n>:
11185 +.*
11186 +.*
11187 +.*
11188 +.*
11189 +.*
11190 +.*
11191 +.*
11192 +.*
11193 +
11194 +[0-9a-f]* <csrfcz>:
11195 + *[0-9a-f]*: d0 03 csrfcz 0x0
11196 + *[0-9a-f]*: d1 f3 csrfcz 0x1f
11197 + *[0-9a-f]*: d1 03 csrfcz 0x10
11198 + *[0-9a-f]*: d0 f3 csrfcz 0xf
11199 + *[0-9a-f]*: d0 13 csrfcz 0x1
11200 + *[0-9a-f]*: d0 53 csrfcz 0x5
11201 + *[0-9a-f]*: d0 d3 csrfcz 0xd
11202 + *[0-9a-f]*: d1 73 csrfcz 0x17
11203 +
11204 +[0-9a-f]* <ssrf>:
11205 + *[0-9a-f]*: d2 03 ssrf 0x0
11206 + *[0-9a-f]*: d3 f3 ssrf 0x1f
11207 + *[0-9a-f]*: d3 03 ssrf 0x10
11208 + *[0-9a-f]*: d2 f3 ssrf 0xf
11209 + *[0-9a-f]*: d2 13 ssrf 0x1
11210 + *[0-9a-f]*: d3 d3 ssrf 0x1d
11211 + *[0-9a-f]*: d2 d3 ssrf 0xd
11212 + *[0-9a-f]*: d2 d3 ssrf 0xd
11213 +
11214 +[0-9a-f]* <csrf>:
11215 + *[0-9a-f]*: d4 03 csrf 0x0
11216 + *[0-9a-f]*: d5 f3 csrf 0x1f
11217 + *[0-9a-f]*: d5 03 csrf 0x10
11218 + *[0-9a-f]*: d4 f3 csrf 0xf
11219 + *[0-9a-f]*: d4 13 csrf 0x1
11220 + *[0-9a-f]*: d4 a3 csrf 0xa
11221 + *[0-9a-f]*: d4 f3 csrf 0xf
11222 + *[0-9a-f]*: d4 b3 csrf 0xb
11223 +
11224 +[0-9a-f]* <rete>:
11225 + *[0-9a-f]*: d6 03 rete
11226 +
11227 +[0-9a-f]* <rets>:
11228 + *[0-9a-f]*: d6 13 rets
11229 +
11230 +[0-9a-f]* <retd>:
11231 + *[0-9a-f]*: d6 23 retd
11232 +
11233 +[0-9a-f]* <retj>:
11234 + *[0-9a-f]*: d6 33 retj
11235 +
11236 +[0-9a-f]* <tlbr>:
11237 + *[0-9a-f]*: d6 43 tlbr
11238 +
11239 +[0-9a-f]* <tlbs>:
11240 + *[0-9a-f]*: d6 53 tlbs
11241 +
11242 +[0-9a-f]* <tlbw>:
11243 + *[0-9a-f]*: d6 63 tlbw
11244 +
11245 +[0-9a-f]* <breakpoint>:
11246 + *[0-9a-f]*: d6 73 breakpoint
11247 +
11248 +[0-9a-f]* <incjosp>:
11249 + *[0-9a-f]*: d6 83 incjosp 1
11250 + *[0-9a-f]*: d6 93 incjosp 2
11251 + *[0-9a-f]*: d6 a3 incjosp 3
11252 + *[0-9a-f]*: d6 b3 incjosp 4
11253 + *[0-9a-f]*: d6 c3 incjosp -4
11254 + *[0-9a-f]*: d6 d3 incjosp -3
11255 + *[0-9a-f]*: d6 e3 incjosp -2
11256 + *[0-9a-f]*: d6 f3 incjosp -1
11257 +
11258 +[0-9a-f]* <nop>:
11259 + *[0-9a-f]*: d7 03 nop
11260 +
11261 +[0-9a-f]* <popjc>:
11262 + *[0-9a-f]*: d7 13 popjc
11263 +
11264 +[0-9a-f]* <pushjc>:
11265 + *[0-9a-f]*: d7 23 pushjc
11266 +
11267 +[0-9a-f]* <add2>:
11268 + *[0-9a-f]*: fe 0f 00 0f add pc,pc,pc
11269 + *[0-9a-f]*: f8 0c 00 3c add r12,r12,r12<<0x3
11270 + *[0-9a-f]*: ea 05 00 25 add r5,r5,r5<<0x2
11271 + *[0-9a-f]*: e8 04 00 14 add r4,r4,r4<<0x1
11272 + *[0-9a-f]*: fc 0e 00 1e add lr,lr,lr<<0x1
11273 + *[0-9a-f]*: f8 00 00 10 add r0,r12,r0<<0x1
11274 + *[0-9a-f]*: f8 04 00 09 add r9,r12,r4
11275 + *[0-9a-f]*: f8 07 00 2c add r12,r12,r7<<0x2
11276 +
11277 +[0-9a-f]* <sub2>:
11278 + *[0-9a-f]*: fe 0f 01 0f sub pc,pc,pc
11279 + *[0-9a-f]*: f8 0c 01 3c sub r12,r12,r12<<0x3
11280 + *[0-9a-f]*: ea 05 01 25 sub r5,r5,r5<<0x2
11281 + *[0-9a-f]*: e8 04 01 14 sub r4,r4,r4<<0x1
11282 + *[0-9a-f]*: fc 0e 01 1e sub lr,lr,lr<<0x1
11283 + *[0-9a-f]*: e6 04 01 0d sub sp,r3,r4
11284 + *[0-9a-f]*: ee 03 01 03 sub r3,r7,r3
11285 + *[0-9a-f]*: f4 0d 01 1d sub sp,r10,sp<<0x1
11286 +
11287 +[0-9a-f]* <divu>:
11288 + *[0-9a-f]*: fe 0f 0d 0f divu pc,pc,pc
11289 + *[0-9a-f]*: f8 0c 0d 0c divu r12,r12,r12
11290 + *[0-9a-f]*: ea 05 0d 05 divu r5,r5,r5
11291 + *[0-9a-f]*: e8 04 0d 04 divu r4,r4,r4
11292 + *[0-9a-f]*: fc 0e 0d 0e divu lr,lr,lr
11293 + *[0-9a-f]*: e8 0f 0d 0d divu sp,r4,pc
11294 + *[0-9a-f]*: ea 0d 0d 05 divu r5,r5,sp
11295 + *[0-9a-f]*: fa 00 0d 0a divu r10,sp,r0
11296 +
11297 +[0-9a-f]* <addhh_w>:
11298 + *[0-9a-f]*: fe 0f 0e 0f addhh\.w pc,pc:b,pc:b
11299 + *[0-9a-f]*: f8 0c 0e 3c addhh\.w r12,r12:t,r12:t
11300 + *[0-9a-f]*: ea 05 0e 35 addhh\.w r5,r5:t,r5:t
11301 + *[0-9a-f]*: e8 04 0e 04 addhh\.w r4,r4:b,r4:b
11302 + *[0-9a-f]*: fc 0e 0e 3e addhh\.w lr,lr:t,lr:t
11303 + *[0-9a-f]*: e0 03 0e 00 addhh\.w r0,r0:b,r3:b
11304 + *[0-9a-f]*: f8 07 0e 2e addhh\.w lr,r12:t,r7:b
11305 + *[0-9a-f]*: f4 02 0e 23 addhh\.w r3,r10:t,r2:b
11306 +
11307 +[0-9a-f]* <subhh_w>:
11308 + *[0-9a-f]*: fe 0f 0f 0f subhh\.w pc,pc:b,pc:b
11309 + *[0-9a-f]*: f8 0c 0f 3c subhh\.w r12,r12:t,r12:t
11310 + *[0-9a-f]*: ea 05 0f 35 subhh\.w r5,r5:t,r5:t
11311 + *[0-9a-f]*: e8 04 0f 04 subhh\.w r4,r4:b,r4:b
11312 + *[0-9a-f]*: fc 0e 0f 3e subhh\.w lr,lr:t,lr:t
11313 + *[0-9a-f]*: e2 07 0f 2a subhh\.w r10,r1:t,r7:b
11314 + *[0-9a-f]*: f4 0e 0f 3f subhh\.w pc,r10:t,lr:t
11315 + *[0-9a-f]*: e0 0c 0f 23 subhh\.w r3,r0:t,r12:b
11316 +
11317 +[0-9a-f]* <adc>:
11318 + *[0-9a-f]*: fe 0f 00 4f adc pc,pc,pc
11319 + *[0-9a-f]*: f8 0c 00 4c adc r12,r12,r12
11320 + *[0-9a-f]*: ea 05 00 45 adc r5,r5,r5
11321 + *[0-9a-f]*: e8 04 00 44 adc r4,r4,r4
11322 + *[0-9a-f]*: fc 0e 00 4e adc lr,lr,lr
11323 + *[0-9a-f]*: e0 07 00 44 adc r4,r0,r7
11324 + *[0-9a-f]*: e8 03 00 4d adc sp,r4,r3
11325 + *[0-9a-f]*: f8 00 00 42 adc r2,r12,r0
11326 +
11327 +[0-9a-f]* <sbc>:
11328 + *[0-9a-f]*: fe 0f 01 4f sbc pc,pc,pc
11329 + *[0-9a-f]*: f8 0c 01 4c sbc r12,r12,r12
11330 + *[0-9a-f]*: ea 05 01 45 sbc r5,r5,r5
11331 + *[0-9a-f]*: e8 04 01 44 sbc r4,r4,r4
11332 + *[0-9a-f]*: fc 0e 01 4e sbc lr,lr,lr
11333 + *[0-9a-f]*: ee 09 01 46 sbc r6,r7,r9
11334 + *[0-9a-f]*: f0 05 01 40 sbc r0,r8,r5
11335 + *[0-9a-f]*: e0 04 01 41 sbc r1,r0,r4
11336 +
11337 +[0-9a-f]* <mul_2>:
11338 + *[0-9a-f]*: fe 0f 02 4f mul pc,pc,pc
11339 + *[0-9a-f]*: f8 0c 02 4c mul r12,r12,r12
11340 + *[0-9a-f]*: ea 05 02 45 mul r5,r5,r5
11341 + *[0-9a-f]*: e8 04 02 44 mul r4,r4,r4
11342 + *[0-9a-f]*: fc 0e 02 4e mul lr,lr,lr
11343 + *[0-9a-f]*: e0 00 02 4f mul pc,r0,r0
11344 + *[0-9a-f]*: fe 0e 02 48 mul r8,pc,lr
11345 + *[0-9a-f]*: f8 0f 02 44 mul r4,r12,pc
11346 +
11347 +[0-9a-f]* <mac>:
11348 + *[0-9a-f]*: fe 0f 03 4f mac pc,pc,pc
11349 + *[0-9a-f]*: f8 0c 03 4c mac r12,r12,r12
11350 + *[0-9a-f]*: ea 05 03 45 mac r5,r5,r5
11351 + *[0-9a-f]*: e8 04 03 44 mac r4,r4,r4
11352 + *[0-9a-f]*: fc 0e 03 4e mac lr,lr,lr
11353 + *[0-9a-f]*: e8 00 03 4a mac r10,r4,r0
11354 + *[0-9a-f]*: fc 00 03 47 mac r7,lr,r0
11355 + *[0-9a-f]*: f2 0c 03 42 mac r2,r9,r12
11356 +
11357 +[0-9a-f]* <mulsd>:
11358 + *[0-9a-f]*: fe 0f 04 4f muls\.d pc,pc,pc
11359 + *[0-9a-f]*: f8 0c 04 4c muls\.d r12,r12,r12
11360 + *[0-9a-f]*: ea 05 04 45 muls\.d r5,r5,r5
11361 + *[0-9a-f]*: e8 04 04 44 muls\.d r4,r4,r4
11362 + *[0-9a-f]*: fc 0e 04 4e muls\.d lr,lr,lr
11363 + *[0-9a-f]*: f0 0e 04 42 muls\.d r2,r8,lr
11364 + *[0-9a-f]*: e0 0b 04 44 muls\.d r4,r0,r11
11365 + *[0-9a-f]*: fc 06 04 45 muls\.d r5,lr,r6
11366 +
11367 +[0-9a-f]* <macsd>:
11368 + *[0-9a-f]*: fe 0f 05 40 macs\.d r0,pc,pc
11369 + *[0-9a-f]*: f8 0c 05 4e macs\.d lr,r12,r12
11370 + *[0-9a-f]*: ea 05 05 48 macs\.d r8,r5,r5
11371 + *[0-9a-f]*: e8 04 05 46 macs\.d r6,r4,r4
11372 + *[0-9a-f]*: fc 0e 05 42 macs\.d r2,lr,lr
11373 + *[0-9a-f]*: e2 09 05 48 macs\.d r8,r1,r9
11374 + *[0-9a-f]*: f0 08 05 4e macs\.d lr,r8,r8
11375 + *[0-9a-f]*: e6 0c 05 44 macs\.d r4,r3,r12
11376 +
11377 +[0-9a-f]* <mulud>:
11378 + *[0-9a-f]*: fe 0f 06 40 mulu\.d r0,pc,pc
11379 + *[0-9a-f]*: f8 0c 06 4e mulu\.d lr,r12,r12
11380 + *[0-9a-f]*: ea 05 06 48 mulu\.d r8,r5,r5
11381 + *[0-9a-f]*: e8 04 06 46 mulu\.d r6,r4,r4
11382 + *[0-9a-f]*: fc 0e 06 42 mulu\.d r2,lr,lr
11383 + *[0-9a-f]*: ea 00 06 46 mulu\.d r6,r5,r0
11384 + *[0-9a-f]*: ec 01 06 44 mulu\.d r4,r6,r1
11385 + *[0-9a-f]*: f0 02 06 48 mulu\.d r8,r8,r2
11386 +
11387 +[0-9a-f]* <macud>:
11388 + *[0-9a-f]*: fe 0f 07 40 macu\.d r0,pc,pc
11389 + *[0-9a-f]*: f8 0c 07 4e macu\.d lr,r12,r12
11390 + *[0-9a-f]*: ea 05 07 48 macu\.d r8,r5,r5
11391 + *[0-9a-f]*: e8 04 07 46 macu\.d r6,r4,r4
11392 + *[0-9a-f]*: fc 0e 07 42 macu\.d r2,lr,lr
11393 + *[0-9a-f]*: fa 0b 07 46 macu\.d r6,sp,r11
11394 + *[0-9a-f]*: e8 08 07 42 macu\.d r2,r4,r8
11395 + *[0-9a-f]*: f4 09 07 46 macu\.d r6,r10,r9
11396 +
11397 +[0-9a-f]* <asr_1>:
11398 + *[0-9a-f]*: fe 0f 08 4f asr pc,pc,pc
11399 + *[0-9a-f]*: f8 0c 08 4c asr r12,r12,r12
11400 + *[0-9a-f]*: ea 05 08 45 asr r5,r5,r5
11401 + *[0-9a-f]*: e8 04 08 44 asr r4,r4,r4
11402 + *[0-9a-f]*: fc 0e 08 4e asr lr,lr,lr
11403 + *[0-9a-f]*: ec 0f 08 4f asr pc,r6,pc
11404 + *[0-9a-f]*: ec 0c 08 40 asr r0,r6,r12
11405 + *[0-9a-f]*: fa 00 08 44 asr r4,sp,r0
11406 +
11407 +[0-9a-f]* <lsl_1>:
11408 + *[0-9a-f]*: fe 0f 09 4f lsl pc,pc,pc
11409 + *[0-9a-f]*: f8 0c 09 4c lsl r12,r12,r12
11410 + *[0-9a-f]*: ea 05 09 45 lsl r5,r5,r5
11411 + *[0-9a-f]*: e8 04 09 44 lsl r4,r4,r4
11412 + *[0-9a-f]*: fc 0e 09 4e lsl lr,lr,lr
11413 + *[0-9a-f]*: ea 0e 09 4e lsl lr,r5,lr
11414 + *[0-9a-f]*: fe 03 09 45 lsl r5,pc,r3
11415 + *[0-9a-f]*: fe 09 09 41 lsl r1,pc,r9
11416 +
11417 +[0-9a-f]* <lsr_1>:
11418 + *[0-9a-f]*: fe 0f 0a 4f lsr pc,pc,pc
11419 + *[0-9a-f]*: f8 0c 0a 4c lsr r12,r12,r12
11420 + *[0-9a-f]*: ea 05 0a 45 lsr r5,r5,r5
11421 + *[0-9a-f]*: e8 04 0a 44 lsr r4,r4,r4
11422 + *[0-9a-f]*: fc 0e 0a 4e lsr lr,lr,lr
11423 + *[0-9a-f]*: e8 01 0a 42 lsr r2,r4,r1
11424 + *[0-9a-f]*: e2 06 0a 45 lsr r5,r1,r6
11425 + *[0-9a-f]*: ec 07 0a 4d lsr sp,r6,r7
11426 +
11427 +[0-9a-f]* <xchg>:
11428 + *[0-9a-f]*: fe 0f 0b 4f xchg pc,pc,pc
11429 + *[0-9a-f]*: f8 0c 0b 4c xchg r12,r12,r12
11430 + *[0-9a-f]*: ea 05 0b 45 xchg r5,r5,r5
11431 + *[0-9a-f]*: e8 04 0b 44 xchg r4,r4,r4
11432 + *[0-9a-f]*: fc 0e 0b 4e xchg lr,lr,lr
11433 + *[0-9a-f]*: e8 0d 0b 4e xchg lr,r4,sp
11434 + *[0-9a-f]*: ea 0c 0b 41 xchg r1,r5,r12
11435 + *[0-9a-f]*: f8 00 0b 4e xchg lr,r12,r0
11436 +
11437 +[0-9a-f]* <max>:
11438 + *[0-9a-f]*: fe 0f 0c 4f max pc,pc,pc
11439 + *[0-9a-f]*: f8 0c 0c 4c max r12,r12,r12
11440 + *[0-9a-f]*: ea 05 0c 45 max r5,r5,r5
11441 + *[0-9a-f]*: e8 04 0c 44 max r4,r4,r4
11442 + *[0-9a-f]*: fc 0e 0c 4e max lr,lr,lr
11443 + *[0-9a-f]*: e4 0d 0c 4e max lr,r2,sp
11444 + *[0-9a-f]*: f4 09 0c 44 max r4,r10,r9
11445 + *[0-9a-f]*: f2 0e 0c 4e max lr,r9,lr
11446 +
11447 +[0-9a-f]* <min>:
11448 + *[0-9a-f]*: fe 0f 0d 4f min pc,pc,pc
11449 + *[0-9a-f]*: f8 0c 0d 4c min r12,r12,r12
11450 + *[0-9a-f]*: ea 05 0d 45 min r5,r5,r5
11451 + *[0-9a-f]*: e8 04 0d 44 min r4,r4,r4
11452 + *[0-9a-f]*: fc 0e 0d 4e min lr,lr,lr
11453 + *[0-9a-f]*: ee 08 0d 49 min r9,r7,r8
11454 + *[0-9a-f]*: ea 05 0d 4d min sp,r5,r5
11455 + *[0-9a-f]*: e2 04 0d 44 min r4,r1,r4
11456 +
11457 +[0-9a-f]* <addabs>:
11458 + *[0-9a-f]*: fe 0f 0e 4f addabs pc,pc,pc
11459 + *[0-9a-f]*: f8 0c 0e 4c addabs r12,r12,r12
11460 + *[0-9a-f]*: ea 05 0e 45 addabs r5,r5,r5
11461 + *[0-9a-f]*: e8 04 0e 44 addabs r4,r4,r4
11462 + *[0-9a-f]*: fc 0e 0e 4e addabs lr,lr,lr
11463 + *[0-9a-f]*: f4 00 0e 47 addabs r7,r10,r0
11464 + *[0-9a-f]*: f2 07 0e 49 addabs r9,r9,r7
11465 + *[0-9a-f]*: f0 0c 0e 42 addabs r2,r8,r12
11466 +
11467 +[0-9a-f]* <mulnhh_w>:
11468 + *[0-9a-f]*: fe 0f 01 8f mulnhh\.w pc,pc:b,pc:b
11469 + *[0-9a-f]*: f8 0c 01 bc mulnhh\.w r12,r12:t,r12:t
11470 + *[0-9a-f]*: ea 05 01 b5 mulnhh\.w r5,r5:t,r5:t
11471 + *[0-9a-f]*: e8 04 01 84 mulnhh\.w r4,r4:b,r4:b
11472 + *[0-9a-f]*: fc 0e 01 be mulnhh\.w lr,lr:t,lr:t
11473 + *[0-9a-f]*: fa 09 01 ab mulnhh\.w r11,sp:t,r9:b
11474 + *[0-9a-f]*: e8 0e 01 9d mulnhh\.w sp,r4:b,lr:t
11475 + *[0-9a-f]*: e4 0b 01 ac mulnhh\.w r12,r2:t,r11:b
11476 +
11477 +[0-9a-f]* <mulnwh_d>:
11478 + *[0-9a-f]*: fe 0f 02 80 mulnwh\.d r0,pc,pc:b
11479 + *[0-9a-f]*: f8 0c 02 9e mulnwh\.d lr,r12,r12:t
11480 + *[0-9a-f]*: ea 05 02 98 mulnwh\.d r8,r5,r5:t
11481 + *[0-9a-f]*: e8 04 02 86 mulnwh\.d r6,r4,r4:b
11482 + *[0-9a-f]*: fc 0e 02 92 mulnwh\.d r2,lr,lr:t
11483 + *[0-9a-f]*: e6 02 02 9e mulnwh\.d lr,r3,r2:t
11484 + *[0-9a-f]*: ea 09 02 84 mulnwh\.d r4,r5,r9:b
11485 + *[0-9a-f]*: e8 04 02 9c mulnwh\.d r12,r4,r4:t
11486 +
11487 +[0-9a-f]* <machh_w>:
11488 + *[0-9a-f]*: fe 0f 04 8f machh\.w pc,pc:b,pc:b
11489 + *[0-9a-f]*: f8 0c 04 bc machh\.w r12,r12:t,r12:t
11490 + *[0-9a-f]*: ea 05 04 b5 machh\.w r5,r5:t,r5:t
11491 + *[0-9a-f]*: e8 04 04 84 machh\.w r4,r4:b,r4:b
11492 + *[0-9a-f]*: fc 0e 04 be machh\.w lr,lr:t,lr:t
11493 + *[0-9a-f]*: ea 01 04 9e machh\.w lr,r5:b,r1:t
11494 + *[0-9a-f]*: ec 07 04 89 machh\.w r9,r6:b,r7:b
11495 + *[0-9a-f]*: fc 0c 04 a5 machh\.w r5,lr:t,r12:b
11496 +
11497 +[0-9a-f]* <machh_d>:
11498 + *[0-9a-f]*: fe 0f 05 80 machh\.d r0,pc:b,pc:b
11499 + *[0-9a-f]*: f8 0c 05 be machh\.d lr,r12:t,r12:t
11500 + *[0-9a-f]*: ea 05 05 b8 machh\.d r8,r5:t,r5:t
11501 + *[0-9a-f]*: e8 04 05 86 machh\.d r6,r4:b,r4:b
11502 + *[0-9a-f]*: fc 0e 05 b2 machh\.d r2,lr:t,lr:t
11503 + *[0-9a-f]*: e0 08 05 8a machh\.d r10,r0:b,r8:b
11504 + *[0-9a-f]*: e8 05 05 9e machh\.d lr,r4:b,r5:t
11505 + *[0-9a-f]*: e0 04 05 98 machh\.d r8,r0:b,r4:t
11506 +
11507 +[0-9a-f]* <macsathh_w>:
11508 + *[0-9a-f]*: fe 0f 06 8f macsathh\.w pc,pc:b,pc:b
11509 + *[0-9a-f]*: f8 0c 06 bc macsathh\.w r12,r12:t,r12:t
11510 + *[0-9a-f]*: ea 05 06 b5 macsathh\.w r5,r5:t,r5:t
11511 + *[0-9a-f]*: e8 04 06 84 macsathh\.w r4,r4:b,r4:b
11512 + *[0-9a-f]*: fc 0e 06 be macsathh\.w lr,lr:t,lr:t
11513 + *[0-9a-f]*: ee 0f 06 b7 macsathh\.w r7,r7:t,pc:t
11514 + *[0-9a-f]*: e4 04 06 a4 macsathh\.w r4,r2:t,r4:b
11515 + *[0-9a-f]*: f0 03 06 b4 macsathh\.w r4,r8:t,r3:t
11516 +
11517 +[0-9a-f]* <mulhh_w>:
11518 + *[0-9a-f]*: fe 0f 07 8f mulhh\.w pc,pc:b,pc:b
11519 + *[0-9a-f]*: f8 0c 07 bc mulhh\.w r12,r12:t,r12:t
11520 + *[0-9a-f]*: ea 05 07 b5 mulhh\.w r5,r5:t,r5:t
11521 + *[0-9a-f]*: e8 04 07 84 mulhh\.w r4,r4:b,r4:b
11522 + *[0-9a-f]*: fc 0e 07 be mulhh\.w lr,lr:t,lr:t
11523 + *[0-9a-f]*: e8 09 07 a7 mulhh\.w r7,r4:t,r9:b
11524 + *[0-9a-f]*: e6 07 07 bf mulhh\.w pc,r3:t,r7:t
11525 + *[0-9a-f]*: e8 09 07 9f mulhh\.w pc,r4:b,r9:t
11526 +
11527 +[0-9a-f]* <mulsathh_h>:
11528 + *[0-9a-f]*: fe 0f 08 8f mulsathh\.h pc,pc:b,pc:b
11529 + *[0-9a-f]*: f8 0c 08 bc mulsathh\.h r12,r12:t,r12:t
11530 + *[0-9a-f]*: ea 05 08 b5 mulsathh\.h r5,r5:t,r5:t
11531 + *[0-9a-f]*: e8 04 08 84 mulsathh\.h r4,r4:b,r4:b
11532 + *[0-9a-f]*: fc 0e 08 be mulsathh\.h lr,lr:t,lr:t
11533 + *[0-9a-f]*: e2 0d 08 83 mulsathh\.h r3,r1:b,sp:b
11534 + *[0-9a-f]*: fc 0b 08 ab mulsathh\.h r11,lr:t,r11:b
11535 + *[0-9a-f]*: f0 0b 08 98 mulsathh\.h r8,r8:b,r11:t
11536 +
11537 +[0-9a-f]* <mulsathh_w>:
11538 + *[0-9a-f]*: fe 0f 09 8f mulsathh\.w pc,pc:b,pc:b
11539 + *[0-9a-f]*: f8 0c 09 bc mulsathh\.w r12,r12:t,r12:t
11540 + *[0-9a-f]*: ea 05 09 b5 mulsathh\.w r5,r5:t,r5:t
11541 + *[0-9a-f]*: e8 04 09 84 mulsathh\.w r4,r4:b,r4:b
11542 + *[0-9a-f]*: fc 0e 09 be mulsathh\.w lr,lr:t,lr:t
11543 + *[0-9a-f]*: f6 06 09 ae mulsathh\.w lr,r11:t,r6:b
11544 + *[0-9a-f]*: ec 07 09 96 mulsathh\.w r6,r6:b,r7:t
11545 + *[0-9a-f]*: e4 03 09 8a mulsathh\.w r10,r2:b,r3:b
11546 +
11547 +[0-9a-f]* <mulsatrndhh_h>:
11548 + *[0-9a-f]*: fe 0f 0a 8f mulsatrndhh\.h pc,pc:b,pc:b
11549 + *[0-9a-f]*: f8 0c 0a bc mulsatrndhh\.h r12,r12:t,r12:t
11550 + *[0-9a-f]*: ea 05 0a b5 mulsatrndhh\.h r5,r5:t,r5:t
11551 + *[0-9a-f]*: e8 04 0a 84 mulsatrndhh\.h r4,r4:b,r4:b
11552 + *[0-9a-f]*: fc 0e 0a be mulsatrndhh\.h lr,lr:t,lr:t
11553 + *[0-9a-f]*: ec 09 0a 8b mulsatrndhh\.h r11,r6:b,r9:b
11554 + *[0-9a-f]*: e6 08 0a 9b mulsatrndhh\.h r11,r3:b,r8:t
11555 + *[0-9a-f]*: fa 07 0a b5 mulsatrndhh\.h r5,sp:t,r7:t
11556 +
11557 +[0-9a-f]* <mulsatrndwh_w>:
11558 + *[0-9a-f]*: fe 0f 0b 8f mulsatrndwh\.w pc,pc,pc:b
11559 + *[0-9a-f]*: f8 0c 0b 9c mulsatrndwh\.w r12,r12,r12:t
11560 + *[0-9a-f]*: ea 05 0b 95 mulsatrndwh\.w r5,r5,r5:t
11561 + *[0-9a-f]*: e8 04 0b 84 mulsatrndwh\.w r4,r4,r4:b
11562 + *[0-9a-f]*: fc 0e 0b 9e mulsatrndwh\.w lr,lr,lr:t
11563 + *[0-9a-f]*: f8 00 0b 85 mulsatrndwh\.w r5,r12,r0:b
11564 + *[0-9a-f]*: f4 0f 0b 87 mulsatrndwh\.w r7,r10,pc:b
11565 + *[0-9a-f]*: f0 05 0b 9a mulsatrndwh\.w r10,r8,r5:t
11566 +
11567 +[0-9a-f]* <macwh_d>:
11568 + *[0-9a-f]*: fe 0f 0c 80 macwh\.d r0,pc,pc:b
11569 + *[0-9a-f]*: f8 0c 0c 9e macwh\.d lr,r12,r12:t
11570 + *[0-9a-f]*: ea 05 0c 98 macwh\.d r8,r5,r5:t
11571 + *[0-9a-f]*: e8 04 0c 86 macwh\.d r6,r4,r4:b
11572 + *[0-9a-f]*: fc 0e 0c 92 macwh\.d r2,lr,lr:t
11573 + *[0-9a-f]*: f4 0c 0c 94 macwh\.d r4,r10,r12:t
11574 + *[0-9a-f]*: ee 0d 0c 84 macwh\.d r4,r7,sp:b
11575 + *[0-9a-f]*: f2 0b 0c 8e macwh\.d lr,r9,r11:b
11576 +
11577 +[0-9a-f]* <mulwh_d>:
11578 + *[0-9a-f]*: fe 0f 0d 80 mulwh\.d r0,pc,pc:b
11579 + *[0-9a-f]*: f8 0c 0d 9e mulwh\.d lr,r12,r12:t
11580 + *[0-9a-f]*: ea 05 0d 98 mulwh\.d r8,r5,r5:t
11581 + *[0-9a-f]*: e8 04 0d 86 mulwh\.d r6,r4,r4:b
11582 + *[0-9a-f]*: fc 0e 0d 92 mulwh\.d r2,lr,lr:t
11583 + *[0-9a-f]*: ea 01 0d 8c mulwh\.d r12,r5,r1:b
11584 + *[0-9a-f]*: e2 03 0d 90 mulwh\.d r0,r1,r3:t
11585 + *[0-9a-f]*: f2 02 0d 80 mulwh\.d r0,r9,r2:b
11586 +
11587 +[0-9a-f]* <mulsatwh_w>:
11588 + *[0-9a-f]*: fe 0f 0e 8f mulsatwh\.w pc,pc,pc:b
11589 + *[0-9a-f]*: f8 0c 0e 9c mulsatwh\.w r12,r12,r12:t
11590 + *[0-9a-f]*: ea 05 0e 95 mulsatwh\.w r5,r5,r5:t
11591 + *[0-9a-f]*: e8 04 0e 84 mulsatwh\.w r4,r4,r4:b
11592 + *[0-9a-f]*: fc 0e 0e 9e mulsatwh\.w lr,lr,lr:t
11593 + *[0-9a-f]*: fe 0a 0e 9b mulsatwh\.w r11,pc,r10:t
11594 + *[0-9a-f]*: f8 09 0e 9d mulsatwh\.w sp,r12,r9:t
11595 + *[0-9a-f]*: e6 02 0e 90 mulsatwh\.w r0,r3,r2:t
11596 +
11597 +[0-9a-f]* <ldw7>:
11598 + *[0-9a-f]*: fe 0f 0f 8f ld\.w pc,pc\[pc:b<<2\]
11599 + *[0-9a-f]*: f8 0c 0f bc ld\.w r12,r12\[r12:t<<2\]
11600 + *[0-9a-f]*: ea 05 0f a5 ld\.w r5,r5\[r5:u<<2\]
11601 + *[0-9a-f]*: e8 04 0f 94 ld\.w r4,r4\[r4:l<<2\]
11602 + *[0-9a-f]*: fc 0e 0f 9e ld\.w lr,lr\[lr:l<<2\]
11603 + *[0-9a-f]*: f4 06 0f 99 ld\.w r9,r10\[r6:l<<2\]
11604 + *[0-9a-f]*: f4 0a 0f 82 ld\.w r2,r10\[r10:b<<2\]
11605 + *[0-9a-f]*: ea 0f 0f 8b ld\.w r11,r5\[pc:b<<2\]
11606 +
11607 +[0-9a-f]* <satadd_w>:
11608 + *[0-9a-f]*: fe 0f 00 cf satadd\.w pc,pc,pc
11609 + *[0-9a-f]*: f8 0c 00 cc satadd\.w r12,r12,r12
11610 + *[0-9a-f]*: ea 05 00 c5 satadd\.w r5,r5,r5
11611 + *[0-9a-f]*: e8 04 00 c4 satadd\.w r4,r4,r4
11612 + *[0-9a-f]*: fc 0e 00 ce satadd\.w lr,lr,lr
11613 + *[0-9a-f]*: f0 0b 00 c4 satadd\.w r4,r8,r11
11614 + *[0-9a-f]*: f8 06 00 c3 satadd\.w r3,r12,r6
11615 + *[0-9a-f]*: fc 09 00 c3 satadd\.w r3,lr,r9
11616 +
11617 +[0-9a-f]* <satsub_w1>:
11618 + *[0-9a-f]*: fe 0f 01 cf satsub\.w pc,pc,pc
11619 + *[0-9a-f]*: f8 0c 01 cc satsub\.w r12,r12,r12
11620 + *[0-9a-f]*: ea 05 01 c5 satsub\.w r5,r5,r5
11621 + *[0-9a-f]*: e8 04 01 c4 satsub\.w r4,r4,r4
11622 + *[0-9a-f]*: fc 0e 01 ce satsub\.w lr,lr,lr
11623 + *[0-9a-f]*: fa 00 01 c8 satsub\.w r8,sp,r0
11624 + *[0-9a-f]*: f0 04 01 c9 satsub\.w r9,r8,r4
11625 + *[0-9a-f]*: fc 02 01 cf satsub\.w pc,lr,r2
11626 +
11627 +[0-9a-f]* <satadd_h>:
11628 + *[0-9a-f]*: fe 0f 02 cf satadd\.h pc,pc,pc
11629 + *[0-9a-f]*: f8 0c 02 cc satadd\.h r12,r12,r12
11630 + *[0-9a-f]*: ea 05 02 c5 satadd\.h r5,r5,r5
11631 + *[0-9a-f]*: e8 04 02 c4 satadd\.h r4,r4,r4
11632 + *[0-9a-f]*: fc 0e 02 ce satadd\.h lr,lr,lr
11633 + *[0-9a-f]*: e6 09 02 c7 satadd\.h r7,r3,r9
11634 + *[0-9a-f]*: e0 02 02 c1 satadd\.h r1,r0,r2
11635 + *[0-9a-f]*: e8 0e 02 c1 satadd\.h r1,r4,lr
11636 +
11637 +[0-9a-f]* <satsub_h>:
11638 + *[0-9a-f]*: fe 0f 03 cf satsub\.h pc,pc,pc
11639 + *[0-9a-f]*: f8 0c 03 cc satsub\.h r12,r12,r12
11640 + *[0-9a-f]*: ea 05 03 c5 satsub\.h r5,r5,r5
11641 + *[0-9a-f]*: e8 04 03 c4 satsub\.h r4,r4,r4
11642 + *[0-9a-f]*: fc 0e 03 ce satsub\.h lr,lr,lr
11643 + *[0-9a-f]*: fc 03 03 ce satsub\.h lr,lr,r3
11644 + *[0-9a-f]*: ec 05 03 cb satsub\.h r11,r6,r5
11645 + *[0-9a-f]*: fa 00 03 c3 satsub\.h r3,sp,r0
11646 +
11647 +[0-9a-f]* <mul3>:
11648 + *[0-9a-f]*: fe 0f 10 00 mul pc,pc,0
11649 + *[0-9a-f]*: f8 0c 10 ff mul r12,r12,-1
11650 + *[0-9a-f]*: ea 05 10 80 mul r5,r5,-128
11651 + *[0-9a-f]*: e8 04 10 7f mul r4,r4,127
11652 + *[0-9a-f]*: fc 0e 10 01 mul lr,lr,1
11653 + *[0-9a-f]*: e4 0c 10 f9 mul r12,r2,-7
11654 + *[0-9a-f]*: fe 01 10 5f mul r1,pc,95
11655 + *[0-9a-f]*: ec 04 10 13 mul r4,r6,19
11656 +
11657 +[0-9a-f]* <rsub2>:
11658 + *[0-9a-f]*: fe 0f 11 00 rsub pc,pc,0
11659 + *[0-9a-f]*: f8 0c 11 ff rsub r12,r12,-1
11660 + *[0-9a-f]*: ea 05 11 80 rsub r5,r5,-128
11661 + *[0-9a-f]*: e8 04 11 7f rsub r4,r4,127
11662 + *[0-9a-f]*: fc 0e 11 01 rsub lr,lr,1
11663 + *[0-9a-f]*: fc 09 11 60 rsub r9,lr,96
11664 + *[0-9a-f]*: e2 0b 11 38 rsub r11,r1,56
11665 + *[0-9a-f]*: ee 00 11 a9 rsub r0,r7,-87
11666 +
11667 +[0-9a-f]* <clz>:
11668 + *[0-9a-f]*: fe 0f 12 00 clz pc,pc
11669 + *[0-9a-f]*: f8 0c 12 00 clz r12,r12
11670 + *[0-9a-f]*: ea 05 12 00 clz r5,r5
11671 + *[0-9a-f]*: e8 04 12 00 clz r4,r4
11672 + *[0-9a-f]*: fc 0e 12 00 clz lr,lr
11673 + *[0-9a-f]*: e6 02 12 00 clz r2,r3
11674 + *[0-9a-f]*: f6 05 12 00 clz r5,r11
11675 + *[0-9a-f]*: e6 0f 12 00 clz pc,r3
11676 +
11677 +[0-9a-f]* <cpc1>:
11678 + *[0-9a-f]*: fe 0f 13 00 cpc pc,pc
11679 + *[0-9a-f]*: f8 0c 13 00 cpc r12,r12
11680 + *[0-9a-f]*: ea 05 13 00 cpc r5,r5
11681 + *[0-9a-f]*: e8 04 13 00 cpc r4,r4
11682 + *[0-9a-f]*: fc 0e 13 00 cpc lr,lr
11683 + *[0-9a-f]*: e8 0f 13 00 cpc pc,r4
11684 + *[0-9a-f]*: f2 05 13 00 cpc r5,r9
11685 + *[0-9a-f]*: ee 06 13 00 cpc r6,r7
11686 +
11687 +[0-9a-f]* <asr3>:
11688 + *[0-9a-f]*: fe 0f 14 00 asr pc,pc,0x0
11689 + *[0-9a-f]*: f8 0c 14 1f asr r12,r12,0x1f
11690 + *[0-9a-f]*: ea 05 14 10 asr r5,r5,0x10
11691 + *[0-9a-f]*: e8 04 14 0f asr r4,r4,0xf
11692 + *[0-9a-f]*: fc 0e 14 01 asr lr,lr,0x1
11693 + *[0-9a-f]*: f6 04 14 13 asr r4,r11,0x13
11694 + *[0-9a-f]*: fe 0d 14 1a asr sp,pc,0x1a
11695 + *[0-9a-f]*: fa 0b 14 08 asr r11,sp,0x8
11696 +
11697 +[0-9a-f]* <lsl3>:
11698 + *[0-9a-f]*: fe 0f 15 00 lsl pc,pc,0x0
11699 + *[0-9a-f]*: f8 0c 15 1f lsl r12,r12,0x1f
11700 + *[0-9a-f]*: ea 05 15 10 lsl r5,r5,0x10
11701 + *[0-9a-f]*: e8 04 15 0f lsl r4,r4,0xf
11702 + *[0-9a-f]*: fc 0e 15 01 lsl lr,lr,0x1
11703 + *[0-9a-f]*: f4 08 15 11 lsl r8,r10,0x11
11704 + *[0-9a-f]*: fc 02 15 03 lsl r2,lr,0x3
11705 + *[0-9a-f]*: f6 0e 15 0e lsl lr,r11,0xe
11706 +
11707 +[0-9a-f]* <lsr3>:
11708 + *[0-9a-f]*: fe 0f 16 00 lsr pc,pc,0x0
11709 + *[0-9a-f]*: f8 0c 16 1f lsr r12,r12,0x1f
11710 + *[0-9a-f]*: ea 05 16 10 lsr r5,r5,0x10
11711 + *[0-9a-f]*: e8 04 16 0f lsr r4,r4,0xf
11712 + *[0-9a-f]*: fc 0e 16 01 lsr lr,lr,0x1
11713 + *[0-9a-f]*: e6 04 16 1f lsr r4,r3,0x1f
11714 + *[0-9a-f]*: f2 0f 16 0e lsr pc,r9,0xe
11715 + *[0-9a-f]*: e0 03 16 06 lsr r3,r0,0x6
11716 +
11717 +[0-9a-f]* <movc1>:
11718 + *[0-9a-f]*: fe 0f 17 00 moveq pc,pc
11719 + *[0-9a-f]*: f8 0c 17 f0 moval r12,r12
11720 + *[0-9a-f]*: ea 05 17 80 movls r5,r5
11721 + *[0-9a-f]*: e8 04 17 70 movpl r4,r4
11722 + *[0-9a-f]*: fc 0e 17 10 movne lr,lr
11723 + *[0-9a-f]*: f6 0f 17 10 movne pc,r11
11724 + *[0-9a-f]*: e4 0a 17 60 movmi r10,r2
11725 + *[0-9a-f]*: f8 08 17 80 movls r8,r12
11726 +
11727 +[0-9a-f]* <padd_h>:
11728 + *[0-9a-f]*: fe 0f 20 0f padd\.h pc,pc,pc
11729 + *[0-9a-f]*: f8 0c 20 0c padd\.h r12,r12,r12
11730 + *[0-9a-f]*: ea 05 20 05 padd\.h r5,r5,r5
11731 + *[0-9a-f]*: e8 04 20 04 padd\.h r4,r4,r4
11732 + *[0-9a-f]*: fc 0e 20 0e padd\.h lr,lr,lr
11733 + *[0-9a-f]*: e4 07 20 08 padd\.h r8,r2,r7
11734 + *[0-9a-f]*: e0 03 20 00 padd\.h r0,r0,r3
11735 + *[0-9a-f]*: f6 06 20 0d padd\.h sp,r11,r6
11736 +
11737 +[0-9a-f]* <psub_h>:
11738 + *[0-9a-f]*: fe 0f 20 1f psub\.h pc,pc,pc
11739 + *[0-9a-f]*: f8 0c 20 1c psub\.h r12,r12,r12
11740 + *[0-9a-f]*: ea 05 20 15 psub\.h r5,r5,r5
11741 + *[0-9a-f]*: e8 04 20 14 psub\.h r4,r4,r4
11742 + *[0-9a-f]*: fc 0e 20 1e psub\.h lr,lr,lr
11743 + *[0-9a-f]*: ec 08 20 1e psub\.h lr,r6,r8
11744 + *[0-9a-f]*: e2 0d 20 10 psub\.h r0,r1,sp
11745 + *[0-9a-f]*: fe 0d 20 1f psub\.h pc,pc,sp
11746 +
11747 +[0-9a-f]* <paddx_h>:
11748 + *[0-9a-f]*: fe 0f 20 2f paddx\.h pc,pc,pc
11749 + *[0-9a-f]*: f8 0c 20 2c paddx\.h r12,r12,r12
11750 + *[0-9a-f]*: ea 05 20 25 paddx\.h r5,r5,r5
11751 + *[0-9a-f]*: e8 04 20 24 paddx\.h r4,r4,r4
11752 + *[0-9a-f]*: fc 0e 20 2e paddx\.h lr,lr,lr
11753 + *[0-9a-f]*: fe 01 20 2f paddx\.h pc,pc,r1
11754 + *[0-9a-f]*: e8 05 20 2a paddx\.h r10,r4,r5
11755 + *[0-9a-f]*: fe 02 20 25 paddx\.h r5,pc,r2
11756 +
11757 +[0-9a-f]* <psubx_h>:
11758 + *[0-9a-f]*: fe 0f 20 3f psubx\.h pc,pc,pc
11759 + *[0-9a-f]*: f8 0c 20 3c psubx\.h r12,r12,r12
11760 + *[0-9a-f]*: ea 05 20 35 psubx\.h r5,r5,r5
11761 + *[0-9a-f]*: e8 04 20 34 psubx\.h r4,r4,r4
11762 + *[0-9a-f]*: fc 0e 20 3e psubx\.h lr,lr,lr
11763 + *[0-9a-f]*: f8 05 20 35 psubx\.h r5,r12,r5
11764 + *[0-9a-f]*: f0 03 20 33 psubx\.h r3,r8,r3
11765 + *[0-9a-f]*: e4 03 20 35 psubx\.h r5,r2,r3
11766 +
11767 +[0-9a-f]* <padds_sh>:
11768 + *[0-9a-f]*: fe 0f 20 4f padds\.sh pc,pc,pc
11769 + *[0-9a-f]*: f8 0c 20 4c padds\.sh r12,r12,r12
11770 + *[0-9a-f]*: ea 05 20 45 padds\.sh r5,r5,r5
11771 + *[0-9a-f]*: e8 04 20 44 padds\.sh r4,r4,r4
11772 + *[0-9a-f]*: fc 0e 20 4e padds\.sh lr,lr,lr
11773 + *[0-9a-f]*: fc 02 20 49 padds\.sh r9,lr,r2
11774 + *[0-9a-f]*: f0 01 20 46 padds\.sh r6,r8,r1
11775 + *[0-9a-f]*: e8 0a 20 46 padds\.sh r6,r4,r10
11776 +
11777 +[0-9a-f]* <psubs_sh>:
11778 + *[0-9a-f]*: fe 0f 20 5f psubs\.sh pc,pc,pc
11779 + *[0-9a-f]*: f8 0c 20 5c psubs\.sh r12,r12,r12
11780 + *[0-9a-f]*: ea 05 20 55 psubs\.sh r5,r5,r5
11781 + *[0-9a-f]*: e8 04 20 54 psubs\.sh r4,r4,r4
11782 + *[0-9a-f]*: fc 0e 20 5e psubs\.sh lr,lr,lr
11783 + *[0-9a-f]*: fc 0b 20 56 psubs\.sh r6,lr,r11
11784 + *[0-9a-f]*: f8 04 20 52 psubs\.sh r2,r12,r4
11785 + *[0-9a-f]*: f2 00 20 50 psubs\.sh r0,r9,r0
11786 +
11787 +[0-9a-f]* <paddxs_sh>:
11788 + *[0-9a-f]*: fe 0f 20 6f paddxs\.sh pc,pc,pc
11789 + *[0-9a-f]*: f8 0c 20 6c paddxs\.sh r12,r12,r12
11790 + *[0-9a-f]*: ea 05 20 65 paddxs\.sh r5,r5,r5
11791 + *[0-9a-f]*: e8 04 20 64 paddxs\.sh r4,r4,r4
11792 + *[0-9a-f]*: fc 0e 20 6e paddxs\.sh lr,lr,lr
11793 + *[0-9a-f]*: e6 09 20 60 paddxs\.sh r0,r3,r9
11794 + *[0-9a-f]*: f4 0b 20 6f paddxs\.sh pc,r10,r11
11795 + *[0-9a-f]*: f4 0f 20 6f paddxs\.sh pc,r10,pc
11796 +
11797 +[0-9a-f]* <psubxs_sh>:
11798 + *[0-9a-f]*: fe 0f 20 7f psubxs\.sh pc,pc,pc
11799 + *[0-9a-f]*: f8 0c 20 7c psubxs\.sh r12,r12,r12
11800 + *[0-9a-f]*: ea 05 20 75 psubxs\.sh r5,r5,r5
11801 + *[0-9a-f]*: e8 04 20 74 psubxs\.sh r4,r4,r4
11802 + *[0-9a-f]*: fc 0e 20 7e psubxs\.sh lr,lr,lr
11803 + *[0-9a-f]*: e8 04 20 77 psubxs\.sh r7,r4,r4
11804 + *[0-9a-f]*: f0 03 20 77 psubxs\.sh r7,r8,r3
11805 + *[0-9a-f]*: ec 05 20 7f psubxs\.sh pc,r6,r5
11806 +
11807 +[0-9a-f]* <padds_uh>:
11808 + *[0-9a-f]*: fe 0f 20 8f padds\.uh pc,pc,pc
11809 + *[0-9a-f]*: f8 0c 20 8c padds\.uh r12,r12,r12
11810 + *[0-9a-f]*: ea 05 20 85 padds\.uh r5,r5,r5
11811 + *[0-9a-f]*: e8 04 20 84 padds\.uh r4,r4,r4
11812 + *[0-9a-f]*: fc 0e 20 8e padds\.uh lr,lr,lr
11813 + *[0-9a-f]*: f6 07 20 8c padds\.uh r12,r11,r7
11814 + *[0-9a-f]*: f0 0e 20 87 padds\.uh r7,r8,lr
11815 + *[0-9a-f]*: f2 07 20 86 padds\.uh r6,r9,r7
11816 +
11817 +[0-9a-f]* <psubs_uh>:
11818 + *[0-9a-f]*: fe 0f 20 9f psubs\.uh pc,pc,pc
11819 + *[0-9a-f]*: f8 0c 20 9c psubs\.uh r12,r12,r12
11820 + *[0-9a-f]*: ea 05 20 95 psubs\.uh r5,r5,r5
11821 + *[0-9a-f]*: e8 04 20 94 psubs\.uh r4,r4,r4
11822 + *[0-9a-f]*: fc 0e 20 9e psubs\.uh lr,lr,lr
11823 + *[0-9a-f]*: f4 06 20 9e psubs\.uh lr,r10,r6
11824 + *[0-9a-f]*: e4 0f 20 9d psubs\.uh sp,r2,pc
11825 + *[0-9a-f]*: f2 02 20 92 psubs\.uh r2,r9,r2
11826 +
11827 +[0-9a-f]* <paddxs_uh>:
11828 + *[0-9a-f]*: fe 0f 20 af paddxs\.uh pc,pc,pc
11829 + *[0-9a-f]*: f8 0c 20 ac paddxs\.uh r12,r12,r12
11830 + *[0-9a-f]*: ea 05 20 a5 paddxs\.uh r5,r5,r5
11831 + *[0-9a-f]*: e8 04 20 a4 paddxs\.uh r4,r4,r4
11832 + *[0-9a-f]*: fc 0e 20 ae paddxs\.uh lr,lr,lr
11833 + *[0-9a-f]*: f2 05 20 a7 paddxs\.uh r7,r9,r5
11834 + *[0-9a-f]*: e2 04 20 a9 paddxs\.uh r9,r1,r4
11835 + *[0-9a-f]*: e4 03 20 a5 paddxs\.uh r5,r2,r3
11836 +
11837 +[0-9a-f]* <psubxs_uh>:
11838 + *[0-9a-f]*: fe 0f 20 bf psubxs\.uh pc,pc,pc
11839 + *[0-9a-f]*: f8 0c 20 bc psubxs\.uh r12,r12,r12
11840 + *[0-9a-f]*: ea 05 20 b5 psubxs\.uh r5,r5,r5
11841 + *[0-9a-f]*: e8 04 20 b4 psubxs\.uh r4,r4,r4
11842 + *[0-9a-f]*: fc 0e 20 be psubxs\.uh lr,lr,lr
11843 + *[0-9a-f]*: ea 0d 20 bd psubxs\.uh sp,r5,sp
11844 + *[0-9a-f]*: ec 06 20 bd psubxs\.uh sp,r6,r6
11845 + *[0-9a-f]*: f6 08 20 b3 psubxs\.uh r3,r11,r8
11846 +
11847 +[0-9a-f]* <paddh_sh>:
11848 + *[0-9a-f]*: fe 0f 20 cf paddh\.sh pc,pc,pc
11849 + *[0-9a-f]*: f8 0c 20 cc paddh\.sh r12,r12,r12
11850 + *[0-9a-f]*: ea 05 20 c5 paddh\.sh r5,r5,r5
11851 + *[0-9a-f]*: e8 04 20 c4 paddh\.sh r4,r4,r4
11852 + *[0-9a-f]*: fc 0e 20 ce paddh\.sh lr,lr,lr
11853 + *[0-9a-f]*: fa 03 20 cc paddh\.sh r12,sp,r3
11854 + *[0-9a-f]*: ea 03 20 cf paddh\.sh pc,r5,r3
11855 + *[0-9a-f]*: f0 0d 20 c8 paddh\.sh r8,r8,sp
11856 +
11857 +[0-9a-f]* <psubh_sh>:
11858 + *[0-9a-f]*: fe 0f 20 df psubh\.sh pc,pc,pc
11859 + *[0-9a-f]*: f8 0c 20 dc psubh\.sh r12,r12,r12
11860 + *[0-9a-f]*: ea 05 20 d5 psubh\.sh r5,r5,r5
11861 + *[0-9a-f]*: e8 04 20 d4 psubh\.sh r4,r4,r4
11862 + *[0-9a-f]*: fc 0e 20 de psubh\.sh lr,lr,lr
11863 + *[0-9a-f]*: ea 08 20 d1 psubh\.sh r1,r5,r8
11864 + *[0-9a-f]*: e6 06 20 d7 psubh\.sh r7,r3,r6
11865 + *[0-9a-f]*: e6 03 20 d4 psubh\.sh r4,r3,r3
11866 +
11867 +[0-9a-f]* <paddxh_sh>:
11868 + *[0-9a-f]*: fe 0f 20 ef paddxh\.sh pc,pc,pc
11869 + *[0-9a-f]*: f8 0c 20 ec paddxh\.sh r12,r12,r12
11870 + *[0-9a-f]*: ea 05 20 e5 paddxh\.sh r5,r5,r5
11871 + *[0-9a-f]*: e8 04 20 e4 paddxh\.sh r4,r4,r4
11872 + *[0-9a-f]*: fc 0e 20 ee paddxh\.sh lr,lr,lr
11873 + *[0-9a-f]*: e0 04 20 e6 paddxh\.sh r6,r0,r4
11874 + *[0-9a-f]*: f0 09 20 e9 paddxh\.sh r9,r8,r9
11875 + *[0-9a-f]*: e0 0d 20 e3 paddxh\.sh r3,r0,sp
11876 +
11877 +[0-9a-f]* <psubxh_sh>:
11878 + *[0-9a-f]*: fe 0f 20 ff psubxh\.sh pc,pc,pc
11879 + *[0-9a-f]*: f8 0c 20 fc psubxh\.sh r12,r12,r12
11880 + *[0-9a-f]*: ea 05 20 f5 psubxh\.sh r5,r5,r5
11881 + *[0-9a-f]*: e8 04 20 f4 psubxh\.sh r4,r4,r4
11882 + *[0-9a-f]*: fc 0e 20 fe psubxh\.sh lr,lr,lr
11883 + *[0-9a-f]*: fe 0c 20 f4 psubxh\.sh r4,pc,r12
11884 + *[0-9a-f]*: e8 06 20 f8 psubxh\.sh r8,r4,r6
11885 + *[0-9a-f]*: f2 04 20 fc psubxh\.sh r12,r9,r4
11886 +
11887 +[0-9a-f]* <paddsub_h>:
11888 + *[0-9a-f]*: fe 0f 21 0f paddsub\.h pc,pc:b,pc:b
11889 + *[0-9a-f]*: f8 0c 21 3c paddsub\.h r12,r12:t,r12:t
11890 + *[0-9a-f]*: ea 05 21 35 paddsub\.h r5,r5:t,r5:t
11891 + *[0-9a-f]*: e8 04 21 04 paddsub\.h r4,r4:b,r4:b
11892 + *[0-9a-f]*: fc 0e 21 3e paddsub\.h lr,lr:t,lr:t
11893 + *[0-9a-f]*: e4 0e 21 25 paddsub\.h r5,r2:t,lr:b
11894 + *[0-9a-f]*: e2 08 21 07 paddsub\.h r7,r1:b,r8:b
11895 + *[0-9a-f]*: f4 05 21 36 paddsub\.h r6,r10:t,r5:t
11896 +
11897 +[0-9a-f]* <psubadd_h>:
11898 + *[0-9a-f]*: fe 0f 21 4f psubadd\.h pc,pc:b,pc:b
11899 + *[0-9a-f]*: f8 0c 21 7c psubadd\.h r12,r12:t,r12:t
11900 + *[0-9a-f]*: ea 05 21 75 psubadd\.h r5,r5:t,r5:t
11901 + *[0-9a-f]*: e8 04 21 44 psubadd\.h r4,r4:b,r4:b
11902 + *[0-9a-f]*: fc 0e 21 7e psubadd\.h lr,lr:t,lr:t
11903 + *[0-9a-f]*: f6 08 21 79 psubadd\.h r9,r11:t,r8:t
11904 + *[0-9a-f]*: ee 0e 21 7a psubadd\.h r10,r7:t,lr:t
11905 + *[0-9a-f]*: fe 0f 21 66 psubadd\.h r6,pc:t,pc:b
11906 +
11907 +[0-9a-f]* <paddsubs_sh>:
11908 + *[0-9a-f]*: fe 0f 21 8f paddsubs\.sh pc,pc:b,pc:b
11909 + *[0-9a-f]*: f8 0c 21 bc paddsubs\.sh r12,r12:t,r12:t
11910 + *[0-9a-f]*: ea 05 21 b5 paddsubs\.sh r5,r5:t,r5:t
11911 + *[0-9a-f]*: e8 04 21 84 paddsubs\.sh r4,r4:b,r4:b
11912 + *[0-9a-f]*: fc 0e 21 be paddsubs\.sh lr,lr:t,lr:t
11913 + *[0-9a-f]*: fc 00 21 a0 paddsubs\.sh r0,lr:t,r0:b
11914 + *[0-9a-f]*: e4 04 21 b9 paddsubs\.sh r9,r2:t,r4:t
11915 + *[0-9a-f]*: f2 0d 21 bc paddsubs\.sh r12,r9:t,sp:t
11916 +
11917 +[0-9a-f]* <psubadds_sh>:
11918 + *[0-9a-f]*: fe 0f 21 cf psubadds\.sh pc,pc:b,pc:b
11919 + *[0-9a-f]*: f8 0c 21 fc psubadds\.sh r12,r12:t,r12:t
11920 + *[0-9a-f]*: ea 05 21 f5 psubadds\.sh r5,r5:t,r5:t
11921 + *[0-9a-f]*: e8 04 21 c4 psubadds\.sh r4,r4:b,r4:b
11922 + *[0-9a-f]*: fc 0e 21 fe psubadds\.sh lr,lr:t,lr:t
11923 + *[0-9a-f]*: fc 01 21 df psubadds\.sh pc,lr:b,r1:t
11924 + *[0-9a-f]*: e6 0c 21 cb psubadds\.sh r11,r3:b,r12:b
11925 + *[0-9a-f]*: e4 08 21 fa psubadds\.sh r10,r2:t,r8:t
11926 +
11927 +[0-9a-f]* <paddsubs_uh>:
11928 + *[0-9a-f]*: fe 0f 22 0f paddsubs\.uh pc,pc:b,pc:b
11929 + *[0-9a-f]*: f8 0c 22 3c paddsubs\.uh r12,r12:t,r12:t
11930 + *[0-9a-f]*: ea 05 22 35 paddsubs\.uh r5,r5:t,r5:t
11931 + *[0-9a-f]*: e8 04 22 04 paddsubs\.uh r4,r4:b,r4:b
11932 + *[0-9a-f]*: fc 0e 22 3e paddsubs\.uh lr,lr:t,lr:t
11933 + *[0-9a-f]*: e4 03 22 09 paddsubs\.uh r9,r2:b,r3:b
11934 + *[0-9a-f]*: fa 07 22 1d paddsubs\.uh sp,sp:b,r7:t
11935 + *[0-9a-f]*: e0 0a 22 1e paddsubs\.uh lr,r0:b,r10:t
11936 +
11937 +[0-9a-f]* <psubadds_uh>:
11938 + *[0-9a-f]*: fe 0f 22 4f psubadds\.uh pc,pc:b,pc:b
11939 + *[0-9a-f]*: f8 0c 22 7c psubadds\.uh r12,r12:t,r12:t
11940 + *[0-9a-f]*: ea 05 22 75 psubadds\.uh r5,r5:t,r5:t
11941 + *[0-9a-f]*: e8 04 22 44 psubadds\.uh r4,r4:b,r4:b
11942 + *[0-9a-f]*: fc 0e 22 7e psubadds\.uh lr,lr:t,lr:t
11943 + *[0-9a-f]*: f2 0f 22 7c psubadds\.uh r12,r9:t,pc:t
11944 + *[0-9a-f]*: ec 08 22 48 psubadds\.uh r8,r6:b,r8:b
11945 + *[0-9a-f]*: f0 04 22 48 psubadds\.uh r8,r8:b,r4:b
11946 +
11947 +[0-9a-f]* <paddsubh_sh>:
11948 + *[0-9a-f]*: fe 0f 22 8f paddsubh\.sh pc,pc:b,pc:b
11949 + *[0-9a-f]*: f8 0c 22 bc paddsubh\.sh r12,r12:t,r12:t
11950 + *[0-9a-f]*: ea 05 22 b5 paddsubh\.sh r5,r5:t,r5:t
11951 + *[0-9a-f]*: e8 04 22 84 paddsubh\.sh r4,r4:b,r4:b
11952 + *[0-9a-f]*: fc 0e 22 be paddsubh\.sh lr,lr:t,lr:t
11953 + *[0-9a-f]*: f2 09 22 a8 paddsubh\.sh r8,r9:t,r9:b
11954 + *[0-9a-f]*: fa 01 22 b0 paddsubh\.sh r0,sp:t,r1:t
11955 + *[0-9a-f]*: e2 00 22 93 paddsubh\.sh r3,r1:b,r0:t
11956 +
11957 +[0-9a-f]* <psubaddh_sh>:
11958 + *[0-9a-f]*: fe 0f 22 cf psubaddh\.sh pc,pc:b,pc:b
11959 + *[0-9a-f]*: f8 0c 22 fc psubaddh\.sh r12,r12:t,r12:t
11960 + *[0-9a-f]*: ea 05 22 f5 psubaddh\.sh r5,r5:t,r5:t
11961 + *[0-9a-f]*: e8 04 22 c4 psubaddh\.sh r4,r4:b,r4:b
11962 + *[0-9a-f]*: fc 0e 22 fe psubaddh\.sh lr,lr:t,lr:t
11963 + *[0-9a-f]*: e6 0a 22 e7 psubaddh\.sh r7,r3:t,r10:b
11964 + *[0-9a-f]*: e4 01 22 f7 psubaddh\.sh r7,r2:t,r1:t
11965 + *[0-9a-f]*: e6 06 22 cb psubaddh\.sh r11,r3:b,r6:b
11966 +
11967 +[0-9a-f]* <padd_b>:
11968 + *[0-9a-f]*: fe 0f 23 0f padd\.b pc,pc,pc
11969 + *[0-9a-f]*: f8 0c 23 0c padd\.b r12,r12,r12
11970 + *[0-9a-f]*: ea 05 23 05 padd\.b r5,r5,r5
11971 + *[0-9a-f]*: e8 04 23 04 padd\.b r4,r4,r4
11972 + *[0-9a-f]*: fc 0e 23 0e padd\.b lr,lr,lr
11973 + *[0-9a-f]*: ec 0f 23 02 padd\.b r2,r6,pc
11974 + *[0-9a-f]*: f2 0c 23 08 padd\.b r8,r9,r12
11975 + *[0-9a-f]*: f8 03 23 05 padd\.b r5,r12,r3
11976 +
11977 +[0-9a-f]* <psub_b>:
11978 + *[0-9a-f]*: fe 0f 23 1f psub\.b pc,pc,pc
11979 + *[0-9a-f]*: f8 0c 23 1c psub\.b r12,r12,r12
11980 + *[0-9a-f]*: ea 05 23 15 psub\.b r5,r5,r5
11981 + *[0-9a-f]*: e8 04 23 14 psub\.b r4,r4,r4
11982 + *[0-9a-f]*: fc 0e 23 1e psub\.b lr,lr,lr
11983 + *[0-9a-f]*: f8 0f 23 10 psub\.b r0,r12,pc
11984 + *[0-9a-f]*: fa 0a 23 17 psub\.b r7,sp,r10
11985 + *[0-9a-f]*: fa 0c 23 15 psub\.b r5,sp,r12
11986 +
11987 +[0-9a-f]* <padds_sb>:
11988 + *[0-9a-f]*: fe 0f 23 2f padds\.sb pc,pc,pc
11989 + *[0-9a-f]*: f8 0c 23 2c padds\.sb r12,r12,r12
11990 + *[0-9a-f]*: ea 05 23 25 padds\.sb r5,r5,r5
11991 + *[0-9a-f]*: e8 04 23 24 padds\.sb r4,r4,r4
11992 + *[0-9a-f]*: fc 0e 23 2e padds\.sb lr,lr,lr
11993 + *[0-9a-f]*: f6 04 23 2d padds\.sb sp,r11,r4
11994 + *[0-9a-f]*: f4 0b 23 2b padds\.sb r11,r10,r11
11995 + *[0-9a-f]*: f8 06 23 25 padds\.sb r5,r12,r6
11996 +
11997 +[0-9a-f]* <psubs_sb>:
11998 + *[0-9a-f]*: fe 0f 23 3f psubs\.sb pc,pc,pc
11999 + *[0-9a-f]*: f8 0c 23 3c psubs\.sb r12,r12,r12
12000 + *[0-9a-f]*: ea 05 23 35 psubs\.sb r5,r5,r5
12001 + *[0-9a-f]*: e8 04 23 34 psubs\.sb r4,r4,r4
12002 + *[0-9a-f]*: fc 0e 23 3e psubs\.sb lr,lr,lr
12003 + *[0-9a-f]*: ec 08 23 37 psubs\.sb r7,r6,r8
12004 + *[0-9a-f]*: f4 09 23 3c psubs\.sb r12,r10,r9
12005 + *[0-9a-f]*: f6 00 23 3f psubs\.sb pc,r11,r0
12006 +
12007 +[0-9a-f]* <padds_ub>:
12008 + *[0-9a-f]*: fe 0f 23 4f padds\.ub pc,pc,pc
12009 + *[0-9a-f]*: f8 0c 23 4c padds\.ub r12,r12,r12
12010 + *[0-9a-f]*: ea 05 23 45 padds\.ub r5,r5,r5
12011 + *[0-9a-f]*: e8 04 23 44 padds\.ub r4,r4,r4
12012 + *[0-9a-f]*: fc 0e 23 4e padds\.ub lr,lr,lr
12013 + *[0-9a-f]*: e4 0b 23 43 padds\.ub r3,r2,r11
12014 + *[0-9a-f]*: f0 01 23 4a padds\.ub r10,r8,r1
12015 + *[0-9a-f]*: f0 0a 23 4b padds\.ub r11,r8,r10
12016 +
12017 +[0-9a-f]* <psubs_ub>:
12018 + *[0-9a-f]*: fe 0f 23 5f psubs\.ub pc,pc,pc
12019 + *[0-9a-f]*: f8 0c 23 5c psubs\.ub r12,r12,r12
12020 + *[0-9a-f]*: ea 05 23 55 psubs\.ub r5,r5,r5
12021 + *[0-9a-f]*: e8 04 23 54 psubs\.ub r4,r4,r4
12022 + *[0-9a-f]*: fc 0e 23 5e psubs\.ub lr,lr,lr
12023 + *[0-9a-f]*: e4 07 23 50 psubs\.ub r0,r2,r7
12024 + *[0-9a-f]*: ea 03 23 5e psubs\.ub lr,r5,r3
12025 + *[0-9a-f]*: ee 09 23 56 psubs\.ub r6,r7,r9
12026 +
12027 +[0-9a-f]* <paddh_ub>:
12028 + *[0-9a-f]*: fe 0f 23 6f paddh\.ub pc,pc,pc
12029 + *[0-9a-f]*: f8 0c 23 6c paddh\.ub r12,r12,r12
12030 + *[0-9a-f]*: ea 05 23 65 paddh\.ub r5,r5,r5
12031 + *[0-9a-f]*: e8 04 23 64 paddh\.ub r4,r4,r4
12032 + *[0-9a-f]*: fc 0e 23 6e paddh\.ub lr,lr,lr
12033 + *[0-9a-f]*: e2 00 23 6e paddh\.ub lr,r1,r0
12034 + *[0-9a-f]*: ee 07 23 62 paddh\.ub r2,r7,r7
12035 + *[0-9a-f]*: e2 02 23 62 paddh\.ub r2,r1,r2
12036 +
12037 +[0-9a-f]* <psubh_ub>:
12038 + *[0-9a-f]*: fe 0f 23 7f psubh\.ub pc,pc,pc
12039 + *[0-9a-f]*: f8 0c 23 7c psubh\.ub r12,r12,r12
12040 + *[0-9a-f]*: ea 05 23 75 psubh\.ub r5,r5,r5
12041 + *[0-9a-f]*: e8 04 23 74 psubh\.ub r4,r4,r4
12042 + *[0-9a-f]*: fc 0e 23 7e psubh\.ub lr,lr,lr
12043 + *[0-9a-f]*: e2 06 23 70 psubh\.ub r0,r1,r6
12044 + *[0-9a-f]*: fc 0a 23 74 psubh\.ub r4,lr,r10
12045 + *[0-9a-f]*: f0 01 23 79 psubh\.ub r9,r8,r1
12046 +
12047 +[0-9a-f]* <pmax_ub>:
12048 + *[0-9a-f]*: fe 0f 23 8f pmax\.ub pc,pc,pc
12049 + *[0-9a-f]*: f8 0c 23 8c pmax\.ub r12,r12,r12
12050 + *[0-9a-f]*: ea 05 23 85 pmax\.ub r5,r5,r5
12051 + *[0-9a-f]*: e8 04 23 84 pmax\.ub r4,r4,r4
12052 + *[0-9a-f]*: fc 0e 23 8e pmax\.ub lr,lr,lr
12053 + *[0-9a-f]*: e4 0b 23 8f pmax\.ub pc,r2,r11
12054 + *[0-9a-f]*: e2 01 23 8c pmax\.ub r12,r1,r1
12055 + *[0-9a-f]*: e4 00 23 85 pmax\.ub r5,r2,r0
12056 +
12057 +[0-9a-f]* <pmax_sh>:
12058 + *[0-9a-f]*: fe 0f 23 9f pmax\.sh pc,pc,pc
12059 + *[0-9a-f]*: f8 0c 23 9c pmax\.sh r12,r12,r12
12060 + *[0-9a-f]*: ea 05 23 95 pmax\.sh r5,r5,r5
12061 + *[0-9a-f]*: e8 04 23 94 pmax\.sh r4,r4,r4
12062 + *[0-9a-f]*: fc 0e 23 9e pmax\.sh lr,lr,lr
12063 + *[0-9a-f]*: ec 0c 23 9e pmax\.sh lr,r6,r12
12064 + *[0-9a-f]*: fe 05 23 92 pmax\.sh r2,pc,r5
12065 + *[0-9a-f]*: e4 07 23 9f pmax\.sh pc,r2,r7
12066 +
12067 +[0-9a-f]* <pmin_ub>:
12068 + *[0-9a-f]*: fe 0f 23 af pmin\.ub pc,pc,pc
12069 + *[0-9a-f]*: f8 0c 23 ac pmin\.ub r12,r12,r12
12070 + *[0-9a-f]*: ea 05 23 a5 pmin\.ub r5,r5,r5
12071 + *[0-9a-f]*: e8 04 23 a4 pmin\.ub r4,r4,r4
12072 + *[0-9a-f]*: fc 0e 23 ae pmin\.ub lr,lr,lr
12073 + *[0-9a-f]*: e2 05 23 a8 pmin\.ub r8,r1,r5
12074 + *[0-9a-f]*: f0 03 23 a1 pmin\.ub r1,r8,r3
12075 + *[0-9a-f]*: e4 07 23 a0 pmin\.ub r0,r2,r7
12076 +
12077 +[0-9a-f]* <pmin_sh>:
12078 + *[0-9a-f]*: fe 0f 23 bf pmin\.sh pc,pc,pc
12079 + *[0-9a-f]*: f8 0c 23 bc pmin\.sh r12,r12,r12
12080 + *[0-9a-f]*: ea 05 23 b5 pmin\.sh r5,r5,r5
12081 + *[0-9a-f]*: e8 04 23 b4 pmin\.sh r4,r4,r4
12082 + *[0-9a-f]*: fc 0e 23 be pmin\.sh lr,lr,lr
12083 + *[0-9a-f]*: e8 0a 23 b8 pmin\.sh r8,r4,r10
12084 + *[0-9a-f]*: f4 0c 23 be pmin\.sh lr,r10,r12
12085 + *[0-9a-f]*: ec 02 23 b2 pmin\.sh r2,r6,r2
12086 +
12087 +[0-9a-f]* <pavg_ub>:
12088 + *[0-9a-f]*: fe 0f 23 cf pavg\.ub pc,pc,pc
12089 + *[0-9a-f]*: f8 0c 23 cc pavg\.ub r12,r12,r12
12090 + *[0-9a-f]*: ea 05 23 c5 pavg\.ub r5,r5,r5
12091 + *[0-9a-f]*: e8 04 23 c4 pavg\.ub r4,r4,r4
12092 + *[0-9a-f]*: fc 0e 23 ce pavg\.ub lr,lr,lr
12093 + *[0-9a-f]*: e2 06 23 c0 pavg\.ub r0,r1,r6
12094 + *[0-9a-f]*: e6 06 23 c8 pavg\.ub r8,r3,r6
12095 + *[0-9a-f]*: f8 0a 23 cf pavg\.ub pc,r12,r10
12096 +
12097 +[0-9a-f]* <pavg_sh>:
12098 + *[0-9a-f]*: fe 0f 23 df pavg\.sh pc,pc,pc
12099 + *[0-9a-f]*: f8 0c 23 dc pavg\.sh r12,r12,r12
12100 + *[0-9a-f]*: ea 05 23 d5 pavg\.sh r5,r5,r5
12101 + *[0-9a-f]*: e8 04 23 d4 pavg\.sh r4,r4,r4
12102 + *[0-9a-f]*: fc 0e 23 de pavg\.sh lr,lr,lr
12103 + *[0-9a-f]*: fe 0d 23 d9 pavg\.sh r9,pc,sp
12104 + *[0-9a-f]*: fa 03 23 df pavg\.sh pc,sp,r3
12105 + *[0-9a-f]*: e2 09 23 d6 pavg\.sh r6,r1,r9
12106 +
12107 +[0-9a-f]* <pabs_sb>:
12108 + *[0-9a-f]*: e0 0f 23 ef pabs\.sb pc,pc
12109 + *[0-9a-f]*: e0 0c 23 ec pabs\.sb r12,r12
12110 + *[0-9a-f]*: e0 05 23 e5 pabs\.sb r5,r5
12111 + *[0-9a-f]*: e0 04 23 e4 pabs\.sb r4,r4
12112 + *[0-9a-f]*: e0 0e 23 ee pabs\.sb lr,lr
12113 + *[0-9a-f]*: e0 06 23 eb pabs\.sb r11,r6
12114 + *[0-9a-f]*: e0 09 23 ee pabs\.sb lr,r9
12115 + *[0-9a-f]*: e0 07 23 ed pabs\.sb sp,r7
12116 +
12117 +[0-9a-f]* <pabs_sh>:
12118 + *[0-9a-f]*: e0 0f 23 ff pabs\.sh pc,pc
12119 + *[0-9a-f]*: e0 0c 23 fc pabs\.sh r12,r12
12120 + *[0-9a-f]*: e0 05 23 f5 pabs\.sh r5,r5
12121 + *[0-9a-f]*: e0 04 23 f4 pabs\.sh r4,r4
12122 + *[0-9a-f]*: e0 0e 23 fe pabs\.sh lr,lr
12123 + *[0-9a-f]*: e0 03 23 ff pabs\.sh pc,r3
12124 + *[0-9a-f]*: e0 07 23 f5 pabs\.sh r5,r7
12125 + *[0-9a-f]*: e0 00 23 f4 pabs\.sh r4,r0
12126 +
12127 +[0-9a-f]* <psad>:
12128 + *[0-9a-f]*: fe 0f 24 0f psad pc,pc,pc
12129 + *[0-9a-f]*: f8 0c 24 0c psad r12,r12,r12
12130 + *[0-9a-f]*: ea 05 24 05 psad r5,r5,r5
12131 + *[0-9a-f]*: e8 04 24 04 psad r4,r4,r4
12132 + *[0-9a-f]*: fc 0e 24 0e psad lr,lr,lr
12133 + *[0-9a-f]*: f6 0b 24 09 psad r9,r11,r11
12134 + *[0-9a-f]*: e8 0d 24 0e psad lr,r4,sp
12135 + *[0-9a-f]*: e8 05 24 0e psad lr,r4,r5
12136 +
12137 +[0-9a-f]* <pasr_b>:
12138 + *[0-9a-f]*: fe 00 24 1f pasr\.b pc,pc,0x0
12139 + *[0-9a-f]*: f8 07 24 1c pasr\.b r12,r12,0x7
12140 + *[0-9a-f]*: ea 04 24 15 pasr\.b r5,r5,0x4
12141 + *[0-9a-f]*: e8 03 24 14 pasr\.b r4,r4,0x3
12142 + *[0-9a-f]*: fc 01 24 1e pasr\.b lr,lr,0x1
12143 + *[0-9a-f]*: ee 01 24 1f pasr\.b pc,r7,0x1
12144 + *[0-9a-f]*: fc 06 24 1d pasr\.b sp,lr,0x6
12145 + *[0-9a-f]*: e6 02 24 1d pasr\.b sp,r3,0x2
12146 +
12147 +[0-9a-f]* <plsl_b>:
12148 + *[0-9a-f]*: fe 00 24 2f plsl\.b pc,pc,0x0
12149 + *[0-9a-f]*: f8 07 24 2c plsl\.b r12,r12,0x7
12150 + *[0-9a-f]*: ea 04 24 25 plsl\.b r5,r5,0x4
12151 + *[0-9a-f]*: e8 03 24 24 plsl\.b r4,r4,0x3
12152 + *[0-9a-f]*: fc 01 24 2e plsl\.b lr,lr,0x1
12153 + *[0-9a-f]*: f6 04 24 22 plsl\.b r2,r11,0x4
12154 + *[0-9a-f]*: ea 07 24 28 plsl\.b r8,r5,0x7
12155 + *[0-9a-f]*: e0 02 24 2f plsl\.b pc,r0,0x2
12156 +
12157 +[0-9a-f]* <plsr_b>:
12158 + *[0-9a-f]*: fe 00 24 3f plsr\.b pc,pc,0x0
12159 + *[0-9a-f]*: f8 07 24 3c plsr\.b r12,r12,0x7
12160 + *[0-9a-f]*: ea 04 24 35 plsr\.b r5,r5,0x4
12161 + *[0-9a-f]*: e8 03 24 34 plsr\.b r4,r4,0x3
12162 + *[0-9a-f]*: fc 01 24 3e plsr\.b lr,lr,0x1
12163 + *[0-9a-f]*: e2 02 24 3c plsr\.b r12,r1,0x2
12164 + *[0-9a-f]*: fe 07 24 36 plsr\.b r6,pc,0x7
12165 + *[0-9a-f]*: f6 02 24 3c plsr\.b r12,r11,0x2
12166 +
12167 +[0-9a-f]* <pasr_h>:
12168 + *[0-9a-f]*: fe 00 24 4f pasr\.h pc,pc,0x0
12169 + *[0-9a-f]*: f8 0f 24 4c pasr\.h r12,r12,0xf
12170 + *[0-9a-f]*: ea 08 24 45 pasr\.h r5,r5,0x8
12171 + *[0-9a-f]*: e8 07 24 44 pasr\.h r4,r4,0x7
12172 + *[0-9a-f]*: fc 01 24 4e pasr\.h lr,lr,0x1
12173 + *[0-9a-f]*: f6 0a 24 40 pasr\.h r0,r11,0xa
12174 + *[0-9a-f]*: ec 08 24 44 pasr\.h r4,r6,0x8
12175 + *[0-9a-f]*: e4 04 24 46 pasr\.h r6,r2,0x4
12176 +
12177 +[0-9a-f]* <plsl_h>:
12178 + *[0-9a-f]*: fe 00 24 5f plsl\.h pc,pc,0x0
12179 + *[0-9a-f]*: f8 0f 24 5c plsl\.h r12,r12,0xf
12180 + *[0-9a-f]*: ea 08 24 55 plsl\.h r5,r5,0x8
12181 + *[0-9a-f]*: e8 07 24 54 plsl\.h r4,r4,0x7
12182 + *[0-9a-f]*: fc 01 24 5e plsl\.h lr,lr,0x1
12183 + *[0-9a-f]*: f4 09 24 55 plsl\.h r5,r10,0x9
12184 + *[0-9a-f]*: fc 08 24 5d plsl\.h sp,lr,0x8
12185 + *[0-9a-f]*: fc 07 24 50 plsl\.h r0,lr,0x7
12186 +
12187 +[0-9a-f]* <plsr_h>:
12188 + *[0-9a-f]*: fe 00 24 6f plsr\.h pc,pc,0x0
12189 + *[0-9a-f]*: f8 0f 24 6c plsr\.h r12,r12,0xf
12190 + *[0-9a-f]*: ea 08 24 65 plsr\.h r5,r5,0x8
12191 + *[0-9a-f]*: e8 07 24 64 plsr\.h r4,r4,0x7
12192 + *[0-9a-f]*: fc 01 24 6e plsr\.h lr,lr,0x1
12193 + *[0-9a-f]*: e0 0f 24 6b plsr\.h r11,r0,0xf
12194 + *[0-9a-f]*: e6 03 24 6e plsr\.h lr,r3,0x3
12195 + *[0-9a-f]*: fc 0a 24 68 plsr\.h r8,lr,0xa
12196 +
12197 +[0-9a-f]* <packw_sh>:
12198 + *[0-9a-f]*: fe 0f 24 7f packw\.sh pc,pc,pc
12199 + *[0-9a-f]*: f8 0c 24 7c packw\.sh r12,r12,r12
12200 + *[0-9a-f]*: ea 05 24 75 packw\.sh r5,r5,r5
12201 + *[0-9a-f]*: e8 04 24 74 packw\.sh r4,r4,r4
12202 + *[0-9a-f]*: fc 0e 24 7e packw\.sh lr,lr,lr
12203 + *[0-9a-f]*: f6 0a 24 7d packw\.sh sp,r11,r10
12204 + *[0-9a-f]*: e4 0c 24 78 packw\.sh r8,r2,r12
12205 + *[0-9a-f]*: e2 05 24 78 packw\.sh r8,r1,r5
12206 +
12207 +[0-9a-f]* <punpckub_h>:
12208 + *[0-9a-f]*: fe 00 24 8f punpckub\.h pc,pc:b
12209 + *[0-9a-f]*: f8 00 24 9c punpckub\.h r12,r12:t
12210 + *[0-9a-f]*: ea 00 24 95 punpckub\.h r5,r5:t
12211 + *[0-9a-f]*: e8 00 24 84 punpckub\.h r4,r4:b
12212 + *[0-9a-f]*: fc 00 24 9e punpckub\.h lr,lr:t
12213 + *[0-9a-f]*: e2 00 24 96 punpckub\.h r6,r1:t
12214 + *[0-9a-f]*: ea 00 24 8e punpckub\.h lr,r5:b
12215 + *[0-9a-f]*: e4 00 24 9e punpckub\.h lr,r2:t
12216 +
12217 +[0-9a-f]* <punpcksb_h>:
12218 + *[0-9a-f]*: fe 00 24 af punpcksb\.h pc,pc:b
12219 + *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t
12220 + *[0-9a-f]*: ea 00 24 b5 punpcksb\.h r5,r5:t
12221 + *[0-9a-f]*: e8 00 24 a4 punpcksb\.h r4,r4:b
12222 + *[0-9a-f]*: fc 00 24 be punpcksb\.h lr,lr:t
12223 + *[0-9a-f]*: ee 00 24 b4 punpcksb\.h r4,r7:t
12224 + *[0-9a-f]*: fc 00 24 a6 punpcksb\.h r6,lr:b
12225 + *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t
12226 +
12227 +[0-9a-f]* <packsh_ub>:
12228 + *[0-9a-f]*: fe 0f 24 cf packsh\.ub pc,pc,pc
12229 + *[0-9a-f]*: f8 0c 24 cc packsh\.ub r12,r12,r12
12230 + *[0-9a-f]*: ea 05 24 c5 packsh\.ub r5,r5,r5
12231 + *[0-9a-f]*: e8 04 24 c4 packsh\.ub r4,r4,r4
12232 + *[0-9a-f]*: fc 0e 24 ce packsh\.ub lr,lr,lr
12233 + *[0-9a-f]*: ec 03 24 c3 packsh\.ub r3,r6,r3
12234 + *[0-9a-f]*: e0 03 24 c8 packsh\.ub r8,r0,r3
12235 + *[0-9a-f]*: e6 0e 24 c9 packsh\.ub r9,r3,lr
12236 +
12237 +[0-9a-f]* <packsh_sb>:
12238 + *[0-9a-f]*: fe 0f 24 df packsh\.sb pc,pc,pc
12239 + *[0-9a-f]*: f8 0c 24 dc packsh\.sb r12,r12,r12
12240 + *[0-9a-f]*: ea 05 24 d5 packsh\.sb r5,r5,r5
12241 + *[0-9a-f]*: e8 04 24 d4 packsh\.sb r4,r4,r4
12242 + *[0-9a-f]*: fc 0e 24 de packsh\.sb lr,lr,lr
12243 + *[0-9a-f]*: f0 01 24 d6 packsh\.sb r6,r8,r1
12244 + *[0-9a-f]*: f2 08 24 de packsh\.sb lr,r9,r8
12245 + *[0-9a-f]*: ec 06 24 dd packsh\.sb sp,r6,r6
12246 +
12247 +[0-9a-f]* <andl>:
12248 + *[0-9a-f]*: e0 1f 00 00 andl pc,0x0
12249 + *[0-9a-f]*: e0 1c ff ff andl r12,0xffff
12250 + *[0-9a-f]*: e0 15 80 00 andl r5,0x8000
12251 + *[0-9a-f]*: e0 14 7f ff andl r4,0x7fff
12252 + *[0-9a-f]*: e0 1e 00 01 andl lr,0x1
12253 + *[0-9a-f]*: e0 1f 5a 58 andl pc,0x5a58
12254 + *[0-9a-f]*: e0 18 b8 9e andl r8,0xb89e
12255 + *[0-9a-f]*: e0 17 35 97 andl r7,0x3597
12256 +
12257 +[0-9a-f]* <andl_coh>:
12258 + *[0-9a-f]*: e2 1f 00 00 andl pc,0x0,COH
12259 + *[0-9a-f]*: e2 1c ff ff andl r12,0xffff,COH
12260 + *[0-9a-f]*: e2 15 80 00 andl r5,0x8000,COH
12261 + *[0-9a-f]*: e2 14 7f ff andl r4,0x7fff,COH
12262 + *[0-9a-f]*: e2 1e 00 01 andl lr,0x1,COH
12263 + *[0-9a-f]*: e2 16 58 e1 andl r6,0x58e1,COH
12264 + *[0-9a-f]*: e2 10 9e cd andl r0,0x9ecd,COH
12265 + *[0-9a-f]*: e2 14 bd c4 andl r4,0xbdc4,COH
12266 +
12267 +[0-9a-f]* <andh>:
12268 + *[0-9a-f]*: e4 1f 00 00 andh pc,0x0
12269 + *[0-9a-f]*: e4 1c ff ff andh r12,0xffff
12270 + *[0-9a-f]*: e4 15 80 00 andh r5,0x8000
12271 + *[0-9a-f]*: e4 14 7f ff andh r4,0x7fff
12272 + *[0-9a-f]*: e4 1e 00 01 andh lr,0x1
12273 + *[0-9a-f]*: e4 1c cc 58 andh r12,0xcc58
12274 + *[0-9a-f]*: e4 13 21 e3 andh r3,0x21e3
12275 + *[0-9a-f]*: e4 12 a7 eb andh r2,0xa7eb
12276 +
12277 +[0-9a-f]* <andh_coh>:
12278 + *[0-9a-f]*: e6 1f 00 00 andh pc,0x0,COH
12279 + *[0-9a-f]*: e6 1c ff ff andh r12,0xffff,COH
12280 + *[0-9a-f]*: e6 15 80 00 andh r5,0x8000,COH
12281 + *[0-9a-f]*: e6 14 7f ff andh r4,0x7fff,COH
12282 + *[0-9a-f]*: e6 1e 00 01 andh lr,0x1,COH
12283 + *[0-9a-f]*: e6 1b 86 0d andh r11,0x860d,COH
12284 + *[0-9a-f]*: e6 18 ce f6 andh r8,0xcef6,COH
12285 + *[0-9a-f]*: e6 1a 5c 83 andh r10,0x5c83,COH
12286 +
12287 +[0-9a-f]* <orl>:
12288 + *[0-9a-f]*: e8 1f 00 00 orl pc,0x0
12289 + *[0-9a-f]*: e8 1c ff ff orl r12,0xffff
12290 + *[0-9a-f]*: e8 15 80 00 orl r5,0x8000
12291 + *[0-9a-f]*: e8 14 7f ff orl r4,0x7fff
12292 + *[0-9a-f]*: e8 1e 00 01 orl lr,0x1
12293 + *[0-9a-f]*: e8 1d 41 7e orl sp,0x417e
12294 + *[0-9a-f]*: e8 10 52 bd orl r0,0x52bd
12295 + *[0-9a-f]*: e8 1f ac 47 orl pc,0xac47
12296 +
12297 +[0-9a-f]* <orh>:
12298 + *[0-9a-f]*: ea 1f 00 00 orh pc,0x0
12299 + *[0-9a-f]*: ea 1c ff ff orh r12,0xffff
12300 + *[0-9a-f]*: ea 15 80 00 orh r5,0x8000
12301 + *[0-9a-f]*: ea 14 7f ff orh r4,0x7fff
12302 + *[0-9a-f]*: ea 1e 00 01 orh lr,0x1
12303 + *[0-9a-f]*: ea 18 6e 7d orh r8,0x6e7d
12304 + *[0-9a-f]*: ea 1c 77 1c orh r12,0x771c
12305 + *[0-9a-f]*: ea 11 ea 1a orh r1,0xea1a
12306 +
12307 +[0-9a-f]* <eorl>:
12308 + *[0-9a-f]*: ec 1f 00 00 eorl pc,0x0
12309 + *[0-9a-f]*: ec 1c ff ff eorl r12,0xffff
12310 + *[0-9a-f]*: ec 15 80 00 eorl r5,0x8000
12311 + *[0-9a-f]*: ec 14 7f ff eorl r4,0x7fff
12312 + *[0-9a-f]*: ec 1e 00 01 eorl lr,0x1
12313 + *[0-9a-f]*: ec 14 c7 b9 eorl r4,0xc7b9
12314 + *[0-9a-f]*: ec 16 fb dd eorl r6,0xfbdd
12315 + *[0-9a-f]*: ec 11 51 b1 eorl r1,0x51b1
12316 +
12317 +[0-9a-f]* <eorh>:
12318 + *[0-9a-f]*: ee 1f 00 00 eorh pc,0x0
12319 + *[0-9a-f]*: ee 1c ff ff eorh r12,0xffff
12320 + *[0-9a-f]*: ee 15 80 00 eorh r5,0x8000
12321 + *[0-9a-f]*: ee 14 7f ff eorh r4,0x7fff
12322 + *[0-9a-f]*: ee 1e 00 01 eorh lr,0x1
12323 + *[0-9a-f]*: ee 10 2d d4 eorh r0,0x2dd4
12324 + *[0-9a-f]*: ee 1a 94 b5 eorh r10,0x94b5
12325 + *[0-9a-f]*: ee 19 df 2a eorh r9,0xdf2a
12326 +
12327 +[0-9a-f]* <mcall>:
12328 + *[0-9a-f]*: f0 1f 00 00 mcall [0-9a-f]* <.*>
12329 + *[0-9a-f]*: f0 1c ff ff mcall r12\[-4\]
12330 + *[0-9a-f]*: f0 15 80 00 mcall r5\[-131072\]
12331 + *[0-9a-f]*: f0 14 7f ff mcall r4\[131068\]
12332 + *[0-9a-f]*: f0 1e 00 01 mcall lr\[4\]
12333 + *[0-9a-f]*: f0 1d 3b bf mcall sp\[61180\]
12334 + *[0-9a-f]*: f0 14 dd d2 mcall r4\[-35000\]
12335 + *[0-9a-f]*: f0 10 09 b1 mcall r0\[9924\]
12336 +
12337 +[0-9a-f]* <pref>:
12338 + *[0-9a-f]*: f2 1f 00 00 pref pc\[0\]
12339 + *[0-9a-f]*: f2 1c ff ff pref r12\[-1\]
12340 + *[0-9a-f]*: f2 15 80 00 pref r5\[-32768\]
12341 + *[0-9a-f]*: f2 14 7f ff pref r4\[32767\]
12342 + *[0-9a-f]*: f2 1e 00 01 pref lr\[1\]
12343 + *[0-9a-f]*: f2 17 1e 44 pref r7\[7748\]
12344 + *[0-9a-f]*: f2 17 e1 ed pref r7\[-7699\]
12345 + *[0-9a-f]*: f2 12 9a dc pref r2\[-25892\]
12346 +
12347 +[0-9a-f]* <cache>:
12348 + *[0-9a-f]*: f4 1f 00 00 cache pc\[0\],0x0
12349 + *[0-9a-f]*: f4 1c ff ff cache r12\[-1\],0x1f
12350 + *[0-9a-f]*: f4 15 84 00 cache r5\[-1024\],0x10
12351 + *[0-9a-f]*: f4 14 7b ff cache r4\[1023\],0xf
12352 + *[0-9a-f]*: f4 1e 08 01 cache lr\[1\],0x1
12353 + *[0-9a-f]*: f4 13 8c 3c cache r3\[-964\],0x11
12354 + *[0-9a-f]*: f4 14 b6 89 cache r4\[-375\],0x16
12355 + *[0-9a-f]*: f4 13 8c 88 cache r3\[-888\],0x11
12356 +
12357 +[0-9a-f]* <sub4>:
12358 + *[0-9a-f]*: 20 0f sub pc,0
12359 + *[0-9a-f]*: 2f fc sub r12,-1
12360 + *[0-9a-f]*: f0 25 00 00 sub r5,-1048576
12361 + *[0-9a-f]*: ee 34 ff ff sub r4,1048575
12362 + *[0-9a-f]*: 20 1e sub lr,1
12363 + *[0-9a-f]*: f6 22 8d 6c sub r2,-619156
12364 + *[0-9a-f]*: e6 3e 0a cd sub lr,461517
12365 + *[0-9a-f]*: fc 38 2d 25 sub r8,-185051
12366 +
12367 +[0-9a-f]* <cp3>:
12368 + *[0-9a-f]*: 58 0f cp.w pc,0
12369 + *[0-9a-f]*: 5b fc cp.w r12,-1
12370 + *[0-9a-f]*: f0 45 00 00 cp.w r5,-1048576
12371 + *[0-9a-f]*: ee 54 ff ff cp.w r4,1048575
12372 + *[0-9a-f]*: 58 1e cp.w lr,1
12373 + *[0-9a-f]*: e0 51 e4 ae cp.w r1,124078
12374 + *[0-9a-f]*: fa 40 37 e3 cp.w r0,-378909
12375 + *[0-9a-f]*: fc 44 4a 14 cp.w r4,-243180
12376 +
12377 +[0-9a-f]* <mov2>:
12378 + *[0-9a-f]*: 30 0f mov pc,0
12379 + *[0-9a-f]*: 3f fc mov r12,-1
12380 + *[0-9a-f]*: f0 65 00 00 mov r5,-1048576
12381 + *[0-9a-f]*: ee 74 ff ff mov r4,1048575
12382 + *[0-9a-f]*: 30 1e mov lr,1
12383 + *[0-9a-f]*: fa 75 29 a3 mov r5,-317021
12384 + *[0-9a-f]*: f4 6d 91 94 mov sp,-749164
12385 + *[0-9a-f]*: ee 65 58 93 mov r5,940179
12386 +
12387 +[0-9a-f]* <brc2>:
12388 + *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*>
12389 + *[0-9a-f]*: fe 9f ff ff bral [0-9a-f]* <.*>
12390 + *[0-9a-f]*: f0 88 00 00 brls [0-9a-f]* <.*>
12391 + *[0-9a-f]*: ee 97 ff ff brpl [0-9a-f]* <.*>
12392 + *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*>
12393 + *[0-9a-f]*: f2 8b 4a 4d brhi [0-9a-f]* <.*>
12394 + *[0-9a-f]*: ea 8e 14 cc brqs [0-9a-f]* <.*>
12395 + *[0-9a-f]*: fa 98 98 33 brls [0-9a-f]* <.*>
12396 +
12397 +[0-9a-f]* <rcall2>:
12398 + *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*>
12399 + *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*>
12400 + *[0-9a-f]*: f0 a0 00 00 rcall [0-9a-f]* <.*>
12401 + *[0-9a-f]*: ee b0 ff ff rcall [0-9a-f]* <.*>
12402 + *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*>
12403 + *[0-9a-f]*: e2 b0 ca 5a rcall [0-9a-f]* <.*>
12404 + *[0-9a-f]*: e8 a0 47 52 rcall [0-9a-f]* <.*>
12405 + *[0-9a-f]*: fe b0 fd ef rcall [0-9a-f]* <.*>
12406 +
12407 +[0-9a-f]* <sub5>:
12408 + *[0-9a-f]*: fe cf 00 00 sub pc,pc,0
12409 + *[0-9a-f]*: f8 cc ff ff sub r12,r12,-1
12410 + *[0-9a-f]*: ea c5 80 00 sub r5,r5,-32768
12411 + *[0-9a-f]*: e8 c4 7f ff sub r4,r4,32767
12412 + *[0-9a-f]*: fc ce 00 01 sub lr,lr,1
12413 + *[0-9a-f]*: fe cf ce 38 sub pc,pc,-12744
12414 + *[0-9a-f]*: ee c7 95 1b sub r7,r7,-27365
12415 + *[0-9a-f]*: f2 c2 bc 32 sub r2,r9,-17358
12416 +
12417 +[0-9a-f]* <satsub_w2>:
12418 + *[0-9a-f]*: fe df 00 00 satsub\.w pc,pc,0
12419 + *[0-9a-f]*: f8 dc ff ff satsub\.w r12,r12,-1
12420 + *[0-9a-f]*: ea d5 80 00 satsub\.w r5,r5,-32768
12421 + *[0-9a-f]*: e8 d4 7f ff satsub\.w r4,r4,32767
12422 + *[0-9a-f]*: fc de 00 01 satsub\.w lr,lr,1
12423 + *[0-9a-f]*: fc d2 f8 29 satsub\.w r2,lr,-2007
12424 + *[0-9a-f]*: f8 d7 fc f0 satsub\.w r7,r12,-784
12425 + *[0-9a-f]*: ee d4 5a 8c satsub\.w r4,r7,23180
12426 +
12427 +[0-9a-f]* <ld_d4>:
12428 + *[0-9a-f]*: fe e0 00 00 ld\.d r0,pc\[0\]
12429 + *[0-9a-f]*: f8 ee ff ff ld\.d lr,r12\[-1\]
12430 + *[0-9a-f]*: ea e8 80 00 ld\.d r8,r5\[-32768\]
12431 + *[0-9a-f]*: e8 e6 7f ff ld\.d r6,r4\[32767\]
12432 + *[0-9a-f]*: fc e2 00 01 ld\.d r2,lr\[1\]
12433 + *[0-9a-f]*: f6 ee 39 c0 ld\.d lr,r11\[14784\]
12434 + *[0-9a-f]*: f2 e6 b6 27 ld\.d r6,r9\[-18905\]
12435 + *[0-9a-f]*: e6 e2 e7 2d ld\.d r2,r3\[-6355\]
12436 +
12437 +[0-9a-f]* <ld_w4>:
12438 + *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\]
12439 + *[0-9a-f]*: f8 fc ff ff ld\.w r12,r12\[-1\]
12440 + *[0-9a-f]*: ea f5 80 00 ld\.w r5,r5\[-32768\]
12441 + *[0-9a-f]*: e8 f4 7f ff ld\.w r4,r4\[32767\]
12442 + *[0-9a-f]*: fc fe 00 01 ld\.w lr,lr\[1\]
12443 + *[0-9a-f]*: f8 f0 a9 8b ld\.w r0,r12\[-22133\]
12444 + *[0-9a-f]*: fe fd af d7 ld\.w sp,pc\[-20521\]
12445 + *[0-9a-f]*: d7 03 nop
12446 +
12447 +[0-9a-f]* <ld_sh4>:
12448 + *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\]
12449 + *[0-9a-f]*: f9 0c ff ff ld\.sh r12,r12\[-1\]
12450 + *[0-9a-f]*: eb 05 80 00 ld\.sh r5,r5\[-32768\]
12451 + *[0-9a-f]*: e9 04 7f ff ld\.sh r4,r4\[32767\]
12452 + *[0-9a-f]*: fd 0e 00 01 ld\.sh lr,lr\[1\]
12453 + *[0-9a-f]*: f5 06 78 d2 ld\.sh r6,r10\[30930\]
12454 + *[0-9a-f]*: f5 06 55 d5 ld\.sh r6,r10\[21973\]
12455 + *[0-9a-f]*: d7 03 nop
12456 +
12457 +[0-9a-f]* <ld_uh4>:
12458 + *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\]
12459 + *[0-9a-f]*: f9 1c ff ff ld\.uh r12,r12\[-1\]
12460 + *[0-9a-f]*: eb 15 80 00 ld\.uh r5,r5\[-32768\]
12461 + *[0-9a-f]*: e9 14 7f ff ld\.uh r4,r4\[32767\]
12462 + *[0-9a-f]*: fd 1e 00 01 ld\.uh lr,lr\[1\]
12463 + *[0-9a-f]*: f3 11 cb d6 ld\.uh r1,r9\[-13354\]
12464 + *[0-9a-f]*: f7 1e 53 59 ld\.uh lr,r11\[21337\]
12465 + *[0-9a-f]*: d7 03 nop
12466 +
12467 +[0-9a-f]* <ld_sb1>:
12468 + *[0-9a-f]*: ff 2f 00 00 ld\.sb pc,pc\[0\]
12469 + *[0-9a-f]*: f9 2c ff ff ld\.sb r12,r12\[-1\]
12470 + *[0-9a-f]*: eb 25 80 00 ld\.sb r5,r5\[-32768\]
12471 + *[0-9a-f]*: e9 24 7f ff ld\.sb r4,r4\[32767\]
12472 + *[0-9a-f]*: fd 2e 00 01 ld\.sb lr,lr\[1\]
12473 + *[0-9a-f]*: fb 27 90 09 ld\.sb r7,sp\[-28663\]
12474 + *[0-9a-f]*: e3 22 e9 09 ld\.sb r2,r1\[-5879\]
12475 + *[0-9a-f]*: e7 2c 49 2e ld\.sb r12,r3\[18734\]
12476 +
12477 +[0-9a-f]* <ld_ub4>:
12478 + *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\]
12479 + *[0-9a-f]*: f9 3c ff ff ld\.ub r12,r12\[-1\]
12480 + *[0-9a-f]*: eb 35 80 00 ld\.ub r5,r5\[-32768\]
12481 + *[0-9a-f]*: e9 34 7f ff ld\.ub r4,r4\[32767\]
12482 + *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\]
12483 + *[0-9a-f]*: e9 3f 20 55 ld\.ub pc,r4\[8277\]
12484 + *[0-9a-f]*: f9 35 4a e4 ld\.ub r5,r12\[19172\]
12485 + *[0-9a-f]*: fd 3a 66 eb ld\.ub r10,lr\[26347\]
12486 +
12487 +[0-9a-f]* <st_d4>:
12488 + *[0-9a-f]*: fe e1 00 00 st\.d pc\[0\],r0
12489 + *[0-9a-f]*: f8 ef ff ff st\.d r12\[-1\],lr
12490 + *[0-9a-f]*: ea e9 80 00 st\.d r5\[-32768\],r8
12491 + *[0-9a-f]*: e8 e7 7f ff st\.d r4\[32767\],r6
12492 + *[0-9a-f]*: fc e3 00 01 st\.d lr\[1\],r2
12493 + *[0-9a-f]*: ea eb 33 90 st\.d r5\[13200\],r10
12494 + *[0-9a-f]*: ea eb 24 88 st\.d r5\[9352\],r10
12495 + *[0-9a-f]*: ea e5 7e 75 st\.d r5\[32373\],r4
12496 +
12497 +[0-9a-f]* <st_w4>:
12498 + *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc
12499 + *[0-9a-f]*: f9 4c ff ff st\.w r12\[-1\],r12
12500 + *[0-9a-f]*: eb 45 80 00 st\.w r5\[-32768\],r5
12501 + *[0-9a-f]*: e9 44 7f ff st\.w r4\[32767\],r4
12502 + *[0-9a-f]*: fd 4e 00 01 st\.w lr\[1\],lr
12503 + *[0-9a-f]*: fb 47 17 f8 st\.w sp\[6136\],r7
12504 + *[0-9a-f]*: ed 4c 69 cf st\.w r6\[27087\],r12
12505 + *[0-9a-f]*: d7 03 nop
12506 +
12507 +[0-9a-f]* <st_h4>:
12508 + *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc
12509 + *[0-9a-f]*: f9 5c ff ff st\.h r12\[-1\],r12
12510 + *[0-9a-f]*: eb 55 80 00 st\.h r5\[-32768\],r5
12511 + *[0-9a-f]*: e9 54 7f ff st\.h r4\[32767\],r4
12512 + *[0-9a-f]*: fd 5e 00 01 st\.h lr\[1\],lr
12513 + *[0-9a-f]*: e9 57 d9 16 st\.h r4\[-9962\],r7
12514 + *[0-9a-f]*: f3 53 c0 86 st\.h r9\[-16250\],r3
12515 + *[0-9a-f]*: d7 03 nop
12516 +
12517 +[0-9a-f]* <st_b4>:
12518 + *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc
12519 + *[0-9a-f]*: f9 6c ff ff st\.b r12\[-1\],r12
12520 + *[0-9a-f]*: eb 65 80 00 st\.b r5\[-32768\],r5
12521 + *[0-9a-f]*: e9 64 7f ff st\.b r4\[32767\],r4
12522 + *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr
12523 + *[0-9a-f]*: f9 66 75 96 st\.b r12\[30102\],r6
12524 + *[0-9a-f]*: eb 61 71 31 st\.b r5\[28977\],r1
12525 + *[0-9a-f]*: e1 61 15 5e st\.b r0\[5470\],r1
12526 +
12527 +[0-9a-f]* <mfsr>:
12528 + *[0-9a-f]*: e1 bf 00 00 mfsr pc,0x0
12529 + *[0-9a-f]*: e1 bc 00 ff mfsr r12,0x3fc
12530 + *[0-9a-f]*: e1 b5 00 80 mfsr r5,0x200
12531 + *[0-9a-f]*: e1 b4 00 7f mfsr r4,0x1fc
12532 + *[0-9a-f]*: e1 be 00 01 mfsr lr,0x4
12533 + *[0-9a-f]*: e1 b2 00 ae mfsr r2,0x2b8
12534 + *[0-9a-f]*: e1 b4 00 41 mfsr r4,0x104
12535 + *[0-9a-f]*: e1 ba 00 fe mfsr r10,0x3f8
12536 +
12537 +[0-9a-f]* <mtsr>:
12538 + *[0-9a-f]*: e3 bf 00 00 mtsr 0x0,pc
12539 + *[0-9a-f]*: e3 bc 00 ff mtsr 0x3fc,r12
12540 + *[0-9a-f]*: e3 b5 00 80 mtsr 0x200,r5
12541 + *[0-9a-f]*: e3 b4 00 7f mtsr 0x1fc,r4
12542 + *[0-9a-f]*: e3 be 00 01 mtsr 0x4,lr
12543 + *[0-9a-f]*: e3 ba 00 38 mtsr 0xe0,r10
12544 + *[0-9a-f]*: e3 bc 00 d1 mtsr 0x344,r12
12545 + *[0-9a-f]*: e3 b9 00 4c mtsr 0x130,r9
12546 +
12547 +[0-9a-f]* <mfdr>:
12548 + *[0-9a-f]*: e5 bf 00 00 mfdr pc,0x0
12549 + *[0-9a-f]*: e5 bc 00 ff mfdr r12,0x3fc
12550 + *[0-9a-f]*: e5 b5 00 80 mfdr r5,0x200
12551 + *[0-9a-f]*: e5 b4 00 7f mfdr r4,0x1fc
12552 + *[0-9a-f]*: e5 be 00 01 mfdr lr,0x4
12553 + *[0-9a-f]*: e5 b6 00 e9 mfdr r6,0x3a4
12554 + *[0-9a-f]*: e5 b5 00 09 mfdr r5,0x24
12555 + *[0-9a-f]*: e5 b9 00 4b mfdr r9,0x12c
12556 +
12557 +[0-9a-f]* <mtdr>:
12558 + *[0-9a-f]*: e7 bf 00 00 mtdr 0x0,pc
12559 + *[0-9a-f]*: e7 bc 00 ff mtdr 0x3fc,r12
12560 + *[0-9a-f]*: e7 b5 00 80 mtdr 0x200,r5
12561 + *[0-9a-f]*: e7 b4 00 7f mtdr 0x1fc,r4
12562 + *[0-9a-f]*: e7 be 00 01 mtdr 0x4,lr
12563 + *[0-9a-f]*: e7 b8 00 2d mtdr 0xb4,r8
12564 + *[0-9a-f]*: e7 ba 00 b4 mtdr 0x2d0,r10
12565 + *[0-9a-f]*: e7 be 00 66 mtdr 0x198,lr
12566 +
12567 +[0-9a-f]* <sleep>:
12568 + *[0-9a-f]*: e9 b0 00 00 sleep 0x0
12569 + *[0-9a-f]*: e9 b0 00 ff sleep 0xff
12570 + *[0-9a-f]*: e9 b0 00 80 sleep 0x80
12571 + *[0-9a-f]*: e9 b0 00 7f sleep 0x7f
12572 + *[0-9a-f]*: e9 b0 00 01 sleep 0x1
12573 + *[0-9a-f]*: e9 b0 00 fe sleep 0xfe
12574 + *[0-9a-f]*: e9 b0 00 0f sleep 0xf
12575 + *[0-9a-f]*: e9 b0 00 2b sleep 0x2b
12576 +
12577 +[0-9a-f]* <sync>:
12578 + *[0-9a-f]*: eb b0 00 00 sync 0x0
12579 + *[0-9a-f]*: eb b0 00 ff sync 0xff
12580 + *[0-9a-f]*: eb b0 00 80 sync 0x80
12581 + *[0-9a-f]*: eb b0 00 7f sync 0x7f
12582 + *[0-9a-f]*: eb b0 00 01 sync 0x1
12583 + *[0-9a-f]*: eb b0 00 a6 sync 0xa6
12584 + *[0-9a-f]*: eb b0 00 e6 sync 0xe6
12585 + *[0-9a-f]*: eb b0 00 b4 sync 0xb4
12586 +
12587 +[0-9a-f]* <bld>:
12588 + *[0-9a-f]*: ed bf 00 00 bld pc,0x0
12589 + *[0-9a-f]*: ed bc 00 1f bld r12,0x1f
12590 + *[0-9a-f]*: ed b5 00 10 bld r5,0x10
12591 + *[0-9a-f]*: ed b4 00 0f bld r4,0xf
12592 + *[0-9a-f]*: ed be 00 01 bld lr,0x1
12593 + *[0-9a-f]*: ed b9 00 0f bld r9,0xf
12594 + *[0-9a-f]*: ed b0 00 04 bld r0,0x4
12595 + *[0-9a-f]*: ed be 00 1a bld lr,0x1a
12596 +
12597 +[0-9a-f]* <bst>:
12598 + *[0-9a-f]*: ef bf 00 00 bst pc,0x0
12599 + *[0-9a-f]*: ef bc 00 1f bst r12,0x1f
12600 + *[0-9a-f]*: ef b5 00 10 bst r5,0x10
12601 + *[0-9a-f]*: ef b4 00 0f bst r4,0xf
12602 + *[0-9a-f]*: ef be 00 01 bst lr,0x1
12603 + *[0-9a-f]*: ef ba 00 1c bst r10,0x1c
12604 + *[0-9a-f]*: ef b0 00 03 bst r0,0x3
12605 + *[0-9a-f]*: ef bd 00 02 bst sp,0x2
12606 +
12607 +[0-9a-f]* <sats>:
12608 + *[0-9a-f]*: f1 bf 00 00 sats pc,0x0
12609 + *[0-9a-f]*: f1 bc 03 ff sats r12>>0x1f,0x1f
12610 + *[0-9a-f]*: f1 b5 02 10 sats r5>>0x10,0x10
12611 + *[0-9a-f]*: f1 b4 01 ef sats r4>>0xf,0xf
12612 + *[0-9a-f]*: f1 be 00 21 sats lr>>0x1,0x1
12613 + *[0-9a-f]*: f1 ba 02 63 sats r10>>0x3,0x13
12614 + *[0-9a-f]*: f1 ba 03 42 sats r10>>0x2,0x1a
12615 + *[0-9a-f]*: f1 b1 00 34 sats r1>>0x14,0x1
12616 +
12617 +[0-9a-f]* <satu>:
12618 + *[0-9a-f]*: f1 bf 04 00 satu pc,0x0
12619 + *[0-9a-f]*: f1 bc 07 ff satu r12>>0x1f,0x1f
12620 + *[0-9a-f]*: f1 b5 06 10 satu r5>>0x10,0x10
12621 + *[0-9a-f]*: f1 b4 05 ef satu r4>>0xf,0xf
12622 + *[0-9a-f]*: f1 be 04 21 satu lr>>0x1,0x1
12623 + *[0-9a-f]*: f1 bf 04 e5 satu pc>>0x5,0x7
12624 + *[0-9a-f]*: f1 b7 04 a5 satu r7>>0x5,0x5
12625 + *[0-9a-f]*: f1 b2 06 7a satu r2>>0x1a,0x13
12626 +
12627 +[0-9a-f]* <satrnds>:
12628 + *[0-9a-f]*: f3 bf 00 00 satrnds pc,0x0
12629 + *[0-9a-f]*: f3 bc 03 ff satrnds r12>>0x1f,0x1f
12630 + *[0-9a-f]*: f3 b5 02 10 satrnds r5>>0x10,0x10
12631 + *[0-9a-f]*: f3 b4 01 ef satrnds r4>>0xf,0xf
12632 + *[0-9a-f]*: f3 be 00 21 satrnds lr>>0x1,0x1
12633 + *[0-9a-f]*: f3 b0 02 75 satrnds r0>>0x15,0x13
12634 + *[0-9a-f]*: f3 bd 00 40 satrnds sp,0x2
12635 + *[0-9a-f]*: f3 b7 03 a6 satrnds r7>>0x6,0x1d
12636 +
12637 +[0-9a-f]* <satrndu>:
12638 + *[0-9a-f]*: f3 bf 04 00 satrndu pc,0x0
12639 + *[0-9a-f]*: f3 bc 07 ff satrndu r12>>0x1f,0x1f
12640 + *[0-9a-f]*: f3 b5 06 10 satrndu r5>>0x10,0x10
12641 + *[0-9a-f]*: f3 b4 05 ef satrndu r4>>0xf,0xf
12642 + *[0-9a-f]*: f3 be 04 21 satrndu lr>>0x1,0x1
12643 + *[0-9a-f]*: f3 bc 07 40 satrndu r12,0x1a
12644 + *[0-9a-f]*: f3 b4 04 75 satrndu r4>>0x15,0x3
12645 + *[0-9a-f]*: f3 ba 06 03 satrndu r10>>0x3,0x10
12646 +
12647 +[0-9a-f]* <subfc>:
12648 + *[0-9a-f]*: f5 bf 00 00 subfeq pc,0
12649 + *[0-9a-f]*: f5 bc 0f ff subfal r12,-1
12650 + *[0-9a-f]*: f5 b5 08 80 subfls r5,-128
12651 + *[0-9a-f]*: f5 b4 07 7f subfpl r4,127
12652 + *[0-9a-f]*: f5 be 01 01 subfne lr,1
12653 + *[0-9a-f]*: f5 ba 08 08 subfls r10,8
12654 + *[0-9a-f]*: f5 bb 0d 63 subfvc r11,99
12655 + *[0-9a-f]*: f5 b2 0c 49 subfvs r2,73
12656 +
12657 +[0-9a-f]* <subc>:
12658 + *[0-9a-f]*: f7 bf 00 00 subeq pc,0
12659 + *[0-9a-f]*: f7 bc 0f ff subal r12,-1
12660 + *[0-9a-f]*: f7 b5 08 80 subls r5,-128
12661 + *[0-9a-f]*: f7 b4 07 7f subpl r4,127
12662 + *[0-9a-f]*: f7 be 01 01 subne lr,1
12663 + *[0-9a-f]*: f7 bc 08 76 subls r12,118
12664 + *[0-9a-f]*: f7 be 0d f4 subvc lr,-12
12665 + *[0-9a-f]*: f7 b4 06 f3 submi r4,-13
12666 +
12667 +[0-9a-f]* <movc2>:
12668 + *[0-9a-f]*: f9 bf 00 00 moveq pc,0
12669 + *[0-9a-f]*: f9 bc 0f ff moval r12,-1
12670 + *[0-9a-f]*: f9 b5 08 80 movls r5,-128
12671 + *[0-9a-f]*: f9 b4 07 7f movpl r4,127
12672 + *[0-9a-f]*: f9 be 01 01 movne lr,1
12673 + *[0-9a-f]*: f9 b3 05 86 movlt r3,-122
12674 + *[0-9a-f]*: f9 b8 0d 02 movvc r8,2
12675 + *[0-9a-f]*: f9 b7 01 91 movne r7,-111
12676 +
12677 +[0-9a-f]* <cp_b>:
12678 + *[0-9a-f]*: e0 0f 18 00 cp\.b pc,r0
12679 + *[0-9a-f]*: fe 00 18 00 cp\.b r0,pc
12680 + *[0-9a-f]*: f0 07 18 00 cp\.b r7,r8
12681 + *[0-9a-f]*: ee 08 18 00 cp\.b r8,r7
12682 +
12683 +[0-9a-f]* <cp_h>:
12684 + *[0-9a-f]*: e0 0f 19 00 cp\.h pc,r0
12685 + *[0-9a-f]*: fe 00 19 00 cp\.h r0,pc
12686 + *[0-9a-f]*: f0 07 19 00 cp\.h r7,r8
12687 + *[0-9a-f]*: ee 08 19 00 cp\.h r8,r7
12688 +
12689 +[0-9a-f]* <ldm>:
12690 + *[0-9a-f]*: e1 cf 00 7e ldm pc,r1-r6
12691 + *[0-9a-f]*: e1 cc ff ff ldm r12,r0-pc
12692 + *[0-9a-f]*: e1 c5 80 00 ldm r5,pc
12693 + *[0-9a-f]*: e1 c4 7f ff ldm r4,r0-lr
12694 + *[0-9a-f]*: e1 ce 00 01 ldm lr,r0
12695 + *[0-9a-f]*: e1 c9 40 22 ldm r9,r1,r5,lr
12696 + *[0-9a-f]*: e1 cb 81 ec ldm r11,r2-r3,r5-r8,pc
12697 + *[0-9a-f]*: e1 c6 a2 09 ldm r6,r0,r3,r9,sp,pc
12698 +
12699 +[0-9a-f]* <ldm_pu>:
12700 + *[0-9a-f]*: e3 cf 03 c0 ldm pc\+\+,r6-r9
12701 + *[0-9a-f]*: e3 cc ff ff ldm r12\+\+,r0-pc
12702 + *[0-9a-f]*: e3 c5 80 00 ldm r5\+\+,pc
12703 + *[0-9a-f]*: e3 c4 7f ff ldm r4\+\+,r0-lr
12704 + *[0-9a-f]*: e3 ce 00 01 ldm lr\+\+,r0
12705 + *[0-9a-f]*: e3 cc d5 38 ldm r12\+\+,r3-r5,r8,r10,r12,lr-pc
12706 + *[0-9a-f]*: e3 ca c0 74 ldm r10\+\+,r2,r4-r6,lr-pc
12707 + *[0-9a-f]*: e3 c6 7e 1a ldm r6\+\+,r1,r3-r4,r9-lr
12708 +
12709 +[0-9a-f]* <ldmts>:
12710 + *[0-9a-f]*: e5 cf 01 80 ldmts pc,r7-r8
12711 + *[0-9a-f]*: e5 cc ff ff ldmts r12,r0-pc
12712 + *[0-9a-f]*: e5 c5 80 00 ldmts r5,pc
12713 + *[0-9a-f]*: e5 c4 7f ff ldmts r4,r0-lr
12714 + *[0-9a-f]*: e5 ce 00 01 ldmts lr,r0
12715 + *[0-9a-f]*: e5 c0 18 06 ldmts r0,r1-r2,r11-r12
12716 + *[0-9a-f]*: e5 ce 61 97 ldmts lr,r0-r2,r4,r7-r8,sp-lr
12717 + *[0-9a-f]*: e5 cc c2 3b ldmts r12,r0-r1,r3-r5,r9,lr-pc
12718 +
12719 +[0-9a-f]* <ldmts_pu>:
12720 + *[0-9a-f]*: e7 cf 02 00 ldmts pc\+\+,r9
12721 + *[0-9a-f]*: e7 cc ff ff ldmts r12\+\+,r0-pc
12722 + *[0-9a-f]*: e7 c5 80 00 ldmts r5\+\+,pc
12723 + *[0-9a-f]*: e7 c4 7f ff ldmts r4\+\+,r0-lr
12724 + *[0-9a-f]*: e7 ce 00 01 ldmts lr\+\+,r0
12725 + *[0-9a-f]*: e7 cd 0a bd ldmts sp\+\+,r0,r2-r5,r7,r9,r11
12726 + *[0-9a-f]*: e7 c5 0c 8e ldmts r5\+\+,r1-r3,r7,r10-r11
12727 + *[0-9a-f]*: e7 c8 a1 9c ldmts r8\+\+,r2-r4,r7-r8,sp,pc
12728 +
12729 +[0-9a-f]* <stm>:
12730 + *[0-9a-f]*: e9 cf 00 80 stm pc,r7
12731 + *[0-9a-f]*: e9 cc ff ff stm r12,r0-pc
12732 + *[0-9a-f]*: e9 c5 80 00 stm r5,pc
12733 + *[0-9a-f]*: e9 c4 7f ff stm r4,r0-lr
12734 + *[0-9a-f]*: e9 ce 00 01 stm lr,r0
12735 + *[0-9a-f]*: e9 cd 49 2c stm sp,r2-r3,r5,r8,r11,lr
12736 + *[0-9a-f]*: e9 c4 4c 5f stm r4,r0-r4,r6,r10-r11,lr
12737 + *[0-9a-f]*: e9 c9 f2 22 stm r9,r1,r5,r9,r12-pc
12738 +
12739 +[0-9a-f]* <stm_pu>:
12740 + *[0-9a-f]*: eb cf 00 70 stm --pc,r4-r6
12741 + *[0-9a-f]*: eb cc ff ff stm --r12,r0-pc
12742 + *[0-9a-f]*: eb c5 80 00 stm --r5,pc
12743 + *[0-9a-f]*: eb c4 7f ff stm --r4,r0-lr
12744 + *[0-9a-f]*: eb ce 00 01 stm --lr,r0
12745 + *[0-9a-f]*: eb cb fb f1 stm --r11,r0,r4-r9,r11-pc
12746 + *[0-9a-f]*: eb cb 56 09 stm --r11,r0,r3,r9-r10,r12,lr
12747 + *[0-9a-f]*: eb c6 63 04 stm --r6,r2,r8-r9,sp-lr
12748 +
12749 +[0-9a-f]* <stmts>:
12750 + *[0-9a-f]*: ed cf 01 00 stmts pc,r8
12751 + *[0-9a-f]*: ed cc ff ff stmts r12,r0-pc
12752 + *[0-9a-f]*: ed c5 80 00 stmts r5,pc
12753 + *[0-9a-f]*: ed c4 7f ff stmts r4,r0-lr
12754 + *[0-9a-f]*: ed ce 00 01 stmts lr,r0
12755 + *[0-9a-f]*: ed c1 c6 5b stmts r1,r0-r1,r3-r4,r6,r9-r10,lr-pc
12756 + *[0-9a-f]*: ed c3 1d c1 stmts r3,r0,r6-r8,r10-r12
12757 + *[0-9a-f]*: ed cb d6 d1 stmts r11,r0,r4,r6-r7,r9-r10,r12,lr-pc
12758 +
12759 +[0-9a-f]* <stmts_pu>:
12760 + *[0-9a-f]*: ef cf 01 c0 stmts --pc,r6-r8
12761 + *[0-9a-f]*: ef cc ff ff stmts --r12,r0-pc
12762 + *[0-9a-f]*: ef c5 80 00 stmts --r5,pc
12763 + *[0-9a-f]*: ef c4 7f ff stmts --r4,r0-lr
12764 + *[0-9a-f]*: ef ce 00 01 stmts --lr,r0
12765 + *[0-9a-f]*: ef c2 36 19 stmts --r2,r0,r3-r4,r9-r10,r12-sp
12766 + *[0-9a-f]*: ef c3 c0 03 stmts --r3,r0-r1,lr-pc
12767 + *[0-9a-f]*: ef c0 44 7d stmts --r0,r0,r2-r6,r10,lr
12768 +
12769 +[0-9a-f]* <ldins_h>:
12770 + *[0-9a-f]*: ff df 00 00 ldins\.h pc:b,pc\[0\]
12771 + *[0-9a-f]*: f9 dc 1f ff ldins\.h r12:t,r12\[-2\]
12772 + *[0-9a-f]*: eb d5 18 00 ldins\.h r5:t,r5\[-4096\]
12773 + *[0-9a-f]*: e9 d4 07 ff ldins\.h r4:b,r4\[4094\]
12774 + *[0-9a-f]*: fd de 10 01 ldins\.h lr:t,lr\[2\]
12775 + *[0-9a-f]*: fd d0 13 c5 ldins\.h r0:t,lr\[1930\]
12776 + *[0-9a-f]*: ef d3 0e f5 ldins\.h r3:b,r7\[-534\]
12777 + *[0-9a-f]*: f9 d2 0b 9a ldins\.h r2:b,r12\[-2252\]
12778 +
12779 +[0-9a-f]* <ldins_b>:
12780 + *[0-9a-f]*: ff df 40 00 ldins\.b pc:b,pc\[0\]
12781 + *[0-9a-f]*: f9 dc 7f ff ldins\.b r12:t,r12\[-1\]
12782 + *[0-9a-f]*: eb d5 68 00 ldins\.b r5:u,r5\[-2048\]
12783 + *[0-9a-f]*: e9 d4 57 ff ldins\.b r4:l,r4\[2047\]
12784 + *[0-9a-f]*: fd de 50 01 ldins\.b lr:l,lr\[1\]
12785 + *[0-9a-f]*: e9 d6 7d 6a ldins\.b r6:t,r4\[-662\]
12786 + *[0-9a-f]*: e3 d5 4f 69 ldins\.b r5:b,r1\[-151\]
12787 + *[0-9a-f]*: f7 da 78 7d ldins\.b r10:t,r11\[-1923\]
12788 +
12789 +[0-9a-f]* <ldswp_sh>:
12790 + *[0-9a-f]*: ff df 20 00 ldswp\.sh pc,pc\[0\]
12791 + *[0-9a-f]*: f9 dc 2f ff ldswp\.sh r12,r12\[-2\]
12792 + *[0-9a-f]*: eb d5 28 00 ldswp\.sh r5,r5\[-4096\]
12793 + *[0-9a-f]*: e9 d4 27 ff ldswp\.sh r4,r4\[4094\]
12794 + *[0-9a-f]*: fd de 20 01 ldswp\.sh lr,lr\[2\]
12795 + *[0-9a-f]*: f5 d9 27 84 ldswp\.sh r9,r10\[3848\]
12796 + *[0-9a-f]*: f9 d4 2c 04 ldswp\.sh r4,r12\[-2040\]
12797 + *[0-9a-f]*: e5 da 26 08 ldswp\.sh r10,r2\[3088\]
12798 +
12799 +[0-9a-f]* <ldswp_uh>:
12800 + *[0-9a-f]*: ff df 30 00 ldswp\.uh pc,pc\[0\]
12801 + *[0-9a-f]*: f9 dc 3f ff ldswp\.uh r12,r12\[-2\]
12802 + *[0-9a-f]*: eb d5 38 00 ldswp\.uh r5,r5\[-4096\]
12803 + *[0-9a-f]*: e9 d4 37 ff ldswp\.uh r4,r4\[4094\]
12804 + *[0-9a-f]*: fd de 30 01 ldswp\.uh lr,lr\[2\]
12805 + *[0-9a-f]*: f3 d4 37 46 ldswp\.uh r4,r9\[3724\]
12806 + *[0-9a-f]*: fb de 3c bc ldswp\.uh lr,sp\[-1672\]
12807 + *[0-9a-f]*: f9 d8 38 7d ldswp\.uh r8,r12\[-3846\]
12808 +
12809 +[0-9a-f]* <ldswp_w>:
12810 + *[0-9a-f]*: ff df 80 00 ldswp\.w pc,pc\[0\]
12811 + *[0-9a-f]*: f9 dc 8f ff ldswp\.w r12,r12\[-4\]
12812 + *[0-9a-f]*: eb d5 88 00 ldswp\.w r5,r5\[-8192\]
12813 + *[0-9a-f]*: e9 d4 87 ff ldswp\.w r4,r4\[8188\]
12814 + *[0-9a-f]*: fd de 80 01 ldswp\.w lr,lr\[4\]
12815 + *[0-9a-f]*: ef dd 81 d1 ldswp\.w sp,r7\[1860\]
12816 + *[0-9a-f]*: eb df 8c c1 ldswp\.w pc,r5\[-3324\]
12817 + *[0-9a-f]*: f5 dc 8c c8 ldswp\.w r12,r10\[-3296\]
12818 +
12819 +[0-9a-f]* <stswp_h>:
12820 + *[0-9a-f]*: ff df 90 00 stswp\.h pc\[0\],pc
12821 + *[0-9a-f]*: f9 dc 9f ff stswp\.h r12\[-2\],r12
12822 + *[0-9a-f]*: eb d5 98 00 stswp\.h r5\[-4096\],r5
12823 + *[0-9a-f]*: e9 d4 97 ff stswp\.h r4\[4094\],r4
12824 + *[0-9a-f]*: fd de 90 01 stswp\.h lr\[2\],lr
12825 + *[0-9a-f]*: ef da 90 20 stswp\.h r7\[64\],r10
12826 + *[0-9a-f]*: f5 d2 95 e8 stswp\.h r10\[3024\],r2
12827 + *[0-9a-f]*: e1 da 9b 74 stswp\.h r0\[-2328\],r10
12828 +
12829 +[0-9a-f]* <stswp_w>:
12830 + *[0-9a-f]*: ff df a0 00 stswp\.w pc\[0\],pc
12831 + *[0-9a-f]*: f9 dc af ff stswp\.w r12\[-4\],r12
12832 + *[0-9a-f]*: eb d5 a8 00 stswp\.w r5\[-8192\],r5
12833 + *[0-9a-f]*: e9 d4 a7 ff stswp\.w r4\[8188\],r4
12834 + *[0-9a-f]*: fd de a0 01 stswp\.w lr\[4\],lr
12835 + *[0-9a-f]*: ff d8 a1 21 stswp\.w pc\[1156\],r8
12836 + *[0-9a-f]*: fb da a7 ce stswp\.w sp\[7992\],r10
12837 + *[0-9a-f]*: f1 d5 ae db stswp\.w r8\[-1172\],r5
12838 +
12839 +[0-9a-f]* <and2>:
12840 + *[0-9a-f]*: ff ef 00 0f and pc,pc,pc
12841 + *[0-9a-f]*: f9 ec 01 fc and r12,r12,r12<<0x1f
12842 + *[0-9a-f]*: eb e5 01 05 and r5,r5,r5<<0x10
12843 + *[0-9a-f]*: e9 e4 00 f4 and r4,r4,r4<<0xf
12844 + *[0-9a-f]*: fd ee 00 1e and lr,lr,lr<<0x1
12845 + *[0-9a-f]*: e5 e1 00 1a and r10,r2,r1<<0x1
12846 + *[0-9a-f]*: f1 eb 01 bc and r12,r8,r11<<0x1b
12847 + *[0-9a-f]*: ef e0 00 3a and r10,r7,r0<<0x3
12848 +
12849 +[0-9a-f]* <and3>:
12850 + *[0-9a-f]*: ff ef 02 0f and pc,pc,pc
12851 + *[0-9a-f]*: f9 ec 03 fc and r12,r12,r12>>0x1f
12852 + *[0-9a-f]*: eb e5 03 05 and r5,r5,r5>>0x10
12853 + *[0-9a-f]*: e9 e4 02 f4 and r4,r4,r4>>0xf
12854 + *[0-9a-f]*: fd ee 02 1e and lr,lr,lr>>0x1
12855 + *[0-9a-f]*: f1 e7 03 1c and r12,r8,r7>>0x11
12856 + *[0-9a-f]*: e9 e9 03 4f and pc,r4,r9>>0x14
12857 + *[0-9a-f]*: f3 ea 02 ca and r10,r9,r10>>0xc
12858 +
12859 +[0-9a-f]* <or2>:
12860 + *[0-9a-f]*: ff ef 10 0f or pc,pc,pc
12861 + *[0-9a-f]*: f9 ec 11 fc or r12,r12,r12<<0x1f
12862 + *[0-9a-f]*: eb e5 11 05 or r5,r5,r5<<0x10
12863 + *[0-9a-f]*: e9 e4 10 f4 or r4,r4,r4<<0xf
12864 + *[0-9a-f]*: fd ee 10 1e or lr,lr,lr<<0x1
12865 + *[0-9a-f]*: fb eb 11 d8 or r8,sp,r11<<0x1d
12866 + *[0-9a-f]*: f3 e2 11 cf or pc,r9,r2<<0x1c
12867 + *[0-9a-f]*: e3 e2 10 35 or r5,r1,r2<<0x3
12868 +
12869 +[0-9a-f]* <or3>:
12870 + *[0-9a-f]*: ff ef 12 0f or pc,pc,pc
12871 + *[0-9a-f]*: f9 ec 13 fc or r12,r12,r12>>0x1f
12872 + *[0-9a-f]*: eb e5 13 05 or r5,r5,r5>>0x10
12873 + *[0-9a-f]*: e9 e4 12 f4 or r4,r4,r4>>0xf
12874 + *[0-9a-f]*: fd ee 12 1e or lr,lr,lr>>0x1
12875 + *[0-9a-f]*: fb ed 12 21 or r1,sp,sp>>0x2
12876 + *[0-9a-f]*: e3 e1 13 d0 or r0,r1,r1>>0x1d
12877 + *[0-9a-f]*: f9 e8 12 84 or r4,r12,r8>>0x8
12878 +
12879 +[0-9a-f]* <eor2>:
12880 + *[0-9a-f]*: ff ef 20 0f eor pc,pc,pc
12881 + *[0-9a-f]*: f9 ec 21 fc eor r12,r12,r12<<0x1f
12882 + *[0-9a-f]*: eb e5 21 05 eor r5,r5,r5<<0x10
12883 + *[0-9a-f]*: e9 e4 20 f4 eor r4,r4,r4<<0xf
12884 + *[0-9a-f]*: fd ee 20 1e eor lr,lr,lr<<0x1
12885 + *[0-9a-f]*: f3 e4 20 ba eor r10,r9,r4<<0xb
12886 + *[0-9a-f]*: e1 e1 21 f4 eor r4,r0,r1<<0x1f
12887 + *[0-9a-f]*: e5 ec 20 d6 eor r6,r2,r12<<0xd
12888 +
12889 +[0-9a-f]* <eor3>:
12890 + *[0-9a-f]*: ff ef 22 0f eor pc,pc,pc
12891 + *[0-9a-f]*: f9 ec 23 fc eor r12,r12,r12>>0x1f
12892 + *[0-9a-f]*: eb e5 23 05 eor r5,r5,r5>>0x10
12893 + *[0-9a-f]*: e9 e4 22 f4 eor r4,r4,r4>>0xf
12894 + *[0-9a-f]*: fd ee 22 1e eor lr,lr,lr>>0x1
12895 + *[0-9a-f]*: eb e5 23 65 eor r5,r5,r5>>0x16
12896 + *[0-9a-f]*: e3 ee 22 3a eor r10,r1,lr>>0x3
12897 + *[0-9a-f]*: fd ed 23 a7 eor r7,lr,sp>>0x1a
12898 +
12899 +[0-9a-f]* <sthh_w2>:
12900 + *[0-9a-f]*: ff ef 8f 0f sthh\.w pc\[pc\],pc:b,pc:b
12901 + *[0-9a-f]*: f9 ec bc 3c sthh\.w r12\[r12<<0x3\],r12:t,r12:t
12902 + *[0-9a-f]*: eb e5 b5 25 sthh\.w r5\[r5<<0x2\],r5:t,r5:t
12903 + *[0-9a-f]*: e9 e4 84 14 sthh\.w r4\[r4<<0x1\],r4:b,r4:b
12904 + *[0-9a-f]*: fd ee be 1e sthh\.w lr\[lr<<0x1\],lr:t,lr:t
12905 + *[0-9a-f]*: e3 ec b6 3d sthh\.w sp\[r6<<0x3\],r1:t,r12:t
12906 + *[0-9a-f]*: f3 e9 b6 06 sthh\.w r6\[r6\],r9:t,r9:t
12907 + *[0-9a-f]*: e1 eb 93 0a sthh\.w r10\[r3\],r0:b,r11:t
12908 +
12909 +[0-9a-f]* <sthh_w1>:
12910 + *[0-9a-f]*: ff ef c0 0f sthh\.w pc\[0x0\],pc:b,pc:b
12911 + *[0-9a-f]*: f9 ec ff fc sthh\.w r12\[0x3fc\],r12:t,r12:t
12912 + *[0-9a-f]*: eb e5 f8 05 sthh\.w r5\[0x200\],r5:t,r5:t
12913 + *[0-9a-f]*: e9 e4 c7 f4 sthh\.w r4\[0x1fc\],r4:b,r4:b
12914 + *[0-9a-f]*: fd ee f0 1e sthh\.w lr\[0x4\],lr:t,lr:t
12915 + *[0-9a-f]*: f3 e0 e6 54 sthh\.w r4\[0x194\],r9:t,r0:b
12916 + *[0-9a-f]*: e5 ea e5 78 sthh\.w r8\[0x15c\],r2:t,r10:b
12917 + *[0-9a-f]*: f3 e2 c2 bd sthh\.w sp\[0xac\],r9:b,r2:b
12918 +
12919 +[0-9a-f]* <cop>:
12920 + *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0
12921 + *[0-9a-f]*: e7 af ff ff cop cp7,cr15,cr15,cr15,0x7f
12922 + *[0-9a-f]*: e3 a8 75 55 cop cp3,cr5,cr5,cr5,0x31
12923 + *[0-9a-f]*: e3 a8 44 44 cop cp2,cr4,cr4,cr4,0x30
12924 + *[0-9a-f]*: e5 ad a8 37 cop cp5,cr8,cr3,cr7,0x5a
12925 +
12926 +[0-9a-f]* <ldc_w1>:
12927 + *[0-9a-f]*: e9 a0 00 00 ldc\.w cp0,cr0,r0\[0x0\]
12928 + *[0-9a-f]*: e9 af ef ff ldc\.w cp7,cr15,pc\[0x3fc\]
12929 + *[0-9a-f]*: e9 a5 65 80 ldc\.w cp3,cr5,r5\[0x200\]
12930 + *[0-9a-f]*: e9 a4 44 7f ldc\.w cp2,cr4,r4\[0x1fc\]
12931 + *[0-9a-f]*: e9 ad 89 24 ldc\.w cp4,cr9,sp\[0x90\]
12932 +
12933 +[0-9a-f]* <ldc_w2>:
12934 + *[0-9a-f]*: ef a0 00 40 ldc\.w cp0,cr0,--r0
12935 + *[0-9a-f]*: ef af ef 40 ldc\.w cp7,cr15,--pc
12936 + *[0-9a-f]*: ef a5 65 40 ldc\.w cp3,cr5,--r5
12937 + *[0-9a-f]*: ef a4 44 40 ldc\.w cp2,cr4,--r4
12938 + *[0-9a-f]*: ef ad 89 40 ldc\.w cp4,cr9,--sp
12939 +
12940 +[0-9a-f]* <ldc_w3>:
12941 + *[0-9a-f]*: ef a0 10 00 ldc\.w cp0,cr0,r0\[r0\]
12942 + *[0-9a-f]*: ef af ff 3f ldc\.w cp7,cr15,pc\[pc<<0x3\]
12943 + *[0-9a-f]*: ef a5 75 24 ldc\.w cp3,cr5,r5\[r4<<0x2\]
12944 + *[0-9a-f]*: ef a4 54 13 ldc\.w cp2,cr4,r4\[r3<<0x1\]
12945 + *[0-9a-f]*: ef ad 99 0c ldc\.w cp4,cr9,sp\[r12\]
12946 +
12947 +[0-9a-f]* <ldc_d1>:
12948 + *[0-9a-f]*: e9 a0 10 00 ldc\.d cp0,cr0,r0\[0x0\]
12949 + *[0-9a-f]*: e9 af fe ff ldc\.d cp7,cr14,pc\[0x3fc\]
12950 + *[0-9a-f]*: e9 a5 76 80 ldc\.d cp3,cr6,r5\[0x200\]
12951 + *[0-9a-f]*: e9 a4 54 7f ldc\.d cp2,cr4,r4\[0x1fc\]
12952 + *[0-9a-f]*: e9 ad 98 24 ldc\.d cp4,cr8,sp\[0x90\]
12953 +
12954 +[0-9a-f]* <ldc_d2>:
12955 + *[0-9a-f]*: ef a0 00 50 ldc\.d cp0,cr0,--r0
12956 + *[0-9a-f]*: ef af ee 50 ldc\.d cp7,cr14,--pc
12957 + *[0-9a-f]*: ef a5 66 50 ldc\.d cp3,cr6,--r5
12958 + *[0-9a-f]*: ef a4 44 50 ldc\.d cp2,cr4,--r4
12959 + *[0-9a-f]*: ef ad 88 50 ldc\.d cp4,cr8,--sp
12960 +
12961 +[0-9a-f]* <ldc_d3>:
12962 + *[0-9a-f]*: ef a0 10 40 ldc\.d cp0,cr0,r0\[r0\]
12963 + *[0-9a-f]*: ef af fe 7f ldc\.d cp7,cr14,pc\[pc<<0x3\]
12964 + *[0-9a-f]*: ef a5 76 64 ldc\.d cp3,cr6,r5\[r4<<0x2\]
12965 + *[0-9a-f]*: ef a4 54 53 ldc\.d cp2,cr4,r4\[r3<<0x1\]
12966 + *[0-9a-f]*: ef ad 98 4c ldc\.d cp4,cr8,sp\[r12\]
12967 +
12968 +[0-9a-f]* <stc_w1>:
12969 + *[0-9a-f]*: eb a0 00 00 stc\.w cp0,r0\[0x0\],cr0
12970 + *[0-9a-f]*: eb af ef ff stc\.w cp7,pc\[0x3fc\],cr15
12971 + *[0-9a-f]*: eb a5 65 80 stc\.w cp3,r5\[0x200\],cr5
12972 + *[0-9a-f]*: eb a4 44 7f stc\.w cp2,r4\[0x1fc\],cr4
12973 + *[0-9a-f]*: eb ad 89 24 stc\.w cp4,sp\[0x90\],cr9
12974 +
12975 +[0-9a-f]* <stc_w2>:
12976 + *[0-9a-f]*: ef a0 00 60 stc\.w cp0,r0\+\+,cr0
12977 + *[0-9a-f]*: ef af ef 60 stc\.w cp7,pc\+\+,cr15
12978 + *[0-9a-f]*: ef a5 65 60 stc\.w cp3,r5\+\+,cr5
12979 + *[0-9a-f]*: ef a4 44 60 stc\.w cp2,r4\+\+,cr4
12980 + *[0-9a-f]*: ef ad 89 60 stc\.w cp4,sp\+\+,cr9
12981 +
12982 +[0-9a-f]* <stc_w3>:
12983 + *[0-9a-f]*: ef a0 10 80 stc\.w cp0,r0\[r0\],cr0
12984 + *[0-9a-f]*: ef af ff bf stc\.w cp7,pc\[pc<<0x3\],cr15
12985 + *[0-9a-f]*: ef a5 75 a4 stc\.w cp3,r5\[r4<<0x2\],cr5
12986 + *[0-9a-f]*: ef a4 54 93 stc\.w cp2,r4\[r3<<0x1\],cr4
12987 + *[0-9a-f]*: ef ad 99 8c stc\.w cp4,sp\[r12\],cr9
12988 +
12989 +[0-9a-f]* <stc_d1>:
12990 + *[0-9a-f]*: eb a0 10 00 stc\.d cp0,r0\[0x0\],cr0
12991 + *[0-9a-f]*: eb af fe ff stc\.d cp7,pc\[0x3fc\],cr14
12992 + *[0-9a-f]*: eb a5 76 80 stc\.d cp3,r5\[0x200\],cr6
12993 + *[0-9a-f]*: eb a4 54 7f stc\.d cp2,r4\[0x1fc\],cr4
12994 + *[0-9a-f]*: eb ad 98 24 stc\.d cp4,sp\[0x90\],cr8
12995 +
12996 +[0-9a-f]* <stc_d2>:
12997 + *[0-9a-f]*: ef a0 00 70 stc\.d cp0,r0\+\+,cr0
12998 + *[0-9a-f]*: ef af ee 70 stc\.d cp7,pc\+\+,cr14
12999 + *[0-9a-f]*: ef a5 66 70 stc\.d cp3,r5\+\+,cr6
13000 + *[0-9a-f]*: ef a4 44 70 stc\.d cp2,r4\+\+,cr4
13001 + *[0-9a-f]*: ef ad 88 70 stc\.d cp4,sp\+\+,cr8
13002 +
13003 +[0-9a-f]* <stc_d3>:
13004 + *[0-9a-f]*: ef a0 10 c0 stc\.d cp0,r0\[r0\],cr0
13005 + *[0-9a-f]*: ef af fe ff stc\.d cp7,pc\[pc<<0x3\],cr14
13006 + *[0-9a-f]*: ef a5 76 e4 stc\.d cp3,r5\[r4<<0x2\],cr6
13007 + *[0-9a-f]*: ef a4 54 d3 stc\.d cp2,r4\[r3<<0x1\],cr4
13008 + *[0-9a-f]*: ef ad 98 cc stc\.d cp4,sp\[r12\],cr8
13009 +
13010 +[0-9a-f]* <ldc0_w>:
13011 + *[0-9a-f]*: f1 a0 00 00 ldc0\.w cr0,r0\[0x0\]
13012 + *[0-9a-f]*: f1 af ff ff ldc0\.w cr15,pc\[0x3ffc\]
13013 + *[0-9a-f]*: f1 a5 85 00 ldc0\.w cr5,r5\[0x2000\]
13014 + *[0-9a-f]*: f1 a4 74 ff ldc0\.w cr4,r4\[0x1ffc\]
13015 + *[0-9a-f]*: f1 ad 09 93 ldc0\.w cr9,sp\[0x24c\]
13016 +
13017 +[0-9a-f]* <ldc0_d>:
13018 + *[0-9a-f]*: f3 a0 00 00 ldc0\.d cr0,r0\[0x0\]
13019 + *[0-9a-f]*: f3 af fe ff ldc0\.d cr14,pc\[0x3ffc\]
13020 + *[0-9a-f]*: f3 a5 86 00 ldc0\.d cr6,r5\[0x2000\]
13021 + *[0-9a-f]*: f3 a4 74 ff ldc0\.d cr4,r4\[0x1ffc\]
13022 + *[0-9a-f]*: f3 ad 08 93 ldc0\.d cr8,sp\[0x24c\]
13023 +
13024 +[0-9a-f]* <stc0_w>:
13025 + *[0-9a-f]*: f5 a0 00 00 stc0\.w r0\[0x0\],cr0
13026 + *[0-9a-f]*: f5 af ff ff stc0\.w pc\[0x3ffc\],cr15
13027 + *[0-9a-f]*: f5 a5 85 00 stc0\.w r5\[0x2000\],cr5
13028 + *[0-9a-f]*: f5 a4 74 ff stc0\.w r4\[0x1ffc\],cr4
13029 + *[0-9a-f]*: f5 ad 09 93 stc0\.w sp\[0x24c\],cr9
13030 +
13031 +[0-9a-f]* <stc0_d>:
13032 + *[0-9a-f]*: f7 a0 00 00 stc0\.d r0\[0x0\],cr0
13033 + *[0-9a-f]*: f7 af fe ff stc0\.d pc\[0x3ffc\],cr14
13034 + *[0-9a-f]*: f7 a5 86 00 stc0\.d r5\[0x2000\],cr6
13035 + *[0-9a-f]*: f7 a4 74 ff stc0\.d r4\[0x1ffc\],cr4
13036 + *[0-9a-f]*: f7 ad 08 93 stc0\.d sp\[0x24c\],cr8
13037 +
13038 +[0-9a-f]* <memc>:
13039 + *[0-9a-f]*: f6 10 00 00 memc 0,0x0
13040 + *[0-9a-f]*: f6 1f ff ff memc -4,0x1f
13041 + *[0-9a-f]*: f6 18 40 00 memc -65536,0x10
13042 + *[0-9a-f]*: f6 17 bf ff memc 65532,0xf
13043 +
13044 +[0-9a-f]* <mems>:
13045 + *[0-9a-f]*: f8 10 00 00 mems 0,0x0
13046 + *[0-9a-f]*: f8 1f ff ff mems -4,0x1f
13047 + *[0-9a-f]*: f8 18 40 00 mems -65536,0x10
13048 + *[0-9a-f]*: f8 17 bf ff mems 65532,0xf
13049 +
13050 +[0-9a-f]* <memt>:
13051 + *[0-9a-f]*: fa 10 00 00 memt 0,0x0
13052 + *[0-9a-f]*: fa 1f ff ff memt -4,0x1f
13053 + *[0-9a-f]*: fa 18 40 00 memt -65536,0x10
13054 + *[0-9a-f]*: fa 17 bf ff memt 65532,0xf
13055 +
13056 +[0-9a-f]* <stcond>:
13057 + *[0-9a-f]*: e1 70 00 00 stcond r0\[0\],r0
13058 + *[0-9a-f]*: ff 7f ff ff stcond pc\[-1\],pc
13059 + *[0-9a-f]*: f1 77 80 00 stcond r8\[-32768\],r7
13060 + *[0-9a-f]*: ef 78 7f ff stcond r7\[32767\],r8
13061 + *[0-9a-f]*: eb 7a 12 34 stcond r5\[4660\],r10
13062 +
13063 +[0-9a-f]* <ldcm_w>:
13064 + *[0-9a-f]*: ed af 00 ff ldcm\.w cp0,pc,cr0-cr7
13065 + *[0-9a-f]*: ed a0 e0 01 ldcm\.w cp7,r0,cr0
13066 + *[0-9a-f]*: ed a4 90 7f ldcm\.w cp4,r4\+\+,cr0-cr6
13067 + *[0-9a-f]*: ed a7 60 80 ldcm\.w cp3,r7,cr7
13068 + *[0-9a-f]*: ed ac 30 72 ldcm\.w cp1,r12\+\+,cr1,cr4-cr6
13069 + *[0-9a-f]*: ed af 01 ff ldcm\.w cp0,pc,cr8-cr15
13070 + *[0-9a-f]*: ed a0 e1 01 ldcm\.w cp7,r0,cr8
13071 + *[0-9a-f]*: ed a4 91 7f ldcm\.w cp4,r4\+\+,cr8-cr14
13072 + *[0-9a-f]*: ed a7 61 80 ldcm\.w cp3,r7,cr15
13073 + *[0-9a-f]*: ed ac 31 72 ldcm\.w cp1,r12\+\+,cr9,cr12-cr14
13074 +
13075 +[0-9a-f]* <ldcm_d>:
13076 + *[0-9a-f]*: ed af 04 ff ldcm\.d cp0,pc,cr0-cr15
13077 + *[0-9a-f]*: ed a0 e4 01 ldcm\.d cp7,r0,cr0-cr1
13078 + *[0-9a-f]*: ed a4 94 7f ldcm\.d cp4,r4\+\+,cr0-cr13
13079 + *[0-9a-f]*: ed a7 64 80 ldcm\.d cp3,r7,cr14-cr15
13080 + *[0-9a-f]*: ed ac 54 93 ldcm\.d cp2,r12\+\+,cr0-cr3,cr8-cr9,cr14-cr15
13081 +
13082 +[0-9a-f]* <stcm_w>:
13083 + *[0-9a-f]*: ed af 02 ff stcm\.w cp0,pc,cr0-cr7
13084 + *[0-9a-f]*: ed a0 e2 01 stcm\.w cp7,r0,cr0
13085 + *[0-9a-f]*: ed a4 92 7f stcm\.w cp4,--r4,cr0-cr6
13086 + *[0-9a-f]*: ed a7 62 80 stcm\.w cp3,r7,cr7
13087 + *[0-9a-f]*: ed ac 32 72 stcm\.w cp1,--r12,cr1,cr4-cr6
13088 + *[0-9a-f]*: ed af 03 ff stcm\.w cp0,pc,cr8-cr15
13089 + *[0-9a-f]*: ed a0 e3 01 stcm\.w cp7,r0,cr8
13090 + *[0-9a-f]*: ed a4 93 7f stcm\.w cp4,--r4,cr8-cr14
13091 + *[0-9a-f]*: ed a7 63 80 stcm\.w cp3,r7,cr15
13092 + *[0-9a-f]*: ed ac 33 72 stcm\.w cp1,--r12,cr9,cr12-cr14
13093 +
13094 +[0-9a-f]* <stcm_d>:
13095 + *[0-9a-f]*: ed af 05 ff stcm\.d cp0,pc,cr0-cr15
13096 + *[0-9a-f]*: ed a0 e5 01 stcm\.d cp7,r0,cr0-cr1
13097 + *[0-9a-f]*: ed a4 95 7f stcm\.d cp4,--r4,cr0-cr13
13098 + *[0-9a-f]*: ed a7 65 80 stcm\.d cp3,r7,cr14-cr15
13099 + *[0-9a-f]*: ed ac 55 93 stcm\.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
13100 +
13101 +[0-9a-f]* <mvcr_w>:
13102 + *[0-9a-f]*: ef af ef 00 mvcr\.w cp7,pc,cr15
13103 + *[0-9a-f]*: ef a0 00 00 mvcr\.w cp0,r0,cr0
13104 + *[0-9a-f]*: ef af 0f 00 mvcr\.w cp0,pc,cr15
13105 + *[0-9a-f]*: ef a0 ef 00 mvcr\.w cp7,r0,cr15
13106 + *[0-9a-f]*: ef af e0 00 mvcr\.w cp7,pc,cr0
13107 + *[0-9a-f]*: ef a7 88 00 mvcr\.w cp4,r7,cr8
13108 + *[0-9a-f]*: ef a8 67 00 mvcr\.w cp3,r8,cr7
13109 +
13110 +[0-9a-f]* <mvcr_d>:
13111 + *[0-9a-f]*: ef ae ee 10 mvcr\.d cp7,lr,cr14
13112 + *[0-9a-f]*: ef a0 00 10 mvcr\.d cp0,r0,cr0
13113 + *[0-9a-f]*: ef ae 0e 10 mvcr\.d cp0,lr,cr14
13114 + *[0-9a-f]*: ef a0 ee 10 mvcr\.d cp7,r0,cr14
13115 + *[0-9a-f]*: ef ae e0 10 mvcr\.d cp7,lr,cr0
13116 + *[0-9a-f]*: ef a6 88 10 mvcr\.d cp4,r6,cr8
13117 + *[0-9a-f]*: ef a8 66 10 mvcr\.d cp3,r8,cr6
13118 +
13119 +[0-9a-f]* <mvrc_w>:
13120 + *[0-9a-f]*: ef af ef 20 mvrc\.w cp7,cr15,pc
13121 + *[0-9a-f]*: ef a0 00 20 mvrc\.w cp0,cr0,r0
13122 + *[0-9a-f]*: ef af 0f 20 mvrc\.w cp0,cr15,pc
13123 + *[0-9a-f]*: ef a0 ef 20 mvrc\.w cp7,cr15,r0
13124 + *[0-9a-f]*: ef af e0 20 mvrc\.w cp7,cr0,pc
13125 + *[0-9a-f]*: ef a7 88 20 mvrc\.w cp4,cr8,r7
13126 + *[0-9a-f]*: ef a8 67 20 mvrc\.w cp3,cr7,r8
13127 +
13128 +[0-9a-f]* <mvrc_d>:
13129 + *[0-9a-f]*: ef ae ee 30 mvrc\.d cp7,cr14,lr
13130 + *[0-9a-f]*: ef a0 00 30 mvrc\.d cp0,cr0,r0
13131 + *[0-9a-f]*: ef ae 0e 30 mvrc\.d cp0,cr14,lr
13132 + *[0-9a-f]*: ef a0 ee 30 mvrc\.d cp7,cr14,r0
13133 + *[0-9a-f]*: ef ae e0 30 mvrc\.d cp7,cr0,lr
13134 + *[0-9a-f]*: ef a6 88 30 mvrc\.d cp4,cr8,r6
13135 + *[0-9a-f]*: ef a8 66 30 mvrc\.d cp3,cr6,r8
13136 +
13137 +[0-9a-f]* <bfexts>:
13138 + *[0-9a-f]*: ff df b3 ff bfexts pc,pc,0x1f,0x1f
13139 + *[0-9a-f]*: e1 d0 b0 00 bfexts r0,r0,0x0,0x0
13140 + *[0-9a-f]*: e1 df b3 ff bfexts r0,pc,0x1f,0x1f
13141 + *[0-9a-f]*: ff d0 b3 ff bfexts pc,r0,0x1f,0x1f
13142 + *[0-9a-f]*: ff df b0 1f bfexts pc,pc,0x0,0x1f
13143 + *[0-9a-f]*: ff df b3 e0 bfexts pc,pc,0x1f,0x0
13144 + *[0-9a-f]*: ef d8 b1 f0 bfexts r7,r8,0xf,0x10
13145 + *[0-9a-f]*: f1 d7 b2 0f bfexts r8,r7,0x10,0xf
13146 +
13147 +[0-9a-f]* <bfextu>:
13148 + *[0-9a-f]*: ff df c3 ff bfextu pc,pc,0x1f,0x1f
13149 + *[0-9a-f]*: e1 d0 c0 00 bfextu r0,r0,0x0,0x0
13150 + *[0-9a-f]*: e1 df c3 ff bfextu r0,pc,0x1f,0x1f
13151 + *[0-9a-f]*: ff d0 c3 ff bfextu pc,r0,0x1f,0x1f
13152 + *[0-9a-f]*: ff df c0 1f bfextu pc,pc,0x0,0x1f
13153 + *[0-9a-f]*: ff df c3 e0 bfextu pc,pc,0x1f,0x0
13154 + *[0-9a-f]*: ef d8 c1 f0 bfextu r7,r8,0xf,0x10
13155 + *[0-9a-f]*: f1 d7 c2 0f bfextu r8,r7,0x10,0xf
13156 +
13157 +[0-9a-f]* <bfins>:
13158 + *[0-9a-f]*: ff df d3 ff bfins pc,pc,0x1f,0x1f
13159 + *[0-9a-f]*: e1 d0 d0 00 bfins r0,r0,0x0,0x0
13160 + *[0-9a-f]*: e1 df d3 ff bfins r0,pc,0x1f,0x1f
13161 + *[0-9a-f]*: ff d0 d3 ff bfins pc,r0,0x1f,0x1f
13162 + *[0-9a-f]*: ff df d0 1f bfins pc,pc,0x0,0x1f
13163 + *[0-9a-f]*: ff df d3 e0 bfins pc,pc,0x1f,0x0
13164 + *[0-9a-f]*: ef d8 d1 f0 bfins r7,r8,0xf,0x10
13165 + *[0-9a-f]*: f1 d7 d2 0f bfins r8,r7,0x10,0xf
13166 +
13167 +[0-9a-f]* <rsubc>:
13168 + *[0-9a-f]*: fb bf 00 00 rsubeq pc,0
13169 + *[0-9a-f]*: fb bc 0f ff rsubal r12,-1
13170 + *[0-9a-f]*: fb b5 08 80 rsubls r5,-128
13171 + *[0-9a-f]*: fb b4 07 7f rsubpl r4,127
13172 + *[0-9a-f]*: fb be 01 01 rsubne lr,1
13173 + *[0-9a-f]*: fb bc 08 76 rsubls r12,118
13174 + *[0-9a-f]*: fb be 0d f4 rsubvc lr,-12
13175 + *[0-9a-f]*: fb b4 06 f3 rsubmi r4,-13
13176 +
13177 +[0-9a-f]* <addc>:
13178 + *[0-9a-f]*: ff df e0 0f addeq pc,pc,pc
13179 + *[0-9a-f]*: f9 dc ef 0c addal r12,r12,r12
13180 + *[0-9a-f]*: eb d5 e8 05 addls r5,r5,r5
13181 + *[0-9a-f]*: e9 d4 e7 04 addpl r4,r4,r4
13182 + *[0-9a-f]*: fd de e1 0e addne lr,lr,lr
13183 + *[0-9a-f]*: e5 d1 e8 0a addls r10,r2,r1
13184 + *[0-9a-f]*: f1 db ed 0c addvc r12,r8,r11
13185 + *[0-9a-f]*: ef d0 e6 0a addmi r10,r7,r0
13186 +
13187 +[0-9a-f]* <subc2>:
13188 + *[0-9a-f]*: ff df e0 1f subeq pc,pc,pc
13189 + *[0-9a-f]*: f9 dc ef 1c subal r12,r12,r12
13190 + *[0-9a-f]*: eb d5 e8 15 subls r5,r5,r5
13191 + *[0-9a-f]*: e9 d4 e7 14 subpl r4,r4,r4
13192 + *[0-9a-f]*: fd de e1 1e subne lr,lr,lr
13193 + *[0-9a-f]*: e5 d1 e8 1a subls r10,r2,r1
13194 + *[0-9a-f]*: f1 db ed 1c subvc r12,r8,r11
13195 + *[0-9a-f]*: ef d0 e6 1a submi r10,r7,r0
13196 +
13197 +[0-9a-f]* <andc>:
13198 + *[0-9a-f]*: ff df e0 2f andeq pc,pc,pc
13199 + *[0-9a-f]*: f9 dc ef 2c andal r12,r12,r12
13200 + *[0-9a-f]*: eb d5 e8 25 andls r5,r5,r5
13201 + *[0-9a-f]*: e9 d4 e7 24 andpl r4,r4,r4
13202 + *[0-9a-f]*: fd de e1 2e andne lr,lr,lr
13203 + *[0-9a-f]*: e5 d1 e8 2a andls r10,r2,r1
13204 + *[0-9a-f]*: f1 db ed 2c andvc r12,r8,r11
13205 + *[0-9a-f]*: ef d0 e6 2a andmi r10,r7,r0
13206 +
13207 +[0-9a-f]* <orc>:
13208 + *[0-9a-f]*: ff df e0 3f oreq pc,pc,pc
13209 + *[0-9a-f]*: f9 dc ef 3c oral r12,r12,r12
13210 + *[0-9a-f]*: eb d5 e8 35 orls r5,r5,r5
13211 + *[0-9a-f]*: e9 d4 e7 34 orpl r4,r4,r4
13212 + *[0-9a-f]*: fd de e1 3e orne lr,lr,lr
13213 + *[0-9a-f]*: e5 d1 e8 3a orls r10,r2,r1
13214 + *[0-9a-f]*: f1 db ed 3c orvc r12,r8,r11
13215 + *[0-9a-f]*: ef d0 e6 3a ormi r10,r7,r0
13216 +
13217 +[0-9a-f]* <eorc>:
13218 + *[0-9a-f]*: ff df e0 4f eoreq pc,pc,pc
13219 + *[0-9a-f]*: f9 dc ef 4c eoral r12,r12,r12
13220 + *[0-9a-f]*: eb d5 e8 45 eorls r5,r5,r5
13221 + *[0-9a-f]*: e9 d4 e7 44 eorpl r4,r4,r4
13222 + *[0-9a-f]*: fd de e1 4e eorne lr,lr,lr
13223 + *[0-9a-f]*: e5 d1 e8 4a eorls r10,r2,r1
13224 + *[0-9a-f]*: f1 db ed 4c eorvc r12,r8,r11
13225 + *[0-9a-f]*: ef d0 e6 4a eormi r10,r7,r0
13226 +
13227 +[0-9a-f]* <ldcond>:
13228 + *[0-9a-f]*: ff ff 01 ff ld.weq pc,pc[0x7fc]
13229 + *[0-9a-f]*: f9 fc f3 ff ld.shal r12,r12[0x3fe]
13230 + *[0-9a-f]*: eb f5 84 00 ld.shls r5,r5[0x0]
13231 + *[0-9a-f]*: e9 f4 79 ff ld.ubpl r4,r4[0x1ff]
13232 + *[0-9a-f]*: fd fe 16 00 ld.sbne lr,lr[0x0]
13233 + *[0-9a-f]*: e5 fa 80 00 ld.wls r10,r2[0x0]
13234 + *[0-9a-f]*: f1 fc d3 ff ld.shvc r12,r8[0x3fe]
13235 + *[0-9a-f]*: ef fa 68 01 ld.ubmi r10,r7[0x1]
13236 +
13237 +[0-9a-f]* <stcond2>:
13238 + *[0-9a-f]*: ff ff 0b ff st.weq pc[0x7fc],pc
13239 + *[0-9a-f]*: f9 fc fd ff st.hal r12[0x3fe],r12
13240 + *[0-9a-f]*: eb f5 8c 00 st.hls r5[0x0],r5
13241 + *[0-9a-f]*: e9 f4 7f ff st.bpl r4[0x1ff],r4
13242 + *[0-9a-f]*: fd fe 1e 00 st.bne lr[0x0],lr
13243 + *[0-9a-f]*: e5 fa 8a 00 st.wls r2[0x0],r10
13244 + *[0-9a-f]*: f1 fc dd ff st.hvc r8[0x3fe],r12
13245 + *[0-9a-f]*: ef fa 6e 01 st.bmi r7[0x1],r10
13246 +
13247 +[0-9a-f]* <movh>:
13248 + *[0-9a-f]*: fc 1f ff ff movh pc,0xffff
13249 + *[0-9a-f]*: fc 10 00 00 movh r0,0x0
13250 + *[0-9a-f]*: fc 15 00 01 movh r5,0x1
13251 + *[0-9a-f]*: fc 1c 7f ff movh r12,0x7fff
13252 +
13253 Index: binutils-2.18/gas/testsuite/gas/avr32/allinsn.exp
13254 ===================================================================
13255 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
13256 +++ binutils-2.18/gas/testsuite/gas/avr32/allinsn.exp 2008-11-25 15:25:40.000000000 +0100
13257 @@ -0,0 +1,5 @@
13258 +# AVR32 assembler testsuite. -*- Tcl -*-
13259 +
13260 +if [istarget avr32-*-*] {
13261 + run_dump_test "allinsn"
13262 +}
13263 Index: binutils-2.18/gas/testsuite/gas/avr32/allinsn.s
13264 ===================================================================
13265 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
13266 +++ binutils-2.18/gas/testsuite/gas/avr32/allinsn.s 2008-11-25 15:25:40.000000000 +0100
13267 @@ -0,0 +1,3330 @@
13268 + .data
13269 +foodata: .word 42
13270 + .text
13271 +footext:
13272 + .text
13273 + .global ld_d5
13274 +ld_d5:
13275 + ld.d lr,pc[pc<<3]
13276 + ld.d r0,r0[r0<<0]
13277 + ld.d r6,r5[r5<<2]
13278 + ld.d r4,r4[r4<<1]
13279 + ld.d lr,lr[lr<<1]
13280 + ld.d r10,r3[sp<<2]
13281 + ld.d r8,r10[r6<<2]
13282 + ld.d r2,r7[r9<<0]
13283 + .text
13284 + .global ld_w5
13285 +ld_w5:
13286 + ld.w pc,pc[pc<<0]
13287 + ld.w r12,r12[r12<<3]
13288 + ld.w r5,r5[r5<<2]
13289 + ld.w r4,r4[r4<<1]
13290 + ld.w lr,lr[lr<<1]
13291 + ld.w r2,r9[r9<<0]
13292 + ld.w r11,r2[r6<<0]
13293 + ld.w r0,r2[sp<<3]
13294 + .text
13295 + .global ld_sh5
13296 +ld_sh5:
13297 + ld.sh pc,pc[pc<<0]
13298 + ld.sh r12,r12[r12<<3]
13299 + ld.sh r5,r5[r5<<2]
13300 + ld.sh r4,r4[r4<<1]
13301 + ld.sh lr,lr[lr<<1]
13302 + ld.sh r11,r0[pc<<2]
13303 + ld.sh r10,sp[r6<<2]
13304 + ld.sh r12,r2[r2<<0]
13305 + .text
13306 + .global ld_uh5
13307 +ld_uh5:
13308 + ld.uh pc,pc[pc<<0]
13309 + ld.uh r12,r12[r12<<3]
13310 + ld.uh r5,r5[r5<<2]
13311 + ld.uh r4,r4[r4<<1]
13312 + ld.uh lr,lr[lr<<1]
13313 + ld.uh r8,pc[lr<<3]
13314 + ld.uh r6,r1[pc<<1]
13315 + ld.uh r6,lr[sp<<1]
13316 + .text
13317 + .global ld_sb2
13318 +ld_sb2:
13319 + ld.sb pc,pc[pc<<0]
13320 + ld.sb r12,r12[r12<<3]
13321 + ld.sb r5,r5[r5<<2]
13322 + ld.sb r4,r4[r4<<1]
13323 + ld.sb lr,lr[lr<<1]
13324 + ld.sb r9,r1[pc<<3]
13325 + ld.sb r0,r3[r11<<1]
13326 + ld.sb r10,r5[r5<<1]
13327 + .text
13328 + .global ld_ub5
13329 +ld_ub5:
13330 + ld.ub pc,pc[pc<<0]
13331 + ld.ub r12,r12[r12<<3]
13332 + ld.ub r5,r5[r5<<2]
13333 + ld.ub r4,r4[r4<<1]
13334 + ld.ub lr,lr[lr<<1]
13335 + ld.ub r6,r12[r7<<3]
13336 + ld.ub r2,r6[r12<<0]
13337 + ld.ub r0,r7[r11<<1]
13338 + .text
13339 + .global st_d5
13340 +st_d5:
13341 + st.d pc[pc<<0],r14
13342 + st.d r12[r12<<3],r12
13343 + st.d r5[r5<<2],r6
13344 + st.d r4[r4<<1],r4
13345 + st.d lr[lr<<1],lr
13346 + st.d r1[r9<<1],r4
13347 + st.d r10[r2<<1],r4
13348 + st.d r12[r6<<0],lr
13349 + .text
13350 + .global st_w5
13351 +st_w5:
13352 + st.w pc[pc<<0],pc
13353 + st.w r12[r12<<3],r12
13354 + st.w r5[r5<<2],r5
13355 + st.w r4[r4<<1],r4
13356 + st.w lr[lr<<1],lr
13357 + st.w r1[r10<<0],r3
13358 + st.w r0[r10<<1],r9
13359 + st.w r4[r5<<3],pc
13360 + .text
13361 + .global st_h5
13362 +st_h5:
13363 + st.h pc[pc<<0],pc
13364 + st.h r12[r12<<3],r12
13365 + st.h r5[r5<<2],r5
13366 + st.h r4[r4<<1],r4
13367 + st.h lr[lr<<1],lr
13368 + st.h r2[r9<<0],r11
13369 + st.h r5[r1<<2],r12
13370 + st.h pc[r8<<2],r3
13371 + .text
13372 + .global st_b5
13373 +st_b5:
13374 + st.b pc[pc<<0],pc
13375 + st.b r12[r12<<3],r12
13376 + st.b r5[r5<<2],r5
13377 + st.b r4[r4<<1],r4
13378 + st.b lr[lr<<1],lr
13379 + st.b r1[r8<<1],r6
13380 + st.b lr[lr<<3],r1
13381 + st.b r5[r0<<2],pc
13382 + .text
13383 + .global divs
13384 +divs:
13385 + divs pc,pc,pc
13386 + divs r12,r12,r12
13387 + divs r5,r5,r5
13388 + divs r4,r4,r4
13389 + divs lr,lr,lr
13390 + divs r3,pc,pc
13391 + divs r9,r12,r2
13392 + divs r7,r4,r1
13393 + .text
13394 + .global add1
13395 +add1:
13396 + add pc,pc
13397 + add r12,r12
13398 + add r5,r5
13399 + add r4,r4
13400 + add lr,lr
13401 + add r12,r9
13402 + add r6,r3
13403 + add r10,r12
13404 + .text
13405 + .global sub1
13406 +sub1:
13407 + sub pc,pc
13408 + sub r12,r12
13409 + sub r5,r5
13410 + sub r4,r4
13411 + sub lr,lr
13412 + sub lr,r6
13413 + sub r0,sp
13414 + sub r6,r12
13415 + .text
13416 + .global rsub1
13417 +rsub1:
13418 + rsub pc,pc
13419 + rsub r12,r12
13420 + rsub r5,r5
13421 + rsub r4,r4
13422 + rsub lr,lr
13423 + rsub r11,sp
13424 + rsub r7,r4
13425 + rsub r9,r1
13426 + .text
13427 + .global cp1
13428 +cp1:
13429 + cp pc,pc
13430 + cp r12,r12
13431 + cp r5,r5
13432 + cp r4,r4
13433 + cp lr,lr
13434 + cp r6,r2
13435 + cp r0,r9
13436 + cp r3,sp
13437 + .text
13438 + .global or1
13439 +or1:
13440 + or pc,pc
13441 + or r12,r12
13442 + or r5,r5
13443 + or r4,r4
13444 + or lr,lr
13445 + or r4,r9
13446 + or r11,r4
13447 + or r4,r0
13448 + .text
13449 + .global eor1
13450 +eor1:
13451 + eor pc,pc
13452 + eor r12,r12
13453 + eor r5,r5
13454 + eor r4,r4
13455 + eor lr,lr
13456 + eor r12,r11
13457 + eor r0,r1
13458 + eor r5,pc
13459 + .text
13460 + .global and1
13461 +and1:
13462 + and pc,pc
13463 + and r12,r12
13464 + and r5,r5
13465 + and r4,r4
13466 + and lr,lr
13467 + and r8,r1
13468 + and r0,sp
13469 + and r10,r5
13470 + .text
13471 + .global tst
13472 +tst:
13473 + tst pc,pc
13474 + tst r12,r12
13475 + tst r5,r5
13476 + tst r4,r4
13477 + tst lr,lr
13478 + tst r0,r12
13479 + tst r10,r6
13480 + tst sp,r4
13481 + .text
13482 + .global andn
13483 +andn:
13484 + andn pc,pc
13485 + andn r12,r12
13486 + andn r5,r5
13487 + andn r4,r4
13488 + andn lr,lr
13489 + andn r9,r12
13490 + andn r11,sp
13491 + andn r12,r5
13492 + .text
13493 + .global mov3
13494 +mov3:
13495 + mov pc,pc
13496 + mov r12,r12
13497 + mov r5,r5
13498 + mov r4,r4
13499 + mov lr,lr
13500 + mov r5,r9
13501 + mov r11,r11
13502 + mov r2,lr
13503 + .text
13504 + .global st_w1
13505 +st_w1:
13506 + st.w pc++,pc
13507 + st.w r12++,r12
13508 + st.w r5++,r5
13509 + st.w r4++,r4
13510 + st.w lr++,lr
13511 + st.w r1++,r11
13512 + st.w sp++,r0
13513 + st.w sp++,r1
13514 + .text
13515 + .global st_h1
13516 +st_h1:
13517 + st.h pc++,pc
13518 + st.h r12++,r12
13519 + st.h r5++,r5
13520 + st.h r4++,r4
13521 + st.h lr++,lr
13522 + st.h r12++,sp
13523 + st.h r7++,lr
13524 + st.h r7++,r4
13525 + .text
13526 + .global st_b1
13527 +st_b1:
13528 + st.b pc++,pc
13529 + st.b r12++,r12
13530 + st.b r5++,r5
13531 + st.b r4++,r4
13532 + st.b lr++,lr
13533 + st.b r9++,sp
13534 + st.b r1++,sp
13535 + st.b r0++,r4
13536 + .text
13537 + .global st_w2
13538 +st_w2:
13539 + st.w --pc,pc
13540 + st.w --r12,r12
13541 + st.w --r5,r5
13542 + st.w --r4,r4
13543 + st.w --lr,lr
13544 + st.w --r1,r7
13545 + st.w --r3,r9
13546 + st.w --r5,r5
13547 + .text
13548 + .global st_h2
13549 +st_h2:
13550 + st.h --pc,pc
13551 + st.h --r12,r12
13552 + st.h --r5,r5
13553 + st.h --r4,r4
13554 + st.h --lr,lr
13555 + st.h --r5,r7
13556 + st.h --r8,r8
13557 + st.h --r7,r2
13558 + .text
13559 + .global st_b2
13560 +st_b2:
13561 + st.b --pc,pc
13562 + st.b --r12,r12
13563 + st.b --r5,r5
13564 + st.b --r4,r4
13565 + st.b --lr,lr
13566 + st.b --sp,sp
13567 + st.b --sp,r11
13568 + st.b --r4,r5
13569 + .text
13570 + .global ld_w1
13571 +ld_w1:
13572 + ld.w pc,pc++
13573 + ld.w r12,r12++
13574 + ld.w r5,r5++
13575 + ld.w r4,r4++
13576 + ld.w lr,lr++
13577 + ld.w r3,r7++
13578 + ld.w r3,lr++
13579 + ld.w r12,r5++
13580 + .text
13581 + .global ld_sh1
13582 +ld_sh1:
13583 + ld.sh pc,pc++
13584 + ld.sh r12,r12++
13585 + ld.sh r5,r5++
13586 + ld.sh r4,r4++
13587 + ld.sh lr,lr++
13588 + ld.sh r11,r2++
13589 + ld.sh r2,r8++
13590 + ld.sh r7,r6++
13591 + .text
13592 + .global ld_uh1
13593 +ld_uh1:
13594 + ld.uh pc,pc++
13595 + ld.uh r12,r12++
13596 + ld.uh r5,r5++
13597 + ld.uh r4,r4++
13598 + ld.uh lr,lr++
13599 + ld.uh r6,r7++
13600 + ld.uh r10,r11++
13601 + ld.uh lr,r4++
13602 + .text
13603 + .global ld_ub1
13604 +ld_ub1:
13605 + ld.ub pc,pc++
13606 + ld.ub r12,r12++
13607 + ld.ub r5,r5++
13608 + ld.ub r4,r4++
13609 + ld.ub lr,lr++
13610 + ld.ub r8,lr++
13611 + ld.ub r12,r12++
13612 + ld.ub r11,r10++
13613 + .text
13614 + .global ld_w2
13615 +ld_w2:
13616 + ld.w pc,--pc
13617 + ld.w r12,--r12
13618 + ld.w r5,--r5
13619 + ld.w r4,--r4
13620 + ld.w lr,--lr
13621 + ld.w r10,--lr
13622 + ld.w r12,--r9
13623 + ld.w r6,--r5
13624 + .text
13625 + .global ld_sh2
13626 +ld_sh2:
13627 + ld.sh pc,--pc
13628 + ld.sh r12,--r12
13629 + ld.sh r5,--r5
13630 + ld.sh r4,--r4
13631 + ld.sh lr,--lr
13632 + ld.sh pc,--r10
13633 + ld.sh r6,--r3
13634 + ld.sh r4,--r6
13635 + .text
13636 + .global ld_uh2
13637 +ld_uh2:
13638 + ld.uh pc,--pc
13639 + ld.uh r12,--r12
13640 + ld.uh r5,--r5
13641 + ld.uh r4,--r4
13642 + ld.uh lr,--lr
13643 + ld.uh r3,--r2
13644 + ld.uh r1,--r0
13645 + ld.uh r2,--r9
13646 + .text
13647 + .global ld_ub2
13648 +ld_ub2:
13649 + ld.ub pc,--pc
13650 + ld.ub r12,--r12
13651 + ld.ub r5,--r5
13652 + ld.ub r4,--r4
13653 + ld.ub lr,--lr
13654 + ld.ub r1,--r1
13655 + ld.ub r0,--r6
13656 + ld.ub r2,--r7
13657 + .text
13658 + .global ld_ub3
13659 +ld_ub3:
13660 + ld.ub pc,pc[0]
13661 + ld.ub r12,r12[7]
13662 + ld.ub r5,r5[4]
13663 + ld.ub r4,r4[3]
13664 + ld.ub lr,lr[1]
13665 + ld.ub r6,r9[6]
13666 + ld.ub r2,lr[4]
13667 + ld.ub r1,r8[0]
13668 + .text
13669 + .global sub3_sp
13670 +sub3_sp:
13671 + sub sp,0
13672 + sub sp,-4
13673 + sub sp,-512
13674 + sub sp,508
13675 + sub sp,4
13676 + sub sp,44
13677 + sub sp,8
13678 + sub sp,348
13679 + .text
13680 + .global sub3
13681 +sub3:
13682 + sub pc,0
13683 + sub r12,-1
13684 + sub r5,-128
13685 + sub r4,127
13686 + sub lr,1
13687 + sub r6,-41
13688 + sub r4,37
13689 + sub r12,56
13690 + .text
13691 + .global mov1
13692 +mov1:
13693 + mov pc,0
13694 + mov r12,-1
13695 + mov r5,-128
13696 + mov r4,127
13697 + mov lr,1
13698 + mov pc,14
13699 + mov r6,-100
13700 + mov lr,-122
13701 + .text
13702 + .global lddsp
13703 +lddsp:
13704 + lddsp pc,sp[0]
13705 + lddsp r12,sp[508]
13706 + lddsp r5,sp[256]
13707 + lddsp r4,sp[252]
13708 + lddsp lr,sp[4]
13709 + lddsp lr,sp[256]
13710 + lddsp r12,sp[20]
13711 + lddsp r9,sp[472]
13712 + .text
13713 + .global lddpc
13714 +lddpc:
13715 + lddpc pc,pc[0]
13716 + lddpc r0,pc[508]
13717 + lddpc r8,pc[256]
13718 + lddpc r7,pc[252]
13719 + lddpc lr,pc[4]
13720 + lddpc sp,pc[472]
13721 + lddpc r6,pc[120]
13722 + lddpc r11,pc[28]
13723 + .text
13724 + .global stdsp
13725 +stdsp:
13726 + stdsp sp[0],pc
13727 + stdsp sp[508],r12
13728 + stdsp sp[256],r5
13729 + stdsp sp[252],r4
13730 + stdsp sp[4],lr
13731 + stdsp sp[304],pc
13732 + stdsp sp[256],r0
13733 + stdsp sp[336],r5
13734 + .text
13735 + .global cp2
13736 +cp2:
13737 + cp pc,0
13738 + cp r12,-1
13739 + cp r5,-32
13740 + cp r4,31
13741 + cp lr,1
13742 + cp r8,3
13743 + cp lr,16
13744 + cp r7,-26
13745 + .text
13746 + .global acr
13747 +acr:
13748 + acr pc
13749 + acr r12
13750 + acr r5
13751 + acr r4
13752 + acr lr
13753 + acr r2
13754 + acr r12
13755 + acr pc
13756 + .text
13757 + .global scr
13758 +scr:
13759 + scr pc
13760 + scr r12
13761 + scr r5
13762 + scr r4
13763 + scr lr
13764 + scr pc
13765 + scr r6
13766 + scr r1
13767 + .text
13768 + .global cpc0
13769 +cpc0:
13770 + cpc pc
13771 + cpc r12
13772 + cpc r5
13773 + cpc r4
13774 + cpc lr
13775 + cpc pc
13776 + cpc r4
13777 + cpc r9
13778 + .text
13779 + .global neg
13780 +neg:
13781 + neg pc
13782 + neg r12
13783 + neg r5
13784 + neg r4
13785 + neg lr
13786 + neg r7
13787 + neg r1
13788 + neg r9
13789 + .text
13790 + .global abs
13791 +abs:
13792 + abs pc
13793 + abs r12
13794 + abs r5
13795 + abs r4
13796 + abs lr
13797 + abs r6
13798 + abs r6
13799 + abs r4
13800 + .text
13801 + .global castu_b
13802 +castu_b:
13803 + castu.b pc
13804 + castu.b r12
13805 + castu.b r5
13806 + castu.b r4
13807 + castu.b lr
13808 + castu.b r7
13809 + castu.b sp
13810 + castu.b r9
13811 + .text
13812 + .global casts_b
13813 +casts_b:
13814 + casts.b pc
13815 + casts.b r12
13816 + casts.b r5
13817 + casts.b r4
13818 + casts.b lr
13819 + casts.b r11
13820 + casts.b r1
13821 + casts.b r10
13822 + .text
13823 + .global castu_h
13824 +castu_h:
13825 + castu.h pc
13826 + castu.h r12
13827 + castu.h r5
13828 + castu.h r4
13829 + castu.h lr
13830 + castu.h r10
13831 + castu.h r11
13832 + castu.h r1
13833 + .text
13834 + .global casts_h
13835 +casts_h:
13836 + casts.h pc
13837 + casts.h r12
13838 + casts.h r5
13839 + casts.h r4
13840 + casts.h lr
13841 + casts.h r0
13842 + casts.h r5
13843 + casts.h r9
13844 + .text
13845 + .global brev
13846 +brev:
13847 + brev pc
13848 + brev r12
13849 + brev r5
13850 + brev r4
13851 + brev lr
13852 + brev r5
13853 + brev r10
13854 + brev r8
13855 + .text
13856 + .global swap_h
13857 +swap_h:
13858 + swap.h pc
13859 + swap.h r12
13860 + swap.h r5
13861 + swap.h r4
13862 + swap.h lr
13863 + swap.h r7
13864 + swap.h r0
13865 + swap.h r8
13866 + .text
13867 + .global swap_b
13868 +swap_b:
13869 + swap.b pc
13870 + swap.b r12
13871 + swap.b r5
13872 + swap.b r4
13873 + swap.b lr
13874 + swap.b r10
13875 + swap.b r12
13876 + swap.b r1
13877 + .text
13878 + .global swap_bh
13879 +swap_bh:
13880 + swap.bh pc
13881 + swap.bh r12
13882 + swap.bh r5
13883 + swap.bh r4
13884 + swap.bh lr
13885 + swap.bh r9
13886 + swap.bh r4
13887 + swap.bh r1
13888 + .text
13889 + .global One_s_compliment
13890 +One_s_compliment:
13891 + com pc
13892 + com r12
13893 + com r5
13894 + com r4
13895 + com lr
13896 + com r2
13897 + com r2
13898 + com r7
13899 + .text
13900 + .global tnbz
13901 +tnbz:
13902 + tnbz pc
13903 + tnbz r12
13904 + tnbz r5
13905 + tnbz r4
13906 + tnbz lr
13907 + tnbz r8
13908 + tnbz r12
13909 + tnbz pc
13910 + .text
13911 + .global rol
13912 +rol:
13913 + rol pc
13914 + rol r12
13915 + rol r5
13916 + rol r4
13917 + rol lr
13918 + rol r10
13919 + rol r9
13920 + rol r5
13921 + .text
13922 + .global ror
13923 +ror:
13924 + ror pc
13925 + ror r12
13926 + ror r5
13927 + ror r4
13928 + ror lr
13929 + ror r8
13930 + ror r4
13931 + ror r7
13932 + .text
13933 + .global icall
13934 +icall:
13935 + icall pc
13936 + icall r12
13937 + icall r5
13938 + icall r4
13939 + icall lr
13940 + icall r3
13941 + icall r1
13942 + icall r3
13943 + .text
13944 + .global mustr
13945 +mustr:
13946 + mustr pc
13947 + mustr r12
13948 + mustr r5
13949 + mustr r4
13950 + mustr lr
13951 + mustr r1
13952 + mustr r4
13953 + mustr r12
13954 + .text
13955 + .global musfr
13956 +musfr:
13957 + musfr pc
13958 + musfr r12
13959 + musfr r5
13960 + musfr r4
13961 + musfr lr
13962 + musfr r11
13963 + musfr r12
13964 + musfr r2
13965 + .text
13966 + .global ret_cond
13967 +ret_cond:
13968 + reteq pc
13969 + retal r12
13970 + retls r5
13971 + retpl r4
13972 + retne lr
13973 + retgt r0
13974 + retgt r12
13975 + retge r10
13976 + .text
13977 + .global sr_cond
13978 +sr_cond:
13979 + sreq pc
13980 + sral r12
13981 + srls r5
13982 + srpl r4
13983 + srne lr
13984 + srlt r0
13985 + sral sp
13986 + srge r9
13987 + .text
13988 + .global ld_w3
13989 +ld_w3:
13990 + ld.w pc,pc[0]
13991 + ld.w r12,r12[124]
13992 + ld.w r5,r5[64]
13993 + ld.w r4,r4[60]
13994 + ld.w lr,lr[4]
13995 + ld.w sp,r2[52]
13996 + ld.w r9,r1[8]
13997 + ld.w r5,sp[60]
13998 + .text
13999 + .global ld_sh3
14000 +ld_sh3:
14001 + ld.sh pc,pc[0]
14002 + ld.sh r12,r12[14]
14003 + ld.sh r5,r5[8]
14004 + ld.sh r4,r4[6]
14005 + ld.sh lr,lr[2]
14006 + ld.sh r4,r2[8]
14007 + ld.sh sp,lr[10]
14008 + ld.sh r2,r11[2]
14009 + .text
14010 + .global ld_uh3
14011 +ld_uh3:
14012 + ld.uh pc,pc[0]
14013 + ld.uh r12,r12[14]
14014 + ld.uh r5,r5[8]
14015 + ld.uh r4,r4[6]
14016 + ld.uh lr,lr[2]
14017 + ld.uh r10,r0[10]
14018 + ld.uh r8,r11[8]
14019 + ld.uh r10,r2[12]
14020 + .text
14021 + .global st_w3
14022 +st_w3:
14023 + st.w pc[0],pc
14024 + st.w r12[60],r12
14025 + st.w r5[32],r5
14026 + st.w r4[28],r4
14027 + st.w lr[4],lr
14028 + st.w r7[44],r11
14029 + st.w r2[24],r6
14030 + st.w r4[12],r9
14031 + .text
14032 + .global st_h3
14033 +st_h3:
14034 + st.h pc[0],pc
14035 + st.h r12[14],r12
14036 + st.h r5[8],r5
14037 + st.h r4[6],r4
14038 + st.h lr[2],lr
14039 + st.h lr[10],r12
14040 + st.h r6[4],r0
14041 + st.h r5[12],sp
14042 + .text
14043 + .global st_b3
14044 +st_b3:
14045 + st.b pc[0],pc
14046 + st.b r12[7],r12
14047 + st.b r5[4],r5
14048 + st.b r4[3],r4
14049 + st.b lr[1],lr
14050 + st.b r12[6],r9
14051 + st.b r2[3],lr
14052 + st.b r1[3],r11
14053 + .text
14054 + .global ldd
14055 +ldd:
14056 + ld.d r0,pc
14057 + ld.d r14,r12
14058 + ld.d r8,r5
14059 + ld.d r6,r4
14060 + ld.d r2,lr
14061 + ld.d r14,r7
14062 + ld.d r4,r4
14063 + ld.d r14,pc
14064 + .text
14065 + .global ldd_postinc
14066 +ldd_postinc:
14067 + ld.d r0,pc++
14068 + ld.d r14,r12++
14069 + ld.d r8,r5++
14070 + ld.d r6,r4++
14071 + ld.d r2,lr++
14072 + ld.d r14,r5++
14073 + ld.d r12,r11++
14074 + ld.d r2,r12++
14075 + .text
14076 + .global ldd_predec
14077 +ldd_predec:
14078 + ld.d r0,--pc
14079 + ld.d r14,--r12
14080 + ld.d r8,--r5
14081 + ld.d r6,--r4
14082 + ld.d r2,--lr
14083 + ld.d r8,--r0
14084 + ld.d r10,--pc
14085 + ld.d r2,--r4
14086 + .text
14087 + .global std
14088 +std:
14089 + st.d pc,r0
14090 + st.d r12,r14
14091 + st.d r5,r8
14092 + st.d r4,r6
14093 + st.d lr,r2
14094 + st.d r0,r12
14095 + st.d sp,r4
14096 + st.d r12,r12
14097 + .text
14098 + .global std_postinc
14099 +std_postinc:
14100 + st.d pc++,r0
14101 + st.d r12++,r14
14102 + st.d r5++,r8
14103 + st.d r4++,r6
14104 + st.d lr++,r2
14105 + st.d sp++,r6
14106 + st.d r10++,r6
14107 + st.d r7++,r2
14108 + .text
14109 + .global std_predec
14110 +std_predec:
14111 + st.d --pc,r0
14112 + st.d --r12,r14
14113 + st.d --r5,r8
14114 + st.d --r4,r6
14115 + st.d --lr,r2
14116 + st.d --r3,r6
14117 + st.d --lr,r2
14118 + st.d --r0,r4
14119 + .text
14120 + .global mul
14121 +mul:
14122 + mul pc,pc
14123 + mul r12,r12
14124 + mul r5,r5
14125 + mul r4,r4
14126 + mul lr,lr
14127 + mul r10,lr
14128 + mul r0,r8
14129 + mul r8,r5
14130 + .text
14131 + .global asr_imm5
14132 +asr_imm5:
14133 + asr pc,0
14134 + asr r12,31
14135 + asr r5,16
14136 + asr r4,15
14137 + asr lr,1
14138 + asr r6,23
14139 + asr r6,18
14140 + asr r5,8
14141 + .text
14142 + .global lsl_imm5
14143 +lsl_imm5:
14144 + lsl pc,0
14145 + lsl r12,31
14146 + lsl r5,16
14147 + lsl r4,15
14148 + lsl lr,1
14149 + lsl r12,13
14150 + lsl r6,16
14151 + lsl r1,25
14152 + .text
14153 + .global lsr_imm5
14154 +lsr_imm5:
14155 + lsr pc,0
14156 + lsr r12,31
14157 + lsr r5,16
14158 + lsr r4,15
14159 + lsr lr,1
14160 + lsr r0,1
14161 + lsr r8,10
14162 + lsr r7,26
14163 + .text
14164 + .global sbr
14165 +sbr:
14166 + sbr pc,0
14167 + sbr r12,31
14168 + sbr r5,16
14169 + sbr r4,15
14170 + sbr lr,1
14171 + sbr r8,31
14172 + sbr r6,22
14173 + sbr r1,23
14174 + .text
14175 + .global cbr
14176 +cbr:
14177 + cbr pc,0
14178 + cbr r12,31
14179 + cbr r5,16
14180 + cbr r4,15
14181 + cbr lr,1
14182 + cbr r12,10
14183 + cbr r7,22
14184 + cbr r8,9
14185 + .text
14186 + .global brc1
14187 +brc1:
14188 + breq 0
14189 + brpl -2
14190 + brge -256
14191 + brcs 254
14192 + brne 2
14193 + brcs 230
14194 + breq -18
14195 + breq 12
14196 + .text
14197 + .global rjmp
14198 +rjmp:
14199 + rjmp 0
14200 + rjmp -2
14201 + rjmp -1024
14202 + rjmp 1022
14203 + rjmp 2
14204 + rjmp -962
14205 + rjmp 14
14206 + rjmp -516
14207 + .text
14208 + .global rcall1
14209 +rcall1:
14210 + rcall 0
14211 + rcall -2
14212 + rcall -1024
14213 + rcall 1022
14214 + rcall 2
14215 + rcall 216
14216 + rcall -530
14217 + rcall -972
14218 + .text
14219 + .global acall
14220 +acall:
14221 + acall 0
14222 + acall 1020
14223 + acall 512
14224 + acall 508
14225 + acall 4
14226 + acall 356
14227 + acall 304
14228 + acall 172
14229 + .text
14230 + .global scall
14231 +scall:
14232 + scall
14233 + scall
14234 + scall
14235 + scall
14236 + scall
14237 + scall
14238 + scall
14239 + scall
14240 + .text
14241 + .global popm
14242 +popm:
14243 + /* popm with no argument fails currently */
14244 + popm pc
14245 + popm r0-r11,pc,r12=-1
14246 + popm lr
14247 + popm r0-r11,pc,r12=1
14248 + popm r0-r3
14249 + popm r4-r10,pc
14250 + popm r0-r3,r11,pc,r12=0
14251 + popm r0-r7,r10-r12,lr
14252 + .text
14253 + .global pushm
14254 +pushm:
14255 + pushm pc
14256 + pushm r0-r12,lr,pc
14257 + pushm pc
14258 + pushm r0-r12,lr
14259 + pushm r0-r3
14260 + pushm r8-r10,lr,pc
14261 + pushm r0-r3,r10
14262 + pushm r8-r9,r12
14263 + .text
14264 + .global popm_n
14265 +popm_n:
14266 + popm pc
14267 + popm r0-r11,pc,r12=-1
14268 + popm lr
14269 + popm r0-r11,pc,r12=1
14270 + popm r0-r3
14271 + popm r4-r10,pc
14272 + popm r0-r3,r11,pc,r12=0
14273 + popm r0-r7,r10-r12,lr
14274 + .text
14275 + .global pushm_n
14276 +pushm_n:
14277 + pushm pc
14278 + pushm r0-r12,lr,pc
14279 + pushm pc
14280 + pushm r0-r12,lr
14281 + pushm r0-r3
14282 + pushm r8-r10,lr,pc
14283 + pushm r0-r3,r10
14284 + pushm r8-r9,r12
14285 + .text
14286 + .global csrfcz
14287 +csrfcz:
14288 + csrfcz 0
14289 + csrfcz 31
14290 + csrfcz 16
14291 + csrfcz 15
14292 + csrfcz 1
14293 + csrfcz 5
14294 + csrfcz 13
14295 + csrfcz 23
14296 + .text
14297 + .global ssrf
14298 +ssrf:
14299 + ssrf 0
14300 + ssrf 31
14301 + ssrf 16
14302 + ssrf 15
14303 + ssrf 1
14304 + ssrf 29
14305 + ssrf 13
14306 + ssrf 13
14307 + .text
14308 + .global csrf
14309 +csrf:
14310 + csrf 0
14311 + csrf 31
14312 + csrf 16
14313 + csrf 15
14314 + csrf 1
14315 + csrf 10
14316 + csrf 15
14317 + csrf 11
14318 + .text
14319 + .global rete
14320 +rete:
14321 + rete
14322 + .text
14323 + .global rets
14324 +rets:
14325 + rets
14326 + .text
14327 + .global retd
14328 +retd:
14329 + retd
14330 + .text
14331 + .global retj
14332 +retj:
14333 + retj
14334 + .text
14335 + .global tlbr
14336 +tlbr:
14337 + tlbr
14338 + .text
14339 + .global tlbs
14340 +tlbs:
14341 + tlbs
14342 + .text
14343 + .global tlbw
14344 +tlbw:
14345 + tlbw
14346 + .text
14347 + .global breakpoint
14348 +breakpoint:
14349 + breakpoint
14350 + .text
14351 + .global incjosp
14352 +incjosp:
14353 + incjosp 1
14354 + incjosp 2
14355 + incjosp 3
14356 + incjosp 4
14357 + incjosp -4
14358 + incjosp -3
14359 + incjosp -2
14360 + incjosp -1
14361 + .text
14362 + .global nop
14363 +nop:
14364 + nop
14365 + .text
14366 + .global popjc
14367 +popjc:
14368 + popjc
14369 + .text
14370 + .global pushjc
14371 +pushjc:
14372 + pushjc
14373 + .text
14374 + .global add2
14375 +add2:
14376 + add pc,pc,pc<<0
14377 + add r12,r12,r12<<3
14378 + add r5,r5,r5<<2
14379 + add r4,r4,r4<<1
14380 + add lr,lr,lr<<1
14381 + add r0,r12,r0<<1
14382 + add r9,r12,r4<<0
14383 + add r12,r12,r7<<2
14384 + .text
14385 + .global sub2
14386 +sub2:
14387 + sub pc,pc,pc<<0
14388 + sub r12,r12,r12<<3
14389 + sub r5,r5,r5<<2
14390 + sub r4,r4,r4<<1
14391 + sub lr,lr,lr<<1
14392 + sub sp,r3,r4<<0
14393 + sub r3,r7,r3<<0
14394 + sub sp,r10,sp<<1
14395 + .text
14396 + .global divu
14397 +divu:
14398 + divu pc,pc,pc
14399 + divu r12,r12,r12
14400 + divu r5,r5,r5
14401 + divu r4,r4,r4
14402 + divu lr,lr,lr
14403 + divu sp,r4,pc
14404 + divu r5,r5,sp
14405 + divu r10,sp,r0
14406 + .text
14407 + .global addhh_w
14408 +addhh_w:
14409 + addhh.w pc,pc:b,pc:b
14410 + addhh.w r12,r12:t,r12:t
14411 + addhh.w r5,r5:t,r5:t
14412 + addhh.w r4,r4:b,r4:b
14413 + addhh.w lr,lr:t,lr:t
14414 + addhh.w r0,r0:b,r3:b
14415 + addhh.w lr,r12:t,r7:b
14416 + addhh.w r3,r10:t,r2:b
14417 + .text
14418 + .global subhh_w
14419 +subhh_w:
14420 + subhh.w pc,pc:b,pc:b
14421 + subhh.w r12,r12:t,r12:t
14422 + subhh.w r5,r5:t,r5:t
14423 + subhh.w r4,r4:b,r4:b
14424 + subhh.w lr,lr:t,lr:t
14425 + subhh.w r10,r1:t,r7:b
14426 + subhh.w pc,r10:t,lr:t
14427 + subhh.w r3,r0:t,r12:b
14428 + .text
14429 + .global adc
14430 +adc:
14431 + adc pc,pc,pc
14432 + adc r12,r12,r12
14433 + adc r5,r5,r5
14434 + adc r4,r4,r4
14435 + adc lr,lr,lr
14436 + adc r4,r0,r7
14437 + adc sp,r4,r3
14438 + adc r2,r12,r0
14439 + .text
14440 + .global sbc
14441 +sbc:
14442 + sbc pc,pc,pc
14443 + sbc r12,r12,r12
14444 + sbc r5,r5,r5
14445 + sbc r4,r4,r4
14446 + sbc lr,lr,lr
14447 + sbc r6,r7,r9
14448 + sbc r0,r8,r5
14449 + sbc r1,r0,r4
14450 + .text
14451 + .global mul_2
14452 +mul_2:
14453 + mul pc,pc,pc
14454 + mul r12,r12,r12
14455 + mul r5,r5,r5
14456 + mul r4,r4,r4
14457 + mul lr,lr,lr
14458 + mul pc,r0,r0
14459 + mul r8,pc,lr
14460 + mul r4,r12,pc
14461 + .text
14462 + .global mac
14463 +mac:
14464 + mac pc,pc,pc
14465 + mac r12,r12,r12
14466 + mac r5,r5,r5
14467 + mac r4,r4,r4
14468 + mac lr,lr,lr
14469 + mac r10,r4,r0
14470 + mac r7,lr,r0
14471 + mac r2,r9,r12
14472 + .text
14473 + .global mulsd
14474 +mulsd:
14475 + muls.d pc,pc,pc
14476 + muls.d r12,r12,r12
14477 + muls.d r5,r5,r5
14478 + muls.d r4,r4,r4
14479 + muls.d lr,lr,lr
14480 + muls.d r2,r8,lr
14481 + muls.d r4,r0,r11
14482 + muls.d r5,lr,r6
14483 + .text
14484 + .global macsd
14485 +macsd:
14486 + macs.d r0,pc,pc
14487 + macs.d r14,r12,r12
14488 + macs.d r8,r5,r5
14489 + macs.d r6,r4,r4
14490 + macs.d r2,lr,lr
14491 + macs.d r8,r1,r9
14492 + macs.d r14,r8,r8
14493 + macs.d r4,r3,r12
14494 + .text
14495 + .global mulud
14496 +mulud:
14497 + mulu.d r0,pc,pc
14498 + mulu.d r14,r12,r12
14499 + mulu.d r8,r5,r5
14500 + mulu.d r6,r4,r4
14501 + mulu.d r2,lr,lr
14502 + mulu.d r6,r5,r0
14503 + mulu.d r4,r6,r1
14504 + mulu.d r8,r8,r2
14505 + .text
14506 + .global macud
14507 +macud:
14508 + macu.d r0,pc,pc
14509 + macu.d r14,r12,r12
14510 + macu.d r8,r5,r5
14511 + macu.d r6,r4,r4
14512 + macu.d r2,lr,lr
14513 + macu.d r6,sp,r11
14514 + macu.d r2,r4,r8
14515 + macu.d r6,r10,r9
14516 + .text
14517 + .global asr_1
14518 +asr_1:
14519 + asr pc,pc,pc
14520 + asr r12,r12,r12
14521 + asr r5,r5,r5
14522 + asr r4,r4,r4
14523 + asr lr,lr,lr
14524 + asr pc,r6,pc
14525 + asr r0,r6,r12
14526 + asr r4,sp,r0
14527 + .text
14528 + .global lsl_1
14529 +lsl_1:
14530 + lsl pc,pc,pc
14531 + lsl r12,r12,r12
14532 + lsl r5,r5,r5
14533 + lsl r4,r4,r4
14534 + lsl lr,lr,lr
14535 + lsl lr,r5,lr
14536 + lsl r5,pc,r3
14537 + lsl r1,pc,r9
14538 + .text
14539 + .global lsr_1
14540 +lsr_1:
14541 + lsr pc,pc,pc
14542 + lsr r12,r12,r12
14543 + lsr r5,r5,r5
14544 + lsr r4,r4,r4
14545 + lsr lr,lr,lr
14546 + lsr r2,r4,r1
14547 + lsr r5,r1,r6
14548 + lsr sp,r6,r7
14549 + .text
14550 + .global xchg
14551 +xchg:
14552 + xchg pc,pc,pc
14553 + xchg r12,r12,r12
14554 + xchg r5,r5,r5
14555 + xchg r4,r4,r4
14556 + xchg lr,lr,lr
14557 + xchg lr,r4,sp
14558 + xchg r1,r5,r12
14559 + xchg lr,r12,r0
14560 + .text
14561 + .global max
14562 +max:
14563 + max pc,pc,pc
14564 + max r12,r12,r12
14565 + max r5,r5,r5
14566 + max r4,r4,r4
14567 + max lr,lr,lr
14568 + max lr,r2,sp
14569 + max r4,r10,r9
14570 + max lr,r9,lr
14571 + .text
14572 + .global min
14573 +min:
14574 + min pc,pc,pc
14575 + min r12,r12,r12
14576 + min r5,r5,r5
14577 + min r4,r4,r4
14578 + min lr,lr,lr
14579 + min r9,r7,r8
14580 + min sp,r5,r5
14581 + min r4,r1,r4
14582 + .text
14583 + .global addabs
14584 +addabs:
14585 + addabs pc,pc,pc
14586 + addabs r12,r12,r12
14587 + addabs r5,r5,r5
14588 + addabs r4,r4,r4
14589 + addabs lr,lr,lr
14590 + addabs r7,r10,r0
14591 + addabs r9,r9,r7
14592 + addabs r2,r8,r12
14593 + .text
14594 + .global mulnhh_w
14595 +mulnhh_w:
14596 + mulnhh.w pc,pc:b,pc:b
14597 + mulnhh.w r12,r12:t,r12:t
14598 + mulnhh.w r5,r5:t,r5:t
14599 + mulnhh.w r4,r4:b,r4:b
14600 + mulnhh.w lr,lr:t,lr:t
14601 + mulnhh.w r11,sp:t,r9:b
14602 + mulnhh.w sp,r4:b,lr:t
14603 + mulnhh.w r12,r2:t,r11:b
14604 + .text
14605 + .global mulnwh_d
14606 +mulnwh_d:
14607 + mulnwh.d r0,pc,pc:b
14608 + mulnwh.d r14,r12,r12:t
14609 + mulnwh.d r8,r5,r5:t
14610 + mulnwh.d r6,r4,r4:b
14611 + mulnwh.d r2,lr,lr:t
14612 + mulnwh.d r14,r3,r2:t
14613 + mulnwh.d r4,r5,r9:b
14614 + mulnwh.d r12,r4,r4:t
14615 + .text
14616 + .global machh_w
14617 +machh_w:
14618 + machh.w pc,pc:b,pc:b
14619 + machh.w r12,r12:t,r12:t
14620 + machh.w r5,r5:t,r5:t
14621 + machh.w r4,r4:b,r4:b
14622 + machh.w lr,lr:t,lr:t
14623 + machh.w lr,r5:b,r1:t
14624 + machh.w r9,r6:b,r7:b
14625 + machh.w r5,lr:t,r12:b
14626 + .text
14627 + .global machh_d
14628 +machh_d:
14629 + machh.d r0,pc:b,pc:b
14630 + machh.d r14,r12:t,r12:t
14631 + machh.d r8,r5:t,r5:t
14632 + machh.d r6,r4:b,r4:b
14633 + machh.d r2,lr:t,lr:t
14634 + machh.d r10,r0:b,r8:b
14635 + machh.d r14,r4:b,r5:t
14636 + machh.d r8,r0:b,r4:t
14637 + .text
14638 + .global macsathh_w
14639 +macsathh_w:
14640 + macsathh.w pc,pc:b,pc:b
14641 + macsathh.w r12,r12:t,r12:t
14642 + macsathh.w r5,r5:t,r5:t
14643 + macsathh.w r4,r4:b,r4:b
14644 + macsathh.w lr,lr:t,lr:t
14645 + macsathh.w r7,r7:t,pc:t
14646 + macsathh.w r4,r2:t,r4:b
14647 + macsathh.w r4,r8:t,r3:t
14648 + .text
14649 + .global mulhh_w
14650 +mulhh_w:
14651 + mulhh.w pc,pc:b,pc:b
14652 + mulhh.w r12,r12:t,r12:t
14653 + mulhh.w r5,r5:t,r5:t
14654 + mulhh.w r4,r4:b,r4:b
14655 + mulhh.w lr,lr:t,lr:t
14656 + mulhh.w r7,r4:t,r9:b
14657 + mulhh.w pc,r3:t,r7:t
14658 + mulhh.w pc,r4:b,r9:t
14659 + .text
14660 + .global mulsathh_h
14661 +mulsathh_h:
14662 + mulsathh.h pc,pc:b,pc:b
14663 + mulsathh.h r12,r12:t,r12:t
14664 + mulsathh.h r5,r5:t,r5:t
14665 + mulsathh.h r4,r4:b,r4:b
14666 + mulsathh.h lr,lr:t,lr:t
14667 + mulsathh.h r3,r1:b,sp:b
14668 + mulsathh.h r11,lr:t,r11:b
14669 + mulsathh.h r8,r8:b,r11:t
14670 + .text
14671 + .global mulsathh_w
14672 +mulsathh_w:
14673 + mulsathh.w pc,pc:b,pc:b
14674 + mulsathh.w r12,r12:t,r12:t
14675 + mulsathh.w r5,r5:t,r5:t
14676 + mulsathh.w r4,r4:b,r4:b
14677 + mulsathh.w lr,lr:t,lr:t
14678 + mulsathh.w lr,r11:t,r6:b
14679 + mulsathh.w r6,r6:b,r7:t
14680 + mulsathh.w r10,r2:b,r3:b
14681 + .text
14682 + .global mulsatrndhh_h
14683 +mulsatrndhh_h:
14684 + mulsatrndhh.h pc,pc:b,pc:b
14685 + mulsatrndhh.h r12,r12:t,r12:t
14686 + mulsatrndhh.h r5,r5:t,r5:t
14687 + mulsatrndhh.h r4,r4:b,r4:b
14688 + mulsatrndhh.h lr,lr:t,lr:t
14689 + mulsatrndhh.h r11,r6:b,r9:b
14690 + mulsatrndhh.h r11,r3:b,r8:t
14691 + mulsatrndhh.h r5,sp:t,r7:t
14692 + .text
14693 + .global mulsatrndwh_w
14694 +mulsatrndwh_w:
14695 + mulsatrndwh.w pc,pc,pc:b
14696 + mulsatrndwh.w r12,r12,r12:t
14697 + mulsatrndwh.w r5,r5,r5:t
14698 + mulsatrndwh.w r4,r4,r4:b
14699 + mulsatrndwh.w lr,lr,lr:t
14700 + mulsatrndwh.w r5,r12,r0:b
14701 + mulsatrndwh.w r7,r10,pc:b
14702 + mulsatrndwh.w r10,r8,r5:t
14703 + .text
14704 + .global macwh_d
14705 +macwh_d:
14706 + macwh.d r0,pc,pc:b
14707 + macwh.d r14,r12,r12:t
14708 + macwh.d r8,r5,r5:t
14709 + macwh.d r6,r4,r4:b
14710 + macwh.d r2,lr,lr:t
14711 + macwh.d r4,r10,r12:t
14712 + macwh.d r4,r7,sp:b
14713 + macwh.d r14,r9,r11:b
14714 + .text
14715 + .global mulwh_d
14716 +mulwh_d:
14717 + mulwh.d r0,pc,pc:b
14718 + mulwh.d r14,r12,r12:t
14719 + mulwh.d r8,r5,r5:t
14720 + mulwh.d r6,r4,r4:b
14721 + mulwh.d r2,lr,lr:t
14722 + mulwh.d r12,r5,r1:b
14723 + mulwh.d r0,r1,r3:t
14724 + mulwh.d r0,r9,r2:b
14725 + .text
14726 + .global mulsatwh_w
14727 +mulsatwh_w:
14728 + mulsatwh.w pc,pc,pc:b
14729 + mulsatwh.w r12,r12,r12:t
14730 + mulsatwh.w r5,r5,r5:t
14731 + mulsatwh.w r4,r4,r4:b
14732 + mulsatwh.w lr,lr,lr:t
14733 + mulsatwh.w r11,pc,r10:t
14734 + mulsatwh.w sp,r12,r9:t
14735 + mulsatwh.w r0,r3,r2:t
14736 + .text
14737 + .global ldw7
14738 +ldw7:
14739 + ld.w pc,pc[pc:b<<2]
14740 + ld.w r12,r12[r12:t<<2]
14741 + ld.w r5,r5[r5:u<<2]
14742 + ld.w r4,r4[r4:l<<2]
14743 + ld.w lr,lr[lr:l<<2]
14744 + ld.w r9,r10[r6:l<<2]
14745 + ld.w r2,r10[r10:b<<2]
14746 + ld.w r11,r5[pc:b<<2]
14747 + .text
14748 + .global satadd_w
14749 +satadd_w:
14750 + satadd.w pc,pc,pc
14751 + satadd.w r12,r12,r12
14752 + satadd.w r5,r5,r5
14753 + satadd.w r4,r4,r4
14754 + satadd.w lr,lr,lr
14755 + satadd.w r4,r8,r11
14756 + satadd.w r3,r12,r6
14757 + satadd.w r3,lr,r9
14758 + .text
14759 + .global satsub_w1
14760 +satsub_w1:
14761 + satsub.w pc,pc,pc
14762 + satsub.w r12,r12,r12
14763 + satsub.w r5,r5,r5
14764 + satsub.w r4,r4,r4
14765 + satsub.w lr,lr,lr
14766 + satsub.w r8,sp,r0
14767 + satsub.w r9,r8,r4
14768 + satsub.w pc,lr,r2
14769 + .text
14770 + .global satadd_h
14771 +satadd_h:
14772 + satadd.h pc,pc,pc
14773 + satadd.h r12,r12,r12
14774 + satadd.h r5,r5,r5
14775 + satadd.h r4,r4,r4
14776 + satadd.h lr,lr,lr
14777 + satadd.h r7,r3,r9
14778 + satadd.h r1,r0,r2
14779 + satadd.h r1,r4,lr
14780 + .text
14781 + .global satsub_h
14782 +satsub_h:
14783 + satsub.h pc,pc,pc
14784 + satsub.h r12,r12,r12
14785 + satsub.h r5,r5,r5
14786 + satsub.h r4,r4,r4
14787 + satsub.h lr,lr,lr
14788 + satsub.h lr,lr,r3
14789 + satsub.h r11,r6,r5
14790 + satsub.h r3,sp,r0
14791 + .text
14792 + .global mul3
14793 +mul3:
14794 + mul pc,pc,0
14795 + mul r12,r12,-1
14796 + mul r5,r5,-128
14797 + mul r4,r4,127
14798 + mul lr,lr,1
14799 + mul r12,r2,-7
14800 + mul r1,pc,95
14801 + mul r4,r6,19
14802 + .text
14803 + .global rsub2
14804 +rsub2:
14805 + rsub pc,pc,0
14806 + rsub r12,r12,-1
14807 + rsub r5,r5,-128
14808 + rsub r4,r4,127
14809 + rsub lr,lr,1
14810 + rsub r9,lr,96
14811 + rsub r11,r1,56
14812 + rsub r0,r7,-87
14813 + .text
14814 + .global clz
14815 +clz:
14816 + clz pc,pc
14817 + clz r12,r12
14818 + clz r5,r5
14819 + clz r4,r4
14820 + clz lr,lr
14821 + clz r2,r3
14822 + clz r5,r11
14823 + clz pc,r3
14824 + .text
14825 + .global cpc1
14826 +cpc1:
14827 + cpc pc,pc
14828 + cpc r12,r12
14829 + cpc r5,r5
14830 + cpc r4,r4
14831 + cpc lr,lr
14832 + cpc pc,r4
14833 + cpc r5,r9
14834 + cpc r6,r7
14835 + .text
14836 + .global asr3
14837 +asr3:
14838 + asr pc,pc,0
14839 + asr r12,r12,31
14840 + asr r5,r5,16
14841 + asr r4,r4,15
14842 + asr lr,lr,1
14843 + asr r4,r11,19
14844 + asr sp,pc,26
14845 + asr r11,sp,8
14846 + .text
14847 + .global lsl3
14848 +lsl3:
14849 + lsl pc,pc,0
14850 + lsl r12,r12,31
14851 + lsl r5,r5,16
14852 + lsl r4,r4,15
14853 + lsl lr,lr,1
14854 + lsl r8,r10,17
14855 + lsl r2,lr,3
14856 + lsl lr,r11,14
14857 + .text
14858 + .global lsr3
14859 +lsr3:
14860 + lsr pc,pc,0
14861 + lsr r12,r12,31
14862 + lsr r5,r5,16
14863 + lsr r4,r4,15
14864 + lsr lr,lr,1
14865 + lsr r4,r3,31
14866 + lsr pc,r9,14
14867 + lsr r3,r0,6
14868 +/* .text
14869 + .global extract_b
14870 +extract_b:
14871 + extract.b pc,pc:b
14872 + extract.b r12,r12:t
14873 + extract.b r5,r5:u
14874 + extract.b r4,r4:l
14875 + extract.b lr,lr:l
14876 + extract.b r2,r5:l
14877 + extract.b r12,r3:l
14878 + extract.b sp,r3:l
14879 + .text
14880 + .global insert_b
14881 +insert_b:
14882 + insert.b pc:b,pc
14883 + insert.b r12:t,r12
14884 + insert.b r5:u,r5
14885 + insert.b r4:l,r4
14886 + insert.b lr:l,lr
14887 + insert.b r12:u,r3
14888 + insert.b r10:l,lr
14889 + insert.b r11:l,r12
14890 + .text
14891 + .global extract_h
14892 +extract_h:
14893 + extract.h pc,pc:b
14894 + extract.h r12,r12:t
14895 + extract.h r5,r5:t
14896 + extract.h r4,r4:b
14897 + extract.h lr,lr:t
14898 + extract.h r11,lr:b
14899 + extract.h r10,r0:b
14900 + extract.h r11,r12:b
14901 + .text
14902 + .global insert_h
14903 +insert_h:
14904 + insert.h pc:b,pc
14905 + insert.h r12:t,r12
14906 + insert.h r5:t,r5
14907 + insert.h r4:b,r4
14908 + insert.h lr:t,lr
14909 + insert.h r12:t,r11
14910 + insert.h r7:b,r6
14911 + insert.h r1:t,r11 */
14912 + .text
14913 + .global movc1
14914 +movc1:
14915 + moveq pc,pc
14916 + moval r12,r12
14917 + movls r5,r5
14918 + movpl r4,r4
14919 + movne lr,lr
14920 + movne pc,r11
14921 + movmi r10,r2
14922 + movls r8,r12
14923 + .text
14924 + .global padd_h
14925 +padd_h:
14926 + padd.h pc,pc,pc
14927 + padd.h r12,r12,r12
14928 + padd.h r5,r5,r5
14929 + padd.h r4,r4,r4
14930 + padd.h lr,lr,lr
14931 + padd.h r8,r2,r7
14932 + padd.h r0,r0,r3
14933 + padd.h sp,r11,r6
14934 + .text
14935 + .global psub_h
14936 +psub_h:
14937 + psub.h pc,pc,pc
14938 + psub.h r12,r12,r12
14939 + psub.h r5,r5,r5
14940 + psub.h r4,r4,r4
14941 + psub.h lr,lr,lr
14942 + psub.h lr,r6,r8
14943 + psub.h r0,r1,sp
14944 + psub.h pc,pc,sp
14945 + .text
14946 + .global paddx_h
14947 +paddx_h:
14948 + paddx.h pc,pc,pc
14949 + paddx.h r12,r12,r12
14950 + paddx.h r5,r5,r5
14951 + paddx.h r4,r4,r4
14952 + paddx.h lr,lr,lr
14953 + paddx.h pc,pc,r1
14954 + paddx.h r10,r4,r5
14955 + paddx.h r5,pc,r2
14956 + .text
14957 + .global psubx_h
14958 +psubx_h:
14959 + psubx.h pc,pc,pc
14960 + psubx.h r12,r12,r12
14961 + psubx.h r5,r5,r5
14962 + psubx.h r4,r4,r4
14963 + psubx.h lr,lr,lr
14964 + psubx.h r5,r12,r5
14965 + psubx.h r3,r8,r3
14966 + psubx.h r5,r2,r3
14967 + .text
14968 + .global padds_sh
14969 +padds_sh:
14970 + padds.sh pc,pc,pc
14971 + padds.sh r12,r12,r12
14972 + padds.sh r5,r5,r5
14973 + padds.sh r4,r4,r4
14974 + padds.sh lr,lr,lr
14975 + padds.sh r9,lr,r2
14976 + padds.sh r6,r8,r1
14977 + padds.sh r6,r4,r10
14978 + .text
14979 + .global psubs_sh
14980 +psubs_sh:
14981 + psubs.sh pc,pc,pc
14982 + psubs.sh r12,r12,r12
14983 + psubs.sh r5,r5,r5
14984 + psubs.sh r4,r4,r4
14985 + psubs.sh lr,lr,lr
14986 + psubs.sh r6,lr,r11
14987 + psubs.sh r2,r12,r4
14988 + psubs.sh r0,r9,r0
14989 + .text
14990 + .global paddxs_sh
14991 +paddxs_sh:
14992 + paddxs.sh pc,pc,pc
14993 + paddxs.sh r12,r12,r12
14994 + paddxs.sh r5,r5,r5
14995 + paddxs.sh r4,r4,r4
14996 + paddxs.sh lr,lr,lr
14997 + paddxs.sh r0,r3,r9
14998 + paddxs.sh pc,r10,r11
14999 + paddxs.sh pc,r10,pc
15000 + .text
15001 + .global psubxs_sh
15002 +psubxs_sh:
15003 + psubxs.sh pc,pc,pc
15004 + psubxs.sh r12,r12,r12
15005 + psubxs.sh r5,r5,r5
15006 + psubxs.sh r4,r4,r4
15007 + psubxs.sh lr,lr,lr
15008 + psubxs.sh r7,r4,r4
15009 + psubxs.sh r7,r8,r3
15010 + psubxs.sh pc,r6,r5
15011 + .text
15012 + .global padds_uh
15013 +padds_uh:
15014 + padds.uh pc,pc,pc
15015 + padds.uh r12,r12,r12
15016 + padds.uh r5,r5,r5
15017 + padds.uh r4,r4,r4
15018 + padds.uh lr,lr,lr
15019 + padds.uh r12,r11,r7
15020 + padds.uh r7,r8,lr
15021 + padds.uh r6,r9,r7
15022 + .text
15023 + .global psubs_uh
15024 +psubs_uh:
15025 + psubs.uh pc,pc,pc
15026 + psubs.uh r12,r12,r12
15027 + psubs.uh r5,r5,r5
15028 + psubs.uh r4,r4,r4
15029 + psubs.uh lr,lr,lr
15030 + psubs.uh lr,r10,r6
15031 + psubs.uh sp,r2,pc
15032 + psubs.uh r2,r9,r2
15033 + .text
15034 + .global paddxs_uh
15035 +paddxs_uh:
15036 + paddxs.uh pc,pc,pc
15037 + paddxs.uh r12,r12,r12
15038 + paddxs.uh r5,r5,r5
15039 + paddxs.uh r4,r4,r4
15040 + paddxs.uh lr,lr,lr
15041 + paddxs.uh r7,r9,r5
15042 + paddxs.uh r9,r1,r4
15043 + paddxs.uh r5,r2,r3
15044 + .text
15045 + .global psubxs_uh
15046 +psubxs_uh:
15047 + psubxs.uh pc,pc,pc
15048 + psubxs.uh r12,r12,r12
15049 + psubxs.uh r5,r5,r5
15050 + psubxs.uh r4,r4,r4
15051 + psubxs.uh lr,lr,lr
15052 + psubxs.uh sp,r5,sp
15053 + psubxs.uh sp,r6,r6
15054 + psubxs.uh r3,r11,r8
15055 + .text
15056 + .global paddh_sh
15057 +paddh_sh:
15058 + paddh.sh pc,pc,pc
15059 + paddh.sh r12,r12,r12
15060 + paddh.sh r5,r5,r5
15061 + paddh.sh r4,r4,r4
15062 + paddh.sh lr,lr,lr
15063 + paddh.sh r12,sp,r3
15064 + paddh.sh pc,r5,r3
15065 + paddh.sh r8,r8,sp
15066 + .text
15067 + .global psubh_sh
15068 +psubh_sh:
15069 + psubh.sh pc,pc,pc
15070 + psubh.sh r12,r12,r12
15071 + psubh.sh r5,r5,r5
15072 + psubh.sh r4,r4,r4
15073 + psubh.sh lr,lr,lr
15074 + psubh.sh r1,r5,r8
15075 + psubh.sh r7,r3,r6
15076 + psubh.sh r4,r3,r3
15077 + .text
15078 + .global paddxh_sh
15079 +paddxh_sh:
15080 + paddxh.sh pc,pc,pc
15081 + paddxh.sh r12,r12,r12
15082 + paddxh.sh r5,r5,r5
15083 + paddxh.sh r4,r4,r4
15084 + paddxh.sh lr,lr,lr
15085 + paddxh.sh r6,r0,r4
15086 + paddxh.sh r9,r8,r9
15087 + paddxh.sh r3,r0,sp
15088 + .text
15089 + .global psubxh_sh
15090 +psubxh_sh:
15091 + psubxh.sh pc,pc,pc
15092 + psubxh.sh r12,r12,r12
15093 + psubxh.sh r5,r5,r5
15094 + psubxh.sh r4,r4,r4
15095 + psubxh.sh lr,lr,lr
15096 + psubxh.sh r4,pc,r12
15097 + psubxh.sh r8,r4,r6
15098 + psubxh.sh r12,r9,r4
15099 + .text
15100 + .global paddsub_h
15101 +paddsub_h:
15102 + paddsub.h pc,pc:b,pc:b
15103 + paddsub.h r12,r12:t,r12:t
15104 + paddsub.h r5,r5:t,r5:t
15105 + paddsub.h r4,r4:b,r4:b
15106 + paddsub.h lr,lr:t,lr:t
15107 + paddsub.h r5,r2:t,lr:b
15108 + paddsub.h r7,r1:b,r8:b
15109 + paddsub.h r6,r10:t,r5:t
15110 + .text
15111 + .global psubadd_h
15112 +psubadd_h:
15113 + psubadd.h pc,pc:b,pc:b
15114 + psubadd.h r12,r12:t,r12:t
15115 + psubadd.h r5,r5:t,r5:t
15116 + psubadd.h r4,r4:b,r4:b
15117 + psubadd.h lr,lr:t,lr:t
15118 + psubadd.h r9,r11:t,r8:t
15119 + psubadd.h r10,r7:t,lr:t
15120 + psubadd.h r6,pc:t,pc:b
15121 + .text
15122 + .global paddsubs_sh
15123 +paddsubs_sh:
15124 + paddsubs.sh pc,pc:b,pc:b
15125 + paddsubs.sh r12,r12:t,r12:t
15126 + paddsubs.sh r5,r5:t,r5:t
15127 + paddsubs.sh r4,r4:b,r4:b
15128 + paddsubs.sh lr,lr:t,lr:t
15129 + paddsubs.sh r0,lr:t,r0:b
15130 + paddsubs.sh r9,r2:t,r4:t
15131 + paddsubs.sh r12,r9:t,sp:t
15132 + .text
15133 + .global psubadds_sh
15134 +psubadds_sh:
15135 + psubadds.sh pc,pc:b,pc:b
15136 + psubadds.sh r12,r12:t,r12:t
15137 + psubadds.sh r5,r5:t,r5:t
15138 + psubadds.sh r4,r4:b,r4:b
15139 + psubadds.sh lr,lr:t,lr:t
15140 + psubadds.sh pc,lr:b,r1:t
15141 + psubadds.sh r11,r3:b,r12:b
15142 + psubadds.sh r10,r2:t,r8:t
15143 + .text
15144 + .global paddsubs_uh
15145 +paddsubs_uh:
15146 + paddsubs.uh pc,pc:b,pc:b
15147 + paddsubs.uh r12,r12:t,r12:t
15148 + paddsubs.uh r5,r5:t,r5:t
15149 + paddsubs.uh r4,r4:b,r4:b
15150 + paddsubs.uh lr,lr:t,lr:t
15151 + paddsubs.uh r9,r2:b,r3:b
15152 + paddsubs.uh sp,sp:b,r7:t
15153 + paddsubs.uh lr,r0:b,r10:t
15154 + .text
15155 + .global psubadds_uh
15156 +psubadds_uh:
15157 + psubadds.uh pc,pc:b,pc:b
15158 + psubadds.uh r12,r12:t,r12:t
15159 + psubadds.uh r5,r5:t,r5:t
15160 + psubadds.uh r4,r4:b,r4:b
15161 + psubadds.uh lr,lr:t,lr:t
15162 + psubadds.uh r12,r9:t,pc:t
15163 + psubadds.uh r8,r6:b,r8:b
15164 + psubadds.uh r8,r8:b,r4:b
15165 + .text
15166 + .global paddsubh_sh
15167 +paddsubh_sh:
15168 + paddsubh.sh pc,pc:b,pc:b
15169 + paddsubh.sh r12,r12:t,r12:t
15170 + paddsubh.sh r5,r5:t,r5:t
15171 + paddsubh.sh r4,r4:b,r4:b
15172 + paddsubh.sh lr,lr:t,lr:t
15173 + paddsubh.sh r8,r9:t,r9:b
15174 + paddsubh.sh r0,sp:t,r1:t
15175 + paddsubh.sh r3,r1:b,r0:t
15176 + .text
15177 + .global psubaddh_sh
15178 +psubaddh_sh:
15179 + psubaddh.sh pc,pc:b,pc:b
15180 + psubaddh.sh r12,r12:t,r12:t
15181 + psubaddh.sh r5,r5:t,r5:t
15182 + psubaddh.sh r4,r4:b,r4:b
15183 + psubaddh.sh lr,lr:t,lr:t
15184 + psubaddh.sh r7,r3:t,r10:b
15185 + psubaddh.sh r7,r2:t,r1:t
15186 + psubaddh.sh r11,r3:b,r6:b
15187 + .text
15188 + .global padd_b
15189 +padd_b:
15190 + padd.b pc,pc,pc
15191 + padd.b r12,r12,r12
15192 + padd.b r5,r5,r5
15193 + padd.b r4,r4,r4
15194 + padd.b lr,lr,lr
15195 + padd.b r2,r6,pc
15196 + padd.b r8,r9,r12
15197 + padd.b r5,r12,r3
15198 + .text
15199 + .global psub_b
15200 +psub_b:
15201 + psub.b pc,pc,pc
15202 + psub.b r12,r12,r12
15203 + psub.b r5,r5,r5
15204 + psub.b r4,r4,r4
15205 + psub.b lr,lr,lr
15206 + psub.b r0,r12,pc
15207 + psub.b r7,sp,r10
15208 + psub.b r5,sp,r12
15209 + .text
15210 + .global padds_sb
15211 +padds_sb:
15212 + padds.sb pc,pc,pc
15213 + padds.sb r12,r12,r12
15214 + padds.sb r5,r5,r5
15215 + padds.sb r4,r4,r4
15216 + padds.sb lr,lr,lr
15217 + padds.sb sp,r11,r4
15218 + padds.sb r11,r10,r11
15219 + padds.sb r5,r12,r6
15220 + .text
15221 + .global psubs_sb
15222 +psubs_sb:
15223 + psubs.sb pc,pc,pc
15224 + psubs.sb r12,r12,r12
15225 + psubs.sb r5,r5,r5
15226 + psubs.sb r4,r4,r4
15227 + psubs.sb lr,lr,lr
15228 + psubs.sb r7,r6,r8
15229 + psubs.sb r12,r10,r9
15230 + psubs.sb pc,r11,r0
15231 + .text
15232 + .global padds_ub
15233 +padds_ub:
15234 + padds.ub pc,pc,pc
15235 + padds.ub r12,r12,r12
15236 + padds.ub r5,r5,r5
15237 + padds.ub r4,r4,r4
15238 + padds.ub lr,lr,lr
15239 + padds.ub r3,r2,r11
15240 + padds.ub r10,r8,r1
15241 + padds.ub r11,r8,r10
15242 + .text
15243 + .global psubs_ub
15244 +psubs_ub:
15245 + psubs.ub pc,pc,pc
15246 + psubs.ub r12,r12,r12
15247 + psubs.ub r5,r5,r5
15248 + psubs.ub r4,r4,r4
15249 + psubs.ub lr,lr,lr
15250 + psubs.ub r0,r2,r7
15251 + psubs.ub lr,r5,r3
15252 + psubs.ub r6,r7,r9
15253 + .text
15254 + .global paddh_ub
15255 +paddh_ub:
15256 + paddh.ub pc,pc,pc
15257 + paddh.ub r12,r12,r12
15258 + paddh.ub r5,r5,r5
15259 + paddh.ub r4,r4,r4
15260 + paddh.ub lr,lr,lr
15261 + paddh.ub lr,r1,r0
15262 + paddh.ub r2,r7,r7
15263 + paddh.ub r2,r1,r2
15264 + .text
15265 + .global psubh_ub
15266 +psubh_ub:
15267 + psubh.ub pc,pc,pc
15268 + psubh.ub r12,r12,r12
15269 + psubh.ub r5,r5,r5
15270 + psubh.ub r4,r4,r4
15271 + psubh.ub lr,lr,lr
15272 + psubh.ub r0,r1,r6
15273 + psubh.ub r4,lr,r10
15274 + psubh.ub r9,r8,r1
15275 + .text
15276 + .global pmax_ub
15277 +pmax_ub:
15278 + pmax.ub pc,pc,pc
15279 + pmax.ub r12,r12,r12
15280 + pmax.ub r5,r5,r5
15281 + pmax.ub r4,r4,r4
15282 + pmax.ub lr,lr,lr
15283 + pmax.ub pc,r2,r11
15284 + pmax.ub r12,r1,r1
15285 + pmax.ub r5,r2,r0
15286 + .text
15287 + .global pmax_sh
15288 +pmax_sh:
15289 + pmax.sh pc,pc,pc
15290 + pmax.sh r12,r12,r12
15291 + pmax.sh r5,r5,r5
15292 + pmax.sh r4,r4,r4
15293 + pmax.sh lr,lr,lr
15294 + pmax.sh lr,r6,r12
15295 + pmax.sh r2,pc,r5
15296 + pmax.sh pc,r2,r7
15297 + .text
15298 + .global pmin_ub
15299 +pmin_ub:
15300 + pmin.ub pc,pc,pc
15301 + pmin.ub r12,r12,r12
15302 + pmin.ub r5,r5,r5
15303 + pmin.ub r4,r4,r4
15304 + pmin.ub lr,lr,lr
15305 + pmin.ub r8,r1,r5
15306 + pmin.ub r1,r8,r3
15307 + pmin.ub r0,r2,r7
15308 + .text
15309 + .global pmin_sh
15310 +pmin_sh:
15311 + pmin.sh pc,pc,pc
15312 + pmin.sh r12,r12,r12
15313 + pmin.sh r5,r5,r5
15314 + pmin.sh r4,r4,r4
15315 + pmin.sh lr,lr,lr
15316 + pmin.sh r8,r4,r10
15317 + pmin.sh lr,r10,r12
15318 + pmin.sh r2,r6,r2
15319 + .text
15320 + .global pavg_ub
15321 +pavg_ub:
15322 + pavg.ub pc,pc,pc
15323 + pavg.ub r12,r12,r12
15324 + pavg.ub r5,r5,r5
15325 + pavg.ub r4,r4,r4
15326 + pavg.ub lr,lr,lr
15327 + pavg.ub r0,r1,r6
15328 + pavg.ub r8,r3,r6
15329 + pavg.ub pc,r12,r10
15330 + .text
15331 + .global pavg_sh
15332 +pavg_sh:
15333 + pavg.sh pc,pc,pc
15334 + pavg.sh r12,r12,r12
15335 + pavg.sh r5,r5,r5
15336 + pavg.sh r4,r4,r4
15337 + pavg.sh lr,lr,lr
15338 + pavg.sh r9,pc,sp
15339 + pavg.sh pc,sp,r3
15340 + pavg.sh r6,r1,r9
15341 + .text
15342 + .global pabs_sb
15343 +pabs_sb:
15344 + pabs.sb pc,pc
15345 + pabs.sb r12,r12
15346 + pabs.sb r5,r5
15347 + pabs.sb r4,r4
15348 + pabs.sb lr,lr
15349 + pabs.sb r11,r6
15350 + pabs.sb lr,r9
15351 + pabs.sb sp,r7
15352 + .text
15353 + .global pabs_sh
15354 +pabs_sh:
15355 + pabs.sh pc,pc
15356 + pabs.sh r12,r12
15357 + pabs.sh r5,r5
15358 + pabs.sh r4,r4
15359 + pabs.sh lr,lr
15360 + pabs.sh pc,r3
15361 + pabs.sh r5,r7
15362 + pabs.sh r4,r0
15363 + .text
15364 + .global psad
15365 +psad:
15366 + psad pc,pc,pc
15367 + psad r12,r12,r12
15368 + psad r5,r5,r5
15369 + psad r4,r4,r4
15370 + psad lr,lr,lr
15371 + psad r9,r11,r11
15372 + psad lr,r4,sp
15373 + psad lr,r4,r5
15374 + .text
15375 + .global pasr_b
15376 +pasr_b:
15377 + pasr.b pc,pc,0
15378 + pasr.b r12,r12,7
15379 + pasr.b r5,r5,4
15380 + pasr.b r4,r4,3
15381 + pasr.b lr,lr,1
15382 + pasr.b pc,r7,1
15383 + pasr.b sp,lr,6
15384 + pasr.b sp,r3,2
15385 + .text
15386 + .global plsl_b
15387 +plsl_b:
15388 + plsl.b pc,pc,0
15389 + plsl.b r12,r12,7
15390 + plsl.b r5,r5,4
15391 + plsl.b r4,r4,3
15392 + plsl.b lr,lr,1
15393 + plsl.b r2,r11,4
15394 + plsl.b r8,r5,7
15395 + plsl.b pc,r0,2
15396 + .text
15397 + .global plsr_b
15398 +plsr_b:
15399 + plsr.b pc,pc,0
15400 + plsr.b r12,r12,7
15401 + plsr.b r5,r5,4
15402 + plsr.b r4,r4,3
15403 + plsr.b lr,lr,1
15404 + plsr.b r12,r1,2
15405 + plsr.b r6,pc,7
15406 + plsr.b r12,r11,2
15407 + .text
15408 + .global pasr_h
15409 +pasr_h:
15410 + pasr.h pc,pc,0
15411 + pasr.h r12,r12,15
15412 + pasr.h r5,r5,8
15413 + pasr.h r4,r4,7
15414 + pasr.h lr,lr,1
15415 + pasr.h r0,r11,10
15416 + pasr.h r4,r6,8
15417 + pasr.h r6,r2,4
15418 + .text
15419 + .global plsl_h
15420 +plsl_h:
15421 + plsl.h pc,pc,0
15422 + plsl.h r12,r12,15
15423 + plsl.h r5,r5,8
15424 + plsl.h r4,r4,7
15425 + plsl.h lr,lr,1
15426 + plsl.h r5,r10,9
15427 + plsl.h sp,lr,8
15428 + plsl.h r0,lr,7
15429 + .text
15430 + .global plsr_h
15431 +plsr_h:
15432 + plsr.h pc,pc,0
15433 + plsr.h r12,r12,15
15434 + plsr.h r5,r5,8
15435 + plsr.h r4,r4,7
15436 + plsr.h lr,lr,1
15437 + plsr.h r11,r0,15
15438 + plsr.h lr,r3,3
15439 + plsr.h r8,lr,10
15440 + .text
15441 + .global packw_sh
15442 +packw_sh:
15443 + packw.sh pc,pc,pc
15444 + packw.sh r12,r12,r12
15445 + packw.sh r5,r5,r5
15446 + packw.sh r4,r4,r4
15447 + packw.sh lr,lr,lr
15448 + packw.sh sp,r11,r10
15449 + packw.sh r8,r2,r12
15450 + packw.sh r8,r1,r5
15451 + .text
15452 + .global punpckub_h
15453 +punpckub_h:
15454 + punpckub.h pc,pc:b
15455 + punpckub.h r12,r12:t
15456 + punpckub.h r5,r5:t
15457 + punpckub.h r4,r4:b
15458 + punpckub.h lr,lr:t
15459 + punpckub.h r6,r1:t
15460 + punpckub.h lr,r5:b
15461 + punpckub.h lr,r2:t
15462 + .text
15463 + .global punpcksb_h
15464 +punpcksb_h:
15465 + punpcksb.h pc,pc:b
15466 + punpcksb.h r12,r12:t
15467 + punpcksb.h r5,r5:t
15468 + punpcksb.h r4,r4:b
15469 + punpcksb.h lr,lr:t
15470 + punpcksb.h r4,r7:t
15471 + punpcksb.h r6,lr:b
15472 + punpcksb.h r12,r12:t
15473 + .text
15474 + .global packsh_ub
15475 +packsh_ub:
15476 + packsh.ub pc,pc,pc
15477 + packsh.ub r12,r12,r12
15478 + packsh.ub r5,r5,r5
15479 + packsh.ub r4,r4,r4
15480 + packsh.ub lr,lr,lr
15481 + packsh.ub r3,r6,r3
15482 + packsh.ub r8,r0,r3
15483 + packsh.ub r9,r3,lr
15484 + .text
15485 + .global packsh_sb
15486 +packsh_sb:
15487 + packsh.sb pc,pc,pc
15488 + packsh.sb r12,r12,r12
15489 + packsh.sb r5,r5,r5
15490 + packsh.sb r4,r4,r4
15491 + packsh.sb lr,lr,lr
15492 + packsh.sb r6,r8,r1
15493 + packsh.sb lr,r9,r8
15494 + packsh.sb sp,r6,r6
15495 + .text
15496 + .global andl
15497 +andl:
15498 + andl pc,0
15499 + andl r12,65535
15500 + andl r5,32768
15501 + andl r4,32767
15502 + andl lr,1
15503 + andl pc,23128
15504 + andl r8,47262
15505 + andl r7,13719
15506 + .text
15507 + .global andl_coh
15508 +andl_coh:
15509 + andl pc,0,COH
15510 + andl r12,65535,COH
15511 + andl r5,32768,COH
15512 + andl r4,32767,COH
15513 + andl lr,1,COH
15514 + andl r6,22753,COH
15515 + andl r0,40653,COH
15516 + andl r4,48580,COH
15517 + .text
15518 + .global andh
15519 +andh:
15520 + andh pc,0
15521 + andh r12,65535
15522 + andh r5,32768
15523 + andh r4,32767
15524 + andh lr,1
15525 + andh r12,52312
15526 + andh r3,8675
15527 + andh r2,42987
15528 + .text
15529 + .global andh_coh
15530 +andh_coh:
15531 + andh pc,0,COH
15532 + andh r12,65535,COH
15533 + andh r5,32768,COH
15534 + andh r4,32767,COH
15535 + andh lr,1,COH
15536 + andh r11,34317,COH
15537 + andh r8,52982,COH
15538 + andh r10,23683,COH
15539 + .text
15540 + .global orl
15541 +orl:
15542 + orl pc,0
15543 + orl r12,65535
15544 + orl r5,32768
15545 + orl r4,32767
15546 + orl lr,1
15547 + orl sp,16766
15548 + orl r0,21181
15549 + orl pc,44103
15550 + .text
15551 + .global orh
15552 +orh:
15553 + orh pc,0
15554 + orh r12,65535
15555 + orh r5,32768
15556 + orh r4,32767
15557 + orh lr,1
15558 + orh r8,28285
15559 + orh r12,30492
15560 + orh r1,59930
15561 + .text
15562 + .global eorl
15563 +eorl:
15564 + eorl pc,0
15565 + eorl r12,65535
15566 + eorl r5,32768
15567 + eorl r4,32767
15568 + eorl lr,1
15569 + eorl r4,51129
15570 + eorl r6,64477
15571 + eorl r1,20913
15572 + .text
15573 + .global eorh
15574 +eorh:
15575 + eorh pc,0
15576 + eorh r12,65535
15577 + eorh r5,32768
15578 + eorh r4,32767
15579 + eorh lr,1
15580 + eorh r0,11732
15581 + eorh r10,38069
15582 + eorh r9,57130
15583 + .text
15584 + .global mcall
15585 +mcall:
15586 + mcall pc[0]
15587 + mcall r12[-4]
15588 + mcall r5[-131072]
15589 + mcall r4[131068]
15590 + mcall lr[4]
15591 + mcall sp[61180]
15592 + mcall r4[-35000]
15593 + mcall r0[9924]
15594 + .text
15595 + .global pref
15596 +pref:
15597 + pref pc[0]
15598 + pref r12[-1]
15599 + pref r5[-32768]
15600 + pref r4[32767]
15601 + pref lr[1]
15602 + pref r7[7748]
15603 + pref r7[-7699]
15604 + pref r2[-25892]
15605 + .text
15606 + .global cache
15607 +cache:
15608 + cache pc[0],0
15609 + cache r12[-1],31
15610 + cache r5[-1024],16
15611 + cache r4[1023],15
15612 + cache lr[1],1
15613 + cache r3[-964],17
15614 + cache r4[-375],22
15615 + cache r3[-888],17
15616 + .text
15617 + .global sub4
15618 +sub4:
15619 + sub pc,0
15620 + sub r12,-1
15621 + sub r5,-1048576
15622 + sub r4,1048575
15623 + sub lr,1
15624 + sub r2,-619156
15625 + sub lr,461517
15626 + sub r8,-185051
15627 + .text
15628 + .global cp3
15629 +cp3:
15630 + cp pc,0
15631 + cp r12,-1
15632 + cp r5,-1048576
15633 + cp r4,1048575
15634 + cp lr,1
15635 + cp r1,124078
15636 + cp r0,-378909
15637 + cp r4,-243180
15638 + .text
15639 + .global mov2
15640 +mov2:
15641 + mov pc,0
15642 + mov r12,-1
15643 + mov r5,-1048576
15644 + mov r4,1048575
15645 + mov lr,1
15646 + mov r5,-317021
15647 + mov sp,-749164
15648 + mov r5,940179
15649 + .text
15650 + .global brc2
15651 +brc2:
15652 + breq 0
15653 + bral -2
15654 + brls -2097152
15655 + brpl 2097150
15656 + brne 2
15657 + brhi -1796966
15658 + brqs 1321368
15659 + brls -577434
15660 + .text
15661 + .global rcall2
15662 +rcall2:
15663 + rcall 0
15664 + rcall -2
15665 + rcall -2097152
15666 + rcall 2097150
15667 + rcall 2
15668 + rcall 496820
15669 + rcall 1085092
15670 + rcall -1058
15671 + .text
15672 + .global sub5
15673 +sub5:
15674 + sub pc,pc,0
15675 + sub r12,r12,-1
15676 + sub r5,r5,-32768
15677 + sub r4,r4,32767
15678 + sub lr,lr,1
15679 + sub pc,pc,-12744
15680 + sub r7,r7,-27365
15681 + sub r2,r9,-17358
15682 + .text
15683 + .global satsub_w2
15684 +satsub_w2:
15685 + satsub.w pc,pc,0
15686 + satsub.w r12,r12,-1
15687 + satsub.w r5,r5,-32768
15688 + satsub.w r4,r4,32767
15689 + satsub.w lr,lr,1
15690 + satsub.w r2,lr,-2007
15691 + satsub.w r7,r12,-784
15692 + satsub.w r4,r7,23180
15693 + .text
15694 + .global ld_d4
15695 +ld_d4:
15696 + ld.d r0,pc[0]
15697 + ld.d r14,r12[-1]
15698 + ld.d r8,r5[-32768]
15699 + ld.d r6,r4[32767]
15700 + ld.d r2,lr[1]
15701 + ld.d r14,r11[14784]
15702 + ld.d r6,r9[-18905]
15703 + ld.d r2,r3[-6355]
15704 + .text
15705 + .global ld_w4
15706 +ld_w4:
15707 + ld.w pc,pc[0]
15708 + ld.w r12,r12[-1]
15709 + ld.w r5,r5[-32768]
15710 + ld.w r4,r4[32767]
15711 + ld.w lr,lr[1]
15712 + ld.w r0,r12[-22133]
15713 + ld.w sp,pc[-20521]
15714 + /* ld.w r3,r5[29035] */
15715 + nop
15716 + .text
15717 + .global ld_sh4
15718 +ld_sh4:
15719 + ld.sh pc,pc[0]
15720 + ld.sh r12,r12[-1]
15721 + ld.sh r5,r5[-32768]
15722 + ld.sh r4,r4[32767]
15723 + ld.sh lr,lr[1]
15724 + ld.sh r6,r10[30930]
15725 + ld.sh r6,r10[21973]
15726 + /* ld.sh r11,r10[-2058] */
15727 + nop
15728 + .text
15729 + .global ld_uh4
15730 +ld_uh4:
15731 + ld.uh pc,pc[0]
15732 + ld.uh r12,r12[-1]
15733 + ld.uh r5,r5[-32768]
15734 + ld.uh r4,r4[32767]
15735 + ld.uh lr,lr[1]
15736 + ld.uh r1,r9[-13354]
15737 + ld.uh lr,r11[21337]
15738 + /* ld.uh r2,lr[-25370] */
15739 + nop
15740 + .text
15741 + .global ld_sb1
15742 +ld_sb1:
15743 + ld.sb pc,pc[0]
15744 + ld.sb r12,r12[-1]
15745 + ld.sb r5,r5[-32768]
15746 + ld.sb r4,r4[32767]
15747 + ld.sb lr,lr[1]
15748 + ld.sb r7,sp[-28663]
15749 + ld.sb r2,r1[-5879]
15750 + ld.sb r12,r3[18734]
15751 + .text
15752 + .global ld_ub4
15753 +ld_ub4:
15754 + ld.ub pc,pc[0]
15755 + ld.ub r12,r12[-1]
15756 + ld.ub r5,r5[-32768]
15757 + ld.ub r4,r4[32767]
15758 + ld.ub lr,lr[1]
15759 + ld.ub pc,r4[8277]
15760 + ld.ub r5,r12[19172]
15761 + ld.ub r10,lr[26347]
15762 + .text
15763 + .global st_d4
15764 +st_d4:
15765 + st.d pc[0],r0
15766 + st.d r12[-1],r14
15767 + st.d r5[-32768],r8
15768 + st.d r4[32767],r6
15769 + st.d lr[1],r2
15770 + st.d r5[13200],r10
15771 + st.d r5[9352],r10
15772 + st.d r5[32373],r4
15773 + .text
15774 + .global st_w4
15775 +st_w4:
15776 + st.w pc[0],pc
15777 + st.w r12[-1],r12
15778 + st.w r5[-32768],r5
15779 + st.w r4[32767],r4
15780 + st.w lr[1],lr
15781 + st.w sp[6136],r7
15782 + st.w r6[27087],r12
15783 + /* st.w r3[20143],r7 */
15784 + nop
15785 + .text
15786 + .global st_h4
15787 +st_h4:
15788 + st.h pc[0],pc
15789 + st.h r12[-1],r12
15790 + st.h r5[-32768],r5
15791 + st.h r4[32767],r4
15792 + st.h lr[1],lr
15793 + st.h r4[-9962],r7
15794 + st.h r9[-16250],r3
15795 + /* st.h r8[-28810],r7 */
15796 + nop
15797 + .text
15798 + .global st_b4
15799 +st_b4:
15800 + st.b pc[0],pc
15801 + st.b r12[-1],r12
15802 + st.b r5[-32768],r5
15803 + st.b r4[32767],r4
15804 + st.b lr[1],lr
15805 + st.b r12[30102],r6
15806 + st.b r5[28977],r1
15807 + st.b r0[5470],r1
15808 + .text
15809 + .global mfsr
15810 +mfsr:
15811 + mfsr pc,0
15812 + mfsr r12,1020
15813 + mfsr r5,512
15814 + mfsr r4,508
15815 + mfsr lr,4
15816 + mfsr r2,696
15817 + mfsr r4,260
15818 + mfsr r10,1016
15819 + .text
15820 + .global mtsr
15821 +mtsr:
15822 + mtsr 0,pc
15823 + mtsr 1020,r12
15824 + mtsr 512,r5
15825 + mtsr 508,r4
15826 + mtsr 4,lr
15827 + mtsr 224,r10
15828 + mtsr 836,r12
15829 + mtsr 304,r9
15830 + .text
15831 + .global mfdr
15832 +mfdr:
15833 + mfdr pc,0
15834 + mfdr r12,1020
15835 + mfdr r5,512
15836 + mfdr r4,508
15837 + mfdr lr,4
15838 + mfdr r6,932
15839 + mfdr r5,36
15840 + mfdr r9,300
15841 + .text
15842 + .global mtdr
15843 +mtdr:
15844 + mtdr 0,pc
15845 + mtdr 1020,r12
15846 + mtdr 512,r5
15847 + mtdr 508,r4
15848 + mtdr 4,lr
15849 + mtdr 180,r8
15850 + mtdr 720,r10
15851 + mtdr 408,lr
15852 + .text
15853 + .global sleep
15854 +sleep:
15855 + sleep 0
15856 + sleep 255
15857 + sleep 128
15858 + sleep 127
15859 + sleep 1
15860 + sleep 254
15861 + sleep 15
15862 + sleep 43
15863 + .text
15864 + .global sync
15865 +sync:
15866 + sync 0
15867 + sync 255
15868 + sync 128
15869 + sync 127
15870 + sync 1
15871 + sync 166
15872 + sync 230
15873 + sync 180
15874 + .text
15875 + .global bld
15876 +bld:
15877 + bld pc,0
15878 + bld r12,31
15879 + bld r5,16
15880 + bld r4,15
15881 + bld lr,1
15882 + bld r9,15
15883 + bld r0,4
15884 + bld lr,26
15885 + .text
15886 + .global bst
15887 +bst:
15888 + bst pc,0
15889 + bst r12,31
15890 + bst r5,16
15891 + bst r4,15
15892 + bst lr,1
15893 + bst r10,28
15894 + bst r0,3
15895 + bst sp,2
15896 + .text
15897 + .global sats
15898 +sats:
15899 + sats pc>>0,0
15900 + sats r12>>31,31
15901 + sats r5>>16,16
15902 + sats r4>>15,15
15903 + sats lr>>1,1
15904 + sats r10>>3,19
15905 + sats r10>>2,26
15906 + sats r1>>20,1
15907 + .text
15908 + .global satu
15909 +satu:
15910 + satu pc>>0,0
15911 + satu r12>>31,31
15912 + satu r5>>16,16
15913 + satu r4>>15,15
15914 + satu lr>>1,1
15915 + satu pc>>5,7
15916 + satu r7>>5,5
15917 + satu r2>>26,19
15918 + .text
15919 + .global satrnds
15920 +satrnds:
15921 + satrnds pc>>0,0
15922 + satrnds r12>>31,31
15923 + satrnds r5>>16,16
15924 + satrnds r4>>15,15
15925 + satrnds lr>>1,1
15926 + satrnds r0>>21,19
15927 + satrnds sp>>0,2
15928 + satrnds r7>>6,29
15929 + .text
15930 + .global satrndu
15931 +satrndu:
15932 + satrndu pc>>0,0
15933 + satrndu r12>>31,31
15934 + satrndu r5>>16,16
15935 + satrndu r4>>15,15
15936 + satrndu lr>>1,1
15937 + satrndu r12>>0,26
15938 + satrndu r4>>21,3
15939 + satrndu r10>>3,16
15940 + .text
15941 + .global subfc
15942 +subfc:
15943 + subfeq pc,0
15944 + subfal r12,-1
15945 + subfls r5,-128
15946 + subfpl r4,127
15947 + subfne lr,1
15948 + subfls r10,8
15949 + subfvc r11,99
15950 + subfvs r2,73
15951 + .text
15952 + .global subc
15953 +subc:
15954 + subeq pc,0
15955 + subal r12,-1
15956 + subls r5,-128
15957 + subpl r4,127
15958 + subne lr,1
15959 + subls r12,118
15960 + subvc lr,-12
15961 + submi r4,-13
15962 + .text
15963 + .global movc2
15964 +movc2:
15965 + moveq pc,0
15966 + moval r12,-1
15967 + movls r5,-128
15968 + movpl r4,127
15969 + movne lr,1
15970 + movlt r3,-122
15971 + movvc r8,2
15972 + movne r7,-111
15973 + .text
15974 + .global cp_b
15975 +cp_b:
15976 + cp.b pc,r0
15977 + cp.b r0,pc
15978 + cp.b r7,r8
15979 + cp.b r8,r7
15980 + .text
15981 + .global cp_h
15982 +cp_h:
15983 + cp.h pc,r0
15984 + cp.h r0,pc
15985 + cp.h r7,r8
15986 + cp.h r8,r7
15987 + .text
15988 + .global ldm
15989 +ldm:
15990 + ldm pc,r1-r6
15991 + ldm r12,r0-r15
15992 + ldm r5,r15
15993 + ldm r4,r0-r14
15994 + ldm lr,r0
15995 + ldm r9,r1,r5,r14
15996 + ldm r11,r2-r3,r5-r8,r15
15997 + ldm r6,r0,r3,r9,r13,r15
15998 + .text
15999 + .global ldm_pu
16000 +ldm_pu:
16001 + ldm pc++,r6-r9
16002 + ldm r12++,r0-r15
16003 + ldm r5++,r15
16004 + ldm r4++,r0-r14
16005 + ldm lr++,r0
16006 + ldm r12++,r3-r5,r8,r10,r12,r14-r15
16007 + ldm r10++,r2,r4-r6,r14-r15
16008 + ldm r6++,r1,r3-r4,r9-r14
16009 + .text
16010 + .global ldmts
16011 +ldmts:
16012 + ldmts pc,r7-r8
16013 + ldmts r12,r0-r15
16014 + ldmts r5,r15
16015 + ldmts r4,r0-r14
16016 + ldmts lr,r0
16017 + ldmts r0,r1-r2,r11-r12
16018 + ldmts lr,r0-r2,r4,r7-r8,r13-r14
16019 + ldmts r12,r0-r1,r3-r5,r9,r14-r15
16020 + .text
16021 + .global ldmts_pu
16022 +ldmts_pu:
16023 + ldmts pc++,r9
16024 + ldmts r12++,r0-r15
16025 + ldmts r5++,r15
16026 + ldmts r4++,r0-r14
16027 + ldmts lr++,r0
16028 + ldmts sp++,r0,r2-r5,r7,r9,r11
16029 + ldmts r5++,r1-r3,r7,r10-r11
16030 + ldmts r8++,r2-r4,r7-r8,r13,r15
16031 + .text
16032 + .global stm
16033 +stm:
16034 + stm pc,r7
16035 + stm r12,r0-r15
16036 + stm r5,r15
16037 + stm r4,r0-r14
16038 + stm lr,r0
16039 + stm sp,r2-r3,r5,r8,r11,r14
16040 + stm r4,r0-r4,r6,r10-r11,r14
16041 + stm r9,r1,r5,r9,r12-r15
16042 + .text
16043 + .global stm_pu
16044 +stm_pu:
16045 + stm --pc,r4-r6
16046 + stm --r12,r0-r15
16047 + stm --r5,r15
16048 + stm --r4,r0-r14
16049 + stm --lr,r0
16050 + stm --r11,r0,r4-r9,r11-r15
16051 + stm --r11,r0,r3,r9-r10,r12,r14
16052 + stm --r6,r2,r8-r9,r13-r14
16053 + .text
16054 + .global stmts
16055 +stmts:
16056 + stmts pc,r8
16057 + stmts r12,r0-r15
16058 + stmts r5,r15
16059 + stmts r4,r0-r14
16060 + stmts lr,r0
16061 + stmts r1,r0-r1,r3-r4,r6,r9-r10,r14-r15
16062 + stmts r3,r0,r6-r8,r10-r12
16063 + stmts r11,r0,r4,r6-r7,r9-r10,r12,r14-r15
16064 + .text
16065 + .global stmts_pu
16066 +stmts_pu:
16067 + stmts --pc,r6-r8
16068 + stmts --r12,r0-r15
16069 + stmts --r5,r15
16070 + stmts --r4,r0-r14
16071 + stmts --lr,r0
16072 + stmts --r2,r0,r3-r4,r9-r10,r12-r13
16073 + stmts --r3,r0-r1,r14-r15
16074 + stmts --r0,r0,r2-r6,r10,r14
16075 + .text
16076 + .global ldins_h
16077 +ldins_h:
16078 + ldins.h pc:b,pc[0]
16079 + ldins.h r12:t,r12[-2]
16080 + ldins.h r5:t,r5[-4096]
16081 + ldins.h r4:b,r4[4094]
16082 + ldins.h lr:t,lr[2]
16083 + ldins.h r0:t,lr[1930]
16084 + ldins.h r3:b,r7[-534]
16085 + ldins.h r2:b,r12[-2252]
16086 + .text
16087 + .global ldins_b
16088 +ldins_b:
16089 + ldins.b pc:b,pc[0]
16090 + ldins.b r12:t,r12[-1]
16091 + ldins.b r5:u,r5[-2048]
16092 + ldins.b r4:l,r4[2047]
16093 + ldins.b lr:l,lr[1]
16094 + ldins.b r6:t,r4[-662]
16095 + ldins.b r5:b,r1[-151]
16096 + ldins.b r10:t,r11[-1923]
16097 + .text
16098 + .global ldswp_sh
16099 +ldswp_sh:
16100 + ldswp.sh pc,pc[0]
16101 + ldswp.sh r12,r12[-2]
16102 + ldswp.sh r5,r5[-4096]
16103 + ldswp.sh r4,r4[4094]
16104 + ldswp.sh lr,lr[2]
16105 + ldswp.sh r9,r10[3848]
16106 + ldswp.sh r4,r12[-2040]
16107 + ldswp.sh r10,r2[3088]
16108 + .text
16109 + .global ldswp_uh
16110 +ldswp_uh:
16111 + ldswp.uh pc,pc[0]
16112 + ldswp.uh r12,r12[-2]
16113 + ldswp.uh r5,r5[-4096]
16114 + ldswp.uh r4,r4[4094]
16115 + ldswp.uh lr,lr[2]
16116 + ldswp.uh r4,r9[3724]
16117 + ldswp.uh lr,sp[-1672]
16118 + ldswp.uh r8,r12[-3846]
16119 + .text
16120 + .global ldswp_w
16121 +ldswp_w:
16122 + ldswp.w pc,pc[0]
16123 + ldswp.w r12,r12[-4]
16124 + ldswp.w r5,r5[-8192]
16125 + ldswp.w r4,r4[8188]
16126 + ldswp.w lr,lr[4]
16127 + ldswp.w sp,r7[1860]
16128 + ldswp.w pc,r5[-3324]
16129 + ldswp.w r12,r10[-3296]
16130 + .text
16131 + .global stswp_h
16132 +stswp_h:
16133 + stswp.h pc[0],pc
16134 + stswp.h r12[-2],r12
16135 + stswp.h r5[-4096],r5
16136 + stswp.h r4[4094],r4
16137 + stswp.h lr[2],lr
16138 + stswp.h r7[64],r10
16139 + stswp.h r10[3024],r2
16140 + stswp.h r0[-2328],r10
16141 + .text
16142 + .global stswp_w
16143 +stswp_w:
16144 + stswp.w pc[0],pc
16145 + stswp.w r12[-4],r12
16146 + stswp.w r5[-8192],r5
16147 + stswp.w r4[8188],r4
16148 + stswp.w lr[4],lr
16149 + stswp.w pc[1156],r8
16150 + stswp.w sp[7992],r10
16151 + stswp.w r8[-1172],r5
16152 + .text
16153 + .global and2
16154 +and2:
16155 + and pc,pc,pc<<0
16156 + and r12,r12,r12<<31
16157 + and r5,r5,r5<<16
16158 + and r4,r4,r4<<15
16159 + and lr,lr,lr<<1
16160 + and r10,r2,r1<<1
16161 + and r12,r8,r11<<27
16162 + and r10,r7,r0<<3
16163 + .text
16164 + .global and3
16165 +and3:
16166 + and pc,pc,pc>>0
16167 + and r12,r12,r12>>31
16168 + and r5,r5,r5>>16
16169 + and r4,r4,r4>>15
16170 + and lr,lr,lr>>1
16171 + and r12,r8,r7>>17
16172 + and pc,r4,r9>>20
16173 + and r10,r9,r10>>12
16174 + .text
16175 + .global or2
16176 +or2:
16177 + or pc,pc,pc<<0
16178 + or r12,r12,r12<<31
16179 + or r5,r5,r5<<16
16180 + or r4,r4,r4<<15
16181 + or lr,lr,lr<<1
16182 + or r8,sp,r11<<29
16183 + or pc,r9,r2<<28
16184 + or r5,r1,r2<<3
16185 + .text
16186 + .global or3
16187 +or3:
16188 + or pc,pc,pc>>0
16189 + or r12,r12,r12>>31
16190 + or r5,r5,r5>>16
16191 + or r4,r4,r4>>15
16192 + or lr,lr,lr>>1
16193 + or r1,sp,sp>>2
16194 + or r0,r1,r1>>29
16195 + or r4,r12,r8>>8
16196 + .text
16197 + .global eor2
16198 +eor2:
16199 + eor pc,pc,pc<<0
16200 + eor r12,r12,r12<<31
16201 + eor r5,r5,r5<<16
16202 + eor r4,r4,r4<<15
16203 + eor lr,lr,lr<<1
16204 + eor r10,r9,r4<<11
16205 + eor r4,r0,r1<<31
16206 + eor r6,r2,r12<<13
16207 + .text
16208 + .global eor3
16209 +eor3:
16210 + eor pc,pc,pc>>0
16211 + eor r12,r12,r12>>31
16212 + eor r5,r5,r5>>16
16213 + eor r4,r4,r4>>15
16214 + eor lr,lr,lr>>1
16215 + eor r5,r5,r5>>22
16216 + eor r10,r1,lr>>3
16217 + eor r7,lr,sp>>26
16218 + .text
16219 + .global sthh_w2
16220 +sthh_w2:
16221 + sthh.w pc[pc<<0],pc:b,pc:b
16222 + sthh.w r12[r12<<3],r12:t,r12:t
16223 + sthh.w r5[r5<<2],r5:t,r5:t
16224 + sthh.w r4[r4<<1],r4:b,r4:b
16225 + sthh.w lr[lr<<1],lr:t,lr:t
16226 + sthh.w sp[r6<<3],r1:t,r12:t
16227 + sthh.w r6[r6<<0],r9:t,r9:t
16228 + sthh.w r10[r3<<0],r0:b,r11:t
16229 + .text
16230 + .global sthh_w1
16231 +sthh_w1:
16232 + sthh.w pc[0],pc:b,pc:b
16233 + sthh.w r12[1020],r12:t,r12:t
16234 + sthh.w r5[512],r5:t,r5:t
16235 + sthh.w r4[508],r4:b,r4:b
16236 + sthh.w lr[4],lr:t,lr:t
16237 + sthh.w r4[404],r9:t,r0:b
16238 + sthh.w r8[348],r2:t,r10:b
16239 + sthh.w sp[172],r9:b,r2:b
16240 + .text
16241 + .global cop
16242 +cop:
16243 + cop cp0,cr0,cr0,cr0,0
16244 + cop cp7,cr15,cr15,cr15,0x7f
16245 + cop cp3,cr5,cr5,cr5,0x31
16246 + cop cp2,cr4,cr4,cr4,0x30
16247 + cop cp5,cr8,cr3,cr7,0x5a
16248 + .text
16249 + .global ldc_w1
16250 +ldc_w1:
16251 + ldc.w cp0,cr0,r0[0]
16252 + ldc.w cp7,cr15,pc[255<<2]
16253 + ldc.w cp3,cr5,r5[128<<2]
16254 + ldc.w cp2,cr4,r4[127<<2]
16255 + ldc.w cp4,cr9,r13[36<<2]
16256 + .text
16257 + .global ldc_w2
16258 +ldc_w2:
16259 + ldc.w cp0,cr0,--r0
16260 + ldc.w cp7,cr15,--pc
16261 + ldc.w cp3,cr5,--r5
16262 + ldc.w cp2,cr4,--r4
16263 + ldc.w cp4,cr9,--r13
16264 + .text
16265 + .global ldc_w3
16266 +ldc_w3:
16267 + ldc.w cp0,cr0,r0[r0]
16268 + ldc.w cp7,cr15,pc[pc<<3]
16269 + ldc.w cp3,cr5,r5[r4<<2]
16270 + ldc.w cp2,cr4,r4[r3<<1]
16271 + ldc.w cp4,cr9,r13[r12<<0]
16272 + .text
16273 + .global ldc_d1
16274 +ldc_d1:
16275 + ldc.d cp0,cr0,r0[0]
16276 + ldc.d cp7,cr14,pc[255<<2]
16277 + ldc.d cp3,cr6,r5[128<<2]
16278 + ldc.d cp2,cr4,r4[127<<2]
16279 + ldc.d cp4,cr8,r13[36<<2]
16280 + .text
16281 + .global ldc_d2
16282 +ldc_d2:
16283 + ldc.d cp0,cr0,--r0
16284 + ldc.d cp7,cr14,--pc
16285 + ldc.d cp3,cr6,--r5
16286 + ldc.d cp2,cr4,--r4
16287 + ldc.d cp4,cr8,--r13
16288 + .text
16289 + .global ldc_d3
16290 +ldc_d3:
16291 + ldc.d cp0,cr0,r0[r0]
16292 + ldc.d cp7,cr14,pc[pc<<3]
16293 + ldc.d cp3,cr6,r5[r4<<2]
16294 + ldc.d cp2,cr4,r4[r3<<1]
16295 + ldc.d cp4,cr8,r13[r12<<0]
16296 + .text
16297 + .global stc_w1
16298 +stc_w1:
16299 + stc.w cp0,r0[0],cr0
16300 + stc.w cp7,pc[255<<2],cr15
16301 + stc.w cp3,r5[128<<2],cr5
16302 + stc.w cp2,r4[127<<2],cr4
16303 + stc.w cp4,r13[36<<2],cr9
16304 + .text
16305 + .global stc_w2
16306 +stc_w2:
16307 + stc.w cp0,r0++,cr0
16308 + stc.w cp7,pc++,cr15
16309 + stc.w cp3,r5++,cr5
16310 + stc.w cp2,r4++,cr4
16311 + stc.w cp4,r13++,cr9
16312 + .text
16313 + .global stc_w3
16314 +stc_w3:
16315 + stc.w cp0,r0[r0],cr0
16316 + stc.w cp7,pc[pc<<3],cr15
16317 + stc.w cp3,r5[r4<<2],cr5
16318 + stc.w cp2,r4[r3<<1],cr4
16319 + stc.w cp4,r13[r12<<0],cr9
16320 + .text
16321 + .global stc_d1
16322 +stc_d1:
16323 + stc.d cp0,r0[0],cr0
16324 + stc.d cp7,pc[255<<2],cr14
16325 + stc.d cp3,r5[128<<2],cr6
16326 + stc.d cp2,r4[127<<2],cr4
16327 + stc.d cp4,r13[36<<2],cr8
16328 + .text
16329 + .global stc_d2
16330 +stc_d2:
16331 + stc.d cp0,r0++,cr0
16332 + stc.d cp7,pc++,cr14
16333 + stc.d cp3,r5++,cr6
16334 + stc.d cp2,r4++,cr4
16335 + stc.d cp4,r13++,cr8
16336 + .text
16337 + .global stc_d3
16338 +stc_d3:
16339 + stc.d cp0,r0[r0],cr0
16340 + stc.d cp7,pc[pc<<3],cr14
16341 + stc.d cp3,r5[r4<<2],cr6
16342 + stc.d cp2,r4[r3<<1],cr4
16343 + stc.d cp4,r13[r12<<0],cr8
16344 + .text
16345 + .global ldc0_w
16346 +ldc0_w:
16347 + ldc0.w cr0,r0[0]
16348 + ldc0.w cr15,pc[4095<<2]
16349 + ldc0.w cr5,r5[2048<<2]
16350 + ldc0.w cr4,r4[2047<<2]
16351 + ldc0.w cr9,r13[147<<2]
16352 + .text
16353 + .global ldc0_d
16354 +ldc0_d:
16355 + ldc0.d cr0,r0[0]
16356 + ldc0.d cr14,pc[4095<<2]
16357 + ldc0.d cr6,r5[2048<<2]
16358 + ldc0.d cr4,r4[2047<<2]
16359 + ldc0.d cr8,r13[147<<2]
16360 + .text
16361 + .global stc0_w
16362 +stc0_w:
16363 + stc0.w r0[0],cr0
16364 + stc0.w pc[4095<<2],cr15
16365 + stc0.w r5[2048<<2],cr5
16366 + stc0.w r4[2047<<2],cr4
16367 + stc0.w r13[147<<2],cr9
16368 + .text
16369 + .global stc0_d
16370 +stc0_d:
16371 + stc0.d r0[0],cr0
16372 + stc0.d pc[4095<<2],cr14
16373 + stc0.d r5[2048<<2],cr6
16374 + stc0.d r4[2047<<2],cr4
16375 + stc0.d r13[147<<2],cr8
16376 + .text
16377 + .global memc
16378 +memc:
16379 + memc 0, 0
16380 + memc -4, 31
16381 + memc -65536, 16
16382 + memc 65532, 15
16383 + .text
16384 + .global mems
16385 +mems:
16386 + mems 0, 0
16387 + mems -4, 31
16388 + mems -65536, 16
16389 + mems 65532, 15
16390 + .text
16391 + .global memt
16392 +memt:
16393 + memt 0, 0
16394 + memt -4, 31
16395 + memt -65536, 16
16396 + memt 65532, 15
16397 +
16398 + .text
16399 + .global stcond
16400 +stcond:
16401 + stcond r0[0], r0
16402 + stcond pc[-1], pc
16403 + stcond r8[-32768], r7
16404 + stcond r7[32767], r8
16405 + stcond r5[0x1234], r10
16406 +
16407 +ldcm_w:
16408 + ldcm.w cp0,pc,cr0-cr7
16409 + ldcm.w cp7,r0,cr0
16410 + ldcm.w cp4,r4++,cr0-cr6
16411 + ldcm.w cp3,r7,cr7
16412 + ldcm.w cp1,r12++,cr1,cr4-cr6
16413 + ldcm.w cp0,pc,cr8-cr15
16414 + ldcm.w cp7,r0,cr8
16415 + ldcm.w cp4,r4++,cr8-cr14
16416 + ldcm.w cp3,r7,cr15
16417 + ldcm.w cp1,r12++,cr9,cr12-cr14
16418 +
16419 +ldcm_d:
16420 + ldcm.d cp0,pc,cr0-cr15
16421 + ldcm.d cp7,r0,cr0,cr1
16422 + ldcm.d cp4,r4++,cr0-cr13
16423 + ldcm.d cp3,r7,cr14-cr15
16424 + ldcm.d cp2,r12++,cr0-cr3,cr8-cr9,cr14-cr15
16425 +
16426 +stcm_w:
16427 + stcm.w cp0,pc,cr0-cr7
16428 + stcm.w cp7,r0,cr0
16429 + stcm.w cp4,--r4,cr0-cr6
16430 + stcm.w cp3,r7,cr7
16431 + stcm.w cp1,--r12,cr1,cr4-cr6
16432 + stcm.w cp0,pc,cr8-cr15
16433 + stcm.w cp7,r0,cr8
16434 + stcm.w cp4,--r4,cr8-cr14
16435 + stcm.w cp3,r7,cr15
16436 + stcm.w cp1,--r12,cr9,cr12-cr14
16437 +
16438 +stcm_d:
16439 + stcm.d cp0,pc,cr0-cr15
16440 + stcm.d cp7,r0,cr0,cr1
16441 + stcm.d cp4,--r4,cr0-cr13
16442 + stcm.d cp3,r7,cr14-cr15
16443 + stcm.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
16444 +
16445 +mvcr_w:
16446 + mvcr.w cp7,pc,cr15
16447 + mvcr.w cp0,r0,cr0
16448 + mvcr.w cp0,pc,cr15
16449 + mvcr.w cp7,r0,cr15
16450 + mvcr.w cp7,pc,cr0
16451 + mvcr.w cp4,r7,cr8
16452 + mvcr.w cp3,r8,cr7
16453 +
16454 +mvcr_d:
16455 + mvcr.d cp7,lr,cr14
16456 + mvcr.d cp0,r0,cr0
16457 + mvcr.d cp0,lr,cr14
16458 + mvcr.d cp7,r0,cr14
16459 + mvcr.d cp7,lr,cr0
16460 + mvcr.d cp4,r6,cr8
16461 + mvcr.d cp3,r8,cr6
16462 +
16463 +mvrc_w:
16464 + mvrc.w cp7,cr15,pc
16465 + mvrc.w cp0,cr0,r0
16466 + mvrc.w cp0,cr15,pc
16467 + mvrc.w cp7,cr15,r0
16468 + mvrc.w cp7,cr0,pc
16469 + mvrc.w cp4,cr8,r7
16470 + mvrc.w cp3,cr7,r8
16471 +
16472 +mvrc_d:
16473 + mvrc.d cp7,cr14,lr
16474 + mvrc.d cp0,cr0,r0
16475 + mvrc.d cp0,cr14,lr
16476 + mvrc.d cp7,cr14,r0
16477 + mvrc.d cp7,cr0,lr
16478 + mvrc.d cp4,cr8,r6
16479 + mvrc.d cp3,cr6,r8
16480 +
16481 +bfexts:
16482 + bfexts pc,pc,31,31
16483 + bfexts r0,r0,0,0
16484 + bfexts r0,pc,31,31
16485 + bfexts pc,r0,31,31
16486 + bfexts pc,pc,0,31
16487 + bfexts pc,pc,31,0
16488 + bfexts r7,r8,15,16
16489 + bfexts r8,r7,16,15
16490 +
16491 +bfextu:
16492 + bfextu pc,pc,31,31
16493 + bfextu r0,r0,0,0
16494 + bfextu r0,pc,31,31
16495 + bfextu pc,r0,31,31
16496 + bfextu pc,pc,0,31
16497 + bfextu pc,pc,31,0
16498 + bfextu r7,r8,15,16
16499 + bfextu r8,r7,16,15
16500 +
16501 +bfins:
16502 + bfins pc,pc,31,31
16503 + bfins r0,r0,0,0
16504 + bfins r0,pc,31,31
16505 + bfins pc,r0,31,31
16506 + bfins pc,pc,0,31
16507 + bfins pc,pc,31,0
16508 + bfins r7,r8,15,16
16509 + bfins r8,r7,16,15
16510 +
16511 +rsubc:
16512 + rsubeq pc,0
16513 + rsubal r12,-1
16514 + rsubls r5,-128
16515 + rsubpl r4,127
16516 + rsubne lr,1
16517 + rsubls r12,118
16518 + rsubvc lr,-12
16519 + rsubmi r4,-13
16520 +
16521 +addc:
16522 + addeq pc,pc,pc
16523 + addal r12,r12,r12
16524 + addls r5,r5,r5
16525 + addpl r4,r4,r4
16526 + addne lr,lr,lr
16527 + addls r10,r2,r1
16528 + addvc r12,r8,r11
16529 + addmi r10,r7,r0
16530 +
16531 +subc2:
16532 + subeq pc,pc,pc
16533 + subal r12,r12,r12
16534 + subls r5,r5,r5
16535 + subpl r4,r4,r4
16536 + subne lr,lr,lr
16537 + subls r10,r2,r1
16538 + subvc r12,r8,r11
16539 + submi r10,r7,r0
16540 +
16541 +andc:
16542 + andeq pc,pc,pc
16543 + andal r12,r12,r12
16544 + andls r5,r5,r5
16545 + andpl r4,r4,r4
16546 + andne lr,lr,lr
16547 + andls r10,r2,r1
16548 + andvc r12,r8,r11
16549 + andmi r10,r7,r0
16550 +
16551 +orc:
16552 + oreq pc,pc,pc
16553 + oral r12,r12,r12
16554 + orls r5,r5,r5
16555 + orpl r4,r4,r4
16556 + orne lr,lr,lr
16557 + orls r10,r2,r1
16558 + orvc r12,r8,r11
16559 + ormi r10,r7,r0
16560 +
16561 +eorc:
16562 + eoreq pc,pc,pc
16563 + eoral r12,r12,r12
16564 + eorls r5,r5,r5
16565 + eorpl r4,r4,r4
16566 + eorne lr,lr,lr
16567 + eorls r10,r2,r1
16568 + eorvc r12,r8,r11
16569 + eormi r10,r7,r0
16570 +
16571 +ldcond:
16572 + ld.weq pc,pc[2044]
16573 + ld.shal r12,r12[1022]
16574 + ld.uhls r5,r5[0]
16575 + ld.ubpl r4,r4[511]
16576 + ld.sbne lr,lr[0]
16577 + ld.wls r10,r2[0]
16578 + ld.shvc r12,r8[0x3fe]
16579 + ld.ubmi r10,r7[1]
16580 +
16581 +stcond2:
16582 + st.weq pc[2044],pc
16583 + st.hal r12[1022],r12
16584 + st.hls r5[0],r5
16585 + st.bpl r4[511],r4
16586 + st.bne lr[0],lr
16587 + st.wls r2[0],r10
16588 + st.hvc r8[0x3fe],r12
16589 + st.bmi r7[1],r10
16590 +
16591 +movh:
16592 + movh pc, 65535
16593 + movh r0, 0
16594 + movh r5, 1
16595 + movh r12, 32767
16596 +
16597 +
16598 Index: binutils-2.18/gas/testsuite/gas/avr32/avr32.exp
16599 ===================================================================
16600 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
16601 +++ binutils-2.18/gas/testsuite/gas/avr32/avr32.exp 2008-11-25 15:25:40.000000000 +0100
16602 @@ -0,0 +1,23 @@
16603 +# AVR32 assembler testsuite. -*- Tcl -*-
16604 +
16605 +if [istarget avr32-*-*] {
16606 + run_dump_test "hwrd-lwrd"
16607 + run_dump_test "pcrel"
16608 + run_dump_test "aliases"
16609 + run_dump_test "dwarf2"
16610 + run_dump_test "pic_reloc"
16611 + run_dump_test "fpinsn"
16612 + run_dump_test "pico"
16613 + run_dump_test "lda_pic"
16614 + run_dump_test "lda_pic_linkrelax"
16615 + run_dump_test "lda_nopic"
16616 + run_dump_test "lda_nopic_linkrelax"
16617 + run_dump_test "call_pic"
16618 + run_dump_test "call_pic_linkrelax"
16619 + run_dump_test "call_nopic"
16620 + run_dump_test "call_nopic_linkrelax"
16621 + run_dump_test "jmptable"
16622 + run_dump_test "jmptable_linkrelax"
16623 + run_dump_test "symdiff"
16624 + run_dump_test "symdiff_linkrelax"
16625 +}
16626 Index: binutils-2.18/gas/testsuite/gas/avr32/call_nopic.d
16627 ===================================================================
16628 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
16629 +++ binutils-2.18/gas/testsuite/gas/avr32/call_nopic.d 2008-11-25 15:25:40.000000000 +0100
16630 @@ -0,0 +1,36 @@
16631 +#source: call.s
16632 +#as:
16633 +#objdump: -dr
16634 +#name: call_nopic
16635 +
16636 +.*: +file format .*
16637 +
16638 +Disassembly of section \.text:
16639 +
16640 +00000000 <call_test>:
16641 + 0: d7 03 nop
16642 +
16643 +00000002 <toofar_negative>:
16644 + \.\.\.
16645 + 1ffffe: 00 00 add r0,r0
16646 + 200000: f0 a0 00 00 rcall 0 <call_test>
16647 + 200004: f0 1f 00 0c mcall 200034 <toofar_negative\+0x200032>
16648 + 200008: f0 1f 00 0c mcall 200038 <toofar_negative\+0x200036>
16649 + 20000c: f0 1f 00 0c mcall 20003c <toofar_negative\+0x20003a>
16650 + 200010: f0 1f 00 0c mcall 200040 <toofar_negative\+0x20003e>
16651 + \.\.\.
16652 + 200030: ee b0 ff ff rcall 40002e <far_positive>
16653 + \.\.\.
16654 + 200034: R_AVR32_32_CPENT \.text\+0x2
16655 + 200038: R_AVR32_32_CPENT \.text\.init
16656 + 20003c: R_AVR32_32_CPENT undefined
16657 + 200040: R_AVR32_32_CPENT \.text\+0x40002c
16658 +
16659 +0040002c <toofar_positive>:
16660 + 40002c: d7 03 nop
16661 +0040002e <far_positive>:
16662 + 40002e: d7 03 nop
16663 +Disassembly of section \.text\.init:
16664 +
16665 +00000000 <different_section>:
16666 + 0: e2 c0 00 00 sub r0,r1,0
16667 Index: binutils-2.18/gas/testsuite/gas/avr32/call_nopic_linkrelax.d
16668 ===================================================================
16669 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
16670 +++ binutils-2.18/gas/testsuite/gas/avr32/call_nopic_linkrelax.d 2008-11-25 15:25:40.000000000 +0100
16671 @@ -0,0 +1,43 @@
16672 +#source: call.s
16673 +#as: --linkrelax
16674 +#objdump: -dr
16675 +#name: call_nopic_linkrelax
16676 +
16677 +.*: +file format .*
16678 +
16679 +Disassembly of section \.text:
16680 +
16681 +00000000 <call_test>:
16682 + 0: d7 03 nop
16683 +
16684 +00000002 <toofar_negative>:
16685 + \.\.\.
16686 + 1ffffe: 00 00 add r0,r0
16687 + 200000: e0 a0 00 00 rcall 200000 <toofar_negative\+0x1ffffe>
16688 + 200000: R_AVR32_22H_PCREL \.text
16689 + 200004: f0 1f 00 00 mcall 200004 <toofar_negative\+0x200002>
16690 + 200004: R_AVR32_CPCALL \.text\+0x200034
16691 + 200008: f0 1f 00 00 mcall 200008 <toofar_negative\+0x200006>
16692 + 200008: R_AVR32_CPCALL \.text\+0x200038
16693 + 20000c: f0 1f 00 00 mcall 20000c <toofar_negative\+0x20000a>
16694 + 20000c: R_AVR32_CPCALL \.text\+0x20003c
16695 + 200010: f0 1f 00 00 mcall 200010 <toofar_negative\+0x20000e>
16696 + 200010: R_AVR32_CPCALL \.text\+0x200040
16697 + \.\.\.
16698 + 200030: e0 a0 00 00 rcall 200030 <toofar_negative\+0x20002e>
16699 + 200030: R_AVR32_22H_PCREL \.text\+0x40002e
16700 + \.\.\.
16701 + 200034: R_AVR32_ALIGN \*ABS\*\+0x2
16702 + 200034: R_AVR32_32_CPENT \.text\+0x2
16703 + 200038: R_AVR32_32_CPENT \.text\.init
16704 + 20003c: R_AVR32_32_CPENT undefined
16705 + 200040: R_AVR32_32_CPENT \.text\+0x40002c
16706 +
16707 +0040002c <toofar_positive>:
16708 + 40002c: d7 03 nop
16709 +0040002e <far_positive>:
16710 + 40002e: d7 03 nop
16711 +Disassembly of section \.text\.init:
16712 +
16713 +00000000 <different_section>:
16714 + 0: e2 c0 00 00 sub r0,r1,0
16715 Index: binutils-2.18/gas/testsuite/gas/avr32/call_pic.d
16716 ===================================================================
16717 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
16718 +++ binutils-2.18/gas/testsuite/gas/avr32/call_pic.d 2008-11-25 15:25:40.000000000 +0100
16719 @@ -0,0 +1,36 @@
16720 +#source: call.s
16721 +#as: --pic
16722 +#objdump: -dr
16723 +#name: call_pic
16724 +
16725 +.*: +file format .*
16726 +
16727 +Disassembly of section \.text:
16728 +
16729 +00000000 <call_test>:
16730 + 0: d7 03 nop
16731 +
16732 +00000002 <toofar_negative>:
16733 + \.\.\.
16734 + 1ffffe: 00 00 add r0,r0
16735 + 200000: f0 a0 00 00 rcall 0 <call_test>
16736 + 200004: f0 16 00 00 mcall r6\[0\]
16737 + 200004: R_AVR32_GOT18SW toofar_negative
16738 + 200008: f0 16 00 00 mcall r6\[0\]
16739 + 200008: R_AVR32_GOT18SW different_section
16740 + 20000c: f0 16 00 00 mcall r6\[0\]
16741 + 20000c: R_AVR32_GOT18SW undefined
16742 + 200010: f0 16 00 00 mcall r6\[0\]
16743 + 200010: R_AVR32_GOT18SW toofar_positive
16744 + \.\.\.
16745 + 200030: ee b0 ff ff rcall 40002e <far_positive>
16746 + \.\.\.
16747 +
16748 +0040002c <toofar_positive>:
16749 + 40002c: d7 03 nop
16750 +0040002e <far_positive>:
16751 + 40002e: d7 03 nop
16752 +Disassembly of section \.text\.init:
16753 +
16754 +00000000 <different_section>:
16755 + 0: e2 c0 00 00 sub r0,r1,0
16756 Index: binutils-2.18/gas/testsuite/gas/avr32/call_pic_linkrelax.d
16757 ===================================================================
16758 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
16759 +++ binutils-2.18/gas/testsuite/gas/avr32/call_pic_linkrelax.d 2008-11-25 15:25:40.000000000 +0100
16760 @@ -0,0 +1,47 @@
16761 +#source: call.s
16762 +#as: --pic --linkrelax
16763 +#objdump: -dr
16764 +#name: call_pic_linkrelax
16765 +
16766 +.*: +file format .*
16767 +
16768 +Disassembly of section \.text:
16769 +
16770 +00000000 <call_test>:
16771 + 0: d7 03 nop
16772 +
16773 +00000002 <toofar_negative>:
16774 + \.\.\.
16775 + 1ffffe: 00 00 add r0,r0
16776 + 200000: e0 a0 00 00 rcall 200000 <toofar_negative\+0x1ffffe>
16777 + 200000: R_AVR32_22H_PCREL \.text
16778 + 200004: e0 6e 00 00 mov lr,0
16779 + 200004: R_AVR32_GOTCALL toofar_negative
16780 + 200008: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
16781 + 20000c: 5d 1e icall lr
16782 + 20000e: e0 6e 00 00 mov lr,0
16783 + 20000e: R_AVR32_GOTCALL different_section
16784 + 200012: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
16785 + 200016: 5d 1e icall lr
16786 + 200018: e0 6e 00 00 mov lr,0
16787 + 200018: R_AVR32_GOTCALL undefined
16788 + 20001c: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
16789 + 200020: 5d 1e icall lr
16790 + 200022: e0 6e 00 00 mov lr,0
16791 + 200022: R_AVR32_GOTCALL toofar_positive
16792 + 200026: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
16793 + 20002a: 5d 1e icall lr
16794 + 20002c: 00 00 add r0,r0
16795 + 20002e: 00 00 add r0,r0
16796 + 200030: e0 a0 00 00 rcall 200030 <toofar_negative\+0x20002e>
16797 + 200030: R_AVR32_22H_PCREL \.text\+0x40002e
16798 + \.\.\.
16799 +
16800 +0040002c <toofar_positive>:
16801 + 40002c: d7 03 nop
16802 +0040002e <far_positive>:
16803 + 40002e: d7 03 nop
16804 +Disassembly of section \.text\.init:
16805 +
16806 +00000000 <different_section>:
16807 + 0: e2 c0 00 00 sub r0,r1,0
16808 Index: binutils-2.18/gas/testsuite/gas/avr32/call.s
16809 ===================================================================
16810 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
16811 +++ binutils-2.18/gas/testsuite/gas/avr32/call.s 2008-11-25 15:25:40.000000000 +0100
16812 @@ -0,0 +1,30 @@
16813 +
16814 + .text
16815 + .global call_test
16816 +call_test:
16817 +far_negative:
16818 + nop
16819 +toofar_negative:
16820 +
16821 + .org 0x200000
16822 +
16823 + call far_negative
16824 + call toofar_negative
16825 + call different_section
16826 + call undefined
16827 + call toofar_positive
16828 + .org 0x200030
16829 + call far_positive
16830 +
16831 + .cpool
16832 +
16833 + .org 0x40002c
16834 +
16835 +toofar_positive:
16836 + nop
16837 +far_positive:
16838 + nop
16839 +
16840 + .section .text.init,"ax",@progbits
16841 +different_section:
16842 + sub r0, r1, 0
16843 Index: binutils-2.18/gas/testsuite/gas/avr32/dwarf2.d
16844 ===================================================================
16845 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
16846 +++ binutils-2.18/gas/testsuite/gas/avr32/dwarf2.d 2008-11-25 15:25:40.000000000 +0100
16847 @@ -0,0 +1,42 @@
16848 +#readelf: -wl
16849 +#name: dwarf2
16850 +#source: dwarf2.s
16851 +
16852 +Dump of debug contents of section \.debug_line:
16853 +
16854 + Length: 53
16855 + DWARF Version: 2
16856 + Prologue Length: 26
16857 + Minimum Instruction Length: 1
16858 + Initial value of 'is_stmt': 1
16859 + Line Base: -5
16860 + Line Range: 14
16861 + Opcode Base: 10
16862 + \(Pointer size: 4\)
16863 +
16864 + Opcodes:
16865 + Opcode 1 has 0 args
16866 + Opcode 2 has 1 args
16867 + Opcode 3 has 1 args
16868 + Opcode 4 has 1 args
16869 + Opcode 5 has 1 args
16870 + Opcode 6 has 0 args
16871 + Opcode 7 has 0 args
16872 + Opcode 8 has 0 args
16873 + Opcode 9 has 1 args
16874 +
16875 + The Directory Table is empty\.
16876 +
16877 + The File Name Table:
16878 + Entry Dir Time Size Name
16879 + 1 0 0 0 main\.c
16880 +
16881 + Line Number Statements:
16882 + Extended opcode 2: set Address to 0x0
16883 + Advance Line by 87 to 88
16884 + Copy
16885 + Advance Line by 23 to 111
16886 + Special opcode .*: advance Address by 4 to 0x4 and Line by 0 to 111
16887 + Special opcode .*: advance Address by 10 to 0xe and Line by 1 to 112
16888 + Advance PC by 530 to 220
16889 + Extended opcode 1: End of Sequence
16890 Index: binutils-2.18/gas/testsuite/gas/avr32/dwarf2.s
16891 ===================================================================
16892 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
16893 +++ binutils-2.18/gas/testsuite/gas/avr32/dwarf2.s 2008-11-25 15:25:40.000000000 +0100
16894 @@ -0,0 +1,67 @@
16895 +# Source file used to test DWARF2 information for AVR32.
16896 +
16897 + .file "main.c"
16898 +
16899 + .section .debug_abbrev,"",@progbits
16900 +.Ldebug_abbrev0:
16901 + .section .debug_info,"",@progbits
16902 +.Ldebug_info0:
16903 + .section .debug_line,"",@progbits
16904 +.Ldebug_line0:
16905 +
16906 + .text
16907 + .align 1
16908 + .globl main
16909 + .type main, @function
16910 +.Ltext0:
16911 +main:
16912 + .file 1 "main.c"
16913 + .loc 1 88 0
16914 + pushm r0-r7,lr
16915 + sub sp, 4
16916 + .loc 1 111 0
16917 + lddpc r12, .LC1
16918 + lddpc r7, .LC1
16919 + icall r7
16920 + .loc 1 112 0
16921 + lddpc r6, .LC4
16922 +
16923 + .align 2
16924 +.LC4: .int 0
16925 +
16926 + .fill 256, 2, 0
16927 +
16928 + .align 2
16929 +.LC1:
16930 + .int 0
16931 +.LC2:
16932 + .int 0
16933 +.LC3:
16934 + .int 0
16935 + .size main, . - main
16936 +
16937 +.Letext0:
16938 +
16939 + .section .debug_info
16940 + .int .Ledebug_info0 - .Ldebug_info0 // size
16941 + .short 2 // version
16942 + .int .Ldebug_abbrev0 // abbrev offset
16943 + .byte 4 // bytes per addr
16944 +
16945 + .uleb128 1 // abbrev 1
16946 + .int .Ldebug_line0 // DW_AT_stmt_list
16947 + .int .Letext0 // DW_AT_high_pc
16948 + .int .Ltext0 // DW_AT_low_pc
16949 +
16950 +.Ledebug_info0:
16951 +
16952 + .section .debug_abbrev
16953 + .uleb128 0x01
16954 + .uleb128 0x11 // DW_TAG_compile_unit
16955 + .byte 0 // DW_CHILDREN_no
16956 + .uleb128 0x10, 0x6 // DW_AT_stmt_list
16957 + .uleb128 0x12, 0x1 // DW_AT_high_pc
16958 + .uleb128 0x11, 0x1 // DW_AT_low_pc
16959 + .uleb128 0, 0
16960 +
16961 + .byte 0
16962 Index: binutils-2.18/gas/testsuite/gas/avr32/fpinsn.d
16963 ===================================================================
16964 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
16965 +++ binutils-2.18/gas/testsuite/gas/avr32/fpinsn.d 2008-11-25 15:25:40.000000000 +0100
16966 @@ -0,0 +1,271 @@
16967 +#as:
16968 +#objdump: -dr
16969 +#name: fpinsn
16970 +
16971 +.*: +file format .*
16972 +
16973 +Disassembly of section \.text:
16974 +
16975 +[0-9a-f]* <fadd_s>:
16976 + *[0-9a-f]*: e1 a2 0f ff cop cp0,cr15,cr15,cr15,0x4
16977 + *[0-9a-f]*: e1 a2 00 00 cop cp0,cr0,cr0,cr0,0x4
16978 + *[0-9a-f]*: e1 a2 00 ff cop cp0,cr0,cr15,cr15,0x4
16979 + *[0-9a-f]*: e1 a2 0f 0f cop cp0,cr15,cr0,cr15,0x4
16980 + *[0-9a-f]*: e1 a2 0f f0 cop cp0,cr15,cr15,cr0,0x4
16981 + *[0-9a-f]*: e1 a2 07 88 cop cp0,cr7,cr8,cr8,0x4
16982 + *[0-9a-f]*: e1 a2 08 78 cop cp0,cr8,cr7,cr8,0x4
16983 + *[0-9a-f]*: e1 a2 08 87 cop cp0,cr8,cr8,cr7,0x4
16984 +
16985 +[0-9a-f]* <fsub_s>:
16986 + *[0-9a-f]*: e1 a2 1f ff cop cp0,cr15,cr15,cr15,0x5
16987 + *[0-9a-f]*: e1 a2 10 00 cop cp0,cr0,cr0,cr0,0x5
16988 + *[0-9a-f]*: e1 a2 10 ff cop cp0,cr0,cr15,cr15,0x5
16989 + *[0-9a-f]*: e1 a2 1f 0f cop cp0,cr15,cr0,cr15,0x5
16990 + *[0-9a-f]*: e1 a2 1f f0 cop cp0,cr15,cr15,cr0,0x5
16991 + *[0-9a-f]*: e1 a2 17 88 cop cp0,cr7,cr8,cr8,0x5
16992 + *[0-9a-f]*: e1 a2 18 78 cop cp0,cr8,cr7,cr8,0x5
16993 + *[0-9a-f]*: e1 a2 18 87 cop cp0,cr8,cr8,cr7,0x5
16994 +
16995 +[0-9a-f]* <fmac_s>:
16996 + *[0-9a-f]*: e1 a0 0f ff cop cp0,cr15,cr15,cr15,0x0
16997 + *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0
16998 + *[0-9a-f]*: e1 a0 00 ff cop cp0,cr0,cr15,cr15,0x0
16999 + *[0-9a-f]*: e1 a0 0f 0f cop cp0,cr15,cr0,cr15,0x0
17000 + *[0-9a-f]*: e1 a0 0f f0 cop cp0,cr15,cr15,cr0,0x0
17001 + *[0-9a-f]*: e1 a0 07 88 cop cp0,cr7,cr8,cr8,0x0
17002 + *[0-9a-f]*: e1 a0 08 78 cop cp0,cr8,cr7,cr8,0x0
17003 + *[0-9a-f]*: e1 a0 08 87 cop cp0,cr8,cr8,cr7,0x0
17004 +
17005 +[0-9a-f]* <fnmac_s>:
17006 + *[0-9a-f]*: e1 a0 1f ff cop cp0,cr15,cr15,cr15,0x1
17007 + *[0-9a-f]*: e1 a0 10 00 cop cp0,cr0,cr0,cr0,0x1
17008 + *[0-9a-f]*: e1 a0 10 ff cop cp0,cr0,cr15,cr15,0x1
17009 + *[0-9a-f]*: e1 a0 1f 0f cop cp0,cr15,cr0,cr15,0x1
17010 + *[0-9a-f]*: e1 a0 1f f0 cop cp0,cr15,cr15,cr0,0x1
17011 + *[0-9a-f]*: e1 a0 17 88 cop cp0,cr7,cr8,cr8,0x1
17012 + *[0-9a-f]*: e1 a0 18 78 cop cp0,cr8,cr7,cr8,0x1
17013 + *[0-9a-f]*: e1 a0 18 87 cop cp0,cr8,cr8,cr7,0x1
17014 +
17015 +[0-9a-f]* <fmsc_s>:
17016 + *[0-9a-f]*: e1 a1 0f ff cop cp0,cr15,cr15,cr15,0x2
17017 + *[0-9a-f]*: e1 a1 00 00 cop cp0,cr0,cr0,cr0,0x2
17018 + *[0-9a-f]*: e1 a1 00 ff cop cp0,cr0,cr15,cr15,0x2
17019 + *[0-9a-f]*: e1 a1 0f 0f cop cp0,cr15,cr0,cr15,0x2
17020 + *[0-9a-f]*: e1 a1 0f f0 cop cp0,cr15,cr15,cr0,0x2
17021 + *[0-9a-f]*: e1 a1 07 88 cop cp0,cr7,cr8,cr8,0x2
17022 + *[0-9a-f]*: e1 a1 08 78 cop cp0,cr8,cr7,cr8,0x2
17023 + *[0-9a-f]*: e1 a1 08 87 cop cp0,cr8,cr8,cr7,0x2
17024 +
17025 +[0-9a-f]* <fnmsc_s>:
17026 + *[0-9a-f]*: e1 a1 1f ff cop cp0,cr15,cr15,cr15,0x3
17027 + *[0-9a-f]*: e1 a1 10 00 cop cp0,cr0,cr0,cr0,0x3
17028 + *[0-9a-f]*: e1 a1 10 ff cop cp0,cr0,cr15,cr15,0x3
17029 + *[0-9a-f]*: e1 a1 1f 0f cop cp0,cr15,cr0,cr15,0x3
17030 + *[0-9a-f]*: e1 a1 1f f0 cop cp0,cr15,cr15,cr0,0x3
17031 + *[0-9a-f]*: e1 a1 17 88 cop cp0,cr7,cr8,cr8,0x3
17032 + *[0-9a-f]*: e1 a1 18 78 cop cp0,cr8,cr7,cr8,0x3
17033 + *[0-9a-f]*: e1 a1 18 87 cop cp0,cr8,cr8,cr7,0x3
17034 +
17035 +[0-9a-f]* <fmul_s>:
17036 + *[0-9a-f]*: e1 a3 0f ff cop cp0,cr15,cr15,cr15,0x6
17037 + *[0-9a-f]*: e1 a3 00 00 cop cp0,cr0,cr0,cr0,0x6
17038 + *[0-9a-f]*: e1 a3 00 ff cop cp0,cr0,cr15,cr15,0x6
17039 + *[0-9a-f]*: e1 a3 0f 0f cop cp0,cr15,cr0,cr15,0x6
17040 + *[0-9a-f]*: e1 a3 0f f0 cop cp0,cr15,cr15,cr0,0x6
17041 + *[0-9a-f]*: e1 a3 07 88 cop cp0,cr7,cr8,cr8,0x6
17042 + *[0-9a-f]*: e1 a3 08 78 cop cp0,cr8,cr7,cr8,0x6
17043 + *[0-9a-f]*: e1 a3 08 87 cop cp0,cr8,cr8,cr7,0x6
17044 +
17045 +[0-9a-f]* <fnmul_s>:
17046 + *[0-9a-f]*: e1 a3 1f ff cop cp0,cr15,cr15,cr15,0x7
17047 + *[0-9a-f]*: e1 a3 10 00 cop cp0,cr0,cr0,cr0,0x7
17048 + *[0-9a-f]*: e1 a3 10 ff cop cp0,cr0,cr15,cr15,0x7
17049 + *[0-9a-f]*: e1 a3 1f 0f cop cp0,cr15,cr0,cr15,0x7
17050 + *[0-9a-f]*: e1 a3 1f f0 cop cp0,cr15,cr15,cr0,0x7
17051 + *[0-9a-f]*: e1 a3 17 88 cop cp0,cr7,cr8,cr8,0x7
17052 + *[0-9a-f]*: e1 a3 18 78 cop cp0,cr8,cr7,cr8,0x7
17053 + *[0-9a-f]*: e1 a3 18 87 cop cp0,cr8,cr8,cr7,0x7
17054 +
17055 +[0-9a-f]* <fneg_s>:
17056 + *[0-9a-f]*: e1 a4 0f f0 cop cp0,cr15,cr15,cr0,0x8
17057 + *[0-9a-f]*: e1 a4 00 00 cop cp0,cr0,cr0,cr0,0x8
17058 + *[0-9a-f]*: e1 a4 00 f0 cop cp0,cr0,cr15,cr0,0x8
17059 + *[0-9a-f]*: e1 a4 0f 00 cop cp0,cr15,cr0,cr0,0x8
17060 + *[0-9a-f]*: e1 a4 07 80 cop cp0,cr7,cr8,cr0,0x8
17061 + *[0-9a-f]*: e1 a4 08 70 cop cp0,cr8,cr7,cr0,0x8
17062 +
17063 +[0-9a-f]* <fabs_s>:
17064 + *[0-9a-f]*: e1 a4 1f f0 cop cp0,cr15,cr15,cr0,0x9
17065 + *[0-9a-f]*: e1 a4 10 00 cop cp0,cr0,cr0,cr0,0x9
17066 + *[0-9a-f]*: e1 a4 10 f0 cop cp0,cr0,cr15,cr0,0x9
17067 + *[0-9a-f]*: e1 a4 1f 00 cop cp0,cr15,cr0,cr0,0x9
17068 + *[0-9a-f]*: e1 a4 17 80 cop cp0,cr7,cr8,cr0,0x9
17069 + *[0-9a-f]*: e1 a4 18 70 cop cp0,cr8,cr7,cr0,0x9
17070 +
17071 +[0-9a-f]* <fcmp_s>:
17072 + *[0-9a-f]*: e1 a6 10 ff cop cp0,cr0,cr15,cr15,0xd
17073 + *[0-9a-f]*: e1 a6 10 00 cop cp0,cr0,cr0,cr0,0xd
17074 + *[0-9a-f]*: e1 a6 10 0f cop cp0,cr0,cr0,cr15,0xd
17075 + *[0-9a-f]*: e1 a6 10 f0 cop cp0,cr0,cr15,cr0,0xd
17076 + *[0-9a-f]*: e1 a6 10 78 cop cp0,cr0,cr7,cr8,0xd
17077 + *[0-9a-f]*: e1 a6 10 87 cop cp0,cr0,cr8,cr7,0xd
17078 +
17079 +[0-9a-f]* <fadd_d>:
17080 + *[0-9a-f]*: e5 a2 0e ee cop cp0,cr14,cr14,cr14,0x44
17081 + *[0-9a-f]*: e5 a2 00 00 cop cp0,cr0,cr0,cr0,0x44
17082 + *[0-9a-f]*: e5 a2 00 ee cop cp0,cr0,cr14,cr14,0x44
17083 + *[0-9a-f]*: e5 a2 0e 0e cop cp0,cr14,cr0,cr14,0x44
17084 + *[0-9a-f]*: e5 a2 0e e0 cop cp0,cr14,cr14,cr0,0x44
17085 + *[0-9a-f]*: e5 a2 06 88 cop cp0,cr6,cr8,cr8,0x44
17086 + *[0-9a-f]*: e5 a2 08 68 cop cp0,cr8,cr6,cr8,0x44
17087 + *[0-9a-f]*: e5 a2 08 86 cop cp0,cr8,cr8,cr6,0x44
17088 +
17089 +[0-9a-f]* <fsub_d>:
17090 + *[0-9a-f]*: e5 a2 1e ee cop cp0,cr14,cr14,cr14,0x45
17091 + *[0-9a-f]*: e5 a2 10 00 cop cp0,cr0,cr0,cr0,0x45
17092 + *[0-9a-f]*: e5 a2 10 ee cop cp0,cr0,cr14,cr14,0x45
17093 + *[0-9a-f]*: e5 a2 1e 0e cop cp0,cr14,cr0,cr14,0x45
17094 + *[0-9a-f]*: e5 a2 1e e0 cop cp0,cr14,cr14,cr0,0x45
17095 + *[0-9a-f]*: e5 a2 16 88 cop cp0,cr6,cr8,cr8,0x45
17096 + *[0-9a-f]*: e5 a2 18 68 cop cp0,cr8,cr6,cr8,0x45
17097 + *[0-9a-f]*: e5 a2 18 86 cop cp0,cr8,cr8,cr6,0x45
17098 +
17099 +[0-9a-f]* <fmac_d>:
17100 + *[0-9a-f]*: e5 a0 0e ee cop cp0,cr14,cr14,cr14,0x40
17101 + *[0-9a-f]*: e5 a0 00 00 cop cp0,cr0,cr0,cr0,0x40
17102 + *[0-9a-f]*: e5 a0 00 ee cop cp0,cr0,cr14,cr14,0x40
17103 + *[0-9a-f]*: e5 a0 0e 0e cop cp0,cr14,cr0,cr14,0x40
17104 + *[0-9a-f]*: e5 a0 0e e0 cop cp0,cr14,cr14,cr0,0x40
17105 + *[0-9a-f]*: e5 a0 06 88 cop cp0,cr6,cr8,cr8,0x40
17106 + *[0-9a-f]*: e5 a0 08 68 cop cp0,cr8,cr6,cr8,0x40
17107 + *[0-9a-f]*: e5 a0 08 86 cop cp0,cr8,cr8,cr6,0x40
17108 +
17109 +[0-9a-f]* <fnmac_d>:
17110 + *[0-9a-f]*: e5 a0 1e ee cop cp0,cr14,cr14,cr14,0x41
17111 + *[0-9a-f]*: e5 a0 10 00 cop cp0,cr0,cr0,cr0,0x41
17112 + *[0-9a-f]*: e5 a0 10 ee cop cp0,cr0,cr14,cr14,0x41
17113 + *[0-9a-f]*: e5 a0 1e 0e cop cp0,cr14,cr0,cr14,0x41
17114 + *[0-9a-f]*: e5 a0 1e e0 cop cp0,cr14,cr14,cr0,0x41
17115 + *[0-9a-f]*: e5 a0 16 88 cop cp0,cr6,cr8,cr8,0x41
17116 + *[0-9a-f]*: e5 a0 18 68 cop cp0,cr8,cr6,cr8,0x41
17117 + *[0-9a-f]*: e5 a0 18 86 cop cp0,cr8,cr8,cr6,0x41
17118 +
17119 +[0-9a-f]* <fmsc_d>:
17120 + *[0-9a-f]*: e5 a1 0e ee cop cp0,cr14,cr14,cr14,0x42
17121 + *[0-9a-f]*: e5 a1 00 00 cop cp0,cr0,cr0,cr0,0x42
17122 + *[0-9a-f]*: e5 a1 00 ee cop cp0,cr0,cr14,cr14,0x42
17123 + *[0-9a-f]*: e5 a1 0e 0e cop cp0,cr14,cr0,cr14,0x42
17124 + *[0-9a-f]*: e5 a1 0e e0 cop cp0,cr14,cr14,cr0,0x42
17125 + *[0-9a-f]*: e5 a1 06 88 cop cp0,cr6,cr8,cr8,0x42
17126 + *[0-9a-f]*: e5 a1 08 68 cop cp0,cr8,cr6,cr8,0x42
17127 + *[0-9a-f]*: e5 a1 08 86 cop cp0,cr8,cr8,cr6,0x42
17128 +
17129 +[0-9a-f]* <fnmsc_d>:
17130 + *[0-9a-f]*: e5 a1 1e ee cop cp0,cr14,cr14,cr14,0x43
17131 + *[0-9a-f]*: e5 a1 10 00 cop cp0,cr0,cr0,cr0,0x43
17132 + *[0-9a-f]*: e5 a1 10 ee cop cp0,cr0,cr14,cr14,0x43
17133 + *[0-9a-f]*: e5 a1 1e 0e cop cp0,cr14,cr0,cr14,0x43
17134 + *[0-9a-f]*: e5 a1 1e e0 cop cp0,cr14,cr14,cr0,0x43
17135 + *[0-9a-f]*: e5 a1 16 88 cop cp0,cr6,cr8,cr8,0x43
17136 + *[0-9a-f]*: e5 a1 18 68 cop cp0,cr8,cr6,cr8,0x43
17137 + *[0-9a-f]*: e5 a1 18 86 cop cp0,cr8,cr8,cr6,0x43
17138 +
17139 +[0-9a-f]* <fmul_d>:
17140 + *[0-9a-f]*: e5 a3 0e ee cop cp0,cr14,cr14,cr14,0x46
17141 + *[0-9a-f]*: e5 a3 00 00 cop cp0,cr0,cr0,cr0,0x46
17142 + *[0-9a-f]*: e5 a3 00 ee cop cp0,cr0,cr14,cr14,0x46
17143 + *[0-9a-f]*: e5 a3 0e 0e cop cp0,cr14,cr0,cr14,0x46
17144 + *[0-9a-f]*: e5 a3 0e e0 cop cp0,cr14,cr14,cr0,0x46
17145 + *[0-9a-f]*: e5 a3 06 88 cop cp0,cr6,cr8,cr8,0x46
17146 + *[0-9a-f]*: e5 a3 08 68 cop cp0,cr8,cr6,cr8,0x46
17147 + *[0-9a-f]*: e5 a3 08 86 cop cp0,cr8,cr8,cr6,0x46
17148 +
17149 +[0-9a-f]* <fnmul_d>:
17150 + *[0-9a-f]*: e5 a3 1e ee cop cp0,cr14,cr14,cr14,0x47
17151 + *[0-9a-f]*: e5 a3 10 00 cop cp0,cr0,cr0,cr0,0x47
17152 + *[0-9a-f]*: e5 a3 10 ee cop cp0,cr0,cr14,cr14,0x47
17153 + *[0-9a-f]*: e5 a3 1e 0e cop cp0,cr14,cr0,cr14,0x47
17154 + *[0-9a-f]*: e5 a3 1e e0 cop cp0,cr14,cr14,cr0,0x47
17155 + *[0-9a-f]*: e5 a3 16 88 cop cp0,cr6,cr8,cr8,0x47
17156 + *[0-9a-f]*: e5 a3 18 68 cop cp0,cr8,cr6,cr8,0x47
17157 + *[0-9a-f]*: e5 a3 18 86 cop cp0,cr8,cr8,cr6,0x47
17158 +
17159 +[0-9a-f]* <fneg_d>:
17160 + *[0-9a-f]*: e5 a4 0e e0 cop cp0,cr14,cr14,cr0,0x48
17161 + *[0-9a-f]*: e5 a4 00 00 cop cp0,cr0,cr0,cr0,0x48
17162 + *[0-9a-f]*: e5 a4 00 e0 cop cp0,cr0,cr14,cr0,0x48
17163 + *[0-9a-f]*: e5 a4 0e 00 cop cp0,cr14,cr0,cr0,0x48
17164 + *[0-9a-f]*: e5 a4 06 80 cop cp0,cr6,cr8,cr0,0x48
17165 + *[0-9a-f]*: e5 a4 08 60 cop cp0,cr8,cr6,cr0,0x48
17166 +
17167 +[0-9a-f]* <fabs_d>:
17168 + *[0-9a-f]*: e5 a4 1e e0 cop cp0,cr14,cr14,cr0,0x49
17169 + *[0-9a-f]*: e5 a4 10 00 cop cp0,cr0,cr0,cr0,0x49
17170 + *[0-9a-f]*: e5 a4 10 e0 cop cp0,cr0,cr14,cr0,0x49
17171 + *[0-9a-f]*: e5 a4 1e 00 cop cp0,cr14,cr0,cr0,0x49
17172 + *[0-9a-f]*: e5 a4 16 80 cop cp0,cr6,cr8,cr0,0x49
17173 + *[0-9a-f]*: e5 a4 18 60 cop cp0,cr8,cr6,cr0,0x49
17174 +
17175 +[0-9a-f]* <fcmp_d>:
17176 + *[0-9a-f]*: e5 a6 10 ee cop cp0,cr0,cr14,cr14,0x4d
17177 + *[0-9a-f]*: e5 a6 10 00 cop cp0,cr0,cr0,cr0,0x4d
17178 + *[0-9a-f]*: e5 a6 10 0e cop cp0,cr0,cr0,cr14,0x4d
17179 + *[0-9a-f]*: e5 a6 10 e0 cop cp0,cr0,cr14,cr0,0x4d
17180 + *[0-9a-f]*: e5 a6 10 68 cop cp0,cr0,cr6,cr8,0x4d
17181 + *[0-9a-f]*: e5 a6 10 86 cop cp0,cr0,cr8,cr6,0x4d
17182 +
17183 +[0-9a-f]* <fmov_s>:
17184 + *[0-9a-f]*: e1 a5 0f f0 cop cp0,cr15,cr15,cr0,0xa
17185 + *[0-9a-f]*: e1 a5 00 00 cop cp0,cr0,cr0,cr0,0xa
17186 + *[0-9a-f]*: e1 a5 0f 00 cop cp0,cr15,cr0,cr0,0xa
17187 + *[0-9a-f]*: e1 a5 00 f0 cop cp0,cr0,cr15,cr0,0xa
17188 + *[0-9a-f]*: e1 a5 08 70 cop cp0,cr8,cr7,cr0,0xa
17189 + *[0-9a-f]*: e1 a5 07 80 cop cp0,cr7,cr8,cr0,0xa
17190 + *[0-9a-f]*: ef af 0f 00 mvcr.w cp0,pc,cr15
17191 + *[0-9a-f]*: ef a0 00 00 mvcr.w cp0,r0,cr0
17192 + *[0-9a-f]*: ef af 00 00 mvcr.w cp0,pc,cr0
17193 + *[0-9a-f]*: ef a0 0f 00 mvcr.w cp0,r0,cr15
17194 + *[0-9a-f]*: ef a8 07 00 mvcr.w cp0,r8,cr7
17195 + *[0-9a-f]*: ef a7 08 00 mvcr.w cp0,r7,cr8
17196 + *[0-9a-f]*: ef af 0f 20 mvrc.w cp0,cr15,pc
17197 + *[0-9a-f]*: ef a0 00 20 mvrc.w cp0,cr0,r0
17198 + *[0-9a-f]*: ef a0 0f 20 mvrc.w cp0,cr15,r0
17199 + *[0-9a-f]*: ef af 00 20 mvrc.w cp0,cr0,pc
17200 + *[0-9a-f]*: ef a7 08 20 mvrc.w cp0,cr8,r7
17201 + *[0-9a-f]*: ef a8 07 20 mvrc.w cp0,cr7,r8
17202 +
17203 +[0-9a-f]* <fmov_d>:
17204 + *[0-9a-f]*: e5 a5 0e e0 cop cp0,cr14,cr14,cr0,0x4a
17205 + *[0-9a-f]*: e5 a5 00 00 cop cp0,cr0,cr0,cr0,0x4a
17206 + *[0-9a-f]*: e5 a5 0e 00 cop cp0,cr14,cr0,cr0,0x4a
17207 + *[0-9a-f]*: e5 a5 00 e0 cop cp0,cr0,cr14,cr0,0x4a
17208 + *[0-9a-f]*: e5 a5 08 60 cop cp0,cr8,cr6,cr0,0x4a
17209 + *[0-9a-f]*: e5 a5 06 80 cop cp0,cr6,cr8,cr0,0x4a
17210 + *[0-9a-f]*: ef ae 0e 10 mvcr.d cp0,lr,cr14
17211 + *[0-9a-f]*: ef a0 00 10 mvcr.d cp0,r0,cr0
17212 + *[0-9a-f]*: ef ae 00 10 mvcr.d cp0,lr,cr0
17213 + *[0-9a-f]*: ef a0 0e 10 mvcr.d cp0,r0,cr14
17214 + *[0-9a-f]*: ef a8 06 10 mvcr.d cp0,r8,cr6
17215 + *[0-9a-f]*: ef a6 08 10 mvcr.d cp0,r6,cr8
17216 + *[0-9a-f]*: ef ae 0e 30 mvrc.d cp0,cr14,lr
17217 + *[0-9a-f]*: ef a0 00 30 mvrc.d cp0,cr0,r0
17218 + *[0-9a-f]*: ef a0 0e 30 mvrc.d cp0,cr14,r0
17219 + *[0-9a-f]*: ef ae 00 30 mvrc.d cp0,cr0,lr
17220 + *[0-9a-f]*: ef a6 08 30 mvrc.d cp0,cr8,r6
17221 + *[0-9a-f]*: ef a8 06 30 mvrc.d cp0,cr6,r8
17222 +
17223 +[0-9a-f]* <fcasts_d>:
17224 + *[0-9a-f]*: e1 a7 1f e0 cop cp0,cr15,cr14,cr0,0xf
17225 + *[0-9a-f]*: e1 a7 10 00 cop cp0,cr0,cr0,cr0,0xf
17226 + *[0-9a-f]*: e1 a7 1f 00 cop cp0,cr15,cr0,cr0,0xf
17227 + *[0-9a-f]*: e1 a7 10 e0 cop cp0,cr0,cr14,cr0,0xf
17228 + *[0-9a-f]*: e1 a7 18 60 cop cp0,cr8,cr6,cr0,0xf
17229 + *[0-9a-f]*: e1 a7 17 80 cop cp0,cr7,cr8,cr0,0xf
17230 +
17231 +[0-9a-f]* <fcastd_s>:
17232 + *[0-9a-f]*: e1 a8 0e f0 cop cp0,cr14,cr15,cr0,0x10
17233 + *[0-9a-f]*: e1 a8 00 00 cop cp0,cr0,cr0,cr0,0x10
17234 + *[0-9a-f]*: e1 a8 0e 00 cop cp0,cr14,cr0,cr0,0x10
17235 + *[0-9a-f]*: e1 a8 00 f0 cop cp0,cr0,cr15,cr0,0x10
17236 + *[0-9a-f]*: e1 a8 08 70 cop cp0,cr8,cr7,cr0,0x10
17237 + *[0-9a-f]*: e1 a8 06 80 cop cp0,cr6,cr8,cr0,0x10
17238 Index: binutils-2.18/gas/testsuite/gas/avr32/fpinsn.s
17239 ===================================================================
17240 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17241 +++ binutils-2.18/gas/testsuite/gas/avr32/fpinsn.s 2008-11-25 15:25:40.000000000 +0100
17242 @@ -0,0 +1,266 @@
17243 +
17244 + .text
17245 + .global fadd_s
17246 +fadd_s:
17247 + fadd.s fr15, fr15, fr15
17248 + fadd.s fr0, fr0, fr0
17249 + fadd.s fr0, fr15, fr15
17250 + fadd.s fr15, fr0, fr15
17251 + fadd.s fr15, fr15, fr0
17252 + fadd.s fr7, fr8, fr8
17253 + fadd.s fr8, fr7, fr8
17254 + fadd.s fr8, fr8, fr7
17255 + .global fsub_s
17256 +fsub_s:
17257 + fsub.s fr15, fr15, fr15
17258 + fsub.s fr0, fr0, fr0
17259 + fsub.s fr0, fr15, fr15
17260 + fsub.s fr15, fr0, fr15
17261 + fsub.s fr15, fr15, fr0
17262 + fsub.s fr7, fr8, fr8
17263 + fsub.s fr8, fr7, fr8
17264 + fsub.s fr8, fr8, fr7
17265 + .global fmac_s
17266 +fmac_s:
17267 + fmac.s fr15, fr15, fr15
17268 + fmac.s fr0, fr0, fr0
17269 + fmac.s fr0, fr15, fr15
17270 + fmac.s fr15, fr0, fr15
17271 + fmac.s fr15, fr15, fr0
17272 + fmac.s fr7, fr8, fr8
17273 + fmac.s fr8, fr7, fr8
17274 + fmac.s fr8, fr8, fr7
17275 + .global fnmac_s
17276 +fnmac_s:
17277 + fnmac.s fr15, fr15, fr15
17278 + fnmac.s fr0, fr0, fr0
17279 + fnmac.s fr0, fr15, fr15
17280 + fnmac.s fr15, fr0, fr15
17281 + fnmac.s fr15, fr15, fr0
17282 + fnmac.s fr7, fr8, fr8
17283 + fnmac.s fr8, fr7, fr8
17284 + fnmac.s fr8, fr8, fr7
17285 + .global fmsc_s
17286 +fmsc_s:
17287 + fmsc.s fr15, fr15, fr15
17288 + fmsc.s fr0, fr0, fr0
17289 + fmsc.s fr0, fr15, fr15
17290 + fmsc.s fr15, fr0, fr15
17291 + fmsc.s fr15, fr15, fr0
17292 + fmsc.s fr7, fr8, fr8
17293 + fmsc.s fr8, fr7, fr8
17294 + fmsc.s fr8, fr8, fr7
17295 + .global fnmsc_s
17296 +fnmsc_s:
17297 + fnmsc.s fr15, fr15, fr15
17298 + fnmsc.s fr0, fr0, fr0
17299 + fnmsc.s fr0, fr15, fr15
17300 + fnmsc.s fr15, fr0, fr15
17301 + fnmsc.s fr15, fr15, fr0
17302 + fnmsc.s fr7, fr8, fr8
17303 + fnmsc.s fr8, fr7, fr8
17304 + fnmsc.s fr8, fr8, fr7
17305 + .global fmul_s
17306 +fmul_s:
17307 + fmul.s fr15, fr15, fr15
17308 + fmul.s fr0, fr0, fr0
17309 + fmul.s fr0, fr15, fr15
17310 + fmul.s fr15, fr0, fr15
17311 + fmul.s fr15, fr15, fr0
17312 + fmul.s fr7, fr8, fr8
17313 + fmul.s fr8, fr7, fr8
17314 + fmul.s fr8, fr8, fr7
17315 + .global fnmul_s
17316 +fnmul_s:
17317 + fnmul.s fr15, fr15, fr15
17318 + fnmul.s fr0, fr0, fr0
17319 + fnmul.s fr0, fr15, fr15
17320 + fnmul.s fr15, fr0, fr15
17321 + fnmul.s fr15, fr15, fr0
17322 + fnmul.s fr7, fr8, fr8
17323 + fnmul.s fr8, fr7, fr8
17324 + fnmul.s fr8, fr8, fr7
17325 + .global fneg_s
17326 +fneg_s:
17327 + fneg.s fr15, fr15
17328 + fneg.s fr0, fr0
17329 + fneg.s fr0, fr15
17330 + fneg.s fr15, fr0
17331 + fneg.s fr7, fr8
17332 + fneg.s fr8, fr7
17333 + .global fabs_s
17334 +fabs_s:
17335 + fabs.s fr15, fr15
17336 + fabs.s fr0, fr0
17337 + fabs.s fr0, fr15
17338 + fabs.s fr15, fr0
17339 + fabs.s fr7, fr8
17340 + fabs.s fr8, fr7
17341 + .global fcmp_s
17342 +fcmp_s:
17343 + fcmp.s fr15, fr15
17344 + fcmp.s fr0, fr0
17345 + fcmp.s fr0, fr15
17346 + fcmp.s fr15, fr0
17347 + fcmp.s fr7, fr8
17348 + fcmp.s fr8, fr7
17349 + .global fadd_d
17350 +fadd_d:
17351 + fadd.d fr14, fr14, fr14
17352 + fadd.d fr0, fr0, fr0
17353 + fadd.d fr0, fr14, fr14
17354 + fadd.d fr14, fr0, fr14
17355 + fadd.d fr14, fr14, fr0
17356 + fadd.d fr6, fr8, fr8
17357 + fadd.d fr8, fr6, fr8
17358 + fadd.d fr8, fr8, fr6
17359 + .global fsub_d
17360 +fsub_d:
17361 + fsub.d fr14, fr14, fr14
17362 + fsub.d fr0, fr0, fr0
17363 + fsub.d fr0, fr14, fr14
17364 + fsub.d fr14, fr0, fr14
17365 + fsub.d fr14, fr14, fr0
17366 + fsub.d fr6, fr8, fr8
17367 + fsub.d fr8, fr6, fr8
17368 + fsub.d fr8, fr8, fr6
17369 + .global fmac_d
17370 +fmac_d:
17371 + fmac.d fr14, fr14, fr14
17372 + fmac.d fr0, fr0, fr0
17373 + fmac.d fr0, fr14, fr14
17374 + fmac.d fr14, fr0, fr14
17375 + fmac.d fr14, fr14, fr0
17376 + fmac.d fr6, fr8, fr8
17377 + fmac.d fr8, fr6, fr8
17378 + fmac.d fr8, fr8, fr6
17379 + .global fnmac_d
17380 +fnmac_d:
17381 + fnmac.d fr14, fr14, fr14
17382 + fnmac.d fr0, fr0, fr0
17383 + fnmac.d fr0, fr14, fr14
17384 + fnmac.d fr14, fr0, fr14
17385 + fnmac.d fr14, fr14, fr0
17386 + fnmac.d fr6, fr8, fr8
17387 + fnmac.d fr8, fr6, fr8
17388 + fnmac.d fr8, fr8, fr6
17389 + .global fmsc_d
17390 +fmsc_d:
17391 + fmsc.d fr14, fr14, fr14
17392 + fmsc.d fr0, fr0, fr0
17393 + fmsc.d fr0, fr14, fr14
17394 + fmsc.d fr14, fr0, fr14
17395 + fmsc.d fr14, fr14, fr0
17396 + fmsc.d fr6, fr8, fr8
17397 + fmsc.d fr8, fr6, fr8
17398 + fmsc.d fr8, fr8, fr6
17399 + .global fnmsc_d
17400 +fnmsc_d:
17401 + fnmsc.d fr14, fr14, fr14
17402 + fnmsc.d fr0, fr0, fr0
17403 + fnmsc.d fr0, fr14, fr14
17404 + fnmsc.d fr14, fr0, fr14
17405 + fnmsc.d fr14, fr14, fr0
17406 + fnmsc.d fr6, fr8, fr8
17407 + fnmsc.d fr8, fr6, fr8
17408 + fnmsc.d fr8, fr8, fr6
17409 + .global fmul_d
17410 +fmul_d:
17411 + fmul.d fr14, fr14, fr14
17412 + fmul.d fr0, fr0, fr0
17413 + fmul.d fr0, fr14, fr14
17414 + fmul.d fr14, fr0, fr14
17415 + fmul.d fr14, fr14, fr0
17416 + fmul.d fr6, fr8, fr8
17417 + fmul.d fr8, fr6, fr8
17418 + fmul.d fr8, fr8, fr6
17419 + .global fnmul_d
17420 +fnmul_d:
17421 + fnmul.d fr14, fr14, fr14
17422 + fnmul.d fr0, fr0, fr0
17423 + fnmul.d fr0, fr14, fr14
17424 + fnmul.d fr14, fr0, fr14
17425 + fnmul.d fr14, fr14, fr0
17426 + fnmul.d fr6, fr8, fr8
17427 + fnmul.d fr8, fr6, fr8
17428 + fnmul.d fr8, fr8, fr6
17429 + .global fneg_d
17430 +fneg_d:
17431 + fneg.d fr14, fr14
17432 + fneg.d fr0, fr0
17433 + fneg.d fr0, fr14
17434 + fneg.d fr14, fr0
17435 + fneg.d fr6, fr8
17436 + fneg.d fr8, fr6
17437 + .global fabs_d
17438 +fabs_d:
17439 + fabs.d fr14, fr14
17440 + fabs.d fr0, fr0
17441 + fabs.d fr0, fr14
17442 + fabs.d fr14, fr0
17443 + fabs.d fr6, fr8
17444 + fabs.d fr8, fr6
17445 + .global fcmp_d
17446 +fcmp_d:
17447 + fcmp.d fr14, fr14
17448 + fcmp.d fr0, fr0
17449 + fcmp.d fr0, fr14
17450 + fcmp.d fr14, fr0
17451 + fcmp.d fr6, fr8
17452 + fcmp.d fr8, fr6
17453 + .global fmov_s
17454 +fmov_s:
17455 + fmov.s fr15, fr15
17456 + fmov.s fr0, fr0
17457 + fmov.s fr15, fr0
17458 + fmov.s fr0, fr15
17459 + fmov.s fr8, fr7
17460 + fmov.s fr7, fr8
17461 + fmov.s pc, fr15
17462 + fmov.s r0, fr0
17463 + fmov.s pc, fr0
17464 + fmov.s r0, fr15
17465 + fmov.s r8, fr7
17466 + fmov.s r7, fr8
17467 + fmov.s fr15, pc
17468 + fmov.s fr0, r0
17469 + fmov.s fr15, r0
17470 + fmov.s fr0, pc
17471 + fmov.s fr8, r7
17472 + fmov.s fr7, r8
17473 + .global fmov_d
17474 +fmov_d:
17475 + fmov.d fr14, fr14
17476 + fmov.d fr0, fr0
17477 + fmov.d fr14, fr0
17478 + fmov.d fr0, fr14
17479 + fmov.d fr8, fr6
17480 + fmov.d fr6, fr8
17481 + fmov.d lr, fr14
17482 + fmov.d r0, fr0
17483 + fmov.d lr, fr0
17484 + fmov.d r0, fr14
17485 + fmov.d r8, fr6
17486 + fmov.d r6, fr8
17487 + fmov.d fr14, lr
17488 + fmov.d fr0, r0
17489 + fmov.d fr14, r0
17490 + fmov.d fr0, lr
17491 + fmov.d fr8, r6
17492 + fmov.d fr6, r8
17493 + .global fcasts_d
17494 +fcasts_d:
17495 + fcasts.d fr15, fr14
17496 + fcasts.d fr0, fr0
17497 + fcasts.d fr15, fr0
17498 + fcasts.d fr0, fr14
17499 + fcasts.d fr8, fr6
17500 + fcasts.d fr7, fr8
17501 + .global fcastd_s
17502 +fcastd_s:
17503 + fcastd.s fr14, fr15
17504 + fcastd.s fr0, fr0
17505 + fcastd.s fr14, fr0
17506 + fcastd.s fr0, fr15
17507 + fcastd.s fr8, fr7
17508 + fcastd.s fr6, fr8
17509 Index: binutils-2.18/gas/testsuite/gas/avr32/hwrd-lwrd.d
17510 ===================================================================
17511 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17512 +++ binutils-2.18/gas/testsuite/gas/avr32/hwrd-lwrd.d 2008-11-25 15:25:40.000000000 +0100
17513 @@ -0,0 +1,47 @@
17514 +#as:
17515 +#objdump: -dr
17516 +#name: hwrd-lwrd
17517 +
17518 +.*: +file format .*
17519 +
17520 +Disassembly of section \.text:
17521 +
17522 +00000000 <test_hwrd>:
17523 + 0: e0 60 87 65 mov r0,34661
17524 + 4: e0 60 12 34 mov r0,4660
17525 + 8: e0 60 00 00 mov r0,0
17526 + 8: R_AVR32_HI16 \.text\+0x60
17527 + c: e0 60 00 00 mov r0,0
17528 + c: R_AVR32_HI16 extsym1
17529 + 10: ea 10 87 65 orh r0,0x8765
17530 + 14: ea 10 12 34 orh r0,0x1234
17531 + 18: ea 10 00 00 orh r0,0x0
17532 + 18: R_AVR32_HI16 \.text\+0x60
17533 + 1c: ea 10 00 00 orh r0,0x0
17534 + 1c: R_AVR32_HI16 extsym1
17535 + 20: e4 10 87 65 andh r0,0x8765
17536 + 24: e4 10 12 34 andh r0,0x1234
17537 + 28: e4 10 00 00 andh r0,0x0
17538 + 28: R_AVR32_HI16 \.text\+0x60
17539 + 2c: e4 10 00 00 andh r0,0x0
17540 + 2c: R_AVR32_HI16 extsym1
17541 +
17542 +00000030 <test_lwrd>:
17543 + 30: e0 60 43 21 mov r0,17185
17544 + 34: e0 60 56 78 mov r0,22136
17545 + 38: e0 60 00 00 mov r0,0
17546 + 38: R_AVR32_LO16 \.text\+0x60
17547 + 3c: e0 60 00 00 mov r0,0
17548 + 3c: R_AVR32_LO16 extsym1
17549 + 40: e8 10 43 21 orl r0,0x4321
17550 + 44: e8 10 56 78 orl r0,0x5678
17551 + 48: e8 10 00 00 orl r0,0x0
17552 + 48: R_AVR32_LO16 \.text\+0x60
17553 + 4c: e8 10 00 00 orl r0,0x0
17554 + 4c: R_AVR32_LO16 extsym1
17555 + 50: e0 10 43 21 andl r0,0x4321
17556 + 54: e0 10 56 78 andl r0,0x5678
17557 + 58: e0 10 00 00 andl r0,0x0
17558 + 58: R_AVR32_LO16 \.text\+0x60
17559 + 5c: e0 10 00 00 andl r0,0x0
17560 + 5c: R_AVR32_LO16 extsym1
17561 Index: binutils-2.18/gas/testsuite/gas/avr32/hwrd-lwrd.s
17562 ===================================================================
17563 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17564 +++ binutils-2.18/gas/testsuite/gas/avr32/hwrd-lwrd.s 2008-11-25 15:25:40.000000000 +0100
17565 @@ -0,0 +1,39 @@
17566 +
17567 + .equ sym1, 0x12345678
17568 +
17569 + .text
17570 + .global test_hwrd
17571 +test_hwrd:
17572 + mov r0, hi(0x87654321)
17573 + mov r0, hi(sym1)
17574 + mov r0, hi(sym2)
17575 + mov r0, hi(extsym1)
17576 +
17577 + orh r0, hi(0x87654321)
17578 + orh r0, hi(sym1)
17579 + orh r0, hi(sym2)
17580 + orh r0, hi(extsym1)
17581 +
17582 + andh r0, hi(0x87654321)
17583 + andh r0, hi(sym1)
17584 + andh r0, hi(sym2)
17585 + andh r0, hi(extsym1)
17586 +
17587 + .global test_lwrd
17588 +test_lwrd:
17589 + mov r0, lo(0x87654321)
17590 + mov r0, lo(sym1)
17591 + mov r0, lo(sym2)
17592 + mov r0, lo(extsym1)
17593 +
17594 + orl r0, lo(0x87654321)
17595 + orl r0, lo(sym1)
17596 + orl r0, lo(sym2)
17597 + orl r0, lo(extsym1)
17598 +
17599 + andl r0, lo(0x87654321)
17600 + andl r0, lo(sym1)
17601 + andl r0, lo(sym2)
17602 + andl r0, lo(extsym1)
17603 +
17604 +sym2:
17605 Index: binutils-2.18/gas/testsuite/gas/avr32/jmptable.d
17606 ===================================================================
17607 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17608 +++ binutils-2.18/gas/testsuite/gas/avr32/jmptable.d 2008-11-25 15:25:40.000000000 +0100
17609 @@ -0,0 +1,20 @@
17610 +#source: jmptable.s
17611 +#as:
17612 +#objdump: -dr
17613 +#name: jmptable
17614 +
17615 +.*: +file format .*
17616 +
17617 +Disassembly of section \.text:
17618 +
17619 +00000000 <jmptable_test>:
17620 + 0: fe c8 ff f4 sub r8,pc,-12
17621 + 4: f0 00 00 2f add pc,r8,r0<<0x2
17622 + 8: d7 03 nop
17623 + a: 00 00 add r0,r0
17624 + c: c0 38 rjmp 12 <jmptable_test\+0x12>
17625 + e: c0 38 rjmp 14 <jmptable_test\+0x14>
17626 + 10: c0 38 rjmp 16 <jmptable_test\+0x16>
17627 + 12: d7 03 nop
17628 + 14: d7 03 nop
17629 + 16: d7 03 nop
17630 Index: binutils-2.18/gas/testsuite/gas/avr32/jmptable_linkrelax.d
17631 ===================================================================
17632 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17633 +++ binutils-2.18/gas/testsuite/gas/avr32/jmptable_linkrelax.d 2008-11-25 15:25:40.000000000 +0100
17634 @@ -0,0 +1,25 @@
17635 +#source: jmptable.s
17636 +#as: --linkrelax
17637 +#objdump: -dr
17638 +#name: jmptable_linkrelax
17639 +
17640 +.*: +file format .*
17641 +
17642 +Disassembly of section \.text:
17643 +
17644 +00000000 <jmptable_test>:
17645 + 0: fe c8 00 00 sub r8,pc,0
17646 + 0: R_AVR32_16N_PCREL \.text\+0xc
17647 + 4: f0 00 00 2f add pc,r8,r0<<0x2
17648 + 8: d7 03 nop
17649 + a: 00 00 add r0,r0
17650 + a: R_AVR32_ALIGN \*ABS\*\+0x2
17651 + c: c0 08 rjmp c <jmptable_test\+0xc>
17652 + c: R_AVR32_11H_PCREL \.text\+0x12
17653 + e: c0 08 rjmp e <jmptable_test\+0xe>
17654 + e: R_AVR32_11H_PCREL \.text\+0x14
17655 + 10: c0 08 rjmp 10 <jmptable_test\+0x10>
17656 + 10: R_AVR32_11H_PCREL \.text\+0x16
17657 + 12: d7 03 nop
17658 + 14: d7 03 nop
17659 + 16: d7 03 nop
17660 Index: binutils-2.18/gas/testsuite/gas/avr32/jmptable.s
17661 ===================================================================
17662 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17663 +++ binutils-2.18/gas/testsuite/gas/avr32/jmptable.s 2008-11-25 15:25:40.000000000 +0100
17664 @@ -0,0 +1,14 @@
17665 +
17666 + .text
17667 + .global jmptable_test
17668 +jmptable_test:
17669 + sub r8, pc, -(.L1 - .)
17670 + add pc, r8, r0 << 2
17671 + nop
17672 + .align 2
17673 +.L1: rjmp 1f
17674 + rjmp 2f
17675 + rjmp 3f
17676 +1: nop
17677 +2: nop
17678 +3: nop
17679 Index: binutils-2.18/gas/testsuite/gas/avr32/lda_nopic.d
17680 ===================================================================
17681 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17682 +++ binutils-2.18/gas/testsuite/gas/avr32/lda_nopic.d 2008-11-25 15:25:40.000000000 +0100
17683 @@ -0,0 +1,32 @@
17684 +#source: lda.s
17685 +#as:
17686 +#objdump: -dr
17687 +#name: lda_nopic
17688 +
17689 +.*: +file format .*
17690 +
17691 +Disassembly of section \.text:
17692 +
17693 +00000000 <lda_test>:
17694 + 0: f2 c8 00 00 sub r8,r9,0
17695 +
17696 +00000004 <far_negative>:
17697 + 4: f6 ca 00 00 sub r10,r11,0
17698 + ...
17699 + 8000: fe c0 7f fc sub r0,pc,32764
17700 + 8004: 48 31 lddpc r1,8010 <far_negative\+0x800c>
17701 + 8006: 48 42 lddpc r2,8014 <far_negative\+0x8010>
17702 + 8008: 48 43 lddpc r3,8018 <far_negative\+0x8014>
17703 + 800a: 48 54 lddpc r4,801c <far_negative\+0x8018>
17704 + 800c: fe c5 80 04 sub r5,pc,-32764
17705 + ...
17706 + 8010: R_AVR32_32_CPENT \.text
17707 + 8014: R_AVR32_32_CPENT \.data
17708 + 8018: R_AVR32_32_CPENT undefined
17709 + 801c: R_AVR32_32_CPENT \.text\+0x1001c
17710 +
17711 +00010008 <far_positive>:
17712 + 10008: fa cc 00 00 sub r12,sp,0
17713 + ...
17714 +0001001c <toofar_positive>:
17715 + 1001c: fe ce 00 00 sub lr,pc,0
17716 Index: binutils-2.18/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d
17717 ===================================================================
17718 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17719 +++ binutils-2.18/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d 2008-11-25 15:25:40.000000000 +0100
17720 @@ -0,0 +1,41 @@
17721 +#source: lda.s
17722 +#as: --linkrelax
17723 +#objdump: -dr
17724 +#name: lda_nopic_linkrelax
17725 +
17726 +.*: +file format .*
17727 +
17728 +Disassembly of section \.text:
17729 +
17730 +00000000 <lda_test>:
17731 + 0: f2 c8 00 00 sub r8,r9,0
17732 +
17733 +00000004 <far_negative>:
17734 + 4: f6 ca 00 00 sub r10,r11,0
17735 + \.\.\.
17736 + 8000: 48 00 lddpc r0,8000 <far_negative\+0x7ffc>
17737 + 8000: R_AVR32_9W_CP \.text\+0x800c
17738 + 8002: 48 01 lddpc r1,8000 <far_negative\+0x7ffc>
17739 + 8002: R_AVR32_9W_CP \.text\+0x8010
17740 + 8004: 48 02 lddpc r2,8004 <far_negative\+0x8000>
17741 + 8004: R_AVR32_9W_CP \.text\+0x8014
17742 + 8006: 48 03 lddpc r3,8004 <far_negative\+0x8000>
17743 + 8006: R_AVR32_9W_CP \.text\+0x8018
17744 + 8008: 48 04 lddpc r4,8008 <far_negative\+0x8004>
17745 + 8008: R_AVR32_9W_CP \.text\+0x801c
17746 + 800a: 48 05 lddpc r5,8008 <far_negative\+0x8004>
17747 + 800a: R_AVR32_9W_CP \.text\+0x8020
17748 + \.\.\.
17749 + 800c: R_AVR32_ALIGN \*ABS\*\+0x2
17750 + 800c: R_AVR32_32_CPENT \.text\+0x4
17751 + 8010: R_AVR32_32_CPENT \.text
17752 + 8014: R_AVR32_32_CPENT \.data
17753 + 8018: R_AVR32_32_CPENT undefined
17754 + 801c: R_AVR32_32_CPENT \.text\+0x10020
17755 + 8020: R_AVR32_32_CPENT \.text\+0x1000c
17756 +
17757 +0001000c <far_positive>:
17758 + 1000c: fa cc 00 00 sub r12,sp,0
17759 + \.\.\.
17760 +00010020 <toofar_positive>:
17761 + 10020: fe ce 00 00 sub lr,pc,0
17762 Index: binutils-2.18/gas/testsuite/gas/avr32/lda_pic.d
17763 ===================================================================
17764 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17765 +++ binutils-2.18/gas/testsuite/gas/avr32/lda_pic.d 2008-11-25 15:25:40.000000000 +0100
17766 @@ -0,0 +1,32 @@
17767 +#source: lda.s
17768 +#as: --pic
17769 +#objdump: -dr
17770 +#name: lda_pic
17771 +
17772 +.*: +file format .*
17773 +
17774 +Disassembly of section \.text:
17775 +
17776 +00000000 <lda_test>:
17777 + 0: f2 c8 00 00 sub r8,r9,0
17778 +
17779 +00000004 <far_negative>:
17780 + 4: f6 ca 00 00 sub r10,r11,0
17781 + ...
17782 + 8000: fe c0 7f fc sub r0,pc,32764
17783 + 8004: ec f1 00 00 ld.w r1,r6\[0\]
17784 + 8004: R_AVR32_GOT16S toofar_negative
17785 + 8008: ec f2 00 00 ld.w r2,r6\[0\]
17786 + 8008: R_AVR32_GOT16S different_section
17787 + 800c: ec f3 00 00 ld.w r3,r6\[0\]
17788 + 800c: R_AVR32_GOT16S undefined
17789 + 8010: ec f4 00 00 ld.w r4,r6\[0\]
17790 + 8010: R_AVR32_GOT16S toofar_positive
17791 + 8014: fe c5 80 14 sub r5,pc,-32748
17792 + ...
17793 +
17794 +00010000 <far_positive>:
17795 + 10000: fa cc 00 00 sub r12,sp,0
17796 + ...
17797 +00010014 <toofar_positive>:
17798 + 10014: fe ce 00 00 sub lr,pc,0
17799 Index: binutils-2.18/gas/testsuite/gas/avr32/lda_pic_linkrelax.d
17800 ===================================================================
17801 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17802 +++ binutils-2.18/gas/testsuite/gas/avr32/lda_pic_linkrelax.d 2008-11-25 15:25:40.000000000 +0100
17803 @@ -0,0 +1,40 @@
17804 +#source: lda.s
17805 +#as: --pic --linkrelax
17806 +#objdump: -dr
17807 +#name: lda_pic_linkrelax
17808 +
17809 +.*: +file format .*
17810 +
17811 +Disassembly of section \.text:
17812 +
17813 +00000000 <lda_test>:
17814 + 0: f2 c8 00 00 sub r8,r9,0
17815 +
17816 +00000004 <far_negative>:
17817 + 4: f6 ca 00 00 sub r10,r11,0
17818 + ...
17819 + 8000: e0 60 00 00 mov r0,0
17820 + 8000: R_AVR32_LDA_GOT far_negative
17821 + 8004: ec 00 03 20 ld\.w r0,r6\[r0<<0x2\]
17822 + 8008: e0 61 00 00 mov r1,0
17823 + 8008: R_AVR32_LDA_GOT toofar_negative
17824 + 800c: ec 01 03 21 ld\.w r1,r6\[r1<<0x2\]
17825 + 8010: e0 62 00 00 mov r2,0
17826 + 8010: R_AVR32_LDA_GOT different_section
17827 + 8014: ec 02 03 22 ld\.w r2,r6\[r2<<0x2\]
17828 + 8018: e0 63 00 00 mov r3,0
17829 + 8018: R_AVR32_LDA_GOT undefined
17830 + 801c: ec 03 03 23 ld\.w r3,r6\[r3<<0x2\]
17831 + 8020: e0 64 00 00 mov r4,0
17832 + 8020: R_AVR32_LDA_GOT toofar_positive
17833 + 8024: ec 04 03 24 ld\.w r4,r6\[r4<<0x2\]
17834 + 8028: e0 65 00 00 mov r5,0
17835 + 8028: R_AVR32_LDA_GOT far_positive
17836 + 802c: ec 05 03 25 ld\.w r5,r6\[r5<<0x2\]
17837 + ...
17838 +
17839 +00010018 <far_positive>:
17840 + 10018: fa cc 00 00 sub r12,sp,0
17841 + ...
17842 +0001002c <toofar_positive>:
17843 + 1002c: fe ce 00 00 sub lr,pc,0
17844 Index: binutils-2.18/gas/testsuite/gas/avr32/lda.s
17845 ===================================================================
17846 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17847 +++ binutils-2.18/gas/testsuite/gas/avr32/lda.s 2008-11-25 15:25:40.000000000 +0100
17848 @@ -0,0 +1,30 @@
17849 +
17850 + .text
17851 + .global lda_test
17852 +lda_test:
17853 +toofar_negative:
17854 + sub r8, r9, 0
17855 +far_negative:
17856 + sub r10, r11, 0
17857 +
17858 + .fill 32760, 1, 0x00
17859 +
17860 + lda.w r0, far_negative
17861 + lda.w r1, toofar_negative
17862 + lda.w r2, different_section
17863 + lda.w r3, undefined
17864 + lda.w r4, toofar_positive
17865 + lda.w r5, far_positive
17866 +
17867 + .cpool
17868 +
17869 + .fill 32744, 1, 0x00
17870 +far_positive:
17871 + sub r12, sp, 0
17872 + .fill 16, 1, 0x00
17873 +toofar_positive:
17874 + sub lr, pc, 0
17875 +
17876 + .data
17877 +different_section:
17878 + .long 0x12345678
17879 Index: binutils-2.18/gas/testsuite/gas/avr32/pcrel.d
17880 ===================================================================
17881 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17882 +++ binutils-2.18/gas/testsuite/gas/avr32/pcrel.d 2008-11-25 15:25:40.000000000 +0100
17883 @@ -0,0 +1,64 @@
17884 +#as:
17885 +#objdump: -dr
17886 +#name: pcrel
17887 +
17888 +.*: +file format .*
17889 +
17890 +Disassembly of section \.text:
17891 +
17892 +00000000 <test_rjmp>:
17893 + 0: d7 03 nop
17894 + 2: c0 28 rjmp 6 <test_rjmp\+0x6>
17895 + 4: d7 03 nop
17896 + 6: e0 8f 00 00 bral 6 <test_rjmp\+0x6>
17897 + 6: R_AVR32_22H_PCREL extsym10
17898 +
17899 +0000000a <test_rcall>:
17900 + a: d7 03 nop
17901 +0000000c <test_rcall2>:
17902 + c: c0 2c rcall 10 <test_rcall2\+0x4>
17903 + e: d7 03 nop
17904 + 10: e0 a0 00 00 rcall 10 <test_rcall2\+0x4>
17905 + 10: R_AVR32_22H_PCREL extsym21
17906 +
17907 +00000014 <test_branch>:
17908 + 14: c0 31 brne 1a <test_branch\+0x6>
17909 + 16: e0 8f 00 00 bral 16 <test_branch\+0x2>
17910 + 16: R_AVR32_22H_PCREL test_branch
17911 + 1a: e0 80 00 00 breq 1a <test_branch\+0x6>
17912 + 1a: R_AVR32_22H_PCREL extsym21
17913 +
17914 +0000001e <test_lddpc>:
17915 + 1e: 48 30 lddpc r0,28 <sym1>
17916 + 20: 48 20 lddpc r0,28 <sym1>
17917 + 22: fe f0 00 00 ld.w r0,pc\[0\]
17918 + 22: R_AVR32_16B_PCREL extsym16
17919 + \.\.\.
17920 +
17921 +00000028 <sym1>:
17922 + 28: d7 03 nop
17923 + 2a: d7 03 nop
17924 +
17925 +0000002c <test_local>:
17926 + 2c: 48 20 lddpc r0,34 <test_local\+0x8>
17927 + 2e: 48 30 lddpc r0,38 <test_local\+0xc>
17928 + 30: 48 20 lddpc r0,38 <test_local\+0xc>
17929 + 32: 00 00 add r0,r0
17930 + 34: d7 03 nop
17931 + 36: d7 03 nop
17932 + 38: d7 03 nop
17933 + 3a: d7 03 nop
17934 +
17935 +Disassembly of section \.text\.init:
17936 +
17937 +00000000 <test_inter_section>:
17938 + 0: e0 a0 .. .. rcall [0-9a-f]+ <.*>
17939 + 0: R_AVR32_22H_PCREL test_rcall
17940 + 4: d7 03 nop
17941 + 6: e0 a0 .. .. rcall [0-9a-f]+ <.*>
17942 + 6: R_AVR32_22H_PCREL test_rcall
17943 + a: e0 a0 .. .. rcall [0-9a-z]+ <.*>
17944 + a: R_AVR32_22H_PCREL \.text\+0xc
17945 + e: d7 03 nop
17946 + 10: e0 a0 .. .. rcall [0-9a-f]+ <.*>
17947 + 10: R_AVR32_22H_PCREL \.text\+0xc
17948 Index: binutils-2.18/gas/testsuite/gas/avr32/pcrel.s
17949 ===================================================================
17950 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
17951 +++ binutils-2.18/gas/testsuite/gas/avr32/pcrel.s 2008-11-25 15:25:40.000000000 +0100
17952 @@ -0,0 +1,57 @@
17953 +
17954 + .text
17955 + .global test_rjmp
17956 +test_rjmp:
17957 + nop
17958 + rjmp 0f
17959 + nop
17960 +0: rjmp extsym10
17961 +
17962 + .global test_rcall
17963 +test_rcall:
17964 + nop
17965 +test_rcall2:
17966 + rcall 0f
17967 + nop
17968 +0: rcall extsym21
17969 +
17970 + .global test_branch
17971 +test_branch:
17972 + brne 0f
17973 + /* This will generate a reloc since test_branch is global */
17974 + bral test_branch
17975 +0: breq extsym21
17976 +
17977 + .global test_lddpc
17978 +test_lddpc:
17979 + lddpc r0,sym1
17980 + lddpc r0,sym1
17981 + lddpc r0,extsym16
17982 +
17983 + .align 2
17984 +sym1: nop
17985 + nop
17986 +
17987 + .global test_local
17988 +test_local:
17989 + lddpc r0, .LC1
17990 + lddpc r0, .LC2
17991 + lddpc r0, .LC1 + 0x4
17992 +
17993 + .align 2
17994 +.LC1:
17995 + nop
17996 + nop
17997 +.LC2:
17998 + nop
17999 + nop
18000 +
18001 + .section .text.init,"ax"
18002 + .global test_inter_section
18003 +test_inter_section:
18004 + rcall test_rcall
18005 + nop
18006 + rcall test_rcall
18007 + rcall test_rcall2
18008 + nop
18009 + rcall test_rcall2
18010 Index: binutils-2.18/gas/testsuite/gas/avr32/pico.d
18011 ===================================================================
18012 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
18013 +++ binutils-2.18/gas/testsuite/gas/avr32/pico.d 2008-11-25 15:25:40.000000000 +0100
18014 @@ -0,0 +1,149 @@
18015 +#as:
18016 +#objdump: -dr
18017 +#name: pico
18018 +
18019 +.*: +file format .*
18020 +
18021 +Disassembly of section \.text:
18022 +
18023 +[0-9a-f]* <picosvmac>:
18024 + *[0-9a-f]*: e1 a6 20 00 cop cp1,cr0,cr0,cr0,0xc
18025 + *[0-9a-f]*: e1 a7 2b bb cop cp1,cr11,cr11,cr11,0xe
18026 + *[0-9a-f]*: e1 a6 3a 05 cop cp1,cr10,cr0,cr5,0xd
18027 + *[0-9a-f]*: e1 a7 36 90 cop cp1,cr6,cr9,cr0,0xf
18028 +
18029 +[0-9a-f]* <picosvmul>:
18030 + *[0-9a-f]*: e1 a4 20 00 cop cp1,cr0,cr0,cr0,0x8
18031 + *[0-9a-f]*: e1 a5 2b bb cop cp1,cr11,cr11,cr11,0xa
18032 + *[0-9a-f]*: e1 a4 3a 05 cop cp1,cr10,cr0,cr5,0x9
18033 + *[0-9a-f]*: e1 a5 36 90 cop cp1,cr6,cr9,cr0,0xb
18034 +
18035 +[0-9a-f]* <picovmac>:
18036 + *[0-9a-f]*: e1 a2 20 00 cop cp1,cr0,cr0,cr0,0x4
18037 + *[0-9a-f]*: e1 a3 2b bb cop cp1,cr11,cr11,cr11,0x6
18038 + *[0-9a-f]*: e1 a2 3a 05 cop cp1,cr10,cr0,cr5,0x5
18039 + *[0-9a-f]*: e1 a3 36 90 cop cp1,cr6,cr9,cr0,0x7
18040 +
18041 +[0-9a-f]* <picovmul>:
18042 + *[0-9a-f]*: e1 a0 20 00 cop cp1,cr0,cr0,cr0,0x0
18043 + *[0-9a-f]*: e1 a1 2b bb cop cp1,cr11,cr11,cr11,0x2
18044 + *[0-9a-f]*: e1 a0 3a 05 cop cp1,cr10,cr0,cr5,0x1
18045 + *[0-9a-f]*: e1 a1 36 90 cop cp1,cr6,cr9,cr0,0x3
18046 +
18047 +[0-9a-f]* <picold_d>:
18048 + *[0-9a-f]*: e9 af 3e ff ldc\.d cp1,cr14,pc\[0x3fc\]
18049 + *[0-9a-f]*: e9 a0 30 ff ldc\.d cp1,cr0,r0\[0x3fc\]
18050 + *[0-9a-f]*: e9 a0 30 00 ldc\.d cp1,cr0,r0\[0x0\]
18051 + *[0-9a-f]*: ef a8 26 50 ldc\.d cp1,cr6,--r8
18052 + *[0-9a-f]*: ef a7 28 50 ldc\.d cp1,cr8,--r7
18053 + *[0-9a-f]*: ef aa 32 65 ldc\.d cp1,cr2,r10\[r5<<0x2\]
18054 + *[0-9a-f]*: ef a3 3c 46 ldc\.d cp1,cr12,r3\[r6\]
18055 +
18056 +[0-9a-f]* <picold_w>:
18057 + *[0-9a-f]*: e9 af 2f ff ldc\.w cp1,cr15,pc\[0x3fc\]
18058 + *[0-9a-f]*: e9 a0 20 ff ldc\.w cp1,cr0,r0\[0x3fc\]
18059 + *[0-9a-f]*: e9 a0 20 00 ldc\.w cp1,cr0,r0\[0x0\]
18060 + *[0-9a-f]*: ef a8 27 40 ldc\.w cp1,cr7,--r8
18061 + *[0-9a-f]*: ef a7 28 40 ldc\.w cp1,cr8,--r7
18062 + *[0-9a-f]*: ef aa 31 25 ldc\.w cp1,cr1,r10\[r5<<0x2\]
18063 + *[0-9a-f]*: ef a3 3d 06 ldc\.w cp1,cr13,r3\[r6\]
18064 +
18065 +[0-9a-f]* <picoldm_d>:
18066 + *[0-9a-f]*: ed af 24 ff ldcm\.d cp1,pc,cr0-cr15
18067 + *[0-9a-f]*: ed a0 24 01 ldcm\.d cp1,r0,cr0-cr1
18068 + *[0-9a-f]*: ed a7 24 80 ldcm\.d cp1,r7,cr14-cr15
18069 + *[0-9a-f]*: ed a8 24 7f ldcm\.d cp1,r8,cr0-cr13
18070 +
18071 +[0-9a-f]* <picoldm_d_pu>:
18072 + *[0-9a-f]*: ed af 34 ff ldcm\.d cp1,pc\+\+,cr0-cr15
18073 + *[0-9a-f]*: ed a0 34 01 ldcm\.d cp1,r0\+\+,cr0-cr1
18074 + *[0-9a-f]*: ed a7 34 80 ldcm\.d cp1,r7\+\+,cr14-cr15
18075 + *[0-9a-f]*: ed a8 34 7f ldcm\.d cp1,r8\+\+,cr0-cr13
18076 +
18077 +[0-9a-f]* <picoldm_w>:
18078 + *[0-9a-f]*: ed af 20 ff ldcm\.w cp1,pc,cr0-cr7
18079 + *[0-9a-f]*: ed a0 20 01 ldcm\.w cp1,r0,cr0
18080 + *[0-9a-f]*: ed a7 20 80 ldcm\.w cp1,r7,cr7
18081 + *[0-9a-f]*: ed a8 20 7f ldcm\.w cp1,r8,cr0-cr6
18082 + *[0-9a-f]*: ed af 21 ff ldcm\.w cp1,pc,cr8-cr15
18083 + *[0-9a-f]*: ed a0 21 01 ldcm\.w cp1,r0,cr8
18084 + *[0-9a-f]*: ed a7 21 80 ldcm\.w cp1,r7,cr15
18085 + *[0-9a-f]*: ed a8 21 7f ldcm\.w cp1,r8,cr8-cr14
18086 +
18087 +[0-9a-f]* <picoldm_w_pu>:
18088 + *[0-9a-f]*: ed af 30 ff ldcm\.w cp1,pc\+\+,cr0-cr7
18089 + *[0-9a-f]*: ed a0 30 01 ldcm\.w cp1,r0\+\+,cr0
18090 + *[0-9a-f]*: ed a7 30 80 ldcm\.w cp1,r7\+\+,cr7
18091 + *[0-9a-f]*: ed a8 30 7f ldcm\.w cp1,r8\+\+,cr0-cr6
18092 + *[0-9a-f]*: ed af 31 ff ldcm\.w cp1,pc\+\+,cr8-cr15
18093 + *[0-9a-f]*: ed a0 31 01 ldcm\.w cp1,r0\+\+,cr8
18094 + *[0-9a-f]*: ed a7 31 80 ldcm\.w cp1,r7\+\+,cr15
18095 + *[0-9a-f]*: ed a8 31 7f ldcm\.w cp1,r8\+\+,cr8-cr14
18096 +
18097 +[0-9a-f]* <picomv_d>:
18098 + *[0-9a-f]*: ef ae 2e 30 mvrc\.d cp1,cr14,lr
18099 + *[0-9a-f]*: ef a0 20 30 mvrc\.d cp1,cr0,r0
18100 + *[0-9a-f]*: ef a8 26 30 mvrc\.d cp1,cr6,r8
18101 + *[0-9a-f]*: ef a6 28 30 mvrc\.d cp1,cr8,r6
18102 + *[0-9a-f]*: ef ae 2e 10 mvcr\.d cp1,lr,cr14
18103 + *[0-9a-f]*: ef a0 20 10 mvcr\.d cp1,r0,cr0
18104 + *[0-9a-f]*: ef a8 26 10 mvcr\.d cp1,r8,cr6
18105 + *[0-9a-f]*: ef a6 28 10 mvcr\.d cp1,r6,cr8
18106 +
18107 +[0-9a-f]* <picomv_w>:
18108 + *[0-9a-f]*: ef af 2f 20 mvrc\.w cp1,cr15,pc
18109 + *[0-9a-f]*: ef a0 20 20 mvrc\.w cp1,cr0,r0
18110 + *[0-9a-f]*: ef a8 27 20 mvrc\.w cp1,cr7,r8
18111 + *[0-9a-f]*: ef a7 28 20 mvrc\.w cp1,cr8,r7
18112 + *[0-9a-f]*: ef af 2f 00 mvcr\.w cp1,pc,cr15
18113 + *[0-9a-f]*: ef a0 20 00 mvcr\.w cp1,r0,cr0
18114 + *[0-9a-f]*: ef a8 27 00 mvcr\.w cp1,r8,cr7
18115 + *[0-9a-f]*: ef a7 28 00 mvcr\.w cp1,r7,cr8
18116 +
18117 +[0-9a-f]* <picost_d>:
18118 + *[0-9a-f]*: eb af 3e ff stc\.d cp1,pc\[0x3fc\],cr14
18119 + *[0-9a-f]*: eb a0 30 00 stc\.d cp1,r0\[0x0\],cr0
18120 + *[0-9a-f]*: ef a8 26 70 stc\.d cp1,r8\+\+,cr6
18121 + *[0-9a-f]*: ef a7 28 70 stc\.d cp1,r7\+\+,cr8
18122 + *[0-9a-f]*: ef aa 32 e5 stc\.d cp1,r10\[r5<<0x2\],cr2
18123 + *[0-9a-f]*: ef a3 3c c6 stc\.d cp1,r3\[r6\],cr12
18124 +
18125 +[0-9a-f]* <picost_w>:
18126 + *[0-9a-f]*: eb af 2f ff stc\.w cp1,pc\[0x3fc\],cr15
18127 + *[0-9a-f]*: eb a0 20 00 stc\.w cp1,r0\[0x0\],cr0
18128 + *[0-9a-f]*: ef a8 27 60 stc\.w cp1,r8\+\+,cr7
18129 + *[0-9a-f]*: ef a7 28 60 stc\.w cp1,r7\+\+,cr8
18130 + *[0-9a-f]*: ef aa 31 a5 stc\.w cp1,r10\[r5<<0x2\],cr1
18131 + *[0-9a-f]*: ef a3 3d 86 stc\.w cp1,r3\[r6\],cr13
18132 +
18133 +[0-9a-f]* <picostm_d>:
18134 + *[0-9a-f]*: ed af 25 ff stcm\.d cp1,pc,cr0-cr15
18135 + *[0-9a-f]*: ed a0 25 01 stcm\.d cp1,r0,cr0-cr1
18136 + *[0-9a-f]*: ed a7 25 80 stcm\.d cp1,r7,cr14-cr15
18137 + *[0-9a-f]*: ed a8 25 7f stcm\.d cp1,r8,cr0-cr13
18138 +
18139 +[0-9a-f]* <picostm_d_pu>:
18140 + *[0-9a-f]*: ed af 35 ff stcm\.d cp1,--pc,cr0-cr15
18141 + *[0-9a-f]*: ed a0 35 01 stcm\.d cp1,--r0,cr0-cr1
18142 + *[0-9a-f]*: ed a7 35 80 stcm\.d cp1,--r7,cr14-cr15
18143 + *[0-9a-f]*: ed a8 35 7f stcm\.d cp1,--r8,cr0-cr13
18144 +
18145 +[0-9a-f]* <picostm_w>:
18146 + *[0-9a-f]*: ed af 22 ff stcm\.w cp1,pc,cr0-cr7
18147 + *[0-9a-f]*: ed a0 22 01 stcm\.w cp1,r0,cr0
18148 + *[0-9a-f]*: ed a7 22 80 stcm\.w cp1,r7,cr7
18149 + *[0-9a-f]*: ed a8 22 7f stcm\.w cp1,r8,cr0-cr6
18150 + *[0-9a-f]*: ed af 23 ff stcm\.w cp1,pc,cr8-cr15
18151 + *[0-9a-f]*: ed a0 23 01 stcm\.w cp1,r0,cr8
18152 + *[0-9a-f]*: ed a7 23 80 stcm\.w cp1,r7,cr15
18153 + *[0-9a-f]*: ed a8 23 7f stcm\.w cp1,r8,cr8-cr14
18154 +
18155 +[0-9a-f]* <picostm_w_pu>:
18156 + *[0-9a-f]*: ed af 32 ff stcm\.w cp1,--pc,cr0-cr7
18157 + *[0-9a-f]*: ed a0 32 01 stcm\.w cp1,--r0,cr0
18158 + *[0-9a-f]*: ed a7 32 80 stcm\.w cp1,--r7,cr7
18159 + *[0-9a-f]*: ed a8 32 7f stcm\.w cp1,--r8,cr0-cr6
18160 + *[0-9a-f]*: ed af 33 ff stcm\.w cp1,--pc,cr8-cr15
18161 + *[0-9a-f]*: ed a0 33 01 stcm\.w cp1,--r0,cr8
18162 + *[0-9a-f]*: ed a7 33 80 stcm\.w cp1,--r7,cr15
18163 + *[0-9a-f]*: ed a8 33 7f stcm\.w cp1,--r8,cr8-cr14
18164 Index: binutils-2.18/gas/testsuite/gas/avr32/pico.s
18165 ===================================================================
18166 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
18167 +++ binutils-2.18/gas/testsuite/gas/avr32/pico.s 2008-11-25 15:25:40.000000000 +0100
18168 @@ -0,0 +1,144 @@
18169 +
18170 + .text
18171 + .global picosvmac
18172 +picosvmac:
18173 + picosvmac out0, in0, in0, in0
18174 + picosvmac out2, in11, in11, in11
18175 + picosvmac out1, in10, in0, in5
18176 + picosvmac out3, in6, in9, in0
18177 + .global picosvmul
18178 +picosvmul:
18179 + picosvmul out0, in0, in0, in0
18180 + picosvmul out2, in11, in11, in11
18181 + picosvmul out1, in10, in0, in5
18182 + picosvmul out3, in6, in9, in0
18183 + .global picovmac
18184 +picovmac:
18185 + picovmac out0, in0, in0, in0
18186 + picovmac out2, in11, in11, in11
18187 + picovmac out1, in10, in0, in5
18188 + picovmac out3, in6, in9, in0
18189 + .global picovmul
18190 +picovmul:
18191 + picovmul out0, in0, in0, in0
18192 + picovmul out2, in11, in11, in11
18193 + picovmul out1, in10, in0, in5
18194 + picovmul out3, in6, in9, in0
18195 + .global picold_d
18196 +picold_d:
18197 + picold.d vmu2_out, pc[1020]
18198 + picold.d inpix2, r0[1020]
18199 + picold.d inpix2, r0[0]
18200 + picold.d coeff0_a, --r8
18201 + picold.d coeff1_a, --r7
18202 + picold.d inpix0, r10[r5 << 2]
18203 + picold.d vmu0_out, r3[r6 << 0]
18204 + .global picold_w
18205 +picold_w:
18206 + picold.w config, pc[1020]
18207 + picold.w inpix2, r0[1020]
18208 + picold.w inpix2, r0[0]
18209 + picold.w coeff0_b, --r8
18210 + picold.w coeff1_a, --r7
18211 + picold.w inpix1, r10[r5 << 2]
18212 + picold.w vmu1_out, r3[r6 << 0]
18213 + .global picoldm_d
18214 +picoldm_d:
18215 + picoldm.d pc, inpix2-config
18216 + picoldm.d r0, inpix2, inpix1
18217 + picoldm.d r7, vmu2_out, config
18218 + picoldm.d r8, inpix2-vmu1_out
18219 + .global picoldm_d_pu
18220 +picoldm_d_pu:
18221 + 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
18222 + picoldm.d r0++, inpix2, inpix1
18223 + picoldm.d r7++, vmu2_out, config
18224 + 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
18225 + .global picoldm_w
18226 +picoldm_w:
18227 + picoldm.w pc, inpix2-coeff0_b
18228 + picoldm.w r0, inpix2
18229 + picoldm.w r7, coeff0_b
18230 + picoldm.w r8, inpix2-coeff0_a
18231 + picoldm.w pc, coeff1_a-config
18232 + picoldm.w r0, coeff1_a
18233 + picoldm.w r7, config
18234 + picoldm.w r8, coeff1_a-vmu2_out
18235 + .global picoldm_w_pu
18236 +picoldm_w_pu:
18237 + picoldm.w pc++, inpix2-coeff0_b
18238 + picoldm.w r0++, inpix2
18239 + picoldm.w r7++, coeff0_b
18240 + picoldm.w r8++, inpix2-coeff0_a
18241 + picoldm.w pc++, coeff1_a-config
18242 + picoldm.w r0++, coeff1_a
18243 + picoldm.w r7++, config
18244 + picoldm.w r8++, coeff1_a-vmu2_out
18245 + .global picomv_d
18246 +picomv_d:
18247 + picomv.d vmu2_out, lr
18248 + picomv.d inpix2, r0
18249 + picomv.d coeff0_a, r8
18250 + picomv.d coeff1_a, r6
18251 + picomv.d pc, vmu2_out
18252 + picomv.d r0, inpix2
18253 + picomv.d r8, coeff0_a
18254 + picomv.d r6, coeff1_a
18255 + .global picomv_w
18256 +picomv_w:
18257 + picomv.w config, pc
18258 + picomv.w inpix2, r0
18259 + picomv.w coeff0_b, r8
18260 + picomv.w coeff1_a, r7
18261 + picomv.w pc, config
18262 + picomv.w r0, inpix2
18263 + picomv.w r8, coeff0_b
18264 + picomv.w r7, coeff1_a
18265 + .global picost_d
18266 +picost_d:
18267 + picost.d pc[1020], vmu2_out
18268 + picost.d r0[0], inpix2
18269 + picost.d r8++, coeff0_a
18270 + picost.d r7++, coeff1_a
18271 + picost.d r10[r5 << 2], inpix0
18272 + picost.d r3[r6 << 0], vmu0_out
18273 + .global picost_w
18274 +picost_w:
18275 + picost.w pc[1020], config
18276 + picost.w r0[0], inpix2
18277 + picost.w r8++, coeff0_b
18278 + picost.w r7++, coeff1_a
18279 + picost.w r10[r5 << 2], inpix1
18280 + picost.w r3[r6 << 0], vmu1_out
18281 + .global picostm_d
18282 +picostm_d:
18283 + picostm.d pc, inpix2-config
18284 + picostm.d r0, inpix2, inpix1
18285 + picostm.d r7, vmu2_out, config
18286 + picostm.d r8, inpix2-vmu1_out
18287 + .global picostm_d_pu
18288 +picostm_d_pu:
18289 + 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
18290 + picostm.d --r0, inpix2, inpix1
18291 + picostm.d --r7, vmu2_out, config
18292 + 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
18293 + .global picostm_w
18294 +picostm_w:
18295 + picostm.w pc, inpix2-coeff0_b
18296 + picostm.w r0, inpix2
18297 + picostm.w r7, coeff0_b
18298 + picostm.w r8, inpix2-coeff0_a
18299 + picostm.w pc, coeff1_a-config
18300 + picostm.w r0, coeff1_a
18301 + picostm.w r7, config
18302 + picostm.w r8, coeff1_a-vmu2_out
18303 + .global picostm_w_pu
18304 +picostm_w_pu:
18305 + picostm.w --pc, inpix2-coeff0_b
18306 + picostm.w --r0, inpix2
18307 + picostm.w --r7, coeff0_b
18308 + picostm.w --r8, inpix2-coeff0_a
18309 + picostm.w --pc, coeff1_a-config
18310 + picostm.w --r0, coeff1_a
18311 + picostm.w --r7, config
18312 + picostm.w --r8, coeff1_a-vmu2_out
18313 Index: binutils-2.18/gas/testsuite/gas/avr32/pic_reloc.d
18314 ===================================================================
18315 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
18316 +++ binutils-2.18/gas/testsuite/gas/avr32/pic_reloc.d 2008-11-25 15:25:40.000000000 +0100
18317 @@ -0,0 +1,27 @@
18318 +#as:
18319 +#objdump: -dr
18320 +#name: pic_reloc
18321 +
18322 +.*: +file format .*
18323 +
18324 +Disassembly of section \.text:
18325 +
18326 +00000000 <mcall_got>:
18327 + 0: f0 16 00 00 mcall r6\[0\]
18328 + 0: R_AVR32_GOT18SW extfunc
18329 + 4: f0 16 00 00 mcall r6\[0\]
18330 + 4: R_AVR32_GOT18SW \.L1
18331 + 8: f0 16 00 00 mcall r6\[0\]
18332 + 8: R_AVR32_GOT18SW \.L2
18333 + c: f0 16 00 00 mcall r6\[0\]
18334 + c: R_AVR32_GOT18SW mcall_got
18335 +
18336 +00000010 <ldw_got>:
18337 + 10: ec f0 00 00 ld.w r0,r6\[0\]
18338 + 10: R_AVR32_GOT16S extvar
18339 + 14: ec f0 00 00 ld.w r0,r6\[0\]
18340 + 14: R_AVR32_GOT16S \.L3
18341 + 18: ec f0 00 00 ld.w r0,r6\[0\]
18342 + 18: R_AVR32_GOT16S \.L4
18343 + 1c: ec f0 00 00 ld.w r0,r6\[0\]
18344 + 1c: R_AVR32_GOT16S ldw_got
18345 Index: binutils-2.18/gas/testsuite/gas/avr32/pic_reloc.s
18346 ===================================================================
18347 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
18348 +++ binutils-2.18/gas/testsuite/gas/avr32/pic_reloc.s 2008-11-25 15:25:40.000000000 +0100
18349 @@ -0,0 +1,18 @@
18350 +
18351 + .text
18352 + .global mcall_got
18353 +mcall_got:
18354 +.L1:
18355 + mcall r6[extfunc@got]
18356 + mcall r6[.L1@got]
18357 + mcall r6[.L2@got]
18358 + mcall r6[mcall_got@got]
18359 +.L2:
18360 +
18361 + .global ldw_got
18362 +ldw_got:
18363 +.L3: ld.w r0,r6[extvar@got]
18364 + ld.w r0,r6[.L3@got]
18365 + ld.w r0,r6[.L4@got]
18366 + ld.w r0,r6[ldw_got@got]
18367 +.L4:
18368 Index: binutils-2.18/gas/testsuite/gas/avr32/symdiff.d
18369 ===================================================================
18370 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
18371 +++ binutils-2.18/gas/testsuite/gas/avr32/symdiff.d 2008-11-25 15:25:40.000000000 +0100
18372 @@ -0,0 +1,24 @@
18373 +#source: symdiff.s
18374 +#as:
18375 +#objdump: -dr
18376 +#name: symdiff
18377 +
18378 +.*: +file format .*
18379 +
18380 +Disassembly of section \.text:
18381 +
18382 +00000000 <diff32>:
18383 + 0: 00 00 add r0,r0
18384 + 2: 00 04 add r4,r0
18385 +
18386 +00000004 <diff16>:
18387 + 4: 00 04 add r4,r0
18388 +
18389 +00000006 <diff8>:
18390 + 6: 04 00 add r0,r2
18391 +
18392 +00000008 <symdiff_test>:
18393 + 8: d7 03 nop
18394 + a: d7 03 nop
18395 + c: d7 03 nop
18396 + e: d7 03 nop
18397 Index: binutils-2.18/gas/testsuite/gas/avr32/symdiff_linkrelax.d
18398 ===================================================================
18399 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
18400 +++ binutils-2.18/gas/testsuite/gas/avr32/symdiff_linkrelax.d 2008-11-25 15:25:40.000000000 +0100
18401 @@ -0,0 +1,28 @@
18402 +#source: symdiff.s
18403 +#as: --linkrelax
18404 +#objdump: -dr
18405 +#name: symdiff_linkrelax
18406 +
18407 +.*: +file format .*
18408 +
18409 +Disassembly of section \.text:
18410 +
18411 +00000000 <diff32>:
18412 + 0: 00 00 add r0,r0
18413 + 0: R_AVR32_DIFF32 \.text\+0xa
18414 + 2: 00 04 add r4,r0
18415 +
18416 +00000004 <diff16>:
18417 + 4: 00 04 add r4,r0
18418 + 4: R_AVR32_DIFF16 \.text\+0xa
18419 +
18420 +00000006 <diff8>:
18421 + 6: 04 00 add r0,r2
18422 + 6: R_AVR32_DIFF8 \.text\+0xa
18423 + 7: R_AVR32_ALIGN \*ABS\*\+0x1
18424 +
18425 +00000008 <symdiff_test>:
18426 + 8: d7 03 nop
18427 + a: d7 03 nop
18428 + c: d7 03 nop
18429 + e: d7 03 nop
18430 Index: binutils-2.18/gas/testsuite/gas/avr32/symdiff.s
18431 ===================================================================
18432 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
18433 +++ binutils-2.18/gas/testsuite/gas/avr32/symdiff.s 2008-11-25 15:25:40.000000000 +0100
18434 @@ -0,0 +1,19 @@
18435 +
18436 + .text
18437 + .global diff32
18438 +diff32:
18439 + .long .L2 - .L1
18440 + .global diff16
18441 +diff16:
18442 + .short .L2 - .L1
18443 + .global diff8
18444 +diff8:
18445 + .byte .L2 - .L1
18446 +
18447 + .global symdiff_test
18448 + .align 1
18449 +symdiff_test:
18450 + nop
18451 +.L1: nop
18452 + nop
18453 +.L2: nop
18454 Index: binutils-2.18/gas/write.c
18455 ===================================================================
18456 --- binutils-2.18.orig/gas/write.c 2008-11-25 15:24:48.000000000 +0100
18457 +++ binutils-2.18/gas/write.c 2008-11-25 15:25:40.000000000 +0100
18458 @@ -1955,6 +1955,10 @@
18459
18460 #endif /* defined (TC_GENERIC_RELAX_TABLE) */
18461
18462 +#ifdef TC_RELAX_ALIGN
18463 +#define RELAX_ALIGN(SEG, FRAG, ADDR) TC_RELAX_ALIGN(SEG, FRAG, ADDR)
18464 +#else
18465 +#define RELAX_ALIGN(SEG, FRAG, ADDR) relax_align(ADDR, (FRAG)->fr_offset)
18466 /* Relax_align. Advance location counter to next address that has 'alignment'
18467 lowest order bits all 0s, return size of adjustment made. */
18468 static relax_addressT
18469 @@ -1974,6 +1978,7 @@
18470 #endif
18471 return (new_address - address);
18472 }
18473 +#endif
18474
18475 /* Now we have a segment, not a crowd of sub-segments, we can make
18476 fr_address values.
18477 @@ -2017,7 +2022,7 @@
18478 case rs_align_code:
18479 case rs_align_test:
18480 {
18481 - addressT offset = relax_align (address, (int) fragP->fr_offset);
18482 + addressT offset = RELAX_ALIGN(segment, fragP, address);
18483
18484 if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype)
18485 offset = 0;
18486 @@ -2218,10 +2223,10 @@
18487 {
18488 addressT oldoff, newoff;
18489
18490 - oldoff = relax_align (was_address + fragP->fr_fix,
18491 - (int) offset);
18492 - newoff = relax_align (address + fragP->fr_fix,
18493 - (int) offset);
18494 + oldoff = RELAX_ALIGN (segment, fragP,
18495 + was_address + fragP->fr_fix);
18496 + newoff = RELAX_ALIGN (segment, fragP,
18497 + address + fragP->fr_fix);
18498
18499 if (fragP->fr_subtype != 0)
18500 {
18501 Index: binutils-2.18/include/dis-asm.h
18502 ===================================================================
18503 --- binutils-2.18.orig/include/dis-asm.h 2008-11-25 15:24:48.000000000 +0100
18504 +++ binutils-2.18/include/dis-asm.h 2008-11-25 15:25:40.000000000 +0100
18505 @@ -204,13 +204,14 @@
18506
18507 } disassemble_info;
18508
18509 -\f
18510 +
18511 /* Standard disassemblers. Disassemble one instruction at the given
18512 target address. Return number of octets processed. */
18513 typedef int (*disassembler_ftype) (bfd_vma, disassemble_info *);
18514
18515 extern int print_insn_alpha (bfd_vma, disassemble_info *);
18516 extern int print_insn_avr (bfd_vma, disassemble_info *);
18517 +extern int print_insn_avr32 (bfd_vma, disassemble_info *);
18518 extern int print_insn_bfin (bfd_vma, disassemble_info *);
18519 extern int print_insn_big_arm (bfd_vma, disassemble_info *);
18520 extern int print_insn_big_mips (bfd_vma, disassemble_info *);
18521 @@ -242,7 +243,7 @@
18522 extern int print_insn_little_mips (bfd_vma, disassemble_info *);
18523 extern int print_insn_little_or32 (bfd_vma, disassemble_info *);
18524 extern int print_insn_little_powerpc (bfd_vma, disassemble_info *);
18525 -extern int print_insn_little_score (bfd_vma, disassemble_info *);
18526 +extern int print_insn_little_score (bfd_vma, disassemble_info *);
18527 extern int print_insn_m32c (bfd_vma, disassemble_info *);
18528 extern int print_insn_m32r (bfd_vma, disassemble_info *);
18529 extern int print_insn_m68hc11 (bfd_vma, disassemble_info *);
18530 @@ -290,7 +291,9 @@
18531 extern void print_mips_disassembler_options (FILE *);
18532 extern void print_ppc_disassembler_options (FILE *);
18533 extern void print_arm_disassembler_options (FILE *);
18534 +extern void print_avr32_disassembler_options (FILE *);
18535 extern void parse_arm_disassembler_option (char *);
18536 +extern void parse_avr32_disassembler_option (char *);
18537 extern int get_arm_regname_num_options (void);
18538 extern int set_arm_regname_option (int);
18539 extern int get_arm_regnames (int, const char **, const char **, const char *const **);
18540 @@ -306,7 +309,7 @@
18541 /* Document any target specific options available from the disassembler. */
18542 extern void disassembler_usage (FILE *);
18543
18544 -\f
18545 +
18546 /* This block of definitions is for particular callers who read instructions
18547 into a buffer before calling the instruction decoder. */
18548
18549 Index: binutils-2.18/include/elf/avr32.h
18550 ===================================================================
18551 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
18552 +++ binutils-2.18/include/elf/avr32.h 2008-11-25 15:25:40.000000000 +0100
18553 @@ -0,0 +1,98 @@
18554 +/* AVR32 ELF support for BFD.
18555 + Copyright 2003-2006 Atmel Corporation.
18556 +
18557 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
18558 +
18559 + This file is part of BFD, the Binary File Descriptor library.
18560 +
18561 + This program is free software; you can redistribute it and/or
18562 + modify it under the terms of the GNU General Public License as
18563 + published by the Free Software Foundation; either version 2 of the
18564 + License, or (at your option) any later version.
18565 +
18566 + This program is distributed in the hope that it will be useful, but
18567 + WITHOUT ANY WARRANTY; without even the implied warranty of
18568 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18569 + General Public License for more details.
18570 +
18571 + You should have received a copy of the GNU General Public License
18572 + along with this program; if not, write to the Free Software
18573 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18574 + 02111-1307, USA. */
18575 +
18576 +#include "elf/reloc-macros.h"
18577 +
18578 +/* CPU-specific flags for the ELF header e_flags field */
18579 +#define EF_AVR32_LINKRELAX 0x01
18580 +#define EF_AVR32_PIC 0x02
18581 +
18582 +START_RELOC_NUMBERS (elf_avr32_reloc_type)
18583 + RELOC_NUMBER (R_AVR32_NONE, 0)
18584 +
18585 + /* Data Relocations */
18586 + RELOC_NUMBER (R_AVR32_32, 1)
18587 + RELOC_NUMBER (R_AVR32_16, 2)
18588 + RELOC_NUMBER (R_AVR32_8, 3)
18589 + RELOC_NUMBER (R_AVR32_32_PCREL, 4)
18590 + RELOC_NUMBER (R_AVR32_16_PCREL, 5)
18591 + RELOC_NUMBER (R_AVR32_8_PCREL, 6)
18592 + RELOC_NUMBER (R_AVR32_DIFF32, 7)
18593 + RELOC_NUMBER (R_AVR32_DIFF16, 8)
18594 + RELOC_NUMBER (R_AVR32_DIFF8, 9)
18595 + RELOC_NUMBER (R_AVR32_GOT32, 10)
18596 + RELOC_NUMBER (R_AVR32_GOT16, 11)
18597 + RELOC_NUMBER (R_AVR32_GOT8, 12)
18598 +
18599 + /* Normal Code Relocations */
18600 + RELOC_NUMBER (R_AVR32_21S, 13)
18601 + RELOC_NUMBER (R_AVR32_16U, 14)
18602 + RELOC_NUMBER (R_AVR32_16S, 15)
18603 + RELOC_NUMBER (R_AVR32_8S, 16)
18604 + RELOC_NUMBER (R_AVR32_8S_EXT, 17)
18605 +
18606 + /* PC-Relative Code Relocations */
18607 + RELOC_NUMBER (R_AVR32_22H_PCREL, 18)
18608 + RELOC_NUMBER (R_AVR32_18W_PCREL, 19)
18609 + RELOC_NUMBER (R_AVR32_16B_PCREL, 20)
18610 + RELOC_NUMBER (R_AVR32_16N_PCREL, 21)
18611 + RELOC_NUMBER (R_AVR32_14UW_PCREL, 22)
18612 + RELOC_NUMBER (R_AVR32_11H_PCREL, 23)
18613 + RELOC_NUMBER (R_AVR32_10UW_PCREL, 24)
18614 + RELOC_NUMBER (R_AVR32_9H_PCREL, 25)
18615 + RELOC_NUMBER (R_AVR32_9UW_PCREL, 26)
18616 +
18617 + /* Special Code Relocations */
18618 + RELOC_NUMBER (R_AVR32_HI16, 27)
18619 + RELOC_NUMBER (R_AVR32_LO16, 28)
18620 +
18621 + /* PIC Relocations */
18622 + RELOC_NUMBER (R_AVR32_GOTPC, 29)
18623 + RELOC_NUMBER (R_AVR32_GOTCALL, 30)
18624 + RELOC_NUMBER (R_AVR32_LDA_GOT, 31)
18625 + RELOC_NUMBER (R_AVR32_GOT21S, 32)
18626 + RELOC_NUMBER (R_AVR32_GOT18SW, 33)
18627 + RELOC_NUMBER (R_AVR32_GOT16S, 34)
18628 + RELOC_NUMBER (R_AVR32_GOT7UW, 35)
18629 +
18630 + /* Constant Pool Relocations */
18631 + RELOC_NUMBER (R_AVR32_32_CPENT, 36)
18632 + RELOC_NUMBER (R_AVR32_CPCALL, 37)
18633 + RELOC_NUMBER (R_AVR32_16_CP, 38)
18634 + RELOC_NUMBER (R_AVR32_9W_CP, 39)
18635 +
18636 + /* Dynamic Relocations */
18637 + RELOC_NUMBER (R_AVR32_RELATIVE, 40)
18638 + RELOC_NUMBER (R_AVR32_GLOB_DAT, 41)
18639 + RELOC_NUMBER (R_AVR32_JMP_SLOT, 42)
18640 +
18641 + /* Linkrelax Information */
18642 + RELOC_NUMBER (R_AVR32_ALIGN, 43)
18643 +
18644 + RELOC_NUMBER (R_AVR32_15S, 44)
18645 +
18646 +END_RELOC_NUMBERS (R_AVR32_max)
18647 +
18648 +/* Processor specific dynamic array tags. */
18649 +
18650 +/* The total size in bytes of the Global Offset Table */
18651 +#define DT_AVR32_GOTSZ 0x70000001
18652 Index: binutils-2.18/include/elf/common.h
18653 ===================================================================
18654 --- binutils-2.18.orig/include/elf/common.h 2008-11-25 15:24:48.000000000 +0100
18655 +++ binutils-2.18/include/elf/common.h 2008-11-25 15:25:40.000000000 +0100
18656 @@ -259,6 +259,9 @@
18657 /* V850 backend magic number. Written in the absense of an ABI. */
18658 #define EM_CYGNUS_V850 0x9080
18659
18660 +/* AVR32 magic number, picked by IAR Systems. */
18661 +#define EM_AVR32 0x18ad
18662 +
18663 /* old S/390 backend magic number. Written in the absence of an ABI. */
18664 #define EM_S390_OLD 0xa390
18665
18666 Index: binutils-2.18/ld/configdoc.texi
18667 ===================================================================
18668 --- binutils-2.18.orig/ld/configdoc.texi 2008-11-25 15:24:48.000000000 +0100
18669 +++ binutils-2.18/ld/configdoc.texi 2008-11-25 15:25:40.000000000 +0100
18670 @@ -7,6 +7,7 @@
18671 @set H8300
18672 @set HPPA
18673 @set I960
18674 +@set AVR32
18675 @set M68HC11
18676 @set MMIX
18677 @set MSP430
18678 Index: binutils-2.18/ld/configure.tgt
18679 ===================================================================
18680 --- binutils-2.18.orig/ld/configure.tgt 2008-11-25 15:24:48.000000000 +0100
18681 +++ binutils-2.18/ld/configure.tgt 2008-11-25 15:25:40.000000000 +0100
18682 @@ -109,6 +109,9 @@
18683 avr-*-*) targ_emul=avr2
18684 targ_extra_emuls="avr1 avr3 avr4 avr5 avr6"
18685 ;;
18686 +avr32-*-none) targ_emul=avr32elf_ap7000
18687 + 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" ;;
18688 +avr32-*-linux*) targ_emul=avr32linux ;;
18689 bfin-*-elf) targ_emul=elf32bfin;
18690 targ_extra_emuls="elf32bfinfd"
18691 targ_extra_libpath=$targ_extra_emuls
18692 Index: binutils-2.18/ld/emulparams/avr32elf.sh
18693 ===================================================================
18694 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
18695 +++ binutils-2.18/ld/emulparams/avr32elf.sh 2008-11-25 15:25:40.000000000 +0100
18696 @@ -0,0 +1,163 @@
18697 +# This script is called from ld/genscript.sh
18698 +# There is a difference on how 'bash' and POSIX handles
18699 +# the '.' (source) command in a script.
18700 +# genscript.sh calls this script with argument ${EMULATION_NAME}
18701 +# but that will fail on POSIX compilant shells like 'sh' or 'dash'
18702 +# therefor I use the variable directly instead of $1
18703 +EMULATION=${EMULATION_NAME}
18704 +SCRIPT_NAME=elf_xip
18705 +TEMPLATE_NAME=elf32
18706 +EXTRA_EM_FILE=avr32elf
18707 +OUTPUT_FORMAT="elf32-avr32"
18708 +ARCH=avr32
18709 +MAXPAGESIZE=4096
18710 +ENTRY=_start
18711 +EMBEDDED=yes
18712 +NO_SMALL_DATA=yes
18713 +NOP=0xd703d703
18714 +
18715 +DATA_SEGMENT_ALIGN=8
18716 +BSS_ALIGNMENT=8
18717 +
18718 +RO_LMA_REGION="FLASH"
18719 +RO_VMA_REGION="FLASH"
18720 +RW_LMA_REGION="FLASH"
18721 +RW_VMA_REGION="CPUSRAM"
18722 +
18723 +STACK_SIZE=0x1000
18724 +STACK_ADDR="ORIGIN(CPUSRAM) + LENGTH(CPUSRAM) - ${STACK_SIZE}"
18725 +
18726 +DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
18727 + . = ${STACK_ADDR};
18728 + __heap_end__ = .;"
18729 +
18730 +case "$EMULATION" in
18731 +avr32elf_ap*)
18732 + MACHINE=ap
18733 + INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH
18734 + . = . & 0x9fffffff;"
18735 + TEXT_START_ADDR=0xa0000000
18736 + case "$EMULATION" in
18737 + avr32elf_ap700[0-2])
18738 + MEMORY="MEMORY
18739 + {
18740 + FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
18741 + CPUSRAM (rwxa) : ORIGIN = 0x24000000, LENGTH = 32K
18742 + }"
18743 + ;;
18744 + avr32elf_ap7200)
18745 + MEMORY="MEMORY
18746 + {
18747 + FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
18748 + CPUSRAM (rwxa) : ORIGIN = 0x08000000, LENGTH = 64K
18749 + }"
18750 + ;;
18751 + esac
18752 + ;;
18753 +
18754 +avr32elf_uc3*)
18755 + MACHINE=uc
18756 + INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
18757 + TEXT_START_ADDR=0x80000000
18758 + OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
18759 + .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
18760 +
18761 + case "$EMULATION" in
18762 + avr32elf_uc3a[01]512*)
18763 + MEMORY="MEMORY
18764 + {
18765 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 512K
18766 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18767 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18768 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18769 + }"
18770 + ;;
18771 +
18772 + avr32elf_uc3a[01]256)
18773 + MEMORY="MEMORY
18774 + {
18775 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
18776 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18777 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18778 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18779 + }"
18780 + ;;
18781 +
18782 + avr32elf_uc3b[01]256*)
18783 + MEMORY="MEMORY
18784 + {
18785 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
18786 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
18787 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18788 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18789 + }"
18790 + ;;
18791 +
18792 + avr32elf_uc3[ab][01]128)
18793 + MEMORY="MEMORY
18794 + {
18795 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
18796 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
18797 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18798 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18799 + }"
18800 + ;;
18801 +
18802 + avr32elf_uc3b[01]64)
18803 + MEMORY="MEMORY
18804 + {
18805 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
18806 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 16K
18807 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18808 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18809 + }"
18810 + ;;
18811 +
18812 + avr32elf_uc3a3256*)
18813 + MEMORY="MEMORY
18814 + {
18815 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
18816 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18817 + HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
18818 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18819 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18820 + }"
18821 + OTHER_SECTIONS ="${OTHER_SECTIONS}
18822 + .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
18823 +"
18824 +
18825 + ;;
18826 +
18827 + avr32elf_uc3a3128*)
18828 + MEMORY="MEMORY
18829 + {
18830 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
18831 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18832 + HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
18833 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18834 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18835 + }"
18836 + OTHER_SECTIONS ="${OTHER_SECTIONS}
18837 + .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
18838 +"
18839 + ;;
18840 +
18841 + avr32elf_uc3a364*)
18842 + MEMORY="MEMORY
18843 + {
18844 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
18845 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18846 + HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
18847 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18848 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18849 + }"
18850 + OTHER_SECTIONS ="${OTHER_SECTIONS}
18851 + .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
18852 +"
18853 + ;;
18854 +
18855 +
18856 + esac
18857 + ;;
18858 +
18859 +esac
18860 Index: binutils-2.18/ld/emulparams/avr32linux.sh
18861 ===================================================================
18862 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
18863 +++ binutils-2.18/ld/emulparams/avr32linux.sh 2008-11-25 15:25:40.000000000 +0100
18864 @@ -0,0 +1,14 @@
18865 +ARCH=avr32
18866 +SCRIPT_NAME=elf
18867 +TEMPLATE_NAME=elf32
18868 +EXTRA_EM_FILE=avr32elf
18869 +OUTPUT_FORMAT="elf32-avr32"
18870 +GENERATE_SHLIB_SCRIPT=yes
18871 +MAXPAGESIZE=0x1000
18872 +TEXT_START_ADDR=0x00001000
18873 +NOP=0xd703d703
18874 +
18875 +# This appears to place the GOT before the data section, which is
18876 +# essential for uClinux. We don't use those .s* sections on AVR32
18877 +# anyway, so it shouldn't hurt for regular Linux either...
18878 +NO_SMALL_DATA=yes
18879 Index: binutils-2.18/ld/emultempl/avr32elf.em
18880 ===================================================================
18881 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
18882 +++ binutils-2.18/ld/emultempl/avr32elf.em 2008-11-25 15:25:40.000000000 +0100
18883 @@ -0,0 +1,133 @@
18884 +# This shell script emits a C file. -*- C -*-
18885 +# Copyright (C) 2007 Atmel Corporation
18886 +#
18887 +# This file is part of GLD, the Gnu Linker.
18888 +#
18889 +# This program is free software; you can redistribute it and/or modify
18890 +# it under the terms of the GNU General Public License as published by
18891 +# the Free Software Foundation; either version 2 of the License, or
18892 +# (at your option) any later version.
18893 +#
18894 +# This program is distributed in the hope that it will be useful,
18895 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
18896 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18897 +# GNU General Public License for more details.
18898 +#
18899 +# You should have received a copy of the GNU General Public License
18900 +# along with this program; if not, write to the Free Software
18901 +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
18902 +#
18903 +
18904 +# This file is sourced from elf32.em, and defines extra avr32-elf
18905 +# specific routines.
18906 +#
18907 +
18908 +# Generate linker script for writable rodata
18909 +LD_FLAG=rodata-writable
18910 +DATA_ALIGNMENT=${DATA_ALIGNMENT_}
18911 +RELOCATING=" "
18912 +WRITABLE_RODATA=" "
18913 +( echo "/* Linker script for writable rodata */"
18914 + . ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
18915 + . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
18916 +) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xwr
18917 +
18918 +
18919 +cat >> e${EMULATION_NAME}.c <<EOF
18920 +
18921 +#include "libbfd.h"
18922 +#include "elf32-avr32.h"
18923 +
18924 +/* Whether to allow direct references (sub or mov) to SEC_DATA and
18925 + !SEC_CONTENTS sections when optimizing. Not enabled by default
18926 + since it might cause link errors. */
18927 +static int direct_data_refs = 0;
18928 +
18929 +static void avr32_elf_after_open (void)
18930 +{
18931 + bfd_elf32_avr32_set_options (&link_info, direct_data_refs);
18932 + gld${EMULATION_NAME}_after_open ();
18933 +}
18934 +
18935 +static int rodata_writable = 0;
18936 +
18937 +static char * gld${EMULATION_NAME}_get_script (int *isfile);
18938 +
18939 +static char * avr32_elf_get_script (int *isfile)
18940 +{
18941 + if ( rodata_writable )
18942 + {
18943 +EOF
18944 +if test -n "$COMPILE_IN"
18945 +then
18946 +# Scripts compiled in.
18947 +
18948 +# sed commands to quote an ld script as a C string.
18949 +sc="-f stringify.sed"
18950 +
18951 +cat >>e${EMULATION_NAME}.c <<EOF
18952 + *isfile = 0;
18953 + return
18954 +EOF
18955 +sed $sc ldscripts/${EMULATION_NAME}.xwr >> e${EMULATION_NAME}.c
18956 +echo ';' >> e${EMULATION_NAME}.c
18957 +else
18958 +# Scripts read from the filesystem.
18959 +
18960 +cat >>e${EMULATION_NAME}.c <<EOF
18961 + *isfile = 1;
18962 + return "ldscripts/${EMULATION_NAME}.xwr";
18963 +EOF
18964 +fi
18965 +
18966 +cat >>e${EMULATION_NAME}.c <<EOF
18967 + }
18968 + return gld${EMULATION_NAME}_get_script (isfile);
18969 +}
18970 +
18971 +
18972 +EOF
18973 +
18974 +# Define some shell vars to insert bits of code into the standard elf
18975 +# parse_args and list_options functions.
18976 +#
18977 +PARSE_AND_LIST_PROLOGUE='
18978 +#define OPTION_DIRECT_DATA 300
18979 +#define OPTION_NO_DIRECT_DATA 301
18980 +#define OPTION_RODATA_WRITABLE 302
18981 +#define OPTION_NO_RODATA_WRITABLE 303
18982 +'
18983 +
18984 +PARSE_AND_LIST_LONGOPTS='
18985 + { "direct-data", no_argument, NULL, OPTION_DIRECT_DATA },
18986 + { "no-direct-data", no_argument, NULL, OPTION_NO_DIRECT_DATA },
18987 + { "rodata-writable", no_argument, NULL, OPTION_RODATA_WRITABLE },
18988 + { "no-rodata-writable", no_argument, NULL, OPTION_NO_RODATA_WRITABLE },
18989 +'
18990 +
18991 +PARSE_AND_LIST_OPTIONS='
18992 + fprintf (file, _(" --direct-data\t\tAllow direct data references when optimizing\n"));
18993 + fprintf (file, _(" --no-direct-data\tDo not allow direct data references when optimizing\n"));
18994 + fprintf (file, _(" --rodata-writable\tPut read-only data in writable data section\n"));
18995 + fprintf (file, _(" --no-rodata-writable\tDo not put read-only data in writable data section\n"));
18996 +'
18997 +
18998 +PARSE_AND_LIST_ARGS_CASES='
18999 + case OPTION_DIRECT_DATA:
19000 + direct_data_refs = 1;
19001 + break;
19002 + case OPTION_NO_DIRECT_DATA:
19003 + direct_data_refs = 0;
19004 + break;
19005 + case OPTION_RODATA_WRITABLE:
19006 + rodata_writable = 1;
19007 + break;
19008 + case OPTION_NO_RODATA_WRITABLE:
19009 + rodata_writable = 0;
19010 + break;
19011 +'
19012 +
19013 +# Replace some of the standard ELF functions with our own versions.
19014 +#
19015 +LDEMUL_AFTER_OPEN=avr32_elf_after_open
19016 +LDEMUL_GET_SCRIPT=avr32_elf_get_script
19017 Index: binutils-2.18/ld/ld.info
19018 ===================================================================
19019 --- binutils-2.18.orig/ld/ld.info 2008-11-25 15:24:48.000000000 +0100
19020 +++ binutils-2.18/ld/ld.info 2008-11-25 15:25:40.000000000 +0100
19021 @@ -4347,6 +4347,8 @@
19022
19023 * ARM:: `ld' and the ARM family
19024
19025 +* AVR32:: `ld' and AVR32 processors
19026 +
19027 * HPPA ELF32:: `ld' and HPPA 32-bit ELF
19028
19029 * MMIX:: `ld' and MMIX
19030 @@ -4487,7 +4489,7 @@
19031 used to generate relocatable binaries.
19032
19033 \1f
19034 -File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: i960, Up: Machine Dependent
19035 +File: ld.info, Node: ARM, Next: AV32, Prev: i960, Up: Machine Dependent
19036
19037 4.4 `ld' and the ARM family
19038 ===========================
19039 @@ -4588,7 +4590,31 @@
19040 diagnosed.
19041
19042 \1f
19043 -File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: ARM, Up: Machine Dependent
19044 +File: ld.info, Node: AVR32, Next: HPPA ELF32, Prev: ARM, Up: Machine Dependent
19045 +
19046 +4.4 `ld' and AVR32 processors
19047 +=============================
19048 +
19049 +`--direct-data'
19050 +
19051 +`--no-direct-data'
19052 + Taking the address of a symbol can often be done by using a direct
19053 + `mov' or pc-relative `sub' instruction, which is faster than using
19054 + a PC- or GOT-relative load, especially on the uC3 processors.
19055 + However, this does not always work when dealing with symbols in
19056 + the `.data' section so this optimization is disabled by default.
19057 +
19058 + Specifying `--direct-data' will enable this optimization. Note
19059 + that this may cause `relocation truncated to fit' errors for
19060 + certain large programs. If this happens, the optimization can be
19061 + turned off by specifying `--no-direct-data'.
19062 +
19063 + All known issues with direct data optimizations are detected at
19064 + link time, so if the linker doesn't complain, the result should
19065 + run just fine.
19066 +
19067 +\1f
19068 +File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: AVR32, Up: Machine Dependent
19069
19070 4.5 `ld' and HPPA 32-bit ELF Support
19071 ====================================
19072 @@ -6336,6 +6362,7 @@
19073 * --no-check-sections: Options. (line 765)
19074 * --no-define-common: Options. (line 787)
19075 * --no-demangle: Options. (line 816)
19076 +* --no-direct-data: AVR32. (line 6)
19077 * --no-dotsyms: PowerPC64 ELF64. (line 33)
19078 * --no-enum-size-warning: ARM. (line 94)
19079 * --no-gc-sections: Options. (line 848)
19080 @@ -6534,6 +6561,7 @@
19081 * AT(LMA): Output Section LMA. (line 6)
19082 * AT>LMA_REGION: Output Section LMA. (line 6)
19083 * automatic data imports: WIN32. (line 170)
19084 +* AVR32 options: AVR32. (line 6)
19085 * back end: BFD. (line 6)
19086 * BASE (MRI): MRI. (line 54)
19087 * BE8: ARM. (line 23)
19088 @@ -7018,6 +7046,7 @@
19089 Node: i960\7f185522
19090 Node: M68HC11/68HC12\7f187207
19091 Node: ARM\7f188910
19092 +Node: AVR32\7f182578
19093 Node: HPPA ELF32\7f193760
19094 Node: MMIX\7f195383
19095 Node: MSP430\7f196600
19096 Index: binutils-2.18/ld/ld.texinfo
19097 ===================================================================
19098 --- binutils-2.18.orig/ld/ld.texinfo 2008-11-25 15:24:48.000000000 +0100
19099 +++ binutils-2.18/ld/ld.texinfo 2008-11-25 15:25:40.000000000 +0100
19100 @@ -21,6 +21,7 @@
19101 @set UsesEnvVars
19102 @set GENERIC
19103 @set ARM
19104 +@set AVR32
19105 @set H8300
19106 @set HPPA
19107 @set I960
19108 @@ -139,6 +140,9 @@
19109 @ifset ARM
19110 * ARM:: ld and the ARM family
19111 @end ifset
19112 +@ifset AVR32
19113 +* AVR32:: ld and AVR32 processors
19114 +@end ifset
19115 @ifset HPPA
19116 * HPPA ELF32:: ld and HPPA 32-bit ELF
19117 @end ifset
19118 @@ -5248,6 +5252,9 @@
19119 @ifset ARM
19120 * ARM:: @command{ld} and the ARM family
19121 @end ifset
19122 +@ifset AVR32
19123 +* AVR32:: @command{ld} and AVR32 processors
19124 +@end ifset
19125 @ifset HPPA
19126 * HPPA ELF32:: @command{ld} and HPPA 32-bit ELF
19127 @end ifset
19128 @@ -5589,6 +5596,52 @@
19129 @end ifclear
19130 @end ifset
19131
19132 +@ifset AVR32
19133 +@ifclear GENERIC
19134 +@raisesections
19135 +@end ifclear
19136 +
19137 +@node AVR32
19138 +@section @command{ld} and AVR32 processors
19139 +@cindex AVR32 options
19140 +@table @option
19141 +@kindex --direct-data
19142 +@kindex --no-direct-data
19143 +@item --direct-data
19144 +@item --no-direct-data
19145 +Taking the address of a symbol can often be done by using a direct
19146 +@code{mov} or pc-relative @code{sub} instruction, which is faster than
19147 +using a PC- or GOT-relative load, especially on the uC3
19148 +processors. However, this does not always work when dealing with
19149 +symbols in the @code{.data} section so this optimization is disabled
19150 +by default.
19151 +
19152 +Specifying @option{--direct-data} will enable this optimization. Note
19153 +that this may cause @samp{relocation truncated to fit} errors for
19154 +certain large programs. If this happens, the optimization can be
19155 +turned off by specifying @option{--no-direct-data}.
19156 +
19157 +All known issues with direct data optimizations are detected at link
19158 +time, so if the linker doesn't complain, the result should run just
19159 +fine.
19160 +
19161 +@kindex --rodata-writable
19162 +@kindex --no-rodata-writable
19163 +@item --rodata-writable
19164 +@item --no-rodata-writable
19165 +Using the @option{--rodata-writable} options will cause the linker
19166 +to try and use a linker script where read-only data will be placed
19167 +in the same section as writable data. This can give great performance
19168 +gain on cacheless processors where read-only data normally is placed in
19169 +flash, and writable data is placed in internal sram. This will however
19170 +come at the expence of a larger memory footprint.
19171 +@end table
19172 +
19173 +@ifclear GENERIC
19174 +@lowersections
19175 +@end ifclear
19176 +@end ifset
19177 +
19178 @ifset HPPA
19179 @ifclear GENERIC
19180 @raisesections
19181 Index: binutils-2.18/ld/Makefile.am
19182 ===================================================================
19183 --- binutils-2.18.orig/ld/Makefile.am 2008-11-25 15:24:48.000000000 +0100
19184 +++ binutils-2.18/ld/Makefile.am 2008-11-25 15:25:40.000000000 +0100
19185 @@ -137,7 +137,34 @@
19186 eavr3.o \
19187 eavr4.o \
19188 eavr5.o \
19189 - eavr6.o \
19190 + eavr6.o \
19191 + eavr32elf_ap7000.o \
19192 + eavr32elf_ap7001.o \
19193 + eavr32elf_ap7002.o \
19194 + eavr32elf_ap7200.o \
19195 + eavr32elf_uc3a0128.o \
19196 + eavr32elf_uc3a0256.o \
19197 + eavr32elf_uc3a0512.o \
19198 + eavr32elf_uc3a0512es.o \
19199 + eavr32elf_uc3a1128.o \
19200 + eavr32elf_uc3a1256.o \
19201 + eavr32elf_uc3a1512es.o \
19202 + eavr32elf_uc3a1512.o \
19203 + eavr32elf_uc3a364.o \
19204 + eavr32elf_uc3a364s.o \
19205 + eavr32elf_uc3a3128.o \
19206 + eavr32elf_uc3a3128s.o \
19207 + eavr32elf_uc3a3256.o \
19208 + eavr32elf_uc3a3256s.o \
19209 + eavr32elf_uc3b064.o \
19210 + eavr32elf_uc3b0128.o \
19211 + eavr32elf_uc3b0256es.o \
19212 + eavr32elf_uc3b0256.o \
19213 + eavr32elf_uc3b164.o \
19214 + eavr32elf_uc3b1128.o \
19215 + eavr32elf_uc3b1256es.o \
19216 + eavr32elf_uc3b1256.o \
19217 + eavr32linux.o \
19218 ecoff_i860.o \
19219 ecoff_sparc.o \
19220 eelf32_spu.o \
19221 @@ -622,6 +649,114 @@
19222 $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
19223 ${GEN_DEPENDS}
19224 ${GENSCRIPTS} avr6 "$(tdir_avr2)"
19225 +eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
19226 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19227 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19228 + ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
19229 +eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
19230 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19231 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19232 + ${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
19233 +eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
19234 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19235 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19236 + ${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
19237 +eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
19238 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19239 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19240 + ${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
19241 +eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
19242 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19243 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19244 + ${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
19245 +eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
19246 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19247 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19248 + ${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
19249 +eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
19250 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19251 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19252 + ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
19253 +eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
19254 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19255 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19256 + ${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
19257 +eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
19258 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19259 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19260 + ${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
19261 +eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
19262 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19263 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19264 + ${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
19265 +eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
19266 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19267 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19268 + ${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
19269 +eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
19270 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19271 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19272 + ${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
19273 +eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
19274 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19275 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19276 + ${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
19277 +eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
19278 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19279 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19280 + ${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
19281 +eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
19282 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19283 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19284 + ${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
19285 +eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
19286 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19287 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19288 + ${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
19289 +eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
19290 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19291 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19292 + ${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
19293 +eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
19294 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19295 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19296 + ${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
19297 +eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
19298 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19299 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19300 + ${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
19301 +eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
19302 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19303 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19304 + ${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
19305 +eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
19306 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19307 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19308 + ${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
19309 +eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
19310 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19311 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19312 + ${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
19313 +eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
19314 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19315 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19316 + ${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
19317 +eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
19318 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19319 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19320 + ${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
19321 +eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
19322 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19323 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19324 + ${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
19325 +eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
19326 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19327 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19328 + ${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
19329 +eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
19330 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19331 + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
19332 + ${GENSCRIPTS} avr32linux "$(tdir_avr32)"
19333 ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
19334 $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
19335 ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
19336 @@ -1877,7 +2012,9 @@
19337 || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
19338 fi
19339
19340 -install-data-local:
19341 +# We want install to imply install-info as per GNU standards, despite the
19342 +# cygnus option.
19343 +install-data-local: install-info
19344 $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
19345 for f in ldscripts/*; do \
19346 $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
19347 Index: binutils-2.18/ld/scripttempl/elf_xip.sc
19348 ===================================================================
19349 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
19350 +++ binutils-2.18/ld/scripttempl/elf_xip.sc 2008-11-25 15:25:40.000000000 +0100
19351 @@ -0,0 +1,456 @@
19352 +#
19353 +# Unusual variables checked by this code:
19354 +# NOP - four byte opcode for no-op (defaults to 0)
19355 +# NO_SMALL_DATA - no .sbss/.sbss2/.sdata/.sdata2 sections if not
19356 +# empty.
19357 +# SMALL_DATA_CTOR - .ctors contains small data.
19358 +# SMALL_DATA_DTOR - .dtors contains small data.
19359 +# DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
19360 +# INITIAL_READONLY_SECTIONS - at start of text segment
19361 +# OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
19362 +# (e.g., .PARISC.milli)
19363 +# OTHER_TEXT_SECTIONS - these get put in .text when relocating
19364 +# OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
19365 +# (e.g., .PARISC.global)
19366 +# OTHER_RELRO_SECTIONS - other than .data.rel.ro ...
19367 +# (e.g. PPC32 .fixup, .got[12])
19368 +# OTHER_BSS_SECTIONS - other than .bss .sbss ...
19369 +# OTHER_SECTIONS - at the end
19370 +# EXECUTABLE_SYMBOLS - symbols that must be defined for an
19371 +# executable (e.g., _DYNAMIC_LINK)
19372 +# TEXT_START_ADDR - the first byte of the text segment, after any
19373 +# headers.
19374 +# TEXT_BASE_ADDRESS - the first byte of the text segment.
19375 +# TEXT_START_SYMBOLS - symbols that appear at the start of the
19376 +# .text section.
19377 +# DATA_START_SYMBOLS - symbols that appear at the start of the
19378 +# .data section.
19379 +# OTHER_GOT_SYMBOLS - symbols defined just before .got.
19380 +# OTHER_GOT_SECTIONS - sections just after .got.
19381 +# OTHER_SDATA_SECTIONS - sections just after .sdata.
19382 +# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
19383 +# .bss section besides __bss_start.
19384 +# DATA_PLT - .plt should be in data segment, not text segment.
19385 +# PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement.
19386 +# BSS_PLT - .plt should be in bss segment
19387 +# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
19388 +# EMBEDDED - whether this is for an embedded system.
19389 +# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
19390 +# start address of shared library.
19391 +# INPUT_FILES - INPUT command of files to always include
19392 +# WRITABLE_RODATA - if set, the .rodata section should be writable
19393 +# INIT_START, INIT_END - statements just before and just after
19394 +# combination of .init sections.
19395 +# FINI_START, FINI_END - statements just before and just after
19396 +# combination of .fini sections.
19397 +# STACK_ADDR - start of a .stack section.
19398 +# OTHER_END_SYMBOLS - symbols to place right at the end of the script.
19399 +# SEPARATE_GOTPLT - if set, .got.plt should be separate output section,
19400 +# so that .got can be in the RELRO area. It should be set to
19401 +# the number of bytes in the beginning of .got.plt which can be
19402 +# in the RELRO area as well.
19403 +#
19404 +# When adding sections, do note that the names of some sections are used
19405 +# when specifying the start address of the next.
19406 +#
19407 +
19408 +# Many sections come in three flavours. There is the 'real' section,
19409 +# like ".data". Then there are the per-procedure or per-variable
19410 +# sections, generated by -ffunction-sections and -fdata-sections in GCC,
19411 +# and useful for --gc-sections, which for a variable "foo" might be
19412 +# ".data.foo". Then there are the linkonce sections, for which the linker
19413 +# eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
19414 +# The exact correspondences are:
19415 +#
19416 +# Section Linkonce section
19417 +# .text .gnu.linkonce.t.foo
19418 +# .rodata .gnu.linkonce.r.foo
19419 +# .data .gnu.linkonce.d.foo
19420 +# .bss .gnu.linkonce.b.foo
19421 +# .sdata .gnu.linkonce.s.foo
19422 +# .sbss .gnu.linkonce.sb.foo
19423 +# .sdata2 .gnu.linkonce.s2.foo
19424 +# .sbss2 .gnu.linkonce.sb2.foo
19425 +# .debug_info .gnu.linkonce.wi.foo
19426 +# .tdata .gnu.linkonce.td.foo
19427 +# .tbss .gnu.linkonce.tb.foo
19428 +#
19429 +# Each of these can also have corresponding .rel.* and .rela.* sections.
19430 +
19431 +test -z "$ENTRY" && ENTRY=_start
19432 +test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
19433 +test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
19434 +if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
19435 +test -z "${ELFSIZE}" && ELFSIZE=32
19436 +test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
19437 +test "$LD_FLAG" = "N" && DATA_ADDR=.
19438 +test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
19439 +test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
19440 +test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
19441 +if test -n "$RELOCATING"; then
19442 + RO_REGION="${RO_VMA_REGION+ >}${RO_VMA_REGION}${RO_LMA_REGION+ AT>}${RO_LMA_REGION}"
19443 + RW_REGION="${RW_VMA_REGION+ >}${RW_VMA_REGION}${RW_LMA_REGION+ AT>}${RW_LMA_REGION}"
19444 +else
19445 + RO_REGION=""
19446 + RW_REGION=""
19447 +fi
19448 +INTERP=".interp ${RELOCATING-0} : { *(.interp) }${RO_REGION}"
19449 +PLT=".plt ${RELOCATING-0} : { *(.plt) }"
19450 +if test -z "$GOT"; then
19451 + if test -z "$SEPARATE_GOTPLT"; then
19452 + GOT=".got ${RELOCATING-0} : { *(.got.plt) *(.got) }"
19453 + else
19454 + GOT=".got ${RELOCATING-0} : { *(.got) }"
19455 + GOTPLT="${RELOCATING+${DATA_SEGMENT_RELRO_GOTPLT_END}}
19456 + .got.plt ${RELOCATING-0} : { *(.got.plt) }"
19457 + fi
19458 +fi
19459 +DALIGN=".dalign : { . = ALIGN(${DATA_SEGMENT_ALIGN}); PROVIDE(_data_lma = .); }${RO_REGION}"
19460 +BALIGN=".balign : { . = ALIGN(${BSS_ALIGNMENT}); _edata = .; }${RW_REGION}"
19461 +DYNAMIC=".dynamic ${RELOCATING-0} : { *(.dynamic) }"
19462 +RODATA=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
19463 +DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }${RW_REGION}"
19464 +STACKNOTE="/DISCARD/ : { *(.note.GNU-stack) }"
19465 +if test -z "${NO_SMALL_DATA}"; then
19466 + SBSS=".sbss ${RELOCATING-0} :
19467 + {
19468 + ${RELOCATING+PROVIDE (__sbss_start = .);}
19469 + ${RELOCATING+PROVIDE (___sbss_start = .);}
19470 + ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)}
19471 + *(.dynsbss)
19472 + *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
19473 + *(.scommon)
19474 + ${RELOCATING+PROVIDE (__sbss_end = .);}
19475 + ${RELOCATING+PROVIDE (___sbss_end = .);}
19476 + }${RW_REGION}"
19477 + SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }${RW_REGION}"
19478 + SDATA="/* We want the small data sections together, so single-instruction offsets
19479 + can access them all, and initialized data all before uninitialized, so
19480 + we can shorten the on-disk segment size. */
19481 + .sdata ${RELOCATING-0} :
19482 + {
19483 + ${RELOCATING+${SDATA_START_SYMBOLS}}
19484 + ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
19485 + *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
19486 + }${RW_REGION}"
19487 + SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }${RW_REGION}"
19488 + REL_SDATA=".rel.sdata ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }${RO_REGION}
19489 + .rela.sdata ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
19490 + REL_SBSS=".rel.sbss ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }${RO_REGION}
19491 + .rela.sbss ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }${RO_REGION}"
19492 + REL_SDATA2=".rel.sdata2 ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }${RO_REGION}
19493 + .rela.sdata2 ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }${RO_REGION}"
19494 + REL_SBSS2=".rel.sbss2 ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }${RO_REGION}
19495 + .rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }${RO_REGION}"
19496 +else
19497 + NO_SMALL_DATA=" "
19498 +fi
19499 +test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
19500 +CTOR=".ctors ${CONSTRUCTING-0} :
19501 + {
19502 + ${CONSTRUCTING+${CTOR_START}}
19503 + /* gcc uses crtbegin.o to find the start of
19504 + the constructors, so we make sure it is
19505 + first. Because this is a wildcard, it
19506 + doesn't matter if the user does not
19507 + actually link against crtbegin.o; the
19508 + linker won't look for a file to match a
19509 + wildcard. The wildcard also means that it
19510 + doesn't matter which directory crtbegin.o
19511 + is in. */
19512 +
19513 + KEEP (*crtbegin*.o(.ctors))
19514 +
19515 + /* We don't want to include the .ctor section from
19516 + from the crtend.o file until after the sorted ctors.
19517 + The .ctor section from the crtend file contains the
19518 + end of ctors marker and it must be last */
19519 +
19520 + KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
19521 + KEEP (*(SORT(.ctors.*)))
19522 + KEEP (*(.ctors))
19523 + ${CONSTRUCTING+${CTOR_END}}
19524 + }"
19525 +DTOR=".dtors ${CONSTRUCTING-0} :
19526 + {
19527 + ${CONSTRUCTING+${DTOR_START}}
19528 + KEEP (*crtbegin*.o(.dtors))
19529 + KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
19530 + KEEP (*(SORT(.dtors.*)))
19531 + KEEP (*(.dtors))
19532 + ${CONSTRUCTING+${DTOR_END}}
19533 + }"
19534 +STACK=".stack ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
19535 + {
19536 + ${RELOCATING+_stack = .;}
19537 + *(.stack)
19538 + ${RELOCATING+${STACK_SIZE+. = ${STACK_SIZE};}}
19539 + ${RELOCATING+_estack = .;}
19540 + }${RW_REGION}"
19541 +
19542 +# if this is for an embedded system, don't add SIZEOF_HEADERS.
19543 +if [ -z "$EMBEDDED" ]; then
19544 + test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
19545 +else
19546 + test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
19547 +fi
19548 +
19549 +cat <<EOF
19550 +OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
19551 + "${LITTLE_OUTPUT_FORMAT}")
19552 +OUTPUT_ARCH(${OUTPUT_ARCH})
19553 +ENTRY(${ENTRY})
19554 +
19555 +${RELOCATING+${LIB_SEARCH_DIRS}}
19556 +${RELOCATING+/* Do we need any of these for elf?
19557 + __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */}
19558 +${RELOCATING+${EXECUTABLE_SYMBOLS}}
19559 +${RELOCATING+${INPUT_FILES}}
19560 +${RELOCATING- /* For some reason, the Solaris linker makes bad executables
19561 + if gld -r is used and the intermediate file has sections starting
19562 + at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld
19563 + bug. But for now assigning the zero vmas works. */}
19564 +
19565 +${RELOCATING+${MEMORY}}
19566 +
19567 +SECTIONS
19568 +{
19569 + /* Read-only sections, merged into text segment: */
19570 + ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}
19571 + ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
19572 + ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
19573 + ${CREATE_SHLIB-${INTERP}}
19574 + ${INITIAL_READONLY_SECTIONS}
19575 + ${TEXT_DYNAMIC+${DYNAMIC}${RO_REGION}}
19576 + .hash ${RELOCATING-0} : { *(.hash) }${RO_REGION}
19577 + .dynsym ${RELOCATING-0} : { *(.dynsym) }${RO_REGION}
19578 + .dynstr ${RELOCATING-0} : { *(.dynstr) }${RO_REGION}
19579 + .gnu.version ${RELOCATING-0} : { *(.gnu.version) }${RO_REGION}
19580 + .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }${RO_REGION}
19581 + .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }${RO_REGION}
19582 +
19583 +EOF
19584 +if [ "x$COMBRELOC" = x ]; then
19585 + COMBRELOCCAT=cat
19586 +else
19587 + COMBRELOCCAT="cat > $COMBRELOC"
19588 +fi
19589 +eval $COMBRELOCCAT <<EOF
19590 + .rel.init ${RELOCATING-0} : { *(.rel.init) }${RO_REGION}
19591 + .rela.init ${RELOCATING-0} : { *(.rela.init) }${RO_REGION}
19592 + .rel.text ${RELOCATING-0} : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }${RO_REGION}
19593 + .rela.text ${RELOCATING-0} : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }${RO_REGION}
19594 + .rel.fini ${RELOCATING-0} : { *(.rel.fini) }${RO_REGION}
19595 + .rela.fini ${RELOCATING-0} : { *(.rela.fini) }${RO_REGION}
19596 + .rel.rodata ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }${RO_REGION}
19597 + .rela.rodata ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }${RO_REGION}
19598 + ${OTHER_READONLY_RELOC_SECTIONS}
19599 + .rel.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
19600 + .rela.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
19601 + .rel.data ${RELOCATING-0} : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }${RO_REGION}
19602 + .rela.data ${RELOCATING-0} : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }${RO_REGION}
19603 + .rel.tdata ${RELOCATING-0} : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }${RO_REGION}
19604 + .rela.tdata ${RELOCATING-0} : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }${RO_REGION}
19605 + .rel.tbss ${RELOCATING-0} : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }${RO_REGION}
19606 + .rela.tbss ${RELOCATING-0} : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }${RO_REGION}
19607 + .rel.ctors ${RELOCATING-0} : { *(.rel.ctors) }${RO_REGION}
19608 + .rela.ctors ${RELOCATING-0} : { *(.rela.ctors) }${RO_REGION}
19609 + .rel.dtors ${RELOCATING-0} : { *(.rel.dtors) }${RO_REGION}
19610 + .rela.dtors ${RELOCATING-0} : { *(.rela.dtors) }${RO_REGION}
19611 + .rel.got ${RELOCATING-0} : { *(.rel.got) }${RO_REGION}
19612 + .rela.got ${RELOCATING-0} : { *(.rela.got) }${RO_REGION}
19613 + ${OTHER_GOT_RELOC_SECTIONS}
19614 + ${REL_SDATA}
19615 + ${REL_SBSS}
19616 + ${REL_SDATA2}
19617 + ${REL_SBSS2}
19618 + .rel.bss ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }${RO_REGION}
19619 + .rela.bss ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }${RO_REGION}
19620 +EOF
19621 +if [ -n "$COMBRELOC" ]; then
19622 +cat <<EOF
19623 + .rel.dyn ${RELOCATING-0} :
19624 + {
19625 +EOF
19626 +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
19627 +cat <<EOF
19628 + }${RO_REGION}
19629 + .rela.dyn ${RELOCATING-0} :
19630 + {
19631 +EOF
19632 +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
19633 +cat <<EOF
19634 + }${RO_REGION}
19635 +EOF
19636 +fi
19637 +cat <<EOF
19638 + .rel.plt ${RELOCATING-0} : { *(.rel.plt) }${RO_REGION}
19639 + .rela.plt ${RELOCATING-0} : { *(.rela.plt) }${RO_REGION}
19640 + ${OTHER_PLT_RELOC_SECTIONS}
19641 +
19642 + .init ${RELOCATING-0} :
19643 + {
19644 + ${RELOCATING+${INIT_START}}
19645 + KEEP (*(.init))
19646 + ${RELOCATING+${INIT_END}}
19647 + }${RO_REGION} =${NOP-0}
19648 +
19649 + ${DATA_PLT-${BSS_PLT-${PLT}${RO_REGION}}}
19650 + .text ${RELOCATING-0} :
19651 + {
19652 + ${RELOCATING+${TEXT_START_SYMBOLS}}
19653 + *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
19654 + KEEP (*(.text.*personality*))
19655 + /* .gnu.warning sections are handled specially by elf32.em. */
19656 + *(.gnu.warning)
19657 + ${RELOCATING+${OTHER_TEXT_SECTIONS}}
19658 + }${RO_REGION} =${NOP-0}
19659 + .fini ${RELOCATING-0} :
19660 + {
19661 + ${RELOCATING+${FINI_START}}
19662 + KEEP (*(.fini))
19663 + ${RELOCATING+${FINI_END}}
19664 + }${RO_REGION} =${NOP-0}
19665 + ${RELOCATING+PROVIDE (__etext = .);}
19666 + ${RELOCATING+PROVIDE (_etext = .);}
19667 + ${RELOCATING+PROVIDE (etext = .);}
19668 + ${WRITABLE_RODATA-${RODATA}${RO_REGION}}
19669 + .rodata1 ${RELOCATING-0} : { *(.rodata1) }${RO_REGION}
19670 + ${CREATE_SHLIB-${SDATA2}}
19671 + ${CREATE_SHLIB-${SBSS2}}
19672 + ${OTHER_READONLY_SECTIONS}
19673 + .eh_frame_hdr : { *(.eh_frame_hdr) }${RO_REGION}
19674 + .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }${RO_REGION}
19675 + .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RO_REGION}
19676 +
19677 + ${RELOCATING+${DALIGN}}
19678 + ${RELOCATING+PROVIDE (_data = ORIGIN(${RW_VMA_REGION}));}
19679 + . = ORIGIN(${RW_VMA_REGION});
19680 + /* Exception handling */
19681 + .eh_frame ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }${RW_REGION}
19682 + .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RW_REGION}
19683 +
19684 + /* Thread Local Storage sections */
19685 + .tdata ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }${RW_REGION}
19686 + .tbss ${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }${RW_REGION}
19687 +
19688 + /* Ensure the __preinit_array_start label is properly aligned. We
19689 + could instead move the label definition inside the section, but
19690 + the linker would then create the section even if it turns out to
19691 + be empty, which isn't pretty. */
19692 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_start = ALIGN(${ALIGNMENT}));}}
19693 + .preinit_array ${RELOCATING-0} : { KEEP (*(.preinit_array)) }${RW_REGION}
19694 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_end = .);}}
19695 +
19696 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_start = .);}}
19697 + .init_array ${RELOCATING-0} : { KEEP (*(.init_array)) }${RW_REGION}
19698 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_end = .);}}
19699 +
19700 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_start = .);}}
19701 + .fini_array ${RELOCATING-0} : { KEEP (*(.fini_array)) }${RW_REGION}
19702 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_end = .);}}
19703 +
19704 + ${SMALL_DATA_CTOR-${RELOCATING+${CTOR}${RW_REGION}}}
19705 + ${SMALL_DATA_DTOR-${RELOCATING+${DTOR}${RW_REGION}}}
19706 + .jcr ${RELOCATING-0} : { KEEP (*(.jcr)) }${RW_REGION}
19707 +
19708 + ${RELOCATING+${DATARELRO}}
19709 + ${OTHER_RELRO_SECTIONS}
19710 + ${TEXT_DYNAMIC-${DYNAMIC}${RW_REGION}}
19711 + ${NO_SMALL_DATA+${RELRO_NOW+${GOT}${RW_REGION}}}
19712 + ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOT}${RW_REGION}}}}
19713 + ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOTPLT}${RW_REGION}}}}
19714 + ${RELOCATING+${DATA_SEGMENT_RELRO_END}}
19715 + ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT-${GOT}${RW_REGION}}}}
19716 +
19717 + ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}${RW_REGION}}}
19718 +
19719 + .data ${RELOCATING-0} :
19720 + {
19721 + ${RELOCATING+${DATA_START_SYMBOLS}}
19722 + *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
19723 + KEEP (*(.gnu.linkonce.d.*personality*))
19724 + ${CONSTRUCTING+SORT(CONSTRUCTORS)}
19725 + }${RW_REGION}
19726 + .data1 ${RELOCATING-0} : { *(.data1) }${RW_REGION}
19727 + ${WRITABLE_RODATA+${RODATA}${RW_REGION}}
19728 + ${OTHER_READWRITE_SECTIONS}
19729 + ${SMALL_DATA_CTOR+${RELOCATING+${CTOR}${RW_REGION}}}
19730 + ${SMALL_DATA_DTOR+${RELOCATING+${DTOR}${RW_REGION}}}
19731 + ${DATA_PLT+${PLT_BEFORE_GOT+${PLT}${RW_REGION}}}
19732 + ${RELOCATING+${OTHER_GOT_SYMBOLS}}
19733 + ${NO_SMALL_DATA-${GOT}${RW_REGION}}
19734 + ${OTHER_GOT_SECTIONS}
19735 + ${SDATA}
19736 + ${OTHER_SDATA_SECTIONS}
19737 + ${RELOCATING+${BALIGN}}
19738 + ${RELOCATING+_edata = .;}
19739 + ${RELOCATING+PROVIDE (edata = .);}
19740 + ${RELOCATING+__bss_start = .;}
19741 + ${RELOCATING+${OTHER_BSS_SYMBOLS}}
19742 + ${SBSS}
19743 + ${BSS_PLT+${PLT}${RW_REGION}}
19744 + .bss ${RELOCATING-0} :
19745 + {
19746 + *(.dynbss)
19747 + *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
19748 + *(COMMON)
19749 + /* Align here to ensure that the .bss section occupies space up to
19750 + _end. Align after .bss to ensure correct alignment even if the
19751 + .bss section disappears because there are no input sections. */
19752 + ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
19753 + }${RW_REGION}
19754 + ${OTHER_BSS_SECTIONS}
19755 + ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
19756 + ${RELOCATING+_end = .;}
19757 + ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
19758 + ${RELOCATING+PROVIDE (end = .);}
19759 + ${RELOCATING+${DATA_SEGMENT_END}}
19760 +
19761 + /* Stabs debugging sections. */
19762 + .stab 0 : { *(.stab) }
19763 + .stabstr 0 : { *(.stabstr) }
19764 + .stab.excl 0 : { *(.stab.excl) }
19765 + .stab.exclstr 0 : { *(.stab.exclstr) }
19766 + .stab.index 0 : { *(.stab.index) }
19767 + .stab.indexstr 0 : { *(.stab.indexstr) }
19768 +
19769 + .comment 0 : { *(.comment) }
19770 +
19771 + /* DWARF debug sections.
19772 + Symbols in the DWARF debugging sections are relative to the beginning
19773 + of the section so we begin them at 0. */
19774 +
19775 + /* DWARF 1 */
19776 + .debug 0 : { *(.debug) }
19777 + .line 0 : { *(.line) }
19778 +
19779 + /* GNU DWARF 1 extensions */
19780 + .debug_srcinfo 0 : { *(.debug_srcinfo) }
19781 + .debug_sfnames 0 : { *(.debug_sfnames) }
19782 +
19783 + /* DWARF 1.1 and DWARF 2 */
19784 + .debug_aranges 0 : { *(.debug_aranges) }
19785 + .debug_pubnames 0 : { *(.debug_pubnames) }
19786 +
19787 + /* DWARF 2 */
19788 + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
19789 + .debug_abbrev 0 : { *(.debug_abbrev) }
19790 + .debug_line 0 : { *(.debug_line) }
19791 + .debug_frame 0 : { *(.debug_frame) }
19792 + .debug_str 0 : { *(.debug_str) }
19793 + .debug_loc 0 : { *(.debug_loc) }
19794 + .debug_macinfo 0 : { *(.debug_macinfo) }
19795 +
19796 + /* SGI/MIPS DWARF 2 extensions */
19797 + .debug_weaknames 0 : { *(.debug_weaknames) }
19798 + .debug_funcnames 0 : { *(.debug_funcnames) }
19799 + .debug_typenames 0 : { *(.debug_typenames) }
19800 + .debug_varnames 0 : { *(.debug_varnames) }
19801 +
19802 + ${STACK_ADDR+${STACK}}
19803 + ${OTHER_SECTIONS}
19804 + ${RELOCATING+${OTHER_END_SYMBOLS}}
19805 + ${RELOCATING+${STACKNOTE}}
19806 +}
19807 +EOF
19808 Index: binutils-2.18/ld/testsuite/ld-auto-import/client.c
19809 ===================================================================
19810 --- binutils-2.18.orig/ld/testsuite/ld-auto-import/client.c 2008-11-25 15:24:48.000000000 +0100
19811 +++ binutils-2.18/ld/testsuite/ld-auto-import/client.c 2008-11-25 15:25:40.000000000 +0100
19812 @@ -1,55 +1,55 @@
19813 -#include <stdio.h>
19814 -
19815 -extern int var;
19816 -extern void (*func_ptr)(void);
19817 -extern void print_var (void);
19818 -extern void print_foo (void);
19819 -extern int foo;
19820 -extern int var2[2];
19821 -
19822 -typedef struct
19823 -{
19824 - int * var;
19825 - void (* func_ptr)(void);
19826 -}
19827 -TEST;
19828 -
19829 -TEST xyz = { &var, print_var };
19830 -
19831 -int
19832 -main (void)
19833 -{
19834 - print_var ();
19835 -
19836 - printf ("We see var = %d\n", var);
19837 - printf ("Setting var = 456\n");
19838 -
19839 - var = 456;
19840 -
19841 - print_var ();
19842 - printf ("We see var = %d\n\n", var);
19843 -
19844 - var = 90;
19845 - print_var ();
19846 - printf ("We see var = %d\n\n", var);
19847 -
19848 - print_foo ();
19849 - printf ("We see foo = %d\n", foo);
19850 - printf ("Setting foo = 19\n");
19851 - foo = 19;
19852 - print_foo ();
19853 - printf ("We see foo = %d\n\n", foo);
19854 - fflush (stdout);
19855 -
19856 - printf ("Calling dllimported function pointer\n");
19857 - func_ptr ();
19858 -
19859 - printf ("Calling functions using global structure\n");
19860 - xyz.func_ptr ();
19861 - * xyz.var = 40;
19862 - xyz.func_ptr ();
19863 -
19864 - printf ("We see var2[0] = %d\n\n", var2[0]);
19865 -
19866 - return 0;
19867 -}
19868 +#include <stdio.h>
19869 +
19870 +extern int var;
19871 +extern void (*func_ptr)(void);
19872 +extern void print_var (void);
19873 +extern void print_foo (void);
19874 +extern int foo;
19875 +extern int var2[2];
19876 +
19877 +typedef struct
19878 +{
19879 + int * var;
19880 + void (* func_ptr)(void);
19881 +}
19882 +TEST;
19883 +
19884 +TEST xyz = { &var, print_var };
19885 +
19886 +int
19887 +main (void)
19888 +{
19889 + print_var ();
19890 +
19891 + printf ("We see var = %d\n", var);
19892 + printf ("Setting var = 456\n");
19893 +
19894 + var = 456;
19895 +
19896 + print_var ();
19897 + printf ("We see var = %d\n\n", var);
19898 +
19899 + var = 90;
19900 + print_var ();
19901 + printf ("We see var = %d\n\n", var);
19902 +
19903 + print_foo ();
19904 + printf ("We see foo = %d\n", foo);
19905 + printf ("Setting foo = 19\n");
19906 + foo = 19;
19907 + print_foo ();
19908 + printf ("We see foo = %d\n\n", foo);
19909 + fflush (stdout);
19910 +
19911 + printf ("Calling dllimported function pointer\n");
19912 + func_ptr ();
19913 +
19914 + printf ("Calling functions using global structure\n");
19915 + xyz.func_ptr ();
19916 + * xyz.var = 40;
19917 + xyz.func_ptr ();
19918 +
19919 + printf ("We see var2[0] = %d\n\n", var2[0]);
19920 +
19921 + return 0;
19922 +}
19923 Index: binutils-2.18/ld/testsuite/ld-auto-import/dll.c
19924 ===================================================================
19925 --- binutils-2.18.orig/ld/testsuite/ld-auto-import/dll.c 2008-11-25 15:24:48.000000000 +0100
19926 +++ binutils-2.18/ld/testsuite/ld-auto-import/dll.c 2008-11-25 15:25:40.000000000 +0100
19927 @@ -1,20 +1,20 @@
19928 -int var = 123;
19929 -int foo = 121;
19930 -
19931 -int var2[2]= { 123, 456 };
19932 -
19933 -#include <stdio.h>
19934 -
19935 -void
19936 -print_var (void)
19937 -{
19938 - printf ("DLL sees var = %d\n", var);
19939 -}
19940 -
19941 -void
19942 -print_foo (void)
19943 -{
19944 - printf ("DLL sees foo = %d\n", foo);
19945 -}
19946 -
19947 -void (* func_ptr)(void) = print_foo;
19948 +int var = 123;
19949 +int foo = 121;
19950 +
19951 +int var2[2]= { 123, 456 };
19952 +
19953 +#include <stdio.h>
19954 +
19955 +void
19956 +print_var (void)
19957 +{
19958 + printf ("DLL sees var = %d\n", var);
19959 +}
19960 +
19961 +void
19962 +print_foo (void)
19963 +{
19964 + printf ("DLL sees foo = %d\n", foo);
19965 +}
19966 +
19967 +void (* func_ptr)(void) = print_foo;
19968 Index: binutils-2.18/ld/testsuite/ld-avr32/avr32.exp
19969 ===================================================================
19970 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
19971 +++ binutils-2.18/ld/testsuite/ld-avr32/avr32.exp 2008-11-25 15:25:40.000000000 +0100
19972 @@ -0,0 +1,25 @@
19973 +# Expect script for AVR32 ELF linker tests.
19974 +# Copyright 2004-2006 Atmel Corporation.
19975 +#
19976 +# This file is free software; you can redistribute it and/or modify
19977 +# it under the terms of the GNU General Public License as published by
19978 +# the Free Software Foundation; either version 2 of the License, or
19979 +# (at your option) any later version.
19980 +#
19981 +# This program is distributed in the hope that it will be useful,
19982 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
19983 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19984 +# GNU General Public License for more details.
19985 +#
19986 +# You should have received a copy of the GNU General Public License
19987 +# along with this program; if not, write to the Free Software
19988 +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19989 +#
19990 +# Written by Haavard Skinnemoen (hskinnemoen@atmel.com)
19991 +#
19992 +
19993 +if ![istarget avr32-*-*] {
19994 + return
19995 +}
19996 +
19997 +run_dump_test "pcrel"
19998 Index: binutils-2.18/ld/testsuite/ld-avr32/pcrel.d
19999 ===================================================================
20000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
20001 +++ binutils-2.18/ld/testsuite/ld-avr32/pcrel.d 2008-11-25 15:25:40.000000000 +0100
20002 @@ -0,0 +1,74 @@
20003 +#name: AVR32 ELF PC-relative external relocs
20004 +#source: symbols.s
20005 +#source: ../../../gas/testsuite/gas/avr32/pcrel.s
20006 +#ld: -T $srcdir/$subdir/pcrel.ld
20007 +#objdump: -d
20008 +
20009 +.*: file format elf.*avr32.*
20010 +
20011 +Disassembly of section .text:
20012 +
20013 +a0000000 <_start>:
20014 +a0000000: d7 03 nop
20015 +a0000002: d7 03 nop
20016 +
20017 +a0000004 <test_rjmp>:
20018 +a0000004: d7 03 nop
20019 +a0000006: c0 28 rjmp a000000a <test_rjmp\+0x6>
20020 +a0000008: d7 03 nop
20021 +a000000a: e0 8f 01 fb bral a0000400 <extsym10>
20022 +
20023 +a000000e <test_rcall>:
20024 +a000000e: d7 03 nop
20025 +a0000010 <test_rcall2>:
20026 +a0000010: c0 2c rcall a0000014 <test_rcall2\+0x4>
20027 +a0000012: d7 03 nop
20028 +a0000014: ee b0 ff f6 rcall a0200000 <extsym21>
20029 +
20030 +a0000018 <test_branch>:
20031 +a0000018: c0 31 brne a000001e <test_branch\+0x6>
20032 +a000001a: fe 9f ff ff bral a0000018 <test_branch>
20033 +a000001e: ee 90 ff f1 breq a0200000 <extsym21>
20034 +
20035 +a0000022 <test_lddpc>:
20036 +a0000022: 48 30 lddpc r0,a000002c <sym1>
20037 +a0000024: 48 20 lddpc r0,a000002c <sym1>
20038 +a0000026: fe f0 7f da ld.w r0,pc\[32730\]
20039 + ...
20040 +
20041 +a000002c <sym1>:
20042 +a000002c: d7 03 nop
20043 +a000002e: d7 03 nop
20044 +
20045 +a0000030 <test_local>:
20046 +a0000030: 48 20 lddpc r0,a0000038 <test_local\+0x8>
20047 +a0000032: 48 30 lddpc r0,a000003c <test_local\+0xc>
20048 +a0000034: 48 20 lddpc r0,a000003c <test_local\+0xc>
20049 +a0000036: 00 00 add r0,r0
20050 +a0000038: d7 03 nop
20051 +a000003a: d7 03 nop
20052 +a000003c: d7 03 nop
20053 +a000003e: d7 03 nop
20054 +
20055 +Disassembly of section \.text\.init:
20056 +a0000040 <test_inter_section>:
20057 +a0000040: fe b0 ff e7 rcall a000000e <test_rcall>
20058 +a0000044: d7 03 nop
20059 +a0000046: fe b0 ff e4 rcall a000000e <test_rcall>
20060 +a000004a: fe b0 ff e3 rcall a0000010 <test_rcall2>
20061 +a000004e: d7 03 nop
20062 +a0000050: fe b0 ff e0 rcall a0000010 <test_rcall2>
20063 +
20064 +Disassembly of section \.text\.pcrel10:
20065 +
20066 +a0000400 <extsym10>:
20067 +a0000400: d7 03 nop
20068 +
20069 +Disassembly of section \.text\.pcrel16:
20070 +
20071 +a0008000 <extsym16>:
20072 +a0008000: d7 03 nop
20073 +
20074 +Disassembly of section \.text\.pcrel21:
20075 +a0200000 <extsym21>:
20076 +a0200000: d7 03 nop
20077 Index: binutils-2.18/ld/testsuite/ld-avr32/pcrel.ld
20078 ===================================================================
20079 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
20080 +++ binutils-2.18/ld/testsuite/ld-avr32/pcrel.ld 2008-11-25 15:25:40.000000000 +0100
20081 @@ -0,0 +1,23 @@
20082 +ENTRY(_start)
20083 +SECTIONS
20084 +{
20085 + .text 0xa0000000:
20086 + {
20087 + *(.text)
20088 + }
20089 +
20090 + .text.pcrel10 0xa0000400:
20091 + {
20092 + *(.text.pcrel10)
20093 + }
20094 +
20095 + .text.pcrel16 0xa0008000:
20096 + {
20097 + *(.text.pcrel16)
20098 + }
20099 +
20100 + .text.pcrel21 0xa0200000:
20101 + {
20102 + *(.text.pcrel21)
20103 + }
20104 +}
20105 Index: binutils-2.18/ld/testsuite/ld-avr32/symbols.s
20106 ===================================================================
20107 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
20108 +++ binutils-2.18/ld/testsuite/ld-avr32/symbols.s 2008-11-25 15:25:40.000000000 +0100
20109 @@ -0,0 +1,20 @@
20110 + .text
20111 + .global _start
20112 +_start:
20113 + nop
20114 + nop
20115 +
20116 + .section .text.pcrel10,"ax"
20117 + .global extsym10
20118 +extsym10:
20119 + nop
20120 +
20121 + .section .text.pcrel16,"ax"
20122 + .global extsym16
20123 +extsym16:
20124 + nop
20125 +
20126 + .section .text.pcrel21,"ax"
20127 + .global extsym21
20128 +extsym21:
20129 + nop
20130 Index: binutils-2.18/opcodes/avr32-asm.c
20131 ===================================================================
20132 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
20133 +++ binutils-2.18/opcodes/avr32-asm.c 2008-11-25 15:25:40.000000000 +0100
20134 @@ -0,0 +1,264 @@
20135 +/* Assembler interface for AVR32.
20136 + Copyright 2005, 2006 Atmel Corporation.
20137 +
20138 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
20139 +
20140 + This file is part of libopcodes.
20141 +
20142 + This program is free software; you can redistribute it and/or
20143 + modify it under the terms of the GNU General Public License as
20144 + published by the Free Software Foundation; either version 2 of the
20145 + License, or (at your option) any later version.
20146 +
20147 + This program is distributed in the hope that it will be useful, but
20148 + WITHOUT ANY WARRANTY; without even the implied warranty of
20149 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20150 + General Public License for more details.
20151 +
20152 + You should have received a copy of the GNU General Public License
20153 + along with this program; if not, write to the Free Software
20154 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20155 + 02111-1307, USA. */
20156 +
20157 +#include <string.h>
20158 +
20159 +#include "avr32-opc.h"
20160 +#include "avr32-asm.h"
20161 +
20162 +/* Structure for a register hash table entry. */
20163 +struct reg_entry
20164 +{
20165 + const char *name;
20166 + int number;
20167 +};
20168 +
20169 +/* Integer Registers. */
20170 +static const struct reg_entry reg_table[] =
20171 + {
20172 + /* Primary names (used by the disassembler) */
20173 + { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 },
20174 + { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 },
20175 + { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 },
20176 + { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 },
20177 + /* Alternatives to sp, lr and pc. */
20178 + { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
20179 + };
20180 +#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
20181 +
20182 +/* Coprocessor Registers. */
20183 +static const struct reg_entry cr_table[] =
20184 + {
20185 + { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 },
20186 + { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 },
20187 + { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 },
20188 + { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
20189 + };
20190 +#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
20191 +
20192 +/* Floating-point Registers. */
20193 +static const struct reg_entry fr_table[] =
20194 + {
20195 + { "fr0", 0 }, { "fr1", 1 }, { "fr2", 2 }, { "fr3", 3 },
20196 + { "fr4", 4 }, { "fr5", 5 }, { "fr6", 6 }, { "fr7", 7 },
20197 + { "fr8", 8 }, { "fr9", 9 }, { "fr10", 10 }, { "fr11", 11 },
20198 + { "fr12", 12 }, { "fr13", 13 }, { "fr14", 14 }, { "fr15", 15 },
20199 + };
20200 +#define AVR32_NR_FPREGS (sizeof(fr_table)/sizeof(fr_table[0]))
20201 +
20202 +/* PiCo Registers. */
20203 +static const struct reg_entry pico_table[] =
20204 + {
20205 + { "inpix2", 0 }, { "inpix1", 1 }, { "inpix0", 2 },
20206 + { "outpix2", 3 }, { "outpix1", 4 }, { "outpix0", 5 },
20207 + { "coeff0_a", 6 }, { "coeff0_b", 7 }, { "coeff1_a", 8 },
20208 + { "coeff1_b", 9 }, { "coeff2_a", 10 }, { "coeff2_b", 11 },
20209 + { "vmu0_out", 12 }, { "vmu1_out", 13 }, { "vmu2_out", 14 },
20210 + { "config", 15 },
20211 + };
20212 +#define AVR32_NR_PICOREGS (sizeof(pico_table)/sizeof(pico_table[0]))
20213 +
20214 +int
20215 +avr32_parse_intreg(const char *str)
20216 +{
20217 + unsigned int i;
20218 +
20219 + for (i = 0; i < AVR32_NR_INTREGS; i++)
20220 + {
20221 + if (strcasecmp(reg_table[i].name, str) == 0)
20222 + return reg_table[i].number;
20223 + }
20224 +
20225 + return -1;
20226 +}
20227 +
20228 +int
20229 +avr32_parse_cpreg(const char *str)
20230 +{
20231 + unsigned int i;
20232 +
20233 + for (i = 0; i < AVR32_NR_CPREGS; i++)
20234 + {
20235 + if (strcasecmp(cr_table[i].name, str) == 0)
20236 + return cr_table[i].number;
20237 + }
20238 +
20239 + return -1;
20240 +}
20241 +
20242 +int avr32_parse_fpreg(const char *str)
20243 +{
20244 + unsigned int i;
20245 +
20246 + for (i = 0; i < AVR32_NR_FPREGS; i++)
20247 + {
20248 + if (strcasecmp(fr_table[i].name, str) == 0)
20249 + return fr_table[i].number;
20250 + }
20251 +
20252 + return -1;
20253 +}
20254 +
20255 +int avr32_parse_picoreg(const char *str)
20256 +{
20257 + unsigned int i;
20258 +
20259 + for (i = 0; i < AVR32_NR_PICOREGS; i++)
20260 + {
20261 + if (strcasecmp(pico_table[i].name, str) == 0)
20262 + return pico_table[i].number;
20263 + }
20264 +
20265 + return -1;
20266 +}
20267 +
20268 +static unsigned long
20269 +parse_reglist(char *str, char **endptr, int (*parse_reg)(const char *))
20270 +{
20271 + int reg_from, reg_to;
20272 + unsigned long result = 0;
20273 + char *p1, *p2, c;
20274 +
20275 + while (*str)
20276 + {
20277 + for (p1 = str; *p1; p1++)
20278 + if (*p1 == ',' || *p1 == '-')
20279 + break;
20280 +
20281 + c = *p1, *p1 = 0;
20282 + reg_from = parse_reg(str);
20283 + *p1 = c;
20284 +
20285 + if (reg_from < 0)
20286 + break;
20287 +
20288 + if (*p1 == '-')
20289 + {
20290 + for (p2 = ++p1; *p2; p2++)
20291 + if (*p2 == ',')
20292 + break;
20293 +
20294 + c = *p2, *p2 = 0;
20295 + /* printf("going to parse reg_to from `%s'\n", p1); */
20296 + reg_to = parse_reg(p1);
20297 + *p2 = c;
20298 +
20299 + if (reg_to < 0)
20300 + break;
20301 +
20302 + while (reg_from <= reg_to)
20303 + result |= (1 << reg_from++);
20304 + p1 = p2;
20305 + }
20306 + else
20307 + result |= (1 << reg_from);
20308 +
20309 + str = p1;
20310 + if (*str) ++str;
20311 + }
20312 +
20313 + if (endptr)
20314 + *endptr = str;
20315 +
20316 + return result;
20317 +}
20318 +
20319 +unsigned long
20320 +avr32_parse_reglist(char *str, char **endptr)
20321 +{
20322 + return parse_reglist(str, endptr, avr32_parse_intreg);
20323 +}
20324 +
20325 +unsigned long
20326 +avr32_parse_cpreglist(char *str, char **endptr)
20327 +{
20328 + return parse_reglist(str, endptr, avr32_parse_cpreg);
20329 +}
20330 +
20331 +unsigned long
20332 +avr32_parse_pico_reglist(char *str, char **endptr)
20333 +{
20334 + return parse_reglist(str, endptr, avr32_parse_picoreg);
20335 +}
20336 +
20337 +int
20338 +avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8)
20339 +{
20340 + unsigned long result = 0;
20341 +
20342 + /* printf("convert regmask16 0x%04lx\n", regmask16); */
20343 +
20344 + if (regmask16 & 0xf)
20345 + {
20346 + if ((regmask16 & 0xf) == 0xf)
20347 + result |= 1 << 0;
20348 + else
20349 + return -1;
20350 + }
20351 + if (regmask16 & 0xf0)
20352 + {
20353 + if ((regmask16 & 0xf0) == 0xf0)
20354 + result |= 1 << 1;
20355 + else
20356 + return -1;
20357 + }
20358 + if (regmask16 & 0x300)
20359 + {
20360 + if ((regmask16 & 0x300) == 0x300)
20361 + result |= 1 << 2;
20362 + else
20363 + return -1;
20364 + }
20365 + if (regmask16 & (1 << 13))
20366 + return -1;
20367 +
20368 + if (regmask16 & (1 << 10))
20369 + result |= 1 << 3;
20370 + if (regmask16 & (1 << 11))
20371 + result |= 1 << 4;
20372 + if (regmask16 & (1 << 12))
20373 + result |= 1 << 5;
20374 + if (regmask16 & (1 << 14))
20375 + result |= 1 << 6;
20376 + if (regmask16 & (1 << 15))
20377 + result |= 1 << 7;
20378 +
20379 + *regmask8 = result;
20380 +
20381 + return 0;
20382 +}
20383 +
20384 +#if 0
20385 +struct reg_map
20386 +{
20387 + const struct reg_entry *names;
20388 + int nr_regs;
20389 + struct hash_control *htab;
20390 + const char *errmsg;
20391 +};
20392 +
20393 +struct reg_map all_reg_maps[] =
20394 + {
20395 + { reg_table, AVR32_NR_INTREGS, NULL, N_("integral register expected") },
20396 + { cr_table, AVR32_NR_CPREGS, NULL, N_("coprocessor register expected") },
20397 + };
20398 +#endif
20399 Index: binutils-2.18/opcodes/avr32-asm.h
20400 ===================================================================
20401 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
20402 +++ binutils-2.18/opcodes/avr32-asm.h 2008-11-25 15:25:40.000000000 +0100
20403 @@ -0,0 +1,42 @@
20404 +/* Assembler interface for AVR32.
20405 + Copyright 2005, 2006 Atmel Corporation.
20406 +
20407 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
20408 +
20409 + This file is part of libopcodes.
20410 +
20411 + This program is free software; you can redistribute it and/or
20412 + modify it under the terms of the GNU General Public License as
20413 + published by the Free Software Foundation; either version 2 of the
20414 + License, or (at your option) any later version.
20415 +
20416 + This program is distributed in the hope that it will be useful, but
20417 + WITHOUT ANY WARRANTY; without even the implied warranty of
20418 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20419 + General Public License for more details.
20420 +
20421 + You should have received a copy of the GNU General Public License
20422 + along with this program; if not, write to the Free Software
20423 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20424 + 02111-1307, USA. */
20425 +#ifndef __OPCODES_AVR32_ASM_H
20426 +#define __OPCODES_AVR32_ASM_H
20427 +
20428 +extern int
20429 +avr32_parse_intreg(const char *str);
20430 +extern int
20431 +avr32_parse_cpreg(const char *str);
20432 +extern int
20433 +avr32_parse_fpreg(const char *str);
20434 +extern int
20435 +avr32_parse_picoreg(const char *str);
20436 +extern unsigned long
20437 +avr32_parse_reglist(char *str, char **endptr);
20438 +extern unsigned long
20439 +avr32_parse_cpreglist(char *str, char **endptr);
20440 +extern unsigned long
20441 +avr32_parse_pico_reglist(char *str, char **endptr);
20442 +extern int
20443 +avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8);
20444 +
20445 +#endif /* __OPCODES_AVR32_ASM_H */
20446 Index: binutils-2.18/opcodes/avr32-dis.c
20447 ===================================================================
20448 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
20449 +++ binutils-2.18/opcodes/avr32-dis.c 2008-11-25 15:25:40.000000000 +0100
20450 @@ -0,0 +1,891 @@
20451 +/* Print AVR32 instructions for GDB and objdump.
20452 + Copyright 2005, 2006 Atmel Corporation.
20453 +
20454 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
20455 +
20456 + This file is part of libopcodes.
20457 +
20458 + This program is free software; you can redistribute it and/or
20459 + modify it under the terms of the GNU General Public License as
20460 + published by the Free Software Foundation; either version 2 of the
20461 + License, or (at your option) any later version.
20462 +
20463 + This program is distributed in the hope that it will be useful, but
20464 + WITHOUT ANY WARRANTY; without even the implied warranty of
20465 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20466 + General Public License for more details.
20467 +
20468 + You should have received a copy of the GNU General Public License
20469 + along with this program; if not, write to the Free Software
20470 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20471 + 02111-1307, USA. */
20472 +
20473 +#include "sysdep.h"
20474 +#include "dis-asm.h"
20475 +#include "avr32-opc.h"
20476 +#include "opintl.h"
20477 +#include "safe-ctype.h"
20478 +
20479 +/* TODO: Share this with -asm */
20480 +
20481 +/* Structure for a register hash table entry. */
20482 +struct reg_entry
20483 +{
20484 + const char *name;
20485 + int number;
20486 +};
20487 +
20488 +#ifndef strneq
20489 +#define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
20490 +#endif
20491 +
20492 +
20493 +static const struct reg_entry reg_table[] =
20494 + {
20495 + /* Primary names (used by the disassembler) */
20496 + { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 },
20497 + { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 },
20498 + { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 },
20499 + { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 },
20500 + /* Alternatives to sp, lr and pc. */
20501 + { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
20502 + };
20503 +#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
20504 +
20505 +/* Coprocessor Registers. */
20506 +static const struct reg_entry cr_table[] =
20507 + {
20508 + { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 },
20509 + { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 },
20510 + { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 },
20511 + { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
20512 + };
20513 +#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
20514 +
20515 +static const char bparts[4] = { 'b', 'l', 'u', 't' };
20516 +static bfd_vma current_pc;
20517 +
20518 +struct avr32_field_value
20519 +{
20520 + const struct avr32_ifield *ifield;
20521 + unsigned long value;
20522 +};
20523 +
20524 +struct avr32_operand
20525 +{
20526 + int id;
20527 + int is_pcrel;
20528 + int align_order;
20529 + int (*print)(struct avr32_operand *op, struct disassemble_info *info,
20530 + struct avr32_field_value *ifields);
20531 +};
20532 +
20533 +static signed long
20534 +get_signed_value(const struct avr32_field_value *fv)
20535 +{
20536 + signed long value = fv->value;
20537 +
20538 + if (fv->value & (1 << (fv->ifield->bitsize - 1)))
20539 + value |= (~0UL << fv->ifield->bitsize);
20540 +
20541 + return value;
20542 +}
20543 +
20544 +static void
20545 +print_reglist_range(unsigned int first, unsigned int last,
20546 + const struct reg_entry *reg_names,
20547 + int need_comma,
20548 + struct disassemble_info *info)
20549 +{
20550 + if (need_comma)
20551 + info->fprintf_func(info->stream, ",");
20552 +
20553 + if (first == last)
20554 + info->fprintf_func(info->stream, "%s",
20555 + reg_names[first].name);
20556 + else
20557 + info->fprintf_func(info->stream, "%s-%s",
20558 + reg_names[first].name, reg_names[last].name);
20559 +}
20560 +
20561 +static int
20562 +print_intreg(struct avr32_operand *op,
20563 + struct disassemble_info *info,
20564 + struct avr32_field_value *ifields)
20565 +{
20566 + unsigned long regid = ifields[0].value << op->align_order;
20567 +
20568 + info->fprintf_func(info->stream, "%s",
20569 + reg_table[regid].name);
20570 + return 1;
20571 +}
20572 +
20573 +static int
20574 +print_intreg_predec(struct avr32_operand *op ATTRIBUTE_UNUSED,
20575 + struct disassemble_info *info,
20576 + struct avr32_field_value *ifields)
20577 +{
20578 + info->fprintf_func(info->stream, "--%s",
20579 + reg_table[ifields[0].value].name);
20580 + return 1;
20581 +}
20582 +
20583 +static int
20584 +print_intreg_postinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
20585 + struct disassemble_info *info,
20586 + struct avr32_field_value *ifields)
20587 +{
20588 + info->fprintf_func(info->stream, "%s++",
20589 + reg_table[ifields[0].value].name);
20590 + return 1;
20591 +}
20592 +
20593 +static int
20594 +print_intreg_lsl(struct avr32_operand *op ATTRIBUTE_UNUSED,
20595 + struct disassemble_info *info,
20596 + struct avr32_field_value *ifields)
20597 +{
20598 + const char *rp = reg_table[ifields[0].value].name;
20599 + unsigned long sa = ifields[1].value;
20600 +
20601 + if (sa)
20602 + info->fprintf_func(info->stream, "%s<<0x%lx", rp, sa);
20603 + else
20604 + info->fprintf_func(info->stream, "%s", rp);
20605 +
20606 + return 2;
20607 +}
20608 +
20609 +static int
20610 +print_intreg_lsr(struct avr32_operand *op ATTRIBUTE_UNUSED,
20611 + struct disassemble_info *info,
20612 + struct avr32_field_value *ifields)
20613 +{
20614 + const char *rp = reg_table[ifields[0].value].name;
20615 + unsigned long sa = ifields[1].value;
20616 +
20617 + if (sa)
20618 + info->fprintf_func(info->stream, "%s>>0x%lx", rp, sa);
20619 + else
20620 + info->fprintf_func(info->stream, "%s", rp);
20621 +
20622 + return 2;
20623 +}
20624 +
20625 +static int
20626 +print_intreg_bpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
20627 + struct disassemble_info *info,
20628 + struct avr32_field_value *ifields)
20629 +{
20630 + info->fprintf_func(info->stream, "%s:%c",
20631 + reg_table[ifields[0].value].name,
20632 + bparts[ifields[1].value]);
20633 + return 2;
20634 +}
20635 +
20636 +static int
20637 +print_intreg_hpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
20638 + struct disassemble_info *info,
20639 + struct avr32_field_value *ifields)
20640 +{
20641 + info->fprintf_func(info->stream, "%s:%c",
20642 + reg_table[ifields[0].value].name,
20643 + ifields[1].value ? 't' : 'b');
20644 + return 2;
20645 +}
20646 +
20647 +static int
20648 +print_intreg_sdisp(struct avr32_operand *op,
20649 + struct disassemble_info *info,
20650 + struct avr32_field_value *ifields)
20651 +{
20652 + signed long disp;
20653 +
20654 + disp = get_signed_value(&ifields[1]) << op->align_order;
20655 +
20656 + info->fprintf_func(info->stream, "%s[%ld]",
20657 + reg_table[ifields[0].value].name, disp);
20658 + return 2;
20659 +}
20660 +
20661 +static int
20662 +print_intreg_udisp(struct avr32_operand *op,
20663 + struct disassemble_info *info,
20664 + struct avr32_field_value *ifields)
20665 +{
20666 + info->fprintf_func(info->stream, "%s[0x%lx]",
20667 + reg_table[ifields[0].value].name,
20668 + ifields[1].value << op->align_order);
20669 + return 2;
20670 +}
20671 +
20672 +static int
20673 +print_intreg_index(struct avr32_operand *op ATTRIBUTE_UNUSED,
20674 + struct disassemble_info *info,
20675 + struct avr32_field_value *ifields)
20676 +{
20677 + const char *rb, *ri;
20678 + unsigned long sa = ifields[2].value;
20679 +
20680 + rb = reg_table[ifields[0].value].name;
20681 + ri = reg_table[ifields[1].value].name;
20682 +
20683 + if (sa)
20684 + info->fprintf_func(info->stream, "%s[%s<<0x%lx]", rb, ri, sa);
20685 + else
20686 + info->fprintf_func(info->stream, "%s[%s]", rb, ri);
20687 +
20688 + return 3;
20689 +}
20690 +
20691 +static int
20692 +print_intreg_xindex(struct avr32_operand *op ATTRIBUTE_UNUSED,
20693 + struct disassemble_info *info,
20694 + struct avr32_field_value *ifields)
20695 +{
20696 + info->fprintf_func(info->stream, "%s[%s:%c<<2]",
20697 + reg_table[ifields[0].value].name,
20698 + reg_table[ifields[1].value].name,
20699 + bparts[ifields[2].value]);
20700 + return 3;
20701 +}
20702 +
20703 +static int
20704 +print_jmplabel(struct avr32_operand *op,
20705 + struct disassemble_info *info,
20706 + struct avr32_field_value *ifields)
20707 +{
20708 + bfd_vma address, offset;
20709 +
20710 + offset = get_signed_value(ifields) << op->align_order;
20711 + address = (current_pc & (~0UL << op->align_order)) + offset;
20712 +
20713 + info->print_address_func(address, info);
20714 +
20715 + return 1;
20716 +}
20717 +
20718 +static int
20719 +print_pc_disp(struct avr32_operand *op,
20720 + struct disassemble_info *info,
20721 + struct avr32_field_value *ifields)
20722 +{
20723 + bfd_vma address, offset;
20724 +
20725 + offset = ifields[0].value << op->align_order;
20726 + address = (current_pc & (~0UL << op->align_order)) + offset;
20727 +
20728 + info->print_address_func(address, info);
20729 +
20730 + return 1;
20731 +}
20732 +
20733 +static int
20734 +print_sp(struct avr32_operand *op ATTRIBUTE_UNUSED,
20735 + struct disassemble_info *info,
20736 + struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
20737 +{
20738 + info->fprintf_func(info->stream, "sp");
20739 + return 1;
20740 +}
20741 +
20742 +static int
20743 +print_sp_disp(struct avr32_operand *op,
20744 + struct disassemble_info *info,
20745 + struct avr32_field_value *ifields)
20746 +{
20747 + info->fprintf_func(info->stream, "sp[0x%lx]",
20748 + ifields[0].value << op->align_order);
20749 + return 1;
20750 +}
20751 +
20752 +static int
20753 +print_cpno(struct avr32_operand *op ATTRIBUTE_UNUSED,
20754 + struct disassemble_info *info,
20755 + struct avr32_field_value *ifields)
20756 +{
20757 + info->fprintf_func(info->stream, "cp%lu", ifields[0].value);
20758 + return 1;
20759 +}
20760 +
20761 +static int
20762 +print_cpreg(struct avr32_operand *op,
20763 + struct disassemble_info *info,
20764 + struct avr32_field_value *ifields)
20765 +{
20766 + info->fprintf_func(info->stream, "cr%lu",
20767 + ifields[0].value << op->align_order);
20768 + return 1;
20769 +}
20770 +
20771 +static int
20772 +print_uconst(struct avr32_operand *op,
20773 + struct disassemble_info *info,
20774 + struct avr32_field_value *ifields)
20775 +{
20776 + info->fprintf_func(info->stream, "0x%lx",
20777 + ifields[0].value << op->align_order);
20778 + return 1;
20779 +}
20780 +
20781 +static int
20782 +print_sconst(struct avr32_operand *op,
20783 + struct disassemble_info *info,
20784 + struct avr32_field_value *ifields)
20785 +{
20786 + info->fprintf_func(info->stream, "%ld",
20787 + get_signed_value(ifields) << op->align_order);
20788 + return 1;
20789 +}
20790 +
20791 +static int
20792 +print_reglist8_head(unsigned long regmask, int *commap,
20793 + struct disassemble_info *info)
20794 +{
20795 + int first = -1, last, i = 0;
20796 + int need_comma = 0;
20797 +
20798 + while (i < 12)
20799 + {
20800 + if (first == -1 && (regmask & 1))
20801 + {
20802 + first = i;
20803 + }
20804 + else if (first != -1 && !(regmask & 1))
20805 + {
20806 + last = i - 1;
20807 +
20808 + print_reglist_range(first, last, reg_table, need_comma, info);
20809 + need_comma = 1;
20810 + first = -1;
20811 + }
20812 +
20813 + if (i < 8)
20814 + i += 4;
20815 + else if (i < 10)
20816 + i += 2;
20817 + else
20818 + i++;
20819 + regmask >>= 1;
20820 + }
20821 +
20822 + *commap = need_comma;
20823 + return first;
20824 +}
20825 +
20826 +static void
20827 +print_reglist8_tail(unsigned long regmask, int first, int need_comma,
20828 + struct disassemble_info *info)
20829 +{
20830 + int last = 11;
20831 +
20832 + if (regmask & 0x20)
20833 + {
20834 + if (first == -1)
20835 + first = 12;
20836 + last = 12;
20837 + }
20838 +
20839 + if (first != -1)
20840 + {
20841 + print_reglist_range(first, last, reg_table, need_comma, info);
20842 + need_comma = 1;
20843 + first = -1;
20844 + }
20845 +
20846 + if (regmask & 0x40)
20847 + {
20848 + if (first == -1)
20849 + first = 14;
20850 + last = 14;
20851 + }
20852 +
20853 + if (regmask & 0x80)
20854 + {
20855 + if (first == -1)
20856 + first = 15;
20857 + last = 15;
20858 + }
20859 +
20860 + if (first != -1)
20861 + print_reglist_range(first, last, reg_table, need_comma, info);
20862 +}
20863 +
20864 +static int
20865 +print_reglist8(struct avr32_operand *op ATTRIBUTE_UNUSED,
20866 + struct disassemble_info *info,
20867 + struct avr32_field_value *ifields)
20868 +{
20869 + unsigned long regmask = ifields[0].value;
20870 + int first, need_comma;
20871 +
20872 + first = print_reglist8_head(regmask, &need_comma, info);
20873 + print_reglist8_tail(regmask, first, need_comma, info);
20874 +
20875 + return 1;
20876 +}
20877 +
20878 +static int
20879 +print_reglist9(struct avr32_operand *op ATTRIBUTE_UNUSED,
20880 + struct disassemble_info *info,
20881 + struct avr32_field_value *ifields)
20882 +{
20883 + unsigned long regmask = ifields[0].value >> 1;
20884 + int first, last, need_comma;
20885 +
20886 + first = print_reglist8_head(regmask, &need_comma, info);
20887 +
20888 + if ((ifields[0].value & 0x101) == 0x101)
20889 + {
20890 + if (first != -1)
20891 + {
20892 + last = 11;
20893 +
20894 + print_reglist_range(first, last, reg_table, need_comma, info);
20895 + need_comma = 1;
20896 + first = -1;
20897 + }
20898 +
20899 + print_reglist_range(15, 15, reg_table, need_comma, info);
20900 +
20901 + regmask >>= 5;
20902 +
20903 + if ((regmask & 3) == 0)
20904 + info->fprintf_func(info->stream, ",r12=0");
20905 + else if ((regmask & 3) == 1)
20906 + info->fprintf_func(info->stream, ",r12=1");
20907 + else
20908 + info->fprintf_func(info->stream, ",r12=-1");
20909 + }
20910 + else
20911 + print_reglist8_tail(regmask, first, need_comma, info);
20912 +
20913 + return 1;
20914 +}
20915 +
20916 +static int
20917 +print_reglist16(struct avr32_operand *op ATTRIBUTE_UNUSED,
20918 + struct disassemble_info *info,
20919 + struct avr32_field_value *ifields)
20920 +{
20921 + unsigned long regmask = ifields[0].value;
20922 + unsigned int i = 0, first, last;
20923 + int need_comma = 0;
20924 +
20925 + while (i < 16)
20926 + {
20927 + if (regmask & 1)
20928 + {
20929 + first = i;
20930 + while (i < 16)
20931 + {
20932 + i++;
20933 + regmask >>= 1;
20934 + if (!(regmask & 1))
20935 + break;
20936 + }
20937 + last = i - 1;
20938 + print_reglist_range(first, last, reg_table, need_comma, info);
20939 + need_comma = 1;
20940 + }
20941 + else
20942 + {
20943 + i++;
20944 + regmask >>= 1;
20945 + }
20946 + }
20947 +
20948 + return 1;
20949 +}
20950 +
20951 +static int
20952 +print_reglist_ldm(struct avr32_operand *op,
20953 + struct disassemble_info *info,
20954 + struct avr32_field_value *ifields)
20955 +{
20956 + int rp, w_bit;
20957 + int i, first, last;
20958 + unsigned long regmask;
20959 +
20960 + rp = ifields[0].value;
20961 + w_bit = ifields[1].value;
20962 + regmask = ifields[2].value;
20963 +
20964 + if (regmask & (1 << AVR32_REG_PC) && rp == AVR32_REG_PC)
20965 + {
20966 + if (w_bit)
20967 + info->fprintf_func(info->stream, "sp++");
20968 + else
20969 + info->fprintf_func(info->stream, "sp");
20970 +
20971 + for (i = 0; i < 12; )
20972 + {
20973 + if (regmask & (1 << i))
20974 + {
20975 + first = i;
20976 + while (i < 12)
20977 + {
20978 + i++;
20979 + if (!(regmask & (1 << i)))
20980 + break;
20981 + }
20982 + last = i - 1;
20983 + print_reglist_range(first, last, reg_table, 1, info);
20984 + }
20985 + else
20986 + i++;
20987 + }
20988 +
20989 + info->fprintf_func(info->stream, ",pc");
20990 + if (regmask & (1 << AVR32_REG_LR))
20991 + info->fprintf_func(info->stream, ",r12=-1");
20992 + else if (regmask & (1 << AVR32_REG_R12))
20993 + info->fprintf_func(info->stream, ",r12=1");
20994 + else
20995 + info->fprintf_func(info->stream, ",r12=0");
20996 + }
20997 + else
20998 + {
20999 + if (w_bit)
21000 + info->fprintf_func(info->stream, "%s++,", reg_table[rp].name);
21001 + else
21002 + info->fprintf_func(info->stream, "%s,", reg_table[rp].name);
21003 +
21004 + print_reglist16(op, info, ifields + 2);
21005 + }
21006 +
21007 + return 3;
21008 +}
21009 +
21010 +static int
21011 +print_reglist_cp8(struct avr32_operand *op ATTRIBUTE_UNUSED,
21012 + struct disassemble_info *info,
21013 + struct avr32_field_value *ifields)
21014 +{
21015 + unsigned long regmask = ifields[0].value;
21016 + unsigned int i = 0, first, last, offset = 0;
21017 + int need_comma = 0;
21018 +
21019 + if (ifields[1].value)
21020 + offset = 8;
21021 +
21022 + while (i < 8)
21023 + {
21024 + if (regmask & 1)
21025 + {
21026 + first = i;
21027 + while (i < 8)
21028 + {
21029 + i++;
21030 + regmask >>= 1;
21031 + if (!(regmask & 1))
21032 + break;
21033 + }
21034 + last = i - 1;
21035 + print_reglist_range(offset + first, offset + last,
21036 + cr_table, need_comma, info);
21037 + need_comma = 1;
21038 + }
21039 + else
21040 + {
21041 + i++;
21042 + regmask >>= 1;
21043 + }
21044 + }
21045 +
21046 + return 2;
21047 +}
21048 +
21049 +static int
21050 +print_reglist_cpd8(struct avr32_operand *op ATTRIBUTE_UNUSED,
21051 + struct disassemble_info *info,
21052 + struct avr32_field_value *ifields)
21053 +{
21054 + unsigned long regmask = ifields[0].value;
21055 + unsigned int i = 0, first, last;
21056 + int need_comma = 0;
21057 +
21058 + while (i < 8)
21059 + {
21060 + if (regmask & 1)
21061 + {
21062 + first = 2 * i;
21063 + while (i < 8)
21064 + {
21065 + i++;
21066 + regmask >>= 1;
21067 + if (!(regmask & 1))
21068 + break;
21069 + }
21070 + last = 2 * (i - 1) + 1;
21071 + print_reglist_range(first, last, cr_table, need_comma, info);
21072 + need_comma = 1;
21073 + }
21074 + else
21075 + {
21076 + i++;
21077 + regmask >>= 1;
21078 + }
21079 + }
21080 +
21081 + return 1;
21082 +}
21083 +
21084 +static int
21085 +print_retval(struct avr32_operand *op ATTRIBUTE_UNUSED,
21086 + struct disassemble_info *info,
21087 + struct avr32_field_value *ifields)
21088 +{
21089 + unsigned long regid = ifields[0].value;
21090 + const char *retval;
21091 +
21092 + if (regid < AVR32_REG_SP)
21093 + retval = reg_table[regid].name;
21094 + else if (regid == AVR32_REG_SP)
21095 + retval = "0";
21096 + else if (regid == AVR32_REG_LR)
21097 + retval = "-1";
21098 + else
21099 + retval = "1";
21100 +
21101 + info->fprintf_func(info->stream, "%s", retval);
21102 +
21103 + return 1;
21104 +}
21105 +
21106 +static int
21107 +print_mcall(struct avr32_operand *op,
21108 + struct disassemble_info *info,
21109 + struct avr32_field_value *ifields)
21110 +{
21111 + unsigned long regid = ifields[0].value;
21112 +
21113 + if (regid == AVR32_REG_PC)
21114 + print_jmplabel(op, info, ifields + 1);
21115 + else
21116 + print_intreg_sdisp(op, info, ifields);
21117 +
21118 + return 2;
21119 +}
21120 +
21121 +static int
21122 +print_jospinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
21123 + struct disassemble_info *info,
21124 + struct avr32_field_value *ifields)
21125 +{
21126 + signed long value = ifields[0].value;
21127 +
21128 + if (value >= 4)
21129 + value -= 8;
21130 + else
21131 + value += 1;
21132 +
21133 + info->fprintf_func(info->stream, "%ld", value);
21134 +
21135 + return 1;
21136 +}
21137 +
21138 +static int
21139 +print_coh(struct avr32_operand *op ATTRIBUTE_UNUSED,
21140 + struct disassemble_info *info,
21141 + struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
21142 +{
21143 + info->fprintf_func(info->stream, "COH");
21144 + return 0;
21145 +}
21146 +
21147 +#define OP(name, sgn, pcrel, align, func) \
21148 + { AVR32_OPERAND_##name, pcrel, align, print_##func }
21149 +
21150 +struct avr32_operand operand[AVR32_NR_OPERANDS] =
21151 + {
21152 + OP(INTREG, 0, 0, 0, intreg),
21153 + OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
21154 + OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
21155 + OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
21156 + OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
21157 + OP(INTREG_BSEL, 0, 0, 0, intreg_bpart),
21158 + OP(INTREG_HSEL, 0, 0, 1, intreg_hpart),
21159 + OP(INTREG_SDISP, 1, 0, 0, intreg_sdisp),
21160 + OP(INTREG_SDISP_H, 1, 0, 1, intreg_sdisp),
21161 + OP(INTREG_SDISP_W, 1, 0, 2, intreg_sdisp),
21162 + OP(INTREG_UDISP, 0, 0, 0, intreg_udisp),
21163 + OP(INTREG_UDISP_H, 0, 0, 1, intreg_udisp),
21164 + OP(INTREG_UDISP_W, 0, 0, 2, intreg_udisp),
21165 + OP(INTREG_INDEX, 0, 0, 0, intreg_index),
21166 + OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
21167 + OP(DWREG, 0, 0, 1, intreg),
21168 + OP(PC_UDISP_W, 0, 1, 2, pc_disp),
21169 + OP(SP, 0, 0, 0, sp),
21170 + OP(SP_UDISP_W, 0, 0, 2, sp_disp),
21171 + OP(CPNO, 0, 0, 0, cpno),
21172 + OP(CPREG, 0, 0, 0, cpreg),
21173 + OP(CPREG_D, 0, 0, 1, cpreg),
21174 + OP(UNSIGNED_CONST, 0, 0, 0, uconst),
21175 + OP(UNSIGNED_CONST_W, 0, 0, 2, uconst),
21176 + OP(SIGNED_CONST, 1, 0, 0, sconst),
21177 + OP(SIGNED_CONST_W, 1, 0, 2, sconst),
21178 + OP(JMPLABEL, 1, 1, 1, jmplabel),
21179 + OP(UNSIGNED_NUMBER, 0, 0, 0, uconst),
21180 + OP(UNSIGNED_NUMBER_W, 0, 0, 2, uconst),
21181 + OP(REGLIST8, 0, 0, 0, reglist8),
21182 + OP(REGLIST9, 0, 0, 0, reglist9),
21183 + OP(REGLIST16, 0, 0, 0, reglist16),
21184 + OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
21185 + OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
21186 + OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
21187 + OP(RETVAL, 0, 0, 0, retval),
21188 + OP(MCALL, 1, 0, 2, mcall),
21189 + OP(JOSPINC, 0, 0, 0, jospinc),
21190 + OP(COH, 0, 0, 0, coh),
21191 + };
21192 +
21193 +static void
21194 +print_opcode(bfd_vma insn_word, const struct avr32_opcode *opc,
21195 + bfd_vma pc, struct disassemble_info *info)
21196 +{
21197 + const struct avr32_syntax *syntax = opc->syntax;
21198 + struct avr32_field_value fields[AVR32_MAX_FIELDS];
21199 + unsigned int i, next_field = 0, nr_operands;
21200 +
21201 + for (i = 0; i < opc->nr_fields; i++)
21202 + {
21203 + opc->fields[i]->extract(opc->fields[i], &insn_word, &fields[i].value);
21204 + fields[i].ifield = opc->fields[i];
21205 + }
21206 +
21207 + current_pc = pc;
21208 + info->fprintf_func(info->stream, "%s", syntax->mnemonic->name);
21209 +
21210 + if (syntax->nr_operands < 0)
21211 + nr_operands = (unsigned int) -syntax->nr_operands;
21212 + else
21213 + nr_operands = (unsigned int) syntax->nr_operands;
21214 +
21215 + for (i = 0; i < nr_operands; i++)
21216 + {
21217 + struct avr32_operand *op = &operand[syntax->operand[i]];
21218 +
21219 + if (i)
21220 + info->fprintf_func(info->stream, ",");
21221 + else
21222 + info->fprintf_func(info->stream, "\t");
21223 + next_field += op->print(op, info, &fields[next_field]);
21224 + }
21225 +}
21226 +
21227 +static const struct avr32_opcode *
21228 +find_opcode(bfd_vma insn_word)
21229 +{
21230 + int i;
21231 +
21232 + for (i = 0; i < AVR32_NR_OPCODES; i++)
21233 + {
21234 + const struct avr32_opcode *opc = &avr32_opc_table[i];
21235 +
21236 + if ((insn_word & opc->mask) == opc->value)
21237 + return opc;
21238 + }
21239 +
21240 + return NULL;
21241 +}
21242 +
21243 +static int
21244 +read_insn_word(bfd_vma pc, bfd_vma *valuep,
21245 + struct disassemble_info *info)
21246 +{
21247 + bfd_byte b[4];
21248 + int status;
21249 +
21250 + status = info->read_memory_func(pc, b, 4, info);
21251 + if (status)
21252 + {
21253 + status = info->read_memory_func(pc, b, 2, info);
21254 + if (status)
21255 + {
21256 + info->memory_error_func(status, pc, info);
21257 + return -1;
21258 + }
21259 + b[3] = b[2] = 0;
21260 + }
21261 +
21262 + *valuep = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
21263 + return 0;
21264 +}
21265 +
21266 +/* Parse an individual disassembler option. */
21267 +
21268 +void
21269 +parse_avr32_disassembler_option (option)
21270 + char * option;
21271 +{
21272 + if (option == NULL)
21273 + return;
21274 +
21275 + /* XXX - should break 'option' at following delimiter. */
21276 + fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option);
21277 +
21278 + return;
21279 +}
21280 +
21281 +/* Parse the string of disassembler options, spliting it at whitespaces
21282 + or commas. (Whitespace separators supported for backwards compatibility). */
21283 +
21284 +static void
21285 +parse_disassembler_options (char *options)
21286 +{
21287 + if (options == NULL)
21288 + return;
21289 +
21290 + while (*options)
21291 + {
21292 + parse_avr32_disassembler_option (options);
21293 +
21294 + /* Skip forward to next seperator. */
21295 + while ((*options) && (! ISSPACE (*options)) && (*options != ','))
21296 + ++ options;
21297 + /* Skip forward past seperators. */
21298 + while (ISSPACE (*options) || (*options == ','))
21299 + ++ options;
21300 + }
21301 +}
21302 +
21303 +int
21304 +print_insn_avr32(bfd_vma pc, struct disassemble_info *info)
21305 +{
21306 + bfd_vma insn_word;
21307 + const struct avr32_opcode *opc;
21308 +
21309 + if (info->disassembler_options)
21310 + {
21311 + parse_disassembler_options (info->disassembler_options);
21312 +
21313 + /* To avoid repeated parsing of these options, we remove them here. */
21314 + info->disassembler_options = NULL;
21315 + }
21316 +
21317 + info->bytes_per_chunk = 1;
21318 + info->display_endian = BFD_ENDIAN_BIG;
21319 +
21320 + if (read_insn_word(pc, &insn_word, info))
21321 + return -1;
21322 +
21323 + opc = find_opcode(insn_word);
21324 + if (opc)
21325 + {
21326 + print_opcode(insn_word, opc, pc, info);
21327 + return opc->size;
21328 + }
21329 + else
21330 + {
21331 + info->fprintf_func(info->stream, _("*unknown*"));
21332 + return 2;
21333 + }
21334 +
21335 +}
21336 +
21337 +void
21338 +print_avr32_disassembler_options (FILE *stream ATTRIBUTE_UNUSED)
21339 +{
21340 +
21341 +}
21342 Index: binutils-2.18/opcodes/avr32-opc.c
21343 ===================================================================
21344 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
21345 +++ binutils-2.18/opcodes/avr32-opc.c 2008-11-25 15:25:40.000000000 +0100
21346 @@ -0,0 +1,6932 @@
21347 +/* Opcode tables for AVR32.
21348 + Copyright 2005, 2006 Atmel Corporation.
21349 +
21350 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
21351 +
21352 + This file is part of libopcodes.
21353 +
21354 + This program is free software; you can redistribute it and/or
21355 + modify it under the terms of the GNU General Public License as
21356 + published by the Free Software Foundation; either version 2 of the
21357 + License, or (at your option) any later version.
21358 +
21359 + This program is distributed in the hope that it will be useful, but
21360 + WITHOUT ANY WARRANTY; without even the implied warranty of
21361 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21362 + General Public License for more details.
21363 +
21364 + You should have received a copy of the GNU General Public License
21365 + along with this program; if not, write to the Free Software
21366 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
21367 + 02111-1307, USA. */
21368 +
21369 +#include <stdlib.h>
21370 +#include <assert.h>
21371 +
21372 +#include "avr32-opc.h"
21373 +
21374 +#define PICO_CPNO 1
21375 +
21376 +void
21377 +avr32_insert_simple(const struct avr32_ifield *field,
21378 + void *buf, unsigned long value)
21379 +{
21380 + bfd_vma word;
21381 +
21382 + word = bfd_getb32(buf);
21383 + word &= ~field->mask;
21384 + word |= (value << field->shift) & field->mask;
21385 + bfd_putb32(word, buf);
21386 +}
21387 +
21388 +void
21389 +avr32_insert_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21390 + void *buf, unsigned long value)
21391 +{
21392 + char *opcode = buf;
21393 +
21394 + opcode[0] = (opcode[0] & 0xe1) | (value & 0x1e);
21395 + opcode[1] = (opcode[1] & 0xef) | ((value & 1) << 4);
21396 +}
21397 +
21398 +void
21399 +avr32_insert_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21400 + void *buf, unsigned long value)
21401 +{
21402 + char *opcode = buf;
21403 +
21404 + opcode[0] = (opcode[0] & 0xf0) | ((value & 0xf0) >> 4);
21405 + opcode[1] = ((opcode[1] & 0x0c) | ((value & 0x0f) << 4)
21406 + | ((value & 0x300) >> 8));
21407 +}
21408 +
21409 +
21410 +void
21411 +avr32_insert_k21(const struct avr32_ifield *field,
21412 + void *buf, unsigned long value)
21413 +{
21414 + bfd_vma word;
21415 + bfd_vma k21;
21416 +
21417 + word = bfd_getb32(buf);
21418 + word &= ~field->mask;
21419 + k21 = ((value & 0xffff) | ((value & 0x10000) << 4)
21420 + | ((value & 0x1e0000) << 8));
21421 + assert(!(k21 & ~field->mask));
21422 + word |= k21;
21423 + bfd_putb32(word, buf);
21424 +}
21425 +
21426 +void
21427 +avr32_insert_cpop(const struct avr32_ifield *field,
21428 + void *buf, unsigned long value)
21429 +{
21430 + bfd_vma word;
21431 +
21432 + word = bfd_getb32(buf);
21433 + word &= ~field->mask;
21434 + word |= (((value & 0x1e) << 15) | ((value & 0x60) << 20)
21435 + | ((value & 0x01) << 12));
21436 + bfd_putb32(word, buf);
21437 +}
21438 +
21439 +void
21440 +avr32_insert_k12cp(const struct avr32_ifield *field,
21441 + void *buf, unsigned long value)
21442 +{
21443 + bfd_vma word;
21444 +
21445 + word = bfd_getb32(buf);
21446 + word &= ~field->mask;
21447 + word |= ((value & 0xf00) << 4) | (value & 0xff);
21448 + bfd_putb32(word, buf);
21449 +}
21450 +
21451 +void avr32_extract_simple(const struct avr32_ifield *field,
21452 + void *buf, unsigned long *value)
21453 +{
21454 + /* XXX: The disassembler has done any necessary byteswapping already */
21455 + bfd_vma word = *(bfd_vma *)buf;
21456 +
21457 + *value = (word & field->mask) >> field->shift;
21458 +}
21459 +
21460 +void avr32_extract_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21461 + void *buf, unsigned long *value)
21462 +{
21463 + bfd_vma word = *(bfd_vma *)buf;
21464 +
21465 + *value = ((word >> 20) & 1) | ((word >> 24) & 0x1e);
21466 +}
21467 +
21468 +void avr32_extract_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21469 + void *buf, unsigned long *value)
21470 +{
21471 + bfd_vma word = *(bfd_vma *)buf;
21472 +
21473 + *value = ((word >> 8) & 0x300) | ((word >> 20) & 0xff);
21474 +}
21475 +
21476 +void avr32_extract_k21(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21477 + void *buf, unsigned long *value)
21478 +{
21479 + bfd_vma word = *(bfd_vma *)buf;
21480 +
21481 + *value = ((word & 0xffff) | ((word >> 4) & 0x10000)
21482 + | ((word >> 8) & 0x1e0000));
21483 +}
21484 +
21485 +void avr32_extract_cpop(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21486 + void *buf, unsigned long *value)
21487 +{
21488 + bfd_vma word = *(bfd_vma *)buf;
21489 +
21490 + *value = (((word >> 12) & 1) | ((word >> 15) & 0x1e)
21491 + | ((word >> 20) & 0x60));
21492 +}
21493 +
21494 +void avr32_extract_k12cp(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21495 + void *buf, unsigned long *value)
21496 +{
21497 + bfd_vma word = *(bfd_vma *)buf;
21498 +
21499 + *value = ((word >> 4) & 0xf00) | (word & 0xff);
21500 +}
21501 +
21502 +
21503 +#define IFLD(id, bitsz, shift, mask, func) \
21504 + { AVR32_IFIELD_##id, bitsz, shift, mask, \
21505 + avr32_insert_##func, avr32_extract_##func }
21506 +
21507 +const struct avr32_ifield avr32_ifield_table[] =
21508 + {
21509 + IFLD(RX, 4, 25, 0x1e000000, simple),
21510 + IFLD(RY, 4, 16, 0x000f0000, simple),
21511 + IFLD(COND4C, 4, 20, 0x00f00000, simple),
21512 + IFLD(K8C, 8, 20, 0x0ff00000, simple),
21513 + IFLD(K7C, 7, 20, 0x07f00000, simple),
21514 + IFLD(K5C, 5, 20, 0x01f00000, simple),
21515 + IFLD(K3, 3, 20, 0x00700000, simple),
21516 + IFLD(RY_DW, 3, 17, 0x000e0000, simple),
21517 + IFLD(COND4E, 4, 8, 0x00000f00, simple),
21518 + IFLD(K8E, 8, 0, 0x000000ff, simple),
21519 + IFLD(BIT5C, 5, 20, 0x1e100000, bit5c),
21520 + IFLD(COND3, 3, 16, 0x00070000, simple),
21521 + IFLD(K10, 10, 16, 0x0ff30000, k10),
21522 + IFLD(POPM, 9, 19, 0x0ff80000, simple),
21523 + IFLD(K2, 2, 4, 0x00000030, simple),
21524 + IFLD(RD_E, 4, 0, 0x0000000f, simple),
21525 + IFLD(RD_DW, 3, 1, 0x0000000e, simple),
21526 + IFLD(X, 1, 5, 0x00000020, simple),
21527 + IFLD(Y, 1, 4, 0x00000010, simple),
21528 + IFLD(X2, 1, 13, 0x00002000, simple),
21529 + IFLD(Y2, 1, 12, 0x00001000, simple),
21530 + IFLD(K5E, 5, 0, 0x0000001f, simple),
21531 + IFLD(PART2, 2, 0, 0x00000003, simple),
21532 + IFLD(PART1, 1, 0, 0x00000001, simple),
21533 + IFLD(K16, 16, 0, 0x0000ffff, simple),
21534 + IFLD(CACHEOP, 5, 11, 0x0000f800, simple),
21535 + IFLD(K11, 11, 0, 0x000007ff, simple),
21536 + IFLD(K21, 21, 0, 0x1e10ffff, k21),
21537 + IFLD(CPOP, 7, 12, 0x060f1000, cpop),
21538 + IFLD(CPNO, 3, 13, 0x0000e000, simple),
21539 + IFLD(CRD_RI, 4, 8, 0x00000f00, simple),
21540 + IFLD(CRX, 4, 4, 0x000000f0, simple),
21541 + IFLD(CRY, 4, 0, 0x0000000f, simple),
21542 + IFLD(K7E, 7, 0, 0x0000007f, simple),
21543 + IFLD(CRD_DW, 3, 9, 0x00000e00, simple),
21544 + IFLD(PART1_K12, 1, 12, 0x00001000, simple),
21545 + IFLD(PART2_K12, 2, 12, 0x00003000, simple),
21546 + IFLD(K12, 12, 0, 0x00000fff, simple),
21547 + IFLD(S5, 5, 5, 0x000003e0, simple),
21548 + IFLD(K5E2, 5, 4, 0x000001f0, simple),
21549 + IFLD(K4, 4, 20, 0x00f00000, simple),
21550 + IFLD(COND4E2, 4, 4, 0x000000f0, simple),
21551 + IFLD(K8E2, 8, 4, 0x00000ff0, simple),
21552 + IFLD(K6, 6, 20, 0x03f00000, simple),
21553 + IFLD(MEM15, 15, 0, 0x00007fff, simple),
21554 + IFLD(MEMB5, 5, 15, 0x000f8000, simple),
21555 + IFLD(W, 1, 25, 0x02000000, simple),
21556 + /* Coprocessor Multiple High/Low */
21557 + IFLD(CM_HL, 1, 8, 0x00000100, simple),
21558 + IFLD(K12CP, 12 ,0, 0x0000f0ff, k12cp),
21559 + IFLD(K9E, 9 ,0, 0x000001ff, simple),
21560 + };
21561 +#undef IFLD
21562 +
21563 +
21564 +struct avr32_opcode avr32_opc_table[] =
21565 + {
21566 + {
21567 + AVR32_OPC_ABS, 2, 0x5c400000, 0xfff00000,
21568 + &avr32_syntax_table[AVR32_SYNTAX_ABS],
21569 + BFD_RELOC_UNUSED, 1, -1,
21570 + {
21571 + &avr32_ifield_table[AVR32_IFIELD_RY],
21572 + }
21573 + },
21574 + {
21575 + AVR32_OPC_ACALL, 2, 0xd0000000, 0xf00f0000,
21576 + &avr32_syntax_table[AVR32_SYNTAX_ACALL],
21577 + BFD_RELOC_UNUSED, 1, -1,
21578 + {
21579 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21580 + },
21581 + },
21582 + {
21583 + AVR32_OPC_ACR, 2, 0x5c000000, 0xfff00000,
21584 + &avr32_syntax_table[AVR32_SYNTAX_ACR],
21585 + BFD_RELOC_UNUSED, 1, -1,
21586 + {
21587 + &avr32_ifield_table[AVR32_IFIELD_RY],
21588 + },
21589 + },
21590 + {
21591 + AVR32_OPC_ADC, 4, 0xe0000040, 0xe1f0fff0,
21592 + &avr32_syntax_table[AVR32_SYNTAX_ADC],
21593 + BFD_RELOC_UNUSED, 3, -1,
21594 + {
21595 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21596 + &avr32_ifield_table[AVR32_IFIELD_RX],
21597 + &avr32_ifield_table[AVR32_IFIELD_RY],
21598 + },
21599 + },
21600 + {
21601 + AVR32_OPC_ADD1, 2, 0x00000000, 0xe1f00000,
21602 + &avr32_syntax_table[AVR32_SYNTAX_ADD1],
21603 + BFD_RELOC_UNUSED, 2, -1,
21604 + {
21605 + &avr32_ifield_table[AVR32_IFIELD_RY],
21606 + &avr32_ifield_table[AVR32_IFIELD_RX],
21607 + },
21608 + },
21609 + {
21610 + AVR32_OPC_ADD2, 4, 0xe0000000, 0xe1f0ffc0,
21611 + &avr32_syntax_table[AVR32_SYNTAX_ADD2],
21612 + BFD_RELOC_UNUSED, 4, -1,
21613 + {
21614 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21615 + &avr32_ifield_table[AVR32_IFIELD_RX],
21616 + &avr32_ifield_table[AVR32_IFIELD_RY],
21617 + &avr32_ifield_table[AVR32_IFIELD_K2],
21618 + },
21619 + },
21620 + {
21621 + AVR32_OPC_ADDABS, 4, 0xe0000e40, 0xe1f0fff0,
21622 + &avr32_syntax_table[AVR32_SYNTAX_ADDABS],
21623 + BFD_RELOC_UNUSED, 3, -1,
21624 + {
21625 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21626 + &avr32_ifield_table[AVR32_IFIELD_RX],
21627 + &avr32_ifield_table[AVR32_IFIELD_RY],
21628 + },
21629 + },
21630 + {
21631 + AVR32_OPC_ADDHH_W, 4, 0xe0000e00, 0xe1f0ffc0,
21632 + &avr32_syntax_table[AVR32_SYNTAX_ADDHH_W],
21633 + BFD_RELOC_UNUSED, 5, -1,
21634 + {
21635 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21636 + &avr32_ifield_table[AVR32_IFIELD_RX],
21637 + &avr32_ifield_table[AVR32_IFIELD_X],
21638 + &avr32_ifield_table[AVR32_IFIELD_RY],
21639 + &avr32_ifield_table[AVR32_IFIELD_Y],
21640 + },
21641 + },
21642 + {
21643 + AVR32_OPC_AND1, 2, 0x00600000, 0xe1f00000,
21644 + &avr32_syntax_table[AVR32_SYNTAX_AND1],
21645 + BFD_RELOC_UNUSED, 2, -1,
21646 + {
21647 + &avr32_ifield_table[AVR32_IFIELD_RY],
21648 + &avr32_ifield_table[AVR32_IFIELD_RX],
21649 + },
21650 + },
21651 + {
21652 + AVR32_OPC_AND2, 4, 0xe1e00000, 0xe1f0fe00,
21653 + &avr32_syntax_table[AVR32_SYNTAX_AND2],
21654 + BFD_RELOC_UNUSED, 4, -1,
21655 + {
21656 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21657 + &avr32_ifield_table[AVR32_IFIELD_RX],
21658 + &avr32_ifield_table[AVR32_IFIELD_RY],
21659 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
21660 + },
21661 + },
21662 + {
21663 + AVR32_OPC_AND3, 4, 0xe1e00200, 0xe1f0fe00,
21664 + &avr32_syntax_table[AVR32_SYNTAX_AND3],
21665 + BFD_RELOC_UNUSED, 4, -1,
21666 + {
21667 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21668 + &avr32_ifield_table[AVR32_IFIELD_RX],
21669 + &avr32_ifield_table[AVR32_IFIELD_RY],
21670 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
21671 + },
21672 + },
21673 + {
21674 + AVR32_OPC_ANDH, 4, 0xe4100000, 0xfff00000,
21675 + &avr32_syntax_table[AVR32_SYNTAX_ANDH],
21676 + BFD_RELOC_AVR32_16U, 2, 1,
21677 + {
21678 + &avr32_ifield_table[AVR32_IFIELD_RY],
21679 + &avr32_ifield_table[AVR32_IFIELD_K16],
21680 + },
21681 + },
21682 + {
21683 + AVR32_OPC_ANDH_COH, 4, 0xe6100000, 0xfff00000,
21684 + &avr32_syntax_table[AVR32_SYNTAX_ANDH_COH],
21685 + BFD_RELOC_AVR32_16U, 2, 1,
21686 + {
21687 + &avr32_ifield_table[AVR32_IFIELD_RY],
21688 + &avr32_ifield_table[AVR32_IFIELD_K16],
21689 + },
21690 + },
21691 + {
21692 + AVR32_OPC_ANDL, 4, 0xe0100000, 0xfff00000,
21693 + &avr32_syntax_table[AVR32_SYNTAX_ANDL],
21694 + BFD_RELOC_AVR32_16U, 2, 1,
21695 + {
21696 + &avr32_ifield_table[AVR32_IFIELD_RY],
21697 + &avr32_ifield_table[AVR32_IFIELD_K16],
21698 + },
21699 + },
21700 + {
21701 + AVR32_OPC_ANDL_COH, 4, 0xe2100000, 0xfff00000,
21702 + &avr32_syntax_table[AVR32_SYNTAX_ANDL_COH],
21703 + BFD_RELOC_AVR32_16U, 2, 1,
21704 + {
21705 + &avr32_ifield_table[AVR32_IFIELD_RY],
21706 + &avr32_ifield_table[AVR32_IFIELD_K16],
21707 + },
21708 + },
21709 + {
21710 + AVR32_OPC_ANDN, 2, 0x00800000, 0xe1f00000,
21711 + &avr32_syntax_table[AVR32_SYNTAX_ANDN],
21712 + BFD_RELOC_UNUSED, 2, -1,
21713 + {
21714 + &avr32_ifield_table[AVR32_IFIELD_RY],
21715 + &avr32_ifield_table[AVR32_IFIELD_RX],
21716 + },
21717 + },
21718 + {
21719 + AVR32_OPC_ASR1, 4, 0xe0000840, 0xe1f0fff0,
21720 + &avr32_syntax_table[AVR32_SYNTAX_ASR1],
21721 + BFD_RELOC_UNUSED, 3, -1,
21722 + {
21723 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21724 + &avr32_ifield_table[AVR32_IFIELD_RX],
21725 + &avr32_ifield_table[AVR32_IFIELD_RY],
21726 + },
21727 + },
21728 + {
21729 + AVR32_OPC_ASR3, 4, 0xe0001400, 0xe1f0ffe0,
21730 + &avr32_syntax_table[AVR32_SYNTAX_ASR3],
21731 + BFD_RELOC_UNUSED, 3, -1,
21732 + {
21733 + &avr32_ifield_table[AVR32_IFIELD_RY],
21734 + &avr32_ifield_table[AVR32_IFIELD_RX],
21735 + &avr32_ifield_table[AVR32_IFIELD_K5E],
21736 + },
21737 + },
21738 + {
21739 + AVR32_OPC_ASR2, 2, 0xa1400000, 0xe1e00000,
21740 + &avr32_syntax_table[AVR32_SYNTAX_ASR2],
21741 + BFD_RELOC_UNUSED, 2, -1,
21742 + {
21743 + &avr32_ifield_table[AVR32_IFIELD_RY],
21744 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
21745 + },
21746 + },
21747 + {
21748 + AVR32_OPC_BLD, 4, 0xedb00000, 0xfff0ffe0,
21749 + &avr32_syntax_table[AVR32_SYNTAX_BLD],
21750 + BFD_RELOC_UNUSED, 2, -1,
21751 + {
21752 + &avr32_ifield_table[AVR32_IFIELD_RY],
21753 + &avr32_ifield_table[AVR32_IFIELD_K5E],
21754 + },
21755 + },
21756 + {
21757 + AVR32_OPC_BREQ1, 2, 0xc0000000, 0xf00f0000,
21758 + &avr32_syntax_table[AVR32_SYNTAX_BREQ1],
21759 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21760 + {
21761 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21762 + },
21763 + },
21764 + {
21765 + AVR32_OPC_BRNE1, 2, 0xc0010000, 0xf00f0000,
21766 + &avr32_syntax_table[AVR32_SYNTAX_BRNE1],
21767 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21768 + {
21769 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21770 + },
21771 + },
21772 + {
21773 + AVR32_OPC_BRCC1, 2, 0xc0020000, 0xf00f0000,
21774 + &avr32_syntax_table[AVR32_SYNTAX_BRCC1],
21775 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21776 + {
21777 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21778 + },
21779 + },
21780 + {
21781 + AVR32_OPC_BRCS1, 2, 0xc0030000, 0xf00f0000,
21782 + &avr32_syntax_table[AVR32_SYNTAX_BRCS1],
21783 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21784 + {
21785 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21786 + },
21787 + },
21788 + {
21789 + AVR32_OPC_BRGE1, 2, 0xc0040000, 0xf00f0000,
21790 + &avr32_syntax_table[AVR32_SYNTAX_BRGE1],
21791 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21792 + {
21793 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21794 + },
21795 + },
21796 + {
21797 + AVR32_OPC_BRLT1, 2, 0xc0050000, 0xf00f0000,
21798 + &avr32_syntax_table[AVR32_SYNTAX_BRLT1],
21799 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21800 + {
21801 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21802 + },
21803 + },
21804 + {
21805 + AVR32_OPC_BRMI1, 2, 0xc0060000, 0xf00f0000,
21806 + &avr32_syntax_table[AVR32_SYNTAX_BRMI1],
21807 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21808 + {
21809 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21810 + },
21811 + },
21812 + {
21813 + AVR32_OPC_BRPL1, 2, 0xc0070000, 0xf00f0000,
21814 + &avr32_syntax_table[AVR32_SYNTAX_BRPL1],
21815 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21816 + {
21817 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21818 + },
21819 + },
21820 + {
21821 + AVR32_OPC_BREQ2, 4, 0xe0800000, 0xe1ef0000,
21822 + &avr32_syntax_table[AVR32_SYNTAX_BREQ2],
21823 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21824 + {
21825 + &avr32_ifield_table[AVR32_IFIELD_K21],
21826 + },
21827 + },
21828 + {
21829 + AVR32_OPC_BRNE2, 4, 0xe0810000, 0xe1ef0000,
21830 + &avr32_syntax_table[AVR32_SYNTAX_BRNE2],
21831 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21832 + {
21833 + &avr32_ifield_table[AVR32_IFIELD_K21],
21834 + },
21835 + },
21836 + {
21837 + AVR32_OPC_BRCC2, 4, 0xe0820000, 0xe1ef0000,
21838 + &avr32_syntax_table[AVR32_SYNTAX_BRHS2],
21839 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21840 + {
21841 + &avr32_ifield_table[AVR32_IFIELD_K21],
21842 + },
21843 + },
21844 + {
21845 + AVR32_OPC_BRCS2, 4, 0xe0830000, 0xe1ef0000,
21846 + &avr32_syntax_table[AVR32_SYNTAX_BRLO2],
21847 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21848 + {
21849 + &avr32_ifield_table[AVR32_IFIELD_K21],
21850 + },
21851 + },
21852 + {
21853 + AVR32_OPC_BRGE2, 4, 0xe0840000, 0xe1ef0000,
21854 + &avr32_syntax_table[AVR32_SYNTAX_BRGE2],
21855 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21856 + {
21857 + &avr32_ifield_table[AVR32_IFIELD_K21],
21858 + },
21859 + },
21860 + {
21861 + AVR32_OPC_BRLT2, 4, 0xe0850000, 0xe1ef0000,
21862 + &avr32_syntax_table[AVR32_SYNTAX_BRLT2],
21863 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21864 + {
21865 + &avr32_ifield_table[AVR32_IFIELD_K21],
21866 + },
21867 + },
21868 + {
21869 + AVR32_OPC_BRMI2, 4, 0xe0860000, 0xe1ef0000,
21870 + &avr32_syntax_table[AVR32_SYNTAX_BRMI2],
21871 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21872 + {
21873 + &avr32_ifield_table[AVR32_IFIELD_K21],
21874 + },
21875 + },
21876 + {
21877 + AVR32_OPC_BRPL2, 4, 0xe0870000, 0xe1ef0000,
21878 + &avr32_syntax_table[AVR32_SYNTAX_BRPL2],
21879 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21880 + {
21881 + &avr32_ifield_table[AVR32_IFIELD_K21],
21882 + },
21883 + },
21884 + {
21885 + AVR32_OPC_BRLS, 4, 0xe0880000, 0xe1ef0000,
21886 + &avr32_syntax_table[AVR32_SYNTAX_BRLS],
21887 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21888 + {
21889 + &avr32_ifield_table[AVR32_IFIELD_K21],
21890 + },
21891 + },
21892 + {
21893 + AVR32_OPC_BRGT, 4, 0xe0890000, 0xe1ef0000,
21894 + &avr32_syntax_table[AVR32_SYNTAX_BRGT],
21895 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21896 + {
21897 + &avr32_ifield_table[AVR32_IFIELD_K21],
21898 + },
21899 + },
21900 + {
21901 + AVR32_OPC_BRLE, 4, 0xe08a0000, 0xe1ef0000,
21902 + &avr32_syntax_table[AVR32_SYNTAX_BRLE],
21903 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21904 + {
21905 + &avr32_ifield_table[AVR32_IFIELD_K21],
21906 + },
21907 + },
21908 + {
21909 + AVR32_OPC_BRHI, 4, 0xe08b0000, 0xe1ef0000,
21910 + &avr32_syntax_table[AVR32_SYNTAX_BRHI],
21911 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21912 + {
21913 + &avr32_ifield_table[AVR32_IFIELD_K21],
21914 + },
21915 + },
21916 + {
21917 + AVR32_OPC_BRVS, 4, 0xe08c0000, 0xe1ef0000,
21918 + &avr32_syntax_table[AVR32_SYNTAX_BRVS],
21919 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21920 + {
21921 + &avr32_ifield_table[AVR32_IFIELD_K21],
21922 + },
21923 + },
21924 + {
21925 + AVR32_OPC_BRVC, 4, 0xe08d0000, 0xe1ef0000,
21926 + &avr32_syntax_table[AVR32_SYNTAX_BRVC],
21927 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21928 + {
21929 + &avr32_ifield_table[AVR32_IFIELD_K21],
21930 + },
21931 + },
21932 + {
21933 + AVR32_OPC_BRQS, 4, 0xe08e0000, 0xe1ef0000,
21934 + &avr32_syntax_table[AVR32_SYNTAX_BRQS],
21935 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21936 + {
21937 + &avr32_ifield_table[AVR32_IFIELD_K21],
21938 + },
21939 + },
21940 + {
21941 + AVR32_OPC_BRAL, 4, 0xe08f0000, 0xe1ef0000,
21942 + &avr32_syntax_table[AVR32_SYNTAX_BRAL],
21943 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21944 + {
21945 + &avr32_ifield_table[AVR32_IFIELD_K21],
21946 + },
21947 + },
21948 + {
21949 + AVR32_OPC_BREAKPOINT, 2, 0xd6730000, 0xffff0000,
21950 + &avr32_syntax_table[AVR32_SYNTAX_BREAKPOINT],
21951 + BFD_RELOC_UNUSED, 0, -1, { NULL },
21952 + },
21953 + {
21954 + AVR32_OPC_BREV, 2, 0x5c900000, 0xfff00000,
21955 + &avr32_syntax_table[AVR32_SYNTAX_BREV],
21956 + BFD_RELOC_UNUSED, 1, -1,
21957 + {
21958 + &avr32_ifield_table[AVR32_IFIELD_RY],
21959 + },
21960 + },
21961 + {
21962 + AVR32_OPC_BST, 4, 0xefb00000, 0xfff0ffe0,
21963 + &avr32_syntax_table[AVR32_SYNTAX_BST],
21964 + BFD_RELOC_UNUSED, 2, -1,
21965 + {
21966 + &avr32_ifield_table[AVR32_IFIELD_RY],
21967 + &avr32_ifield_table[AVR32_IFIELD_K5E],
21968 + },
21969 + },
21970 + {
21971 + AVR32_OPC_CACHE, 4, 0xf4100000, 0xfff00000,
21972 + &avr32_syntax_table[AVR32_SYNTAX_CACHE],
21973 + BFD_RELOC_UNUSED, 3, -1,
21974 + {
21975 + &avr32_ifield_table[AVR32_IFIELD_RY],
21976 + &avr32_ifield_table[AVR32_IFIELD_K11],
21977 + &avr32_ifield_table[AVR32_IFIELD_CACHEOP],
21978 + },
21979 + },
21980 + {
21981 + AVR32_OPC_CASTS_B, 2, 0x5c600000, 0xfff00000,
21982 + &avr32_syntax_table[AVR32_SYNTAX_CASTS_B],
21983 + BFD_RELOC_UNUSED, 1, -1,
21984 + {
21985 + &avr32_ifield_table[AVR32_IFIELD_RY],
21986 + },
21987 + },
21988 + {
21989 + AVR32_OPC_CASTS_H, 2, 0x5c800000, 0xfff00000,
21990 + &avr32_syntax_table[AVR32_SYNTAX_CASTS_H],
21991 + BFD_RELOC_UNUSED, 1, -1,
21992 + {
21993 + &avr32_ifield_table[AVR32_IFIELD_RY],
21994 + },
21995 + },
21996 + {
21997 + AVR32_OPC_CASTU_B, 2, 0x5c500000, 0xfff00000,
21998 + &avr32_syntax_table[AVR32_SYNTAX_CASTU_B],
21999 + BFD_RELOC_UNUSED, 1, -1,
22000 + {
22001 + &avr32_ifield_table[AVR32_IFIELD_RY],
22002 + },
22003 + },
22004 + {
22005 + AVR32_OPC_CASTU_H, 2, 0x5c700000, 0xfff00000,
22006 + &avr32_syntax_table[AVR32_SYNTAX_CASTU_H],
22007 + BFD_RELOC_UNUSED, 1, -1,
22008 + {
22009 + &avr32_ifield_table[AVR32_IFIELD_RY],
22010 + },
22011 + },
22012 + {
22013 + AVR32_OPC_CBR, 2, 0xa1c00000, 0xe1e00000,
22014 + &avr32_syntax_table[AVR32_SYNTAX_CBR],
22015 + BFD_RELOC_UNUSED, 2, -1,
22016 + {
22017 + &avr32_ifield_table[AVR32_IFIELD_RY],
22018 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
22019 + },
22020 + },
22021 + {
22022 + AVR32_OPC_CLZ, 4, 0xe0001200, 0xe1f0ffff,
22023 + &avr32_syntax_table[AVR32_SYNTAX_CLZ],
22024 + BFD_RELOC_UNUSED, 2, -1,
22025 + {
22026 + &avr32_ifield_table[AVR32_IFIELD_RY],
22027 + &avr32_ifield_table[AVR32_IFIELD_RX],
22028 + },
22029 + },
22030 + {
22031 + AVR32_OPC_COM, 2, 0x5cd00000, 0xfff00000,
22032 + &avr32_syntax_table[AVR32_SYNTAX_COM],
22033 + BFD_RELOC_UNUSED, 1, -1,
22034 + {
22035 + &avr32_ifield_table[AVR32_IFIELD_RY],
22036 + },
22037 + },
22038 + {
22039 + AVR32_OPC_COP, 4, 0xe1a00000, 0xf9f00000,
22040 + &avr32_syntax_table[AVR32_SYNTAX_COP],
22041 + BFD_RELOC_UNUSED, 5, -1,
22042 + {
22043 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22044 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
22045 + &avr32_ifield_table[AVR32_IFIELD_CRX],
22046 + &avr32_ifield_table[AVR32_IFIELD_CRY],
22047 + &avr32_ifield_table[AVR32_IFIELD_CPOP],
22048 + },
22049 + },
22050 + {
22051 + AVR32_OPC_CP_B, 4, 0xe0001800, 0xe1f0ffff,
22052 + &avr32_syntax_table[AVR32_SYNTAX_CP_B],
22053 + BFD_RELOC_UNUSED, 2, -1,
22054 + {
22055 + &avr32_ifield_table[AVR32_IFIELD_RY],
22056 + &avr32_ifield_table[AVR32_IFIELD_RX],
22057 + },
22058 + },
22059 + {
22060 + AVR32_OPC_CP_H, 4, 0xe0001900, 0xe1f0ffff,
22061 + &avr32_syntax_table[AVR32_SYNTAX_CP_H],
22062 + BFD_RELOC_UNUSED, 2, -1,
22063 + {
22064 + &avr32_ifield_table[AVR32_IFIELD_RY],
22065 + &avr32_ifield_table[AVR32_IFIELD_RX],
22066 + },
22067 + },
22068 + {
22069 + AVR32_OPC_CP_W1, 2, 0x00300000, 0xe1f00000,
22070 + &avr32_syntax_table[AVR32_SYNTAX_CP_W1],
22071 + BFD_RELOC_UNUSED, 2, -1,
22072 + {
22073 + &avr32_ifield_table[AVR32_IFIELD_RY],
22074 + &avr32_ifield_table[AVR32_IFIELD_RX],
22075 + },
22076 + },
22077 + {
22078 + AVR32_OPC_CP_W2, 2, 0x58000000, 0xfc000000,
22079 + &avr32_syntax_table[AVR32_SYNTAX_CP_W2],
22080 + BFD_RELOC_AVR32_6S, 2, 1,
22081 + {
22082 + &avr32_ifield_table[AVR32_IFIELD_RY],
22083 + &avr32_ifield_table[AVR32_IFIELD_K6],
22084 + },
22085 + },
22086 + {
22087 + AVR32_OPC_CP_W3, 4, 0xe0400000, 0xe1e00000,
22088 + &avr32_syntax_table[AVR32_SYNTAX_CP_W3],
22089 + BFD_RELOC_AVR32_21S, 2, 1,
22090 + {
22091 + &avr32_ifield_table[AVR32_IFIELD_RY],
22092 + &avr32_ifield_table[AVR32_IFIELD_K21],
22093 + },
22094 + },
22095 + {
22096 + AVR32_OPC_CPC1, 4, 0xe0001300, 0xe1f0ffff,
22097 + &avr32_syntax_table[AVR32_SYNTAX_CPC1],
22098 + BFD_RELOC_UNUSED, 2, -1,
22099 + {
22100 + &avr32_ifield_table[AVR32_IFIELD_RY],
22101 + &avr32_ifield_table[AVR32_IFIELD_RX],
22102 + },
22103 + },
22104 + {
22105 + AVR32_OPC_CPC2, 2, 0x5c200000, 0xfff00000,
22106 + &avr32_syntax_table[AVR32_SYNTAX_CPC2],
22107 + BFD_RELOC_UNUSED, 1, -1,
22108 + {
22109 + &avr32_ifield_table[AVR32_IFIELD_RY],
22110 + },
22111 + },
22112 + {
22113 + AVR32_OPC_CSRF, 2, 0xd4030000, 0xfe0f0000,
22114 + &avr32_syntax_table[AVR32_SYNTAX_CSRF],
22115 + BFD_RELOC_UNUSED, 1, -1,
22116 + {
22117 + &avr32_ifield_table[AVR32_IFIELD_K5C],
22118 + },
22119 + },
22120 + {
22121 + AVR32_OPC_CSRFCZ, 2, 0xd0030000, 0xfe0f0000,
22122 + &avr32_syntax_table[AVR32_SYNTAX_CSRFCZ],
22123 + BFD_RELOC_UNUSED, 1, -1,
22124 + {
22125 + &avr32_ifield_table[AVR32_IFIELD_K5C],
22126 + },
22127 + },
22128 + {
22129 + AVR32_OPC_DIVS, 4, 0xe0000c00, 0xe1f0ffc0,
22130 + &avr32_syntax_table[AVR32_SYNTAX_DIVS],
22131 + BFD_RELOC_UNUSED, 3, -1,
22132 + {
22133 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22134 + &avr32_ifield_table[AVR32_IFIELD_RX],
22135 + &avr32_ifield_table[AVR32_IFIELD_RY],
22136 + },
22137 + },
22138 + {
22139 + AVR32_OPC_DIVU, 4, 0xe0000d00, 0xe1f0ffc0,
22140 + &avr32_syntax_table[AVR32_SYNTAX_DIVU],
22141 + BFD_RELOC_UNUSED, 3, -1,
22142 + {
22143 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22144 + &avr32_ifield_table[AVR32_IFIELD_RX],
22145 + &avr32_ifield_table[AVR32_IFIELD_RY],
22146 + },
22147 + },
22148 + {
22149 + AVR32_OPC_EOR1, 2, 0x00500000, 0xe1f00000,
22150 + &avr32_syntax_table[AVR32_SYNTAX_EOR1],
22151 + BFD_RELOC_UNUSED, 2, -1,
22152 + {
22153 + &avr32_ifield_table[AVR32_IFIELD_RY],
22154 + &avr32_ifield_table[AVR32_IFIELD_RX],
22155 + },
22156 + },
22157 + {
22158 + AVR32_OPC_EOR2, 4, 0xe1e02000, 0xe1f0fe00,
22159 + &avr32_syntax_table[AVR32_SYNTAX_EOR2],
22160 + BFD_RELOC_UNUSED, 4, -1,
22161 + {
22162 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22163 + &avr32_ifield_table[AVR32_IFIELD_RX],
22164 + &avr32_ifield_table[AVR32_IFIELD_RY],
22165 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
22166 + }
22167 + },
22168 + {
22169 + AVR32_OPC_EOR3, 4, 0xe1e02200, 0xe1f0fe00,
22170 + &avr32_syntax_table[AVR32_SYNTAX_EOR3],
22171 + BFD_RELOC_UNUSED, 4, -1,
22172 + {
22173 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22174 + &avr32_ifield_table[AVR32_IFIELD_RX],
22175 + &avr32_ifield_table[AVR32_IFIELD_RY],
22176 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
22177 + }
22178 + },
22179 + {
22180 + AVR32_OPC_EORL, 4, 0xec100000, 0xfff00000,
22181 + &avr32_syntax_table[AVR32_SYNTAX_EORL],
22182 + BFD_RELOC_AVR32_16U, 2, 1,
22183 + {
22184 + &avr32_ifield_table[AVR32_IFIELD_RY],
22185 + &avr32_ifield_table[AVR32_IFIELD_K16],
22186 + },
22187 + },
22188 + {
22189 + AVR32_OPC_EORH, 4, 0xee100000, 0xfff00000,
22190 + &avr32_syntax_table[AVR32_SYNTAX_EORH],
22191 + BFD_RELOC_AVR32_16U, 2, 1,
22192 + {
22193 + &avr32_ifield_table[AVR32_IFIELD_RY],
22194 + &avr32_ifield_table[AVR32_IFIELD_K16],
22195 + },
22196 + },
22197 + {
22198 + AVR32_OPC_FRS, 2, 0xd7430000, 0xffff0000,
22199 + &avr32_syntax_table[AVR32_SYNTAX_FRS],
22200 + BFD_RELOC_UNUSED, 0, -1, { NULL },
22201 + },
22202 + {
22203 + AVR32_OPC_ICALL, 2, 0x5d100000, 0xfff00000,
22204 + &avr32_syntax_table[AVR32_SYNTAX_ICALL],
22205 + BFD_RELOC_UNUSED, 1, -1,
22206 + {
22207 + &avr32_ifield_table[AVR32_IFIELD_RY],
22208 + },
22209 + },
22210 + {
22211 + AVR32_OPC_INCJOSP, 2, 0xd6830000, 0xff8f0000,
22212 + &avr32_syntax_table[AVR32_SYNTAX_INCJOSP],
22213 + BFD_RELOC_UNUSED, 1, -1,
22214 + {
22215 + &avr32_ifield_table[AVR32_IFIELD_K3],
22216 + },
22217 + },
22218 + {
22219 + AVR32_OPC_LD_D1, 2, 0xa1010000, 0xe1f10000,
22220 + &avr32_syntax_table[AVR32_SYNTAX_LD_D1],
22221 + BFD_RELOC_UNUSED, 2, -1,
22222 + {
22223 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
22224 + &avr32_ifield_table[AVR32_IFIELD_RX],
22225 + },
22226 + },
22227 + {
22228 + AVR32_OPC_LD_D2, 2, 0xa1100000, 0xe1f10000,
22229 + &avr32_syntax_table[AVR32_SYNTAX_LD_D2],
22230 + BFD_RELOC_UNUSED, 2, -1,
22231 + {
22232 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
22233 + &avr32_ifield_table[AVR32_IFIELD_RX],
22234 + },
22235 + },
22236 + {
22237 + AVR32_OPC_LD_D3, 2, 0xa1000000, 0xe1f10000,
22238 + &avr32_syntax_table[AVR32_SYNTAX_LD_D3],
22239 + BFD_RELOC_UNUSED, 2, -1,
22240 + {
22241 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
22242 + &avr32_ifield_table[AVR32_IFIELD_RX],
22243 + },
22244 + },
22245 + {
22246 + AVR32_OPC_LD_D5, 4, 0xe0000200, 0xe1f0ffc1,
22247 + &avr32_syntax_table[AVR32_SYNTAX_LD_D5],
22248 + BFD_RELOC_UNUSED, 4, -1,
22249 + {
22250 + &avr32_ifield_table[AVR32_IFIELD_RD_DW],
22251 + &avr32_ifield_table[AVR32_IFIELD_RX],
22252 + &avr32_ifield_table[AVR32_IFIELD_RY],
22253 + &avr32_ifield_table[AVR32_IFIELD_K2],
22254 + },
22255 + },
22256 + {
22257 + AVR32_OPC_LD_D4, 4, 0xe0e00000, 0xe1f10000,
22258 + &avr32_syntax_table[AVR32_SYNTAX_LD_D4],
22259 + BFD_RELOC_AVR32_16S, 3, 2,
22260 + {
22261 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
22262 + &avr32_ifield_table[AVR32_IFIELD_RX],
22263 + &avr32_ifield_table[AVR32_IFIELD_K16],
22264 + },
22265 + },
22266 + {
22267 + AVR32_OPC_LD_SB2, 4, 0xe0000600, 0xe1f0ffc0,
22268 + &avr32_syntax_table[AVR32_SYNTAX_LD_SB2],
22269 + BFD_RELOC_UNUSED, 4, -1,
22270 + {
22271 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22272 + &avr32_ifield_table[AVR32_IFIELD_RX],
22273 + &avr32_ifield_table[AVR32_IFIELD_RY],
22274 + &avr32_ifield_table[AVR32_IFIELD_K2],
22275 + },
22276 + },
22277 + {
22278 + AVR32_OPC_LD_SB1, 4, 0xe1200000, 0xe1f00000,
22279 + &avr32_syntax_table[AVR32_SYNTAX_LD_SB1],
22280 + BFD_RELOC_AVR32_16S, 3, -1,
22281 + {
22282 + &avr32_ifield_table[AVR32_IFIELD_RY],
22283 + &avr32_ifield_table[AVR32_IFIELD_RX],
22284 + &avr32_ifield_table[AVR32_IFIELD_K16],
22285 + },
22286 + },
22287 + {
22288 + AVR32_OPC_LD_UB1, 2, 0x01300000, 0xe1f00000,
22289 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB1],
22290 + BFD_RELOC_UNUSED, 2, -1,
22291 + {
22292 + &avr32_ifield_table[AVR32_IFIELD_RY],
22293 + &avr32_ifield_table[AVR32_IFIELD_RX],
22294 + },
22295 + },
22296 + {
22297 + AVR32_OPC_LD_UB2, 2, 0x01700000, 0xe1f00000,
22298 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB2],
22299 + BFD_RELOC_UNUSED, 2, -1,
22300 + {
22301 + &avr32_ifield_table[AVR32_IFIELD_RY],
22302 + &avr32_ifield_table[AVR32_IFIELD_RX],
22303 + },
22304 + },
22305 + {
22306 + AVR32_OPC_LD_UB5, 4, 0xe0000700, 0xe1f0ffc0,
22307 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB5],
22308 + BFD_RELOC_UNUSED, 4, -1,
22309 + {
22310 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22311 + &avr32_ifield_table[AVR32_IFIELD_RX],
22312 + &avr32_ifield_table[AVR32_IFIELD_RY],
22313 + &avr32_ifield_table[AVR32_IFIELD_K2],
22314 + },
22315 + },
22316 + {
22317 + AVR32_OPC_LD_UB3, 2, 0x01800000, 0xe1800000,
22318 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB3],
22319 + BFD_RELOC_AVR32_3U, 3, 2,
22320 + {
22321 + &avr32_ifield_table[AVR32_IFIELD_RY],
22322 + &avr32_ifield_table[AVR32_IFIELD_RX],
22323 + &avr32_ifield_table[AVR32_IFIELD_K3],
22324 + },
22325 + },
22326 + {
22327 + AVR32_OPC_LD_UB4, 4, 0xe1300000, 0xe1f00000,
22328 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB4],
22329 + BFD_RELOC_AVR32_16S, 3, 2,
22330 + {
22331 + &avr32_ifield_table[AVR32_IFIELD_RY],
22332 + &avr32_ifield_table[AVR32_IFIELD_RX],
22333 + &avr32_ifield_table[AVR32_IFIELD_K16],
22334 + },
22335 + },
22336 + {
22337 + AVR32_OPC_LD_SH1, 2, 0x01100000, 0xe1f00000,
22338 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH1],
22339 + BFD_RELOC_UNUSED, 2, -1,
22340 + {
22341 + &avr32_ifield_table[AVR32_IFIELD_RY],
22342 + &avr32_ifield_table[AVR32_IFIELD_RX],
22343 + },
22344 + },
22345 + {
22346 + AVR32_OPC_LD_SH2, 2, 0x01500000, 0xe1f00000,
22347 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH2],
22348 + BFD_RELOC_UNUSED, 2, -1,
22349 + {
22350 + &avr32_ifield_table[AVR32_IFIELD_RY],
22351 + &avr32_ifield_table[AVR32_IFIELD_RX],
22352 + },
22353 + },
22354 + {
22355 + AVR32_OPC_LD_SH5, 4, 0xe0000400, 0xe1f0ffc0,
22356 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH5],
22357 + BFD_RELOC_UNUSED, 4, -1,
22358 + {
22359 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22360 + &avr32_ifield_table[AVR32_IFIELD_RX],
22361 + &avr32_ifield_table[AVR32_IFIELD_RY],
22362 + &avr32_ifield_table[AVR32_IFIELD_K2],
22363 + },
22364 + },
22365 + {
22366 + AVR32_OPC_LD_SH3, 2, 0x80000000, 0xe1800000,
22367 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH3],
22368 + BFD_RELOC_AVR32_4UH, 3, 2,
22369 + {
22370 + &avr32_ifield_table[AVR32_IFIELD_RY],
22371 + &avr32_ifield_table[AVR32_IFIELD_RX],
22372 + &avr32_ifield_table[AVR32_IFIELD_K3],
22373 + },
22374 + },
22375 + {
22376 + AVR32_OPC_LD_SH4, 4, 0xe1000000, 0xe1f00000,
22377 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH4],
22378 + BFD_RELOC_AVR32_16S, 3, 2,
22379 + {
22380 + &avr32_ifield_table[AVR32_IFIELD_RY],
22381 + &avr32_ifield_table[AVR32_IFIELD_RX],
22382 + &avr32_ifield_table[AVR32_IFIELD_K16],
22383 + },
22384 + },
22385 + {
22386 + AVR32_OPC_LD_UH1, 2, 0x01200000, 0xe1f00000,
22387 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH1],
22388 + BFD_RELOC_UNUSED, 2, -1,
22389 + {
22390 + &avr32_ifield_table[AVR32_IFIELD_RY],
22391 + &avr32_ifield_table[AVR32_IFIELD_RX],
22392 + },
22393 + },
22394 + {
22395 + AVR32_OPC_LD_UH2, 2, 0x01600000, 0xe1f00000,
22396 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH2],
22397 + BFD_RELOC_UNUSED, 2, -1,
22398 + {
22399 + &avr32_ifield_table[AVR32_IFIELD_RY],
22400 + &avr32_ifield_table[AVR32_IFIELD_RX],
22401 + },
22402 + },
22403 + {
22404 + AVR32_OPC_LD_UH5, 4, 0xe0000500, 0xe1f0ffc0,
22405 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH5],
22406 + BFD_RELOC_UNUSED, 4, -1,
22407 + {
22408 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22409 + &avr32_ifield_table[AVR32_IFIELD_RX],
22410 + &avr32_ifield_table[AVR32_IFIELD_RY],
22411 + &avr32_ifield_table[AVR32_IFIELD_K2],
22412 + },
22413 + },
22414 + {
22415 + AVR32_OPC_LD_UH3, 2, 0x80800000, 0xe1800000,
22416 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH3],
22417 + BFD_RELOC_AVR32_4UH, 3, 2,
22418 + {
22419 + &avr32_ifield_table[AVR32_IFIELD_RY],
22420 + &avr32_ifield_table[AVR32_IFIELD_RX],
22421 + &avr32_ifield_table[AVR32_IFIELD_K3],
22422 + },
22423 + },
22424 + {
22425 + AVR32_OPC_LD_UH4, 4, 0xe1100000, 0xe1f00000,
22426 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH4],
22427 + BFD_RELOC_AVR32_16S, 3, 2,
22428 + {
22429 + &avr32_ifield_table[AVR32_IFIELD_RY],
22430 + &avr32_ifield_table[AVR32_IFIELD_RX],
22431 + &avr32_ifield_table[AVR32_IFIELD_K16],
22432 + },
22433 + },
22434 + {
22435 + AVR32_OPC_LD_W1, 2, 0x01000000, 0xe1f00000,
22436 + &avr32_syntax_table[AVR32_SYNTAX_LD_W1],
22437 + BFD_RELOC_UNUSED, 2, -1,
22438 + {
22439 + &avr32_ifield_table[AVR32_IFIELD_RY],
22440 + &avr32_ifield_table[AVR32_IFIELD_RX],
22441 + },
22442 + },
22443 + {
22444 + AVR32_OPC_LD_W2, 2, 0x01400000, 0xe1f00000,
22445 + &avr32_syntax_table[AVR32_SYNTAX_LD_W2],
22446 + BFD_RELOC_UNUSED, 2, -1,
22447 + {
22448 + &avr32_ifield_table[AVR32_IFIELD_RY],
22449 + &avr32_ifield_table[AVR32_IFIELD_RX],
22450 + },
22451 + },
22452 + {
22453 + AVR32_OPC_LD_W5, 4, 0xe0000300, 0xe1f0ffc0,
22454 + &avr32_syntax_table[AVR32_SYNTAX_LD_W5],
22455 + BFD_RELOC_UNUSED, 4, -1,
22456 + {
22457 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22458 + &avr32_ifield_table[AVR32_IFIELD_RX],
22459 + &avr32_ifield_table[AVR32_IFIELD_RY],
22460 + &avr32_ifield_table[AVR32_IFIELD_K2],
22461 + },
22462 + },
22463 + {
22464 + AVR32_OPC_LD_W6, 4, 0xe0000f80, 0xe1f0ffc0,
22465 + &avr32_syntax_table[AVR32_SYNTAX_LD_W6],
22466 + BFD_RELOC_UNUSED, 4, -1,
22467 + {
22468 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22469 + &avr32_ifield_table[AVR32_IFIELD_RX],
22470 + &avr32_ifield_table[AVR32_IFIELD_RY],
22471 + &avr32_ifield_table[AVR32_IFIELD_K2],
22472 + },
22473 + },
22474 + {
22475 + AVR32_OPC_LD_W3, 2, 0x60000000, 0xe0000000,
22476 + &avr32_syntax_table[AVR32_SYNTAX_LD_W3],
22477 + BFD_RELOC_AVR32_7UW, 3, 2,
22478 + {
22479 + &avr32_ifield_table[AVR32_IFIELD_RY],
22480 + &avr32_ifield_table[AVR32_IFIELD_RX],
22481 + &avr32_ifield_table[AVR32_IFIELD_K5C],
22482 + },
22483 + },
22484 + {
22485 + AVR32_OPC_LD_W4, 4, 0xe0f00000, 0xe1f00000,
22486 + &avr32_syntax_table[AVR32_SYNTAX_LD_W4],
22487 + BFD_RELOC_AVR32_16S, 3, 2,
22488 + {
22489 + &avr32_ifield_table[AVR32_IFIELD_RY],
22490 + &avr32_ifield_table[AVR32_IFIELD_RX],
22491 + &avr32_ifield_table[AVR32_IFIELD_K16],
22492 + },
22493 + },
22494 + {
22495 + AVR32_OPC_LDC_D1, 4, 0xe9a01000, 0xfff01100,
22496 + &avr32_syntax_table[AVR32_SYNTAX_LDC_D1],
22497 + BFD_RELOC_AVR32_10UW, 4, 3,
22498 + {
22499 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22500 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
22501 + &avr32_ifield_table[AVR32_IFIELD_RY],
22502 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22503 + },
22504 + },
22505 + {
22506 + AVR32_OPC_LDC_D2, 4, 0xefa00050, 0xfff011ff,
22507 + &avr32_syntax_table[AVR32_SYNTAX_LDC_D2],
22508 + BFD_RELOC_UNUSED, 3, -1,
22509 + {
22510 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22511 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
22512 + &avr32_ifield_table[AVR32_IFIELD_RY],
22513 + },
22514 + },
22515 + {
22516 + AVR32_OPC_LDC_D3, 4, 0xefa01040, 0xfff011c0,
22517 + &avr32_syntax_table[AVR32_SYNTAX_LDC_D3],
22518 + BFD_RELOC_UNUSED, 5, -1,
22519 + {
22520 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22521 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
22522 + &avr32_ifield_table[AVR32_IFIELD_RY],
22523 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22524 + &avr32_ifield_table[AVR32_IFIELD_K2],
22525 + },
22526 + },
22527 + {
22528 + AVR32_OPC_LDC_W1, 4, 0xe9a00000, 0xfff01000,
22529 + &avr32_syntax_table[AVR32_SYNTAX_LDC_W1],
22530 + BFD_RELOC_AVR32_10UW, 4, 3,
22531 + {
22532 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22533 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
22534 + &avr32_ifield_table[AVR32_IFIELD_RY],
22535 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22536 + },
22537 + },
22538 + {
22539 + AVR32_OPC_LDC_W2, 4, 0xefa00040, 0xfff010ff,
22540 + &avr32_syntax_table[AVR32_SYNTAX_LDC_W2],
22541 + BFD_RELOC_UNUSED, 3, -1,
22542 + {
22543 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22544 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
22545 + &avr32_ifield_table[AVR32_IFIELD_RY],
22546 + },
22547 + },
22548 + {
22549 + AVR32_OPC_LDC_W3, 4, 0xefa01000, 0xfff010c0,
22550 + &avr32_syntax_table[AVR32_SYNTAX_LDC_W3],
22551 + BFD_RELOC_UNUSED, 5, -1,
22552 + {
22553 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22554 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
22555 + &avr32_ifield_table[AVR32_IFIELD_RY],
22556 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22557 + &avr32_ifield_table[AVR32_IFIELD_K2],
22558 + },
22559 + },
22560 + {
22561 + AVR32_OPC_LDC0_D, 4, 0xf3a00000, 0xfff00100,
22562 + &avr32_syntax_table[AVR32_SYNTAX_LDC0_D],
22563 + BFD_RELOC_AVR32_14UW, 3, 2,
22564 + {
22565 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
22566 + &avr32_ifield_table[AVR32_IFIELD_RY],
22567 + &avr32_ifield_table[AVR32_IFIELD_K12CP],
22568 + },
22569 + },
22570 + {
22571 + AVR32_OPC_LDC0_W, 4, 0xf1a00000, 0xfff00000,
22572 + &avr32_syntax_table[AVR32_SYNTAX_LDC0_W],
22573 + BFD_RELOC_AVR32_14UW, 3, 2,
22574 + {
22575 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
22576 + &avr32_ifield_table[AVR32_IFIELD_RY],
22577 + &avr32_ifield_table[AVR32_IFIELD_K12CP],
22578 + },
22579 + },
22580 + {
22581 + AVR32_OPC_LDCM_D, 4, 0xeda00400, 0xfff01f00,
22582 + &avr32_syntax_table[AVR32_SYNTAX_LDCM_D],
22583 + BFD_RELOC_UNUSED, 3, -1,
22584 + {
22585 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22586 + &avr32_ifield_table[AVR32_IFIELD_RY],
22587 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22588 + },
22589 + },
22590 + {
22591 + AVR32_OPC_LDCM_D_PU, 4, 0xeda01400, 0xfff01f00,
22592 + &avr32_syntax_table[AVR32_SYNTAX_LDCM_D_PU],
22593 + BFD_RELOC_UNUSED, 3, -1,
22594 + {
22595 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22596 + &avr32_ifield_table[AVR32_IFIELD_RY],
22597 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22598 + },
22599 + },
22600 + {
22601 + AVR32_OPC_LDCM_W, 4, 0xeda00000, 0xfff01e00,
22602 + &avr32_syntax_table[AVR32_SYNTAX_LDCM_W],
22603 + BFD_RELOC_UNUSED, 4, -1,
22604 + {
22605 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22606 + &avr32_ifield_table[AVR32_IFIELD_RY],
22607 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22608 + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
22609 + },
22610 + },
22611 + {
22612 + AVR32_OPC_LDCM_W_PU, 4, 0xeda01000, 0xfff01e00,
22613 + &avr32_syntax_table[AVR32_SYNTAX_LDCM_W_PU],
22614 + BFD_RELOC_UNUSED, 4, -1,
22615 + {
22616 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22617 + &avr32_ifield_table[AVR32_IFIELD_RY],
22618 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22619 + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
22620 + },
22621 + },
22622 + {
22623 + AVR32_OPC_LDDPC, 2, 0x48000000, 0xf8000000,
22624 + &avr32_syntax_table[AVR32_SYNTAX_LDDPC],
22625 + BFD_RELOC_AVR32_9UW_PCREL, 2, 1,
22626 + {
22627 + &avr32_ifield_table[AVR32_IFIELD_RY],
22628 + &avr32_ifield_table[AVR32_IFIELD_K7C],
22629 + },
22630 + },
22631 + {
22632 + AVR32_OPC_LDDPC_EXT, 4, 0xfef00000, 0xfff00000,
22633 + &avr32_syntax_table[AVR32_SYNTAX_LDDPC_EXT],
22634 + BFD_RELOC_AVR32_16B_PCREL, 2, 1,
22635 + {
22636 + &avr32_ifield_table[AVR32_IFIELD_RY],
22637 + &avr32_ifield_table[AVR32_IFIELD_K16],
22638 + },
22639 + },
22640 + {
22641 + AVR32_OPC_LDDSP, 2, 0x40000000, 0xf8000000,
22642 + &avr32_syntax_table[AVR32_SYNTAX_LDDSP],
22643 + BFD_RELOC_UNUSED, 2, -1,
22644 + {
22645 + &avr32_ifield_table[AVR32_IFIELD_RY],
22646 + &avr32_ifield_table[AVR32_IFIELD_K7C],
22647 + },
22648 + },
22649 + {
22650 + AVR32_OPC_LDINS_B, 4, 0xe1d04000, 0xe1f0c000,
22651 + &avr32_syntax_table[AVR32_SYNTAX_LDINS_B],
22652 + BFD_RELOC_UNUSED, 4, -1,
22653 + {
22654 + &avr32_ifield_table[AVR32_IFIELD_RY],
22655 + &avr32_ifield_table[AVR32_IFIELD_PART2_K12],
22656 + &avr32_ifield_table[AVR32_IFIELD_RX],
22657 + &avr32_ifield_table[AVR32_IFIELD_K12],
22658 + },
22659 + },
22660 + {
22661 + AVR32_OPC_LDINS_H, 4, 0xe1d00000, 0xe1f0e000,
22662 + &avr32_syntax_table[AVR32_SYNTAX_LDINS_H],
22663 + BFD_RELOC_UNUSED, 4, -1,
22664 + {
22665 + &avr32_ifield_table[AVR32_IFIELD_RY],
22666 + &avr32_ifield_table[AVR32_IFIELD_PART1_K12],
22667 + &avr32_ifield_table[AVR32_IFIELD_RX],
22668 + &avr32_ifield_table[AVR32_IFIELD_K12],
22669 + },
22670 + },
22671 + {
22672 + AVR32_OPC_LDM, 4, 0xe1c00000, 0xfdf00000,
22673 + &avr32_syntax_table[AVR32_SYNTAX_LDM],
22674 + BFD_RELOC_UNUSED, 3, -1,
22675 + {
22676 + &avr32_ifield_table[AVR32_IFIELD_RY],
22677 + &avr32_ifield_table[AVR32_IFIELD_W],
22678 + &avr32_ifield_table[AVR32_IFIELD_K16],
22679 + },
22680 + },
22681 + {
22682 + AVR32_OPC_LDMTS, 4, 0xe5c00000, 0xfff00000,
22683 + &avr32_syntax_table[AVR32_SYNTAX_LDMTS],
22684 + BFD_RELOC_UNUSED, 2, -1,
22685 + {
22686 + &avr32_ifield_table[AVR32_IFIELD_RY],
22687 + &avr32_ifield_table[AVR32_IFIELD_K16],
22688 + },
22689 + },
22690 + {
22691 + AVR32_OPC_LDMTS_PU, 4, 0xe7c00000, 0xfff00000,
22692 + &avr32_syntax_table[AVR32_SYNTAX_LDMTS_PU],
22693 + BFD_RELOC_UNUSED, 2, -1,
22694 + {
22695 + &avr32_ifield_table[AVR32_IFIELD_RY],
22696 + &avr32_ifield_table[AVR32_IFIELD_K16],
22697 + },
22698 + },
22699 + {
22700 + AVR32_OPC_LDSWP_SH, 4, 0xe1d02000, 0xe1f0f000,
22701 + &avr32_syntax_table[AVR32_SYNTAX_LDSWP_SH],
22702 + BFD_RELOC_UNUSED, 3, -1,
22703 + {
22704 + &avr32_ifield_table[AVR32_IFIELD_RY],
22705 + &avr32_ifield_table[AVR32_IFIELD_RX],
22706 + &avr32_ifield_table[AVR32_IFIELD_K12],
22707 + },
22708 + },
22709 + {
22710 + AVR32_OPC_LDSWP_UH, 4, 0xe1d03000, 0xe1f0f000,
22711 + &avr32_syntax_table[AVR32_SYNTAX_LDSWP_UH],
22712 + BFD_RELOC_UNUSED, 3, -1,
22713 + {
22714 + &avr32_ifield_table[AVR32_IFIELD_RY],
22715 + &avr32_ifield_table[AVR32_IFIELD_RX],
22716 + &avr32_ifield_table[AVR32_IFIELD_K12],
22717 + },
22718 + },
22719 + {
22720 + AVR32_OPC_LDSWP_W, 4, 0xe1d08000, 0xe1f0f000,
22721 + &avr32_syntax_table[AVR32_SYNTAX_LDSWP_W],
22722 + BFD_RELOC_UNUSED, 3, -1,
22723 + {
22724 + &avr32_ifield_table[AVR32_IFIELD_RY],
22725 + &avr32_ifield_table[AVR32_IFIELD_RX],
22726 + &avr32_ifield_table[AVR32_IFIELD_K12],
22727 + },
22728 + },
22729 + {
22730 + AVR32_OPC_LSL1, 4, 0xe0000940, 0xe1f0fff0,
22731 + &avr32_syntax_table[AVR32_SYNTAX_LSL1],
22732 + BFD_RELOC_UNUSED, 3, -1,
22733 + {
22734 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22735 + &avr32_ifield_table[AVR32_IFIELD_RX],
22736 + &avr32_ifield_table[AVR32_IFIELD_RY],
22737 + },
22738 + },
22739 + {
22740 + AVR32_OPC_LSL3, 4, 0xe0001500, 0xe1f0ffe0,
22741 + &avr32_syntax_table[AVR32_SYNTAX_LSL3],
22742 + BFD_RELOC_UNUSED, 3, -1,
22743 + {
22744 + &avr32_ifield_table[AVR32_IFIELD_RY],
22745 + &avr32_ifield_table[AVR32_IFIELD_RX],
22746 + &avr32_ifield_table[AVR32_IFIELD_K5E],
22747 + },
22748 + },
22749 + {
22750 + AVR32_OPC_LSL2, 2, 0xa1600000, 0xe1e00000,
22751 + &avr32_syntax_table[AVR32_SYNTAX_LSL2],
22752 + BFD_RELOC_UNUSED, 2, -1,
22753 + {
22754 + &avr32_ifield_table[AVR32_IFIELD_RY],
22755 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
22756 + },
22757 + },
22758 + {
22759 + AVR32_OPC_LSR1, 4, 0xe0000a40, 0xe1f0fff0,
22760 + &avr32_syntax_table[AVR32_SYNTAX_LSR1],
22761 + BFD_RELOC_UNUSED, 3, -1,
22762 + {
22763 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22764 + &avr32_ifield_table[AVR32_IFIELD_RX],
22765 + &avr32_ifield_table[AVR32_IFIELD_RY],
22766 + },
22767 + },
22768 + {
22769 + AVR32_OPC_LSR3, 4, 0xe0001600, 0xe1f0ffe0,
22770 + &avr32_syntax_table[AVR32_SYNTAX_LSR3],
22771 + BFD_RELOC_UNUSED, 3, -1,
22772 + {
22773 + &avr32_ifield_table[AVR32_IFIELD_RY],
22774 + &avr32_ifield_table[AVR32_IFIELD_RX],
22775 + &avr32_ifield_table[AVR32_IFIELD_K5E],
22776 + },
22777 + },
22778 + {
22779 + AVR32_OPC_LSR2, 2, 0xa1800000, 0xe1e00000,
22780 + &avr32_syntax_table[AVR32_SYNTAX_LSR2],
22781 + BFD_RELOC_UNUSED, 2, -1,
22782 + {
22783 + &avr32_ifield_table[AVR32_IFIELD_RY],
22784 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
22785 + },
22786 + },
22787 + {
22788 + AVR32_OPC_MAC, 4, 0xe0000340, 0xe1f0fff0,
22789 + &avr32_syntax_table[AVR32_SYNTAX_MAC],
22790 + BFD_RELOC_UNUSED, 3, -1,
22791 + {
22792 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22793 + &avr32_ifield_table[AVR32_IFIELD_RX],
22794 + &avr32_ifield_table[AVR32_IFIELD_RY],
22795 + },
22796 + },
22797 + {
22798 + AVR32_OPC_MACHH_D, 4, 0xe0000580, 0xe1f0ffc1,
22799 + &avr32_syntax_table[AVR32_SYNTAX_MACHH_D],
22800 + BFD_RELOC_UNUSED, 5, -1,
22801 + {
22802 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22803 + &avr32_ifield_table[AVR32_IFIELD_RX],
22804 + &avr32_ifield_table[AVR32_IFIELD_X],
22805 + &avr32_ifield_table[AVR32_IFIELD_RY],
22806 + &avr32_ifield_table[AVR32_IFIELD_Y],
22807 + },
22808 + },
22809 + {
22810 + AVR32_OPC_MACHH_W, 4, 0xe0000480, 0xe1f0ffc0,
22811 + &avr32_syntax_table[AVR32_SYNTAX_MACHH_W],
22812 + BFD_RELOC_UNUSED, 5, -1,
22813 + {
22814 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22815 + &avr32_ifield_table[AVR32_IFIELD_RX],
22816 + &avr32_ifield_table[AVR32_IFIELD_X],
22817 + &avr32_ifield_table[AVR32_IFIELD_RY],
22818 + &avr32_ifield_table[AVR32_IFIELD_Y],
22819 + },
22820 + },
22821 + {
22822 + AVR32_OPC_MACS_D, 4, 0xe0000540, 0xe1f0fff1,
22823 + &avr32_syntax_table[AVR32_SYNTAX_MACS_D],
22824 + BFD_RELOC_UNUSED, 3, -1,
22825 + {
22826 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22827 + &avr32_ifield_table[AVR32_IFIELD_RX],
22828 + &avr32_ifield_table[AVR32_IFIELD_RY],
22829 + },
22830 + },
22831 + {
22832 + AVR32_OPC_MACSATHH_W, 4, 0xe0000680, 0xe1f0ffc0,
22833 + &avr32_syntax_table[AVR32_SYNTAX_MACSATHH_W],
22834 + BFD_RELOC_UNUSED, 5, -1,
22835 + {
22836 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22837 + &avr32_ifield_table[AVR32_IFIELD_RX],
22838 + &avr32_ifield_table[AVR32_IFIELD_X],
22839 + &avr32_ifield_table[AVR32_IFIELD_RY],
22840 + &avr32_ifield_table[AVR32_IFIELD_Y],
22841 + },
22842 + },
22843 + {
22844 + AVR32_OPC_MACUD, 4, 0xe0000740, 0xe1f0fff1,
22845 + &avr32_syntax_table[AVR32_SYNTAX_MACUD],
22846 + BFD_RELOC_UNUSED, 3, -1,
22847 + {
22848 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22849 + &avr32_ifield_table[AVR32_IFIELD_RX],
22850 + &avr32_ifield_table[AVR32_IFIELD_RY],
22851 + },
22852 + },
22853 + {
22854 + AVR32_OPC_MACWH_D, 4, 0xe0000c80, 0xe1f0ffe1,
22855 + &avr32_syntax_table[AVR32_SYNTAX_MACWH_D],
22856 + BFD_RELOC_UNUSED, 4, -1,
22857 + {
22858 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22859 + &avr32_ifield_table[AVR32_IFIELD_RX],
22860 + &avr32_ifield_table[AVR32_IFIELD_RY],
22861 + &avr32_ifield_table[AVR32_IFIELD_Y],
22862 + },
22863 + },
22864 + {
22865 + AVR32_OPC_MAX, 4, 0xe0000c40, 0xe1f0fff0,
22866 + &avr32_syntax_table[AVR32_SYNTAX_MAX],
22867 + BFD_RELOC_UNUSED, 3, -1,
22868 + {
22869 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22870 + &avr32_ifield_table[AVR32_IFIELD_RX],
22871 + &avr32_ifield_table[AVR32_IFIELD_RY],
22872 + },
22873 + },
22874 + {
22875 + AVR32_OPC_MCALL, 4, 0xf0100000, 0xfff00000,
22876 + &avr32_syntax_table[AVR32_SYNTAX_MCALL],
22877 + BFD_RELOC_AVR32_18W_PCREL, 2, 1,
22878 + {
22879 + &avr32_ifield_table[AVR32_IFIELD_RY],
22880 + &avr32_ifield_table[AVR32_IFIELD_K16],
22881 + },
22882 + },
22883 + {
22884 + AVR32_OPC_MFDR, 4, 0xe5b00000, 0xfff0ff00,
22885 + &avr32_syntax_table[AVR32_SYNTAX_MFDR],
22886 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22887 + {
22888 + &avr32_ifield_table[AVR32_IFIELD_RY],
22889 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22890 + },
22891 + },
22892 + {
22893 + AVR32_OPC_MFSR, 4, 0xe1b00000, 0xfff0ff00,
22894 + &avr32_syntax_table[AVR32_SYNTAX_MFSR],
22895 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22896 + {
22897 + &avr32_ifield_table[AVR32_IFIELD_RY],
22898 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22899 + },
22900 + },
22901 + {
22902 + AVR32_OPC_MIN, 4, 0xe0000d40, 0xe1f0fff0,
22903 + &avr32_syntax_table[AVR32_SYNTAX_MIN],
22904 + BFD_RELOC_UNUSED, 3, -1,
22905 + {
22906 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22907 + &avr32_ifield_table[AVR32_IFIELD_RX],
22908 + &avr32_ifield_table[AVR32_IFIELD_RY],
22909 + },
22910 + },
22911 + {
22912 + AVR32_OPC_MOV3, 2, 0x00900000, 0xe1f00000,
22913 + &avr32_syntax_table[AVR32_SYNTAX_MOV3],
22914 + BFD_RELOC_NONE, 2, -1,
22915 + {
22916 + &avr32_ifield_table[AVR32_IFIELD_RY],
22917 + &avr32_ifield_table[AVR32_IFIELD_RX],
22918 + },
22919 + },
22920 + {
22921 + AVR32_OPC_MOV1, 2, 0x30000000, 0xf0000000,
22922 + &avr32_syntax_table[AVR32_SYNTAX_MOV1],
22923 + BFD_RELOC_AVR32_8S, 2, 1,
22924 + {
22925 + &avr32_ifield_table[AVR32_IFIELD_RY],
22926 + &avr32_ifield_table[AVR32_IFIELD_K8C],
22927 + },
22928 + },
22929 + {
22930 + AVR32_OPC_MOV2, 4, 0xe0600000, 0xe1e00000,
22931 + &avr32_syntax_table[AVR32_SYNTAX_MOV2],
22932 + BFD_RELOC_AVR32_21S, 2, 1,
22933 + {
22934 + &avr32_ifield_table[AVR32_IFIELD_RY],
22935 + &avr32_ifield_table[AVR32_IFIELD_K21],
22936 + },
22937 + },
22938 + {
22939 + AVR32_OPC_MOVEQ1, 4, 0xe0001700, 0xe1f0ffff,
22940 + &avr32_syntax_table[AVR32_SYNTAX_MOVEQ1],
22941 + BFD_RELOC_UNUSED, 2, -1,
22942 + {
22943 + &avr32_ifield_table[AVR32_IFIELD_RY],
22944 + &avr32_ifield_table[AVR32_IFIELD_RX],
22945 + },
22946 + },
22947 + {
22948 + AVR32_OPC_MOVNE1, 4, 0xe0001710, 0xe1f0ffff,
22949 + &avr32_syntax_table[AVR32_SYNTAX_MOVNE1],
22950 + BFD_RELOC_UNUSED, 2, -1,
22951 + {
22952 + &avr32_ifield_table[AVR32_IFIELD_RY],
22953 + &avr32_ifield_table[AVR32_IFIELD_RX],
22954 + },
22955 + },
22956 + {
22957 + AVR32_OPC_MOVCC1, 4, 0xe0001720, 0xe1f0ffff,
22958 + &avr32_syntax_table[AVR32_SYNTAX_MOVHS1],
22959 + BFD_RELOC_UNUSED, 2, -1,
22960 + {
22961 + &avr32_ifield_table[AVR32_IFIELD_RY],
22962 + &avr32_ifield_table[AVR32_IFIELD_RX],
22963 + },
22964 + },
22965 + {
22966 + AVR32_OPC_MOVCS1, 4, 0xe0001730, 0xe1f0ffff,
22967 + &avr32_syntax_table[AVR32_SYNTAX_MOVLO1],
22968 + BFD_RELOC_UNUSED, 2, -1,
22969 + {
22970 + &avr32_ifield_table[AVR32_IFIELD_RY],
22971 + &avr32_ifield_table[AVR32_IFIELD_RX],
22972 + },
22973 + },
22974 + {
22975 + AVR32_OPC_MOVGE1, 4, 0xe0001740, 0xe1f0ffff,
22976 + &avr32_syntax_table[AVR32_SYNTAX_MOVGE1],
22977 + BFD_RELOC_UNUSED, 2, -1,
22978 + {
22979 + &avr32_ifield_table[AVR32_IFIELD_RY],
22980 + &avr32_ifield_table[AVR32_IFIELD_RX],
22981 + },
22982 + },
22983 + {
22984 + AVR32_OPC_MOVLT1, 4, 0xe0001750, 0xe1f0ffff,
22985 + &avr32_syntax_table[AVR32_SYNTAX_MOVLT1],
22986 + BFD_RELOC_UNUSED, 2, -1,
22987 + {
22988 + &avr32_ifield_table[AVR32_IFIELD_RY],
22989 + &avr32_ifield_table[AVR32_IFIELD_RX],
22990 + },
22991 + },
22992 + {
22993 + AVR32_OPC_MOVMI1, 4, 0xe0001760, 0xe1f0ffff,
22994 + &avr32_syntax_table[AVR32_SYNTAX_MOVMI1],
22995 + BFD_RELOC_UNUSED, 2, -1,
22996 + {
22997 + &avr32_ifield_table[AVR32_IFIELD_RY],
22998 + &avr32_ifield_table[AVR32_IFIELD_RX],
22999 + },
23000 + },
23001 + {
23002 + AVR32_OPC_MOVPL1, 4, 0xe0001770, 0xe1f0ffff,
23003 + &avr32_syntax_table[AVR32_SYNTAX_MOVPL1],
23004 + BFD_RELOC_UNUSED, 2, -1,
23005 + {
23006 + &avr32_ifield_table[AVR32_IFIELD_RY],
23007 + &avr32_ifield_table[AVR32_IFIELD_RX],
23008 + },
23009 + },
23010 + {
23011 + AVR32_OPC_MOVLS1, 4, 0xe0001780, 0xe1f0ffff,
23012 + &avr32_syntax_table[AVR32_SYNTAX_MOVLS1],
23013 + BFD_RELOC_UNUSED, 2, -1,
23014 + {
23015 + &avr32_ifield_table[AVR32_IFIELD_RY],
23016 + &avr32_ifield_table[AVR32_IFIELD_RX],
23017 + },
23018 + },
23019 + {
23020 + AVR32_OPC_MOVGT1, 4, 0xe0001790, 0xe1f0ffff,
23021 + &avr32_syntax_table[AVR32_SYNTAX_MOVGT1],
23022 + BFD_RELOC_UNUSED, 2, -1,
23023 + {
23024 + &avr32_ifield_table[AVR32_IFIELD_RY],
23025 + &avr32_ifield_table[AVR32_IFIELD_RX],
23026 + },
23027 + },
23028 + {
23029 + AVR32_OPC_MOVLE1, 4, 0xe00017a0, 0xe1f0ffff,
23030 + &avr32_syntax_table[AVR32_SYNTAX_MOVLE1],
23031 + BFD_RELOC_UNUSED, 2, -1,
23032 + {
23033 + &avr32_ifield_table[AVR32_IFIELD_RY],
23034 + &avr32_ifield_table[AVR32_IFIELD_RX],
23035 + },
23036 + },
23037 + {
23038 + AVR32_OPC_MOVHI1, 4, 0xe00017b0, 0xe1f0ffff,
23039 + &avr32_syntax_table[AVR32_SYNTAX_MOVHI1],
23040 + BFD_RELOC_UNUSED, 2, -1,
23041 + {
23042 + &avr32_ifield_table[AVR32_IFIELD_RY],
23043 + &avr32_ifield_table[AVR32_IFIELD_RX],
23044 + },
23045 + },
23046 + {
23047 + AVR32_OPC_MOVVS1, 4, 0xe00017c0, 0xe1f0ffff,
23048 + &avr32_syntax_table[AVR32_SYNTAX_MOVVS1],
23049 + BFD_RELOC_UNUSED, 2, -1,
23050 + {
23051 + &avr32_ifield_table[AVR32_IFIELD_RY],
23052 + &avr32_ifield_table[AVR32_IFIELD_RX],
23053 + },
23054 + },
23055 + {
23056 + AVR32_OPC_MOVVC1, 4, 0xe00017d0, 0xe1f0ffff,
23057 + &avr32_syntax_table[AVR32_SYNTAX_MOVVC1],
23058 + BFD_RELOC_UNUSED, 2, -1,
23059 + {
23060 + &avr32_ifield_table[AVR32_IFIELD_RY],
23061 + &avr32_ifield_table[AVR32_IFIELD_RX],
23062 + },
23063 + },
23064 + {
23065 + AVR32_OPC_MOVQS1, 4, 0xe00017e0, 0xe1f0ffff,
23066 + &avr32_syntax_table[AVR32_SYNTAX_MOVQS1],
23067 + BFD_RELOC_UNUSED, 2, -1,
23068 + {
23069 + &avr32_ifield_table[AVR32_IFIELD_RY],
23070 + &avr32_ifield_table[AVR32_IFIELD_RX],
23071 + },
23072 + },
23073 + {
23074 + AVR32_OPC_MOVAL1, 4, 0xe00017f0, 0xe1f0ffff,
23075 + &avr32_syntax_table[AVR32_SYNTAX_MOVAL1],
23076 + BFD_RELOC_UNUSED, 2, -1,
23077 + {
23078 + &avr32_ifield_table[AVR32_IFIELD_RY],
23079 + &avr32_ifield_table[AVR32_IFIELD_RX],
23080 + },
23081 + },
23082 + {
23083 + AVR32_OPC_MOVEQ2, 4, 0xf9b00000, 0xfff0ff00,
23084 + &avr32_syntax_table[AVR32_SYNTAX_MOVEQ2],
23085 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23086 + {
23087 + &avr32_ifield_table[AVR32_IFIELD_RY],
23088 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23089 + },
23090 + },
23091 + {
23092 + AVR32_OPC_MOVNE2, 4, 0xf9b00100, 0xfff0ff00,
23093 + &avr32_syntax_table[AVR32_SYNTAX_MOVNE2],
23094 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23095 + {
23096 + &avr32_ifield_table[AVR32_IFIELD_RY],
23097 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23098 + },
23099 + },
23100 + {
23101 + AVR32_OPC_MOVCC2, 4, 0xf9b00200, 0xfff0ff00,
23102 + &avr32_syntax_table[AVR32_SYNTAX_MOVHS2],
23103 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23104 + {
23105 + &avr32_ifield_table[AVR32_IFIELD_RY],
23106 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23107 + },
23108 + },
23109 + {
23110 + AVR32_OPC_MOVCS2, 4, 0xf9b00300, 0xfff0ff00,
23111 + &avr32_syntax_table[AVR32_SYNTAX_MOVLO2],
23112 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23113 + {
23114 + &avr32_ifield_table[AVR32_IFIELD_RY],
23115 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23116 + },
23117 + },
23118 + {
23119 + AVR32_OPC_MOVGE2, 4, 0xf9b00400, 0xfff0ff00,
23120 + &avr32_syntax_table[AVR32_SYNTAX_MOVGE2],
23121 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23122 + {
23123 + &avr32_ifield_table[AVR32_IFIELD_RY],
23124 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23125 + },
23126 + },
23127 + {
23128 + AVR32_OPC_MOVLT2, 4, 0xf9b00500, 0xfff0ff00,
23129 + &avr32_syntax_table[AVR32_SYNTAX_MOVLT2],
23130 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23131 + {
23132 + &avr32_ifield_table[AVR32_IFIELD_RY],
23133 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23134 + },
23135 + },
23136 + {
23137 + AVR32_OPC_MOVMI2, 4, 0xf9b00600, 0xfff0ff00,
23138 + &avr32_syntax_table[AVR32_SYNTAX_MOVMI2],
23139 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23140 + {
23141 + &avr32_ifield_table[AVR32_IFIELD_RY],
23142 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23143 + },
23144 + },
23145 + {
23146 + AVR32_OPC_MOVPL2, 4, 0xf9b00700, 0xfff0ff00,
23147 + &avr32_syntax_table[AVR32_SYNTAX_MOVPL2],
23148 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23149 + {
23150 + &avr32_ifield_table[AVR32_IFIELD_RY],
23151 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23152 + },
23153 + },
23154 + {
23155 + AVR32_OPC_MOVLS2, 4, 0xf9b00800, 0xfff0ff00,
23156 + &avr32_syntax_table[AVR32_SYNTAX_MOVLS2],
23157 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23158 + {
23159 + &avr32_ifield_table[AVR32_IFIELD_RY],
23160 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23161 + },
23162 + },
23163 + {
23164 + AVR32_OPC_MOVGT2, 4, 0xf9b00900, 0xfff0ff00,
23165 + &avr32_syntax_table[AVR32_SYNTAX_MOVGT2],
23166 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23167 + {
23168 + &avr32_ifield_table[AVR32_IFIELD_RY],
23169 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23170 + },
23171 + },
23172 + {
23173 + AVR32_OPC_MOVLE2, 4, 0xf9b00a00, 0xfff0ff00,
23174 + &avr32_syntax_table[AVR32_SYNTAX_MOVLE2],
23175 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23176 + {
23177 + &avr32_ifield_table[AVR32_IFIELD_RY],
23178 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23179 + },
23180 + },
23181 + {
23182 + AVR32_OPC_MOVHI2, 4, 0xf9b00b00, 0xfff0ff00,
23183 + &avr32_syntax_table[AVR32_SYNTAX_MOVHI2],
23184 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23185 + {
23186 + &avr32_ifield_table[AVR32_IFIELD_RY],
23187 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23188 + },
23189 + },
23190 + {
23191 + AVR32_OPC_MOVVS2, 4, 0xf9b00c00, 0xfff0ff00,
23192 + &avr32_syntax_table[AVR32_SYNTAX_MOVVS2],
23193 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23194 + {
23195 + &avr32_ifield_table[AVR32_IFIELD_RY],
23196 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23197 + },
23198 + },
23199 + {
23200 + AVR32_OPC_MOVVC2, 4, 0xf9b00d00, 0xfff0ff00,
23201 + &avr32_syntax_table[AVR32_SYNTAX_MOVVC2],
23202 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23203 + {
23204 + &avr32_ifield_table[AVR32_IFIELD_RY],
23205 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23206 + },
23207 + },
23208 + {
23209 + AVR32_OPC_MOVQS2, 4, 0xf9b00e00, 0xfff0ff00,
23210 + &avr32_syntax_table[AVR32_SYNTAX_MOVQS2],
23211 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23212 + {
23213 + &avr32_ifield_table[AVR32_IFIELD_RY],
23214 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23215 + },
23216 + },
23217 + {
23218 + AVR32_OPC_MOVAL2, 4, 0xf9b00f00, 0xfff0ff00,
23219 + &avr32_syntax_table[AVR32_SYNTAX_MOVAL2],
23220 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23221 + {
23222 + &avr32_ifield_table[AVR32_IFIELD_RY],
23223 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23224 + },
23225 + },
23226 + {
23227 + AVR32_OPC_MTDR, 4, 0xe7b00000, 0xfff0ff00,
23228 + &avr32_syntax_table[AVR32_SYNTAX_MTDR],
23229 + BFD_RELOC_AVR32_8S_EXT, 2, 0,
23230 + {
23231 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23232 + &avr32_ifield_table[AVR32_IFIELD_RY],
23233 + },
23234 + },
23235 + {
23236 + AVR32_OPC_MTSR, 4, 0xe3b00000, 0xfff0ff00,
23237 + &avr32_syntax_table[AVR32_SYNTAX_MTSR],
23238 + BFD_RELOC_AVR32_8S_EXT, 2, 0,
23239 + {
23240 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23241 + &avr32_ifield_table[AVR32_IFIELD_RY],
23242 + },
23243 + },
23244 + {
23245 + AVR32_OPC_MUL1, 2, 0xa1300000, 0xe1f00000,
23246 + &avr32_syntax_table[AVR32_SYNTAX_MUL1],
23247 + BFD_RELOC_UNUSED, 2, -1,
23248 + {
23249 + &avr32_ifield_table[AVR32_IFIELD_RY],
23250 + &avr32_ifield_table[AVR32_IFIELD_RX],
23251 + },
23252 + },
23253 + {
23254 + AVR32_OPC_MUL2, 4, 0xe0000240, 0xe1f0fff0,
23255 + &avr32_syntax_table[AVR32_SYNTAX_MUL2],
23256 + BFD_RELOC_UNUSED, 3, -1,
23257 + {
23258 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23259 + &avr32_ifield_table[AVR32_IFIELD_RX],
23260 + &avr32_ifield_table[AVR32_IFIELD_RY],
23261 + },
23262 + },
23263 + {
23264 + AVR32_OPC_MUL3, 4, 0xe0001000, 0xe1f0ff00,
23265 + &avr32_syntax_table[AVR32_SYNTAX_MUL3],
23266 + BFD_RELOC_AVR32_8S_EXT, 3, 2,
23267 + {
23268 + &avr32_ifield_table[AVR32_IFIELD_RY],
23269 + &avr32_ifield_table[AVR32_IFIELD_RX],
23270 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23271 + },
23272 + },
23273 + {
23274 + AVR32_OPC_MULHH_W, 4, 0xe0000780, 0xe1f0ffc0,
23275 + &avr32_syntax_table[AVR32_SYNTAX_MULHH_W],
23276 + BFD_RELOC_UNUSED, 5, -1,
23277 + {
23278 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23279 + &avr32_ifield_table[AVR32_IFIELD_RX],
23280 + &avr32_ifield_table[AVR32_IFIELD_X],
23281 + &avr32_ifield_table[AVR32_IFIELD_RY],
23282 + &avr32_ifield_table[AVR32_IFIELD_Y],
23283 + },
23284 + },
23285 + {
23286 + AVR32_OPC_MULNHH_W, 4, 0xe0000180, 0xe1f0ffc0,
23287 + &avr32_syntax_table[AVR32_SYNTAX_MULNHH_W],
23288 + BFD_RELOC_UNUSED, 5, -1,
23289 + {
23290 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23291 + &avr32_ifield_table[AVR32_IFIELD_RX],
23292 + &avr32_ifield_table[AVR32_IFIELD_X],
23293 + &avr32_ifield_table[AVR32_IFIELD_RY],
23294 + &avr32_ifield_table[AVR32_IFIELD_Y],
23295 + },
23296 + },
23297 + {
23298 + AVR32_OPC_MULNWH_D, 4, 0xe0000280, 0xe1f0ffe1,
23299 + &avr32_syntax_table[AVR32_SYNTAX_MULNWH_D],
23300 + BFD_RELOC_UNUSED, 4, -1,
23301 + {
23302 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23303 + &avr32_ifield_table[AVR32_IFIELD_RX],
23304 + &avr32_ifield_table[AVR32_IFIELD_RY],
23305 + &avr32_ifield_table[AVR32_IFIELD_Y],
23306 + },
23307 + },
23308 + {
23309 + AVR32_OPC_MULSD, 4, 0xe0000440, 0xe1f0fff0,
23310 + &avr32_syntax_table[AVR32_SYNTAX_MULSD],
23311 + BFD_RELOC_UNUSED, 3, -1,
23312 + {
23313 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23314 + &avr32_ifield_table[AVR32_IFIELD_RX],
23315 + &avr32_ifield_table[AVR32_IFIELD_RY],
23316 + },
23317 + },
23318 + {
23319 + AVR32_OPC_MULSATHH_H, 4, 0xe0000880, 0xe1f0ffc0,
23320 + &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_H],
23321 + BFD_RELOC_UNUSED, 5, -1,
23322 + {
23323 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23324 + &avr32_ifield_table[AVR32_IFIELD_RX],
23325 + &avr32_ifield_table[AVR32_IFIELD_X],
23326 + &avr32_ifield_table[AVR32_IFIELD_RY],
23327 + &avr32_ifield_table[AVR32_IFIELD_Y],
23328 + },
23329 + },
23330 + {
23331 + AVR32_OPC_MULSATHH_W, 4, 0xe0000980, 0xe1f0ffc0,
23332 + &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_W],
23333 + BFD_RELOC_UNUSED, 5, -1,
23334 + {
23335 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23336 + &avr32_ifield_table[AVR32_IFIELD_RX],
23337 + &avr32_ifield_table[AVR32_IFIELD_X],
23338 + &avr32_ifield_table[AVR32_IFIELD_RY],
23339 + &avr32_ifield_table[AVR32_IFIELD_Y],
23340 + },
23341 + },
23342 + {
23343 + AVR32_OPC_MULSATRNDHH_H, 4, 0xe0000a80, 0xe1f0ffc0,
23344 + &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDHH_H],
23345 + BFD_RELOC_UNUSED, 5, -1,
23346 + {
23347 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23348 + &avr32_ifield_table[AVR32_IFIELD_RX],
23349 + &avr32_ifield_table[AVR32_IFIELD_X],
23350 + &avr32_ifield_table[AVR32_IFIELD_RY],
23351 + &avr32_ifield_table[AVR32_IFIELD_Y],
23352 + },
23353 + },
23354 + {
23355 + AVR32_OPC_MULSATRNDWH_W, 4, 0xe0000b80, 0xe1f0ffe0,
23356 + &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDWH_W],
23357 + BFD_RELOC_UNUSED, 4, -1,
23358 + {
23359 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23360 + &avr32_ifield_table[AVR32_IFIELD_RX],
23361 + &avr32_ifield_table[AVR32_IFIELD_RY],
23362 + &avr32_ifield_table[AVR32_IFIELD_Y],
23363 + },
23364 + },
23365 + {
23366 + AVR32_OPC_MULSATWH_W, 4, 0xe0000e80, 0xe1f0ffe0,
23367 + &avr32_syntax_table[AVR32_SYNTAX_MULSATWH_W],
23368 + BFD_RELOC_UNUSED, 4, -1,
23369 + {
23370 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23371 + &avr32_ifield_table[AVR32_IFIELD_RX],
23372 + &avr32_ifield_table[AVR32_IFIELD_RY],
23373 + &avr32_ifield_table[AVR32_IFIELD_Y],
23374 + },
23375 + },
23376 + {
23377 + AVR32_OPC_MULU_D, 4, 0xe0000640, 0xe1f0fff1,
23378 + &avr32_syntax_table[AVR32_SYNTAX_MULU_D],
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_MULWH_D, 4, 0xe0000d80, 0xe1f0ffe1,
23388 + &avr32_syntax_table[AVR32_SYNTAX_MULWH_D],
23389 + BFD_RELOC_UNUSED, 4, -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 + &avr32_ifield_table[AVR32_IFIELD_Y],
23395 + },
23396 + },
23397 + {
23398 + AVR32_OPC_MUSFR, 2, 0x5d300000, 0xfff00000,
23399 + &avr32_syntax_table[AVR32_SYNTAX_MUSFR],
23400 + BFD_RELOC_UNUSED, 1, -1,
23401 + {
23402 + &avr32_ifield_table[AVR32_IFIELD_RY],
23403 + }
23404 + },
23405 + {
23406 + AVR32_OPC_MUSTR, 2, 0x5d200000, 0xfff00000,
23407 + &avr32_syntax_table[AVR32_SYNTAX_MUSTR],
23408 + BFD_RELOC_UNUSED, 1, -1,
23409 + {
23410 + &avr32_ifield_table[AVR32_IFIELD_RY],
23411 + }
23412 + },
23413 + {
23414 + AVR32_OPC_MVCR_D, 4, 0xefa00010, 0xfff111ff,
23415 + &avr32_syntax_table[AVR32_SYNTAX_MVCR_D],
23416 + BFD_RELOC_UNUSED, 3, -1,
23417 + {
23418 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
23419 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
23420 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
23421 + },
23422 + },
23423 + {
23424 + AVR32_OPC_MVCR_W, 4, 0xefa00000, 0xfff010ff,
23425 + &avr32_syntax_table[AVR32_SYNTAX_MVCR_W],
23426 + BFD_RELOC_UNUSED, 3, -1,
23427 + {
23428 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
23429 + &avr32_ifield_table[AVR32_IFIELD_RY],
23430 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
23431 + },
23432 + },
23433 + {
23434 + AVR32_OPC_MVRC_D, 4, 0xefa00030, 0xfff111ff,
23435 + &avr32_syntax_table[AVR32_SYNTAX_MVRC_D],
23436 + BFD_RELOC_UNUSED, 3, -1,
23437 + {
23438 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
23439 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
23440 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
23441 + },
23442 + },
23443 + {
23444 + AVR32_OPC_MVRC_W, 4, 0xefa00020, 0xfff010ff,
23445 + &avr32_syntax_table[AVR32_SYNTAX_MVRC_W],
23446 + BFD_RELOC_UNUSED, 3, -1,
23447 + {
23448 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
23449 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
23450 + &avr32_ifield_table[AVR32_IFIELD_RY],
23451 + },
23452 + },
23453 + {
23454 + AVR32_OPC_NEG, 2, 0x5c300000, 0xfff00000,
23455 + &avr32_syntax_table[AVR32_SYNTAX_NEG],
23456 + BFD_RELOC_UNUSED, 1, -1,
23457 + {
23458 + &avr32_ifield_table[AVR32_IFIELD_RY],
23459 + }
23460 + },
23461 + {
23462 + AVR32_OPC_NOP, 2, 0xd7030000, 0xffff0000,
23463 + &avr32_syntax_table[AVR32_SYNTAX_NOP],
23464 + BFD_RELOC_UNUSED, 0, -1, { NULL },
23465 + },
23466 + {
23467 + AVR32_OPC_OR1, 2, 0x00400000, 0xe1f00000,
23468 + &avr32_syntax_table[AVR32_SYNTAX_OR1],
23469 + BFD_RELOC_UNUSED, 2, -1,
23470 + {
23471 + &avr32_ifield_table[AVR32_IFIELD_RY],
23472 + &avr32_ifield_table[AVR32_IFIELD_RX],
23473 + },
23474 + },
23475 + {
23476 + AVR32_OPC_OR2, 4, 0xe1e01000, 0xe1f0fe00,
23477 + &avr32_syntax_table[AVR32_SYNTAX_OR2],
23478 + BFD_RELOC_UNUSED, 4, -1,
23479 + {
23480 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23481 + &avr32_ifield_table[AVR32_IFIELD_RX],
23482 + &avr32_ifield_table[AVR32_IFIELD_RY],
23483 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
23484 + },
23485 + },
23486 + {
23487 + AVR32_OPC_OR3, 4, 0xe1e01200, 0xe1f0fe00,
23488 + &avr32_syntax_table[AVR32_SYNTAX_OR3],
23489 + BFD_RELOC_UNUSED, 4, -1,
23490 + {
23491 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23492 + &avr32_ifield_table[AVR32_IFIELD_RX],
23493 + &avr32_ifield_table[AVR32_IFIELD_RY],
23494 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
23495 + },
23496 + },
23497 + {
23498 + AVR32_OPC_ORH, 4, 0xea100000, 0xfff00000,
23499 + &avr32_syntax_table[AVR32_SYNTAX_ORH],
23500 + BFD_RELOC_AVR32_16U, 2, 1,
23501 + {
23502 + &avr32_ifield_table[AVR32_IFIELD_RY],
23503 + &avr32_ifield_table[AVR32_IFIELD_K16],
23504 + },
23505 + },
23506 + {
23507 + AVR32_OPC_ORL, 4, 0xe8100000, 0xfff00000,
23508 + &avr32_syntax_table[AVR32_SYNTAX_ORL],
23509 + BFD_RELOC_AVR32_16U, 2, 1,
23510 + {
23511 + &avr32_ifield_table[AVR32_IFIELD_RY],
23512 + &avr32_ifield_table[AVR32_IFIELD_K16],
23513 + },
23514 + },
23515 + {
23516 + AVR32_OPC_PABS_SB, 4, 0xe00023e0, 0xfff0fff0,
23517 + &avr32_syntax_table[AVR32_SYNTAX_PABS_SB],
23518 + BFD_RELOC_UNUSED, 2, -1,
23519 + {
23520 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23521 + &avr32_ifield_table[AVR32_IFIELD_RY],
23522 + },
23523 + },
23524 + {
23525 + AVR32_OPC_PABS_SH, 4, 0xe00023f0, 0xfff0fff0,
23526 + &avr32_syntax_table[AVR32_SYNTAX_PABS_SH],
23527 + BFD_RELOC_UNUSED, 2, -1,
23528 + {
23529 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23530 + &avr32_ifield_table[AVR32_IFIELD_RY],
23531 + },
23532 + },
23533 + {
23534 + AVR32_OPC_PACKSH_SB, 4, 0xe00024d0, 0xe1f0fff0,
23535 + &avr32_syntax_table[AVR32_SYNTAX_PACKSH_SB],
23536 + BFD_RELOC_UNUSED, 3, -1,
23537 + {
23538 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23539 + &avr32_ifield_table[AVR32_IFIELD_RX],
23540 + &avr32_ifield_table[AVR32_IFIELD_RY],
23541 + },
23542 + },
23543 + {
23544 + AVR32_OPC_PACKSH_UB, 4, 0xe00024c0, 0xe1f0fff0,
23545 + &avr32_syntax_table[AVR32_SYNTAX_PACKSH_UB],
23546 + BFD_RELOC_UNUSED, 3, -1,
23547 + {
23548 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23549 + &avr32_ifield_table[AVR32_IFIELD_RX],
23550 + &avr32_ifield_table[AVR32_IFIELD_RY],
23551 + },
23552 + },
23553 + {
23554 + AVR32_OPC_PACKW_SH, 4, 0xe0002470, 0xe1f0fff0,
23555 + &avr32_syntax_table[AVR32_SYNTAX_PACKW_SH],
23556 + BFD_RELOC_UNUSED, 3, -1,
23557 + {
23558 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23559 + &avr32_ifield_table[AVR32_IFIELD_RX],
23560 + &avr32_ifield_table[AVR32_IFIELD_RY],
23561 + },
23562 + },
23563 + {
23564 + AVR32_OPC_PADD_B, 4, 0xe0002300, 0xe1f0fff0,
23565 + &avr32_syntax_table[AVR32_SYNTAX_PADD_B],
23566 + BFD_RELOC_UNUSED, 3, -1,
23567 + {
23568 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23569 + &avr32_ifield_table[AVR32_IFIELD_RX],
23570 + &avr32_ifield_table[AVR32_IFIELD_RY],
23571 + },
23572 + },
23573 + {
23574 + AVR32_OPC_PADD_H, 4, 0xe0002000, 0xe1f0fff0,
23575 + &avr32_syntax_table[AVR32_SYNTAX_PADD_H],
23576 + BFD_RELOC_UNUSED, 3, -1,
23577 + {
23578 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23579 + &avr32_ifield_table[AVR32_IFIELD_RX],
23580 + &avr32_ifield_table[AVR32_IFIELD_RY],
23581 + },
23582 + },
23583 + {
23584 + AVR32_OPC_PADDH_SH, 4, 0xe00020c0, 0xe1f0fff0,
23585 + &avr32_syntax_table[AVR32_SYNTAX_PADDH_SH],
23586 + BFD_RELOC_UNUSED, 3, -1,
23587 + {
23588 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23589 + &avr32_ifield_table[AVR32_IFIELD_RX],
23590 + &avr32_ifield_table[AVR32_IFIELD_RY],
23591 + },
23592 + },
23593 + {
23594 + AVR32_OPC_PADDH_UB, 4, 0xe0002360, 0xe1f0fff0,
23595 + &avr32_syntax_table[AVR32_SYNTAX_PADDH_UB],
23596 + BFD_RELOC_UNUSED, 3, -1,
23597 + {
23598 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23599 + &avr32_ifield_table[AVR32_IFIELD_RX],
23600 + &avr32_ifield_table[AVR32_IFIELD_RY],
23601 + },
23602 + },
23603 + {
23604 + AVR32_OPC_PADDS_SB, 4, 0xe0002320, 0xe1f0fff0,
23605 + &avr32_syntax_table[AVR32_SYNTAX_PADDS_SB],
23606 + BFD_RELOC_UNUSED, 3, -1,
23607 + {
23608 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23609 + &avr32_ifield_table[AVR32_IFIELD_RX],
23610 + &avr32_ifield_table[AVR32_IFIELD_RY],
23611 + },
23612 + },
23613 + {
23614 + AVR32_OPC_PADDS_SH, 4, 0xe0002040, 0xe1f0fff0,
23615 + &avr32_syntax_table[AVR32_SYNTAX_PADDS_SH],
23616 + BFD_RELOC_UNUSED, 3, -1,
23617 + {
23618 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23619 + &avr32_ifield_table[AVR32_IFIELD_RX],
23620 + &avr32_ifield_table[AVR32_IFIELD_RY],
23621 + },
23622 + },
23623 + {
23624 + AVR32_OPC_PADDS_UB, 4, 0xe0002340, 0xe1f0fff0,
23625 + &avr32_syntax_table[AVR32_SYNTAX_PADDS_UB],
23626 + BFD_RELOC_UNUSED, 3, -1,
23627 + {
23628 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23629 + &avr32_ifield_table[AVR32_IFIELD_RX],
23630 + &avr32_ifield_table[AVR32_IFIELD_RY],
23631 + },
23632 + },
23633 + {
23634 + AVR32_OPC_PADDS_UH, 4, 0xe0002080, 0xe1f0fff0,
23635 + &avr32_syntax_table[AVR32_SYNTAX_PADDS_UH],
23636 + BFD_RELOC_UNUSED, 3, -1,
23637 + {
23638 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23639 + &avr32_ifield_table[AVR32_IFIELD_RX],
23640 + &avr32_ifield_table[AVR32_IFIELD_RY],
23641 + },
23642 + },
23643 + {
23644 + AVR32_OPC_PADDSUB_H, 4, 0xe0002100, 0xe1f0ffc0,
23645 + &avr32_syntax_table[AVR32_SYNTAX_PADDSUB_H],
23646 + BFD_RELOC_UNUSED, 5, -1,
23647 + {
23648 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23649 + &avr32_ifield_table[AVR32_IFIELD_RX],
23650 + &avr32_ifield_table[AVR32_IFIELD_X],
23651 + &avr32_ifield_table[AVR32_IFIELD_RY],
23652 + &avr32_ifield_table[AVR32_IFIELD_Y],
23653 + },
23654 + },
23655 + {
23656 + AVR32_OPC_PADDSUBH_SH, 4, 0xe0002280, 0xe1f0ffc0,
23657 + &avr32_syntax_table[AVR32_SYNTAX_PADDSUBH_SH],
23658 + BFD_RELOC_UNUSED, 5, -1,
23659 + {
23660 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23661 + &avr32_ifield_table[AVR32_IFIELD_RX],
23662 + &avr32_ifield_table[AVR32_IFIELD_X],
23663 + &avr32_ifield_table[AVR32_IFIELD_RY],
23664 + &avr32_ifield_table[AVR32_IFIELD_Y],
23665 + },
23666 + },
23667 + {
23668 + AVR32_OPC_PADDSUBS_SH, 4, 0xe0002180, 0xe1f0ffc0,
23669 + &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_SH],
23670 + BFD_RELOC_UNUSED, 5, -1,
23671 + {
23672 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23673 + &avr32_ifield_table[AVR32_IFIELD_RX],
23674 + &avr32_ifield_table[AVR32_IFIELD_X],
23675 + &avr32_ifield_table[AVR32_IFIELD_RY],
23676 + &avr32_ifield_table[AVR32_IFIELD_Y],
23677 + },
23678 + },
23679 + {
23680 + AVR32_OPC_PADDSUBS_UH, 4, 0xe0002200, 0xe1f0ffc0,
23681 + &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_UH],
23682 + BFD_RELOC_UNUSED, 5, -1,
23683 + {
23684 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23685 + &avr32_ifield_table[AVR32_IFIELD_RX],
23686 + &avr32_ifield_table[AVR32_IFIELD_X],
23687 + &avr32_ifield_table[AVR32_IFIELD_RY],
23688 + &avr32_ifield_table[AVR32_IFIELD_Y],
23689 + },
23690 + },
23691 + {
23692 + AVR32_OPC_PADDX_H, 4, 0xe0002020, 0xe1f0fff0,
23693 + &avr32_syntax_table[AVR32_SYNTAX_PADDX_H],
23694 + BFD_RELOC_UNUSED, 3, -1,
23695 + {
23696 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23697 + &avr32_ifield_table[AVR32_IFIELD_RX],
23698 + &avr32_ifield_table[AVR32_IFIELD_RY],
23699 + },
23700 + },
23701 + {
23702 + AVR32_OPC_PADDXH_SH, 4, 0xe00020e0, 0xe1f0fff0,
23703 + &avr32_syntax_table[AVR32_SYNTAX_PADDXH_SH],
23704 + BFD_RELOC_UNUSED, 3, -1,
23705 + {
23706 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23707 + &avr32_ifield_table[AVR32_IFIELD_RX],
23708 + &avr32_ifield_table[AVR32_IFIELD_RY],
23709 + },
23710 + },
23711 + {
23712 + AVR32_OPC_PADDXS_SH, 4, 0xe0002060, 0xe1f0fff0,
23713 + &avr32_syntax_table[AVR32_SYNTAX_PADDXS_SH],
23714 + BFD_RELOC_UNUSED, 3, -1,
23715 + {
23716 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23717 + &avr32_ifield_table[AVR32_IFIELD_RX],
23718 + &avr32_ifield_table[AVR32_IFIELD_RY],
23719 + },
23720 + },
23721 + {
23722 + AVR32_OPC_PADDXS_UH, 4, 0xe00020a0, 0xe1f0fff0,
23723 + &avr32_syntax_table[AVR32_SYNTAX_PADDXS_UH],
23724 + BFD_RELOC_UNUSED, 3, -1,
23725 + {
23726 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23727 + &avr32_ifield_table[AVR32_IFIELD_RX],
23728 + &avr32_ifield_table[AVR32_IFIELD_RY],
23729 + },
23730 + },
23731 + {
23732 + AVR32_OPC_PASR_B, 4, 0xe0002410, 0xe1f8fff0,
23733 + &avr32_syntax_table[AVR32_SYNTAX_PASR_B],
23734 + BFD_RELOC_UNUSED, 3, -1,
23735 + {
23736 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23737 + &avr32_ifield_table[AVR32_IFIELD_RX],
23738 + &avr32_ifield_table[AVR32_IFIELD_COND3],
23739 + },
23740 + },
23741 + {
23742 + AVR32_OPC_PASR_H, 4, 0xe0002440, 0xe1f0fff0,
23743 + &avr32_syntax_table[AVR32_SYNTAX_PASR_H],
23744 + BFD_RELOC_UNUSED, 3, -1,
23745 + {
23746 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23747 + &avr32_ifield_table[AVR32_IFIELD_RX],
23748 + &avr32_ifield_table[AVR32_IFIELD_RY],
23749 + },
23750 + },
23751 + {
23752 + AVR32_OPC_PAVG_SH, 4, 0xe00023d0, 0xe1f0fff0,
23753 + &avr32_syntax_table[AVR32_SYNTAX_PAVG_SH],
23754 + BFD_RELOC_UNUSED, 3, -1,
23755 + {
23756 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23757 + &avr32_ifield_table[AVR32_IFIELD_RX],
23758 + &avr32_ifield_table[AVR32_IFIELD_RY],
23759 + },
23760 + },
23761 + {
23762 + AVR32_OPC_PAVG_UB, 4, 0xe00023c0, 0xe1f0fff0,
23763 + &avr32_syntax_table[AVR32_SYNTAX_PAVG_UB],
23764 + BFD_RELOC_UNUSED, 3, -1,
23765 + {
23766 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23767 + &avr32_ifield_table[AVR32_IFIELD_RX],
23768 + &avr32_ifield_table[AVR32_IFIELD_RY],
23769 + },
23770 + },
23771 + {
23772 + AVR32_OPC_PLSL_B, 4, 0xe0002420, 0xe1f8fff0,
23773 + &avr32_syntax_table[AVR32_SYNTAX_PLSL_B],
23774 + BFD_RELOC_UNUSED, 3, -1,
23775 + {
23776 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23777 + &avr32_ifield_table[AVR32_IFIELD_RX],
23778 + &avr32_ifield_table[AVR32_IFIELD_COND3],
23779 + },
23780 + },
23781 + {
23782 + AVR32_OPC_PLSL_H, 4, 0xe0002450, 0xe1f0fff0,
23783 + &avr32_syntax_table[AVR32_SYNTAX_PLSL_H],
23784 + BFD_RELOC_UNUSED, 3, -1,
23785 + {
23786 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23787 + &avr32_ifield_table[AVR32_IFIELD_RX],
23788 + &avr32_ifield_table[AVR32_IFIELD_RY],
23789 + },
23790 + },
23791 + {
23792 + AVR32_OPC_PLSR_B, 4, 0xe0002430, 0xe1f8fff0,
23793 + &avr32_syntax_table[AVR32_SYNTAX_PLSR_B],
23794 + BFD_RELOC_UNUSED, 3, -1,
23795 + {
23796 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23797 + &avr32_ifield_table[AVR32_IFIELD_RX],
23798 + &avr32_ifield_table[AVR32_IFIELD_COND3],
23799 + },
23800 + },
23801 + {
23802 + AVR32_OPC_PLSR_H, 4, 0xe0002460, 0xe1f0fff0,
23803 + &avr32_syntax_table[AVR32_SYNTAX_PLSR_H],
23804 + BFD_RELOC_UNUSED, 3, -1,
23805 + {
23806 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23807 + &avr32_ifield_table[AVR32_IFIELD_RX],
23808 + &avr32_ifield_table[AVR32_IFIELD_RY],
23809 + },
23810 + },
23811 + {
23812 + AVR32_OPC_PMAX_SH, 4, 0xe0002390, 0xe1f0fff0,
23813 + &avr32_syntax_table[AVR32_SYNTAX_PMAX_SH],
23814 + BFD_RELOC_UNUSED, 3, -1,
23815 + {
23816 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23817 + &avr32_ifield_table[AVR32_IFIELD_RX],
23818 + &avr32_ifield_table[AVR32_IFIELD_RY],
23819 + },
23820 + },
23821 + {
23822 + AVR32_OPC_PMAX_UB, 4, 0xe0002380, 0xe1f0fff0,
23823 + &avr32_syntax_table[AVR32_SYNTAX_PMAX_UB],
23824 + BFD_RELOC_UNUSED, 3, -1,
23825 + {
23826 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23827 + &avr32_ifield_table[AVR32_IFIELD_RX],
23828 + &avr32_ifield_table[AVR32_IFIELD_RY],
23829 + },
23830 + },
23831 + {
23832 + AVR32_OPC_PMIN_SH, 4, 0xe00023b0, 0xe1f0fff0,
23833 + &avr32_syntax_table[AVR32_SYNTAX_PMIN_SH],
23834 + BFD_RELOC_UNUSED, 3, -1,
23835 + {
23836 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23837 + &avr32_ifield_table[AVR32_IFIELD_RX],
23838 + &avr32_ifield_table[AVR32_IFIELD_RY],
23839 + },
23840 + },
23841 + {
23842 + AVR32_OPC_PMIN_UB, 4, 0xe00023a0, 0xe1f0fff0,
23843 + &avr32_syntax_table[AVR32_SYNTAX_PMIN_UB],
23844 + BFD_RELOC_UNUSED, 3, -1,
23845 + {
23846 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23847 + &avr32_ifield_table[AVR32_IFIELD_RX],
23848 + &avr32_ifield_table[AVR32_IFIELD_RY],
23849 + },
23850 + },
23851 + {
23852 + AVR32_OPC_POPJC, 2, 0xd7130000, 0xffff0000,
23853 + &avr32_syntax_table[AVR32_SYNTAX_POPJC],
23854 + BFD_RELOC_UNUSED, 0, -1, { NULL },
23855 + },
23856 + {
23857 + AVR32_OPC_POPM, 2, 0xd0020000, 0xf0070000,
23858 + &avr32_syntax_table[AVR32_SYNTAX_POPM],
23859 + BFD_RELOC_UNUSED, 1, -1,
23860 + {
23861 + &avr32_ifield_table[AVR32_IFIELD_POPM],
23862 + },
23863 + },
23864 + {
23865 + AVR32_OPC_POPM_E, 4, 0xe3cd0000, 0xffff0000,
23866 + &avr32_syntax_table[AVR32_SYNTAX_POPM_E],
23867 + BFD_RELOC_UNUSED, 1, -1,
23868 + {
23869 + &avr32_ifield_table[AVR32_IFIELD_K16],
23870 + },
23871 + },
23872 + {
23873 + AVR32_OPC_PREF, 4, 0xf2100000, 0xfff00000,
23874 + &avr32_syntax_table[AVR32_SYNTAX_PREF],
23875 + BFD_RELOC_AVR32_16S, 2, -1,
23876 + {
23877 + &avr32_ifield_table[AVR32_IFIELD_RY],
23878 + &avr32_ifield_table[AVR32_IFIELD_K16],
23879 + },
23880 + },
23881 + {
23882 + AVR32_OPC_PSAD, 4, 0xe0002400, 0xe1f0fff0,
23883 + &avr32_syntax_table[AVR32_SYNTAX_PSAD],
23884 + BFD_RELOC_UNUSED, 3, -1,
23885 + {
23886 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23887 + &avr32_ifield_table[AVR32_IFIELD_RX],
23888 + &avr32_ifield_table[AVR32_IFIELD_RY],
23889 + },
23890 + },
23891 + {
23892 + AVR32_OPC_PSUB_B, 4, 0xe0002310, 0xe1f0fff0,
23893 + &avr32_syntax_table[AVR32_SYNTAX_PSUB_B],
23894 + BFD_RELOC_UNUSED, 3, -1,
23895 + {
23896 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23897 + &avr32_ifield_table[AVR32_IFIELD_RX],
23898 + &avr32_ifield_table[AVR32_IFIELD_RY],
23899 + },
23900 + },
23901 + {
23902 + AVR32_OPC_PSUB_H, 4, 0xe0002010, 0xe1f0fff0,
23903 + &avr32_syntax_table[AVR32_SYNTAX_PSUB_H],
23904 + BFD_RELOC_UNUSED, 3, -1,
23905 + {
23906 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23907 + &avr32_ifield_table[AVR32_IFIELD_RX],
23908 + &avr32_ifield_table[AVR32_IFIELD_RY],
23909 + },
23910 + },
23911 + {
23912 + AVR32_OPC_PSUBADD_H, 4, 0xe0002140, 0xe1f0ffc0,
23913 + &avr32_syntax_table[AVR32_SYNTAX_PSUBADD_H],
23914 + BFD_RELOC_UNUSED, 5, -1,
23915 + {
23916 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23917 + &avr32_ifield_table[AVR32_IFIELD_RX],
23918 + &avr32_ifield_table[AVR32_IFIELD_X],
23919 + &avr32_ifield_table[AVR32_IFIELD_RY],
23920 + &avr32_ifield_table[AVR32_IFIELD_Y],
23921 + },
23922 + },
23923 + {
23924 + AVR32_OPC_PSUBADDH_SH, 4, 0xe00022c0, 0xe1f0ffc0,
23925 + &avr32_syntax_table[AVR32_SYNTAX_PSUBADDH_SH],
23926 + BFD_RELOC_UNUSED, 5, -1,
23927 + {
23928 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23929 + &avr32_ifield_table[AVR32_IFIELD_RX],
23930 + &avr32_ifield_table[AVR32_IFIELD_X],
23931 + &avr32_ifield_table[AVR32_IFIELD_RY],
23932 + &avr32_ifield_table[AVR32_IFIELD_Y],
23933 + },
23934 + },
23935 + {
23936 + AVR32_OPC_PSUBADDS_SH, 4, 0xe00021c0, 0xe1f0ffc0,
23937 + &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_SH],
23938 + BFD_RELOC_UNUSED, 5, -1,
23939 + {
23940 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23941 + &avr32_ifield_table[AVR32_IFIELD_RX],
23942 + &avr32_ifield_table[AVR32_IFIELD_X],
23943 + &avr32_ifield_table[AVR32_IFIELD_RY],
23944 + &avr32_ifield_table[AVR32_IFIELD_Y],
23945 + },
23946 + },
23947 + {
23948 + AVR32_OPC_PSUBADDS_UH, 4, 0xe0002240, 0xe1f0ffc0,
23949 + &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_UH],
23950 + BFD_RELOC_UNUSED, 5, -1,
23951 + {
23952 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23953 + &avr32_ifield_table[AVR32_IFIELD_RX],
23954 + &avr32_ifield_table[AVR32_IFIELD_X],
23955 + &avr32_ifield_table[AVR32_IFIELD_RY],
23956 + &avr32_ifield_table[AVR32_IFIELD_Y],
23957 + },
23958 + },
23959 + {
23960 + AVR32_OPC_PSUBH_SH, 4, 0xe00020d0, 0xe1f0fff0,
23961 + &avr32_syntax_table[AVR32_SYNTAX_PSUBH_SH],
23962 + BFD_RELOC_UNUSED, 3, -1,
23963 + {
23964 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23965 + &avr32_ifield_table[AVR32_IFIELD_RX],
23966 + &avr32_ifield_table[AVR32_IFIELD_RY],
23967 + },
23968 + },
23969 + {
23970 + AVR32_OPC_PSUBH_UB, 4, 0xe0002370, 0xe1f0fff0,
23971 + &avr32_syntax_table[AVR32_SYNTAX_PSUBH_UB],
23972 + BFD_RELOC_UNUSED, 3, -1,
23973 + {
23974 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23975 + &avr32_ifield_table[AVR32_IFIELD_RX],
23976 + &avr32_ifield_table[AVR32_IFIELD_RY],
23977 + },
23978 + },
23979 + {
23980 + AVR32_OPC_PSUBS_SB, 4, 0xe0002330, 0xe1f0fff0,
23981 + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SB],
23982 + BFD_RELOC_UNUSED, 3, -1,
23983 + {
23984 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23985 + &avr32_ifield_table[AVR32_IFIELD_RX],
23986 + &avr32_ifield_table[AVR32_IFIELD_RY],
23987 + },
23988 + },
23989 + {
23990 + AVR32_OPC_PSUBS_SH, 4, 0xe0002050, 0xe1f0fff0,
23991 + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SH],
23992 + BFD_RELOC_UNUSED, 3, -1,
23993 + {
23994 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23995 + &avr32_ifield_table[AVR32_IFIELD_RX],
23996 + &avr32_ifield_table[AVR32_IFIELD_RY],
23997 + },
23998 + },
23999 + {
24000 + AVR32_OPC_PSUBS_UB, 4, 0xe0002350, 0xe1f0fff0,
24001 + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UB],
24002 + BFD_RELOC_UNUSED, 3, -1,
24003 + {
24004 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24005 + &avr32_ifield_table[AVR32_IFIELD_RX],
24006 + &avr32_ifield_table[AVR32_IFIELD_RY],
24007 + },
24008 + },
24009 + {
24010 + AVR32_OPC_PSUBS_UH, 4, 0xe0002090, 0xe1f0fff0,
24011 + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UH],
24012 + BFD_RELOC_UNUSED, 3, -1,
24013 + {
24014 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24015 + &avr32_ifield_table[AVR32_IFIELD_RX],
24016 + &avr32_ifield_table[AVR32_IFIELD_RY],
24017 + },
24018 + },
24019 + {
24020 + AVR32_OPC_PSUBX_H, 4, 0xe0002030, 0xe1f0fff0,
24021 + &avr32_syntax_table[AVR32_SYNTAX_PSUBX_H],
24022 + BFD_RELOC_UNUSED, 3, -1,
24023 + {
24024 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24025 + &avr32_ifield_table[AVR32_IFIELD_RX],
24026 + &avr32_ifield_table[AVR32_IFIELD_RY],
24027 + },
24028 + },
24029 + {
24030 + AVR32_OPC_PSUBXH_SH, 4, 0xe00020f0, 0xe1f0fff0,
24031 + &avr32_syntax_table[AVR32_SYNTAX_PSUBXH_SH],
24032 + BFD_RELOC_UNUSED, 3, -1,
24033 + {
24034 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24035 + &avr32_ifield_table[AVR32_IFIELD_RX],
24036 + &avr32_ifield_table[AVR32_IFIELD_RY],
24037 + },
24038 + },
24039 + {
24040 + AVR32_OPC_PSUBXS_SH, 4, 0xe0002070, 0xe1f0fff0,
24041 + &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_SH],
24042 + BFD_RELOC_UNUSED, 3, -1,
24043 + {
24044 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24045 + &avr32_ifield_table[AVR32_IFIELD_RX],
24046 + &avr32_ifield_table[AVR32_IFIELD_RY],
24047 + },
24048 + },
24049 + {
24050 + AVR32_OPC_PSUBXS_UH, 4, 0xe00020b0, 0xe1f0fff0,
24051 + &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_UH],
24052 + BFD_RELOC_UNUSED, 3, -1,
24053 + {
24054 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24055 + &avr32_ifield_table[AVR32_IFIELD_RX],
24056 + &avr32_ifield_table[AVR32_IFIELD_RY],
24057 + },
24058 + },
24059 + {
24060 + AVR32_OPC_PUNPCKSB_H, 4, 0xe00024a0, 0xe1ffffe0,
24061 + &avr32_syntax_table[AVR32_SYNTAX_PUNPCKSB_H],
24062 + BFD_RELOC_UNUSED, 3, -1,
24063 + {
24064 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24065 + &avr32_ifield_table[AVR32_IFIELD_RX],
24066 + &avr32_ifield_table[AVR32_IFIELD_Y],
24067 + },
24068 + },
24069 + {
24070 + AVR32_OPC_PUNPCKUB_H, 4, 0xe0002480, 0xe1ffffe0,
24071 + &avr32_syntax_table[AVR32_SYNTAX_PUNPCKUB_H],
24072 + BFD_RELOC_UNUSED, 3, -1,
24073 + {
24074 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24075 + &avr32_ifield_table[AVR32_IFIELD_RX],
24076 + &avr32_ifield_table[AVR32_IFIELD_Y],
24077 + },
24078 + },
24079 + {
24080 + AVR32_OPC_PUSHJC, 2, 0xd7230000, 0xffff0000,
24081 + &avr32_syntax_table[AVR32_SYNTAX_PUSHJC],
24082 + BFD_RELOC_UNUSED, 0, -1, { NULL },
24083 + },
24084 + {
24085 + AVR32_OPC_PUSHM, 2, 0xd0010000, 0xf00f0000,
24086 + &avr32_syntax_table[AVR32_SYNTAX_PUSHM],
24087 + BFD_RELOC_UNUSED, 1, -1,
24088 + {
24089 + &avr32_ifield_table[AVR32_IFIELD_K8C],
24090 + },
24091 + },
24092 + {
24093 + AVR32_OPC_PUSHM_E, 4, 0xebcd0000, 0xffff0000,
24094 + &avr32_syntax_table[AVR32_SYNTAX_PUSHM_E],
24095 + BFD_RELOC_UNUSED, 1, -1,
24096 + {
24097 + &avr32_ifield_table[AVR32_IFIELD_K16],
24098 + },
24099 + },
24100 + {
24101 + AVR32_OPC_RCALL1, 2, 0xc00c0000, 0xf00c0000,
24102 + &avr32_syntax_table[AVR32_SYNTAX_RCALL1],
24103 + BFD_RELOC_AVR32_11H_PCREL, 1, 0,
24104 + {
24105 + &avr32_ifield_table[AVR32_IFIELD_K10],
24106 + },
24107 + },
24108 + {
24109 + AVR32_OPC_RCALL2, 4, 0xe0a00000, 0xe1ef0000,
24110 + &avr32_syntax_table[AVR32_SYNTAX_RCALL2],
24111 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
24112 + {
24113 + &avr32_ifield_table[AVR32_IFIELD_K21],
24114 + },
24115 + },
24116 + {
24117 + AVR32_OPC_RETEQ, 2, 0x5e000000, 0xfff00000,
24118 + &avr32_syntax_table[AVR32_SYNTAX_RETEQ],
24119 + BFD_RELOC_NONE, 1, -1,
24120 + {
24121 + &avr32_ifield_table[AVR32_IFIELD_RY],
24122 + },
24123 + },
24124 + {
24125 + AVR32_OPC_RETNE, 2, 0x5e100000, 0xfff00000,
24126 + &avr32_syntax_table[AVR32_SYNTAX_RETNE],
24127 + BFD_RELOC_NONE, 1, -1,
24128 + {
24129 + &avr32_ifield_table[AVR32_IFIELD_RY],
24130 + },
24131 + },
24132 + {
24133 + AVR32_OPC_RETCC, 2, 0x5e200000, 0xfff00000,
24134 + &avr32_syntax_table[AVR32_SYNTAX_RETHS],
24135 + BFD_RELOC_NONE, 1, -1,
24136 + {
24137 + &avr32_ifield_table[AVR32_IFIELD_RY],
24138 + },
24139 + },
24140 + {
24141 + AVR32_OPC_RETCS, 2, 0x5e300000, 0xfff00000,
24142 + &avr32_syntax_table[AVR32_SYNTAX_RETLO],
24143 + BFD_RELOC_NONE, 1, -1,
24144 + {
24145 + &avr32_ifield_table[AVR32_IFIELD_RY],
24146 + },
24147 + },
24148 + {
24149 + AVR32_OPC_RETGE, 2, 0x5e400000, 0xfff00000,
24150 + &avr32_syntax_table[AVR32_SYNTAX_RETGE],
24151 + BFD_RELOC_NONE, 1, -1,
24152 + {
24153 + &avr32_ifield_table[AVR32_IFIELD_RY],
24154 + },
24155 + },
24156 + {
24157 + AVR32_OPC_RETLT, 2, 0x5e500000, 0xfff00000,
24158 + &avr32_syntax_table[AVR32_SYNTAX_RETLT],
24159 + BFD_RELOC_NONE, 1, -1,
24160 + {
24161 + &avr32_ifield_table[AVR32_IFIELD_RY],
24162 + },
24163 + },
24164 + {
24165 + AVR32_OPC_RETMI, 2, 0x5e600000, 0xfff00000,
24166 + &avr32_syntax_table[AVR32_SYNTAX_RETMI],
24167 + BFD_RELOC_NONE, 1, -1,
24168 + {
24169 + &avr32_ifield_table[AVR32_IFIELD_RY],
24170 + },
24171 + },
24172 + {
24173 + AVR32_OPC_RETPL, 2, 0x5e700000, 0xfff00000,
24174 + &avr32_syntax_table[AVR32_SYNTAX_RETPL],
24175 + BFD_RELOC_NONE, 1, -1,
24176 + {
24177 + &avr32_ifield_table[AVR32_IFIELD_RY],
24178 + },
24179 + },
24180 + {
24181 + AVR32_OPC_RETLS, 2, 0x5e800000, 0xfff00000,
24182 + &avr32_syntax_table[AVR32_SYNTAX_RETLS],
24183 + BFD_RELOC_NONE, 1, -1,
24184 + {
24185 + &avr32_ifield_table[AVR32_IFIELD_RY],
24186 + },
24187 + },
24188 + {
24189 + AVR32_OPC_RETGT, 2, 0x5e900000, 0xfff00000,
24190 + &avr32_syntax_table[AVR32_SYNTAX_RETGT],
24191 + BFD_RELOC_NONE, 1, -1,
24192 + {
24193 + &avr32_ifield_table[AVR32_IFIELD_RY],
24194 + },
24195 + },
24196 + {
24197 + AVR32_OPC_RETLE, 2, 0x5ea00000, 0xfff00000,
24198 + &avr32_syntax_table[AVR32_SYNTAX_RETLE],
24199 + BFD_RELOC_NONE, 1, -1,
24200 + {
24201 + &avr32_ifield_table[AVR32_IFIELD_RY],
24202 + },
24203 + },
24204 + {
24205 + AVR32_OPC_RETHI, 2, 0x5eb00000, 0xfff00000,
24206 + &avr32_syntax_table[AVR32_SYNTAX_RETHI],
24207 + BFD_RELOC_NONE, 1, -1,
24208 + {
24209 + &avr32_ifield_table[AVR32_IFIELD_RY],
24210 + },
24211 + },
24212 + {
24213 + AVR32_OPC_RETVS, 2, 0x5ec00000, 0xfff00000,
24214 + &avr32_syntax_table[AVR32_SYNTAX_RETVS],
24215 + BFD_RELOC_NONE, 1, -1,
24216 + {
24217 + &avr32_ifield_table[AVR32_IFIELD_RY],
24218 + },
24219 + },
24220 + {
24221 + AVR32_OPC_RETVC, 2, 0x5ed00000, 0xfff00000,
24222 + &avr32_syntax_table[AVR32_SYNTAX_RETVC],
24223 + BFD_RELOC_NONE, 1, -1,
24224 + {
24225 + &avr32_ifield_table[AVR32_IFIELD_RY],
24226 + },
24227 + },
24228 + {
24229 + AVR32_OPC_RETQS, 2, 0x5ee00000, 0xfff00000,
24230 + &avr32_syntax_table[AVR32_SYNTAX_RETQS],
24231 + BFD_RELOC_NONE, 1, -1,
24232 + {
24233 + &avr32_ifield_table[AVR32_IFIELD_RY],
24234 + },
24235 + },
24236 + {
24237 + AVR32_OPC_RETAL, 2, 0x5ef00000, 0xfff00000,
24238 + &avr32_syntax_table[AVR32_SYNTAX_RETAL],
24239 + BFD_RELOC_NONE, 1, -1,
24240 + {
24241 + &avr32_ifield_table[AVR32_IFIELD_RY],
24242 + },
24243 + },
24244 + {
24245 + AVR32_OPC_RETD, 2, 0xd6230000, 0xffff0000,
24246 + &avr32_syntax_table[AVR32_SYNTAX_RETD],
24247 + BFD_RELOC_NONE, 0, -1, { NULL },
24248 + },
24249 + {
24250 + AVR32_OPC_RETE, 2, 0xd6030000, 0xffff0000,
24251 + &avr32_syntax_table[AVR32_SYNTAX_RETE],
24252 + BFD_RELOC_NONE, 0, -1, { NULL },
24253 + },
24254 + {
24255 + AVR32_OPC_RETJ, 2, 0xd6330000, 0xffff0000,
24256 + &avr32_syntax_table[AVR32_SYNTAX_RETJ],
24257 + BFD_RELOC_NONE, 0, -1, { NULL },
24258 + },
24259 + {
24260 + AVR32_OPC_RETS, 2, 0xd6130000, 0xffff0000,
24261 + &avr32_syntax_table[AVR32_SYNTAX_RETS],
24262 + BFD_RELOC_NONE, 0, -1, { NULL },
24263 + },
24264 + {
24265 + AVR32_OPC_RJMP, 2, 0xc0080000, 0xf00c0000,
24266 + &avr32_syntax_table[AVR32_SYNTAX_RJMP],
24267 + BFD_RELOC_AVR32_11H_PCREL, 1, 0,
24268 + {
24269 + &avr32_ifield_table[AVR32_IFIELD_K10],
24270 + },
24271 + },
24272 + {
24273 + AVR32_OPC_ROL, 2, 0x5cf00000, 0xfff00000,
24274 + &avr32_syntax_table[AVR32_SYNTAX_ROL],
24275 + BFD_RELOC_UNUSED, 1, -1,
24276 + {
24277 + &avr32_ifield_table[AVR32_IFIELD_RY],
24278 + }
24279 + },
24280 + {
24281 + AVR32_OPC_ROR, 2, 0x5d000000, 0xfff00000,
24282 + &avr32_syntax_table[AVR32_SYNTAX_ROR],
24283 + BFD_RELOC_UNUSED, 1, -1,
24284 + {
24285 + &avr32_ifield_table[AVR32_IFIELD_RY],
24286 + }
24287 + },
24288 + {
24289 + AVR32_OPC_RSUB1, 2, 0x00200000, 0xe1f00000,
24290 + &avr32_syntax_table[AVR32_SYNTAX_RSUB1],
24291 + BFD_RELOC_UNUSED, 2, -1,
24292 + {
24293 + &avr32_ifield_table[AVR32_IFIELD_RY],
24294 + &avr32_ifield_table[AVR32_IFIELD_RX],
24295 + },
24296 + },
24297 + {
24298 + AVR32_OPC_RSUB2, 4, 0xe0001100, 0xe1f0ff00,
24299 + &avr32_syntax_table[AVR32_SYNTAX_RSUB2],
24300 + BFD_RELOC_AVR32_8S_EXT, 3, 2,
24301 + {
24302 + &avr32_ifield_table[AVR32_IFIELD_RY],
24303 + &avr32_ifield_table[AVR32_IFIELD_RX],
24304 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24305 + },
24306 + },
24307 + {
24308 + AVR32_OPC_SATADD_H, 4, 0xe00002c0, 0xe1f0fff0,
24309 + &avr32_syntax_table[AVR32_SYNTAX_SATADD_H],
24310 + BFD_RELOC_UNUSED, 3, -1,
24311 + {
24312 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24313 + &avr32_ifield_table[AVR32_IFIELD_RX],
24314 + &avr32_ifield_table[AVR32_IFIELD_RY],
24315 + },
24316 + },
24317 + {
24318 + AVR32_OPC_SATADD_W, 4, 0xe00000c0, 0xe1f0fff0,
24319 + &avr32_syntax_table[AVR32_SYNTAX_SATADD_W],
24320 + BFD_RELOC_UNUSED, 3, -1,
24321 + {
24322 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24323 + &avr32_ifield_table[AVR32_IFIELD_RX],
24324 + &avr32_ifield_table[AVR32_IFIELD_RY],
24325 + },
24326 + },
24327 + {
24328 + AVR32_OPC_SATRNDS, 4, 0xf3b00000, 0xfff0fc00,
24329 + &avr32_syntax_table[AVR32_SYNTAX_SATRNDS],
24330 + BFD_RELOC_UNUSED, 3, -1,
24331 + {
24332 + &avr32_ifield_table[AVR32_IFIELD_RY],
24333 + &avr32_ifield_table[AVR32_IFIELD_K5E],
24334 + &avr32_ifield_table[AVR32_IFIELD_S5],
24335 + },
24336 + },
24337 + {
24338 + AVR32_OPC_SATRNDU, 4, 0xf3b00400, 0xfff0fc00,
24339 + &avr32_syntax_table[AVR32_SYNTAX_SATRNDU],
24340 + BFD_RELOC_UNUSED, 3, -1,
24341 + {
24342 + &avr32_ifield_table[AVR32_IFIELD_RY],
24343 + &avr32_ifield_table[AVR32_IFIELD_K5E],
24344 + &avr32_ifield_table[AVR32_IFIELD_S5],
24345 + },
24346 + },
24347 + {
24348 + AVR32_OPC_SATS, 4, 0xf1b00000, 0xfff0fc00,
24349 + &avr32_syntax_table[AVR32_SYNTAX_SATS],
24350 + BFD_RELOC_UNUSED, 3, -1,
24351 + {
24352 + &avr32_ifield_table[AVR32_IFIELD_RY],
24353 + &avr32_ifield_table[AVR32_IFIELD_K5E],
24354 + &avr32_ifield_table[AVR32_IFIELD_S5],
24355 + },
24356 + },
24357 + {
24358 + AVR32_OPC_SATSUB_H, 4, 0xe00003c0, 0xe1f0fff0,
24359 + &avr32_syntax_table[AVR32_SYNTAX_SATSUB_H],
24360 + BFD_RELOC_UNUSED, 3, -1,
24361 + {
24362 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24363 + &avr32_ifield_table[AVR32_IFIELD_RX],
24364 + &avr32_ifield_table[AVR32_IFIELD_RY],
24365 + },
24366 + },
24367 + {
24368 + AVR32_OPC_SATSUB_W1, 4, 0xe00001c0, 0xe1f0fff0,
24369 + &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W1],
24370 + BFD_RELOC_UNUSED, 3, -1,
24371 + {
24372 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24373 + &avr32_ifield_table[AVR32_IFIELD_RX],
24374 + &avr32_ifield_table[AVR32_IFIELD_RY],
24375 + },
24376 + },
24377 + {
24378 + AVR32_OPC_SATSUB_W2, 4, 0xe0d00000, 0xe1f00000,
24379 + &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W2],
24380 + BFD_RELOC_UNUSED, 3, -1,
24381 + {
24382 + &avr32_ifield_table[AVR32_IFIELD_RY],
24383 + &avr32_ifield_table[AVR32_IFIELD_RX],
24384 + &avr32_ifield_table[AVR32_IFIELD_K16],
24385 + },
24386 + },
24387 + {
24388 + AVR32_OPC_SATU, 4, 0xf1b00400, 0xfff0fc00,
24389 + &avr32_syntax_table[AVR32_SYNTAX_SATU],
24390 + BFD_RELOC_UNUSED, 3, -1,
24391 + {
24392 + &avr32_ifield_table[AVR32_IFIELD_RY],
24393 + &avr32_ifield_table[AVR32_IFIELD_K5E],
24394 + &avr32_ifield_table[AVR32_IFIELD_S5],
24395 + },
24396 + },
24397 + {
24398 + AVR32_OPC_SBC, 4, 0xe0000140, 0xe1f0fff0,
24399 + &avr32_syntax_table[AVR32_SYNTAX_SBC],
24400 + BFD_RELOC_UNUSED, 3, -1,
24401 + {
24402 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24403 + &avr32_ifield_table[AVR32_IFIELD_RX],
24404 + &avr32_ifield_table[AVR32_IFIELD_RY],
24405 + },
24406 + },
24407 + {
24408 + AVR32_OPC_SBR, 2, 0xa1a00000, 0xe1e00000,
24409 + &avr32_syntax_table[AVR32_SYNTAX_SBR],
24410 + BFD_RELOC_UNUSED, 2, -1,
24411 + {
24412 + &avr32_ifield_table[AVR32_IFIELD_RY],
24413 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
24414 + },
24415 + },
24416 + {
24417 + AVR32_OPC_SCALL, 2, 0xd7330000, 0xffff0000,
24418 + &avr32_syntax_table[AVR32_SYNTAX_SCALL],
24419 + BFD_RELOC_UNUSED, 0, -1, { NULL },
24420 + },
24421 + {
24422 + AVR32_OPC_SCR, 2, 0x5c100000, 0xfff00000,
24423 + &avr32_syntax_table[AVR32_SYNTAX_SCR],
24424 + BFD_RELOC_UNUSED, 1, -1,
24425 + {
24426 + &avr32_ifield_table[AVR32_IFIELD_RY],
24427 + },
24428 + },
24429 + {
24430 + AVR32_OPC_SLEEP, 4, 0xe9b00000, 0xffffff00,
24431 + &avr32_syntax_table[AVR32_SYNTAX_SLEEP],
24432 + BFD_RELOC_AVR32_8S_EXT, 1, 0,
24433 + {
24434 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24435 + },
24436 + },
24437 + {
24438 + AVR32_OPC_SREQ, 2, 0x5f000000, 0xfff00000,
24439 + &avr32_syntax_table[AVR32_SYNTAX_SREQ],
24440 + BFD_RELOC_UNUSED, 1, -1,
24441 + {
24442 + &avr32_ifield_table[AVR32_IFIELD_RY],
24443 + },
24444 + },
24445 + {
24446 + AVR32_OPC_SRNE, 2, 0x5f100000, 0xfff00000,
24447 + &avr32_syntax_table[AVR32_SYNTAX_SRNE],
24448 + BFD_RELOC_UNUSED, 1, -1,
24449 + {
24450 + &avr32_ifield_table[AVR32_IFIELD_RY],
24451 + },
24452 + },
24453 + {
24454 + AVR32_OPC_SRCC, 2, 0x5f200000, 0xfff00000,
24455 + &avr32_syntax_table[AVR32_SYNTAX_SRHS],
24456 + BFD_RELOC_UNUSED, 1, -1,
24457 + {
24458 + &avr32_ifield_table[AVR32_IFIELD_RY],
24459 + },
24460 + },
24461 + {
24462 + AVR32_OPC_SRCS, 2, 0x5f300000, 0xfff00000,
24463 + &avr32_syntax_table[AVR32_SYNTAX_SRLO],
24464 + BFD_RELOC_UNUSED, 1, -1,
24465 + {
24466 + &avr32_ifield_table[AVR32_IFIELD_RY],
24467 + },
24468 + },
24469 + {
24470 + AVR32_OPC_SRGE, 2, 0x5f400000, 0xfff00000,
24471 + &avr32_syntax_table[AVR32_SYNTAX_SRGE],
24472 + BFD_RELOC_UNUSED, 1, -1,
24473 + {
24474 + &avr32_ifield_table[AVR32_IFIELD_RY],
24475 + },
24476 + },
24477 + {
24478 + AVR32_OPC_SRLT, 2, 0x5f500000, 0xfff00000,
24479 + &avr32_syntax_table[AVR32_SYNTAX_SRLT],
24480 + BFD_RELOC_UNUSED, 1, -1,
24481 + {
24482 + &avr32_ifield_table[AVR32_IFIELD_RY],
24483 + },
24484 + },
24485 + {
24486 + AVR32_OPC_SRMI, 2, 0x5f600000, 0xfff00000,
24487 + &avr32_syntax_table[AVR32_SYNTAX_SRMI],
24488 + BFD_RELOC_UNUSED, 1, -1,
24489 + {
24490 + &avr32_ifield_table[AVR32_IFIELD_RY],
24491 + },
24492 + },
24493 + {
24494 + AVR32_OPC_SRPL, 2, 0x5f700000, 0xfff00000,
24495 + &avr32_syntax_table[AVR32_SYNTAX_SRPL],
24496 + BFD_RELOC_UNUSED, 1, -1,
24497 + {
24498 + &avr32_ifield_table[AVR32_IFIELD_RY],
24499 + },
24500 + },
24501 + {
24502 + AVR32_OPC_SRLS, 2, 0x5f800000, 0xfff00000,
24503 + &avr32_syntax_table[AVR32_SYNTAX_SRLS],
24504 + BFD_RELOC_UNUSED, 1, -1,
24505 + {
24506 + &avr32_ifield_table[AVR32_IFIELD_RY],
24507 + },
24508 + },
24509 + {
24510 + AVR32_OPC_SRGT, 2, 0x5f900000, 0xfff00000,
24511 + &avr32_syntax_table[AVR32_SYNTAX_SRGT],
24512 + BFD_RELOC_UNUSED, 1, -1,
24513 + {
24514 + &avr32_ifield_table[AVR32_IFIELD_RY],
24515 + },
24516 + },
24517 + {
24518 + AVR32_OPC_SRLE, 2, 0x5fa00000, 0xfff00000,
24519 + &avr32_syntax_table[AVR32_SYNTAX_SRLE],
24520 + BFD_RELOC_UNUSED, 1, -1,
24521 + {
24522 + &avr32_ifield_table[AVR32_IFIELD_RY],
24523 + },
24524 + },
24525 + {
24526 + AVR32_OPC_SRHI, 2, 0x5fb00000, 0xfff00000,
24527 + &avr32_syntax_table[AVR32_SYNTAX_SRHI],
24528 + BFD_RELOC_UNUSED, 1, -1,
24529 + {
24530 + &avr32_ifield_table[AVR32_IFIELD_RY],
24531 + },
24532 + },
24533 + {
24534 + AVR32_OPC_SRVS, 2, 0x5fc00000, 0xfff00000,
24535 + &avr32_syntax_table[AVR32_SYNTAX_SRVS],
24536 + BFD_RELOC_UNUSED, 1, -1,
24537 + {
24538 + &avr32_ifield_table[AVR32_IFIELD_RY],
24539 + },
24540 + },
24541 + {
24542 + AVR32_OPC_SRVC, 2, 0x5fd00000, 0xfff00000,
24543 + &avr32_syntax_table[AVR32_SYNTAX_SRVC],
24544 + BFD_RELOC_UNUSED, 1, -1,
24545 + {
24546 + &avr32_ifield_table[AVR32_IFIELD_RY],
24547 + },
24548 + },
24549 + {
24550 + AVR32_OPC_SRQS, 2, 0x5fe00000, 0xfff00000,
24551 + &avr32_syntax_table[AVR32_SYNTAX_SRQS],
24552 + BFD_RELOC_UNUSED, 1, -1,
24553 + {
24554 + &avr32_ifield_table[AVR32_IFIELD_RY],
24555 + },
24556 + },
24557 + {
24558 + AVR32_OPC_SRAL, 2, 0x5ff00000, 0xfff00000,
24559 + &avr32_syntax_table[AVR32_SYNTAX_SRAL],
24560 + BFD_RELOC_UNUSED, 1, -1,
24561 + {
24562 + &avr32_ifield_table[AVR32_IFIELD_RY],
24563 + },
24564 + },
24565 + {
24566 + AVR32_OPC_SSRF, 2, 0xd2030000, 0xfe0f0000,
24567 + &avr32_syntax_table[AVR32_SYNTAX_SSRF],
24568 + BFD_RELOC_UNUSED, 1, -1,
24569 + {
24570 + &avr32_ifield_table[AVR32_IFIELD_K5C],
24571 + },
24572 + },
24573 + {
24574 + AVR32_OPC_ST_B1, 2, 0x00c00000, 0xe1f00000,
24575 + &avr32_syntax_table[AVR32_SYNTAX_ST_B1],
24576 + BFD_RELOC_UNUSED, 2, -1,
24577 + {
24578 + &avr32_ifield_table[AVR32_IFIELD_RX],
24579 + &avr32_ifield_table[AVR32_IFIELD_RY],
24580 + },
24581 + },
24582 + {
24583 + AVR32_OPC_ST_B2, 2, 0x00f00000, 0xe1f00000,
24584 + &avr32_syntax_table[AVR32_SYNTAX_ST_B2],
24585 + BFD_RELOC_UNUSED, 2, -1,
24586 + {
24587 + &avr32_ifield_table[AVR32_IFIELD_RX],
24588 + &avr32_ifield_table[AVR32_IFIELD_RY],
24589 + },
24590 + },
24591 + {
24592 + AVR32_OPC_ST_B5, 4, 0xe0000b00, 0xe1f0ffc0,
24593 + &avr32_syntax_table[AVR32_SYNTAX_ST_B5],
24594 + BFD_RELOC_UNUSED, 4, -1,
24595 + {
24596 + &avr32_ifield_table[AVR32_IFIELD_RX],
24597 + &avr32_ifield_table[AVR32_IFIELD_RY],
24598 + &avr32_ifield_table[AVR32_IFIELD_K2],
24599 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24600 + },
24601 + },
24602 + {
24603 + AVR32_OPC_ST_B3, 2, 0xa0800000, 0xe1800000,
24604 + &avr32_syntax_table[AVR32_SYNTAX_ST_B3],
24605 + BFD_RELOC_AVR32_3U, 3, 1,
24606 + {
24607 + &avr32_ifield_table[AVR32_IFIELD_RX],
24608 + &avr32_ifield_table[AVR32_IFIELD_K3],
24609 + &avr32_ifield_table[AVR32_IFIELD_RY],
24610 + },
24611 + },
24612 + {
24613 + AVR32_OPC_ST_B4, 4, 0xe1600000, 0xe1f00000,
24614 + &avr32_syntax_table[AVR32_SYNTAX_ST_B4],
24615 + BFD_RELOC_AVR32_16S, 3, 1,
24616 + {
24617 + &avr32_ifield_table[AVR32_IFIELD_RX],
24618 + &avr32_ifield_table[AVR32_IFIELD_K16],
24619 + &avr32_ifield_table[AVR32_IFIELD_RY],
24620 + },
24621 + },
24622 + {
24623 + AVR32_OPC_ST_D1, 2, 0xa1200000, 0xe1f10000,
24624 + &avr32_syntax_table[AVR32_SYNTAX_ST_D1],
24625 + BFD_RELOC_UNUSED, 2, -1,
24626 + {
24627 + &avr32_ifield_table[AVR32_IFIELD_RX],
24628 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
24629 + },
24630 + },
24631 + {
24632 + AVR32_OPC_ST_D2, 2, 0xa1210000, 0xe1f10000,
24633 + &avr32_syntax_table[AVR32_SYNTAX_ST_D2],
24634 + BFD_RELOC_UNUSED, 2, -1,
24635 + {
24636 + &avr32_ifield_table[AVR32_IFIELD_RX],
24637 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
24638 + },
24639 + },
24640 + {
24641 + AVR32_OPC_ST_D3, 2, 0xa1110000, 0xe1f10000,
24642 + &avr32_syntax_table[AVR32_SYNTAX_ST_D3],
24643 + BFD_RELOC_UNUSED, 2, -1,
24644 + {
24645 + &avr32_ifield_table[AVR32_IFIELD_RX],
24646 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
24647 + },
24648 + },
24649 + {
24650 + AVR32_OPC_ST_D5, 4, 0xe0000800, 0xe1f0ffc1,
24651 + &avr32_syntax_table[AVR32_SYNTAX_ST_D5],
24652 + BFD_RELOC_UNUSED, 4, -1,
24653 + {
24654 + &avr32_ifield_table[AVR32_IFIELD_RX],
24655 + &avr32_ifield_table[AVR32_IFIELD_RY],
24656 + &avr32_ifield_table[AVR32_IFIELD_K2],
24657 + &avr32_ifield_table[AVR32_IFIELD_RD_DW],
24658 + },
24659 + },
24660 + {
24661 + AVR32_OPC_ST_D4, 4, 0xe0e10000, 0xe1f10000,
24662 + &avr32_syntax_table[AVR32_SYNTAX_ST_D4],
24663 + BFD_RELOC_AVR32_16S, 3, 1,
24664 + {
24665 + &avr32_ifield_table[AVR32_IFIELD_RX],
24666 + &avr32_ifield_table[AVR32_IFIELD_K16],
24667 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
24668 + },
24669 + },
24670 + {
24671 + AVR32_OPC_ST_H1, 2, 0x00b00000, 0xe1f00000,
24672 + &avr32_syntax_table[AVR32_SYNTAX_ST_H1],
24673 + BFD_RELOC_UNUSED, 2, -1,
24674 + {
24675 + &avr32_ifield_table[AVR32_IFIELD_RX],
24676 + &avr32_ifield_table[AVR32_IFIELD_RY],
24677 + },
24678 + },
24679 + {
24680 + AVR32_OPC_ST_H2, 2, 0x00e00000, 0xe1f00000,
24681 + &avr32_syntax_table[AVR32_SYNTAX_ST_H2],
24682 + BFD_RELOC_UNUSED, 2, -1,
24683 + {
24684 + &avr32_ifield_table[AVR32_IFIELD_RX],
24685 + &avr32_ifield_table[AVR32_IFIELD_RY],
24686 + },
24687 + },
24688 + {
24689 + AVR32_OPC_ST_H5, 4, 0xe0000a00, 0xe1f0ffc0,
24690 + &avr32_syntax_table[AVR32_SYNTAX_ST_H5],
24691 + BFD_RELOC_UNUSED, 4, -1,
24692 + {
24693 + &avr32_ifield_table[AVR32_IFIELD_RX],
24694 + &avr32_ifield_table[AVR32_IFIELD_RY],
24695 + &avr32_ifield_table[AVR32_IFIELD_K2],
24696 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24697 + },
24698 + },
24699 + {
24700 + AVR32_OPC_ST_H3, 2, 0xa0000000, 0xe1800000,
24701 + &avr32_syntax_table[AVR32_SYNTAX_ST_H3],
24702 + BFD_RELOC_AVR32_4UH, 3, 1,
24703 + {
24704 + &avr32_ifield_table[AVR32_IFIELD_RX],
24705 + &avr32_ifield_table[AVR32_IFIELD_K3],
24706 + &avr32_ifield_table[AVR32_IFIELD_RY],
24707 + },
24708 + },
24709 + {
24710 + AVR32_OPC_ST_H4, 4, 0xe1500000, 0xe1f00000,
24711 + &avr32_syntax_table[AVR32_SYNTAX_ST_H4],
24712 + BFD_RELOC_AVR32_16S, 3, 1,
24713 + {
24714 + &avr32_ifield_table[AVR32_IFIELD_RX],
24715 + &avr32_ifield_table[AVR32_IFIELD_K16],
24716 + &avr32_ifield_table[AVR32_IFIELD_RY],
24717 + },
24718 + },
24719 + {
24720 + AVR32_OPC_ST_W1, 2, 0x00a00000, 0xe1f00000,
24721 + &avr32_syntax_table[AVR32_SYNTAX_ST_W1],
24722 + BFD_RELOC_UNUSED, 2, -1,
24723 + {
24724 + &avr32_ifield_table[AVR32_IFIELD_RX],
24725 + &avr32_ifield_table[AVR32_IFIELD_RY],
24726 + },
24727 + },
24728 + {
24729 + AVR32_OPC_ST_W2, 2, 0x00d00000, 0xe1f00000,
24730 + &avr32_syntax_table[AVR32_SYNTAX_ST_W2],
24731 + BFD_RELOC_UNUSED, 2, -1,
24732 + {
24733 + &avr32_ifield_table[AVR32_IFIELD_RX],
24734 + &avr32_ifield_table[AVR32_IFIELD_RY],
24735 + },
24736 + },
24737 + {
24738 + AVR32_OPC_ST_W5, 4, 0xe0000900, 0xe1f0ffc0,
24739 + &avr32_syntax_table[AVR32_SYNTAX_ST_W5],
24740 + BFD_RELOC_UNUSED, 4, -1,
24741 + {
24742 + &avr32_ifield_table[AVR32_IFIELD_RX],
24743 + &avr32_ifield_table[AVR32_IFIELD_RY],
24744 + &avr32_ifield_table[AVR32_IFIELD_K2],
24745 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24746 + },
24747 + },
24748 + {
24749 + AVR32_OPC_ST_W3, 2, 0x81000000, 0xe1000000,
24750 + &avr32_syntax_table[AVR32_SYNTAX_ST_W3],
24751 + BFD_RELOC_AVR32_6UW, 3, 1,
24752 + {
24753 + &avr32_ifield_table[AVR32_IFIELD_RX],
24754 + &avr32_ifield_table[AVR32_IFIELD_K4],
24755 + &avr32_ifield_table[AVR32_IFIELD_RY],
24756 + },
24757 + },
24758 + {
24759 + AVR32_OPC_ST_W4, 4, 0xe1400000, 0xe1f00000,
24760 + &avr32_syntax_table[AVR32_SYNTAX_ST_W4],
24761 + BFD_RELOC_AVR32_16S, 3, 1,
24762 + {
24763 + &avr32_ifield_table[AVR32_IFIELD_RX],
24764 + &avr32_ifield_table[AVR32_IFIELD_K16],
24765 + &avr32_ifield_table[AVR32_IFIELD_RY],
24766 + },
24767 + },
24768 + {
24769 + AVR32_OPC_STC_D1, 4, 0xeba01000, 0xfff01100,
24770 + &avr32_syntax_table[AVR32_SYNTAX_STC_D1],
24771 + BFD_RELOC_AVR32_10UW, 4, 2,
24772 + {
24773 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24774 + &avr32_ifield_table[AVR32_IFIELD_RY],
24775 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24776 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
24777 + },
24778 + },
24779 + {
24780 + AVR32_OPC_STC_D2, 4, 0xefa00070, 0xfff011f0,
24781 + &avr32_syntax_table[AVR32_SYNTAX_STC_D2],
24782 + BFD_RELOC_UNUSED, 3, -1,
24783 + {
24784 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24785 + &avr32_ifield_table[AVR32_IFIELD_RY],
24786 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
24787 + },
24788 + },
24789 + {
24790 + AVR32_OPC_STC_D3, 4, 0xefa010c0, 0xfff011c0,
24791 + &avr32_syntax_table[AVR32_SYNTAX_STC_D3],
24792 + BFD_RELOC_UNUSED, 5, -1,
24793 + {
24794 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24795 + &avr32_ifield_table[AVR32_IFIELD_RY],
24796 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24797 + &avr32_ifield_table[AVR32_IFIELD_K2],
24798 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
24799 + },
24800 + },
24801 + {
24802 + AVR32_OPC_STC_W1, 4, 0xeba00000, 0xfff01000,
24803 + &avr32_syntax_table[AVR32_SYNTAX_STC_W1],
24804 + BFD_RELOC_AVR32_10UW, 4, 2,
24805 + {
24806 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24807 + &avr32_ifield_table[AVR32_IFIELD_RY],
24808 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24809 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24810 + },
24811 + },
24812 + {
24813 + AVR32_OPC_STC_W2, 4, 0xefa00060, 0xfff010ff,
24814 + &avr32_syntax_table[AVR32_SYNTAX_STC_W2],
24815 + BFD_RELOC_UNUSED, 3, -1,
24816 + {
24817 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24818 + &avr32_ifield_table[AVR32_IFIELD_RY],
24819 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24820 + },
24821 + },
24822 + {
24823 + AVR32_OPC_STC_W3, 4, 0xefa01080, 0xfff010c0,
24824 + &avr32_syntax_table[AVR32_SYNTAX_STC_W3],
24825 + BFD_RELOC_UNUSED, 5, -1,
24826 + {
24827 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24828 + &avr32_ifield_table[AVR32_IFIELD_RY],
24829 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24830 + &avr32_ifield_table[AVR32_IFIELD_K2],
24831 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24832 + },
24833 + },
24834 + {
24835 + AVR32_OPC_STC0_D, 4, 0xf7a00000, 0xfff00100,
24836 + &avr32_syntax_table[AVR32_SYNTAX_STC0_D],
24837 + BFD_RELOC_AVR32_14UW, 3, 1,
24838 + {
24839 + &avr32_ifield_table[AVR32_IFIELD_RY],
24840 + &avr32_ifield_table[AVR32_IFIELD_K12CP],
24841 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
24842 + },
24843 + },
24844 + {
24845 + AVR32_OPC_STC0_W, 4, 0xf5a00000, 0xfff00000,
24846 + &avr32_syntax_table[AVR32_SYNTAX_STC0_W],
24847 + BFD_RELOC_AVR32_14UW, 3, 1,
24848 + {
24849 + &avr32_ifield_table[AVR32_IFIELD_RY],
24850 + &avr32_ifield_table[AVR32_IFIELD_K12CP],
24851 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24852 + },
24853 + },
24854 + {
24855 + AVR32_OPC_STCM_D, 4, 0xeda00500, 0xfff01f00,
24856 + &avr32_syntax_table[AVR32_SYNTAX_STCM_D],
24857 + BFD_RELOC_UNUSED, 3, -1,
24858 + {
24859 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24860 + &avr32_ifield_table[AVR32_IFIELD_RY],
24861 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24862 + },
24863 + },
24864 + {
24865 + AVR32_OPC_STCM_D_PU, 4, 0xeda01500, 0xfff01f00,
24866 + &avr32_syntax_table[AVR32_SYNTAX_STCM_D_PU],
24867 + BFD_RELOC_UNUSED, 3, -1,
24868 + {
24869 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24870 + &avr32_ifield_table[AVR32_IFIELD_RY],
24871 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24872 + },
24873 + },
24874 + {
24875 + AVR32_OPC_STCM_W, 4, 0xeda00200, 0xfff01e00,
24876 + &avr32_syntax_table[AVR32_SYNTAX_STCM_W],
24877 + BFD_RELOC_UNUSED, 4, -1,
24878 + {
24879 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24880 + &avr32_ifield_table[AVR32_IFIELD_RY],
24881 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24882 + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
24883 + },
24884 + },
24885 + {
24886 + AVR32_OPC_STCM_W_PU, 4, 0xeda01200, 0xfff01e00,
24887 + &avr32_syntax_table[AVR32_SYNTAX_STCM_W_PU],
24888 + BFD_RELOC_UNUSED, 4, -1,
24889 + {
24890 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24891 + &avr32_ifield_table[AVR32_IFIELD_RY],
24892 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24893 + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
24894 + },
24895 + },
24896 + {
24897 + AVR32_OPC_STCOND, 4, 0xe1700000, 0xe1f00000,
24898 + &avr32_syntax_table[AVR32_SYNTAX_STCOND],
24899 + BFD_RELOC_UNUSED, 3, -1,
24900 + {
24901 + &avr32_ifield_table[AVR32_IFIELD_RX],
24902 + &avr32_ifield_table[AVR32_IFIELD_K16],
24903 + &avr32_ifield_table[AVR32_IFIELD_RY],
24904 + },
24905 + },
24906 + {
24907 + AVR32_OPC_STDSP, 2, 0x50000000, 0xf8000000,
24908 + &avr32_syntax_table[AVR32_SYNTAX_STDSP],
24909 + BFD_RELOC_UNUSED, 2, -1,
24910 + {
24911 + &avr32_ifield_table[AVR32_IFIELD_K7C],
24912 + &avr32_ifield_table[AVR32_IFIELD_RY],
24913 + },
24914 + },
24915 + {
24916 + AVR32_OPC_STHH_W2, 4, 0xe1e08000, 0xe1f0c0c0,
24917 + &avr32_syntax_table[AVR32_SYNTAX_STHH_W2],
24918 + BFD_RELOC_UNUSED, 7, -1,
24919 + {
24920 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24921 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24922 + &avr32_ifield_table[AVR32_IFIELD_K2],
24923 + &avr32_ifield_table[AVR32_IFIELD_RX],
24924 + &avr32_ifield_table[AVR32_IFIELD_X2],
24925 + &avr32_ifield_table[AVR32_IFIELD_RY],
24926 + &avr32_ifield_table[AVR32_IFIELD_Y2],
24927 + },
24928 + },
24929 + {
24930 + AVR32_OPC_STHH_W1, 4, 0xe1e0c000, 0xe1f0c000,
24931 + &avr32_syntax_table[AVR32_SYNTAX_STHH_W1],
24932 + BFD_RELOC_AVR32_STHH_W, 6, 1,
24933 + {
24934 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24935 + &avr32_ifield_table[AVR32_IFIELD_K8E2],
24936 + &avr32_ifield_table[AVR32_IFIELD_RX],
24937 + &avr32_ifield_table[AVR32_IFIELD_X2],
24938 + &avr32_ifield_table[AVR32_IFIELD_RY],
24939 + &avr32_ifield_table[AVR32_IFIELD_Y2],
24940 + },
24941 + },
24942 + {
24943 + AVR32_OPC_STM, 4, 0xe9c00000, 0xfff00000,
24944 + &avr32_syntax_table[AVR32_SYNTAX_STM],
24945 + BFD_RELOC_UNUSED, 2, -1,
24946 + {
24947 + &avr32_ifield_table[AVR32_IFIELD_RY],
24948 + &avr32_ifield_table[AVR32_IFIELD_K16],
24949 + },
24950 + },
24951 + {
24952 + AVR32_OPC_STM_PU, 4, 0xebc00000, 0xfff00000,
24953 + &avr32_syntax_table[AVR32_SYNTAX_STM_PU],
24954 + BFD_RELOC_UNUSED, 2, -1,
24955 + {
24956 + &avr32_ifield_table[AVR32_IFIELD_RY],
24957 + &avr32_ifield_table[AVR32_IFIELD_K16],
24958 + },
24959 + },
24960 + {
24961 + AVR32_OPC_STMTS, 4, 0xedc00000, 0xfff00000,
24962 + &avr32_syntax_table[AVR32_SYNTAX_STMTS],
24963 + BFD_RELOC_UNUSED, 2, -1,
24964 + {
24965 + &avr32_ifield_table[AVR32_IFIELD_RY],
24966 + &avr32_ifield_table[AVR32_IFIELD_K16],
24967 + },
24968 + },
24969 + {
24970 + AVR32_OPC_STMTS_PU, 4, 0xefc00000, 0xfff00000,
24971 + &avr32_syntax_table[AVR32_SYNTAX_STMTS_PU],
24972 + BFD_RELOC_UNUSED, 2, -1,
24973 + {
24974 + &avr32_ifield_table[AVR32_IFIELD_RY],
24975 + &avr32_ifield_table[AVR32_IFIELD_K16],
24976 + },
24977 + },
24978 + {
24979 + AVR32_OPC_STSWP_H, 4, 0xe1d09000, 0xe1f0f000,
24980 + &avr32_syntax_table[AVR32_SYNTAX_STSWP_H],
24981 + BFD_RELOC_UNUSED, 3, -1,
24982 + {
24983 + &avr32_ifield_table[AVR32_IFIELD_RX],
24984 + &avr32_ifield_table[AVR32_IFIELD_K12],
24985 + &avr32_ifield_table[AVR32_IFIELD_RY],
24986 + },
24987 + },
24988 + {
24989 + AVR32_OPC_STSWP_W, 4, 0xe1d0a000, 0xe1f0f000,
24990 + &avr32_syntax_table[AVR32_SYNTAX_STSWP_W],
24991 + BFD_RELOC_UNUSED, 3, -1,
24992 + {
24993 + &avr32_ifield_table[AVR32_IFIELD_RX],
24994 + &avr32_ifield_table[AVR32_IFIELD_K12],
24995 + &avr32_ifield_table[AVR32_IFIELD_RY],
24996 + },
24997 + },
24998 + {
24999 + AVR32_OPC_SUB1, 2, 0x00100000, 0xe1f00000,
25000 + &avr32_syntax_table[AVR32_SYNTAX_SUB1],
25001 + BFD_RELOC_UNUSED, 2, -1,
25002 + {
25003 + &avr32_ifield_table[AVR32_IFIELD_RY],
25004 + &avr32_ifield_table[AVR32_IFIELD_RX],
25005 + },
25006 + },
25007 + {
25008 + AVR32_OPC_SUB2, 4, 0xe0000100, 0xe1f0ffc0,
25009 + &avr32_syntax_table[AVR32_SYNTAX_SUB2],
25010 + BFD_RELOC_UNUSED, 4, -1,
25011 + {
25012 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
25013 + &avr32_ifield_table[AVR32_IFIELD_RX],
25014 + &avr32_ifield_table[AVR32_IFIELD_RY],
25015 + &avr32_ifield_table[AVR32_IFIELD_K2],
25016 + },
25017 + },
25018 + {
25019 + AVR32_OPC_SUB5, 4, 0xe0c00000, 0xe1f00000,
25020 + &avr32_syntax_table[AVR32_SYNTAX_SUB5],
25021 + BFD_RELOC_AVR32_SUB5, 3, 2,
25022 + {
25023 + &avr32_ifield_table[AVR32_IFIELD_RY],
25024 + &avr32_ifield_table[AVR32_IFIELD_RX],
25025 + &avr32_ifield_table[AVR32_IFIELD_K16],
25026 + },
25027 + },
25028 + {
25029 + AVR32_OPC_SUB3_SP, 2, 0x200d0000, 0xf00f0000,
25030 + &avr32_syntax_table[AVR32_SYNTAX_SUB3_SP],
25031 + BFD_RELOC_AVR32_10SW, 2, 1,
25032 + {
25033 + &avr32_ifield_table[AVR32_IFIELD_RY],
25034 + &avr32_ifield_table[AVR32_IFIELD_K8C],
25035 + },
25036 + },
25037 + {
25038 + AVR32_OPC_SUB3, 2, 0x20000000, 0xf0000000,
25039 + &avr32_syntax_table[AVR32_SYNTAX_SUB3],
25040 + BFD_RELOC_AVR32_8S, 2, 1,
25041 + {
25042 + &avr32_ifield_table[AVR32_IFIELD_RY],
25043 + &avr32_ifield_table[AVR32_IFIELD_K8C],
25044 + },
25045 + },
25046 + {
25047 + AVR32_OPC_SUB4, 4, 0xe0200000, 0xe1e00000,
25048 + &avr32_syntax_table[AVR32_SYNTAX_SUB4],
25049 + BFD_RELOC_AVR32_21S, 2, 1,
25050 + {
25051 + &avr32_ifield_table[AVR32_IFIELD_RY],
25052 + &avr32_ifield_table[AVR32_IFIELD_K21],
25053 + },
25054 + },
25055 + {
25056 + AVR32_OPC_SUBEQ, 4, 0xf7b00000, 0xfff0ff00,
25057 + &avr32_syntax_table[AVR32_SYNTAX_SUBEQ],
25058 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25059 + {
25060 + &avr32_ifield_table[AVR32_IFIELD_RY],
25061 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25062 + },
25063 + },
25064 + {
25065 + AVR32_OPC_SUBNE, 4, 0xf7b00100, 0xfff0ff00,
25066 + &avr32_syntax_table[AVR32_SYNTAX_SUBNE],
25067 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25068 + {
25069 + &avr32_ifield_table[AVR32_IFIELD_RY],
25070 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25071 + },
25072 + },
25073 + {
25074 + AVR32_OPC_SUBCC, 4, 0xf7b00200, 0xfff0ff00,
25075 + &avr32_syntax_table[AVR32_SYNTAX_SUBHS],
25076 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25077 + {
25078 + &avr32_ifield_table[AVR32_IFIELD_RY],
25079 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25080 + },
25081 + },
25082 + {
25083 + AVR32_OPC_SUBCS, 4, 0xf7b00300, 0xfff0ff00,
25084 + &avr32_syntax_table[AVR32_SYNTAX_SUBLO],
25085 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25086 + {
25087 + &avr32_ifield_table[AVR32_IFIELD_RY],
25088 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25089 + },
25090 + },
25091 + {
25092 + AVR32_OPC_SUBGE, 4, 0xf7b00400, 0xfff0ff00,
25093 + &avr32_syntax_table[AVR32_SYNTAX_SUBGE],
25094 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25095 + {
25096 + &avr32_ifield_table[AVR32_IFIELD_RY],
25097 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25098 + },
25099 + },
25100 + {
25101 + AVR32_OPC_SUBLT, 4, 0xf7b00500, 0xfff0ff00,
25102 + &avr32_syntax_table[AVR32_SYNTAX_SUBLT],
25103 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25104 + {
25105 + &avr32_ifield_table[AVR32_IFIELD_RY],
25106 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25107 + },
25108 + },
25109 + {
25110 + AVR32_OPC_SUBMI, 4, 0xf7b00600, 0xfff0ff00,
25111 + &avr32_syntax_table[AVR32_SYNTAX_SUBMI],
25112 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25113 + {
25114 + &avr32_ifield_table[AVR32_IFIELD_RY],
25115 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25116 + },
25117 + },
25118 + {
25119 + AVR32_OPC_SUBPL, 4, 0xf7b00700, 0xfff0ff00,
25120 + &avr32_syntax_table[AVR32_SYNTAX_SUBPL],
25121 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25122 + {
25123 + &avr32_ifield_table[AVR32_IFIELD_RY],
25124 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25125 + },
25126 + },
25127 + {
25128 + AVR32_OPC_SUBLS, 4, 0xf7b00800, 0xfff0ff00,
25129 + &avr32_syntax_table[AVR32_SYNTAX_SUBLS],
25130 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25131 + {
25132 + &avr32_ifield_table[AVR32_IFIELD_RY],
25133 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25134 + },
25135 + },
25136 + {
25137 + AVR32_OPC_SUBGT, 4, 0xf7b00900, 0xfff0ff00,
25138 + &avr32_syntax_table[AVR32_SYNTAX_SUBGT],
25139 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25140 + {
25141 + &avr32_ifield_table[AVR32_IFIELD_RY],
25142 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25143 + },
25144 + },
25145 + {
25146 + AVR32_OPC_SUBLE, 4, 0xf7b00a00, 0xfff0ff00,
25147 + &avr32_syntax_table[AVR32_SYNTAX_SUBLE],
25148 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25149 + {
25150 + &avr32_ifield_table[AVR32_IFIELD_RY],
25151 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25152 + },
25153 + },
25154 + {
25155 + AVR32_OPC_SUBHI, 4, 0xf7b00b00, 0xfff0ff00,
25156 + &avr32_syntax_table[AVR32_SYNTAX_SUBHI],
25157 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25158 + {
25159 + &avr32_ifield_table[AVR32_IFIELD_RY],
25160 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25161 + },
25162 + },
25163 + {
25164 + AVR32_OPC_SUBVS, 4, 0xf7b00c00, 0xfff0ff00,
25165 + &avr32_syntax_table[AVR32_SYNTAX_SUBVS],
25166 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25167 + {
25168 + &avr32_ifield_table[AVR32_IFIELD_RY],
25169 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25170 + },
25171 + },
25172 + {
25173 + AVR32_OPC_SUBVC, 4, 0xf7b00d00, 0xfff0ff00,
25174 + &avr32_syntax_table[AVR32_SYNTAX_SUBVC],
25175 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25176 + {
25177 + &avr32_ifield_table[AVR32_IFIELD_RY],
25178 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25179 + },
25180 + },
25181 + {
25182 + AVR32_OPC_SUBQS, 4, 0xf7b00e00, 0xfff0ff00,
25183 + &avr32_syntax_table[AVR32_SYNTAX_SUBQS],
25184 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25185 + {
25186 + &avr32_ifield_table[AVR32_IFIELD_RY],
25187 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25188 + },
25189 + },
25190 + {
25191 + AVR32_OPC_SUBAL, 4, 0xf7b00f00, 0xfff0ff00,
25192 + &avr32_syntax_table[AVR32_SYNTAX_SUBAL],
25193 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25194 + {
25195 + &avr32_ifield_table[AVR32_IFIELD_RY],
25196 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25197 + },
25198 + },
25199 + {
25200 + AVR32_OPC_SUBFEQ, 4, 0xf5b00000, 0xfff0ff00,
25201 + &avr32_syntax_table[AVR32_SYNTAX_SUBFEQ],
25202 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25203 + {
25204 + &avr32_ifield_table[AVR32_IFIELD_RY],
25205 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25206 + },
25207 + },
25208 + {
25209 + AVR32_OPC_SUBFNE, 4, 0xf5b00100, 0xfff0ff00,
25210 + &avr32_syntax_table[AVR32_SYNTAX_SUBFNE],
25211 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25212 + {
25213 + &avr32_ifield_table[AVR32_IFIELD_RY],
25214 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25215 + },
25216 + },
25217 + {
25218 + AVR32_OPC_SUBFCC, 4, 0xf5b00200, 0xfff0ff00,
25219 + &avr32_syntax_table[AVR32_SYNTAX_SUBFHS],
25220 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25221 + {
25222 + &avr32_ifield_table[AVR32_IFIELD_RY],
25223 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25224 + },
25225 + },
25226 + {
25227 + AVR32_OPC_SUBFCS, 4, 0xf5b00300, 0xfff0ff00,
25228 + &avr32_syntax_table[AVR32_SYNTAX_SUBFLO],
25229 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25230 + {
25231 + &avr32_ifield_table[AVR32_IFIELD_RY],
25232 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25233 + },
25234 + },
25235 + {
25236 + AVR32_OPC_SUBFGE, 4, 0xf5b00400, 0xfff0ff00,
25237 + &avr32_syntax_table[AVR32_SYNTAX_SUBFGE],
25238 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25239 + {
25240 + &avr32_ifield_table[AVR32_IFIELD_RY],
25241 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25242 + },
25243 + },
25244 + {
25245 + AVR32_OPC_SUBFLT, 4, 0xf5b00500, 0xfff0ff00,
25246 + &avr32_syntax_table[AVR32_SYNTAX_SUBFLT],
25247 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25248 + {
25249 + &avr32_ifield_table[AVR32_IFIELD_RY],
25250 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25251 + },
25252 + },
25253 + {
25254 + AVR32_OPC_SUBFMI, 4, 0xf5b00600, 0xfff0ff00,
25255 + &avr32_syntax_table[AVR32_SYNTAX_SUBFMI],
25256 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25257 + {
25258 + &avr32_ifield_table[AVR32_IFIELD_RY],
25259 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25260 + },
25261 + },
25262 + {
25263 + AVR32_OPC_SUBFPL, 4, 0xf5b00700, 0xfff0ff00,
25264 + &avr32_syntax_table[AVR32_SYNTAX_SUBFPL],
25265 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25266 + {
25267 + &avr32_ifield_table[AVR32_IFIELD_RY],
25268 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25269 + },
25270 + },
25271 + {
25272 + AVR32_OPC_SUBFLS, 4, 0xf5b00800, 0xfff0ff00,
25273 + &avr32_syntax_table[AVR32_SYNTAX_SUBFLS],
25274 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25275 + {
25276 + &avr32_ifield_table[AVR32_IFIELD_RY],
25277 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25278 + },
25279 + },
25280 + {
25281 + AVR32_OPC_SUBFGT, 4, 0xf5b00900, 0xfff0ff00,
25282 + &avr32_syntax_table[AVR32_SYNTAX_SUBFGT],
25283 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25284 + {
25285 + &avr32_ifield_table[AVR32_IFIELD_RY],
25286 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25287 + },
25288 + },
25289 + {
25290 + AVR32_OPC_SUBFLE, 4, 0xf5b00a00, 0xfff0ff00,
25291 + &avr32_syntax_table[AVR32_SYNTAX_SUBFLE],
25292 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25293 + {
25294 + &avr32_ifield_table[AVR32_IFIELD_RY],
25295 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25296 + },
25297 + },
25298 + {
25299 + AVR32_OPC_SUBFHI, 4, 0xf5b00b00, 0xfff0ff00,
25300 + &avr32_syntax_table[AVR32_SYNTAX_SUBFHI],
25301 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25302 + {
25303 + &avr32_ifield_table[AVR32_IFIELD_RY],
25304 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25305 + },
25306 + },
25307 + {
25308 + AVR32_OPC_SUBFVS, 4, 0xf5b00c00, 0xfff0ff00,
25309 + &avr32_syntax_table[AVR32_SYNTAX_SUBFVS],
25310 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25311 + {
25312 + &avr32_ifield_table[AVR32_IFIELD_RY],
25313 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25314 + },
25315 + },
25316 + {
25317 + AVR32_OPC_SUBFVC, 4, 0xf5b00d00, 0xfff0ff00,
25318 + &avr32_syntax_table[AVR32_SYNTAX_SUBFVC],
25319 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25320 + {
25321 + &avr32_ifield_table[AVR32_IFIELD_RY],
25322 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25323 + },
25324 + },
25325 + {
25326 + AVR32_OPC_SUBFQS, 4, 0xf5b00e00, 0xfff0ff00,
25327 + &avr32_syntax_table[AVR32_SYNTAX_SUBFQS],
25328 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25329 + {
25330 + &avr32_ifield_table[AVR32_IFIELD_RY],
25331 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25332 + },
25333 + },
25334 + {
25335 + AVR32_OPC_SUBFAL, 4, 0xf5b00f00, 0xfff0ff00,
25336 + &avr32_syntax_table[AVR32_SYNTAX_SUBFAL],
25337 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25338 + {
25339 + &avr32_ifield_table[AVR32_IFIELD_RY],
25340 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25341 + },
25342 + },
25343 + {
25344 + AVR32_OPC_SUBHH_W, 4, 0xe0000f00, 0xe1f0ffc0,
25345 + &avr32_syntax_table[AVR32_SYNTAX_SUBHH_W],
25346 + BFD_RELOC_UNUSED, 5, -1,
25347 + {
25348 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
25349 + &avr32_ifield_table[AVR32_IFIELD_RX],
25350 + &avr32_ifield_table[AVR32_IFIELD_X],
25351 + &avr32_ifield_table[AVR32_IFIELD_RY],
25352 + &avr32_ifield_table[AVR32_IFIELD_Y],
25353 + },
25354 + },
25355 + {
25356 + AVR32_OPC_SWAP_B, 2, 0x5cb00000, 0xfff00000,
25357 + &avr32_syntax_table[AVR32_SYNTAX_SWAP_B],
25358 + BFD_RELOC_UNUSED, 1, -1,
25359 + {
25360 + &avr32_ifield_table[AVR32_IFIELD_RY],
25361 + }
25362 + },
25363 + {
25364 + AVR32_OPC_SWAP_BH, 2, 0x5cc00000, 0xfff00000,
25365 + &avr32_syntax_table[AVR32_SYNTAX_SWAP_BH],
25366 + BFD_RELOC_UNUSED, 1, -1,
25367 + {
25368 + &avr32_ifield_table[AVR32_IFIELD_RY],
25369 + }
25370 + },
25371 + {
25372 + AVR32_OPC_SWAP_H, 2, 0x5ca00000, 0xfff00000,
25373 + &avr32_syntax_table[AVR32_SYNTAX_SWAP_H],
25374 + BFD_RELOC_UNUSED, 1, -1,
25375 + {
25376 + &avr32_ifield_table[AVR32_IFIELD_RY],
25377 + }
25378 + },
25379 + {
25380 + AVR32_OPC_SYNC, 4, 0xebb00000, 0xffffff00,
25381 + &avr32_syntax_table[AVR32_SYNTAX_SYNC],
25382 + BFD_RELOC_AVR32_8S_EXT, 1, 0,
25383 + {
25384 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25385 + }
25386 + },
25387 + {
25388 + AVR32_OPC_TLBR, 2, 0xd6430000, 0xffff0000,
25389 + &avr32_syntax_table[AVR32_SYNTAX_TLBR],
25390 + BFD_RELOC_UNUSED, 0, -1, { NULL },
25391 + },
25392 + {
25393 + AVR32_OPC_TLBS, 2, 0xd6530000, 0xffff0000,
25394 + &avr32_syntax_table[AVR32_SYNTAX_TLBS],
25395 + BFD_RELOC_UNUSED, 0, -1, { NULL },
25396 + },
25397 + {
25398 + AVR32_OPC_TLBW, 2, 0xd6630000, 0xffff0000,
25399 + &avr32_syntax_table[AVR32_SYNTAX_TLBW],
25400 + BFD_RELOC_UNUSED, 0, -1, { NULL },
25401 + },
25402 + {
25403 + AVR32_OPC_TNBZ, 2, 0x5ce00000, 0xfff00000,
25404 + &avr32_syntax_table[AVR32_SYNTAX_TNBZ],
25405 + BFD_RELOC_UNUSED, 1, -1,
25406 + {
25407 + &avr32_ifield_table[AVR32_IFIELD_RY],
25408 + }
25409 + },
25410 + {
25411 + AVR32_OPC_TST, 2, 0x00700000, 0xe1f00000,
25412 + &avr32_syntax_table[AVR32_SYNTAX_TST],
25413 + BFD_RELOC_UNUSED, 2, -1,
25414 + {
25415 + &avr32_ifield_table[AVR32_IFIELD_RY],
25416 + &avr32_ifield_table[AVR32_IFIELD_RX],
25417 + },
25418 + },
25419 + {
25420 + AVR32_OPC_XCHG, 4, 0xe0000b40, 0xe1f0fff0,
25421 + &avr32_syntax_table[AVR32_SYNTAX_XCHG],
25422 + BFD_RELOC_UNUSED, 3, -1,
25423 + {
25424 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
25425 + &avr32_ifield_table[AVR32_IFIELD_RX],
25426 + &avr32_ifield_table[AVR32_IFIELD_RY],
25427 + },
25428 + },
25429 + {
25430 + AVR32_OPC_MEMC, 4, 0xf6100000, 0xfff00000,
25431 + &avr32_syntax_table[AVR32_SYNTAX_MEMC],
25432 + BFD_RELOC_AVR32_15S, 2, 0,
25433 + {
25434 + &avr32_ifield_table[AVR32_IFIELD_MEM15],
25435 + &avr32_ifield_table[AVR32_IFIELD_MEMB5],
25436 + },
25437 + },
25438 + {
25439 + AVR32_OPC_MEMS, 4, 0xf8100000, 0xfff00000,
25440 + &avr32_syntax_table[AVR32_SYNTAX_MEMS],
25441 + BFD_RELOC_AVR32_15S, 2, 0,
25442 + {
25443 + &avr32_ifield_table[AVR32_IFIELD_MEM15],
25444 + &avr32_ifield_table[AVR32_IFIELD_MEMB5],
25445 + },
25446 + },
25447 + {
25448 + AVR32_OPC_MEMT, 4, 0xfa100000, 0xfff00000,
25449 + &avr32_syntax_table[AVR32_SYNTAX_MEMT],
25450 + BFD_RELOC_AVR32_15S, 2, 0,
25451 + {
25452 + &avr32_ifield_table[AVR32_IFIELD_MEM15],
25453 + &avr32_ifield_table[AVR32_IFIELD_MEMB5],
25454 + },
25455 + },
25456 + {
25457 + AVR32_OPC_BFEXTS, 4, 0xe1d0b000, 0xe1f0fc00,
25458 + &avr32_syntax_table[AVR32_SYNTAX_BFEXTS],
25459 + BFD_RELOC_UNUSED, 4, -1,
25460 + {
25461 + &avr32_ifield_table[AVR32_IFIELD_RX],
25462 + &avr32_ifield_table[AVR32_IFIELD_RY],
25463 + &avr32_ifield_table[AVR32_IFIELD_S5],
25464 + &avr32_ifield_table[AVR32_IFIELD_K5E],
25465 + },
25466 + },
25467 + {
25468 + AVR32_OPC_BFEXTU, 4, 0xe1d0c000, 0xe1f0fc00,
25469 + &avr32_syntax_table[AVR32_SYNTAX_BFEXTU],
25470 + BFD_RELOC_UNUSED, 4, -1,
25471 + {
25472 + &avr32_ifield_table[AVR32_IFIELD_RX],
25473 + &avr32_ifield_table[AVR32_IFIELD_RY],
25474 + &avr32_ifield_table[AVR32_IFIELD_S5],
25475 + &avr32_ifield_table[AVR32_IFIELD_K5E],
25476 + },
25477 + },
25478 + {
25479 + AVR32_OPC_BFINS, 4, 0xe1d0d000, 0xe1f0fc00,
25480 + &avr32_syntax_table[AVR32_SYNTAX_BFINS],
25481 + BFD_RELOC_UNUSED, 4, -1,
25482 + {
25483 + &avr32_ifield_table[AVR32_IFIELD_RX],
25484 + &avr32_ifield_table[AVR32_IFIELD_RY],
25485 + &avr32_ifield_table[AVR32_IFIELD_S5],
25486 + &avr32_ifield_table[AVR32_IFIELD_K5E],
25487 + },
25488 + },
25489 +#define AVR32_OPCODE_RSUBCOND(cond_name, cond_field) \
25490 + { \
25491 + AVR32_OPC_RSUB ## cond_name , 4, \
25492 + 0xfbb00000 | (cond_field << 8), 0xfff0ff00, \
25493 + &avr32_syntax_table[AVR32_SYNTAX_RSUB ## cond_name ], \
25494 + BFD_RELOC_AVR32_8S_EXT, 2, 1, \
25495 + { \
25496 + &avr32_ifield_table[AVR32_IFIELD_RY], \
25497 + &avr32_ifield_table[AVR32_IFIELD_K8E], \
25498 + }, \
25499 + },
25500 +
25501 + AVR32_OPCODE_RSUBCOND (EQ, 0)
25502 + AVR32_OPCODE_RSUBCOND (NE, 1)
25503 + AVR32_OPCODE_RSUBCOND (CC, 2)
25504 + AVR32_OPCODE_RSUBCOND (CS, 3)
25505 + AVR32_OPCODE_RSUBCOND (GE, 4)
25506 + AVR32_OPCODE_RSUBCOND (LT, 5)
25507 + AVR32_OPCODE_RSUBCOND (MI, 6)
25508 + AVR32_OPCODE_RSUBCOND (PL, 7)
25509 + AVR32_OPCODE_RSUBCOND (LS, 8)
25510 + AVR32_OPCODE_RSUBCOND (GT, 9)
25511 + AVR32_OPCODE_RSUBCOND (LE, 10)
25512 + AVR32_OPCODE_RSUBCOND (HI, 11)
25513 + AVR32_OPCODE_RSUBCOND (VS, 12)
25514 + AVR32_OPCODE_RSUBCOND (VC, 13)
25515 + AVR32_OPCODE_RSUBCOND (QS, 14)
25516 + AVR32_OPCODE_RSUBCOND (AL, 15)
25517 +
25518 +#define AVR32_OPCODE_OP3_COND(op_name, op_field, cond_name, cond_field) \
25519 + { \
25520 + AVR32_OPC_ ## op_name ## cond_name , 4, \
25521 + 0xe1d0e000 | (cond_field << 8) | (op_field << 4), 0xe1f0fff0, \
25522 + &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
25523 + BFD_RELOC_UNUSED, 3, -1, \
25524 + { \
25525 + &avr32_ifield_table[AVR32_IFIELD_RD_E], \
25526 + &avr32_ifield_table[AVR32_IFIELD_RX], \
25527 + &avr32_ifield_table[AVR32_IFIELD_RY], \
25528 + }, \
25529 + },
25530 +
25531 + AVR32_OPCODE_OP3_COND (ADD, 0, EQ, 0)
25532 + AVR32_OPCODE_OP3_COND (ADD, 0, NE, 1)
25533 + AVR32_OPCODE_OP3_COND (ADD, 0, CC, 2)
25534 + AVR32_OPCODE_OP3_COND (ADD, 0, CS, 3)
25535 + AVR32_OPCODE_OP3_COND (ADD, 0, GE, 4)
25536 + AVR32_OPCODE_OP3_COND (ADD, 0, LT, 5)
25537 + AVR32_OPCODE_OP3_COND (ADD, 0, MI, 6)
25538 + AVR32_OPCODE_OP3_COND (ADD, 0, PL, 7)
25539 + AVR32_OPCODE_OP3_COND (ADD, 0, LS, 8)
25540 + AVR32_OPCODE_OP3_COND (ADD, 0, GT, 9)
25541 + AVR32_OPCODE_OP3_COND (ADD, 0, LE, 10)
25542 + AVR32_OPCODE_OP3_COND (ADD, 0, HI, 11)
25543 + AVR32_OPCODE_OP3_COND (ADD, 0, VS, 12)
25544 + AVR32_OPCODE_OP3_COND (ADD, 0, VC, 13)
25545 + AVR32_OPCODE_OP3_COND (ADD, 0, QS, 14)
25546 + AVR32_OPCODE_OP3_COND (ADD, 0, AL, 15)
25547 +
25548 + AVR32_OPCODE_OP3_COND (SUB2, 1, EQ, 0)
25549 + AVR32_OPCODE_OP3_COND (SUB2, 1, NE, 1)
25550 + AVR32_OPCODE_OP3_COND (SUB2, 1, CC, 2)
25551 + AVR32_OPCODE_OP3_COND (SUB2, 1, CS, 3)
25552 + AVR32_OPCODE_OP3_COND (SUB2, 1, GE, 4)
25553 + AVR32_OPCODE_OP3_COND (SUB2, 1, LT, 5)
25554 + AVR32_OPCODE_OP3_COND (SUB2, 1, MI, 6)
25555 + AVR32_OPCODE_OP3_COND (SUB2, 1, PL, 7)
25556 + AVR32_OPCODE_OP3_COND (SUB2, 1, LS, 8)
25557 + AVR32_OPCODE_OP3_COND (SUB2, 1, GT, 9)
25558 + AVR32_OPCODE_OP3_COND (SUB2, 1, LE, 10)
25559 + AVR32_OPCODE_OP3_COND (SUB2, 1, HI, 11)
25560 + AVR32_OPCODE_OP3_COND (SUB2, 1, VS, 12)
25561 + AVR32_OPCODE_OP3_COND (SUB2, 1, VC, 13)
25562 + AVR32_OPCODE_OP3_COND (SUB2, 1, QS, 14)
25563 + AVR32_OPCODE_OP3_COND (SUB2, 1, AL, 15)
25564 +
25565 + AVR32_OPCODE_OP3_COND (AND, 2, EQ, 0)
25566 + AVR32_OPCODE_OP3_COND (AND, 2, NE, 1)
25567 + AVR32_OPCODE_OP3_COND (AND, 2, CC, 2)
25568 + AVR32_OPCODE_OP3_COND (AND, 2, CS, 3)
25569 + AVR32_OPCODE_OP3_COND (AND, 2, GE, 4)
25570 + AVR32_OPCODE_OP3_COND (AND, 2, LT, 5)
25571 + AVR32_OPCODE_OP3_COND (AND, 2, MI, 6)
25572 + AVR32_OPCODE_OP3_COND (AND, 2, PL, 7)
25573 + AVR32_OPCODE_OP3_COND (AND, 2, LS, 8)
25574 + AVR32_OPCODE_OP3_COND (AND, 2, GT, 9)
25575 + AVR32_OPCODE_OP3_COND (AND, 2, LE, 10)
25576 + AVR32_OPCODE_OP3_COND (AND, 2, HI, 11)
25577 + AVR32_OPCODE_OP3_COND (AND, 2, VS, 12)
25578 + AVR32_OPCODE_OP3_COND (AND, 2, VC, 13)
25579 + AVR32_OPCODE_OP3_COND (AND, 2, QS, 14)
25580 + AVR32_OPCODE_OP3_COND (AND, 2, AL, 15)
25581 +
25582 + AVR32_OPCODE_OP3_COND (OR, 3, EQ, 0)
25583 + AVR32_OPCODE_OP3_COND (OR, 3, NE, 1)
25584 + AVR32_OPCODE_OP3_COND (OR, 3, CC, 2)
25585 + AVR32_OPCODE_OP3_COND (OR, 3, CS, 3)
25586 + AVR32_OPCODE_OP3_COND (OR, 3, GE, 4)
25587 + AVR32_OPCODE_OP3_COND (OR, 3, LT, 5)
25588 + AVR32_OPCODE_OP3_COND (OR, 3, MI, 6)
25589 + AVR32_OPCODE_OP3_COND (OR, 3, PL, 7)
25590 + AVR32_OPCODE_OP3_COND (OR, 3, LS, 8)
25591 + AVR32_OPCODE_OP3_COND (OR, 3, GT, 9)
25592 + AVR32_OPCODE_OP3_COND (OR, 3, LE, 10)
25593 + AVR32_OPCODE_OP3_COND (OR, 3, HI, 11)
25594 + AVR32_OPCODE_OP3_COND (OR, 3, VS, 12)
25595 + AVR32_OPCODE_OP3_COND (OR, 3, VC, 13)
25596 + AVR32_OPCODE_OP3_COND (OR, 3, QS, 14)
25597 + AVR32_OPCODE_OP3_COND (OR, 3, AL, 15)
25598 +
25599 + AVR32_OPCODE_OP3_COND (EOR, 4, EQ, 0)
25600 + AVR32_OPCODE_OP3_COND (EOR, 4, NE, 1)
25601 + AVR32_OPCODE_OP3_COND (EOR, 4, CC, 2)
25602 + AVR32_OPCODE_OP3_COND (EOR, 4, CS, 3)
25603 + AVR32_OPCODE_OP3_COND (EOR, 4, GE, 4)
25604 + AVR32_OPCODE_OP3_COND (EOR, 4, LT, 5)
25605 + AVR32_OPCODE_OP3_COND (EOR, 4, MI, 6)
25606 + AVR32_OPCODE_OP3_COND (EOR, 4, PL, 7)
25607 + AVR32_OPCODE_OP3_COND (EOR, 4, LS, 8)
25608 + AVR32_OPCODE_OP3_COND (EOR, 4, GT, 9)
25609 + AVR32_OPCODE_OP3_COND (EOR, 4, LE, 10)
25610 + AVR32_OPCODE_OP3_COND (EOR, 4, HI, 11)
25611 + AVR32_OPCODE_OP3_COND (EOR, 4, VS, 12)
25612 + AVR32_OPCODE_OP3_COND (EOR, 4, VC, 13)
25613 + AVR32_OPCODE_OP3_COND (EOR, 4, QS, 14)
25614 + AVR32_OPCODE_OP3_COND (EOR, 4, AL, 15)
25615 +
25616 +#define AVR32_OPCODE_LD_COND(op_name, op_field, cond_name, cond_field) \
25617 + { \
25618 + AVR32_OPC_ ## op_name ## cond_name , 4, \
25619 + 0xe1f00000 | (cond_field << 12) | (op_field << 9), 0xe1f0fe00, \
25620 + &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
25621 + BFD_RELOC_UNUSED, 3, -1, \
25622 + { \
25623 + &avr32_ifield_table[AVR32_IFIELD_RY], \
25624 + &avr32_ifield_table[AVR32_IFIELD_RX], \
25625 + &avr32_ifield_table[AVR32_IFIELD_K9E], \
25626 + }, \
25627 + },
25628 +
25629 +#define AVR32_OPCODE_ST_COND(op_name, op_field, cond_name, cond_field) \
25630 + { \
25631 + AVR32_OPC_ ## op_name ## cond_name , 4, \
25632 + 0xe1f00000 | (cond_field << 12) | (op_field << 9), 0xe1f0fe00, \
25633 + &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
25634 + BFD_RELOC_UNUSED, 3, -1, \
25635 + { \
25636 + &avr32_ifield_table[AVR32_IFIELD_RX], \
25637 + &avr32_ifield_table[AVR32_IFIELD_K9E], \
25638 + &avr32_ifield_table[AVR32_IFIELD_RY], \
25639 + }, \
25640 + },
25641 +
25642 + AVR32_OPCODE_LD_COND (LD_W, 0, EQ, 0)
25643 + AVR32_OPCODE_LD_COND (LD_W, 0, NE, 1)
25644 + AVR32_OPCODE_LD_COND (LD_W, 0, CC, 2)
25645 + AVR32_OPCODE_LD_COND (LD_W, 0, CS, 3)
25646 + AVR32_OPCODE_LD_COND (LD_W, 0, GE, 4)
25647 + AVR32_OPCODE_LD_COND (LD_W, 0, LT, 5)
25648 + AVR32_OPCODE_LD_COND (LD_W, 0, MI, 6)
25649 + AVR32_OPCODE_LD_COND (LD_W, 0, PL, 7)
25650 + AVR32_OPCODE_LD_COND (LD_W, 0, LS, 8)
25651 + AVR32_OPCODE_LD_COND (LD_W, 0, GT, 9)
25652 + AVR32_OPCODE_LD_COND (LD_W, 0, LE, 10)
25653 + AVR32_OPCODE_LD_COND (LD_W, 0, HI, 11)
25654 + AVR32_OPCODE_LD_COND (LD_W, 0, VS, 12)
25655 + AVR32_OPCODE_LD_COND (LD_W, 0, VC, 13)
25656 + AVR32_OPCODE_LD_COND (LD_W, 0, QS, 14)
25657 + AVR32_OPCODE_LD_COND (LD_W, 0, AL, 15)
25658 +
25659 + AVR32_OPCODE_LD_COND (LD_SH, 1, EQ, 0)
25660 + AVR32_OPCODE_LD_COND (LD_SH, 1, NE, 1)
25661 + AVR32_OPCODE_LD_COND (LD_SH, 1, CC, 2)
25662 + AVR32_OPCODE_LD_COND (LD_SH, 1, CS, 3)
25663 + AVR32_OPCODE_LD_COND (LD_SH, 1, GE, 4)
25664 + AVR32_OPCODE_LD_COND (LD_SH, 1, LT, 5)
25665 + AVR32_OPCODE_LD_COND (LD_SH, 1, MI, 6)
25666 + AVR32_OPCODE_LD_COND (LD_SH, 1, PL, 7)
25667 + AVR32_OPCODE_LD_COND (LD_SH, 1, LS, 8)
25668 + AVR32_OPCODE_LD_COND (LD_SH, 1, GT, 9)
25669 + AVR32_OPCODE_LD_COND (LD_SH, 1, LE, 10)
25670 + AVR32_OPCODE_LD_COND (LD_SH, 1, HI, 11)
25671 + AVR32_OPCODE_LD_COND (LD_SH, 1, VS, 12)
25672 + AVR32_OPCODE_LD_COND (LD_SH, 1, VC, 13)
25673 + AVR32_OPCODE_LD_COND (LD_SH, 1, QS, 14)
25674 + AVR32_OPCODE_LD_COND (LD_SH, 1, AL, 15)
25675 +
25676 + AVR32_OPCODE_LD_COND (LD_UH, 2, EQ, 0)
25677 + AVR32_OPCODE_LD_COND (LD_UH, 2, NE, 1)
25678 + AVR32_OPCODE_LD_COND (LD_UH, 2, CC, 2)
25679 + AVR32_OPCODE_LD_COND (LD_UH, 2, CS, 3)
25680 + AVR32_OPCODE_LD_COND (LD_UH, 2, GE, 4)
25681 + AVR32_OPCODE_LD_COND (LD_UH, 2, LT, 5)
25682 + AVR32_OPCODE_LD_COND (LD_UH, 2, MI, 6)
25683 + AVR32_OPCODE_LD_COND (LD_UH, 2, PL, 7)
25684 + AVR32_OPCODE_LD_COND (LD_SH, 2, LS, 8)
25685 + AVR32_OPCODE_LD_COND (LD_SH, 2, GT, 9)
25686 + AVR32_OPCODE_LD_COND (LD_SH, 2, LE, 10)
25687 + AVR32_OPCODE_LD_COND (LD_SH, 2, HI, 11)
25688 + AVR32_OPCODE_LD_COND (LD_SH, 2, VS, 12)
25689 + AVR32_OPCODE_LD_COND (LD_SH, 2, VC, 13)
25690 + AVR32_OPCODE_LD_COND (LD_SH, 2, QS, 14)
25691 + AVR32_OPCODE_LD_COND (LD_SH, 2, AL, 15)
25692 +
25693 + AVR32_OPCODE_LD_COND (LD_SB, 3, EQ, 0)
25694 + AVR32_OPCODE_LD_COND (LD_SB, 3, NE, 1)
25695 + AVR32_OPCODE_LD_COND (LD_SB, 3, CC, 2)
25696 + AVR32_OPCODE_LD_COND (LD_SB, 3, CS, 3)
25697 + AVR32_OPCODE_LD_COND (LD_SB, 3, GE, 4)
25698 + AVR32_OPCODE_LD_COND (LD_SB, 3, LT, 5)
25699 + AVR32_OPCODE_LD_COND (LD_SB, 3, MI, 6)
25700 + AVR32_OPCODE_LD_COND (LD_SB, 3, PL, 7)
25701 + AVR32_OPCODE_LD_COND (LD_SB, 3, LS, 8)
25702 + AVR32_OPCODE_LD_COND (LD_SB, 3, GT, 9)
25703 + AVR32_OPCODE_LD_COND (LD_SB, 3, LE, 10)
25704 + AVR32_OPCODE_LD_COND (LD_SB, 3, HI, 11)
25705 + AVR32_OPCODE_LD_COND (LD_SB, 3, VS, 12)
25706 + AVR32_OPCODE_LD_COND (LD_SB, 3, VC, 13)
25707 + AVR32_OPCODE_LD_COND (LD_SB, 3, QS, 14)
25708 + AVR32_OPCODE_LD_COND (LD_SB, 3, AL, 15)
25709 +
25710 + AVR32_OPCODE_LD_COND (LD_UB, 4, EQ, 0)
25711 + AVR32_OPCODE_LD_COND (LD_UB, 4, NE, 1)
25712 + AVR32_OPCODE_LD_COND (LD_UB, 4, CC, 2)
25713 + AVR32_OPCODE_LD_COND (LD_UB, 4, CS, 3)
25714 + AVR32_OPCODE_LD_COND (LD_UB, 4, GE, 4)
25715 + AVR32_OPCODE_LD_COND (LD_UB, 4, LT, 5)
25716 + AVR32_OPCODE_LD_COND (LD_UB, 4, MI, 6)
25717 + AVR32_OPCODE_LD_COND (LD_UB, 4, PL, 7)
25718 + AVR32_OPCODE_LD_COND (LD_UB, 4, LS, 8)
25719 + AVR32_OPCODE_LD_COND (LD_UB, 4, GT, 9)
25720 + AVR32_OPCODE_LD_COND (LD_UB, 4, LE, 10)
25721 + AVR32_OPCODE_LD_COND (LD_UB, 4, HI, 11)
25722 + AVR32_OPCODE_LD_COND (LD_UB, 4, VS, 12)
25723 + AVR32_OPCODE_LD_COND (LD_UB, 4, VC, 13)
25724 + AVR32_OPCODE_LD_COND (LD_UB, 4, QS, 14)
25725 + AVR32_OPCODE_LD_COND (LD_UB, 4, AL, 15)
25726 +
25727 + AVR32_OPCODE_ST_COND (ST_W, 5, EQ, 0)
25728 + AVR32_OPCODE_ST_COND (ST_W, 5, NE, 1)
25729 + AVR32_OPCODE_ST_COND (ST_W, 5, CC, 2)
25730 + AVR32_OPCODE_ST_COND (ST_W, 5, CS, 3)
25731 + AVR32_OPCODE_ST_COND (ST_W, 5, GE, 4)
25732 + AVR32_OPCODE_ST_COND (ST_W, 5, LT, 5)
25733 + AVR32_OPCODE_ST_COND (ST_W, 5, MI, 6)
25734 + AVR32_OPCODE_ST_COND (ST_W, 5, PL, 7)
25735 + AVR32_OPCODE_ST_COND (ST_W, 5, LS, 8)
25736 + AVR32_OPCODE_ST_COND (ST_W, 5, GT, 9)
25737 + AVR32_OPCODE_ST_COND (ST_W, 5, LE, 10)
25738 + AVR32_OPCODE_ST_COND (ST_W, 5, HI, 11)
25739 + AVR32_OPCODE_ST_COND (ST_W, 5, VS, 12)
25740 + AVR32_OPCODE_ST_COND (ST_W, 5, VC, 13)
25741 + AVR32_OPCODE_ST_COND (ST_W, 5, QS, 14)
25742 + AVR32_OPCODE_ST_COND (ST_W, 5, AL, 15)
25743 +
25744 + AVR32_OPCODE_ST_COND (ST_H, 6, EQ, 0)
25745 + AVR32_OPCODE_ST_COND (ST_H, 6, NE, 1)
25746 + AVR32_OPCODE_ST_COND (ST_H, 6, CC, 2)
25747 + AVR32_OPCODE_ST_COND (ST_H, 6, CS, 3)
25748 + AVR32_OPCODE_ST_COND (ST_H, 6, GE, 4)
25749 + AVR32_OPCODE_ST_COND (ST_H, 6, LT, 5)
25750 + AVR32_OPCODE_ST_COND (ST_H, 6, MI, 6)
25751 + AVR32_OPCODE_ST_COND (ST_H, 6, PL, 7)
25752 + AVR32_OPCODE_ST_COND (ST_H, 6, LS, 8)
25753 + AVR32_OPCODE_ST_COND (ST_H, 6, GT, 9)
25754 + AVR32_OPCODE_ST_COND (ST_H, 6, LE, 10)
25755 + AVR32_OPCODE_ST_COND (ST_H, 6, HI, 11)
25756 + AVR32_OPCODE_ST_COND (ST_H, 6, VS, 12)
25757 + AVR32_OPCODE_ST_COND (ST_H, 6, VC, 13)
25758 + AVR32_OPCODE_ST_COND (ST_H, 6, QS, 14)
25759 + AVR32_OPCODE_ST_COND (ST_H, 6, AL, 15)
25760 +
25761 + AVR32_OPCODE_ST_COND (ST_B, 7, EQ, 0)
25762 + AVR32_OPCODE_ST_COND (ST_B, 7, NE, 1)
25763 + AVR32_OPCODE_ST_COND (ST_B, 7, CC, 2)
25764 + AVR32_OPCODE_ST_COND (ST_B, 7, CS, 3)
25765 + AVR32_OPCODE_ST_COND (ST_B, 7, GE, 4)
25766 + AVR32_OPCODE_ST_COND (ST_B, 7, LT, 5)
25767 + AVR32_OPCODE_ST_COND (ST_B, 7, MI, 6)
25768 + AVR32_OPCODE_ST_COND (ST_B, 7, PL, 7)
25769 + AVR32_OPCODE_ST_COND (ST_B, 7, LS, 8)
25770 + AVR32_OPCODE_ST_COND (ST_B, 7, GT, 9)
25771 + AVR32_OPCODE_ST_COND (ST_B, 7, LE, 10)
25772 + AVR32_OPCODE_ST_COND (ST_B, 7, HI, 11)
25773 + AVR32_OPCODE_ST_COND (ST_B, 7, VS, 12)
25774 + AVR32_OPCODE_ST_COND (ST_B, 7, VC, 13)
25775 + AVR32_OPCODE_ST_COND (ST_B, 7, QS, 14)
25776 + AVR32_OPCODE_ST_COND (ST_B, 7, AL, 15)
25777 +
25778 + {
25779 + AVR32_OPC_MOVH, 4, 0xfc100000, 0xfff00000,
25780 + &avr32_syntax_table[AVR32_SYNTAX_MOVH],
25781 + BFD_RELOC_AVR32_16U, 2, 1,
25782 + {
25783 + &avr32_ifield_table[AVR32_IFIELD_RY],
25784 + &avr32_ifield_table[AVR32_IFIELD_K16],
25785 + },
25786 + },
25787 +
25788 + };
25789 +
25790 +#define FPALIAS_DXY(name, opcode) \
25791 + { \
25792 + AVR32_ALIAS_##name##_S, \
25793 + &avr32_opc_table[AVR32_OPC_COP], \
25794 + { \
25795 + { 0, 0 }, \
25796 + { 1, 0 }, { 1, 1 }, { 1, 2 }, \
25797 + { 0, opcode }, \
25798 + }, \
25799 + }, { \
25800 + AVR32_ALIAS_##name##_D, \
25801 + &avr32_opc_table[AVR32_OPC_COP], \
25802 + { \
25803 + { 0, 0 }, \
25804 + { 1, 0 }, { 1, 1 }, { 1, 2 }, \
25805 + { 0, (opcode) | 0x40 }, \
25806 + }, \
25807 + }
25808 +#define FPALIAS_DX(name, opcode) \
25809 + { \
25810 + AVR32_ALIAS_##name##_S, \
25811 + &avr32_opc_table[AVR32_OPC_COP], \
25812 + { \
25813 + { 0, 0 }, \
25814 + { 1, 0 }, { 1, 1 }, { 0, 0 }, \
25815 + { 0, opcode }, \
25816 + }, \
25817 + }, { \
25818 + AVR32_ALIAS_##name##_D, \
25819 + &avr32_opc_table[AVR32_OPC_COP], \
25820 + { \
25821 + { 0, 0 }, \
25822 + { 1, 0 }, { 1, 1 }, { 0, 0 }, \
25823 + { 0, (opcode) | 0x40 }, \
25824 + }, \
25825 + }
25826 +#define FPALIAS_XY(name, opcode) \
25827 + { \
25828 + AVR32_ALIAS_##name##_S, \
25829 + &avr32_opc_table[AVR32_OPC_COP], \
25830 + { \
25831 + { 0, 0 }, \
25832 + { 0, 0 }, { 1, 0 }, { 1, 1 }, \
25833 + { 0, opcode }, \
25834 + }, \
25835 + }, { \
25836 + AVR32_ALIAS_##name##_D, \
25837 + &avr32_opc_table[AVR32_OPC_COP], \
25838 + { \
25839 + { 0, 0 }, \
25840 + { 0, 0 }, { 1, 0 }, { 1, 1 }, \
25841 + { 0, (opcode) | 0x40 }, \
25842 + }, \
25843 + }
25844 +
25845 +const struct avr32_alias avr32_alias_table[] =
25846 + {
25847 + FPALIAS_DXY(FMAC, 0x00),
25848 + FPALIAS_DXY(FNMAC, 0x01),
25849 + FPALIAS_DXY(FMSC, 0x02),
25850 + FPALIAS_DXY(FNMSC, 0x03),
25851 + FPALIAS_DXY(FADD, 0x04),
25852 + FPALIAS_DXY(FSUB, 0x05),
25853 + FPALIAS_DXY(FMUL, 0x06),
25854 + FPALIAS_DXY(FNMUL, 0x07),
25855 + FPALIAS_DX(FNEG, 0x08),
25856 + FPALIAS_DX(FABS, 0x09),
25857 + FPALIAS_XY(FCMP, 0x0d),
25858 + FPALIAS_DX(FMOV1, 0x0a),
25859 + {
25860 + AVR32_ALIAS_FMOV2_S,
25861 + &avr32_opc_table[AVR32_OPC_MVCR_W],
25862 + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
25863 + },
25864 + {
25865 + AVR32_ALIAS_FMOV2_D,
25866 + &avr32_opc_table[AVR32_OPC_MVCR_D],
25867 + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
25868 + },
25869 + {
25870 + AVR32_ALIAS_FMOV3_S,
25871 + &avr32_opc_table[AVR32_OPC_MVRC_W],
25872 + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
25873 + },
25874 + {
25875 + AVR32_ALIAS_FMOV3_D,
25876 + &avr32_opc_table[AVR32_OPC_MVRC_D],
25877 + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
25878 + },
25879 + {
25880 + AVR32_ALIAS_FCASTS_D,
25881 + &avr32_opc_table[AVR32_OPC_COP],
25882 + {
25883 + { 0, 0 },
25884 + { 1, 0 }, { 1, 1 }, { 0, 0 },
25885 + { 0, 0x0f },
25886 + },
25887 + },
25888 + {
25889 + AVR32_ALIAS_FCASTD_S,
25890 + &avr32_opc_table[AVR32_OPC_COP],
25891 + {
25892 + { 0, 0 },
25893 + { 1, 0 }, { 1, 1 }, { 0, 0 },
25894 + { 0, 0x10 },
25895 + },
25896 + },
25897 + {
25898 + AVR32_ALIAS_PICOSVMAC0,
25899 + &avr32_opc_table[AVR32_OPC_COP],
25900 + {
25901 + { 0, PICO_CPNO },
25902 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25903 + { 0, 0x0c },
25904 + },
25905 + },
25906 + {
25907 + AVR32_ALIAS_PICOSVMAC1,
25908 + &avr32_opc_table[AVR32_OPC_COP],
25909 + {
25910 + { 0, PICO_CPNO },
25911 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25912 + { 0, 0x0d },
25913 + },
25914 + },
25915 + {
25916 + AVR32_ALIAS_PICOSVMAC2,
25917 + &avr32_opc_table[AVR32_OPC_COP],
25918 + {
25919 + { 0, PICO_CPNO },
25920 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25921 + { 0, 0x0e },
25922 + },
25923 + },
25924 + {
25925 + AVR32_ALIAS_PICOSVMAC3,
25926 + &avr32_opc_table[AVR32_OPC_COP],
25927 + {
25928 + { 0, PICO_CPNO },
25929 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25930 + { 0, 0x0f },
25931 + },
25932 + },
25933 + {
25934 + AVR32_ALIAS_PICOSVMUL0,
25935 + &avr32_opc_table[AVR32_OPC_COP],
25936 + {
25937 + { 0, PICO_CPNO },
25938 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25939 + { 0, 0x08 },
25940 + },
25941 + },
25942 + {
25943 + AVR32_ALIAS_PICOSVMUL1,
25944 + &avr32_opc_table[AVR32_OPC_COP],
25945 + {
25946 + { 0, PICO_CPNO },
25947 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25948 + { 0, 0x09 },
25949 + },
25950 + },
25951 + {
25952 + AVR32_ALIAS_PICOSVMUL2,
25953 + &avr32_opc_table[AVR32_OPC_COP],
25954 + {
25955 + { 0, PICO_CPNO },
25956 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25957 + { 0, 0x0a },
25958 + },
25959 + },
25960 + {
25961 + AVR32_ALIAS_PICOSVMUL3,
25962 + &avr32_opc_table[AVR32_OPC_COP],
25963 + {
25964 + { 0, PICO_CPNO },
25965 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25966 + { 0, 0x0b },
25967 + },
25968 + },
25969 + {
25970 + AVR32_ALIAS_PICOVMAC0,
25971 + &avr32_opc_table[AVR32_OPC_COP],
25972 + {
25973 + { 0, PICO_CPNO },
25974 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25975 + { 0, 0x04 },
25976 + },
25977 + },
25978 + {
25979 + AVR32_ALIAS_PICOVMAC1,
25980 + &avr32_opc_table[AVR32_OPC_COP],
25981 + {
25982 + { 0, PICO_CPNO },
25983 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25984 + { 0, 0x05 },
25985 + },
25986 + },
25987 + {
25988 + AVR32_ALIAS_PICOVMAC2,
25989 + &avr32_opc_table[AVR32_OPC_COP],
25990 + {
25991 + { 0, PICO_CPNO },
25992 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25993 + { 0, 0x06 },
25994 + },
25995 + },
25996 + {
25997 + AVR32_ALIAS_PICOVMAC3,
25998 + &avr32_opc_table[AVR32_OPC_COP],
25999 + {
26000 + { 0, PICO_CPNO },
26001 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26002 + { 0, 0x07 },
26003 + },
26004 + },
26005 + {
26006 + AVR32_ALIAS_PICOVMUL0,
26007 + &avr32_opc_table[AVR32_OPC_COP],
26008 + {
26009 + { 0, PICO_CPNO },
26010 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26011 + { 0, 0x00 },
26012 + },
26013 + },
26014 + {
26015 + AVR32_ALIAS_PICOVMUL1,
26016 + &avr32_opc_table[AVR32_OPC_COP],
26017 + {
26018 + { 0, PICO_CPNO },
26019 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26020 + { 0, 0x01 },
26021 + },
26022 + },
26023 + {
26024 + AVR32_ALIAS_PICOVMUL2,
26025 + &avr32_opc_table[AVR32_OPC_COP],
26026 + {
26027 + { 0, PICO_CPNO },
26028 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26029 + { 0, 0x02 },
26030 + },
26031 + },
26032 + {
26033 + AVR32_ALIAS_PICOVMUL3,
26034 + &avr32_opc_table[AVR32_OPC_COP],
26035 + {
26036 + { 0, PICO_CPNO },
26037 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26038 + { 0, 0x03 },
26039 + },
26040 + },
26041 + {
26042 + AVR32_ALIAS_PICOLD_D1,
26043 + &avr32_opc_table[AVR32_OPC_LDC_D1],
26044 + {
26045 + { 0, PICO_CPNO },
26046 + { 1, 0 }, { 1, 1 },
26047 + },
26048 + },
26049 + {
26050 + AVR32_ALIAS_PICOLD_D2,
26051 + &avr32_opc_table[AVR32_OPC_LDC_D2],
26052 + {
26053 + { 0, PICO_CPNO },
26054 + { 1, 0 }, { 1, 1 },
26055 + },
26056 + },
26057 + {
26058 + AVR32_ALIAS_PICOLD_D3,
26059 + &avr32_opc_table[AVR32_OPC_LDC_D3],
26060 + {
26061 + { 0, PICO_CPNO },
26062 + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
26063 + },
26064 + },
26065 + {
26066 + AVR32_ALIAS_PICOLD_W1,
26067 + &avr32_opc_table[AVR32_OPC_LDC_W1],
26068 + {
26069 + { 0, PICO_CPNO },
26070 + { 1, 0 }, { 1, 1 },
26071 + },
26072 + },
26073 + {
26074 + AVR32_ALIAS_PICOLD_W2,
26075 + &avr32_opc_table[AVR32_OPC_LDC_W2],
26076 + {
26077 + { 0, PICO_CPNO },
26078 + { 1, 0 }, { 1, 1 },
26079 + },
26080 + },
26081 + {
26082 + AVR32_ALIAS_PICOLD_W3,
26083 + &avr32_opc_table[AVR32_OPC_LDC_W3],
26084 + {
26085 + { 0, PICO_CPNO },
26086 + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
26087 + },
26088 + },
26089 + {
26090 + AVR32_ALIAS_PICOLDM_D,
26091 + &avr32_opc_table[AVR32_OPC_LDCM_D],
26092 + {
26093 + { 0, PICO_CPNO },
26094 + { 1, 0 }, { 1, 1 },
26095 + },
26096 + },
26097 + {
26098 + AVR32_ALIAS_PICOLDM_D_PU,
26099 + &avr32_opc_table[AVR32_OPC_LDCM_D_PU],
26100 + {
26101 + { 0, PICO_CPNO },
26102 + { 1, 0 }, { 1, 1 },
26103 + },
26104 + },
26105 + {
26106 + AVR32_ALIAS_PICOLDM_W,
26107 + &avr32_opc_table[AVR32_OPC_LDCM_W],
26108 + {
26109 + { 0, PICO_CPNO },
26110 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26111 + },
26112 + },
26113 + {
26114 + AVR32_ALIAS_PICOLDM_W_PU,
26115 + &avr32_opc_table[AVR32_OPC_LDCM_W_PU],
26116 + {
26117 + { 0, PICO_CPNO },
26118 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26119 + },
26120 + },
26121 + {
26122 + AVR32_ALIAS_PICOMV_D1,
26123 + &avr32_opc_table[AVR32_OPC_MVCR_D],
26124 + {
26125 + { 0, PICO_CPNO },
26126 + { 1, 0 }, { 1, 1 },
26127 + },
26128 + },
26129 + {
26130 + AVR32_ALIAS_PICOMV_D2,
26131 + &avr32_opc_table[AVR32_OPC_MVRC_D],
26132 + {
26133 + { 0, PICO_CPNO },
26134 + { 1, 0 }, { 1, 1 },
26135 + },
26136 + },
26137 + {
26138 + AVR32_ALIAS_PICOMV_W1,
26139 + &avr32_opc_table[AVR32_OPC_MVCR_W],
26140 + {
26141 + { 0, PICO_CPNO },
26142 + { 1, 0 }, { 1, 1 },
26143 + },
26144 + },
26145 + {
26146 + AVR32_ALIAS_PICOMV_W2,
26147 + &avr32_opc_table[AVR32_OPC_MVRC_W],
26148 + {
26149 + { 0, PICO_CPNO },
26150 + { 1, 0 }, { 1, 1 },
26151 + },
26152 + },
26153 + {
26154 + AVR32_ALIAS_PICOST_D1,
26155 + &avr32_opc_table[AVR32_OPC_STC_D1],
26156 + {
26157 + { 0, PICO_CPNO },
26158 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26159 + },
26160 + },
26161 + {
26162 + AVR32_ALIAS_PICOST_D2,
26163 + &avr32_opc_table[AVR32_OPC_STC_D2],
26164 + {
26165 + { 0, PICO_CPNO },
26166 + { 1, 0 }, { 1, 1 },
26167 + },
26168 + },
26169 + {
26170 + AVR32_ALIAS_PICOST_D3,
26171 + &avr32_opc_table[AVR32_OPC_STC_D3],
26172 + {
26173 + { 0, PICO_CPNO },
26174 + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
26175 + },
26176 + },
26177 + {
26178 + AVR32_ALIAS_PICOST_W1,
26179 + &avr32_opc_table[AVR32_OPC_STC_W1],
26180 + {
26181 + { 0, PICO_CPNO },
26182 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26183 + },
26184 + },
26185 + {
26186 + AVR32_ALIAS_PICOST_W2,
26187 + &avr32_opc_table[AVR32_OPC_STC_W2],
26188 + {
26189 + { 0, PICO_CPNO },
26190 + { 1, 0 }, { 1, 1 },
26191 + },
26192 + },
26193 + {
26194 + AVR32_ALIAS_PICOST_W3,
26195 + &avr32_opc_table[AVR32_OPC_STC_W3],
26196 + {
26197 + { 0, PICO_CPNO },
26198 + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
26199 + },
26200 + },
26201 + {
26202 + AVR32_ALIAS_PICOSTM_D,
26203 + &avr32_opc_table[AVR32_OPC_STCM_D],
26204 + {
26205 + { 0, PICO_CPNO },
26206 + { 1, 0 }, { 1, 1 },
26207 + },
26208 + },
26209 + {
26210 + AVR32_ALIAS_PICOSTM_D_PU,
26211 + &avr32_opc_table[AVR32_OPC_STCM_D_PU],
26212 + {
26213 + { 0, PICO_CPNO },
26214 + { 1, 0 }, { 1, 1 },
26215 + },
26216 + },
26217 + {
26218 + AVR32_ALIAS_PICOSTM_W,
26219 + &avr32_opc_table[AVR32_OPC_STCM_W],
26220 + {
26221 + { 0, PICO_CPNO },
26222 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26223 + },
26224 + },
26225 + {
26226 + AVR32_ALIAS_PICOSTM_W_PU,
26227 + &avr32_opc_table[AVR32_OPC_STCM_W_PU],
26228 + {
26229 + { 0, PICO_CPNO },
26230 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26231 + },
26232 + },
26233 + };
26234 +
26235 +
26236 +#define SYNTAX_NORMAL0(id, mne, opc, arch) \
26237 + { \
26238 + AVR32_SYNTAX_##id, arch, \
26239 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26240 + AVR32_PARSER_NORMAL, \
26241 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26242 + NULL, 0, { } \
26243 + }
26244 +#define SYNTAX_NORMAL1(id, mne, opc, op0, arch) \
26245 + { \
26246 + AVR32_SYNTAX_##id, arch, \
26247 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26248 + AVR32_PARSER_NORMAL, \
26249 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26250 + NULL, 1, \
26251 + { \
26252 + AVR32_OPERAND_##op0, \
26253 + } \
26254 + }
26255 +#define SYNTAX_NORMALM1(id, mne, opc, op0, arch) \
26256 + { \
26257 + AVR32_SYNTAX_##id, arch, \
26258 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26259 + AVR32_PARSER_NORMAL, \
26260 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26261 + NULL, -1, \
26262 + { \
26263 + AVR32_OPERAND_##op0, \
26264 + } \
26265 + }
26266 +#define SYNTAX_NORMAL2(id, mne, opc, op0, op1, arch) \
26267 + { \
26268 + AVR32_SYNTAX_##id, arch, \
26269 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26270 + AVR32_PARSER_NORMAL, \
26271 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26272 + NULL, 2, \
26273 + { \
26274 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26275 + } \
26276 + }
26277 +#define SYNTAX_NORMALM2(id, mne, opc, op0, op1, arch) \
26278 + { \
26279 + AVR32_SYNTAX_##id, arch, \
26280 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26281 + AVR32_PARSER_NORMAL, \
26282 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26283 + NULL, -2, \
26284 + { \
26285 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26286 + } \
26287 + }
26288 +#define SYNTAX_NORMAL3(id, mne, opc, op0, op1, op2, arch) \
26289 + { \
26290 + AVR32_SYNTAX_##id, arch, \
26291 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26292 + AVR32_PARSER_NORMAL, \
26293 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26294 + NULL, 3, \
26295 + { \
26296 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26297 + AVR32_OPERAND_##op2, \
26298 + } \
26299 + }
26300 +#define SYNTAX_NORMALM3(id, mne, opc, op0, op1, op2, arch) \
26301 + { \
26302 + AVR32_SYNTAX_##id, arch, \
26303 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26304 + AVR32_PARSER_NORMAL, \
26305 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26306 + NULL, -3, \
26307 + { \
26308 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26309 + AVR32_OPERAND_##op2, \
26310 + } \
26311 + }
26312 +#define SYNTAX_NORMAL4(id, mne, opc, op0, op1, op2, op3, arch)\
26313 + { \
26314 + AVR32_SYNTAX_##id, arch, \
26315 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26316 + AVR32_PARSER_NORMAL, \
26317 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26318 + NULL, 4, \
26319 + { \
26320 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26321 + AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \
26322 + } \
26323 + }
26324 +#define SYNTAX_NORMAL5(id, mne, opc, op0, op1, op2, op3, op4, arch) \
26325 + { \
26326 + AVR32_SYNTAX_##id, arch, \
26327 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26328 + AVR32_PARSER_NORMAL, \
26329 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26330 + NULL, 5, \
26331 + { \
26332 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26333 + AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \
26334 + AVR32_OPERAND_##op4, \
26335 + } \
26336 + }
26337 +
26338 +#define SYNTAX_NORMAL_C1(id, mne, opc, nxt, op0, arch) \
26339 + { \
26340 + AVR32_SYNTAX_##id, arch, \
26341 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26342 + AVR32_PARSER_NORMAL, \
26343 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26344 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], 1, \
26345 + { \
26346 + AVR32_OPERAND_##op0, \
26347 + } \
26348 + }
26349 +#define SYNTAX_NORMAL_CM1(id, mne, opc, nxt, op0, arch) \
26350 + { \
26351 + AVR32_SYNTAX_##id, arch, \
26352 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26353 + AVR32_PARSER_NORMAL, \
26354 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26355 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], -1, \
26356 + { \
26357 + AVR32_OPERAND_##op0, \
26358 + } \
26359 + }
26360 +#define SYNTAX_NORMAL_C2(id, mne, opc, nxt, op0, op1, arch) \
26361 + { \
26362 + AVR32_SYNTAX_##id, arch, \
26363 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26364 + AVR32_PARSER_NORMAL, \
26365 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26366 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], 2, \
26367 + { \
26368 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26369 + } \
26370 + }
26371 +#define SYNTAX_NORMAL_CM2(id, mne, opc, nxt, op0, op1, arch) \
26372 + { \
26373 + AVR32_SYNTAX_##id, arch, \
26374 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26375 + AVR32_PARSER_NORMAL, \
26376 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26377 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], -2, \
26378 + { \
26379 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26380 + } \
26381 + }
26382 +#define SYNTAX_NORMAL_C3(id, mne, opc, nxt, op0, op1, op2, arch) \
26383 + { \
26384 + AVR32_SYNTAX_##id, arch, \
26385 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26386 + AVR32_PARSER_NORMAL, \
26387 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26388 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], 3, \
26389 + { \
26390 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26391 + AVR32_OPERAND_##op2, \
26392 + } \
26393 + }
26394 +#define SYNTAX_NORMAL_CM3(id, mne, opc, nxt, op0, op1, op2, arch) \
26395 + { \
26396 + AVR32_SYNTAX_##id, arch, \
26397 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26398 + AVR32_PARSER_NORMAL, \
26399 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26400 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], -3, \
26401 + { \
26402 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26403 + AVR32_OPERAND_##op2, \
26404 + } \
26405 + }
26406 +
26407 +#define SYNTAX_FP(name, nr_ops) \
26408 + { \
26409 + AVR32_SYNTAX_##name##_S, \
26410 + AVR32_FP, NULL, AVR32_PARSER_ALIAS, \
26411 + { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_S] }, \
26412 + NULL, nr_ops, \
26413 + { \
26414 + AVR32_OPERAND_FPREG_S, \
26415 + AVR32_OPERAND_FPREG_S, \
26416 + AVR32_OPERAND_FPREG_S, \
26417 + }, \
26418 + }, \
26419 + { \
26420 + AVR32_SYNTAX_##name##_D, \
26421 + AVR32_FP, NULL, AVR32_PARSER_ALIAS, \
26422 + { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_D] }, \
26423 + NULL, nr_ops, \
26424 + { \
26425 + AVR32_OPERAND_FPREG_D, \
26426 + AVR32_OPERAND_FPREG_D, \
26427 + AVR32_OPERAND_FPREG_D, \
26428 + }, \
26429 + }
26430 +
26431 +const struct avr32_syntax avr32_syntax_table[] =
26432 + {
26433 + SYNTAX_NORMAL1(ABS, ABS, ABS, INTREG, AVR32_V1),
26434 + SYNTAX_NORMAL1(ACALL, ACALL, ACALL, UNSIGNED_CONST_W, AVR32_V1),
26435 + SYNTAX_NORMAL1(ACR, ACR, ACR, INTREG,AVR32_V1),
26436 + SYNTAX_NORMAL3(ADC, ADC, ADC, INTREG, INTREG, INTREG, AVR32_V1),
26437 + SYNTAX_NORMAL_C2(ADD1, ADD, ADD1, ADD2, INTREG, INTREG, AVR32_V1),
26438 + SYNTAX_NORMAL3(ADD2, ADD, ADD2, INTREG, INTREG, INTREG_LSL, AVR32_V1),
26439 + SYNTAX_NORMAL3(ADDABS, ADDABS, ADDABS, INTREG, INTREG, INTREG, AVR32_V1),
26440 + SYNTAX_NORMAL3(ADDHH_W, ADDHH_W, ADDHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26441 + SYNTAX_NORMAL_C2(AND1, AND, AND1, AND2, INTREG, INTREG, AVR32_V1),
26442 + SYNTAX_NORMAL_C3(AND2, AND, AND2, AND3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
26443 + SYNTAX_NORMAL3(AND3, AND, AND3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
26444 + SYNTAX_NORMAL_C2(ANDH, ANDH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
26445 + SYNTAX_NORMAL3(ANDH_COH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
26446 + SYNTAX_NORMAL_C2(ANDL, ANDL, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
26447 + SYNTAX_NORMAL3(ANDL_COH, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
26448 + SYNTAX_NORMAL2(ANDN, ANDN, ANDN, INTREG, INTREG, AVR32_V1),
26449 + SYNTAX_NORMAL_C3(ASR1, ASR, ASR1, ASR3, INTREG, INTREG, INTREG, AVR32_V1),
26450 + SYNTAX_NORMAL_C3(ASR3, ASR, ASR3, ASR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26451 + SYNTAX_NORMAL2(ASR2, ASR, ASR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26452 + SYNTAX_NORMAL4(BFEXTS, BFEXTS, BFEXTS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
26453 + SYNTAX_NORMAL4(BFEXTU, BFEXTU, BFEXTU, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
26454 + SYNTAX_NORMAL4(BFINS, BFINS, BFINS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
26455 + SYNTAX_NORMAL2(BLD, BLD, BLD, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26456 + SYNTAX_NORMAL_C1(BREQ1, BREQ, BREQ1, BREQ2, JMPLABEL, AVR32_V1),
26457 + SYNTAX_NORMAL_C1(BRNE1, BRNE, BRNE1, BRNE2, JMPLABEL, AVR32_V1),
26458 + SYNTAX_NORMAL_C1(BRCC1, BRCC, BRCC1, BRCC2, JMPLABEL, AVR32_V1),
26459 + SYNTAX_NORMAL_C1(BRCS1, BRCS, BRCS1, BRCS2, JMPLABEL, AVR32_V1),
26460 + SYNTAX_NORMAL_C1(BRGE1, BRGE, BRGE1, BRGE2, JMPLABEL, AVR32_V1),
26461 + SYNTAX_NORMAL_C1(BRLT1, BRLT, BRLT1, BRLT2, JMPLABEL, AVR32_V1),
26462 + SYNTAX_NORMAL_C1(BRMI1, BRMI, BRMI1, BRMI2, JMPLABEL, AVR32_V1),
26463 + SYNTAX_NORMAL_C1(BRPL1, BRPL, BRPL1, BRPL2, JMPLABEL, AVR32_V1),
26464 + SYNTAX_NORMAL_C1(BRHS1, BRHS, BRCC1, BRHS2, JMPLABEL, AVR32_V1),
26465 + SYNTAX_NORMAL_C1(BRLO1, BRLO, BRCS1, BRLO2, JMPLABEL, AVR32_V1),
26466 + SYNTAX_NORMAL1(BREQ2, BREQ, BREQ2, JMPLABEL, AVR32_V1),
26467 + SYNTAX_NORMAL1(BRNE2, BRNE, BRNE2, JMPLABEL, AVR32_V1),
26468 + SYNTAX_NORMAL1(BRCC2, BRCC, BRCC2, JMPLABEL, AVR32_V1),
26469 + SYNTAX_NORMAL1(BRCS2, BRCS, BRCS2, JMPLABEL, AVR32_V1),
26470 + SYNTAX_NORMAL1(BRGE2, BRGE, BRGE2, JMPLABEL, AVR32_V1),
26471 + SYNTAX_NORMAL1(BRLT2, BRLT, BRLT2, JMPLABEL, AVR32_V1),
26472 + SYNTAX_NORMAL1(BRMI2, BRMI, BRMI2, JMPLABEL, AVR32_V1),
26473 + SYNTAX_NORMAL1(BRPL2, BRPL, BRPL2, JMPLABEL, AVR32_V1),
26474 + SYNTAX_NORMAL1(BRLS, BRLS, BRLS, JMPLABEL, AVR32_V1),
26475 + SYNTAX_NORMAL1(BRGT, BRGT, BRGT, JMPLABEL, AVR32_V1),
26476 + SYNTAX_NORMAL1(BRLE, BRLE, BRLE, JMPLABEL, AVR32_V1),
26477 + SYNTAX_NORMAL1(BRHI, BRHI, BRHI, JMPLABEL, AVR32_V1),
26478 + SYNTAX_NORMAL1(BRVS, BRVS, BRVS, JMPLABEL, AVR32_V1),
26479 + SYNTAX_NORMAL1(BRVC, BRVC, BRVC, JMPLABEL, AVR32_V1),
26480 + SYNTAX_NORMAL1(BRQS, BRQS, BRQS, JMPLABEL, AVR32_V1),
26481 + SYNTAX_NORMAL1(BRAL, BRAL, BRAL, JMPLABEL, AVR32_V1),
26482 + SYNTAX_NORMAL1(BRHS2, BRHS, BRCC2, JMPLABEL, AVR32_V1),
26483 + SYNTAX_NORMAL1(BRLO2, BRLO, BRCS2, JMPLABEL, AVR32_V1),
26484 + SYNTAX_NORMAL0(BREAKPOINT, BREAKPOINT, BREAKPOINT, AVR32_V1),
26485 + SYNTAX_NORMAL1(BREV, BREV, BREV, INTREG, AVR32_V1),
26486 + SYNTAX_NORMAL2(BST, BST, BST, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26487 + SYNTAX_NORMAL2(CACHE, CACHE, CACHE, INTREG_SDISP, UNSIGNED_NUMBER, AVR32_V1),
26488 + SYNTAX_NORMAL1(CASTS_B, CASTS_B, CASTS_B, INTREG, AVR32_V1),
26489 + SYNTAX_NORMAL1(CASTS_H, CASTS_H, CASTS_H, INTREG, AVR32_V1),
26490 + SYNTAX_NORMAL1(CASTU_B, CASTU_B, CASTU_B, INTREG, AVR32_V1),
26491 + SYNTAX_NORMAL1(CASTU_H, CASTU_H, CASTU_H, INTREG, AVR32_V1),
26492 + SYNTAX_NORMAL2(CBR, CBR, CBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26493 + SYNTAX_NORMAL2(CLZ, CLZ, CLZ, INTREG, INTREG, AVR32_V1),
26494 + SYNTAX_NORMAL1(COM, COM, COM, INTREG, AVR32_V1),
26495 + SYNTAX_NORMAL5(COP, COP, COP, CPNO, CPREG, CPREG, CPREG, UNSIGNED_NUMBER, AVR32_V1),
26496 + SYNTAX_NORMAL2(CP_B, CP_B, CP_B, INTREG, INTREG, AVR32_V1),
26497 + SYNTAX_NORMAL2(CP_H, CP_H, CP_H, INTREG, INTREG, AVR32_V1),
26498 + SYNTAX_NORMAL_C2(CP_W1, CP_W, CP_W1, CP_W2, INTREG, INTREG, AVR32_V1),
26499 + SYNTAX_NORMAL_C2(CP_W2, CP_W, CP_W2, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
26500 + SYNTAX_NORMAL2(CP_W3, CP_W, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
26501 + SYNTAX_NORMAL_C2(CPC1, CPC, CPC1, CPC2, INTREG, INTREG, AVR32_V1),
26502 + SYNTAX_NORMAL1(CPC2, CPC, CPC2, INTREG, AVR32_V1),
26503 + SYNTAX_NORMAL1(CSRF, CSRF, CSRF, UNSIGNED_NUMBER, AVR32_V1),
26504 + SYNTAX_NORMAL1(CSRFCZ, CSRFCZ, CSRFCZ, UNSIGNED_NUMBER, AVR32_V1),
26505 + SYNTAX_NORMAL3(DIVS, DIVS, DIVS, INTREG, INTREG, INTREG, AVR32_V1),
26506 + SYNTAX_NORMAL3(DIVU, DIVU, DIVU, INTREG, INTREG, INTREG, AVR32_V1),
26507 + SYNTAX_NORMAL_C2(EOR1, EOR, EOR1, EOR2, INTREG, INTREG, AVR32_V1),
26508 + SYNTAX_NORMAL_C3(EOR2, EOR, EOR2, EOR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
26509 + SYNTAX_NORMAL3(EOR3, EOR, EOR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
26510 + SYNTAX_NORMAL2(EORL, EORL, EORL, INTREG, UNSIGNED_CONST, AVR32_V1),
26511 + SYNTAX_NORMAL2(EORH, EORH, EORH, INTREG, UNSIGNED_CONST, AVR32_V1),
26512 + SYNTAX_NORMAL0(FRS, FRS, FRS, AVR32_V1),
26513 + SYNTAX_NORMAL1(ICALL, ICALL, ICALL, INTREG, AVR32_V1),
26514 + SYNTAX_NORMAL1(INCJOSP, INCJOSP, INCJOSP, JOSPINC, AVR32_V1),
26515 + SYNTAX_NORMAL_C2(LD_D1, LD_D, LD_D1, LD_D2, DWREG, INTREG_POSTINC, AVR32_V1),
26516 + SYNTAX_NORMAL_C2(LD_D2, LD_D, LD_D2, LD_D3, DWREG, INTREG_PREDEC, AVR32_V1),
26517 + SYNTAX_NORMAL_C2(LD_D3, LD_D, LD_D3, LD_D5, DWREG, INTREG, AVR32_V1),
26518 + SYNTAX_NORMAL_C2(LD_D5, LD_D, LD_D5, LD_D4, DWREG, INTREG_INDEX, AVR32_V1),
26519 + SYNTAX_NORMAL2(LD_D4, LD_D, LD_D4, DWREG, INTREG_SDISP, AVR32_V1),
26520 + SYNTAX_NORMAL_C2(LD_SB2, LD_SB, LD_SB2, LD_SB1, INTREG, INTREG_INDEX, AVR32_V1),
26521 + SYNTAX_NORMAL2(LD_SB1, LD_SB, LD_SB1, INTREG, INTREG_SDISP, AVR32_V1),
26522 + SYNTAX_NORMAL_C2(LD_UB1, LD_UB, LD_UB1, LD_UB2, INTREG, INTREG_POSTINC, AVR32_V1),
26523 + SYNTAX_NORMAL_C2(LD_UB2, LD_UB, LD_UB2, LD_UB5, INTREG, INTREG_PREDEC, AVR32_V1),
26524 + SYNTAX_NORMAL_C2(LD_UB5, LD_UB, LD_UB5, LD_UB3, INTREG, INTREG_INDEX, AVR32_V1),
26525 + SYNTAX_NORMAL_C2(LD_UB3, LD_UB, LD_UB3, LD_UB4, INTREG, INTREG_UDISP, AVR32_V1),
26526 + SYNTAX_NORMAL2(LD_UB4, LD_UB, LD_UB4, INTREG, INTREG_SDISP, AVR32_V1),
26527 + SYNTAX_NORMAL_C2(LD_SH1, LD_SH, LD_SH1, LD_SH2, INTREG, INTREG_POSTINC, AVR32_V1),
26528 + SYNTAX_NORMAL_C2(LD_SH2, LD_SH, LD_SH2, LD_SH5, INTREG, INTREG_PREDEC, AVR32_V1),
26529 + SYNTAX_NORMAL_C2(LD_SH5, LD_SH, LD_SH5, LD_SH3, INTREG, INTREG_INDEX, AVR32_V1),
26530 + SYNTAX_NORMAL_C2(LD_SH3, LD_SH, LD_SH3, LD_SH4, INTREG, INTREG_UDISP_H, AVR32_V1),
26531 + SYNTAX_NORMAL2(LD_SH4, LD_SH, LD_SH4, INTREG, INTREG_SDISP, AVR32_V1),
26532 + SYNTAX_NORMAL_C2(LD_UH1, LD_UH, LD_UH1, LD_UH2, INTREG, INTREG_POSTINC, AVR32_V1),
26533 + SYNTAX_NORMAL_C2(LD_UH2, LD_UH, LD_UH2, LD_UH5, INTREG, INTREG_PREDEC, AVR32_V1),
26534 + SYNTAX_NORMAL_C2(LD_UH5, LD_UH, LD_UH5, LD_UH3, INTREG, INTREG_INDEX, AVR32_V1),
26535 + SYNTAX_NORMAL_C2(LD_UH3, LD_UH, LD_UH3, LD_UH4, INTREG, INTREG_UDISP_H, AVR32_V1),
26536 + SYNTAX_NORMAL2(LD_UH4, LD_UH, LD_UH4, INTREG, INTREG_SDISP, AVR32_V1),
26537 + SYNTAX_NORMAL_C2(LD_W1, LD_W, LD_W1, LD_W2, INTREG, INTREG_POSTINC, AVR32_V1),
26538 + SYNTAX_NORMAL_C2(LD_W2, LD_W, LD_W2, LD_W5, INTREG, INTREG_PREDEC, AVR32_V1),
26539 + SYNTAX_NORMAL_C2(LD_W5, LD_W, LD_W5, LD_W6, INTREG, INTREG_INDEX, AVR32_V1),
26540 + SYNTAX_NORMAL_C2(LD_W6, LD_W, LD_W6, LD_W3, INTREG, INTREG_XINDEX, AVR32_V1),
26541 + SYNTAX_NORMAL_C2(LD_W3, LD_W, LD_W3, LD_W4, INTREG, INTREG_UDISP_W, AVR32_V1),
26542 + SYNTAX_NORMAL2(LD_W4, LD_W, LD_W4, INTREG, INTREG_SDISP, AVR32_V1),
26543 + SYNTAX_NORMAL3(LDC_D1, LDC_D, LDC_D1, CPNO, CPREG_D, INTREG_UDISP_W, AVR32_V1),
26544 + SYNTAX_NORMAL_C3(LDC_D2, LDC_D, LDC_D2, LDC_D1, CPNO, CPREG_D, INTREG_PREDEC, AVR32_V1),
26545 + SYNTAX_NORMAL_C3(LDC_D3, LDC_D, LDC_D3, LDC_D2, CPNO, CPREG_D, INTREG_INDEX, AVR32_V1),
26546 + SYNTAX_NORMAL3(LDC_W1, LDC_W, LDC_W1, CPNO, CPREG, INTREG_UDISP_W, AVR32_V1),
26547 + SYNTAX_NORMAL_C3(LDC_W2, LDC_W, LDC_W2, LDC_W1, CPNO, CPREG, INTREG_PREDEC, AVR32_V1),
26548 + SYNTAX_NORMAL_C3(LDC_W3, LDC_W, LDC_W3, LDC_W2, CPNO, CPREG, INTREG_INDEX, AVR32_V1),
26549 + SYNTAX_NORMAL2(LDC0_D, LDC0_D, LDC0_D, CPREG_D, INTREG_UDISP_W, AVR32_V1),
26550 + SYNTAX_NORMAL2(LDC0_W, LDC0_W, LDC0_W, CPREG, INTREG_UDISP_W, AVR32_V1),
26551 + SYNTAX_NORMAL_CM3(LDCM_D, LDCM_D, LDCM_D, LDCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
26552 + SYNTAX_NORMALM3(LDCM_D_PU, LDCM_D, LDCM_D_PU, CPNO, INTREG_POSTINC, REGLIST_CPD8, AVR32_V1),
26553 + SYNTAX_NORMAL_CM3(LDCM_W, LDCM_W, LDCM_W, LDCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
26554 + SYNTAX_NORMALM3(LDCM_W_PU, LDCM_W, LDCM_W_PU, CPNO, INTREG_POSTINC, REGLIST_CP8, AVR32_V1),
26555 + SYNTAX_NORMAL2(LDDPC, LDDPC, LDDPC, INTREG, PC_UDISP_W, AVR32_V1),
26556 + SYNTAX_NORMAL2(LDDPC_EXT, LDDPC, LDDPC_EXT, INTREG, SIGNED_CONST, AVR32_V1),
26557 + SYNTAX_NORMAL2(LDDSP, LDDSP, LDDSP, INTREG, SP_UDISP_W, AVR32_V1),
26558 + SYNTAX_NORMAL2(LDINS_B, LDINS_B, LDINS_B, INTREG_BSEL, INTREG_SDISP, AVR32_V1),
26559 + SYNTAX_NORMAL2(LDINS_H, LDINS_H, LDINS_H, INTREG_HSEL, INTREG_SDISP_H, AVR32_V1),
26560 + SYNTAX_NORMALM1(LDM, LDM, LDM, REGLIST_LDM, AVR32_V1),
26561 + SYNTAX_NORMAL_CM2(LDMTS, LDMTS, LDMTS, LDMTS_PU, INTREG, REGLIST16, AVR32_V1),
26562 + SYNTAX_NORMALM2(LDMTS_PU, LDMTS, LDMTS_PU, INTREG_POSTINC, REGLIST16, AVR32_V1),
26563 + SYNTAX_NORMAL2(LDSWP_SH, LDSWP_SH, LDSWP_SH, INTREG, INTREG_SDISP_H, AVR32_V1),
26564 + SYNTAX_NORMAL2(LDSWP_UH, LDSWP_UH, LDSWP_UH, INTREG, INTREG_SDISP_H, AVR32_V1),
26565 + SYNTAX_NORMAL2(LDSWP_W, LDSWP_W, LDSWP_W, INTREG, INTREG_SDISP_W, AVR32_V1),
26566 + SYNTAX_NORMAL_C3(LSL1, LSL, LSL1, LSL3, INTREG, INTREG, INTREG, AVR32_V1),
26567 + SYNTAX_NORMAL_C3(LSL3, LSL, LSL3, LSL2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26568 + SYNTAX_NORMAL2(LSL2, LSL, LSL2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26569 + SYNTAX_NORMAL_C3(LSR1, LSR, LSR1, LSR3, INTREG, INTREG, INTREG, AVR32_V1),
26570 + SYNTAX_NORMAL_C3(LSR3, LSR, LSR3, LSR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26571 + SYNTAX_NORMAL2(LSR2, LSR, LSR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26572 + SYNTAX_NORMAL3(MAC, MAC, MAC, INTREG, INTREG, INTREG, AVR32_V1),
26573 + SYNTAX_NORMAL3(MACHH_D, MACHH_D, MACHH_D, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26574 + SYNTAX_NORMAL3(MACHH_W, MACHH_W, MACHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26575 + SYNTAX_NORMAL3(MACS_D, MACS_D, MACS_D, INTREG, INTREG, INTREG, AVR32_V1),
26576 + SYNTAX_NORMAL3(MACSATHH_W, MACSATHH_W, MACSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26577 + SYNTAX_NORMAL3(MACUD, MACU_D, MACUD, INTREG, INTREG, INTREG, AVR32_V1),
26578 + SYNTAX_NORMAL3(MACWH_D, MACWH_D, MACWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26579 + SYNTAX_NORMAL3(MAX, MAX, MAX, INTREG, INTREG, INTREG, AVR32_V1),
26580 + SYNTAX_NORMAL1(MCALL, MCALL, MCALL, MCALL, AVR32_V1),
26581 + SYNTAX_NORMAL2(MFDR, MFDR, MFDR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
26582 + SYNTAX_NORMAL2(MFSR, MFSR, MFSR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
26583 + SYNTAX_NORMAL3(MIN, MIN, MIN, INTREG, INTREG, INTREG, AVR32_V1),
26584 + SYNTAX_NORMAL_C2(MOV3, MOV, MOV3, MOV1, INTREG, INTREG, AVR32_V1),
26585 + SYNTAX_NORMAL_C2(MOV1, MOV, MOV1, MOV2, INTREG, SIGNED_CONST, AVR32_V1),
26586 + SYNTAX_NORMAL2(MOV2, MOV, MOV2,INTREG, SIGNED_CONST, AVR32_V1),
26587 + SYNTAX_NORMAL_C2(MOVEQ1, MOVEQ, MOVEQ1, MOVEQ2, INTREG, INTREG, AVR32_V1),
26588 + SYNTAX_NORMAL_C2(MOVNE1, MOVNE, MOVNE1, MOVNE2, INTREG, INTREG, AVR32_V1),
26589 + SYNTAX_NORMAL_C2(MOVCC1, MOVCC, MOVCC1, MOVCC2, INTREG, INTREG, AVR32_V1),
26590 + SYNTAX_NORMAL_C2(MOVCS1, MOVCS, MOVCS1, MOVCS2, INTREG, INTREG, AVR32_V1),
26591 + SYNTAX_NORMAL_C2(MOVGE1, MOVGE, MOVGE1, MOVGE2, INTREG, INTREG, AVR32_V1),
26592 + SYNTAX_NORMAL_C2(MOVLT1, MOVLT, MOVLT1, MOVLT2, INTREG, INTREG, AVR32_V1),
26593 + SYNTAX_NORMAL_C2(MOVMI1, MOVMI, MOVMI1, MOVMI2, INTREG, INTREG, AVR32_V1),
26594 + SYNTAX_NORMAL_C2(MOVPL1, MOVPL, MOVPL1, MOVPL2, INTREG, INTREG, AVR32_V1),
26595 + SYNTAX_NORMAL_C2(MOVLS1, MOVLS, MOVLS1, MOVLS2, INTREG, INTREG, AVR32_V1),
26596 + SYNTAX_NORMAL_C2(MOVGT1, MOVGT, MOVGT1, MOVGT2, INTREG, INTREG, AVR32_V1),
26597 + SYNTAX_NORMAL_C2(MOVLE1, MOVLE, MOVLE1, MOVLE2, INTREG, INTREG, AVR32_V1),
26598 + SYNTAX_NORMAL_C2(MOVHI1, MOVHI, MOVHI1, MOVHI2, INTREG, INTREG, AVR32_V1),
26599 + SYNTAX_NORMAL_C2(MOVVS1, MOVVS, MOVVS1, MOVVS2, INTREG, INTREG, AVR32_V1),
26600 + SYNTAX_NORMAL_C2(MOVVC1, MOVVC, MOVVC1, MOVVC2, INTREG, INTREG, AVR32_V1),
26601 + SYNTAX_NORMAL_C2(MOVQS1, MOVQS, MOVQS1, MOVQS2, INTREG, INTREG, AVR32_V1),
26602 + SYNTAX_NORMAL_C2(MOVAL1, MOVAL, MOVAL1, MOVAL2, INTREG, INTREG, AVR32_V1),
26603 + SYNTAX_NORMAL_C2(MOVHS1, MOVHS, MOVCC1, MOVHS2, INTREG, INTREG, AVR32_V1),
26604 + SYNTAX_NORMAL_C2(MOVLO1, MOVLO, MOVCS1, MOVLO2, INTREG, INTREG, AVR32_V1),
26605 + SYNTAX_NORMAL2(MOVEQ2, MOVEQ, MOVEQ2, INTREG, SIGNED_CONST, AVR32_V1),
26606 + SYNTAX_NORMAL2(MOVNE2, MOVNE, MOVNE2, INTREG, SIGNED_CONST, AVR32_V1),
26607 + SYNTAX_NORMAL2(MOVCC2, MOVCC, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
26608 + SYNTAX_NORMAL2(MOVCS2, MOVCS, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
26609 + SYNTAX_NORMAL2(MOVGE2, MOVGE, MOVGE2, INTREG, SIGNED_CONST, AVR32_V1),
26610 + SYNTAX_NORMAL2(MOVLT2, MOVLT, MOVLT2, INTREG, SIGNED_CONST, AVR32_V1),
26611 + SYNTAX_NORMAL2(MOVMI2, MOVMI, MOVMI2, INTREG, SIGNED_CONST, AVR32_V1),
26612 + SYNTAX_NORMAL2(MOVPL2, MOVPL, MOVPL2, INTREG, SIGNED_CONST, AVR32_V1),
26613 + SYNTAX_NORMAL2(MOVLS2, MOVLS, MOVLS2, INTREG, SIGNED_CONST, AVR32_V1),
26614 + SYNTAX_NORMAL2(MOVGT2, MOVGT, MOVGT2, INTREG, SIGNED_CONST, AVR32_V1),
26615 + SYNTAX_NORMAL2(MOVLE2, MOVLE, MOVLE2, INTREG, SIGNED_CONST, AVR32_V1),
26616 + SYNTAX_NORMAL2(MOVHI2, MOVHI, MOVHI2, INTREG, SIGNED_CONST, AVR32_V1),
26617 + SYNTAX_NORMAL2(MOVVS2, MOVVS, MOVVS2, INTREG, SIGNED_CONST, AVR32_V1),
26618 + SYNTAX_NORMAL2(MOVVC2, MOVVC, MOVVC2, INTREG, SIGNED_CONST, AVR32_V1),
26619 + SYNTAX_NORMAL2(MOVQS2, MOVQS, MOVQS2, INTREG, SIGNED_CONST, AVR32_V1),
26620 + SYNTAX_NORMAL2(MOVAL2, MOVAL, MOVAL2, INTREG, SIGNED_CONST, AVR32_V1),
26621 + SYNTAX_NORMAL2(MOVHS2, MOVHS, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
26622 + SYNTAX_NORMAL2(MOVLO2, MOVLO, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
26623 + SYNTAX_NORMAL2(MTDR, MTDR, MTDR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
26624 + SYNTAX_NORMAL2(MTSR, MTSR, MTSR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
26625 + SYNTAX_NORMAL_C2(MUL1, MUL, MUL1, MUL2, INTREG, INTREG, AVR32_V1),
26626 + SYNTAX_NORMAL_C3(MUL2, MUL, MUL2, MUL3, INTREG, INTREG, INTREG, AVR32_V1),
26627 + SYNTAX_NORMAL3(MUL3, MUL, MUL3, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
26628 + SYNTAX_NORMAL3(MULHH_W, MULHH_W, MULHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26629 + SYNTAX_NORMAL3(MULNHH_W, MULNHH_W, MULNHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26630 + SYNTAX_NORMAL3(MULNWH_D, MULNWH_D, MULNWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26631 + SYNTAX_NORMAL3(MULSD, MULS_D, MULSD, INTREG, INTREG, INTREG, AVR32_V1),
26632 + SYNTAX_NORMAL3(MULSATHH_H, MULSATHH_H, MULSATHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26633 + SYNTAX_NORMAL3(MULSATHH_W, MULSATHH_W, MULSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26634 + SYNTAX_NORMAL3(MULSATRNDHH_H, MULSATRNDHH_H, MULSATRNDHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26635 + SYNTAX_NORMAL3(MULSATRNDWH_W, MULSATRNDWH_W, MULSATRNDWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26636 + SYNTAX_NORMAL3(MULSATWH_W, MULSATWH_W, MULSATWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26637 + SYNTAX_NORMAL3(MULU_D, MULU_D, MULU_D, INTREG, INTREG, INTREG, AVR32_V1),
26638 + SYNTAX_NORMAL3(MULWH_D, MULWH_D, MULWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26639 + SYNTAX_NORMAL1(MUSFR, MUSFR, MUSFR, INTREG, AVR32_V1),
26640 + SYNTAX_NORMAL1(MUSTR, MUSTR, MUSTR, INTREG, AVR32_V1),
26641 + SYNTAX_NORMAL3(MVCR_D, MVCR_D, MVCR_D, CPNO, DWREG, CPREG_D, AVR32_V1),
26642 + SYNTAX_NORMAL3(MVCR_W, MVCR_W, MVCR_W, CPNO, INTREG, CPREG, AVR32_V1),
26643 + SYNTAX_NORMAL3(MVRC_D, MVRC_D, MVRC_D, CPNO, CPREG_D, DWREG, AVR32_V1),
26644 + SYNTAX_NORMAL3(MVRC_W, MVRC_W, MVRC_W, CPNO, CPREG, INTREG, AVR32_V1),
26645 + SYNTAX_NORMAL1(NEG, NEG, NEG, INTREG, AVR32_V1),
26646 + SYNTAX_NORMAL0(NOP, NOP, NOP, AVR32_V1),
26647 + SYNTAX_NORMAL_C2(OR1, OR, OR1, OR2, INTREG, INTREG, AVR32_V1),
26648 + SYNTAX_NORMAL_C3(OR2, OR, OR2, OR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
26649 + SYNTAX_NORMAL3(OR3, OR, OR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
26650 + SYNTAX_NORMAL2(ORH, ORH, ORH, INTREG, UNSIGNED_CONST, AVR32_V1),
26651 + SYNTAX_NORMAL2(ORL, ORL, ORL, INTREG, UNSIGNED_CONST, AVR32_V1),
26652 + SYNTAX_NORMAL2(PABS_SB, PABS_SB, PABS_SB, INTREG, INTREG, AVR32_SIMD),
26653 + SYNTAX_NORMAL2(PABS_SH, PABS_SH, PABS_SH, INTREG, INTREG, AVR32_SIMD),
26654 + SYNTAX_NORMAL3(PACKSH_SB, PACKSH_SB, PACKSH_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
26655 + SYNTAX_NORMAL3(PACKSH_UB, PACKSH_UB, PACKSH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26656 + SYNTAX_NORMAL3(PACKW_SH, PACKW_SH, PACKW_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26657 + SYNTAX_NORMAL3(PADD_B, PADD_B, PADD_B, INTREG, INTREG, INTREG, AVR32_SIMD),
26658 + SYNTAX_NORMAL3(PADD_H, PADD_H, PADD_H, INTREG, INTREG, INTREG, AVR32_SIMD),
26659 + SYNTAX_NORMAL3(PADDH_SH, PADDH_SH, PADDH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26660 + SYNTAX_NORMAL3(PADDH_UB, PADDH_UB, PADDH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26661 + SYNTAX_NORMAL3(PADDS_SB, PADDS_SB, PADDS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
26662 + SYNTAX_NORMAL3(PADDS_SH, PADDS_SH, PADDS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26663 + SYNTAX_NORMAL3(PADDS_UB, PADDS_UB, PADDS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26664 + SYNTAX_NORMAL3(PADDS_UH, PADDS_UH, PADDS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
26665 + SYNTAX_NORMAL3(PADDSUB_H, PADDSUB_H, PADDSUB_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26666 + SYNTAX_NORMAL3(PADDSUBH_SH, PADDSUBH_SH, PADDSUBH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26667 + SYNTAX_NORMAL3(PADDSUBS_SH, PADDSUBS_SH, PADDSUBS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26668 + SYNTAX_NORMAL3(PADDSUBS_UH, PADDSUBS_UH, PADDSUBS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26669 + SYNTAX_NORMAL3(PADDX_H, PADDX_H, PADDX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
26670 + SYNTAX_NORMAL3(PADDXH_SH, PADDXH_SH, PADDXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26671 + SYNTAX_NORMAL3(PADDXS_SH, PADDXS_SH, PADDXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26672 + SYNTAX_NORMAL3(PADDXS_UH, PADDXS_UH, PADDXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
26673 + SYNTAX_NORMAL3(PASR_B, PASR_B, PASR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26674 + SYNTAX_NORMAL3(PASR_H, PASR_H, PASR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26675 + SYNTAX_NORMAL3(PAVG_SH, PAVG_SH, PAVG_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26676 + SYNTAX_NORMAL3(PAVG_UB, PAVG_UB, PAVG_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26677 + SYNTAX_NORMAL3(PLSL_B, PLSL_B, PLSL_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26678 + SYNTAX_NORMAL3(PLSL_H, PLSL_H, PLSL_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26679 + SYNTAX_NORMAL3(PLSR_B, PLSR_B, PLSR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26680 + SYNTAX_NORMAL3(PLSR_H, PLSR_H, PLSR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26681 + SYNTAX_NORMAL3(PMAX_SH, PMAX_SH, PMAX_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26682 + SYNTAX_NORMAL3(PMAX_UB, PMAX_UB, PMAX_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26683 + SYNTAX_NORMAL3(PMIN_SH, PMIN_SH, PMIN_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26684 + SYNTAX_NORMAL3(PMIN_UB, PMIN_UB, PMIN_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26685 + SYNTAX_NORMAL0(POPJC, POPJC, POPJC, AVR32_V1),
26686 + SYNTAX_NORMAL_CM1(POPM, POPM, POPM, POPM_E, REGLIST9, AVR32_V1),
26687 + SYNTAX_NORMALM1(POPM_E, POPM, POPM_E, REGLIST16, AVR32_V1),
26688 + SYNTAX_NORMAL1(PREF, PREF, PREF, INTREG_SDISP, AVR32_V1),
26689 + SYNTAX_NORMAL3(PSAD, PSAD, PSAD, INTREG, INTREG, INTREG, AVR32_SIMD),
26690 + SYNTAX_NORMAL3(PSUB_B, PSUB_B, PSUB_B, INTREG, INTREG, INTREG, AVR32_SIMD),
26691 + SYNTAX_NORMAL3(PSUB_H, PSUB_H, PSUB_H, INTREG, INTREG, INTREG, AVR32_SIMD),
26692 + SYNTAX_NORMAL3(PSUBADD_H, PSUBADD_H, PSUBADD_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26693 + SYNTAX_NORMAL3(PSUBADDH_SH, PSUBADDH_SH, PSUBADDH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26694 + SYNTAX_NORMAL3(PSUBADDS_SH, PSUBADDS_SH, PSUBADDS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26695 + SYNTAX_NORMAL3(PSUBADDS_UH, PSUBADDS_UH, PSUBADDS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26696 + SYNTAX_NORMAL3(PSUBH_SH, PSUBH_SH, PSUBH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26697 + SYNTAX_NORMAL3(PSUBH_UB, PSUBH_UB, PSUBH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26698 + SYNTAX_NORMAL3(PSUBS_SB, PSUBS_SB, PSUBS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
26699 + SYNTAX_NORMAL3(PSUBS_SH, PSUBS_SH, PSUBS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26700 + SYNTAX_NORMAL3(PSUBS_UB, PSUBS_UB, PSUBS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26701 + SYNTAX_NORMAL3(PSUBS_UH, PSUBS_UH, PSUBS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
26702 + SYNTAX_NORMAL3(PSUBX_H, PSUBX_H, PSUBX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
26703 + SYNTAX_NORMAL3(PSUBXH_SH, PSUBXH_SH, PSUBXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26704 + SYNTAX_NORMAL3(PSUBXS_SH, PSUBXS_SH, PSUBXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26705 + SYNTAX_NORMAL3(PSUBXS_UH, PSUBXS_UH, PSUBXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
26706 + SYNTAX_NORMAL2(PUNPCKSB_H, PUNPCKSB_H, PUNPCKSB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
26707 + SYNTAX_NORMAL2(PUNPCKUB_H, PUNPCKUB_H, PUNPCKUB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
26708 + SYNTAX_NORMAL0(PUSHJC, PUSHJC, PUSHJC, AVR32_V1),
26709 + SYNTAX_NORMAL_CM1(PUSHM, PUSHM, PUSHM, PUSHM_E, REGLIST8, AVR32_V1),
26710 + SYNTAX_NORMALM1(PUSHM_E, PUSHM, PUSHM_E, REGLIST16, AVR32_V1),
26711 + SYNTAX_NORMAL_C1(RCALL1, RCALL, RCALL1, RCALL2, JMPLABEL, AVR32_V1),
26712 + SYNTAX_NORMAL1(RCALL2, RCALL, RCALL2, JMPLABEL, AVR32_V1),
26713 + SYNTAX_NORMAL1(RETEQ, RETEQ, RETEQ, RETVAL, AVR32_V1),
26714 + SYNTAX_NORMAL1(RETNE, RETNE, RETNE, RETVAL, AVR32_V1),
26715 + SYNTAX_NORMAL1(RETCC, RETCC, RETCC, RETVAL, AVR32_V1),
26716 + SYNTAX_NORMAL1(RETCS, RETCS, RETCS, RETVAL, AVR32_V1),
26717 + SYNTAX_NORMAL1(RETGE, RETGE, RETGE, RETVAL, AVR32_V1),
26718 + SYNTAX_NORMAL1(RETLT, RETLT, RETLT, RETVAL, AVR32_V1),
26719 + SYNTAX_NORMAL1(RETMI, RETMI, RETMI, RETVAL, AVR32_V1),
26720 + SYNTAX_NORMAL1(RETPL, RETPL, RETPL, RETVAL, AVR32_V1),
26721 + SYNTAX_NORMAL1(RETLS, RETLS, RETLS, RETVAL, AVR32_V1),
26722 + SYNTAX_NORMAL1(RETGT, RETGT, RETGT, RETVAL, AVR32_V1),
26723 + SYNTAX_NORMAL1(RETLE, RETLE, RETLE, RETVAL, AVR32_V1),
26724 + SYNTAX_NORMAL1(RETHI, RETHI, RETHI, RETVAL, AVR32_V1),
26725 + SYNTAX_NORMAL1(RETVS, RETVS, RETVS, RETVAL, AVR32_V1),
26726 + SYNTAX_NORMAL1(RETVC, RETVC, RETVC, RETVAL, AVR32_V1),
26727 + SYNTAX_NORMAL1(RETQS, RETQS, RETQS, RETVAL, AVR32_V1),
26728 + SYNTAX_NORMAL1(RETAL, RETAL, RETAL, RETVAL, AVR32_V1),
26729 + SYNTAX_NORMAL1(RETHS, RETHS, RETCC, RETVAL, AVR32_V1),
26730 + SYNTAX_NORMAL1(RETLO, RETLO, RETCS, RETVAL, AVR32_V1),
26731 + SYNTAX_NORMAL0(RETD, RETD, RETD, AVR32_V1),
26732 + SYNTAX_NORMAL0(RETE, RETE, RETE, AVR32_V1),
26733 + SYNTAX_NORMAL0(RETJ, RETJ, RETJ, AVR32_V1),
26734 + SYNTAX_NORMAL0(RETS, RETS, RETS, AVR32_V1),
26735 + SYNTAX_NORMAL1(RJMP, RJMP, RJMP, JMPLABEL, AVR32_V1),
26736 + SYNTAX_NORMAL1(ROL, ROL, ROL, INTREG, AVR32_V1),
26737 + SYNTAX_NORMAL1(ROR, ROR, ROR, INTREG, AVR32_V1),
26738 + SYNTAX_NORMAL_C2(RSUB1, RSUB, RSUB1, RSUB2, INTREG, INTREG, AVR32_V1),
26739 + SYNTAX_NORMAL3(RSUB2, RSUB, RSUB2, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
26740 + SYNTAX_NORMAL3(SATADD_H, SATADD_H, SATADD_H, INTREG, INTREG, INTREG, AVR32_DSP),
26741 + SYNTAX_NORMAL3(SATADD_W, SATADD_W, SATADD_W, INTREG, INTREG, INTREG, AVR32_DSP),
26742 + SYNTAX_NORMAL2(SATRNDS, SATRNDS, SATRNDS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
26743 + SYNTAX_NORMAL2(SATRNDU, SATRNDU, SATRNDU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
26744 + SYNTAX_NORMAL2(SATS, SATS, SATS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
26745 + SYNTAX_NORMAL3(SATSUB_H, SATSUB_H, SATSUB_H, INTREG, INTREG, INTREG, AVR32_DSP),
26746 + SYNTAX_NORMAL_C3(SATSUB_W1, SATSUB_W, SATSUB_W1, SATSUB_W2, INTREG, INTREG, INTREG, AVR32_DSP),
26747 + SYNTAX_NORMAL3(SATSUB_W2, SATSUB_W, SATSUB_W2, INTREG, INTREG, SIGNED_CONST, AVR32_DSP),
26748 + SYNTAX_NORMAL2(SATU, SATU, SATU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_V1),
26749 + SYNTAX_NORMAL3(SBC, SBC, SBC, INTREG, INTREG, INTREG, AVR32_V1),
26750 + SYNTAX_NORMAL2(SBR, SBR, SBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26751 + SYNTAX_NORMAL0(SCALL, SCALL, SCALL, AVR32_V1),
26752 + SYNTAX_NORMAL1(SCR, SCR, SCR, INTREG, AVR32_V1),
26753 + SYNTAX_NORMAL1(SLEEP, SLEEP, SLEEP, UNSIGNED_CONST, AVR32_V1),
26754 + SYNTAX_NORMAL1(SREQ, SREQ, SREQ, INTREG, AVR32_V1),
26755 + SYNTAX_NORMAL1(SRNE, SRNE, SRNE, INTREG, AVR32_V1),
26756 + SYNTAX_NORMAL1(SRCC, SRCC, SRCC, INTREG, AVR32_V1),
26757 + SYNTAX_NORMAL1(SRCS, SRCS, SRCS, INTREG, AVR32_V1),
26758 + SYNTAX_NORMAL1(SRGE, SRGE, SRGE, INTREG, AVR32_V1),
26759 + SYNTAX_NORMAL1(SRLT, SRLT, SRLT, INTREG, AVR32_V1),
26760 + SYNTAX_NORMAL1(SRMI, SRMI, SRMI, INTREG, AVR32_V1),
26761 + SYNTAX_NORMAL1(SRPL, SRPL, SRPL, INTREG, AVR32_V1),
26762 + SYNTAX_NORMAL1(SRLS, SRLS, SRLS, INTREG, AVR32_V1),
26763 + SYNTAX_NORMAL1(SRGT, SRGT, SRGT, INTREG, AVR32_V1),
26764 + SYNTAX_NORMAL1(SRLE, SRLE, SRLE, INTREG, AVR32_V1),
26765 + SYNTAX_NORMAL1(SRHI, SRHI, SRHI, INTREG, AVR32_V1),
26766 + SYNTAX_NORMAL1(SRVS, SRVS, SRVS, INTREG, AVR32_V1),
26767 + SYNTAX_NORMAL1(SRVC, SRVC, SRVC, INTREG, AVR32_V1),
26768 + SYNTAX_NORMAL1(SRQS, SRQS, SRQS, INTREG, AVR32_V1),
26769 + SYNTAX_NORMAL1(SRAL, SRAL, SRAL, INTREG, AVR32_V1),
26770 + SYNTAX_NORMAL1(SRHS, SRHS, SRCC, INTREG, AVR32_V1),
26771 + SYNTAX_NORMAL1(SRLO, SRLO, SRCS, INTREG, AVR32_V1),
26772 + SYNTAX_NORMAL1(SSRF, SSRF, SSRF, UNSIGNED_NUMBER, AVR32_V1),
26773 + SYNTAX_NORMAL_C2(ST_B1, ST_B, ST_B1, ST_B2, INTREG_POSTINC, INTREG, AVR32_V1),
26774 + SYNTAX_NORMAL_C2(ST_B2, ST_B, ST_B2, ST_B5, INTREG_PREDEC, INTREG, AVR32_V1),
26775 + SYNTAX_NORMAL_C2(ST_B5, ST_B, ST_B5, ST_B3, INTREG_INDEX, INTREG, AVR32_V1),
26776 + SYNTAX_NORMAL_C2(ST_B3, ST_B, ST_B3, ST_B4, INTREG_UDISP, INTREG, AVR32_V1),
26777 + SYNTAX_NORMAL2(ST_B4, ST_B, ST_B4, INTREG_SDISP, INTREG, AVR32_V1),
26778 + SYNTAX_NORMAL_C2(ST_D1, ST_D, ST_D1, ST_D2, INTREG_POSTINC, DWREG, AVR32_V1),
26779 + SYNTAX_NORMAL_C2(ST_D2, ST_D, ST_D2, ST_D3, INTREG_PREDEC, DWREG, AVR32_V1),
26780 + SYNTAX_NORMAL_C2(ST_D3, ST_D, ST_D3, ST_D5, INTREG, DWREG, AVR32_V1),
26781 + SYNTAX_NORMAL_C2(ST_D5, ST_D, ST_D5, ST_D4, INTREG_INDEX, DWREG, AVR32_V1),
26782 + SYNTAX_NORMAL2(ST_D4, ST_D, ST_D4, INTREG_SDISP, DWREG, AVR32_V1),
26783 + SYNTAX_NORMAL_C2(ST_H1, ST_H, ST_H1, ST_H2, INTREG_POSTINC, INTREG, AVR32_V1),
26784 + SYNTAX_NORMAL_C2(ST_H2, ST_H, ST_H2, ST_H5, INTREG_PREDEC, INTREG, AVR32_V1),
26785 + SYNTAX_NORMAL_C2(ST_H5, ST_H, ST_H5, ST_H3, INTREG_INDEX, INTREG, AVR32_V1),
26786 + SYNTAX_NORMAL_C2(ST_H3, ST_H, ST_H3, ST_H4, INTREG_UDISP_H, INTREG, AVR32_V1),
26787 + SYNTAX_NORMAL2(ST_H4, ST_H, ST_H4, INTREG_SDISP, INTREG, AVR32_V1),
26788 + SYNTAX_NORMAL_C2(ST_W1, ST_W, ST_W1, ST_W2, INTREG_POSTINC, INTREG, AVR32_V1),
26789 + SYNTAX_NORMAL_C2(ST_W2, ST_W, ST_W2, ST_W5, INTREG_PREDEC, INTREG, AVR32_V1),
26790 + SYNTAX_NORMAL_C2(ST_W5, ST_W, ST_W5, ST_W3, INTREG_INDEX, INTREG, AVR32_V1),
26791 + SYNTAX_NORMAL_C2(ST_W3, ST_W, ST_W3, ST_W4, INTREG_UDISP_W, INTREG, AVR32_V1),
26792 + SYNTAX_NORMAL2(ST_W4, ST_W, ST_W4, INTREG_SDISP, INTREG, AVR32_V1),
26793 + SYNTAX_NORMAL3(STC_D1, STC_D, STC_D1, CPNO, INTREG_UDISP_W, CPREG_D, AVR32_V1),
26794 + SYNTAX_NORMAL_C3(STC_D2, STC_D, STC_D2, STC_D1, CPNO, INTREG_POSTINC, CPREG_D, AVR32_V1),
26795 + SYNTAX_NORMAL_C3(STC_D3, STC_D, STC_D3, STC_D2, CPNO, INTREG_INDEX, CPREG_D, AVR32_V1),
26796 + SYNTAX_NORMAL3(STC_W1, STC_W, STC_W1, CPNO, INTREG_UDISP_W, CPREG, AVR32_V1),
26797 + SYNTAX_NORMAL_C3(STC_W2, STC_W, STC_W2, STC_W1, CPNO, INTREG_POSTINC, CPREG, AVR32_V1),
26798 + SYNTAX_NORMAL_C3(STC_W3, STC_W, STC_W3, STC_W2, CPNO, INTREG_INDEX, CPREG, AVR32_V1),
26799 + SYNTAX_NORMAL2(STC0_D, STC0_D, STC0_D, INTREG_UDISP_W, CPREG_D, AVR32_V1),
26800 + SYNTAX_NORMAL2(STC0_W, STC0_W, STC0_W, INTREG_UDISP_W, CPREG, AVR32_V1),
26801 + SYNTAX_NORMAL_CM3(STCM_D, STCM_D, STCM_D, STCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
26802 + SYNTAX_NORMALM3(STCM_D_PU, STCM_D, STCM_D_PU, CPNO, INTREG_PREDEC, REGLIST_CPD8, AVR32_V1),
26803 + SYNTAX_NORMAL_CM3(STCM_W, STCM_W, STCM_W, STCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
26804 + SYNTAX_NORMALM3(STCM_W_PU, STCM_W, STCM_W_PU, CPNO, INTREG_PREDEC, REGLIST_CP8, AVR32_V1),
26805 + SYNTAX_NORMAL2(STCOND, STCOND, STCOND, INTREG_SDISP, INTREG, AVR32_V1),
26806 + SYNTAX_NORMAL2(STDSP, STDSP, STDSP, SP_UDISP_W, INTREG, AVR32_V1),
26807 + SYNTAX_NORMAL_C3(STHH_W2, STHH_W, STHH_W2, STHH_W1, INTREG_INDEX, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
26808 + SYNTAX_NORMAL3(STHH_W1, STHH_W, STHH_W1, INTREG_UDISP_W, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
26809 + SYNTAX_NORMAL_CM2(STM, STM, STM, STM_PU, INTREG, REGLIST16, AVR32_V1),
26810 + SYNTAX_NORMALM2(STM_PU, STM, STM_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
26811 + SYNTAX_NORMAL_CM2(STMTS, STMTS, STMTS, STMTS_PU, INTREG, REGLIST16, AVR32_V1),
26812 + SYNTAX_NORMALM2(STMTS_PU, STMTS, STMTS_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
26813 + SYNTAX_NORMAL2(STSWP_H, STSWP_H, STSWP_H, INTREG_SDISP_H, INTREG, AVR32_V1),
26814 + SYNTAX_NORMAL2(STSWP_W, STSWP_W, STSWP_W, INTREG_SDISP_W, INTREG, AVR32_V1),
26815 + SYNTAX_NORMAL_C2(SUB1, SUB, SUB1, SUB2, INTREG, INTREG, AVR32_V1),
26816 + SYNTAX_NORMAL_C3(SUB2, SUB, SUB2, SUB5, INTREG, INTREG, INTREG_LSL, AVR32_V1),
26817 + SYNTAX_NORMAL_C3(SUB5, SUB, SUB5, SUB3_SP, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
26818 + SYNTAX_NORMAL_C2(SUB3_SP, SUB, SUB3_SP, SUB3, SP, SIGNED_CONST_W, AVR32_V1),
26819 + SYNTAX_NORMAL_C2(SUB3, SUB, SUB3, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
26820 + SYNTAX_NORMAL2(SUB4, SUB, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
26821 + SYNTAX_NORMAL_C2(SUBEQ, SUBEQ, SUBEQ, SUB2EQ, INTREG, SIGNED_CONST, AVR32_V1),
26822 + SYNTAX_NORMAL_C2(SUBNE, SUBNE, SUBNE, SUB2NE, INTREG, SIGNED_CONST, AVR32_V1),
26823 + SYNTAX_NORMAL_C2(SUBCC, SUBCC, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
26824 + SYNTAX_NORMAL_C2(SUBCS, SUBCS, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
26825 + SYNTAX_NORMAL_C2(SUBGE, SUBGE, SUBGE, SUB2GE, INTREG, SIGNED_CONST, AVR32_V1),
26826 + SYNTAX_NORMAL_C2(SUBLT, SUBLT, SUBLT, SUB2LT, INTREG, SIGNED_CONST, AVR32_V1),
26827 + SYNTAX_NORMAL_C2(SUBMI, SUBMI, SUBMI, SUB2MI, INTREG, SIGNED_CONST, AVR32_V1),
26828 + SYNTAX_NORMAL_C2(SUBPL, SUBPL, SUBPL, SUB2PL, INTREG, SIGNED_CONST, AVR32_V1),
26829 + SYNTAX_NORMAL_C2(SUBLS, SUBLS, SUBLS, SUB2LS, INTREG, SIGNED_CONST, AVR32_V1),
26830 + SYNTAX_NORMAL_C2(SUBGT, SUBGT, SUBGT, SUB2GT, INTREG, SIGNED_CONST, AVR32_V1),
26831 + SYNTAX_NORMAL_C2(SUBLE, SUBLE, SUBLE, SUB2LE, INTREG, SIGNED_CONST, AVR32_V1),
26832 + SYNTAX_NORMAL_C2(SUBHI, SUBHI, SUBHI, SUB2HI, INTREG, SIGNED_CONST, AVR32_V1),
26833 + SYNTAX_NORMAL_C2(SUBVS, SUBVS, SUBVS, SUB2VS, INTREG, SIGNED_CONST, AVR32_V1),
26834 + SYNTAX_NORMAL_C2(SUBVC, SUBVC, SUBVC, SUB2VC, INTREG, SIGNED_CONST, AVR32_V1),
26835 + SYNTAX_NORMAL_C2(SUBQS, SUBQS, SUBQS, SUB2QS, INTREG, SIGNED_CONST, AVR32_V1),
26836 + SYNTAX_NORMAL_C2(SUBAL, SUBAL, SUBAL, SUB2AL, INTREG, SIGNED_CONST, AVR32_V1),
26837 + SYNTAX_NORMAL_C2(SUBHS, SUBHS, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
26838 + SYNTAX_NORMAL_C2(SUBLO, SUBLO, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
26839 + SYNTAX_NORMAL2(SUBFEQ, SUBFEQ, SUBFEQ, INTREG, SIGNED_CONST, AVR32_V1),
26840 + SYNTAX_NORMAL2(SUBFNE, SUBFNE, SUBFNE, INTREG, SIGNED_CONST, AVR32_V1),
26841 + SYNTAX_NORMAL2(SUBFCC, SUBFCC, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
26842 + SYNTAX_NORMAL2(SUBFCS, SUBFCS, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
26843 + SYNTAX_NORMAL2(SUBFGE, SUBFGE, SUBFGE, INTREG, SIGNED_CONST, AVR32_V1),
26844 + SYNTAX_NORMAL2(SUBFLT, SUBFLT, SUBFLT, INTREG, SIGNED_CONST, AVR32_V1),
26845 + SYNTAX_NORMAL2(SUBFMI, SUBFMI, SUBFMI, INTREG, SIGNED_CONST, AVR32_V1),
26846 + SYNTAX_NORMAL2(SUBFPL, SUBFPL, SUBFPL, INTREG, SIGNED_CONST, AVR32_V1),
26847 + SYNTAX_NORMAL2(SUBFLS, SUBFLS, SUBFLS, INTREG, SIGNED_CONST, AVR32_V1),
26848 + SYNTAX_NORMAL2(SUBFGT, SUBFGT, SUBFGT, INTREG, SIGNED_CONST, AVR32_V1),
26849 + SYNTAX_NORMAL2(SUBFLE, SUBFLE, SUBFLE, INTREG, SIGNED_CONST, AVR32_V1),
26850 + SYNTAX_NORMAL2(SUBFHI, SUBFHI, SUBFHI, INTREG, SIGNED_CONST, AVR32_V1),
26851 + SYNTAX_NORMAL2(SUBFVS, SUBFVS, SUBFVS, INTREG, SIGNED_CONST, AVR32_V1),
26852 + SYNTAX_NORMAL2(SUBFVC, SUBFVC, SUBFVC, INTREG, SIGNED_CONST, AVR32_V1),
26853 + SYNTAX_NORMAL2(SUBFQS, SUBFQS, SUBFQS, INTREG, SIGNED_CONST, AVR32_V1),
26854 + SYNTAX_NORMAL2(SUBFAL, SUBFAL, SUBFAL, INTREG, SIGNED_CONST, AVR32_V1),
26855 + SYNTAX_NORMAL2(SUBFHS, SUBFHS, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
26856 + SYNTAX_NORMAL2(SUBFLO, SUBFLO, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
26857 + SYNTAX_NORMAL3(SUBHH_W, SUBHH_W, SUBHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26858 + SYNTAX_NORMAL1(SWAP_B, SWAP_B, SWAP_B, INTREG, AVR32_V1),
26859 + SYNTAX_NORMAL1(SWAP_BH, SWAP_BH, SWAP_BH, INTREG, AVR32_V1),
26860 + SYNTAX_NORMAL1(SWAP_H, SWAP_H, SWAP_H, INTREG, AVR32_V1),
26861 + SYNTAX_NORMAL1(SYNC, SYNC, SYNC, UNSIGNED_CONST, AVR32_V1),
26862 + SYNTAX_NORMAL0(TLBR, TLBR, TLBR, AVR32_V1),
26863 + SYNTAX_NORMAL0(TLBS, TLBS, TLBS, AVR32_V1),
26864 + SYNTAX_NORMAL0(TLBW, TLBW, TLBW, AVR32_V1),
26865 + SYNTAX_NORMAL1(TNBZ, TNBZ, TNBZ, INTREG, AVR32_V1),
26866 + SYNTAX_NORMAL2(TST, TST, TST, INTREG, INTREG, AVR32_V1),
26867 + SYNTAX_NORMAL3(XCHG, XCHG, XCHG, INTREG, INTREG, INTREG, AVR32_V1),
26868 + SYNTAX_NORMAL2(MEMC, MEMC, MEMC, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
26869 + SYNTAX_NORMAL2(MEMS, MEMS, MEMS, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
26870 + SYNTAX_NORMAL2(MEMT, MEMT, MEMT, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
26871 + SYNTAX_FP(FADD, 3),
26872 + SYNTAX_FP(FSUB, 3),
26873 + SYNTAX_FP(FMAC, 3),
26874 + SYNTAX_FP(FNMAC, 3),
26875 + SYNTAX_FP(FMSC, 3),
26876 + SYNTAX_FP(FNMSC, 3),
26877 + SYNTAX_FP(FMUL, 3),
26878 + SYNTAX_FP(FNMUL, 3),
26879 + SYNTAX_FP(FNEG, 2),
26880 + SYNTAX_FP(FABS, 2),
26881 + SYNTAX_FP(FCMP, 2),
26882 + {
26883 + AVR32_SYNTAX_FMOV1_S,
26884 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26885 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_S] },
26886 + &avr32_syntax_table[AVR32_SYNTAX_FMOV2_S],
26887 + 2,
26888 + {
26889 + AVR32_OPERAND_FPREG_S,
26890 + AVR32_OPERAND_FPREG_S,
26891 + },
26892 + },
26893 + {
26894 + AVR32_SYNTAX_FMOV1_D,
26895 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26896 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_D] },
26897 + &avr32_syntax_table[AVR32_SYNTAX_FMOV2_D],
26898 + 2,
26899 + {
26900 + AVR32_OPERAND_FPREG_D,
26901 + AVR32_OPERAND_FPREG_D,
26902 + },
26903 + },
26904 + {
26905 + AVR32_SYNTAX_FMOV2_S,
26906 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26907 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_S] },
26908 + &avr32_syntax_table[AVR32_SYNTAX_FMOV3_S],
26909 + 2,
26910 + {
26911 + AVR32_OPERAND_INTREG,
26912 + AVR32_OPERAND_FPREG_S,
26913 + },
26914 + },
26915 + {
26916 + AVR32_SYNTAX_FMOV2_D,
26917 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26918 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_D] },
26919 + &avr32_syntax_table[AVR32_SYNTAX_FMOV3_D],
26920 + 2,
26921 + {
26922 + AVR32_OPERAND_DWREG,
26923 + AVR32_OPERAND_FPREG_D,
26924 + },
26925 + },
26926 + {
26927 + AVR32_SYNTAX_FMOV3_S,
26928 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26929 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_S] }, NULL,
26930 + 2,
26931 + {
26932 + AVR32_OPERAND_FPREG_S,
26933 + AVR32_OPERAND_INTREG,
26934 + },
26935 + },
26936 + {
26937 + AVR32_SYNTAX_FMOV3_D,
26938 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26939 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_D] }, NULL,
26940 + 2,
26941 + {
26942 + AVR32_OPERAND_FPREG_D,
26943 + AVR32_OPERAND_DWREG,
26944 + },
26945 + },
26946 + {
26947 + AVR32_SYNTAX_FCASTS_D,
26948 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26949 + { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTS_D] }, NULL,
26950 + 2,
26951 + {
26952 + AVR32_OPERAND_FPREG_S,
26953 + AVR32_OPERAND_FPREG_D,
26954 + },
26955 + },
26956 + {
26957 + AVR32_SYNTAX_FCASTD_S,
26958 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26959 + { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTD_S] }, NULL,
26960 + 2,
26961 + {
26962 + AVR32_OPERAND_FPREG_D,
26963 + AVR32_OPERAND_FPREG_S,
26964 + },
26965 + },
26966 + {
26967 + AVR32_SYNTAX_LDA_W,
26968 + AVR32_V1, NULL, AVR32_PARSER_LDA,
26969 + { NULL }, NULL,
26970 + 2,
26971 + {
26972 + AVR32_OPERAND_INTREG,
26973 + AVR32_OPERAND_SIGNED_CONST,
26974 + },
26975 + },
26976 + {
26977 + AVR32_SYNTAX_CALL,
26978 + AVR32_V1, NULL, AVR32_PARSER_CALL,
26979 + { NULL }, NULL,
26980 + 1,
26981 + {
26982 + AVR32_OPERAND_JMPLABEL,
26983 + },
26984 + },
26985 + {
26986 + AVR32_SYNTAX_PICOSVMAC0,
26987 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
26988 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC0] },
26989 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC1], 4,
26990 + {
26991 + AVR32_OPERAND_PICO_OUT0,
26992 + AVR32_OPERAND_PICO_IN,
26993 + AVR32_OPERAND_PICO_IN,
26994 + AVR32_OPERAND_PICO_IN,
26995 + },
26996 + },
26997 + {
26998 + AVR32_SYNTAX_PICOSVMAC1,
26999 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
27000 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC1] },
27001 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC2], 4,
27002 + {
27003 + AVR32_OPERAND_PICO_OUT1,
27004 + AVR32_OPERAND_PICO_IN,
27005 + AVR32_OPERAND_PICO_IN,
27006 + AVR32_OPERAND_PICO_IN,
27007 + },
27008 + },
27009 + {
27010 + AVR32_SYNTAX_PICOSVMAC2,
27011 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
27012 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC2] },
27013 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC3], 4,
27014 + {
27015 + AVR32_OPERAND_PICO_OUT2,
27016 + AVR32_OPERAND_PICO_IN,
27017 + AVR32_OPERAND_PICO_IN,
27018 + AVR32_OPERAND_PICO_IN,
27019 + },
27020 + },
27021 + {
27022 + AVR32_SYNTAX_PICOSVMAC3,
27023 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
27024 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC3] },
27025 + NULL, 4,
27026 + {
27027 + AVR32_OPERAND_PICO_OUT3,
27028 + AVR32_OPERAND_PICO_IN,
27029 + AVR32_OPERAND_PICO_IN,
27030 + AVR32_OPERAND_PICO_IN,
27031 + },
27032 + },
27033 + {
27034 + AVR32_SYNTAX_PICOSVMUL0,
27035 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
27036 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL0] },
27037 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL1], 4,
27038 + {
27039 + AVR32_OPERAND_PICO_OUT0,
27040 + AVR32_OPERAND_PICO_IN,
27041 + AVR32_OPERAND_PICO_IN,
27042 + AVR32_OPERAND_PICO_IN,
27043 + },
27044 + },
27045 + {
27046 + AVR32_SYNTAX_PICOSVMUL1,
27047 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
27048 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL1] },
27049 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL2], 4,
27050 + {
27051 + AVR32_OPERAND_PICO_OUT1,
27052 + AVR32_OPERAND_PICO_IN,
27053 + AVR32_OPERAND_PICO_IN,
27054 + AVR32_OPERAND_PICO_IN,
27055 + },
27056 + },
27057 + {
27058 + AVR32_SYNTAX_PICOSVMUL2,
27059 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
27060 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL2] },
27061 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL3], 4,
27062 + {
27063 + AVR32_OPERAND_PICO_OUT2,
27064 + AVR32_OPERAND_PICO_IN,
27065 + AVR32_OPERAND_PICO_IN,
27066 + AVR32_OPERAND_PICO_IN,
27067 + },
27068 + },
27069 + {
27070 + AVR32_SYNTAX_PICOSVMUL3,
27071 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
27072 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL3] },
27073 + NULL, 4,
27074 + {
27075 + AVR32_OPERAND_PICO_OUT3,
27076 + AVR32_OPERAND_PICO_IN,
27077 + AVR32_OPERAND_PICO_IN,
27078 + AVR32_OPERAND_PICO_IN,
27079 + },
27080 + },
27081 + {
27082 + AVR32_SYNTAX_PICOVMAC0,
27083 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
27084 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC0] },
27085 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC1], 4,
27086 + {
27087 + AVR32_OPERAND_PICO_OUT0,
27088 + AVR32_OPERAND_PICO_IN,
27089 + AVR32_OPERAND_PICO_IN,
27090 + AVR32_OPERAND_PICO_IN,
27091 + },
27092 + },
27093 + {
27094 + AVR32_SYNTAX_PICOVMAC1,
27095 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
27096 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC1] },
27097 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC2], 4,
27098 + {
27099 + AVR32_OPERAND_PICO_OUT1,
27100 + AVR32_OPERAND_PICO_IN,
27101 + AVR32_OPERAND_PICO_IN,
27102 + AVR32_OPERAND_PICO_IN,
27103 + },
27104 + },
27105 + {
27106 + AVR32_SYNTAX_PICOVMAC2,
27107 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
27108 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC2] },
27109 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC3], 4,
27110 + {
27111 + AVR32_OPERAND_PICO_OUT2,
27112 + AVR32_OPERAND_PICO_IN,
27113 + AVR32_OPERAND_PICO_IN,
27114 + AVR32_OPERAND_PICO_IN,
27115 + },
27116 + },
27117 + {
27118 + AVR32_SYNTAX_PICOVMAC3,
27119 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
27120 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC3] },
27121 + NULL, 4,
27122 + {
27123 + AVR32_OPERAND_PICO_OUT3,
27124 + AVR32_OPERAND_PICO_IN,
27125 + AVR32_OPERAND_PICO_IN,
27126 + AVR32_OPERAND_PICO_IN,
27127 + },
27128 + },
27129 + {
27130 + AVR32_SYNTAX_PICOVMUL0,
27131 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
27132 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL0] },
27133 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL1], 4,
27134 + {
27135 + AVR32_OPERAND_PICO_OUT0,
27136 + AVR32_OPERAND_PICO_IN,
27137 + AVR32_OPERAND_PICO_IN,
27138 + AVR32_OPERAND_PICO_IN,
27139 + },
27140 + },
27141 + {
27142 + AVR32_SYNTAX_PICOVMUL1,
27143 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
27144 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL1] },
27145 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL2], 4,
27146 + {
27147 + AVR32_OPERAND_PICO_OUT1,
27148 + AVR32_OPERAND_PICO_IN,
27149 + AVR32_OPERAND_PICO_IN,
27150 + AVR32_OPERAND_PICO_IN,
27151 + },
27152 + },
27153 + {
27154 + AVR32_SYNTAX_PICOVMUL2,
27155 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
27156 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL2] },
27157 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL3], 4,
27158 + {
27159 + AVR32_OPERAND_PICO_OUT2,
27160 + AVR32_OPERAND_PICO_IN,
27161 + AVR32_OPERAND_PICO_IN,
27162 + AVR32_OPERAND_PICO_IN,
27163 + },
27164 + },
27165 + {
27166 + AVR32_SYNTAX_PICOVMUL3,
27167 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
27168 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL3] },
27169 + NULL, 4,
27170 + {
27171 + AVR32_OPERAND_PICO_OUT3,
27172 + AVR32_OPERAND_PICO_IN,
27173 + AVR32_OPERAND_PICO_IN,
27174 + AVR32_OPERAND_PICO_IN,
27175 + },
27176 + },
27177 + {
27178 + AVR32_SYNTAX_PICOLD_D2,
27179 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
27180 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D2] },
27181 + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D3], 2,
27182 + {
27183 + AVR32_OPERAND_PICO_REG_D,
27184 + AVR32_OPERAND_INTREG_PREDEC,
27185 + },
27186 + },
27187 + {
27188 + AVR32_SYNTAX_PICOLD_D3,
27189 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
27190 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D3] },
27191 + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D1], 2,
27192 + {
27193 + AVR32_OPERAND_PICO_REG_D,
27194 + AVR32_OPERAND_INTREG_INDEX,
27195 + },
27196 + },
27197 + {
27198 + AVR32_SYNTAX_PICOLD_D1,
27199 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
27200 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D1] },
27201 + NULL, 2,
27202 + {
27203 + AVR32_OPERAND_PICO_REG_D,
27204 + AVR32_OPERAND_INTREG_UDISP_W,
27205 + },
27206 + },
27207 + {
27208 + AVR32_SYNTAX_PICOLD_W2,
27209 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
27210 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W2] },
27211 + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W3], 2,
27212 + {
27213 + AVR32_OPERAND_PICO_REG_W,
27214 + AVR32_OPERAND_INTREG_PREDEC,
27215 + },
27216 + },
27217 + {
27218 + AVR32_SYNTAX_PICOLD_W3,
27219 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
27220 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W3] },
27221 + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W1], 2,
27222 + {
27223 + AVR32_OPERAND_PICO_REG_W,
27224 + AVR32_OPERAND_INTREG_INDEX,
27225 + },
27226 + },
27227 + {
27228 + AVR32_SYNTAX_PICOLD_W1,
27229 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
27230 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W1] },
27231 + NULL, 2,
27232 + {
27233 + AVR32_OPERAND_PICO_REG_W,
27234 + AVR32_OPERAND_INTREG_UDISP_W,
27235 + },
27236 + },
27237 + {
27238 + AVR32_SYNTAX_PICOLDM_D,
27239 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
27240 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D] },
27241 + &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_D_PU], -2,
27242 + {
27243 + AVR32_OPERAND_INTREG,
27244 + AVR32_OPERAND_PICO_REGLIST_D,
27245 + },
27246 + },
27247 + {
27248 + AVR32_SYNTAX_PICOLDM_D_PU,
27249 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
27250 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D_PU] },
27251 + NULL, -2,
27252 + {
27253 + AVR32_OPERAND_INTREG_POSTINC,
27254 + AVR32_OPERAND_PICO_REGLIST_D,
27255 + },
27256 + },
27257 + {
27258 + AVR32_SYNTAX_PICOLDM_W,
27259 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
27260 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W] },
27261 + &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_W_PU], -2,
27262 + {
27263 + AVR32_OPERAND_INTREG,
27264 + AVR32_OPERAND_PICO_REGLIST_W,
27265 + },
27266 + },
27267 + {
27268 + AVR32_SYNTAX_PICOLDM_W_PU,
27269 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
27270 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W_PU] },
27271 + NULL, -2,
27272 + {
27273 + AVR32_OPERAND_INTREG_POSTINC,
27274 + AVR32_OPERAND_PICO_REGLIST_W,
27275 + },
27276 + },
27277 + {
27278 + AVR32_SYNTAX_PICOMV_D1,
27279 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
27280 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D1] },
27281 + &avr32_syntax_table[AVR32_SYNTAX_PICOMV_D2], 2,
27282 + {
27283 + AVR32_OPERAND_DWREG,
27284 + AVR32_OPERAND_PICO_REG_D,
27285 + },
27286 + },
27287 + {
27288 + AVR32_SYNTAX_PICOMV_D2,
27289 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
27290 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D2] },
27291 + NULL, 2,
27292 + {
27293 + AVR32_OPERAND_PICO_REG_D,
27294 + AVR32_OPERAND_DWREG,
27295 + },
27296 + },
27297 + {
27298 + AVR32_SYNTAX_PICOMV_W1,
27299 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
27300 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W1] },
27301 + &avr32_syntax_table[AVR32_SYNTAX_PICOMV_W2], 2,
27302 + {
27303 + AVR32_OPERAND_INTREG,
27304 + AVR32_OPERAND_PICO_REG_W,
27305 + },
27306 + },
27307 + {
27308 + AVR32_SYNTAX_PICOMV_W2,
27309 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
27310 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W2] },
27311 + NULL, 2,
27312 + {
27313 + AVR32_OPERAND_PICO_REG_W,
27314 + AVR32_OPERAND_INTREG,
27315 + },
27316 + },
27317 + {
27318 + AVR32_SYNTAX_PICOST_D2,
27319 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
27320 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D2] },
27321 + &avr32_syntax_table[AVR32_SYNTAX_PICOST_D3], 2,
27322 + {
27323 + AVR32_OPERAND_INTREG_POSTINC,
27324 + AVR32_OPERAND_PICO_REG_D,
27325 + },
27326 + },
27327 + {
27328 + AVR32_SYNTAX_PICOST_D3,
27329 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
27330 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D3] },
27331 + &avr32_syntax_table[AVR32_SYNTAX_PICOST_D1], 2,
27332 + {
27333 + AVR32_OPERAND_INTREG_INDEX,
27334 + AVR32_OPERAND_PICO_REG_D,
27335 + },
27336 + },
27337 + {
27338 + AVR32_SYNTAX_PICOST_D1,
27339 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
27340 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D1] },
27341 + NULL, 2,
27342 + {
27343 + AVR32_OPERAND_INTREG_UDISP_W,
27344 + AVR32_OPERAND_PICO_REG_D,
27345 + },
27346 + },
27347 + {
27348 + AVR32_SYNTAX_PICOST_W2,
27349 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
27350 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W2] },
27351 + &avr32_syntax_table[AVR32_SYNTAX_PICOST_W3], 2,
27352 + {
27353 + AVR32_OPERAND_INTREG_POSTINC,
27354 + AVR32_OPERAND_PICO_REG_W,
27355 + },
27356 + },
27357 + {
27358 + AVR32_SYNTAX_PICOST_W3,
27359 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
27360 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W3] },
27361 + &avr32_syntax_table[AVR32_SYNTAX_PICOST_W1], 2,
27362 + {
27363 + AVR32_OPERAND_INTREG_INDEX,
27364 + AVR32_OPERAND_PICO_REG_W,
27365 + },
27366 + },
27367 + {
27368 + AVR32_SYNTAX_PICOST_W1,
27369 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
27370 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W1] },
27371 + NULL, 2,
27372 + {
27373 + AVR32_OPERAND_INTREG_UDISP_W,
27374 + AVR32_OPERAND_PICO_REG_W,
27375 + },
27376 + },
27377 + {
27378 + AVR32_SYNTAX_PICOSTM_D,
27379 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
27380 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D] },
27381 + &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_D_PU], -2,
27382 + {
27383 + AVR32_OPERAND_INTREG,
27384 + AVR32_OPERAND_PICO_REGLIST_D,
27385 + },
27386 + },
27387 + {
27388 + AVR32_SYNTAX_PICOSTM_D_PU,
27389 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
27390 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D_PU] },
27391 + NULL, -2,
27392 + {
27393 + AVR32_OPERAND_INTREG_PREDEC,
27394 + AVR32_OPERAND_PICO_REGLIST_D,
27395 + },
27396 + },
27397 + {
27398 + AVR32_SYNTAX_PICOSTM_W,
27399 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
27400 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W] },
27401 + &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_W_PU], -2,
27402 + {
27403 + AVR32_OPERAND_INTREG,
27404 + AVR32_OPERAND_PICO_REGLIST_W,
27405 + },
27406 + },
27407 + {
27408 + AVR32_SYNTAX_PICOSTM_W_PU,
27409 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
27410 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W_PU] },
27411 + NULL, -2,
27412 + {
27413 + AVR32_OPERAND_INTREG_PREDEC,
27414 + AVR32_OPERAND_PICO_REGLIST_W,
27415 + },
27416 + },
27417 + SYNTAX_NORMAL2(RSUBEQ, RSUBEQ, RSUBEQ, INTREG, SIGNED_CONST, AVR32_V1),
27418 + SYNTAX_NORMAL2(RSUBNE, RSUBNE, RSUBNE, INTREG, SIGNED_CONST, AVR32_V2),
27419 + SYNTAX_NORMAL2(RSUBCC, RSUBCC, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
27420 + SYNTAX_NORMAL2(RSUBCS, RSUBCS, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
27421 + SYNTAX_NORMAL2(RSUBGE, RSUBGE, RSUBGE, INTREG, SIGNED_CONST, AVR32_V2),
27422 + SYNTAX_NORMAL2(RSUBLT, RSUBLT, RSUBLT, INTREG, SIGNED_CONST, AVR32_V2),
27423 + SYNTAX_NORMAL2(RSUBMI, RSUBMI, RSUBMI, INTREG, SIGNED_CONST, AVR32_V2),
27424 + SYNTAX_NORMAL2(RSUBPL, RSUBPL, RSUBPL, INTREG, SIGNED_CONST, AVR32_V2),
27425 + SYNTAX_NORMAL2(RSUBLS, RSUBLS, RSUBLS, INTREG, SIGNED_CONST, AVR32_V2),
27426 + SYNTAX_NORMAL2(RSUBGT, RSUBGT, RSUBGT, INTREG, SIGNED_CONST, AVR32_V2),
27427 + SYNTAX_NORMAL2(RSUBLE, RSUBLE, RSUBLE, INTREG, SIGNED_CONST, AVR32_V2),
27428 + SYNTAX_NORMAL2(RSUBHI, RSUBHI, RSUBHI, INTREG, SIGNED_CONST, AVR32_V2),
27429 + SYNTAX_NORMAL2(RSUBVS, RSUBVS, RSUBVS, INTREG, SIGNED_CONST, AVR32_V2),
27430 + SYNTAX_NORMAL2(RSUBVC, RSUBVC, RSUBVC, INTREG, SIGNED_CONST, AVR32_V2),
27431 + SYNTAX_NORMAL2(RSUBQS, RSUBQS, RSUBQS, INTREG, SIGNED_CONST, AVR32_V2),
27432 + SYNTAX_NORMAL2(RSUBAL, RSUBAL, RSUBAL, INTREG, SIGNED_CONST, AVR32_V2),
27433 + SYNTAX_NORMAL2(RSUBHS, RSUBHS, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
27434 + SYNTAX_NORMAL2(RSUBLO, RSUBLO, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
27435 + SYNTAX_NORMAL3(ADDEQ, ADDEQ, ADDEQ, INTREG, INTREG, INTREG, AVR32_V2),
27436 + SYNTAX_NORMAL3(ADDNE, ADDNE, ADDNE, INTREG, INTREG, INTREG, AVR32_V2),
27437 + SYNTAX_NORMAL3(ADDCC, ADDCC, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
27438 + SYNTAX_NORMAL3(ADDCS, ADDCS, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
27439 + SYNTAX_NORMAL3(ADDGE, ADDGE, ADDGE, INTREG, INTREG, INTREG, AVR32_V2),
27440 + SYNTAX_NORMAL3(ADDLT, ADDLT, ADDLT, INTREG, INTREG, INTREG, AVR32_V2),
27441 + SYNTAX_NORMAL3(ADDMI, ADDMI, ADDMI, INTREG, INTREG, INTREG, AVR32_V2),
27442 + SYNTAX_NORMAL3(ADDPL, ADDPL, ADDPL, INTREG, INTREG, INTREG, AVR32_V2),
27443 + SYNTAX_NORMAL3(ADDLS, ADDLS, ADDLS, INTREG, INTREG, INTREG, AVR32_V2),
27444 + SYNTAX_NORMAL3(ADDGT, ADDGT, ADDGT, INTREG, INTREG, INTREG, AVR32_V2),
27445 + SYNTAX_NORMAL3(ADDLE, ADDLE, ADDLE, INTREG, INTREG, INTREG, AVR32_V2),
27446 + SYNTAX_NORMAL3(ADDHI, ADDHI, ADDHI, INTREG, INTREG, INTREG, AVR32_V2),
27447 + SYNTAX_NORMAL3(ADDVS, ADDVS, ADDVS, INTREG, INTREG, INTREG, AVR32_V2),
27448 + SYNTAX_NORMAL3(ADDVC, ADDVC, ADDVC, INTREG, INTREG, INTREG, AVR32_V2),
27449 + SYNTAX_NORMAL3(ADDQS, ADDQS, ADDQS, INTREG, INTREG, INTREG, AVR32_V2),
27450 + SYNTAX_NORMAL3(ADDAL, ADDAL, ADDAL, INTREG, INTREG, INTREG, AVR32_V2),
27451 + SYNTAX_NORMAL3(ADDHS, ADDHS, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
27452 + SYNTAX_NORMAL3(ADDLO, ADDLO, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
27453 + SYNTAX_NORMAL3(SUB2EQ, SUBEQ, SUB2EQ, INTREG, INTREG, INTREG, AVR32_V2),
27454 + SYNTAX_NORMAL3(SUB2NE, SUBNE, SUB2NE, INTREG, INTREG, INTREG, AVR32_V2),
27455 + SYNTAX_NORMAL3(SUB2CC, SUBCC, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
27456 + SYNTAX_NORMAL3(SUB2CS, SUBCS, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
27457 + SYNTAX_NORMAL3(SUB2GE, SUBGE, SUB2GE, INTREG, INTREG, INTREG, AVR32_V2),
27458 + SYNTAX_NORMAL3(SUB2LT, SUBLT, SUB2LT, INTREG, INTREG, INTREG, AVR32_V2),
27459 + SYNTAX_NORMAL3(SUB2MI, SUBMI, SUB2MI, INTREG, INTREG, INTREG, AVR32_V2),
27460 + SYNTAX_NORMAL3(SUB2PL, SUBPL, SUB2PL, INTREG, INTREG, INTREG, AVR32_V2),
27461 + SYNTAX_NORMAL3(SUB2LS, SUBLS, SUB2LS, INTREG, INTREG, INTREG, AVR32_V2),
27462 + SYNTAX_NORMAL3(SUB2GT, SUBGT, SUB2GT, INTREG, INTREG, INTREG, AVR32_V2),
27463 + SYNTAX_NORMAL3(SUB2LE, SUBLE, SUB2LE, INTREG, INTREG, INTREG, AVR32_V2),
27464 + SYNTAX_NORMAL3(SUB2HI, SUBHI, SUB2HI, INTREG, INTREG, INTREG, AVR32_V2),
27465 + SYNTAX_NORMAL3(SUB2VS, SUBVS, SUB2VS, INTREG, INTREG, INTREG, AVR32_V2),
27466 + SYNTAX_NORMAL3(SUB2VC, SUBVC, SUB2VC, INTREG, INTREG, INTREG, AVR32_V2),
27467 + SYNTAX_NORMAL3(SUB2QS, SUBQS, SUB2QS, INTREG, INTREG, INTREG, AVR32_V2),
27468 + SYNTAX_NORMAL3(SUB2AL, SUBAL, SUB2AL, INTREG, INTREG, INTREG, AVR32_V2),
27469 + SYNTAX_NORMAL3(SUB2HS, SUBHS, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
27470 + SYNTAX_NORMAL3(SUB2LO, SUBLO, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
27471 + SYNTAX_NORMAL3(ANDEQ, ANDEQ, ANDEQ, INTREG, INTREG, INTREG, AVR32_V2),
27472 + SYNTAX_NORMAL3(ANDNE, ANDNE, ANDNE, INTREG, INTREG, INTREG, AVR32_V2),
27473 + SYNTAX_NORMAL3(ANDCC, ANDCC, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
27474 + SYNTAX_NORMAL3(ANDCS, ANDCS, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
27475 + SYNTAX_NORMAL3(ANDGE, ANDGE, ANDGE, INTREG, INTREG, INTREG, AVR32_V2),
27476 + SYNTAX_NORMAL3(ANDLT, ANDLT, ANDLT, INTREG, INTREG, INTREG, AVR32_V2),
27477 + SYNTAX_NORMAL3(ANDMI, ANDMI, ANDMI, INTREG, INTREG, INTREG, AVR32_V2),
27478 + SYNTAX_NORMAL3(ANDPL, ANDPL, ANDPL, INTREG, INTREG, INTREG, AVR32_V2),
27479 + SYNTAX_NORMAL3(ANDLS, ANDLS, ANDLS, INTREG, INTREG, INTREG, AVR32_V2),
27480 + SYNTAX_NORMAL3(ANDGT, ANDGT, ANDGT, INTREG, INTREG, INTREG, AVR32_V2),
27481 + SYNTAX_NORMAL3(ANDLE, ANDLE, ANDLE, INTREG, INTREG, INTREG, AVR32_V2),
27482 + SYNTAX_NORMAL3(ANDHI, ANDHI, ANDHI, INTREG, INTREG, INTREG, AVR32_V2),
27483 + SYNTAX_NORMAL3(ANDVS, ANDVS, ANDVS, INTREG, INTREG, INTREG, AVR32_V2),
27484 + SYNTAX_NORMAL3(ANDVC, ANDVC, ANDVC, INTREG, INTREG, INTREG, AVR32_V2),
27485 + SYNTAX_NORMAL3(ANDQS, ANDQS, ANDQS, INTREG, INTREG, INTREG, AVR32_V2),
27486 + SYNTAX_NORMAL3(ANDAL, ANDAL, ANDAL, INTREG, INTREG, INTREG, AVR32_V2),
27487 + SYNTAX_NORMAL3(ANDHS, ANDHS, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
27488 + SYNTAX_NORMAL3(ANDLO, ANDLO, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
27489 + SYNTAX_NORMAL3(OREQ, OREQ, OREQ, INTREG, INTREG, INTREG, AVR32_V2),
27490 + SYNTAX_NORMAL3(ORNE, ORNE, ORNE, INTREG, INTREG, INTREG, AVR32_V2),
27491 + SYNTAX_NORMAL3(ORCC, ORCC, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
27492 + SYNTAX_NORMAL3(ORCS, ORCS, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
27493 + SYNTAX_NORMAL3(ORGE, ORGE, ORGE, INTREG, INTREG, INTREG, AVR32_V2),
27494 + SYNTAX_NORMAL3(ORLT, ORLT, ORLT, INTREG, INTREG, INTREG, AVR32_V2),
27495 + SYNTAX_NORMAL3(ORMI, ORMI, ORMI, INTREG, INTREG, INTREG, AVR32_V2),
27496 + SYNTAX_NORMAL3(ORPL, ORPL, ORPL, INTREG, INTREG, INTREG, AVR32_V2),
27497 + SYNTAX_NORMAL3(ORLS, ORLS, ORLS, INTREG, INTREG, INTREG, AVR32_V2),
27498 + SYNTAX_NORMAL3(ORGT, ORGT, ORGT, INTREG, INTREG, INTREG, AVR32_V2),
27499 + SYNTAX_NORMAL3(ORLE, ORLE, ORLE, INTREG, INTREG, INTREG, AVR32_V2),
27500 + SYNTAX_NORMAL3(ORHI, ORHI, ORHI, INTREG, INTREG, INTREG, AVR32_V2),
27501 + SYNTAX_NORMAL3(ORVS, ORVS, ORVS, INTREG, INTREG, INTREG, AVR32_V2),
27502 + SYNTAX_NORMAL3(ORVC, ORVC, ORVC, INTREG, INTREG, INTREG, AVR32_V2),
27503 + SYNTAX_NORMAL3(ORQS, ORQS, ORQS, INTREG, INTREG, INTREG, AVR32_V2),
27504 + SYNTAX_NORMAL3(ORAL, ORAL, ORAL, INTREG, INTREG, INTREG, AVR32_V2),
27505 + SYNTAX_NORMAL3(ORHS, ORHS, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
27506 + SYNTAX_NORMAL3(ORLO, ORLO, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
27507 + SYNTAX_NORMAL3(EOREQ, EOREQ, EOREQ, INTREG, INTREG, INTREG, AVR32_V2),
27508 + SYNTAX_NORMAL3(EORNE, EORNE, EORNE, INTREG, INTREG, INTREG, AVR32_V2),
27509 + SYNTAX_NORMAL3(EORCC, EORCC, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
27510 + SYNTAX_NORMAL3(EORCS, EORCS, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
27511 + SYNTAX_NORMAL3(EORGE, EORGE, EORGE, INTREG, INTREG, INTREG, AVR32_V2),
27512 + SYNTAX_NORMAL3(EORLT, EORLT, EORLT, INTREG, INTREG, INTREG, AVR32_V2),
27513 + SYNTAX_NORMAL3(EORMI, EORMI, EORMI, INTREG, INTREG, INTREG, AVR32_V2),
27514 + SYNTAX_NORMAL3(EORPL, EORPL, EORPL, INTREG, INTREG, INTREG, AVR32_V2),
27515 + SYNTAX_NORMAL3(EORLS, EORLS, EORLS, INTREG, INTREG, INTREG, AVR32_V2),
27516 + SYNTAX_NORMAL3(EORGT, EORGT, EORGT, INTREG, INTREG, INTREG, AVR32_V2),
27517 + SYNTAX_NORMAL3(EORLE, EORLE, EORLE, INTREG, INTREG, INTREG, AVR32_V2),
27518 + SYNTAX_NORMAL3(EORHI, EORHI, EORHI, INTREG, INTREG, INTREG, AVR32_V2),
27519 + SYNTAX_NORMAL3(EORVS, EORVS, EORVS, INTREG, INTREG, INTREG, AVR32_V2),
27520 + SYNTAX_NORMAL3(EORVC, EORVC, EORVC, INTREG, INTREG, INTREG, AVR32_V2),
27521 + SYNTAX_NORMAL3(EORQS, EORQS, EORQS, INTREG, INTREG, INTREG, AVR32_V2),
27522 + SYNTAX_NORMAL3(EORAL, EORAL, EORAL, INTREG, INTREG, INTREG, AVR32_V2),
27523 + SYNTAX_NORMAL3(EORHS, EORHS, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
27524 + SYNTAX_NORMAL3(EORLO, EORLO, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
27525 + SYNTAX_NORMAL2(LD_WEQ, LD_WEQ, LD_WEQ, INTREG, INTREG_UDISP_W, AVR32_V2),
27526 + SYNTAX_NORMAL2(LD_WNE, LD_WNE, LD_WNE, INTREG, INTREG_UDISP_W, AVR32_V2),
27527 + SYNTAX_NORMAL2(LD_WCC, LD_WCC, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
27528 + SYNTAX_NORMAL2(LD_WCS, LD_WCS, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
27529 + SYNTAX_NORMAL2(LD_WGE, LD_WGE, LD_WGE, INTREG, INTREG_UDISP_W, AVR32_V2),
27530 + SYNTAX_NORMAL2(LD_WLT, LD_WLT, LD_WLT, INTREG, INTREG_UDISP_W, AVR32_V2),
27531 + SYNTAX_NORMAL2(LD_WMI, LD_WMI, LD_WMI, INTREG, INTREG_UDISP_W, AVR32_V2),
27532 + SYNTAX_NORMAL2(LD_WPL, LD_WPL, LD_WPL, INTREG, INTREG_UDISP_W, AVR32_V2),
27533 + SYNTAX_NORMAL2(LD_WLS, LD_WLS, LD_WLS, INTREG, INTREG_UDISP_W, AVR32_V2),
27534 + SYNTAX_NORMAL2(LD_WGT, LD_WGT, LD_WGT, INTREG, INTREG_UDISP_W, AVR32_V2),
27535 + SYNTAX_NORMAL2(LD_WLE, LD_WLE, LD_WLE, INTREG, INTREG_UDISP_W, AVR32_V2),
27536 + SYNTAX_NORMAL2(LD_WHI, LD_WHI, LD_WHI, INTREG, INTREG_UDISP_W, AVR32_V2),
27537 + SYNTAX_NORMAL2(LD_WVS, LD_WVS, LD_WVS, INTREG, INTREG_UDISP_W, AVR32_V2),
27538 + SYNTAX_NORMAL2(LD_WVC, LD_WVC, LD_WVC, INTREG, INTREG_UDISP_W, AVR32_V2),
27539 + SYNTAX_NORMAL2(LD_WQS, LD_WQS, LD_WQS, INTREG, INTREG_UDISP_W, AVR32_V2),
27540 + SYNTAX_NORMAL2(LD_WAL, LD_WAL, LD_WAL, INTREG, INTREG_UDISP_W, AVR32_V2),
27541 + SYNTAX_NORMAL2(LD_WHS, LD_WHS, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
27542 + SYNTAX_NORMAL2(LD_WLO, LD_WLO, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
27543 + SYNTAX_NORMAL2(LD_SHEQ, LD_SHEQ, LD_SHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
27544 + SYNTAX_NORMAL2(LD_SHNE, LD_SHNE, LD_SHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
27545 + SYNTAX_NORMAL2(LD_SHCC, LD_SHCC, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
27546 + SYNTAX_NORMAL2(LD_SHCS, LD_SHCS, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
27547 + SYNTAX_NORMAL2(LD_SHGE, LD_SHGE, LD_SHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
27548 + SYNTAX_NORMAL2(LD_SHLT, LD_SHLT, LD_SHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
27549 + SYNTAX_NORMAL2(LD_SHMI, LD_SHMI, LD_SHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
27550 + SYNTAX_NORMAL2(LD_SHPL, LD_SHPL, LD_SHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
27551 + SYNTAX_NORMAL2(LD_SHLS, LD_SHLS, LD_SHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
27552 + SYNTAX_NORMAL2(LD_SHGT, LD_SHGT, LD_SHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
27553 + SYNTAX_NORMAL2(LD_SHLE, LD_SHLE, LD_SHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
27554 + SYNTAX_NORMAL2(LD_SHHI, LD_SHHI, LD_SHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
27555 + SYNTAX_NORMAL2(LD_SHVS, LD_SHVS, LD_SHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
27556 + SYNTAX_NORMAL2(LD_SHVC, LD_SHVC, LD_SHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
27557 + SYNTAX_NORMAL2(LD_SHQS, LD_SHQS, LD_SHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
27558 + SYNTAX_NORMAL2(LD_SHAL, LD_SHAL, LD_SHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
27559 + SYNTAX_NORMAL2(LD_SHHS, LD_SHHS, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
27560 + SYNTAX_NORMAL2(LD_SHLO, LD_SHLO, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
27561 + SYNTAX_NORMAL2(LD_UHEQ, LD_UHEQ, LD_UHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
27562 + SYNTAX_NORMAL2(LD_UHNE, LD_UHNE, LD_UHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
27563 + SYNTAX_NORMAL2(LD_UHCC, LD_UHCC, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
27564 + SYNTAX_NORMAL2(LD_UHCS, LD_UHCS, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
27565 + SYNTAX_NORMAL2(LD_UHGE, LD_UHGE, LD_UHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
27566 + SYNTAX_NORMAL2(LD_UHLT, LD_UHLT, LD_UHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
27567 + SYNTAX_NORMAL2(LD_UHMI, LD_UHMI, LD_UHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
27568 + SYNTAX_NORMAL2(LD_UHPL, LD_UHPL, LD_UHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
27569 + SYNTAX_NORMAL2(LD_UHLS, LD_UHLS, LD_UHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
27570 + SYNTAX_NORMAL2(LD_UHGT, LD_UHGT, LD_UHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
27571 + SYNTAX_NORMAL2(LD_UHLE, LD_UHLE, LD_UHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
27572 + SYNTAX_NORMAL2(LD_UHHI, LD_UHHI, LD_UHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
27573 + SYNTAX_NORMAL2(LD_UHVS, LD_UHVS, LD_UHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
27574 + SYNTAX_NORMAL2(LD_UHVC, LD_UHVC, LD_UHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
27575 + SYNTAX_NORMAL2(LD_UHQS, LD_UHQS, LD_UHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
27576 + SYNTAX_NORMAL2(LD_UHAL, LD_UHAL, LD_UHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
27577 + SYNTAX_NORMAL2(LD_UHHS, LD_UHHS, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
27578 + SYNTAX_NORMAL2(LD_UHLO, LD_UHLO, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
27579 + SYNTAX_NORMAL2(LD_SBEQ, LD_SBEQ, LD_SBEQ, INTREG, INTREG_UDISP, AVR32_V2),
27580 + SYNTAX_NORMAL2(LD_SBNE, LD_SBNE, LD_SBNE, INTREG, INTREG_UDISP, AVR32_V2),
27581 + SYNTAX_NORMAL2(LD_SBCC, LD_SBCC, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
27582 + SYNTAX_NORMAL2(LD_SBCS, LD_SBCS, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
27583 + SYNTAX_NORMAL2(LD_SBGE, LD_SBGE, LD_SBGE, INTREG, INTREG_UDISP, AVR32_V2),
27584 + SYNTAX_NORMAL2(LD_SBLT, LD_SBLT, LD_SBLT, INTREG, INTREG_UDISP, AVR32_V2),
27585 + SYNTAX_NORMAL2(LD_SBMI, LD_SBMI, LD_SBMI, INTREG, INTREG_UDISP, AVR32_V2),
27586 + SYNTAX_NORMAL2(LD_SBPL, LD_SBPL, LD_SBPL, INTREG, INTREG_UDISP, AVR32_V2),
27587 + SYNTAX_NORMAL2(LD_SBLS, LD_SBLS, LD_SBLS, INTREG, INTREG_UDISP, AVR32_V2),
27588 + SYNTAX_NORMAL2(LD_SBGT, LD_SBGT, LD_SBGT, INTREG, INTREG_UDISP, AVR32_V2),
27589 + SYNTAX_NORMAL2(LD_SBLE, LD_SBLE, LD_SBLE, INTREG, INTREG_UDISP, AVR32_V2),
27590 + SYNTAX_NORMAL2(LD_SBHI, LD_SBHI, LD_SBHI, INTREG, INTREG_UDISP, AVR32_V2),
27591 + SYNTAX_NORMAL2(LD_SBVS, LD_SBVS, LD_SBVS, INTREG, INTREG_UDISP, AVR32_V2),
27592 + SYNTAX_NORMAL2(LD_SBVC, LD_SBVC, LD_SBVC, INTREG, INTREG_UDISP, AVR32_V2),
27593 + SYNTAX_NORMAL2(LD_SBQS, LD_SBQS, LD_SBQS, INTREG, INTREG_UDISP, AVR32_V2),
27594 + SYNTAX_NORMAL2(LD_SBAL, LD_SBAL, LD_SBAL, INTREG, INTREG_UDISP, AVR32_V2),
27595 + SYNTAX_NORMAL2(LD_SBHS, LD_SBHS, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
27596 + SYNTAX_NORMAL2(LD_SBLO, LD_SBLO, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
27597 + SYNTAX_NORMAL2(LD_UBEQ, LD_UBEQ, LD_UBEQ, INTREG, INTREG_UDISP, AVR32_V2),
27598 + SYNTAX_NORMAL2(LD_UBNE, LD_UBNE, LD_UBNE, INTREG, INTREG_UDISP, AVR32_V2),
27599 + SYNTAX_NORMAL2(LD_UBCC, LD_UBCC, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
27600 + SYNTAX_NORMAL2(LD_UBCS, LD_UBCS, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
27601 + SYNTAX_NORMAL2(LD_UBGE, LD_UBGE, LD_UBGE, INTREG, INTREG_UDISP, AVR32_V2),
27602 + SYNTAX_NORMAL2(LD_UBLT, LD_UBLT, LD_UBLT, INTREG, INTREG_UDISP, AVR32_V2),
27603 + SYNTAX_NORMAL2(LD_UBMI, LD_UBMI, LD_UBMI, INTREG, INTREG_UDISP, AVR32_V2),
27604 + SYNTAX_NORMAL2(LD_UBPL, LD_UBPL, LD_UBPL, INTREG, INTREG_UDISP, AVR32_V2),
27605 + SYNTAX_NORMAL2(LD_UBLS, LD_UBLS, LD_UBLS, INTREG, INTREG_UDISP, AVR32_V2),
27606 + SYNTAX_NORMAL2(LD_UBGT, LD_UBGT, LD_UBGT, INTREG, INTREG_UDISP, AVR32_V2),
27607 + SYNTAX_NORMAL2(LD_UBLE, LD_UBLE, LD_UBLE, INTREG, INTREG_UDISP, AVR32_V2),
27608 + SYNTAX_NORMAL2(LD_UBHI, LD_UBHI, LD_UBHI, INTREG, INTREG_UDISP, AVR32_V2),
27609 + SYNTAX_NORMAL2(LD_UBVS, LD_UBVS, LD_UBVS, INTREG, INTREG_UDISP, AVR32_V2),
27610 + SYNTAX_NORMAL2(LD_UBVC, LD_UBVC, LD_UBVC, INTREG, INTREG_UDISP, AVR32_V2),
27611 + SYNTAX_NORMAL2(LD_UBQS, LD_UBQS, LD_UBQS, INTREG, INTREG_UDISP, AVR32_V2),
27612 + SYNTAX_NORMAL2(LD_UBAL, LD_UBAL, LD_UBAL, INTREG, INTREG_UDISP, AVR32_V2),
27613 + SYNTAX_NORMAL2(LD_UBHS, LD_UBHS, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
27614 + SYNTAX_NORMAL2(LD_UBLO, LD_UBLO, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
27615 + SYNTAX_NORMAL2(ST_WEQ, ST_WEQ, ST_WEQ, INTREG_UDISP_W, INTREG, AVR32_V2),
27616 + SYNTAX_NORMAL2(ST_WNE, ST_WNE, ST_WNE, INTREG_UDISP_W, INTREG, AVR32_V2),
27617 + SYNTAX_NORMAL2(ST_WCC, ST_WCC, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
27618 + SYNTAX_NORMAL2(ST_WCS, ST_WCS, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
27619 + SYNTAX_NORMAL2(ST_WGE, ST_WGE, ST_WGE, INTREG_UDISP_W, INTREG, AVR32_V2),
27620 + SYNTAX_NORMAL2(ST_WLT, ST_WLT, ST_WLT, INTREG_UDISP_W, INTREG, AVR32_V2),
27621 + SYNTAX_NORMAL2(ST_WMI, ST_WMI, ST_WMI, INTREG_UDISP_W, INTREG, AVR32_V2),
27622 + SYNTAX_NORMAL2(ST_WPL, ST_WPL, ST_WPL, INTREG_UDISP_W, INTREG, AVR32_V2),
27623 + SYNTAX_NORMAL2(ST_WLS, ST_WLS, ST_WLS, INTREG_UDISP_W, INTREG, AVR32_V2),
27624 + SYNTAX_NORMAL2(ST_WGT, ST_WGT, ST_WGT, INTREG_UDISP_W, INTREG, AVR32_V2),
27625 + SYNTAX_NORMAL2(ST_WLE, ST_WLE, ST_WLE, INTREG_UDISP_W, INTREG, AVR32_V2),
27626 + SYNTAX_NORMAL2(ST_WHI, ST_WHI, ST_WHI, INTREG_UDISP_W, INTREG, AVR32_V2),
27627 + SYNTAX_NORMAL2(ST_WVS, ST_WVS, ST_WVS, INTREG_UDISP_W, INTREG, AVR32_V2),
27628 + SYNTAX_NORMAL2(ST_WVC, ST_WVC, ST_WVC, INTREG_UDISP_W, INTREG, AVR32_V2),
27629 + SYNTAX_NORMAL2(ST_WQS, ST_WQS, ST_WQS, INTREG_UDISP_W, INTREG, AVR32_V2),
27630 + SYNTAX_NORMAL2(ST_WAL, ST_WAL, ST_WAL, INTREG_UDISP_W, INTREG, AVR32_V2),
27631 + SYNTAX_NORMAL2(ST_WHS, ST_WHS, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
27632 + SYNTAX_NORMAL2(ST_WLO, ST_WLO, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
27633 + SYNTAX_NORMAL2(ST_HEQ, ST_HEQ, ST_HEQ, INTREG_UDISP_H, INTREG, AVR32_V2),
27634 + SYNTAX_NORMAL2(ST_HNE, ST_HNE, ST_HNE, INTREG_UDISP_H, INTREG, AVR32_V2),
27635 + SYNTAX_NORMAL2(ST_HCC, ST_HCC, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
27636 + SYNTAX_NORMAL2(ST_HCS, ST_HCS, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
27637 + SYNTAX_NORMAL2(ST_HGE, ST_HGE, ST_HGE, INTREG_UDISP_H, INTREG, AVR32_V2),
27638 + SYNTAX_NORMAL2(ST_HLT, ST_HLT, ST_HLT, INTREG_UDISP_H, INTREG, AVR32_V2),
27639 + SYNTAX_NORMAL2(ST_HMI, ST_HMI, ST_HMI, INTREG_UDISP_H, INTREG, AVR32_V2),
27640 + SYNTAX_NORMAL2(ST_HPL, ST_HPL, ST_HPL, INTREG_UDISP_H, INTREG, AVR32_V2),
27641 + SYNTAX_NORMAL2(ST_HLS, ST_HLS, ST_HLS, INTREG_UDISP_H, INTREG, AVR32_V2),
27642 + SYNTAX_NORMAL2(ST_HGT, ST_HGT, ST_HGT, INTREG_UDISP_H, INTREG, AVR32_V2),
27643 + SYNTAX_NORMAL2(ST_HLE, ST_HLE, ST_HLE, INTREG_UDISP_H, INTREG, AVR32_V2),
27644 + SYNTAX_NORMAL2(ST_HHI, ST_HHI, ST_HHI, INTREG_UDISP_H, INTREG, AVR32_V2),
27645 + SYNTAX_NORMAL2(ST_HVS, ST_HVS, ST_HVS, INTREG_UDISP_H, INTREG, AVR32_V2),
27646 + SYNTAX_NORMAL2(ST_HVC, ST_HVC, ST_HVC, INTREG_UDISP_H, INTREG, AVR32_V2),
27647 + SYNTAX_NORMAL2(ST_HQS, ST_HQS, ST_HQS, INTREG_UDISP_H, INTREG, AVR32_V2),
27648 + SYNTAX_NORMAL2(ST_HAL, ST_HAL, ST_HAL, INTREG_UDISP_H, INTREG, AVR32_V2),
27649 + SYNTAX_NORMAL2(ST_HHS, ST_HHS, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
27650 + SYNTAX_NORMAL2(ST_HLO, ST_HLO, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
27651 + SYNTAX_NORMAL2(ST_BEQ, ST_BEQ, ST_BEQ, INTREG_UDISP, INTREG, AVR32_V2),
27652 + SYNTAX_NORMAL2(ST_BNE, ST_BNE, ST_BNE, INTREG_UDISP, INTREG, AVR32_V2),
27653 + SYNTAX_NORMAL2(ST_BCC, ST_BCC, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
27654 + SYNTAX_NORMAL2(ST_BCS, ST_BCS, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
27655 + SYNTAX_NORMAL2(ST_BGE, ST_BGE, ST_BGE, INTREG_UDISP, INTREG, AVR32_V2),
27656 + SYNTAX_NORMAL2(ST_BLT, ST_BLT, ST_BLT, INTREG_UDISP, INTREG, AVR32_V2),
27657 + SYNTAX_NORMAL2(ST_BMI, ST_BMI, ST_BMI, INTREG_UDISP, INTREG, AVR32_V2),
27658 + SYNTAX_NORMAL2(ST_BPL, ST_BPL, ST_BPL, INTREG_UDISP, INTREG, AVR32_V2),
27659 + SYNTAX_NORMAL2(ST_BLS, ST_BLS, ST_BLS, INTREG_UDISP, INTREG, AVR32_V2),
27660 + SYNTAX_NORMAL2(ST_BGT, ST_BGT, ST_BGT, INTREG_UDISP, INTREG, AVR32_V2),
27661 + SYNTAX_NORMAL2(ST_BLE, ST_BLE, ST_BLE, INTREG_UDISP, INTREG, AVR32_V2),
27662 + SYNTAX_NORMAL2(ST_BHI, ST_BHI, ST_BHI, INTREG_UDISP, INTREG, AVR32_V2),
27663 + SYNTAX_NORMAL2(ST_BVS, ST_BVS, ST_BVS, INTREG_UDISP, INTREG, AVR32_V2),
27664 + SYNTAX_NORMAL2(ST_BVC, ST_BVC, ST_BVC, INTREG_UDISP, INTREG, AVR32_V2),
27665 + SYNTAX_NORMAL2(ST_BQS, ST_BQS, ST_BQS, INTREG_UDISP, INTREG, AVR32_V2),
27666 + SYNTAX_NORMAL2(ST_BAL, ST_BAL, ST_BAL, INTREG_UDISP, INTREG, AVR32_V2),
27667 + SYNTAX_NORMAL2(ST_BHS, ST_BHS, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
27668 + SYNTAX_NORMAL2(ST_BLO, ST_BLO, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
27669 + SYNTAX_NORMAL2(MOVH, MOVH, MOVH, INTREG, UNSIGNED_CONST, AVR32_V2),
27670 +
27671 + };
27672 +
27673 +#define NORMAL_MNEMONIC(name, syntax, str) \
27674 + { \
27675 + AVR32_MNEMONIC_##name, str, \
27676 + &avr32_syntax_table[AVR32_SYNTAX_##syntax], \
27677 + }
27678 +#define FP_MNEMONIC(name, syntax, str) \
27679 + NORMAL_MNEMONIC(name##_S, syntax##_S, str ".s"), \
27680 + NORMAL_MNEMONIC(name##_D, syntax##_D, str ".d")
27681 +
27682 +const struct avr32_mnemonic avr32_mnemonic_table[] =
27683 + {
27684 + NORMAL_MNEMONIC(ABS, ABS, "abs"),
27685 + NORMAL_MNEMONIC(ACALL, ACALL, "acall"),
27686 + NORMAL_MNEMONIC(ACR, ACR, "acr"),
27687 + NORMAL_MNEMONIC(ADC, ADC, "adc"),
27688 + NORMAL_MNEMONIC(ADD, ADD1, "add"),
27689 + NORMAL_MNEMONIC(ADDABS, ADDABS, "addabs"),
27690 + NORMAL_MNEMONIC(ADDHH_W, ADDHH_W, "addhh.w"),
27691 + NORMAL_MNEMONIC(AND, AND1, "and"),
27692 + NORMAL_MNEMONIC(ANDH, ANDH, "andh"),
27693 + NORMAL_MNEMONIC(ANDL, ANDL, "andl"),
27694 + NORMAL_MNEMONIC(ANDN, ANDN, "andn"),
27695 + NORMAL_MNEMONIC(ASR, ASR1, "asr"),
27696 + NORMAL_MNEMONIC(BFEXTS, BFEXTS, "bfexts"),
27697 + NORMAL_MNEMONIC(BFEXTU, BFEXTU, "bfextu"),
27698 + NORMAL_MNEMONIC(BFINS, BFINS, "bfins"),
27699 + NORMAL_MNEMONIC(BLD, BLD, "bld"),
27700 + NORMAL_MNEMONIC(BREQ, BREQ1, "breq"),
27701 + NORMAL_MNEMONIC(BRNE, BRNE1, "brne"),
27702 + NORMAL_MNEMONIC(BRCC, BRCC1, "brcc"),
27703 + NORMAL_MNEMONIC(BRCS, BRCS1, "brcs"),
27704 + NORMAL_MNEMONIC(BRGE, BRGE1, "brge"),
27705 + NORMAL_MNEMONIC(BRLT, BRLT1, "brlt"),
27706 + NORMAL_MNEMONIC(BRMI, BRMI1, "brmi"),
27707 + NORMAL_MNEMONIC(BRPL, BRPL1, "brpl"),
27708 + NORMAL_MNEMONIC(BRHS, BRHS1, "brhs"),
27709 + NORMAL_MNEMONIC(BRLO, BRLO1, "brlo"),
27710 + NORMAL_MNEMONIC(BRLS, BRLS, "brls"),
27711 + NORMAL_MNEMONIC(BRGT, BRGT, "brgt"),
27712 + NORMAL_MNEMONIC(BRLE, BRLE, "brle"),
27713 + NORMAL_MNEMONIC(BRHI, BRHI, "brhi"),
27714 + NORMAL_MNEMONIC(BRVS, BRVS, "brvs"),
27715 + NORMAL_MNEMONIC(BRVC, BRVC, "brvc"),
27716 + NORMAL_MNEMONIC(BRQS, BRQS, "brqs"),
27717 + NORMAL_MNEMONIC(BRAL, BRAL, "bral"),
27718 + NORMAL_MNEMONIC(BREAKPOINT, BREAKPOINT, "breakpoint"),
27719 + NORMAL_MNEMONIC(BREV, BREV, "brev"),
27720 + NORMAL_MNEMONIC(BST, BST, "bst"),
27721 + NORMAL_MNEMONIC(CACHE, CACHE, "cache"),
27722 + NORMAL_MNEMONIC(CASTS_B, CASTS_B, "casts.b"),
27723 + NORMAL_MNEMONIC(CASTS_H, CASTS_H, "casts.h"),
27724 + NORMAL_MNEMONIC(CASTU_B, CASTU_B, "castu.b"),
27725 + NORMAL_MNEMONIC(CASTU_H, CASTU_H, "castu.h"),
27726 + NORMAL_MNEMONIC(CBR, CBR, "cbr"),
27727 + NORMAL_MNEMONIC(CLZ, CLZ, "clz"),
27728 + NORMAL_MNEMONIC(COM, COM, "com"),
27729 + NORMAL_MNEMONIC(COP, COP, "cop"),
27730 + NORMAL_MNEMONIC(CP_B, CP_B, "cp.b"),
27731 + NORMAL_MNEMONIC(CP_H, CP_H, "cp.h"),
27732 + NORMAL_MNEMONIC(CP_W, CP_W1, "cp.w"),
27733 + NORMAL_MNEMONIC(CP, CP_W1, "cp"),
27734 + NORMAL_MNEMONIC(CPC, CPC1, "cpc"),
27735 + NORMAL_MNEMONIC(CSRF, CSRF, "csrf"),
27736 + NORMAL_MNEMONIC(CSRFCZ, CSRFCZ, "csrfcz"),
27737 + NORMAL_MNEMONIC(DIVS, DIVS, "divs"),
27738 + NORMAL_MNEMONIC(DIVU, DIVU, "divu"),
27739 + NORMAL_MNEMONIC(EOR, EOR1, "eor"),
27740 + NORMAL_MNEMONIC(EORL, EORL, "eorl"),
27741 + NORMAL_MNEMONIC(EORH, EORH, "eorh"),
27742 + NORMAL_MNEMONIC(FRS, FRS, "frs"),
27743 + NORMAL_MNEMONIC(ICALL, ICALL, "icall"),
27744 + NORMAL_MNEMONIC(INCJOSP, INCJOSP, "incjosp"),
27745 + NORMAL_MNEMONIC(LD_D, LD_D1, "ld.d"),
27746 + NORMAL_MNEMONIC(LD_SB, LD_SB2, "ld.sb"),
27747 + NORMAL_MNEMONIC(LD_UB, LD_UB1, "ld.ub"),
27748 + NORMAL_MNEMONIC(LD_SH, LD_SH1, "ld.sh"),
27749 + NORMAL_MNEMONIC(LD_UH, LD_UH1, "ld.uh"),
27750 + NORMAL_MNEMONIC(LD_W, LD_W1, "ld.w"),
27751 + NORMAL_MNEMONIC(LDC_D, LDC_D3, "ldc.d"),
27752 + NORMAL_MNEMONIC(LDC_W, LDC_W3, "ldc.w"),
27753 + NORMAL_MNEMONIC(LDC0_D, LDC0_D, "ldc0.d"),
27754 + NORMAL_MNEMONIC(LDC0_W, LDC0_W, "ldc0.w"),
27755 + NORMAL_MNEMONIC(LDCM_D, LDCM_D, "ldcm.d"),
27756 + NORMAL_MNEMONIC(LDCM_W, LDCM_W, "ldcm.w"),
27757 + NORMAL_MNEMONIC(LDDPC, LDDPC, "lddpc"),
27758 + NORMAL_MNEMONIC(LDDSP, LDDSP, "lddsp"),
27759 + NORMAL_MNEMONIC(LDINS_B, LDINS_B, "ldins.b"),
27760 + NORMAL_MNEMONIC(LDINS_H, LDINS_H, "ldins.h"),
27761 + NORMAL_MNEMONIC(LDM, LDM, "ldm"),
27762 + NORMAL_MNEMONIC(LDMTS, LDMTS, "ldmts"),
27763 + NORMAL_MNEMONIC(LDSWP_SH, LDSWP_SH, "ldswp.sh"),
27764 + NORMAL_MNEMONIC(LDSWP_UH, LDSWP_UH, "ldswp.uh"),
27765 + NORMAL_MNEMONIC(LDSWP_W, LDSWP_W, "ldswp.w"),
27766 + NORMAL_MNEMONIC(LSL, LSL1, "lsl"),
27767 + NORMAL_MNEMONIC(LSR, LSR1, "lsr"),
27768 + NORMAL_MNEMONIC(MAC, MAC, "mac"),
27769 + NORMAL_MNEMONIC(MACHH_D, MACHH_D, "machh.d"),
27770 + NORMAL_MNEMONIC(MACHH_W, MACHH_W, "machh.w"),
27771 + NORMAL_MNEMONIC(MACS_D, MACS_D, "macs.d"),
27772 + NORMAL_MNEMONIC(MACSATHH_W, MACSATHH_W, "macsathh.w"),
27773 + NORMAL_MNEMONIC(MACU_D, MACUD, "macu.d"),
27774 + NORMAL_MNEMONIC(MACWH_D, MACWH_D, "macwh.d"),
27775 + NORMAL_MNEMONIC(MAX, MAX, "max"),
27776 + NORMAL_MNEMONIC(MCALL, MCALL, "mcall"),
27777 + NORMAL_MNEMONIC(MFDR, MFDR, "mfdr"),
27778 + NORMAL_MNEMONIC(MFSR, MFSR, "mfsr"),
27779 + NORMAL_MNEMONIC(MIN, MIN, "min"),
27780 + NORMAL_MNEMONIC(MOV, MOV3, "mov"),
27781 + NORMAL_MNEMONIC(MOVEQ, MOVEQ1, "moveq"),
27782 + NORMAL_MNEMONIC(MOVNE, MOVNE1, "movne"),
27783 + NORMAL_MNEMONIC(MOVCC, MOVCC1, "movcc"),
27784 + NORMAL_MNEMONIC(MOVCS, MOVCS1, "movcs"),
27785 + NORMAL_MNEMONIC(MOVGE, MOVGE1, "movge"),
27786 + NORMAL_MNEMONIC(MOVLT, MOVLT1, "movlt"),
27787 + NORMAL_MNEMONIC(MOVMI, MOVMI1, "movmi"),
27788 + NORMAL_MNEMONIC(MOVPL, MOVPL1, "movpl"),
27789 + NORMAL_MNEMONIC(MOVLS, MOVLS1, "movls"),
27790 + NORMAL_MNEMONIC(MOVGT, MOVGT1, "movgt"),
27791 + NORMAL_MNEMONIC(MOVLE, MOVLE1, "movle"),
27792 + NORMAL_MNEMONIC(MOVHI, MOVHI1, "movhi"),
27793 + NORMAL_MNEMONIC(MOVVS, MOVVS1, "movvs"),
27794 + NORMAL_MNEMONIC(MOVVC, MOVVC1, "movvc"),
27795 + NORMAL_MNEMONIC(MOVQS, MOVQS1, "movqs"),
27796 + NORMAL_MNEMONIC(MOVAL, MOVAL1, "moval"),
27797 + NORMAL_MNEMONIC(MOVHS, MOVHS1, "movhs"),
27798 + NORMAL_MNEMONIC(MOVLO, MOVLO1, "movlo"),
27799 + NORMAL_MNEMONIC(MTDR, MTDR, "mtdr"),
27800 + NORMAL_MNEMONIC(MTSR, MTSR, "mtsr"),
27801 + NORMAL_MNEMONIC(MUL, MUL1, "mul"),
27802 + NORMAL_MNEMONIC(MULHH_W, MULHH_W, "mulhh.w"),
27803 + NORMAL_MNEMONIC(MULNHH_W, MULNHH_W, "mulnhh.w"),
27804 + NORMAL_MNEMONIC(MULNWH_D, MULNWH_D, "mulnwh.d"),
27805 + NORMAL_MNEMONIC(MULS_D, MULSD, "muls.d"),
27806 + NORMAL_MNEMONIC(MULSATHH_H, MULSATHH_H, "mulsathh.h"),
27807 + NORMAL_MNEMONIC(MULSATHH_W, MULSATHH_W, "mulsathh.w"),
27808 + NORMAL_MNEMONIC(MULSATRNDHH_H, MULSATRNDHH_H, "mulsatrndhh.h"),
27809 + NORMAL_MNEMONIC(MULSATRNDWH_W, MULSATRNDWH_W, "mulsatrndwh.w"),
27810 + NORMAL_MNEMONIC(MULSATWH_W, MULSATWH_W, "mulsatwh.w"),
27811 + NORMAL_MNEMONIC(MULU_D, MULU_D, "mulu.d"),
27812 + NORMAL_MNEMONIC(MULWH_D, MULWH_D, "mulwh.d"),
27813 + NORMAL_MNEMONIC(MUSFR, MUSFR, "musfr"),
27814 + NORMAL_MNEMONIC(MUSTR, MUSTR, "mustr"),
27815 + NORMAL_MNEMONIC(MVCR_D, MVCR_D, "mvcr.d"),
27816 + NORMAL_MNEMONIC(MVCR_W, MVCR_W, "mvcr.w"),
27817 + NORMAL_MNEMONIC(MVRC_D, MVRC_D, "mvrc.d"),
27818 + NORMAL_MNEMONIC(MVRC_W, MVRC_W, "mvrc.w"),
27819 + NORMAL_MNEMONIC(NEG, NEG, "neg"),
27820 + NORMAL_MNEMONIC(NOP, NOP, "nop"),
27821 + NORMAL_MNEMONIC(OR, OR1, "or"),
27822 + NORMAL_MNEMONIC(ORH, ORH, "orh"),
27823 + NORMAL_MNEMONIC(ORL, ORL, "orl"),
27824 + NORMAL_MNEMONIC(PABS_SB, PABS_SB, "pabs.sb"),
27825 + NORMAL_MNEMONIC(PABS_SH, PABS_SH, "pabs.sh"),
27826 + NORMAL_MNEMONIC(PACKSH_SB, PACKSH_SB, "packsh.sb"),
27827 + NORMAL_MNEMONIC(PACKSH_UB, PACKSH_UB, "packsh.ub"),
27828 + NORMAL_MNEMONIC(PACKW_SH, PACKW_SH, "packw.sh"),
27829 + NORMAL_MNEMONIC(PADD_B, PADD_B, "padd.b"),
27830 + NORMAL_MNEMONIC(PADD_H, PADD_H, "padd.h"),
27831 + NORMAL_MNEMONIC(PADDH_SH, PADDH_SH, "paddh.sh"),
27832 + NORMAL_MNEMONIC(PADDH_UB, PADDH_UB, "paddh.ub"),
27833 + NORMAL_MNEMONIC(PADDS_SB, PADDS_SB, "padds.sb"),
27834 + NORMAL_MNEMONIC(PADDS_SH, PADDS_SH, "padds.sh"),
27835 + NORMAL_MNEMONIC(PADDS_UB, PADDS_UB, "padds.ub"),
27836 + NORMAL_MNEMONIC(PADDS_UH, PADDS_UH, "padds.uh"),
27837 + NORMAL_MNEMONIC(PADDSUB_H, PADDSUB_H, "paddsub.h"),
27838 + NORMAL_MNEMONIC(PADDSUBH_SH, PADDSUBH_SH, "paddsubh.sh"),
27839 + NORMAL_MNEMONIC(PADDSUBS_SH, PADDSUBS_SH, "paddsubs.sh"),
27840 + NORMAL_MNEMONIC(PADDSUBS_UH, PADDSUBS_UH, "paddsubs.uh"),
27841 + NORMAL_MNEMONIC(PADDX_H, PADDX_H, "paddx.h"),
27842 + NORMAL_MNEMONIC(PADDXH_SH, PADDXH_SH, "paddxh.sh"),
27843 + NORMAL_MNEMONIC(PADDXS_SH, PADDXS_SH, "paddxs.sh"),
27844 + NORMAL_MNEMONIC(PADDXS_UH, PADDXS_UH, "paddxs.uh"),
27845 + NORMAL_MNEMONIC(PASR_B, PASR_B, "pasr.b"),
27846 + NORMAL_MNEMONIC(PASR_H, PASR_H, "pasr.h"),
27847 + NORMAL_MNEMONIC(PAVG_SH, PAVG_SH, "pavg.sh"),
27848 + NORMAL_MNEMONIC(PAVG_UB, PAVG_UB, "pavg.ub"),
27849 + NORMAL_MNEMONIC(PLSL_B, PLSL_B, "plsl.b"),
27850 + NORMAL_MNEMONIC(PLSL_H, PLSL_H, "plsl.h"),
27851 + NORMAL_MNEMONIC(PLSR_B, PLSR_B, "plsr.b"),
27852 + NORMAL_MNEMONIC(PLSR_H, PLSR_H, "plsr.h"),
27853 + NORMAL_MNEMONIC(PMAX_SH, PMAX_SH, "pmax.sh"),
27854 + NORMAL_MNEMONIC(PMAX_UB, PMAX_UB, "pmax.ub"),
27855 + NORMAL_MNEMONIC(PMIN_SH, PMIN_SH, "pmin.sh"),
27856 + NORMAL_MNEMONIC(PMIN_UB, PMIN_UB, "pmin.ub"),
27857 + NORMAL_MNEMONIC(POPJC, POPJC, "popjc"),
27858 + NORMAL_MNEMONIC(POPM, POPM, "popm"),
27859 + NORMAL_MNEMONIC(PREF, PREF, "pref"),
27860 + NORMAL_MNEMONIC(PSAD, PSAD, "psad"),
27861 + NORMAL_MNEMONIC(PSUB_B, PSUB_B, "psub.b"),
27862 + NORMAL_MNEMONIC(PSUB_H, PSUB_H, "psub.h"),
27863 + NORMAL_MNEMONIC(PSUBADD_H, PSUBADD_H, "psubadd.h"),
27864 + NORMAL_MNEMONIC(PSUBADDH_SH, PSUBADDH_SH, "psubaddh.sh"),
27865 + NORMAL_MNEMONIC(PSUBADDS_SH, PSUBADDS_SH, "psubadds.sh"),
27866 + NORMAL_MNEMONIC(PSUBADDS_UH, PSUBADDS_UH, "psubadds.uh"),
27867 + NORMAL_MNEMONIC(PSUBH_SH, PSUBH_SH, "psubh.sh"),
27868 + NORMAL_MNEMONIC(PSUBH_UB, PSUBH_UB, "psubh.ub"),
27869 + NORMAL_MNEMONIC(PSUBS_SB, PSUBS_SB, "psubs.sb"),
27870 + NORMAL_MNEMONIC(PSUBS_SH, PSUBS_SH, "psubs.sh"),
27871 + NORMAL_MNEMONIC(PSUBS_UB, PSUBS_UB, "psubs.ub"),
27872 + NORMAL_MNEMONIC(PSUBS_UH, PSUBS_UH, "psubs.uh"),
27873 + NORMAL_MNEMONIC(PSUBX_H, PSUBX_H, "psubx.h"),
27874 + NORMAL_MNEMONIC(PSUBXH_SH, PSUBXH_SH, "psubxh.sh"),
27875 + NORMAL_MNEMONIC(PSUBXS_SH, PSUBXS_SH, "psubxs.sh"),
27876 + NORMAL_MNEMONIC(PSUBXS_UH, PSUBXS_UH, "psubxs.uh"),
27877 + NORMAL_MNEMONIC(PUNPCKSB_H, PUNPCKSB_H, "punpcksb.h"),
27878 + NORMAL_MNEMONIC(PUNPCKUB_H, PUNPCKUB_H, "punpckub.h"),
27879 + NORMAL_MNEMONIC(PUSHJC, PUSHJC, "pushjc"),
27880 + NORMAL_MNEMONIC(PUSHM, PUSHM, "pushm"),
27881 + NORMAL_MNEMONIC(RCALL, RCALL1, "rcall"),
27882 + NORMAL_MNEMONIC(RETEQ, RETEQ, "reteq"),
27883 + NORMAL_MNEMONIC(RETNE, RETNE, "retne"),
27884 + NORMAL_MNEMONIC(RETCC, RETCC, "retcc"),
27885 + NORMAL_MNEMONIC(RETCS, RETCS, "retcs"),
27886 + NORMAL_MNEMONIC(RETGE, RETGE, "retge"),
27887 + NORMAL_MNEMONIC(RETLT, RETLT, "retlt"),
27888 + NORMAL_MNEMONIC(RETMI, RETMI, "retmi"),
27889 + NORMAL_MNEMONIC(RETPL, RETPL, "retpl"),
27890 + NORMAL_MNEMONIC(RETLS, RETLS, "retls"),
27891 + NORMAL_MNEMONIC(RETGT, RETGT, "retgt"),
27892 + NORMAL_MNEMONIC(RETLE, RETLE, "retle"),
27893 + NORMAL_MNEMONIC(RETHI, RETHI, "rethi"),
27894 + NORMAL_MNEMONIC(RETVS, RETVS, "retvs"),
27895 + NORMAL_MNEMONIC(RETVC, RETVC, "retvc"),
27896 + NORMAL_MNEMONIC(RETQS, RETQS, "retqs"),
27897 + NORMAL_MNEMONIC(RETAL, RETAL, "retal"),
27898 + NORMAL_MNEMONIC(RETHS, RETHS, "reths"),
27899 + NORMAL_MNEMONIC(RETLO, RETLO, "retlo"),
27900 + NORMAL_MNEMONIC(RET, RETAL, "ret"),
27901 + NORMAL_MNEMONIC(RETD, RETD, "retd"),
27902 + NORMAL_MNEMONIC(RETE, RETE, "rete"),
27903 + NORMAL_MNEMONIC(RETJ, RETJ, "retj"),
27904 + NORMAL_MNEMONIC(RETS, RETS, "rets"),
27905 + NORMAL_MNEMONIC(RJMP, RJMP, "rjmp"),
27906 + NORMAL_MNEMONIC(ROL, ROL, "rol"),
27907 + NORMAL_MNEMONIC(ROR, ROR, "ror"),
27908 + NORMAL_MNEMONIC(RSUB, RSUB1, "rsub"),
27909 + NORMAL_MNEMONIC(SATADD_H, SATADD_H, "satadd.h"),
27910 + NORMAL_MNEMONIC(SATADD_W, SATADD_W, "satadd.w"),
27911 + NORMAL_MNEMONIC(SATRNDS, SATRNDS, "satrnds"),
27912 + NORMAL_MNEMONIC(SATRNDU, SATRNDU, "satrndu"),
27913 + NORMAL_MNEMONIC(SATS, SATS, "sats"),
27914 + NORMAL_MNEMONIC(SATSUB_H, SATSUB_H, "satsub.h"),
27915 + NORMAL_MNEMONIC(SATSUB_W, SATSUB_W1, "satsub.w"),
27916 + NORMAL_MNEMONIC(SATU, SATU, "satu"),
27917 + NORMAL_MNEMONIC(SBC, SBC, "sbc"),
27918 + NORMAL_MNEMONIC(SBR, SBR, "sbr"),
27919 + NORMAL_MNEMONIC(SCALL, SCALL, "scall"),
27920 + NORMAL_MNEMONIC(SCR, SCR, "scr"),
27921 + NORMAL_MNEMONIC(SLEEP, SLEEP, "sleep"),
27922 + NORMAL_MNEMONIC(SREQ, SREQ, "sreq"),
27923 + NORMAL_MNEMONIC(SRNE, SRNE, "srne"),
27924 + NORMAL_MNEMONIC(SRCC, SRCC, "srcc"),
27925 + NORMAL_MNEMONIC(SRCS, SRCS, "srcs"),
27926 + NORMAL_MNEMONIC(SRGE, SRGE, "srge"),
27927 + NORMAL_MNEMONIC(SRLT, SRLT, "srlt"),
27928 + NORMAL_MNEMONIC(SRMI, SRMI, "srmi"),
27929 + NORMAL_MNEMONIC(SRPL, SRPL, "srpl"),
27930 + NORMAL_MNEMONIC(SRLS, SRLS, "srls"),
27931 + NORMAL_MNEMONIC(SRGT, SRGT, "srgt"),
27932 + NORMAL_MNEMONIC(SRLE, SRLE, "srle"),
27933 + NORMAL_MNEMONIC(SRHI, SRHI, "srhi"),
27934 + NORMAL_MNEMONIC(SRVS, SRVS, "srvs"),
27935 + NORMAL_MNEMONIC(SRVC, SRVC, "srvc"),
27936 + NORMAL_MNEMONIC(SRQS, SRQS, "srqs"),
27937 + NORMAL_MNEMONIC(SRAL, SRAL, "sral"),
27938 + NORMAL_MNEMONIC(SRHS, SRHS, "srhs"),
27939 + NORMAL_MNEMONIC(SRLO, SRLO, "srlo"),
27940 + NORMAL_MNEMONIC(SSRF, SSRF, "ssrf"),
27941 + NORMAL_MNEMONIC(ST_B, ST_B1, "st.b"),
27942 + NORMAL_MNEMONIC(ST_D, ST_D1, "st.d"),
27943 + NORMAL_MNEMONIC(ST_H, ST_H1, "st.h"),
27944 + NORMAL_MNEMONIC(ST_W, ST_W1, "st.w"),
27945 + NORMAL_MNEMONIC(STC_D, STC_D3, "stc.d"),
27946 + NORMAL_MNEMONIC(STC_W, STC_W3, "stc.w"),
27947 + NORMAL_MNEMONIC(STC0_D, STC0_D, "stc0.d"),
27948 + NORMAL_MNEMONIC(STC0_W, STC0_W, "stc0.w"),
27949 + NORMAL_MNEMONIC(STCM_D, STCM_D, "stcm.d"),
27950 + NORMAL_MNEMONIC(STCM_W, STCM_W, "stcm.w"),
27951 + NORMAL_MNEMONIC(STCOND, STCOND, "stcond"),
27952 + NORMAL_MNEMONIC(STDSP, STDSP, "stdsp"),
27953 + NORMAL_MNEMONIC(STHH_W, STHH_W2, "sthh.w"),
27954 + NORMAL_MNEMONIC(STM, STM, "stm"),
27955 + NORMAL_MNEMONIC(STMTS, STMTS, "stmts"),
27956 + NORMAL_MNEMONIC(STSWP_H, STSWP_H, "stswp.h"),
27957 + NORMAL_MNEMONIC(STSWP_W, STSWP_W, "stswp.w"),
27958 + NORMAL_MNEMONIC(SUB, SUB1, "sub"),
27959 + NORMAL_MNEMONIC(SUBEQ, SUBEQ, "subeq"),
27960 + NORMAL_MNEMONIC(SUBNE, SUBNE, "subne"),
27961 + NORMAL_MNEMONIC(SUBCC, SUBCC, "subcc"),
27962 + NORMAL_MNEMONIC(SUBCS, SUBCS, "subcs"),
27963 + NORMAL_MNEMONIC(SUBGE, SUBGE, "subge"),
27964 + NORMAL_MNEMONIC(SUBLT, SUBLT, "sublt"),
27965 + NORMAL_MNEMONIC(SUBMI, SUBMI, "submi"),
27966 + NORMAL_MNEMONIC(SUBPL, SUBPL, "subpl"),
27967 + NORMAL_MNEMONIC(SUBLS, SUBLS, "subls"),
27968 + NORMAL_MNEMONIC(SUBGT, SUBGT, "subgt"),
27969 + NORMAL_MNEMONIC(SUBLE, SUBLE, "suble"),
27970 + NORMAL_MNEMONIC(SUBHI, SUBHI, "subhi"),
27971 + NORMAL_MNEMONIC(SUBVS, SUBVS, "subvs"),
27972 + NORMAL_MNEMONIC(SUBVC, SUBVC, "subvc"),
27973 + NORMAL_MNEMONIC(SUBQS, SUBQS, "subqs"),
27974 + NORMAL_MNEMONIC(SUBAL, SUBAL, "subal"),
27975 + NORMAL_MNEMONIC(SUBHS, SUBHS, "subhs"),
27976 + NORMAL_MNEMONIC(SUBLO, SUBLO, "sublo"),
27977 + NORMAL_MNEMONIC(SUBFEQ, SUBFEQ, "subfeq"),
27978 + NORMAL_MNEMONIC(SUBFNE, SUBFNE, "subfne"),
27979 + NORMAL_MNEMONIC(SUBFCC, SUBFCC, "subfcc"),
27980 + NORMAL_MNEMONIC(SUBFCS, SUBFCS, "subfcs"),
27981 + NORMAL_MNEMONIC(SUBFGE, SUBFGE, "subfge"),
27982 + NORMAL_MNEMONIC(SUBFLT, SUBFLT, "subflt"),
27983 + NORMAL_MNEMONIC(SUBFMI, SUBFMI, "subfmi"),
27984 + NORMAL_MNEMONIC(SUBFPL, SUBFPL, "subfpl"),
27985 + NORMAL_MNEMONIC(SUBFLS, SUBFLS, "subfls"),
27986 + NORMAL_MNEMONIC(SUBFGT, SUBFGT, "subfgt"),
27987 + NORMAL_MNEMONIC(SUBFLE, SUBFLE, "subfle"),
27988 + NORMAL_MNEMONIC(SUBFHI, SUBFHI, "subfhi"),
27989 + NORMAL_MNEMONIC(SUBFVS, SUBFVS, "subfvs"),
27990 + NORMAL_MNEMONIC(SUBFVC, SUBFVC, "subfvc"),
27991 + NORMAL_MNEMONIC(SUBFQS, SUBFQS, "subfqs"),
27992 + NORMAL_MNEMONIC(SUBFAL, SUBFAL, "subfal"),
27993 + NORMAL_MNEMONIC(SUBFHS, SUBFHS, "subfhs"),
27994 + NORMAL_MNEMONIC(SUBFLO, SUBFLO, "subflo"),
27995 + NORMAL_MNEMONIC(SUBHH_W, SUBHH_W, "subhh.w"),
27996 + NORMAL_MNEMONIC(SWAP_B, SWAP_B, "swap.b"),
27997 + NORMAL_MNEMONIC(SWAP_BH, SWAP_BH, "swap.bh"),
27998 + NORMAL_MNEMONIC(SWAP_H, SWAP_H, "swap.h"),
27999 + NORMAL_MNEMONIC(SYNC, SYNC, "sync"),
28000 + NORMAL_MNEMONIC(TLBR, TLBR, "tlbr"),
28001 + NORMAL_MNEMONIC(TLBS, TLBS, "tlbs"),
28002 + NORMAL_MNEMONIC(TLBW, TLBW, "tlbw"),
28003 + NORMAL_MNEMONIC(TNBZ, TNBZ, "tnbz"),
28004 + NORMAL_MNEMONIC(TST, TST, "tst"),
28005 + NORMAL_MNEMONIC(XCHG, XCHG, "xchg"),
28006 + NORMAL_MNEMONIC(MEMC, MEMC, "memc"),
28007 + NORMAL_MNEMONIC(MEMS, MEMS, "mems"),
28008 + NORMAL_MNEMONIC(MEMT, MEMT, "memt"),
28009 + FP_MNEMONIC(FADD, FADD, "fadd"),
28010 + FP_MNEMONIC(FSUB, FSUB, "fsub"),
28011 + FP_MNEMONIC(FMAC, FMAC, "fmac"),
28012 + FP_MNEMONIC(FNMAC, FNMAC, "fnmac"),
28013 + FP_MNEMONIC(FMSC, FMSC, "fmsc"),
28014 + FP_MNEMONIC(FNMSC, FNMSC, "fnmsc"),
28015 + FP_MNEMONIC(FMUL, FMUL, "fmul"),
28016 + FP_MNEMONIC(FNMUL, FNMUL, "fnmul"),
28017 + FP_MNEMONIC(FNEG, FNEG, "fneg"),
28018 + FP_MNEMONIC(FABS, FABS, "fabs"),
28019 + FP_MNEMONIC(FCMP, FCMP, "fcmp"),
28020 + FP_MNEMONIC(FMOV, FMOV1, "fmov"),
28021 + NORMAL_MNEMONIC(FCASTS_D, FCASTS_D, "fcasts.d"),
28022 + NORMAL_MNEMONIC(FCASTD_S, FCASTD_S, "fcastd.s"),
28023 + NORMAL_MNEMONIC(LDA_W, LDA_W, "lda.w"),
28024 + NORMAL_MNEMONIC(CALL, CALL, "call"),
28025 + NORMAL_MNEMONIC(PICOSVMAC, PICOSVMAC0, "picosvmac"),
28026 + NORMAL_MNEMONIC(PICOSVMUL, PICOSVMUL0, "picosvmul"),
28027 + NORMAL_MNEMONIC(PICOVMAC, PICOVMAC0, "picovmac"),
28028 + NORMAL_MNEMONIC(PICOVMUL, PICOVMUL0, "picovmul"),
28029 + NORMAL_MNEMONIC(PICOLD_D, PICOLD_D2, "picold.d"),
28030 + NORMAL_MNEMONIC(PICOLD_W, PICOLD_W2, "picold.w"),
28031 + NORMAL_MNEMONIC(PICOLDM_D, PICOLDM_D, "picoldm.d"),
28032 + NORMAL_MNEMONIC(PICOLDM_W, PICOLDM_W, "picoldm.w"),
28033 + NORMAL_MNEMONIC(PICOMV_D, PICOMV_D1, "picomv.d"),
28034 + NORMAL_MNEMONIC(PICOMV_W, PICOMV_W1, "picomv.w"),
28035 + NORMAL_MNEMONIC(PICOST_D, PICOST_D2, "picost.d"),
28036 + NORMAL_MNEMONIC(PICOST_W, PICOST_W2, "picost.w"),
28037 + NORMAL_MNEMONIC(PICOSTM_D, PICOSTM_D, "picostm.d"),
28038 + NORMAL_MNEMONIC(PICOSTM_W, PICOSTM_W, "picostm.w"),
28039 + NORMAL_MNEMONIC(RSUBEQ, RSUBEQ, "rsubeq"),
28040 + NORMAL_MNEMONIC(RSUBNE, RSUBNE, "rsubne"),
28041 + NORMAL_MNEMONIC(RSUBCC, RSUBCC, "rsubcc"),
28042 + NORMAL_MNEMONIC(RSUBCS, RSUBCS, "rsubcs"),
28043 + NORMAL_MNEMONIC(RSUBGE, RSUBGE, "rsubge"),
28044 + NORMAL_MNEMONIC(RSUBLT, RSUBLT, "rsublt"),
28045 + NORMAL_MNEMONIC(RSUBMI, RSUBMI, "rsubmi"),
28046 + NORMAL_MNEMONIC(RSUBPL, RSUBPL, "rsubpl"),
28047 + NORMAL_MNEMONIC(RSUBLS, RSUBLS, "rsubls"),
28048 + NORMAL_MNEMONIC(RSUBGT, RSUBGT, "rsubgt"),
28049 + NORMAL_MNEMONIC(RSUBLE, RSUBLE, "rsuble"),
28050 + NORMAL_MNEMONIC(RSUBHI, RSUBHI, "rsubhi"),
28051 + NORMAL_MNEMONIC(RSUBVS, RSUBVS, "rsubvs"),
28052 + NORMAL_MNEMONIC(RSUBVC, RSUBVC, "rsubvc"),
28053 + NORMAL_MNEMONIC(RSUBQS, RSUBQS, "rsubqs"),
28054 + NORMAL_MNEMONIC(RSUBAL, RSUBAL, "rsubal"),
28055 + NORMAL_MNEMONIC(RSUBHS, RSUBHS, "rsubhs"),
28056 + NORMAL_MNEMONIC(RSUBLO, RSUBLO, "rsublo"),
28057 + NORMAL_MNEMONIC(ADDEQ, ADDEQ, "addeq"),
28058 + NORMAL_MNEMONIC(ADDNE, ADDNE, "addne"),
28059 + NORMAL_MNEMONIC(ADDCC, ADDCC, "addcc"),
28060 + NORMAL_MNEMONIC(ADDCS, ADDCS, "addcs"),
28061 + NORMAL_MNEMONIC(ADDGE, ADDGE, "addge"),
28062 + NORMAL_MNEMONIC(ADDLT, ADDLT, "addlt"),
28063 + NORMAL_MNEMONIC(ADDMI, ADDMI, "addmi"),
28064 + NORMAL_MNEMONIC(ADDPL, ADDPL, "addpl"),
28065 + NORMAL_MNEMONIC(ADDLS, ADDLS, "addls"),
28066 + NORMAL_MNEMONIC(ADDGT, ADDGT, "addgt"),
28067 + NORMAL_MNEMONIC(ADDLE, ADDLE, "addle"),
28068 + NORMAL_MNEMONIC(ADDHI, ADDHI, "addhi"),
28069 + NORMAL_MNEMONIC(ADDVS, ADDVS, "addvs"),
28070 + NORMAL_MNEMONIC(ADDVC, ADDVC, "addvc"),
28071 + NORMAL_MNEMONIC(ADDQS, ADDQS, "addqs"),
28072 + NORMAL_MNEMONIC(ADDAL, ADDAL, "addal"),
28073 + NORMAL_MNEMONIC(ADDHS, ADDHS, "addhs"),
28074 + NORMAL_MNEMONIC(ADDLO, ADDLO, "addlo"),
28075 + NORMAL_MNEMONIC(ANDEQ, ANDEQ, "andeq"),
28076 + NORMAL_MNEMONIC(ANDNE, ANDNE, "andne"),
28077 + NORMAL_MNEMONIC(ANDCC, ANDCC, "andcc"),
28078 + NORMAL_MNEMONIC(ANDCS, ANDCS, "andcs"),
28079 + NORMAL_MNEMONIC(ANDGE, ANDGE, "andge"),
28080 + NORMAL_MNEMONIC(ANDLT, ANDLT, "andlt"),
28081 + NORMAL_MNEMONIC(ANDMI, ANDMI, "andmi"),
28082 + NORMAL_MNEMONIC(ANDPL, ANDPL, "andpl"),
28083 + NORMAL_MNEMONIC(ANDLS, ANDLS, "andls"),
28084 + NORMAL_MNEMONIC(ANDGT, ANDGT, "andgt"),
28085 + NORMAL_MNEMONIC(ANDLE, ANDLE, "andle"),
28086 + NORMAL_MNEMONIC(ANDHI, ANDHI, "andhi"),
28087 + NORMAL_MNEMONIC(ANDVS, ANDVS, "andvs"),
28088 + NORMAL_MNEMONIC(ANDVC, ANDVC, "andvc"),
28089 + NORMAL_MNEMONIC(ANDQS, ANDQS, "andqs"),
28090 + NORMAL_MNEMONIC(ANDAL, ANDAL, "andal"),
28091 + NORMAL_MNEMONIC(ANDHS, ANDHS, "andhs"),
28092 + NORMAL_MNEMONIC(ANDLO, ANDLO, "andlo"),
28093 + NORMAL_MNEMONIC(OREQ, OREQ, "oreq"),
28094 + NORMAL_MNEMONIC(ORNE, ORNE, "orne"),
28095 + NORMAL_MNEMONIC(ORCC, ORCC, "orcc"),
28096 + NORMAL_MNEMONIC(ORCS, ORCS, "orcs"),
28097 + NORMAL_MNEMONIC(ORGE, ORGE, "orge"),
28098 + NORMAL_MNEMONIC(ORLT, ORLT, "orlt"),
28099 + NORMAL_MNEMONIC(ORMI, ORMI, "ormi"),
28100 + NORMAL_MNEMONIC(ORPL, ORPL, "orpl"),
28101 + NORMAL_MNEMONIC(ORLS, ORLS, "orls"),
28102 + NORMAL_MNEMONIC(ORGT, ORGT, "orgt"),
28103 + NORMAL_MNEMONIC(ORLE, ORLE, "orle"),
28104 + NORMAL_MNEMONIC(ORHI, ORHI, "orhi"),
28105 + NORMAL_MNEMONIC(ORVS, ORVS, "orvs"),
28106 + NORMAL_MNEMONIC(ORVC, ORVC, "orvc"),
28107 + NORMAL_MNEMONIC(ORQS, ORQS, "orqs"),
28108 + NORMAL_MNEMONIC(ORAL, ORAL, "oral"),
28109 + NORMAL_MNEMONIC(ORHS, ORHS, "orhs"),
28110 + NORMAL_MNEMONIC(ORLO, ORLO, "orlo"),
28111 + NORMAL_MNEMONIC(EOREQ, EOREQ, "eoreq"),
28112 + NORMAL_MNEMONIC(EORNE, EORNE, "eorne"),
28113 + NORMAL_MNEMONIC(EORCC, EORCC, "eorcc"),
28114 + NORMAL_MNEMONIC(EORCS, EORCS, "eorcs"),
28115 + NORMAL_MNEMONIC(EORGE, EORGE, "eorge"),
28116 + NORMAL_MNEMONIC(EORLT, EORLT, "eorlt"),
28117 + NORMAL_MNEMONIC(EORMI, EORMI, "eormi"),
28118 + NORMAL_MNEMONIC(EORPL, EORPL, "eorpl"),
28119 + NORMAL_MNEMONIC(EORLS, EORLS, "eorls"),
28120 + NORMAL_MNEMONIC(EORGT, EORGT, "eorgt"),
28121 + NORMAL_MNEMONIC(EORLE, EORLE, "eorle"),
28122 + NORMAL_MNEMONIC(EORHI, EORHI, "eorhi"),
28123 + NORMAL_MNEMONIC(EORVS, EORVS, "eorvs"),
28124 + NORMAL_MNEMONIC(EORVC, EORVC, "eorvc"),
28125 + NORMAL_MNEMONIC(EORQS, EORQS, "eorqs"),
28126 + NORMAL_MNEMONIC(EORAL, EORAL, "eoral"),
28127 + NORMAL_MNEMONIC(EORHS, EORHS, "eorhs"),
28128 + NORMAL_MNEMONIC(EORLO, EORLO, "eorlo"),
28129 + NORMAL_MNEMONIC(LD_WEQ, LD_WEQ, "ld.weq"),
28130 + NORMAL_MNEMONIC(LD_WNE, LD_WNE, "ld.wne"),
28131 + NORMAL_MNEMONIC(LD_WCC, LD_WCC, "ld.wcc"),
28132 + NORMAL_MNEMONIC(LD_WCS, LD_WCS, "ld.wcs"),
28133 + NORMAL_MNEMONIC(LD_WGE, LD_WGE, "ld.wge"),
28134 + NORMAL_MNEMONIC(LD_WLT, LD_WLT, "ld.wlt"),
28135 + NORMAL_MNEMONIC(LD_WMI, LD_WMI, "ld.wmi"),
28136 + NORMAL_MNEMONIC(LD_WPL, LD_WPL, "ld.wpl"),
28137 + NORMAL_MNEMONIC(LD_WLS, LD_WLS, "ld.wls"),
28138 + NORMAL_MNEMONIC(LD_WGT, LD_WGT, "ld.wgt"),
28139 + NORMAL_MNEMONIC(LD_WLE, LD_WLE, "ld.wle"),
28140 + NORMAL_MNEMONIC(LD_WHI, LD_WHI, "ld.whi"),
28141 + NORMAL_MNEMONIC(LD_WVS, LD_WVS, "ld.wvs"),
28142 + NORMAL_MNEMONIC(LD_WVC, LD_WVC, "ld.wvc"),
28143 + NORMAL_MNEMONIC(LD_WQS, LD_WQS, "ld.wqs"),
28144 + NORMAL_MNEMONIC(LD_WAL, LD_WAL, "ld.wal"),
28145 + NORMAL_MNEMONIC(LD_WHS, LD_WHS, "ld.whs"),
28146 + NORMAL_MNEMONIC(LD_WLO, LD_WLO, "ld.wlo"),
28147 + NORMAL_MNEMONIC(LD_SHEQ, LD_SHEQ, "ld.sheq"),
28148 + NORMAL_MNEMONIC(LD_SHNE, LD_SHNE, "ld.shne"),
28149 + NORMAL_MNEMONIC(LD_SHCC, LD_SHCC, "ld.shcc"),
28150 + NORMAL_MNEMONIC(LD_SHCS, LD_SHCS, "ld.shcs"),
28151 + NORMAL_MNEMONIC(LD_SHGE, LD_SHGE, "ld.shge"),
28152 + NORMAL_MNEMONIC(LD_SHLT, LD_SHLT, "ld.shlt"),
28153 + NORMAL_MNEMONIC(LD_SHMI, LD_SHMI, "ld.shmi"),
28154 + NORMAL_MNEMONIC(LD_SHPL, LD_SHPL, "ld.shpl"),
28155 + NORMAL_MNEMONIC(LD_SHLS, LD_SHLS, "ld.shls"),
28156 + NORMAL_MNEMONIC(LD_SHGT, LD_SHGT, "ld.shgt"),
28157 + NORMAL_MNEMONIC(LD_SHLE, LD_SHLE, "ld.shle"),
28158 + NORMAL_MNEMONIC(LD_SHHI, LD_SHHI, "ld.shhi"),
28159 + NORMAL_MNEMONIC(LD_SHVS, LD_SHVS, "ld.shvs"),
28160 + NORMAL_MNEMONIC(LD_SHVC, LD_SHVC, "ld.shvc"),
28161 + NORMAL_MNEMONIC(LD_SHQS, LD_SHQS, "ld.shqs"),
28162 + NORMAL_MNEMONIC(LD_SHAL, LD_SHAL, "ld.shal"),
28163 + NORMAL_MNEMONIC(LD_SHHS, LD_SHHS, "ld.shhs"),
28164 + NORMAL_MNEMONIC(LD_SHLO, LD_SHLO, "ld.shlo"),
28165 + NORMAL_MNEMONIC(LD_UHEQ, LD_UHEQ, "ld.uheq"),
28166 + NORMAL_MNEMONIC(LD_UHNE, LD_UHNE, "ld.uhne"),
28167 + NORMAL_MNEMONIC(LD_UHCC, LD_UHCC, "ld.uhcc"),
28168 + NORMAL_MNEMONIC(LD_UHCS, LD_UHCS, "ld.uhcs"),
28169 + NORMAL_MNEMONIC(LD_UHGE, LD_UHGE, "ld.uhge"),
28170 + NORMAL_MNEMONIC(LD_UHLT, LD_UHLT, "ld.uhlt"),
28171 + NORMAL_MNEMONIC(LD_UHMI, LD_UHMI, "ld.uhmi"),
28172 + NORMAL_MNEMONIC(LD_UHPL, LD_UHPL, "ld.uhpl"),
28173 + NORMAL_MNEMONIC(LD_UHLS, LD_UHLS, "ld.uhls"),
28174 + NORMAL_MNEMONIC(LD_UHGT, LD_UHGT, "ld.uhgt"),
28175 + NORMAL_MNEMONIC(LD_UHLE, LD_UHLE, "ld.uhle"),
28176 + NORMAL_MNEMONIC(LD_UHHI, LD_UHHI, "ld.uhhi"),
28177 + NORMAL_MNEMONIC(LD_UHVS, LD_UHVS, "ld.uhvs"),
28178 + NORMAL_MNEMONIC(LD_UHVC, LD_UHVC, "ld.uhvc"),
28179 + NORMAL_MNEMONIC(LD_UHQS, LD_UHQS, "ld.uhqs"),
28180 + NORMAL_MNEMONIC(LD_UHAL, LD_UHAL, "ld.uhal"),
28181 + NORMAL_MNEMONIC(LD_UHHS, LD_UHHS, "ld.uhhs"),
28182 + NORMAL_MNEMONIC(LD_UHLO, LD_UHLO, "ld.uhlo"),
28183 + NORMAL_MNEMONIC(LD_SBEQ, LD_SBEQ, "ld.sbeq"),
28184 + NORMAL_MNEMONIC(LD_SBNE, LD_SBNE, "ld.sbne"),
28185 + NORMAL_MNEMONIC(LD_SBCC, LD_SBCC, "ld.sbcc"),
28186 + NORMAL_MNEMONIC(LD_SBCS, LD_SBCS, "ld.sbcs"),
28187 + NORMAL_MNEMONIC(LD_SBGE, LD_SBGE, "ld.sbge"),
28188 + NORMAL_MNEMONIC(LD_SBLT, LD_SBLT, "ld.sblt"),
28189 + NORMAL_MNEMONIC(LD_SBMI, LD_SBMI, "ld.sbmi"),
28190 + NORMAL_MNEMONIC(LD_SBPL, LD_SBPL, "ld.sbpl"),
28191 + NORMAL_MNEMONIC(LD_SBLS, LD_SBLS, "ld.sbls"),
28192 + NORMAL_MNEMONIC(LD_SBGT, LD_SBGT, "ld.sbgt"),
28193 + NORMAL_MNEMONIC(LD_SBLE, LD_SBLE, "ld.sble"),
28194 + NORMAL_MNEMONIC(LD_SBHI, LD_SBHI, "ld.sbhi"),
28195 + NORMAL_MNEMONIC(LD_SBVS, LD_SBVS, "ld.sbvs"),
28196 + NORMAL_MNEMONIC(LD_SBVC, LD_SBVC, "ld.sbvc"),
28197 + NORMAL_MNEMONIC(LD_SBQS, LD_SBQS, "ld.sbqs"),
28198 + NORMAL_MNEMONIC(LD_SBAL, LD_SBAL, "ld.sbal"),
28199 + NORMAL_MNEMONIC(LD_SBHS, LD_SBHS, "ld.sbhs"),
28200 + NORMAL_MNEMONIC(LD_SBLO, LD_SBLO, "ld.sblo"),
28201 + NORMAL_MNEMONIC(LD_UBEQ, LD_UBEQ, "ld.ubeq"),
28202 + NORMAL_MNEMONIC(LD_UBNE, LD_UBNE, "ld.ubne"),
28203 + NORMAL_MNEMONIC(LD_UBCC, LD_UBCC, "ld.ubcc"),
28204 + NORMAL_MNEMONIC(LD_UBCS, LD_UBCS, "ld.ubcs"),
28205 + NORMAL_MNEMONIC(LD_UBGE, LD_UBGE, "ld.ubge"),
28206 + NORMAL_MNEMONIC(LD_UBLT, LD_UBLT, "ld.ublt"),
28207 + NORMAL_MNEMONIC(LD_UBMI, LD_UBMI, "ld.ubmi"),
28208 + NORMAL_MNEMONIC(LD_UBPL, LD_UBPL, "ld.ubpl"),
28209 + NORMAL_MNEMONIC(LD_UBLS, LD_UBLS, "ld.ubls"),
28210 + NORMAL_MNEMONIC(LD_UBGT, LD_UBGT, "ld.ubgt"),
28211 + NORMAL_MNEMONIC(LD_UBLE, LD_UBLE, "ld.uble"),
28212 + NORMAL_MNEMONIC(LD_UBHI, LD_UBHI, "ld.ubhi"),
28213 + NORMAL_MNEMONIC(LD_UBVS, LD_UBVS, "ld.ubvs"),
28214 + NORMAL_MNEMONIC(LD_UBVC, LD_UBVC, "ld.ubvc"),
28215 + NORMAL_MNEMONIC(LD_UBQS, LD_UBQS, "ld.ubqs"),
28216 + NORMAL_MNEMONIC(LD_UBAL, LD_UBAL, "ld.ubal"),
28217 + NORMAL_MNEMONIC(LD_UBHS, LD_UBHS, "ld.ubhs"),
28218 + NORMAL_MNEMONIC(LD_UBLO, LD_UBLO, "ld.ublo"),
28219 + NORMAL_MNEMONIC(ST_WEQ, ST_WEQ, "st.weq"),
28220 + NORMAL_MNEMONIC(ST_WNE, ST_WNE, "st.wne"),
28221 + NORMAL_MNEMONIC(ST_WCC, ST_WCC, "st.wcc"),
28222 + NORMAL_MNEMONIC(ST_WCS, ST_WCS, "st.wcs"),
28223 + NORMAL_MNEMONIC(ST_WGE, ST_WGE, "st.wge"),
28224 + NORMAL_MNEMONIC(ST_WLT, ST_WLT, "st.wlt"),
28225 + NORMAL_MNEMONIC(ST_WMI, ST_WMI, "st.wmi"),
28226 + NORMAL_MNEMONIC(ST_WPL, ST_WPL, "st.wpl"),
28227 + NORMAL_MNEMONIC(ST_WLS, ST_WLS, "st.wls"),
28228 + NORMAL_MNEMONIC(ST_WGT, ST_WGT, "st.wgt"),
28229 + NORMAL_MNEMONIC(ST_WLE, ST_WLE, "st.wle"),
28230 + NORMAL_MNEMONIC(ST_WHI, ST_WHI, "st.whi"),
28231 + NORMAL_MNEMONIC(ST_WVS, ST_WVS, "st.wvs"),
28232 + NORMAL_MNEMONIC(ST_WVC, ST_WVC, "st.wvc"),
28233 + NORMAL_MNEMONIC(ST_WQS, ST_WQS, "st.wqs"),
28234 + NORMAL_MNEMONIC(ST_WAL, ST_WAL, "st.wal"),
28235 + NORMAL_MNEMONIC(ST_WHS, ST_WHS, "st.whs"),
28236 + NORMAL_MNEMONIC(ST_WLO, ST_WLO, "st.wlo"),
28237 + NORMAL_MNEMONIC(ST_HEQ, ST_HEQ, "st.heq"),
28238 + NORMAL_MNEMONIC(ST_HNE, ST_HNE, "st.hne"),
28239 + NORMAL_MNEMONIC(ST_HCC, ST_HCC, "st.hcc"),
28240 + NORMAL_MNEMONIC(ST_HCS, ST_HCS, "st.hcs"),
28241 + NORMAL_MNEMONIC(ST_HGE, ST_HGE, "st.hge"),
28242 + NORMAL_MNEMONIC(ST_HLT, ST_HLT, "st.hlt"),
28243 + NORMAL_MNEMONIC(ST_HMI, ST_HMI, "st.hmi"),
28244 + NORMAL_MNEMONIC(ST_HPL, ST_HPL, "st.hpl"),
28245 + NORMAL_MNEMONIC(ST_HLS, ST_HLS, "st.hls"),
28246 + NORMAL_MNEMONIC(ST_HGT, ST_HGT, "st.hgt"),
28247 + NORMAL_MNEMONIC(ST_HLE, ST_HLE, "st.hle"),
28248 + NORMAL_MNEMONIC(ST_HHI, ST_HHI, "st.hhi"),
28249 + NORMAL_MNEMONIC(ST_HVS, ST_HVS, "st.hvs"),
28250 + NORMAL_MNEMONIC(ST_HVC, ST_HVC, "st.hvc"),
28251 + NORMAL_MNEMONIC(ST_HQS, ST_HQS, "st.hqs"),
28252 + NORMAL_MNEMONIC(ST_HAL, ST_HAL, "st.hal"),
28253 + NORMAL_MNEMONIC(ST_HHS, ST_HHS, "st.hhs"),
28254 + NORMAL_MNEMONIC(ST_HLO, ST_HLO, "st.hlo"),
28255 + NORMAL_MNEMONIC(ST_BEQ, ST_BEQ, "st.beq"),
28256 + NORMAL_MNEMONIC(ST_BNE, ST_BNE, "st.bne"),
28257 + NORMAL_MNEMONIC(ST_BCC, ST_BCC, "st.bcc"),
28258 + NORMAL_MNEMONIC(ST_BCS, ST_BCS, "st.bcs"),
28259 + NORMAL_MNEMONIC(ST_BGE, ST_BGE, "st.bge"),
28260 + NORMAL_MNEMONIC(ST_BLT, ST_BLT, "st.blt"),
28261 + NORMAL_MNEMONIC(ST_BMI, ST_BMI, "st.bmi"),
28262 + NORMAL_MNEMONIC(ST_BPL, ST_BPL, "st.bpl"),
28263 + NORMAL_MNEMONIC(ST_BLS, ST_BLS, "st.bls"),
28264 + NORMAL_MNEMONIC(ST_BGT, ST_BGT, "st.bgt"),
28265 + NORMAL_MNEMONIC(ST_BLE, ST_BLE, "st.ble"),
28266 + NORMAL_MNEMONIC(ST_BHI, ST_BHI, "st.bhi"),
28267 + NORMAL_MNEMONIC(ST_BVS, ST_BVS, "st.bvs"),
28268 + NORMAL_MNEMONIC(ST_BVC, ST_BVC, "st.bvc"),
28269 + NORMAL_MNEMONIC(ST_BQS, ST_BQS, "st.bqs"),
28270 + NORMAL_MNEMONIC(ST_BAL, ST_BAL, "st.bal"),
28271 + NORMAL_MNEMONIC(ST_BHS, ST_BHS, "st.bhs"),
28272 + NORMAL_MNEMONIC(ST_BLO, ST_BLO, "st.blo"),
28273 + NORMAL_MNEMONIC(MOVH, MOVH, "movh"),
28274 +
28275 + };
28276 +#undef NORMAL_MNEMONIC
28277 +#undef ALIAS_MNEMONIC
28278 +#undef FP_MNEMONIC
28279 Index: binutils-2.18/opcodes/avr32-opc.h
28280 ===================================================================
28281 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
28282 +++ binutils-2.18/opcodes/avr32-opc.h 2008-11-25 15:25:40.000000000 +0100
28283 @@ -0,0 +1,2370 @@
28284 +/* Opcode tables for AVR32.
28285 + Copyright 2005, 2006 Atmel Corporation.
28286 +
28287 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
28288 +
28289 + This file is part of libopcodes.
28290 +
28291 + This program is free software; you can redistribute it and/or
28292 + modify it under the terms of the GNU General Public License as
28293 + published by the Free Software Foundation; either version 2 of the
28294 + License, or (at your option) any later version.
28295 +
28296 + This program is distributed in the hope that it will be useful, but
28297 + WITHOUT ANY WARRANTY; without even the implied warranty of
28298 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28299 + General Public License for more details.
28300 +
28301 + You should have received a copy of the GNU General Public License
28302 + along with this program; if not, write to the Free Software
28303 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
28304 + 02111-1307, USA. */
28305 +
28306 +#include "bfd.h"
28307 +
28308 +#define AVR32_MAX_OPERANDS 8
28309 +#define AVR32_MAX_FIELDS 8
28310 +
28311 +#define AVR32_V1 (1 << 1)
28312 +#define AVR32_SIMD (1 << 2)
28313 +#define AVR32_DSP (1 << 3)
28314 +#define AVR32_RMW (1 << 4)
28315 +#define AVR32_V2 (1 << 5)
28316 +#define AVR32_FP (1 << 16)
28317 +#define AVR32_PICO (1 << 17)
28318 +
28319 +/* Registers we commonly refer to */
28320 +#define AVR32_REG_R12 12
28321 +#define AVR32_REG_SP 13
28322 +#define AVR32_REG_LR 14
28323 +#define AVR32_REG_PC 15
28324 +
28325 +struct avr32_ifield
28326 +{
28327 + int id;
28328 + unsigned short bitsize;
28329 + unsigned short shift;
28330 + unsigned long mask;
28331 +
28332 + /* If the value doesn't fit, it will be truncated with no warning */
28333 + void (*insert)(const struct avr32_ifield *, void *, unsigned long);
28334 + void (*extract)(const struct avr32_ifield *, void *, unsigned long *);
28335 +};
28336 +
28337 +struct avr32_opcode
28338 +{
28339 + int id;
28340 + int size;
28341 + unsigned long value;
28342 + unsigned long mask;
28343 + const struct avr32_syntax *syntax;
28344 + bfd_reloc_code_real_type reloc_type;
28345 + unsigned int nr_fields;
28346 + /* if relaxable, which field is variable, otherwise -1 */
28347 + int var_field;
28348 + const struct avr32_ifield *fields[AVR32_MAX_FIELDS];
28349 +};
28350 +
28351 +struct avr32_alias
28352 +{
28353 + int id;
28354 + const struct avr32_opcode *opc;
28355 + struct {
28356 + int is_opindex;
28357 + unsigned long value;
28358 + } operand_map[AVR32_MAX_OPERANDS];
28359 +};
28360 +
28361 +struct avr32_syntax
28362 +{
28363 + int id;
28364 + unsigned long isa_flags;
28365 + const struct avr32_mnemonic *mnemonic;
28366 + int type;
28367 + union {
28368 + const struct avr32_opcode *opc;
28369 + const struct avr32_alias *alias;
28370 + } u;
28371 + const struct avr32_syntax *next;
28372 + /* negative means "vararg" */
28373 + int nr_operands;
28374 + int operand[AVR32_MAX_OPERANDS];
28375 +};
28376 +
28377 +#if 0
28378 +#define AVR32_ALIAS_MAKE_CONST(val) ((val) | 0x80000000UL)
28379 +#define AVR32_ALIAS_IS_CONST(mapval) (((mapval) & 0x80000000UL) != 0)
28380 +#define AVR32_ALIAS_GET_CONST(mapval) ((mapval) & ~0x80000000UL)
28381 +#endif
28382 +
28383 +struct avr32_mnemonic
28384 +{
28385 + int id;
28386 + const char *name;
28387 + const struct avr32_syntax *syntax;
28388 +};
28389 +
28390 +extern const struct avr32_ifield avr32_ifield_table[];
28391 +extern struct avr32_opcode avr32_opc_table[];
28392 +extern const struct avr32_syntax avr32_syntax_table[];
28393 +extern const struct avr32_alias avr32_alias_table[];
28394 +extern const struct avr32_mnemonic avr32_mnemonic_table[];
28395 +
28396 +extern void avr32_insert_simple(const struct avr32_ifield *field,
28397 + void *buf, unsigned long value);
28398 +extern void avr32_insert_bit5c(const struct avr32_ifield *field,
28399 + void *buf, unsigned long value);
28400 +extern void avr32_insert_k10(const struct avr32_ifield *field,
28401 + void *buf, unsigned long value);
28402 +extern void avr32_insert_k21(const struct avr32_ifield *field,
28403 + void *buf, unsigned long value);
28404 +extern void avr32_insert_cpop(const struct avr32_ifield *field,
28405 + void *buf, unsigned long value);
28406 +extern void avr32_insert_k12cp(const struct avr32_ifield *field,
28407 + void *buf, unsigned long value);
28408 +
28409 +extern void avr32_extract_simple(const struct avr32_ifield *field,
28410 + void *buf, unsigned long *value);
28411 +extern void avr32_extract_bit5c(const struct avr32_ifield *field,
28412 + void *buf, unsigned long *value);
28413 +extern void avr32_extract_k10(const struct avr32_ifield *field,
28414 + void *buf, unsigned long *value);
28415 +extern void avr32_extract_k21(const struct avr32_ifield *field,
28416 + void *buf, unsigned long *value);
28417 +extern void avr32_extract_cpop(const struct avr32_ifield *field,
28418 + void *buf, unsigned long *value);
28419 +extern void avr32_extract_k12cp(const struct avr32_ifield *field,
28420 + void *buf, unsigned long *value);
28421 +
28422 +enum avr32_operand_type
28423 +{
28424 + AVR32_OPERAND_INTREG, /* just a register */
28425 + AVR32_OPERAND_INTREG_PREDEC, /* register with pre-decrement */
28426 + AVR32_OPERAND_INTREG_POSTINC, /* register with post-increment */
28427 + AVR32_OPERAND_INTREG_LSL, /* register with left shift */
28428 + AVR32_OPERAND_INTREG_LSR, /* register with right shift */
28429 + AVR32_OPERAND_INTREG_BSEL, /* register with byte selector */
28430 + AVR32_OPERAND_INTREG_HSEL, /* register with halfword selector */
28431 + AVR32_OPERAND_INTREG_SDISP, /* Rp[signed disp] */
28432 + AVR32_OPERAND_INTREG_SDISP_H, /* Rp[signed hword-aligned disp] */
28433 + AVR32_OPERAND_INTREG_SDISP_W, /* Rp[signed word-aligned disp] */
28434 + AVR32_OPERAND_INTREG_UDISP, /* Rp[unsigned disp] */
28435 + AVR32_OPERAND_INTREG_UDISP_H, /* Rp[unsigned hword-aligned disp] */
28436 + AVR32_OPERAND_INTREG_UDISP_W, /* Rp[unsigned word-aligned disp] */
28437 + AVR32_OPERAND_INTREG_INDEX, /* Rp[Ri << sa] */
28438 + AVR32_OPERAND_INTREG_XINDEX, /* Rp[Ri:bytesel << 2] */
28439 + AVR32_OPERAND_DWREG, /* Even-numbered register */
28440 + AVR32_OPERAND_PC_UDISP_W, /* PC[unsigned word-aligned disp] or label */
28441 + AVR32_OPERAND_SP, /* Just SP */
28442 + AVR32_OPERAND_SP_UDISP_W, /* SP[unsigned word-aligned disp] */
28443 + AVR32_OPERAND_CPNO,
28444 + AVR32_OPERAND_CPREG,
28445 + AVR32_OPERAND_CPREG_D,
28446 + AVR32_OPERAND_UNSIGNED_CONST,
28447 + AVR32_OPERAND_UNSIGNED_CONST_W,
28448 + AVR32_OPERAND_SIGNED_CONST,
28449 + AVR32_OPERAND_SIGNED_CONST_W,
28450 + AVR32_OPERAND_JMPLABEL,
28451 + AVR32_OPERAND_UNSIGNED_NUMBER,
28452 + AVR32_OPERAND_UNSIGNED_NUMBER_W,
28453 + AVR32_OPERAND_REGLIST8,
28454 + AVR32_OPERAND_REGLIST9,
28455 + AVR32_OPERAND_REGLIST16,
28456 + AVR32_OPERAND_REGLIST_LDM,
28457 + AVR32_OPERAND_REGLIST_CP8,
28458 + AVR32_OPERAND_REGLIST_CPD8,
28459 + AVR32_OPERAND_RETVAL,
28460 + AVR32_OPERAND_MCALL,
28461 + AVR32_OPERAND_JOSPINC,
28462 + AVR32_OPERAND_COH,
28463 + AVR32_OPERAND_FPREG_S,
28464 + AVR32_OPERAND_FPREG_D,
28465 + AVR32_OPERAND_PICO_REG_W,
28466 + AVR32_OPERAND_PICO_REG_D,
28467 + AVR32_OPERAND_PICO_REGLIST_W,
28468 + AVR32_OPERAND_PICO_REGLIST_D,
28469 + AVR32_OPERAND_PICO_IN,
28470 + AVR32_OPERAND_PICO_OUT0,
28471 + AVR32_OPERAND_PICO_OUT1,
28472 + AVR32_OPERAND_PICO_OUT2,
28473 + AVR32_OPERAND_PICO_OUT3,
28474 + AVR32_OPERAND__END_
28475 +};
28476 +#define AVR32_OPERAND_UNKNOWN AVR32_OPERAND__END_
28477 +#define AVR32_NR_OPERANDS AVR32_OPERAND__END_
28478 +
28479 +enum avr32_ifield_type
28480 +{
28481 + AVR32_IFIELD_RX,
28482 + AVR32_IFIELD_RY,
28483 + AVR32_IFIELD_COND4C,
28484 + AVR32_IFIELD_K8C,
28485 + AVR32_IFIELD_K7C,
28486 + AVR32_IFIELD_K5C,
28487 + AVR32_IFIELD_K3,
28488 + AVR32_IFIELD_RY_DW,
28489 + AVR32_IFIELD_COND4E,
28490 + AVR32_IFIELD_K8E,
28491 + AVR32_IFIELD_BIT5C,
28492 + AVR32_IFIELD_COND3,
28493 + AVR32_IFIELD_K10,
28494 + AVR32_IFIELD_POPM,
28495 + AVR32_IFIELD_K2,
28496 + AVR32_IFIELD_RD_E,
28497 + AVR32_IFIELD_RD_DW,
28498 + AVR32_IFIELD_X,
28499 + AVR32_IFIELD_Y,
28500 + AVR32_IFIELD_X2,
28501 + AVR32_IFIELD_Y2,
28502 + AVR32_IFIELD_K5E,
28503 + AVR32_IFIELD_PART2,
28504 + AVR32_IFIELD_PART1,
28505 + AVR32_IFIELD_K16,
28506 + AVR32_IFIELD_CACHEOP,
28507 + AVR32_IFIELD_K11,
28508 + AVR32_IFIELD_K21,
28509 + AVR32_IFIELD_CPOP,
28510 + AVR32_IFIELD_CPNO,
28511 + AVR32_IFIELD_CRD_RI,
28512 + AVR32_IFIELD_CRX,
28513 + AVR32_IFIELD_CRY,
28514 + AVR32_IFIELD_K7E,
28515 + AVR32_IFIELD_CRD_DW,
28516 + AVR32_IFIELD_PART1_K12,
28517 + AVR32_IFIELD_PART2_K12,
28518 + AVR32_IFIELD_K12,
28519 + AVR32_IFIELD_S5,
28520 + AVR32_IFIELD_K5E2,
28521 + AVR32_IFIELD_K4,
28522 + AVR32_IFIELD_COND4E2,
28523 + AVR32_IFIELD_K8E2,
28524 + AVR32_IFIELD_K6,
28525 + AVR32_IFIELD_MEM15,
28526 + AVR32_IFIELD_MEMB5,
28527 + AVR32_IFIELD_W,
28528 + AVR32_IFIELD_CM_HL,
28529 + AVR32_IFIELD_K12CP,
28530 + AVR32_IFIELD_K9E,
28531 + AVR32_IFIELD__END_,
28532 +};
28533 +#define AVR32_NR_IFIELDS AVR32_IFIELD__END_
28534 +
28535 +enum avr32_opc_type
28536 +{
28537 + AVR32_OPC_ABS,
28538 + AVR32_OPC_ACALL,
28539 + AVR32_OPC_ACR,
28540 + AVR32_OPC_ADC,
28541 + AVR32_OPC_ADD1,
28542 + AVR32_OPC_ADD2,
28543 + AVR32_OPC_ADDABS,
28544 + AVR32_OPC_ADDHH_W,
28545 + AVR32_OPC_AND1,
28546 + AVR32_OPC_AND2,
28547 + AVR32_OPC_AND3,
28548 + AVR32_OPC_ANDH,
28549 + AVR32_OPC_ANDH_COH,
28550 + AVR32_OPC_ANDL,
28551 + AVR32_OPC_ANDL_COH,
28552 + AVR32_OPC_ANDN,
28553 + AVR32_OPC_ASR1,
28554 + AVR32_OPC_ASR3,
28555 + AVR32_OPC_ASR2,
28556 + AVR32_OPC_BLD,
28557 + AVR32_OPC_BREQ1,
28558 + AVR32_OPC_BRNE1,
28559 + AVR32_OPC_BRCC1,
28560 + AVR32_OPC_BRCS1,
28561 + AVR32_OPC_BRGE1,
28562 + AVR32_OPC_BRLT1,
28563 + AVR32_OPC_BRMI1,
28564 + AVR32_OPC_BRPL1,
28565 + AVR32_OPC_BREQ2,
28566 + AVR32_OPC_BRNE2,
28567 + AVR32_OPC_BRCC2,
28568 + AVR32_OPC_BRCS2,
28569 + AVR32_OPC_BRGE2,
28570 + AVR32_OPC_BRLT2,
28571 + AVR32_OPC_BRMI2,
28572 + AVR32_OPC_BRPL2,
28573 + AVR32_OPC_BRLS,
28574 + AVR32_OPC_BRGT,
28575 + AVR32_OPC_BRLE,
28576 + AVR32_OPC_BRHI,
28577 + AVR32_OPC_BRVS,
28578 + AVR32_OPC_BRVC,
28579 + AVR32_OPC_BRQS,
28580 + AVR32_OPC_BRAL,
28581 + AVR32_OPC_BREAKPOINT,
28582 + AVR32_OPC_BREV,
28583 + AVR32_OPC_BST,
28584 + AVR32_OPC_CACHE,
28585 + AVR32_OPC_CASTS_B,
28586 + AVR32_OPC_CASTS_H,
28587 + AVR32_OPC_CASTU_B,
28588 + AVR32_OPC_CASTU_H,
28589 + AVR32_OPC_CBR,
28590 + AVR32_OPC_CLZ,
28591 + AVR32_OPC_COM,
28592 + AVR32_OPC_COP,
28593 + AVR32_OPC_CP_B,
28594 + AVR32_OPC_CP_H,
28595 + AVR32_OPC_CP_W1,
28596 + AVR32_OPC_CP_W2,
28597 + AVR32_OPC_CP_W3,
28598 + AVR32_OPC_CPC1,
28599 + AVR32_OPC_CPC2,
28600 + AVR32_OPC_CSRF,
28601 + AVR32_OPC_CSRFCZ,
28602 + AVR32_OPC_DIVS,
28603 + AVR32_OPC_DIVU,
28604 + AVR32_OPC_EOR1,
28605 + AVR32_OPC_EOR2,
28606 + AVR32_OPC_EOR3,
28607 + AVR32_OPC_EORL,
28608 + AVR32_OPC_EORH,
28609 + AVR32_OPC_FRS,
28610 + AVR32_OPC_ICALL,
28611 + AVR32_OPC_INCJOSP,
28612 + AVR32_OPC_LD_D1,
28613 + AVR32_OPC_LD_D2,
28614 + AVR32_OPC_LD_D3,
28615 + AVR32_OPC_LD_D5,
28616 + AVR32_OPC_LD_D4,
28617 + AVR32_OPC_LD_SB2,
28618 + AVR32_OPC_LD_SB1,
28619 + AVR32_OPC_LD_UB1,
28620 + AVR32_OPC_LD_UB2,
28621 + AVR32_OPC_LD_UB5,
28622 + AVR32_OPC_LD_UB3,
28623 + AVR32_OPC_LD_UB4,
28624 + AVR32_OPC_LD_SH1,
28625 + AVR32_OPC_LD_SH2,
28626 + AVR32_OPC_LD_SH5,
28627 + AVR32_OPC_LD_SH3,
28628 + AVR32_OPC_LD_SH4,
28629 + AVR32_OPC_LD_UH1,
28630 + AVR32_OPC_LD_UH2,
28631 + AVR32_OPC_LD_UH5,
28632 + AVR32_OPC_LD_UH3,
28633 + AVR32_OPC_LD_UH4,
28634 + AVR32_OPC_LD_W1,
28635 + AVR32_OPC_LD_W2,
28636 + AVR32_OPC_LD_W5,
28637 + AVR32_OPC_LD_W6,
28638 + AVR32_OPC_LD_W3,
28639 + AVR32_OPC_LD_W4,
28640 + AVR32_OPC_LDC_D1,
28641 + AVR32_OPC_LDC_D2,
28642 + AVR32_OPC_LDC_D3,
28643 + AVR32_OPC_LDC_W1,
28644 + AVR32_OPC_LDC_W2,
28645 + AVR32_OPC_LDC_W3,
28646 + AVR32_OPC_LDC0_D,
28647 + AVR32_OPC_LDC0_W,
28648 + AVR32_OPC_LDCM_D,
28649 + AVR32_OPC_LDCM_D_PU,
28650 + AVR32_OPC_LDCM_W,
28651 + AVR32_OPC_LDCM_W_PU,
28652 + AVR32_OPC_LDDPC,
28653 + AVR32_OPC_LDDPC_EXT,
28654 + AVR32_OPC_LDDSP,
28655 + AVR32_OPC_LDINS_B,
28656 + AVR32_OPC_LDINS_H,
28657 + AVR32_OPC_LDM,
28658 + AVR32_OPC_LDMTS,
28659 + AVR32_OPC_LDMTS_PU,
28660 + AVR32_OPC_LDSWP_SH,
28661 + AVR32_OPC_LDSWP_UH,
28662 + AVR32_OPC_LDSWP_W,
28663 + AVR32_OPC_LSL1,
28664 + AVR32_OPC_LSL3,
28665 + AVR32_OPC_LSL2,
28666 + AVR32_OPC_LSR1,
28667 + AVR32_OPC_LSR3,
28668 + AVR32_OPC_LSR2,
28669 + AVR32_OPC_MAC,
28670 + AVR32_OPC_MACHH_D,
28671 + AVR32_OPC_MACHH_W,
28672 + AVR32_OPC_MACS_D,
28673 + AVR32_OPC_MACSATHH_W,
28674 + AVR32_OPC_MACUD,
28675 + AVR32_OPC_MACWH_D,
28676 + AVR32_OPC_MAX,
28677 + AVR32_OPC_MCALL,
28678 + AVR32_OPC_MFDR,
28679 + AVR32_OPC_MFSR,
28680 + AVR32_OPC_MIN,
28681 + AVR32_OPC_MOV3,
28682 + AVR32_OPC_MOV1,
28683 + AVR32_OPC_MOV2,
28684 + AVR32_OPC_MOVEQ1,
28685 + AVR32_OPC_MOVNE1,
28686 + AVR32_OPC_MOVCC1,
28687 + AVR32_OPC_MOVCS1,
28688 + AVR32_OPC_MOVGE1,
28689 + AVR32_OPC_MOVLT1,
28690 + AVR32_OPC_MOVMI1,
28691 + AVR32_OPC_MOVPL1,
28692 + AVR32_OPC_MOVLS1,
28693 + AVR32_OPC_MOVGT1,
28694 + AVR32_OPC_MOVLE1,
28695 + AVR32_OPC_MOVHI1,
28696 + AVR32_OPC_MOVVS1,
28697 + AVR32_OPC_MOVVC1,
28698 + AVR32_OPC_MOVQS1,
28699 + AVR32_OPC_MOVAL1,
28700 + AVR32_OPC_MOVEQ2,
28701 + AVR32_OPC_MOVNE2,
28702 + AVR32_OPC_MOVCC2,
28703 + AVR32_OPC_MOVCS2,
28704 + AVR32_OPC_MOVGE2,
28705 + AVR32_OPC_MOVLT2,
28706 + AVR32_OPC_MOVMI2,
28707 + AVR32_OPC_MOVPL2,
28708 + AVR32_OPC_MOVLS2,
28709 + AVR32_OPC_MOVGT2,
28710 + AVR32_OPC_MOVLE2,
28711 + AVR32_OPC_MOVHI2,
28712 + AVR32_OPC_MOVVS2,
28713 + AVR32_OPC_MOVVC2,
28714 + AVR32_OPC_MOVQS2,
28715 + AVR32_OPC_MOVAL2,
28716 + AVR32_OPC_MTDR,
28717 + AVR32_OPC_MTSR,
28718 + AVR32_OPC_MUL1,
28719 + AVR32_OPC_MUL2,
28720 + AVR32_OPC_MUL3,
28721 + AVR32_OPC_MULHH_W,
28722 + AVR32_OPC_MULNHH_W,
28723 + AVR32_OPC_MULNWH_D,
28724 + AVR32_OPC_MULSD,
28725 + AVR32_OPC_MULSATHH_H,
28726 + AVR32_OPC_MULSATHH_W,
28727 + AVR32_OPC_MULSATRNDHH_H,
28728 + AVR32_OPC_MULSATRNDWH_W,
28729 + AVR32_OPC_MULSATWH_W,
28730 + AVR32_OPC_MULU_D,
28731 + AVR32_OPC_MULWH_D,
28732 + AVR32_OPC_MUSFR,
28733 + AVR32_OPC_MUSTR,
28734 + AVR32_OPC_MVCR_D,
28735 + AVR32_OPC_MVCR_W,
28736 + AVR32_OPC_MVRC_D,
28737 + AVR32_OPC_MVRC_W,
28738 + AVR32_OPC_NEG,
28739 + AVR32_OPC_NOP,
28740 + AVR32_OPC_OR1,
28741 + AVR32_OPC_OR2,
28742 + AVR32_OPC_OR3,
28743 + AVR32_OPC_ORH,
28744 + AVR32_OPC_ORL,
28745 + AVR32_OPC_PABS_SB,
28746 + AVR32_OPC_PABS_SH,
28747 + AVR32_OPC_PACKSH_SB,
28748 + AVR32_OPC_PACKSH_UB,
28749 + AVR32_OPC_PACKW_SH,
28750 + AVR32_OPC_PADD_B,
28751 + AVR32_OPC_PADD_H,
28752 + AVR32_OPC_PADDH_SH,
28753 + AVR32_OPC_PADDH_UB,
28754 + AVR32_OPC_PADDS_SB,
28755 + AVR32_OPC_PADDS_SH,
28756 + AVR32_OPC_PADDS_UB,
28757 + AVR32_OPC_PADDS_UH,
28758 + AVR32_OPC_PADDSUB_H,
28759 + AVR32_OPC_PADDSUBH_SH,
28760 + AVR32_OPC_PADDSUBS_SH,
28761 + AVR32_OPC_PADDSUBS_UH,
28762 + AVR32_OPC_PADDX_H,
28763 + AVR32_OPC_PADDXH_SH,
28764 + AVR32_OPC_PADDXS_SH,
28765 + AVR32_OPC_PADDXS_UH,
28766 + AVR32_OPC_PASR_B,
28767 + AVR32_OPC_PASR_H,
28768 + AVR32_OPC_PAVG_SH,
28769 + AVR32_OPC_PAVG_UB,
28770 + AVR32_OPC_PLSL_B,
28771 + AVR32_OPC_PLSL_H,
28772 + AVR32_OPC_PLSR_B,
28773 + AVR32_OPC_PLSR_H,
28774 + AVR32_OPC_PMAX_SH,
28775 + AVR32_OPC_PMAX_UB,
28776 + AVR32_OPC_PMIN_SH,
28777 + AVR32_OPC_PMIN_UB,
28778 + AVR32_OPC_POPJC,
28779 + AVR32_OPC_POPM,
28780 + AVR32_OPC_POPM_E,
28781 + AVR32_OPC_PREF,
28782 + AVR32_OPC_PSAD,
28783 + AVR32_OPC_PSUB_B,
28784 + AVR32_OPC_PSUB_H,
28785 + AVR32_OPC_PSUBADD_H,
28786 + AVR32_OPC_PSUBADDH_SH,
28787 + AVR32_OPC_PSUBADDS_SH,
28788 + AVR32_OPC_PSUBADDS_UH,
28789 + AVR32_OPC_PSUBH_SH,
28790 + AVR32_OPC_PSUBH_UB,
28791 + AVR32_OPC_PSUBS_SB,
28792 + AVR32_OPC_PSUBS_SH,
28793 + AVR32_OPC_PSUBS_UB,
28794 + AVR32_OPC_PSUBS_UH,
28795 + AVR32_OPC_PSUBX_H,
28796 + AVR32_OPC_PSUBXH_SH,
28797 + AVR32_OPC_PSUBXS_SH,
28798 + AVR32_OPC_PSUBXS_UH,
28799 + AVR32_OPC_PUNPCKSB_H,
28800 + AVR32_OPC_PUNPCKUB_H,
28801 + AVR32_OPC_PUSHJC,
28802 + AVR32_OPC_PUSHM,
28803 + AVR32_OPC_PUSHM_E,
28804 + AVR32_OPC_RCALL1,
28805 + AVR32_OPC_RCALL2,
28806 + AVR32_OPC_RETEQ,
28807 + AVR32_OPC_RETNE,
28808 + AVR32_OPC_RETCC,
28809 + AVR32_OPC_RETCS,
28810 + AVR32_OPC_RETGE,
28811 + AVR32_OPC_RETLT,
28812 + AVR32_OPC_RETMI,
28813 + AVR32_OPC_RETPL,
28814 + AVR32_OPC_RETLS,
28815 + AVR32_OPC_RETGT,
28816 + AVR32_OPC_RETLE,
28817 + AVR32_OPC_RETHI,
28818 + AVR32_OPC_RETVS,
28819 + AVR32_OPC_RETVC,
28820 + AVR32_OPC_RETQS,
28821 + AVR32_OPC_RETAL,
28822 + AVR32_OPC_RETD,
28823 + AVR32_OPC_RETE,
28824 + AVR32_OPC_RETJ,
28825 + AVR32_OPC_RETS,
28826 + AVR32_OPC_RJMP,
28827 + AVR32_OPC_ROL,
28828 + AVR32_OPC_ROR,
28829 + AVR32_OPC_RSUB1,
28830 + AVR32_OPC_RSUB2,
28831 + AVR32_OPC_SATADD_H,
28832 + AVR32_OPC_SATADD_W,
28833 + AVR32_OPC_SATRNDS,
28834 + AVR32_OPC_SATRNDU,
28835 + AVR32_OPC_SATS,
28836 + AVR32_OPC_SATSUB_H,
28837 + AVR32_OPC_SATSUB_W1,
28838 + AVR32_OPC_SATSUB_W2,
28839 + AVR32_OPC_SATU,
28840 + AVR32_OPC_SBC,
28841 + AVR32_OPC_SBR,
28842 + AVR32_OPC_SCALL,
28843 + AVR32_OPC_SCR,
28844 + AVR32_OPC_SLEEP,
28845 + AVR32_OPC_SREQ,
28846 + AVR32_OPC_SRNE,
28847 + AVR32_OPC_SRCC,
28848 + AVR32_OPC_SRCS,
28849 + AVR32_OPC_SRGE,
28850 + AVR32_OPC_SRLT,
28851 + AVR32_OPC_SRMI,
28852 + AVR32_OPC_SRPL,
28853 + AVR32_OPC_SRLS,
28854 + AVR32_OPC_SRGT,
28855 + AVR32_OPC_SRLE,
28856 + AVR32_OPC_SRHI,
28857 + AVR32_OPC_SRVS,
28858 + AVR32_OPC_SRVC,
28859 + AVR32_OPC_SRQS,
28860 + AVR32_OPC_SRAL,
28861 + AVR32_OPC_SSRF,
28862 + AVR32_OPC_ST_B1,
28863 + AVR32_OPC_ST_B2,
28864 + AVR32_OPC_ST_B5,
28865 + AVR32_OPC_ST_B3,
28866 + AVR32_OPC_ST_B4,
28867 + AVR32_OPC_ST_D1,
28868 + AVR32_OPC_ST_D2,
28869 + AVR32_OPC_ST_D3,
28870 + AVR32_OPC_ST_D5,
28871 + AVR32_OPC_ST_D4,
28872 + AVR32_OPC_ST_H1,
28873 + AVR32_OPC_ST_H2,
28874 + AVR32_OPC_ST_H5,
28875 + AVR32_OPC_ST_H3,
28876 + AVR32_OPC_ST_H4,
28877 + AVR32_OPC_ST_W1,
28878 + AVR32_OPC_ST_W2,
28879 + AVR32_OPC_ST_W5,
28880 + AVR32_OPC_ST_W3,
28881 + AVR32_OPC_ST_W4,
28882 + AVR32_OPC_STC_D1,
28883 + AVR32_OPC_STC_D2,
28884 + AVR32_OPC_STC_D3,
28885 + AVR32_OPC_STC_W1,
28886 + AVR32_OPC_STC_W2,
28887 + AVR32_OPC_STC_W3,
28888 + AVR32_OPC_STC0_D,
28889 + AVR32_OPC_STC0_W,
28890 + AVR32_OPC_STCM_D,
28891 + AVR32_OPC_STCM_D_PU,
28892 + AVR32_OPC_STCM_W,
28893 + AVR32_OPC_STCM_W_PU,
28894 + AVR32_OPC_STCOND,
28895 + AVR32_OPC_STDSP,
28896 + AVR32_OPC_STHH_W2,
28897 + AVR32_OPC_STHH_W1,
28898 + AVR32_OPC_STM,
28899 + AVR32_OPC_STM_PU,
28900 + AVR32_OPC_STMTS,
28901 + AVR32_OPC_STMTS_PU,
28902 + AVR32_OPC_STSWP_H,
28903 + AVR32_OPC_STSWP_W,
28904 + AVR32_OPC_SUB1,
28905 + AVR32_OPC_SUB2,
28906 + AVR32_OPC_SUB5,
28907 + AVR32_OPC_SUB3_SP,
28908 + AVR32_OPC_SUB3,
28909 + AVR32_OPC_SUB4,
28910 + AVR32_OPC_SUBEQ,
28911 + AVR32_OPC_SUBNE,
28912 + AVR32_OPC_SUBCC,
28913 + AVR32_OPC_SUBCS,
28914 + AVR32_OPC_SUBGE,
28915 + AVR32_OPC_SUBLT,
28916 + AVR32_OPC_SUBMI,
28917 + AVR32_OPC_SUBPL,
28918 + AVR32_OPC_SUBLS,
28919 + AVR32_OPC_SUBGT,
28920 + AVR32_OPC_SUBLE,
28921 + AVR32_OPC_SUBHI,
28922 + AVR32_OPC_SUBVS,
28923 + AVR32_OPC_SUBVC,
28924 + AVR32_OPC_SUBQS,
28925 + AVR32_OPC_SUBAL,
28926 + AVR32_OPC_SUBFEQ,
28927 + AVR32_OPC_SUBFNE,
28928 + AVR32_OPC_SUBFCC,
28929 + AVR32_OPC_SUBFCS,
28930 + AVR32_OPC_SUBFGE,
28931 + AVR32_OPC_SUBFLT,
28932 + AVR32_OPC_SUBFMI,
28933 + AVR32_OPC_SUBFPL,
28934 + AVR32_OPC_SUBFLS,
28935 + AVR32_OPC_SUBFGT,
28936 + AVR32_OPC_SUBFLE,
28937 + AVR32_OPC_SUBFHI,
28938 + AVR32_OPC_SUBFVS,
28939 + AVR32_OPC_SUBFVC,
28940 + AVR32_OPC_SUBFQS,
28941 + AVR32_OPC_SUBFAL,
28942 + AVR32_OPC_SUBHH_W,
28943 + AVR32_OPC_SWAP_B,
28944 + AVR32_OPC_SWAP_BH,
28945 + AVR32_OPC_SWAP_H,
28946 + AVR32_OPC_SYNC,
28947 + AVR32_OPC_TLBR,
28948 + AVR32_OPC_TLBS,
28949 + AVR32_OPC_TLBW,
28950 + AVR32_OPC_TNBZ,
28951 + AVR32_OPC_TST,
28952 + AVR32_OPC_XCHG,
28953 + AVR32_OPC_MEMC,
28954 + AVR32_OPC_MEMS,
28955 + AVR32_OPC_MEMT,
28956 + AVR32_OPC_BFEXTS,
28957 + AVR32_OPC_BFEXTU,
28958 + AVR32_OPC_BFINS,
28959 + AVR32_OPC_RSUBEQ,
28960 + AVR32_OPC_RSUBNE,
28961 + AVR32_OPC_RSUBCC,
28962 + AVR32_OPC_RSUBCS,
28963 + AVR32_OPC_RSUBGE,
28964 + AVR32_OPC_RSUBLT,
28965 + AVR32_OPC_RSUBMI,
28966 + AVR32_OPC_RSUBPL,
28967 + AVR32_OPC_RSUBLS,
28968 + AVR32_OPC_RSUBGT,
28969 + AVR32_OPC_RSUBLE,
28970 + AVR32_OPC_RSUBHI,
28971 + AVR32_OPC_RSUBVS,
28972 + AVR32_OPC_RSUBVC,
28973 + AVR32_OPC_RSUBQS,
28974 + AVR32_OPC_RSUBAL,
28975 + AVR32_OPC_ADDEQ,
28976 + AVR32_OPC_ADDNE,
28977 + AVR32_OPC_ADDCC,
28978 + AVR32_OPC_ADDCS,
28979 + AVR32_OPC_ADDGE,
28980 + AVR32_OPC_ADDLT,
28981 + AVR32_OPC_ADDMI,
28982 + AVR32_OPC_ADDPL,
28983 + AVR32_OPC_ADDLS,
28984 + AVR32_OPC_ADDGT,
28985 + AVR32_OPC_ADDLE,
28986 + AVR32_OPC_ADDHI,
28987 + AVR32_OPC_ADDVS,
28988 + AVR32_OPC_ADDVC,
28989 + AVR32_OPC_ADDQS,
28990 + AVR32_OPC_ADDAL,
28991 + AVR32_OPC_SUB2EQ,
28992 + AVR32_OPC_SUB2NE,
28993 + AVR32_OPC_SUB2CC,
28994 + AVR32_OPC_SUB2CS,
28995 + AVR32_OPC_SUB2GE,
28996 + AVR32_OPC_SUB2LT,
28997 + AVR32_OPC_SUB2MI,
28998 + AVR32_OPC_SUB2PL,
28999 + AVR32_OPC_SUB2LS,
29000 + AVR32_OPC_SUB2GT,
29001 + AVR32_OPC_SUB2LE,
29002 + AVR32_OPC_SUB2HI,
29003 + AVR32_OPC_SUB2VS,
29004 + AVR32_OPC_SUB2VC,
29005 + AVR32_OPC_SUB2QS,
29006 + AVR32_OPC_SUB2AL,
29007 + AVR32_OPC_ANDEQ,
29008 + AVR32_OPC_ANDNE,
29009 + AVR32_OPC_ANDCC,
29010 + AVR32_OPC_ANDCS,
29011 + AVR32_OPC_ANDGE,
29012 + AVR32_OPC_ANDLT,
29013 + AVR32_OPC_ANDMI,
29014 + AVR32_OPC_ANDPL,
29015 + AVR32_OPC_ANDLS,
29016 + AVR32_OPC_ANDGT,
29017 + AVR32_OPC_ANDLE,
29018 + AVR32_OPC_ANDHI,
29019 + AVR32_OPC_ANDVS,
29020 + AVR32_OPC_ANDVC,
29021 + AVR32_OPC_ANDQS,
29022 + AVR32_OPC_ANDAL,
29023 + AVR32_OPC_OREQ,
29024 + AVR32_OPC_ORNE,
29025 + AVR32_OPC_ORCC,
29026 + AVR32_OPC_ORCS,
29027 + AVR32_OPC_ORGE,
29028 + AVR32_OPC_ORLT,
29029 + AVR32_OPC_ORMI,
29030 + AVR32_OPC_ORPL,
29031 + AVR32_OPC_ORLS,
29032 + AVR32_OPC_ORGT,
29033 + AVR32_OPC_ORLE,
29034 + AVR32_OPC_ORHI,
29035 + AVR32_OPC_ORVS,
29036 + AVR32_OPC_ORVC,
29037 + AVR32_OPC_ORQS,
29038 + AVR32_OPC_ORAL,
29039 + AVR32_OPC_EOREQ,
29040 + AVR32_OPC_EORNE,
29041 + AVR32_OPC_EORCC,
29042 + AVR32_OPC_EORCS,
29043 + AVR32_OPC_EORGE,
29044 + AVR32_OPC_EORLT,
29045 + AVR32_OPC_EORMI,
29046 + AVR32_OPC_EORPL,
29047 + AVR32_OPC_EORLS,
29048 + AVR32_OPC_EORGT,
29049 + AVR32_OPC_EORLE,
29050 + AVR32_OPC_EORHI,
29051 + AVR32_OPC_EORVS,
29052 + AVR32_OPC_EORVC,
29053 + AVR32_OPC_EORQS,
29054 + AVR32_OPC_EORAL,
29055 + AVR32_OPC_LD_WEQ,
29056 + AVR32_OPC_LD_WNE,
29057 + AVR32_OPC_LD_WCC,
29058 + AVR32_OPC_LD_WCS,
29059 + AVR32_OPC_LD_WGE,
29060 + AVR32_OPC_LD_WLT,
29061 + AVR32_OPC_LD_WMI,
29062 + AVR32_OPC_LD_WPL,
29063 + AVR32_OPC_LD_WLS,
29064 + AVR32_OPC_LD_WGT,
29065 + AVR32_OPC_LD_WLE,
29066 + AVR32_OPC_LD_WHI,
29067 + AVR32_OPC_LD_WVS,
29068 + AVR32_OPC_LD_WVC,
29069 + AVR32_OPC_LD_WQS,
29070 + AVR32_OPC_LD_WAL,
29071 + AVR32_OPC_LD_SHEQ,
29072 + AVR32_OPC_LD_SHNE,
29073 + AVR32_OPC_LD_SHCC,
29074 + AVR32_OPC_LD_SHCS,
29075 + AVR32_OPC_LD_SHGE,
29076 + AVR32_OPC_LD_SHLT,
29077 + AVR32_OPC_LD_SHMI,
29078 + AVR32_OPC_LD_SHPL,
29079 + AVR32_OPC_LD_SHLS,
29080 + AVR32_OPC_LD_SHGT,
29081 + AVR32_OPC_LD_SHLE,
29082 + AVR32_OPC_LD_SHHI,
29083 + AVR32_OPC_LD_SHVS,
29084 + AVR32_OPC_LD_SHVC,
29085 + AVR32_OPC_LD_SHQS,
29086 + AVR32_OPC_LD_SHAL,
29087 + AVR32_OPC_LD_UHEQ,
29088 + AVR32_OPC_LD_UHNE,
29089 + AVR32_OPC_LD_UHCC,
29090 + AVR32_OPC_LD_UHCS,
29091 + AVR32_OPC_LD_UHGE,
29092 + AVR32_OPC_LD_UHLT,
29093 + AVR32_OPC_LD_UHMI,
29094 + AVR32_OPC_LD_UHPL,
29095 + AVR32_OPC_LD_UHLS,
29096 + AVR32_OPC_LD_UHGT,
29097 + AVR32_OPC_LD_UHLE,
29098 + AVR32_OPC_LD_UHHI,
29099 + AVR32_OPC_LD_UHVS,
29100 + AVR32_OPC_LD_UHVC,
29101 + AVR32_OPC_LD_UHQS,
29102 + AVR32_OPC_LD_UHAL,
29103 + AVR32_OPC_LD_SBEQ,
29104 + AVR32_OPC_LD_SBNE,
29105 + AVR32_OPC_LD_SBCC,
29106 + AVR32_OPC_LD_SBCS,
29107 + AVR32_OPC_LD_SBGE,
29108 + AVR32_OPC_LD_SBLT,
29109 + AVR32_OPC_LD_SBMI,
29110 + AVR32_OPC_LD_SBPL,
29111 + AVR32_OPC_LD_SBLS,
29112 + AVR32_OPC_LD_SBGT,
29113 + AVR32_OPC_LD_SBLE,
29114 + AVR32_OPC_LD_SBHI,
29115 + AVR32_OPC_LD_SBVS,
29116 + AVR32_OPC_LD_SBVC,
29117 + AVR32_OPC_LD_SBQS,
29118 + AVR32_OPC_LD_SBAL,
29119 + AVR32_OPC_LD_UBEQ,
29120 + AVR32_OPC_LD_UBNE,
29121 + AVR32_OPC_LD_UBCC,
29122 + AVR32_OPC_LD_UBCS,
29123 + AVR32_OPC_LD_UBGE,
29124 + AVR32_OPC_LD_UBLT,
29125 + AVR32_OPC_LD_UBMI,
29126 + AVR32_OPC_LD_UBPL,
29127 + AVR32_OPC_LD_UBLS,
29128 + AVR32_OPC_LD_UBGT,
29129 + AVR32_OPC_LD_UBLE,
29130 + AVR32_OPC_LD_UBHI,
29131 + AVR32_OPC_LD_UBVS,
29132 + AVR32_OPC_LD_UBVC,
29133 + AVR32_OPC_LD_UBQS,
29134 + AVR32_OPC_LD_UBAL,
29135 + AVR32_OPC_ST_WEQ,
29136 + AVR32_OPC_ST_WNE,
29137 + AVR32_OPC_ST_WCC,
29138 + AVR32_OPC_ST_WCS,
29139 + AVR32_OPC_ST_WGE,
29140 + AVR32_OPC_ST_WLT,
29141 + AVR32_OPC_ST_WMI,
29142 + AVR32_OPC_ST_WPL,
29143 + AVR32_OPC_ST_WLS,
29144 + AVR32_OPC_ST_WGT,
29145 + AVR32_OPC_ST_WLE,
29146 + AVR32_OPC_ST_WHI,
29147 + AVR32_OPC_ST_WVS,
29148 + AVR32_OPC_ST_WVC,
29149 + AVR32_OPC_ST_WQS,
29150 + AVR32_OPC_ST_WAL,
29151 + AVR32_OPC_ST_HEQ,
29152 + AVR32_OPC_ST_HNE,
29153 + AVR32_OPC_ST_HCC,
29154 + AVR32_OPC_ST_HCS,
29155 + AVR32_OPC_ST_HGE,
29156 + AVR32_OPC_ST_HLT,
29157 + AVR32_OPC_ST_HMI,
29158 + AVR32_OPC_ST_HPL,
29159 + AVR32_OPC_ST_HLS,
29160 + AVR32_OPC_ST_HGT,
29161 + AVR32_OPC_ST_HLE,
29162 + AVR32_OPC_ST_HHI,
29163 + AVR32_OPC_ST_HVS,
29164 + AVR32_OPC_ST_HVC,
29165 + AVR32_OPC_ST_HQS,
29166 + AVR32_OPC_ST_HAL,
29167 + AVR32_OPC_ST_BEQ,
29168 + AVR32_OPC_ST_BNE,
29169 + AVR32_OPC_ST_BCC,
29170 + AVR32_OPC_ST_BCS,
29171 + AVR32_OPC_ST_BGE,
29172 + AVR32_OPC_ST_BLT,
29173 + AVR32_OPC_ST_BMI,
29174 + AVR32_OPC_ST_BPL,
29175 + AVR32_OPC_ST_BLS,
29176 + AVR32_OPC_ST_BGT,
29177 + AVR32_OPC_ST_BLE,
29178 + AVR32_OPC_ST_BHI,
29179 + AVR32_OPC_ST_BVS,
29180 + AVR32_OPC_ST_BVC,
29181 + AVR32_OPC_ST_BQS,
29182 + AVR32_OPC_ST_BAL,
29183 + AVR32_OPC_MOVH,
29184 + AVR32_OPC__END_
29185 +};
29186 +#define AVR32_NR_OPCODES AVR32_OPC__END_
29187 +
29188 +enum avr32_syntax_type
29189 +{
29190 + AVR32_SYNTAX_ABS,
29191 + AVR32_SYNTAX_ACALL,
29192 + AVR32_SYNTAX_ACR,
29193 + AVR32_SYNTAX_ADC,
29194 + AVR32_SYNTAX_ADD1,
29195 + AVR32_SYNTAX_ADD2,
29196 + AVR32_SYNTAX_ADDABS,
29197 + AVR32_SYNTAX_ADDHH_W,
29198 + AVR32_SYNTAX_AND1,
29199 + AVR32_SYNTAX_AND2,
29200 + AVR32_SYNTAX_AND3,
29201 + AVR32_SYNTAX_ANDH,
29202 + AVR32_SYNTAX_ANDH_COH,
29203 + AVR32_SYNTAX_ANDL,
29204 + AVR32_SYNTAX_ANDL_COH,
29205 + AVR32_SYNTAX_ANDN,
29206 + AVR32_SYNTAX_ASR1,
29207 + AVR32_SYNTAX_ASR3,
29208 + AVR32_SYNTAX_ASR2,
29209 + AVR32_SYNTAX_BFEXTS,
29210 + AVR32_SYNTAX_BFEXTU,
29211 + AVR32_SYNTAX_BFINS,
29212 + AVR32_SYNTAX_BLD,
29213 + AVR32_SYNTAX_BREQ1,
29214 + AVR32_SYNTAX_BRNE1,
29215 + AVR32_SYNTAX_BRCC1,
29216 + AVR32_SYNTAX_BRCS1,
29217 + AVR32_SYNTAX_BRGE1,
29218 + AVR32_SYNTAX_BRLT1,
29219 + AVR32_SYNTAX_BRMI1,
29220 + AVR32_SYNTAX_BRPL1,
29221 + AVR32_SYNTAX_BRHS1,
29222 + AVR32_SYNTAX_BRLO1,
29223 + AVR32_SYNTAX_BREQ2,
29224 + AVR32_SYNTAX_BRNE2,
29225 + AVR32_SYNTAX_BRCC2,
29226 + AVR32_SYNTAX_BRCS2,
29227 + AVR32_SYNTAX_BRGE2,
29228 + AVR32_SYNTAX_BRLT2,
29229 + AVR32_SYNTAX_BRMI2,
29230 + AVR32_SYNTAX_BRPL2,
29231 + AVR32_SYNTAX_BRLS,
29232 + AVR32_SYNTAX_BRGT,
29233 + AVR32_SYNTAX_BRLE,
29234 + AVR32_SYNTAX_BRHI,
29235 + AVR32_SYNTAX_BRVS,
29236 + AVR32_SYNTAX_BRVC,
29237 + AVR32_SYNTAX_BRQS,
29238 + AVR32_SYNTAX_BRAL,
29239 + AVR32_SYNTAX_BRHS2,
29240 + AVR32_SYNTAX_BRLO2,
29241 + AVR32_SYNTAX_BREAKPOINT,
29242 + AVR32_SYNTAX_BREV,
29243 + AVR32_SYNTAX_BST,
29244 + AVR32_SYNTAX_CACHE,
29245 + AVR32_SYNTAX_CASTS_B,
29246 + AVR32_SYNTAX_CASTS_H,
29247 + AVR32_SYNTAX_CASTU_B,
29248 + AVR32_SYNTAX_CASTU_H,
29249 + AVR32_SYNTAX_CBR,
29250 + AVR32_SYNTAX_CLZ,
29251 + AVR32_SYNTAX_COM,
29252 + AVR32_SYNTAX_COP,
29253 + AVR32_SYNTAX_CP_B,
29254 + AVR32_SYNTAX_CP_H,
29255 + AVR32_SYNTAX_CP_W1,
29256 + AVR32_SYNTAX_CP_W2,
29257 + AVR32_SYNTAX_CP_W3,
29258 + AVR32_SYNTAX_CPC1,
29259 + AVR32_SYNTAX_CPC2,
29260 + AVR32_SYNTAX_CSRF,
29261 + AVR32_SYNTAX_CSRFCZ,
29262 + AVR32_SYNTAX_DIVS,
29263 + AVR32_SYNTAX_DIVU,
29264 + AVR32_SYNTAX_EOR1,
29265 + AVR32_SYNTAX_EOR2,
29266 + AVR32_SYNTAX_EOR3,
29267 + AVR32_SYNTAX_EORL,
29268 + AVR32_SYNTAX_EORH,
29269 + AVR32_SYNTAX_FRS,
29270 + AVR32_SYNTAX_ICALL,
29271 + AVR32_SYNTAX_INCJOSP,
29272 + AVR32_SYNTAX_LD_D1,
29273 + AVR32_SYNTAX_LD_D2,
29274 + AVR32_SYNTAX_LD_D3,
29275 + AVR32_SYNTAX_LD_D5,
29276 + AVR32_SYNTAX_LD_D4,
29277 + AVR32_SYNTAX_LD_SB2,
29278 + AVR32_SYNTAX_LD_SB1,
29279 + AVR32_SYNTAX_LD_UB1,
29280 + AVR32_SYNTAX_LD_UB2,
29281 + AVR32_SYNTAX_LD_UB5,
29282 + AVR32_SYNTAX_LD_UB3,
29283 + AVR32_SYNTAX_LD_UB4,
29284 + AVR32_SYNTAX_LD_SH1,
29285 + AVR32_SYNTAX_LD_SH2,
29286 + AVR32_SYNTAX_LD_SH5,
29287 + AVR32_SYNTAX_LD_SH3,
29288 + AVR32_SYNTAX_LD_SH4,
29289 + AVR32_SYNTAX_LD_UH1,
29290 + AVR32_SYNTAX_LD_UH2,
29291 + AVR32_SYNTAX_LD_UH5,
29292 + AVR32_SYNTAX_LD_UH3,
29293 + AVR32_SYNTAX_LD_UH4,
29294 + AVR32_SYNTAX_LD_W1,
29295 + AVR32_SYNTAX_LD_W2,
29296 + AVR32_SYNTAX_LD_W5,
29297 + AVR32_SYNTAX_LD_W6,
29298 + AVR32_SYNTAX_LD_W3,
29299 + AVR32_SYNTAX_LD_W4,
29300 + AVR32_SYNTAX_LDC_D1,
29301 + AVR32_SYNTAX_LDC_D2,
29302 + AVR32_SYNTAX_LDC_D3,
29303 + AVR32_SYNTAX_LDC_W1,
29304 + AVR32_SYNTAX_LDC_W2,
29305 + AVR32_SYNTAX_LDC_W3,
29306 + AVR32_SYNTAX_LDC0_D,
29307 + AVR32_SYNTAX_LDC0_W,
29308 + AVR32_SYNTAX_LDCM_D,
29309 + AVR32_SYNTAX_LDCM_D_PU,
29310 + AVR32_SYNTAX_LDCM_W,
29311 + AVR32_SYNTAX_LDCM_W_PU,
29312 + AVR32_SYNTAX_LDDPC,
29313 + AVR32_SYNTAX_LDDPC_EXT,
29314 + AVR32_SYNTAX_LDDSP,
29315 + AVR32_SYNTAX_LDINS_B,
29316 + AVR32_SYNTAX_LDINS_H,
29317 + AVR32_SYNTAX_LDM,
29318 + AVR32_SYNTAX_LDMTS,
29319 + AVR32_SYNTAX_LDMTS_PU,
29320 + AVR32_SYNTAX_LDSWP_SH,
29321 + AVR32_SYNTAX_LDSWP_UH,
29322 + AVR32_SYNTAX_LDSWP_W,
29323 + AVR32_SYNTAX_LSL1,
29324 + AVR32_SYNTAX_LSL3,
29325 + AVR32_SYNTAX_LSL2,
29326 + AVR32_SYNTAX_LSR1,
29327 + AVR32_SYNTAX_LSR3,
29328 + AVR32_SYNTAX_LSR2,
29329 + AVR32_SYNTAX_MAC,
29330 + AVR32_SYNTAX_MACHH_D,
29331 + AVR32_SYNTAX_MACHH_W,
29332 + AVR32_SYNTAX_MACS_D,
29333 + AVR32_SYNTAX_MACSATHH_W,
29334 + AVR32_SYNTAX_MACUD,
29335 + AVR32_SYNTAX_MACWH_D,
29336 + AVR32_SYNTAX_MAX,
29337 + AVR32_SYNTAX_MCALL,
29338 + AVR32_SYNTAX_MFDR,
29339 + AVR32_SYNTAX_MFSR,
29340 + AVR32_SYNTAX_MIN,
29341 + AVR32_SYNTAX_MOV3,
29342 + AVR32_SYNTAX_MOV1,
29343 + AVR32_SYNTAX_MOV2,
29344 + AVR32_SYNTAX_MOVEQ1,
29345 + AVR32_SYNTAX_MOVNE1,
29346 + AVR32_SYNTAX_MOVCC1,
29347 + AVR32_SYNTAX_MOVCS1,
29348 + AVR32_SYNTAX_MOVGE1,
29349 + AVR32_SYNTAX_MOVLT1,
29350 + AVR32_SYNTAX_MOVMI1,
29351 + AVR32_SYNTAX_MOVPL1,
29352 + AVR32_SYNTAX_MOVLS1,
29353 + AVR32_SYNTAX_MOVGT1,
29354 + AVR32_SYNTAX_MOVLE1,
29355 + AVR32_SYNTAX_MOVHI1,
29356 + AVR32_SYNTAX_MOVVS1,
29357 + AVR32_SYNTAX_MOVVC1,
29358 + AVR32_SYNTAX_MOVQS1,
29359 + AVR32_SYNTAX_MOVAL1,
29360 + AVR32_SYNTAX_MOVHS1,
29361 + AVR32_SYNTAX_MOVLO1,
29362 + AVR32_SYNTAX_MOVEQ2,
29363 + AVR32_SYNTAX_MOVNE2,
29364 + AVR32_SYNTAX_MOVCC2,
29365 + AVR32_SYNTAX_MOVCS2,
29366 + AVR32_SYNTAX_MOVGE2,
29367 + AVR32_SYNTAX_MOVLT2,
29368 + AVR32_SYNTAX_MOVMI2,
29369 + AVR32_SYNTAX_MOVPL2,
29370 + AVR32_SYNTAX_MOVLS2,
29371 + AVR32_SYNTAX_MOVGT2,
29372 + AVR32_SYNTAX_MOVLE2,
29373 + AVR32_SYNTAX_MOVHI2,
29374 + AVR32_SYNTAX_MOVVS2,
29375 + AVR32_SYNTAX_MOVVC2,
29376 + AVR32_SYNTAX_MOVQS2,
29377 + AVR32_SYNTAX_MOVAL2,
29378 + AVR32_SYNTAX_MOVHS2,
29379 + AVR32_SYNTAX_MOVLO2,
29380 + AVR32_SYNTAX_MTDR,
29381 + AVR32_SYNTAX_MTSR,
29382 + AVR32_SYNTAX_MUL1,
29383 + AVR32_SYNTAX_MUL2,
29384 + AVR32_SYNTAX_MUL3,
29385 + AVR32_SYNTAX_MULHH_W,
29386 + AVR32_SYNTAX_MULNHH_W,
29387 + AVR32_SYNTAX_MULNWH_D,
29388 + AVR32_SYNTAX_MULSD,
29389 + AVR32_SYNTAX_MULSATHH_H,
29390 + AVR32_SYNTAX_MULSATHH_W,
29391 + AVR32_SYNTAX_MULSATRNDHH_H,
29392 + AVR32_SYNTAX_MULSATRNDWH_W,
29393 + AVR32_SYNTAX_MULSATWH_W,
29394 + AVR32_SYNTAX_MULU_D,
29395 + AVR32_SYNTAX_MULWH_D,
29396 + AVR32_SYNTAX_MUSFR,
29397 + AVR32_SYNTAX_MUSTR,
29398 + AVR32_SYNTAX_MVCR_D,
29399 + AVR32_SYNTAX_MVCR_W,
29400 + AVR32_SYNTAX_MVRC_D,
29401 + AVR32_SYNTAX_MVRC_W,
29402 + AVR32_SYNTAX_NEG,
29403 + AVR32_SYNTAX_NOP,
29404 + AVR32_SYNTAX_OR1,
29405 + AVR32_SYNTAX_OR2,
29406 + AVR32_SYNTAX_OR3,
29407 + AVR32_SYNTAX_ORH,
29408 + AVR32_SYNTAX_ORL,
29409 + AVR32_SYNTAX_PABS_SB,
29410 + AVR32_SYNTAX_PABS_SH,
29411 + AVR32_SYNTAX_PACKSH_SB,
29412 + AVR32_SYNTAX_PACKSH_UB,
29413 + AVR32_SYNTAX_PACKW_SH,
29414 + AVR32_SYNTAX_PADD_B,
29415 + AVR32_SYNTAX_PADD_H,
29416 + AVR32_SYNTAX_PADDH_SH,
29417 + AVR32_SYNTAX_PADDH_UB,
29418 + AVR32_SYNTAX_PADDS_SB,
29419 + AVR32_SYNTAX_PADDS_SH,
29420 + AVR32_SYNTAX_PADDS_UB,
29421 + AVR32_SYNTAX_PADDS_UH,
29422 + AVR32_SYNTAX_PADDSUB_H,
29423 + AVR32_SYNTAX_PADDSUBH_SH,
29424 + AVR32_SYNTAX_PADDSUBS_SH,
29425 + AVR32_SYNTAX_PADDSUBS_UH,
29426 + AVR32_SYNTAX_PADDX_H,
29427 + AVR32_SYNTAX_PADDXH_SH,
29428 + AVR32_SYNTAX_PADDXS_SH,
29429 + AVR32_SYNTAX_PADDXS_UH,
29430 + AVR32_SYNTAX_PASR_B,
29431 + AVR32_SYNTAX_PASR_H,
29432 + AVR32_SYNTAX_PAVG_SH,
29433 + AVR32_SYNTAX_PAVG_UB,
29434 + AVR32_SYNTAX_PLSL_B,
29435 + AVR32_SYNTAX_PLSL_H,
29436 + AVR32_SYNTAX_PLSR_B,
29437 + AVR32_SYNTAX_PLSR_H,
29438 + AVR32_SYNTAX_PMAX_SH,
29439 + AVR32_SYNTAX_PMAX_UB,
29440 + AVR32_SYNTAX_PMIN_SH,
29441 + AVR32_SYNTAX_PMIN_UB,
29442 + AVR32_SYNTAX_POPJC,
29443 + AVR32_SYNTAX_POPM,
29444 + AVR32_SYNTAX_POPM_E,
29445 + AVR32_SYNTAX_PREF,
29446 + AVR32_SYNTAX_PSAD,
29447 + AVR32_SYNTAX_PSUB_B,
29448 + AVR32_SYNTAX_PSUB_H,
29449 + AVR32_SYNTAX_PSUBADD_H,
29450 + AVR32_SYNTAX_PSUBADDH_SH,
29451 + AVR32_SYNTAX_PSUBADDS_SH,
29452 + AVR32_SYNTAX_PSUBADDS_UH,
29453 + AVR32_SYNTAX_PSUBH_SH,
29454 + AVR32_SYNTAX_PSUBH_UB,
29455 + AVR32_SYNTAX_PSUBS_SB,
29456 + AVR32_SYNTAX_PSUBS_SH,
29457 + AVR32_SYNTAX_PSUBS_UB,
29458 + AVR32_SYNTAX_PSUBS_UH,
29459 + AVR32_SYNTAX_PSUBX_H,
29460 + AVR32_SYNTAX_PSUBXH_SH,
29461 + AVR32_SYNTAX_PSUBXS_SH,
29462 + AVR32_SYNTAX_PSUBXS_UH,
29463 + AVR32_SYNTAX_PUNPCKSB_H,
29464 + AVR32_SYNTAX_PUNPCKUB_H,
29465 + AVR32_SYNTAX_PUSHJC,
29466 + AVR32_SYNTAX_PUSHM,
29467 + AVR32_SYNTAX_PUSHM_E,
29468 + AVR32_SYNTAX_RCALL1,
29469 + AVR32_SYNTAX_RCALL2,
29470 + AVR32_SYNTAX_RETEQ,
29471 + AVR32_SYNTAX_RETNE,
29472 + AVR32_SYNTAX_RETCC,
29473 + AVR32_SYNTAX_RETCS,
29474 + AVR32_SYNTAX_RETGE,
29475 + AVR32_SYNTAX_RETLT,
29476 + AVR32_SYNTAX_RETMI,
29477 + AVR32_SYNTAX_RETPL,
29478 + AVR32_SYNTAX_RETLS,
29479 + AVR32_SYNTAX_RETGT,
29480 + AVR32_SYNTAX_RETLE,
29481 + AVR32_SYNTAX_RETHI,
29482 + AVR32_SYNTAX_RETVS,
29483 + AVR32_SYNTAX_RETVC,
29484 + AVR32_SYNTAX_RETQS,
29485 + AVR32_SYNTAX_RETAL,
29486 + AVR32_SYNTAX_RETHS,
29487 + AVR32_SYNTAX_RETLO,
29488 + AVR32_SYNTAX_RETD,
29489 + AVR32_SYNTAX_RETE,
29490 + AVR32_SYNTAX_RETJ,
29491 + AVR32_SYNTAX_RETS,
29492 + AVR32_SYNTAX_RJMP,
29493 + AVR32_SYNTAX_ROL,
29494 + AVR32_SYNTAX_ROR,
29495 + AVR32_SYNTAX_RSUB1,
29496 + AVR32_SYNTAX_RSUB2,
29497 + AVR32_SYNTAX_SATADD_H,
29498 + AVR32_SYNTAX_SATADD_W,
29499 + AVR32_SYNTAX_SATRNDS,
29500 + AVR32_SYNTAX_SATRNDU,
29501 + AVR32_SYNTAX_SATS,
29502 + AVR32_SYNTAX_SATSUB_H,
29503 + AVR32_SYNTAX_SATSUB_W1,
29504 + AVR32_SYNTAX_SATSUB_W2,
29505 + AVR32_SYNTAX_SATU,
29506 + AVR32_SYNTAX_SBC,
29507 + AVR32_SYNTAX_SBR,
29508 + AVR32_SYNTAX_SCALL,
29509 + AVR32_SYNTAX_SCR,
29510 + AVR32_SYNTAX_SLEEP,
29511 + AVR32_SYNTAX_SREQ,
29512 + AVR32_SYNTAX_SRNE,
29513 + AVR32_SYNTAX_SRCC,
29514 + AVR32_SYNTAX_SRCS,
29515 + AVR32_SYNTAX_SRGE,
29516 + AVR32_SYNTAX_SRLT,
29517 + AVR32_SYNTAX_SRMI,
29518 + AVR32_SYNTAX_SRPL,
29519 + AVR32_SYNTAX_SRLS,
29520 + AVR32_SYNTAX_SRGT,
29521 + AVR32_SYNTAX_SRLE,
29522 + AVR32_SYNTAX_SRHI,
29523 + AVR32_SYNTAX_SRVS,
29524 + AVR32_SYNTAX_SRVC,
29525 + AVR32_SYNTAX_SRQS,
29526 + AVR32_SYNTAX_SRAL,
29527 + AVR32_SYNTAX_SRHS,
29528 + AVR32_SYNTAX_SRLO,
29529 + AVR32_SYNTAX_SSRF,
29530 + AVR32_SYNTAX_ST_B1,
29531 + AVR32_SYNTAX_ST_B2,
29532 + AVR32_SYNTAX_ST_B5,
29533 + AVR32_SYNTAX_ST_B3,
29534 + AVR32_SYNTAX_ST_B4,
29535 + AVR32_SYNTAX_ST_D1,
29536 + AVR32_SYNTAX_ST_D2,
29537 + AVR32_SYNTAX_ST_D3,
29538 + AVR32_SYNTAX_ST_D5,
29539 + AVR32_SYNTAX_ST_D4,
29540 + AVR32_SYNTAX_ST_H1,
29541 + AVR32_SYNTAX_ST_H2,
29542 + AVR32_SYNTAX_ST_H5,
29543 + AVR32_SYNTAX_ST_H3,
29544 + AVR32_SYNTAX_ST_H4,
29545 + AVR32_SYNTAX_ST_W1,
29546 + AVR32_SYNTAX_ST_W2,
29547 + AVR32_SYNTAX_ST_W5,
29548 + AVR32_SYNTAX_ST_W3,
29549 + AVR32_SYNTAX_ST_W4,
29550 + AVR32_SYNTAX_STC_D1,
29551 + AVR32_SYNTAX_STC_D2,
29552 + AVR32_SYNTAX_STC_D3,
29553 + AVR32_SYNTAX_STC_W1,
29554 + AVR32_SYNTAX_STC_W2,
29555 + AVR32_SYNTAX_STC_W3,
29556 + AVR32_SYNTAX_STC0_D,
29557 + AVR32_SYNTAX_STC0_W,
29558 + AVR32_SYNTAX_STCM_D,
29559 + AVR32_SYNTAX_STCM_D_PU,
29560 + AVR32_SYNTAX_STCM_W,
29561 + AVR32_SYNTAX_STCM_W_PU,
29562 + AVR32_SYNTAX_STCOND,
29563 + AVR32_SYNTAX_STDSP,
29564 + AVR32_SYNTAX_STHH_W2,
29565 + AVR32_SYNTAX_STHH_W1,
29566 + AVR32_SYNTAX_STM,
29567 + AVR32_SYNTAX_STM_PU,
29568 + AVR32_SYNTAX_STMTS,
29569 + AVR32_SYNTAX_STMTS_PU,
29570 + AVR32_SYNTAX_STSWP_H,
29571 + AVR32_SYNTAX_STSWP_W,
29572 + AVR32_SYNTAX_SUB1,
29573 + AVR32_SYNTAX_SUB2,
29574 + AVR32_SYNTAX_SUB5,
29575 + AVR32_SYNTAX_SUB3_SP,
29576 + AVR32_SYNTAX_SUB3,
29577 + AVR32_SYNTAX_SUB4,
29578 + AVR32_SYNTAX_SUBEQ,
29579 + AVR32_SYNTAX_SUBNE,
29580 + AVR32_SYNTAX_SUBCC,
29581 + AVR32_SYNTAX_SUBCS,
29582 + AVR32_SYNTAX_SUBGE,
29583 + AVR32_SYNTAX_SUBLT,
29584 + AVR32_SYNTAX_SUBMI,
29585 + AVR32_SYNTAX_SUBPL,
29586 + AVR32_SYNTAX_SUBLS,
29587 + AVR32_SYNTAX_SUBGT,
29588 + AVR32_SYNTAX_SUBLE,
29589 + AVR32_SYNTAX_SUBHI,
29590 + AVR32_SYNTAX_SUBVS,
29591 + AVR32_SYNTAX_SUBVC,
29592 + AVR32_SYNTAX_SUBQS,
29593 + AVR32_SYNTAX_SUBAL,
29594 + AVR32_SYNTAX_SUBHS,
29595 + AVR32_SYNTAX_SUBLO,
29596 + AVR32_SYNTAX_SUBFEQ,
29597 + AVR32_SYNTAX_SUBFNE,
29598 + AVR32_SYNTAX_SUBFCC,
29599 + AVR32_SYNTAX_SUBFCS,
29600 + AVR32_SYNTAX_SUBFGE,
29601 + AVR32_SYNTAX_SUBFLT,
29602 + AVR32_SYNTAX_SUBFMI,
29603 + AVR32_SYNTAX_SUBFPL,
29604 + AVR32_SYNTAX_SUBFLS,
29605 + AVR32_SYNTAX_SUBFGT,
29606 + AVR32_SYNTAX_SUBFLE,
29607 + AVR32_SYNTAX_SUBFHI,
29608 + AVR32_SYNTAX_SUBFVS,
29609 + AVR32_SYNTAX_SUBFVC,
29610 + AVR32_SYNTAX_SUBFQS,
29611 + AVR32_SYNTAX_SUBFAL,
29612 + AVR32_SYNTAX_SUBFHS,
29613 + AVR32_SYNTAX_SUBFLO,
29614 + AVR32_SYNTAX_SUBHH_W,
29615 + AVR32_SYNTAX_SWAP_B,
29616 + AVR32_SYNTAX_SWAP_BH,
29617 + AVR32_SYNTAX_SWAP_H,
29618 + AVR32_SYNTAX_SYNC,
29619 + AVR32_SYNTAX_TLBR,
29620 + AVR32_SYNTAX_TLBS,
29621 + AVR32_SYNTAX_TLBW,
29622 + AVR32_SYNTAX_TNBZ,
29623 + AVR32_SYNTAX_TST,
29624 + AVR32_SYNTAX_XCHG,
29625 + AVR32_SYNTAX_MEMC,
29626 + AVR32_SYNTAX_MEMS,
29627 + AVR32_SYNTAX_MEMT,
29628 + AVR32_SYNTAX_FADD_S,
29629 + AVR32_SYNTAX_FADD_D,
29630 + AVR32_SYNTAX_FSUB_S,
29631 + AVR32_SYNTAX_FSUB_D,
29632 + AVR32_SYNTAX_FMAC_S,
29633 + AVR32_SYNTAX_FMAC_D,
29634 + AVR32_SYNTAX_FNMAC_S,
29635 + AVR32_SYNTAX_FNMAC_D,
29636 + AVR32_SYNTAX_FMSC_S,
29637 + AVR32_SYNTAX_FMSC_D,
29638 + AVR32_SYNTAX_FNMSC_S,
29639 + AVR32_SYNTAX_FNMSC_D,
29640 + AVR32_SYNTAX_FMUL_S,
29641 + AVR32_SYNTAX_FMUL_D,
29642 + AVR32_SYNTAX_FNMUL_S,
29643 + AVR32_SYNTAX_FNMUL_D,
29644 + AVR32_SYNTAX_FNEG_S,
29645 + AVR32_SYNTAX_FNEG_D,
29646 + AVR32_SYNTAX_FABS_S,
29647 + AVR32_SYNTAX_FABS_D,
29648 + AVR32_SYNTAX_FCMP_S,
29649 + AVR32_SYNTAX_FCMP_D,
29650 + AVR32_SYNTAX_FMOV1_S,
29651 + AVR32_SYNTAX_FMOV1_D,
29652 + AVR32_SYNTAX_FMOV2_S,
29653 + AVR32_SYNTAX_FMOV2_D,
29654 + AVR32_SYNTAX_FMOV3_S,
29655 + AVR32_SYNTAX_FMOV3_D,
29656 + AVR32_SYNTAX_FCASTS_D,
29657 + AVR32_SYNTAX_FCASTD_S,
29658 + AVR32_SYNTAX_LDA_W,
29659 + AVR32_SYNTAX_CALL,
29660 + AVR32_SYNTAX_PICOSVMAC0,
29661 + AVR32_SYNTAX_PICOSVMAC1,
29662 + AVR32_SYNTAX_PICOSVMAC2,
29663 + AVR32_SYNTAX_PICOSVMAC3,
29664 + AVR32_SYNTAX_PICOSVMUL0,
29665 + AVR32_SYNTAX_PICOSVMUL1,
29666 + AVR32_SYNTAX_PICOSVMUL2,
29667 + AVR32_SYNTAX_PICOSVMUL3,
29668 + AVR32_SYNTAX_PICOVMAC0,
29669 + AVR32_SYNTAX_PICOVMAC1,
29670 + AVR32_SYNTAX_PICOVMAC2,
29671 + AVR32_SYNTAX_PICOVMAC3,
29672 + AVR32_SYNTAX_PICOVMUL0,
29673 + AVR32_SYNTAX_PICOVMUL1,
29674 + AVR32_SYNTAX_PICOVMUL2,
29675 + AVR32_SYNTAX_PICOVMUL3,
29676 + AVR32_SYNTAX_PICOLD_D2,
29677 + AVR32_SYNTAX_PICOLD_D3,
29678 + AVR32_SYNTAX_PICOLD_D1,
29679 + AVR32_SYNTAX_PICOLD_W2,
29680 + AVR32_SYNTAX_PICOLD_W3,
29681 + AVR32_SYNTAX_PICOLD_W1,
29682 + AVR32_SYNTAX_PICOLDM_D,
29683 + AVR32_SYNTAX_PICOLDM_D_PU,
29684 + AVR32_SYNTAX_PICOLDM_W,
29685 + AVR32_SYNTAX_PICOLDM_W_PU,
29686 + AVR32_SYNTAX_PICOMV_D1,
29687 + AVR32_SYNTAX_PICOMV_D2,
29688 + AVR32_SYNTAX_PICOMV_W1,
29689 + AVR32_SYNTAX_PICOMV_W2,
29690 + AVR32_SYNTAX_PICOST_D2,
29691 + AVR32_SYNTAX_PICOST_D3,
29692 + AVR32_SYNTAX_PICOST_D1,
29693 + AVR32_SYNTAX_PICOST_W2,
29694 + AVR32_SYNTAX_PICOST_W3,
29695 + AVR32_SYNTAX_PICOST_W1,
29696 + AVR32_SYNTAX_PICOSTM_D,
29697 + AVR32_SYNTAX_PICOSTM_D_PU,
29698 + AVR32_SYNTAX_PICOSTM_W,
29699 + AVR32_SYNTAX_PICOSTM_W_PU,
29700 + AVR32_SYNTAX_RSUBEQ,
29701 + AVR32_SYNTAX_RSUBNE,
29702 + AVR32_SYNTAX_RSUBCC,
29703 + AVR32_SYNTAX_RSUBCS,
29704 + AVR32_SYNTAX_RSUBGE,
29705 + AVR32_SYNTAX_RSUBLT,
29706 + AVR32_SYNTAX_RSUBMI,
29707 + AVR32_SYNTAX_RSUBPL,
29708 + AVR32_SYNTAX_RSUBLS,
29709 + AVR32_SYNTAX_RSUBGT,
29710 + AVR32_SYNTAX_RSUBLE,
29711 + AVR32_SYNTAX_RSUBHI,
29712 + AVR32_SYNTAX_RSUBVS,
29713 + AVR32_SYNTAX_RSUBVC,
29714 + AVR32_SYNTAX_RSUBQS,
29715 + AVR32_SYNTAX_RSUBAL,
29716 + AVR32_SYNTAX_RSUBHS,
29717 + AVR32_SYNTAX_RSUBLO,
29718 + AVR32_SYNTAX_ADDEQ,
29719 + AVR32_SYNTAX_ADDNE,
29720 + AVR32_SYNTAX_ADDCC,
29721 + AVR32_SYNTAX_ADDCS,
29722 + AVR32_SYNTAX_ADDGE,
29723 + AVR32_SYNTAX_ADDLT,
29724 + AVR32_SYNTAX_ADDMI,
29725 + AVR32_SYNTAX_ADDPL,
29726 + AVR32_SYNTAX_ADDLS,
29727 + AVR32_SYNTAX_ADDGT,
29728 + AVR32_SYNTAX_ADDLE,
29729 + AVR32_SYNTAX_ADDHI,
29730 + AVR32_SYNTAX_ADDVS,
29731 + AVR32_SYNTAX_ADDVC,
29732 + AVR32_SYNTAX_ADDQS,
29733 + AVR32_SYNTAX_ADDAL,
29734 + AVR32_SYNTAX_ADDHS,
29735 + AVR32_SYNTAX_ADDLO,
29736 + AVR32_SYNTAX_SUB2EQ,
29737 + AVR32_SYNTAX_SUB2NE,
29738 + AVR32_SYNTAX_SUB2CC,
29739 + AVR32_SYNTAX_SUB2CS,
29740 + AVR32_SYNTAX_SUB2GE,
29741 + AVR32_SYNTAX_SUB2LT,
29742 + AVR32_SYNTAX_SUB2MI,
29743 + AVR32_SYNTAX_SUB2PL,
29744 + AVR32_SYNTAX_SUB2LS,
29745 + AVR32_SYNTAX_SUB2GT,
29746 + AVR32_SYNTAX_SUB2LE,
29747 + AVR32_SYNTAX_SUB2HI,
29748 + AVR32_SYNTAX_SUB2VS,
29749 + AVR32_SYNTAX_SUB2VC,
29750 + AVR32_SYNTAX_SUB2QS,
29751 + AVR32_SYNTAX_SUB2AL,
29752 + AVR32_SYNTAX_SUB2HS,
29753 + AVR32_SYNTAX_SUB2LO,
29754 + AVR32_SYNTAX_ANDEQ,
29755 + AVR32_SYNTAX_ANDNE,
29756 + AVR32_SYNTAX_ANDCC,
29757 + AVR32_SYNTAX_ANDCS,
29758 + AVR32_SYNTAX_ANDGE,
29759 + AVR32_SYNTAX_ANDLT,
29760 + AVR32_SYNTAX_ANDMI,
29761 + AVR32_SYNTAX_ANDPL,
29762 + AVR32_SYNTAX_ANDLS,
29763 + AVR32_SYNTAX_ANDGT,
29764 + AVR32_SYNTAX_ANDLE,
29765 + AVR32_SYNTAX_ANDHI,
29766 + AVR32_SYNTAX_ANDVS,
29767 + AVR32_SYNTAX_ANDVC,
29768 + AVR32_SYNTAX_ANDQS,
29769 + AVR32_SYNTAX_ANDAL,
29770 + AVR32_SYNTAX_ANDHS,
29771 + AVR32_SYNTAX_ANDLO,
29772 + AVR32_SYNTAX_OREQ,
29773 + AVR32_SYNTAX_ORNE,
29774 + AVR32_SYNTAX_ORCC,
29775 + AVR32_SYNTAX_ORCS,
29776 + AVR32_SYNTAX_ORGE,
29777 + AVR32_SYNTAX_ORLT,
29778 + AVR32_SYNTAX_ORMI,
29779 + AVR32_SYNTAX_ORPL,
29780 + AVR32_SYNTAX_ORLS,
29781 + AVR32_SYNTAX_ORGT,
29782 + AVR32_SYNTAX_ORLE,
29783 + AVR32_SYNTAX_ORHI,
29784 + AVR32_SYNTAX_ORVS,
29785 + AVR32_SYNTAX_ORVC,
29786 + AVR32_SYNTAX_ORQS,
29787 + AVR32_SYNTAX_ORAL,
29788 + AVR32_SYNTAX_ORHS,
29789 + AVR32_SYNTAX_ORLO,
29790 + AVR32_SYNTAX_EOREQ,
29791 + AVR32_SYNTAX_EORNE,
29792 + AVR32_SYNTAX_EORCC,
29793 + AVR32_SYNTAX_EORCS,
29794 + AVR32_SYNTAX_EORGE,
29795 + AVR32_SYNTAX_EORLT,
29796 + AVR32_SYNTAX_EORMI,
29797 + AVR32_SYNTAX_EORPL,
29798 + AVR32_SYNTAX_EORLS,
29799 + AVR32_SYNTAX_EORGT,
29800 + AVR32_SYNTAX_EORLE,
29801 + AVR32_SYNTAX_EORHI,
29802 + AVR32_SYNTAX_EORVS,
29803 + AVR32_SYNTAX_EORVC,
29804 + AVR32_SYNTAX_EORQS,
29805 + AVR32_SYNTAX_EORAL,
29806 + AVR32_SYNTAX_EORHS,
29807 + AVR32_SYNTAX_EORLO,
29808 + AVR32_SYNTAX_LD_WEQ,
29809 + AVR32_SYNTAX_LD_WNE,
29810 + AVR32_SYNTAX_LD_WCC,
29811 + AVR32_SYNTAX_LD_WCS,
29812 + AVR32_SYNTAX_LD_WGE,
29813 + AVR32_SYNTAX_LD_WLT,
29814 + AVR32_SYNTAX_LD_WMI,
29815 + AVR32_SYNTAX_LD_WPL,
29816 + AVR32_SYNTAX_LD_WLS,
29817 + AVR32_SYNTAX_LD_WGT,
29818 + AVR32_SYNTAX_LD_WLE,
29819 + AVR32_SYNTAX_LD_WHI,
29820 + AVR32_SYNTAX_LD_WVS,
29821 + AVR32_SYNTAX_LD_WVC,
29822 + AVR32_SYNTAX_LD_WQS,
29823 + AVR32_SYNTAX_LD_WAL,
29824 + AVR32_SYNTAX_LD_WHS,
29825 + AVR32_SYNTAX_LD_WLO,
29826 + AVR32_SYNTAX_LD_SHEQ,
29827 + AVR32_SYNTAX_LD_SHNE,
29828 + AVR32_SYNTAX_LD_SHCC,
29829 + AVR32_SYNTAX_LD_SHCS,
29830 + AVR32_SYNTAX_LD_SHGE,
29831 + AVR32_SYNTAX_LD_SHLT,
29832 + AVR32_SYNTAX_LD_SHMI,
29833 + AVR32_SYNTAX_LD_SHPL,
29834 + AVR32_SYNTAX_LD_SHLS,
29835 + AVR32_SYNTAX_LD_SHGT,
29836 + AVR32_SYNTAX_LD_SHLE,
29837 + AVR32_SYNTAX_LD_SHHI,
29838 + AVR32_SYNTAX_LD_SHVS,
29839 + AVR32_SYNTAX_LD_SHVC,
29840 + AVR32_SYNTAX_LD_SHQS,
29841 + AVR32_SYNTAX_LD_SHAL,
29842 + AVR32_SYNTAX_LD_SHHS,
29843 + AVR32_SYNTAX_LD_SHLO,
29844 + AVR32_SYNTAX_LD_UHEQ,
29845 + AVR32_SYNTAX_LD_UHNE,
29846 + AVR32_SYNTAX_LD_UHCC,
29847 + AVR32_SYNTAX_LD_UHCS,
29848 + AVR32_SYNTAX_LD_UHGE,
29849 + AVR32_SYNTAX_LD_UHLT,
29850 + AVR32_SYNTAX_LD_UHMI,
29851 + AVR32_SYNTAX_LD_UHPL,
29852 + AVR32_SYNTAX_LD_UHLS,
29853 + AVR32_SYNTAX_LD_UHGT,
29854 + AVR32_SYNTAX_LD_UHLE,
29855 + AVR32_SYNTAX_LD_UHHI,
29856 + AVR32_SYNTAX_LD_UHVS,
29857 + AVR32_SYNTAX_LD_UHVC,
29858 + AVR32_SYNTAX_LD_UHQS,
29859 + AVR32_SYNTAX_LD_UHAL,
29860 + AVR32_SYNTAX_LD_UHHS,
29861 + AVR32_SYNTAX_LD_UHLO,
29862 + AVR32_SYNTAX_LD_SBEQ,
29863 + AVR32_SYNTAX_LD_SBNE,
29864 + AVR32_SYNTAX_LD_SBCC,
29865 + AVR32_SYNTAX_LD_SBCS,
29866 + AVR32_SYNTAX_LD_SBGE,
29867 + AVR32_SYNTAX_LD_SBLT,
29868 + AVR32_SYNTAX_LD_SBMI,
29869 + AVR32_SYNTAX_LD_SBPL,
29870 + AVR32_SYNTAX_LD_SBLS,
29871 + AVR32_SYNTAX_LD_SBGT,
29872 + AVR32_SYNTAX_LD_SBLE,
29873 + AVR32_SYNTAX_LD_SBHI,
29874 + AVR32_SYNTAX_LD_SBVS,
29875 + AVR32_SYNTAX_LD_SBVC,
29876 + AVR32_SYNTAX_LD_SBQS,
29877 + AVR32_SYNTAX_LD_SBAL,
29878 + AVR32_SYNTAX_LD_SBHS,
29879 + AVR32_SYNTAX_LD_SBLO,
29880 + AVR32_SYNTAX_LD_UBEQ,
29881 + AVR32_SYNTAX_LD_UBNE,
29882 + AVR32_SYNTAX_LD_UBCC,
29883 + AVR32_SYNTAX_LD_UBCS,
29884 + AVR32_SYNTAX_LD_UBGE,
29885 + AVR32_SYNTAX_LD_UBLT,
29886 + AVR32_SYNTAX_LD_UBMI,
29887 + AVR32_SYNTAX_LD_UBPL,
29888 + AVR32_SYNTAX_LD_UBLS,
29889 + AVR32_SYNTAX_LD_UBGT,
29890 + AVR32_SYNTAX_LD_UBLE,
29891 + AVR32_SYNTAX_LD_UBHI,
29892 + AVR32_SYNTAX_LD_UBVS,
29893 + AVR32_SYNTAX_LD_UBVC,
29894 + AVR32_SYNTAX_LD_UBQS,
29895 + AVR32_SYNTAX_LD_UBAL,
29896 + AVR32_SYNTAX_LD_UBHS,
29897 + AVR32_SYNTAX_LD_UBLO,
29898 + AVR32_SYNTAX_ST_WEQ,
29899 + AVR32_SYNTAX_ST_WNE,
29900 + AVR32_SYNTAX_ST_WCC,
29901 + AVR32_SYNTAX_ST_WCS,
29902 + AVR32_SYNTAX_ST_WGE,
29903 + AVR32_SYNTAX_ST_WLT,
29904 + AVR32_SYNTAX_ST_WMI,
29905 + AVR32_SYNTAX_ST_WPL,
29906 + AVR32_SYNTAX_ST_WLS,
29907 + AVR32_SYNTAX_ST_WGT,
29908 + AVR32_SYNTAX_ST_WLE,
29909 + AVR32_SYNTAX_ST_WHI,
29910 + AVR32_SYNTAX_ST_WVS,
29911 + AVR32_SYNTAX_ST_WVC,
29912 + AVR32_SYNTAX_ST_WQS,
29913 + AVR32_SYNTAX_ST_WAL,
29914 + AVR32_SYNTAX_ST_WHS,
29915 + AVR32_SYNTAX_ST_WLO,
29916 + AVR32_SYNTAX_ST_HEQ,
29917 + AVR32_SYNTAX_ST_HNE,
29918 + AVR32_SYNTAX_ST_HCC,
29919 + AVR32_SYNTAX_ST_HCS,
29920 + AVR32_SYNTAX_ST_HGE,
29921 + AVR32_SYNTAX_ST_HLT,
29922 + AVR32_SYNTAX_ST_HMI,
29923 + AVR32_SYNTAX_ST_HPL,
29924 + AVR32_SYNTAX_ST_HLS,
29925 + AVR32_SYNTAX_ST_HGT,
29926 + AVR32_SYNTAX_ST_HLE,
29927 + AVR32_SYNTAX_ST_HHI,
29928 + AVR32_SYNTAX_ST_HVS,
29929 + AVR32_SYNTAX_ST_HVC,
29930 + AVR32_SYNTAX_ST_HQS,
29931 + AVR32_SYNTAX_ST_HAL,
29932 + AVR32_SYNTAX_ST_HHS,
29933 + AVR32_SYNTAX_ST_HLO,
29934 + AVR32_SYNTAX_ST_BEQ,
29935 + AVR32_SYNTAX_ST_BNE,
29936 + AVR32_SYNTAX_ST_BCC,
29937 + AVR32_SYNTAX_ST_BCS,
29938 + AVR32_SYNTAX_ST_BGE,
29939 + AVR32_SYNTAX_ST_BLT,
29940 + AVR32_SYNTAX_ST_BMI,
29941 + AVR32_SYNTAX_ST_BPL,
29942 + AVR32_SYNTAX_ST_BLS,
29943 + AVR32_SYNTAX_ST_BGT,
29944 + AVR32_SYNTAX_ST_BLE,
29945 + AVR32_SYNTAX_ST_BHI,
29946 + AVR32_SYNTAX_ST_BVS,
29947 + AVR32_SYNTAX_ST_BVC,
29948 + AVR32_SYNTAX_ST_BQS,
29949 + AVR32_SYNTAX_ST_BAL,
29950 + AVR32_SYNTAX_ST_BHS,
29951 + AVR32_SYNTAX_ST_BLO,
29952 + AVR32_SYNTAX_MOVH,
29953 + AVR32_SYNTAX__END_
29954 +};
29955 +#define AVR32_NR_SYNTAX AVR32_SYNTAX__END_
29956 +
29957 +enum avr32_alias_type
29958 + {
29959 + AVR32_ALIAS_FMAC_S,
29960 + AVR32_ALIAS_FMAC_D,
29961 + AVR32_ALIAS_FNMAC_S,
29962 + AVR32_ALIAS_FNMAC_D,
29963 + AVR32_ALIAS_FMSC_S,
29964 + AVR32_ALIAS_FMSC_D,
29965 + AVR32_ALIAS_FNMSC_S,
29966 + AVR32_ALIAS_FNMSC_D,
29967 + AVR32_ALIAS_FADD_S,
29968 + AVR32_ALIAS_FADD_D,
29969 + AVR32_ALIAS_FSUB_S,
29970 + AVR32_ALIAS_FSUB_D,
29971 + AVR32_ALIAS_FMUL_S,
29972 + AVR32_ALIAS_FMUL_D,
29973 + AVR32_ALIAS_FNMUL_S,
29974 + AVR32_ALIAS_FNMUL_D,
29975 + AVR32_ALIAS_FNEG_S,
29976 + AVR32_ALIAS_FNEG_D,
29977 + AVR32_ALIAS_FABS_S,
29978 + AVR32_ALIAS_FABS_D,
29979 + AVR32_ALIAS_FCMP_S,
29980 + AVR32_ALIAS_FCMP_D,
29981 + AVR32_ALIAS_FMOV1_S,
29982 + AVR32_ALIAS_FMOV1_D,
29983 + AVR32_ALIAS_FMOV2_S,
29984 + AVR32_ALIAS_FMOV2_D,
29985 + AVR32_ALIAS_FMOV3_S,
29986 + AVR32_ALIAS_FMOV3_D,
29987 + AVR32_ALIAS_FCASTS_D,
29988 + AVR32_ALIAS_FCASTD_S,
29989 + AVR32_ALIAS_PICOSVMAC0,
29990 + AVR32_ALIAS_PICOSVMAC1,
29991 + AVR32_ALIAS_PICOSVMAC2,
29992 + AVR32_ALIAS_PICOSVMAC3,
29993 + AVR32_ALIAS_PICOSVMUL0,
29994 + AVR32_ALIAS_PICOSVMUL1,
29995 + AVR32_ALIAS_PICOSVMUL2,
29996 + AVR32_ALIAS_PICOSVMUL3,
29997 + AVR32_ALIAS_PICOVMAC0,
29998 + AVR32_ALIAS_PICOVMAC1,
29999 + AVR32_ALIAS_PICOVMAC2,
30000 + AVR32_ALIAS_PICOVMAC3,
30001 + AVR32_ALIAS_PICOVMUL0,
30002 + AVR32_ALIAS_PICOVMUL1,
30003 + AVR32_ALIAS_PICOVMUL2,
30004 + AVR32_ALIAS_PICOVMUL3,
30005 + AVR32_ALIAS_PICOLD_D1,
30006 + AVR32_ALIAS_PICOLD_D2,
30007 + AVR32_ALIAS_PICOLD_D3,
30008 + AVR32_ALIAS_PICOLD_W1,
30009 + AVR32_ALIAS_PICOLD_W2,
30010 + AVR32_ALIAS_PICOLD_W3,
30011 + AVR32_ALIAS_PICOLDM_D,
30012 + AVR32_ALIAS_PICOLDM_D_PU,
30013 + AVR32_ALIAS_PICOLDM_W,
30014 + AVR32_ALIAS_PICOLDM_W_PU,
30015 + AVR32_ALIAS_PICOMV_D1,
30016 + AVR32_ALIAS_PICOMV_D2,
30017 + AVR32_ALIAS_PICOMV_W1,
30018 + AVR32_ALIAS_PICOMV_W2,
30019 + AVR32_ALIAS_PICOST_D1,
30020 + AVR32_ALIAS_PICOST_D2,
30021 + AVR32_ALIAS_PICOST_D3,
30022 + AVR32_ALIAS_PICOST_W1,
30023 + AVR32_ALIAS_PICOST_W2,
30024 + AVR32_ALIAS_PICOST_W3,
30025 + AVR32_ALIAS_PICOSTM_D,
30026 + AVR32_ALIAS_PICOSTM_D_PU,
30027 + AVR32_ALIAS_PICOSTM_W,
30028 + AVR32_ALIAS_PICOSTM_W_PU,
30029 + AVR32_ALIAS__END_
30030 + };
30031 +#define AVR32_NR_ALIAS AVR32_ALIAS__END_
30032 +
30033 +enum avr32_mnemonic_type
30034 +{
30035 + AVR32_MNEMONIC_ABS,
30036 + AVR32_MNEMONIC_ACALL,
30037 + AVR32_MNEMONIC_ACR,
30038 + AVR32_MNEMONIC_ADC,
30039 + AVR32_MNEMONIC_ADD,
30040 + AVR32_MNEMONIC_ADDABS,
30041 + AVR32_MNEMONIC_ADDHH_W,
30042 + AVR32_MNEMONIC_AND,
30043 + AVR32_MNEMONIC_ANDH,
30044 + AVR32_MNEMONIC_ANDL,
30045 + AVR32_MNEMONIC_ANDN,
30046 + AVR32_MNEMONIC_ASR,
30047 + AVR32_MNEMONIC_BFEXTS,
30048 + AVR32_MNEMONIC_BFEXTU,
30049 + AVR32_MNEMONIC_BFINS,
30050 + AVR32_MNEMONIC_BLD,
30051 + AVR32_MNEMONIC_BREQ,
30052 + AVR32_MNEMONIC_BRNE,
30053 + AVR32_MNEMONIC_BRCC,
30054 + AVR32_MNEMONIC_BRCS,
30055 + AVR32_MNEMONIC_BRGE,
30056 + AVR32_MNEMONIC_BRLT,
30057 + AVR32_MNEMONIC_BRMI,
30058 + AVR32_MNEMONIC_BRPL,
30059 + AVR32_MNEMONIC_BRHS,
30060 + AVR32_MNEMONIC_BRLO,
30061 + AVR32_MNEMONIC_BRLS,
30062 + AVR32_MNEMONIC_BRGT,
30063 + AVR32_MNEMONIC_BRLE,
30064 + AVR32_MNEMONIC_BRHI,
30065 + AVR32_MNEMONIC_BRVS,
30066 + AVR32_MNEMONIC_BRVC,
30067 + AVR32_MNEMONIC_BRQS,
30068 + AVR32_MNEMONIC_BRAL,
30069 + AVR32_MNEMONIC_BREAKPOINT,
30070 + AVR32_MNEMONIC_BREV,
30071 + AVR32_MNEMONIC_BST,
30072 + AVR32_MNEMONIC_CACHE,
30073 + AVR32_MNEMONIC_CASTS_B,
30074 + AVR32_MNEMONIC_CASTS_H,
30075 + AVR32_MNEMONIC_CASTU_B,
30076 + AVR32_MNEMONIC_CASTU_H,
30077 + AVR32_MNEMONIC_CBR,
30078 + AVR32_MNEMONIC_CLZ,
30079 + AVR32_MNEMONIC_COM,
30080 + AVR32_MNEMONIC_COP,
30081 + AVR32_MNEMONIC_CP_B,
30082 + AVR32_MNEMONIC_CP_H,
30083 + AVR32_MNEMONIC_CP_W,
30084 + AVR32_MNEMONIC_CP,
30085 + AVR32_MNEMONIC_CPC,
30086 + AVR32_MNEMONIC_CSRF,
30087 + AVR32_MNEMONIC_CSRFCZ,
30088 + AVR32_MNEMONIC_DIVS,
30089 + AVR32_MNEMONIC_DIVU,
30090 + AVR32_MNEMONIC_EOR,
30091 + AVR32_MNEMONIC_EORL,
30092 + AVR32_MNEMONIC_EORH,
30093 + AVR32_MNEMONIC_FRS,
30094 + AVR32_MNEMONIC_ICALL,
30095 + AVR32_MNEMONIC_INCJOSP,
30096 + AVR32_MNEMONIC_LD_D,
30097 + AVR32_MNEMONIC_LD_SB,
30098 + AVR32_MNEMONIC_LD_UB,
30099 + AVR32_MNEMONIC_LD_SH,
30100 + AVR32_MNEMONIC_LD_UH,
30101 + AVR32_MNEMONIC_LD_W,
30102 + AVR32_MNEMONIC_LDC_D,
30103 + AVR32_MNEMONIC_LDC_W,
30104 + AVR32_MNEMONIC_LDC0_D,
30105 + AVR32_MNEMONIC_LDC0_W,
30106 + AVR32_MNEMONIC_LDCM_D,
30107 + AVR32_MNEMONIC_LDCM_W,
30108 + AVR32_MNEMONIC_LDDPC,
30109 + AVR32_MNEMONIC_LDDSP,
30110 + AVR32_MNEMONIC_LDINS_B,
30111 + AVR32_MNEMONIC_LDINS_H,
30112 + AVR32_MNEMONIC_LDM,
30113 + AVR32_MNEMONIC_LDMTS,
30114 + AVR32_MNEMONIC_LDSWP_SH,
30115 + AVR32_MNEMONIC_LDSWP_UH,
30116 + AVR32_MNEMONIC_LDSWP_W,
30117 + AVR32_MNEMONIC_LSL,
30118 + AVR32_MNEMONIC_LSR,
30119 + AVR32_MNEMONIC_MAC,
30120 + AVR32_MNEMONIC_MACHH_D,
30121 + AVR32_MNEMONIC_MACHH_W,
30122 + AVR32_MNEMONIC_MACS_D,
30123 + AVR32_MNEMONIC_MACSATHH_W,
30124 + AVR32_MNEMONIC_MACU_D,
30125 + AVR32_MNEMONIC_MACWH_D,
30126 + AVR32_MNEMONIC_MAX,
30127 + AVR32_MNEMONIC_MCALL,
30128 + AVR32_MNEMONIC_MFDR,
30129 + AVR32_MNEMONIC_MFSR,
30130 + AVR32_MNEMONIC_MIN,
30131 + AVR32_MNEMONIC_MOV,
30132 + AVR32_MNEMONIC_MOVEQ,
30133 + AVR32_MNEMONIC_MOVNE,
30134 + AVR32_MNEMONIC_MOVCC,
30135 + AVR32_MNEMONIC_MOVCS,
30136 + AVR32_MNEMONIC_MOVGE,
30137 + AVR32_MNEMONIC_MOVLT,
30138 + AVR32_MNEMONIC_MOVMI,
30139 + AVR32_MNEMONIC_MOVPL,
30140 + AVR32_MNEMONIC_MOVLS,
30141 + AVR32_MNEMONIC_MOVGT,
30142 + AVR32_MNEMONIC_MOVLE,
30143 + AVR32_MNEMONIC_MOVHI,
30144 + AVR32_MNEMONIC_MOVVS,
30145 + AVR32_MNEMONIC_MOVVC,
30146 + AVR32_MNEMONIC_MOVQS,
30147 + AVR32_MNEMONIC_MOVAL,
30148 + AVR32_MNEMONIC_MOVHS,
30149 + AVR32_MNEMONIC_MOVLO,
30150 + AVR32_MNEMONIC_MTDR,
30151 + AVR32_MNEMONIC_MTSR,
30152 + AVR32_MNEMONIC_MUL,
30153 + AVR32_MNEMONIC_MULHH_W,
30154 + AVR32_MNEMONIC_MULNHH_W,
30155 + AVR32_MNEMONIC_MULNWH_D,
30156 + AVR32_MNEMONIC_MULS_D,
30157 + AVR32_MNEMONIC_MULSATHH_H,
30158 + AVR32_MNEMONIC_MULSATHH_W,
30159 + AVR32_MNEMONIC_MULSATRNDHH_H,
30160 + AVR32_MNEMONIC_MULSATRNDWH_W,
30161 + AVR32_MNEMONIC_MULSATWH_W,
30162 + AVR32_MNEMONIC_MULU_D,
30163 + AVR32_MNEMONIC_MULWH_D,
30164 + AVR32_MNEMONIC_MUSFR,
30165 + AVR32_MNEMONIC_MUSTR,
30166 + AVR32_MNEMONIC_MVCR_D,
30167 + AVR32_MNEMONIC_MVCR_W,
30168 + AVR32_MNEMONIC_MVRC_D,
30169 + AVR32_MNEMONIC_MVRC_W,
30170 + AVR32_MNEMONIC_NEG,
30171 + AVR32_MNEMONIC_NOP,
30172 + AVR32_MNEMONIC_OR,
30173 + AVR32_MNEMONIC_ORH,
30174 + AVR32_MNEMONIC_ORL,
30175 + AVR32_MNEMONIC_PABS_SB,
30176 + AVR32_MNEMONIC_PABS_SH,
30177 + AVR32_MNEMONIC_PACKSH_SB,
30178 + AVR32_MNEMONIC_PACKSH_UB,
30179 + AVR32_MNEMONIC_PACKW_SH,
30180 + AVR32_MNEMONIC_PADD_B,
30181 + AVR32_MNEMONIC_PADD_H,
30182 + AVR32_MNEMONIC_PADDH_SH,
30183 + AVR32_MNEMONIC_PADDH_UB,
30184 + AVR32_MNEMONIC_PADDS_SB,
30185 + AVR32_MNEMONIC_PADDS_SH,
30186 + AVR32_MNEMONIC_PADDS_UB,
30187 + AVR32_MNEMONIC_PADDS_UH,
30188 + AVR32_MNEMONIC_PADDSUB_H,
30189 + AVR32_MNEMONIC_PADDSUBH_SH,
30190 + AVR32_MNEMONIC_PADDSUBS_SH,
30191 + AVR32_MNEMONIC_PADDSUBS_UH,
30192 + AVR32_MNEMONIC_PADDX_H,
30193 + AVR32_MNEMONIC_PADDXH_SH,
30194 + AVR32_MNEMONIC_PADDXS_SH,
30195 + AVR32_MNEMONIC_PADDXS_UH,
30196 + AVR32_MNEMONIC_PASR_B,
30197 + AVR32_MNEMONIC_PASR_H,
30198 + AVR32_MNEMONIC_PAVG_SH,
30199 + AVR32_MNEMONIC_PAVG_UB,
30200 + AVR32_MNEMONIC_PLSL_B,
30201 + AVR32_MNEMONIC_PLSL_H,
30202 + AVR32_MNEMONIC_PLSR_B,
30203 + AVR32_MNEMONIC_PLSR_H,
30204 + AVR32_MNEMONIC_PMAX_SH,
30205 + AVR32_MNEMONIC_PMAX_UB,
30206 + AVR32_MNEMONIC_PMIN_SH,
30207 + AVR32_MNEMONIC_PMIN_UB,
30208 + AVR32_MNEMONIC_POPJC,
30209 + AVR32_MNEMONIC_POPM,
30210 + AVR32_MNEMONIC_PREF,
30211 + AVR32_MNEMONIC_PSAD,
30212 + AVR32_MNEMONIC_PSUB_B,
30213 + AVR32_MNEMONIC_PSUB_H,
30214 + AVR32_MNEMONIC_PSUBADD_H,
30215 + AVR32_MNEMONIC_PSUBADDH_SH,
30216 + AVR32_MNEMONIC_PSUBADDS_SH,
30217 + AVR32_MNEMONIC_PSUBADDS_UH,
30218 + AVR32_MNEMONIC_PSUBH_SH,
30219 + AVR32_MNEMONIC_PSUBH_UB,
30220 + AVR32_MNEMONIC_PSUBS_SB,
30221 + AVR32_MNEMONIC_PSUBS_SH,
30222 + AVR32_MNEMONIC_PSUBS_UB,
30223 + AVR32_MNEMONIC_PSUBS_UH,
30224 + AVR32_MNEMONIC_PSUBX_H,
30225 + AVR32_MNEMONIC_PSUBXH_SH,
30226 + AVR32_MNEMONIC_PSUBXS_SH,
30227 + AVR32_MNEMONIC_PSUBXS_UH,
30228 + AVR32_MNEMONIC_PUNPCKSB_H,
30229 + AVR32_MNEMONIC_PUNPCKUB_H,
30230 + AVR32_MNEMONIC_PUSHJC,
30231 + AVR32_MNEMONIC_PUSHM,
30232 + AVR32_MNEMONIC_RCALL,
30233 + AVR32_MNEMONIC_RETEQ,
30234 + AVR32_MNEMONIC_RETNE,
30235 + AVR32_MNEMONIC_RETCC,
30236 + AVR32_MNEMONIC_RETCS,
30237 + AVR32_MNEMONIC_RETGE,
30238 + AVR32_MNEMONIC_RETLT,
30239 + AVR32_MNEMONIC_RETMI,
30240 + AVR32_MNEMONIC_RETPL,
30241 + AVR32_MNEMONIC_RETLS,
30242 + AVR32_MNEMONIC_RETGT,
30243 + AVR32_MNEMONIC_RETLE,
30244 + AVR32_MNEMONIC_RETHI,
30245 + AVR32_MNEMONIC_RETVS,
30246 + AVR32_MNEMONIC_RETVC,
30247 + AVR32_MNEMONIC_RETQS,
30248 + AVR32_MNEMONIC_RETAL,
30249 + AVR32_MNEMONIC_RETHS,
30250 + AVR32_MNEMONIC_RETLO,
30251 + AVR32_MNEMONIC_RET,
30252 + AVR32_MNEMONIC_RETD,
30253 + AVR32_MNEMONIC_RETE,
30254 + AVR32_MNEMONIC_RETJ,
30255 + AVR32_MNEMONIC_RETS,
30256 + AVR32_MNEMONIC_RJMP,
30257 + AVR32_MNEMONIC_ROL,
30258 + AVR32_MNEMONIC_ROR,
30259 + AVR32_MNEMONIC_RSUB,
30260 + AVR32_MNEMONIC_SATADD_H,
30261 + AVR32_MNEMONIC_SATADD_W,
30262 + AVR32_MNEMONIC_SATRNDS,
30263 + AVR32_MNEMONIC_SATRNDU,
30264 + AVR32_MNEMONIC_SATS,
30265 + AVR32_MNEMONIC_SATSUB_H,
30266 + AVR32_MNEMONIC_SATSUB_W,
30267 + AVR32_MNEMONIC_SATU,
30268 + AVR32_MNEMONIC_SBC,
30269 + AVR32_MNEMONIC_SBR,
30270 + AVR32_MNEMONIC_SCALL,
30271 + AVR32_MNEMONIC_SCR,
30272 + AVR32_MNEMONIC_SLEEP,
30273 + AVR32_MNEMONIC_SREQ,
30274 + AVR32_MNEMONIC_SRNE,
30275 + AVR32_MNEMONIC_SRCC,
30276 + AVR32_MNEMONIC_SRCS,
30277 + AVR32_MNEMONIC_SRGE,
30278 + AVR32_MNEMONIC_SRLT,
30279 + AVR32_MNEMONIC_SRMI,
30280 + AVR32_MNEMONIC_SRPL,
30281 + AVR32_MNEMONIC_SRLS,
30282 + AVR32_MNEMONIC_SRGT,
30283 + AVR32_MNEMONIC_SRLE,
30284 + AVR32_MNEMONIC_SRHI,
30285 + AVR32_MNEMONIC_SRVS,
30286 + AVR32_MNEMONIC_SRVC,
30287 + AVR32_MNEMONIC_SRQS,
30288 + AVR32_MNEMONIC_SRAL,
30289 + AVR32_MNEMONIC_SRHS,
30290 + AVR32_MNEMONIC_SRLO,
30291 + AVR32_MNEMONIC_SSRF,
30292 + AVR32_MNEMONIC_ST_B,
30293 + AVR32_MNEMONIC_ST_D,
30294 + AVR32_MNEMONIC_ST_H,
30295 + AVR32_MNEMONIC_ST_W,
30296 + AVR32_MNEMONIC_STC_D,
30297 + AVR32_MNEMONIC_STC_W,
30298 + AVR32_MNEMONIC_STC0_D,
30299 + AVR32_MNEMONIC_STC0_W,
30300 + AVR32_MNEMONIC_STCM_D,
30301 + AVR32_MNEMONIC_STCM_W,
30302 + AVR32_MNEMONIC_STCOND,
30303 + AVR32_MNEMONIC_STDSP,
30304 + AVR32_MNEMONIC_STHH_W,
30305 + AVR32_MNEMONIC_STM,
30306 + AVR32_MNEMONIC_STMTS,
30307 + AVR32_MNEMONIC_STSWP_H,
30308 + AVR32_MNEMONIC_STSWP_W,
30309 + AVR32_MNEMONIC_SUB,
30310 + AVR32_MNEMONIC_SUBEQ,
30311 + AVR32_MNEMONIC_SUBNE,
30312 + AVR32_MNEMONIC_SUBCC,
30313 + AVR32_MNEMONIC_SUBCS,
30314 + AVR32_MNEMONIC_SUBGE,
30315 + AVR32_MNEMONIC_SUBLT,
30316 + AVR32_MNEMONIC_SUBMI,
30317 + AVR32_MNEMONIC_SUBPL,
30318 + AVR32_MNEMONIC_SUBLS,
30319 + AVR32_MNEMONIC_SUBGT,
30320 + AVR32_MNEMONIC_SUBLE,
30321 + AVR32_MNEMONIC_SUBHI,
30322 + AVR32_MNEMONIC_SUBVS,
30323 + AVR32_MNEMONIC_SUBVC,
30324 + AVR32_MNEMONIC_SUBQS,
30325 + AVR32_MNEMONIC_SUBAL,
30326 + AVR32_MNEMONIC_SUBHS,
30327 + AVR32_MNEMONIC_SUBLO,
30328 + AVR32_MNEMONIC_SUBFEQ,
30329 + AVR32_MNEMONIC_SUBFNE,
30330 + AVR32_MNEMONIC_SUBFCC,
30331 + AVR32_MNEMONIC_SUBFCS,
30332 + AVR32_MNEMONIC_SUBFGE,
30333 + AVR32_MNEMONIC_SUBFLT,
30334 + AVR32_MNEMONIC_SUBFMI,
30335 + AVR32_MNEMONIC_SUBFPL,
30336 + AVR32_MNEMONIC_SUBFLS,
30337 + AVR32_MNEMONIC_SUBFGT,
30338 + AVR32_MNEMONIC_SUBFLE,
30339 + AVR32_MNEMONIC_SUBFHI,
30340 + AVR32_MNEMONIC_SUBFVS,
30341 + AVR32_MNEMONIC_SUBFVC,
30342 + AVR32_MNEMONIC_SUBFQS,
30343 + AVR32_MNEMONIC_SUBFAL,
30344 + AVR32_MNEMONIC_SUBFHS,
30345 + AVR32_MNEMONIC_SUBFLO,
30346 + AVR32_MNEMONIC_SUBHH_W,
30347 + AVR32_MNEMONIC_SWAP_B,
30348 + AVR32_MNEMONIC_SWAP_BH,
30349 + AVR32_MNEMONIC_SWAP_H,
30350 + AVR32_MNEMONIC_SYNC,
30351 + AVR32_MNEMONIC_TLBR,
30352 + AVR32_MNEMONIC_TLBS,
30353 + AVR32_MNEMONIC_TLBW,
30354 + AVR32_MNEMONIC_TNBZ,
30355 + AVR32_MNEMONIC_TST,
30356 + AVR32_MNEMONIC_XCHG,
30357 + AVR32_MNEMONIC_MEMC,
30358 + AVR32_MNEMONIC_MEMS,
30359 + AVR32_MNEMONIC_MEMT,
30360 + AVR32_MNEMONIC_FADD_S,
30361 + AVR32_MNEMONIC_FADD_D,
30362 + AVR32_MNEMONIC_FSUB_S,
30363 + AVR32_MNEMONIC_FSUB_D,
30364 + AVR32_MNEMONIC_FMAC_S,
30365 + AVR32_MNEMONIC_FMAC_D,
30366 + AVR32_MNEMONIC_FNMAC_S,
30367 + AVR32_MNEMONIC_FNMAC_D,
30368 + AVR32_MNEMONIC_FMSC_S,
30369 + AVR32_MNEMONIC_FMSC_D,
30370 + AVR32_MNEMONIC_FNMSC_S,
30371 + AVR32_MNEMONIC_FNMSC_D,
30372 + AVR32_MNEMONIC_FMUL_S,
30373 + AVR32_MNEMONIC_FMUL_D,
30374 + AVR32_MNEMONIC_FNMUL_S,
30375 + AVR32_MNEMONIC_FNMUL_D,
30376 + AVR32_MNEMONIC_FNEG_S,
30377 + AVR32_MNEMONIC_FNEG_D,
30378 + AVR32_MNEMONIC_FABS_S,
30379 + AVR32_MNEMONIC_FABS_D,
30380 + AVR32_MNEMONIC_FCMP_S,
30381 + AVR32_MNEMONIC_FCMP_D,
30382 + AVR32_MNEMONIC_FMOV_S,
30383 + AVR32_MNEMONIC_FMOV_D,
30384 + AVR32_MNEMONIC_FCASTS_D,
30385 + AVR32_MNEMONIC_FCASTD_S,
30386 + /* AVR32_MNEMONIC_FLD_S,
30387 + AVR32_MNEMONIC_FLD_D,
30388 + AVR32_MNEMONIC_FST_S,
30389 + AVR32_MNEMONIC_FST_D, */
30390 + AVR32_MNEMONIC_LDA_W,
30391 + AVR32_MNEMONIC_CALL,
30392 + AVR32_MNEMONIC_PICOSVMAC,
30393 + AVR32_MNEMONIC_PICOSVMUL,
30394 + AVR32_MNEMONIC_PICOVMAC,
30395 + AVR32_MNEMONIC_PICOVMUL,
30396 + AVR32_MNEMONIC_PICOLD_D,
30397 + AVR32_MNEMONIC_PICOLD_W,
30398 + AVR32_MNEMONIC_PICOLDM_D,
30399 + AVR32_MNEMONIC_PICOLDM_W,
30400 + AVR32_MNEMONIC_PICOMV_D,
30401 + AVR32_MNEMONIC_PICOMV_W,
30402 + AVR32_MNEMONIC_PICOST_D,
30403 + AVR32_MNEMONIC_PICOST_W,
30404 + AVR32_MNEMONIC_PICOSTM_D,
30405 + AVR32_MNEMONIC_PICOSTM_W,
30406 + AVR32_MNEMONIC_RSUBEQ,
30407 + AVR32_MNEMONIC_RSUBNE,
30408 + AVR32_MNEMONIC_RSUBCC,
30409 + AVR32_MNEMONIC_RSUBCS,
30410 + AVR32_MNEMONIC_RSUBGE,
30411 + AVR32_MNEMONIC_RSUBLT,
30412 + AVR32_MNEMONIC_RSUBMI,
30413 + AVR32_MNEMONIC_RSUBPL,
30414 + AVR32_MNEMONIC_RSUBLS,
30415 + AVR32_MNEMONIC_RSUBGT,
30416 + AVR32_MNEMONIC_RSUBLE,
30417 + AVR32_MNEMONIC_RSUBHI,
30418 + AVR32_MNEMONIC_RSUBVS,
30419 + AVR32_MNEMONIC_RSUBVC,
30420 + AVR32_MNEMONIC_RSUBQS,
30421 + AVR32_MNEMONIC_RSUBAL,
30422 + AVR32_MNEMONIC_RSUBHS,
30423 + AVR32_MNEMONIC_RSUBLO,
30424 + AVR32_MNEMONIC_ADDEQ,
30425 + AVR32_MNEMONIC_ADDNE,
30426 + AVR32_MNEMONIC_ADDCC,
30427 + AVR32_MNEMONIC_ADDCS,
30428 + AVR32_MNEMONIC_ADDGE,
30429 + AVR32_MNEMONIC_ADDLT,
30430 + AVR32_MNEMONIC_ADDMI,
30431 + AVR32_MNEMONIC_ADDPL,
30432 + AVR32_MNEMONIC_ADDLS,
30433 + AVR32_MNEMONIC_ADDGT,
30434 + AVR32_MNEMONIC_ADDLE,
30435 + AVR32_MNEMONIC_ADDHI,
30436 + AVR32_MNEMONIC_ADDVS,
30437 + AVR32_MNEMONIC_ADDVC,
30438 + AVR32_MNEMONIC_ADDQS,
30439 + AVR32_MNEMONIC_ADDAL,
30440 + AVR32_MNEMONIC_ADDHS,
30441 + AVR32_MNEMONIC_ADDLO,
30442 + AVR32_MNEMONIC_ANDEQ,
30443 + AVR32_MNEMONIC_ANDNE,
30444 + AVR32_MNEMONIC_ANDCC,
30445 + AVR32_MNEMONIC_ANDCS,
30446 + AVR32_MNEMONIC_ANDGE,
30447 + AVR32_MNEMONIC_ANDLT,
30448 + AVR32_MNEMONIC_ANDMI,
30449 + AVR32_MNEMONIC_ANDPL,
30450 + AVR32_MNEMONIC_ANDLS,
30451 + AVR32_MNEMONIC_ANDGT,
30452 + AVR32_MNEMONIC_ANDLE,
30453 + AVR32_MNEMONIC_ANDHI,
30454 + AVR32_MNEMONIC_ANDVS,
30455 + AVR32_MNEMONIC_ANDVC,
30456 + AVR32_MNEMONIC_ANDQS,
30457 + AVR32_MNEMONIC_ANDAL,
30458 + AVR32_MNEMONIC_ANDHS,
30459 + AVR32_MNEMONIC_ANDLO,
30460 + AVR32_MNEMONIC_OREQ,
30461 + AVR32_MNEMONIC_ORNE,
30462 + AVR32_MNEMONIC_ORCC,
30463 + AVR32_MNEMONIC_ORCS,
30464 + AVR32_MNEMONIC_ORGE,
30465 + AVR32_MNEMONIC_ORLT,
30466 + AVR32_MNEMONIC_ORMI,
30467 + AVR32_MNEMONIC_ORPL,
30468 + AVR32_MNEMONIC_ORLS,
30469 + AVR32_MNEMONIC_ORGT,
30470 + AVR32_MNEMONIC_ORLE,
30471 + AVR32_MNEMONIC_ORHI,
30472 + AVR32_MNEMONIC_ORVS,
30473 + AVR32_MNEMONIC_ORVC,
30474 + AVR32_MNEMONIC_ORQS,
30475 + AVR32_MNEMONIC_ORAL,
30476 + AVR32_MNEMONIC_ORHS,
30477 + AVR32_MNEMONIC_ORLO,
30478 + AVR32_MNEMONIC_EOREQ,
30479 + AVR32_MNEMONIC_EORNE,
30480 + AVR32_MNEMONIC_EORCC,
30481 + AVR32_MNEMONIC_EORCS,
30482 + AVR32_MNEMONIC_EORGE,
30483 + AVR32_MNEMONIC_EORLT,
30484 + AVR32_MNEMONIC_EORMI,
30485 + AVR32_MNEMONIC_EORPL,
30486 + AVR32_MNEMONIC_EORLS,
30487 + AVR32_MNEMONIC_EORGT,
30488 + AVR32_MNEMONIC_EORLE,
30489 + AVR32_MNEMONIC_EORHI,
30490 + AVR32_MNEMONIC_EORVS,
30491 + AVR32_MNEMONIC_EORVC,
30492 + AVR32_MNEMONIC_EORQS,
30493 + AVR32_MNEMONIC_EORAL,
30494 + AVR32_MNEMONIC_EORHS,
30495 + AVR32_MNEMONIC_EORLO,
30496 + AVR32_MNEMONIC_LD_WEQ,
30497 + AVR32_MNEMONIC_LD_WNE,
30498 + AVR32_MNEMONIC_LD_WCC,
30499 + AVR32_MNEMONIC_LD_WCS,
30500 + AVR32_MNEMONIC_LD_WGE,
30501 + AVR32_MNEMONIC_LD_WLT,
30502 + AVR32_MNEMONIC_LD_WMI,
30503 + AVR32_MNEMONIC_LD_WPL,
30504 + AVR32_MNEMONIC_LD_WLS,
30505 + AVR32_MNEMONIC_LD_WGT,
30506 + AVR32_MNEMONIC_LD_WLE,
30507 + AVR32_MNEMONIC_LD_WHI,
30508 + AVR32_MNEMONIC_LD_WVS,
30509 + AVR32_MNEMONIC_LD_WVC,
30510 + AVR32_MNEMONIC_LD_WQS,
30511 + AVR32_MNEMONIC_LD_WAL,
30512 + AVR32_MNEMONIC_LD_WHS,
30513 + AVR32_MNEMONIC_LD_WLO,
30514 + AVR32_MNEMONIC_LD_SHEQ,
30515 + AVR32_MNEMONIC_LD_SHNE,
30516 + AVR32_MNEMONIC_LD_SHCC,
30517 + AVR32_MNEMONIC_LD_SHCS,
30518 + AVR32_MNEMONIC_LD_SHGE,
30519 + AVR32_MNEMONIC_LD_SHLT,
30520 + AVR32_MNEMONIC_LD_SHMI,
30521 + AVR32_MNEMONIC_LD_SHPL,
30522 + AVR32_MNEMONIC_LD_SHLS,
30523 + AVR32_MNEMONIC_LD_SHGT,
30524 + AVR32_MNEMONIC_LD_SHLE,
30525 + AVR32_MNEMONIC_LD_SHHI,
30526 + AVR32_MNEMONIC_LD_SHVS,
30527 + AVR32_MNEMONIC_LD_SHVC,
30528 + AVR32_MNEMONIC_LD_SHQS,
30529 + AVR32_MNEMONIC_LD_SHAL,
30530 + AVR32_MNEMONIC_LD_SHHS,
30531 + AVR32_MNEMONIC_LD_SHLO,
30532 + AVR32_MNEMONIC_LD_UHEQ,
30533 + AVR32_MNEMONIC_LD_UHNE,
30534 + AVR32_MNEMONIC_LD_UHCC,
30535 + AVR32_MNEMONIC_LD_UHCS,
30536 + AVR32_MNEMONIC_LD_UHGE,
30537 + AVR32_MNEMONIC_LD_UHLT,
30538 + AVR32_MNEMONIC_LD_UHMI,
30539 + AVR32_MNEMONIC_LD_UHPL,
30540 + AVR32_MNEMONIC_LD_UHLS,
30541 + AVR32_MNEMONIC_LD_UHGT,
30542 + AVR32_MNEMONIC_LD_UHLE,
30543 + AVR32_MNEMONIC_LD_UHHI,
30544 + AVR32_MNEMONIC_LD_UHVS,
30545 + AVR32_MNEMONIC_LD_UHVC,
30546 + AVR32_MNEMONIC_LD_UHQS,
30547 + AVR32_MNEMONIC_LD_UHAL,
30548 + AVR32_MNEMONIC_LD_UHHS,
30549 + AVR32_MNEMONIC_LD_UHLO,
30550 + AVR32_MNEMONIC_LD_SBEQ,
30551 + AVR32_MNEMONIC_LD_SBNE,
30552 + AVR32_MNEMONIC_LD_SBCC,
30553 + AVR32_MNEMONIC_LD_SBCS,
30554 + AVR32_MNEMONIC_LD_SBGE,
30555 + AVR32_MNEMONIC_LD_SBLT,
30556 + AVR32_MNEMONIC_LD_SBMI,
30557 + AVR32_MNEMONIC_LD_SBPL,
30558 + AVR32_MNEMONIC_LD_SBLS,
30559 + AVR32_MNEMONIC_LD_SBGT,
30560 + AVR32_MNEMONIC_LD_SBLE,
30561 + AVR32_MNEMONIC_LD_SBHI,
30562 + AVR32_MNEMONIC_LD_SBVS,
30563 + AVR32_MNEMONIC_LD_SBVC,
30564 + AVR32_MNEMONIC_LD_SBQS,
30565 + AVR32_MNEMONIC_LD_SBAL,
30566 + AVR32_MNEMONIC_LD_SBHS,
30567 + AVR32_MNEMONIC_LD_SBLO,
30568 + AVR32_MNEMONIC_LD_UBEQ,
30569 + AVR32_MNEMONIC_LD_UBNE,
30570 + AVR32_MNEMONIC_LD_UBCC,
30571 + AVR32_MNEMONIC_LD_UBCS,
30572 + AVR32_MNEMONIC_LD_UBGE,
30573 + AVR32_MNEMONIC_LD_UBLT,
30574 + AVR32_MNEMONIC_LD_UBMI,
30575 + AVR32_MNEMONIC_LD_UBPL,
30576 + AVR32_MNEMONIC_LD_UBLS,
30577 + AVR32_MNEMONIC_LD_UBGT,
30578 + AVR32_MNEMONIC_LD_UBLE,
30579 + AVR32_MNEMONIC_LD_UBHI,
30580 + AVR32_MNEMONIC_LD_UBVS,
30581 + AVR32_MNEMONIC_LD_UBVC,
30582 + AVR32_MNEMONIC_LD_UBQS,
30583 + AVR32_MNEMONIC_LD_UBAL,
30584 + AVR32_MNEMONIC_LD_UBHS,
30585 + AVR32_MNEMONIC_LD_UBLO,
30586 + AVR32_MNEMONIC_ST_WEQ,
30587 + AVR32_MNEMONIC_ST_WNE,
30588 + AVR32_MNEMONIC_ST_WCC,
30589 + AVR32_MNEMONIC_ST_WCS,
30590 + AVR32_MNEMONIC_ST_WGE,
30591 + AVR32_MNEMONIC_ST_WLT,
30592 + AVR32_MNEMONIC_ST_WMI,
30593 + AVR32_MNEMONIC_ST_WPL,
30594 + AVR32_MNEMONIC_ST_WLS,
30595 + AVR32_MNEMONIC_ST_WGT,
30596 + AVR32_MNEMONIC_ST_WLE,
30597 + AVR32_MNEMONIC_ST_WHI,
30598 + AVR32_MNEMONIC_ST_WVS,
30599 + AVR32_MNEMONIC_ST_WVC,
30600 + AVR32_MNEMONIC_ST_WQS,
30601 + AVR32_MNEMONIC_ST_WAL,
30602 + AVR32_MNEMONIC_ST_WHS,
30603 + AVR32_MNEMONIC_ST_WLO,
30604 + AVR32_MNEMONIC_ST_HEQ,
30605 + AVR32_MNEMONIC_ST_HNE,
30606 + AVR32_MNEMONIC_ST_HCC,
30607 + AVR32_MNEMONIC_ST_HCS,
30608 + AVR32_MNEMONIC_ST_HGE,
30609 + AVR32_MNEMONIC_ST_HLT,
30610 + AVR32_MNEMONIC_ST_HMI,
30611 + AVR32_MNEMONIC_ST_HPL,
30612 + AVR32_MNEMONIC_ST_HLS,
30613 + AVR32_MNEMONIC_ST_HGT,
30614 + AVR32_MNEMONIC_ST_HLE,
30615 + AVR32_MNEMONIC_ST_HHI,
30616 + AVR32_MNEMONIC_ST_HVS,
30617 + AVR32_MNEMONIC_ST_HVC,
30618 + AVR32_MNEMONIC_ST_HQS,
30619 + AVR32_MNEMONIC_ST_HAL,
30620 + AVR32_MNEMONIC_ST_HHS,
30621 + AVR32_MNEMONIC_ST_HLO,
30622 + AVR32_MNEMONIC_ST_BEQ,
30623 + AVR32_MNEMONIC_ST_BNE,
30624 + AVR32_MNEMONIC_ST_BCC,
30625 + AVR32_MNEMONIC_ST_BCS,
30626 + AVR32_MNEMONIC_ST_BGE,
30627 + AVR32_MNEMONIC_ST_BLT,
30628 + AVR32_MNEMONIC_ST_BMI,
30629 + AVR32_MNEMONIC_ST_BPL,
30630 + AVR32_MNEMONIC_ST_BLS,
30631 + AVR32_MNEMONIC_ST_BGT,
30632 + AVR32_MNEMONIC_ST_BLE,
30633 + AVR32_MNEMONIC_ST_BHI,
30634 + AVR32_MNEMONIC_ST_BVS,
30635 + AVR32_MNEMONIC_ST_BVC,
30636 + AVR32_MNEMONIC_ST_BQS,
30637 + AVR32_MNEMONIC_ST_BAL,
30638 + AVR32_MNEMONIC_ST_BHS,
30639 + AVR32_MNEMONIC_ST_BLO,
30640 + AVR32_MNEMONIC_MOVH,
30641 + AVR32_MNEMONIC__END_
30642 +};
30643 +#define AVR32_NR_MNEMONICS AVR32_MNEMONIC__END_
30644 +
30645 +enum avr32_syntax_parser
30646 + {
30647 + AVR32_PARSER_NORMAL,
30648 + AVR32_PARSER_ALIAS,
30649 + AVR32_PARSER_LDA,
30650 + AVR32_PARSER_CALL,
30651 + AVR32_PARSER__END_
30652 + };
30653 +#define AVR32_NR_PARSERS AVR32_PARSER__END_
30654 Index: binutils-2.18/opcodes/configure.in
30655 ===================================================================
30656 --- binutils-2.18.orig/opcodes/configure.in 2008-11-25 15:24:48.000000000 +0100
30657 +++ binutils-2.18/opcodes/configure.in 2008-11-25 15:25:40.000000000 +0100
30658 @@ -158,6 +158,7 @@
30659 bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
30660 bfd_arm_arch) ta="$ta arm-dis.lo" ;;
30661 bfd_avr_arch) ta="$ta avr-dis.lo" ;;
30662 + bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
30663 bfd_bfin_arch) ta="$ta bfin-dis.lo" ;;
30664 bfd_cr16_arch) ta="$ta cr16-dis.lo cr16-opc.lo" ;;
30665 bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
30666 @@ -216,7 +217,7 @@
30667 ta="$ta sh64-dis.lo sh64-opc.lo"
30668 archdefs="$archdefs -DINCLUDE_SHMEDIA"
30669 break;;
30670 - esac;
30671 + esac
30672 done
30673 ta="$ta sh-dis.lo cgen-bitset.lo" ;;
30674 bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
30675 Index: binutils-2.18/opcodes/disassemble.c
30676 ===================================================================
30677 --- binutils-2.18.orig/opcodes/disassemble.c 2008-11-25 15:24:48.000000000 +0100
30678 +++ binutils-2.18/opcodes/disassemble.c 2008-11-25 15:25:40.000000000 +0100
30679 @@ -27,6 +27,7 @@
30680 #define ARCH_arc
30681 #define ARCH_arm
30682 #define ARCH_avr
30683 +#define ARCH_avr32
30684 #define ARCH_bfin
30685 #define ARCH_cr16
30686 #define ARCH_cris
30687 @@ -128,6 +129,11 @@
30688 disassemble = print_insn_avr;
30689 break;
30690 #endif
30691 +#ifdef ARCH_avr32
30692 + case bfd_arch_avr32:
30693 + disassemble = print_insn_avr32;
30694 + break;
30695 +#endif
30696 #ifdef ARCH_bfin
30697 case bfd_arch_bfin:
30698 disassemble = print_insn_bfin;
30699 @@ -346,9 +352,9 @@
30700 #ifdef ARCH_score
30701 case bfd_arch_score:
30702 if (bfd_big_endian (abfd))
30703 - disassemble = print_insn_big_score;
30704 + disassemble = print_insn_big_score;
30705 else
30706 - disassemble = print_insn_little_score;
30707 + disassemble = print_insn_little_score;
30708 break;
30709 #endif
30710 #ifdef ARCH_sh
30711 @@ -466,6 +472,9 @@
30712 #ifdef ARCH_i386
30713 print_i386_disassembler_options (stream);
30714 #endif
30715 +#ifdef ARCH_avr32
30716 + print_avr32_disassembler_options (stream);
30717 +#endif
30718
30719 return;
30720 }
30721 Index: binutils-2.18/opcodes/Makefile.am
30722 ===================================================================
30723 --- binutils-2.18.orig/opcodes/Makefile.am 2008-11-25 15:24:48.000000000 +0100
30724 +++ binutils-2.18/opcodes/Makefile.am 2008-11-25 15:25:40.000000000 +0100
30725 @@ -30,6 +30,7 @@
30726 # Header files.
30727 HFILES = \
30728 cgen-ops.h cgen-types.h \
30729 + avr32-asm.h avr32-opc.h \
30730 fr30-desc.h fr30-opc.h \
30731 frv-desc.h frv-opc.h \
30732 h8500-opc.h \
30733 @@ -63,6 +64,9 @@
30734 arc-ext.c \
30735 arm-dis.c \
30736 avr-dis.c \
30737 + avr32-asm.c \
30738 + avr32-dis.c \
30739 + avr32-opc.c \
30740 bfin-dis.c \
30741 cgen-asm.c \
30742 cgen-bitset.c \
30743 @@ -217,6 +221,9 @@
30744 arc-ext.lo \
30745 arm-dis.lo \
30746 avr-dis.lo \
30747 + avr32-asm.lo \
30748 + avr32-dis.lo \
30749 + avr32-opc.lo \
30750 bfin-dis.lo \
30751 cgen-asm.lo \
30752 cgen-bitset.lo \
30753 @@ -674,6 +681,15 @@
30754 $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
30755 opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
30756 $(INCDIR)/opcode/avr.h
30757 +avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
30758 + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
30759 + $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
30760 + $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
30761 +avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
30762 + $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
30763 + avr32-opc.h opintl.h
30764 +avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
30765 + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
30766 bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
30767 $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
30768 cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
30769 Index: binutils-2.18/configure
30770 ===================================================================
30771 --- binutils-2.18.orig/configure 2008-11-25 15:24:48.000000000 +0100
30772 +++ binutils-2.18/configure 2008-11-25 15:25:40.000000000 +0100
30773 @@ -6125,10 +6125,10 @@
30774 *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;;
30775 *)
30776
30777 - # For an installed makeinfo, we require it to be from texinfo 4.4 or
30778 + # For an installed makeinfo, we require it to be from texinfo 4.6 or
30779 # higher, else we use the "missing" dummy.
30780 if ${MAKEINFO} --version \
30781 - | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
30782 + | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
30783 :
30784 else
30785 MAKEINFO="$MISSING makeinfo"
30786 Index: binutils-2.18/configure.ac
30787 ===================================================================
30788 --- binutils-2.18.orig/configure.ac 2008-11-25 15:24:48.000000000 +0100
30789 +++ binutils-2.18/configure.ac 2008-11-25 15:25:40.000000000 +0100
30790 @@ -2400,10 +2400,10 @@
30791 *" texinfo "*) MAKEINFO='$$r/$(BUILD_SUBDIR)/texinfo/makeinfo/makeinfo' ;;
30792 *)
30793 changequote(,)
30794 - # For an installed makeinfo, we require it to be from texinfo 4.4 or
30795 + # For an installed makeinfo, we require it to be from texinfo 4.6 or
30796 # higher, else we use the "missing" dummy.
30797 if ${MAKEINFO} --version \
30798 - | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
30799 + | egrep 'texinfo[^0-9]*(4\.([6-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
30800 :
30801 else
30802 MAKEINFO="$MISSING makeinfo"
30803 Index: binutils-2.18/bfd/bfd-in2.h
30804 ===================================================================
30805 --- binutils-2.18.orig/bfd/bfd-in2.h 2008-11-25 15:24:48.000000000 +0100
30806 +++ binutils-2.18/bfd/bfd-in2.h 2008-11-25 15:25:40.000000000 +0100
30807 @@ -2017,6 +2017,11 @@
30808 #define bfd_mach_avr4 4
30809 #define bfd_mach_avr5 5
30810 #define bfd_mach_avr6 6
30811 + bfd_arch_avr32, /* Atmel AVR32 */
30812 +#define bfd_mach_avr32_ap 7000
30813 +#define bfd_mach_avr32_uc 3000
30814 +#define bfd_mach_avr32_ucr1 3001
30815 +#define bfd_mach_avr32_ucr2 3002
30816 bfd_arch_bfin, /* ADI Blackfin */
30817 #define bfd_mach_bfin 1
30818 bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
30819 @@ -3758,6 +3763,88 @@
30820 instructions */
30821 BFD_RELOC_AVR_6_ADIW,
30822
30823 +/* Difference between two labels: L2 - L1. The value of L1 is encoded
30824 +as sym + addend, while the initial difference after assembly is
30825 +inserted into the object file by the assembler. */
30826 + BFD_RELOC_AVR32_DIFF32,
30827 + BFD_RELOC_AVR32_DIFF16,
30828 + BFD_RELOC_AVR32_DIFF8,
30829 +
30830 +/* Reference to a symbol through the Global Offset Table. The linker
30831 +will allocate an entry for symbol in the GOT and insert the offset
30832 +of this entry as the relocation value. */
30833 + BFD_RELOC_AVR32_GOT32,
30834 + BFD_RELOC_AVR32_GOT16,
30835 + BFD_RELOC_AVR32_GOT8,
30836 +
30837 +/* Normal (non-pc-relative) code relocations. Alignment and signedness
30838 +is indicated by the suffixes. S means signed, U means unsigned. W
30839 +means word-aligned, H means halfword-aligned, neither means
30840 +byte-aligned (no alignment.) SUB5 is the same relocation as 16S. */
30841 + BFD_RELOC_AVR32_21S,
30842 + BFD_RELOC_AVR32_16U,
30843 + BFD_RELOC_AVR32_16S,
30844 + BFD_RELOC_AVR32_SUB5,
30845 + BFD_RELOC_AVR32_8S_EXT,
30846 + BFD_RELOC_AVR32_8S,
30847 + BFD_RELOC_AVR32_15S,
30848 +
30849 +/* PC-relative relocations are signed if neither 'U' nor 'S' is
30850 +specified. However, we explicitly tack on a 'B' to indicate no
30851 +alignment, to avoid confusion with data relocs. All of these resolve
30852 +to sym + addend - offset, except the one with 'N' (negated) suffix.
30853 +This particular one resolves to offset - sym - addend. */
30854 + BFD_RELOC_AVR32_22H_PCREL,
30855 + BFD_RELOC_AVR32_18W_PCREL,
30856 + BFD_RELOC_AVR32_16B_PCREL,
30857 + BFD_RELOC_AVR32_16N_PCREL,
30858 + BFD_RELOC_AVR32_14UW_PCREL,
30859 + BFD_RELOC_AVR32_11H_PCREL,
30860 + BFD_RELOC_AVR32_10UW_PCREL,
30861 + BFD_RELOC_AVR32_9H_PCREL,
30862 + BFD_RELOC_AVR32_9UW_PCREL,
30863 +
30864 +/* Subtract the link-time address of the GOT from (symbol + addend)
30865 +and insert the result. */
30866 + BFD_RELOC_AVR32_GOTPC,
30867 +
30868 +/* Reference to a symbol through the GOT. The linker will allocate an
30869 +entry for symbol in the GOT and insert the offset of this entry as
30870 +the relocation value. addend must be zero. As usual, 'S' means
30871 +signed, 'W' means word-aligned, etc. */
30872 + BFD_RELOC_AVR32_GOTCALL,
30873 + BFD_RELOC_AVR32_LDA_GOT,
30874 + BFD_RELOC_AVR32_GOT21S,
30875 + BFD_RELOC_AVR32_GOT18SW,
30876 + BFD_RELOC_AVR32_GOT16S,
30877 +
30878 +/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
30879 +a whole lot of sense. */
30880 + BFD_RELOC_AVR32_32_CPENT,
30881 +
30882 +/* Constant pool references. Some of these relocations are signed,
30883 +others are unsigned. It doesn't really matter, since the constant
30884 +pool always comes after the code that references it. */
30885 + BFD_RELOC_AVR32_CPCALL,
30886 + BFD_RELOC_AVR32_16_CP,
30887 + BFD_RELOC_AVR32_9W_CP,
30888 +
30889 +/* sym must be the absolute symbol. The addend specifies the alignment
30890 +order, e.g. if addend is 2, the linker must add padding so that the
30891 +next address is aligned to a 4-byte boundary. */
30892 + BFD_RELOC_AVR32_ALIGN,
30893 +
30894 +/* Code relocations that will never make it to the output file. */
30895 + BFD_RELOC_AVR32_14UW,
30896 + BFD_RELOC_AVR32_10UW,
30897 + BFD_RELOC_AVR32_10SW,
30898 + BFD_RELOC_AVR32_STHH_W,
30899 + BFD_RELOC_AVR32_7UW,
30900 + BFD_RELOC_AVR32_6S,
30901 + BFD_RELOC_AVR32_6UW,
30902 + BFD_RELOC_AVR32_4UH,
30903 + BFD_RELOC_AVR32_3U,
30904 +
30905 /* Direct 12 bit. */
30906 BFD_RELOC_390_12,
30907
30908 Index: binutils-2.18/bfd/bfd-in3.h
30909 ===================================================================
30910 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
30911 +++ binutils-2.18/bfd/bfd-in3.h 2008-11-25 15:25:40.000000000 +0100
30912 @@ -0,0 +1,5406 @@
30913 +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
30914 + generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
30915 + "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
30916 + "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
30917 + "linker.c" and "simple.c".
30918 + Run "make headers" in your build bfd/ to regenerate. */
30919 +
30920 +/* Main header file for the bfd library -- portable access to object files.
30921 +
30922 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
30923 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
30924 + Free Software Foundation, Inc.
30925 +
30926 + Contributed by Cygnus Support.
30927 +
30928 + This file is part of BFD, the Binary File Descriptor library.
30929 +
30930 + This program is free software; you can redistribute it and/or modify
30931 + it under the terms of the GNU General Public License as published by
30932 + the Free Software Foundation; either version 3 of the License, or
30933 + (at your option) any later version.
30934 +
30935 + This program is distributed in the hope that it will be useful,
30936 + but WITHOUT ANY WARRANTY; without even the implied warranty of
30937 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30938 + GNU General Public License for more details.
30939 +
30940 + You should have received a copy of the GNU General Public License
30941 + along with this program; if not, write to the Free Software
30942 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
30943 +
30944 +#ifndef __BFD_H_SEEN__
30945 +#define __BFD_H_SEEN__
30946 +
30947 +#ifdef __cplusplus
30948 +extern "C" {
30949 +#endif
30950 +
30951 +#include "ansidecl.h"
30952 +#include "symcat.h"
30953 +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
30954 +#ifndef SABER
30955 +/* This hack is to avoid a problem with some strict ANSI C preprocessors.
30956 + The problem is, "32_" is not a valid preprocessing token, and we don't
30957 + want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will
30958 + cause the inner CONCAT2 macros to be evaluated first, producing
30959 + still-valid pp-tokens. Then the final concatenation can be done. */
30960 +#undef CONCAT4
30961 +#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
30962 +#endif
30963 +#endif
30964 +
30965 +/* This is a utility macro to handle the situation where the code
30966 + wants to place a constant string into the code, followed by a
30967 + comma and then the length of the string. Doing this by hand
30968 + is error prone, so using this macro is safer. The macro will
30969 + also safely handle the case where a NULL is passed as the arg. */
30970 +#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
30971 +/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
30972 + to create the arguments to another macro, since the preprocessor
30973 + will mis-count the number of arguments to the outer macro (by not
30974 + evaluating STRING_COMMA_LEN and so missing the comma). This is a
30975 + problem for example when trying to use STRING_COMMA_LEN to build
30976 + the arguments to the strncmp() macro. Hence this alternative
30977 + definition of strncmp is provided here.
30978 +
30979 + Note - these macros do NOT work if STR2 is not a constant string. */
30980 +#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
30981 + /* strcpy() can have a similar problem, but since we know we are
30982 + copying a constant string, we can use memcpy which will be faster
30983 + since there is no need to check for a NUL byte inside STR. We
30984 + can also save time if we do not need to copy the terminating NUL. */
30985 +#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
30986 +#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
30987 +
30988 +
30989 +/* The word size used by BFD on the host. This may be 64 with a 32
30990 + bit target if the host is 64 bit, or if other 64 bit targets have
30991 + been selected with --enable-targets, or if --enable-64-bit-bfd. */
30992 +#define BFD_ARCH_SIZE 32
30993 +
30994 +/* The word size of the default bfd target. */
30995 +#define BFD_DEFAULT_TARGET_SIZE 32
30996 +
30997 +#define BFD_HOST_64BIT_LONG 0
30998 +#define BFD_HOST_64BIT_LONG_LONG 0
30999 +#define BFD_HOST_LONG_LONG 1
31000 +#if 1
31001 +#define BFD_HOST_64_BIT long long
31002 +#define BFD_HOST_U_64_BIT unsigned long long
31003 +typedef BFD_HOST_64_BIT bfd_int64_t;
31004 +typedef BFD_HOST_U_64_BIT bfd_uint64_t;
31005 +#endif
31006 +
31007 +#if BFD_ARCH_SIZE >= 64
31008 +#define BFD64
31009 +#endif
31010 +
31011 +#ifndef INLINE
31012 +#if __GNUC__ >= 2
31013 +#define INLINE __inline__
31014 +#else
31015 +#define INLINE
31016 +#endif
31017 +#endif
31018 +
31019 +/* Declaring a type wide enough to hold a host long and a host pointer. */
31020 +#define BFD_HOSTPTR_T unsigned long
31021 +typedef BFD_HOSTPTR_T bfd_hostptr_t;
31022 +
31023 +/* Forward declaration. */
31024 +typedef struct bfd bfd;
31025 +
31026 +/* Boolean type used in bfd. Too many systems define their own
31027 + versions of "boolean" for us to safely typedef a "boolean" of
31028 + our own. Using an enum for "bfd_boolean" has its own set of
31029 + problems, with strange looking casts required to avoid warnings
31030 + on some older compilers. Thus we just use an int.
31031 +
31032 + General rule: Functions which are bfd_boolean return TRUE on
31033 + success and FALSE on failure (unless they're a predicate). */
31034 +
31035 +typedef int bfd_boolean;
31036 +#undef FALSE
31037 +#undef TRUE
31038 +#define FALSE 0
31039 +#define TRUE 1
31040 +
31041 +#ifdef BFD64
31042 +
31043 +#ifndef BFD_HOST_64_BIT
31044 + #error No 64 bit integer type available
31045 +#endif /* ! defined (BFD_HOST_64_BIT) */
31046 +
31047 +typedef BFD_HOST_U_64_BIT bfd_vma;
31048 +typedef BFD_HOST_64_BIT bfd_signed_vma;
31049 +typedef BFD_HOST_U_64_BIT bfd_size_type;
31050 +typedef BFD_HOST_U_64_BIT symvalue;
31051 +
31052 +#ifndef fprintf_vma
31053 +#if BFD_HOST_64BIT_LONG
31054 +#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
31055 +#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
31056 +#elif BFD_HOST_64BIT_LONG_LONG
31057 +#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
31058 +#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
31059 +#else
31060 +#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
31061 +#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
31062 +#define fprintf_vma(s,x) \
31063 + fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
31064 +#define sprintf_vma(s,x) \
31065 + sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
31066 +#endif
31067 +#endif
31068 +
31069 +#else /* not BFD64 */
31070 +
31071 +/* Represent a target address. Also used as a generic unsigned type
31072 + which is guaranteed to be big enough to hold any arithmetic types
31073 + we need to deal with. */
31074 +typedef unsigned long bfd_vma;
31075 +
31076 +/* A generic signed type which is guaranteed to be big enough to hold any
31077 + arithmetic types we need to deal with. Can be assumed to be compatible
31078 + with bfd_vma in the same way that signed and unsigned ints are compatible
31079 + (as parameters, in assignment, etc). */
31080 +typedef long bfd_signed_vma;
31081 +
31082 +typedef unsigned long symvalue;
31083 +typedef unsigned long bfd_size_type;
31084 +
31085 +/* Print a bfd_vma x on stream s. */
31086 +#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
31087 +#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
31088 +
31089 +#endif /* not BFD64 */
31090 +
31091 +#define HALF_BFD_SIZE_TYPE \
31092 + (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
31093 +
31094 +#ifndef BFD_HOST_64_BIT
31095 +/* Fall back on a 32 bit type. The idea is to make these types always
31096 + available for function return types, but in the case that
31097 + BFD_HOST_64_BIT is undefined such a function should abort or
31098 + otherwise signal an error. */
31099 +typedef bfd_signed_vma bfd_int64_t;
31100 +typedef bfd_vma bfd_uint64_t;
31101 +#endif
31102 +
31103 +/* An offset into a file. BFD always uses the largest possible offset
31104 + based on the build time availability of fseek, fseeko, or fseeko64. */
31105 +typedef BFD_HOST_64_BIT file_ptr;
31106 +typedef unsigned BFD_HOST_64_BIT ufile_ptr;
31107 +
31108 +extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
31109 +extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
31110 +
31111 +#define printf_vma(x) fprintf_vma(stdout,x)
31112 +#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
31113 +
31114 +typedef unsigned int flagword; /* 32 bits of flags */
31115 +typedef unsigned char bfd_byte;
31116 +\f
31117 +/* File formats. */
31118 +
31119 +typedef enum bfd_format
31120 +{
31121 + bfd_unknown = 0, /* File format is unknown. */
31122 + bfd_object, /* Linker/assembler/compiler output. */
31123 + bfd_archive, /* Object archive file. */
31124 + bfd_core, /* Core dump. */
31125 + bfd_type_end /* Marks the end; don't use it! */
31126 +}
31127 +bfd_format;
31128 +
31129 +/* Values that may appear in the flags field of a BFD. These also
31130 + appear in the object_flags field of the bfd_target structure, where
31131 + they indicate the set of flags used by that backend (not all flags
31132 + are meaningful for all object file formats) (FIXME: at the moment,
31133 + the object_flags values have mostly just been copied from backend
31134 + to another, and are not necessarily correct). */
31135 +
31136 +/* No flags. */
31137 +#define BFD_NO_FLAGS 0x00
31138 +
31139 +/* BFD contains relocation entries. */
31140 +#define HAS_RELOC 0x01
31141 +
31142 +/* BFD is directly executable. */
31143 +#define EXEC_P 0x02
31144 +
31145 +/* BFD has line number information (basically used for F_LNNO in a
31146 + COFF header). */
31147 +#define HAS_LINENO 0x04
31148 +
31149 +/* BFD has debugging information. */
31150 +#define HAS_DEBUG 0x08
31151 +
31152 +/* BFD has symbols. */
31153 +#define HAS_SYMS 0x10
31154 +
31155 +/* BFD has local symbols (basically used for F_LSYMS in a COFF
31156 + header). */
31157 +#define HAS_LOCALS 0x20
31158 +
31159 +/* BFD is a dynamic object. */
31160 +#define DYNAMIC 0x40
31161 +
31162 +/* Text section is write protected (if D_PAGED is not set, this is
31163 + like an a.out NMAGIC file) (the linker sets this by default, but
31164 + clears it for -r or -N). */
31165 +#define WP_TEXT 0x80
31166 +
31167 +/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
31168 + linker sets this by default, but clears it for -r or -n or -N). */
31169 +#define D_PAGED 0x100
31170 +
31171 +/* BFD is relaxable (this means that bfd_relax_section may be able to
31172 + do something) (sometimes bfd_relax_section can do something even if
31173 + this is not set). */
31174 +#define BFD_IS_RELAXABLE 0x200
31175 +
31176 +/* This may be set before writing out a BFD to request using a
31177 + traditional format. For example, this is used to request that when
31178 + writing out an a.out object the symbols not be hashed to eliminate
31179 + duplicates. */
31180 +#define BFD_TRADITIONAL_FORMAT 0x400
31181 +
31182 +/* This flag indicates that the BFD contents are actually cached in
31183 + memory. If this is set, iostream points to a bfd_in_memory struct. */
31184 +#define BFD_IN_MEMORY 0x800
31185 +
31186 +/* The sections in this BFD specify a memory page. */
31187 +#define HAS_LOAD_PAGE 0x1000
31188 +
31189 +/* This BFD has been created by the linker and doesn't correspond
31190 + to any input file. */
31191 +#define BFD_LINKER_CREATED 0x2000
31192 +\f
31193 +/* Symbols and relocation. */
31194 +
31195 +/* A count of carsyms (canonical archive symbols). */
31196 +typedef unsigned long symindex;
31197 +
31198 +/* How to perform a relocation. */
31199 +typedef const struct reloc_howto_struct reloc_howto_type;
31200 +
31201 +#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
31202 +
31203 +/* General purpose part of a symbol X;
31204 + target specific parts are in libcoff.h, libaout.h, etc. */
31205 +
31206 +#define bfd_get_section(x) ((x)->section)
31207 +#define bfd_get_output_section(x) ((x)->section->output_section)
31208 +#define bfd_set_section(x,y) ((x)->section) = (y)
31209 +#define bfd_asymbol_base(x) ((x)->section->vma)
31210 +#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
31211 +#define bfd_asymbol_name(x) ((x)->name)
31212 +/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
31213 +#define bfd_asymbol_bfd(x) ((x)->the_bfd)
31214 +#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
31215 +
31216 +/* A canonical archive symbol. */
31217 +/* This is a type pun with struct ranlib on purpose! */
31218 +typedef struct carsym
31219 +{
31220 + char *name;
31221 + file_ptr file_offset; /* Look here to find the file. */
31222 +}
31223 +carsym; /* To make these you call a carsymogen. */
31224 +
31225 +/* Used in generating armaps (archive tables of contents).
31226 + Perhaps just a forward definition would do? */
31227 +struct orl /* Output ranlib. */
31228 +{
31229 + char **name; /* Symbol name. */
31230 + union
31231 + {
31232 + file_ptr pos;
31233 + bfd *abfd;
31234 + } u; /* bfd* or file position. */
31235 + int namidx; /* Index into string table. */
31236 +};
31237 +\f
31238 +/* Linenumber stuff. */
31239 +typedef struct lineno_cache_entry
31240 +{
31241 + unsigned int line_number; /* Linenumber from start of function. */
31242 + union
31243 + {
31244 + struct bfd_symbol *sym; /* Function name. */
31245 + bfd_vma offset; /* Offset into section. */
31246 + } u;
31247 +}
31248 +alent;
31249 +\f
31250 +/* Object and core file sections. */
31251 +
31252 +#define align_power(addr, align) \
31253 + (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
31254 +
31255 +typedef struct bfd_section *sec_ptr;
31256 +
31257 +#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
31258 +#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
31259 +#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
31260 +#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
31261 +#define bfd_section_name(bfd, ptr) ((ptr)->name)
31262 +#define bfd_section_size(bfd, ptr) ((ptr)->size)
31263 +#define bfd_get_section_size(ptr) ((ptr)->size)
31264 +#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
31265 +#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
31266 +#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
31267 +#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
31268 +#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
31269 +
31270 +#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
31271 +
31272 +#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
31273 +#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
31274 +#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
31275 +/* Find the address one past the end of SEC. */
31276 +#define bfd_get_section_limit(bfd, sec) \
31277 + (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
31278 + / bfd_octets_per_byte (bfd))
31279 +
31280 +/* Return TRUE if section has been discarded. */
31281 +#define elf_discarded_section(sec) \
31282 + (!bfd_is_abs_section (sec) \
31283 + && bfd_is_abs_section ((sec)->output_section) \
31284 + && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \
31285 + && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
31286 +
31287 +/* Forward define. */
31288 +struct stat;
31289 +\f
31290 +typedef enum bfd_print_symbol
31291 +{
31292 + bfd_print_symbol_name,
31293 + bfd_print_symbol_more,
31294 + bfd_print_symbol_all
31295 +} bfd_print_symbol_type;
31296 +
31297 +/* Information about a symbol that nm needs. */
31298 +
31299 +typedef struct _symbol_info
31300 +{
31301 + symvalue value;
31302 + char type;
31303 + const char *name; /* Symbol name. */
31304 + unsigned char stab_type; /* Stab type. */
31305 + char stab_other; /* Stab other. */
31306 + short stab_desc; /* Stab desc. */
31307 + const char *stab_name; /* String for stab type. */
31308 +} symbol_info;
31309 +
31310 +/* Get the name of a stabs type code. */
31311 +
31312 +extern const char *bfd_get_stab_name (int);
31313 +\f
31314 +/* Hash table routines. There is no way to free up a hash table. */
31315 +
31316 +/* An element in the hash table. Most uses will actually use a larger
31317 + structure, and an instance of this will be the first field. */
31318 +
31319 +struct bfd_hash_entry
31320 +{
31321 + /* Next entry for this hash code. */
31322 + struct bfd_hash_entry *next;
31323 + /* String being hashed. */
31324 + const char *string;
31325 + /* Hash code. This is the full hash code, not the index into the
31326 + table. */
31327 + unsigned long hash;
31328 +};
31329 +
31330 +/* A hash table. */
31331 +
31332 +struct bfd_hash_table
31333 +{
31334 + /* The hash array. */
31335 + struct bfd_hash_entry **table;
31336 + /* A function used to create new elements in the hash table. The
31337 + first entry is itself a pointer to an element. When this
31338 + function is first invoked, this pointer will be NULL. However,
31339 + having the pointer permits a hierarchy of method functions to be
31340 + built each of which calls the function in the superclass. Thus
31341 + each function should be written to allocate a new block of memory
31342 + only if the argument is NULL. */
31343 + struct bfd_hash_entry *(*newfunc)
31344 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
31345 + /* An objalloc for this hash table. This is a struct objalloc *,
31346 + but we use void * to avoid requiring the inclusion of objalloc.h. */
31347 + void *memory;
31348 + /* The number of slots in the hash table. */
31349 + unsigned int size;
31350 + /* The number of entries in the hash table. */
31351 + unsigned int count;
31352 + /* The size of elements. */
31353 + unsigned int entsize;
31354 + /* If non-zero, don't grow the hash table. */
31355 + unsigned int frozen:1;
31356 +};
31357 +
31358 +/* Initialize a hash table. */
31359 +extern bfd_boolean bfd_hash_table_init
31360 + (struct bfd_hash_table *,
31361 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
31362 + struct bfd_hash_table *,
31363 + const char *),
31364 + unsigned int);
31365 +
31366 +/* Initialize a hash table specifying a size. */
31367 +extern bfd_boolean bfd_hash_table_init_n
31368 + (struct bfd_hash_table *,
31369 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
31370 + struct bfd_hash_table *,
31371 + const char *),
31372 + unsigned int, unsigned int);
31373 +
31374 +/* Free up a hash table. */
31375 +extern void bfd_hash_table_free
31376 + (struct bfd_hash_table *);
31377 +
31378 +/* Look up a string in a hash table. If CREATE is TRUE, a new entry
31379 + will be created for this string if one does not already exist. The
31380 + COPY argument must be TRUE if this routine should copy the string
31381 + into newly allocated memory when adding an entry. */
31382 +extern struct bfd_hash_entry *bfd_hash_lookup
31383 + (struct bfd_hash_table *, const char *, bfd_boolean create,
31384 + bfd_boolean copy);
31385 +
31386 +/* Replace an entry in a hash table. */
31387 +extern void bfd_hash_replace
31388 + (struct bfd_hash_table *, struct bfd_hash_entry *old,
31389 + struct bfd_hash_entry *nw);
31390 +
31391 +/* Base method for creating a hash table entry. */
31392 +extern struct bfd_hash_entry *bfd_hash_newfunc
31393 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
31394 +
31395 +/* Grab some space for a hash table entry. */
31396 +extern void *bfd_hash_allocate
31397 + (struct bfd_hash_table *, unsigned int);
31398 +
31399 +/* Traverse a hash table in a random order, calling a function on each
31400 + element. If the function returns FALSE, the traversal stops. The
31401 + INFO argument is passed to the function. */
31402 +extern void bfd_hash_traverse
31403 + (struct bfd_hash_table *,
31404 + bfd_boolean (*) (struct bfd_hash_entry *, void *),
31405 + void *info);
31406 +
31407 +/* Allows the default size of a hash table to be configured. New hash
31408 + tables allocated using bfd_hash_table_init will be created with
31409 + this size. */
31410 +extern void bfd_hash_set_default_size (bfd_size_type);
31411 +
31412 +/* This structure is used to keep track of stabs in sections
31413 + information while linking. */
31414 +
31415 +struct stab_info
31416 +{
31417 + /* A hash table used to hold stabs strings. */
31418 + struct bfd_strtab_hash *strings;
31419 + /* The header file hash table. */
31420 + struct bfd_hash_table includes;
31421 + /* The first .stabstr section. */
31422 + struct bfd_section *stabstr;
31423 +};
31424 +
31425 +#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
31426 +
31427 +/* User program access to BFD facilities. */
31428 +
31429 +/* Direct I/O routines, for programs which know more about the object
31430 + file than BFD does. Use higher level routines if possible. */
31431 +
31432 +extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
31433 +extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
31434 +extern int bfd_seek (bfd *, file_ptr, int);
31435 +extern file_ptr bfd_tell (bfd *);
31436 +extern int bfd_flush (bfd *);
31437 +extern int bfd_stat (bfd *, struct stat *);
31438 +
31439 +/* Deprecated old routines. */
31440 +#if __GNUC__
31441 +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
31442 + (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
31443 + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
31444 +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
31445 + (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
31446 + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
31447 +#else
31448 +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
31449 + (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
31450 + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
31451 +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
31452 + (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
31453 + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
31454 +#endif
31455 +extern void warn_deprecated (const char *, const char *, int, const char *);
31456 +
31457 +/* Cast from const char * to char * so that caller can assign to
31458 + a char * without a warning. */
31459 +#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
31460 +#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
31461 +#define bfd_get_format(abfd) ((abfd)->format)
31462 +#define bfd_get_target(abfd) ((abfd)->xvec->name)
31463 +#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
31464 +#define bfd_family_coff(abfd) \
31465 + (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
31466 + bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
31467 +#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
31468 +#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
31469 +#define bfd_header_big_endian(abfd) \
31470 + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
31471 +#define bfd_header_little_endian(abfd) \
31472 + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
31473 +#define bfd_get_file_flags(abfd) ((abfd)->flags)
31474 +#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
31475 +#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
31476 +#define bfd_my_archive(abfd) ((abfd)->my_archive)
31477 +#define bfd_has_map(abfd) ((abfd)->has_armap)
31478 +
31479 +#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
31480 +#define bfd_usrdata(abfd) ((abfd)->usrdata)
31481 +
31482 +#define bfd_get_start_address(abfd) ((abfd)->start_address)
31483 +#define bfd_get_symcount(abfd) ((abfd)->symcount)
31484 +#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
31485 +#define bfd_count_sections(abfd) ((abfd)->section_count)
31486 +
31487 +#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
31488 +
31489 +#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
31490 +
31491 +#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
31492 +
31493 +extern bfd_boolean bfd_cache_close
31494 + (bfd *abfd);
31495 +/* NB: This declaration should match the autogenerated one in libbfd.h. */
31496 +
31497 +extern bfd_boolean bfd_cache_close_all (void);
31498 +
31499 +extern bfd_boolean bfd_record_phdr
31500 + (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
31501 + bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
31502 +
31503 +/* Byte swapping routines. */
31504 +
31505 +bfd_uint64_t bfd_getb64 (const void *);
31506 +bfd_uint64_t bfd_getl64 (const void *);
31507 +bfd_int64_t bfd_getb_signed_64 (const void *);
31508 +bfd_int64_t bfd_getl_signed_64 (const void *);
31509 +bfd_vma bfd_getb32 (const void *);
31510 +bfd_vma bfd_getl32 (const void *);
31511 +bfd_signed_vma bfd_getb_signed_32 (const void *);
31512 +bfd_signed_vma bfd_getl_signed_32 (const void *);
31513 +bfd_vma bfd_getb16 (const void *);
31514 +bfd_vma bfd_getl16 (const void *);
31515 +bfd_signed_vma bfd_getb_signed_16 (const void *);
31516 +bfd_signed_vma bfd_getl_signed_16 (const void *);
31517 +void bfd_putb64 (bfd_uint64_t, void *);
31518 +void bfd_putl64 (bfd_uint64_t, void *);
31519 +void bfd_putb32 (bfd_vma, void *);
31520 +void bfd_putl32 (bfd_vma, void *);
31521 +void bfd_putb16 (bfd_vma, void *);
31522 +void bfd_putl16 (bfd_vma, void *);
31523 +
31524 +/* Byte swapping routines which take size and endiannes as arguments. */
31525 +
31526 +bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
31527 +void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
31528 +
31529 +extern bfd_boolean bfd_section_already_linked_table_init (void);
31530 +extern void bfd_section_already_linked_table_free (void);
31531 +\f
31532 +/* Externally visible ECOFF routines. */
31533 +
31534 +#if defined(__STDC__) || defined(ALMOST_STDC)
31535 +struct ecoff_debug_info;
31536 +struct ecoff_debug_swap;
31537 +struct ecoff_extr;
31538 +struct bfd_symbol;
31539 +struct bfd_link_info;
31540 +struct bfd_link_hash_entry;
31541 +struct bfd_elf_version_tree;
31542 +#endif
31543 +extern bfd_vma bfd_ecoff_get_gp_value
31544 + (bfd * abfd);
31545 +extern bfd_boolean bfd_ecoff_set_gp_value
31546 + (bfd *abfd, bfd_vma gp_value);
31547 +extern bfd_boolean bfd_ecoff_set_regmasks
31548 + (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
31549 + unsigned long *cprmask);
31550 +extern void *bfd_ecoff_debug_init
31551 + (bfd *output_bfd, struct ecoff_debug_info *output_debug,
31552 + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
31553 +extern void bfd_ecoff_debug_free
31554 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
31555 + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
31556 +extern bfd_boolean bfd_ecoff_debug_accumulate
31557 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
31558 + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
31559 + struct ecoff_debug_info *input_debug,
31560 + const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
31561 +extern bfd_boolean bfd_ecoff_debug_accumulate_other
31562 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
31563 + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
31564 + struct bfd_link_info *);
31565 +extern bfd_boolean bfd_ecoff_debug_externals
31566 + (bfd *abfd, struct ecoff_debug_info *debug,
31567 + const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
31568 + bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
31569 + void (*set_index) (struct bfd_symbol *, bfd_size_type));
31570 +extern bfd_boolean bfd_ecoff_debug_one_external
31571 + (bfd *abfd, struct ecoff_debug_info *debug,
31572 + const struct ecoff_debug_swap *swap, const char *name,
31573 + struct ecoff_extr *esym);
31574 +extern bfd_size_type bfd_ecoff_debug_size
31575 + (bfd *abfd, struct ecoff_debug_info *debug,
31576 + const struct ecoff_debug_swap *swap);
31577 +extern bfd_boolean bfd_ecoff_write_debug
31578 + (bfd *abfd, struct ecoff_debug_info *debug,
31579 + const struct ecoff_debug_swap *swap, file_ptr where);
31580 +extern bfd_boolean bfd_ecoff_write_accumulated_debug
31581 + (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
31582 + const struct ecoff_debug_swap *swap,
31583 + struct bfd_link_info *info, file_ptr where);
31584 +
31585 +/* Externally visible ELF routines. */
31586 +
31587 +struct bfd_link_needed_list
31588 +{
31589 + struct bfd_link_needed_list *next;
31590 + bfd *by;
31591 + const char *name;
31592 +};
31593 +
31594 +enum dynamic_lib_link_class {
31595 + DYN_NORMAL = 0,
31596 + DYN_AS_NEEDED = 1,
31597 + DYN_DT_NEEDED = 2,
31598 + DYN_NO_ADD_NEEDED = 4,
31599 + DYN_NO_NEEDED = 8
31600 +};
31601 +
31602 +enum notice_asneeded_action {
31603 + notice_as_needed,
31604 + notice_not_needed,
31605 + notice_needed
31606 +};
31607 +
31608 +extern bfd_boolean bfd_elf_record_link_assignment
31609 + (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
31610 + bfd_boolean);
31611 +extern struct bfd_link_needed_list *bfd_elf_get_needed_list
31612 + (bfd *, struct bfd_link_info *);
31613 +extern bfd_boolean bfd_elf_get_bfd_needed_list
31614 + (bfd *, struct bfd_link_needed_list **);
31615 +extern bfd_boolean bfd_elf_size_dynamic_sections
31616 + (bfd *, const char *, const char *, const char *, const char * const *,
31617 + struct bfd_link_info *, struct bfd_section **,
31618 + struct bfd_elf_version_tree *);
31619 +extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
31620 + (bfd *, struct bfd_link_info *);
31621 +extern void bfd_elf_set_dt_needed_name
31622 + (bfd *, const char *);
31623 +extern const char *bfd_elf_get_dt_soname
31624 + (bfd *);
31625 +extern void bfd_elf_set_dyn_lib_class
31626 + (bfd *, enum dynamic_lib_link_class);
31627 +extern int bfd_elf_get_dyn_lib_class
31628 + (bfd *);
31629 +extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
31630 + (bfd *, struct bfd_link_info *);
31631 +extern bfd_boolean bfd_elf_discard_info
31632 + (bfd *, struct bfd_link_info *);
31633 +extern unsigned int _bfd_elf_default_action_discarded
31634 + (struct bfd_section *);
31635 +
31636 +/* Return an upper bound on the number of bytes required to store a
31637 + copy of ABFD's program header table entries. Return -1 if an error
31638 + occurs; bfd_get_error will return an appropriate code. */
31639 +extern long bfd_get_elf_phdr_upper_bound
31640 + (bfd *abfd);
31641 +
31642 +/* Copy ABFD's program header table entries to *PHDRS. The entries
31643 + will be stored as an array of Elf_Internal_Phdr structures, as
31644 + defined in include/elf/internal.h. To find out how large the
31645 + buffer needs to be, call bfd_get_elf_phdr_upper_bound.
31646 +
31647 + Return the number of program header table entries read, or -1 if an
31648 + error occurs; bfd_get_error will return an appropriate code. */
31649 +extern int bfd_get_elf_phdrs
31650 + (bfd *abfd, void *phdrs);
31651 +
31652 +/* Create a new BFD as if by bfd_openr. Rather than opening a file,
31653 + reconstruct an ELF file by reading the segments out of remote memory
31654 + based on the ELF file header at EHDR_VMA and the ELF program headers it
31655 + points to. If not null, *LOADBASEP is filled in with the difference
31656 + between the VMAs from which the segments were read, and the VMAs the
31657 + file headers (and hence BFD's idea of each section's VMA) put them at.
31658 +
31659 + The function TARGET_READ_MEMORY is called to copy LEN bytes from the
31660 + remote memory at target address VMA into the local buffer at MYADDR; it
31661 + should return zero on success or an `errno' code on failure. TEMPL must
31662 + be a BFD for an ELF target with the word size and byte order found in
31663 + the remote memory. */
31664 +extern bfd *bfd_elf_bfd_from_remote_memory
31665 + (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
31666 + int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
31667 +
31668 +/* Return the arch_size field of an elf bfd, or -1 if not elf. */
31669 +extern int bfd_get_arch_size
31670 + (bfd *);
31671 +
31672 +/* Return TRUE if address "naturally" sign extends, or -1 if not elf. */
31673 +extern int bfd_get_sign_extend_vma
31674 + (bfd *);
31675 +
31676 +extern struct bfd_section *_bfd_elf_tls_setup
31677 + (bfd *, struct bfd_link_info *);
31678 +
31679 +extern void _bfd_fix_excluded_sec_syms
31680 + (bfd *, struct bfd_link_info *);
31681 +
31682 +extern unsigned bfd_m68k_mach_to_features (int);
31683 +
31684 +extern int bfd_m68k_features_to_mach (unsigned);
31685 +
31686 +extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
31687 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
31688 + char **);
31689 +
31690 +extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
31691 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
31692 + char **);
31693 +
31694 +/* SunOS shared library support routines for the linker. */
31695 +
31696 +extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
31697 + (bfd *, struct bfd_link_info *);
31698 +extern bfd_boolean bfd_sunos_record_link_assignment
31699 + (bfd *, struct bfd_link_info *, const char *);
31700 +extern bfd_boolean bfd_sunos_size_dynamic_sections
31701 + (bfd *, struct bfd_link_info *, struct bfd_section **,
31702 + struct bfd_section **, struct bfd_section **);
31703 +
31704 +/* Linux shared library support routines for the linker. */
31705 +
31706 +extern bfd_boolean bfd_i386linux_size_dynamic_sections
31707 + (bfd *, struct bfd_link_info *);
31708 +extern bfd_boolean bfd_m68klinux_size_dynamic_sections
31709 + (bfd *, struct bfd_link_info *);
31710 +extern bfd_boolean bfd_sparclinux_size_dynamic_sections
31711 + (bfd *, struct bfd_link_info *);
31712 +
31713 +/* mmap hacks */
31714 +
31715 +struct _bfd_window_internal;
31716 +typedef struct _bfd_window_internal bfd_window_internal;
31717 +
31718 +typedef struct _bfd_window
31719 +{
31720 + /* What the user asked for. */
31721 + void *data;
31722 + bfd_size_type size;
31723 + /* The actual window used by BFD. Small user-requested read-only
31724 + regions sharing a page may share a single window into the object
31725 + file. Read-write versions shouldn't until I've fixed things to
31726 + keep track of which portions have been claimed by the
31727 + application; don't want to give the same region back when the
31728 + application wants two writable copies! */
31729 + struct _bfd_window_internal *i;
31730 +}
31731 +bfd_window;
31732 +
31733 +extern void bfd_init_window
31734 + (bfd_window *);
31735 +extern void bfd_free_window
31736 + (bfd_window *);
31737 +extern bfd_boolean bfd_get_file_window
31738 + (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
31739 +
31740 +/* XCOFF support routines for the linker. */
31741 +
31742 +extern bfd_boolean bfd_xcoff_link_record_set
31743 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
31744 +extern bfd_boolean bfd_xcoff_import_symbol
31745 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
31746 + const char *, const char *, const char *, unsigned int);
31747 +extern bfd_boolean bfd_xcoff_export_symbol
31748 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
31749 +extern bfd_boolean bfd_xcoff_link_count_reloc
31750 + (bfd *, struct bfd_link_info *, const char *);
31751 +extern bfd_boolean bfd_xcoff_record_link_assignment
31752 + (bfd *, struct bfd_link_info *, const char *);
31753 +extern bfd_boolean bfd_xcoff_size_dynamic_sections
31754 + (bfd *, struct bfd_link_info *, const char *, const char *,
31755 + unsigned long, unsigned long, unsigned long, bfd_boolean,
31756 + int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
31757 +extern bfd_boolean bfd_xcoff_link_generate_rtinit
31758 + (bfd *, const char *, const char *, bfd_boolean);
31759 +
31760 +/* XCOFF support routines for ar. */
31761 +extern bfd_boolean bfd_xcoff_ar_archive_set_magic
31762 + (bfd *, char *);
31763 +
31764 +/* Externally visible COFF routines. */
31765 +
31766 +#if defined(__STDC__) || defined(ALMOST_STDC)
31767 +struct internal_syment;
31768 +union internal_auxent;
31769 +#endif
31770 +
31771 +extern bfd_boolean bfd_coff_get_syment
31772 + (bfd *, struct bfd_symbol *, struct internal_syment *);
31773 +
31774 +extern bfd_boolean bfd_coff_get_auxent
31775 + (bfd *, struct bfd_symbol *, int, union internal_auxent *);
31776 +
31777 +extern bfd_boolean bfd_coff_set_symbol_class
31778 + (bfd *, struct bfd_symbol *, unsigned int);
31779 +
31780 +extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
31781 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
31782 +
31783 +/* ARM VFP11 erratum workaround support. */
31784 +typedef enum
31785 +{
31786 + BFD_ARM_VFP11_FIX_DEFAULT,
31787 + BFD_ARM_VFP11_FIX_NONE,
31788 + BFD_ARM_VFP11_FIX_SCALAR,
31789 + BFD_ARM_VFP11_FIX_VECTOR
31790 +} bfd_arm_vfp11_fix;
31791 +
31792 +extern void bfd_elf32_arm_init_maps
31793 + (bfd *);
31794 +
31795 +extern void bfd_elf32_arm_set_vfp11_fix
31796 + (bfd *, struct bfd_link_info *);
31797 +
31798 +extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
31799 + (bfd *, struct bfd_link_info *);
31800 +
31801 +extern void bfd_elf32_arm_vfp11_fix_veneer_locations
31802 + (bfd *, struct bfd_link_info *);
31803 +
31804 +/* ARM Interworking support. Called from linker. */
31805 +extern bfd_boolean bfd_arm_allocate_interworking_sections
31806 + (struct bfd_link_info *);
31807 +
31808 +extern bfd_boolean bfd_arm_process_before_allocation
31809 + (bfd *, struct bfd_link_info *, int);
31810 +
31811 +extern bfd_boolean bfd_arm_get_bfd_for_interworking
31812 + (bfd *, struct bfd_link_info *);
31813 +
31814 +/* PE ARM Interworking support. Called from linker. */
31815 +extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
31816 + (struct bfd_link_info *);
31817 +
31818 +extern bfd_boolean bfd_arm_pe_process_before_allocation
31819 + (bfd *, struct bfd_link_info *, int);
31820 +
31821 +extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
31822 + (bfd *, struct bfd_link_info *);
31823 +
31824 +/* ELF ARM Interworking support. Called from linker. */
31825 +extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
31826 + (struct bfd_link_info *);
31827 +
31828 +extern bfd_boolean bfd_elf32_arm_process_before_allocation
31829 + (bfd *, struct bfd_link_info *);
31830 +
31831 +void bfd_elf32_arm_set_target_relocs
31832 + (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
31833 + int, int);
31834 +
31835 +extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
31836 + (bfd *, struct bfd_link_info *);
31837 +
31838 +extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
31839 + (bfd *, struct bfd_link_info *);
31840 +
31841 +/* ELF ARM mapping symbol support */
31842 +#define BFD_ARM_SPECIAL_SYM_TYPE_MAP (1 << 0)
31843 +#define BFD_ARM_SPECIAL_SYM_TYPE_TAG (1 << 1)
31844 +#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER (1 << 2)
31845 +#define BFD_ARM_SPECIAL_SYM_TYPE_ANY (~0)
31846 +extern bfd_boolean bfd_is_arm_special_symbol_name
31847 + (const char * name, int type);
31848 +
31849 +extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
31850 +
31851 +/* ARM Note section processing. */
31852 +extern bfd_boolean bfd_arm_merge_machines
31853 + (bfd *, bfd *);
31854 +
31855 +extern bfd_boolean bfd_arm_update_notes
31856 + (bfd *, const char *);
31857 +
31858 +extern unsigned int bfd_arm_get_mach_from_notes
31859 + (bfd *, const char *);
31860 +
31861 +/* TI COFF load page support. */
31862 +extern void bfd_ticoff_set_section_load_page
31863 + (struct bfd_section *, int);
31864 +
31865 +extern int bfd_ticoff_get_section_load_page
31866 + (struct bfd_section *);
31867 +
31868 +/* H8/300 functions. */
31869 +extern bfd_vma bfd_h8300_pad_address
31870 + (bfd *, bfd_vma);
31871 +
31872 +/* IA64 Itanium code generation. Called from linker. */
31873 +extern void bfd_elf32_ia64_after_parse
31874 + (int);
31875 +
31876 +extern void bfd_elf64_ia64_after_parse
31877 + (int);
31878 +
31879 +/* This structure is used for a comdat section, as in PE. A comdat
31880 + section is associated with a particular symbol. When the linker
31881 + sees a comdat section, it keeps only one of the sections with a
31882 + given name and associated with a given symbol. */
31883 +
31884 +struct coff_comdat_info
31885 +{
31886 + /* The name of the symbol associated with a comdat section. */
31887 + const char *name;
31888 +
31889 + /* The local symbol table index of the symbol associated with a
31890 + comdat section. This is only meaningful to the object file format
31891 + specific code; it is not an index into the list returned by
31892 + bfd_canonicalize_symtab. */
31893 + long symbol;
31894 +};
31895 +
31896 +extern struct coff_comdat_info *bfd_coff_get_comdat_section
31897 + (bfd *, struct bfd_section *);
31898 +
31899 +/* Extracted from init.c. */
31900 +void bfd_init (void);
31901 +
31902 +/* Extracted from opncls.c. */
31903 +bfd *bfd_fopen (const char *filename, const char *target,
31904 + const char *mode, int fd);
31905 +
31906 +bfd *bfd_openr (const char *filename, const char *target);
31907 +
31908 +bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
31909 +
31910 +bfd *bfd_openstreamr (const char *, const char *, void *);
31911 +
31912 +bfd *bfd_openr_iovec (const char *filename, const char *target,
31913 + void *(*open) (struct bfd *nbfd,
31914 + void *open_closure),
31915 + void *open_closure,
31916 + file_ptr (*pread) (struct bfd *nbfd,
31917 + void *stream,
31918 + void *buf,
31919 + file_ptr nbytes,
31920 + file_ptr offset),
31921 + int (*close) (struct bfd *nbfd,
31922 + void *stream),
31923 + int (*stat) (struct bfd *abfd,
31924 + void *stream,
31925 + struct stat *sb));
31926 +
31927 +bfd *bfd_openw (const char *filename, const char *target);
31928 +
31929 +bfd_boolean bfd_close (bfd *abfd);
31930 +
31931 +bfd_boolean bfd_close_all_done (bfd *);
31932 +
31933 +bfd *bfd_create (const char *filename, bfd *templ);
31934 +
31935 +bfd_boolean bfd_make_writable (bfd *abfd);
31936 +
31937 +bfd_boolean bfd_make_readable (bfd *abfd);
31938 +
31939 +unsigned long bfd_calc_gnu_debuglink_crc32
31940 + (unsigned long crc, const unsigned char *buf, bfd_size_type len);
31941 +
31942 +char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
31943 +
31944 +struct bfd_section *bfd_create_gnu_debuglink_section
31945 + (bfd *abfd, const char *filename);
31946 +
31947 +bfd_boolean bfd_fill_in_gnu_debuglink_section
31948 + (bfd *abfd, struct bfd_section *sect, const char *filename);
31949 +
31950 +/* Extracted from libbfd.c. */
31951 +
31952 +/* Byte swapping macros for user section data. */
31953 +
31954 +#define bfd_put_8(abfd, val, ptr) \
31955 + ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
31956 +#define bfd_put_signed_8 \
31957 + bfd_put_8
31958 +#define bfd_get_8(abfd, ptr) \
31959 + (*(unsigned char *) (ptr) & 0xff)
31960 +#define bfd_get_signed_8(abfd, ptr) \
31961 + (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
31962 +
31963 +#define bfd_put_16(abfd, val, ptr) \
31964 + BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
31965 +#define bfd_put_signed_16 \
31966 + bfd_put_16
31967 +#define bfd_get_16(abfd, ptr) \
31968 + BFD_SEND (abfd, bfd_getx16, (ptr))
31969 +#define bfd_get_signed_16(abfd, ptr) \
31970 + BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
31971 +
31972 +#define bfd_put_32(abfd, val, ptr) \
31973 + BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
31974 +#define bfd_put_signed_32 \
31975 + bfd_put_32
31976 +#define bfd_get_32(abfd, ptr) \
31977 + BFD_SEND (abfd, bfd_getx32, (ptr))
31978 +#define bfd_get_signed_32(abfd, ptr) \
31979 + BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
31980 +
31981 +#define bfd_put_64(abfd, val, ptr) \
31982 + BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
31983 +#define bfd_put_signed_64 \
31984 + bfd_put_64
31985 +#define bfd_get_64(abfd, ptr) \
31986 + BFD_SEND (abfd, bfd_getx64, (ptr))
31987 +#define bfd_get_signed_64(abfd, ptr) \
31988 + BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
31989 +
31990 +#define bfd_get(bits, abfd, ptr) \
31991 + ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
31992 + : (bits) == 16 ? bfd_get_16 (abfd, ptr) \
31993 + : (bits) == 32 ? bfd_get_32 (abfd, ptr) \
31994 + : (bits) == 64 ? bfd_get_64 (abfd, ptr) \
31995 + : (abort (), (bfd_vma) - 1))
31996 +
31997 +#define bfd_put(bits, abfd, val, ptr) \
31998 + ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
31999 + : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
32000 + : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
32001 + : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
32002 + : (abort (), (void) 0))
32003 +
32004 +
32005 +/* Byte swapping macros for file header data. */
32006 +
32007 +#define bfd_h_put_8(abfd, val, ptr) \
32008 + bfd_put_8 (abfd, val, ptr)
32009 +#define bfd_h_put_signed_8(abfd, val, ptr) \
32010 + bfd_put_8 (abfd, val, ptr)
32011 +#define bfd_h_get_8(abfd, ptr) \
32012 + bfd_get_8 (abfd, ptr)
32013 +#define bfd_h_get_signed_8(abfd, ptr) \
32014 + bfd_get_signed_8 (abfd, ptr)
32015 +
32016 +#define bfd_h_put_16(abfd, val, ptr) \
32017 + BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
32018 +#define bfd_h_put_signed_16 \
32019 + bfd_h_put_16
32020 +#define bfd_h_get_16(abfd, ptr) \
32021 + BFD_SEND (abfd, bfd_h_getx16, (ptr))
32022 +#define bfd_h_get_signed_16(abfd, ptr) \
32023 + BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
32024 +
32025 +#define bfd_h_put_32(abfd, val, ptr) \
32026 + BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
32027 +#define bfd_h_put_signed_32 \
32028 + bfd_h_put_32
32029 +#define bfd_h_get_32(abfd, ptr) \
32030 + BFD_SEND (abfd, bfd_h_getx32, (ptr))
32031 +#define bfd_h_get_signed_32(abfd, ptr) \
32032 + BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
32033 +
32034 +#define bfd_h_put_64(abfd, val, ptr) \
32035 + BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
32036 +#define bfd_h_put_signed_64 \
32037 + bfd_h_put_64
32038 +#define bfd_h_get_64(abfd, ptr) \
32039 + BFD_SEND (abfd, bfd_h_getx64, (ptr))
32040 +#define bfd_h_get_signed_64(abfd, ptr) \
32041 + BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
32042 +
32043 +/* Aliases for the above, which should eventually go away. */
32044 +
32045 +#define H_PUT_64 bfd_h_put_64
32046 +#define H_PUT_32 bfd_h_put_32
32047 +#define H_PUT_16 bfd_h_put_16
32048 +#define H_PUT_8 bfd_h_put_8
32049 +#define H_PUT_S64 bfd_h_put_signed_64
32050 +#define H_PUT_S32 bfd_h_put_signed_32
32051 +#define H_PUT_S16 bfd_h_put_signed_16
32052 +#define H_PUT_S8 bfd_h_put_signed_8
32053 +#define H_GET_64 bfd_h_get_64
32054 +#define H_GET_32 bfd_h_get_32
32055 +#define H_GET_16 bfd_h_get_16
32056 +#define H_GET_8 bfd_h_get_8
32057 +#define H_GET_S64 bfd_h_get_signed_64
32058 +#define H_GET_S32 bfd_h_get_signed_32
32059 +#define H_GET_S16 bfd_h_get_signed_16
32060 +#define H_GET_S8 bfd_h_get_signed_8
32061 +
32062 +
32063 +/* Extracted from bfdio.c. */
32064 +long bfd_get_mtime (bfd *abfd);
32065 +
32066 +file_ptr bfd_get_size (bfd *abfd);
32067 +
32068 +/* Extracted from bfdwin.c. */
32069 +/* Extracted from section.c. */
32070 +typedef struct bfd_section
32071 +{
32072 + /* The name of the section; the name isn't a copy, the pointer is
32073 + the same as that passed to bfd_make_section. */
32074 + const char *name;
32075 +
32076 + /* A unique sequence number. */
32077 + int id;
32078 +
32079 + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
32080 + int index;
32081 +
32082 + /* The next section in the list belonging to the BFD, or NULL. */
32083 + struct bfd_section *next;
32084 +
32085 + /* The previous section in the list belonging to the BFD, or NULL. */
32086 + struct bfd_section *prev;
32087 +
32088 + /* The field flags contains attributes of the section. Some
32089 + flags are read in from the object file, and some are
32090 + synthesized from other information. */
32091 + flagword flags;
32092 +
32093 +#define SEC_NO_FLAGS 0x000
32094 +
32095 + /* Tells the OS to allocate space for this section when loading.
32096 + This is clear for a section containing debug information only. */
32097 +#define SEC_ALLOC 0x001
32098 +
32099 + /* Tells the OS to load the section from the file when loading.
32100 + This is clear for a .bss section. */
32101 +#define SEC_LOAD 0x002
32102 +
32103 + /* The section contains data still to be relocated, so there is
32104 + some relocation information too. */
32105 +#define SEC_RELOC 0x004
32106 +
32107 + /* A signal to the OS that the section contains read only data. */
32108 +#define SEC_READONLY 0x008
32109 +
32110 + /* The section contains code only. */
32111 +#define SEC_CODE 0x010
32112 +
32113 + /* The section contains data only. */
32114 +#define SEC_DATA 0x020
32115 +
32116 + /* The section will reside in ROM. */
32117 +#define SEC_ROM 0x040
32118 +
32119 + /* The section contains constructor information. This section
32120 + type is used by the linker to create lists of constructors and
32121 + destructors used by <<g++>>. When a back end sees a symbol
32122 + which should be used in a constructor list, it creates a new
32123 + section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
32124 + the symbol to it, and builds a relocation. To build the lists
32125 + of constructors, all the linker has to do is catenate all the
32126 + sections called <<__CTOR_LIST__>> and relocate the data
32127 + contained within - exactly the operations it would peform on
32128 + standard data. */
32129 +#define SEC_CONSTRUCTOR 0x080
32130 +
32131 + /* The section has contents - a data section could be
32132 + <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
32133 + <<SEC_HAS_CONTENTS>> */
32134 +#define SEC_HAS_CONTENTS 0x100
32135 +
32136 + /* An instruction to the linker to not output the section
32137 + even if it has information which would normally be written. */
32138 +#define SEC_NEVER_LOAD 0x200
32139 +
32140 + /* The section contains thread local data. */
32141 +#define SEC_THREAD_LOCAL 0x400
32142 +
32143 + /* The section has GOT references. This flag is only for the
32144 + linker, and is currently only used by the elf32-hppa back end.
32145 + It will be set if global offset table references were detected
32146 + in this section, which indicate to the linker that the section
32147 + contains PIC code, and must be handled specially when doing a
32148 + static link. */
32149 +#define SEC_HAS_GOT_REF 0x800
32150 +
32151 + /* The section contains common symbols (symbols may be defined
32152 + multiple times, the value of a symbol is the amount of
32153 + space it requires, and the largest symbol value is the one
32154 + used). Most targets have exactly one of these (which we
32155 + translate to bfd_com_section_ptr), but ECOFF has two. */
32156 +#define SEC_IS_COMMON 0x1000
32157 +
32158 + /* The section contains only debugging information. For
32159 + example, this is set for ELF .debug and .stab sections.
32160 + strip tests this flag to see if a section can be
32161 + discarded. */
32162 +#define SEC_DEBUGGING 0x2000
32163 +
32164 + /* The contents of this section are held in memory pointed to
32165 + by the contents field. This is checked by bfd_get_section_contents,
32166 + and the data is retrieved from memory if appropriate. */
32167 +#define SEC_IN_MEMORY 0x4000
32168 +
32169 + /* The contents of this section are to be excluded by the
32170 + linker for executable and shared objects unless those
32171 + objects are to be further relocated. */
32172 +#define SEC_EXCLUDE 0x8000
32173 +
32174 + /* The contents of this section are to be sorted based on the sum of
32175 + the symbol and addend values specified by the associated relocation
32176 + entries. Entries without associated relocation entries will be
32177 + appended to the end of the section in an unspecified order. */
32178 +#define SEC_SORT_ENTRIES 0x10000
32179 +
32180 + /* When linking, duplicate sections of the same name should be
32181 + discarded, rather than being combined into a single section as
32182 + is usually done. This is similar to how common symbols are
32183 + handled. See SEC_LINK_DUPLICATES below. */
32184 +#define SEC_LINK_ONCE 0x20000
32185 +
32186 + /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
32187 + should handle duplicate sections. */
32188 +#define SEC_LINK_DUPLICATES 0x40000
32189 +
32190 + /* This value for SEC_LINK_DUPLICATES means that duplicate
32191 + sections with the same name should simply be discarded. */
32192 +#define SEC_LINK_DUPLICATES_DISCARD 0x0
32193 +
32194 + /* This value for SEC_LINK_DUPLICATES means that the linker
32195 + should warn if there are any duplicate sections, although
32196 + it should still only link one copy. */
32197 +#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
32198 +
32199 + /* This value for SEC_LINK_DUPLICATES means that the linker
32200 + should warn if any duplicate sections are a different size. */
32201 +#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
32202 +
32203 + /* This value for SEC_LINK_DUPLICATES means that the linker
32204 + should warn if any duplicate sections contain different
32205 + contents. */
32206 +#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
32207 + (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
32208 +
32209 + /* This section was created by the linker as part of dynamic
32210 + relocation or other arcane processing. It is skipped when
32211 + going through the first-pass output, trusting that someone
32212 + else up the line will take care of it later. */
32213 +#define SEC_LINKER_CREATED 0x200000
32214 +
32215 + /* This section should not be subject to garbage collection.
32216 + Also set to inform the linker that this section should not be
32217 + listed in the link map as discarded. */
32218 +#define SEC_KEEP 0x400000
32219 +
32220 + /* This section contains "short" data, and should be placed
32221 + "near" the GP. */
32222 +#define SEC_SMALL_DATA 0x800000
32223 +
32224 + /* Attempt to merge identical entities in the section.
32225 + Entity size is given in the entsize field. */
32226 +#define SEC_MERGE 0x1000000
32227 +
32228 + /* If given with SEC_MERGE, entities to merge are zero terminated
32229 + strings where entsize specifies character size instead of fixed
32230 + size entries. */
32231 +#define SEC_STRINGS 0x2000000
32232 +
32233 + /* This section contains data about section groups. */
32234 +#define SEC_GROUP 0x4000000
32235 +
32236 + /* The section is a COFF shared library section. This flag is
32237 + only for the linker. If this type of section appears in
32238 + the input file, the linker must copy it to the output file
32239 + without changing the vma or size. FIXME: Although this
32240 + was originally intended to be general, it really is COFF
32241 + specific (and the flag was renamed to indicate this). It
32242 + might be cleaner to have some more general mechanism to
32243 + allow the back end to control what the linker does with
32244 + sections. */
32245 +#define SEC_COFF_SHARED_LIBRARY 0x10000000
32246 +
32247 + /* This section contains data which may be shared with other
32248 + executables or shared objects. This is for COFF only. */
32249 +#define SEC_COFF_SHARED 0x20000000
32250 +
32251 + /* When a section with this flag is being linked, then if the size of
32252 + the input section is less than a page, it should not cross a page
32253 + boundary. If the size of the input section is one page or more,
32254 + it should be aligned on a page boundary. This is for TI
32255 + TMS320C54X only. */
32256 +#define SEC_TIC54X_BLOCK 0x40000000
32257 +
32258 + /* Conditionally link this section; do not link if there are no
32259 + references found to any symbol in the section. This is for TI
32260 + TMS320C54X only. */
32261 +#define SEC_TIC54X_CLINK 0x80000000
32262 +
32263 + /* End of section flags. */
32264 +
32265 + /* Some internal packed boolean fields. */
32266 +
32267 + /* See the vma field. */
32268 + unsigned int user_set_vma : 1;
32269 +
32270 + /* A mark flag used by some of the linker backends. */
32271 + unsigned int linker_mark : 1;
32272 +
32273 + /* Another mark flag used by some of the linker backends. Set for
32274 + output sections that have an input section. */
32275 + unsigned int linker_has_input : 1;
32276 +
32277 + /* Mark flags used by some linker backends for garbage collection. */
32278 + unsigned int gc_mark : 1;
32279 + unsigned int gc_mark_from_eh : 1;
32280 +
32281 + /* The following flags are used by the ELF linker. */
32282 +
32283 + /* Mark sections which have been allocated to segments. */
32284 + unsigned int segment_mark : 1;
32285 +
32286 + /* Type of sec_info information. */
32287 + unsigned int sec_info_type:3;
32288 +#define ELF_INFO_TYPE_NONE 0
32289 +#define ELF_INFO_TYPE_STABS 1
32290 +#define ELF_INFO_TYPE_MERGE 2
32291 +#define ELF_INFO_TYPE_EH_FRAME 3
32292 +#define ELF_INFO_TYPE_JUST_SYMS 4
32293 +
32294 + /* Nonzero if this section uses RELA relocations, rather than REL. */
32295 + unsigned int use_rela_p:1;
32296 +
32297 + /* Bits used by various backends. The generic code doesn't touch
32298 + these fields. */
32299 +
32300 + /* Nonzero if this section has TLS related relocations. */
32301 + unsigned int has_tls_reloc:1;
32302 +
32303 + /* Nonzero if this section has a gp reloc. */
32304 + unsigned int has_gp_reloc:1;
32305 +
32306 + /* Nonzero if this section needs the relax finalize pass. */
32307 + unsigned int need_finalize_relax:1;
32308 +
32309 + /* Whether relocations have been processed. */
32310 + unsigned int reloc_done : 1;
32311 +
32312 + /* End of internal packed boolean fields. */
32313 +
32314 + /* The virtual memory address of the section - where it will be
32315 + at run time. The symbols are relocated against this. The
32316 + user_set_vma flag is maintained by bfd; if it's not set, the
32317 + backend can assign addresses (for example, in <<a.out>>, where
32318 + the default address for <<.data>> is dependent on the specific
32319 + target and various flags). */
32320 + bfd_vma vma;
32321 +
32322 + /* The load address of the section - where it would be in a
32323 + rom image; really only used for writing section header
32324 + information. */
32325 + bfd_vma lma;
32326 +
32327 + /* The size of the section in octets, as it will be output.
32328 + Contains a value even if the section has no contents (e.g., the
32329 + size of <<.bss>>). */
32330 + bfd_size_type size;
32331 +
32332 + /* For input sections, the original size on disk of the section, in
32333 + octets. This field is used by the linker relaxation code. It is
32334 + currently only set for sections where the linker relaxation scheme
32335 + doesn't cache altered section and reloc contents (stabs, eh_frame,
32336 + SEC_MERGE, some coff relaxing targets), and thus the original size
32337 + needs to be kept to read the section multiple times.
32338 + For output sections, rawsize holds the section size calculated on
32339 + a previous linker relaxation pass. */
32340 + bfd_size_type rawsize;
32341 +
32342 + /* If this section is going to be output, then this value is the
32343 + offset in *bytes* into the output section of the first byte in the
32344 + input section (byte ==> smallest addressable unit on the
32345 + target). In most cases, if this was going to start at the
32346 + 100th octet (8-bit quantity) in the output section, this value
32347 + would be 100. However, if the target byte size is 16 bits
32348 + (bfd_octets_per_byte is "2"), this value would be 50. */
32349 + bfd_vma output_offset;
32350 +
32351 + /* The output section through which to map on output. */
32352 + struct bfd_section *output_section;
32353 +
32354 + /* The alignment requirement of the section, as an exponent of 2 -
32355 + e.g., 3 aligns to 2^3 (or 8). */
32356 + unsigned int alignment_power;
32357 +
32358 + /* If an input section, a pointer to a vector of relocation
32359 + records for the data in this section. */
32360 + struct reloc_cache_entry *relocation;
32361 +
32362 + /* If an output section, a pointer to a vector of pointers to
32363 + relocation records for the data in this section. */
32364 + struct reloc_cache_entry **orelocation;
32365 +
32366 + /* The number of relocation records in one of the above. */
32367 + unsigned reloc_count;
32368 +
32369 + /* Information below is back end specific - and not always used
32370 + or updated. */
32371 +
32372 + /* File position of section data. */
32373 + file_ptr filepos;
32374 +
32375 + /* File position of relocation info. */
32376 + file_ptr rel_filepos;
32377 +
32378 + /* File position of line data. */
32379 + file_ptr line_filepos;
32380 +
32381 + /* Pointer to data for applications. */
32382 + void *userdata;
32383 +
32384 + /* If the SEC_IN_MEMORY flag is set, this points to the actual
32385 + contents. */
32386 + unsigned char *contents;
32387 +
32388 + /* Attached line number information. */
32389 + alent *lineno;
32390 +
32391 + /* Number of line number records. */
32392 + unsigned int lineno_count;
32393 +
32394 + /* Entity size for merging purposes. */
32395 + unsigned int entsize;
32396 +
32397 + /* Points to the kept section if this section is a link-once section,
32398 + and is discarded. */
32399 + struct bfd_section *kept_section;
32400 +
32401 + /* When a section is being output, this value changes as more
32402 + linenumbers are written out. */
32403 + file_ptr moving_line_filepos;
32404 +
32405 + /* What the section number is in the target world. */
32406 + int target_index;
32407 +
32408 + void *used_by_bfd;
32409 +
32410 + /* If this is a constructor section then here is a list of the
32411 + relocations created to relocate items within it. */
32412 + struct relent_chain *constructor_chain;
32413 +
32414 + /* The BFD which owns the section. */
32415 + bfd *owner;
32416 +
32417 + /* A symbol which points at this section only. */
32418 + struct bfd_symbol *symbol;
32419 + struct bfd_symbol **symbol_ptr_ptr;
32420 +
32421 + /* Early in the link process, map_head and map_tail are used to build
32422 + a list of input sections attached to an output section. Later,
32423 + output sections use these fields for a list of bfd_link_order
32424 + structs. */
32425 + union {
32426 + struct bfd_link_order *link_order;
32427 + struct bfd_section *s;
32428 + } map_head, map_tail;
32429 +} asection;
32430 +
32431 +/* These sections are global, and are managed by BFD. The application
32432 + and target back end are not permitted to change the values in
32433 + these sections. New code should use the section_ptr macros rather
32434 + than referring directly to the const sections. The const sections
32435 + may eventually vanish. */
32436 +#define BFD_ABS_SECTION_NAME "*ABS*"
32437 +#define BFD_UND_SECTION_NAME "*UND*"
32438 +#define BFD_COM_SECTION_NAME "*COM*"
32439 +#define BFD_IND_SECTION_NAME "*IND*"
32440 +
32441 +/* The absolute section. */
32442 +extern asection bfd_abs_section;
32443 +#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
32444 +#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
32445 +/* Pointer to the undefined section. */
32446 +extern asection bfd_und_section;
32447 +#define bfd_und_section_ptr ((asection *) &bfd_und_section)
32448 +#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
32449 +/* Pointer to the common section. */
32450 +extern asection bfd_com_section;
32451 +#define bfd_com_section_ptr ((asection *) &bfd_com_section)
32452 +/* Pointer to the indirect section. */
32453 +extern asection bfd_ind_section;
32454 +#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
32455 +#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
32456 +
32457 +#define bfd_is_const_section(SEC) \
32458 + ( ((SEC) == bfd_abs_section_ptr) \
32459 + || ((SEC) == bfd_und_section_ptr) \
32460 + || ((SEC) == bfd_com_section_ptr) \
32461 + || ((SEC) == bfd_ind_section_ptr))
32462 +
32463 +/* Macros to handle insertion and deletion of a bfd's sections. These
32464 + only handle the list pointers, ie. do not adjust section_count,
32465 + target_index etc. */
32466 +#define bfd_section_list_remove(ABFD, S) \
32467 + do \
32468 + { \
32469 + asection *_s = S; \
32470 + asection *_next = _s->next; \
32471 + asection *_prev = _s->prev; \
32472 + if (_prev) \
32473 + _prev->next = _next; \
32474 + else \
32475 + (ABFD)->sections = _next; \
32476 + if (_next) \
32477 + _next->prev = _prev; \
32478 + else \
32479 + (ABFD)->section_last = _prev; \
32480 + } \
32481 + while (0)
32482 +#define bfd_section_list_append(ABFD, S) \
32483 + do \
32484 + { \
32485 + asection *_s = S; \
32486 + bfd *_abfd = ABFD; \
32487 + _s->next = NULL; \
32488 + if (_abfd->section_last) \
32489 + { \
32490 + _s->prev = _abfd->section_last; \
32491 + _abfd->section_last->next = _s; \
32492 + } \
32493 + else \
32494 + { \
32495 + _s->prev = NULL; \
32496 + _abfd->sections = _s; \
32497 + } \
32498 + _abfd->section_last = _s; \
32499 + } \
32500 + while (0)
32501 +#define bfd_section_list_prepend(ABFD, S) \
32502 + do \
32503 + { \
32504 + asection *_s = S; \
32505 + bfd *_abfd = ABFD; \
32506 + _s->prev = NULL; \
32507 + if (_abfd->sections) \
32508 + { \
32509 + _s->next = _abfd->sections; \
32510 + _abfd->sections->prev = _s; \
32511 + } \
32512 + else \
32513 + { \
32514 + _s->next = NULL; \
32515 + _abfd->section_last = _s; \
32516 + } \
32517 + _abfd->sections = _s; \
32518 + } \
32519 + while (0)
32520 +#define bfd_section_list_insert_after(ABFD, A, S) \
32521 + do \
32522 + { \
32523 + asection *_a = A; \
32524 + asection *_s = S; \
32525 + asection *_next = _a->next; \
32526 + _s->next = _next; \
32527 + _s->prev = _a; \
32528 + _a->next = _s; \
32529 + if (_next) \
32530 + _next->prev = _s; \
32531 + else \
32532 + (ABFD)->section_last = _s; \
32533 + } \
32534 + while (0)
32535 +#define bfd_section_list_insert_before(ABFD, B, S) \
32536 + do \
32537 + { \
32538 + asection *_b = B; \
32539 + asection *_s = S; \
32540 + asection *_prev = _b->prev; \
32541 + _s->prev = _prev; \
32542 + _s->next = _b; \
32543 + _b->prev = _s; \
32544 + if (_prev) \
32545 + _prev->next = _s; \
32546 + else \
32547 + (ABFD)->sections = _s; \
32548 + } \
32549 + while (0)
32550 +#define bfd_section_removed_from_list(ABFD, S) \
32551 + ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
32552 +
32553 +#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
32554 + /* name, id, index, next, prev, flags, user_set_vma, */ \
32555 + { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
32556 + \
32557 + /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \
32558 + 0, 0, 1, 0, \
32559 + \
32560 + /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \
32561 + 0, 0, 0, 0, \
32562 + \
32563 + /* has_gp_reloc, need_finalize_relax, reloc_done, */ \
32564 + 0, 0, 0, \
32565 + \
32566 + /* vma, lma, size, rawsize */ \
32567 + 0, 0, 0, 0, \
32568 + \
32569 + /* output_offset, output_section, alignment_power, */ \
32570 + 0, (struct bfd_section *) &SEC, 0, \
32571 + \
32572 + /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
32573 + NULL, NULL, 0, 0, 0, \
32574 + \
32575 + /* line_filepos, userdata, contents, lineno, lineno_count, */ \
32576 + 0, NULL, NULL, NULL, 0, \
32577 + \
32578 + /* entsize, kept_section, moving_line_filepos, */ \
32579 + 0, NULL, 0, \
32580 + \
32581 + /* target_index, used_by_bfd, constructor_chain, owner, */ \
32582 + 0, NULL, NULL, NULL, \
32583 + \
32584 + /* symbol, symbol_ptr_ptr, */ \
32585 + (struct bfd_symbol *) SYM, &SEC.symbol, \
32586 + \
32587 + /* map_head, map_tail */ \
32588 + { NULL }, { NULL } \
32589 + }
32590 +
32591 +void bfd_section_list_clear (bfd *);
32592 +
32593 +asection *bfd_get_section_by_name (bfd *abfd, const char *name);
32594 +
32595 +asection *bfd_get_section_by_name_if
32596 + (bfd *abfd,
32597 + const char *name,
32598 + bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
32599 + void *obj);
32600 +
32601 +char *bfd_get_unique_section_name
32602 + (bfd *abfd, const char *templat, int *count);
32603 +
32604 +asection *bfd_make_section_old_way (bfd *abfd, const char *name);
32605 +
32606 +asection *bfd_make_section_anyway_with_flags
32607 + (bfd *abfd, const char *name, flagword flags);
32608 +
32609 +asection *bfd_make_section_anyway (bfd *abfd, const char *name);
32610 +
32611 +asection *bfd_make_section_with_flags
32612 + (bfd *, const char *name, flagword flags);
32613 +
32614 +asection *bfd_make_section (bfd *, const char *name);
32615 +
32616 +bfd_boolean bfd_set_section_flags
32617 + (bfd *abfd, asection *sec, flagword flags);
32618 +
32619 +void bfd_map_over_sections
32620 + (bfd *abfd,
32621 + void (*func) (bfd *abfd, asection *sect, void *obj),
32622 + void *obj);
32623 +
32624 +asection *bfd_sections_find_if
32625 + (bfd *abfd,
32626 + bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
32627 + void *obj);
32628 +
32629 +bfd_boolean bfd_set_section_size
32630 + (bfd *abfd, asection *sec, bfd_size_type val);
32631 +
32632 +bfd_boolean bfd_set_section_contents
32633 + (bfd *abfd, asection *section, const void *data,
32634 + file_ptr offset, bfd_size_type count);
32635 +
32636 +bfd_boolean bfd_get_section_contents
32637 + (bfd *abfd, asection *section, void *location, file_ptr offset,
32638 + bfd_size_type count);
32639 +
32640 +bfd_boolean bfd_malloc_and_get_section
32641 + (bfd *abfd, asection *section, bfd_byte **buf);
32642 +
32643 +bfd_boolean bfd_copy_private_section_data
32644 + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
32645 +
32646 +#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
32647 + BFD_SEND (obfd, _bfd_copy_private_section_data, \
32648 + (ibfd, isection, obfd, osection))
32649 +bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
32650 +
32651 +bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
32652 +
32653 +/* Extracted from archures.c. */
32654 +enum bfd_architecture
32655 +{
32656 + bfd_arch_unknown, /* File arch not known. */
32657 + bfd_arch_obscure, /* Arch known, not one of these. */
32658 + bfd_arch_m68k, /* Motorola 68xxx */
32659 +#define bfd_mach_m68000 1
32660 +#define bfd_mach_m68008 2
32661 +#define bfd_mach_m68010 3
32662 +#define bfd_mach_m68020 4
32663 +#define bfd_mach_m68030 5
32664 +#define bfd_mach_m68040 6
32665 +#define bfd_mach_m68060 7
32666 +#define bfd_mach_cpu32 8
32667 +#define bfd_mach_fido 9
32668 +#define bfd_mach_mcf_isa_a_nodiv 10
32669 +#define bfd_mach_mcf_isa_a 11
32670 +#define bfd_mach_mcf_isa_a_mac 12
32671 +#define bfd_mach_mcf_isa_a_emac 13
32672 +#define bfd_mach_mcf_isa_aplus 14
32673 +#define bfd_mach_mcf_isa_aplus_mac 15
32674 +#define bfd_mach_mcf_isa_aplus_emac 16
32675 +#define bfd_mach_mcf_isa_b_nousp 17
32676 +#define bfd_mach_mcf_isa_b_nousp_mac 18
32677 +#define bfd_mach_mcf_isa_b_nousp_emac 19
32678 +#define bfd_mach_mcf_isa_b 20
32679 +#define bfd_mach_mcf_isa_b_mac 21
32680 +#define bfd_mach_mcf_isa_b_emac 22
32681 +#define bfd_mach_mcf_isa_b_float 23
32682 +#define bfd_mach_mcf_isa_b_float_mac 24
32683 +#define bfd_mach_mcf_isa_b_float_emac 25
32684 +#define bfd_mach_mcf_isa_c 26
32685 +#define bfd_mach_mcf_isa_c_mac 27
32686 +#define bfd_mach_mcf_isa_c_emac 28
32687 + bfd_arch_vax, /* DEC Vax */
32688 + bfd_arch_i960, /* Intel 960 */
32689 + /* The order of the following is important.
32690 + lower number indicates a machine type that
32691 + only accepts a subset of the instructions
32692 + available to machines with higher numbers.
32693 + The exception is the "ca", which is
32694 + incompatible with all other machines except
32695 + "core". */
32696 +
32697 +#define bfd_mach_i960_core 1
32698 +#define bfd_mach_i960_ka_sa 2
32699 +#define bfd_mach_i960_kb_sb 3
32700 +#define bfd_mach_i960_mc 4
32701 +#define bfd_mach_i960_xa 5
32702 +#define bfd_mach_i960_ca 6
32703 +#define bfd_mach_i960_jx 7
32704 +#define bfd_mach_i960_hx 8
32705 +
32706 + bfd_arch_or32, /* OpenRISC 32 */
32707 +
32708 + bfd_arch_sparc, /* SPARC */
32709 +#define bfd_mach_sparc 1
32710 +/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
32711 +#define bfd_mach_sparc_sparclet 2
32712 +#define bfd_mach_sparc_sparclite 3
32713 +#define bfd_mach_sparc_v8plus 4
32714 +#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
32715 +#define bfd_mach_sparc_sparclite_le 6
32716 +#define bfd_mach_sparc_v9 7
32717 +#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
32718 +#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
32719 +#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
32720 +/* Nonzero if MACH has the v9 instruction set. */
32721 +#define bfd_mach_sparc_v9_p(mach) \
32722 + ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
32723 + && (mach) != bfd_mach_sparc_sparclite_le)
32724 +/* Nonzero if MACH is a 64 bit sparc architecture. */
32725 +#define bfd_mach_sparc_64bit_p(mach) \
32726 + ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
32727 + bfd_arch_spu, /* PowerPC SPU */
32728 +#define bfd_mach_spu 256
32729 + bfd_arch_mips, /* MIPS Rxxxx */
32730 +#define bfd_mach_mips3000 3000
32731 +#define bfd_mach_mips3900 3900
32732 +#define bfd_mach_mips4000 4000
32733 +#define bfd_mach_mips4010 4010
32734 +#define bfd_mach_mips4100 4100
32735 +#define bfd_mach_mips4111 4111
32736 +#define bfd_mach_mips4120 4120
32737 +#define bfd_mach_mips4300 4300
32738 +#define bfd_mach_mips4400 4400
32739 +#define bfd_mach_mips4600 4600
32740 +#define bfd_mach_mips4650 4650
32741 +#define bfd_mach_mips5000 5000
32742 +#define bfd_mach_mips5400 5400
32743 +#define bfd_mach_mips5500 5500
32744 +#define bfd_mach_mips6000 6000
32745 +#define bfd_mach_mips7000 7000
32746 +#define bfd_mach_mips8000 8000
32747 +#define bfd_mach_mips9000 9000
32748 +#define bfd_mach_mips10000 10000
32749 +#define bfd_mach_mips12000 12000
32750 +#define bfd_mach_mips16 16
32751 +#define bfd_mach_mips5 5
32752 +#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
32753 +#define bfd_mach_mipsisa32 32
32754 +#define bfd_mach_mipsisa32r2 33
32755 +#define bfd_mach_mipsisa64 64
32756 +#define bfd_mach_mipsisa64r2 65
32757 + bfd_arch_i386, /* Intel 386 */
32758 +#define bfd_mach_i386_i386 1
32759 +#define bfd_mach_i386_i8086 2
32760 +#define bfd_mach_i386_i386_intel_syntax 3
32761 +#define bfd_mach_x86_64 64
32762 +#define bfd_mach_x86_64_intel_syntax 65
32763 + bfd_arch_we32k, /* AT&T WE32xxx */
32764 + bfd_arch_tahoe, /* CCI/Harris Tahoe */
32765 + bfd_arch_i860, /* Intel 860 */
32766 + bfd_arch_i370, /* IBM 360/370 Mainframes */
32767 + bfd_arch_romp, /* IBM ROMP PC/RT */
32768 + bfd_arch_convex, /* Convex */
32769 + bfd_arch_m88k, /* Motorola 88xxx */
32770 + bfd_arch_m98k, /* Motorola 98xxx */
32771 + bfd_arch_pyramid, /* Pyramid Technology */
32772 + bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
32773 +#define bfd_mach_h8300 1
32774 +#define bfd_mach_h8300h 2
32775 +#define bfd_mach_h8300s 3
32776 +#define bfd_mach_h8300hn 4
32777 +#define bfd_mach_h8300sn 5
32778 +#define bfd_mach_h8300sx 6
32779 +#define bfd_mach_h8300sxn 7
32780 + bfd_arch_pdp11, /* DEC PDP-11 */
32781 + bfd_arch_powerpc, /* PowerPC */
32782 +#define bfd_mach_ppc 32
32783 +#define bfd_mach_ppc64 64
32784 +#define bfd_mach_ppc_403 403
32785 +#define bfd_mach_ppc_403gc 4030
32786 +#define bfd_mach_ppc_505 505
32787 +#define bfd_mach_ppc_601 601
32788 +#define bfd_mach_ppc_602 602
32789 +#define bfd_mach_ppc_603 603
32790 +#define bfd_mach_ppc_ec603e 6031
32791 +#define bfd_mach_ppc_604 604
32792 +#define bfd_mach_ppc_620 620
32793 +#define bfd_mach_ppc_630 630
32794 +#define bfd_mach_ppc_750 750
32795 +#define bfd_mach_ppc_860 860
32796 +#define bfd_mach_ppc_a35 35
32797 +#define bfd_mach_ppc_rs64ii 642
32798 +#define bfd_mach_ppc_rs64iii 643
32799 +#define bfd_mach_ppc_7400 7400
32800 +#define bfd_mach_ppc_e500 500
32801 + bfd_arch_rs6000, /* IBM RS/6000 */
32802 +#define bfd_mach_rs6k 6000
32803 +#define bfd_mach_rs6k_rs1 6001
32804 +#define bfd_mach_rs6k_rsc 6003
32805 +#define bfd_mach_rs6k_rs2 6002
32806 + bfd_arch_hppa, /* HP PA RISC */
32807 +#define bfd_mach_hppa10 10
32808 +#define bfd_mach_hppa11 11
32809 +#define bfd_mach_hppa20 20
32810 +#define bfd_mach_hppa20w 25
32811 + bfd_arch_d10v, /* Mitsubishi D10V */
32812 +#define bfd_mach_d10v 1
32813 +#define bfd_mach_d10v_ts2 2
32814 +#define bfd_mach_d10v_ts3 3
32815 + bfd_arch_d30v, /* Mitsubishi D30V */
32816 + bfd_arch_dlx, /* DLX */
32817 + bfd_arch_m68hc11, /* Motorola 68HC11 */
32818 + bfd_arch_m68hc12, /* Motorola 68HC12 */
32819 +#define bfd_mach_m6812_default 0
32820 +#define bfd_mach_m6812 1
32821 +#define bfd_mach_m6812s 2
32822 + bfd_arch_z8k, /* Zilog Z8000 */
32823 +#define bfd_mach_z8001 1
32824 +#define bfd_mach_z8002 2
32825 + bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
32826 + bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
32827 +#define bfd_mach_sh 1
32828 +#define bfd_mach_sh2 0x20
32829 +#define bfd_mach_sh_dsp 0x2d
32830 +#define bfd_mach_sh2a 0x2a
32831 +#define bfd_mach_sh2a_nofpu 0x2b
32832 +#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
32833 +#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
32834 +#define bfd_mach_sh2a_or_sh4 0x2a3
32835 +#define bfd_mach_sh2a_or_sh3e 0x2a4
32836 +#define bfd_mach_sh2e 0x2e
32837 +#define bfd_mach_sh3 0x30
32838 +#define bfd_mach_sh3_nommu 0x31
32839 +#define bfd_mach_sh3_dsp 0x3d
32840 +#define bfd_mach_sh3e 0x3e
32841 +#define bfd_mach_sh4 0x40
32842 +#define bfd_mach_sh4_nofpu 0x41
32843 +#define bfd_mach_sh4_nommu_nofpu 0x42
32844 +#define bfd_mach_sh4a 0x4a
32845 +#define bfd_mach_sh4a_nofpu 0x4b
32846 +#define bfd_mach_sh4al_dsp 0x4d
32847 +#define bfd_mach_sh5 0x50
32848 + bfd_arch_alpha, /* Dec Alpha */
32849 +#define bfd_mach_alpha_ev4 0x10
32850 +#define bfd_mach_alpha_ev5 0x20
32851 +#define bfd_mach_alpha_ev6 0x30
32852 + bfd_arch_arm, /* Advanced Risc Machines ARM. */
32853 +#define bfd_mach_arm_unknown 0
32854 +#define bfd_mach_arm_2 1
32855 +#define bfd_mach_arm_2a 2
32856 +#define bfd_mach_arm_3 3
32857 +#define bfd_mach_arm_3M 4
32858 +#define bfd_mach_arm_4 5
32859 +#define bfd_mach_arm_4T 6
32860 +#define bfd_mach_arm_5 7
32861 +#define bfd_mach_arm_5T 8
32862 +#define bfd_mach_arm_5TE 9
32863 +#define bfd_mach_arm_XScale 10
32864 +#define bfd_mach_arm_ep9312 11
32865 +#define bfd_mach_arm_iWMMXt 12
32866 +#define bfd_mach_arm_iWMMXt2 13
32867 + bfd_arch_ns32k, /* National Semiconductors ns32000 */
32868 + bfd_arch_w65, /* WDC 65816 */
32869 + bfd_arch_tic30, /* Texas Instruments TMS320C30 */
32870 + bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
32871 +#define bfd_mach_tic3x 30
32872 +#define bfd_mach_tic4x 40
32873 + bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
32874 + bfd_arch_tic80, /* TI TMS320c80 (MVP) */
32875 + bfd_arch_v850, /* NEC V850 */
32876 +#define bfd_mach_v850 1
32877 +#define bfd_mach_v850e 'E'
32878 +#define bfd_mach_v850e1 '1'
32879 + bfd_arch_arc, /* ARC Cores */
32880 +#define bfd_mach_arc_5 5
32881 +#define bfd_mach_arc_6 6
32882 +#define bfd_mach_arc_7 7
32883 +#define bfd_mach_arc_8 8
32884 + bfd_arch_m32c, /* Renesas M16C/M32C. */
32885 +#define bfd_mach_m16c 0x75
32886 +#define bfd_mach_m32c 0x78
32887 + bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
32888 +#define bfd_mach_m32r 1 /* For backwards compatibility. */
32889 +#define bfd_mach_m32rx 'x'
32890 +#define bfd_mach_m32r2 '2'
32891 + bfd_arch_mn10200, /* Matsushita MN10200 */
32892 + bfd_arch_mn10300, /* Matsushita MN10300 */
32893 +#define bfd_mach_mn10300 300
32894 +#define bfd_mach_am33 330
32895 +#define bfd_mach_am33_2 332
32896 + bfd_arch_fr30,
32897 +#define bfd_mach_fr30 0x46523330
32898 + bfd_arch_frv,
32899 +#define bfd_mach_frv 1
32900 +#define bfd_mach_frvsimple 2
32901 +#define bfd_mach_fr300 300
32902 +#define bfd_mach_fr400 400
32903 +#define bfd_mach_fr450 450
32904 +#define bfd_mach_frvtomcat 499 /* fr500 prototype */
32905 +#define bfd_mach_fr500 500
32906 +#define bfd_mach_fr550 550
32907 + bfd_arch_mcore,
32908 + bfd_arch_mep,
32909 +#define bfd_mach_mep 1
32910 +#define bfd_mach_mep_h1 0x6831
32911 + bfd_arch_ia64, /* HP/Intel ia64 */
32912 +#define bfd_mach_ia64_elf64 64
32913 +#define bfd_mach_ia64_elf32 32
32914 + bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
32915 +#define bfd_mach_ip2022 1
32916 +#define bfd_mach_ip2022ext 2
32917 + bfd_arch_iq2000, /* Vitesse IQ2000. */
32918 +#define bfd_mach_iq2000 1
32919 +#define bfd_mach_iq10 2
32920 + bfd_arch_mt,
32921 +#define bfd_mach_ms1 1
32922 +#define bfd_mach_mrisc2 2
32923 +#define bfd_mach_ms2 3
32924 + bfd_arch_pj,
32925 + bfd_arch_avr, /* Atmel AVR microcontrollers. */
32926 +#define bfd_mach_avr1 1
32927 +#define bfd_mach_avr2 2
32928 +#define bfd_mach_avr3 3
32929 +#define bfd_mach_avr4 4
32930 +#define bfd_mach_avr5 5
32931 +#define bfd_mach_avr6 6
32932 + bfd_arch_bfin, /* ADI Blackfin */
32933 +#define bfd_mach_bfin 1
32934 + bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
32935 +#define bfd_mach_cr16 1
32936 + bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
32937 +#define bfd_mach_cr16c 1
32938 + bfd_arch_crx, /* National Semiconductor CRX. */
32939 +#define bfd_mach_crx 1
32940 + bfd_arch_cris, /* Axis CRIS */
32941 +#define bfd_mach_cris_v0_v10 255
32942 +#define bfd_mach_cris_v32 32
32943 +#define bfd_mach_cris_v10_v32 1032
32944 + bfd_arch_s390, /* IBM s390 */
32945 +#define bfd_mach_s390_31 31
32946 +#define bfd_mach_s390_64 64
32947 + bfd_arch_score, /* Sunplus score */
32948 + bfd_arch_openrisc, /* OpenRISC */
32949 + bfd_arch_mmix, /* Donald Knuth's educational processor. */
32950 + bfd_arch_xstormy16,
32951 +#define bfd_mach_xstormy16 1
32952 + bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
32953 +#define bfd_mach_msp11 11
32954 +#define bfd_mach_msp110 110
32955 +#define bfd_mach_msp12 12
32956 +#define bfd_mach_msp13 13
32957 +#define bfd_mach_msp14 14
32958 +#define bfd_mach_msp15 15
32959 +#define bfd_mach_msp16 16
32960 +#define bfd_mach_msp21 21
32961 +#define bfd_mach_msp31 31
32962 +#define bfd_mach_msp32 32
32963 +#define bfd_mach_msp33 33
32964 +#define bfd_mach_msp41 41
32965 +#define bfd_mach_msp42 42
32966 +#define bfd_mach_msp43 43
32967 +#define bfd_mach_msp44 44
32968 + bfd_arch_xc16x, /* Infineon's XC16X Series. */
32969 +#define bfd_mach_xc16x 1
32970 +#define bfd_mach_xc16xl 2
32971 +#define bfd_mach_xc16xs 3
32972 + bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
32973 +#define bfd_mach_xtensa 1
32974 + bfd_arch_maxq, /* Dallas MAXQ 10/20 */
32975 +#define bfd_mach_maxq10 10
32976 +#define bfd_mach_maxq20 20
32977 + bfd_arch_z80,
32978 +#define bfd_mach_z80strict 1 /* No undocumented opcodes. */
32979 +#define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
32980 +#define bfd_mach_z80full 7 /* All undocumented instructions. */
32981 +#define bfd_mach_r800 11 /* R800: successor with multiplication. */
32982 + bfd_arch_last
32983 + };
32984 +
32985 +typedef struct bfd_arch_info
32986 +{
32987 + int bits_per_word;
32988 + int bits_per_address;
32989 + int bits_per_byte;
32990 + enum bfd_architecture arch;
32991 + unsigned long mach;
32992 + const char *arch_name;
32993 + const char *printable_name;
32994 + unsigned int section_align_power;
32995 + /* TRUE if this is the default machine for the architecture.
32996 + The default arch should be the first entry for an arch so that
32997 + all the entries for that arch can be accessed via <<next>>. */
32998 + bfd_boolean the_default;
32999 + const struct bfd_arch_info * (*compatible)
33000 + (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
33001 +
33002 + bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
33003 +
33004 + const struct bfd_arch_info *next;
33005 +}
33006 +bfd_arch_info_type;
33007 +
33008 +const char *bfd_printable_name (bfd *abfd);
33009 +
33010 +const bfd_arch_info_type *bfd_scan_arch (const char *string);
33011 +
33012 +const char **bfd_arch_list (void);
33013 +
33014 +const bfd_arch_info_type *bfd_arch_get_compatible
33015 + (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
33016 +
33017 +void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
33018 +
33019 +enum bfd_architecture bfd_get_arch (bfd *abfd);
33020 +
33021 +unsigned long bfd_get_mach (bfd *abfd);
33022 +
33023 +unsigned int bfd_arch_bits_per_byte (bfd *abfd);
33024 +
33025 +unsigned int bfd_arch_bits_per_address (bfd *abfd);
33026 +
33027 +const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
33028 +
33029 +const bfd_arch_info_type *bfd_lookup_arch
33030 + (enum bfd_architecture arch, unsigned long machine);
33031 +
33032 +const char *bfd_printable_arch_mach
33033 + (enum bfd_architecture arch, unsigned long machine);
33034 +
33035 +unsigned int bfd_octets_per_byte (bfd *abfd);
33036 +
33037 +unsigned int bfd_arch_mach_octets_per_byte
33038 + (enum bfd_architecture arch, unsigned long machine);
33039 +
33040 +/* Extracted from reloc.c. */
33041 +typedef enum bfd_reloc_status
33042 +{
33043 + /* No errors detected. */
33044 + bfd_reloc_ok,
33045 +
33046 + /* The relocation was performed, but there was an overflow. */
33047 + bfd_reloc_overflow,
33048 +
33049 + /* The address to relocate was not within the section supplied. */
33050 + bfd_reloc_outofrange,
33051 +
33052 + /* Used by special functions. */
33053 + bfd_reloc_continue,
33054 +
33055 + /* Unsupported relocation size requested. */
33056 + bfd_reloc_notsupported,
33057 +
33058 + /* Unused. */
33059 + bfd_reloc_other,
33060 +
33061 + /* The symbol to relocate against was undefined. */
33062 + bfd_reloc_undefined,
33063 +
33064 + /* The relocation was performed, but may not be ok - presently
33065 + generated only when linking i960 coff files with i960 b.out
33066 + symbols. If this type is returned, the error_message argument
33067 + to bfd_perform_relocation will be set. */
33068 + bfd_reloc_dangerous
33069 + }
33070 + bfd_reloc_status_type;
33071 +
33072 +
33073 +typedef struct reloc_cache_entry
33074 +{
33075 + /* A pointer into the canonical table of pointers. */
33076 + struct bfd_symbol **sym_ptr_ptr;
33077 +
33078 + /* offset in section. */
33079 + bfd_size_type address;
33080 +
33081 + /* addend for relocation value. */
33082 + bfd_vma addend;
33083 +
33084 + /* Pointer to how to perform the required relocation. */
33085 + reloc_howto_type *howto;
33086 +
33087 +}
33088 +arelent;
33089 +
33090 +enum complain_overflow
33091 +{
33092 + /* Do not complain on overflow. */
33093 + complain_overflow_dont,
33094 +
33095 + /* Complain if the value overflows when considered as a signed
33096 + number one bit larger than the field. ie. A bitfield of N bits
33097 + is allowed to represent -2**n to 2**n-1. */
33098 + complain_overflow_bitfield,
33099 +
33100 + /* Complain if the value overflows when considered as a signed
33101 + number. */
33102 + complain_overflow_signed,
33103 +
33104 + /* Complain if the value overflows when considered as an
33105 + unsigned number. */
33106 + complain_overflow_unsigned
33107 +};
33108 +
33109 +struct reloc_howto_struct
33110 +{
33111 + /* The type field has mainly a documentary use - the back end can
33112 + do what it wants with it, though normally the back end's
33113 + external idea of what a reloc number is stored
33114 + in this field. For example, a PC relative word relocation
33115 + in a coff environment has the type 023 - because that's
33116 + what the outside world calls a R_PCRWORD reloc. */
33117 + unsigned int type;
33118 +
33119 + /* The value the final relocation is shifted right by. This drops
33120 + unwanted data from the relocation. */
33121 + unsigned int rightshift;
33122 +
33123 + /* The size of the item to be relocated. This is *not* a
33124 + power-of-two measure. To get the number of bytes operated
33125 + on by a type of relocation, use bfd_get_reloc_size. */
33126 + int size;
33127 +
33128 + /* The number of bits in the item to be relocated. This is used
33129 + when doing overflow checking. */
33130 + unsigned int bitsize;
33131 +
33132 + /* Notes that the relocation is relative to the location in the
33133 + data section of the addend. The relocation function will
33134 + subtract from the relocation value the address of the location
33135 + being relocated. */
33136 + bfd_boolean pc_relative;
33137 +
33138 + /* The bit position of the reloc value in the destination.
33139 + The relocated value is left shifted by this amount. */
33140 + unsigned int bitpos;
33141 +
33142 + /* What type of overflow error should be checked for when
33143 + relocating. */
33144 + enum complain_overflow complain_on_overflow;
33145 +
33146 + /* If this field is non null, then the supplied function is
33147 + called rather than the normal function. This allows really
33148 + strange relocation methods to be accommodated (e.g., i960 callj
33149 + instructions). */
33150 + bfd_reloc_status_type (*special_function)
33151 + (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
33152 + bfd *, char **);
33153 +
33154 + /* The textual name of the relocation type. */
33155 + char *name;
33156 +
33157 + /* Some formats record a relocation addend in the section contents
33158 + rather than with the relocation. For ELF formats this is the
33159 + distinction between USE_REL and USE_RELA (though the code checks
33160 + for USE_REL == 1/0). The value of this field is TRUE if the
33161 + addend is recorded with the section contents; when performing a
33162 + partial link (ld -r) the section contents (the data) will be
33163 + modified. The value of this field is FALSE if addends are
33164 + recorded with the relocation (in arelent.addend); when performing
33165 + a partial link the relocation will be modified.
33166 + All relocations for all ELF USE_RELA targets should set this field
33167 + to FALSE (values of TRUE should be looked on with suspicion).
33168 + However, the converse is not true: not all relocations of all ELF
33169 + USE_REL targets set this field to TRUE. Why this is so is peculiar
33170 + to each particular target. For relocs that aren't used in partial
33171 + links (e.g. GOT stuff) it doesn't matter what this is set to. */
33172 + bfd_boolean partial_inplace;
33173 +
33174 + /* src_mask selects the part of the instruction (or data) to be used
33175 + in the relocation sum. If the target relocations don't have an
33176 + addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
33177 + dst_mask to extract the addend from the section contents. If
33178 + relocations do have an addend in the reloc, eg. ELF USE_RELA, this
33179 + field should be zero. Non-zero values for ELF USE_RELA targets are
33180 + bogus as in those cases the value in the dst_mask part of the
33181 + section contents should be treated as garbage. */
33182 + bfd_vma src_mask;
33183 +
33184 + /* dst_mask selects which parts of the instruction (or data) are
33185 + replaced with a relocated value. */
33186 + bfd_vma dst_mask;
33187 +
33188 + /* When some formats create PC relative instructions, they leave
33189 + the value of the pc of the place being relocated in the offset
33190 + slot of the instruction, so that a PC relative relocation can
33191 + be made just by adding in an ordinary offset (e.g., sun3 a.out).
33192 + Some formats leave the displacement part of an instruction
33193 + empty (e.g., m88k bcs); this flag signals the fact. */
33194 + bfd_boolean pcrel_offset;
33195 +};
33196 +
33197 +#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
33198 + { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
33199 +#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
33200 + HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
33201 + NAME, FALSE, 0, 0, IN)
33202 +
33203 +#define EMPTY_HOWTO(C) \
33204 + HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
33205 + NULL, FALSE, 0, 0, FALSE)
33206 +
33207 +#define HOWTO_PREPARE(relocation, symbol) \
33208 + { \
33209 + if (symbol != NULL) \
33210 + { \
33211 + if (bfd_is_com_section (symbol->section)) \
33212 + { \
33213 + relocation = 0; \
33214 + } \
33215 + else \
33216 + { \
33217 + relocation = symbol->value; \
33218 + } \
33219 + } \
33220 + }
33221 +
33222 +unsigned int bfd_get_reloc_size (reloc_howto_type *);
33223 +
33224 +typedef struct relent_chain
33225 +{
33226 + arelent relent;
33227 + struct relent_chain *next;
33228 +}
33229 +arelent_chain;
33230 +
33231 +bfd_reloc_status_type bfd_check_overflow
33232 + (enum complain_overflow how,
33233 + unsigned int bitsize,
33234 + unsigned int rightshift,
33235 + unsigned int addrsize,
33236 + bfd_vma relocation);
33237 +
33238 +bfd_reloc_status_type bfd_perform_relocation
33239 + (bfd *abfd,
33240 + arelent *reloc_entry,
33241 + void *data,
33242 + asection *input_section,
33243 + bfd *output_bfd,
33244 + char **error_message);
33245 +
33246 +bfd_reloc_status_type bfd_install_relocation
33247 + (bfd *abfd,
33248 + arelent *reloc_entry,
33249 + void *data, bfd_vma data_start,
33250 + asection *input_section,
33251 + char **error_message);
33252 +
33253 +enum bfd_reloc_code_real {
33254 + _dummy_first_bfd_reloc_code_real,
33255 +
33256 +
33257 +/* Basic absolute relocations of N bits. */
33258 + BFD_RELOC_64,
33259 + BFD_RELOC_32,
33260 + BFD_RELOC_26,
33261 + BFD_RELOC_24,
33262 + BFD_RELOC_16,
33263 + BFD_RELOC_14,
33264 + BFD_RELOC_8,
33265 +
33266 +/* PC-relative relocations. Sometimes these are relative to the address
33267 +of the relocation itself; sometimes they are relative to the start of
33268 +the section containing the relocation. It depends on the specific target.
33269 +
33270 +The 24-bit relocation is used in some Intel 960 configurations. */
33271 + BFD_RELOC_64_PCREL,
33272 + BFD_RELOC_32_PCREL,
33273 + BFD_RELOC_24_PCREL,
33274 + BFD_RELOC_16_PCREL,
33275 + BFD_RELOC_12_PCREL,
33276 + BFD_RELOC_8_PCREL,
33277 +
33278 +/* Section relative relocations. Some targets need this for DWARF2. */
33279 + BFD_RELOC_32_SECREL,
33280 +
33281 +/* For ELF. */
33282 + BFD_RELOC_32_GOT_PCREL,
33283 + BFD_RELOC_16_GOT_PCREL,
33284 + BFD_RELOC_8_GOT_PCREL,
33285 + BFD_RELOC_32_GOTOFF,
33286 + BFD_RELOC_16_GOTOFF,
33287 + BFD_RELOC_LO16_GOTOFF,
33288 + BFD_RELOC_HI16_GOTOFF,
33289 + BFD_RELOC_HI16_S_GOTOFF,
33290 + BFD_RELOC_8_GOTOFF,
33291 + BFD_RELOC_64_PLT_PCREL,
33292 + BFD_RELOC_32_PLT_PCREL,
33293 + BFD_RELOC_24_PLT_PCREL,
33294 + BFD_RELOC_16_PLT_PCREL,
33295 + BFD_RELOC_8_PLT_PCREL,
33296 + BFD_RELOC_64_PLTOFF,
33297 + BFD_RELOC_32_PLTOFF,
33298 + BFD_RELOC_16_PLTOFF,
33299 + BFD_RELOC_LO16_PLTOFF,
33300 + BFD_RELOC_HI16_PLTOFF,
33301 + BFD_RELOC_HI16_S_PLTOFF,
33302 + BFD_RELOC_8_PLTOFF,
33303 +
33304 +/* Relocations used by 68K ELF. */
33305 + BFD_RELOC_68K_GLOB_DAT,
33306 + BFD_RELOC_68K_JMP_SLOT,
33307 + BFD_RELOC_68K_RELATIVE,
33308 +
33309 +/* Linkage-table relative. */
33310 + BFD_RELOC_32_BASEREL,
33311 + BFD_RELOC_16_BASEREL,
33312 + BFD_RELOC_LO16_BASEREL,
33313 + BFD_RELOC_HI16_BASEREL,
33314 + BFD_RELOC_HI16_S_BASEREL,
33315 + BFD_RELOC_8_BASEREL,
33316 + BFD_RELOC_RVA,
33317 +
33318 +/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */
33319 + BFD_RELOC_8_FFnn,
33320 +
33321 +/* These PC-relative relocations are stored as word displacements --
33322 +i.e., byte displacements shifted right two bits. The 30-bit word
33323 +displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
33324 +SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
33325 +signed 16-bit displacement is used on the MIPS, and the 23-bit
33326 +displacement is used on the Alpha. */
33327 + BFD_RELOC_32_PCREL_S2,
33328 + BFD_RELOC_16_PCREL_S2,
33329 + BFD_RELOC_23_PCREL_S2,
33330 +
33331 +/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
33332 +the target word. These are used on the SPARC. */
33333 + BFD_RELOC_HI22,
33334 + BFD_RELOC_LO10,
33335 +
33336 +/* For systems that allocate a Global Pointer register, these are
33337 +displacements off that register. These relocation types are
33338 +handled specially, because the value the register will have is
33339 +decided relatively late. */
33340 + BFD_RELOC_GPREL16,
33341 + BFD_RELOC_GPREL32,
33342 +
33343 +/* Reloc types used for i960/b.out. */
33344 + BFD_RELOC_I960_CALLJ,
33345 +
33346 +/* SPARC ELF relocations. There is probably some overlap with other
33347 +relocation types already defined. */
33348 + BFD_RELOC_NONE,
33349 + BFD_RELOC_SPARC_WDISP22,
33350 + BFD_RELOC_SPARC22,
33351 + BFD_RELOC_SPARC13,
33352 + BFD_RELOC_SPARC_GOT10,
33353 + BFD_RELOC_SPARC_GOT13,
33354 + BFD_RELOC_SPARC_GOT22,
33355 + BFD_RELOC_SPARC_PC10,
33356 + BFD_RELOC_SPARC_PC22,
33357 + BFD_RELOC_SPARC_WPLT30,
33358 + BFD_RELOC_SPARC_COPY,
33359 + BFD_RELOC_SPARC_GLOB_DAT,
33360 + BFD_RELOC_SPARC_JMP_SLOT,
33361 + BFD_RELOC_SPARC_RELATIVE,
33362 + BFD_RELOC_SPARC_UA16,
33363 + BFD_RELOC_SPARC_UA32,
33364 + BFD_RELOC_SPARC_UA64,
33365 +
33366 +/* I think these are specific to SPARC a.out (e.g., Sun 4). */
33367 + BFD_RELOC_SPARC_BASE13,
33368 + BFD_RELOC_SPARC_BASE22,
33369 +
33370 +/* SPARC64 relocations */
33371 +#define BFD_RELOC_SPARC_64 BFD_RELOC_64
33372 + BFD_RELOC_SPARC_10,
33373 + BFD_RELOC_SPARC_11,
33374 + BFD_RELOC_SPARC_OLO10,
33375 + BFD_RELOC_SPARC_HH22,
33376 + BFD_RELOC_SPARC_HM10,
33377 + BFD_RELOC_SPARC_LM22,
33378 + BFD_RELOC_SPARC_PC_HH22,
33379 + BFD_RELOC_SPARC_PC_HM10,
33380 + BFD_RELOC_SPARC_PC_LM22,
33381 + BFD_RELOC_SPARC_WDISP16,
33382 + BFD_RELOC_SPARC_WDISP19,
33383 + BFD_RELOC_SPARC_7,
33384 + BFD_RELOC_SPARC_6,
33385 + BFD_RELOC_SPARC_5,
33386 +#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
33387 + BFD_RELOC_SPARC_PLT32,
33388 + BFD_RELOC_SPARC_PLT64,
33389 + BFD_RELOC_SPARC_HIX22,
33390 + BFD_RELOC_SPARC_LOX10,
33391 + BFD_RELOC_SPARC_H44,
33392 + BFD_RELOC_SPARC_M44,
33393 + BFD_RELOC_SPARC_L44,
33394 + BFD_RELOC_SPARC_REGISTER,
33395 +
33396 +/* SPARC little endian relocation */
33397 + BFD_RELOC_SPARC_REV32,
33398 +
33399 +/* SPARC TLS relocations */
33400 + BFD_RELOC_SPARC_TLS_GD_HI22,
33401 + BFD_RELOC_SPARC_TLS_GD_LO10,
33402 + BFD_RELOC_SPARC_TLS_GD_ADD,
33403 + BFD_RELOC_SPARC_TLS_GD_CALL,
33404 + BFD_RELOC_SPARC_TLS_LDM_HI22,
33405 + BFD_RELOC_SPARC_TLS_LDM_LO10,
33406 + BFD_RELOC_SPARC_TLS_LDM_ADD,
33407 + BFD_RELOC_SPARC_TLS_LDM_CALL,
33408 + BFD_RELOC_SPARC_TLS_LDO_HIX22,
33409 + BFD_RELOC_SPARC_TLS_LDO_LOX10,
33410 + BFD_RELOC_SPARC_TLS_LDO_ADD,
33411 + BFD_RELOC_SPARC_TLS_IE_HI22,
33412 + BFD_RELOC_SPARC_TLS_IE_LO10,
33413 + BFD_RELOC_SPARC_TLS_IE_LD,
33414 + BFD_RELOC_SPARC_TLS_IE_LDX,
33415 + BFD_RELOC_SPARC_TLS_IE_ADD,
33416 + BFD_RELOC_SPARC_TLS_LE_HIX22,
33417 + BFD_RELOC_SPARC_TLS_LE_LOX10,
33418 + BFD_RELOC_SPARC_TLS_DTPMOD32,
33419 + BFD_RELOC_SPARC_TLS_DTPMOD64,
33420 + BFD_RELOC_SPARC_TLS_DTPOFF32,
33421 + BFD_RELOC_SPARC_TLS_DTPOFF64,
33422 + BFD_RELOC_SPARC_TLS_TPOFF32,
33423 + BFD_RELOC_SPARC_TLS_TPOFF64,
33424 +
33425 +/* SPU Relocations. */
33426 + BFD_RELOC_SPU_IMM7,
33427 + BFD_RELOC_SPU_IMM8,
33428 + BFD_RELOC_SPU_IMM10,
33429 + BFD_RELOC_SPU_IMM10W,
33430 + BFD_RELOC_SPU_IMM16,
33431 + BFD_RELOC_SPU_IMM16W,
33432 + BFD_RELOC_SPU_IMM18,
33433 + BFD_RELOC_SPU_PCREL9a,
33434 + BFD_RELOC_SPU_PCREL9b,
33435 + BFD_RELOC_SPU_PCREL16,
33436 + BFD_RELOC_SPU_LO16,
33437 + BFD_RELOC_SPU_HI16,
33438 + BFD_RELOC_SPU_PPU32,
33439 + BFD_RELOC_SPU_PPU64,
33440 +
33441 +/* Alpha ECOFF and ELF relocations. Some of these treat the symbol or
33442 +"addend" in some special way.
33443 +For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
33444 +writing; when reading, it will be the absolute section symbol. The
33445 +addend is the displacement in bytes of the "lda" instruction from
33446 +the "ldah" instruction (which is at the address of this reloc). */
33447 + BFD_RELOC_ALPHA_GPDISP_HI16,
33448 +
33449 +/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
33450 +with GPDISP_HI16 relocs. The addend is ignored when writing the
33451 +relocations out, and is filled in with the file's GP value on
33452 +reading, for convenience. */
33453 + BFD_RELOC_ALPHA_GPDISP_LO16,
33454 +
33455 +/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
33456 +relocation except that there is no accompanying GPDISP_LO16
33457 +relocation. */
33458 + BFD_RELOC_ALPHA_GPDISP,
33459 +
33460 +/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
33461 +the assembler turns it into a LDQ instruction to load the address of
33462 +the symbol, and then fills in a register in the real instruction.
33463 +
33464 +The LITERAL reloc, at the LDQ instruction, refers to the .lita
33465 +section symbol. The addend is ignored when writing, but is filled
33466 +in with the file's GP value on reading, for convenience, as with the
33467 +GPDISP_LO16 reloc.
33468 +
33469 +The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
33470 +It should refer to the symbol to be referenced, as with 16_GOTOFF,
33471 +but it generates output not based on the position within the .got
33472 +section, but relative to the GP value chosen for the file during the
33473 +final link stage.
33474 +
33475 +The LITUSE reloc, on the instruction using the loaded address, gives
33476 +information to the linker that it might be able to use to optimize
33477 +away some literal section references. The symbol is ignored (read
33478 +as the absolute section symbol), and the "addend" indicates the type
33479 +of instruction using the register:
33480 +1 - "memory" fmt insn
33481 +2 - byte-manipulation (byte offset reg)
33482 +3 - jsr (target of branch) */
33483 + BFD_RELOC_ALPHA_LITERAL,
33484 + BFD_RELOC_ALPHA_ELF_LITERAL,
33485 + BFD_RELOC_ALPHA_LITUSE,
33486 +
33487 +/* The HINT relocation indicates a value that should be filled into the
33488 +"hint" field of a jmp/jsr/ret instruction, for possible branch-
33489 +prediction logic which may be provided on some processors. */
33490 + BFD_RELOC_ALPHA_HINT,
33491 +
33492 +/* The LINKAGE relocation outputs a linkage pair in the object file,
33493 +which is filled by the linker. */
33494 + BFD_RELOC_ALPHA_LINKAGE,
33495 +
33496 +/* The CODEADDR relocation outputs a STO_CA in the object file,
33497 +which is filled by the linker. */
33498 + BFD_RELOC_ALPHA_CODEADDR,
33499 +
33500 +/* The GPREL_HI/LO relocations together form a 32-bit offset from the
33501 +GP register. */
33502 + BFD_RELOC_ALPHA_GPREL_HI16,
33503 + BFD_RELOC_ALPHA_GPREL_LO16,
33504 +
33505 +/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
33506 +share a common GP, and the target address is adjusted for
33507 +STO_ALPHA_STD_GPLOAD. */
33508 + BFD_RELOC_ALPHA_BRSGP,
33509 +
33510 +/* Alpha thread-local storage relocations. */
33511 + BFD_RELOC_ALPHA_TLSGD,
33512 + BFD_RELOC_ALPHA_TLSLDM,
33513 + BFD_RELOC_ALPHA_DTPMOD64,
33514 + BFD_RELOC_ALPHA_GOTDTPREL16,
33515 + BFD_RELOC_ALPHA_DTPREL64,
33516 + BFD_RELOC_ALPHA_DTPREL_HI16,
33517 + BFD_RELOC_ALPHA_DTPREL_LO16,
33518 + BFD_RELOC_ALPHA_DTPREL16,
33519 + BFD_RELOC_ALPHA_GOTTPREL16,
33520 + BFD_RELOC_ALPHA_TPREL64,
33521 + BFD_RELOC_ALPHA_TPREL_HI16,
33522 + BFD_RELOC_ALPHA_TPREL_LO16,
33523 + BFD_RELOC_ALPHA_TPREL16,
33524 +
33525 +/* Bits 27..2 of the relocation address shifted right 2 bits;
33526 +simple reloc otherwise. */
33527 + BFD_RELOC_MIPS_JMP,
33528 +
33529 +/* The MIPS16 jump instruction. */
33530 + BFD_RELOC_MIPS16_JMP,
33531 +
33532 +/* MIPS16 GP relative reloc. */
33533 + BFD_RELOC_MIPS16_GPREL,
33534 +
33535 +/* High 16 bits of 32-bit value; simple reloc. */
33536 + BFD_RELOC_HI16,
33537 +
33538 +/* High 16 bits of 32-bit value but the low 16 bits will be sign
33539 +extended and added to form the final result. If the low 16
33540 +bits form a negative number, we need to add one to the high value
33541 +to compensate for the borrow when the low bits are added. */
33542 + BFD_RELOC_HI16_S,
33543 +
33544 +/* Low 16 bits. */
33545 + BFD_RELOC_LO16,
33546 +
33547 +/* High 16 bits of 32-bit pc-relative value */
33548 + BFD_RELOC_HI16_PCREL,
33549 +
33550 +/* High 16 bits of 32-bit pc-relative value, adjusted */
33551 + BFD_RELOC_HI16_S_PCREL,
33552 +
33553 +/* Low 16 bits of pc-relative value */
33554 + BFD_RELOC_LO16_PCREL,
33555 +
33556 +/* MIPS16 high 16 bits of 32-bit value. */
33557 + BFD_RELOC_MIPS16_HI16,
33558 +
33559 +/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
33560 +extended and added to form the final result. If the low 16
33561 +bits form a negative number, we need to add one to the high value
33562 +to compensate for the borrow when the low bits are added. */
33563 + BFD_RELOC_MIPS16_HI16_S,
33564 +
33565 +/* MIPS16 low 16 bits. */
33566 + BFD_RELOC_MIPS16_LO16,
33567 +
33568 +/* Relocation against a MIPS literal section. */
33569 + BFD_RELOC_MIPS_LITERAL,
33570 +
33571 +/* MIPS ELF relocations. */
33572 + BFD_RELOC_MIPS_GOT16,
33573 + BFD_RELOC_MIPS_CALL16,
33574 + BFD_RELOC_MIPS_GOT_HI16,
33575 + BFD_RELOC_MIPS_GOT_LO16,
33576 + BFD_RELOC_MIPS_CALL_HI16,
33577 + BFD_RELOC_MIPS_CALL_LO16,
33578 + BFD_RELOC_MIPS_SUB,
33579 + BFD_RELOC_MIPS_GOT_PAGE,
33580 + BFD_RELOC_MIPS_GOT_OFST,
33581 + BFD_RELOC_MIPS_GOT_DISP,
33582 + BFD_RELOC_MIPS_SHIFT5,
33583 + BFD_RELOC_MIPS_SHIFT6,
33584 + BFD_RELOC_MIPS_INSERT_A,
33585 + BFD_RELOC_MIPS_INSERT_B,
33586 + BFD_RELOC_MIPS_DELETE,
33587 + BFD_RELOC_MIPS_HIGHEST,
33588 + BFD_RELOC_MIPS_HIGHER,
33589 + BFD_RELOC_MIPS_SCN_DISP,
33590 + BFD_RELOC_MIPS_REL16,
33591 + BFD_RELOC_MIPS_RELGOT,
33592 + BFD_RELOC_MIPS_JALR,
33593 + BFD_RELOC_MIPS_TLS_DTPMOD32,
33594 + BFD_RELOC_MIPS_TLS_DTPREL32,
33595 + BFD_RELOC_MIPS_TLS_DTPMOD64,
33596 + BFD_RELOC_MIPS_TLS_DTPREL64,
33597 + BFD_RELOC_MIPS_TLS_GD,
33598 + BFD_RELOC_MIPS_TLS_LDM,
33599 + BFD_RELOC_MIPS_TLS_DTPREL_HI16,
33600 + BFD_RELOC_MIPS_TLS_DTPREL_LO16,
33601 + BFD_RELOC_MIPS_TLS_GOTTPREL,
33602 + BFD_RELOC_MIPS_TLS_TPREL32,
33603 + BFD_RELOC_MIPS_TLS_TPREL64,
33604 + BFD_RELOC_MIPS_TLS_TPREL_HI16,
33605 + BFD_RELOC_MIPS_TLS_TPREL_LO16,
33606 +
33607 +
33608 +/* MIPS ELF relocations (VxWorks extensions). */
33609 + BFD_RELOC_MIPS_COPY,
33610 + BFD_RELOC_MIPS_JUMP_SLOT,
33611 +
33612 +
33613 +/* Fujitsu Frv Relocations. */
33614 + BFD_RELOC_FRV_LABEL16,
33615 + BFD_RELOC_FRV_LABEL24,
33616 + BFD_RELOC_FRV_LO16,
33617 + BFD_RELOC_FRV_HI16,
33618 + BFD_RELOC_FRV_GPREL12,
33619 + BFD_RELOC_FRV_GPRELU12,
33620 + BFD_RELOC_FRV_GPREL32,
33621 + BFD_RELOC_FRV_GPRELHI,
33622 + BFD_RELOC_FRV_GPRELLO,
33623 + BFD_RELOC_FRV_GOT12,
33624 + BFD_RELOC_FRV_GOTHI,
33625 + BFD_RELOC_FRV_GOTLO,
33626 + BFD_RELOC_FRV_FUNCDESC,
33627 + BFD_RELOC_FRV_FUNCDESC_GOT12,
33628 + BFD_RELOC_FRV_FUNCDESC_GOTHI,
33629 + BFD_RELOC_FRV_FUNCDESC_GOTLO,
33630 + BFD_RELOC_FRV_FUNCDESC_VALUE,
33631 + BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
33632 + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
33633 + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
33634 + BFD_RELOC_FRV_GOTOFF12,
33635 + BFD_RELOC_FRV_GOTOFFHI,
33636 + BFD_RELOC_FRV_GOTOFFLO,
33637 + BFD_RELOC_FRV_GETTLSOFF,
33638 + BFD_RELOC_FRV_TLSDESC_VALUE,
33639 + BFD_RELOC_FRV_GOTTLSDESC12,
33640 + BFD_RELOC_FRV_GOTTLSDESCHI,
33641 + BFD_RELOC_FRV_GOTTLSDESCLO,
33642 + BFD_RELOC_FRV_TLSMOFF12,
33643 + BFD_RELOC_FRV_TLSMOFFHI,
33644 + BFD_RELOC_FRV_TLSMOFFLO,
33645 + BFD_RELOC_FRV_GOTTLSOFF12,
33646 + BFD_RELOC_FRV_GOTTLSOFFHI,
33647 + BFD_RELOC_FRV_GOTTLSOFFLO,
33648 + BFD_RELOC_FRV_TLSOFF,
33649 + BFD_RELOC_FRV_TLSDESC_RELAX,
33650 + BFD_RELOC_FRV_GETTLSOFF_RELAX,
33651 + BFD_RELOC_FRV_TLSOFF_RELAX,
33652 + BFD_RELOC_FRV_TLSMOFF,
33653 +
33654 +
33655 +/* This is a 24bit GOT-relative reloc for the mn10300. */
33656 + BFD_RELOC_MN10300_GOTOFF24,
33657 +
33658 +/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
33659 +in the instruction. */
33660 + BFD_RELOC_MN10300_GOT32,
33661 +
33662 +/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
33663 +in the instruction. */
33664 + BFD_RELOC_MN10300_GOT24,
33665 +
33666 +/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
33667 +in the instruction. */
33668 + BFD_RELOC_MN10300_GOT16,
33669 +
33670 +/* Copy symbol at runtime. */
33671 + BFD_RELOC_MN10300_COPY,
33672 +
33673 +/* Create GOT entry. */
33674 + BFD_RELOC_MN10300_GLOB_DAT,
33675 +
33676 +/* Create PLT entry. */
33677 + BFD_RELOC_MN10300_JMP_SLOT,
33678 +
33679 +/* Adjust by program base. */
33680 + BFD_RELOC_MN10300_RELATIVE,
33681 +
33682 +
33683 +/* i386/elf relocations */
33684 + BFD_RELOC_386_GOT32,
33685 + BFD_RELOC_386_PLT32,
33686 + BFD_RELOC_386_COPY,
33687 + BFD_RELOC_386_GLOB_DAT,
33688 + BFD_RELOC_386_JUMP_SLOT,
33689 + BFD_RELOC_386_RELATIVE,
33690 + BFD_RELOC_386_GOTOFF,
33691 + BFD_RELOC_386_GOTPC,
33692 + BFD_RELOC_386_TLS_TPOFF,
33693 + BFD_RELOC_386_TLS_IE,
33694 + BFD_RELOC_386_TLS_GOTIE,
33695 + BFD_RELOC_386_TLS_LE,
33696 + BFD_RELOC_386_TLS_GD,
33697 + BFD_RELOC_386_TLS_LDM,
33698 + BFD_RELOC_386_TLS_LDO_32,
33699 + BFD_RELOC_386_TLS_IE_32,
33700 + BFD_RELOC_386_TLS_LE_32,
33701 + BFD_RELOC_386_TLS_DTPMOD32,
33702 + BFD_RELOC_386_TLS_DTPOFF32,
33703 + BFD_RELOC_386_TLS_TPOFF32,
33704 + BFD_RELOC_386_TLS_GOTDESC,
33705 + BFD_RELOC_386_TLS_DESC_CALL,
33706 + BFD_RELOC_386_TLS_DESC,
33707 +
33708 +/* x86-64/elf relocations */
33709 + BFD_RELOC_X86_64_GOT32,
33710 + BFD_RELOC_X86_64_PLT32,
33711 + BFD_RELOC_X86_64_COPY,
33712 + BFD_RELOC_X86_64_GLOB_DAT,
33713 + BFD_RELOC_X86_64_JUMP_SLOT,
33714 + BFD_RELOC_X86_64_RELATIVE,
33715 + BFD_RELOC_X86_64_GOTPCREL,
33716 + BFD_RELOC_X86_64_32S,
33717 + BFD_RELOC_X86_64_DTPMOD64,
33718 + BFD_RELOC_X86_64_DTPOFF64,
33719 + BFD_RELOC_X86_64_TPOFF64,
33720 + BFD_RELOC_X86_64_TLSGD,
33721 + BFD_RELOC_X86_64_TLSLD,
33722 + BFD_RELOC_X86_64_DTPOFF32,
33723 + BFD_RELOC_X86_64_GOTTPOFF,
33724 + BFD_RELOC_X86_64_TPOFF32,
33725 + BFD_RELOC_X86_64_GOTOFF64,
33726 + BFD_RELOC_X86_64_GOTPC32,
33727 + BFD_RELOC_X86_64_GOT64,
33728 + BFD_RELOC_X86_64_GOTPCREL64,
33729 + BFD_RELOC_X86_64_GOTPC64,
33730 + BFD_RELOC_X86_64_GOTPLT64,
33731 + BFD_RELOC_X86_64_PLTOFF64,
33732 + BFD_RELOC_X86_64_GOTPC32_TLSDESC,
33733 + BFD_RELOC_X86_64_TLSDESC_CALL,
33734 + BFD_RELOC_X86_64_TLSDESC,
33735 +
33736 +/* ns32k relocations */
33737 + BFD_RELOC_NS32K_IMM_8,
33738 + BFD_RELOC_NS32K_IMM_16,
33739 + BFD_RELOC_NS32K_IMM_32,
33740 + BFD_RELOC_NS32K_IMM_8_PCREL,
33741 + BFD_RELOC_NS32K_IMM_16_PCREL,
33742 + BFD_RELOC_NS32K_IMM_32_PCREL,
33743 + BFD_RELOC_NS32K_DISP_8,
33744 + BFD_RELOC_NS32K_DISP_16,
33745 + BFD_RELOC_NS32K_DISP_32,
33746 + BFD_RELOC_NS32K_DISP_8_PCREL,
33747 + BFD_RELOC_NS32K_DISP_16_PCREL,
33748 + BFD_RELOC_NS32K_DISP_32_PCREL,
33749 +
33750 +/* PDP11 relocations */
33751 + BFD_RELOC_PDP11_DISP_8_PCREL,
33752 + BFD_RELOC_PDP11_DISP_6_PCREL,
33753 +
33754 +/* Picojava relocs. Not all of these appear in object files. */
33755 + BFD_RELOC_PJ_CODE_HI16,
33756 + BFD_RELOC_PJ_CODE_LO16,
33757 + BFD_RELOC_PJ_CODE_DIR16,
33758 + BFD_RELOC_PJ_CODE_DIR32,
33759 + BFD_RELOC_PJ_CODE_REL16,
33760 + BFD_RELOC_PJ_CODE_REL32,
33761 +
33762 +/* Power(rs6000) and PowerPC relocations. */
33763 + BFD_RELOC_PPC_B26,
33764 + BFD_RELOC_PPC_BA26,
33765 + BFD_RELOC_PPC_TOC16,
33766 + BFD_RELOC_PPC_B16,
33767 + BFD_RELOC_PPC_B16_BRTAKEN,
33768 + BFD_RELOC_PPC_B16_BRNTAKEN,
33769 + BFD_RELOC_PPC_BA16,
33770 + BFD_RELOC_PPC_BA16_BRTAKEN,
33771 + BFD_RELOC_PPC_BA16_BRNTAKEN,
33772 + BFD_RELOC_PPC_COPY,
33773 + BFD_RELOC_PPC_GLOB_DAT,
33774 + BFD_RELOC_PPC_JMP_SLOT,
33775 + BFD_RELOC_PPC_RELATIVE,
33776 + BFD_RELOC_PPC_LOCAL24PC,
33777 + BFD_RELOC_PPC_EMB_NADDR32,
33778 + BFD_RELOC_PPC_EMB_NADDR16,
33779 + BFD_RELOC_PPC_EMB_NADDR16_LO,
33780 + BFD_RELOC_PPC_EMB_NADDR16_HI,
33781 + BFD_RELOC_PPC_EMB_NADDR16_HA,
33782 + BFD_RELOC_PPC_EMB_SDAI16,
33783 + BFD_RELOC_PPC_EMB_SDA2I16,
33784 + BFD_RELOC_PPC_EMB_SDA2REL,
33785 + BFD_RELOC_PPC_EMB_SDA21,
33786 + BFD_RELOC_PPC_EMB_MRKREF,
33787 + BFD_RELOC_PPC_EMB_RELSEC16,
33788 + BFD_RELOC_PPC_EMB_RELST_LO,
33789 + BFD_RELOC_PPC_EMB_RELST_HI,
33790 + BFD_RELOC_PPC_EMB_RELST_HA,
33791 + BFD_RELOC_PPC_EMB_BIT_FLD,
33792 + BFD_RELOC_PPC_EMB_RELSDA,
33793 + BFD_RELOC_PPC64_HIGHER,
33794 + BFD_RELOC_PPC64_HIGHER_S,
33795 + BFD_RELOC_PPC64_HIGHEST,
33796 + BFD_RELOC_PPC64_HIGHEST_S,
33797 + BFD_RELOC_PPC64_TOC16_LO,
33798 + BFD_RELOC_PPC64_TOC16_HI,
33799 + BFD_RELOC_PPC64_TOC16_HA,
33800 + BFD_RELOC_PPC64_TOC,
33801 + BFD_RELOC_PPC64_PLTGOT16,
33802 + BFD_RELOC_PPC64_PLTGOT16_LO,
33803 + BFD_RELOC_PPC64_PLTGOT16_HI,
33804 + BFD_RELOC_PPC64_PLTGOT16_HA,
33805 + BFD_RELOC_PPC64_ADDR16_DS,
33806 + BFD_RELOC_PPC64_ADDR16_LO_DS,
33807 + BFD_RELOC_PPC64_GOT16_DS,
33808 + BFD_RELOC_PPC64_GOT16_LO_DS,
33809 + BFD_RELOC_PPC64_PLT16_LO_DS,
33810 + BFD_RELOC_PPC64_SECTOFF_DS,
33811 + BFD_RELOC_PPC64_SECTOFF_LO_DS,
33812 + BFD_RELOC_PPC64_TOC16_DS,
33813 + BFD_RELOC_PPC64_TOC16_LO_DS,
33814 + BFD_RELOC_PPC64_PLTGOT16_DS,
33815 + BFD_RELOC_PPC64_PLTGOT16_LO_DS,
33816 +
33817 +/* PowerPC and PowerPC64 thread-local storage relocations. */
33818 + BFD_RELOC_PPC_TLS,
33819 + BFD_RELOC_PPC_DTPMOD,
33820 + BFD_RELOC_PPC_TPREL16,
33821 + BFD_RELOC_PPC_TPREL16_LO,
33822 + BFD_RELOC_PPC_TPREL16_HI,
33823 + BFD_RELOC_PPC_TPREL16_HA,
33824 + BFD_RELOC_PPC_TPREL,
33825 + BFD_RELOC_PPC_DTPREL16,
33826 + BFD_RELOC_PPC_DTPREL16_LO,
33827 + BFD_RELOC_PPC_DTPREL16_HI,
33828 + BFD_RELOC_PPC_DTPREL16_HA,
33829 + BFD_RELOC_PPC_DTPREL,
33830 + BFD_RELOC_PPC_GOT_TLSGD16,
33831 + BFD_RELOC_PPC_GOT_TLSGD16_LO,
33832 + BFD_RELOC_PPC_GOT_TLSGD16_HI,
33833 + BFD_RELOC_PPC_GOT_TLSGD16_HA,
33834 + BFD_RELOC_PPC_GOT_TLSLD16,
33835 + BFD_RELOC_PPC_GOT_TLSLD16_LO,
33836 + BFD_RELOC_PPC_GOT_TLSLD16_HI,
33837 + BFD_RELOC_PPC_GOT_TLSLD16_HA,
33838 + BFD_RELOC_PPC_GOT_TPREL16,
33839 + BFD_RELOC_PPC_GOT_TPREL16_LO,
33840 + BFD_RELOC_PPC_GOT_TPREL16_HI,
33841 + BFD_RELOC_PPC_GOT_TPREL16_HA,
33842 + BFD_RELOC_PPC_GOT_DTPREL16,
33843 + BFD_RELOC_PPC_GOT_DTPREL16_LO,
33844 + BFD_RELOC_PPC_GOT_DTPREL16_HI,
33845 + BFD_RELOC_PPC_GOT_DTPREL16_HA,
33846 + BFD_RELOC_PPC64_TPREL16_DS,
33847 + BFD_RELOC_PPC64_TPREL16_LO_DS,
33848 + BFD_RELOC_PPC64_TPREL16_HIGHER,
33849 + BFD_RELOC_PPC64_TPREL16_HIGHERA,
33850 + BFD_RELOC_PPC64_TPREL16_HIGHEST,
33851 + BFD_RELOC_PPC64_TPREL16_HIGHESTA,
33852 + BFD_RELOC_PPC64_DTPREL16_DS,
33853 + BFD_RELOC_PPC64_DTPREL16_LO_DS,
33854 + BFD_RELOC_PPC64_DTPREL16_HIGHER,
33855 + BFD_RELOC_PPC64_DTPREL16_HIGHERA,
33856 + BFD_RELOC_PPC64_DTPREL16_HIGHEST,
33857 + BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
33858 +
33859 +/* IBM 370/390 relocations */
33860 + BFD_RELOC_I370_D12,
33861 +
33862 +/* The type of reloc used to build a constructor table - at the moment
33863 +probably a 32 bit wide absolute relocation, but the target can choose.
33864 +It generally does map to one of the other relocation types. */
33865 + BFD_RELOC_CTOR,
33866 +
33867 +/* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
33868 +not stored in the instruction. */
33869 + BFD_RELOC_ARM_PCREL_BRANCH,
33870 +
33871 +/* ARM 26 bit pc-relative branch. The lowest bit must be zero and is
33872 +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
33873 +field in the instruction. */
33874 + BFD_RELOC_ARM_PCREL_BLX,
33875 +
33876 +/* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
33877 +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
33878 +field in the instruction. */
33879 + BFD_RELOC_THUMB_PCREL_BLX,
33880 +
33881 +/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */
33882 + BFD_RELOC_ARM_PCREL_CALL,
33883 +
33884 +/* ARM 26-bit pc-relative branch for B or conditional BL instruction. */
33885 + BFD_RELOC_ARM_PCREL_JUMP,
33886 +
33887 +/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
33888 +The lowest bit must be zero and is not stored in the instruction.
33889 +Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
33890 +"nn" one smaller in all cases. Note further that BRANCH23
33891 +corresponds to R_ARM_THM_CALL. */
33892 + BFD_RELOC_THUMB_PCREL_BRANCH7,
33893 + BFD_RELOC_THUMB_PCREL_BRANCH9,
33894 + BFD_RELOC_THUMB_PCREL_BRANCH12,
33895 + BFD_RELOC_THUMB_PCREL_BRANCH20,
33896 + BFD_RELOC_THUMB_PCREL_BRANCH23,
33897 + BFD_RELOC_THUMB_PCREL_BRANCH25,
33898 +
33899 +/* 12-bit immediate offset, used in ARM-format ldr and str instructions. */
33900 + BFD_RELOC_ARM_OFFSET_IMM,
33901 +
33902 +/* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */
33903 + BFD_RELOC_ARM_THUMB_OFFSET,
33904 +
33905 +/* Pc-relative or absolute relocation depending on target. Used for
33906 +entries in .init_array sections. */
33907 + BFD_RELOC_ARM_TARGET1,
33908 +
33909 +/* Read-only segment base relative address. */
33910 + BFD_RELOC_ARM_ROSEGREL32,
33911 +
33912 +/* Data segment base relative address. */
33913 + BFD_RELOC_ARM_SBREL32,
33914 +
33915 +/* This reloc is used for references to RTTI data from exception handling
33916 +tables. The actual definition depends on the target. It may be a
33917 +pc-relative or some form of GOT-indirect relocation. */
33918 + BFD_RELOC_ARM_TARGET2,
33919 +
33920 +/* 31-bit PC relative address. */
33921 + BFD_RELOC_ARM_PREL31,
33922 +
33923 +/* Low and High halfword relocations for MOVW and MOVT instructions. */
33924 + BFD_RELOC_ARM_MOVW,
33925 + BFD_RELOC_ARM_MOVT,
33926 + BFD_RELOC_ARM_MOVW_PCREL,
33927 + BFD_RELOC_ARM_MOVT_PCREL,
33928 + BFD_RELOC_ARM_THUMB_MOVW,
33929 + BFD_RELOC_ARM_THUMB_MOVT,
33930 + BFD_RELOC_ARM_THUMB_MOVW_PCREL,
33931 + BFD_RELOC_ARM_THUMB_MOVT_PCREL,
33932 +
33933 +/* Relocations for setting up GOTs and PLTs for shared libraries. */
33934 + BFD_RELOC_ARM_JUMP_SLOT,
33935 + BFD_RELOC_ARM_GLOB_DAT,
33936 + BFD_RELOC_ARM_GOT32,
33937 + BFD_RELOC_ARM_PLT32,
33938 + BFD_RELOC_ARM_RELATIVE,
33939 + BFD_RELOC_ARM_GOTOFF,
33940 + BFD_RELOC_ARM_GOTPC,
33941 +
33942 +/* ARM thread-local storage relocations. */
33943 + BFD_RELOC_ARM_TLS_GD32,
33944 + BFD_RELOC_ARM_TLS_LDO32,
33945 + BFD_RELOC_ARM_TLS_LDM32,
33946 + BFD_RELOC_ARM_TLS_DTPOFF32,
33947 + BFD_RELOC_ARM_TLS_DTPMOD32,
33948 + BFD_RELOC_ARM_TLS_TPOFF32,
33949 + BFD_RELOC_ARM_TLS_IE32,
33950 + BFD_RELOC_ARM_TLS_LE32,
33951 +
33952 +/* ARM group relocations. */
33953 + BFD_RELOC_ARM_ALU_PC_G0_NC,
33954 + BFD_RELOC_ARM_ALU_PC_G0,
33955 + BFD_RELOC_ARM_ALU_PC_G1_NC,
33956 + BFD_RELOC_ARM_ALU_PC_G1,
33957 + BFD_RELOC_ARM_ALU_PC_G2,
33958 + BFD_RELOC_ARM_LDR_PC_G0,
33959 + BFD_RELOC_ARM_LDR_PC_G1,
33960 + BFD_RELOC_ARM_LDR_PC_G2,
33961 + BFD_RELOC_ARM_LDRS_PC_G0,
33962 + BFD_RELOC_ARM_LDRS_PC_G1,
33963 + BFD_RELOC_ARM_LDRS_PC_G2,
33964 + BFD_RELOC_ARM_LDC_PC_G0,
33965 + BFD_RELOC_ARM_LDC_PC_G1,
33966 + BFD_RELOC_ARM_LDC_PC_G2,
33967 + BFD_RELOC_ARM_ALU_SB_G0_NC,
33968 + BFD_RELOC_ARM_ALU_SB_G0,
33969 + BFD_RELOC_ARM_ALU_SB_G1_NC,
33970 + BFD_RELOC_ARM_ALU_SB_G1,
33971 + BFD_RELOC_ARM_ALU_SB_G2,
33972 + BFD_RELOC_ARM_LDR_SB_G0,
33973 + BFD_RELOC_ARM_LDR_SB_G1,
33974 + BFD_RELOC_ARM_LDR_SB_G2,
33975 + BFD_RELOC_ARM_LDRS_SB_G0,
33976 + BFD_RELOC_ARM_LDRS_SB_G1,
33977 + BFD_RELOC_ARM_LDRS_SB_G2,
33978 + BFD_RELOC_ARM_LDC_SB_G0,
33979 + BFD_RELOC_ARM_LDC_SB_G1,
33980 + BFD_RELOC_ARM_LDC_SB_G2,
33981 +
33982 +/* These relocs are only used within the ARM assembler. They are not
33983 +(at present) written to any object files. */
33984 + BFD_RELOC_ARM_IMMEDIATE,
33985 + BFD_RELOC_ARM_ADRL_IMMEDIATE,
33986 + BFD_RELOC_ARM_T32_IMMEDIATE,
33987 + BFD_RELOC_ARM_T32_ADD_IMM,
33988 + BFD_RELOC_ARM_T32_IMM12,
33989 + BFD_RELOC_ARM_T32_ADD_PC12,
33990 + BFD_RELOC_ARM_SHIFT_IMM,
33991 + BFD_RELOC_ARM_SMC,
33992 + BFD_RELOC_ARM_SWI,
33993 + BFD_RELOC_ARM_MULTI,
33994 + BFD_RELOC_ARM_CP_OFF_IMM,
33995 + BFD_RELOC_ARM_CP_OFF_IMM_S2,
33996 + BFD_RELOC_ARM_T32_CP_OFF_IMM,
33997 + BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
33998 + BFD_RELOC_ARM_ADR_IMM,
33999 + BFD_RELOC_ARM_LDR_IMM,
34000 + BFD_RELOC_ARM_LITERAL,
34001 + BFD_RELOC_ARM_IN_POOL,
34002 + BFD_RELOC_ARM_OFFSET_IMM8,
34003 + BFD_RELOC_ARM_T32_OFFSET_U8,
34004 + BFD_RELOC_ARM_T32_OFFSET_IMM,
34005 + BFD_RELOC_ARM_HWLITERAL,
34006 + BFD_RELOC_ARM_THUMB_ADD,
34007 + BFD_RELOC_ARM_THUMB_IMM,
34008 + BFD_RELOC_ARM_THUMB_SHIFT,
34009 +
34010 +/* Renesas / SuperH SH relocs. Not all of these appear in object files. */
34011 + BFD_RELOC_SH_PCDISP8BY2,
34012 + BFD_RELOC_SH_PCDISP12BY2,
34013 + BFD_RELOC_SH_IMM3,
34014 + BFD_RELOC_SH_IMM3U,
34015 + BFD_RELOC_SH_DISP12,
34016 + BFD_RELOC_SH_DISP12BY2,
34017 + BFD_RELOC_SH_DISP12BY4,
34018 + BFD_RELOC_SH_DISP12BY8,
34019 + BFD_RELOC_SH_DISP20,
34020 + BFD_RELOC_SH_DISP20BY8,
34021 + BFD_RELOC_SH_IMM4,
34022 + BFD_RELOC_SH_IMM4BY2,
34023 + BFD_RELOC_SH_IMM4BY4,
34024 + BFD_RELOC_SH_IMM8,
34025 + BFD_RELOC_SH_IMM8BY2,
34026 + BFD_RELOC_SH_IMM8BY4,
34027 + BFD_RELOC_SH_PCRELIMM8BY2,
34028 + BFD_RELOC_SH_PCRELIMM8BY4,
34029 + BFD_RELOC_SH_SWITCH16,
34030 + BFD_RELOC_SH_SWITCH32,
34031 + BFD_RELOC_SH_USES,
34032 + BFD_RELOC_SH_COUNT,
34033 + BFD_RELOC_SH_ALIGN,
34034 + BFD_RELOC_SH_CODE,
34035 + BFD_RELOC_SH_DATA,
34036 + BFD_RELOC_SH_LABEL,
34037 + BFD_RELOC_SH_LOOP_START,
34038 + BFD_RELOC_SH_LOOP_END,
34039 + BFD_RELOC_SH_COPY,
34040 + BFD_RELOC_SH_GLOB_DAT,
34041 + BFD_RELOC_SH_JMP_SLOT,
34042 + BFD_RELOC_SH_RELATIVE,
34043 + BFD_RELOC_SH_GOTPC,
34044 + BFD_RELOC_SH_GOT_LOW16,
34045 + BFD_RELOC_SH_GOT_MEDLOW16,
34046 + BFD_RELOC_SH_GOT_MEDHI16,
34047 + BFD_RELOC_SH_GOT_HI16,
34048 + BFD_RELOC_SH_GOTPLT_LOW16,
34049 + BFD_RELOC_SH_GOTPLT_MEDLOW16,
34050 + BFD_RELOC_SH_GOTPLT_MEDHI16,
34051 + BFD_RELOC_SH_GOTPLT_HI16,
34052 + BFD_RELOC_SH_PLT_LOW16,
34053 + BFD_RELOC_SH_PLT_MEDLOW16,
34054 + BFD_RELOC_SH_PLT_MEDHI16,
34055 + BFD_RELOC_SH_PLT_HI16,
34056 + BFD_RELOC_SH_GOTOFF_LOW16,
34057 + BFD_RELOC_SH_GOTOFF_MEDLOW16,
34058 + BFD_RELOC_SH_GOTOFF_MEDHI16,
34059 + BFD_RELOC_SH_GOTOFF_HI16,
34060 + BFD_RELOC_SH_GOTPC_LOW16,
34061 + BFD_RELOC_SH_GOTPC_MEDLOW16,
34062 + BFD_RELOC_SH_GOTPC_MEDHI16,
34063 + BFD_RELOC_SH_GOTPC_HI16,
34064 + BFD_RELOC_SH_COPY64,
34065 + BFD_RELOC_SH_GLOB_DAT64,
34066 + BFD_RELOC_SH_JMP_SLOT64,
34067 + BFD_RELOC_SH_RELATIVE64,
34068 + BFD_RELOC_SH_GOT10BY4,
34069 + BFD_RELOC_SH_GOT10BY8,
34070 + BFD_RELOC_SH_GOTPLT10BY4,
34071 + BFD_RELOC_SH_GOTPLT10BY8,
34072 + BFD_RELOC_SH_GOTPLT32,
34073 + BFD_RELOC_SH_SHMEDIA_CODE,
34074 + BFD_RELOC_SH_IMMU5,
34075 + BFD_RELOC_SH_IMMS6,
34076 + BFD_RELOC_SH_IMMS6BY32,
34077 + BFD_RELOC_SH_IMMU6,
34078 + BFD_RELOC_SH_IMMS10,
34079 + BFD_RELOC_SH_IMMS10BY2,
34080 + BFD_RELOC_SH_IMMS10BY4,
34081 + BFD_RELOC_SH_IMMS10BY8,
34082 + BFD_RELOC_SH_IMMS16,
34083 + BFD_RELOC_SH_IMMU16,
34084 + BFD_RELOC_SH_IMM_LOW16,
34085 + BFD_RELOC_SH_IMM_LOW16_PCREL,
34086 + BFD_RELOC_SH_IMM_MEDLOW16,
34087 + BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
34088 + BFD_RELOC_SH_IMM_MEDHI16,
34089 + BFD_RELOC_SH_IMM_MEDHI16_PCREL,
34090 + BFD_RELOC_SH_IMM_HI16,
34091 + BFD_RELOC_SH_IMM_HI16_PCREL,
34092 + BFD_RELOC_SH_PT_16,
34093 + BFD_RELOC_SH_TLS_GD_32,
34094 + BFD_RELOC_SH_TLS_LD_32,
34095 + BFD_RELOC_SH_TLS_LDO_32,
34096 + BFD_RELOC_SH_TLS_IE_32,
34097 + BFD_RELOC_SH_TLS_LE_32,
34098 + BFD_RELOC_SH_TLS_DTPMOD32,
34099 + BFD_RELOC_SH_TLS_DTPOFF32,
34100 + BFD_RELOC_SH_TLS_TPOFF32,
34101 +
34102 +/* ARC Cores relocs.
34103 +ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
34104 +not stored in the instruction. The high 20 bits are installed in bits 26
34105 +through 7 of the instruction. */
34106 + BFD_RELOC_ARC_B22_PCREL,
34107 +
34108 +/* ARC 26 bit absolute branch. The lowest two bits must be zero and are not
34109 +stored in the instruction. The high 24 bits are installed in bits 23
34110 +through 0. */
34111 + BFD_RELOC_ARC_B26,
34112 +
34113 +/* ADI Blackfin 16 bit immediate absolute reloc. */
34114 + BFD_RELOC_BFIN_16_IMM,
34115 +
34116 +/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */
34117 + BFD_RELOC_BFIN_16_HIGH,
34118 +
34119 +/* ADI Blackfin 'a' part of LSETUP. */
34120 + BFD_RELOC_BFIN_4_PCREL,
34121 +
34122 +/* ADI Blackfin. */
34123 + BFD_RELOC_BFIN_5_PCREL,
34124 +
34125 +/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */
34126 + BFD_RELOC_BFIN_16_LOW,
34127 +
34128 +/* ADI Blackfin. */
34129 + BFD_RELOC_BFIN_10_PCREL,
34130 +
34131 +/* ADI Blackfin 'b' part of LSETUP. */
34132 + BFD_RELOC_BFIN_11_PCREL,
34133 +
34134 +/* ADI Blackfin. */
34135 + BFD_RELOC_BFIN_12_PCREL_JUMP,
34136 +
34137 +/* ADI Blackfin Short jump, pcrel. */
34138 + BFD_RELOC_BFIN_12_PCREL_JUMP_S,
34139 +
34140 +/* ADI Blackfin Call.x not implemented. */
34141 + BFD_RELOC_BFIN_24_PCREL_CALL_X,
34142 +
34143 +/* ADI Blackfin Long Jump pcrel. */
34144 + BFD_RELOC_BFIN_24_PCREL_JUMP_L,
34145 +
34146 +/* ADI Blackfin FD-PIC relocations. */
34147 + BFD_RELOC_BFIN_GOT17M4,
34148 + BFD_RELOC_BFIN_GOTHI,
34149 + BFD_RELOC_BFIN_GOTLO,
34150 + BFD_RELOC_BFIN_FUNCDESC,
34151 + BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
34152 + BFD_RELOC_BFIN_FUNCDESC_GOTHI,
34153 + BFD_RELOC_BFIN_FUNCDESC_GOTLO,
34154 + BFD_RELOC_BFIN_FUNCDESC_VALUE,
34155 + BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
34156 + BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
34157 + BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
34158 + BFD_RELOC_BFIN_GOTOFF17M4,
34159 + BFD_RELOC_BFIN_GOTOFFHI,
34160 + BFD_RELOC_BFIN_GOTOFFLO,
34161 +
34162 +/* ADI Blackfin GOT relocation. */
34163 + BFD_RELOC_BFIN_GOT,
34164 +
34165 +/* ADI Blackfin PLTPC relocation. */
34166 + BFD_RELOC_BFIN_PLTPC,
34167 +
34168 +/* ADI Blackfin arithmetic relocation. */
34169 + BFD_ARELOC_BFIN_PUSH,
34170 +
34171 +/* ADI Blackfin arithmetic relocation. */
34172 + BFD_ARELOC_BFIN_CONST,
34173 +
34174 +/* ADI Blackfin arithmetic relocation. */
34175 + BFD_ARELOC_BFIN_ADD,
34176 +
34177 +/* ADI Blackfin arithmetic relocation. */
34178 + BFD_ARELOC_BFIN_SUB,
34179 +
34180 +/* ADI Blackfin arithmetic relocation. */
34181 + BFD_ARELOC_BFIN_MULT,
34182 +
34183 +/* ADI Blackfin arithmetic relocation. */
34184 + BFD_ARELOC_BFIN_DIV,
34185 +
34186 +/* ADI Blackfin arithmetic relocation. */
34187 + BFD_ARELOC_BFIN_MOD,
34188 +
34189 +/* ADI Blackfin arithmetic relocation. */
34190 + BFD_ARELOC_BFIN_LSHIFT,
34191 +
34192 +/* ADI Blackfin arithmetic relocation. */
34193 + BFD_ARELOC_BFIN_RSHIFT,
34194 +
34195 +/* ADI Blackfin arithmetic relocation. */
34196 + BFD_ARELOC_BFIN_AND,
34197 +
34198 +/* ADI Blackfin arithmetic relocation. */
34199 + BFD_ARELOC_BFIN_OR,
34200 +
34201 +/* ADI Blackfin arithmetic relocation. */
34202 + BFD_ARELOC_BFIN_XOR,
34203 +
34204 +/* ADI Blackfin arithmetic relocation. */
34205 + BFD_ARELOC_BFIN_LAND,
34206 +
34207 +/* ADI Blackfin arithmetic relocation. */
34208 + BFD_ARELOC_BFIN_LOR,
34209 +
34210 +/* ADI Blackfin arithmetic relocation. */
34211 + BFD_ARELOC_BFIN_LEN,
34212 +
34213 +/* ADI Blackfin arithmetic relocation. */
34214 + BFD_ARELOC_BFIN_NEG,
34215 +
34216 +/* ADI Blackfin arithmetic relocation. */
34217 + BFD_ARELOC_BFIN_COMP,
34218 +
34219 +/* ADI Blackfin arithmetic relocation. */
34220 + BFD_ARELOC_BFIN_PAGE,
34221 +
34222 +/* ADI Blackfin arithmetic relocation. */
34223 + BFD_ARELOC_BFIN_HWPAGE,
34224 +
34225 +/* ADI Blackfin arithmetic relocation. */
34226 + BFD_ARELOC_BFIN_ADDR,
34227 +
34228 +/* Mitsubishi D10V relocs.
34229 +This is a 10-bit reloc with the right 2 bits
34230 +assumed to be 0. */
34231 + BFD_RELOC_D10V_10_PCREL_R,
34232 +
34233 +/* Mitsubishi D10V relocs.
34234 +This is a 10-bit reloc with the right 2 bits
34235 +assumed to be 0. This is the same as the previous reloc
34236 +except it is in the left container, i.e.,
34237 +shifted left 15 bits. */
34238 + BFD_RELOC_D10V_10_PCREL_L,
34239 +
34240 +/* This is an 18-bit reloc with the right 2 bits
34241 +assumed to be 0. */
34242 + BFD_RELOC_D10V_18,
34243 +
34244 +/* This is an 18-bit reloc with the right 2 bits
34245 +assumed to be 0. */
34246 + BFD_RELOC_D10V_18_PCREL,
34247 +
34248 +/* Mitsubishi D30V relocs.
34249 +This is a 6-bit absolute reloc. */
34250 + BFD_RELOC_D30V_6,
34251 +
34252 +/* This is a 6-bit pc-relative reloc with
34253 +the right 3 bits assumed to be 0. */
34254 + BFD_RELOC_D30V_9_PCREL,
34255 +
34256 +/* This is a 6-bit pc-relative reloc with
34257 +the right 3 bits assumed to be 0. Same
34258 +as the previous reloc but on the right side
34259 +of the container. */
34260 + BFD_RELOC_D30V_9_PCREL_R,
34261 +
34262 +/* This is a 12-bit absolute reloc with the
34263 +right 3 bitsassumed to be 0. */
34264 + BFD_RELOC_D30V_15,
34265 +
34266 +/* This is a 12-bit pc-relative reloc with
34267 +the right 3 bits assumed to be 0. */
34268 + BFD_RELOC_D30V_15_PCREL,
34269 +
34270 +/* This is a 12-bit pc-relative reloc with
34271 +the right 3 bits assumed to be 0. Same
34272 +as the previous reloc but on the right side
34273 +of the container. */
34274 + BFD_RELOC_D30V_15_PCREL_R,
34275 +
34276 +/* This is an 18-bit absolute reloc with
34277 +the right 3 bits assumed to be 0. */
34278 + BFD_RELOC_D30V_21,
34279 +
34280 +/* This is an 18-bit pc-relative reloc with
34281 +the right 3 bits assumed to be 0. */
34282 + BFD_RELOC_D30V_21_PCREL,
34283 +
34284 +/* This is an 18-bit pc-relative reloc with
34285 +the right 3 bits assumed to be 0. Same
34286 +as the previous reloc but on the right side
34287 +of the container. */
34288 + BFD_RELOC_D30V_21_PCREL_R,
34289 +
34290 +/* This is a 32-bit absolute reloc. */
34291 + BFD_RELOC_D30V_32,
34292 +
34293 +/* This is a 32-bit pc-relative reloc. */
34294 + BFD_RELOC_D30V_32_PCREL,
34295 +
34296 +/* DLX relocs */
34297 + BFD_RELOC_DLX_HI16_S,
34298 +
34299 +/* DLX relocs */
34300 + BFD_RELOC_DLX_LO16,
34301 +
34302 +/* DLX relocs */
34303 + BFD_RELOC_DLX_JMP26,
34304 +
34305 +/* Renesas M16C/M32C Relocations. */
34306 + BFD_RELOC_M32C_HI8,
34307 + BFD_RELOC_M32C_RL_JUMP,
34308 + BFD_RELOC_M32C_RL_1ADDR,
34309 + BFD_RELOC_M32C_RL_2ADDR,
34310 +
34311 +/* Renesas M32R (formerly Mitsubishi M32R) relocs.
34312 +This is a 24 bit absolute address. */
34313 + BFD_RELOC_M32R_24,
34314 +
34315 +/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */
34316 + BFD_RELOC_M32R_10_PCREL,
34317 +
34318 +/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */
34319 + BFD_RELOC_M32R_18_PCREL,
34320 +
34321 +/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */
34322 + BFD_RELOC_M32R_26_PCREL,
34323 +
34324 +/* This is a 16-bit reloc containing the high 16 bits of an address
34325 +used when the lower 16 bits are treated as unsigned. */
34326 + BFD_RELOC_M32R_HI16_ULO,
34327 +
34328 +/* This is a 16-bit reloc containing the high 16 bits of an address
34329 +used when the lower 16 bits are treated as signed. */
34330 + BFD_RELOC_M32R_HI16_SLO,
34331 +
34332 +/* This is a 16-bit reloc containing the lower 16 bits of an address. */
34333 + BFD_RELOC_M32R_LO16,
34334 +
34335 +/* This is a 16-bit reloc containing the small data area offset for use in
34336 +add3, load, and store instructions. */
34337 + BFD_RELOC_M32R_SDA16,
34338 +
34339 +/* For PIC. */
34340 + BFD_RELOC_M32R_GOT24,
34341 + BFD_RELOC_M32R_26_PLTREL,
34342 + BFD_RELOC_M32R_COPY,
34343 + BFD_RELOC_M32R_GLOB_DAT,
34344 + BFD_RELOC_M32R_JMP_SLOT,
34345 + BFD_RELOC_M32R_RELATIVE,
34346 + BFD_RELOC_M32R_GOTOFF,
34347 + BFD_RELOC_M32R_GOTOFF_HI_ULO,
34348 + BFD_RELOC_M32R_GOTOFF_HI_SLO,
34349 + BFD_RELOC_M32R_GOTOFF_LO,
34350 + BFD_RELOC_M32R_GOTPC24,
34351 + BFD_RELOC_M32R_GOT16_HI_ULO,
34352 + BFD_RELOC_M32R_GOT16_HI_SLO,
34353 + BFD_RELOC_M32R_GOT16_LO,
34354 + BFD_RELOC_M32R_GOTPC_HI_ULO,
34355 + BFD_RELOC_M32R_GOTPC_HI_SLO,
34356 + BFD_RELOC_M32R_GOTPC_LO,
34357 +
34358 +/* This is a 9-bit reloc */
34359 + BFD_RELOC_V850_9_PCREL,
34360 +
34361 +/* This is a 22-bit reloc */
34362 + BFD_RELOC_V850_22_PCREL,
34363 +
34364 +/* This is a 16 bit offset from the short data area pointer. */
34365 + BFD_RELOC_V850_SDA_16_16_OFFSET,
34366 +
34367 +/* This is a 16 bit offset (of which only 15 bits are used) from the
34368 +short data area pointer. */
34369 + BFD_RELOC_V850_SDA_15_16_OFFSET,
34370 +
34371 +/* This is a 16 bit offset from the zero data area pointer. */
34372 + BFD_RELOC_V850_ZDA_16_16_OFFSET,
34373 +
34374 +/* This is a 16 bit offset (of which only 15 bits are used) from the
34375 +zero data area pointer. */
34376 + BFD_RELOC_V850_ZDA_15_16_OFFSET,
34377 +
34378 +/* This is an 8 bit offset (of which only 6 bits are used) from the
34379 +tiny data area pointer. */
34380 + BFD_RELOC_V850_TDA_6_8_OFFSET,
34381 +
34382 +/* This is an 8bit offset (of which only 7 bits are used) from the tiny
34383 +data area pointer. */
34384 + BFD_RELOC_V850_TDA_7_8_OFFSET,
34385 +
34386 +/* This is a 7 bit offset from the tiny data area pointer. */
34387 + BFD_RELOC_V850_TDA_7_7_OFFSET,
34388 +
34389 +/* This is a 16 bit offset from the tiny data area pointer. */
34390 + BFD_RELOC_V850_TDA_16_16_OFFSET,
34391 +
34392 +/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
34393 +data area pointer. */
34394 + BFD_RELOC_V850_TDA_4_5_OFFSET,
34395 +
34396 +/* This is a 4 bit offset from the tiny data area pointer. */
34397 + BFD_RELOC_V850_TDA_4_4_OFFSET,
34398 +
34399 +/* This is a 16 bit offset from the short data area pointer, with the
34400 +bits placed non-contiguously in the instruction. */
34401 + BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
34402 +
34403 +/* This is a 16 bit offset from the zero data area pointer, with the
34404 +bits placed non-contiguously in the instruction. */
34405 + BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
34406 +
34407 +/* This is a 6 bit offset from the call table base pointer. */
34408 + BFD_RELOC_V850_CALLT_6_7_OFFSET,
34409 +
34410 +/* This is a 16 bit offset from the call table base pointer. */
34411 + BFD_RELOC_V850_CALLT_16_16_OFFSET,
34412 +
34413 +/* Used for relaxing indirect function calls. */
34414 + BFD_RELOC_V850_LONGCALL,
34415 +
34416 +/* Used for relaxing indirect jumps. */
34417 + BFD_RELOC_V850_LONGJUMP,
34418 +
34419 +/* Used to maintain alignment whilst relaxing. */
34420 + BFD_RELOC_V850_ALIGN,
34421 +
34422 +/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
34423 +instructions. */
34424 + BFD_RELOC_V850_LO16_SPLIT_OFFSET,
34425 +
34426 +/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
34427 +instruction. */
34428 + BFD_RELOC_MN10300_32_PCREL,
34429 +
34430 +/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
34431 +instruction. */
34432 + BFD_RELOC_MN10300_16_PCREL,
34433 +
34434 +/* This is a 8bit DP reloc for the tms320c30, where the most
34435 +significant 8 bits of a 24 bit word are placed into the least
34436 +significant 8 bits of the opcode. */
34437 + BFD_RELOC_TIC30_LDP,
34438 +
34439 +/* This is a 7bit reloc for the tms320c54x, where the least
34440 +significant 7 bits of a 16 bit word are placed into the least
34441 +significant 7 bits of the opcode. */
34442 + BFD_RELOC_TIC54X_PARTLS7,
34443 +
34444 +/* This is a 9bit DP reloc for the tms320c54x, where the most
34445 +significant 9 bits of a 16 bit word are placed into the least
34446 +significant 9 bits of the opcode. */
34447 + BFD_RELOC_TIC54X_PARTMS9,
34448 +
34449 +/* This is an extended address 23-bit reloc for the tms320c54x. */
34450 + BFD_RELOC_TIC54X_23,
34451 +
34452 +/* This is a 16-bit reloc for the tms320c54x, where the least
34453 +significant 16 bits of a 23-bit extended address are placed into
34454 +the opcode. */
34455 + BFD_RELOC_TIC54X_16_OF_23,
34456 +
34457 +/* This is a reloc for the tms320c54x, where the most
34458 +significant 7 bits of a 23-bit extended address are placed into
34459 +the opcode. */
34460 + BFD_RELOC_TIC54X_MS7_OF_23,
34461 +
34462 +/* This is a 48 bit reloc for the FR30 that stores 32 bits. */
34463 + BFD_RELOC_FR30_48,
34464 +
34465 +/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
34466 +two sections. */
34467 + BFD_RELOC_FR30_20,
34468 +
34469 +/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
34470 +4 bits. */
34471 + BFD_RELOC_FR30_6_IN_4,
34472 +
34473 +/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
34474 +into 8 bits. */
34475 + BFD_RELOC_FR30_8_IN_8,
34476 +
34477 +/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
34478 +into 8 bits. */
34479 + BFD_RELOC_FR30_9_IN_8,
34480 +
34481 +/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
34482 +into 8 bits. */
34483 + BFD_RELOC_FR30_10_IN_8,
34484 +
34485 +/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
34486 +short offset into 8 bits. */
34487 + BFD_RELOC_FR30_9_PCREL,
34488 +
34489 +/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
34490 +short offset into 11 bits. */
34491 + BFD_RELOC_FR30_12_PCREL,
34492 +
34493 +/* Motorola Mcore relocations. */
34494 + BFD_RELOC_MCORE_PCREL_IMM8BY4,
34495 + BFD_RELOC_MCORE_PCREL_IMM11BY2,
34496 + BFD_RELOC_MCORE_PCREL_IMM4BY2,
34497 + BFD_RELOC_MCORE_PCREL_32,
34498 + BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
34499 + BFD_RELOC_MCORE_RVA,
34500 +
34501 +/* Toshiba Media Processor Relocations. */
34502 + BFD_RELOC_MEP_8,
34503 + BFD_RELOC_MEP_16,
34504 + BFD_RELOC_MEP_32,
34505 + BFD_RELOC_MEP_PCREL8A2,
34506 + BFD_RELOC_MEP_PCREL12A2,
34507 + BFD_RELOC_MEP_PCREL17A2,
34508 + BFD_RELOC_MEP_PCREL24A2,
34509 + BFD_RELOC_MEP_PCABS24A2,
34510 + BFD_RELOC_MEP_LOW16,
34511 + BFD_RELOC_MEP_HI16U,
34512 + BFD_RELOC_MEP_HI16S,
34513 + BFD_RELOC_MEP_GPREL,
34514 + BFD_RELOC_MEP_TPREL,
34515 + BFD_RELOC_MEP_TPREL7,
34516 + BFD_RELOC_MEP_TPREL7A2,
34517 + BFD_RELOC_MEP_TPREL7A4,
34518 + BFD_RELOC_MEP_UIMM24,
34519 + BFD_RELOC_MEP_ADDR24A4,
34520 + BFD_RELOC_MEP_GNU_VTINHERIT,
34521 + BFD_RELOC_MEP_GNU_VTENTRY,
34522 +
34523 +
34524 +/* These are relocations for the GETA instruction. */
34525 + BFD_RELOC_MMIX_GETA,
34526 + BFD_RELOC_MMIX_GETA_1,
34527 + BFD_RELOC_MMIX_GETA_2,
34528 + BFD_RELOC_MMIX_GETA_3,
34529 +
34530 +/* These are relocations for a conditional branch instruction. */
34531 + BFD_RELOC_MMIX_CBRANCH,
34532 + BFD_RELOC_MMIX_CBRANCH_J,
34533 + BFD_RELOC_MMIX_CBRANCH_1,
34534 + BFD_RELOC_MMIX_CBRANCH_2,
34535 + BFD_RELOC_MMIX_CBRANCH_3,
34536 +
34537 +/* These are relocations for the PUSHJ instruction. */
34538 + BFD_RELOC_MMIX_PUSHJ,
34539 + BFD_RELOC_MMIX_PUSHJ_1,
34540 + BFD_RELOC_MMIX_PUSHJ_2,
34541 + BFD_RELOC_MMIX_PUSHJ_3,
34542 + BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
34543 +
34544 +/* These are relocations for the JMP instruction. */
34545 + BFD_RELOC_MMIX_JMP,
34546 + BFD_RELOC_MMIX_JMP_1,
34547 + BFD_RELOC_MMIX_JMP_2,
34548 + BFD_RELOC_MMIX_JMP_3,
34549 +
34550 +/* This is a relocation for a relative address as in a GETA instruction or
34551 +a branch. */
34552 + BFD_RELOC_MMIX_ADDR19,
34553 +
34554 +/* This is a relocation for a relative address as in a JMP instruction. */
34555 + BFD_RELOC_MMIX_ADDR27,
34556 +
34557 +/* This is a relocation for an instruction field that may be a general
34558 +register or a value 0..255. */
34559 + BFD_RELOC_MMIX_REG_OR_BYTE,
34560 +
34561 +/* This is a relocation for an instruction field that may be a general
34562 +register. */
34563 + BFD_RELOC_MMIX_REG,
34564 +
34565 +/* This is a relocation for two instruction fields holding a register and
34566 +an offset, the equivalent of the relocation. */
34567 + BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
34568 +
34569 +/* This relocation is an assertion that the expression is not allocated as
34570 +a global register. It does not modify contents. */
34571 + BFD_RELOC_MMIX_LOCAL,
34572 +
34573 +/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
34574 +short offset into 7 bits. */
34575 + BFD_RELOC_AVR_7_PCREL,
34576 +
34577 +/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
34578 +short offset into 12 bits. */
34579 + BFD_RELOC_AVR_13_PCREL,
34580 +
34581 +/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
34582 +program memory address) into 16 bits. */
34583 + BFD_RELOC_AVR_16_PM,
34584 +
34585 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
34586 +data memory address) into 8 bit immediate value of LDI insn. */
34587 + BFD_RELOC_AVR_LO8_LDI,
34588 +
34589 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
34590 +of data memory address) into 8 bit immediate value of LDI insn. */
34591 + BFD_RELOC_AVR_HI8_LDI,
34592 +
34593 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
34594 +of program memory address) into 8 bit immediate value of LDI insn. */
34595 + BFD_RELOC_AVR_HH8_LDI,
34596 +
34597 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
34598 +of 32 bit value) into 8 bit immediate value of LDI insn. */
34599 + BFD_RELOC_AVR_MS8_LDI,
34600 +
34601 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
34602 +(usually data memory address) into 8 bit immediate value of SUBI insn. */
34603 + BFD_RELOC_AVR_LO8_LDI_NEG,
34604 +
34605 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
34606 +(high 8 bit of data memory address) into 8 bit immediate value of
34607 +SUBI insn. */
34608 + BFD_RELOC_AVR_HI8_LDI_NEG,
34609 +
34610 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
34611 +(most high 8 bit of program memory address) into 8 bit immediate value
34612 +of LDI or SUBI insn. */
34613 + BFD_RELOC_AVR_HH8_LDI_NEG,
34614 +
34615 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
34616 +of 32 bit value) into 8 bit immediate value of LDI insn. */
34617 + BFD_RELOC_AVR_MS8_LDI_NEG,
34618 +
34619 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
34620 +command address) into 8 bit immediate value of LDI insn. */
34621 + BFD_RELOC_AVR_LO8_LDI_PM,
34622 +
34623 +/* This is a 16 bit reloc for the AVR that stores 8 bit value
34624 +(command address) into 8 bit immediate value of LDI insn. If the address
34625 +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
34626 +in the lower 128k. */
34627 + BFD_RELOC_AVR_LO8_LDI_GS,
34628 +
34629 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
34630 +of command address) into 8 bit immediate value of LDI insn. */
34631 + BFD_RELOC_AVR_HI8_LDI_PM,
34632 +
34633 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
34634 +of command address) into 8 bit immediate value of LDI insn. If the address
34635 +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
34636 +below 128k. */
34637 + BFD_RELOC_AVR_HI8_LDI_GS,
34638 +
34639 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
34640 +of command address) into 8 bit immediate value of LDI insn. */
34641 + BFD_RELOC_AVR_HH8_LDI_PM,
34642 +
34643 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
34644 +(usually command address) into 8 bit immediate value of SUBI insn. */
34645 + BFD_RELOC_AVR_LO8_LDI_PM_NEG,
34646 +
34647 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
34648 +(high 8 bit of 16 bit command address) into 8 bit immediate value
34649 +of SUBI insn. */
34650 + BFD_RELOC_AVR_HI8_LDI_PM_NEG,
34651 +
34652 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
34653 +(high 6 bit of 22 bit command address) into 8 bit immediate
34654 +value of SUBI insn. */
34655 + BFD_RELOC_AVR_HH8_LDI_PM_NEG,
34656 +
34657 +/* This is a 32 bit reloc for the AVR that stores 23 bit value
34658 +into 22 bits. */
34659 + BFD_RELOC_AVR_CALL,
34660 +
34661 +/* This is a 16 bit reloc for the AVR that stores all needed bits
34662 +for absolute addressing with ldi with overflow check to linktime */
34663 + BFD_RELOC_AVR_LDI,
34664 +
34665 +/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
34666 +instructions */
34667 + BFD_RELOC_AVR_6,
34668 +
34669 +/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
34670 +instructions */
34671 + BFD_RELOC_AVR_6_ADIW,
34672 +
34673 +/* Direct 12 bit. */
34674 + BFD_RELOC_390_12,
34675 +
34676 +/* 12 bit GOT offset. */
34677 + BFD_RELOC_390_GOT12,
34678 +
34679 +/* 32 bit PC relative PLT address. */
34680 + BFD_RELOC_390_PLT32,
34681 +
34682 +/* Copy symbol at runtime. */
34683 + BFD_RELOC_390_COPY,
34684 +
34685 +/* Create GOT entry. */
34686 + BFD_RELOC_390_GLOB_DAT,
34687 +
34688 +/* Create PLT entry. */
34689 + BFD_RELOC_390_JMP_SLOT,
34690 +
34691 +/* Adjust by program base. */
34692 + BFD_RELOC_390_RELATIVE,
34693 +
34694 +/* 32 bit PC relative offset to GOT. */
34695 + BFD_RELOC_390_GOTPC,
34696 +
34697 +/* 16 bit GOT offset. */
34698 + BFD_RELOC_390_GOT16,
34699 +
34700 +/* PC relative 16 bit shifted by 1. */
34701 + BFD_RELOC_390_PC16DBL,
34702 +
34703 +/* 16 bit PC rel. PLT shifted by 1. */
34704 + BFD_RELOC_390_PLT16DBL,
34705 +
34706 +/* PC relative 32 bit shifted by 1. */
34707 + BFD_RELOC_390_PC32DBL,
34708 +
34709 +/* 32 bit PC rel. PLT shifted by 1. */
34710 + BFD_RELOC_390_PLT32DBL,
34711 +
34712 +/* 32 bit PC rel. GOT shifted by 1. */
34713 + BFD_RELOC_390_GOTPCDBL,
34714 +
34715 +/* 64 bit GOT offset. */
34716 + BFD_RELOC_390_GOT64,
34717 +
34718 +/* 64 bit PC relative PLT address. */
34719 + BFD_RELOC_390_PLT64,
34720 +
34721 +/* 32 bit rel. offset to GOT entry. */
34722 + BFD_RELOC_390_GOTENT,
34723 +
34724 +/* 64 bit offset to GOT. */
34725 + BFD_RELOC_390_GOTOFF64,
34726 +
34727 +/* 12-bit offset to symbol-entry within GOT, with PLT handling. */
34728 + BFD_RELOC_390_GOTPLT12,
34729 +
34730 +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
34731 + BFD_RELOC_390_GOTPLT16,
34732 +
34733 +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
34734 + BFD_RELOC_390_GOTPLT32,
34735 +
34736 +/* 64-bit offset to symbol-entry within GOT, with PLT handling. */
34737 + BFD_RELOC_390_GOTPLT64,
34738 +
34739 +/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */
34740 + BFD_RELOC_390_GOTPLTENT,
34741 +
34742 +/* 16-bit rel. offset from the GOT to a PLT entry. */
34743 + BFD_RELOC_390_PLTOFF16,
34744 +
34745 +/* 32-bit rel. offset from the GOT to a PLT entry. */
34746 + BFD_RELOC_390_PLTOFF32,
34747 +
34748 +/* 64-bit rel. offset from the GOT to a PLT entry. */
34749 + BFD_RELOC_390_PLTOFF64,
34750 +
34751 +/* s390 tls relocations. */
34752 + BFD_RELOC_390_TLS_LOAD,
34753 + BFD_RELOC_390_TLS_GDCALL,
34754 + BFD_RELOC_390_TLS_LDCALL,
34755 + BFD_RELOC_390_TLS_GD32,
34756 + BFD_RELOC_390_TLS_GD64,
34757 + BFD_RELOC_390_TLS_GOTIE12,
34758 + BFD_RELOC_390_TLS_GOTIE32,
34759 + BFD_RELOC_390_TLS_GOTIE64,
34760 + BFD_RELOC_390_TLS_LDM32,
34761 + BFD_RELOC_390_TLS_LDM64,
34762 + BFD_RELOC_390_TLS_IE32,
34763 + BFD_RELOC_390_TLS_IE64,
34764 + BFD_RELOC_390_TLS_IEENT,
34765 + BFD_RELOC_390_TLS_LE32,
34766 + BFD_RELOC_390_TLS_LE64,
34767 + BFD_RELOC_390_TLS_LDO32,
34768 + BFD_RELOC_390_TLS_LDO64,
34769 + BFD_RELOC_390_TLS_DTPMOD,
34770 + BFD_RELOC_390_TLS_DTPOFF,
34771 + BFD_RELOC_390_TLS_TPOFF,
34772 +
34773 +/* Long displacement extension. */
34774 + BFD_RELOC_390_20,
34775 + BFD_RELOC_390_GOT20,
34776 + BFD_RELOC_390_GOTPLT20,
34777 + BFD_RELOC_390_TLS_GOTIE20,
34778 +
34779 +/* Score relocations */
34780 + BFD_RELOC_SCORE_DUMMY1,
34781 +
34782 +/* Low 16 bit for load/store */
34783 + BFD_RELOC_SCORE_GPREL15,
34784 +
34785 +/* This is a 24-bit reloc with the right 1 bit assumed to be 0 */
34786 + BFD_RELOC_SCORE_DUMMY2,
34787 + BFD_RELOC_SCORE_JMP,
34788 +
34789 +/* This is a 19-bit reloc with the right 1 bit assumed to be 0 */
34790 + BFD_RELOC_SCORE_BRANCH,
34791 +
34792 +/* This is a 11-bit reloc with the right 1 bit assumed to be 0 */
34793 + BFD_RELOC_SCORE16_JMP,
34794 +
34795 +/* This is a 8-bit reloc with the right 1 bit assumed to be 0 */
34796 + BFD_RELOC_SCORE16_BRANCH,
34797 +
34798 +/* Undocumented Score relocs */
34799 + BFD_RELOC_SCORE_GOT15,
34800 + BFD_RELOC_SCORE_GOT_LO16,
34801 + BFD_RELOC_SCORE_CALL15,
34802 + BFD_RELOC_SCORE_DUMMY_HI16,
34803 +
34804 +/* Scenix IP2K - 9-bit register number / data address */
34805 + BFD_RELOC_IP2K_FR9,
34806 +
34807 +/* Scenix IP2K - 4-bit register/data bank number */
34808 + BFD_RELOC_IP2K_BANK,
34809 +
34810 +/* Scenix IP2K - low 13 bits of instruction word address */
34811 + BFD_RELOC_IP2K_ADDR16CJP,
34812 +
34813 +/* Scenix IP2K - high 3 bits of instruction word address */
34814 + BFD_RELOC_IP2K_PAGE3,
34815 +
34816 +/* Scenix IP2K - ext/low/high 8 bits of data address */
34817 + BFD_RELOC_IP2K_LO8DATA,
34818 + BFD_RELOC_IP2K_HI8DATA,
34819 + BFD_RELOC_IP2K_EX8DATA,
34820 +
34821 +/* Scenix IP2K - low/high 8 bits of instruction word address */
34822 + BFD_RELOC_IP2K_LO8INSN,
34823 + BFD_RELOC_IP2K_HI8INSN,
34824 +
34825 +/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */
34826 + BFD_RELOC_IP2K_PC_SKIP,
34827 +
34828 +/* Scenix IP2K - 16 bit word address in text section. */
34829 + BFD_RELOC_IP2K_TEXT,
34830 +
34831 +/* Scenix IP2K - 7-bit sp or dp offset */
34832 + BFD_RELOC_IP2K_FR_OFFSET,
34833 +
34834 +/* Scenix VPE4K coprocessor - data/insn-space addressing */
34835 + BFD_RELOC_VPE4KMATH_DATA,
34836 + BFD_RELOC_VPE4KMATH_INSN,
34837 +
34838 +/* These two relocations are used by the linker to determine which of
34839 +the entries in a C++ virtual function table are actually used. When
34840 +the --gc-sections option is given, the linker will zero out the entries
34841 +that are not used, so that the code for those functions need not be
34842 +included in the output.
34843 +
34844 +VTABLE_INHERIT is a zero-space relocation used to describe to the
34845 +linker the inheritance tree of a C++ virtual function table. The
34846 +relocation's symbol should be the parent class' vtable, and the
34847 +relocation should be located at the child vtable.
34848 +
34849 +VTABLE_ENTRY is a zero-space relocation that describes the use of a
34850 +virtual function table entry. The reloc's symbol should refer to the
34851 +table of the class mentioned in the code. Off of that base, an offset
34852 +describes the entry that is being used. For Rela hosts, this offset
34853 +is stored in the reloc's addend. For Rel hosts, we are forced to put
34854 +this offset in the reloc's section offset. */
34855 + BFD_RELOC_VTABLE_INHERIT,
34856 + BFD_RELOC_VTABLE_ENTRY,
34857 +
34858 +/* Intel IA64 Relocations. */
34859 + BFD_RELOC_IA64_IMM14,
34860 + BFD_RELOC_IA64_IMM22,
34861 + BFD_RELOC_IA64_IMM64,
34862 + BFD_RELOC_IA64_DIR32MSB,
34863 + BFD_RELOC_IA64_DIR32LSB,
34864 + BFD_RELOC_IA64_DIR64MSB,
34865 + BFD_RELOC_IA64_DIR64LSB,
34866 + BFD_RELOC_IA64_GPREL22,
34867 + BFD_RELOC_IA64_GPREL64I,
34868 + BFD_RELOC_IA64_GPREL32MSB,
34869 + BFD_RELOC_IA64_GPREL32LSB,
34870 + BFD_RELOC_IA64_GPREL64MSB,
34871 + BFD_RELOC_IA64_GPREL64LSB,
34872 + BFD_RELOC_IA64_LTOFF22,
34873 + BFD_RELOC_IA64_LTOFF64I,
34874 + BFD_RELOC_IA64_PLTOFF22,
34875 + BFD_RELOC_IA64_PLTOFF64I,
34876 + BFD_RELOC_IA64_PLTOFF64MSB,
34877 + BFD_RELOC_IA64_PLTOFF64LSB,
34878 + BFD_RELOC_IA64_FPTR64I,
34879 + BFD_RELOC_IA64_FPTR32MSB,
34880 + BFD_RELOC_IA64_FPTR32LSB,
34881 + BFD_RELOC_IA64_FPTR64MSB,
34882 + BFD_RELOC_IA64_FPTR64LSB,
34883 + BFD_RELOC_IA64_PCREL21B,
34884 + BFD_RELOC_IA64_PCREL21BI,
34885 + BFD_RELOC_IA64_PCREL21M,
34886 + BFD_RELOC_IA64_PCREL21F,
34887 + BFD_RELOC_IA64_PCREL22,
34888 + BFD_RELOC_IA64_PCREL60B,
34889 + BFD_RELOC_IA64_PCREL64I,
34890 + BFD_RELOC_IA64_PCREL32MSB,
34891 + BFD_RELOC_IA64_PCREL32LSB,
34892 + BFD_RELOC_IA64_PCREL64MSB,
34893 + BFD_RELOC_IA64_PCREL64LSB,
34894 + BFD_RELOC_IA64_LTOFF_FPTR22,
34895 + BFD_RELOC_IA64_LTOFF_FPTR64I,
34896 + BFD_RELOC_IA64_LTOFF_FPTR32MSB,
34897 + BFD_RELOC_IA64_LTOFF_FPTR32LSB,
34898 + BFD_RELOC_IA64_LTOFF_FPTR64MSB,
34899 + BFD_RELOC_IA64_LTOFF_FPTR64LSB,
34900 + BFD_RELOC_IA64_SEGREL32MSB,
34901 + BFD_RELOC_IA64_SEGREL32LSB,
34902 + BFD_RELOC_IA64_SEGREL64MSB,
34903 + BFD_RELOC_IA64_SEGREL64LSB,
34904 + BFD_RELOC_IA64_SECREL32MSB,
34905 + BFD_RELOC_IA64_SECREL32LSB,
34906 + BFD_RELOC_IA64_SECREL64MSB,
34907 + BFD_RELOC_IA64_SECREL64LSB,
34908 + BFD_RELOC_IA64_REL32MSB,
34909 + BFD_RELOC_IA64_REL32LSB,
34910 + BFD_RELOC_IA64_REL64MSB,
34911 + BFD_RELOC_IA64_REL64LSB,
34912 + BFD_RELOC_IA64_LTV32MSB,
34913 + BFD_RELOC_IA64_LTV32LSB,
34914 + BFD_RELOC_IA64_LTV64MSB,
34915 + BFD_RELOC_IA64_LTV64LSB,
34916 + BFD_RELOC_IA64_IPLTMSB,
34917 + BFD_RELOC_IA64_IPLTLSB,
34918 + BFD_RELOC_IA64_COPY,
34919 + BFD_RELOC_IA64_LTOFF22X,
34920 + BFD_RELOC_IA64_LDXMOV,
34921 + BFD_RELOC_IA64_TPREL14,
34922 + BFD_RELOC_IA64_TPREL22,
34923 + BFD_RELOC_IA64_TPREL64I,
34924 + BFD_RELOC_IA64_TPREL64MSB,
34925 + BFD_RELOC_IA64_TPREL64LSB,
34926 + BFD_RELOC_IA64_LTOFF_TPREL22,
34927 + BFD_RELOC_IA64_DTPMOD64MSB,
34928 + BFD_RELOC_IA64_DTPMOD64LSB,
34929 + BFD_RELOC_IA64_LTOFF_DTPMOD22,
34930 + BFD_RELOC_IA64_DTPREL14,
34931 + BFD_RELOC_IA64_DTPREL22,
34932 + BFD_RELOC_IA64_DTPREL64I,
34933 + BFD_RELOC_IA64_DTPREL32MSB,
34934 + BFD_RELOC_IA64_DTPREL32LSB,
34935 + BFD_RELOC_IA64_DTPREL64MSB,
34936 + BFD_RELOC_IA64_DTPREL64LSB,
34937 + BFD_RELOC_IA64_LTOFF_DTPREL22,
34938 +
34939 +/* Motorola 68HC11 reloc.
34940 +This is the 8 bit high part of an absolute address. */
34941 + BFD_RELOC_M68HC11_HI8,
34942 +
34943 +/* Motorola 68HC11 reloc.
34944 +This is the 8 bit low part of an absolute address. */
34945 + BFD_RELOC_M68HC11_LO8,
34946 +
34947 +/* Motorola 68HC11 reloc.
34948 +This is the 3 bit of a value. */
34949 + BFD_RELOC_M68HC11_3B,
34950 +
34951 +/* Motorola 68HC11 reloc.
34952 +This reloc marks the beginning of a jump/call instruction.
34953 +It is used for linker relaxation to correctly identify beginning
34954 +of instruction and change some branches to use PC-relative
34955 +addressing mode. */
34956 + BFD_RELOC_M68HC11_RL_JUMP,
34957 +
34958 +/* Motorola 68HC11 reloc.
34959 +This reloc marks a group of several instructions that gcc generates
34960 +and for which the linker relaxation pass can modify and/or remove
34961 +some of them. */
34962 + BFD_RELOC_M68HC11_RL_GROUP,
34963 +
34964 +/* Motorola 68HC11 reloc.
34965 +This is the 16-bit lower part of an address. It is used for 'call'
34966 +instruction to specify the symbol address without any special
34967 +transformation (due to memory bank window). */
34968 + BFD_RELOC_M68HC11_LO16,
34969 +
34970 +/* Motorola 68HC11 reloc.
34971 +This is a 8-bit reloc that specifies the page number of an address.
34972 +It is used by 'call' instruction to specify the page number of
34973 +the symbol. */
34974 + BFD_RELOC_M68HC11_PAGE,
34975 +
34976 +/* Motorola 68HC11 reloc.
34977 +This is a 24-bit reloc that represents the address with a 16-bit
34978 +value and a 8-bit page number. The symbol address is transformed
34979 +to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */
34980 + BFD_RELOC_M68HC11_24,
34981 +
34982 +/* Motorola 68HC12 reloc.
34983 +This is the 5 bits of a value. */
34984 + BFD_RELOC_M68HC12_5B,
34985 +
34986 +/* NS CR16C Relocations. */
34987 + BFD_RELOC_16C_NUM08,
34988 + BFD_RELOC_16C_NUM08_C,
34989 + BFD_RELOC_16C_NUM16,
34990 + BFD_RELOC_16C_NUM16_C,
34991 + BFD_RELOC_16C_NUM32,
34992 + BFD_RELOC_16C_NUM32_C,
34993 + BFD_RELOC_16C_DISP04,
34994 + BFD_RELOC_16C_DISP04_C,
34995 + BFD_RELOC_16C_DISP08,
34996 + BFD_RELOC_16C_DISP08_C,
34997 + BFD_RELOC_16C_DISP16,
34998 + BFD_RELOC_16C_DISP16_C,
34999 + BFD_RELOC_16C_DISP24,
35000 + BFD_RELOC_16C_DISP24_C,
35001 + BFD_RELOC_16C_DISP24a,
35002 + BFD_RELOC_16C_DISP24a_C,
35003 + BFD_RELOC_16C_REG04,
35004 + BFD_RELOC_16C_REG04_C,
35005 + BFD_RELOC_16C_REG04a,
35006 + BFD_RELOC_16C_REG04a_C,
35007 + BFD_RELOC_16C_REG14,
35008 + BFD_RELOC_16C_REG14_C,
35009 + BFD_RELOC_16C_REG16,
35010 + BFD_RELOC_16C_REG16_C,
35011 + BFD_RELOC_16C_REG20,
35012 + BFD_RELOC_16C_REG20_C,
35013 + BFD_RELOC_16C_ABS20,
35014 + BFD_RELOC_16C_ABS20_C,
35015 + BFD_RELOC_16C_ABS24,
35016 + BFD_RELOC_16C_ABS24_C,
35017 + BFD_RELOC_16C_IMM04,
35018 + BFD_RELOC_16C_IMM04_C,
35019 + BFD_RELOC_16C_IMM16,
35020 + BFD_RELOC_16C_IMM16_C,
35021 + BFD_RELOC_16C_IMM20,
35022 + BFD_RELOC_16C_IMM20_C,
35023 + BFD_RELOC_16C_IMM24,
35024 + BFD_RELOC_16C_IMM24_C,
35025 + BFD_RELOC_16C_IMM32,
35026 + BFD_RELOC_16C_IMM32_C,
35027 +
35028 +/* NS CR16 Relocations. */
35029 + BFD_RELOC_CR16_NUM8,
35030 + BFD_RELOC_CR16_NUM16,
35031 + BFD_RELOC_CR16_NUM32,
35032 + BFD_RELOC_CR16_NUM32a,
35033 + BFD_RELOC_CR16_REGREL0,
35034 + BFD_RELOC_CR16_REGREL4,
35035 + BFD_RELOC_CR16_REGREL4a,
35036 + BFD_RELOC_CR16_REGREL14,
35037 + BFD_RELOC_CR16_REGREL14a,
35038 + BFD_RELOC_CR16_REGREL16,
35039 + BFD_RELOC_CR16_REGREL20,
35040 + BFD_RELOC_CR16_REGREL20a,
35041 + BFD_RELOC_CR16_ABS20,
35042 + BFD_RELOC_CR16_ABS24,
35043 + BFD_RELOC_CR16_IMM4,
35044 + BFD_RELOC_CR16_IMM8,
35045 + BFD_RELOC_CR16_IMM16,
35046 + BFD_RELOC_CR16_IMM20,
35047 + BFD_RELOC_CR16_IMM24,
35048 + BFD_RELOC_CR16_IMM32,
35049 + BFD_RELOC_CR16_IMM32a,
35050 + BFD_RELOC_CR16_DISP4,
35051 + BFD_RELOC_CR16_DISP8,
35052 + BFD_RELOC_CR16_DISP16,
35053 + BFD_RELOC_CR16_DISP20,
35054 + BFD_RELOC_CR16_DISP24,
35055 + BFD_RELOC_CR16_DISP24a,
35056 +
35057 +/* NS CRX Relocations. */
35058 + BFD_RELOC_CRX_REL4,
35059 + BFD_RELOC_CRX_REL8,
35060 + BFD_RELOC_CRX_REL8_CMP,
35061 + BFD_RELOC_CRX_REL16,
35062 + BFD_RELOC_CRX_REL24,
35063 + BFD_RELOC_CRX_REL32,
35064 + BFD_RELOC_CRX_REGREL12,
35065 + BFD_RELOC_CRX_REGREL22,
35066 + BFD_RELOC_CRX_REGREL28,
35067 + BFD_RELOC_CRX_REGREL32,
35068 + BFD_RELOC_CRX_ABS16,
35069 + BFD_RELOC_CRX_ABS32,
35070 + BFD_RELOC_CRX_NUM8,
35071 + BFD_RELOC_CRX_NUM16,
35072 + BFD_RELOC_CRX_NUM32,
35073 + BFD_RELOC_CRX_IMM16,
35074 + BFD_RELOC_CRX_IMM32,
35075 + BFD_RELOC_CRX_SWITCH8,
35076 + BFD_RELOC_CRX_SWITCH16,
35077 + BFD_RELOC_CRX_SWITCH32,
35078 +
35079 +/* These relocs are only used within the CRIS assembler. They are not
35080 +(at present) written to any object files. */
35081 + BFD_RELOC_CRIS_BDISP8,
35082 + BFD_RELOC_CRIS_UNSIGNED_5,
35083 + BFD_RELOC_CRIS_SIGNED_6,
35084 + BFD_RELOC_CRIS_UNSIGNED_6,
35085 + BFD_RELOC_CRIS_SIGNED_8,
35086 + BFD_RELOC_CRIS_UNSIGNED_8,
35087 + BFD_RELOC_CRIS_SIGNED_16,
35088 + BFD_RELOC_CRIS_UNSIGNED_16,
35089 + BFD_RELOC_CRIS_LAPCQ_OFFSET,
35090 + BFD_RELOC_CRIS_UNSIGNED_4,
35091 +
35092 +/* Relocs used in ELF shared libraries for CRIS. */
35093 + BFD_RELOC_CRIS_COPY,
35094 + BFD_RELOC_CRIS_GLOB_DAT,
35095 + BFD_RELOC_CRIS_JUMP_SLOT,
35096 + BFD_RELOC_CRIS_RELATIVE,
35097 +
35098 +/* 32-bit offset to symbol-entry within GOT. */
35099 + BFD_RELOC_CRIS_32_GOT,
35100 +
35101 +/* 16-bit offset to symbol-entry within GOT. */
35102 + BFD_RELOC_CRIS_16_GOT,
35103 +
35104 +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
35105 + BFD_RELOC_CRIS_32_GOTPLT,
35106 +
35107 +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
35108 + BFD_RELOC_CRIS_16_GOTPLT,
35109 +
35110 +/* 32-bit offset to symbol, relative to GOT. */
35111 + BFD_RELOC_CRIS_32_GOTREL,
35112 +
35113 +/* 32-bit offset to symbol with PLT entry, relative to GOT. */
35114 + BFD_RELOC_CRIS_32_PLT_GOTREL,
35115 +
35116 +/* 32-bit offset to symbol with PLT entry, relative to this relocation. */
35117 + BFD_RELOC_CRIS_32_PLT_PCREL,
35118 +
35119 +/* Intel i860 Relocations. */
35120 + BFD_RELOC_860_COPY,
35121 + BFD_RELOC_860_GLOB_DAT,
35122 + BFD_RELOC_860_JUMP_SLOT,
35123 + BFD_RELOC_860_RELATIVE,
35124 + BFD_RELOC_860_PC26,
35125 + BFD_RELOC_860_PLT26,
35126 + BFD_RELOC_860_PC16,
35127 + BFD_RELOC_860_LOW0,
35128 + BFD_RELOC_860_SPLIT0,
35129 + BFD_RELOC_860_LOW1,
35130 + BFD_RELOC_860_SPLIT1,
35131 + BFD_RELOC_860_LOW2,
35132 + BFD_RELOC_860_SPLIT2,
35133 + BFD_RELOC_860_LOW3,
35134 + BFD_RELOC_860_LOGOT0,
35135 + BFD_RELOC_860_SPGOT0,
35136 + BFD_RELOC_860_LOGOT1,
35137 + BFD_RELOC_860_SPGOT1,
35138 + BFD_RELOC_860_LOGOTOFF0,
35139 + BFD_RELOC_860_SPGOTOFF0,
35140 + BFD_RELOC_860_LOGOTOFF1,
35141 + BFD_RELOC_860_SPGOTOFF1,
35142 + BFD_RELOC_860_LOGOTOFF2,
35143 + BFD_RELOC_860_LOGOTOFF3,
35144 + BFD_RELOC_860_LOPC,
35145 + BFD_RELOC_860_HIGHADJ,
35146 + BFD_RELOC_860_HAGOT,
35147 + BFD_RELOC_860_HAGOTOFF,
35148 + BFD_RELOC_860_HAPC,
35149 + BFD_RELOC_860_HIGH,
35150 + BFD_RELOC_860_HIGOT,
35151 + BFD_RELOC_860_HIGOTOFF,
35152 +
35153 +/* OpenRISC Relocations. */
35154 + BFD_RELOC_OPENRISC_ABS_26,
35155 + BFD_RELOC_OPENRISC_REL_26,
35156 +
35157 +/* H8 elf Relocations. */
35158 + BFD_RELOC_H8_DIR16A8,
35159 + BFD_RELOC_H8_DIR16R8,
35160 + BFD_RELOC_H8_DIR24A8,
35161 + BFD_RELOC_H8_DIR24R8,
35162 + BFD_RELOC_H8_DIR32A16,
35163 +
35164 +/* Sony Xstormy16 Relocations. */
35165 + BFD_RELOC_XSTORMY16_REL_12,
35166 + BFD_RELOC_XSTORMY16_12,
35167 + BFD_RELOC_XSTORMY16_24,
35168 + BFD_RELOC_XSTORMY16_FPTR16,
35169 +
35170 +/* Self-describing complex relocations. */
35171 + BFD_RELOC_RELC,
35172 +
35173 +
35174 +/* Infineon Relocations. */
35175 + BFD_RELOC_XC16X_PAG,
35176 + BFD_RELOC_XC16X_POF,
35177 + BFD_RELOC_XC16X_SEG,
35178 + BFD_RELOC_XC16X_SOF,
35179 +
35180 +/* Relocations used by VAX ELF. */
35181 + BFD_RELOC_VAX_GLOB_DAT,
35182 + BFD_RELOC_VAX_JMP_SLOT,
35183 + BFD_RELOC_VAX_RELATIVE,
35184 +
35185 +/* Morpho MT - 16 bit immediate relocation. */
35186 + BFD_RELOC_MT_PC16,
35187 +
35188 +/* Morpho MT - Hi 16 bits of an address. */
35189 + BFD_RELOC_MT_HI16,
35190 +
35191 +/* Morpho MT - Low 16 bits of an address. */
35192 + BFD_RELOC_MT_LO16,
35193 +
35194 +/* Morpho MT - Used to tell the linker which vtable entries are used. */
35195 + BFD_RELOC_MT_GNU_VTINHERIT,
35196 +
35197 +/* Morpho MT - Used to tell the linker which vtable entries are used. */
35198 + BFD_RELOC_MT_GNU_VTENTRY,
35199 +
35200 +/* Morpho MT - 8 bit immediate relocation. */
35201 + BFD_RELOC_MT_PCINSN8,
35202 +
35203 +/* msp430 specific relocation codes */
35204 + BFD_RELOC_MSP430_10_PCREL,
35205 + BFD_RELOC_MSP430_16_PCREL,
35206 + BFD_RELOC_MSP430_16,
35207 + BFD_RELOC_MSP430_16_PCREL_BYTE,
35208 + BFD_RELOC_MSP430_16_BYTE,
35209 + BFD_RELOC_MSP430_2X_PCREL,
35210 + BFD_RELOC_MSP430_RL_PCREL,
35211 +
35212 +/* IQ2000 Relocations. */
35213 + BFD_RELOC_IQ2000_OFFSET_16,
35214 + BFD_RELOC_IQ2000_OFFSET_21,
35215 + BFD_RELOC_IQ2000_UHI16,
35216 +
35217 +/* Special Xtensa relocation used only by PLT entries in ELF shared
35218 +objects to indicate that the runtime linker should set the value
35219 +to one of its own internal functions or data structures. */
35220 + BFD_RELOC_XTENSA_RTLD,
35221 +
35222 +/* Xtensa relocations for ELF shared objects. */
35223 + BFD_RELOC_XTENSA_GLOB_DAT,
35224 + BFD_RELOC_XTENSA_JMP_SLOT,
35225 + BFD_RELOC_XTENSA_RELATIVE,
35226 +
35227 +/* Xtensa relocation used in ELF object files for symbols that may require
35228 +PLT entries. Otherwise, this is just a generic 32-bit relocation. */
35229 + BFD_RELOC_XTENSA_PLT,
35230 +
35231 +/* Xtensa relocations to mark the difference of two local symbols.
35232 +These are only needed to support linker relaxation and can be ignored
35233 +when not relaxing. The field is set to the value of the difference
35234 +assuming no relaxation. The relocation encodes the position of the
35235 +first symbol so the linker can determine whether to adjust the field
35236 +value. */
35237 + BFD_RELOC_XTENSA_DIFF8,
35238 + BFD_RELOC_XTENSA_DIFF16,
35239 + BFD_RELOC_XTENSA_DIFF32,
35240 +
35241 +/* Generic Xtensa relocations for instruction operands. Only the slot
35242 +number is encoded in the relocation. The relocation applies to the
35243 +last PC-relative immediate operand, or if there are no PC-relative
35244 +immediates, to the last immediate operand. */
35245 + BFD_RELOC_XTENSA_SLOT0_OP,
35246 + BFD_RELOC_XTENSA_SLOT1_OP,
35247 + BFD_RELOC_XTENSA_SLOT2_OP,
35248 + BFD_RELOC_XTENSA_SLOT3_OP,
35249 + BFD_RELOC_XTENSA_SLOT4_OP,
35250 + BFD_RELOC_XTENSA_SLOT5_OP,
35251 + BFD_RELOC_XTENSA_SLOT6_OP,
35252 + BFD_RELOC_XTENSA_SLOT7_OP,
35253 + BFD_RELOC_XTENSA_SLOT8_OP,
35254 + BFD_RELOC_XTENSA_SLOT9_OP,
35255 + BFD_RELOC_XTENSA_SLOT10_OP,
35256 + BFD_RELOC_XTENSA_SLOT11_OP,
35257 + BFD_RELOC_XTENSA_SLOT12_OP,
35258 + BFD_RELOC_XTENSA_SLOT13_OP,
35259 + BFD_RELOC_XTENSA_SLOT14_OP,
35260 +
35261 +/* Alternate Xtensa relocations. Only the slot is encoded in the
35262 +relocation. The meaning of these relocations is opcode-specific. */
35263 + BFD_RELOC_XTENSA_SLOT0_ALT,
35264 + BFD_RELOC_XTENSA_SLOT1_ALT,
35265 + BFD_RELOC_XTENSA_SLOT2_ALT,
35266 + BFD_RELOC_XTENSA_SLOT3_ALT,
35267 + BFD_RELOC_XTENSA_SLOT4_ALT,
35268 + BFD_RELOC_XTENSA_SLOT5_ALT,
35269 + BFD_RELOC_XTENSA_SLOT6_ALT,
35270 + BFD_RELOC_XTENSA_SLOT7_ALT,
35271 + BFD_RELOC_XTENSA_SLOT8_ALT,
35272 + BFD_RELOC_XTENSA_SLOT9_ALT,
35273 + BFD_RELOC_XTENSA_SLOT10_ALT,
35274 + BFD_RELOC_XTENSA_SLOT11_ALT,
35275 + BFD_RELOC_XTENSA_SLOT12_ALT,
35276 + BFD_RELOC_XTENSA_SLOT13_ALT,
35277 + BFD_RELOC_XTENSA_SLOT14_ALT,
35278 +
35279 +/* Xtensa relocations for backward compatibility. These have all been
35280 +replaced by BFD_RELOC_XTENSA_SLOT0_OP. */
35281 + BFD_RELOC_XTENSA_OP0,
35282 + BFD_RELOC_XTENSA_OP1,
35283 + BFD_RELOC_XTENSA_OP2,
35284 +
35285 +/* Xtensa relocation to mark that the assembler expanded the
35286 +instructions from an original target. The expansion size is
35287 +encoded in the reloc size. */
35288 + BFD_RELOC_XTENSA_ASM_EXPAND,
35289 +
35290 +/* Xtensa relocation to mark that the linker should simplify
35291 +assembler-expanded instructions. This is commonly used
35292 +internally by the linker after analysis of a
35293 +BFD_RELOC_XTENSA_ASM_EXPAND. */
35294 + BFD_RELOC_XTENSA_ASM_SIMPLIFY,
35295 +
35296 +/* 8 bit signed offset in (ix+d) or (iy+d). */
35297 + BFD_RELOC_Z80_DISP8,
35298 +
35299 +/* DJNZ offset. */
35300 + BFD_RELOC_Z8K_DISP7,
35301 +
35302 +/* CALR offset. */
35303 + BFD_RELOC_Z8K_CALLR,
35304 +
35305 +/* 4 bit value. */
35306 + BFD_RELOC_Z8K_IMM4L,
35307 + BFD_RELOC_UNUSED };
35308 +typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
35309 +reloc_howto_type *bfd_reloc_type_lookup
35310 + (bfd *abfd, bfd_reloc_code_real_type code);
35311 +reloc_howto_type *bfd_reloc_name_lookup
35312 + (bfd *abfd, const char *reloc_name);
35313 +
35314 +const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
35315 +
35316 +/* Extracted from syms.c. */
35317 +
35318 +typedef struct bfd_symbol
35319 +{
35320 + /* A pointer to the BFD which owns the symbol. This information
35321 + is necessary so that a back end can work out what additional
35322 + information (invisible to the application writer) is carried
35323 + with the symbol.
35324 +
35325 + This field is *almost* redundant, since you can use section->owner
35326 + instead, except that some symbols point to the global sections
35327 + bfd_{abs,com,und}_section. This could be fixed by making
35328 + these globals be per-bfd (or per-target-flavor). FIXME. */
35329 + struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
35330 +
35331 + /* The text of the symbol. The name is left alone, and not copied; the
35332 + application may not alter it. */
35333 + const char *name;
35334 +
35335 + /* The value of the symbol. This really should be a union of a
35336 + numeric value with a pointer, since some flags indicate that
35337 + a pointer to another symbol is stored here. */
35338 + symvalue value;
35339 +
35340 + /* Attributes of a symbol. */
35341 +#define BSF_NO_FLAGS 0x00
35342 +
35343 + /* The symbol has local scope; <<static>> in <<C>>. The value
35344 + is the offset into the section of the data. */
35345 +#define BSF_LOCAL 0x01
35346 +
35347 + /* The symbol has global scope; initialized data in <<C>>. The
35348 + value is the offset into the section of the data. */
35349 +#define BSF_GLOBAL 0x02
35350 +
35351 + /* The symbol has global scope and is exported. The value is
35352 + the offset into the section of the data. */
35353 +#define BSF_EXPORT BSF_GLOBAL /* No real difference. */
35354 +
35355 + /* A normal C symbol would be one of:
35356 + <<BSF_LOCAL>>, <<BSF_FORT_COMM>>, <<BSF_UNDEFINED>> or
35357 + <<BSF_GLOBAL>>. */
35358 +
35359 + /* The symbol is a debugging record. The value has an arbitrary
35360 + meaning, unless BSF_DEBUGGING_RELOC is also set. */
35361 +#define BSF_DEBUGGING 0x08
35362 +
35363 + /* The symbol denotes a function entry point. Used in ELF,
35364 + perhaps others someday. */
35365 +#define BSF_FUNCTION 0x10
35366 +
35367 + /* Used by the linker. */
35368 +#define BSF_KEEP 0x20
35369 +#define BSF_KEEP_G 0x40
35370 +
35371 + /* A weak global symbol, overridable without warnings by
35372 + a regular global symbol of the same name. */
35373 +#define BSF_WEAK 0x80
35374 +
35375 + /* This symbol was created to point to a section, e.g. ELF's
35376 + STT_SECTION symbols. */
35377 +#define BSF_SECTION_SYM 0x100
35378 +
35379 + /* The symbol used to be a common symbol, but now it is
35380 + allocated. */
35381 +#define BSF_OLD_COMMON 0x200
35382 +
35383 + /* The default value for common data. */
35384 +#define BFD_FORT_COMM_DEFAULT_VALUE 0
35385 +
35386 + /* In some files the type of a symbol sometimes alters its
35387 + location in an output file - ie in coff a <<ISFCN>> symbol
35388 + which is also <<C_EXT>> symbol appears where it was
35389 + declared and not at the end of a section. This bit is set
35390 + by the target BFD part to convey this information. */
35391 +#define BSF_NOT_AT_END 0x400
35392 +
35393 + /* Signal that the symbol is the label of constructor section. */
35394 +#define BSF_CONSTRUCTOR 0x800
35395 +
35396 + /* Signal that the symbol is a warning symbol. The name is a
35397 + warning. The name of the next symbol is the one to warn about;
35398 + if a reference is made to a symbol with the same name as the next
35399 + symbol, a warning is issued by the linker. */
35400 +#define BSF_WARNING 0x1000
35401 +
35402 + /* Signal that the symbol is indirect. This symbol is an indirect
35403 + pointer to the symbol with the same name as the next symbol. */
35404 +#define BSF_INDIRECT 0x2000
35405 +
35406 + /* BSF_FILE marks symbols that contain a file name. This is used
35407 + for ELF STT_FILE symbols. */
35408 +#define BSF_FILE 0x4000
35409 +
35410 + /* Symbol is from dynamic linking information. */
35411 +#define BSF_DYNAMIC 0x8000
35412 +
35413 + /* The symbol denotes a data object. Used in ELF, and perhaps
35414 + others someday. */
35415 +#define BSF_OBJECT 0x10000
35416 +
35417 + /* This symbol is a debugging symbol. The value is the offset
35418 + into the section of the data. BSF_DEBUGGING should be set
35419 + as well. */
35420 +#define BSF_DEBUGGING_RELOC 0x20000
35421 +
35422 + /* This symbol is thread local. Used in ELF. */
35423 +#define BSF_THREAD_LOCAL 0x40000
35424 +
35425 + /* This symbol represents a complex relocation expression,
35426 + with the expression tree serialized in the symbol name. */
35427 +#define BSF_RELC 0x80000
35428 +
35429 + /* This symbol represents a signed complex relocation expression,
35430 + with the expression tree serialized in the symbol name. */
35431 +#define BSF_SRELC 0x100000
35432 +
35433 + flagword flags;
35434 +
35435 + /* A pointer to the section to which this symbol is
35436 + relative. This will always be non NULL, there are special
35437 + sections for undefined and absolute symbols. */
35438 + struct bfd_section *section;
35439 +
35440 + /* Back end special data. */
35441 + union
35442 + {
35443 + void *p;
35444 + bfd_vma i;
35445 + }
35446 + udata;
35447 +}
35448 +asymbol;
35449 +
35450 +#define bfd_get_symtab_upper_bound(abfd) \
35451 + BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
35452 +
35453 +bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
35454 +
35455 +bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
35456 +
35457 +#define bfd_is_local_label_name(abfd, name) \
35458 + BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
35459 +
35460 +bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
35461 +
35462 +#define bfd_is_target_special_symbol(abfd, sym) \
35463 + BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
35464 +
35465 +#define bfd_canonicalize_symtab(abfd, location) \
35466 + BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
35467 +
35468 +bfd_boolean bfd_set_symtab
35469 + (bfd *abfd, asymbol **location, unsigned int count);
35470 +
35471 +void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
35472 +
35473 +#define bfd_make_empty_symbol(abfd) \
35474 + BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
35475 +
35476 +asymbol *_bfd_generic_make_empty_symbol (bfd *);
35477 +
35478 +#define bfd_make_debug_symbol(abfd,ptr,size) \
35479 + BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
35480 +
35481 +int bfd_decode_symclass (asymbol *symbol);
35482 +
35483 +bfd_boolean bfd_is_undefined_symclass (int symclass);
35484 +
35485 +void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
35486 +
35487 +bfd_boolean bfd_copy_private_symbol_data
35488 + (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
35489 +
35490 +#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
35491 + BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
35492 + (ibfd, isymbol, obfd, osymbol))
35493 +
35494 +/* Extracted from bfd.c. */
35495 +struct bfd
35496 +{
35497 + /* A unique identifier of the BFD */
35498 + unsigned int id;
35499 +
35500 + /* The filename the application opened the BFD with. */
35501 + const char *filename;
35502 +
35503 + /* A pointer to the target jump table. */
35504 + const struct bfd_target *xvec;
35505 +
35506 + /* The IOSTREAM, and corresponding IO vector that provide access
35507 + to the file backing the BFD. */
35508 + void *iostream;
35509 + const struct bfd_iovec *iovec;
35510 +
35511 + /* Is the file descriptor being cached? That is, can it be closed as
35512 + needed, and re-opened when accessed later? */
35513 + bfd_boolean cacheable;
35514 +
35515 + /* Marks whether there was a default target specified when the
35516 + BFD was opened. This is used to select which matching algorithm
35517 + to use to choose the back end. */
35518 + bfd_boolean target_defaulted;
35519 +
35520 + /* The caching routines use these to maintain a
35521 + least-recently-used list of BFDs. */
35522 + struct bfd *lru_prev, *lru_next;
35523 +
35524 + /* When a file is closed by the caching routines, BFD retains
35525 + state information on the file here... */
35526 + ufile_ptr where;
35527 +
35528 + /* ... and here: (``once'' means at least once). */
35529 + bfd_boolean opened_once;
35530 +
35531 + /* Set if we have a locally maintained mtime value, rather than
35532 + getting it from the file each time. */
35533 + bfd_boolean mtime_set;
35534 +
35535 + /* File modified time, if mtime_set is TRUE. */
35536 + long mtime;
35537 +
35538 + /* Reserved for an unimplemented file locking extension. */
35539 + int ifd;
35540 +
35541 + /* The format which belongs to the BFD. (object, core, etc.) */
35542 + bfd_format format;
35543 +
35544 + /* The direction with which the BFD was opened. */
35545 + enum bfd_direction
35546 + {
35547 + no_direction = 0,
35548 + read_direction = 1,
35549 + write_direction = 2,
35550 + both_direction = 3
35551 + }
35552 + direction;
35553 +
35554 + /* Format_specific flags. */
35555 + flagword flags;
35556 +
35557 + /* Currently my_archive is tested before adding origin to
35558 + anything. I believe that this can become always an add of
35559 + origin, with origin set to 0 for non archive files. */
35560 + ufile_ptr origin;
35561 +
35562 + /* Remember when output has begun, to stop strange things
35563 + from happening. */
35564 + bfd_boolean output_has_begun;
35565 +
35566 + /* A hash table for section names. */
35567 + struct bfd_hash_table section_htab;
35568 +
35569 + /* Pointer to linked list of sections. */
35570 + struct bfd_section *sections;
35571 +
35572 + /* The last section on the section list. */
35573 + struct bfd_section *section_last;
35574 +
35575 + /* The number of sections. */
35576 + unsigned int section_count;
35577 +
35578 + /* Stuff only useful for object files:
35579 + The start address. */
35580 + bfd_vma start_address;
35581 +
35582 + /* Used for input and output. */
35583 + unsigned int symcount;
35584 +
35585 + /* Symbol table for output BFD (with symcount entries). */
35586 + struct bfd_symbol **outsymbols;
35587 +
35588 + /* Used for slurped dynamic symbol tables. */
35589 + unsigned int dynsymcount;
35590 +
35591 + /* Pointer to structure which contains architecture information. */
35592 + const struct bfd_arch_info *arch_info;
35593 +
35594 + /* Flag set if symbols from this BFD should not be exported. */
35595 + bfd_boolean no_export;
35596 +
35597 + /* Stuff only useful for archives. */
35598 + void *arelt_data;
35599 + struct bfd *my_archive; /* The containing archive BFD. */
35600 + struct bfd *archive_next; /* The next BFD in the archive. */
35601 + struct bfd *archive_head; /* The first BFD in the archive. */
35602 + bfd_boolean has_armap;
35603 +
35604 + /* A chain of BFD structures involved in a link. */
35605 + struct bfd *link_next;
35606 +
35607 + /* A field used by _bfd_generic_link_add_archive_symbols. This will
35608 + be used only for archive elements. */
35609 + int archive_pass;
35610 +
35611 + /* Used by the back end to hold private data. */
35612 + union
35613 + {
35614 + struct aout_data_struct *aout_data;
35615 + struct artdata *aout_ar_data;
35616 + struct _oasys_data *oasys_obj_data;
35617 + struct _oasys_ar_data *oasys_ar_data;
35618 + struct coff_tdata *coff_obj_data;
35619 + struct pe_tdata *pe_obj_data;
35620 + struct xcoff_tdata *xcoff_obj_data;
35621 + struct ecoff_tdata *ecoff_obj_data;
35622 + struct ieee_data_struct *ieee_data;
35623 + struct ieee_ar_data_struct *ieee_ar_data;
35624 + struct srec_data_struct *srec_data;
35625 + struct ihex_data_struct *ihex_data;
35626 + struct tekhex_data_struct *tekhex_data;
35627 + struct elf_obj_tdata *elf_obj_data;
35628 + struct nlm_obj_tdata *nlm_obj_data;
35629 + struct bout_data_struct *bout_data;
35630 + struct mmo_data_struct *mmo_data;
35631 + struct sun_core_struct *sun_core_data;
35632 + struct sco5_core_struct *sco5_core_data;
35633 + struct trad_core_struct *trad_core_data;
35634 + struct som_data_struct *som_data;
35635 + struct hpux_core_struct *hpux_core_data;
35636 + struct hppabsd_core_struct *hppabsd_core_data;
35637 + struct sgi_core_struct *sgi_core_data;
35638 + struct lynx_core_struct *lynx_core_data;
35639 + struct osf_core_struct *osf_core_data;
35640 + struct cisco_core_struct *cisco_core_data;
35641 + struct versados_data_struct *versados_data;
35642 + struct netbsd_core_struct *netbsd_core_data;
35643 + struct mach_o_data_struct *mach_o_data;
35644 + struct mach_o_fat_data_struct *mach_o_fat_data;
35645 + struct bfd_pef_data_struct *pef_data;
35646 + struct bfd_pef_xlib_data_struct *pef_xlib_data;
35647 + struct bfd_sym_data_struct *sym_data;
35648 + void *any;
35649 + }
35650 + tdata;
35651 +
35652 + /* Used by the application to hold private data. */
35653 + void *usrdata;
35654 +
35655 + /* Where all the allocated stuff under this BFD goes. This is a
35656 + struct objalloc *, but we use void * to avoid requiring the inclusion
35657 + of objalloc.h. */
35658 + void *memory;
35659 +};
35660 +
35661 +typedef enum bfd_error
35662 +{
35663 + bfd_error_no_error = 0,
35664 + bfd_error_system_call,
35665 + bfd_error_invalid_target,
35666 + bfd_error_wrong_format,
35667 + bfd_error_wrong_object_format,
35668 + bfd_error_invalid_operation,
35669 + bfd_error_no_memory,
35670 + bfd_error_no_symbols,
35671 + bfd_error_no_armap,
35672 + bfd_error_no_more_archived_files,
35673 + bfd_error_malformed_archive,
35674 + bfd_error_file_not_recognized,
35675 + bfd_error_file_ambiguously_recognized,
35676 + bfd_error_no_contents,
35677 + bfd_error_nonrepresentable_section,
35678 + bfd_error_no_debug_section,
35679 + bfd_error_bad_value,
35680 + bfd_error_file_truncated,
35681 + bfd_error_file_too_big,
35682 + bfd_error_on_input,
35683 + bfd_error_invalid_error_code
35684 +}
35685 +bfd_error_type;
35686 +
35687 +bfd_error_type bfd_get_error (void);
35688 +
35689 +void bfd_set_error (bfd_error_type error_tag, ...);
35690 +
35691 +const char *bfd_errmsg (bfd_error_type error_tag);
35692 +
35693 +void bfd_perror (const char *message);
35694 +
35695 +typedef void (*bfd_error_handler_type) (const char *, ...);
35696 +
35697 +bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
35698 +
35699 +void bfd_set_error_program_name (const char *);
35700 +
35701 +bfd_error_handler_type bfd_get_error_handler (void);
35702 +
35703 +long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
35704 +
35705 +long bfd_canonicalize_reloc
35706 + (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
35707 +
35708 +void bfd_set_reloc
35709 + (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
35710 +
35711 +bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
35712 +
35713 +int bfd_get_arch_size (bfd *abfd);
35714 +
35715 +int bfd_get_sign_extend_vma (bfd *abfd);
35716 +
35717 +bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
35718 +
35719 +unsigned int bfd_get_gp_size (bfd *abfd);
35720 +
35721 +void bfd_set_gp_size (bfd *abfd, unsigned int i);
35722 +
35723 +bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
35724 +
35725 +bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
35726 +
35727 +#define bfd_copy_private_header_data(ibfd, obfd) \
35728 + BFD_SEND (obfd, _bfd_copy_private_header_data, \
35729 + (ibfd, obfd))
35730 +bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
35731 +
35732 +#define bfd_copy_private_bfd_data(ibfd, obfd) \
35733 + BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
35734 + (ibfd, obfd))
35735 +bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
35736 +
35737 +#define bfd_merge_private_bfd_data(ibfd, obfd) \
35738 + BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
35739 + (ibfd, obfd))
35740 +bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
35741 +
35742 +#define bfd_set_private_flags(abfd, flags) \
35743 + BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
35744 +#define bfd_sizeof_headers(abfd, info) \
35745 + BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
35746 +
35747 +#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
35748 + BFD_SEND (abfd, _bfd_find_nearest_line, \
35749 + (abfd, sec, syms, off, file, func, line))
35750 +
35751 +#define bfd_find_line(abfd, syms, sym, file, line) \
35752 + BFD_SEND (abfd, _bfd_find_line, \
35753 + (abfd, syms, sym, file, line))
35754 +
35755 +#define bfd_find_inliner_info(abfd, file, func, line) \
35756 + BFD_SEND (abfd, _bfd_find_inliner_info, \
35757 + (abfd, file, func, line))
35758 +
35759 +#define bfd_debug_info_start(abfd) \
35760 + BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
35761 +
35762 +#define bfd_debug_info_end(abfd) \
35763 + BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
35764 +
35765 +#define bfd_debug_info_accumulate(abfd, section) \
35766 + BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
35767 +
35768 +#define bfd_stat_arch_elt(abfd, stat) \
35769 + BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
35770 +
35771 +#define bfd_update_armap_timestamp(abfd) \
35772 + BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
35773 +
35774 +#define bfd_set_arch_mach(abfd, arch, mach)\
35775 + BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
35776 +
35777 +#define bfd_relax_section(abfd, section, link_info, again) \
35778 + BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
35779 +
35780 +#define bfd_gc_sections(abfd, link_info) \
35781 + BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
35782 +
35783 +#define bfd_merge_sections(abfd, link_info) \
35784 + BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
35785 +
35786 +#define bfd_is_group_section(abfd, sec) \
35787 + BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
35788 +
35789 +#define bfd_discard_group(abfd, sec) \
35790 + BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
35791 +
35792 +#define bfd_link_hash_table_create(abfd) \
35793 + BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
35794 +
35795 +#define bfd_link_hash_table_free(abfd, hash) \
35796 + BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
35797 +
35798 +#define bfd_link_add_symbols(abfd, info) \
35799 + BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
35800 +
35801 +#define bfd_link_just_syms(abfd, sec, info) \
35802 + BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
35803 +
35804 +#define bfd_final_link(abfd, info) \
35805 + BFD_SEND (abfd, _bfd_final_link, (abfd, info))
35806 +
35807 +#define bfd_free_cached_info(abfd) \
35808 + BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
35809 +
35810 +#define bfd_get_dynamic_symtab_upper_bound(abfd) \
35811 + BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
35812 +
35813 +#define bfd_print_private_bfd_data(abfd, file)\
35814 + BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
35815 +
35816 +#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
35817 + BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
35818 +
35819 +#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
35820 + BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
35821 + dyncount, dynsyms, ret))
35822 +
35823 +#define bfd_get_dynamic_reloc_upper_bound(abfd) \
35824 + BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
35825 +
35826 +#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
35827 + BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
35828 +
35829 +extern bfd_byte *bfd_get_relocated_section_contents
35830 + (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
35831 + bfd_boolean, asymbol **);
35832 +
35833 +bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
35834 +
35835 +struct bfd_preserve
35836 +{
35837 + void *marker;
35838 + void *tdata;
35839 + flagword flags;
35840 + const struct bfd_arch_info *arch_info;
35841 + struct bfd_section *sections;
35842 + struct bfd_section *section_last;
35843 + unsigned int section_count;
35844 + struct bfd_hash_table section_htab;
35845 +};
35846 +
35847 +bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
35848 +
35849 +void bfd_preserve_restore (bfd *, struct bfd_preserve *);
35850 +
35851 +void bfd_preserve_finish (bfd *, struct bfd_preserve *);
35852 +
35853 +bfd_vma bfd_emul_get_maxpagesize (const char *);
35854 +
35855 +void bfd_emul_set_maxpagesize (const char *, bfd_vma);
35856 +
35857 +bfd_vma bfd_emul_get_commonpagesize (const char *);
35858 +
35859 +void bfd_emul_set_commonpagesize (const char *, bfd_vma);
35860 +
35861 +char *bfd_demangle (bfd *, const char *, int);
35862 +
35863 +/* Extracted from archive.c. */
35864 +symindex bfd_get_next_mapent
35865 + (bfd *abfd, symindex previous, carsym **sym);
35866 +
35867 +bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
35868 +
35869 +bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
35870 +
35871 +/* Extracted from corefile.c. */
35872 +const char *bfd_core_file_failing_command (bfd *abfd);
35873 +
35874 +int bfd_core_file_failing_signal (bfd *abfd);
35875 +
35876 +bfd_boolean core_file_matches_executable_p
35877 + (bfd *core_bfd, bfd *exec_bfd);
35878 +
35879 +bfd_boolean generic_core_file_matches_executable_p
35880 + (bfd *core_bfd, bfd *exec_bfd);
35881 +
35882 +/* Extracted from targets.c. */
35883 +#define BFD_SEND(bfd, message, arglist) \
35884 + ((*((bfd)->xvec->message)) arglist)
35885 +
35886 +#ifdef DEBUG_BFD_SEND
35887 +#undef BFD_SEND
35888 +#define BFD_SEND(bfd, message, arglist) \
35889 + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
35890 + ((*((bfd)->xvec->message)) arglist) : \
35891 + (bfd_assert (__FILE__,__LINE__), NULL))
35892 +#endif
35893 +#define BFD_SEND_FMT(bfd, message, arglist) \
35894 + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
35895 +
35896 +#ifdef DEBUG_BFD_SEND
35897 +#undef BFD_SEND_FMT
35898 +#define BFD_SEND_FMT(bfd, message, arglist) \
35899 + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
35900 + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
35901 + (bfd_assert (__FILE__,__LINE__), NULL))
35902 +#endif
35903 +
35904 +enum bfd_flavour
35905 +{
35906 + bfd_target_unknown_flavour,
35907 + bfd_target_aout_flavour,
35908 + bfd_target_coff_flavour,
35909 + bfd_target_ecoff_flavour,
35910 + bfd_target_xcoff_flavour,
35911 + bfd_target_elf_flavour,
35912 + bfd_target_ieee_flavour,
35913 + bfd_target_nlm_flavour,
35914 + bfd_target_oasys_flavour,
35915 + bfd_target_tekhex_flavour,
35916 + bfd_target_srec_flavour,
35917 + bfd_target_ihex_flavour,
35918 + bfd_target_som_flavour,
35919 + bfd_target_os9k_flavour,
35920 + bfd_target_versados_flavour,
35921 + bfd_target_msdos_flavour,
35922 + bfd_target_ovax_flavour,
35923 + bfd_target_evax_flavour,
35924 + bfd_target_mmo_flavour,
35925 + bfd_target_mach_o_flavour,
35926 + bfd_target_pef_flavour,
35927 + bfd_target_pef_xlib_flavour,
35928 + bfd_target_sym_flavour
35929 +};
35930 +
35931 +enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
35932 +
35933 +/* Forward declaration. */
35934 +typedef struct bfd_link_info _bfd_link_info;
35935 +
35936 +typedef struct bfd_target
35937 +{
35938 + /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
35939 + char *name;
35940 +
35941 + /* The "flavour" of a back end is a general indication about
35942 + the contents of a file. */
35943 + enum bfd_flavour flavour;
35944 +
35945 + /* The order of bytes within the data area of a file. */
35946 + enum bfd_endian byteorder;
35947 +
35948 + /* The order of bytes within the header parts of a file. */
35949 + enum bfd_endian header_byteorder;
35950 +
35951 + /* A mask of all the flags which an executable may have set -
35952 + from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>. */
35953 + flagword object_flags;
35954 +
35955 + /* A mask of all the flags which a section may have set - from
35956 + the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>. */
35957 + flagword section_flags;
35958 +
35959 + /* The character normally found at the front of a symbol.
35960 + (if any), perhaps `_'. */
35961 + char symbol_leading_char;
35962 +
35963 + /* The pad character for file names within an archive header. */
35964 + char ar_pad_char;
35965 +
35966 + /* The maximum number of characters in an archive header. */
35967 + unsigned short ar_max_namelen;
35968 +
35969 + /* Entries for byte swapping for data. These are different from the
35970 + other entry points, since they don't take a BFD as the first argument.
35971 + Certain other handlers could do the same. */
35972 + bfd_uint64_t (*bfd_getx64) (const void *);
35973 + bfd_int64_t (*bfd_getx_signed_64) (const void *);
35974 + void (*bfd_putx64) (bfd_uint64_t, void *);
35975 + bfd_vma (*bfd_getx32) (const void *);
35976 + bfd_signed_vma (*bfd_getx_signed_32) (const void *);
35977 + void (*bfd_putx32) (bfd_vma, void *);
35978 + bfd_vma (*bfd_getx16) (const void *);
35979 + bfd_signed_vma (*bfd_getx_signed_16) (const void *);
35980 + void (*bfd_putx16) (bfd_vma, void *);
35981 +
35982 + /* Byte swapping for the headers. */
35983 + bfd_uint64_t (*bfd_h_getx64) (const void *);
35984 + bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
35985 + void (*bfd_h_putx64) (bfd_uint64_t, void *);
35986 + bfd_vma (*bfd_h_getx32) (const void *);
35987 + bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
35988 + void (*bfd_h_putx32) (bfd_vma, void *);
35989 + bfd_vma (*bfd_h_getx16) (const void *);
35990 + bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
35991 + void (*bfd_h_putx16) (bfd_vma, void *);
35992 +
35993 + /* Format dependent routines: these are vectors of entry points
35994 + within the target vector structure, one for each format to check. */
35995 +
35996 + /* Check the format of a file being read. Return a <<bfd_target *>> or zero. */
35997 + const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
35998 +
35999 + /* Set the format of a file being written. */
36000 + bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
36001 +
36002 + /* Write cached information into a file being written, at <<bfd_close>>. */
36003 + bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
36004 +
36005 +
36006 + /* Generic entry points. */
36007 +#define BFD_JUMP_TABLE_GENERIC(NAME) \
36008 + NAME##_close_and_cleanup, \
36009 + NAME##_bfd_free_cached_info, \
36010 + NAME##_new_section_hook, \
36011 + NAME##_get_section_contents, \
36012 + NAME##_get_section_contents_in_window
36013 +
36014 + /* Called when the BFD is being closed to do any necessary cleanup. */
36015 + bfd_boolean (*_close_and_cleanup) (bfd *);
36016 + /* Ask the BFD to free all cached information. */
36017 + bfd_boolean (*_bfd_free_cached_info) (bfd *);
36018 + /* Called when a new section is created. */
36019 + bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
36020 + /* Read the contents of a section. */
36021 + bfd_boolean (*_bfd_get_section_contents)
36022 + (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
36023 + bfd_boolean (*_bfd_get_section_contents_in_window)
36024 + (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
36025 +
36026 + /* Entry points to copy private data. */
36027 +#define BFD_JUMP_TABLE_COPY(NAME) \
36028 + NAME##_bfd_copy_private_bfd_data, \
36029 + NAME##_bfd_merge_private_bfd_data, \
36030 + _bfd_generic_init_private_section_data, \
36031 + NAME##_bfd_copy_private_section_data, \
36032 + NAME##_bfd_copy_private_symbol_data, \
36033 + NAME##_bfd_copy_private_header_data, \
36034 + NAME##_bfd_set_private_flags, \
36035 + NAME##_bfd_print_private_bfd_data
36036 +
36037 + /* Called to copy BFD general private data from one object file
36038 + to another. */
36039 + bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
36040 + /* Called to merge BFD general private data from one object file
36041 + to a common output file when linking. */
36042 + bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
36043 + /* Called to initialize BFD private section data from one object file
36044 + to another. */
36045 +#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
36046 + BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
36047 + bfd_boolean (*_bfd_init_private_section_data)
36048 + (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
36049 + /* Called to copy BFD private section data from one object file
36050 + to another. */
36051 + bfd_boolean (*_bfd_copy_private_section_data)
36052 + (bfd *, sec_ptr, bfd *, sec_ptr);
36053 + /* Called to copy BFD private symbol data from one symbol
36054 + to another. */
36055 + bfd_boolean (*_bfd_copy_private_symbol_data)
36056 + (bfd *, asymbol *, bfd *, asymbol *);
36057 + /* Called to copy BFD private header data from one object file
36058 + to another. */
36059 + bfd_boolean (*_bfd_copy_private_header_data)
36060 + (bfd *, bfd *);
36061 + /* Called to set private backend flags. */
36062 + bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
36063 +
36064 + /* Called to print private BFD data. */
36065 + bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
36066 +
36067 + /* Core file entry points. */
36068 +#define BFD_JUMP_TABLE_CORE(NAME) \
36069 + NAME##_core_file_failing_command, \
36070 + NAME##_core_file_failing_signal, \
36071 + NAME##_core_file_matches_executable_p
36072 +
36073 + char * (*_core_file_failing_command) (bfd *);
36074 + int (*_core_file_failing_signal) (bfd *);
36075 + bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
36076 +
36077 + /* Archive entry points. */
36078 +#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
36079 + NAME##_slurp_armap, \
36080 + NAME##_slurp_extended_name_table, \
36081 + NAME##_construct_extended_name_table, \
36082 + NAME##_truncate_arname, \
36083 + NAME##_write_armap, \
36084 + NAME##_read_ar_hdr, \
36085 + NAME##_openr_next_archived_file, \
36086 + NAME##_get_elt_at_index, \
36087 + NAME##_generic_stat_arch_elt, \
36088 + NAME##_update_armap_timestamp
36089 +
36090 + bfd_boolean (*_bfd_slurp_armap) (bfd *);
36091 + bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
36092 + bfd_boolean (*_bfd_construct_extended_name_table)
36093 + (bfd *, char **, bfd_size_type *, const char **);
36094 + void (*_bfd_truncate_arname) (bfd *, const char *, char *);
36095 + bfd_boolean (*write_armap)
36096 + (bfd *, unsigned int, struct orl *, unsigned int, int);
36097 + void * (*_bfd_read_ar_hdr_fn) (bfd *);
36098 + bfd * (*openr_next_archived_file) (bfd *, bfd *);
36099 +#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
36100 + bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
36101 + int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
36102 + bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
36103 +
36104 + /* Entry points used for symbols. */
36105 +#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
36106 + NAME##_get_symtab_upper_bound, \
36107 + NAME##_canonicalize_symtab, \
36108 + NAME##_make_empty_symbol, \
36109 + NAME##_print_symbol, \
36110 + NAME##_get_symbol_info, \
36111 + NAME##_bfd_is_local_label_name, \
36112 + NAME##_bfd_is_target_special_symbol, \
36113 + NAME##_get_lineno, \
36114 + NAME##_find_nearest_line, \
36115 + _bfd_generic_find_line, \
36116 + NAME##_find_inliner_info, \
36117 + NAME##_bfd_make_debug_symbol, \
36118 + NAME##_read_minisymbols, \
36119 + NAME##_minisymbol_to_symbol
36120 +
36121 + long (*_bfd_get_symtab_upper_bound) (bfd *);
36122 + long (*_bfd_canonicalize_symtab)
36123 + (bfd *, struct bfd_symbol **);
36124 + struct bfd_symbol *
36125 + (*_bfd_make_empty_symbol) (bfd *);
36126 + void (*_bfd_print_symbol)
36127 + (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
36128 +#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
36129 + void (*_bfd_get_symbol_info)
36130 + (bfd *, struct bfd_symbol *, symbol_info *);
36131 +#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
36132 + bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
36133 + bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
36134 + alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
36135 + bfd_boolean (*_bfd_find_nearest_line)
36136 + (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
36137 + const char **, const char **, unsigned int *);
36138 + bfd_boolean (*_bfd_find_line)
36139 + (bfd *, struct bfd_symbol **, struct bfd_symbol *,
36140 + const char **, unsigned int *);
36141 + bfd_boolean (*_bfd_find_inliner_info)
36142 + (bfd *, const char **, const char **, unsigned int *);
36143 + /* Back-door to allow format-aware applications to create debug symbols
36144 + while using BFD for everything else. Currently used by the assembler
36145 + when creating COFF files. */
36146 + asymbol * (*_bfd_make_debug_symbol)
36147 + (bfd *, void *, unsigned long size);
36148 +#define bfd_read_minisymbols(b, d, m, s) \
36149 + BFD_SEND (b, _read_minisymbols, (b, d, m, s))
36150 + long (*_read_minisymbols)
36151 + (bfd *, bfd_boolean, void **, unsigned int *);
36152 +#define bfd_minisymbol_to_symbol(b, d, m, f) \
36153 + BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
36154 + asymbol * (*_minisymbol_to_symbol)
36155 + (bfd *, bfd_boolean, const void *, asymbol *);
36156 +
36157 + /* Routines for relocs. */
36158 +#define BFD_JUMP_TABLE_RELOCS(NAME) \
36159 + NAME##_get_reloc_upper_bound, \
36160 + NAME##_canonicalize_reloc, \
36161 + NAME##_bfd_reloc_type_lookup, \
36162 + NAME##_bfd_reloc_name_lookup
36163 +
36164 + long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
36165 + long (*_bfd_canonicalize_reloc)
36166 + (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
36167 + /* See documentation on reloc types. */
36168 + reloc_howto_type *
36169 + (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
36170 + reloc_howto_type *
36171 + (*reloc_name_lookup) (bfd *, const char *);
36172 +
36173 +
36174 + /* Routines used when writing an object file. */
36175 +#define BFD_JUMP_TABLE_WRITE(NAME) \
36176 + NAME##_set_arch_mach, \
36177 + NAME##_set_section_contents
36178 +
36179 + bfd_boolean (*_bfd_set_arch_mach)
36180 + (bfd *, enum bfd_architecture, unsigned long);
36181 + bfd_boolean (*_bfd_set_section_contents)
36182 + (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
36183 +
36184 + /* Routines used by the linker. */
36185 +#define BFD_JUMP_TABLE_LINK(NAME) \
36186 + NAME##_sizeof_headers, \
36187 + NAME##_bfd_get_relocated_section_contents, \
36188 + NAME##_bfd_relax_section, \
36189 + NAME##_bfd_link_hash_table_create, \
36190 + NAME##_bfd_link_hash_table_free, \
36191 + NAME##_bfd_link_add_symbols, \
36192 + NAME##_bfd_link_just_syms, \
36193 + NAME##_bfd_final_link, \
36194 + NAME##_bfd_link_split_section, \
36195 + NAME##_bfd_gc_sections, \
36196 + NAME##_bfd_merge_sections, \
36197 + NAME##_bfd_is_group_section, \
36198 + NAME##_bfd_discard_group, \
36199 + NAME##_section_already_linked \
36200 +
36201 + int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
36202 + bfd_byte * (*_bfd_get_relocated_section_contents)
36203 + (bfd *, struct bfd_link_info *, struct bfd_link_order *,
36204 + bfd_byte *, bfd_boolean, struct bfd_symbol **);
36205 +
36206 + bfd_boolean (*_bfd_relax_section)
36207 + (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
36208 +
36209 + /* Create a hash table for the linker. Different backends store
36210 + different information in this table. */
36211 + struct bfd_link_hash_table *
36212 + (*_bfd_link_hash_table_create) (bfd *);
36213 +
36214 + /* Release the memory associated with the linker hash table. */
36215 + void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
36216 +
36217 + /* Add symbols from this object file into the hash table. */
36218 + bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
36219 +
36220 + /* Indicate that we are only retrieving symbol values from this section. */
36221 + void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
36222 +
36223 + /* Do a link based on the link_order structures attached to each
36224 + section of the BFD. */
36225 + bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
36226 +
36227 + /* Should this section be split up into smaller pieces during linking. */
36228 + bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
36229 +
36230 + /* Remove sections that are not referenced from the output. */
36231 + bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
36232 +
36233 + /* Attempt to merge SEC_MERGE sections. */
36234 + bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
36235 +
36236 + /* Is this section a member of a group? */
36237 + bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
36238 +
36239 + /* Discard members of a group. */
36240 + bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
36241 +
36242 + /* Check if SEC has been already linked during a reloceatable or
36243 + final link. */
36244 + void (*_section_already_linked) (bfd *, struct bfd_section *,
36245 + struct bfd_link_info *);
36246 +
36247 + /* Routines to handle dynamic symbols and relocs. */
36248 +#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
36249 + NAME##_get_dynamic_symtab_upper_bound, \
36250 + NAME##_canonicalize_dynamic_symtab, \
36251 + NAME##_get_synthetic_symtab, \
36252 + NAME##_get_dynamic_reloc_upper_bound, \
36253 + NAME##_canonicalize_dynamic_reloc
36254 +
36255 + /* Get the amount of memory required to hold the dynamic symbols. */
36256 + long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
36257 + /* Read in the dynamic symbols. */
36258 + long (*_bfd_canonicalize_dynamic_symtab)
36259 + (bfd *, struct bfd_symbol **);
36260 + /* Create synthetized symbols. */
36261 + long (*_bfd_get_synthetic_symtab)
36262 + (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
36263 + struct bfd_symbol **);
36264 + /* Get the amount of memory required to hold the dynamic relocs. */
36265 + long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
36266 + /* Read in the dynamic relocs. */
36267 + long (*_bfd_canonicalize_dynamic_reloc)
36268 + (bfd *, arelent **, struct bfd_symbol **);
36269 +
36270 + /* Opposite endian version of this target. */
36271 + const struct bfd_target * alternative_target;
36272 +
36273 + /* Data for use by back-end routines, which isn't
36274 + generic enough to belong in this structure. */
36275 + const void *backend_data;
36276 +
36277 +} bfd_target;
36278 +
36279 +bfd_boolean bfd_set_default_target (const char *name);
36280 +
36281 +const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
36282 +
36283 +const char ** bfd_target_list (void);
36284 +
36285 +const bfd_target *bfd_search_for_target
36286 + (int (*search_func) (const bfd_target *, void *),
36287 + void *);
36288 +
36289 +/* Extracted from format.c. */
36290 +bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
36291 +
36292 +bfd_boolean bfd_check_format_matches
36293 + (bfd *abfd, bfd_format format, char ***matching);
36294 +
36295 +bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
36296 +
36297 +const char *bfd_format_string (bfd_format format);
36298 +
36299 +/* Extracted from linker.c. */
36300 +bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
36301 +
36302 +#define bfd_link_split_section(abfd, sec) \
36303 + BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
36304 +
36305 +void bfd_section_already_linked (bfd *abfd, asection *sec,
36306 + struct bfd_link_info *info);
36307 +
36308 +#define bfd_section_already_linked(abfd, sec, info) \
36309 + BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
36310 +
36311 +/* Extracted from simple.c. */
36312 +bfd_byte *bfd_simple_get_relocated_section_contents
36313 + (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
36314 +
36315 +#ifdef __cplusplus
36316 +}
36317 +#endif
36318 +#endif
36319 Index: binutils-2.18/bfd/bfd_stdint.h
36320 ===================================================================
36321 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
36322 +++ binutils-2.18/bfd/bfd_stdint.h 2008-11-25 15:25:40.000000000 +0100
36323 @@ -0,0 +1,47 @@
36324 +/* generated for gcc (GCC) 4.2.4 (Ubuntu 4.2.4-3ubuntu4) */
36325 +
36326 +#ifndef GCC_GENERATED_STDINT_H
36327 +#define GCC_GENERATED_STDINT_H 1
36328 +
36329 +#include <sys/types.h>
36330 +#include <stdint.h>
36331 +/* glibc uses these symbols as guards to prevent redefinitions. */
36332 +#ifdef __int8_t_defined
36333 +#define _INT8_T
36334 +#define _INT16_T
36335 +#define _INT32_T
36336 +#endif
36337 +#ifdef __uint32_t_defined
36338 +#define _UINT32_T
36339 +#endif
36340 +
36341 +
36342 +/* Some systems have guard macros to prevent redefinitions, define them. */
36343 +#ifndef _INT8_T
36344 +#define _INT8_T
36345 +#endif
36346 +#ifndef _INT16_T
36347 +#define _INT16_T
36348 +#endif
36349 +#ifndef _INT32_T
36350 +#define _INT32_T
36351 +#endif
36352 +#ifndef _UINT8_T
36353 +#define _UINT8_T
36354 +#endif
36355 +#ifndef _UINT16_T
36356 +#define _UINT16_T
36357 +#endif
36358 +#ifndef _UINT32_T
36359 +#define _UINT32_T
36360 +#endif
36361 +
36362 +/* system headers have good uint64_t and int64_t */
36363 +#ifndef _INT64_T
36364 +#define _INT64_T
36365 +#endif
36366 +#ifndef _UINT64_T
36367 +#define _UINT64_T
36368 +#endif
36369 +
36370 +#endif /* GCC_GENERATED_STDINT_H */
36371 Index: binutils-2.18/bfd/configure
36372 ===================================================================
36373 --- binutils-2.18.orig/bfd/configure 2008-11-25 15:24:48.000000000 +0100
36374 +++ binutils-2.18/bfd/configure 2008-11-25 15:25:40.000000000 +0100
36375 @@ -19041,6 +19041,7 @@
36376 bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
36377 bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
36378 bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
36379 + bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
36380 bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
36381 bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
36382 bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
36383 Index: binutils-2.18/bfd/doc/bfd.h
36384 ===================================================================
36385 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
36386 +++ binutils-2.18/bfd/doc/bfd.h 2008-11-25 15:25:40.000000000 +0100
36387 @@ -0,0 +1,5493 @@
36388 +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
36389 + generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
36390 + "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
36391 + "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
36392 + "linker.c" and "simple.c".
36393 + Run "make headers" in your build bfd/ to regenerate. */
36394 +
36395 +/* Main header file for the bfd library -- portable access to object files.
36396 +
36397 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
36398 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
36399 + Free Software Foundation, Inc.
36400 +
36401 + Contributed by Cygnus Support.
36402 +
36403 + This file is part of BFD, the Binary File Descriptor library.
36404 +
36405 + This program is free software; you can redistribute it and/or modify
36406 + it under the terms of the GNU General Public License as published by
36407 + the Free Software Foundation; either version 3 of the License, or
36408 + (at your option) any later version.
36409 +
36410 + This program is distributed in the hope that it will be useful,
36411 + but WITHOUT ANY WARRANTY; without even the implied warranty of
36412 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36413 + GNU General Public License for more details.
36414 +
36415 + You should have received a copy of the GNU General Public License
36416 + along with this program; if not, write to the Free Software
36417 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
36418 +
36419 +#ifndef __BFD_H_SEEN__
36420 +#define __BFD_H_SEEN__
36421 +
36422 +#ifdef __cplusplus
36423 +extern "C" {
36424 +#endif
36425 +
36426 +#include "ansidecl.h"
36427 +#include "symcat.h"
36428 +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
36429 +#ifndef SABER
36430 +/* This hack is to avoid a problem with some strict ANSI C preprocessors.
36431 + The problem is, "32_" is not a valid preprocessing token, and we don't
36432 + want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will
36433 + cause the inner CONCAT2 macros to be evaluated first, producing
36434 + still-valid pp-tokens. Then the final concatenation can be done. */
36435 +#undef CONCAT4
36436 +#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
36437 +#endif
36438 +#endif
36439 +
36440 +/* This is a utility macro to handle the situation where the code
36441 + wants to place a constant string into the code, followed by a
36442 + comma and then the length of the string. Doing this by hand
36443 + is error prone, so using this macro is safer. The macro will
36444 + also safely handle the case where a NULL is passed as the arg. */
36445 +#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
36446 +/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
36447 + to create the arguments to another macro, since the preprocessor
36448 + will mis-count the number of arguments to the outer macro (by not
36449 + evaluating STRING_COMMA_LEN and so missing the comma). This is a
36450 + problem for example when trying to use STRING_COMMA_LEN to build
36451 + the arguments to the strncmp() macro. Hence this alternative
36452 + definition of strncmp is provided here.
36453 +
36454 + Note - these macros do NOT work if STR2 is not a constant string. */
36455 +#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
36456 + /* strcpy() can have a similar problem, but since we know we are
36457 + copying a constant string, we can use memcpy which will be faster
36458 + since there is no need to check for a NUL byte inside STR. We
36459 + can also save time if we do not need to copy the terminating NUL. */
36460 +#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
36461 +#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
36462 +
36463 +
36464 +/* The word size used by BFD on the host. This may be 64 with a 32
36465 + bit target if the host is 64 bit, or if other 64 bit targets have
36466 + been selected with --enable-targets, or if --enable-64-bit-bfd. */
36467 +#define BFD_ARCH_SIZE @wordsize@
36468 +
36469 +/* The word size of the default bfd target. */
36470 +#define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
36471 +
36472 +#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
36473 +#define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@
36474 +#define BFD_HOST_LONG_LONG @BFD_HOST_LONG_LONG@
36475 +#if @BFD_HOST_64_BIT_DEFINED@
36476 +#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
36477 +#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
36478 +typedef BFD_HOST_64_BIT bfd_int64_t;
36479 +typedef BFD_HOST_U_64_BIT bfd_uint64_t;
36480 +#endif
36481 +
36482 +#if BFD_ARCH_SIZE >= 64
36483 +#define BFD64
36484 +#endif
36485 +
36486 +#ifndef INLINE
36487 +#if __GNUC__ >= 2
36488 +#define INLINE __inline__
36489 +#else
36490 +#define INLINE
36491 +#endif
36492 +#endif
36493 +
36494 +/* Declaring a type wide enough to hold a host long and a host pointer. */
36495 +#define BFD_HOSTPTR_T @BFD_HOSTPTR_T@
36496 +typedef BFD_HOSTPTR_T bfd_hostptr_t;
36497 +
36498 +/* Forward declaration. */
36499 +typedef struct bfd bfd;
36500 +
36501 +/* Boolean type used in bfd. Too many systems define their own
36502 + versions of "boolean" for us to safely typedef a "boolean" of
36503 + our own. Using an enum for "bfd_boolean" has its own set of
36504 + problems, with strange looking casts required to avoid warnings
36505 + on some older compilers. Thus we just use an int.
36506 +
36507 + General rule: Functions which are bfd_boolean return TRUE on
36508 + success and FALSE on failure (unless they're a predicate). */
36509 +
36510 +typedef int bfd_boolean;
36511 +#undef FALSE
36512 +#undef TRUE
36513 +#define FALSE 0
36514 +#define TRUE 1
36515 +
36516 +#ifdef BFD64
36517 +
36518 +#ifndef BFD_HOST_64_BIT
36519 + #error No 64 bit integer type available
36520 +#endif /* ! defined (BFD_HOST_64_BIT) */
36521 +
36522 +typedef BFD_HOST_U_64_BIT bfd_vma;
36523 +typedef BFD_HOST_64_BIT bfd_signed_vma;
36524 +typedef BFD_HOST_U_64_BIT bfd_size_type;
36525 +typedef BFD_HOST_U_64_BIT symvalue;
36526 +
36527 +#ifndef fprintf_vma
36528 +#if BFD_HOST_64BIT_LONG
36529 +#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
36530 +#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
36531 +#elif BFD_HOST_64BIT_LONG_LONG
36532 +#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
36533 +#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
36534 +#else
36535 +#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
36536 +#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
36537 +#define fprintf_vma(s,x) \
36538 + fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
36539 +#define sprintf_vma(s,x) \
36540 + sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
36541 +#endif
36542 +#endif
36543 +
36544 +#else /* not BFD64 */
36545 +
36546 +/* Represent a target address. Also used as a generic unsigned type
36547 + which is guaranteed to be big enough to hold any arithmetic types
36548 + we need to deal with. */
36549 +typedef unsigned long bfd_vma;
36550 +
36551 +/* A generic signed type which is guaranteed to be big enough to hold any
36552 + arithmetic types we need to deal with. Can be assumed to be compatible
36553 + with bfd_vma in the same way that signed and unsigned ints are compatible
36554 + (as parameters, in assignment, etc). */
36555 +typedef long bfd_signed_vma;
36556 +
36557 +typedef unsigned long symvalue;
36558 +typedef unsigned long bfd_size_type;
36559 +
36560 +/* Print a bfd_vma x on stream s. */
36561 +#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
36562 +#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
36563 +
36564 +#endif /* not BFD64 */
36565 +
36566 +#define HALF_BFD_SIZE_TYPE \
36567 + (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
36568 +
36569 +#ifndef BFD_HOST_64_BIT
36570 +/* Fall back on a 32 bit type. The idea is to make these types always
36571 + available for function return types, but in the case that
36572 + BFD_HOST_64_BIT is undefined such a function should abort or
36573 + otherwise signal an error. */
36574 +typedef bfd_signed_vma bfd_int64_t;
36575 +typedef bfd_vma bfd_uint64_t;
36576 +#endif
36577 +
36578 +/* An offset into a file. BFD always uses the largest possible offset
36579 + based on the build time availability of fseek, fseeko, or fseeko64. */
36580 +typedef @bfd_file_ptr@ file_ptr;
36581 +typedef unsigned @bfd_file_ptr@ ufile_ptr;
36582 +
36583 +extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
36584 +extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
36585 +
36586 +#define printf_vma(x) fprintf_vma(stdout,x)
36587 +#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
36588 +
36589 +typedef unsigned int flagword; /* 32 bits of flags */
36590 +typedef unsigned char bfd_byte;
36591 +\f
36592 +/* File formats. */
36593 +
36594 +typedef enum bfd_format
36595 +{
36596 + bfd_unknown = 0, /* File format is unknown. */
36597 + bfd_object, /* Linker/assembler/compiler output. */
36598 + bfd_archive, /* Object archive file. */
36599 + bfd_core, /* Core dump. */
36600 + bfd_type_end /* Marks the end; don't use it! */
36601 +}
36602 +bfd_format;
36603 +
36604 +/* Values that may appear in the flags field of a BFD. These also
36605 + appear in the object_flags field of the bfd_target structure, where
36606 + they indicate the set of flags used by that backend (not all flags
36607 + are meaningful for all object file formats) (FIXME: at the moment,
36608 + the object_flags values have mostly just been copied from backend
36609 + to another, and are not necessarily correct). */
36610 +
36611 +/* No flags. */
36612 +#define BFD_NO_FLAGS 0x00
36613 +
36614 +/* BFD contains relocation entries. */
36615 +#define HAS_RELOC 0x01
36616 +
36617 +/* BFD is directly executable. */
36618 +#define EXEC_P 0x02
36619 +
36620 +/* BFD has line number information (basically used for F_LNNO in a
36621 + COFF header). */
36622 +#define HAS_LINENO 0x04
36623 +
36624 +/* BFD has debugging information. */
36625 +#define HAS_DEBUG 0x08
36626 +
36627 +/* BFD has symbols. */
36628 +#define HAS_SYMS 0x10
36629 +
36630 +/* BFD has local symbols (basically used for F_LSYMS in a COFF
36631 + header). */
36632 +#define HAS_LOCALS 0x20
36633 +
36634 +/* BFD is a dynamic object. */
36635 +#define DYNAMIC 0x40
36636 +
36637 +/* Text section is write protected (if D_PAGED is not set, this is
36638 + like an a.out NMAGIC file) (the linker sets this by default, but
36639 + clears it for -r or -N). */
36640 +#define WP_TEXT 0x80
36641 +
36642 +/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
36643 + linker sets this by default, but clears it for -r or -n or -N). */
36644 +#define D_PAGED 0x100
36645 +
36646 +/* BFD is relaxable (this means that bfd_relax_section may be able to
36647 + do something) (sometimes bfd_relax_section can do something even if
36648 + this is not set). */
36649 +#define BFD_IS_RELAXABLE 0x200
36650 +
36651 +/* This may be set before writing out a BFD to request using a
36652 + traditional format. For example, this is used to request that when
36653 + writing out an a.out object the symbols not be hashed to eliminate
36654 + duplicates. */
36655 +#define BFD_TRADITIONAL_FORMAT 0x400
36656 +
36657 +/* This flag indicates that the BFD contents are actually cached in
36658 + memory. If this is set, iostream points to a bfd_in_memory struct. */
36659 +#define BFD_IN_MEMORY 0x800
36660 +
36661 +/* The sections in this BFD specify a memory page. */
36662 +#define HAS_LOAD_PAGE 0x1000
36663 +
36664 +/* This BFD has been created by the linker and doesn't correspond
36665 + to any input file. */
36666 +#define BFD_LINKER_CREATED 0x2000
36667 +\f
36668 +/* Symbols and relocation. */
36669 +
36670 +/* A count of carsyms (canonical archive symbols). */
36671 +typedef unsigned long symindex;
36672 +
36673 +/* How to perform a relocation. */
36674 +typedef const struct reloc_howto_struct reloc_howto_type;
36675 +
36676 +#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
36677 +
36678 +/* General purpose part of a symbol X;
36679 + target specific parts are in libcoff.h, libaout.h, etc. */
36680 +
36681 +#define bfd_get_section(x) ((x)->section)
36682 +#define bfd_get_output_section(x) ((x)->section->output_section)
36683 +#define bfd_set_section(x,y) ((x)->section) = (y)
36684 +#define bfd_asymbol_base(x) ((x)->section->vma)
36685 +#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
36686 +#define bfd_asymbol_name(x) ((x)->name)
36687 +/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
36688 +#define bfd_asymbol_bfd(x) ((x)->the_bfd)
36689 +#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
36690 +
36691 +/* A canonical archive symbol. */
36692 +/* This is a type pun with struct ranlib on purpose! */
36693 +typedef struct carsym
36694 +{
36695 + char *name;
36696 + file_ptr file_offset; /* Look here to find the file. */
36697 +}
36698 +carsym; /* To make these you call a carsymogen. */
36699 +
36700 +/* Used in generating armaps (archive tables of contents).
36701 + Perhaps just a forward definition would do? */
36702 +struct orl /* Output ranlib. */
36703 +{
36704 + char **name; /* Symbol name. */
36705 + union
36706 + {
36707 + file_ptr pos;
36708 + bfd *abfd;
36709 + } u; /* bfd* or file position. */
36710 + int namidx; /* Index into string table. */
36711 +};
36712 +\f
36713 +/* Linenumber stuff. */
36714 +typedef struct lineno_cache_entry
36715 +{
36716 + unsigned int line_number; /* Linenumber from start of function. */
36717 + union
36718 + {
36719 + struct bfd_symbol *sym; /* Function name. */
36720 + bfd_vma offset; /* Offset into section. */
36721 + } u;
36722 +}
36723 +alent;
36724 +\f
36725 +/* Object and core file sections. */
36726 +
36727 +#define align_power(addr, align) \
36728 + (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
36729 +
36730 +typedef struct bfd_section *sec_ptr;
36731 +
36732 +#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
36733 +#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
36734 +#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
36735 +#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
36736 +#define bfd_section_name(bfd, ptr) ((ptr)->name)
36737 +#define bfd_section_size(bfd, ptr) ((ptr)->size)
36738 +#define bfd_get_section_size(ptr) ((ptr)->size)
36739 +#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
36740 +#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
36741 +#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
36742 +#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
36743 +#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
36744 +
36745 +#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
36746 +
36747 +#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
36748 +#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
36749 +#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
36750 +/* Find the address one past the end of SEC. */
36751 +#define bfd_get_section_limit(bfd, sec) \
36752 + (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
36753 + / bfd_octets_per_byte (bfd))
36754 +
36755 +/* Return TRUE if section has been discarded. */
36756 +#define elf_discarded_section(sec) \
36757 + (!bfd_is_abs_section (sec) \
36758 + && bfd_is_abs_section ((sec)->output_section) \
36759 + && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \
36760 + && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
36761 +
36762 +/* Forward define. */
36763 +struct stat;
36764 +\f
36765 +typedef enum bfd_print_symbol
36766 +{
36767 + bfd_print_symbol_name,
36768 + bfd_print_symbol_more,
36769 + bfd_print_symbol_all
36770 +} bfd_print_symbol_type;
36771 +
36772 +/* Information about a symbol that nm needs. */
36773 +
36774 +typedef struct _symbol_info
36775 +{
36776 + symvalue value;
36777 + char type;
36778 + const char *name; /* Symbol name. */
36779 + unsigned char stab_type; /* Stab type. */
36780 + char stab_other; /* Stab other. */
36781 + short stab_desc; /* Stab desc. */
36782 + const char *stab_name; /* String for stab type. */
36783 +} symbol_info;
36784 +
36785 +/* Get the name of a stabs type code. */
36786 +
36787 +extern const char *bfd_get_stab_name (int);
36788 +\f
36789 +/* Hash table routines. There is no way to free up a hash table. */
36790 +
36791 +/* An element in the hash table. Most uses will actually use a larger
36792 + structure, and an instance of this will be the first field. */
36793 +
36794 +struct bfd_hash_entry
36795 +{
36796 + /* Next entry for this hash code. */
36797 + struct bfd_hash_entry *next;
36798 + /* String being hashed. */
36799 + const char *string;
36800 + /* Hash code. This is the full hash code, not the index into the
36801 + table. */
36802 + unsigned long hash;
36803 +};
36804 +
36805 +/* A hash table. */
36806 +
36807 +struct bfd_hash_table
36808 +{
36809 + /* The hash array. */
36810 + struct bfd_hash_entry **table;
36811 + /* A function used to create new elements in the hash table. The
36812 + first entry is itself a pointer to an element. When this
36813 + function is first invoked, this pointer will be NULL. However,
36814 + having the pointer permits a hierarchy of method functions to be
36815 + built each of which calls the function in the superclass. Thus
36816 + each function should be written to allocate a new block of memory
36817 + only if the argument is NULL. */
36818 + struct bfd_hash_entry *(*newfunc)
36819 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
36820 + /* An objalloc for this hash table. This is a struct objalloc *,
36821 + but we use void * to avoid requiring the inclusion of objalloc.h. */
36822 + void *memory;
36823 + /* The number of slots in the hash table. */
36824 + unsigned int size;
36825 + /* The number of entries in the hash table. */
36826 + unsigned int count;
36827 + /* The size of elements. */
36828 + unsigned int entsize;
36829 + /* If non-zero, don't grow the hash table. */
36830 + unsigned int frozen:1;
36831 +};
36832 +
36833 +/* Initialize a hash table. */
36834 +extern bfd_boolean bfd_hash_table_init
36835 + (struct bfd_hash_table *,
36836 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
36837 + struct bfd_hash_table *,
36838 + const char *),
36839 + unsigned int);
36840 +
36841 +/* Initialize a hash table specifying a size. */
36842 +extern bfd_boolean bfd_hash_table_init_n
36843 + (struct bfd_hash_table *,
36844 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
36845 + struct bfd_hash_table *,
36846 + const char *),
36847 + unsigned int, unsigned int);
36848 +
36849 +/* Free up a hash table. */
36850 +extern void bfd_hash_table_free
36851 + (struct bfd_hash_table *);
36852 +
36853 +/* Look up a string in a hash table. If CREATE is TRUE, a new entry
36854 + will be created for this string if one does not already exist. The
36855 + COPY argument must be TRUE if this routine should copy the string
36856 + into newly allocated memory when adding an entry. */
36857 +extern struct bfd_hash_entry *bfd_hash_lookup
36858 + (struct bfd_hash_table *, const char *, bfd_boolean create,
36859 + bfd_boolean copy);
36860 +
36861 +/* Replace an entry in a hash table. */
36862 +extern void bfd_hash_replace
36863 + (struct bfd_hash_table *, struct bfd_hash_entry *old,
36864 + struct bfd_hash_entry *nw);
36865 +
36866 +/* Base method for creating a hash table entry. */
36867 +extern struct bfd_hash_entry *bfd_hash_newfunc
36868 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
36869 +
36870 +/* Grab some space for a hash table entry. */
36871 +extern void *bfd_hash_allocate
36872 + (struct bfd_hash_table *, unsigned int);
36873 +
36874 +/* Traverse a hash table in a random order, calling a function on each
36875 + element. If the function returns FALSE, the traversal stops. The
36876 + INFO argument is passed to the function. */
36877 +extern void bfd_hash_traverse
36878 + (struct bfd_hash_table *,
36879 + bfd_boolean (*) (struct bfd_hash_entry *, void *),
36880 + void *info);
36881 +
36882 +/* Allows the default size of a hash table to be configured. New hash
36883 + tables allocated using bfd_hash_table_init will be created with
36884 + this size. */
36885 +extern void bfd_hash_set_default_size (bfd_size_type);
36886 +
36887 +/* This structure is used to keep track of stabs in sections
36888 + information while linking. */
36889 +
36890 +struct stab_info
36891 +{
36892 + /* A hash table used to hold stabs strings. */
36893 + struct bfd_strtab_hash *strings;
36894 + /* The header file hash table. */
36895 + struct bfd_hash_table includes;
36896 + /* The first .stabstr section. */
36897 + struct bfd_section *stabstr;
36898 +};
36899 +
36900 +#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
36901 +
36902 +/* User program access to BFD facilities. */
36903 +
36904 +/* Direct I/O routines, for programs which know more about the object
36905 + file than BFD does. Use higher level routines if possible. */
36906 +
36907 +extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
36908 +extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
36909 +extern int bfd_seek (bfd *, file_ptr, int);
36910 +extern file_ptr bfd_tell (bfd *);
36911 +extern int bfd_flush (bfd *);
36912 +extern int bfd_stat (bfd *, struct stat *);
36913 +
36914 +/* Deprecated old routines. */
36915 +#if __GNUC__
36916 +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
36917 + (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
36918 + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
36919 +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
36920 + (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
36921 + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
36922 +#else
36923 +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
36924 + (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
36925 + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
36926 +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
36927 + (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
36928 + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
36929 +#endif
36930 +extern void warn_deprecated (const char *, const char *, int, const char *);
36931 +
36932 +/* Cast from const char * to char * so that caller can assign to
36933 + a char * without a warning. */
36934 +#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
36935 +#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
36936 +#define bfd_get_format(abfd) ((abfd)->format)
36937 +#define bfd_get_target(abfd) ((abfd)->xvec->name)
36938 +#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
36939 +#define bfd_family_coff(abfd) \
36940 + (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
36941 + bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
36942 +#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
36943 +#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
36944 +#define bfd_header_big_endian(abfd) \
36945 + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
36946 +#define bfd_header_little_endian(abfd) \
36947 + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
36948 +#define bfd_get_file_flags(abfd) ((abfd)->flags)
36949 +#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
36950 +#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
36951 +#define bfd_my_archive(abfd) ((abfd)->my_archive)
36952 +#define bfd_has_map(abfd) ((abfd)->has_armap)
36953 +
36954 +#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
36955 +#define bfd_usrdata(abfd) ((abfd)->usrdata)
36956 +
36957 +#define bfd_get_start_address(abfd) ((abfd)->start_address)
36958 +#define bfd_get_symcount(abfd) ((abfd)->symcount)
36959 +#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
36960 +#define bfd_count_sections(abfd) ((abfd)->section_count)
36961 +
36962 +#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
36963 +
36964 +#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
36965 +
36966 +#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
36967 +
36968 +extern bfd_boolean bfd_cache_close
36969 + (bfd *abfd);
36970 +/* NB: This declaration should match the autogenerated one in libbfd.h. */
36971 +
36972 +extern bfd_boolean bfd_cache_close_all (void);
36973 +
36974 +extern bfd_boolean bfd_record_phdr
36975 + (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
36976 + bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
36977 +
36978 +/* Byte swapping routines. */
36979 +
36980 +bfd_uint64_t bfd_getb64 (const void *);
36981 +bfd_uint64_t bfd_getl64 (const void *);
36982 +bfd_int64_t bfd_getb_signed_64 (const void *);
36983 +bfd_int64_t bfd_getl_signed_64 (const void *);
36984 +bfd_vma bfd_getb32 (const void *);
36985 +bfd_vma bfd_getl32 (const void *);
36986 +bfd_signed_vma bfd_getb_signed_32 (const void *);
36987 +bfd_signed_vma bfd_getl_signed_32 (const void *);
36988 +bfd_vma bfd_getb16 (const void *);
36989 +bfd_vma bfd_getl16 (const void *);
36990 +bfd_signed_vma bfd_getb_signed_16 (const void *);
36991 +bfd_signed_vma bfd_getl_signed_16 (const void *);
36992 +void bfd_putb64 (bfd_uint64_t, void *);
36993 +void bfd_putl64 (bfd_uint64_t, void *);
36994 +void bfd_putb32 (bfd_vma, void *);
36995 +void bfd_putl32 (bfd_vma, void *);
36996 +void bfd_putb16 (bfd_vma, void *);
36997 +void bfd_putl16 (bfd_vma, void *);
36998 +
36999 +/* Byte swapping routines which take size and endiannes as arguments. */
37000 +
37001 +bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
37002 +void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
37003 +
37004 +extern bfd_boolean bfd_section_already_linked_table_init (void);
37005 +extern void bfd_section_already_linked_table_free (void);
37006 +\f
37007 +/* Externally visible ECOFF routines. */
37008 +
37009 +#if defined(__STDC__) || defined(ALMOST_STDC)
37010 +struct ecoff_debug_info;
37011 +struct ecoff_debug_swap;
37012 +struct ecoff_extr;
37013 +struct bfd_symbol;
37014 +struct bfd_link_info;
37015 +struct bfd_link_hash_entry;
37016 +struct bfd_elf_version_tree;
37017 +#endif
37018 +extern bfd_vma bfd_ecoff_get_gp_value
37019 + (bfd * abfd);
37020 +extern bfd_boolean bfd_ecoff_set_gp_value
37021 + (bfd *abfd, bfd_vma gp_value);
37022 +extern bfd_boolean bfd_ecoff_set_regmasks
37023 + (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
37024 + unsigned long *cprmask);
37025 +extern void *bfd_ecoff_debug_init
37026 + (bfd *output_bfd, struct ecoff_debug_info *output_debug,
37027 + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
37028 +extern void bfd_ecoff_debug_free
37029 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
37030 + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
37031 +extern bfd_boolean bfd_ecoff_debug_accumulate
37032 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
37033 + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
37034 + struct ecoff_debug_info *input_debug,
37035 + const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
37036 +extern bfd_boolean bfd_ecoff_debug_accumulate_other
37037 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
37038 + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
37039 + struct bfd_link_info *);
37040 +extern bfd_boolean bfd_ecoff_debug_externals
37041 + (bfd *abfd, struct ecoff_debug_info *debug,
37042 + const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
37043 + bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
37044 + void (*set_index) (struct bfd_symbol *, bfd_size_type));
37045 +extern bfd_boolean bfd_ecoff_debug_one_external
37046 + (bfd *abfd, struct ecoff_debug_info *debug,
37047 + const struct ecoff_debug_swap *swap, const char *name,
37048 + struct ecoff_extr *esym);
37049 +extern bfd_size_type bfd_ecoff_debug_size
37050 + (bfd *abfd, struct ecoff_debug_info *debug,
37051 + const struct ecoff_debug_swap *swap);
37052 +extern bfd_boolean bfd_ecoff_write_debug
37053 + (bfd *abfd, struct ecoff_debug_info *debug,
37054 + const struct ecoff_debug_swap *swap, file_ptr where);
37055 +extern bfd_boolean bfd_ecoff_write_accumulated_debug
37056 + (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
37057 + const struct ecoff_debug_swap *swap,
37058 + struct bfd_link_info *info, file_ptr where);
37059 +
37060 +/* Externally visible ELF routines. */
37061 +
37062 +struct bfd_link_needed_list
37063 +{
37064 + struct bfd_link_needed_list *next;
37065 + bfd *by;
37066 + const char *name;
37067 +};
37068 +
37069 +enum dynamic_lib_link_class {
37070 + DYN_NORMAL = 0,
37071 + DYN_AS_NEEDED = 1,
37072 + DYN_DT_NEEDED = 2,
37073 + DYN_NO_ADD_NEEDED = 4,
37074 + DYN_NO_NEEDED = 8
37075 +};
37076 +
37077 +enum notice_asneeded_action {
37078 + notice_as_needed,
37079 + notice_not_needed,
37080 + notice_needed
37081 +};
37082 +
37083 +extern bfd_boolean bfd_elf_record_link_assignment
37084 + (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
37085 + bfd_boolean);
37086 +extern struct bfd_link_needed_list *bfd_elf_get_needed_list
37087 + (bfd *, struct bfd_link_info *);
37088 +extern bfd_boolean bfd_elf_get_bfd_needed_list
37089 + (bfd *, struct bfd_link_needed_list **);
37090 +extern bfd_boolean bfd_elf_size_dynamic_sections
37091 + (bfd *, const char *, const char *, const char *, const char * const *,
37092 + struct bfd_link_info *, struct bfd_section **,
37093 + struct bfd_elf_version_tree *);
37094 +extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
37095 + (bfd *, struct bfd_link_info *);
37096 +extern void bfd_elf_set_dt_needed_name
37097 + (bfd *, const char *);
37098 +extern const char *bfd_elf_get_dt_soname
37099 + (bfd *);
37100 +extern void bfd_elf_set_dyn_lib_class
37101 + (bfd *, enum dynamic_lib_link_class);
37102 +extern int bfd_elf_get_dyn_lib_class
37103 + (bfd *);
37104 +extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
37105 + (bfd *, struct bfd_link_info *);
37106 +extern bfd_boolean bfd_elf_discard_info
37107 + (bfd *, struct bfd_link_info *);
37108 +extern unsigned int _bfd_elf_default_action_discarded
37109 + (struct bfd_section *);
37110 +
37111 +/* Return an upper bound on the number of bytes required to store a
37112 + copy of ABFD's program header table entries. Return -1 if an error
37113 + occurs; bfd_get_error will return an appropriate code. */
37114 +extern long bfd_get_elf_phdr_upper_bound
37115 + (bfd *abfd);
37116 +
37117 +/* Copy ABFD's program header table entries to *PHDRS. The entries
37118 + will be stored as an array of Elf_Internal_Phdr structures, as
37119 + defined in include/elf/internal.h. To find out how large the
37120 + buffer needs to be, call bfd_get_elf_phdr_upper_bound.
37121 +
37122 + Return the number of program header table entries read, or -1 if an
37123 + error occurs; bfd_get_error will return an appropriate code. */
37124 +extern int bfd_get_elf_phdrs
37125 + (bfd *abfd, void *phdrs);
37126 +
37127 +/* Create a new BFD as if by bfd_openr. Rather than opening a file,
37128 + reconstruct an ELF file by reading the segments out of remote memory
37129 + based on the ELF file header at EHDR_VMA and the ELF program headers it
37130 + points to. If not null, *LOADBASEP is filled in with the difference
37131 + between the VMAs from which the segments were read, and the VMAs the
37132 + file headers (and hence BFD's idea of each section's VMA) put them at.
37133 +
37134 + The function TARGET_READ_MEMORY is called to copy LEN bytes from the
37135 + remote memory at target address VMA into the local buffer at MYADDR; it
37136 + should return zero on success or an `errno' code on failure. TEMPL must
37137 + be a BFD for an ELF target with the word size and byte order found in
37138 + the remote memory. */
37139 +extern bfd *bfd_elf_bfd_from_remote_memory
37140 + (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
37141 + int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
37142 +
37143 +/* Return the arch_size field of an elf bfd, or -1 if not elf. */
37144 +extern int bfd_get_arch_size
37145 + (bfd *);
37146 +
37147 +/* Return TRUE if address "naturally" sign extends, or -1 if not elf. */
37148 +extern int bfd_get_sign_extend_vma
37149 + (bfd *);
37150 +
37151 +extern struct bfd_section *_bfd_elf_tls_setup
37152 + (bfd *, struct bfd_link_info *);
37153 +
37154 +extern void _bfd_fix_excluded_sec_syms
37155 + (bfd *, struct bfd_link_info *);
37156 +
37157 +extern unsigned bfd_m68k_mach_to_features (int);
37158 +
37159 +extern int bfd_m68k_features_to_mach (unsigned);
37160 +
37161 +extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
37162 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
37163 + char **);
37164 +
37165 +extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
37166 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
37167 + char **);
37168 +
37169 +/* SunOS shared library support routines for the linker. */
37170 +
37171 +extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
37172 + (bfd *, struct bfd_link_info *);
37173 +extern bfd_boolean bfd_sunos_record_link_assignment
37174 + (bfd *, struct bfd_link_info *, const char *);
37175 +extern bfd_boolean bfd_sunos_size_dynamic_sections
37176 + (bfd *, struct bfd_link_info *, struct bfd_section **,
37177 + struct bfd_section **, struct bfd_section **);
37178 +
37179 +/* Linux shared library support routines for the linker. */
37180 +
37181 +extern bfd_boolean bfd_i386linux_size_dynamic_sections
37182 + (bfd *, struct bfd_link_info *);
37183 +extern bfd_boolean bfd_m68klinux_size_dynamic_sections
37184 + (bfd *, struct bfd_link_info *);
37185 +extern bfd_boolean bfd_sparclinux_size_dynamic_sections
37186 + (bfd *, struct bfd_link_info *);
37187 +
37188 +/* mmap hacks */
37189 +
37190 +struct _bfd_window_internal;
37191 +typedef struct _bfd_window_internal bfd_window_internal;
37192 +
37193 +typedef struct _bfd_window
37194 +{
37195 + /* What the user asked for. */
37196 + void *data;
37197 + bfd_size_type size;
37198 + /* The actual window used by BFD. Small user-requested read-only
37199 + regions sharing a page may share a single window into the object
37200 + file. Read-write versions shouldn't until I've fixed things to
37201 + keep track of which portions have been claimed by the
37202 + application; don't want to give the same region back when the
37203 + application wants two writable copies! */
37204 + struct _bfd_window_internal *i;
37205 +}
37206 +bfd_window;
37207 +
37208 +extern void bfd_init_window
37209 + (bfd_window *);
37210 +extern void bfd_free_window
37211 + (bfd_window *);
37212 +extern bfd_boolean bfd_get_file_window
37213 + (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
37214 +
37215 +/* XCOFF support routines for the linker. */
37216 +
37217 +extern bfd_boolean bfd_xcoff_link_record_set
37218 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
37219 +extern bfd_boolean bfd_xcoff_import_symbol
37220 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
37221 + const char *, const char *, const char *, unsigned int);
37222 +extern bfd_boolean bfd_xcoff_export_symbol
37223 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
37224 +extern bfd_boolean bfd_xcoff_link_count_reloc
37225 + (bfd *, struct bfd_link_info *, const char *);
37226 +extern bfd_boolean bfd_xcoff_record_link_assignment
37227 + (bfd *, struct bfd_link_info *, const char *);
37228 +extern bfd_boolean bfd_xcoff_size_dynamic_sections
37229 + (bfd *, struct bfd_link_info *, const char *, const char *,
37230 + unsigned long, unsigned long, unsigned long, bfd_boolean,
37231 + int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
37232 +extern bfd_boolean bfd_xcoff_link_generate_rtinit
37233 + (bfd *, const char *, const char *, bfd_boolean);
37234 +
37235 +/* XCOFF support routines for ar. */
37236 +extern bfd_boolean bfd_xcoff_ar_archive_set_magic
37237 + (bfd *, char *);
37238 +
37239 +/* Externally visible COFF routines. */
37240 +
37241 +#if defined(__STDC__) || defined(ALMOST_STDC)
37242 +struct internal_syment;
37243 +union internal_auxent;
37244 +#endif
37245 +
37246 +extern bfd_boolean bfd_coff_get_syment
37247 + (bfd *, struct bfd_symbol *, struct internal_syment *);
37248 +
37249 +extern bfd_boolean bfd_coff_get_auxent
37250 + (bfd *, struct bfd_symbol *, int, union internal_auxent *);
37251 +
37252 +extern bfd_boolean bfd_coff_set_symbol_class
37253 + (bfd *, struct bfd_symbol *, unsigned int);
37254 +
37255 +extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
37256 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
37257 +
37258 +/* ARM VFP11 erratum workaround support. */
37259 +typedef enum
37260 +{
37261 + BFD_ARM_VFP11_FIX_DEFAULT,
37262 + BFD_ARM_VFP11_FIX_NONE,
37263 + BFD_ARM_VFP11_FIX_SCALAR,
37264 + BFD_ARM_VFP11_FIX_VECTOR
37265 +} bfd_arm_vfp11_fix;
37266 +
37267 +extern void bfd_elf32_arm_init_maps
37268 + (bfd *);
37269 +
37270 +extern void bfd_elf32_arm_set_vfp11_fix
37271 + (bfd *, struct bfd_link_info *);
37272 +
37273 +extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
37274 + (bfd *, struct bfd_link_info *);
37275 +
37276 +extern void bfd_elf32_arm_vfp11_fix_veneer_locations
37277 + (bfd *, struct bfd_link_info *);
37278 +
37279 +/* ARM Interworking support. Called from linker. */
37280 +extern bfd_boolean bfd_arm_allocate_interworking_sections
37281 + (struct bfd_link_info *);
37282 +
37283 +extern bfd_boolean bfd_arm_process_before_allocation
37284 + (bfd *, struct bfd_link_info *, int);
37285 +
37286 +extern bfd_boolean bfd_arm_get_bfd_for_interworking
37287 + (bfd *, struct bfd_link_info *);
37288 +
37289 +/* PE ARM Interworking support. Called from linker. */
37290 +extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
37291 + (struct bfd_link_info *);
37292 +
37293 +extern bfd_boolean bfd_arm_pe_process_before_allocation
37294 + (bfd *, struct bfd_link_info *, int);
37295 +
37296 +extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
37297 + (bfd *, struct bfd_link_info *);
37298 +
37299 +/* ELF ARM Interworking support. Called from linker. */
37300 +extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
37301 + (struct bfd_link_info *);
37302 +
37303 +extern bfd_boolean bfd_elf32_arm_process_before_allocation
37304 + (bfd *, struct bfd_link_info *);
37305 +
37306 +void bfd_elf32_arm_set_target_relocs
37307 + (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
37308 + int, int);
37309 +
37310 +extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
37311 + (bfd *, struct bfd_link_info *);
37312 +
37313 +extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
37314 + (bfd *, struct bfd_link_info *);
37315 +
37316 +/* ELF ARM mapping symbol support */
37317 +#define BFD_ARM_SPECIAL_SYM_TYPE_MAP (1 << 0)
37318 +#define BFD_ARM_SPECIAL_SYM_TYPE_TAG (1 << 1)
37319 +#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER (1 << 2)
37320 +#define BFD_ARM_SPECIAL_SYM_TYPE_ANY (~0)
37321 +extern bfd_boolean bfd_is_arm_special_symbol_name
37322 + (const char * name, int type);
37323 +
37324 +extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
37325 +
37326 +/* ARM Note section processing. */
37327 +extern bfd_boolean bfd_arm_merge_machines
37328 + (bfd *, bfd *);
37329 +
37330 +extern bfd_boolean bfd_arm_update_notes
37331 + (bfd *, const char *);
37332 +
37333 +extern unsigned int bfd_arm_get_mach_from_notes
37334 + (bfd *, const char *);
37335 +
37336 +/* TI COFF load page support. */
37337 +extern void bfd_ticoff_set_section_load_page
37338 + (struct bfd_section *, int);
37339 +
37340 +extern int bfd_ticoff_get_section_load_page
37341 + (struct bfd_section *);
37342 +
37343 +/* H8/300 functions. */
37344 +extern bfd_vma bfd_h8300_pad_address
37345 + (bfd *, bfd_vma);
37346 +
37347 +/* IA64 Itanium code generation. Called from linker. */
37348 +extern void bfd_elf32_ia64_after_parse
37349 + (int);
37350 +
37351 +extern void bfd_elf64_ia64_after_parse
37352 + (int);
37353 +
37354 +/* This structure is used for a comdat section, as in PE. A comdat
37355 + section is associated with a particular symbol. When the linker
37356 + sees a comdat section, it keeps only one of the sections with a
37357 + given name and associated with a given symbol. */
37358 +
37359 +struct coff_comdat_info
37360 +{
37361 + /* The name of the symbol associated with a comdat section. */
37362 + const char *name;
37363 +
37364 + /* The local symbol table index of the symbol associated with a
37365 + comdat section. This is only meaningful to the object file format
37366 + specific code; it is not an index into the list returned by
37367 + bfd_canonicalize_symtab. */
37368 + long symbol;
37369 +};
37370 +
37371 +extern struct coff_comdat_info *bfd_coff_get_comdat_section
37372 + (bfd *, struct bfd_section *);
37373 +
37374 +/* Extracted from init.c. */
37375 +void bfd_init (void);
37376 +
37377 +/* Extracted from opncls.c. */
37378 +bfd *bfd_fopen (const char *filename, const char *target,
37379 + const char *mode, int fd);
37380 +
37381 +bfd *bfd_openr (const char *filename, const char *target);
37382 +
37383 +bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
37384 +
37385 +bfd *bfd_openstreamr (const char *, const char *, void *);
37386 +
37387 +bfd *bfd_openr_iovec (const char *filename, const char *target,
37388 + void *(*open) (struct bfd *nbfd,
37389 + void *open_closure),
37390 + void *open_closure,
37391 + file_ptr (*pread) (struct bfd *nbfd,
37392 + void *stream,
37393 + void *buf,
37394 + file_ptr nbytes,
37395 + file_ptr offset),
37396 + int (*close) (struct bfd *nbfd,
37397 + void *stream),
37398 + int (*stat) (struct bfd *abfd,
37399 + void *stream,
37400 + struct stat *sb));
37401 +
37402 +bfd *bfd_openw (const char *filename, const char *target);
37403 +
37404 +bfd_boolean bfd_close (bfd *abfd);
37405 +
37406 +bfd_boolean bfd_close_all_done (bfd *);
37407 +
37408 +bfd *bfd_create (const char *filename, bfd *templ);
37409 +
37410 +bfd_boolean bfd_make_writable (bfd *abfd);
37411 +
37412 +bfd_boolean bfd_make_readable (bfd *abfd);
37413 +
37414 +unsigned long bfd_calc_gnu_debuglink_crc32
37415 + (unsigned long crc, const unsigned char *buf, bfd_size_type len);
37416 +
37417 +char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
37418 +
37419 +struct bfd_section *bfd_create_gnu_debuglink_section
37420 + (bfd *abfd, const char *filename);
37421 +
37422 +bfd_boolean bfd_fill_in_gnu_debuglink_section
37423 + (bfd *abfd, struct bfd_section *sect, const char *filename);
37424 +
37425 +/* Extracted from libbfd.c. */
37426 +
37427 +/* Byte swapping macros for user section data. */
37428 +
37429 +#define bfd_put_8(abfd, val, ptr) \
37430 + ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
37431 +#define bfd_put_signed_8 \
37432 + bfd_put_8
37433 +#define bfd_get_8(abfd, ptr) \
37434 + (*(unsigned char *) (ptr) & 0xff)
37435 +#define bfd_get_signed_8(abfd, ptr) \
37436 + (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
37437 +
37438 +#define bfd_put_16(abfd, val, ptr) \
37439 + BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
37440 +#define bfd_put_signed_16 \
37441 + bfd_put_16
37442 +#define bfd_get_16(abfd, ptr) \
37443 + BFD_SEND (abfd, bfd_getx16, (ptr))
37444 +#define bfd_get_signed_16(abfd, ptr) \
37445 + BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
37446 +
37447 +#define bfd_put_32(abfd, val, ptr) \
37448 + BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
37449 +#define bfd_put_signed_32 \
37450 + bfd_put_32
37451 +#define bfd_get_32(abfd, ptr) \
37452 + BFD_SEND (abfd, bfd_getx32, (ptr))
37453 +#define bfd_get_signed_32(abfd, ptr) \
37454 + BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
37455 +
37456 +#define bfd_put_64(abfd, val, ptr) \
37457 + BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
37458 +#define bfd_put_signed_64 \
37459 + bfd_put_64
37460 +#define bfd_get_64(abfd, ptr) \
37461 + BFD_SEND (abfd, bfd_getx64, (ptr))
37462 +#define bfd_get_signed_64(abfd, ptr) \
37463 + BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
37464 +
37465 +#define bfd_get(bits, abfd, ptr) \
37466 + ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
37467 + : (bits) == 16 ? bfd_get_16 (abfd, ptr) \
37468 + : (bits) == 32 ? bfd_get_32 (abfd, ptr) \
37469 + : (bits) == 64 ? bfd_get_64 (abfd, ptr) \
37470 + : (abort (), (bfd_vma) - 1))
37471 +
37472 +#define bfd_put(bits, abfd, val, ptr) \
37473 + ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
37474 + : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
37475 + : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
37476 + : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
37477 + : (abort (), (void) 0))
37478 +
37479 +
37480 +/* Byte swapping macros for file header data. */
37481 +
37482 +#define bfd_h_put_8(abfd, val, ptr) \
37483 + bfd_put_8 (abfd, val, ptr)
37484 +#define bfd_h_put_signed_8(abfd, val, ptr) \
37485 + bfd_put_8 (abfd, val, ptr)
37486 +#define bfd_h_get_8(abfd, ptr) \
37487 + bfd_get_8 (abfd, ptr)
37488 +#define bfd_h_get_signed_8(abfd, ptr) \
37489 + bfd_get_signed_8 (abfd, ptr)
37490 +
37491 +#define bfd_h_put_16(abfd, val, ptr) \
37492 + BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
37493 +#define bfd_h_put_signed_16 \
37494 + bfd_h_put_16
37495 +#define bfd_h_get_16(abfd, ptr) \
37496 + BFD_SEND (abfd, bfd_h_getx16, (ptr))
37497 +#define bfd_h_get_signed_16(abfd, ptr) \
37498 + BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
37499 +
37500 +#define bfd_h_put_32(abfd, val, ptr) \
37501 + BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
37502 +#define bfd_h_put_signed_32 \
37503 + bfd_h_put_32
37504 +#define bfd_h_get_32(abfd, ptr) \
37505 + BFD_SEND (abfd, bfd_h_getx32, (ptr))
37506 +#define bfd_h_get_signed_32(abfd, ptr) \
37507 + BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
37508 +
37509 +#define bfd_h_put_64(abfd, val, ptr) \
37510 + BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
37511 +#define bfd_h_put_signed_64 \
37512 + bfd_h_put_64
37513 +#define bfd_h_get_64(abfd, ptr) \
37514 + BFD_SEND (abfd, bfd_h_getx64, (ptr))
37515 +#define bfd_h_get_signed_64(abfd, ptr) \
37516 + BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
37517 +
37518 +/* Aliases for the above, which should eventually go away. */
37519 +
37520 +#define H_PUT_64 bfd_h_put_64
37521 +#define H_PUT_32 bfd_h_put_32
37522 +#define H_PUT_16 bfd_h_put_16
37523 +#define H_PUT_8 bfd_h_put_8
37524 +#define H_PUT_S64 bfd_h_put_signed_64
37525 +#define H_PUT_S32 bfd_h_put_signed_32
37526 +#define H_PUT_S16 bfd_h_put_signed_16
37527 +#define H_PUT_S8 bfd_h_put_signed_8
37528 +#define H_GET_64 bfd_h_get_64
37529 +#define H_GET_32 bfd_h_get_32
37530 +#define H_GET_16 bfd_h_get_16
37531 +#define H_GET_8 bfd_h_get_8
37532 +#define H_GET_S64 bfd_h_get_signed_64
37533 +#define H_GET_S32 bfd_h_get_signed_32
37534 +#define H_GET_S16 bfd_h_get_signed_16
37535 +#define H_GET_S8 bfd_h_get_signed_8
37536 +
37537 +
37538 +/* Extracted from bfdio.c. */
37539 +long bfd_get_mtime (bfd *abfd);
37540 +
37541 +file_ptr bfd_get_size (bfd *abfd);
37542 +
37543 +/* Extracted from bfdwin.c. */
37544 +/* Extracted from section.c. */
37545 +typedef struct bfd_section
37546 +{
37547 + /* The name of the section; the name isn't a copy, the pointer is
37548 + the same as that passed to bfd_make_section. */
37549 + const char *name;
37550 +
37551 + /* A unique sequence number. */
37552 + int id;
37553 +
37554 + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
37555 + int index;
37556 +
37557 + /* The next section in the list belonging to the BFD, or NULL. */
37558 + struct bfd_section *next;
37559 +
37560 + /* The previous section in the list belonging to the BFD, or NULL. */
37561 + struct bfd_section *prev;
37562 +
37563 + /* The field flags contains attributes of the section. Some
37564 + flags are read in from the object file, and some are
37565 + synthesized from other information. */
37566 + flagword flags;
37567 +
37568 +#define SEC_NO_FLAGS 0x000
37569 +
37570 + /* Tells the OS to allocate space for this section when loading.
37571 + This is clear for a section containing debug information only. */
37572 +#define SEC_ALLOC 0x001
37573 +
37574 + /* Tells the OS to load the section from the file when loading.
37575 + This is clear for a .bss section. */
37576 +#define SEC_LOAD 0x002
37577 +
37578 + /* The section contains data still to be relocated, so there is
37579 + some relocation information too. */
37580 +#define SEC_RELOC 0x004
37581 +
37582 + /* A signal to the OS that the section contains read only data. */
37583 +#define SEC_READONLY 0x008
37584 +
37585 + /* The section contains code only. */
37586 +#define SEC_CODE 0x010
37587 +
37588 + /* The section contains data only. */
37589 +#define SEC_DATA 0x020
37590 +
37591 + /* The section will reside in ROM. */
37592 +#define SEC_ROM 0x040
37593 +
37594 + /* The section contains constructor information. This section
37595 + type is used by the linker to create lists of constructors and
37596 + destructors used by <<g++>>. When a back end sees a symbol
37597 + which should be used in a constructor list, it creates a new
37598 + section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
37599 + the symbol to it, and builds a relocation. To build the lists
37600 + of constructors, all the linker has to do is catenate all the
37601 + sections called <<__CTOR_LIST__>> and relocate the data
37602 + contained within - exactly the operations it would peform on
37603 + standard data. */
37604 +#define SEC_CONSTRUCTOR 0x080
37605 +
37606 + /* The section has contents - a data section could be
37607 + <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
37608 + <<SEC_HAS_CONTENTS>> */
37609 +#define SEC_HAS_CONTENTS 0x100
37610 +
37611 + /* An instruction to the linker to not output the section
37612 + even if it has information which would normally be written. */
37613 +#define SEC_NEVER_LOAD 0x200
37614 +
37615 + /* The section contains thread local data. */
37616 +#define SEC_THREAD_LOCAL 0x400
37617 +
37618 + /* The section has GOT references. This flag is only for the
37619 + linker, and is currently only used by the elf32-hppa back end.
37620 + It will be set if global offset table references were detected
37621 + in this section, which indicate to the linker that the section
37622 + contains PIC code, and must be handled specially when doing a
37623 + static link. */
37624 +#define SEC_HAS_GOT_REF 0x800
37625 +
37626 + /* The section contains common symbols (symbols may be defined
37627 + multiple times, the value of a symbol is the amount of
37628 + space it requires, and the largest symbol value is the one
37629 + used). Most targets have exactly one of these (which we
37630 + translate to bfd_com_section_ptr), but ECOFF has two. */
37631 +#define SEC_IS_COMMON 0x1000
37632 +
37633 + /* The section contains only debugging information. For
37634 + example, this is set for ELF .debug and .stab sections.
37635 + strip tests this flag to see if a section can be
37636 + discarded. */
37637 +#define SEC_DEBUGGING 0x2000
37638 +
37639 + /* The contents of this section are held in memory pointed to
37640 + by the contents field. This is checked by bfd_get_section_contents,
37641 + and the data is retrieved from memory if appropriate. */
37642 +#define SEC_IN_MEMORY 0x4000
37643 +
37644 + /* The contents of this section are to be excluded by the
37645 + linker for executable and shared objects unless those
37646 + objects are to be further relocated. */
37647 +#define SEC_EXCLUDE 0x8000
37648 +
37649 + /* The contents of this section are to be sorted based on the sum of
37650 + the symbol and addend values specified by the associated relocation
37651 + entries. Entries without associated relocation entries will be
37652 + appended to the end of the section in an unspecified order. */
37653 +#define SEC_SORT_ENTRIES 0x10000
37654 +
37655 + /* When linking, duplicate sections of the same name should be
37656 + discarded, rather than being combined into a single section as
37657 + is usually done. This is similar to how common symbols are
37658 + handled. See SEC_LINK_DUPLICATES below. */
37659 +#define SEC_LINK_ONCE 0x20000
37660 +
37661 + /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
37662 + should handle duplicate sections. */
37663 +#define SEC_LINK_DUPLICATES 0x40000
37664 +
37665 + /* This value for SEC_LINK_DUPLICATES means that duplicate
37666 + sections with the same name should simply be discarded. */
37667 +#define SEC_LINK_DUPLICATES_DISCARD 0x0
37668 +
37669 + /* This value for SEC_LINK_DUPLICATES means that the linker
37670 + should warn if there are any duplicate sections, although
37671 + it should still only link one copy. */
37672 +#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
37673 +
37674 + /* This value for SEC_LINK_DUPLICATES means that the linker
37675 + should warn if any duplicate sections are a different size. */
37676 +#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
37677 +
37678 + /* This value for SEC_LINK_DUPLICATES means that the linker
37679 + should warn if any duplicate sections contain different
37680 + contents. */
37681 +#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
37682 + (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
37683 +
37684 + /* This section was created by the linker as part of dynamic
37685 + relocation or other arcane processing. It is skipped when
37686 + going through the first-pass output, trusting that someone
37687 + else up the line will take care of it later. */
37688 +#define SEC_LINKER_CREATED 0x200000
37689 +
37690 + /* This section should not be subject to garbage collection.
37691 + Also set to inform the linker that this section should not be
37692 + listed in the link map as discarded. */
37693 +#define SEC_KEEP 0x400000
37694 +
37695 + /* This section contains "short" data, and should be placed
37696 + "near" the GP. */
37697 +#define SEC_SMALL_DATA 0x800000
37698 +
37699 + /* Attempt to merge identical entities in the section.
37700 + Entity size is given in the entsize field. */
37701 +#define SEC_MERGE 0x1000000
37702 +
37703 + /* If given with SEC_MERGE, entities to merge are zero terminated
37704 + strings where entsize specifies character size instead of fixed
37705 + size entries. */
37706 +#define SEC_STRINGS 0x2000000
37707 +
37708 + /* This section contains data about section groups. */
37709 +#define SEC_GROUP 0x4000000
37710 +
37711 + /* The section is a COFF shared library section. This flag is
37712 + only for the linker. If this type of section appears in
37713 + the input file, the linker must copy it to the output file
37714 + without changing the vma or size. FIXME: Although this
37715 + was originally intended to be general, it really is COFF
37716 + specific (and the flag was renamed to indicate this). It
37717 + might be cleaner to have some more general mechanism to
37718 + allow the back end to control what the linker does with
37719 + sections. */
37720 +#define SEC_COFF_SHARED_LIBRARY 0x10000000
37721 +
37722 + /* This section contains data which may be shared with other
37723 + executables or shared objects. This is for COFF only. */
37724 +#define SEC_COFF_SHARED 0x20000000
37725 +
37726 + /* When a section with this flag is being linked, then if the size of
37727 + the input section is less than a page, it should not cross a page
37728 + boundary. If the size of the input section is one page or more,
37729 + it should be aligned on a page boundary. This is for TI
37730 + TMS320C54X only. */
37731 +#define SEC_TIC54X_BLOCK 0x40000000
37732 +
37733 + /* Conditionally link this section; do not link if there are no
37734 + references found to any symbol in the section. This is for TI
37735 + TMS320C54X only. */
37736 +#define SEC_TIC54X_CLINK 0x80000000
37737 +
37738 + /* End of section flags. */
37739 +
37740 + /* Some internal packed boolean fields. */
37741 +
37742 + /* See the vma field. */
37743 + unsigned int user_set_vma : 1;
37744 +
37745 + /* A mark flag used by some of the linker backends. */
37746 + unsigned int linker_mark : 1;
37747 +
37748 + /* Another mark flag used by some of the linker backends. Set for
37749 + output sections that have an input section. */
37750 + unsigned int linker_has_input : 1;
37751 +
37752 + /* Mark flags used by some linker backends for garbage collection. */
37753 + unsigned int gc_mark : 1;
37754 + unsigned int gc_mark_from_eh : 1;
37755 +
37756 + /* The following flags are used by the ELF linker. */
37757 +
37758 + /* Mark sections which have been allocated to segments. */
37759 + unsigned int segment_mark : 1;
37760 +
37761 + /* Type of sec_info information. */
37762 + unsigned int sec_info_type:3;
37763 +#define ELF_INFO_TYPE_NONE 0
37764 +#define ELF_INFO_TYPE_STABS 1
37765 +#define ELF_INFO_TYPE_MERGE 2
37766 +#define ELF_INFO_TYPE_EH_FRAME 3
37767 +#define ELF_INFO_TYPE_JUST_SYMS 4
37768 +
37769 + /* Nonzero if this section uses RELA relocations, rather than REL. */
37770 + unsigned int use_rela_p:1;
37771 +
37772 + /* Bits used by various backends. The generic code doesn't touch
37773 + these fields. */
37774 +
37775 + /* Nonzero if this section has TLS related relocations. */
37776 + unsigned int has_tls_reloc:1;
37777 +
37778 + /* Nonzero if this section has a gp reloc. */
37779 + unsigned int has_gp_reloc:1;
37780 +
37781 + /* Nonzero if this section needs the relax finalize pass. */
37782 + unsigned int need_finalize_relax:1;
37783 +
37784 + /* Whether relocations have been processed. */
37785 + unsigned int reloc_done : 1;
37786 +
37787 + /* End of internal packed boolean fields. */
37788 +
37789 + /* The virtual memory address of the section - where it will be
37790 + at run time. The symbols are relocated against this. The
37791 + user_set_vma flag is maintained by bfd; if it's not set, the
37792 + backend can assign addresses (for example, in <<a.out>>, where
37793 + the default address for <<.data>> is dependent on the specific
37794 + target and various flags). */
37795 + bfd_vma vma;
37796 +
37797 + /* The load address of the section - where it would be in a
37798 + rom image; really only used for writing section header
37799 + information. */
37800 + bfd_vma lma;
37801 +
37802 + /* The size of the section in octets, as it will be output.
37803 + Contains a value even if the section has no contents (e.g., the
37804 + size of <<.bss>>). */
37805 + bfd_size_type size;
37806 +
37807 + /* For input sections, the original size on disk of the section, in
37808 + octets. This field is used by the linker relaxation code. It is
37809 + currently only set for sections where the linker relaxation scheme
37810 + doesn't cache altered section and reloc contents (stabs, eh_frame,
37811 + SEC_MERGE, some coff relaxing targets), and thus the original size
37812 + needs to be kept to read the section multiple times.
37813 + For output sections, rawsize holds the section size calculated on
37814 + a previous linker relaxation pass. */
37815 + bfd_size_type rawsize;
37816 +
37817 + /* If this section is going to be output, then this value is the
37818 + offset in *bytes* into the output section of the first byte in the
37819 + input section (byte ==> smallest addressable unit on the
37820 + target). In most cases, if this was going to start at the
37821 + 100th octet (8-bit quantity) in the output section, this value
37822 + would be 100. However, if the target byte size is 16 bits
37823 + (bfd_octets_per_byte is "2"), this value would be 50. */
37824 + bfd_vma output_offset;
37825 +
37826 + /* The output section through which to map on output. */
37827 + struct bfd_section *output_section;
37828 +
37829 + /* The alignment requirement of the section, as an exponent of 2 -
37830 + e.g., 3 aligns to 2^3 (or 8). */
37831 + unsigned int alignment_power;
37832 +
37833 + /* If an input section, a pointer to a vector of relocation
37834 + records for the data in this section. */
37835 + struct reloc_cache_entry *relocation;
37836 +
37837 + /* If an output section, a pointer to a vector of pointers to
37838 + relocation records for the data in this section. */
37839 + struct reloc_cache_entry **orelocation;
37840 +
37841 + /* The number of relocation records in one of the above. */
37842 + unsigned reloc_count;
37843 +
37844 + /* Information below is back end specific - and not always used
37845 + or updated. */
37846 +
37847 + /* File position of section data. */
37848 + file_ptr filepos;
37849 +
37850 + /* File position of relocation info. */
37851 + file_ptr rel_filepos;
37852 +
37853 + /* File position of line data. */
37854 + file_ptr line_filepos;
37855 +
37856 + /* Pointer to data for applications. */
37857 + void *userdata;
37858 +
37859 + /* If the SEC_IN_MEMORY flag is set, this points to the actual
37860 + contents. */
37861 + unsigned char *contents;
37862 +
37863 + /* Attached line number information. */
37864 + alent *lineno;
37865 +
37866 + /* Number of line number records. */
37867 + unsigned int lineno_count;
37868 +
37869 + /* Entity size for merging purposes. */
37870 + unsigned int entsize;
37871 +
37872 + /* Points to the kept section if this section is a link-once section,
37873 + and is discarded. */
37874 + struct bfd_section *kept_section;
37875 +
37876 + /* When a section is being output, this value changes as more
37877 + linenumbers are written out. */
37878 + file_ptr moving_line_filepos;
37879 +
37880 + /* What the section number is in the target world. */
37881 + int target_index;
37882 +
37883 + void *used_by_bfd;
37884 +
37885 + /* If this is a constructor section then here is a list of the
37886 + relocations created to relocate items within it. */
37887 + struct relent_chain *constructor_chain;
37888 +
37889 + /* The BFD which owns the section. */
37890 + bfd *owner;
37891 +
37892 + /* A symbol which points at this section only. */
37893 + struct bfd_symbol *symbol;
37894 + struct bfd_symbol **symbol_ptr_ptr;
37895 +
37896 + /* Early in the link process, map_head and map_tail are used to build
37897 + a list of input sections attached to an output section. Later,
37898 + output sections use these fields for a list of bfd_link_order
37899 + structs. */
37900 + union {
37901 + struct bfd_link_order *link_order;
37902 + struct bfd_section *s;
37903 + } map_head, map_tail;
37904 +} asection;
37905 +
37906 +/* These sections are global, and are managed by BFD. The application
37907 + and target back end are not permitted to change the values in
37908 + these sections. New code should use the section_ptr macros rather
37909 + than referring directly to the const sections. The const sections
37910 + may eventually vanish. */
37911 +#define BFD_ABS_SECTION_NAME "*ABS*"
37912 +#define BFD_UND_SECTION_NAME "*UND*"
37913 +#define BFD_COM_SECTION_NAME "*COM*"
37914 +#define BFD_IND_SECTION_NAME "*IND*"
37915 +
37916 +/* The absolute section. */
37917 +extern asection bfd_abs_section;
37918 +#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
37919 +#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
37920 +/* Pointer to the undefined section. */
37921 +extern asection bfd_und_section;
37922 +#define bfd_und_section_ptr ((asection *) &bfd_und_section)
37923 +#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
37924 +/* Pointer to the common section. */
37925 +extern asection bfd_com_section;
37926 +#define bfd_com_section_ptr ((asection *) &bfd_com_section)
37927 +/* Pointer to the indirect section. */
37928 +extern asection bfd_ind_section;
37929 +#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
37930 +#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
37931 +
37932 +#define bfd_is_const_section(SEC) \
37933 + ( ((SEC) == bfd_abs_section_ptr) \
37934 + || ((SEC) == bfd_und_section_ptr) \
37935 + || ((SEC) == bfd_com_section_ptr) \
37936 + || ((SEC) == bfd_ind_section_ptr))
37937 +
37938 +/* Macros to handle insertion and deletion of a bfd's sections. These
37939 + only handle the list pointers, ie. do not adjust section_count,
37940 + target_index etc. */
37941 +#define bfd_section_list_remove(ABFD, S) \
37942 + do \
37943 + { \
37944 + asection *_s = S; \
37945 + asection *_next = _s->next; \
37946 + asection *_prev = _s->prev; \
37947 + if (_prev) \
37948 + _prev->next = _next; \
37949 + else \
37950 + (ABFD)->sections = _next; \
37951 + if (_next) \
37952 + _next->prev = _prev; \
37953 + else \
37954 + (ABFD)->section_last = _prev; \
37955 + } \
37956 + while (0)
37957 +#define bfd_section_list_append(ABFD, S) \
37958 + do \
37959 + { \
37960 + asection *_s = S; \
37961 + bfd *_abfd = ABFD; \
37962 + _s->next = NULL; \
37963 + if (_abfd->section_last) \
37964 + { \
37965 + _s->prev = _abfd->section_last; \
37966 + _abfd->section_last->next = _s; \
37967 + } \
37968 + else \
37969 + { \
37970 + _s->prev = NULL; \
37971 + _abfd->sections = _s; \
37972 + } \
37973 + _abfd->section_last = _s; \
37974 + } \
37975 + while (0)
37976 +#define bfd_section_list_prepend(ABFD, S) \
37977 + do \
37978 + { \
37979 + asection *_s = S; \
37980 + bfd *_abfd = ABFD; \
37981 + _s->prev = NULL; \
37982 + if (_abfd->sections) \
37983 + { \
37984 + _s->next = _abfd->sections; \
37985 + _abfd->sections->prev = _s; \
37986 + } \
37987 + else \
37988 + { \
37989 + _s->next = NULL; \
37990 + _abfd->section_last = _s; \
37991 + } \
37992 + _abfd->sections = _s; \
37993 + } \
37994 + while (0)
37995 +#define bfd_section_list_insert_after(ABFD, A, S) \
37996 + do \
37997 + { \
37998 + asection *_a = A; \
37999 + asection *_s = S; \
38000 + asection *_next = _a->next; \
38001 + _s->next = _next; \
38002 + _s->prev = _a; \
38003 + _a->next = _s; \
38004 + if (_next) \
38005 + _next->prev = _s; \
38006 + else \
38007 + (ABFD)->section_last = _s; \
38008 + } \
38009 + while (0)
38010 +#define bfd_section_list_insert_before(ABFD, B, S) \
38011 + do \
38012 + { \
38013 + asection *_b = B; \
38014 + asection *_s = S; \
38015 + asection *_prev = _b->prev; \
38016 + _s->prev = _prev; \
38017 + _s->next = _b; \
38018 + _b->prev = _s; \
38019 + if (_prev) \
38020 + _prev->next = _s; \
38021 + else \
38022 + (ABFD)->sections = _s; \
38023 + } \
38024 + while (0)
38025 +#define bfd_section_removed_from_list(ABFD, S) \
38026 + ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
38027 +
38028 +#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
38029 + /* name, id, index, next, prev, flags, user_set_vma, */ \
38030 + { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
38031 + \
38032 + /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \
38033 + 0, 0, 1, 0, \
38034 + \
38035 + /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \
38036 + 0, 0, 0, 0, \
38037 + \
38038 + /* has_gp_reloc, need_finalize_relax, reloc_done, */ \
38039 + 0, 0, 0, \
38040 + \
38041 + /* vma, lma, size, rawsize */ \
38042 + 0, 0, 0, 0, \
38043 + \
38044 + /* output_offset, output_section, alignment_power, */ \
38045 + 0, (struct bfd_section *) &SEC, 0, \
38046 + \
38047 + /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
38048 + NULL, NULL, 0, 0, 0, \
38049 + \
38050 + /* line_filepos, userdata, contents, lineno, lineno_count, */ \
38051 + 0, NULL, NULL, NULL, 0, \
38052 + \
38053 + /* entsize, kept_section, moving_line_filepos, */ \
38054 + 0, NULL, 0, \
38055 + \
38056 + /* target_index, used_by_bfd, constructor_chain, owner, */ \
38057 + 0, NULL, NULL, NULL, \
38058 + \
38059 + /* symbol, symbol_ptr_ptr, */ \
38060 + (struct bfd_symbol *) SYM, &SEC.symbol, \
38061 + \
38062 + /* map_head, map_tail */ \
38063 + { NULL }, { NULL } \
38064 + }
38065 +
38066 +void bfd_section_list_clear (bfd *);
38067 +
38068 +asection *bfd_get_section_by_name (bfd *abfd, const char *name);
38069 +
38070 +asection *bfd_get_section_by_name_if
38071 + (bfd *abfd,
38072 + const char *name,
38073 + bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
38074 + void *obj);
38075 +
38076 +char *bfd_get_unique_section_name
38077 + (bfd *abfd, const char *templat, int *count);
38078 +
38079 +asection *bfd_make_section_old_way (bfd *abfd, const char *name);
38080 +
38081 +asection *bfd_make_section_anyway_with_flags
38082 + (bfd *abfd, const char *name, flagword flags);
38083 +
38084 +asection *bfd_make_section_anyway (bfd *abfd, const char *name);
38085 +
38086 +asection *bfd_make_section_with_flags
38087 + (bfd *, const char *name, flagword flags);
38088 +
38089 +asection *bfd_make_section (bfd *, const char *name);
38090 +
38091 +bfd_boolean bfd_set_section_flags
38092 + (bfd *abfd, asection *sec, flagword flags);
38093 +
38094 +void bfd_map_over_sections
38095 + (bfd *abfd,
38096 + void (*func) (bfd *abfd, asection *sect, void *obj),
38097 + void *obj);
38098 +
38099 +asection *bfd_sections_find_if
38100 + (bfd *abfd,
38101 + bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
38102 + void *obj);
38103 +
38104 +bfd_boolean bfd_set_section_size
38105 + (bfd *abfd, asection *sec, bfd_size_type val);
38106 +
38107 +bfd_boolean bfd_set_section_contents
38108 + (bfd *abfd, asection *section, const void *data,
38109 + file_ptr offset, bfd_size_type count);
38110 +
38111 +bfd_boolean bfd_get_section_contents
38112 + (bfd *abfd, asection *section, void *location, file_ptr offset,
38113 + bfd_size_type count);
38114 +
38115 +bfd_boolean bfd_malloc_and_get_section
38116 + (bfd *abfd, asection *section, bfd_byte **buf);
38117 +
38118 +bfd_boolean bfd_copy_private_section_data
38119 + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
38120 +
38121 +#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
38122 + BFD_SEND (obfd, _bfd_copy_private_section_data, \
38123 + (ibfd, isection, obfd, osection))
38124 +bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
38125 +
38126 +bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
38127 +
38128 +/* Extracted from archures.c. */
38129 +enum bfd_architecture
38130 +{
38131 + bfd_arch_unknown, /* File arch not known. */
38132 + bfd_arch_obscure, /* Arch known, not one of these. */
38133 + bfd_arch_m68k, /* Motorola 68xxx */
38134 +#define bfd_mach_m68000 1
38135 +#define bfd_mach_m68008 2
38136 +#define bfd_mach_m68010 3
38137 +#define bfd_mach_m68020 4
38138 +#define bfd_mach_m68030 5
38139 +#define bfd_mach_m68040 6
38140 +#define bfd_mach_m68060 7
38141 +#define bfd_mach_cpu32 8
38142 +#define bfd_mach_fido 9
38143 +#define bfd_mach_mcf_isa_a_nodiv 10
38144 +#define bfd_mach_mcf_isa_a 11
38145 +#define bfd_mach_mcf_isa_a_mac 12
38146 +#define bfd_mach_mcf_isa_a_emac 13
38147 +#define bfd_mach_mcf_isa_aplus 14
38148 +#define bfd_mach_mcf_isa_aplus_mac 15
38149 +#define bfd_mach_mcf_isa_aplus_emac 16
38150 +#define bfd_mach_mcf_isa_b_nousp 17
38151 +#define bfd_mach_mcf_isa_b_nousp_mac 18
38152 +#define bfd_mach_mcf_isa_b_nousp_emac 19
38153 +#define bfd_mach_mcf_isa_b 20
38154 +#define bfd_mach_mcf_isa_b_mac 21
38155 +#define bfd_mach_mcf_isa_b_emac 22
38156 +#define bfd_mach_mcf_isa_b_float 23
38157 +#define bfd_mach_mcf_isa_b_float_mac 24
38158 +#define bfd_mach_mcf_isa_b_float_emac 25
38159 +#define bfd_mach_mcf_isa_c 26
38160 +#define bfd_mach_mcf_isa_c_mac 27
38161 +#define bfd_mach_mcf_isa_c_emac 28
38162 + bfd_arch_vax, /* DEC Vax */
38163 + bfd_arch_i960, /* Intel 960 */
38164 + /* The order of the following is important.
38165 + lower number indicates a machine type that
38166 + only accepts a subset of the instructions
38167 + available to machines with higher numbers.
38168 + The exception is the "ca", which is
38169 + incompatible with all other machines except
38170 + "core". */
38171 +
38172 +#define bfd_mach_i960_core 1
38173 +#define bfd_mach_i960_ka_sa 2
38174 +#define bfd_mach_i960_kb_sb 3
38175 +#define bfd_mach_i960_mc 4
38176 +#define bfd_mach_i960_xa 5
38177 +#define bfd_mach_i960_ca 6
38178 +#define bfd_mach_i960_jx 7
38179 +#define bfd_mach_i960_hx 8
38180 +
38181 + bfd_arch_or32, /* OpenRISC 32 */
38182 +
38183 + bfd_arch_sparc, /* SPARC */
38184 +#define bfd_mach_sparc 1
38185 +/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
38186 +#define bfd_mach_sparc_sparclet 2
38187 +#define bfd_mach_sparc_sparclite 3
38188 +#define bfd_mach_sparc_v8plus 4
38189 +#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
38190 +#define bfd_mach_sparc_sparclite_le 6
38191 +#define bfd_mach_sparc_v9 7
38192 +#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
38193 +#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
38194 +#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
38195 +/* Nonzero if MACH has the v9 instruction set. */
38196 +#define bfd_mach_sparc_v9_p(mach) \
38197 + ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
38198 + && (mach) != bfd_mach_sparc_sparclite_le)
38199 +/* Nonzero if MACH is a 64 bit sparc architecture. */
38200 +#define bfd_mach_sparc_64bit_p(mach) \
38201 + ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
38202 + bfd_arch_spu, /* PowerPC SPU */
38203 +#define bfd_mach_spu 256
38204 + bfd_arch_mips, /* MIPS Rxxxx */
38205 +#define bfd_mach_mips3000 3000
38206 +#define bfd_mach_mips3900 3900
38207 +#define bfd_mach_mips4000 4000
38208 +#define bfd_mach_mips4010 4010
38209 +#define bfd_mach_mips4100 4100
38210 +#define bfd_mach_mips4111 4111
38211 +#define bfd_mach_mips4120 4120
38212 +#define bfd_mach_mips4300 4300
38213 +#define bfd_mach_mips4400 4400
38214 +#define bfd_mach_mips4600 4600
38215 +#define bfd_mach_mips4650 4650
38216 +#define bfd_mach_mips5000 5000
38217 +#define bfd_mach_mips5400 5400
38218 +#define bfd_mach_mips5500 5500
38219 +#define bfd_mach_mips6000 6000
38220 +#define bfd_mach_mips7000 7000
38221 +#define bfd_mach_mips8000 8000
38222 +#define bfd_mach_mips9000 9000
38223 +#define bfd_mach_mips10000 10000
38224 +#define bfd_mach_mips12000 12000
38225 +#define bfd_mach_mips16 16
38226 +#define bfd_mach_mips5 5
38227 +#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
38228 +#define bfd_mach_mipsisa32 32
38229 +#define bfd_mach_mipsisa32r2 33
38230 +#define bfd_mach_mipsisa64 64
38231 +#define bfd_mach_mipsisa64r2 65
38232 + bfd_arch_i386, /* Intel 386 */
38233 +#define bfd_mach_i386_i386 1
38234 +#define bfd_mach_i386_i8086 2
38235 +#define bfd_mach_i386_i386_intel_syntax 3
38236 +#define bfd_mach_x86_64 64
38237 +#define bfd_mach_x86_64_intel_syntax 65
38238 + bfd_arch_we32k, /* AT&T WE32xxx */
38239 + bfd_arch_tahoe, /* CCI/Harris Tahoe */
38240 + bfd_arch_i860, /* Intel 860 */
38241 + bfd_arch_i370, /* IBM 360/370 Mainframes */
38242 + bfd_arch_romp, /* IBM ROMP PC/RT */
38243 + bfd_arch_convex, /* Convex */
38244 + bfd_arch_m88k, /* Motorola 88xxx */
38245 + bfd_arch_m98k, /* Motorola 98xxx */
38246 + bfd_arch_pyramid, /* Pyramid Technology */
38247 + bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
38248 +#define bfd_mach_h8300 1
38249 +#define bfd_mach_h8300h 2
38250 +#define bfd_mach_h8300s 3
38251 +#define bfd_mach_h8300hn 4
38252 +#define bfd_mach_h8300sn 5
38253 +#define bfd_mach_h8300sx 6
38254 +#define bfd_mach_h8300sxn 7
38255 + bfd_arch_pdp11, /* DEC PDP-11 */
38256 + bfd_arch_powerpc, /* PowerPC */
38257 +#define bfd_mach_ppc 32
38258 +#define bfd_mach_ppc64 64
38259 +#define bfd_mach_ppc_403 403
38260 +#define bfd_mach_ppc_403gc 4030
38261 +#define bfd_mach_ppc_505 505
38262 +#define bfd_mach_ppc_601 601
38263 +#define bfd_mach_ppc_602 602
38264 +#define bfd_mach_ppc_603 603
38265 +#define bfd_mach_ppc_ec603e 6031
38266 +#define bfd_mach_ppc_604 604
38267 +#define bfd_mach_ppc_620 620
38268 +#define bfd_mach_ppc_630 630
38269 +#define bfd_mach_ppc_750 750
38270 +#define bfd_mach_ppc_860 860
38271 +#define bfd_mach_ppc_a35 35
38272 +#define bfd_mach_ppc_rs64ii 642
38273 +#define bfd_mach_ppc_rs64iii 643
38274 +#define bfd_mach_ppc_7400 7400
38275 +#define bfd_mach_ppc_e500 500
38276 + bfd_arch_rs6000, /* IBM RS/6000 */
38277 +#define bfd_mach_rs6k 6000
38278 +#define bfd_mach_rs6k_rs1 6001
38279 +#define bfd_mach_rs6k_rsc 6003
38280 +#define bfd_mach_rs6k_rs2 6002
38281 + bfd_arch_hppa, /* HP PA RISC */
38282 +#define bfd_mach_hppa10 10
38283 +#define bfd_mach_hppa11 11
38284 +#define bfd_mach_hppa20 20
38285 +#define bfd_mach_hppa20w 25
38286 + bfd_arch_d10v, /* Mitsubishi D10V */
38287 +#define bfd_mach_d10v 1
38288 +#define bfd_mach_d10v_ts2 2
38289 +#define bfd_mach_d10v_ts3 3
38290 + bfd_arch_d30v, /* Mitsubishi D30V */
38291 + bfd_arch_dlx, /* DLX */
38292 + bfd_arch_m68hc11, /* Motorola 68HC11 */
38293 + bfd_arch_m68hc12, /* Motorola 68HC12 */
38294 +#define bfd_mach_m6812_default 0
38295 +#define bfd_mach_m6812 1
38296 +#define bfd_mach_m6812s 2
38297 + bfd_arch_z8k, /* Zilog Z8000 */
38298 +#define bfd_mach_z8001 1
38299 +#define bfd_mach_z8002 2
38300 + bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
38301 + bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
38302 +#define bfd_mach_sh 1
38303 +#define bfd_mach_sh2 0x20
38304 +#define bfd_mach_sh_dsp 0x2d
38305 +#define bfd_mach_sh2a 0x2a
38306 +#define bfd_mach_sh2a_nofpu 0x2b
38307 +#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
38308 +#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
38309 +#define bfd_mach_sh2a_or_sh4 0x2a3
38310 +#define bfd_mach_sh2a_or_sh3e 0x2a4
38311 +#define bfd_mach_sh2e 0x2e
38312 +#define bfd_mach_sh3 0x30
38313 +#define bfd_mach_sh3_nommu 0x31
38314 +#define bfd_mach_sh3_dsp 0x3d
38315 +#define bfd_mach_sh3e 0x3e
38316 +#define bfd_mach_sh4 0x40
38317 +#define bfd_mach_sh4_nofpu 0x41
38318 +#define bfd_mach_sh4_nommu_nofpu 0x42
38319 +#define bfd_mach_sh4a 0x4a
38320 +#define bfd_mach_sh4a_nofpu 0x4b
38321 +#define bfd_mach_sh4al_dsp 0x4d
38322 +#define bfd_mach_sh5 0x50
38323 + bfd_arch_alpha, /* Dec Alpha */
38324 +#define bfd_mach_alpha_ev4 0x10
38325 +#define bfd_mach_alpha_ev5 0x20
38326 +#define bfd_mach_alpha_ev6 0x30
38327 + bfd_arch_arm, /* Advanced Risc Machines ARM. */
38328 +#define bfd_mach_arm_unknown 0
38329 +#define bfd_mach_arm_2 1
38330 +#define bfd_mach_arm_2a 2
38331 +#define bfd_mach_arm_3 3
38332 +#define bfd_mach_arm_3M 4
38333 +#define bfd_mach_arm_4 5
38334 +#define bfd_mach_arm_4T 6
38335 +#define bfd_mach_arm_5 7
38336 +#define bfd_mach_arm_5T 8
38337 +#define bfd_mach_arm_5TE 9
38338 +#define bfd_mach_arm_XScale 10
38339 +#define bfd_mach_arm_ep9312 11
38340 +#define bfd_mach_arm_iWMMXt 12
38341 +#define bfd_mach_arm_iWMMXt2 13
38342 + bfd_arch_ns32k, /* National Semiconductors ns32000 */
38343 + bfd_arch_w65, /* WDC 65816 */
38344 + bfd_arch_tic30, /* Texas Instruments TMS320C30 */
38345 + bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
38346 +#define bfd_mach_tic3x 30
38347 +#define bfd_mach_tic4x 40
38348 + bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
38349 + bfd_arch_tic80, /* TI TMS320c80 (MVP) */
38350 + bfd_arch_v850, /* NEC V850 */
38351 +#define bfd_mach_v850 1
38352 +#define bfd_mach_v850e 'E'
38353 +#define bfd_mach_v850e1 '1'
38354 + bfd_arch_arc, /* ARC Cores */
38355 +#define bfd_mach_arc_5 5
38356 +#define bfd_mach_arc_6 6
38357 +#define bfd_mach_arc_7 7
38358 +#define bfd_mach_arc_8 8
38359 + bfd_arch_m32c, /* Renesas M16C/M32C. */
38360 +#define bfd_mach_m16c 0x75
38361 +#define bfd_mach_m32c 0x78
38362 + bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
38363 +#define bfd_mach_m32r 1 /* For backwards compatibility. */
38364 +#define bfd_mach_m32rx 'x'
38365 +#define bfd_mach_m32r2 '2'
38366 + bfd_arch_mn10200, /* Matsushita MN10200 */
38367 + bfd_arch_mn10300, /* Matsushita MN10300 */
38368 +#define bfd_mach_mn10300 300
38369 +#define bfd_mach_am33 330
38370 +#define bfd_mach_am33_2 332
38371 + bfd_arch_fr30,
38372 +#define bfd_mach_fr30 0x46523330
38373 + bfd_arch_frv,
38374 +#define bfd_mach_frv 1
38375 +#define bfd_mach_frvsimple 2
38376 +#define bfd_mach_fr300 300
38377 +#define bfd_mach_fr400 400
38378 +#define bfd_mach_fr450 450
38379 +#define bfd_mach_frvtomcat 499 /* fr500 prototype */
38380 +#define bfd_mach_fr500 500
38381 +#define bfd_mach_fr550 550
38382 + bfd_arch_mcore,
38383 + bfd_arch_mep,
38384 +#define bfd_mach_mep 1
38385 +#define bfd_mach_mep_h1 0x6831
38386 + bfd_arch_ia64, /* HP/Intel ia64 */
38387 +#define bfd_mach_ia64_elf64 64
38388 +#define bfd_mach_ia64_elf32 32
38389 + bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
38390 +#define bfd_mach_ip2022 1
38391 +#define bfd_mach_ip2022ext 2
38392 + bfd_arch_iq2000, /* Vitesse IQ2000. */
38393 +#define bfd_mach_iq2000 1
38394 +#define bfd_mach_iq10 2
38395 + bfd_arch_mt,
38396 +#define bfd_mach_ms1 1
38397 +#define bfd_mach_mrisc2 2
38398 +#define bfd_mach_ms2 3
38399 + bfd_arch_pj,
38400 + bfd_arch_avr, /* Atmel AVR microcontrollers. */
38401 +#define bfd_mach_avr1 1
38402 +#define bfd_mach_avr2 2
38403 +#define bfd_mach_avr3 3
38404 +#define bfd_mach_avr4 4
38405 +#define bfd_mach_avr5 5
38406 +#define bfd_mach_avr6 6
38407 + bfd_arch_avr32, /* Atmel AVR32 */
38408 +#define bfd_mach_avr32_ap 7000
38409 +#define bfd_mach_avr32_uc 3000
38410 +#define bfd_mach_avr32_ucr1 3001
38411 +#define bfd_mach_avr32_ucr2 3002
38412 + bfd_arch_bfin, /* ADI Blackfin */
38413 +#define bfd_mach_bfin 1
38414 + bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
38415 +#define bfd_mach_cr16 1
38416 + bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
38417 +#define bfd_mach_cr16c 1
38418 + bfd_arch_crx, /* National Semiconductor CRX. */
38419 +#define bfd_mach_crx 1
38420 + bfd_arch_cris, /* Axis CRIS */
38421 +#define bfd_mach_cris_v0_v10 255
38422 +#define bfd_mach_cris_v32 32
38423 +#define bfd_mach_cris_v10_v32 1032
38424 + bfd_arch_s390, /* IBM s390 */
38425 +#define bfd_mach_s390_31 31
38426 +#define bfd_mach_s390_64 64
38427 + bfd_arch_score, /* Sunplus score */
38428 + bfd_arch_openrisc, /* OpenRISC */
38429 + bfd_arch_mmix, /* Donald Knuth's educational processor. */
38430 + bfd_arch_xstormy16,
38431 +#define bfd_mach_xstormy16 1
38432 + bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
38433 +#define bfd_mach_msp11 11
38434 +#define bfd_mach_msp110 110
38435 +#define bfd_mach_msp12 12
38436 +#define bfd_mach_msp13 13
38437 +#define bfd_mach_msp14 14
38438 +#define bfd_mach_msp15 15
38439 +#define bfd_mach_msp16 16
38440 +#define bfd_mach_msp21 21
38441 +#define bfd_mach_msp31 31
38442 +#define bfd_mach_msp32 32
38443 +#define bfd_mach_msp33 33
38444 +#define bfd_mach_msp41 41
38445 +#define bfd_mach_msp42 42
38446 +#define bfd_mach_msp43 43
38447 +#define bfd_mach_msp44 44
38448 + bfd_arch_xc16x, /* Infineon's XC16X Series. */
38449 +#define bfd_mach_xc16x 1
38450 +#define bfd_mach_xc16xl 2
38451 +#define bfd_mach_xc16xs 3
38452 + bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
38453 +#define bfd_mach_xtensa 1
38454 + bfd_arch_maxq, /* Dallas MAXQ 10/20 */
38455 +#define bfd_mach_maxq10 10
38456 +#define bfd_mach_maxq20 20
38457 + bfd_arch_z80,
38458 +#define bfd_mach_z80strict 1 /* No undocumented opcodes. */
38459 +#define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
38460 +#define bfd_mach_z80full 7 /* All undocumented instructions. */
38461 +#define bfd_mach_r800 11 /* R800: successor with multiplication. */
38462 + bfd_arch_last
38463 + };
38464 +
38465 +typedef struct bfd_arch_info
38466 +{
38467 + int bits_per_word;
38468 + int bits_per_address;
38469 + int bits_per_byte;
38470 + enum bfd_architecture arch;
38471 + unsigned long mach;
38472 + const char *arch_name;
38473 + const char *printable_name;
38474 + unsigned int section_align_power;
38475 + /* TRUE if this is the default machine for the architecture.
38476 + The default arch should be the first entry for an arch so that
38477 + all the entries for that arch can be accessed via <<next>>. */
38478 + bfd_boolean the_default;
38479 + const struct bfd_arch_info * (*compatible)
38480 + (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
38481 +
38482 + bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
38483 +
38484 + const struct bfd_arch_info *next;
38485 +}
38486 +bfd_arch_info_type;
38487 +
38488 +const char *bfd_printable_name (bfd *abfd);
38489 +
38490 +const bfd_arch_info_type *bfd_scan_arch (const char *string);
38491 +
38492 +const char **bfd_arch_list (void);
38493 +
38494 +const bfd_arch_info_type *bfd_arch_get_compatible
38495 + (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
38496 +
38497 +void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
38498 +
38499 +enum bfd_architecture bfd_get_arch (bfd *abfd);
38500 +
38501 +unsigned long bfd_get_mach (bfd *abfd);
38502 +
38503 +unsigned int bfd_arch_bits_per_byte (bfd *abfd);
38504 +
38505 +unsigned int bfd_arch_bits_per_address (bfd *abfd);
38506 +
38507 +const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
38508 +
38509 +const bfd_arch_info_type *bfd_lookup_arch
38510 + (enum bfd_architecture arch, unsigned long machine);
38511 +
38512 +const char *bfd_printable_arch_mach
38513 + (enum bfd_architecture arch, unsigned long machine);
38514 +
38515 +unsigned int bfd_octets_per_byte (bfd *abfd);
38516 +
38517 +unsigned int bfd_arch_mach_octets_per_byte
38518 + (enum bfd_architecture arch, unsigned long machine);
38519 +
38520 +/* Extracted from reloc.c. */
38521 +typedef enum bfd_reloc_status
38522 +{
38523 + /* No errors detected. */
38524 + bfd_reloc_ok,
38525 +
38526 + /* The relocation was performed, but there was an overflow. */
38527 + bfd_reloc_overflow,
38528 +
38529 + /* The address to relocate was not within the section supplied. */
38530 + bfd_reloc_outofrange,
38531 +
38532 + /* Used by special functions. */
38533 + bfd_reloc_continue,
38534 +
38535 + /* Unsupported relocation size requested. */
38536 + bfd_reloc_notsupported,
38537 +
38538 + /* Unused. */
38539 + bfd_reloc_other,
38540 +
38541 + /* The symbol to relocate against was undefined. */
38542 + bfd_reloc_undefined,
38543 +
38544 + /* The relocation was performed, but may not be ok - presently
38545 + generated only when linking i960 coff files with i960 b.out
38546 + symbols. If this type is returned, the error_message argument
38547 + to bfd_perform_relocation will be set. */
38548 + bfd_reloc_dangerous
38549 + }
38550 + bfd_reloc_status_type;
38551 +
38552 +
38553 +typedef struct reloc_cache_entry
38554 +{
38555 + /* A pointer into the canonical table of pointers. */
38556 + struct bfd_symbol **sym_ptr_ptr;
38557 +
38558 + /* offset in section. */
38559 + bfd_size_type address;
38560 +
38561 + /* addend for relocation value. */
38562 + bfd_vma addend;
38563 +
38564 + /* Pointer to how to perform the required relocation. */
38565 + reloc_howto_type *howto;
38566 +
38567 +}
38568 +arelent;
38569 +
38570 +enum complain_overflow
38571 +{
38572 + /* Do not complain on overflow. */
38573 + complain_overflow_dont,
38574 +
38575 + /* Complain if the value overflows when considered as a signed
38576 + number one bit larger than the field. ie. A bitfield of N bits
38577 + is allowed to represent -2**n to 2**n-1. */
38578 + complain_overflow_bitfield,
38579 +
38580 + /* Complain if the value overflows when considered as a signed
38581 + number. */
38582 + complain_overflow_signed,
38583 +
38584 + /* Complain if the value overflows when considered as an
38585 + unsigned number. */
38586 + complain_overflow_unsigned
38587 +};
38588 +
38589 +struct reloc_howto_struct
38590 +{
38591 + /* The type field has mainly a documentary use - the back end can
38592 + do what it wants with it, though normally the back end's
38593 + external idea of what a reloc number is stored
38594 + in this field. For example, a PC relative word relocation
38595 + in a coff environment has the type 023 - because that's
38596 + what the outside world calls a R_PCRWORD reloc. */
38597 + unsigned int type;
38598 +
38599 + /* The value the final relocation is shifted right by. This drops
38600 + unwanted data from the relocation. */
38601 + unsigned int rightshift;
38602 +
38603 + /* The size of the item to be relocated. This is *not* a
38604 + power-of-two measure. To get the number of bytes operated
38605 + on by a type of relocation, use bfd_get_reloc_size. */
38606 + int size;
38607 +
38608 + /* The number of bits in the item to be relocated. This is used
38609 + when doing overflow checking. */
38610 + unsigned int bitsize;
38611 +
38612 + /* Notes that the relocation is relative to the location in the
38613 + data section of the addend. The relocation function will
38614 + subtract from the relocation value the address of the location
38615 + being relocated. */
38616 + bfd_boolean pc_relative;
38617 +
38618 + /* The bit position of the reloc value in the destination.
38619 + The relocated value is left shifted by this amount. */
38620 + unsigned int bitpos;
38621 +
38622 + /* What type of overflow error should be checked for when
38623 + relocating. */
38624 + enum complain_overflow complain_on_overflow;
38625 +
38626 + /* If this field is non null, then the supplied function is
38627 + called rather than the normal function. This allows really
38628 + strange relocation methods to be accommodated (e.g., i960 callj
38629 + instructions). */
38630 + bfd_reloc_status_type (*special_function)
38631 + (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
38632 + bfd *, char **);
38633 +
38634 + /* The textual name of the relocation type. */
38635 + char *name;
38636 +
38637 + /* Some formats record a relocation addend in the section contents
38638 + rather than with the relocation. For ELF formats this is the
38639 + distinction between USE_REL and USE_RELA (though the code checks
38640 + for USE_REL == 1/0). The value of this field is TRUE if the
38641 + addend is recorded with the section contents; when performing a
38642 + partial link (ld -r) the section contents (the data) will be
38643 + modified. The value of this field is FALSE if addends are
38644 + recorded with the relocation (in arelent.addend); when performing
38645 + a partial link the relocation will be modified.
38646 + All relocations for all ELF USE_RELA targets should set this field
38647 + to FALSE (values of TRUE should be looked on with suspicion).
38648 + However, the converse is not true: not all relocations of all ELF
38649 + USE_REL targets set this field to TRUE. Why this is so is peculiar
38650 + to each particular target. For relocs that aren't used in partial
38651 + links (e.g. GOT stuff) it doesn't matter what this is set to. */
38652 + bfd_boolean partial_inplace;
38653 +
38654 + /* src_mask selects the part of the instruction (or data) to be used
38655 + in the relocation sum. If the target relocations don't have an
38656 + addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
38657 + dst_mask to extract the addend from the section contents. If
38658 + relocations do have an addend in the reloc, eg. ELF USE_RELA, this
38659 + field should be zero. Non-zero values for ELF USE_RELA targets are
38660 + bogus as in those cases the value in the dst_mask part of the
38661 + section contents should be treated as garbage. */
38662 + bfd_vma src_mask;
38663 +
38664 + /* dst_mask selects which parts of the instruction (or data) are
38665 + replaced with a relocated value. */
38666 + bfd_vma dst_mask;
38667 +
38668 + /* When some formats create PC relative instructions, they leave
38669 + the value of the pc of the place being relocated in the offset
38670 + slot of the instruction, so that a PC relative relocation can
38671 + be made just by adding in an ordinary offset (e.g., sun3 a.out).
38672 + Some formats leave the displacement part of an instruction
38673 + empty (e.g., m88k bcs); this flag signals the fact. */
38674 + bfd_boolean pcrel_offset;
38675 +};
38676 +
38677 +#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
38678 + { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
38679 +#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
38680 + HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
38681 + NAME, FALSE, 0, 0, IN)
38682 +
38683 +#define EMPTY_HOWTO(C) \
38684 + HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
38685 + NULL, FALSE, 0, 0, FALSE)
38686 +
38687 +#define HOWTO_PREPARE(relocation, symbol) \
38688 + { \
38689 + if (symbol != NULL) \
38690 + { \
38691 + if (bfd_is_com_section (symbol->section)) \
38692 + { \
38693 + relocation = 0; \
38694 + } \
38695 + else \
38696 + { \
38697 + relocation = symbol->value; \
38698 + } \
38699 + } \
38700 + }
38701 +
38702 +unsigned int bfd_get_reloc_size (reloc_howto_type *);
38703 +
38704 +typedef struct relent_chain
38705 +{
38706 + arelent relent;
38707 + struct relent_chain *next;
38708 +}
38709 +arelent_chain;
38710 +
38711 +bfd_reloc_status_type bfd_check_overflow
38712 + (enum complain_overflow how,
38713 + unsigned int bitsize,
38714 + unsigned int rightshift,
38715 + unsigned int addrsize,
38716 + bfd_vma relocation);
38717 +
38718 +bfd_reloc_status_type bfd_perform_relocation
38719 + (bfd *abfd,
38720 + arelent *reloc_entry,
38721 + void *data,
38722 + asection *input_section,
38723 + bfd *output_bfd,
38724 + char **error_message);
38725 +
38726 +bfd_reloc_status_type bfd_install_relocation
38727 + (bfd *abfd,
38728 + arelent *reloc_entry,
38729 + void *data, bfd_vma data_start,
38730 + asection *input_section,
38731 + char **error_message);
38732 +
38733 +enum bfd_reloc_code_real {
38734 + _dummy_first_bfd_reloc_code_real,
38735 +
38736 +
38737 +/* Basic absolute relocations of N bits. */
38738 + BFD_RELOC_64,
38739 + BFD_RELOC_32,
38740 + BFD_RELOC_26,
38741 + BFD_RELOC_24,
38742 + BFD_RELOC_16,
38743 + BFD_RELOC_14,
38744 + BFD_RELOC_8,
38745 +
38746 +/* PC-relative relocations. Sometimes these are relative to the address
38747 +of the relocation itself; sometimes they are relative to the start of
38748 +the section containing the relocation. It depends on the specific target.
38749 +
38750 +The 24-bit relocation is used in some Intel 960 configurations. */
38751 + BFD_RELOC_64_PCREL,
38752 + BFD_RELOC_32_PCREL,
38753 + BFD_RELOC_24_PCREL,
38754 + BFD_RELOC_16_PCREL,
38755 + BFD_RELOC_12_PCREL,
38756 + BFD_RELOC_8_PCREL,
38757 +
38758 +/* Section relative relocations. Some targets need this for DWARF2. */
38759 + BFD_RELOC_32_SECREL,
38760 +
38761 +/* For ELF. */
38762 + BFD_RELOC_32_GOT_PCREL,
38763 + BFD_RELOC_16_GOT_PCREL,
38764 + BFD_RELOC_8_GOT_PCREL,
38765 + BFD_RELOC_32_GOTOFF,
38766 + BFD_RELOC_16_GOTOFF,
38767 + BFD_RELOC_LO16_GOTOFF,
38768 + BFD_RELOC_HI16_GOTOFF,
38769 + BFD_RELOC_HI16_S_GOTOFF,
38770 + BFD_RELOC_8_GOTOFF,
38771 + BFD_RELOC_64_PLT_PCREL,
38772 + BFD_RELOC_32_PLT_PCREL,
38773 + BFD_RELOC_24_PLT_PCREL,
38774 + BFD_RELOC_16_PLT_PCREL,
38775 + BFD_RELOC_8_PLT_PCREL,
38776 + BFD_RELOC_64_PLTOFF,
38777 + BFD_RELOC_32_PLTOFF,
38778 + BFD_RELOC_16_PLTOFF,
38779 + BFD_RELOC_LO16_PLTOFF,
38780 + BFD_RELOC_HI16_PLTOFF,
38781 + BFD_RELOC_HI16_S_PLTOFF,
38782 + BFD_RELOC_8_PLTOFF,
38783 +
38784 +/* Relocations used by 68K ELF. */
38785 + BFD_RELOC_68K_GLOB_DAT,
38786 + BFD_RELOC_68K_JMP_SLOT,
38787 + BFD_RELOC_68K_RELATIVE,
38788 +
38789 +/* Linkage-table relative. */
38790 + BFD_RELOC_32_BASEREL,
38791 + BFD_RELOC_16_BASEREL,
38792 + BFD_RELOC_LO16_BASEREL,
38793 + BFD_RELOC_HI16_BASEREL,
38794 + BFD_RELOC_HI16_S_BASEREL,
38795 + BFD_RELOC_8_BASEREL,
38796 + BFD_RELOC_RVA,
38797 +
38798 +/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */
38799 + BFD_RELOC_8_FFnn,
38800 +
38801 +/* These PC-relative relocations are stored as word displacements --
38802 +i.e., byte displacements shifted right two bits. The 30-bit word
38803 +displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
38804 +SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
38805 +signed 16-bit displacement is used on the MIPS, and the 23-bit
38806 +displacement is used on the Alpha. */
38807 + BFD_RELOC_32_PCREL_S2,
38808 + BFD_RELOC_16_PCREL_S2,
38809 + BFD_RELOC_23_PCREL_S2,
38810 +
38811 +/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
38812 +the target word. These are used on the SPARC. */
38813 + BFD_RELOC_HI22,
38814 + BFD_RELOC_LO10,
38815 +
38816 +/* For systems that allocate a Global Pointer register, these are
38817 +displacements off that register. These relocation types are
38818 +handled specially, because the value the register will have is
38819 +decided relatively late. */
38820 + BFD_RELOC_GPREL16,
38821 + BFD_RELOC_GPREL32,
38822 +
38823 +/* Reloc types used for i960/b.out. */
38824 + BFD_RELOC_I960_CALLJ,
38825 +
38826 +/* SPARC ELF relocations. There is probably some overlap with other
38827 +relocation types already defined. */
38828 + BFD_RELOC_NONE,
38829 + BFD_RELOC_SPARC_WDISP22,
38830 + BFD_RELOC_SPARC22,
38831 + BFD_RELOC_SPARC13,
38832 + BFD_RELOC_SPARC_GOT10,
38833 + BFD_RELOC_SPARC_GOT13,
38834 + BFD_RELOC_SPARC_GOT22,
38835 + BFD_RELOC_SPARC_PC10,
38836 + BFD_RELOC_SPARC_PC22,
38837 + BFD_RELOC_SPARC_WPLT30,
38838 + BFD_RELOC_SPARC_COPY,
38839 + BFD_RELOC_SPARC_GLOB_DAT,
38840 + BFD_RELOC_SPARC_JMP_SLOT,
38841 + BFD_RELOC_SPARC_RELATIVE,
38842 + BFD_RELOC_SPARC_UA16,
38843 + BFD_RELOC_SPARC_UA32,
38844 + BFD_RELOC_SPARC_UA64,
38845 +
38846 +/* I think these are specific to SPARC a.out (e.g., Sun 4). */
38847 + BFD_RELOC_SPARC_BASE13,
38848 + BFD_RELOC_SPARC_BASE22,
38849 +
38850 +/* SPARC64 relocations */
38851 +#define BFD_RELOC_SPARC_64 BFD_RELOC_64
38852 + BFD_RELOC_SPARC_10,
38853 + BFD_RELOC_SPARC_11,
38854 + BFD_RELOC_SPARC_OLO10,
38855 + BFD_RELOC_SPARC_HH22,
38856 + BFD_RELOC_SPARC_HM10,
38857 + BFD_RELOC_SPARC_LM22,
38858 + BFD_RELOC_SPARC_PC_HH22,
38859 + BFD_RELOC_SPARC_PC_HM10,
38860 + BFD_RELOC_SPARC_PC_LM22,
38861 + BFD_RELOC_SPARC_WDISP16,
38862 + BFD_RELOC_SPARC_WDISP19,
38863 + BFD_RELOC_SPARC_7,
38864 + BFD_RELOC_SPARC_6,
38865 + BFD_RELOC_SPARC_5,
38866 +#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
38867 + BFD_RELOC_SPARC_PLT32,
38868 + BFD_RELOC_SPARC_PLT64,
38869 + BFD_RELOC_SPARC_HIX22,
38870 + BFD_RELOC_SPARC_LOX10,
38871 + BFD_RELOC_SPARC_H44,
38872 + BFD_RELOC_SPARC_M44,
38873 + BFD_RELOC_SPARC_L44,
38874 + BFD_RELOC_SPARC_REGISTER,
38875 +
38876 +/* SPARC little endian relocation */
38877 + BFD_RELOC_SPARC_REV32,
38878 +
38879 +/* SPARC TLS relocations */
38880 + BFD_RELOC_SPARC_TLS_GD_HI22,
38881 + BFD_RELOC_SPARC_TLS_GD_LO10,
38882 + BFD_RELOC_SPARC_TLS_GD_ADD,
38883 + BFD_RELOC_SPARC_TLS_GD_CALL,
38884 + BFD_RELOC_SPARC_TLS_LDM_HI22,
38885 + BFD_RELOC_SPARC_TLS_LDM_LO10,
38886 + BFD_RELOC_SPARC_TLS_LDM_ADD,
38887 + BFD_RELOC_SPARC_TLS_LDM_CALL,
38888 + BFD_RELOC_SPARC_TLS_LDO_HIX22,
38889 + BFD_RELOC_SPARC_TLS_LDO_LOX10,
38890 + BFD_RELOC_SPARC_TLS_LDO_ADD,
38891 + BFD_RELOC_SPARC_TLS_IE_HI22,
38892 + BFD_RELOC_SPARC_TLS_IE_LO10,
38893 + BFD_RELOC_SPARC_TLS_IE_LD,
38894 + BFD_RELOC_SPARC_TLS_IE_LDX,
38895 + BFD_RELOC_SPARC_TLS_IE_ADD,
38896 + BFD_RELOC_SPARC_TLS_LE_HIX22,
38897 + BFD_RELOC_SPARC_TLS_LE_LOX10,
38898 + BFD_RELOC_SPARC_TLS_DTPMOD32,
38899 + BFD_RELOC_SPARC_TLS_DTPMOD64,
38900 + BFD_RELOC_SPARC_TLS_DTPOFF32,
38901 + BFD_RELOC_SPARC_TLS_DTPOFF64,
38902 + BFD_RELOC_SPARC_TLS_TPOFF32,
38903 + BFD_RELOC_SPARC_TLS_TPOFF64,
38904 +
38905 +/* SPU Relocations. */
38906 + BFD_RELOC_SPU_IMM7,
38907 + BFD_RELOC_SPU_IMM8,
38908 + BFD_RELOC_SPU_IMM10,
38909 + BFD_RELOC_SPU_IMM10W,
38910 + BFD_RELOC_SPU_IMM16,
38911 + BFD_RELOC_SPU_IMM16W,
38912 + BFD_RELOC_SPU_IMM18,
38913 + BFD_RELOC_SPU_PCREL9a,
38914 + BFD_RELOC_SPU_PCREL9b,
38915 + BFD_RELOC_SPU_PCREL16,
38916 + BFD_RELOC_SPU_LO16,
38917 + BFD_RELOC_SPU_HI16,
38918 + BFD_RELOC_SPU_PPU32,
38919 + BFD_RELOC_SPU_PPU64,
38920 +
38921 +/* Alpha ECOFF and ELF relocations. Some of these treat the symbol or
38922 +"addend" in some special way.
38923 +For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
38924 +writing; when reading, it will be the absolute section symbol. The
38925 +addend is the displacement in bytes of the "lda" instruction from
38926 +the "ldah" instruction (which is at the address of this reloc). */
38927 + BFD_RELOC_ALPHA_GPDISP_HI16,
38928 +
38929 +/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
38930 +with GPDISP_HI16 relocs. The addend is ignored when writing the
38931 +relocations out, and is filled in with the file's GP value on
38932 +reading, for convenience. */
38933 + BFD_RELOC_ALPHA_GPDISP_LO16,
38934 +
38935 +/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
38936 +relocation except that there is no accompanying GPDISP_LO16
38937 +relocation. */
38938 + BFD_RELOC_ALPHA_GPDISP,
38939 +
38940 +/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
38941 +the assembler turns it into a LDQ instruction to load the address of
38942 +the symbol, and then fills in a register in the real instruction.
38943 +
38944 +The LITERAL reloc, at the LDQ instruction, refers to the .lita
38945 +section symbol. The addend is ignored when writing, but is filled
38946 +in with the file's GP value on reading, for convenience, as with the
38947 +GPDISP_LO16 reloc.
38948 +
38949 +The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
38950 +It should refer to the symbol to be referenced, as with 16_GOTOFF,
38951 +but it generates output not based on the position within the .got
38952 +section, but relative to the GP value chosen for the file during the
38953 +final link stage.
38954 +
38955 +The LITUSE reloc, on the instruction using the loaded address, gives
38956 +information to the linker that it might be able to use to optimize
38957 +away some literal section references. The symbol is ignored (read
38958 +as the absolute section symbol), and the "addend" indicates the type
38959 +of instruction using the register:
38960 +1 - "memory" fmt insn
38961 +2 - byte-manipulation (byte offset reg)
38962 +3 - jsr (target of branch) */
38963 + BFD_RELOC_ALPHA_LITERAL,
38964 + BFD_RELOC_ALPHA_ELF_LITERAL,
38965 + BFD_RELOC_ALPHA_LITUSE,
38966 +
38967 +/* The HINT relocation indicates a value that should be filled into the
38968 +"hint" field of a jmp/jsr/ret instruction, for possible branch-
38969 +prediction logic which may be provided on some processors. */
38970 + BFD_RELOC_ALPHA_HINT,
38971 +
38972 +/* The LINKAGE relocation outputs a linkage pair in the object file,
38973 +which is filled by the linker. */
38974 + BFD_RELOC_ALPHA_LINKAGE,
38975 +
38976 +/* The CODEADDR relocation outputs a STO_CA in the object file,
38977 +which is filled by the linker. */
38978 + BFD_RELOC_ALPHA_CODEADDR,
38979 +
38980 +/* The GPREL_HI/LO relocations together form a 32-bit offset from the
38981 +GP register. */
38982 + BFD_RELOC_ALPHA_GPREL_HI16,
38983 + BFD_RELOC_ALPHA_GPREL_LO16,
38984 +
38985 +/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
38986 +share a common GP, and the target address is adjusted for
38987 +STO_ALPHA_STD_GPLOAD. */
38988 + BFD_RELOC_ALPHA_BRSGP,
38989 +
38990 +/* Alpha thread-local storage relocations. */
38991 + BFD_RELOC_ALPHA_TLSGD,
38992 + BFD_RELOC_ALPHA_TLSLDM,
38993 + BFD_RELOC_ALPHA_DTPMOD64,
38994 + BFD_RELOC_ALPHA_GOTDTPREL16,
38995 + BFD_RELOC_ALPHA_DTPREL64,
38996 + BFD_RELOC_ALPHA_DTPREL_HI16,
38997 + BFD_RELOC_ALPHA_DTPREL_LO16,
38998 + BFD_RELOC_ALPHA_DTPREL16,
38999 + BFD_RELOC_ALPHA_GOTTPREL16,
39000 + BFD_RELOC_ALPHA_TPREL64,
39001 + BFD_RELOC_ALPHA_TPREL_HI16,
39002 + BFD_RELOC_ALPHA_TPREL_LO16,
39003 + BFD_RELOC_ALPHA_TPREL16,
39004 +
39005 +/* Bits 27..2 of the relocation address shifted right 2 bits;
39006 +simple reloc otherwise. */
39007 + BFD_RELOC_MIPS_JMP,
39008 +
39009 +/* The MIPS16 jump instruction. */
39010 + BFD_RELOC_MIPS16_JMP,
39011 +
39012 +/* MIPS16 GP relative reloc. */
39013 + BFD_RELOC_MIPS16_GPREL,
39014 +
39015 +/* High 16 bits of 32-bit value; simple reloc. */
39016 + BFD_RELOC_HI16,
39017 +
39018 +/* High 16 bits of 32-bit value but the low 16 bits will be sign
39019 +extended and added to form the final result. If the low 16
39020 +bits form a negative number, we need to add one to the high value
39021 +to compensate for the borrow when the low bits are added. */
39022 + BFD_RELOC_HI16_S,
39023 +
39024 +/* Low 16 bits. */
39025 + BFD_RELOC_LO16,
39026 +
39027 +/* High 16 bits of 32-bit pc-relative value */
39028 + BFD_RELOC_HI16_PCREL,
39029 +
39030 +/* High 16 bits of 32-bit pc-relative value, adjusted */
39031 + BFD_RELOC_HI16_S_PCREL,
39032 +
39033 +/* Low 16 bits of pc-relative value */
39034 + BFD_RELOC_LO16_PCREL,
39035 +
39036 +/* MIPS16 high 16 bits of 32-bit value. */
39037 + BFD_RELOC_MIPS16_HI16,
39038 +
39039 +/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
39040 +extended and added to form the final result. If the low 16
39041 +bits form a negative number, we need to add one to the high value
39042 +to compensate for the borrow when the low bits are added. */
39043 + BFD_RELOC_MIPS16_HI16_S,
39044 +
39045 +/* MIPS16 low 16 bits. */
39046 + BFD_RELOC_MIPS16_LO16,
39047 +
39048 +/* Relocation against a MIPS literal section. */
39049 + BFD_RELOC_MIPS_LITERAL,
39050 +
39051 +/* MIPS ELF relocations. */
39052 + BFD_RELOC_MIPS_GOT16,
39053 + BFD_RELOC_MIPS_CALL16,
39054 + BFD_RELOC_MIPS_GOT_HI16,
39055 + BFD_RELOC_MIPS_GOT_LO16,
39056 + BFD_RELOC_MIPS_CALL_HI16,
39057 + BFD_RELOC_MIPS_CALL_LO16,
39058 + BFD_RELOC_MIPS_SUB,
39059 + BFD_RELOC_MIPS_GOT_PAGE,
39060 + BFD_RELOC_MIPS_GOT_OFST,
39061 + BFD_RELOC_MIPS_GOT_DISP,
39062 + BFD_RELOC_MIPS_SHIFT5,
39063 + BFD_RELOC_MIPS_SHIFT6,
39064 + BFD_RELOC_MIPS_INSERT_A,
39065 + BFD_RELOC_MIPS_INSERT_B,
39066 + BFD_RELOC_MIPS_DELETE,
39067 + BFD_RELOC_MIPS_HIGHEST,
39068 + BFD_RELOC_MIPS_HIGHER,
39069 + BFD_RELOC_MIPS_SCN_DISP,
39070 + BFD_RELOC_MIPS_REL16,
39071 + BFD_RELOC_MIPS_RELGOT,
39072 + BFD_RELOC_MIPS_JALR,
39073 + BFD_RELOC_MIPS_TLS_DTPMOD32,
39074 + BFD_RELOC_MIPS_TLS_DTPREL32,
39075 + BFD_RELOC_MIPS_TLS_DTPMOD64,
39076 + BFD_RELOC_MIPS_TLS_DTPREL64,
39077 + BFD_RELOC_MIPS_TLS_GD,
39078 + BFD_RELOC_MIPS_TLS_LDM,
39079 + BFD_RELOC_MIPS_TLS_DTPREL_HI16,
39080 + BFD_RELOC_MIPS_TLS_DTPREL_LO16,
39081 + BFD_RELOC_MIPS_TLS_GOTTPREL,
39082 + BFD_RELOC_MIPS_TLS_TPREL32,
39083 + BFD_RELOC_MIPS_TLS_TPREL64,
39084 + BFD_RELOC_MIPS_TLS_TPREL_HI16,
39085 + BFD_RELOC_MIPS_TLS_TPREL_LO16,
39086 +
39087 +
39088 +/* MIPS ELF relocations (VxWorks extensions). */
39089 + BFD_RELOC_MIPS_COPY,
39090 + BFD_RELOC_MIPS_JUMP_SLOT,
39091 +
39092 +
39093 +/* Fujitsu Frv Relocations. */
39094 + BFD_RELOC_FRV_LABEL16,
39095 + BFD_RELOC_FRV_LABEL24,
39096 + BFD_RELOC_FRV_LO16,
39097 + BFD_RELOC_FRV_HI16,
39098 + BFD_RELOC_FRV_GPREL12,
39099 + BFD_RELOC_FRV_GPRELU12,
39100 + BFD_RELOC_FRV_GPREL32,
39101 + BFD_RELOC_FRV_GPRELHI,
39102 + BFD_RELOC_FRV_GPRELLO,
39103 + BFD_RELOC_FRV_GOT12,
39104 + BFD_RELOC_FRV_GOTHI,
39105 + BFD_RELOC_FRV_GOTLO,
39106 + BFD_RELOC_FRV_FUNCDESC,
39107 + BFD_RELOC_FRV_FUNCDESC_GOT12,
39108 + BFD_RELOC_FRV_FUNCDESC_GOTHI,
39109 + BFD_RELOC_FRV_FUNCDESC_GOTLO,
39110 + BFD_RELOC_FRV_FUNCDESC_VALUE,
39111 + BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
39112 + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
39113 + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
39114 + BFD_RELOC_FRV_GOTOFF12,
39115 + BFD_RELOC_FRV_GOTOFFHI,
39116 + BFD_RELOC_FRV_GOTOFFLO,
39117 + BFD_RELOC_FRV_GETTLSOFF,
39118 + BFD_RELOC_FRV_TLSDESC_VALUE,
39119 + BFD_RELOC_FRV_GOTTLSDESC12,
39120 + BFD_RELOC_FRV_GOTTLSDESCHI,
39121 + BFD_RELOC_FRV_GOTTLSDESCLO,
39122 + BFD_RELOC_FRV_TLSMOFF12,
39123 + BFD_RELOC_FRV_TLSMOFFHI,
39124 + BFD_RELOC_FRV_TLSMOFFLO,
39125 + BFD_RELOC_FRV_GOTTLSOFF12,
39126 + BFD_RELOC_FRV_GOTTLSOFFHI,
39127 + BFD_RELOC_FRV_GOTTLSOFFLO,
39128 + BFD_RELOC_FRV_TLSOFF,
39129 + BFD_RELOC_FRV_TLSDESC_RELAX,
39130 + BFD_RELOC_FRV_GETTLSOFF_RELAX,
39131 + BFD_RELOC_FRV_TLSOFF_RELAX,
39132 + BFD_RELOC_FRV_TLSMOFF,
39133 +
39134 +
39135 +/* This is a 24bit GOT-relative reloc for the mn10300. */
39136 + BFD_RELOC_MN10300_GOTOFF24,
39137 +
39138 +/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
39139 +in the instruction. */
39140 + BFD_RELOC_MN10300_GOT32,
39141 +
39142 +/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
39143 +in the instruction. */
39144 + BFD_RELOC_MN10300_GOT24,
39145 +
39146 +/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
39147 +in the instruction. */
39148 + BFD_RELOC_MN10300_GOT16,
39149 +
39150 +/* Copy symbol at runtime. */
39151 + BFD_RELOC_MN10300_COPY,
39152 +
39153 +/* Create GOT entry. */
39154 + BFD_RELOC_MN10300_GLOB_DAT,
39155 +
39156 +/* Create PLT entry. */
39157 + BFD_RELOC_MN10300_JMP_SLOT,
39158 +
39159 +/* Adjust by program base. */
39160 + BFD_RELOC_MN10300_RELATIVE,
39161 +
39162 +
39163 +/* i386/elf relocations */
39164 + BFD_RELOC_386_GOT32,
39165 + BFD_RELOC_386_PLT32,
39166 + BFD_RELOC_386_COPY,
39167 + BFD_RELOC_386_GLOB_DAT,
39168 + BFD_RELOC_386_JUMP_SLOT,
39169 + BFD_RELOC_386_RELATIVE,
39170 + BFD_RELOC_386_GOTOFF,
39171 + BFD_RELOC_386_GOTPC,
39172 + BFD_RELOC_386_TLS_TPOFF,
39173 + BFD_RELOC_386_TLS_IE,
39174 + BFD_RELOC_386_TLS_GOTIE,
39175 + BFD_RELOC_386_TLS_LE,
39176 + BFD_RELOC_386_TLS_GD,
39177 + BFD_RELOC_386_TLS_LDM,
39178 + BFD_RELOC_386_TLS_LDO_32,
39179 + BFD_RELOC_386_TLS_IE_32,
39180 + BFD_RELOC_386_TLS_LE_32,
39181 + BFD_RELOC_386_TLS_DTPMOD32,
39182 + BFD_RELOC_386_TLS_DTPOFF32,
39183 + BFD_RELOC_386_TLS_TPOFF32,
39184 + BFD_RELOC_386_TLS_GOTDESC,
39185 + BFD_RELOC_386_TLS_DESC_CALL,
39186 + BFD_RELOC_386_TLS_DESC,
39187 +
39188 +/* x86-64/elf relocations */
39189 + BFD_RELOC_X86_64_GOT32,
39190 + BFD_RELOC_X86_64_PLT32,
39191 + BFD_RELOC_X86_64_COPY,
39192 + BFD_RELOC_X86_64_GLOB_DAT,
39193 + BFD_RELOC_X86_64_JUMP_SLOT,
39194 + BFD_RELOC_X86_64_RELATIVE,
39195 + BFD_RELOC_X86_64_GOTPCREL,
39196 + BFD_RELOC_X86_64_32S,
39197 + BFD_RELOC_X86_64_DTPMOD64,
39198 + BFD_RELOC_X86_64_DTPOFF64,
39199 + BFD_RELOC_X86_64_TPOFF64,
39200 + BFD_RELOC_X86_64_TLSGD,
39201 + BFD_RELOC_X86_64_TLSLD,
39202 + BFD_RELOC_X86_64_DTPOFF32,
39203 + BFD_RELOC_X86_64_GOTTPOFF,
39204 + BFD_RELOC_X86_64_TPOFF32,
39205 + BFD_RELOC_X86_64_GOTOFF64,
39206 + BFD_RELOC_X86_64_GOTPC32,
39207 + BFD_RELOC_X86_64_GOT64,
39208 + BFD_RELOC_X86_64_GOTPCREL64,
39209 + BFD_RELOC_X86_64_GOTPC64,
39210 + BFD_RELOC_X86_64_GOTPLT64,
39211 + BFD_RELOC_X86_64_PLTOFF64,
39212 + BFD_RELOC_X86_64_GOTPC32_TLSDESC,
39213 + BFD_RELOC_X86_64_TLSDESC_CALL,
39214 + BFD_RELOC_X86_64_TLSDESC,
39215 +
39216 +/* ns32k relocations */
39217 + BFD_RELOC_NS32K_IMM_8,
39218 + BFD_RELOC_NS32K_IMM_16,
39219 + BFD_RELOC_NS32K_IMM_32,
39220 + BFD_RELOC_NS32K_IMM_8_PCREL,
39221 + BFD_RELOC_NS32K_IMM_16_PCREL,
39222 + BFD_RELOC_NS32K_IMM_32_PCREL,
39223 + BFD_RELOC_NS32K_DISP_8,
39224 + BFD_RELOC_NS32K_DISP_16,
39225 + BFD_RELOC_NS32K_DISP_32,
39226 + BFD_RELOC_NS32K_DISP_8_PCREL,
39227 + BFD_RELOC_NS32K_DISP_16_PCREL,
39228 + BFD_RELOC_NS32K_DISP_32_PCREL,
39229 +
39230 +/* PDP11 relocations */
39231 + BFD_RELOC_PDP11_DISP_8_PCREL,
39232 + BFD_RELOC_PDP11_DISP_6_PCREL,
39233 +
39234 +/* Picojava relocs. Not all of these appear in object files. */
39235 + BFD_RELOC_PJ_CODE_HI16,
39236 + BFD_RELOC_PJ_CODE_LO16,
39237 + BFD_RELOC_PJ_CODE_DIR16,
39238 + BFD_RELOC_PJ_CODE_DIR32,
39239 + BFD_RELOC_PJ_CODE_REL16,
39240 + BFD_RELOC_PJ_CODE_REL32,
39241 +
39242 +/* Power(rs6000) and PowerPC relocations. */
39243 + BFD_RELOC_PPC_B26,
39244 + BFD_RELOC_PPC_BA26,
39245 + BFD_RELOC_PPC_TOC16,
39246 + BFD_RELOC_PPC_B16,
39247 + BFD_RELOC_PPC_B16_BRTAKEN,
39248 + BFD_RELOC_PPC_B16_BRNTAKEN,
39249 + BFD_RELOC_PPC_BA16,
39250 + BFD_RELOC_PPC_BA16_BRTAKEN,
39251 + BFD_RELOC_PPC_BA16_BRNTAKEN,
39252 + BFD_RELOC_PPC_COPY,
39253 + BFD_RELOC_PPC_GLOB_DAT,
39254 + BFD_RELOC_PPC_JMP_SLOT,
39255 + BFD_RELOC_PPC_RELATIVE,
39256 + BFD_RELOC_PPC_LOCAL24PC,
39257 + BFD_RELOC_PPC_EMB_NADDR32,
39258 + BFD_RELOC_PPC_EMB_NADDR16,
39259 + BFD_RELOC_PPC_EMB_NADDR16_LO,
39260 + BFD_RELOC_PPC_EMB_NADDR16_HI,
39261 + BFD_RELOC_PPC_EMB_NADDR16_HA,
39262 + BFD_RELOC_PPC_EMB_SDAI16,
39263 + BFD_RELOC_PPC_EMB_SDA2I16,
39264 + BFD_RELOC_PPC_EMB_SDA2REL,
39265 + BFD_RELOC_PPC_EMB_SDA21,
39266 + BFD_RELOC_PPC_EMB_MRKREF,
39267 + BFD_RELOC_PPC_EMB_RELSEC16,
39268 + BFD_RELOC_PPC_EMB_RELST_LO,
39269 + BFD_RELOC_PPC_EMB_RELST_HI,
39270 + BFD_RELOC_PPC_EMB_RELST_HA,
39271 + BFD_RELOC_PPC_EMB_BIT_FLD,
39272 + BFD_RELOC_PPC_EMB_RELSDA,
39273 + BFD_RELOC_PPC64_HIGHER,
39274 + BFD_RELOC_PPC64_HIGHER_S,
39275 + BFD_RELOC_PPC64_HIGHEST,
39276 + BFD_RELOC_PPC64_HIGHEST_S,
39277 + BFD_RELOC_PPC64_TOC16_LO,
39278 + BFD_RELOC_PPC64_TOC16_HI,
39279 + BFD_RELOC_PPC64_TOC16_HA,
39280 + BFD_RELOC_PPC64_TOC,
39281 + BFD_RELOC_PPC64_PLTGOT16,
39282 + BFD_RELOC_PPC64_PLTGOT16_LO,
39283 + BFD_RELOC_PPC64_PLTGOT16_HI,
39284 + BFD_RELOC_PPC64_PLTGOT16_HA,
39285 + BFD_RELOC_PPC64_ADDR16_DS,
39286 + BFD_RELOC_PPC64_ADDR16_LO_DS,
39287 + BFD_RELOC_PPC64_GOT16_DS,
39288 + BFD_RELOC_PPC64_GOT16_LO_DS,
39289 + BFD_RELOC_PPC64_PLT16_LO_DS,
39290 + BFD_RELOC_PPC64_SECTOFF_DS,
39291 + BFD_RELOC_PPC64_SECTOFF_LO_DS,
39292 + BFD_RELOC_PPC64_TOC16_DS,
39293 + BFD_RELOC_PPC64_TOC16_LO_DS,
39294 + BFD_RELOC_PPC64_PLTGOT16_DS,
39295 + BFD_RELOC_PPC64_PLTGOT16_LO_DS,
39296 +
39297 +/* PowerPC and PowerPC64 thread-local storage relocations. */
39298 + BFD_RELOC_PPC_TLS,
39299 + BFD_RELOC_PPC_DTPMOD,
39300 + BFD_RELOC_PPC_TPREL16,
39301 + BFD_RELOC_PPC_TPREL16_LO,
39302 + BFD_RELOC_PPC_TPREL16_HI,
39303 + BFD_RELOC_PPC_TPREL16_HA,
39304 + BFD_RELOC_PPC_TPREL,
39305 + BFD_RELOC_PPC_DTPREL16,
39306 + BFD_RELOC_PPC_DTPREL16_LO,
39307 + BFD_RELOC_PPC_DTPREL16_HI,
39308 + BFD_RELOC_PPC_DTPREL16_HA,
39309 + BFD_RELOC_PPC_DTPREL,
39310 + BFD_RELOC_PPC_GOT_TLSGD16,
39311 + BFD_RELOC_PPC_GOT_TLSGD16_LO,
39312 + BFD_RELOC_PPC_GOT_TLSGD16_HI,
39313 + BFD_RELOC_PPC_GOT_TLSGD16_HA,
39314 + BFD_RELOC_PPC_GOT_TLSLD16,
39315 + BFD_RELOC_PPC_GOT_TLSLD16_LO,
39316 + BFD_RELOC_PPC_GOT_TLSLD16_HI,
39317 + BFD_RELOC_PPC_GOT_TLSLD16_HA,
39318 + BFD_RELOC_PPC_GOT_TPREL16,
39319 + BFD_RELOC_PPC_GOT_TPREL16_LO,
39320 + BFD_RELOC_PPC_GOT_TPREL16_HI,
39321 + BFD_RELOC_PPC_GOT_TPREL16_HA,
39322 + BFD_RELOC_PPC_GOT_DTPREL16,
39323 + BFD_RELOC_PPC_GOT_DTPREL16_LO,
39324 + BFD_RELOC_PPC_GOT_DTPREL16_HI,
39325 + BFD_RELOC_PPC_GOT_DTPREL16_HA,
39326 + BFD_RELOC_PPC64_TPREL16_DS,
39327 + BFD_RELOC_PPC64_TPREL16_LO_DS,
39328 + BFD_RELOC_PPC64_TPREL16_HIGHER,
39329 + BFD_RELOC_PPC64_TPREL16_HIGHERA,
39330 + BFD_RELOC_PPC64_TPREL16_HIGHEST,
39331 + BFD_RELOC_PPC64_TPREL16_HIGHESTA,
39332 + BFD_RELOC_PPC64_DTPREL16_DS,
39333 + BFD_RELOC_PPC64_DTPREL16_LO_DS,
39334 + BFD_RELOC_PPC64_DTPREL16_HIGHER,
39335 + BFD_RELOC_PPC64_DTPREL16_HIGHERA,
39336 + BFD_RELOC_PPC64_DTPREL16_HIGHEST,
39337 + BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
39338 +
39339 +/* IBM 370/390 relocations */
39340 + BFD_RELOC_I370_D12,
39341 +
39342 +/* The type of reloc used to build a constructor table - at the moment
39343 +probably a 32 bit wide absolute relocation, but the target can choose.
39344 +It generally does map to one of the other relocation types. */
39345 + BFD_RELOC_CTOR,
39346 +
39347 +/* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
39348 +not stored in the instruction. */
39349 + BFD_RELOC_ARM_PCREL_BRANCH,
39350 +
39351 +/* ARM 26 bit pc-relative branch. The lowest bit must be zero and is
39352 +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
39353 +field in the instruction. */
39354 + BFD_RELOC_ARM_PCREL_BLX,
39355 +
39356 +/* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
39357 +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
39358 +field in the instruction. */
39359 + BFD_RELOC_THUMB_PCREL_BLX,
39360 +
39361 +/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */
39362 + BFD_RELOC_ARM_PCREL_CALL,
39363 +
39364 +/* ARM 26-bit pc-relative branch for B or conditional BL instruction. */
39365 + BFD_RELOC_ARM_PCREL_JUMP,
39366 +
39367 +/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
39368 +The lowest bit must be zero and is not stored in the instruction.
39369 +Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
39370 +"nn" one smaller in all cases. Note further that BRANCH23
39371 +corresponds to R_ARM_THM_CALL. */
39372 + BFD_RELOC_THUMB_PCREL_BRANCH7,
39373 + BFD_RELOC_THUMB_PCREL_BRANCH9,
39374 + BFD_RELOC_THUMB_PCREL_BRANCH12,
39375 + BFD_RELOC_THUMB_PCREL_BRANCH20,
39376 + BFD_RELOC_THUMB_PCREL_BRANCH23,
39377 + BFD_RELOC_THUMB_PCREL_BRANCH25,
39378 +
39379 +/* 12-bit immediate offset, used in ARM-format ldr and str instructions. */
39380 + BFD_RELOC_ARM_OFFSET_IMM,
39381 +
39382 +/* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */
39383 + BFD_RELOC_ARM_THUMB_OFFSET,
39384 +
39385 +/* Pc-relative or absolute relocation depending on target. Used for
39386 +entries in .init_array sections. */
39387 + BFD_RELOC_ARM_TARGET1,
39388 +
39389 +/* Read-only segment base relative address. */
39390 + BFD_RELOC_ARM_ROSEGREL32,
39391 +
39392 +/* Data segment base relative address. */
39393 + BFD_RELOC_ARM_SBREL32,
39394 +
39395 +/* This reloc is used for references to RTTI data from exception handling
39396 +tables. The actual definition depends on the target. It may be a
39397 +pc-relative or some form of GOT-indirect relocation. */
39398 + BFD_RELOC_ARM_TARGET2,
39399 +
39400 +/* 31-bit PC relative address. */
39401 + BFD_RELOC_ARM_PREL31,
39402 +
39403 +/* Low and High halfword relocations for MOVW and MOVT instructions. */
39404 + BFD_RELOC_ARM_MOVW,
39405 + BFD_RELOC_ARM_MOVT,
39406 + BFD_RELOC_ARM_MOVW_PCREL,
39407 + BFD_RELOC_ARM_MOVT_PCREL,
39408 + BFD_RELOC_ARM_THUMB_MOVW,
39409 + BFD_RELOC_ARM_THUMB_MOVT,
39410 + BFD_RELOC_ARM_THUMB_MOVW_PCREL,
39411 + BFD_RELOC_ARM_THUMB_MOVT_PCREL,
39412 +
39413 +/* Relocations for setting up GOTs and PLTs for shared libraries. */
39414 + BFD_RELOC_ARM_JUMP_SLOT,
39415 + BFD_RELOC_ARM_GLOB_DAT,
39416 + BFD_RELOC_ARM_GOT32,
39417 + BFD_RELOC_ARM_PLT32,
39418 + BFD_RELOC_ARM_RELATIVE,
39419 + BFD_RELOC_ARM_GOTOFF,
39420 + BFD_RELOC_ARM_GOTPC,
39421 +
39422 +/* ARM thread-local storage relocations. */
39423 + BFD_RELOC_ARM_TLS_GD32,
39424 + BFD_RELOC_ARM_TLS_LDO32,
39425 + BFD_RELOC_ARM_TLS_LDM32,
39426 + BFD_RELOC_ARM_TLS_DTPOFF32,
39427 + BFD_RELOC_ARM_TLS_DTPMOD32,
39428 + BFD_RELOC_ARM_TLS_TPOFF32,
39429 + BFD_RELOC_ARM_TLS_IE32,
39430 + BFD_RELOC_ARM_TLS_LE32,
39431 +
39432 +/* ARM group relocations. */
39433 + BFD_RELOC_ARM_ALU_PC_G0_NC,
39434 + BFD_RELOC_ARM_ALU_PC_G0,
39435 + BFD_RELOC_ARM_ALU_PC_G1_NC,
39436 + BFD_RELOC_ARM_ALU_PC_G1,
39437 + BFD_RELOC_ARM_ALU_PC_G2,
39438 + BFD_RELOC_ARM_LDR_PC_G0,
39439 + BFD_RELOC_ARM_LDR_PC_G1,
39440 + BFD_RELOC_ARM_LDR_PC_G2,
39441 + BFD_RELOC_ARM_LDRS_PC_G0,
39442 + BFD_RELOC_ARM_LDRS_PC_G1,
39443 + BFD_RELOC_ARM_LDRS_PC_G2,
39444 + BFD_RELOC_ARM_LDC_PC_G0,
39445 + BFD_RELOC_ARM_LDC_PC_G1,
39446 + BFD_RELOC_ARM_LDC_PC_G2,
39447 + BFD_RELOC_ARM_ALU_SB_G0_NC,
39448 + BFD_RELOC_ARM_ALU_SB_G0,
39449 + BFD_RELOC_ARM_ALU_SB_G1_NC,
39450 + BFD_RELOC_ARM_ALU_SB_G1,
39451 + BFD_RELOC_ARM_ALU_SB_G2,
39452 + BFD_RELOC_ARM_LDR_SB_G0,
39453 + BFD_RELOC_ARM_LDR_SB_G1,
39454 + BFD_RELOC_ARM_LDR_SB_G2,
39455 + BFD_RELOC_ARM_LDRS_SB_G0,
39456 + BFD_RELOC_ARM_LDRS_SB_G1,
39457 + BFD_RELOC_ARM_LDRS_SB_G2,
39458 + BFD_RELOC_ARM_LDC_SB_G0,
39459 + BFD_RELOC_ARM_LDC_SB_G1,
39460 + BFD_RELOC_ARM_LDC_SB_G2,
39461 +
39462 +/* These relocs are only used within the ARM assembler. They are not
39463 +(at present) written to any object files. */
39464 + BFD_RELOC_ARM_IMMEDIATE,
39465 + BFD_RELOC_ARM_ADRL_IMMEDIATE,
39466 + BFD_RELOC_ARM_T32_IMMEDIATE,
39467 + BFD_RELOC_ARM_T32_ADD_IMM,
39468 + BFD_RELOC_ARM_T32_IMM12,
39469 + BFD_RELOC_ARM_T32_ADD_PC12,
39470 + BFD_RELOC_ARM_SHIFT_IMM,
39471 + BFD_RELOC_ARM_SMC,
39472 + BFD_RELOC_ARM_SWI,
39473 + BFD_RELOC_ARM_MULTI,
39474 + BFD_RELOC_ARM_CP_OFF_IMM,
39475 + BFD_RELOC_ARM_CP_OFF_IMM_S2,
39476 + BFD_RELOC_ARM_T32_CP_OFF_IMM,
39477 + BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
39478 + BFD_RELOC_ARM_ADR_IMM,
39479 + BFD_RELOC_ARM_LDR_IMM,
39480 + BFD_RELOC_ARM_LITERAL,
39481 + BFD_RELOC_ARM_IN_POOL,
39482 + BFD_RELOC_ARM_OFFSET_IMM8,
39483 + BFD_RELOC_ARM_T32_OFFSET_U8,
39484 + BFD_RELOC_ARM_T32_OFFSET_IMM,
39485 + BFD_RELOC_ARM_HWLITERAL,
39486 + BFD_RELOC_ARM_THUMB_ADD,
39487 + BFD_RELOC_ARM_THUMB_IMM,
39488 + BFD_RELOC_ARM_THUMB_SHIFT,
39489 +
39490 +/* Renesas / SuperH SH relocs. Not all of these appear in object files. */
39491 + BFD_RELOC_SH_PCDISP8BY2,
39492 + BFD_RELOC_SH_PCDISP12BY2,
39493 + BFD_RELOC_SH_IMM3,
39494 + BFD_RELOC_SH_IMM3U,
39495 + BFD_RELOC_SH_DISP12,
39496 + BFD_RELOC_SH_DISP12BY2,
39497 + BFD_RELOC_SH_DISP12BY4,
39498 + BFD_RELOC_SH_DISP12BY8,
39499 + BFD_RELOC_SH_DISP20,
39500 + BFD_RELOC_SH_DISP20BY8,
39501 + BFD_RELOC_SH_IMM4,
39502 + BFD_RELOC_SH_IMM4BY2,
39503 + BFD_RELOC_SH_IMM4BY4,
39504 + BFD_RELOC_SH_IMM8,
39505 + BFD_RELOC_SH_IMM8BY2,
39506 + BFD_RELOC_SH_IMM8BY4,
39507 + BFD_RELOC_SH_PCRELIMM8BY2,
39508 + BFD_RELOC_SH_PCRELIMM8BY4,
39509 + BFD_RELOC_SH_SWITCH16,
39510 + BFD_RELOC_SH_SWITCH32,
39511 + BFD_RELOC_SH_USES,
39512 + BFD_RELOC_SH_COUNT,
39513 + BFD_RELOC_SH_ALIGN,
39514 + BFD_RELOC_SH_CODE,
39515 + BFD_RELOC_SH_DATA,
39516 + BFD_RELOC_SH_LABEL,
39517 + BFD_RELOC_SH_LOOP_START,
39518 + BFD_RELOC_SH_LOOP_END,
39519 + BFD_RELOC_SH_COPY,
39520 + BFD_RELOC_SH_GLOB_DAT,
39521 + BFD_RELOC_SH_JMP_SLOT,
39522 + BFD_RELOC_SH_RELATIVE,
39523 + BFD_RELOC_SH_GOTPC,
39524 + BFD_RELOC_SH_GOT_LOW16,
39525 + BFD_RELOC_SH_GOT_MEDLOW16,
39526 + BFD_RELOC_SH_GOT_MEDHI16,
39527 + BFD_RELOC_SH_GOT_HI16,
39528 + BFD_RELOC_SH_GOTPLT_LOW16,
39529 + BFD_RELOC_SH_GOTPLT_MEDLOW16,
39530 + BFD_RELOC_SH_GOTPLT_MEDHI16,
39531 + BFD_RELOC_SH_GOTPLT_HI16,
39532 + BFD_RELOC_SH_PLT_LOW16,
39533 + BFD_RELOC_SH_PLT_MEDLOW16,
39534 + BFD_RELOC_SH_PLT_MEDHI16,
39535 + BFD_RELOC_SH_PLT_HI16,
39536 + BFD_RELOC_SH_GOTOFF_LOW16,
39537 + BFD_RELOC_SH_GOTOFF_MEDLOW16,
39538 + BFD_RELOC_SH_GOTOFF_MEDHI16,
39539 + BFD_RELOC_SH_GOTOFF_HI16,
39540 + BFD_RELOC_SH_GOTPC_LOW16,
39541 + BFD_RELOC_SH_GOTPC_MEDLOW16,
39542 + BFD_RELOC_SH_GOTPC_MEDHI16,
39543 + BFD_RELOC_SH_GOTPC_HI16,
39544 + BFD_RELOC_SH_COPY64,
39545 + BFD_RELOC_SH_GLOB_DAT64,
39546 + BFD_RELOC_SH_JMP_SLOT64,
39547 + BFD_RELOC_SH_RELATIVE64,
39548 + BFD_RELOC_SH_GOT10BY4,
39549 + BFD_RELOC_SH_GOT10BY8,
39550 + BFD_RELOC_SH_GOTPLT10BY4,
39551 + BFD_RELOC_SH_GOTPLT10BY8,
39552 + BFD_RELOC_SH_GOTPLT32,
39553 + BFD_RELOC_SH_SHMEDIA_CODE,
39554 + BFD_RELOC_SH_IMMU5,
39555 + BFD_RELOC_SH_IMMS6,
39556 + BFD_RELOC_SH_IMMS6BY32,
39557 + BFD_RELOC_SH_IMMU6,
39558 + BFD_RELOC_SH_IMMS10,
39559 + BFD_RELOC_SH_IMMS10BY2,
39560 + BFD_RELOC_SH_IMMS10BY4,
39561 + BFD_RELOC_SH_IMMS10BY8,
39562 + BFD_RELOC_SH_IMMS16,
39563 + BFD_RELOC_SH_IMMU16,
39564 + BFD_RELOC_SH_IMM_LOW16,
39565 + BFD_RELOC_SH_IMM_LOW16_PCREL,
39566 + BFD_RELOC_SH_IMM_MEDLOW16,
39567 + BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
39568 + BFD_RELOC_SH_IMM_MEDHI16,
39569 + BFD_RELOC_SH_IMM_MEDHI16_PCREL,
39570 + BFD_RELOC_SH_IMM_HI16,
39571 + BFD_RELOC_SH_IMM_HI16_PCREL,
39572 + BFD_RELOC_SH_PT_16,
39573 + BFD_RELOC_SH_TLS_GD_32,
39574 + BFD_RELOC_SH_TLS_LD_32,
39575 + BFD_RELOC_SH_TLS_LDO_32,
39576 + BFD_RELOC_SH_TLS_IE_32,
39577 + BFD_RELOC_SH_TLS_LE_32,
39578 + BFD_RELOC_SH_TLS_DTPMOD32,
39579 + BFD_RELOC_SH_TLS_DTPOFF32,
39580 + BFD_RELOC_SH_TLS_TPOFF32,
39581 +
39582 +/* ARC Cores relocs.
39583 +ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
39584 +not stored in the instruction. The high 20 bits are installed in bits 26
39585 +through 7 of the instruction. */
39586 + BFD_RELOC_ARC_B22_PCREL,
39587 +
39588 +/* ARC 26 bit absolute branch. The lowest two bits must be zero and are not
39589 +stored in the instruction. The high 24 bits are installed in bits 23
39590 +through 0. */
39591 + BFD_RELOC_ARC_B26,
39592 +
39593 +/* ADI Blackfin 16 bit immediate absolute reloc. */
39594 + BFD_RELOC_BFIN_16_IMM,
39595 +
39596 +/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */
39597 + BFD_RELOC_BFIN_16_HIGH,
39598 +
39599 +/* ADI Blackfin 'a' part of LSETUP. */
39600 + BFD_RELOC_BFIN_4_PCREL,
39601 +
39602 +/* ADI Blackfin. */
39603 + BFD_RELOC_BFIN_5_PCREL,
39604 +
39605 +/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */
39606 + BFD_RELOC_BFIN_16_LOW,
39607 +
39608 +/* ADI Blackfin. */
39609 + BFD_RELOC_BFIN_10_PCREL,
39610 +
39611 +/* ADI Blackfin 'b' part of LSETUP. */
39612 + BFD_RELOC_BFIN_11_PCREL,
39613 +
39614 +/* ADI Blackfin. */
39615 + BFD_RELOC_BFIN_12_PCREL_JUMP,
39616 +
39617 +/* ADI Blackfin Short jump, pcrel. */
39618 + BFD_RELOC_BFIN_12_PCREL_JUMP_S,
39619 +
39620 +/* ADI Blackfin Call.x not implemented. */
39621 + BFD_RELOC_BFIN_24_PCREL_CALL_X,
39622 +
39623 +/* ADI Blackfin Long Jump pcrel. */
39624 + BFD_RELOC_BFIN_24_PCREL_JUMP_L,
39625 +
39626 +/* ADI Blackfin FD-PIC relocations. */
39627 + BFD_RELOC_BFIN_GOT17M4,
39628 + BFD_RELOC_BFIN_GOTHI,
39629 + BFD_RELOC_BFIN_GOTLO,
39630 + BFD_RELOC_BFIN_FUNCDESC,
39631 + BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
39632 + BFD_RELOC_BFIN_FUNCDESC_GOTHI,
39633 + BFD_RELOC_BFIN_FUNCDESC_GOTLO,
39634 + BFD_RELOC_BFIN_FUNCDESC_VALUE,
39635 + BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
39636 + BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
39637 + BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
39638 + BFD_RELOC_BFIN_GOTOFF17M4,
39639 + BFD_RELOC_BFIN_GOTOFFHI,
39640 + BFD_RELOC_BFIN_GOTOFFLO,
39641 +
39642 +/* ADI Blackfin GOT relocation. */
39643 + BFD_RELOC_BFIN_GOT,
39644 +
39645 +/* ADI Blackfin PLTPC relocation. */
39646 + BFD_RELOC_BFIN_PLTPC,
39647 +
39648 +/* ADI Blackfin arithmetic relocation. */
39649 + BFD_ARELOC_BFIN_PUSH,
39650 +
39651 +/* ADI Blackfin arithmetic relocation. */
39652 + BFD_ARELOC_BFIN_CONST,
39653 +
39654 +/* ADI Blackfin arithmetic relocation. */
39655 + BFD_ARELOC_BFIN_ADD,
39656 +
39657 +/* ADI Blackfin arithmetic relocation. */
39658 + BFD_ARELOC_BFIN_SUB,
39659 +
39660 +/* ADI Blackfin arithmetic relocation. */
39661 + BFD_ARELOC_BFIN_MULT,
39662 +
39663 +/* ADI Blackfin arithmetic relocation. */
39664 + BFD_ARELOC_BFIN_DIV,
39665 +
39666 +/* ADI Blackfin arithmetic relocation. */
39667 + BFD_ARELOC_BFIN_MOD,
39668 +
39669 +/* ADI Blackfin arithmetic relocation. */
39670 + BFD_ARELOC_BFIN_LSHIFT,
39671 +
39672 +/* ADI Blackfin arithmetic relocation. */
39673 + BFD_ARELOC_BFIN_RSHIFT,
39674 +
39675 +/* ADI Blackfin arithmetic relocation. */
39676 + BFD_ARELOC_BFIN_AND,
39677 +
39678 +/* ADI Blackfin arithmetic relocation. */
39679 + BFD_ARELOC_BFIN_OR,
39680 +
39681 +/* ADI Blackfin arithmetic relocation. */
39682 + BFD_ARELOC_BFIN_XOR,
39683 +
39684 +/* ADI Blackfin arithmetic relocation. */
39685 + BFD_ARELOC_BFIN_LAND,
39686 +
39687 +/* ADI Blackfin arithmetic relocation. */
39688 + BFD_ARELOC_BFIN_LOR,
39689 +
39690 +/* ADI Blackfin arithmetic relocation. */
39691 + BFD_ARELOC_BFIN_LEN,
39692 +
39693 +/* ADI Blackfin arithmetic relocation. */
39694 + BFD_ARELOC_BFIN_NEG,
39695 +
39696 +/* ADI Blackfin arithmetic relocation. */
39697 + BFD_ARELOC_BFIN_COMP,
39698 +
39699 +/* ADI Blackfin arithmetic relocation. */
39700 + BFD_ARELOC_BFIN_PAGE,
39701 +
39702 +/* ADI Blackfin arithmetic relocation. */
39703 + BFD_ARELOC_BFIN_HWPAGE,
39704 +
39705 +/* ADI Blackfin arithmetic relocation. */
39706 + BFD_ARELOC_BFIN_ADDR,
39707 +
39708 +/* Mitsubishi D10V relocs.
39709 +This is a 10-bit reloc with the right 2 bits
39710 +assumed to be 0. */
39711 + BFD_RELOC_D10V_10_PCREL_R,
39712 +
39713 +/* Mitsubishi D10V relocs.
39714 +This is a 10-bit reloc with the right 2 bits
39715 +assumed to be 0. This is the same as the previous reloc
39716 +except it is in the left container, i.e.,
39717 +shifted left 15 bits. */
39718 + BFD_RELOC_D10V_10_PCREL_L,
39719 +
39720 +/* This is an 18-bit reloc with the right 2 bits
39721 +assumed to be 0. */
39722 + BFD_RELOC_D10V_18,
39723 +
39724 +/* This is an 18-bit reloc with the right 2 bits
39725 +assumed to be 0. */
39726 + BFD_RELOC_D10V_18_PCREL,
39727 +
39728 +/* Mitsubishi D30V relocs.
39729 +This is a 6-bit absolute reloc. */
39730 + BFD_RELOC_D30V_6,
39731 +
39732 +/* This is a 6-bit pc-relative reloc with
39733 +the right 3 bits assumed to be 0. */
39734 + BFD_RELOC_D30V_9_PCREL,
39735 +
39736 +/* This is a 6-bit pc-relative reloc with
39737 +the right 3 bits assumed to be 0. Same
39738 +as the previous reloc but on the right side
39739 +of the container. */
39740 + BFD_RELOC_D30V_9_PCREL_R,
39741 +
39742 +/* This is a 12-bit absolute reloc with the
39743 +right 3 bitsassumed to be 0. */
39744 + BFD_RELOC_D30V_15,
39745 +
39746 +/* This is a 12-bit pc-relative reloc with
39747 +the right 3 bits assumed to be 0. */
39748 + BFD_RELOC_D30V_15_PCREL,
39749 +
39750 +/* This is a 12-bit pc-relative reloc with
39751 +the right 3 bits assumed to be 0. Same
39752 +as the previous reloc but on the right side
39753 +of the container. */
39754 + BFD_RELOC_D30V_15_PCREL_R,
39755 +
39756 +/* This is an 18-bit absolute reloc with
39757 +the right 3 bits assumed to be 0. */
39758 + BFD_RELOC_D30V_21,
39759 +
39760 +/* This is an 18-bit pc-relative reloc with
39761 +the right 3 bits assumed to be 0. */
39762 + BFD_RELOC_D30V_21_PCREL,
39763 +
39764 +/* This is an 18-bit pc-relative reloc with
39765 +the right 3 bits assumed to be 0. Same
39766 +as the previous reloc but on the right side
39767 +of the container. */
39768 + BFD_RELOC_D30V_21_PCREL_R,
39769 +
39770 +/* This is a 32-bit absolute reloc. */
39771 + BFD_RELOC_D30V_32,
39772 +
39773 +/* This is a 32-bit pc-relative reloc. */
39774 + BFD_RELOC_D30V_32_PCREL,
39775 +
39776 +/* DLX relocs */
39777 + BFD_RELOC_DLX_HI16_S,
39778 +
39779 +/* DLX relocs */
39780 + BFD_RELOC_DLX_LO16,
39781 +
39782 +/* DLX relocs */
39783 + BFD_RELOC_DLX_JMP26,
39784 +
39785 +/* Renesas M16C/M32C Relocations. */
39786 + BFD_RELOC_M32C_HI8,
39787 + BFD_RELOC_M32C_RL_JUMP,
39788 + BFD_RELOC_M32C_RL_1ADDR,
39789 + BFD_RELOC_M32C_RL_2ADDR,
39790 +
39791 +/* Renesas M32R (formerly Mitsubishi M32R) relocs.
39792 +This is a 24 bit absolute address. */
39793 + BFD_RELOC_M32R_24,
39794 +
39795 +/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */
39796 + BFD_RELOC_M32R_10_PCREL,
39797 +
39798 +/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */
39799 + BFD_RELOC_M32R_18_PCREL,
39800 +
39801 +/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */
39802 + BFD_RELOC_M32R_26_PCREL,
39803 +
39804 +/* This is a 16-bit reloc containing the high 16 bits of an address
39805 +used when the lower 16 bits are treated as unsigned. */
39806 + BFD_RELOC_M32R_HI16_ULO,
39807 +
39808 +/* This is a 16-bit reloc containing the high 16 bits of an address
39809 +used when the lower 16 bits are treated as signed. */
39810 + BFD_RELOC_M32R_HI16_SLO,
39811 +
39812 +/* This is a 16-bit reloc containing the lower 16 bits of an address. */
39813 + BFD_RELOC_M32R_LO16,
39814 +
39815 +/* This is a 16-bit reloc containing the small data area offset for use in
39816 +add3, load, and store instructions. */
39817 + BFD_RELOC_M32R_SDA16,
39818 +
39819 +/* For PIC. */
39820 + BFD_RELOC_M32R_GOT24,
39821 + BFD_RELOC_M32R_26_PLTREL,
39822 + BFD_RELOC_M32R_COPY,
39823 + BFD_RELOC_M32R_GLOB_DAT,
39824 + BFD_RELOC_M32R_JMP_SLOT,
39825 + BFD_RELOC_M32R_RELATIVE,
39826 + BFD_RELOC_M32R_GOTOFF,
39827 + BFD_RELOC_M32R_GOTOFF_HI_ULO,
39828 + BFD_RELOC_M32R_GOTOFF_HI_SLO,
39829 + BFD_RELOC_M32R_GOTOFF_LO,
39830 + BFD_RELOC_M32R_GOTPC24,
39831 + BFD_RELOC_M32R_GOT16_HI_ULO,
39832 + BFD_RELOC_M32R_GOT16_HI_SLO,
39833 + BFD_RELOC_M32R_GOT16_LO,
39834 + BFD_RELOC_M32R_GOTPC_HI_ULO,
39835 + BFD_RELOC_M32R_GOTPC_HI_SLO,
39836 + BFD_RELOC_M32R_GOTPC_LO,
39837 +
39838 +/* This is a 9-bit reloc */
39839 + BFD_RELOC_V850_9_PCREL,
39840 +
39841 +/* This is a 22-bit reloc */
39842 + BFD_RELOC_V850_22_PCREL,
39843 +
39844 +/* This is a 16 bit offset from the short data area pointer. */
39845 + BFD_RELOC_V850_SDA_16_16_OFFSET,
39846 +
39847 +/* This is a 16 bit offset (of which only 15 bits are used) from the
39848 +short data area pointer. */
39849 + BFD_RELOC_V850_SDA_15_16_OFFSET,
39850 +
39851 +/* This is a 16 bit offset from the zero data area pointer. */
39852 + BFD_RELOC_V850_ZDA_16_16_OFFSET,
39853 +
39854 +/* This is a 16 bit offset (of which only 15 bits are used) from the
39855 +zero data area pointer. */
39856 + BFD_RELOC_V850_ZDA_15_16_OFFSET,
39857 +
39858 +/* This is an 8 bit offset (of which only 6 bits are used) from the
39859 +tiny data area pointer. */
39860 + BFD_RELOC_V850_TDA_6_8_OFFSET,
39861 +
39862 +/* This is an 8bit offset (of which only 7 bits are used) from the tiny
39863 +data area pointer. */
39864 + BFD_RELOC_V850_TDA_7_8_OFFSET,
39865 +
39866 +/* This is a 7 bit offset from the tiny data area pointer. */
39867 + BFD_RELOC_V850_TDA_7_7_OFFSET,
39868 +
39869 +/* This is a 16 bit offset from the tiny data area pointer. */
39870 + BFD_RELOC_V850_TDA_16_16_OFFSET,
39871 +
39872 +/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
39873 +data area pointer. */
39874 + BFD_RELOC_V850_TDA_4_5_OFFSET,
39875 +
39876 +/* This is a 4 bit offset from the tiny data area pointer. */
39877 + BFD_RELOC_V850_TDA_4_4_OFFSET,
39878 +
39879 +/* This is a 16 bit offset from the short data area pointer, with the
39880 +bits placed non-contiguously in the instruction. */
39881 + BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
39882 +
39883 +/* This is a 16 bit offset from the zero data area pointer, with the
39884 +bits placed non-contiguously in the instruction. */
39885 + BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
39886 +
39887 +/* This is a 6 bit offset from the call table base pointer. */
39888 + BFD_RELOC_V850_CALLT_6_7_OFFSET,
39889 +
39890 +/* This is a 16 bit offset from the call table base pointer. */
39891 + BFD_RELOC_V850_CALLT_16_16_OFFSET,
39892 +
39893 +/* Used for relaxing indirect function calls. */
39894 + BFD_RELOC_V850_LONGCALL,
39895 +
39896 +/* Used for relaxing indirect jumps. */
39897 + BFD_RELOC_V850_LONGJUMP,
39898 +
39899 +/* Used to maintain alignment whilst relaxing. */
39900 + BFD_RELOC_V850_ALIGN,
39901 +
39902 +/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
39903 +instructions. */
39904 + BFD_RELOC_V850_LO16_SPLIT_OFFSET,
39905 +
39906 +/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
39907 +instruction. */
39908 + BFD_RELOC_MN10300_32_PCREL,
39909 +
39910 +/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
39911 +instruction. */
39912 + BFD_RELOC_MN10300_16_PCREL,
39913 +
39914 +/* This is a 8bit DP reloc for the tms320c30, where the most
39915 +significant 8 bits of a 24 bit word are placed into the least
39916 +significant 8 bits of the opcode. */
39917 + BFD_RELOC_TIC30_LDP,
39918 +
39919 +/* This is a 7bit reloc for the tms320c54x, where the least
39920 +significant 7 bits of a 16 bit word are placed into the least
39921 +significant 7 bits of the opcode. */
39922 + BFD_RELOC_TIC54X_PARTLS7,
39923 +
39924 +/* This is a 9bit DP reloc for the tms320c54x, where the most
39925 +significant 9 bits of a 16 bit word are placed into the least
39926 +significant 9 bits of the opcode. */
39927 + BFD_RELOC_TIC54X_PARTMS9,
39928 +
39929 +/* This is an extended address 23-bit reloc for the tms320c54x. */
39930 + BFD_RELOC_TIC54X_23,
39931 +
39932 +/* This is a 16-bit reloc for the tms320c54x, where the least
39933 +significant 16 bits of a 23-bit extended address are placed into
39934 +the opcode. */
39935 + BFD_RELOC_TIC54X_16_OF_23,
39936 +
39937 +/* This is a reloc for the tms320c54x, where the most
39938 +significant 7 bits of a 23-bit extended address are placed into
39939 +the opcode. */
39940 + BFD_RELOC_TIC54X_MS7_OF_23,
39941 +
39942 +/* This is a 48 bit reloc for the FR30 that stores 32 bits. */
39943 + BFD_RELOC_FR30_48,
39944 +
39945 +/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
39946 +two sections. */
39947 + BFD_RELOC_FR30_20,
39948 +
39949 +/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
39950 +4 bits. */
39951 + BFD_RELOC_FR30_6_IN_4,
39952 +
39953 +/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
39954 +into 8 bits. */
39955 + BFD_RELOC_FR30_8_IN_8,
39956 +
39957 +/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
39958 +into 8 bits. */
39959 + BFD_RELOC_FR30_9_IN_8,
39960 +
39961 +/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
39962 +into 8 bits. */
39963 + BFD_RELOC_FR30_10_IN_8,
39964 +
39965 +/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
39966 +short offset into 8 bits. */
39967 + BFD_RELOC_FR30_9_PCREL,
39968 +
39969 +/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
39970 +short offset into 11 bits. */
39971 + BFD_RELOC_FR30_12_PCREL,
39972 +
39973 +/* Motorola Mcore relocations. */
39974 + BFD_RELOC_MCORE_PCREL_IMM8BY4,
39975 + BFD_RELOC_MCORE_PCREL_IMM11BY2,
39976 + BFD_RELOC_MCORE_PCREL_IMM4BY2,
39977 + BFD_RELOC_MCORE_PCREL_32,
39978 + BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
39979 + BFD_RELOC_MCORE_RVA,
39980 +
39981 +/* Toshiba Media Processor Relocations. */
39982 + BFD_RELOC_MEP_8,
39983 + BFD_RELOC_MEP_16,
39984 + BFD_RELOC_MEP_32,
39985 + BFD_RELOC_MEP_PCREL8A2,
39986 + BFD_RELOC_MEP_PCREL12A2,
39987 + BFD_RELOC_MEP_PCREL17A2,
39988 + BFD_RELOC_MEP_PCREL24A2,
39989 + BFD_RELOC_MEP_PCABS24A2,
39990 + BFD_RELOC_MEP_LOW16,
39991 + BFD_RELOC_MEP_HI16U,
39992 + BFD_RELOC_MEP_HI16S,
39993 + BFD_RELOC_MEP_GPREL,
39994 + BFD_RELOC_MEP_TPREL,
39995 + BFD_RELOC_MEP_TPREL7,
39996 + BFD_RELOC_MEP_TPREL7A2,
39997 + BFD_RELOC_MEP_TPREL7A4,
39998 + BFD_RELOC_MEP_UIMM24,
39999 + BFD_RELOC_MEP_ADDR24A4,
40000 + BFD_RELOC_MEP_GNU_VTINHERIT,
40001 + BFD_RELOC_MEP_GNU_VTENTRY,
40002 +
40003 +
40004 +/* These are relocations for the GETA instruction. */
40005 + BFD_RELOC_MMIX_GETA,
40006 + BFD_RELOC_MMIX_GETA_1,
40007 + BFD_RELOC_MMIX_GETA_2,
40008 + BFD_RELOC_MMIX_GETA_3,
40009 +
40010 +/* These are relocations for a conditional branch instruction. */
40011 + BFD_RELOC_MMIX_CBRANCH,
40012 + BFD_RELOC_MMIX_CBRANCH_J,
40013 + BFD_RELOC_MMIX_CBRANCH_1,
40014 + BFD_RELOC_MMIX_CBRANCH_2,
40015 + BFD_RELOC_MMIX_CBRANCH_3,
40016 +
40017 +/* These are relocations for the PUSHJ instruction. */
40018 + BFD_RELOC_MMIX_PUSHJ,
40019 + BFD_RELOC_MMIX_PUSHJ_1,
40020 + BFD_RELOC_MMIX_PUSHJ_2,
40021 + BFD_RELOC_MMIX_PUSHJ_3,
40022 + BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
40023 +
40024 +/* These are relocations for the JMP instruction. */
40025 + BFD_RELOC_MMIX_JMP,
40026 + BFD_RELOC_MMIX_JMP_1,
40027 + BFD_RELOC_MMIX_JMP_2,
40028 + BFD_RELOC_MMIX_JMP_3,
40029 +
40030 +/* This is a relocation for a relative address as in a GETA instruction or
40031 +a branch. */
40032 + BFD_RELOC_MMIX_ADDR19,
40033 +
40034 +/* This is a relocation for a relative address as in a JMP instruction. */
40035 + BFD_RELOC_MMIX_ADDR27,
40036 +
40037 +/* This is a relocation for an instruction field that may be a general
40038 +register or a value 0..255. */
40039 + BFD_RELOC_MMIX_REG_OR_BYTE,
40040 +
40041 +/* This is a relocation for an instruction field that may be a general
40042 +register. */
40043 + BFD_RELOC_MMIX_REG,
40044 +
40045 +/* This is a relocation for two instruction fields holding a register and
40046 +an offset, the equivalent of the relocation. */
40047 + BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
40048 +
40049 +/* This relocation is an assertion that the expression is not allocated as
40050 +a global register. It does not modify contents. */
40051 + BFD_RELOC_MMIX_LOCAL,
40052 +
40053 +/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
40054 +short offset into 7 bits. */
40055 + BFD_RELOC_AVR_7_PCREL,
40056 +
40057 +/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
40058 +short offset into 12 bits. */
40059 + BFD_RELOC_AVR_13_PCREL,
40060 +
40061 +/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
40062 +program memory address) into 16 bits. */
40063 + BFD_RELOC_AVR_16_PM,
40064 +
40065 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
40066 +data memory address) into 8 bit immediate value of LDI insn. */
40067 + BFD_RELOC_AVR_LO8_LDI,
40068 +
40069 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
40070 +of data memory address) into 8 bit immediate value of LDI insn. */
40071 + BFD_RELOC_AVR_HI8_LDI,
40072 +
40073 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
40074 +of program memory address) into 8 bit immediate value of LDI insn. */
40075 + BFD_RELOC_AVR_HH8_LDI,
40076 +
40077 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
40078 +of 32 bit value) into 8 bit immediate value of LDI insn. */
40079 + BFD_RELOC_AVR_MS8_LDI,
40080 +
40081 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
40082 +(usually data memory address) into 8 bit immediate value of SUBI insn. */
40083 + BFD_RELOC_AVR_LO8_LDI_NEG,
40084 +
40085 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
40086 +(high 8 bit of data memory address) into 8 bit immediate value of
40087 +SUBI insn. */
40088 + BFD_RELOC_AVR_HI8_LDI_NEG,
40089 +
40090 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
40091 +(most high 8 bit of program memory address) into 8 bit immediate value
40092 +of LDI or SUBI insn. */
40093 + BFD_RELOC_AVR_HH8_LDI_NEG,
40094 +
40095 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
40096 +of 32 bit value) into 8 bit immediate value of LDI insn. */
40097 + BFD_RELOC_AVR_MS8_LDI_NEG,
40098 +
40099 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
40100 +command address) into 8 bit immediate value of LDI insn. */
40101 + BFD_RELOC_AVR_LO8_LDI_PM,
40102 +
40103 +/* This is a 16 bit reloc for the AVR that stores 8 bit value
40104 +(command address) into 8 bit immediate value of LDI insn. If the address
40105 +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
40106 +in the lower 128k. */
40107 + BFD_RELOC_AVR_LO8_LDI_GS,
40108 +
40109 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
40110 +of command address) into 8 bit immediate value of LDI insn. */
40111 + BFD_RELOC_AVR_HI8_LDI_PM,
40112 +
40113 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
40114 +of command address) into 8 bit immediate value of LDI insn. If the address
40115 +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
40116 +below 128k. */
40117 + BFD_RELOC_AVR_HI8_LDI_GS,
40118 +
40119 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
40120 +of command address) into 8 bit immediate value of LDI insn. */
40121 + BFD_RELOC_AVR_HH8_LDI_PM,
40122 +
40123 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
40124 +(usually command address) into 8 bit immediate value of SUBI insn. */
40125 + BFD_RELOC_AVR_LO8_LDI_PM_NEG,
40126 +
40127 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
40128 +(high 8 bit of 16 bit command address) into 8 bit immediate value
40129 +of SUBI insn. */
40130 + BFD_RELOC_AVR_HI8_LDI_PM_NEG,
40131 +
40132 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
40133 +(high 6 bit of 22 bit command address) into 8 bit immediate
40134 +value of SUBI insn. */
40135 + BFD_RELOC_AVR_HH8_LDI_PM_NEG,
40136 +
40137 +/* This is a 32 bit reloc for the AVR that stores 23 bit value
40138 +into 22 bits. */
40139 + BFD_RELOC_AVR_CALL,
40140 +
40141 +/* This is a 16 bit reloc for the AVR that stores all needed bits
40142 +for absolute addressing with ldi with overflow check to linktime */
40143 + BFD_RELOC_AVR_LDI,
40144 +
40145 +/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
40146 +instructions */
40147 + BFD_RELOC_AVR_6,
40148 +
40149 +/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
40150 +instructions */
40151 + BFD_RELOC_AVR_6_ADIW,
40152 +
40153 +/* Difference between two labels: L2 - L1. The value of L1 is encoded
40154 +as sym + addend, while the initial difference after assembly is
40155 +inserted into the object file by the assembler. */
40156 + BFD_RELOC_AVR32_DIFF32,
40157 + BFD_RELOC_AVR32_DIFF16,
40158 + BFD_RELOC_AVR32_DIFF8,
40159 +
40160 +/* Reference to a symbol through the Global Offset Table. The linker
40161 +will allocate an entry for symbol in the GOT and insert the offset
40162 +of this entry as the relocation value. */
40163 + BFD_RELOC_AVR32_GOT32,
40164 + BFD_RELOC_AVR32_GOT16,
40165 + BFD_RELOC_AVR32_GOT8,
40166 +
40167 +/* Normal (non-pc-relative) code relocations. Alignment and signedness
40168 +is indicated by the suffixes. S means signed, U means unsigned. W
40169 +means word-aligned, H means halfword-aligned, neither means
40170 +byte-aligned (no alignment.) SUB5 is the same relocation as 16S. */
40171 + BFD_RELOC_AVR32_21S,
40172 + BFD_RELOC_AVR32_16U,
40173 + BFD_RELOC_AVR32_16S,
40174 + BFD_RELOC_AVR32_SUB5,
40175 + BFD_RELOC_AVR32_8S_EXT,
40176 + BFD_RELOC_AVR32_8S,
40177 + BFD_RELOC_AVR32_15S,
40178 +
40179 +/* PC-relative relocations are signed if neither 'U' nor 'S' is
40180 +specified. However, we explicitly tack on a 'B' to indicate no
40181 +alignment, to avoid confusion with data relocs. All of these resolve
40182 +to sym + addend - offset, except the one with 'N' (negated) suffix.
40183 +This particular one resolves to offset - sym - addend. */
40184 + BFD_RELOC_AVR32_22H_PCREL,
40185 + BFD_RELOC_AVR32_18W_PCREL,
40186 + BFD_RELOC_AVR32_16B_PCREL,
40187 + BFD_RELOC_AVR32_16N_PCREL,
40188 + BFD_RELOC_AVR32_14UW_PCREL,
40189 + BFD_RELOC_AVR32_11H_PCREL,
40190 + BFD_RELOC_AVR32_10UW_PCREL,
40191 + BFD_RELOC_AVR32_9H_PCREL,
40192 + BFD_RELOC_AVR32_9UW_PCREL,
40193 +
40194 +/* Subtract the link-time address of the GOT from (symbol + addend)
40195 +and insert the result. */
40196 + BFD_RELOC_AVR32_GOTPC,
40197 +
40198 +/* Reference to a symbol through the GOT. The linker will allocate an
40199 +entry for symbol in the GOT and insert the offset of this entry as
40200 +the relocation value. addend must be zero. As usual, 'S' means
40201 +signed, 'W' means word-aligned, etc. */
40202 + BFD_RELOC_AVR32_GOTCALL,
40203 + BFD_RELOC_AVR32_LDA_GOT,
40204 + BFD_RELOC_AVR32_GOT21S,
40205 + BFD_RELOC_AVR32_GOT18SW,
40206 + BFD_RELOC_AVR32_GOT16S,
40207 +
40208 +/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
40209 +a whole lot of sense. */
40210 + BFD_RELOC_AVR32_32_CPENT,
40211 +
40212 +/* Constant pool references. Some of these relocations are signed,
40213 +others are unsigned. It doesn't really matter, since the constant
40214 +pool always comes after the code that references it. */
40215 + BFD_RELOC_AVR32_CPCALL,
40216 + BFD_RELOC_AVR32_16_CP,
40217 + BFD_RELOC_AVR32_9W_CP,
40218 +
40219 +/* sym must be the absolute symbol. The addend specifies the alignment
40220 +order, e.g. if addend is 2, the linker must add padding so that the
40221 +next address is aligned to a 4-byte boundary. */
40222 + BFD_RELOC_AVR32_ALIGN,
40223 +
40224 +/* Code relocations that will never make it to the output file. */
40225 + BFD_RELOC_AVR32_14UW,
40226 + BFD_RELOC_AVR32_10UW,
40227 + BFD_RELOC_AVR32_10SW,
40228 + BFD_RELOC_AVR32_STHH_W,
40229 + BFD_RELOC_AVR32_7UW,
40230 + BFD_RELOC_AVR32_6S,
40231 + BFD_RELOC_AVR32_6UW,
40232 + BFD_RELOC_AVR32_4UH,
40233 + BFD_RELOC_AVR32_3U,
40234 +
40235 +/* Direct 12 bit. */
40236 + BFD_RELOC_390_12,
40237 +
40238 +/* 12 bit GOT offset. */
40239 + BFD_RELOC_390_GOT12,
40240 +
40241 +/* 32 bit PC relative PLT address. */
40242 + BFD_RELOC_390_PLT32,
40243 +
40244 +/* Copy symbol at runtime. */
40245 + BFD_RELOC_390_COPY,
40246 +
40247 +/* Create GOT entry. */
40248 + BFD_RELOC_390_GLOB_DAT,
40249 +
40250 +/* Create PLT entry. */
40251 + BFD_RELOC_390_JMP_SLOT,
40252 +
40253 +/* Adjust by program base. */
40254 + BFD_RELOC_390_RELATIVE,
40255 +
40256 +/* 32 bit PC relative offset to GOT. */
40257 + BFD_RELOC_390_GOTPC,
40258 +
40259 +/* 16 bit GOT offset. */
40260 + BFD_RELOC_390_GOT16,
40261 +
40262 +/* PC relative 16 bit shifted by 1. */
40263 + BFD_RELOC_390_PC16DBL,
40264 +
40265 +/* 16 bit PC rel. PLT shifted by 1. */
40266 + BFD_RELOC_390_PLT16DBL,
40267 +
40268 +/* PC relative 32 bit shifted by 1. */
40269 + BFD_RELOC_390_PC32DBL,
40270 +
40271 +/* 32 bit PC rel. PLT shifted by 1. */
40272 + BFD_RELOC_390_PLT32DBL,
40273 +
40274 +/* 32 bit PC rel. GOT shifted by 1. */
40275 + BFD_RELOC_390_GOTPCDBL,
40276 +
40277 +/* 64 bit GOT offset. */
40278 + BFD_RELOC_390_GOT64,
40279 +
40280 +/* 64 bit PC relative PLT address. */
40281 + BFD_RELOC_390_PLT64,
40282 +
40283 +/* 32 bit rel. offset to GOT entry. */
40284 + BFD_RELOC_390_GOTENT,
40285 +
40286 +/* 64 bit offset to GOT. */
40287 + BFD_RELOC_390_GOTOFF64,
40288 +
40289 +/* 12-bit offset to symbol-entry within GOT, with PLT handling. */
40290 + BFD_RELOC_390_GOTPLT12,
40291 +
40292 +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
40293 + BFD_RELOC_390_GOTPLT16,
40294 +
40295 +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
40296 + BFD_RELOC_390_GOTPLT32,
40297 +
40298 +/* 64-bit offset to symbol-entry within GOT, with PLT handling. */
40299 + BFD_RELOC_390_GOTPLT64,
40300 +
40301 +/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */
40302 + BFD_RELOC_390_GOTPLTENT,
40303 +
40304 +/* 16-bit rel. offset from the GOT to a PLT entry. */
40305 + BFD_RELOC_390_PLTOFF16,
40306 +
40307 +/* 32-bit rel. offset from the GOT to a PLT entry. */
40308 + BFD_RELOC_390_PLTOFF32,
40309 +
40310 +/* 64-bit rel. offset from the GOT to a PLT entry. */
40311 + BFD_RELOC_390_PLTOFF64,
40312 +
40313 +/* s390 tls relocations. */
40314 + BFD_RELOC_390_TLS_LOAD,
40315 + BFD_RELOC_390_TLS_GDCALL,
40316 + BFD_RELOC_390_TLS_LDCALL,
40317 + BFD_RELOC_390_TLS_GD32,
40318 + BFD_RELOC_390_TLS_GD64,
40319 + BFD_RELOC_390_TLS_GOTIE12,
40320 + BFD_RELOC_390_TLS_GOTIE32,
40321 + BFD_RELOC_390_TLS_GOTIE64,
40322 + BFD_RELOC_390_TLS_LDM32,
40323 + BFD_RELOC_390_TLS_LDM64,
40324 + BFD_RELOC_390_TLS_IE32,
40325 + BFD_RELOC_390_TLS_IE64,
40326 + BFD_RELOC_390_TLS_IEENT,
40327 + BFD_RELOC_390_TLS_LE32,
40328 + BFD_RELOC_390_TLS_LE64,
40329 + BFD_RELOC_390_TLS_LDO32,
40330 + BFD_RELOC_390_TLS_LDO64,
40331 + BFD_RELOC_390_TLS_DTPMOD,
40332 + BFD_RELOC_390_TLS_DTPOFF,
40333 + BFD_RELOC_390_TLS_TPOFF,
40334 +
40335 +/* Long displacement extension. */
40336 + BFD_RELOC_390_20,
40337 + BFD_RELOC_390_GOT20,
40338 + BFD_RELOC_390_GOTPLT20,
40339 + BFD_RELOC_390_TLS_GOTIE20,
40340 +
40341 +/* Score relocations */
40342 + BFD_RELOC_SCORE_DUMMY1,
40343 +
40344 +/* Low 16 bit for load/store */
40345 + BFD_RELOC_SCORE_GPREL15,
40346 +
40347 +/* This is a 24-bit reloc with the right 1 bit assumed to be 0 */
40348 + BFD_RELOC_SCORE_DUMMY2,
40349 + BFD_RELOC_SCORE_JMP,
40350 +
40351 +/* This is a 19-bit reloc with the right 1 bit assumed to be 0 */
40352 + BFD_RELOC_SCORE_BRANCH,
40353 +
40354 +/* This is a 11-bit reloc with the right 1 bit assumed to be 0 */
40355 + BFD_RELOC_SCORE16_JMP,
40356 +
40357 +/* This is a 8-bit reloc with the right 1 bit assumed to be 0 */
40358 + BFD_RELOC_SCORE16_BRANCH,
40359 +
40360 +/* Undocumented Score relocs */
40361 + BFD_RELOC_SCORE_GOT15,
40362 + BFD_RELOC_SCORE_GOT_LO16,
40363 + BFD_RELOC_SCORE_CALL15,
40364 + BFD_RELOC_SCORE_DUMMY_HI16,
40365 +
40366 +/* Scenix IP2K - 9-bit register number / data address */
40367 + BFD_RELOC_IP2K_FR9,
40368 +
40369 +/* Scenix IP2K - 4-bit register/data bank number */
40370 + BFD_RELOC_IP2K_BANK,
40371 +
40372 +/* Scenix IP2K - low 13 bits of instruction word address */
40373 + BFD_RELOC_IP2K_ADDR16CJP,
40374 +
40375 +/* Scenix IP2K - high 3 bits of instruction word address */
40376 + BFD_RELOC_IP2K_PAGE3,
40377 +
40378 +/* Scenix IP2K - ext/low/high 8 bits of data address */
40379 + BFD_RELOC_IP2K_LO8DATA,
40380 + BFD_RELOC_IP2K_HI8DATA,
40381 + BFD_RELOC_IP2K_EX8DATA,
40382 +
40383 +/* Scenix IP2K - low/high 8 bits of instruction word address */
40384 + BFD_RELOC_IP2K_LO8INSN,
40385 + BFD_RELOC_IP2K_HI8INSN,
40386 +
40387 +/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */
40388 + BFD_RELOC_IP2K_PC_SKIP,
40389 +
40390 +/* Scenix IP2K - 16 bit word address in text section. */
40391 + BFD_RELOC_IP2K_TEXT,
40392 +
40393 +/* Scenix IP2K - 7-bit sp or dp offset */
40394 + BFD_RELOC_IP2K_FR_OFFSET,
40395 +
40396 +/* Scenix VPE4K coprocessor - data/insn-space addressing */
40397 + BFD_RELOC_VPE4KMATH_DATA,
40398 + BFD_RELOC_VPE4KMATH_INSN,
40399 +
40400 +/* These two relocations are used by the linker to determine which of
40401 +the entries in a C++ virtual function table are actually used. When
40402 +the --gc-sections option is given, the linker will zero out the entries
40403 +that are not used, so that the code for those functions need not be
40404 +included in the output.
40405 +
40406 +VTABLE_INHERIT is a zero-space relocation used to describe to the
40407 +linker the inheritance tree of a C++ virtual function table. The
40408 +relocation's symbol should be the parent class' vtable, and the
40409 +relocation should be located at the child vtable.
40410 +
40411 +VTABLE_ENTRY is a zero-space relocation that describes the use of a
40412 +virtual function table entry. The reloc's symbol should refer to the
40413 +table of the class mentioned in the code. Off of that base, an offset
40414 +describes the entry that is being used. For Rela hosts, this offset
40415 +is stored in the reloc's addend. For Rel hosts, we are forced to put
40416 +this offset in the reloc's section offset. */
40417 + BFD_RELOC_VTABLE_INHERIT,
40418 + BFD_RELOC_VTABLE_ENTRY,
40419 +
40420 +/* Intel IA64 Relocations. */
40421 + BFD_RELOC_IA64_IMM14,
40422 + BFD_RELOC_IA64_IMM22,
40423 + BFD_RELOC_IA64_IMM64,
40424 + BFD_RELOC_IA64_DIR32MSB,
40425 + BFD_RELOC_IA64_DIR32LSB,
40426 + BFD_RELOC_IA64_DIR64MSB,
40427 + BFD_RELOC_IA64_DIR64LSB,
40428 + BFD_RELOC_IA64_GPREL22,
40429 + BFD_RELOC_IA64_GPREL64I,
40430 + BFD_RELOC_IA64_GPREL32MSB,
40431 + BFD_RELOC_IA64_GPREL32LSB,
40432 + BFD_RELOC_IA64_GPREL64MSB,
40433 + BFD_RELOC_IA64_GPREL64LSB,
40434 + BFD_RELOC_IA64_LTOFF22,
40435 + BFD_RELOC_IA64_LTOFF64I,
40436 + BFD_RELOC_IA64_PLTOFF22,
40437 + BFD_RELOC_IA64_PLTOFF64I,
40438 + BFD_RELOC_IA64_PLTOFF64MSB,
40439 + BFD_RELOC_IA64_PLTOFF64LSB,
40440 + BFD_RELOC_IA64_FPTR64I,
40441 + BFD_RELOC_IA64_FPTR32MSB,
40442 + BFD_RELOC_IA64_FPTR32LSB,
40443 + BFD_RELOC_IA64_FPTR64MSB,
40444 + BFD_RELOC_IA64_FPTR64LSB,
40445 + BFD_RELOC_IA64_PCREL21B,
40446 + BFD_RELOC_IA64_PCREL21BI,
40447 + BFD_RELOC_IA64_PCREL21M,
40448 + BFD_RELOC_IA64_PCREL21F,
40449 + BFD_RELOC_IA64_PCREL22,
40450 + BFD_RELOC_IA64_PCREL60B,
40451 + BFD_RELOC_IA64_PCREL64I,
40452 + BFD_RELOC_IA64_PCREL32MSB,
40453 + BFD_RELOC_IA64_PCREL32LSB,
40454 + BFD_RELOC_IA64_PCREL64MSB,
40455 + BFD_RELOC_IA64_PCREL64LSB,
40456 + BFD_RELOC_IA64_LTOFF_FPTR22,
40457 + BFD_RELOC_IA64_LTOFF_FPTR64I,
40458 + BFD_RELOC_IA64_LTOFF_FPTR32MSB,
40459 + BFD_RELOC_IA64_LTOFF_FPTR32LSB,
40460 + BFD_RELOC_IA64_LTOFF_FPTR64MSB,
40461 + BFD_RELOC_IA64_LTOFF_FPTR64LSB,
40462 + BFD_RELOC_IA64_SEGREL32MSB,
40463 + BFD_RELOC_IA64_SEGREL32LSB,
40464 + BFD_RELOC_IA64_SEGREL64MSB,
40465 + BFD_RELOC_IA64_SEGREL64LSB,
40466 + BFD_RELOC_IA64_SECREL32MSB,
40467 + BFD_RELOC_IA64_SECREL32LSB,
40468 + BFD_RELOC_IA64_SECREL64MSB,
40469 + BFD_RELOC_IA64_SECREL64LSB,
40470 + BFD_RELOC_IA64_REL32MSB,
40471 + BFD_RELOC_IA64_REL32LSB,
40472 + BFD_RELOC_IA64_REL64MSB,
40473 + BFD_RELOC_IA64_REL64LSB,
40474 + BFD_RELOC_IA64_LTV32MSB,
40475 + BFD_RELOC_IA64_LTV32LSB,
40476 + BFD_RELOC_IA64_LTV64MSB,
40477 + BFD_RELOC_IA64_LTV64LSB,
40478 + BFD_RELOC_IA64_IPLTMSB,
40479 + BFD_RELOC_IA64_IPLTLSB,
40480 + BFD_RELOC_IA64_COPY,
40481 + BFD_RELOC_IA64_LTOFF22X,
40482 + BFD_RELOC_IA64_LDXMOV,
40483 + BFD_RELOC_IA64_TPREL14,
40484 + BFD_RELOC_IA64_TPREL22,
40485 + BFD_RELOC_IA64_TPREL64I,
40486 + BFD_RELOC_IA64_TPREL64MSB,
40487 + BFD_RELOC_IA64_TPREL64LSB,
40488 + BFD_RELOC_IA64_LTOFF_TPREL22,
40489 + BFD_RELOC_IA64_DTPMOD64MSB,
40490 + BFD_RELOC_IA64_DTPMOD64LSB,
40491 + BFD_RELOC_IA64_LTOFF_DTPMOD22,
40492 + BFD_RELOC_IA64_DTPREL14,
40493 + BFD_RELOC_IA64_DTPREL22,
40494 + BFD_RELOC_IA64_DTPREL64I,
40495 + BFD_RELOC_IA64_DTPREL32MSB,
40496 + BFD_RELOC_IA64_DTPREL32LSB,
40497 + BFD_RELOC_IA64_DTPREL64MSB,
40498 + BFD_RELOC_IA64_DTPREL64LSB,
40499 + BFD_RELOC_IA64_LTOFF_DTPREL22,
40500 +
40501 +/* Motorola 68HC11 reloc.
40502 +This is the 8 bit high part of an absolute address. */
40503 + BFD_RELOC_M68HC11_HI8,
40504 +
40505 +/* Motorola 68HC11 reloc.
40506 +This is the 8 bit low part of an absolute address. */
40507 + BFD_RELOC_M68HC11_LO8,
40508 +
40509 +/* Motorola 68HC11 reloc.
40510 +This is the 3 bit of a value. */
40511 + BFD_RELOC_M68HC11_3B,
40512 +
40513 +/* Motorola 68HC11 reloc.
40514 +This reloc marks the beginning of a jump/call instruction.
40515 +It is used for linker relaxation to correctly identify beginning
40516 +of instruction and change some branches to use PC-relative
40517 +addressing mode. */
40518 + BFD_RELOC_M68HC11_RL_JUMP,
40519 +
40520 +/* Motorola 68HC11 reloc.
40521 +This reloc marks a group of several instructions that gcc generates
40522 +and for which the linker relaxation pass can modify and/or remove
40523 +some of them. */
40524 + BFD_RELOC_M68HC11_RL_GROUP,
40525 +
40526 +/* Motorola 68HC11 reloc.
40527 +This is the 16-bit lower part of an address. It is used for 'call'
40528 +instruction to specify the symbol address without any special
40529 +transformation (due to memory bank window). */
40530 + BFD_RELOC_M68HC11_LO16,
40531 +
40532 +/* Motorola 68HC11 reloc.
40533 +This is a 8-bit reloc that specifies the page number of an address.
40534 +It is used by 'call' instruction to specify the page number of
40535 +the symbol. */
40536 + BFD_RELOC_M68HC11_PAGE,
40537 +
40538 +/* Motorola 68HC11 reloc.
40539 +This is a 24-bit reloc that represents the address with a 16-bit
40540 +value and a 8-bit page number. The symbol address is transformed
40541 +to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */
40542 + BFD_RELOC_M68HC11_24,
40543 +
40544 +/* Motorola 68HC12 reloc.
40545 +This is the 5 bits of a value. */
40546 + BFD_RELOC_M68HC12_5B,
40547 +
40548 +/* NS CR16C Relocations. */
40549 + BFD_RELOC_16C_NUM08,
40550 + BFD_RELOC_16C_NUM08_C,
40551 + BFD_RELOC_16C_NUM16,
40552 + BFD_RELOC_16C_NUM16_C,
40553 + BFD_RELOC_16C_NUM32,
40554 + BFD_RELOC_16C_NUM32_C,
40555 + BFD_RELOC_16C_DISP04,
40556 + BFD_RELOC_16C_DISP04_C,
40557 + BFD_RELOC_16C_DISP08,
40558 + BFD_RELOC_16C_DISP08_C,
40559 + BFD_RELOC_16C_DISP16,
40560 + BFD_RELOC_16C_DISP16_C,
40561 + BFD_RELOC_16C_DISP24,
40562 + BFD_RELOC_16C_DISP24_C,
40563 + BFD_RELOC_16C_DISP24a,
40564 + BFD_RELOC_16C_DISP24a_C,
40565 + BFD_RELOC_16C_REG04,
40566 + BFD_RELOC_16C_REG04_C,
40567 + BFD_RELOC_16C_REG04a,
40568 + BFD_RELOC_16C_REG04a_C,
40569 + BFD_RELOC_16C_REG14,
40570 + BFD_RELOC_16C_REG14_C,
40571 + BFD_RELOC_16C_REG16,
40572 + BFD_RELOC_16C_REG16_C,
40573 + BFD_RELOC_16C_REG20,
40574 + BFD_RELOC_16C_REG20_C,
40575 + BFD_RELOC_16C_ABS20,
40576 + BFD_RELOC_16C_ABS20_C,
40577 + BFD_RELOC_16C_ABS24,
40578 + BFD_RELOC_16C_ABS24_C,
40579 + BFD_RELOC_16C_IMM04,
40580 + BFD_RELOC_16C_IMM04_C,
40581 + BFD_RELOC_16C_IMM16,
40582 + BFD_RELOC_16C_IMM16_C,
40583 + BFD_RELOC_16C_IMM20,
40584 + BFD_RELOC_16C_IMM20_C,
40585 + BFD_RELOC_16C_IMM24,
40586 + BFD_RELOC_16C_IMM24_C,
40587 + BFD_RELOC_16C_IMM32,
40588 + BFD_RELOC_16C_IMM32_C,
40589 +
40590 +/* NS CR16 Relocations. */
40591 + BFD_RELOC_CR16_NUM8,
40592 + BFD_RELOC_CR16_NUM16,
40593 + BFD_RELOC_CR16_NUM32,
40594 + BFD_RELOC_CR16_NUM32a,
40595 + BFD_RELOC_CR16_REGREL0,
40596 + BFD_RELOC_CR16_REGREL4,
40597 + BFD_RELOC_CR16_REGREL4a,
40598 + BFD_RELOC_CR16_REGREL14,
40599 + BFD_RELOC_CR16_REGREL14a,
40600 + BFD_RELOC_CR16_REGREL16,
40601 + BFD_RELOC_CR16_REGREL20,
40602 + BFD_RELOC_CR16_REGREL20a,
40603 + BFD_RELOC_CR16_ABS20,
40604 + BFD_RELOC_CR16_ABS24,
40605 + BFD_RELOC_CR16_IMM4,
40606 + BFD_RELOC_CR16_IMM8,
40607 + BFD_RELOC_CR16_IMM16,
40608 + BFD_RELOC_CR16_IMM20,
40609 + BFD_RELOC_CR16_IMM24,
40610 + BFD_RELOC_CR16_IMM32,
40611 + BFD_RELOC_CR16_IMM32a,
40612 + BFD_RELOC_CR16_DISP4,
40613 + BFD_RELOC_CR16_DISP8,
40614 + BFD_RELOC_CR16_DISP16,
40615 + BFD_RELOC_CR16_DISP20,
40616 + BFD_RELOC_CR16_DISP24,
40617 + BFD_RELOC_CR16_DISP24a,
40618 +
40619 +/* NS CRX Relocations. */
40620 + BFD_RELOC_CRX_REL4,
40621 + BFD_RELOC_CRX_REL8,
40622 + BFD_RELOC_CRX_REL8_CMP,
40623 + BFD_RELOC_CRX_REL16,
40624 + BFD_RELOC_CRX_REL24,
40625 + BFD_RELOC_CRX_REL32,
40626 + BFD_RELOC_CRX_REGREL12,
40627 + BFD_RELOC_CRX_REGREL22,
40628 + BFD_RELOC_CRX_REGREL28,
40629 + BFD_RELOC_CRX_REGREL32,
40630 + BFD_RELOC_CRX_ABS16,
40631 + BFD_RELOC_CRX_ABS32,
40632 + BFD_RELOC_CRX_NUM8,
40633 + BFD_RELOC_CRX_NUM16,
40634 + BFD_RELOC_CRX_NUM32,
40635 + BFD_RELOC_CRX_IMM16,
40636 + BFD_RELOC_CRX_IMM32,
40637 + BFD_RELOC_CRX_SWITCH8,
40638 + BFD_RELOC_CRX_SWITCH16,
40639 + BFD_RELOC_CRX_SWITCH32,
40640 +
40641 +/* These relocs are only used within the CRIS assembler. They are not
40642 +(at present) written to any object files. */
40643 + BFD_RELOC_CRIS_BDISP8,
40644 + BFD_RELOC_CRIS_UNSIGNED_5,
40645 + BFD_RELOC_CRIS_SIGNED_6,
40646 + BFD_RELOC_CRIS_UNSIGNED_6,
40647 + BFD_RELOC_CRIS_SIGNED_8,
40648 + BFD_RELOC_CRIS_UNSIGNED_8,
40649 + BFD_RELOC_CRIS_SIGNED_16,
40650 + BFD_RELOC_CRIS_UNSIGNED_16,
40651 + BFD_RELOC_CRIS_LAPCQ_OFFSET,
40652 + BFD_RELOC_CRIS_UNSIGNED_4,
40653 +
40654 +/* Relocs used in ELF shared libraries for CRIS. */
40655 + BFD_RELOC_CRIS_COPY,
40656 + BFD_RELOC_CRIS_GLOB_DAT,
40657 + BFD_RELOC_CRIS_JUMP_SLOT,
40658 + BFD_RELOC_CRIS_RELATIVE,
40659 +
40660 +/* 32-bit offset to symbol-entry within GOT. */
40661 + BFD_RELOC_CRIS_32_GOT,
40662 +
40663 +/* 16-bit offset to symbol-entry within GOT. */
40664 + BFD_RELOC_CRIS_16_GOT,
40665 +
40666 +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
40667 + BFD_RELOC_CRIS_32_GOTPLT,
40668 +
40669 +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
40670 + BFD_RELOC_CRIS_16_GOTPLT,
40671 +
40672 +/* 32-bit offset to symbol, relative to GOT. */
40673 + BFD_RELOC_CRIS_32_GOTREL,
40674 +
40675 +/* 32-bit offset to symbol with PLT entry, relative to GOT. */
40676 + BFD_RELOC_CRIS_32_PLT_GOTREL,
40677 +
40678 +/* 32-bit offset to symbol with PLT entry, relative to this relocation. */
40679 + BFD_RELOC_CRIS_32_PLT_PCREL,
40680 +
40681 +/* Intel i860 Relocations. */
40682 + BFD_RELOC_860_COPY,
40683 + BFD_RELOC_860_GLOB_DAT,
40684 + BFD_RELOC_860_JUMP_SLOT,
40685 + BFD_RELOC_860_RELATIVE,
40686 + BFD_RELOC_860_PC26,
40687 + BFD_RELOC_860_PLT26,
40688 + BFD_RELOC_860_PC16,
40689 + BFD_RELOC_860_LOW0,
40690 + BFD_RELOC_860_SPLIT0,
40691 + BFD_RELOC_860_LOW1,
40692 + BFD_RELOC_860_SPLIT1,
40693 + BFD_RELOC_860_LOW2,
40694 + BFD_RELOC_860_SPLIT2,
40695 + BFD_RELOC_860_LOW3,
40696 + BFD_RELOC_860_LOGOT0,
40697 + BFD_RELOC_860_SPGOT0,
40698 + BFD_RELOC_860_LOGOT1,
40699 + BFD_RELOC_860_SPGOT1,
40700 + BFD_RELOC_860_LOGOTOFF0,
40701 + BFD_RELOC_860_SPGOTOFF0,
40702 + BFD_RELOC_860_LOGOTOFF1,
40703 + BFD_RELOC_860_SPGOTOFF1,
40704 + BFD_RELOC_860_LOGOTOFF2,
40705 + BFD_RELOC_860_LOGOTOFF3,
40706 + BFD_RELOC_860_LOPC,
40707 + BFD_RELOC_860_HIGHADJ,
40708 + BFD_RELOC_860_HAGOT,
40709 + BFD_RELOC_860_HAGOTOFF,
40710 + BFD_RELOC_860_HAPC,
40711 + BFD_RELOC_860_HIGH,
40712 + BFD_RELOC_860_HIGOT,
40713 + BFD_RELOC_860_HIGOTOFF,
40714 +
40715 +/* OpenRISC Relocations. */
40716 + BFD_RELOC_OPENRISC_ABS_26,
40717 + BFD_RELOC_OPENRISC_REL_26,
40718 +
40719 +/* H8 elf Relocations. */
40720 + BFD_RELOC_H8_DIR16A8,
40721 + BFD_RELOC_H8_DIR16R8,
40722 + BFD_RELOC_H8_DIR24A8,
40723 + BFD_RELOC_H8_DIR24R8,
40724 + BFD_RELOC_H8_DIR32A16,
40725 +
40726 +/* Sony Xstormy16 Relocations. */
40727 + BFD_RELOC_XSTORMY16_REL_12,
40728 + BFD_RELOC_XSTORMY16_12,
40729 + BFD_RELOC_XSTORMY16_24,
40730 + BFD_RELOC_XSTORMY16_FPTR16,
40731 +
40732 +/* Self-describing complex relocations. */
40733 + BFD_RELOC_RELC,
40734 +
40735 +
40736 +/* Infineon Relocations. */
40737 + BFD_RELOC_XC16X_PAG,
40738 + BFD_RELOC_XC16X_POF,
40739 + BFD_RELOC_XC16X_SEG,
40740 + BFD_RELOC_XC16X_SOF,
40741 +
40742 +/* Relocations used by VAX ELF. */
40743 + BFD_RELOC_VAX_GLOB_DAT,
40744 + BFD_RELOC_VAX_JMP_SLOT,
40745 + BFD_RELOC_VAX_RELATIVE,
40746 +
40747 +/* Morpho MT - 16 bit immediate relocation. */
40748 + BFD_RELOC_MT_PC16,
40749 +
40750 +/* Morpho MT - Hi 16 bits of an address. */
40751 + BFD_RELOC_MT_HI16,
40752 +
40753 +/* Morpho MT - Low 16 bits of an address. */
40754 + BFD_RELOC_MT_LO16,
40755 +
40756 +/* Morpho MT - Used to tell the linker which vtable entries are used. */
40757 + BFD_RELOC_MT_GNU_VTINHERIT,
40758 +
40759 +/* Morpho MT - Used to tell the linker which vtable entries are used. */
40760 + BFD_RELOC_MT_GNU_VTENTRY,
40761 +
40762 +/* Morpho MT - 8 bit immediate relocation. */
40763 + BFD_RELOC_MT_PCINSN8,
40764 +
40765 +/* msp430 specific relocation codes */
40766 + BFD_RELOC_MSP430_10_PCREL,
40767 + BFD_RELOC_MSP430_16_PCREL,
40768 + BFD_RELOC_MSP430_16,
40769 + BFD_RELOC_MSP430_16_PCREL_BYTE,
40770 + BFD_RELOC_MSP430_16_BYTE,
40771 + BFD_RELOC_MSP430_2X_PCREL,
40772 + BFD_RELOC_MSP430_RL_PCREL,
40773 +
40774 +/* IQ2000 Relocations. */
40775 + BFD_RELOC_IQ2000_OFFSET_16,
40776 + BFD_RELOC_IQ2000_OFFSET_21,
40777 + BFD_RELOC_IQ2000_UHI16,
40778 +
40779 +/* Special Xtensa relocation used only by PLT entries in ELF shared
40780 +objects to indicate that the runtime linker should set the value
40781 +to one of its own internal functions or data structures. */
40782 + BFD_RELOC_XTENSA_RTLD,
40783 +
40784 +/* Xtensa relocations for ELF shared objects. */
40785 + BFD_RELOC_XTENSA_GLOB_DAT,
40786 + BFD_RELOC_XTENSA_JMP_SLOT,
40787 + BFD_RELOC_XTENSA_RELATIVE,
40788 +
40789 +/* Xtensa relocation used in ELF object files for symbols that may require
40790 +PLT entries. Otherwise, this is just a generic 32-bit relocation. */
40791 + BFD_RELOC_XTENSA_PLT,
40792 +
40793 +/* Xtensa relocations to mark the difference of two local symbols.
40794 +These are only needed to support linker relaxation and can be ignored
40795 +when not relaxing. The field is set to the value of the difference
40796 +assuming no relaxation. The relocation encodes the position of the
40797 +first symbol so the linker can determine whether to adjust the field
40798 +value. */
40799 + BFD_RELOC_XTENSA_DIFF8,
40800 + BFD_RELOC_XTENSA_DIFF16,
40801 + BFD_RELOC_XTENSA_DIFF32,
40802 +
40803 +/* Generic Xtensa relocations for instruction operands. Only the slot
40804 +number is encoded in the relocation. The relocation applies to the
40805 +last PC-relative immediate operand, or if there are no PC-relative
40806 +immediates, to the last immediate operand. */
40807 + BFD_RELOC_XTENSA_SLOT0_OP,
40808 + BFD_RELOC_XTENSA_SLOT1_OP,
40809 + BFD_RELOC_XTENSA_SLOT2_OP,
40810 + BFD_RELOC_XTENSA_SLOT3_OP,
40811 + BFD_RELOC_XTENSA_SLOT4_OP,
40812 + BFD_RELOC_XTENSA_SLOT5_OP,
40813 + BFD_RELOC_XTENSA_SLOT6_OP,
40814 + BFD_RELOC_XTENSA_SLOT7_OP,
40815 + BFD_RELOC_XTENSA_SLOT8_OP,
40816 + BFD_RELOC_XTENSA_SLOT9_OP,
40817 + BFD_RELOC_XTENSA_SLOT10_OP,
40818 + BFD_RELOC_XTENSA_SLOT11_OP,
40819 + BFD_RELOC_XTENSA_SLOT12_OP,
40820 + BFD_RELOC_XTENSA_SLOT13_OP,
40821 + BFD_RELOC_XTENSA_SLOT14_OP,
40822 +
40823 +/* Alternate Xtensa relocations. Only the slot is encoded in the
40824 +relocation. The meaning of these relocations is opcode-specific. */
40825 + BFD_RELOC_XTENSA_SLOT0_ALT,
40826 + BFD_RELOC_XTENSA_SLOT1_ALT,
40827 + BFD_RELOC_XTENSA_SLOT2_ALT,
40828 + BFD_RELOC_XTENSA_SLOT3_ALT,
40829 + BFD_RELOC_XTENSA_SLOT4_ALT,
40830 + BFD_RELOC_XTENSA_SLOT5_ALT,
40831 + BFD_RELOC_XTENSA_SLOT6_ALT,
40832 + BFD_RELOC_XTENSA_SLOT7_ALT,
40833 + BFD_RELOC_XTENSA_SLOT8_ALT,
40834 + BFD_RELOC_XTENSA_SLOT9_ALT,
40835 + BFD_RELOC_XTENSA_SLOT10_ALT,
40836 + BFD_RELOC_XTENSA_SLOT11_ALT,
40837 + BFD_RELOC_XTENSA_SLOT12_ALT,
40838 + BFD_RELOC_XTENSA_SLOT13_ALT,
40839 + BFD_RELOC_XTENSA_SLOT14_ALT,
40840 +
40841 +/* Xtensa relocations for backward compatibility. These have all been
40842 +replaced by BFD_RELOC_XTENSA_SLOT0_OP. */
40843 + BFD_RELOC_XTENSA_OP0,
40844 + BFD_RELOC_XTENSA_OP1,
40845 + BFD_RELOC_XTENSA_OP2,
40846 +
40847 +/* Xtensa relocation to mark that the assembler expanded the
40848 +instructions from an original target. The expansion size is
40849 +encoded in the reloc size. */
40850 + BFD_RELOC_XTENSA_ASM_EXPAND,
40851 +
40852 +/* Xtensa relocation to mark that the linker should simplify
40853 +assembler-expanded instructions. This is commonly used
40854 +internally by the linker after analysis of a
40855 +BFD_RELOC_XTENSA_ASM_EXPAND. */
40856 + BFD_RELOC_XTENSA_ASM_SIMPLIFY,
40857 +
40858 +/* 8 bit signed offset in (ix+d) or (iy+d). */
40859 + BFD_RELOC_Z80_DISP8,
40860 +
40861 +/* DJNZ offset. */
40862 + BFD_RELOC_Z8K_DISP7,
40863 +
40864 +/* CALR offset. */
40865 + BFD_RELOC_Z8K_CALLR,
40866 +
40867 +/* 4 bit value. */
40868 + BFD_RELOC_Z8K_IMM4L,
40869 + BFD_RELOC_UNUSED };
40870 +typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
40871 +reloc_howto_type *bfd_reloc_type_lookup
40872 + (bfd *abfd, bfd_reloc_code_real_type code);
40873 +reloc_howto_type *bfd_reloc_name_lookup
40874 + (bfd *abfd, const char *reloc_name);
40875 +
40876 +const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
40877 +
40878 +/* Extracted from syms.c. */
40879 +
40880 +typedef struct bfd_symbol
40881 +{
40882 + /* A pointer to the BFD which owns the symbol. This information
40883 + is necessary so that a back end can work out what additional
40884 + information (invisible to the application writer) is carried
40885 + with the symbol.
40886 +
40887 + This field is *almost* redundant, since you can use section->owner
40888 + instead, except that some symbols point to the global sections
40889 + bfd_{abs,com,und}_section. This could be fixed by making
40890 + these globals be per-bfd (or per-target-flavor). FIXME. */
40891 + struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
40892 +
40893 + /* The text of the symbol. The name is left alone, and not copied; the
40894 + application may not alter it. */
40895 + const char *name;
40896 +
40897 + /* The value of the symbol. This really should be a union of a
40898 + numeric value with a pointer, since some flags indicate that
40899 + a pointer to another symbol is stored here. */
40900 + symvalue value;
40901 +
40902 + /* Attributes of a symbol. */
40903 +#define BSF_NO_FLAGS 0x00
40904 +
40905 + /* The symbol has local scope; <<static>> in <<C>>. The value
40906 + is the offset into the section of the data. */
40907 +#define BSF_LOCAL 0x01
40908 +
40909 + /* The symbol has global scope; initialized data in <<C>>. The
40910 + value is the offset into the section of the data. */
40911 +#define BSF_GLOBAL 0x02
40912 +
40913 + /* The symbol has global scope and is exported. The value is
40914 + the offset into the section of the data. */
40915 +#define BSF_EXPORT BSF_GLOBAL /* No real difference. */
40916 +
40917 + /* A normal C symbol would be one of:
40918 + <<BSF_LOCAL>>, <<BSF_FORT_COMM>>, <<BSF_UNDEFINED>> or
40919 + <<BSF_GLOBAL>>. */
40920 +
40921 + /* The symbol is a debugging record. The value has an arbitrary
40922 + meaning, unless BSF_DEBUGGING_RELOC is also set. */
40923 +#define BSF_DEBUGGING 0x08
40924 +
40925 + /* The symbol denotes a function entry point. Used in ELF,
40926 + perhaps others someday. */
40927 +#define BSF_FUNCTION 0x10
40928 +
40929 + /* Used by the linker. */
40930 +#define BSF_KEEP 0x20
40931 +#define BSF_KEEP_G 0x40
40932 +
40933 + /* A weak global symbol, overridable without warnings by
40934 + a regular global symbol of the same name. */
40935 +#define BSF_WEAK 0x80
40936 +
40937 + /* This symbol was created to point to a section, e.g. ELF's
40938 + STT_SECTION symbols. */
40939 +#define BSF_SECTION_SYM 0x100
40940 +
40941 + /* The symbol used to be a common symbol, but now it is
40942 + allocated. */
40943 +#define BSF_OLD_COMMON 0x200
40944 +
40945 + /* The default value for common data. */
40946 +#define BFD_FORT_COMM_DEFAULT_VALUE 0
40947 +
40948 + /* In some files the type of a symbol sometimes alters its
40949 + location in an output file - ie in coff a <<ISFCN>> symbol
40950 + which is also <<C_EXT>> symbol appears where it was
40951 + declared and not at the end of a section. This bit is set
40952 + by the target BFD part to convey this information. */
40953 +#define BSF_NOT_AT_END 0x400
40954 +
40955 + /* Signal that the symbol is the label of constructor section. */
40956 +#define BSF_CONSTRUCTOR 0x800
40957 +
40958 + /* Signal that the symbol is a warning symbol. The name is a
40959 + warning. The name of the next symbol is the one to warn about;
40960 + if a reference is made to a symbol with the same name as the next
40961 + symbol, a warning is issued by the linker. */
40962 +#define BSF_WARNING 0x1000
40963 +
40964 + /* Signal that the symbol is indirect. This symbol is an indirect
40965 + pointer to the symbol with the same name as the next symbol. */
40966 +#define BSF_INDIRECT 0x2000
40967 +
40968 + /* BSF_FILE marks symbols that contain a file name. This is used
40969 + for ELF STT_FILE symbols. */
40970 +#define BSF_FILE 0x4000
40971 +
40972 + /* Symbol is from dynamic linking information. */
40973 +#define BSF_DYNAMIC 0x8000
40974 +
40975 + /* The symbol denotes a data object. Used in ELF, and perhaps
40976 + others someday. */
40977 +#define BSF_OBJECT 0x10000
40978 +
40979 + /* This symbol is a debugging symbol. The value is the offset
40980 + into the section of the data. BSF_DEBUGGING should be set
40981 + as well. */
40982 +#define BSF_DEBUGGING_RELOC 0x20000
40983 +
40984 + /* This symbol is thread local. Used in ELF. */
40985 +#define BSF_THREAD_LOCAL 0x40000
40986 +
40987 + /* This symbol represents a complex relocation expression,
40988 + with the expression tree serialized in the symbol name. */
40989 +#define BSF_RELC 0x80000
40990 +
40991 + /* This symbol represents a signed complex relocation expression,
40992 + with the expression tree serialized in the symbol name. */
40993 +#define BSF_SRELC 0x100000
40994 +
40995 + flagword flags;
40996 +
40997 + /* A pointer to the section to which this symbol is
40998 + relative. This will always be non NULL, there are special
40999 + sections for undefined and absolute symbols. */
41000 + struct bfd_section *section;
41001 +
41002 + /* Back end special data. */
41003 + union
41004 + {
41005 + void *p;
41006 + bfd_vma i;
41007 + }
41008 + udata;
41009 +}
41010 +asymbol;
41011 +
41012 +#define bfd_get_symtab_upper_bound(abfd) \
41013 + BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
41014 +
41015 +bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
41016 +
41017 +bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
41018 +
41019 +#define bfd_is_local_label_name(abfd, name) \
41020 + BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
41021 +
41022 +bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
41023 +
41024 +#define bfd_is_target_special_symbol(abfd, sym) \
41025 + BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
41026 +
41027 +#define bfd_canonicalize_symtab(abfd, location) \
41028 + BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
41029 +
41030 +bfd_boolean bfd_set_symtab
41031 + (bfd *abfd, asymbol **location, unsigned int count);
41032 +
41033 +void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
41034 +
41035 +#define bfd_make_empty_symbol(abfd) \
41036 + BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
41037 +
41038 +asymbol *_bfd_generic_make_empty_symbol (bfd *);
41039 +
41040 +#define bfd_make_debug_symbol(abfd,ptr,size) \
41041 + BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
41042 +
41043 +int bfd_decode_symclass (asymbol *symbol);
41044 +
41045 +bfd_boolean bfd_is_undefined_symclass (int symclass);
41046 +
41047 +void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
41048 +
41049 +bfd_boolean bfd_copy_private_symbol_data
41050 + (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
41051 +
41052 +#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
41053 + BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
41054 + (ibfd, isymbol, obfd, osymbol))
41055 +
41056 +/* Extracted from bfd.c. */
41057 +struct bfd
41058 +{
41059 + /* A unique identifier of the BFD */
41060 + unsigned int id;
41061 +
41062 + /* The filename the application opened the BFD with. */
41063 + const char *filename;
41064 +
41065 + /* A pointer to the target jump table. */
41066 + const struct bfd_target *xvec;
41067 +
41068 + /* The IOSTREAM, and corresponding IO vector that provide access
41069 + to the file backing the BFD. */
41070 + void *iostream;
41071 + const struct bfd_iovec *iovec;
41072 +
41073 + /* Is the file descriptor being cached? That is, can it be closed as
41074 + needed, and re-opened when accessed later? */
41075 + bfd_boolean cacheable;
41076 +
41077 + /* Marks whether there was a default target specified when the
41078 + BFD was opened. This is used to select which matching algorithm
41079 + to use to choose the back end. */
41080 + bfd_boolean target_defaulted;
41081 +
41082 + /* The caching routines use these to maintain a
41083 + least-recently-used list of BFDs. */
41084 + struct bfd *lru_prev, *lru_next;
41085 +
41086 + /* When a file is closed by the caching routines, BFD retains
41087 + state information on the file here... */
41088 + ufile_ptr where;
41089 +
41090 + /* ... and here: (``once'' means at least once). */
41091 + bfd_boolean opened_once;
41092 +
41093 + /* Set if we have a locally maintained mtime value, rather than
41094 + getting it from the file each time. */
41095 + bfd_boolean mtime_set;
41096 +
41097 + /* File modified time, if mtime_set is TRUE. */
41098 + long mtime;
41099 +
41100 + /* Reserved for an unimplemented file locking extension. */
41101 + int ifd;
41102 +
41103 + /* The format which belongs to the BFD. (object, core, etc.) */
41104 + bfd_format format;
41105 +
41106 + /* The direction with which the BFD was opened. */
41107 + enum bfd_direction
41108 + {
41109 + no_direction = 0,
41110 + read_direction = 1,
41111 + write_direction = 2,
41112 + both_direction = 3
41113 + }
41114 + direction;
41115 +
41116 + /* Format_specific flags. */
41117 + flagword flags;
41118 +
41119 + /* Currently my_archive is tested before adding origin to
41120 + anything. I believe that this can become always an add of
41121 + origin, with origin set to 0 for non archive files. */
41122 + ufile_ptr origin;
41123 +
41124 + /* Remember when output has begun, to stop strange things
41125 + from happening. */
41126 + bfd_boolean output_has_begun;
41127 +
41128 + /* A hash table for section names. */
41129 + struct bfd_hash_table section_htab;
41130 +
41131 + /* Pointer to linked list of sections. */
41132 + struct bfd_section *sections;
41133 +
41134 + /* The last section on the section list. */
41135 + struct bfd_section *section_last;
41136 +
41137 + /* The number of sections. */
41138 + unsigned int section_count;
41139 +
41140 + /* Stuff only useful for object files:
41141 + The start address. */
41142 + bfd_vma start_address;
41143 +
41144 + /* Used for input and output. */
41145 + unsigned int symcount;
41146 +
41147 + /* Symbol table for output BFD (with symcount entries). */
41148 + struct bfd_symbol **outsymbols;
41149 +
41150 + /* Used for slurped dynamic symbol tables. */
41151 + unsigned int dynsymcount;
41152 +
41153 + /* Pointer to structure which contains architecture information. */
41154 + const struct bfd_arch_info *arch_info;
41155 +
41156 + /* Flag set if symbols from this BFD should not be exported. */
41157 + bfd_boolean no_export;
41158 +
41159 + /* Stuff only useful for archives. */
41160 + void *arelt_data;
41161 + struct bfd *my_archive; /* The containing archive BFD. */
41162 + struct bfd *archive_next; /* The next BFD in the archive. */
41163 + struct bfd *archive_head; /* The first BFD in the archive. */
41164 + bfd_boolean has_armap;
41165 +
41166 + /* A chain of BFD structures involved in a link. */
41167 + struct bfd *link_next;
41168 +
41169 + /* A field used by _bfd_generic_link_add_archive_symbols. This will
41170 + be used only for archive elements. */
41171 + int archive_pass;
41172 +
41173 + /* Used by the back end to hold private data. */
41174 + union
41175 + {
41176 + struct aout_data_struct *aout_data;
41177 + struct artdata *aout_ar_data;
41178 + struct _oasys_data *oasys_obj_data;
41179 + struct _oasys_ar_data *oasys_ar_data;
41180 + struct coff_tdata *coff_obj_data;
41181 + struct pe_tdata *pe_obj_data;
41182 + struct xcoff_tdata *xcoff_obj_data;
41183 + struct ecoff_tdata *ecoff_obj_data;
41184 + struct ieee_data_struct *ieee_data;
41185 + struct ieee_ar_data_struct *ieee_ar_data;
41186 + struct srec_data_struct *srec_data;
41187 + struct ihex_data_struct *ihex_data;
41188 + struct tekhex_data_struct *tekhex_data;
41189 + struct elf_obj_tdata *elf_obj_data;
41190 + struct nlm_obj_tdata *nlm_obj_data;
41191 + struct bout_data_struct *bout_data;
41192 + struct mmo_data_struct *mmo_data;
41193 + struct sun_core_struct *sun_core_data;
41194 + struct sco5_core_struct *sco5_core_data;
41195 + struct trad_core_struct *trad_core_data;
41196 + struct som_data_struct *som_data;
41197 + struct hpux_core_struct *hpux_core_data;
41198 + struct hppabsd_core_struct *hppabsd_core_data;
41199 + struct sgi_core_struct *sgi_core_data;
41200 + struct lynx_core_struct *lynx_core_data;
41201 + struct osf_core_struct *osf_core_data;
41202 + struct cisco_core_struct *cisco_core_data;
41203 + struct versados_data_struct *versados_data;
41204 + struct netbsd_core_struct *netbsd_core_data;
41205 + struct mach_o_data_struct *mach_o_data;
41206 + struct mach_o_fat_data_struct *mach_o_fat_data;
41207 + struct bfd_pef_data_struct *pef_data;
41208 + struct bfd_pef_xlib_data_struct *pef_xlib_data;
41209 + struct bfd_sym_data_struct *sym_data;
41210 + void *any;
41211 + }
41212 + tdata;
41213 +
41214 + /* Used by the application to hold private data. */
41215 + void *usrdata;
41216 +
41217 + /* Where all the allocated stuff under this BFD goes. This is a
41218 + struct objalloc *, but we use void * to avoid requiring the inclusion
41219 + of objalloc.h. */
41220 + void *memory;
41221 +};
41222 +
41223 +typedef enum bfd_error
41224 +{
41225 + bfd_error_no_error = 0,
41226 + bfd_error_system_call,
41227 + bfd_error_invalid_target,
41228 + bfd_error_wrong_format,
41229 + bfd_error_wrong_object_format,
41230 + bfd_error_invalid_operation,
41231 + bfd_error_no_memory,
41232 + bfd_error_no_symbols,
41233 + bfd_error_no_armap,
41234 + bfd_error_no_more_archived_files,
41235 + bfd_error_malformed_archive,
41236 + bfd_error_file_not_recognized,
41237 + bfd_error_file_ambiguously_recognized,
41238 + bfd_error_no_contents,
41239 + bfd_error_nonrepresentable_section,
41240 + bfd_error_no_debug_section,
41241 + bfd_error_bad_value,
41242 + bfd_error_file_truncated,
41243 + bfd_error_file_too_big,
41244 + bfd_error_on_input,
41245 + bfd_error_invalid_error_code
41246 +}
41247 +bfd_error_type;
41248 +
41249 +bfd_error_type bfd_get_error (void);
41250 +
41251 +void bfd_set_error (bfd_error_type error_tag, ...);
41252 +
41253 +const char *bfd_errmsg (bfd_error_type error_tag);
41254 +
41255 +void bfd_perror (const char *message);
41256 +
41257 +typedef void (*bfd_error_handler_type) (const char *, ...);
41258 +
41259 +bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
41260 +
41261 +void bfd_set_error_program_name (const char *);
41262 +
41263 +bfd_error_handler_type bfd_get_error_handler (void);
41264 +
41265 +long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
41266 +
41267 +long bfd_canonicalize_reloc
41268 + (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
41269 +
41270 +void bfd_set_reloc
41271 + (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
41272 +
41273 +bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
41274 +
41275 +int bfd_get_arch_size (bfd *abfd);
41276 +
41277 +int bfd_get_sign_extend_vma (bfd *abfd);
41278 +
41279 +bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
41280 +
41281 +unsigned int bfd_get_gp_size (bfd *abfd);
41282 +
41283 +void bfd_set_gp_size (bfd *abfd, unsigned int i);
41284 +
41285 +bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
41286 +
41287 +bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
41288 +
41289 +#define bfd_copy_private_header_data(ibfd, obfd) \
41290 + BFD_SEND (obfd, _bfd_copy_private_header_data, \
41291 + (ibfd, obfd))
41292 +bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
41293 +
41294 +#define bfd_copy_private_bfd_data(ibfd, obfd) \
41295 + BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
41296 + (ibfd, obfd))
41297 +bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
41298 +
41299 +#define bfd_merge_private_bfd_data(ibfd, obfd) \
41300 + BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
41301 + (ibfd, obfd))
41302 +bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
41303 +
41304 +#define bfd_set_private_flags(abfd, flags) \
41305 + BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
41306 +#define bfd_sizeof_headers(abfd, info) \
41307 + BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
41308 +
41309 +#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
41310 + BFD_SEND (abfd, _bfd_find_nearest_line, \
41311 + (abfd, sec, syms, off, file, func, line))
41312 +
41313 +#define bfd_find_line(abfd, syms, sym, file, line) \
41314 + BFD_SEND (abfd, _bfd_find_line, \
41315 + (abfd, syms, sym, file, line))
41316 +
41317 +#define bfd_find_inliner_info(abfd, file, func, line) \
41318 + BFD_SEND (abfd, _bfd_find_inliner_info, \
41319 + (abfd, file, func, line))
41320 +
41321 +#define bfd_debug_info_start(abfd) \
41322 + BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
41323 +
41324 +#define bfd_debug_info_end(abfd) \
41325 + BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
41326 +
41327 +#define bfd_debug_info_accumulate(abfd, section) \
41328 + BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
41329 +
41330 +#define bfd_stat_arch_elt(abfd, stat) \
41331 + BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
41332 +
41333 +#define bfd_update_armap_timestamp(abfd) \
41334 + BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
41335 +
41336 +#define bfd_set_arch_mach(abfd, arch, mach)\
41337 + BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
41338 +
41339 +#define bfd_relax_section(abfd, section, link_info, again) \
41340 + BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
41341 +
41342 +#define bfd_gc_sections(abfd, link_info) \
41343 + BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
41344 +
41345 +#define bfd_merge_sections(abfd, link_info) \
41346 + BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
41347 +
41348 +#define bfd_is_group_section(abfd, sec) \
41349 + BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
41350 +
41351 +#define bfd_discard_group(abfd, sec) \
41352 + BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
41353 +
41354 +#define bfd_link_hash_table_create(abfd) \
41355 + BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
41356 +
41357 +#define bfd_link_hash_table_free(abfd, hash) \
41358 + BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
41359 +
41360 +#define bfd_link_add_symbols(abfd, info) \
41361 + BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
41362 +
41363 +#define bfd_link_just_syms(abfd, sec, info) \
41364 + BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
41365 +
41366 +#define bfd_final_link(abfd, info) \
41367 + BFD_SEND (abfd, _bfd_final_link, (abfd, info))
41368 +
41369 +#define bfd_free_cached_info(abfd) \
41370 + BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
41371 +
41372 +#define bfd_get_dynamic_symtab_upper_bound(abfd) \
41373 + BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
41374 +
41375 +#define bfd_print_private_bfd_data(abfd, file)\
41376 + BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
41377 +
41378 +#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
41379 + BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
41380 +
41381 +#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
41382 + BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
41383 + dyncount, dynsyms, ret))
41384 +
41385 +#define bfd_get_dynamic_reloc_upper_bound(abfd) \
41386 + BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
41387 +
41388 +#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
41389 + BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
41390 +
41391 +extern bfd_byte *bfd_get_relocated_section_contents
41392 + (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
41393 + bfd_boolean, asymbol **);
41394 +
41395 +bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
41396 +
41397 +struct bfd_preserve
41398 +{
41399 + void *marker;
41400 + void *tdata;
41401 + flagword flags;
41402 + const struct bfd_arch_info *arch_info;
41403 + struct bfd_section *sections;
41404 + struct bfd_section *section_last;
41405 + unsigned int section_count;
41406 + struct bfd_hash_table section_htab;
41407 +};
41408 +
41409 +bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
41410 +
41411 +void bfd_preserve_restore (bfd *, struct bfd_preserve *);
41412 +
41413 +void bfd_preserve_finish (bfd *, struct bfd_preserve *);
41414 +
41415 +bfd_vma bfd_emul_get_maxpagesize (const char *);
41416 +
41417 +void bfd_emul_set_maxpagesize (const char *, bfd_vma);
41418 +
41419 +bfd_vma bfd_emul_get_commonpagesize (const char *);
41420 +
41421 +void bfd_emul_set_commonpagesize (const char *, bfd_vma);
41422 +
41423 +char *bfd_demangle (bfd *, const char *, int);
41424 +
41425 +/* Extracted from archive.c. */
41426 +symindex bfd_get_next_mapent
41427 + (bfd *abfd, symindex previous, carsym **sym);
41428 +
41429 +bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
41430 +
41431 +bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
41432 +
41433 +/* Extracted from corefile.c. */
41434 +const char *bfd_core_file_failing_command (bfd *abfd);
41435 +
41436 +int bfd_core_file_failing_signal (bfd *abfd);
41437 +
41438 +bfd_boolean core_file_matches_executable_p
41439 + (bfd *core_bfd, bfd *exec_bfd);
41440 +
41441 +bfd_boolean generic_core_file_matches_executable_p
41442 + (bfd *core_bfd, bfd *exec_bfd);
41443 +
41444 +/* Extracted from targets.c. */
41445 +#define BFD_SEND(bfd, message, arglist) \
41446 + ((*((bfd)->xvec->message)) arglist)
41447 +
41448 +#ifdef DEBUG_BFD_SEND
41449 +#undef BFD_SEND
41450 +#define BFD_SEND(bfd, message, arglist) \
41451 + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
41452 + ((*((bfd)->xvec->message)) arglist) : \
41453 + (bfd_assert (__FILE__,__LINE__), NULL))
41454 +#endif
41455 +#define BFD_SEND_FMT(bfd, message, arglist) \
41456 + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
41457 +
41458 +#ifdef DEBUG_BFD_SEND
41459 +#undef BFD_SEND_FMT
41460 +#define BFD_SEND_FMT(bfd, message, arglist) \
41461 + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
41462 + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
41463 + (bfd_assert (__FILE__,__LINE__), NULL))
41464 +#endif
41465 +
41466 +enum bfd_flavour
41467 +{
41468 + bfd_target_unknown_flavour,
41469 + bfd_target_aout_flavour,
41470 + bfd_target_coff_flavour,
41471 + bfd_target_ecoff_flavour,
41472 + bfd_target_xcoff_flavour,
41473 + bfd_target_elf_flavour,
41474 + bfd_target_ieee_flavour,
41475 + bfd_target_nlm_flavour,
41476 + bfd_target_oasys_flavour,
41477 + bfd_target_tekhex_flavour,
41478 + bfd_target_srec_flavour,
41479 + bfd_target_ihex_flavour,
41480 + bfd_target_som_flavour,
41481 + bfd_target_os9k_flavour,
41482 + bfd_target_versados_flavour,
41483 + bfd_target_msdos_flavour,
41484 + bfd_target_ovax_flavour,
41485 + bfd_target_evax_flavour,
41486 + bfd_target_mmo_flavour,
41487 + bfd_target_mach_o_flavour,
41488 + bfd_target_pef_flavour,
41489 + bfd_target_pef_xlib_flavour,
41490 + bfd_target_sym_flavour
41491 +};
41492 +
41493 +enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
41494 +
41495 +/* Forward declaration. */
41496 +typedef struct bfd_link_info _bfd_link_info;
41497 +
41498 +typedef struct bfd_target
41499 +{
41500 + /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
41501 + char *name;
41502 +
41503 + /* The "flavour" of a back end is a general indication about
41504 + the contents of a file. */
41505 + enum bfd_flavour flavour;
41506 +
41507 + /* The order of bytes within the data area of a file. */
41508 + enum bfd_endian byteorder;
41509 +
41510 + /* The order of bytes within the header parts of a file. */
41511 + enum bfd_endian header_byteorder;
41512 +
41513 + /* A mask of all the flags which an executable may have set -
41514 + from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>. */
41515 + flagword object_flags;
41516 +
41517 + /* A mask of all the flags which a section may have set - from
41518 + the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>. */
41519 + flagword section_flags;
41520 +
41521 + /* The character normally found at the front of a symbol.
41522 + (if any), perhaps `_'. */
41523 + char symbol_leading_char;
41524 +
41525 + /* The pad character for file names within an archive header. */
41526 + char ar_pad_char;
41527 +
41528 + /* The maximum number of characters in an archive header. */
41529 + unsigned short ar_max_namelen;
41530 +
41531 + /* Entries for byte swapping for data. These are different from the
41532 + other entry points, since they don't take a BFD as the first argument.
41533 + Certain other handlers could do the same. */
41534 + bfd_uint64_t (*bfd_getx64) (const void *);
41535 + bfd_int64_t (*bfd_getx_signed_64) (const void *);
41536 + void (*bfd_putx64) (bfd_uint64_t, void *);
41537 + bfd_vma (*bfd_getx32) (const void *);
41538 + bfd_signed_vma (*bfd_getx_signed_32) (const void *);
41539 + void (*bfd_putx32) (bfd_vma, void *);
41540 + bfd_vma (*bfd_getx16) (const void *);
41541 + bfd_signed_vma (*bfd_getx_signed_16) (const void *);
41542 + void (*bfd_putx16) (bfd_vma, void *);
41543 +
41544 + /* Byte swapping for the headers. */
41545 + bfd_uint64_t (*bfd_h_getx64) (const void *);
41546 + bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
41547 + void (*bfd_h_putx64) (bfd_uint64_t, void *);
41548 + bfd_vma (*bfd_h_getx32) (const void *);
41549 + bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
41550 + void (*bfd_h_putx32) (bfd_vma, void *);
41551 + bfd_vma (*bfd_h_getx16) (const void *);
41552 + bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
41553 + void (*bfd_h_putx16) (bfd_vma, void *);
41554 +
41555 + /* Format dependent routines: these are vectors of entry points
41556 + within the target vector structure, one for each format to check. */
41557 +
41558 + /* Check the format of a file being read. Return a <<bfd_target *>> or zero. */
41559 + const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
41560 +
41561 + /* Set the format of a file being written. */
41562 + bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
41563 +
41564 + /* Write cached information into a file being written, at <<bfd_close>>. */
41565 + bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
41566 +
41567 +
41568 + /* Generic entry points. */
41569 +#define BFD_JUMP_TABLE_GENERIC(NAME) \
41570 + NAME##_close_and_cleanup, \
41571 + NAME##_bfd_free_cached_info, \
41572 + NAME##_new_section_hook, \
41573 + NAME##_get_section_contents, \
41574 + NAME##_get_section_contents_in_window
41575 +
41576 + /* Called when the BFD is being closed to do any necessary cleanup. */
41577 + bfd_boolean (*_close_and_cleanup) (bfd *);
41578 + /* Ask the BFD to free all cached information. */
41579 + bfd_boolean (*_bfd_free_cached_info) (bfd *);
41580 + /* Called when a new section is created. */
41581 + bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
41582 + /* Read the contents of a section. */
41583 + bfd_boolean (*_bfd_get_section_contents)
41584 + (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
41585 + bfd_boolean (*_bfd_get_section_contents_in_window)
41586 + (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
41587 +
41588 + /* Entry points to copy private data. */
41589 +#define BFD_JUMP_TABLE_COPY(NAME) \
41590 + NAME##_bfd_copy_private_bfd_data, \
41591 + NAME##_bfd_merge_private_bfd_data, \
41592 + _bfd_generic_init_private_section_data, \
41593 + NAME##_bfd_copy_private_section_data, \
41594 + NAME##_bfd_copy_private_symbol_data, \
41595 + NAME##_bfd_copy_private_header_data, \
41596 + NAME##_bfd_set_private_flags, \
41597 + NAME##_bfd_print_private_bfd_data
41598 +
41599 + /* Called to copy BFD general private data from one object file
41600 + to another. */
41601 + bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
41602 + /* Called to merge BFD general private data from one object file
41603 + to a common output file when linking. */
41604 + bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
41605 + /* Called to initialize BFD private section data from one object file
41606 + to another. */
41607 +#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
41608 + BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
41609 + bfd_boolean (*_bfd_init_private_section_data)
41610 + (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
41611 + /* Called to copy BFD private section data from one object file
41612 + to another. */
41613 + bfd_boolean (*_bfd_copy_private_section_data)
41614 + (bfd *, sec_ptr, bfd *, sec_ptr);
41615 + /* Called to copy BFD private symbol data from one symbol
41616 + to another. */
41617 + bfd_boolean (*_bfd_copy_private_symbol_data)
41618 + (bfd *, asymbol *, bfd *, asymbol *);
41619 + /* Called to copy BFD private header data from one object file
41620 + to another. */
41621 + bfd_boolean (*_bfd_copy_private_header_data)
41622 + (bfd *, bfd *);
41623 + /* Called to set private backend flags. */
41624 + bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
41625 +
41626 + /* Called to print private BFD data. */
41627 + bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
41628 +
41629 + /* Core file entry points. */
41630 +#define BFD_JUMP_TABLE_CORE(NAME) \
41631 + NAME##_core_file_failing_command, \
41632 + NAME##_core_file_failing_signal, \
41633 + NAME##_core_file_matches_executable_p
41634 +
41635 + char * (*_core_file_failing_command) (bfd *);
41636 + int (*_core_file_failing_signal) (bfd *);
41637 + bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
41638 +
41639 + /* Archive entry points. */
41640 +#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
41641 + NAME##_slurp_armap, \
41642 + NAME##_slurp_extended_name_table, \
41643 + NAME##_construct_extended_name_table, \
41644 + NAME##_truncate_arname, \
41645 + NAME##_write_armap, \
41646 + NAME##_read_ar_hdr, \
41647 + NAME##_openr_next_archived_file, \
41648 + NAME##_get_elt_at_index, \
41649 + NAME##_generic_stat_arch_elt, \
41650 + NAME##_update_armap_timestamp
41651 +
41652 + bfd_boolean (*_bfd_slurp_armap) (bfd *);
41653 + bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
41654 + bfd_boolean (*_bfd_construct_extended_name_table)
41655 + (bfd *, char **, bfd_size_type *, const char **);
41656 + void (*_bfd_truncate_arname) (bfd *, const char *, char *);
41657 + bfd_boolean (*write_armap)
41658 + (bfd *, unsigned int, struct orl *, unsigned int, int);
41659 + void * (*_bfd_read_ar_hdr_fn) (bfd *);
41660 + bfd * (*openr_next_archived_file) (bfd *, bfd *);
41661 +#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
41662 + bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
41663 + int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
41664 + bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
41665 +
41666 + /* Entry points used for symbols. */
41667 +#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
41668 + NAME##_get_symtab_upper_bound, \
41669 + NAME##_canonicalize_symtab, \
41670 + NAME##_make_empty_symbol, \
41671 + NAME##_print_symbol, \
41672 + NAME##_get_symbol_info, \
41673 + NAME##_bfd_is_local_label_name, \
41674 + NAME##_bfd_is_target_special_symbol, \
41675 + NAME##_get_lineno, \
41676 + NAME##_find_nearest_line, \
41677 + _bfd_generic_find_line, \
41678 + NAME##_find_inliner_info, \
41679 + NAME##_bfd_make_debug_symbol, \
41680 + NAME##_read_minisymbols, \
41681 + NAME##_minisymbol_to_symbol
41682 +
41683 + long (*_bfd_get_symtab_upper_bound) (bfd *);
41684 + long (*_bfd_canonicalize_symtab)
41685 + (bfd *, struct bfd_symbol **);
41686 + struct bfd_symbol *
41687 + (*_bfd_make_empty_symbol) (bfd *);
41688 + void (*_bfd_print_symbol)
41689 + (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
41690 +#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
41691 + void (*_bfd_get_symbol_info)
41692 + (bfd *, struct bfd_symbol *, symbol_info *);
41693 +#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
41694 + bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
41695 + bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
41696 + alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
41697 + bfd_boolean (*_bfd_find_nearest_line)
41698 + (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
41699 + const char **, const char **, unsigned int *);
41700 + bfd_boolean (*_bfd_find_line)
41701 + (bfd *, struct bfd_symbol **, struct bfd_symbol *,
41702 + const char **, unsigned int *);
41703 + bfd_boolean (*_bfd_find_inliner_info)
41704 + (bfd *, const char **, const char **, unsigned int *);
41705 + /* Back-door to allow format-aware applications to create debug symbols
41706 + while using BFD for everything else. Currently used by the assembler
41707 + when creating COFF files. */
41708 + asymbol * (*_bfd_make_debug_symbol)
41709 + (bfd *, void *, unsigned long size);
41710 +#define bfd_read_minisymbols(b, d, m, s) \
41711 + BFD_SEND (b, _read_minisymbols, (b, d, m, s))
41712 + long (*_read_minisymbols)
41713 + (bfd *, bfd_boolean, void **, unsigned int *);
41714 +#define bfd_minisymbol_to_symbol(b, d, m, f) \
41715 + BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
41716 + asymbol * (*_minisymbol_to_symbol)
41717 + (bfd *, bfd_boolean, const void *, asymbol *);
41718 +
41719 + /* Routines for relocs. */
41720 +#define BFD_JUMP_TABLE_RELOCS(NAME) \
41721 + NAME##_get_reloc_upper_bound, \
41722 + NAME##_canonicalize_reloc, \
41723 + NAME##_bfd_reloc_type_lookup, \
41724 + NAME##_bfd_reloc_name_lookup
41725 +
41726 + long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
41727 + long (*_bfd_canonicalize_reloc)
41728 + (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
41729 + /* See documentation on reloc types. */
41730 + reloc_howto_type *
41731 + (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
41732 + reloc_howto_type *
41733 + (*reloc_name_lookup) (bfd *, const char *);
41734 +
41735 +
41736 + /* Routines used when writing an object file. */
41737 +#define BFD_JUMP_TABLE_WRITE(NAME) \
41738 + NAME##_set_arch_mach, \
41739 + NAME##_set_section_contents
41740 +
41741 + bfd_boolean (*_bfd_set_arch_mach)
41742 + (bfd *, enum bfd_architecture, unsigned long);
41743 + bfd_boolean (*_bfd_set_section_contents)
41744 + (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
41745 +
41746 + /* Routines used by the linker. */
41747 +#define BFD_JUMP_TABLE_LINK(NAME) \
41748 + NAME##_sizeof_headers, \
41749 + NAME##_bfd_get_relocated_section_contents, \
41750 + NAME##_bfd_relax_section, \
41751 + NAME##_bfd_link_hash_table_create, \
41752 + NAME##_bfd_link_hash_table_free, \
41753 + NAME##_bfd_link_add_symbols, \
41754 + NAME##_bfd_link_just_syms, \
41755 + NAME##_bfd_final_link, \
41756 + NAME##_bfd_link_split_section, \
41757 + NAME##_bfd_gc_sections, \
41758 + NAME##_bfd_merge_sections, \
41759 + NAME##_bfd_is_group_section, \
41760 + NAME##_bfd_discard_group, \
41761 + NAME##_section_already_linked \
41762 +
41763 + int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
41764 + bfd_byte * (*_bfd_get_relocated_section_contents)
41765 + (bfd *, struct bfd_link_info *, struct bfd_link_order *,
41766 + bfd_byte *, bfd_boolean, struct bfd_symbol **);
41767 +
41768 + bfd_boolean (*_bfd_relax_section)
41769 + (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
41770 +
41771 + /* Create a hash table for the linker. Different backends store
41772 + different information in this table. */
41773 + struct bfd_link_hash_table *
41774 + (*_bfd_link_hash_table_create) (bfd *);
41775 +
41776 + /* Release the memory associated with the linker hash table. */
41777 + void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
41778 +
41779 + /* Add symbols from this object file into the hash table. */
41780 + bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
41781 +
41782 + /* Indicate that we are only retrieving symbol values from this section. */
41783 + void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
41784 +
41785 + /* Do a link based on the link_order structures attached to each
41786 + section of the BFD. */
41787 + bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
41788 +
41789 + /* Should this section be split up into smaller pieces during linking. */
41790 + bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
41791 +
41792 + /* Remove sections that are not referenced from the output. */
41793 + bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
41794 +
41795 + /* Attempt to merge SEC_MERGE sections. */
41796 + bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
41797 +
41798 + /* Is this section a member of a group? */
41799 + bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
41800 +
41801 + /* Discard members of a group. */
41802 + bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
41803 +
41804 + /* Check if SEC has been already linked during a reloceatable or
41805 + final link. */
41806 + void (*_section_already_linked) (bfd *, struct bfd_section *,
41807 + struct bfd_link_info *);
41808 +
41809 + /* Routines to handle dynamic symbols and relocs. */
41810 +#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
41811 + NAME##_get_dynamic_symtab_upper_bound, \
41812 + NAME##_canonicalize_dynamic_symtab, \
41813 + NAME##_get_synthetic_symtab, \
41814 + NAME##_get_dynamic_reloc_upper_bound, \
41815 + NAME##_canonicalize_dynamic_reloc
41816 +
41817 + /* Get the amount of memory required to hold the dynamic symbols. */
41818 + long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
41819 + /* Read in the dynamic symbols. */
41820 + long (*_bfd_canonicalize_dynamic_symtab)
41821 + (bfd *, struct bfd_symbol **);
41822 + /* Create synthetized symbols. */
41823 + long (*_bfd_get_synthetic_symtab)
41824 + (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
41825 + struct bfd_symbol **);
41826 + /* Get the amount of memory required to hold the dynamic relocs. */
41827 + long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
41828 + /* Read in the dynamic relocs. */
41829 + long (*_bfd_canonicalize_dynamic_reloc)
41830 + (bfd *, arelent **, struct bfd_symbol **);
41831 +
41832 + /* Opposite endian version of this target. */
41833 + const struct bfd_target * alternative_target;
41834 +
41835 + /* Data for use by back-end routines, which isn't
41836 + generic enough to belong in this structure. */
41837 + const void *backend_data;
41838 +
41839 +} bfd_target;
41840 +
41841 +bfd_boolean bfd_set_default_target (const char *name);
41842 +
41843 +const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
41844 +
41845 +const char ** bfd_target_list (void);
41846 +
41847 +const bfd_target *bfd_search_for_target
41848 + (int (*search_func) (const bfd_target *, void *),
41849 + void *);
41850 +
41851 +/* Extracted from format.c. */
41852 +bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
41853 +
41854 +bfd_boolean bfd_check_format_matches
41855 + (bfd *abfd, bfd_format format, char ***matching);
41856 +
41857 +bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
41858 +
41859 +const char *bfd_format_string (bfd_format format);
41860 +
41861 +/* Extracted from linker.c. */
41862 +bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
41863 +
41864 +#define bfd_link_split_section(abfd, sec) \
41865 + BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
41866 +
41867 +void bfd_section_already_linked (bfd *abfd, asection *sec,
41868 + struct bfd_link_info *info);
41869 +
41870 +#define bfd_section_already_linked(abfd, sec, info) \
41871 + BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
41872 +
41873 +/* Extracted from simple.c. */
41874 +bfd_byte *bfd_simple_get_relocated_section_contents
41875 + (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
41876 +
41877 +#ifdef __cplusplus
41878 +}
41879 +#endif
41880 +#endif
41881 Index: binutils-2.18/bfd/doc/libbfd.h
41882 ===================================================================
41883 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
41884 +++ binutils-2.18/bfd/doc/libbfd.h 2008-11-25 15:25:40.000000000 +0100
41885 @@ -0,0 +1,2074 @@
41886 +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
41887 + generated from "libbfd-in.h", "init.c", "libbfd.c", "bfdio.c",
41888 + "bfdwin.c", "cache.c", "reloc.c", "archures.c" and "elf.c".
41889 + Run "make headers" in your build bfd/ to regenerate. */
41890 +
41891 +/* libbfd.h -- Declarations used by bfd library *implementation*.
41892 + (This include file is not for users of the library.)
41893 +
41894 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
41895 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
41896 + Free Software Foundation, Inc.
41897 +
41898 + Written by Cygnus Support.
41899 +
41900 + This file is part of BFD, the Binary File Descriptor library.
41901 +
41902 + This program is free software; you can redistribute it and/or modify
41903 + it under the terms of the GNU General Public License as published by
41904 + the Free Software Foundation; either version 3 of the License, or
41905 + (at your option) any later version.
41906 +
41907 + This program is distributed in the hope that it will be useful,
41908 + but WITHOUT ANY WARRANTY; without even the implied warranty of
41909 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
41910 + GNU General Public License for more details.
41911 +
41912 + You should have received a copy of the GNU General Public License
41913 + along with this program; if not, write to the Free Software
41914 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
41915 + MA 02110-1301, USA. */
41916 +
41917 +#include "hashtab.h"
41918 +
41919 +/* Align an address upward to a boundary, expressed as a number of bytes.
41920 + E.g. align to an 8-byte boundary with argument of 8. Take care never
41921 + to wrap around if the address is within boundary-1 of the end of the
41922 + address space. */
41923 +#define BFD_ALIGN(this, boundary) \
41924 + ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this)) \
41925 + ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
41926 + : ~ (bfd_vma) 0)
41927 +
41928 +/* If you want to read and write large blocks, you might want to do it
41929 + in quanta of this amount */
41930 +#define DEFAULT_BUFFERSIZE 8192
41931 +
41932 +/* Set a tdata field. Can't use the other macros for this, since they
41933 + do casts, and casting to the left of assignment isn't portable. */
41934 +#define set_tdata(bfd, v) ((bfd)->tdata.any = (v))
41935 +
41936 +/* If BFD_IN_MEMORY is set for a BFD, then the iostream fields points
41937 + to an instance of this structure. */
41938 +
41939 +struct bfd_in_memory
41940 +{
41941 + /* Size of buffer. */
41942 + bfd_size_type size;
41943 + /* Buffer holding contents of BFD. */
41944 + bfd_byte *buffer;
41945 +};
41946 +
41947 +struct section_hash_entry
41948 +{
41949 + struct bfd_hash_entry root;
41950 + asection section;
41951 +};
41952 +
41953 +/* tdata for an archive. For an input archive, cache
41954 + needs to be free()'d. For an output archive, symdefs do. */
41955 +
41956 +struct artdata {
41957 + file_ptr first_file_filepos;
41958 + /* Speed up searching the armap */
41959 + htab_t cache;
41960 + bfd *archive_head; /* Only interesting in output routines */
41961 + carsym *symdefs; /* the symdef entries */
41962 + symindex symdef_count; /* how many there are */
41963 + char *extended_names; /* clever intel extension */
41964 + bfd_size_type extended_names_size; /* Size of extended names */
41965 + /* when more compilers are standard C, this can be a time_t */
41966 + long armap_timestamp; /* Timestamp value written into armap.
41967 + This is used for BSD archives to check
41968 + that the timestamp is recent enough
41969 + for the BSD linker to not complain,
41970 + just before we finish writing an
41971 + archive. */
41972 + file_ptr armap_datepos; /* Position within archive to seek to
41973 + rewrite the date field. */
41974 + void *tdata; /* Backend specific information. */
41975 +};
41976 +
41977 +#define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
41978 +
41979 +/* Goes in bfd's arelt_data slot */
41980 +struct areltdata {
41981 + char * arch_header; /* it's actually a string */
41982 + unsigned int parsed_size; /* octets of filesize not including ar_hdr */
41983 + char *filename; /* null-terminated */
41984 +};
41985 +
41986 +#define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
41987 +
41988 +extern void *bfd_malloc
41989 + (bfd_size_type);
41990 +extern void *bfd_realloc
41991 + (void *, bfd_size_type);
41992 +extern void *bfd_zmalloc
41993 + (bfd_size_type);
41994 +extern void *bfd_malloc2
41995 + (bfd_size_type, bfd_size_type);
41996 +extern void *bfd_realloc2
41997 + (void *, bfd_size_type, bfd_size_type);
41998 +extern void *bfd_zmalloc2
41999 + (bfd_size_type, bfd_size_type);
42000 +
42001 +extern void _bfd_default_error_handler (const char *s, ...);
42002 +extern bfd_error_handler_type _bfd_error_handler;
42003 +
42004 +/* These routines allocate and free things on the BFD's objalloc. */
42005 +
42006 +extern void *bfd_alloc
42007 + (bfd *, bfd_size_type);
42008 +extern void *bfd_zalloc
42009 + (bfd *, bfd_size_type);
42010 +extern void *bfd_alloc2
42011 + (bfd *, bfd_size_type, bfd_size_type);
42012 +extern void *bfd_zalloc2
42013 + (bfd *, bfd_size_type, bfd_size_type);
42014 +extern void bfd_release
42015 + (bfd *, void *);
42016 +
42017 +bfd * _bfd_create_empty_archive_element_shell
42018 + (bfd *obfd);
42019 +bfd * _bfd_look_for_bfd_in_cache
42020 + (bfd *, file_ptr);
42021 +bfd_boolean _bfd_add_bfd_to_archive_cache
42022 + (bfd *, file_ptr, bfd *);
42023 +bfd_boolean _bfd_generic_mkarchive
42024 + (bfd *abfd);
42025 +const bfd_target *bfd_generic_archive_p
42026 + (bfd *abfd);
42027 +bfd_boolean bfd_slurp_armap
42028 + (bfd *abfd);
42029 +bfd_boolean bfd_slurp_bsd_armap_f2
42030 + (bfd *abfd);
42031 +#define bfd_slurp_bsd_armap bfd_slurp_armap
42032 +#define bfd_slurp_coff_armap bfd_slurp_armap
42033 +bfd_boolean _bfd_slurp_extended_name_table
42034 + (bfd *abfd);
42035 +extern bfd_boolean _bfd_construct_extended_name_table
42036 + (bfd *, bfd_boolean, char **, bfd_size_type *);
42037 +bfd_boolean _bfd_write_archive_contents
42038 + (bfd *abfd);
42039 +bfd_boolean _bfd_compute_and_write_armap
42040 + (bfd *, unsigned int elength);
42041 +bfd *_bfd_get_elt_at_filepos
42042 + (bfd *archive, file_ptr filepos);
42043 +extern bfd *_bfd_generic_get_elt_at_index
42044 + (bfd *, symindex);
42045 +bfd * _bfd_new_bfd
42046 + (void);
42047 +void _bfd_delete_bfd
42048 + (bfd *);
42049 +bfd_boolean _bfd_free_cached_info
42050 + (bfd *);
42051 +
42052 +bfd_boolean bfd_false
42053 + (bfd *ignore);
42054 +bfd_boolean bfd_true
42055 + (bfd *ignore);
42056 +void *bfd_nullvoidptr
42057 + (bfd *ignore);
42058 +int bfd_0
42059 + (bfd *ignore);
42060 +unsigned int bfd_0u
42061 + (bfd *ignore);
42062 +long bfd_0l
42063 + (bfd *ignore);
42064 +long _bfd_n1
42065 + (bfd *ignore);
42066 +void bfd_void
42067 + (bfd *ignore);
42068 +
42069 +bfd *_bfd_new_bfd_contained_in
42070 + (bfd *);
42071 +const bfd_target *_bfd_dummy_target
42072 + (bfd *abfd);
42073 +
42074 +void bfd_dont_truncate_arname
42075 + (bfd *abfd, const char *filename, char *hdr);
42076 +void bfd_bsd_truncate_arname
42077 + (bfd *abfd, const char *filename, char *hdr);
42078 +void bfd_gnu_truncate_arname
42079 + (bfd *abfd, const char *filename, char *hdr);
42080 +
42081 +bfd_boolean bsd_write_armap
42082 + (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
42083 + int stridx);
42084 +
42085 +bfd_boolean coff_write_armap
42086 + (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
42087 + int stridx);
42088 +
42089 +extern void *_bfd_generic_read_ar_hdr
42090 + (bfd *);
42091 +extern void _bfd_ar_spacepad
42092 + (char *, size_t, const char *, long);
42093 +
42094 +extern void *_bfd_generic_read_ar_hdr_mag
42095 + (bfd *, const char *);
42096 +
42097 +bfd * bfd_generic_openr_next_archived_file
42098 + (bfd *archive, bfd *last_file);
42099 +
42100 +int bfd_generic_stat_arch_elt
42101 + (bfd *, struct stat *);
42102 +
42103 +#define _bfd_read_ar_hdr(abfd) \
42104 + BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
42105 +\f
42106 +/* Generic routines to use for BFD_JUMP_TABLE_GENERIC. Use
42107 + BFD_JUMP_TABLE_GENERIC (_bfd_generic). */
42108 +
42109 +#define _bfd_generic_close_and_cleanup bfd_true
42110 +#define _bfd_generic_bfd_free_cached_info bfd_true
42111 +extern bfd_boolean _bfd_generic_new_section_hook
42112 + (bfd *, asection *);
42113 +extern bfd_boolean _bfd_generic_get_section_contents
42114 + (bfd *, asection *, void *, file_ptr, bfd_size_type);
42115 +extern bfd_boolean _bfd_generic_get_section_contents_in_window
42116 + (bfd *, asection *, bfd_window *, file_ptr, bfd_size_type);
42117 +
42118 +/* Generic routines to use for BFD_JUMP_TABLE_COPY. Use
42119 + BFD_JUMP_TABLE_COPY (_bfd_generic). */
42120 +
42121 +#define _bfd_generic_bfd_copy_private_bfd_data \
42122 + ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
42123 +#define _bfd_generic_bfd_merge_private_bfd_data \
42124 + ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
42125 +#define _bfd_generic_bfd_set_private_flags \
42126 + ((bfd_boolean (*) (bfd *, flagword)) bfd_true)
42127 +#define _bfd_generic_bfd_copy_private_section_data \
42128 + ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true)
42129 +#define _bfd_generic_bfd_copy_private_symbol_data \
42130 + ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true)
42131 +#define _bfd_generic_bfd_copy_private_header_data \
42132 + ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
42133 +#define _bfd_generic_bfd_print_private_bfd_data \
42134 + ((bfd_boolean (*) (bfd *, void *)) bfd_true)
42135 +
42136 +extern bfd_boolean _bfd_generic_init_private_section_data
42137 + (bfd *, asection *, bfd *, asection *, struct bfd_link_info *);
42138 +
42139 +/* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
42140 + support. Use BFD_JUMP_TABLE_CORE (_bfd_nocore). */
42141 +
42142 +extern char *_bfd_nocore_core_file_failing_command
42143 + (bfd *);
42144 +extern int _bfd_nocore_core_file_failing_signal
42145 + (bfd *);
42146 +extern bfd_boolean _bfd_nocore_core_file_matches_executable_p
42147 + (bfd *, bfd *);
42148 +
42149 +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive
42150 + file support. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive). */
42151 +
42152 +#define _bfd_noarchive_slurp_armap bfd_false
42153 +#define _bfd_noarchive_slurp_extended_name_table bfd_false
42154 +#define _bfd_noarchive_construct_extended_name_table \
42155 + ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) \
42156 + bfd_false)
42157 +#define _bfd_noarchive_truncate_arname \
42158 + ((void (*) (bfd *, const char *, char *)) bfd_void)
42159 +#define _bfd_noarchive_write_armap \
42160 + ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \
42161 + bfd_false)
42162 +#define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr
42163 +#define _bfd_noarchive_openr_next_archived_file \
42164 + ((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr)
42165 +#define _bfd_noarchive_get_elt_at_index \
42166 + ((bfd *(*) (bfd *, symindex)) bfd_nullvoidptr)
42167 +#define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
42168 +#define _bfd_noarchive_update_armap_timestamp bfd_false
42169 +
42170 +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
42171 + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd). */
42172 +
42173 +#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
42174 +#define _bfd_archive_bsd_slurp_extended_name_table \
42175 + _bfd_slurp_extended_name_table
42176 +extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
42177 + (bfd *, char **, bfd_size_type *, const char **);
42178 +#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
42179 +#define _bfd_archive_bsd_write_armap bsd_write_armap
42180 +#define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
42181 +#define _bfd_archive_bsd_openr_next_archived_file \
42182 + bfd_generic_openr_next_archived_file
42183 +#define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
42184 +#define _bfd_archive_bsd_generic_stat_arch_elt \
42185 + bfd_generic_stat_arch_elt
42186 +extern bfd_boolean _bfd_archive_bsd_update_armap_timestamp
42187 + (bfd *);
42188 +
42189 +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
42190 + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff). */
42191 +
42192 +#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
42193 +#define _bfd_archive_coff_slurp_extended_name_table \
42194 + _bfd_slurp_extended_name_table
42195 +extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
42196 + (bfd *, char **, bfd_size_type *, const char **);
42197 +#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
42198 +#define _bfd_archive_coff_write_armap coff_write_armap
42199 +#define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
42200 +#define _bfd_archive_coff_openr_next_archived_file \
42201 + bfd_generic_openr_next_archived_file
42202 +#define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index
42203 +#define _bfd_archive_coff_generic_stat_arch_elt \
42204 + bfd_generic_stat_arch_elt
42205 +#define _bfd_archive_coff_update_armap_timestamp bfd_true
42206 +
42207 +/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
42208 + support. Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). */
42209 +
42210 +#define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1
42211 +#define _bfd_nosymbols_canonicalize_symtab \
42212 + ((long (*) (bfd *, asymbol **)) _bfd_n1)
42213 +#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
42214 +#define _bfd_nosymbols_print_symbol \
42215 + ((void (*) (bfd *, void *, asymbol *, bfd_print_symbol_type)) bfd_void)
42216 +#define _bfd_nosymbols_get_symbol_info \
42217 + ((void (*) (bfd *, asymbol *, symbol_info *)) bfd_void)
42218 +#define _bfd_nosymbols_bfd_is_local_label_name \
42219 + ((bfd_boolean (*) (bfd *, const char *)) bfd_false)
42220 +#define _bfd_nosymbols_bfd_is_target_special_symbol \
42221 + ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
42222 +#define _bfd_nosymbols_get_lineno \
42223 + ((alent *(*) (bfd *, asymbol *)) bfd_nullvoidptr)
42224 +#define _bfd_nosymbols_find_nearest_line \
42225 + ((bfd_boolean (*) (bfd *, asection *, asymbol **, bfd_vma, const char **, \
42226 + const char **, unsigned int *)) \
42227 + bfd_false)
42228 +#define _bfd_nosymbols_find_inliner_info \
42229 + ((bfd_boolean (*) (bfd *, const char **, const char **, unsigned int *)) \
42230 + bfd_false)
42231 +#define _bfd_nosymbols_bfd_make_debug_symbol \
42232 + ((asymbol *(*) (bfd *, void *, unsigned long)) bfd_nullvoidptr)
42233 +#define _bfd_nosymbols_read_minisymbols \
42234 + ((long (*) (bfd *, bfd_boolean, void **, unsigned int *)) _bfd_n1)
42235 +#define _bfd_nosymbols_minisymbol_to_symbol \
42236 + ((asymbol *(*) (bfd *, bfd_boolean, const void *, asymbol *)) \
42237 + bfd_nullvoidptr)
42238 +
42239 +/* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
42240 + support. Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs). */
42241 +
42242 +extern long _bfd_norelocs_get_reloc_upper_bound (bfd *, asection *);
42243 +extern long _bfd_norelocs_canonicalize_reloc (bfd *, asection *,
42244 + arelent **, asymbol **);
42245 +#define _bfd_norelocs_bfd_reloc_type_lookup \
42246 + ((reloc_howto_type *(*) (bfd *, bfd_reloc_code_real_type)) bfd_nullvoidptr)
42247 +#define _bfd_norelocs_bfd_reloc_name_lookup \
42248 + ((reloc_howto_type *(*) (bfd *, const char *)) bfd_nullvoidptr)
42249 +
42250 +/* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
42251 + be written. Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite). */
42252 +
42253 +#define _bfd_nowrite_set_arch_mach \
42254 + ((bfd_boolean (*) (bfd *, enum bfd_architecture, unsigned long)) \
42255 + bfd_false)
42256 +#define _bfd_nowrite_set_section_contents \
42257 + ((bfd_boolean (*) (bfd *, asection *, const void *, file_ptr, bfd_size_type)) \
42258 + bfd_false)
42259 +
42260 +/* Generic routines to use for BFD_JUMP_TABLE_WRITE. Use
42261 + BFD_JUMP_TABLE_WRITE (_bfd_generic). */
42262 +
42263 +#define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
42264 +extern bfd_boolean _bfd_generic_set_section_contents
42265 + (bfd *, asection *, const void *, file_ptr, bfd_size_type);
42266 +
42267 +/* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
42268 + support linking. Use BFD_JUMP_TABLE_LINK (_bfd_nolink). */
42269 +
42270 +#define _bfd_nolink_sizeof_headers \
42271 + ((int (*) (bfd *, struct bfd_link_info *)) bfd_0)
42272 +#define _bfd_nolink_bfd_get_relocated_section_contents \
42273 + ((bfd_byte *(*) (bfd *, struct bfd_link_info *, struct bfd_link_order *, \
42274 + bfd_byte *, bfd_boolean, asymbol **)) \
42275 + bfd_nullvoidptr)
42276 +#define _bfd_nolink_bfd_relax_section \
42277 + ((bfd_boolean (*) \
42278 + (bfd *, asection *, struct bfd_link_info *, bfd_boolean *)) \
42279 + bfd_false)
42280 +#define _bfd_nolink_bfd_gc_sections \
42281 + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
42282 + bfd_false)
42283 +#define _bfd_nolink_bfd_merge_sections \
42284 + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
42285 + bfd_false)
42286 +#define _bfd_nolink_bfd_is_group_section \
42287 + ((bfd_boolean (*) (bfd *, const struct bfd_section *)) \
42288 + bfd_false)
42289 +#define _bfd_nolink_bfd_discard_group \
42290 + ((bfd_boolean (*) (bfd *, struct bfd_section *)) \
42291 + bfd_false)
42292 +#define _bfd_nolink_bfd_link_hash_table_create \
42293 + ((struct bfd_link_hash_table *(*) (bfd *)) bfd_nullvoidptr)
42294 +#define _bfd_nolink_bfd_link_hash_table_free \
42295 + ((void (*) (struct bfd_link_hash_table *)) bfd_void)
42296 +#define _bfd_nolink_bfd_link_add_symbols \
42297 + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
42298 +#define _bfd_nolink_bfd_link_just_syms \
42299 + ((void (*) (asection *, struct bfd_link_info *)) bfd_void)
42300 +#define _bfd_nolink_bfd_final_link \
42301 + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
42302 +#define _bfd_nolink_bfd_link_split_section \
42303 + ((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
42304 +#define _bfd_nolink_section_already_linked \
42305 + ((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
42306 +
42307 +/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
42308 + have dynamic symbols or relocs. Use BFD_JUMP_TABLE_DYNAMIC
42309 + (_bfd_nodynamic). */
42310 +
42311 +#define _bfd_nodynamic_get_dynamic_symtab_upper_bound _bfd_n1
42312 +#define _bfd_nodynamic_canonicalize_dynamic_symtab \
42313 + ((long (*) (bfd *, asymbol **)) _bfd_n1)
42314 +#define _bfd_nodynamic_get_synthetic_symtab \
42315 + ((long (*) (bfd *, long, asymbol **, long, asymbol **, asymbol **)) _bfd_n1)
42316 +#define _bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_n1
42317 +#define _bfd_nodynamic_canonicalize_dynamic_reloc \
42318 + ((long (*) (bfd *, arelent **, asymbol **)) _bfd_n1)
42319 +\f
42320 +/* Generic routine to determine of the given symbol is a local
42321 + label. */
42322 +extern bfd_boolean bfd_generic_is_local_label_name
42323 + (bfd *, const char *);
42324 +
42325 +/* Generic minisymbol routines. */
42326 +extern long _bfd_generic_read_minisymbols
42327 + (bfd *, bfd_boolean, void **, unsigned int *);
42328 +extern asymbol *_bfd_generic_minisymbol_to_symbol
42329 + (bfd *, bfd_boolean, const void *, asymbol *);
42330 +
42331 +/* Find the nearest line using .stab/.stabstr sections. */
42332 +extern bfd_boolean _bfd_stab_section_find_nearest_line
42333 + (bfd *, asymbol **, asection *, bfd_vma, bfd_boolean *,
42334 + const char **, const char **, unsigned int *, void **);
42335 +
42336 +/* Find the nearest line using DWARF 1 debugging information. */
42337 +extern bfd_boolean _bfd_dwarf1_find_nearest_line
42338 + (bfd *, asection *, asymbol **, bfd_vma, const char **,
42339 + const char **, unsigned int *);
42340 +
42341 +/* Find the nearest line using DWARF 2 debugging information. */
42342 +extern bfd_boolean _bfd_dwarf2_find_nearest_line
42343 + (bfd *, asection *, asymbol **, bfd_vma, const char **, const char **,
42344 + unsigned int *, unsigned int, void **);
42345 +
42346 +/* Find the line using DWARF 2 debugging information. */
42347 +extern bfd_boolean _bfd_dwarf2_find_line
42348 + (bfd *, asymbol **, asymbol *, const char **,
42349 + unsigned int *, unsigned int, void **);
42350 +
42351 +bfd_boolean _bfd_generic_find_line
42352 + (bfd *, asymbol **, asymbol *, const char **, unsigned int *);
42353 +
42354 +/* Find inliner info after calling bfd_find_nearest_line. */
42355 +extern bfd_boolean _bfd_dwarf2_find_inliner_info
42356 + (bfd *, const char **, const char **, unsigned int *, void **);
42357 +
42358 +/* Create a new section entry. */
42359 +extern struct bfd_hash_entry *bfd_section_hash_newfunc
42360 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
42361 +
42362 +/* A routine to create entries for a bfd_link_hash_table. */
42363 +extern struct bfd_hash_entry *_bfd_link_hash_newfunc
42364 + (struct bfd_hash_entry *entry, struct bfd_hash_table *table,
42365 + const char *string);
42366 +
42367 +/* Initialize a bfd_link_hash_table. */
42368 +extern bfd_boolean _bfd_link_hash_table_init
42369 + (struct bfd_link_hash_table *, bfd *,
42370 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
42371 + struct bfd_hash_table *,
42372 + const char *),
42373 + unsigned int);
42374 +
42375 +/* Generic link hash table creation routine. */
42376 +extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
42377 + (bfd *);
42378 +
42379 +/* Generic link hash table destruction routine. */
42380 +extern void _bfd_generic_link_hash_table_free
42381 + (struct bfd_link_hash_table *);
42382 +
42383 +/* Generic add symbol routine. */
42384 +extern bfd_boolean _bfd_generic_link_add_symbols
42385 + (bfd *, struct bfd_link_info *);
42386 +
42387 +/* Generic add symbol routine. This version is used by targets for
42388 + which the linker must collect constructors and destructors by name,
42389 + as the collect2 program does. */
42390 +extern bfd_boolean _bfd_generic_link_add_symbols_collect
42391 + (bfd *, struct bfd_link_info *);
42392 +
42393 +/* Generic archive add symbol routine. */
42394 +extern bfd_boolean _bfd_generic_link_add_archive_symbols
42395 + (bfd *, struct bfd_link_info *,
42396 + bfd_boolean (*) (bfd *, struct bfd_link_info *, bfd_boolean *));
42397 +
42398 +/* Forward declaration to avoid prototype errors. */
42399 +typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
42400 +
42401 +/* Generic routine to add a single symbol. */
42402 +extern bfd_boolean _bfd_generic_link_add_one_symbol
42403 + (struct bfd_link_info *, bfd *, const char *name, flagword,
42404 + asection *, bfd_vma, const char *, bfd_boolean copy,
42405 + bfd_boolean constructor, struct bfd_link_hash_entry **);
42406 +
42407 +/* Generic routine to mark section as supplying symbols only. */
42408 +extern void _bfd_generic_link_just_syms
42409 + (asection *, struct bfd_link_info *);
42410 +
42411 +/* Generic link routine. */
42412 +extern bfd_boolean _bfd_generic_final_link
42413 + (bfd *, struct bfd_link_info *);
42414 +
42415 +extern bfd_boolean _bfd_generic_link_split_section
42416 + (bfd *, struct bfd_section *);
42417 +
42418 +extern void _bfd_generic_section_already_linked
42419 + (bfd *, struct bfd_section *, struct bfd_link_info *);
42420 +
42421 +/* Generic reloc_link_order processing routine. */
42422 +extern bfd_boolean _bfd_generic_reloc_link_order
42423 + (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
42424 +
42425 +/* Default link order processing routine. */
42426 +extern bfd_boolean _bfd_default_link_order
42427 + (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
42428 +
42429 +/* Count the number of reloc entries in a link order list. */
42430 +extern unsigned int _bfd_count_link_order_relocs
42431 + (struct bfd_link_order *);
42432 +
42433 +/* Final link relocation routine. */
42434 +extern bfd_reloc_status_type _bfd_final_link_relocate
42435 + (reloc_howto_type *, bfd *, asection *, bfd_byte *,
42436 + bfd_vma, bfd_vma, bfd_vma);
42437 +
42438 +/* Relocate a particular location by a howto and a value. */
42439 +extern bfd_reloc_status_type _bfd_relocate_contents
42440 + (reloc_howto_type *, bfd *, bfd_vma, bfd_byte *);
42441 +
42442 +/* Clear a given location using a given howto. */
42443 +extern void _bfd_clear_contents (reloc_howto_type *howto, bfd *input_bfd,
42444 + bfd_byte *location);
42445 +
42446 +/* Link stabs in sections in the first pass. */
42447 +
42448 +extern bfd_boolean _bfd_link_section_stabs
42449 + (bfd *, struct stab_info *, asection *, asection *, void **,
42450 + bfd_size_type *);
42451 +
42452 +/* Eliminate stabs for discarded functions and symbols. */
42453 +extern bfd_boolean _bfd_discard_section_stabs
42454 + (bfd *, asection *, void *, bfd_boolean (*) (bfd_vma, void *), void *);
42455 +
42456 +/* Write out the .stab section when linking stabs in sections. */
42457 +
42458 +extern bfd_boolean _bfd_write_section_stabs
42459 + (bfd *, struct stab_info *, asection *, void **, bfd_byte *);
42460 +
42461 +/* Write out the .stabstr string table when linking stabs in sections. */
42462 +
42463 +extern bfd_boolean _bfd_write_stab_strings
42464 + (bfd *, struct stab_info *);
42465 +
42466 +/* Find an offset within a .stab section when linking stabs in
42467 + sections. */
42468 +
42469 +extern bfd_vma _bfd_stab_section_offset
42470 + (asection *, void *, bfd_vma);
42471 +
42472 +/* Register a SEC_MERGE section as a candidate for merging. */
42473 +
42474 +extern bfd_boolean _bfd_add_merge_section
42475 + (bfd *, void **, asection *, void **);
42476 +
42477 +/* Attempt to merge SEC_MERGE sections. */
42478 +
42479 +extern bfd_boolean _bfd_merge_sections
42480 + (bfd *, struct bfd_link_info *, void *, void (*) (bfd *, asection *));
42481 +
42482 +/* Write out a merged section. */
42483 +
42484 +extern bfd_boolean _bfd_write_merged_section
42485 + (bfd *, asection *, void *);
42486 +
42487 +/* Find an offset within a modified SEC_MERGE section. */
42488 +
42489 +extern bfd_vma _bfd_merged_section_offset
42490 + (bfd *, asection **, void *, bfd_vma);
42491 +
42492 +/* Create a string table. */
42493 +extern struct bfd_strtab_hash *_bfd_stringtab_init
42494 + (void);
42495 +
42496 +/* Create an XCOFF .debug section style string table. */
42497 +extern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
42498 + (void);
42499 +
42500 +/* Free a string table. */
42501 +extern void _bfd_stringtab_free
42502 + (struct bfd_strtab_hash *);
42503 +
42504 +/* Get the size of a string table. */
42505 +extern bfd_size_type _bfd_stringtab_size
42506 + (struct bfd_strtab_hash *);
42507 +
42508 +/* Add a string to a string table. */
42509 +extern bfd_size_type _bfd_stringtab_add
42510 + (struct bfd_strtab_hash *, const char *, bfd_boolean hash, bfd_boolean copy);
42511 +
42512 +/* Write out a string table. */
42513 +extern bfd_boolean _bfd_stringtab_emit
42514 + (bfd *, struct bfd_strtab_hash *);
42515 +
42516 +/* Check that endianness of input and output file match. */
42517 +extern bfd_boolean _bfd_generic_verify_endian_match
42518 + (bfd *, bfd *);
42519 +\f
42520 +/* Macros to tell if bfds are read or write enabled.
42521 +
42522 + Note that bfds open for read may be scribbled into if the fd passed
42523 + to bfd_fdopenr is actually open both for read and write
42524 + simultaneously. However an output bfd will never be open for
42525 + read. Therefore sometimes you want to check bfd_read_p or
42526 + !bfd_read_p, and only sometimes bfd_write_p.
42527 +*/
42528 +
42529 +#define bfd_read_p(abfd) \
42530 + ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
42531 +#define bfd_write_p(abfd) \
42532 + ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
42533 +
42534 +void bfd_assert
42535 + (const char*,int);
42536 +
42537 +#define BFD_ASSERT(x) \
42538 + do { if (!(x)) bfd_assert(__FILE__,__LINE__); } while (0)
42539 +
42540 +#define BFD_FAIL() \
42541 + do { bfd_assert(__FILE__,__LINE__); } while (0)
42542 +
42543 +extern void _bfd_abort
42544 + (const char *, int, const char *) ATTRIBUTE_NORETURN;
42545 +
42546 +/* if gcc >= 2.6, we can give a function name, too */
42547 +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
42548 +#define __PRETTY_FUNCTION__ ((char *) NULL)
42549 +#endif
42550 +
42551 +#undef abort
42552 +#define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
42553 +
42554 +/* Manipulate a system FILE but using BFD's "file_ptr", rather than
42555 + the system "off_t" or "off64_t", as the offset. */
42556 +extern file_ptr real_ftell (FILE *file);
42557 +extern int real_fseek (FILE *file, file_ptr offset, int whence);
42558 +extern FILE *real_fopen (const char *filename, const char *modes);
42559 +
42560 +/* List of supported target vectors, and the default vector (if
42561 + bfd_default_vector[0] is NULL, there is no default). */
42562 +extern const bfd_target * const *bfd_target_vector;
42563 +extern const bfd_target *bfd_default_vector[];
42564 +
42565 +/* List of associated target vectors. */
42566 +extern const bfd_target * const *bfd_associated_vector;
42567 +
42568 +/* Functions shared by the ECOFF and MIPS ELF backends, which have no
42569 + other common header files. */
42570 +
42571 +#if defined(__STDC__) || defined(ALMOST_STDC)
42572 +struct ecoff_find_line;
42573 +#endif
42574 +
42575 +extern bfd_boolean _bfd_ecoff_locate_line
42576 + (bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
42577 + const struct ecoff_debug_swap * const, struct ecoff_find_line *,
42578 + const char **, const char **, unsigned int *);
42579 +extern bfd_boolean _bfd_ecoff_get_accumulated_pdr
42580 + (void *, bfd_byte *);
42581 +extern bfd_boolean _bfd_ecoff_get_accumulated_sym
42582 + (void *, bfd_byte *);
42583 +extern bfd_boolean _bfd_ecoff_get_accumulated_ss
42584 + (void *, bfd_byte *);
42585 +
42586 +extern bfd_vma _bfd_get_gp_value
42587 + (bfd *);
42588 +extern void _bfd_set_gp_value
42589 + (bfd *, bfd_vma);
42590 +
42591 +/* Function shared by the COFF and ELF SH backends, which have no
42592 + other common header files. */
42593 +
42594 +#ifndef _bfd_sh_align_load_span
42595 +extern bfd_boolean _bfd_sh_align_load_span
42596 + (bfd *, asection *, bfd_byte *,
42597 + bfd_boolean (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
42598 + void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bfd_boolean *);
42599 +#endif
42600 +
42601 +/* This is the shape of the elements inside the already_linked hash
42602 + table. It maps a name onto a list of already_linked elements with
42603 + the same name. */
42604 +
42605 +struct bfd_section_already_linked_hash_entry
42606 +{
42607 + struct bfd_hash_entry root;
42608 + struct bfd_section_already_linked *entry;
42609 +};
42610 +
42611 +struct bfd_section_already_linked
42612 +{
42613 + struct bfd_section_already_linked *next;
42614 + asection *sec;
42615 +};
42616 +
42617 +extern struct bfd_section_already_linked_hash_entry *
42618 + bfd_section_already_linked_table_lookup (const char *);
42619 +extern bfd_boolean bfd_section_already_linked_table_insert
42620 + (struct bfd_section_already_linked_hash_entry *, asection *);
42621 +extern void bfd_section_already_linked_table_traverse
42622 + (bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
42623 + void *), void *);
42624 +
42625 +extern bfd_vma read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *);
42626 +extern bfd_signed_vma read_signed_leb128 (bfd *, bfd_byte *, unsigned int *);
42627 +
42628 +/* Extracted from init.c. */
42629 +/* Extracted from libbfd.c. */
42630 +bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
42631 +
42632 +unsigned int bfd_log2 (bfd_vma x);
42633 +
42634 +/* Extracted from bfdio.c. */
42635 +struct bfd_iovec
42636 +{
42637 + /* To avoid problems with macros, a "b" rather than "f"
42638 + prefix is prepended to each method name. */
42639 + /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
42640 + bytes starting at PTR. Return the number of bytes actually
42641 + transfered (a read past end-of-file returns less than NBYTES),
42642 + or -1 (setting <<bfd_error>>) if an error occurs. */
42643 + file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
42644 + file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
42645 + file_ptr nbytes);
42646 + /* Return the current IOSTREAM file offset, or -1 (setting <<bfd_error>>
42647 + if an error occurs. */
42648 + file_ptr (*btell) (struct bfd *abfd);
42649 + /* For the following, on successful completion a value of 0 is returned.
42650 + Otherwise, a value of -1 is returned (and <<bfd_error>> is set). */
42651 + int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
42652 + int (*bclose) (struct bfd *abfd);
42653 + int (*bflush) (struct bfd *abfd);
42654 + int (*bstat) (struct bfd *abfd, struct stat *sb);
42655 +};
42656 +/* Extracted from bfdwin.c. */
42657 +struct _bfd_window_internal {
42658 + struct _bfd_window_internal *next;
42659 + void *data;
42660 + bfd_size_type size;
42661 + int refcount : 31; /* should be enough... */
42662 + unsigned mapped : 1; /* 1 = mmap, 0 = malloc */
42663 +};
42664 +/* Extracted from cache.c. */
42665 +bfd_boolean bfd_cache_init (bfd *abfd);
42666 +
42667 +bfd_boolean bfd_cache_close (bfd *abfd);
42668 +
42669 +FILE* bfd_open_file (bfd *abfd);
42670 +
42671 +/* Extracted from reloc.c. */
42672 +#ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
42673 +
42674 +static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
42675 +
42676 + "BFD_RELOC_64",
42677 + "BFD_RELOC_32",
42678 + "BFD_RELOC_26",
42679 + "BFD_RELOC_24",
42680 + "BFD_RELOC_16",
42681 + "BFD_RELOC_14",
42682 + "BFD_RELOC_8",
42683 + "BFD_RELOC_64_PCREL",
42684 + "BFD_RELOC_32_PCREL",
42685 + "BFD_RELOC_24_PCREL",
42686 + "BFD_RELOC_16_PCREL",
42687 + "BFD_RELOC_12_PCREL",
42688 + "BFD_RELOC_8_PCREL",
42689 + "BFD_RELOC_32_SECREL",
42690 + "BFD_RELOC_32_GOT_PCREL",
42691 + "BFD_RELOC_16_GOT_PCREL",
42692 + "BFD_RELOC_8_GOT_PCREL",
42693 + "BFD_RELOC_32_GOTOFF",
42694 + "BFD_RELOC_16_GOTOFF",
42695 + "BFD_RELOC_LO16_GOTOFF",
42696 + "BFD_RELOC_HI16_GOTOFF",
42697 + "BFD_RELOC_HI16_S_GOTOFF",
42698 + "BFD_RELOC_8_GOTOFF",
42699 + "BFD_RELOC_64_PLT_PCREL",
42700 + "BFD_RELOC_32_PLT_PCREL",
42701 + "BFD_RELOC_24_PLT_PCREL",
42702 + "BFD_RELOC_16_PLT_PCREL",
42703 + "BFD_RELOC_8_PLT_PCREL",
42704 + "BFD_RELOC_64_PLTOFF",
42705 + "BFD_RELOC_32_PLTOFF",
42706 + "BFD_RELOC_16_PLTOFF",
42707 + "BFD_RELOC_LO16_PLTOFF",
42708 + "BFD_RELOC_HI16_PLTOFF",
42709 + "BFD_RELOC_HI16_S_PLTOFF",
42710 + "BFD_RELOC_8_PLTOFF",
42711 + "BFD_RELOC_68K_GLOB_DAT",
42712 + "BFD_RELOC_68K_JMP_SLOT",
42713 + "BFD_RELOC_68K_RELATIVE",
42714 + "BFD_RELOC_32_BASEREL",
42715 + "BFD_RELOC_16_BASEREL",
42716 + "BFD_RELOC_LO16_BASEREL",
42717 + "BFD_RELOC_HI16_BASEREL",
42718 + "BFD_RELOC_HI16_S_BASEREL",
42719 + "BFD_RELOC_8_BASEREL",
42720 + "BFD_RELOC_RVA",
42721 + "BFD_RELOC_8_FFnn",
42722 + "BFD_RELOC_32_PCREL_S2",
42723 + "BFD_RELOC_16_PCREL_S2",
42724 + "BFD_RELOC_23_PCREL_S2",
42725 + "BFD_RELOC_HI22",
42726 + "BFD_RELOC_LO10",
42727 + "BFD_RELOC_GPREL16",
42728 + "BFD_RELOC_GPREL32",
42729 + "BFD_RELOC_I960_CALLJ",
42730 + "BFD_RELOC_NONE",
42731 + "BFD_RELOC_SPARC_WDISP22",
42732 + "BFD_RELOC_SPARC22",
42733 + "BFD_RELOC_SPARC13",
42734 + "BFD_RELOC_SPARC_GOT10",
42735 + "BFD_RELOC_SPARC_GOT13",
42736 + "BFD_RELOC_SPARC_GOT22",
42737 + "BFD_RELOC_SPARC_PC10",
42738 + "BFD_RELOC_SPARC_PC22",
42739 + "BFD_RELOC_SPARC_WPLT30",
42740 + "BFD_RELOC_SPARC_COPY",
42741 + "BFD_RELOC_SPARC_GLOB_DAT",
42742 + "BFD_RELOC_SPARC_JMP_SLOT",
42743 + "BFD_RELOC_SPARC_RELATIVE",
42744 + "BFD_RELOC_SPARC_UA16",
42745 + "BFD_RELOC_SPARC_UA32",
42746 + "BFD_RELOC_SPARC_UA64",
42747 + "BFD_RELOC_SPARC_BASE13",
42748 + "BFD_RELOC_SPARC_BASE22",
42749 + "BFD_RELOC_SPARC_10",
42750 + "BFD_RELOC_SPARC_11",
42751 + "BFD_RELOC_SPARC_OLO10",
42752 + "BFD_RELOC_SPARC_HH22",
42753 + "BFD_RELOC_SPARC_HM10",
42754 + "BFD_RELOC_SPARC_LM22",
42755 + "BFD_RELOC_SPARC_PC_HH22",
42756 + "BFD_RELOC_SPARC_PC_HM10",
42757 + "BFD_RELOC_SPARC_PC_LM22",
42758 + "BFD_RELOC_SPARC_WDISP16",
42759 + "BFD_RELOC_SPARC_WDISP19",
42760 + "BFD_RELOC_SPARC_7",
42761 + "BFD_RELOC_SPARC_6",
42762 + "BFD_RELOC_SPARC_5",
42763 + "BFD_RELOC_SPARC_PLT32",
42764 + "BFD_RELOC_SPARC_PLT64",
42765 + "BFD_RELOC_SPARC_HIX22",
42766 + "BFD_RELOC_SPARC_LOX10",
42767 + "BFD_RELOC_SPARC_H44",
42768 + "BFD_RELOC_SPARC_M44",
42769 + "BFD_RELOC_SPARC_L44",
42770 + "BFD_RELOC_SPARC_REGISTER",
42771 + "BFD_RELOC_SPARC_REV32",
42772 + "BFD_RELOC_SPARC_TLS_GD_HI22",
42773 + "BFD_RELOC_SPARC_TLS_GD_LO10",
42774 + "BFD_RELOC_SPARC_TLS_GD_ADD",
42775 + "BFD_RELOC_SPARC_TLS_GD_CALL",
42776 + "BFD_RELOC_SPARC_TLS_LDM_HI22",
42777 + "BFD_RELOC_SPARC_TLS_LDM_LO10",
42778 + "BFD_RELOC_SPARC_TLS_LDM_ADD",
42779 + "BFD_RELOC_SPARC_TLS_LDM_CALL",
42780 + "BFD_RELOC_SPARC_TLS_LDO_HIX22",
42781 + "BFD_RELOC_SPARC_TLS_LDO_LOX10",
42782 + "BFD_RELOC_SPARC_TLS_LDO_ADD",
42783 + "BFD_RELOC_SPARC_TLS_IE_HI22",
42784 + "BFD_RELOC_SPARC_TLS_IE_LO10",
42785 + "BFD_RELOC_SPARC_TLS_IE_LD",
42786 + "BFD_RELOC_SPARC_TLS_IE_LDX",
42787 + "BFD_RELOC_SPARC_TLS_IE_ADD",
42788 + "BFD_RELOC_SPARC_TLS_LE_HIX22",
42789 + "BFD_RELOC_SPARC_TLS_LE_LOX10",
42790 + "BFD_RELOC_SPARC_TLS_DTPMOD32",
42791 + "BFD_RELOC_SPARC_TLS_DTPMOD64",
42792 + "BFD_RELOC_SPARC_TLS_DTPOFF32",
42793 + "BFD_RELOC_SPARC_TLS_DTPOFF64",
42794 + "BFD_RELOC_SPARC_TLS_TPOFF32",
42795 + "BFD_RELOC_SPARC_TLS_TPOFF64",
42796 + "BFD_RELOC_SPU_IMM7",
42797 + "BFD_RELOC_SPU_IMM8",
42798 + "BFD_RELOC_SPU_IMM10",
42799 + "BFD_RELOC_SPU_IMM10W",
42800 + "BFD_RELOC_SPU_IMM16",
42801 + "BFD_RELOC_SPU_IMM16W",
42802 + "BFD_RELOC_SPU_IMM18",
42803 + "BFD_RELOC_SPU_PCREL9a",
42804 + "BFD_RELOC_SPU_PCREL9b",
42805 + "BFD_RELOC_SPU_PCREL16",
42806 + "BFD_RELOC_SPU_LO16",
42807 + "BFD_RELOC_SPU_HI16",
42808 + "BFD_RELOC_SPU_PPU32",
42809 + "BFD_RELOC_SPU_PPU64",
42810 + "BFD_RELOC_ALPHA_GPDISP_HI16",
42811 + "BFD_RELOC_ALPHA_GPDISP_LO16",
42812 + "BFD_RELOC_ALPHA_GPDISP",
42813 + "BFD_RELOC_ALPHA_LITERAL",
42814 + "BFD_RELOC_ALPHA_ELF_LITERAL",
42815 + "BFD_RELOC_ALPHA_LITUSE",
42816 + "BFD_RELOC_ALPHA_HINT",
42817 + "BFD_RELOC_ALPHA_LINKAGE",
42818 + "BFD_RELOC_ALPHA_CODEADDR",
42819 + "BFD_RELOC_ALPHA_GPREL_HI16",
42820 + "BFD_RELOC_ALPHA_GPREL_LO16",
42821 + "BFD_RELOC_ALPHA_BRSGP",
42822 + "BFD_RELOC_ALPHA_TLSGD",
42823 + "BFD_RELOC_ALPHA_TLSLDM",
42824 + "BFD_RELOC_ALPHA_DTPMOD64",
42825 + "BFD_RELOC_ALPHA_GOTDTPREL16",
42826 + "BFD_RELOC_ALPHA_DTPREL64",
42827 + "BFD_RELOC_ALPHA_DTPREL_HI16",
42828 + "BFD_RELOC_ALPHA_DTPREL_LO16",
42829 + "BFD_RELOC_ALPHA_DTPREL16",
42830 + "BFD_RELOC_ALPHA_GOTTPREL16",
42831 + "BFD_RELOC_ALPHA_TPREL64",
42832 + "BFD_RELOC_ALPHA_TPREL_HI16",
42833 + "BFD_RELOC_ALPHA_TPREL_LO16",
42834 + "BFD_RELOC_ALPHA_TPREL16",
42835 + "BFD_RELOC_MIPS_JMP",
42836 + "BFD_RELOC_MIPS16_JMP",
42837 + "BFD_RELOC_MIPS16_GPREL",
42838 + "BFD_RELOC_HI16",
42839 + "BFD_RELOC_HI16_S",
42840 + "BFD_RELOC_LO16",
42841 + "BFD_RELOC_HI16_PCREL",
42842 + "BFD_RELOC_HI16_S_PCREL",
42843 + "BFD_RELOC_LO16_PCREL",
42844 + "BFD_RELOC_MIPS16_HI16",
42845 + "BFD_RELOC_MIPS16_HI16_S",
42846 + "BFD_RELOC_MIPS16_LO16",
42847 + "BFD_RELOC_MIPS_LITERAL",
42848 + "BFD_RELOC_MIPS_GOT16",
42849 + "BFD_RELOC_MIPS_CALL16",
42850 + "BFD_RELOC_MIPS_GOT_HI16",
42851 + "BFD_RELOC_MIPS_GOT_LO16",
42852 + "BFD_RELOC_MIPS_CALL_HI16",
42853 + "BFD_RELOC_MIPS_CALL_LO16",
42854 + "BFD_RELOC_MIPS_SUB",
42855 + "BFD_RELOC_MIPS_GOT_PAGE",
42856 + "BFD_RELOC_MIPS_GOT_OFST",
42857 + "BFD_RELOC_MIPS_GOT_DISP",
42858 + "BFD_RELOC_MIPS_SHIFT5",
42859 + "BFD_RELOC_MIPS_SHIFT6",
42860 + "BFD_RELOC_MIPS_INSERT_A",
42861 + "BFD_RELOC_MIPS_INSERT_B",
42862 + "BFD_RELOC_MIPS_DELETE",
42863 + "BFD_RELOC_MIPS_HIGHEST",
42864 + "BFD_RELOC_MIPS_HIGHER",
42865 + "BFD_RELOC_MIPS_SCN_DISP",
42866 + "BFD_RELOC_MIPS_REL16",
42867 + "BFD_RELOC_MIPS_RELGOT",
42868 + "BFD_RELOC_MIPS_JALR",
42869 + "BFD_RELOC_MIPS_TLS_DTPMOD32",
42870 + "BFD_RELOC_MIPS_TLS_DTPREL32",
42871 + "BFD_RELOC_MIPS_TLS_DTPMOD64",
42872 + "BFD_RELOC_MIPS_TLS_DTPREL64",
42873 + "BFD_RELOC_MIPS_TLS_GD",
42874 + "BFD_RELOC_MIPS_TLS_LDM",
42875 + "BFD_RELOC_MIPS_TLS_DTPREL_HI16",
42876 + "BFD_RELOC_MIPS_TLS_DTPREL_LO16",
42877 + "BFD_RELOC_MIPS_TLS_GOTTPREL",
42878 + "BFD_RELOC_MIPS_TLS_TPREL32",
42879 + "BFD_RELOC_MIPS_TLS_TPREL64",
42880 + "BFD_RELOC_MIPS_TLS_TPREL_HI16",
42881 + "BFD_RELOC_MIPS_TLS_TPREL_LO16",
42882 +
42883 + "BFD_RELOC_MIPS_COPY",
42884 + "BFD_RELOC_MIPS_JUMP_SLOT",
42885 +
42886 + "BFD_RELOC_FRV_LABEL16",
42887 + "BFD_RELOC_FRV_LABEL24",
42888 + "BFD_RELOC_FRV_LO16",
42889 + "BFD_RELOC_FRV_HI16",
42890 + "BFD_RELOC_FRV_GPREL12",
42891 + "BFD_RELOC_FRV_GPRELU12",
42892 + "BFD_RELOC_FRV_GPREL32",
42893 + "BFD_RELOC_FRV_GPRELHI",
42894 + "BFD_RELOC_FRV_GPRELLO",
42895 + "BFD_RELOC_FRV_GOT12",
42896 + "BFD_RELOC_FRV_GOTHI",
42897 + "BFD_RELOC_FRV_GOTLO",
42898 + "BFD_RELOC_FRV_FUNCDESC",
42899 + "BFD_RELOC_FRV_FUNCDESC_GOT12",
42900 + "BFD_RELOC_FRV_FUNCDESC_GOTHI",
42901 + "BFD_RELOC_FRV_FUNCDESC_GOTLO",
42902 + "BFD_RELOC_FRV_FUNCDESC_VALUE",
42903 + "BFD_RELOC_FRV_FUNCDESC_GOTOFF12",
42904 + "BFD_RELOC_FRV_FUNCDESC_GOTOFFHI",
42905 + "BFD_RELOC_FRV_FUNCDESC_GOTOFFLO",
42906 + "BFD_RELOC_FRV_GOTOFF12",
42907 + "BFD_RELOC_FRV_GOTOFFHI",
42908 + "BFD_RELOC_FRV_GOTOFFLO",
42909 + "BFD_RELOC_FRV_GETTLSOFF",
42910 + "BFD_RELOC_FRV_TLSDESC_VALUE",
42911 + "BFD_RELOC_FRV_GOTTLSDESC12",
42912 + "BFD_RELOC_FRV_GOTTLSDESCHI",
42913 + "BFD_RELOC_FRV_GOTTLSDESCLO",
42914 + "BFD_RELOC_FRV_TLSMOFF12",
42915 + "BFD_RELOC_FRV_TLSMOFFHI",
42916 + "BFD_RELOC_FRV_TLSMOFFLO",
42917 + "BFD_RELOC_FRV_GOTTLSOFF12",
42918 + "BFD_RELOC_FRV_GOTTLSOFFHI",
42919 + "BFD_RELOC_FRV_GOTTLSOFFLO",
42920 + "BFD_RELOC_FRV_TLSOFF",
42921 + "BFD_RELOC_FRV_TLSDESC_RELAX",
42922 + "BFD_RELOC_FRV_GETTLSOFF_RELAX",
42923 + "BFD_RELOC_FRV_TLSOFF_RELAX",
42924 + "BFD_RELOC_FRV_TLSMOFF",
42925 +
42926 + "BFD_RELOC_MN10300_GOTOFF24",
42927 + "BFD_RELOC_MN10300_GOT32",
42928 + "BFD_RELOC_MN10300_GOT24",
42929 + "BFD_RELOC_MN10300_GOT16",
42930 + "BFD_RELOC_MN10300_COPY",
42931 + "BFD_RELOC_MN10300_GLOB_DAT",
42932 + "BFD_RELOC_MN10300_JMP_SLOT",
42933 + "BFD_RELOC_MN10300_RELATIVE",
42934 +
42935 + "BFD_RELOC_386_GOT32",
42936 + "BFD_RELOC_386_PLT32",
42937 + "BFD_RELOC_386_COPY",
42938 + "BFD_RELOC_386_GLOB_DAT",
42939 + "BFD_RELOC_386_JUMP_SLOT",
42940 + "BFD_RELOC_386_RELATIVE",
42941 + "BFD_RELOC_386_GOTOFF",
42942 + "BFD_RELOC_386_GOTPC",
42943 + "BFD_RELOC_386_TLS_TPOFF",
42944 + "BFD_RELOC_386_TLS_IE",
42945 + "BFD_RELOC_386_TLS_GOTIE",
42946 + "BFD_RELOC_386_TLS_LE",
42947 + "BFD_RELOC_386_TLS_GD",
42948 + "BFD_RELOC_386_TLS_LDM",
42949 + "BFD_RELOC_386_TLS_LDO_32",
42950 + "BFD_RELOC_386_TLS_IE_32",
42951 + "BFD_RELOC_386_TLS_LE_32",
42952 + "BFD_RELOC_386_TLS_DTPMOD32",
42953 + "BFD_RELOC_386_TLS_DTPOFF32",
42954 + "BFD_RELOC_386_TLS_TPOFF32",
42955 + "BFD_RELOC_386_TLS_GOTDESC",
42956 + "BFD_RELOC_386_TLS_DESC_CALL",
42957 + "BFD_RELOC_386_TLS_DESC",
42958 + "BFD_RELOC_X86_64_GOT32",
42959 + "BFD_RELOC_X86_64_PLT32",
42960 + "BFD_RELOC_X86_64_COPY",
42961 + "BFD_RELOC_X86_64_GLOB_DAT",
42962 + "BFD_RELOC_X86_64_JUMP_SLOT",
42963 + "BFD_RELOC_X86_64_RELATIVE",
42964 + "BFD_RELOC_X86_64_GOTPCREL",
42965 + "BFD_RELOC_X86_64_32S",
42966 + "BFD_RELOC_X86_64_DTPMOD64",
42967 + "BFD_RELOC_X86_64_DTPOFF64",
42968 + "BFD_RELOC_X86_64_TPOFF64",
42969 + "BFD_RELOC_X86_64_TLSGD",
42970 + "BFD_RELOC_X86_64_TLSLD",
42971 + "BFD_RELOC_X86_64_DTPOFF32",
42972 + "BFD_RELOC_X86_64_GOTTPOFF",
42973 + "BFD_RELOC_X86_64_TPOFF32",
42974 + "BFD_RELOC_X86_64_GOTOFF64",
42975 + "BFD_RELOC_X86_64_GOTPC32",
42976 + "BFD_RELOC_X86_64_GOT64",
42977 + "BFD_RELOC_X86_64_GOTPCREL64",
42978 + "BFD_RELOC_X86_64_GOTPC64",
42979 + "BFD_RELOC_X86_64_GOTPLT64",
42980 + "BFD_RELOC_X86_64_PLTOFF64",
42981 + "BFD_RELOC_X86_64_GOTPC32_TLSDESC",
42982 + "BFD_RELOC_X86_64_TLSDESC_CALL",
42983 + "BFD_RELOC_X86_64_TLSDESC",
42984 + "BFD_RELOC_NS32K_IMM_8",
42985 + "BFD_RELOC_NS32K_IMM_16",
42986 + "BFD_RELOC_NS32K_IMM_32",
42987 + "BFD_RELOC_NS32K_IMM_8_PCREL",
42988 + "BFD_RELOC_NS32K_IMM_16_PCREL",
42989 + "BFD_RELOC_NS32K_IMM_32_PCREL",
42990 + "BFD_RELOC_NS32K_DISP_8",
42991 + "BFD_RELOC_NS32K_DISP_16",
42992 + "BFD_RELOC_NS32K_DISP_32",
42993 + "BFD_RELOC_NS32K_DISP_8_PCREL",
42994 + "BFD_RELOC_NS32K_DISP_16_PCREL",
42995 + "BFD_RELOC_NS32K_DISP_32_PCREL",
42996 + "BFD_RELOC_PDP11_DISP_8_PCREL",
42997 + "BFD_RELOC_PDP11_DISP_6_PCREL",
42998 + "BFD_RELOC_PJ_CODE_HI16",
42999 + "BFD_RELOC_PJ_CODE_LO16",
43000 + "BFD_RELOC_PJ_CODE_DIR16",
43001 + "BFD_RELOC_PJ_CODE_DIR32",
43002 + "BFD_RELOC_PJ_CODE_REL16",
43003 + "BFD_RELOC_PJ_CODE_REL32",
43004 + "BFD_RELOC_PPC_B26",
43005 + "BFD_RELOC_PPC_BA26",
43006 + "BFD_RELOC_PPC_TOC16",
43007 + "BFD_RELOC_PPC_B16",
43008 + "BFD_RELOC_PPC_B16_BRTAKEN",
43009 + "BFD_RELOC_PPC_B16_BRNTAKEN",
43010 + "BFD_RELOC_PPC_BA16",
43011 + "BFD_RELOC_PPC_BA16_BRTAKEN",
43012 + "BFD_RELOC_PPC_BA16_BRNTAKEN",
43013 + "BFD_RELOC_PPC_COPY",
43014 + "BFD_RELOC_PPC_GLOB_DAT",
43015 + "BFD_RELOC_PPC_JMP_SLOT",
43016 + "BFD_RELOC_PPC_RELATIVE",
43017 + "BFD_RELOC_PPC_LOCAL24PC",
43018 + "BFD_RELOC_PPC_EMB_NADDR32",
43019 + "BFD_RELOC_PPC_EMB_NADDR16",
43020 + "BFD_RELOC_PPC_EMB_NADDR16_LO",
43021 + "BFD_RELOC_PPC_EMB_NADDR16_HI",
43022 + "BFD_RELOC_PPC_EMB_NADDR16_HA",
43023 + "BFD_RELOC_PPC_EMB_SDAI16",
43024 + "BFD_RELOC_PPC_EMB_SDA2I16",
43025 + "BFD_RELOC_PPC_EMB_SDA2REL",
43026 + "BFD_RELOC_PPC_EMB_SDA21",
43027 + "BFD_RELOC_PPC_EMB_MRKREF",
43028 + "BFD_RELOC_PPC_EMB_RELSEC16",
43029 + "BFD_RELOC_PPC_EMB_RELST_LO",
43030 + "BFD_RELOC_PPC_EMB_RELST_HI",
43031 + "BFD_RELOC_PPC_EMB_RELST_HA",
43032 + "BFD_RELOC_PPC_EMB_BIT_FLD",
43033 + "BFD_RELOC_PPC_EMB_RELSDA",
43034 + "BFD_RELOC_PPC64_HIGHER",
43035 + "BFD_RELOC_PPC64_HIGHER_S",
43036 + "BFD_RELOC_PPC64_HIGHEST",
43037 + "BFD_RELOC_PPC64_HIGHEST_S",
43038 + "BFD_RELOC_PPC64_TOC16_LO",
43039 + "BFD_RELOC_PPC64_TOC16_HI",
43040 + "BFD_RELOC_PPC64_TOC16_HA",
43041 + "BFD_RELOC_PPC64_TOC",
43042 + "BFD_RELOC_PPC64_PLTGOT16",
43043 + "BFD_RELOC_PPC64_PLTGOT16_LO",
43044 + "BFD_RELOC_PPC64_PLTGOT16_HI",
43045 + "BFD_RELOC_PPC64_PLTGOT16_HA",
43046 + "BFD_RELOC_PPC64_ADDR16_DS",
43047 + "BFD_RELOC_PPC64_ADDR16_LO_DS",
43048 + "BFD_RELOC_PPC64_GOT16_DS",
43049 + "BFD_RELOC_PPC64_GOT16_LO_DS",
43050 + "BFD_RELOC_PPC64_PLT16_LO_DS",
43051 + "BFD_RELOC_PPC64_SECTOFF_DS",
43052 + "BFD_RELOC_PPC64_SECTOFF_LO_DS",
43053 + "BFD_RELOC_PPC64_TOC16_DS",
43054 + "BFD_RELOC_PPC64_TOC16_LO_DS",
43055 + "BFD_RELOC_PPC64_PLTGOT16_DS",
43056 + "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
43057 + "BFD_RELOC_PPC_TLS",
43058 + "BFD_RELOC_PPC_DTPMOD",
43059 + "BFD_RELOC_PPC_TPREL16",
43060 + "BFD_RELOC_PPC_TPREL16_LO",
43061 + "BFD_RELOC_PPC_TPREL16_HI",
43062 + "BFD_RELOC_PPC_TPREL16_HA",
43063 + "BFD_RELOC_PPC_TPREL",
43064 + "BFD_RELOC_PPC_DTPREL16",
43065 + "BFD_RELOC_PPC_DTPREL16_LO",
43066 + "BFD_RELOC_PPC_DTPREL16_HI",
43067 + "BFD_RELOC_PPC_DTPREL16_HA",
43068 + "BFD_RELOC_PPC_DTPREL",
43069 + "BFD_RELOC_PPC_GOT_TLSGD16",
43070 + "BFD_RELOC_PPC_GOT_TLSGD16_LO",
43071 + "BFD_RELOC_PPC_GOT_TLSGD16_HI",
43072 + "BFD_RELOC_PPC_GOT_TLSGD16_HA",
43073 + "BFD_RELOC_PPC_GOT_TLSLD16",
43074 + "BFD_RELOC_PPC_GOT_TLSLD16_LO",
43075 + "BFD_RELOC_PPC_GOT_TLSLD16_HI",
43076 + "BFD_RELOC_PPC_GOT_TLSLD16_HA",
43077 + "BFD_RELOC_PPC_GOT_TPREL16",
43078 + "BFD_RELOC_PPC_GOT_TPREL16_LO",
43079 + "BFD_RELOC_PPC_GOT_TPREL16_HI",
43080 + "BFD_RELOC_PPC_GOT_TPREL16_HA",
43081 + "BFD_RELOC_PPC_GOT_DTPREL16",
43082 + "BFD_RELOC_PPC_GOT_DTPREL16_LO",
43083 + "BFD_RELOC_PPC_GOT_DTPREL16_HI",
43084 + "BFD_RELOC_PPC_GOT_DTPREL16_HA",
43085 + "BFD_RELOC_PPC64_TPREL16_DS",
43086 + "BFD_RELOC_PPC64_TPREL16_LO_DS",
43087 + "BFD_RELOC_PPC64_TPREL16_HIGHER",
43088 + "BFD_RELOC_PPC64_TPREL16_HIGHERA",
43089 + "BFD_RELOC_PPC64_TPREL16_HIGHEST",
43090 + "BFD_RELOC_PPC64_TPREL16_HIGHESTA",
43091 + "BFD_RELOC_PPC64_DTPREL16_DS",
43092 + "BFD_RELOC_PPC64_DTPREL16_LO_DS",
43093 + "BFD_RELOC_PPC64_DTPREL16_HIGHER",
43094 + "BFD_RELOC_PPC64_DTPREL16_HIGHERA",
43095 + "BFD_RELOC_PPC64_DTPREL16_HIGHEST",
43096 + "BFD_RELOC_PPC64_DTPREL16_HIGHESTA",
43097 + "BFD_RELOC_I370_D12",
43098 + "BFD_RELOC_CTOR",
43099 + "BFD_RELOC_ARM_PCREL_BRANCH",
43100 + "BFD_RELOC_ARM_PCREL_BLX",
43101 + "BFD_RELOC_THUMB_PCREL_BLX",
43102 + "BFD_RELOC_ARM_PCREL_CALL",
43103 + "BFD_RELOC_ARM_PCREL_JUMP",
43104 + "BFD_RELOC_THUMB_PCREL_BRANCH7",
43105 + "BFD_RELOC_THUMB_PCREL_BRANCH9",
43106 + "BFD_RELOC_THUMB_PCREL_BRANCH12",
43107 + "BFD_RELOC_THUMB_PCREL_BRANCH20",
43108 + "BFD_RELOC_THUMB_PCREL_BRANCH23",
43109 + "BFD_RELOC_THUMB_PCREL_BRANCH25",
43110 + "BFD_RELOC_ARM_OFFSET_IMM",
43111 + "BFD_RELOC_ARM_THUMB_OFFSET",
43112 + "BFD_RELOC_ARM_TARGET1",
43113 + "BFD_RELOC_ARM_ROSEGREL32",
43114 + "BFD_RELOC_ARM_SBREL32",
43115 + "BFD_RELOC_ARM_TARGET2",
43116 + "BFD_RELOC_ARM_PREL31",
43117 + "BFD_RELOC_ARM_MOVW",
43118 + "BFD_RELOC_ARM_MOVT",
43119 + "BFD_RELOC_ARM_MOVW_PCREL",
43120 + "BFD_RELOC_ARM_MOVT_PCREL",
43121 + "BFD_RELOC_ARM_THUMB_MOVW",
43122 + "BFD_RELOC_ARM_THUMB_MOVT",
43123 + "BFD_RELOC_ARM_THUMB_MOVW_PCREL",
43124 + "BFD_RELOC_ARM_THUMB_MOVT_PCREL",
43125 + "BFD_RELOC_ARM_JUMP_SLOT",
43126 + "BFD_RELOC_ARM_GLOB_DAT",
43127 + "BFD_RELOC_ARM_GOT32",
43128 + "BFD_RELOC_ARM_PLT32",
43129 + "BFD_RELOC_ARM_RELATIVE",
43130 + "BFD_RELOC_ARM_GOTOFF",
43131 + "BFD_RELOC_ARM_GOTPC",
43132 + "BFD_RELOC_ARM_TLS_GD32",
43133 + "BFD_RELOC_ARM_TLS_LDO32",
43134 + "BFD_RELOC_ARM_TLS_LDM32",
43135 + "BFD_RELOC_ARM_TLS_DTPOFF32",
43136 + "BFD_RELOC_ARM_TLS_DTPMOD32",
43137 + "BFD_RELOC_ARM_TLS_TPOFF32",
43138 + "BFD_RELOC_ARM_TLS_IE32",
43139 + "BFD_RELOC_ARM_TLS_LE32",
43140 + "BFD_RELOC_ARM_ALU_PC_G0_NC",
43141 + "BFD_RELOC_ARM_ALU_PC_G0",
43142 + "BFD_RELOC_ARM_ALU_PC_G1_NC",
43143 + "BFD_RELOC_ARM_ALU_PC_G1",
43144 + "BFD_RELOC_ARM_ALU_PC_G2",
43145 + "BFD_RELOC_ARM_LDR_PC_G0",
43146 + "BFD_RELOC_ARM_LDR_PC_G1",
43147 + "BFD_RELOC_ARM_LDR_PC_G2",
43148 + "BFD_RELOC_ARM_LDRS_PC_G0",
43149 + "BFD_RELOC_ARM_LDRS_PC_G1",
43150 + "BFD_RELOC_ARM_LDRS_PC_G2",
43151 + "BFD_RELOC_ARM_LDC_PC_G0",
43152 + "BFD_RELOC_ARM_LDC_PC_G1",
43153 + "BFD_RELOC_ARM_LDC_PC_G2",
43154 + "BFD_RELOC_ARM_ALU_SB_G0_NC",
43155 + "BFD_RELOC_ARM_ALU_SB_G0",
43156 + "BFD_RELOC_ARM_ALU_SB_G1_NC",
43157 + "BFD_RELOC_ARM_ALU_SB_G1",
43158 + "BFD_RELOC_ARM_ALU_SB_G2",
43159 + "BFD_RELOC_ARM_LDR_SB_G0",
43160 + "BFD_RELOC_ARM_LDR_SB_G1",
43161 + "BFD_RELOC_ARM_LDR_SB_G2",
43162 + "BFD_RELOC_ARM_LDRS_SB_G0",
43163 + "BFD_RELOC_ARM_LDRS_SB_G1",
43164 + "BFD_RELOC_ARM_LDRS_SB_G2",
43165 + "BFD_RELOC_ARM_LDC_SB_G0",
43166 + "BFD_RELOC_ARM_LDC_SB_G1",
43167 + "BFD_RELOC_ARM_LDC_SB_G2",
43168 + "BFD_RELOC_ARM_IMMEDIATE",
43169 + "BFD_RELOC_ARM_ADRL_IMMEDIATE",
43170 + "BFD_RELOC_ARM_T32_IMMEDIATE",
43171 + "BFD_RELOC_ARM_T32_ADD_IMM",
43172 + "BFD_RELOC_ARM_T32_IMM12",
43173 + "BFD_RELOC_ARM_T32_ADD_PC12",
43174 + "BFD_RELOC_ARM_SHIFT_IMM",
43175 + "BFD_RELOC_ARM_SMC",
43176 + "BFD_RELOC_ARM_SWI",
43177 + "BFD_RELOC_ARM_MULTI",
43178 + "BFD_RELOC_ARM_CP_OFF_IMM",
43179 + "BFD_RELOC_ARM_CP_OFF_IMM_S2",
43180 + "BFD_RELOC_ARM_T32_CP_OFF_IMM",
43181 + "BFD_RELOC_ARM_T32_CP_OFF_IMM_S2",
43182 + "BFD_RELOC_ARM_ADR_IMM",
43183 + "BFD_RELOC_ARM_LDR_IMM",
43184 + "BFD_RELOC_ARM_LITERAL",
43185 + "BFD_RELOC_ARM_IN_POOL",
43186 + "BFD_RELOC_ARM_OFFSET_IMM8",
43187 + "BFD_RELOC_ARM_T32_OFFSET_U8",
43188 + "BFD_RELOC_ARM_T32_OFFSET_IMM",
43189 + "BFD_RELOC_ARM_HWLITERAL",
43190 + "BFD_RELOC_ARM_THUMB_ADD",
43191 + "BFD_RELOC_ARM_THUMB_IMM",
43192 + "BFD_RELOC_ARM_THUMB_SHIFT",
43193 + "BFD_RELOC_SH_PCDISP8BY2",
43194 + "BFD_RELOC_SH_PCDISP12BY2",
43195 + "BFD_RELOC_SH_IMM3",
43196 + "BFD_RELOC_SH_IMM3U",
43197 + "BFD_RELOC_SH_DISP12",
43198 + "BFD_RELOC_SH_DISP12BY2",
43199 + "BFD_RELOC_SH_DISP12BY4",
43200 + "BFD_RELOC_SH_DISP12BY8",
43201 + "BFD_RELOC_SH_DISP20",
43202 + "BFD_RELOC_SH_DISP20BY8",
43203 + "BFD_RELOC_SH_IMM4",
43204 + "BFD_RELOC_SH_IMM4BY2",
43205 + "BFD_RELOC_SH_IMM4BY4",
43206 + "BFD_RELOC_SH_IMM8",
43207 + "BFD_RELOC_SH_IMM8BY2",
43208 + "BFD_RELOC_SH_IMM8BY4",
43209 + "BFD_RELOC_SH_PCRELIMM8BY2",
43210 + "BFD_RELOC_SH_PCRELIMM8BY4",
43211 + "BFD_RELOC_SH_SWITCH16",
43212 + "BFD_RELOC_SH_SWITCH32",
43213 + "BFD_RELOC_SH_USES",
43214 + "BFD_RELOC_SH_COUNT",
43215 + "BFD_RELOC_SH_ALIGN",
43216 + "BFD_RELOC_SH_CODE",
43217 + "BFD_RELOC_SH_DATA",
43218 + "BFD_RELOC_SH_LABEL",
43219 + "BFD_RELOC_SH_LOOP_START",
43220 + "BFD_RELOC_SH_LOOP_END",
43221 + "BFD_RELOC_SH_COPY",
43222 + "BFD_RELOC_SH_GLOB_DAT",
43223 + "BFD_RELOC_SH_JMP_SLOT",
43224 + "BFD_RELOC_SH_RELATIVE",
43225 + "BFD_RELOC_SH_GOTPC",
43226 + "BFD_RELOC_SH_GOT_LOW16",
43227 + "BFD_RELOC_SH_GOT_MEDLOW16",
43228 + "BFD_RELOC_SH_GOT_MEDHI16",
43229 + "BFD_RELOC_SH_GOT_HI16",
43230 + "BFD_RELOC_SH_GOTPLT_LOW16",
43231 + "BFD_RELOC_SH_GOTPLT_MEDLOW16",
43232 + "BFD_RELOC_SH_GOTPLT_MEDHI16",
43233 + "BFD_RELOC_SH_GOTPLT_HI16",
43234 + "BFD_RELOC_SH_PLT_LOW16",
43235 + "BFD_RELOC_SH_PLT_MEDLOW16",
43236 + "BFD_RELOC_SH_PLT_MEDHI16",
43237 + "BFD_RELOC_SH_PLT_HI16",
43238 + "BFD_RELOC_SH_GOTOFF_LOW16",
43239 + "BFD_RELOC_SH_GOTOFF_MEDLOW16",
43240 + "BFD_RELOC_SH_GOTOFF_MEDHI16",
43241 + "BFD_RELOC_SH_GOTOFF_HI16",
43242 + "BFD_RELOC_SH_GOTPC_LOW16",
43243 + "BFD_RELOC_SH_GOTPC_MEDLOW16",
43244 + "BFD_RELOC_SH_GOTPC_MEDHI16",
43245 + "BFD_RELOC_SH_GOTPC_HI16",
43246 + "BFD_RELOC_SH_COPY64",
43247 + "BFD_RELOC_SH_GLOB_DAT64",
43248 + "BFD_RELOC_SH_JMP_SLOT64",
43249 + "BFD_RELOC_SH_RELATIVE64",
43250 + "BFD_RELOC_SH_GOT10BY4",
43251 + "BFD_RELOC_SH_GOT10BY8",
43252 + "BFD_RELOC_SH_GOTPLT10BY4",
43253 + "BFD_RELOC_SH_GOTPLT10BY8",
43254 + "BFD_RELOC_SH_GOTPLT32",
43255 + "BFD_RELOC_SH_SHMEDIA_CODE",
43256 + "BFD_RELOC_SH_IMMU5",
43257 + "BFD_RELOC_SH_IMMS6",
43258 + "BFD_RELOC_SH_IMMS6BY32",
43259 + "BFD_RELOC_SH_IMMU6",
43260 + "BFD_RELOC_SH_IMMS10",
43261 + "BFD_RELOC_SH_IMMS10BY2",
43262 + "BFD_RELOC_SH_IMMS10BY4",
43263 + "BFD_RELOC_SH_IMMS10BY8",
43264 + "BFD_RELOC_SH_IMMS16",
43265 + "BFD_RELOC_SH_IMMU16",
43266 + "BFD_RELOC_SH_IMM_LOW16",
43267 + "BFD_RELOC_SH_IMM_LOW16_PCREL",
43268 + "BFD_RELOC_SH_IMM_MEDLOW16",
43269 + "BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
43270 + "BFD_RELOC_SH_IMM_MEDHI16",
43271 + "BFD_RELOC_SH_IMM_MEDHI16_PCREL",
43272 + "BFD_RELOC_SH_IMM_HI16",
43273 + "BFD_RELOC_SH_IMM_HI16_PCREL",
43274 + "BFD_RELOC_SH_PT_16",
43275 + "BFD_RELOC_SH_TLS_GD_32",
43276 + "BFD_RELOC_SH_TLS_LD_32",
43277 + "BFD_RELOC_SH_TLS_LDO_32",
43278 + "BFD_RELOC_SH_TLS_IE_32",
43279 + "BFD_RELOC_SH_TLS_LE_32",
43280 + "BFD_RELOC_SH_TLS_DTPMOD32",
43281 + "BFD_RELOC_SH_TLS_DTPOFF32",
43282 + "BFD_RELOC_SH_TLS_TPOFF32",
43283 + "BFD_RELOC_ARC_B22_PCREL",
43284 + "BFD_RELOC_ARC_B26",
43285 + "BFD_RELOC_BFIN_16_IMM",
43286 + "BFD_RELOC_BFIN_16_HIGH",
43287 + "BFD_RELOC_BFIN_4_PCREL",
43288 + "BFD_RELOC_BFIN_5_PCREL",
43289 + "BFD_RELOC_BFIN_16_LOW",
43290 + "BFD_RELOC_BFIN_10_PCREL",
43291 + "BFD_RELOC_BFIN_11_PCREL",
43292 + "BFD_RELOC_BFIN_12_PCREL_JUMP",
43293 + "BFD_RELOC_BFIN_12_PCREL_JUMP_S",
43294 + "BFD_RELOC_BFIN_24_PCREL_CALL_X",
43295 + "BFD_RELOC_BFIN_24_PCREL_JUMP_L",
43296 + "BFD_RELOC_BFIN_GOT17M4",
43297 + "BFD_RELOC_BFIN_GOTHI",
43298 + "BFD_RELOC_BFIN_GOTLO",
43299 + "BFD_RELOC_BFIN_FUNCDESC",
43300 + "BFD_RELOC_BFIN_FUNCDESC_GOT17M4",
43301 + "BFD_RELOC_BFIN_FUNCDESC_GOTHI",
43302 + "BFD_RELOC_BFIN_FUNCDESC_GOTLO",
43303 + "BFD_RELOC_BFIN_FUNCDESC_VALUE",
43304 + "BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4",
43305 + "BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI",
43306 + "BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO",
43307 + "BFD_RELOC_BFIN_GOTOFF17M4",
43308 + "BFD_RELOC_BFIN_GOTOFFHI",
43309 + "BFD_RELOC_BFIN_GOTOFFLO",
43310 + "BFD_RELOC_BFIN_GOT",
43311 + "BFD_RELOC_BFIN_PLTPC",
43312 + "BFD_ARELOC_BFIN_PUSH",
43313 + "BFD_ARELOC_BFIN_CONST",
43314 + "BFD_ARELOC_BFIN_ADD",
43315 + "BFD_ARELOC_BFIN_SUB",
43316 + "BFD_ARELOC_BFIN_MULT",
43317 + "BFD_ARELOC_BFIN_DIV",
43318 + "BFD_ARELOC_BFIN_MOD",
43319 + "BFD_ARELOC_BFIN_LSHIFT",
43320 + "BFD_ARELOC_BFIN_RSHIFT",
43321 + "BFD_ARELOC_BFIN_AND",
43322 + "BFD_ARELOC_BFIN_OR",
43323 + "BFD_ARELOC_BFIN_XOR",
43324 + "BFD_ARELOC_BFIN_LAND",
43325 + "BFD_ARELOC_BFIN_LOR",
43326 + "BFD_ARELOC_BFIN_LEN",
43327 + "BFD_ARELOC_BFIN_NEG",
43328 + "BFD_ARELOC_BFIN_COMP",
43329 + "BFD_ARELOC_BFIN_PAGE",
43330 + "BFD_ARELOC_BFIN_HWPAGE",
43331 + "BFD_ARELOC_BFIN_ADDR",
43332 + "BFD_RELOC_D10V_10_PCREL_R",
43333 + "BFD_RELOC_D10V_10_PCREL_L",
43334 + "BFD_RELOC_D10V_18",
43335 + "BFD_RELOC_D10V_18_PCREL",
43336 + "BFD_RELOC_D30V_6",
43337 + "BFD_RELOC_D30V_9_PCREL",
43338 + "BFD_RELOC_D30V_9_PCREL_R",
43339 + "BFD_RELOC_D30V_15",
43340 + "BFD_RELOC_D30V_15_PCREL",
43341 + "BFD_RELOC_D30V_15_PCREL_R",
43342 + "BFD_RELOC_D30V_21",
43343 + "BFD_RELOC_D30V_21_PCREL",
43344 + "BFD_RELOC_D30V_21_PCREL_R",
43345 + "BFD_RELOC_D30V_32",
43346 + "BFD_RELOC_D30V_32_PCREL",
43347 + "BFD_RELOC_DLX_HI16_S",
43348 + "BFD_RELOC_DLX_LO16",
43349 + "BFD_RELOC_DLX_JMP26",
43350 + "BFD_RELOC_M32C_HI8",
43351 + "BFD_RELOC_M32C_RL_JUMP",
43352 + "BFD_RELOC_M32C_RL_1ADDR",
43353 + "BFD_RELOC_M32C_RL_2ADDR",
43354 + "BFD_RELOC_M32R_24",
43355 + "BFD_RELOC_M32R_10_PCREL",
43356 + "BFD_RELOC_M32R_18_PCREL",
43357 + "BFD_RELOC_M32R_26_PCREL",
43358 + "BFD_RELOC_M32R_HI16_ULO",
43359 + "BFD_RELOC_M32R_HI16_SLO",
43360 + "BFD_RELOC_M32R_LO16",
43361 + "BFD_RELOC_M32R_SDA16",
43362 + "BFD_RELOC_M32R_GOT24",
43363 + "BFD_RELOC_M32R_26_PLTREL",
43364 + "BFD_RELOC_M32R_COPY",
43365 + "BFD_RELOC_M32R_GLOB_DAT",
43366 + "BFD_RELOC_M32R_JMP_SLOT",
43367 + "BFD_RELOC_M32R_RELATIVE",
43368 + "BFD_RELOC_M32R_GOTOFF",
43369 + "BFD_RELOC_M32R_GOTOFF_HI_ULO",
43370 + "BFD_RELOC_M32R_GOTOFF_HI_SLO",
43371 + "BFD_RELOC_M32R_GOTOFF_LO",
43372 + "BFD_RELOC_M32R_GOTPC24",
43373 + "BFD_RELOC_M32R_GOT16_HI_ULO",
43374 + "BFD_RELOC_M32R_GOT16_HI_SLO",
43375 + "BFD_RELOC_M32R_GOT16_LO",
43376 + "BFD_RELOC_M32R_GOTPC_HI_ULO",
43377 + "BFD_RELOC_M32R_GOTPC_HI_SLO",
43378 + "BFD_RELOC_M32R_GOTPC_LO",
43379 + "BFD_RELOC_V850_9_PCREL",
43380 + "BFD_RELOC_V850_22_PCREL",
43381 + "BFD_RELOC_V850_SDA_16_16_OFFSET",
43382 + "BFD_RELOC_V850_SDA_15_16_OFFSET",
43383 + "BFD_RELOC_V850_ZDA_16_16_OFFSET",
43384 + "BFD_RELOC_V850_ZDA_15_16_OFFSET",
43385 + "BFD_RELOC_V850_TDA_6_8_OFFSET",
43386 + "BFD_RELOC_V850_TDA_7_8_OFFSET",
43387 + "BFD_RELOC_V850_TDA_7_7_OFFSET",
43388 + "BFD_RELOC_V850_TDA_16_16_OFFSET",
43389 + "BFD_RELOC_V850_TDA_4_5_OFFSET",
43390 + "BFD_RELOC_V850_TDA_4_4_OFFSET",
43391 + "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
43392 + "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
43393 + "BFD_RELOC_V850_CALLT_6_7_OFFSET",
43394 + "BFD_RELOC_V850_CALLT_16_16_OFFSET",
43395 + "BFD_RELOC_V850_LONGCALL",
43396 + "BFD_RELOC_V850_LONGJUMP",
43397 + "BFD_RELOC_V850_ALIGN",
43398 + "BFD_RELOC_V850_LO16_SPLIT_OFFSET",
43399 + "BFD_RELOC_MN10300_32_PCREL",
43400 + "BFD_RELOC_MN10300_16_PCREL",
43401 + "BFD_RELOC_TIC30_LDP",
43402 + "BFD_RELOC_TIC54X_PARTLS7",
43403 + "BFD_RELOC_TIC54X_PARTMS9",
43404 + "BFD_RELOC_TIC54X_23",
43405 + "BFD_RELOC_TIC54X_16_OF_23",
43406 + "BFD_RELOC_TIC54X_MS7_OF_23",
43407 + "BFD_RELOC_FR30_48",
43408 + "BFD_RELOC_FR30_20",
43409 + "BFD_RELOC_FR30_6_IN_4",
43410 + "BFD_RELOC_FR30_8_IN_8",
43411 + "BFD_RELOC_FR30_9_IN_8",
43412 + "BFD_RELOC_FR30_10_IN_8",
43413 + "BFD_RELOC_FR30_9_PCREL",
43414 + "BFD_RELOC_FR30_12_PCREL",
43415 + "BFD_RELOC_MCORE_PCREL_IMM8BY4",
43416 + "BFD_RELOC_MCORE_PCREL_IMM11BY2",
43417 + "BFD_RELOC_MCORE_PCREL_IMM4BY2",
43418 + "BFD_RELOC_MCORE_PCREL_32",
43419 + "BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2",
43420 + "BFD_RELOC_MCORE_RVA",
43421 + "BFD_RELOC_MEP_8",
43422 + "BFD_RELOC_MEP_16",
43423 + "BFD_RELOC_MEP_32",
43424 + "BFD_RELOC_MEP_PCREL8A2",
43425 + "BFD_RELOC_MEP_PCREL12A2",
43426 + "BFD_RELOC_MEP_PCREL17A2",
43427 + "BFD_RELOC_MEP_PCREL24A2",
43428 + "BFD_RELOC_MEP_PCABS24A2",
43429 + "BFD_RELOC_MEP_LOW16",
43430 + "BFD_RELOC_MEP_HI16U",
43431 + "BFD_RELOC_MEP_HI16S",
43432 + "BFD_RELOC_MEP_GPREL",
43433 + "BFD_RELOC_MEP_TPREL",
43434 + "BFD_RELOC_MEP_TPREL7",
43435 + "BFD_RELOC_MEP_TPREL7A2",
43436 + "BFD_RELOC_MEP_TPREL7A4",
43437 + "BFD_RELOC_MEP_UIMM24",
43438 + "BFD_RELOC_MEP_ADDR24A4",
43439 + "BFD_RELOC_MEP_GNU_VTINHERIT",
43440 + "BFD_RELOC_MEP_GNU_VTENTRY",
43441 +
43442 + "BFD_RELOC_MMIX_GETA",
43443 + "BFD_RELOC_MMIX_GETA_1",
43444 + "BFD_RELOC_MMIX_GETA_2",
43445 + "BFD_RELOC_MMIX_GETA_3",
43446 + "BFD_RELOC_MMIX_CBRANCH",
43447 + "BFD_RELOC_MMIX_CBRANCH_J",
43448 + "BFD_RELOC_MMIX_CBRANCH_1",
43449 + "BFD_RELOC_MMIX_CBRANCH_2",
43450 + "BFD_RELOC_MMIX_CBRANCH_3",
43451 + "BFD_RELOC_MMIX_PUSHJ",
43452 + "BFD_RELOC_MMIX_PUSHJ_1",
43453 + "BFD_RELOC_MMIX_PUSHJ_2",
43454 + "BFD_RELOC_MMIX_PUSHJ_3",
43455 + "BFD_RELOC_MMIX_PUSHJ_STUBBABLE",
43456 + "BFD_RELOC_MMIX_JMP",
43457 + "BFD_RELOC_MMIX_JMP_1",
43458 + "BFD_RELOC_MMIX_JMP_2",
43459 + "BFD_RELOC_MMIX_JMP_3",
43460 + "BFD_RELOC_MMIX_ADDR19",
43461 + "BFD_RELOC_MMIX_ADDR27",
43462 + "BFD_RELOC_MMIX_REG_OR_BYTE",
43463 + "BFD_RELOC_MMIX_REG",
43464 + "BFD_RELOC_MMIX_BASE_PLUS_OFFSET",
43465 + "BFD_RELOC_MMIX_LOCAL",
43466 + "BFD_RELOC_AVR_7_PCREL",
43467 + "BFD_RELOC_AVR_13_PCREL",
43468 + "BFD_RELOC_AVR_16_PM",
43469 + "BFD_RELOC_AVR_LO8_LDI",
43470 + "BFD_RELOC_AVR_HI8_LDI",
43471 + "BFD_RELOC_AVR_HH8_LDI",
43472 + "BFD_RELOC_AVR_MS8_LDI",
43473 + "BFD_RELOC_AVR_LO8_LDI_NEG",
43474 + "BFD_RELOC_AVR_HI8_LDI_NEG",
43475 + "BFD_RELOC_AVR_HH8_LDI_NEG",
43476 + "BFD_RELOC_AVR_MS8_LDI_NEG",
43477 + "BFD_RELOC_AVR_LO8_LDI_PM",
43478 + "BFD_RELOC_AVR_LO8_LDI_GS",
43479 + "BFD_RELOC_AVR_HI8_LDI_PM",
43480 + "BFD_RELOC_AVR_HI8_LDI_GS",
43481 + "BFD_RELOC_AVR_HH8_LDI_PM",
43482 + "BFD_RELOC_AVR_LO8_LDI_PM_NEG",
43483 + "BFD_RELOC_AVR_HI8_LDI_PM_NEG",
43484 + "BFD_RELOC_AVR_HH8_LDI_PM_NEG",
43485 + "BFD_RELOC_AVR_CALL",
43486 + "BFD_RELOC_AVR_LDI",
43487 + "BFD_RELOC_AVR_6",
43488 + "BFD_RELOC_AVR_6_ADIW",
43489 + "BFD_RELOC_AVR32_DIFF32",
43490 + "BFD_RELOC_AVR32_DIFF16",
43491 + "BFD_RELOC_AVR32_DIFF8",
43492 + "BFD_RELOC_AVR32_GOT32",
43493 + "BFD_RELOC_AVR32_GOT16",
43494 + "BFD_RELOC_AVR32_GOT8",
43495 + "BFD_RELOC_AVR32_21S",
43496 + "BFD_RELOC_AVR32_16U",
43497 + "BFD_RELOC_AVR32_16S",
43498 + "BFD_RELOC_AVR32_SUB5",
43499 + "BFD_RELOC_AVR32_8S_EXT",
43500 + "BFD_RELOC_AVR32_8S",
43501 + "BFD_RELOC_AVR32_15S",
43502 + "BFD_RELOC_AVR32_22H_PCREL",
43503 + "BFD_RELOC_AVR32_18W_PCREL",
43504 + "BFD_RELOC_AVR32_16B_PCREL",
43505 + "BFD_RELOC_AVR32_16N_PCREL",
43506 + "BFD_RELOC_AVR32_14UW_PCREL",
43507 + "BFD_RELOC_AVR32_11H_PCREL",
43508 + "BFD_RELOC_AVR32_10UW_PCREL",
43509 + "BFD_RELOC_AVR32_9H_PCREL",
43510 + "BFD_RELOC_AVR32_9UW_PCREL",
43511 + "BFD_RELOC_AVR32_GOTPC",
43512 + "BFD_RELOC_AVR32_GOTCALL",
43513 + "BFD_RELOC_AVR32_LDA_GOT",
43514 + "BFD_RELOC_AVR32_GOT21S",
43515 + "BFD_RELOC_AVR32_GOT18SW",
43516 + "BFD_RELOC_AVR32_GOT16S",
43517 + "BFD_RELOC_AVR32_32_CPENT",
43518 + "BFD_RELOC_AVR32_CPCALL",
43519 + "BFD_RELOC_AVR32_16_CP",
43520 + "BFD_RELOC_AVR32_9W_CP",
43521 + "BFD_RELOC_AVR32_ALIGN",
43522 + "BFD_RELOC_AVR32_14UW",
43523 + "BFD_RELOC_AVR32_10UW",
43524 + "BFD_RELOC_AVR32_10SW",
43525 + "BFD_RELOC_AVR32_STHH_W",
43526 + "BFD_RELOC_AVR32_7UW",
43527 + "BFD_RELOC_AVR32_6S",
43528 + "BFD_RELOC_AVR32_6UW",
43529 + "BFD_RELOC_AVR32_4UH",
43530 + "BFD_RELOC_AVR32_3U",
43531 + "BFD_RELOC_390_12",
43532 + "BFD_RELOC_390_GOT12",
43533 + "BFD_RELOC_390_PLT32",
43534 + "BFD_RELOC_390_COPY",
43535 + "BFD_RELOC_390_GLOB_DAT",
43536 + "BFD_RELOC_390_JMP_SLOT",
43537 + "BFD_RELOC_390_RELATIVE",
43538 + "BFD_RELOC_390_GOTPC",
43539 + "BFD_RELOC_390_GOT16",
43540 + "BFD_RELOC_390_PC16DBL",
43541 + "BFD_RELOC_390_PLT16DBL",
43542 + "BFD_RELOC_390_PC32DBL",
43543 + "BFD_RELOC_390_PLT32DBL",
43544 + "BFD_RELOC_390_GOTPCDBL",
43545 + "BFD_RELOC_390_GOT64",
43546 + "BFD_RELOC_390_PLT64",
43547 + "BFD_RELOC_390_GOTENT",
43548 + "BFD_RELOC_390_GOTOFF64",
43549 + "BFD_RELOC_390_GOTPLT12",
43550 + "BFD_RELOC_390_GOTPLT16",
43551 + "BFD_RELOC_390_GOTPLT32",
43552 + "BFD_RELOC_390_GOTPLT64",
43553 + "BFD_RELOC_390_GOTPLTENT",
43554 + "BFD_RELOC_390_PLTOFF16",
43555 + "BFD_RELOC_390_PLTOFF32",
43556 + "BFD_RELOC_390_PLTOFF64",
43557 + "BFD_RELOC_390_TLS_LOAD",
43558 + "BFD_RELOC_390_TLS_GDCALL",
43559 + "BFD_RELOC_390_TLS_LDCALL",
43560 + "BFD_RELOC_390_TLS_GD32",
43561 + "BFD_RELOC_390_TLS_GD64",
43562 + "BFD_RELOC_390_TLS_GOTIE12",
43563 + "BFD_RELOC_390_TLS_GOTIE32",
43564 + "BFD_RELOC_390_TLS_GOTIE64",
43565 + "BFD_RELOC_390_TLS_LDM32",
43566 + "BFD_RELOC_390_TLS_LDM64",
43567 + "BFD_RELOC_390_TLS_IE32",
43568 + "BFD_RELOC_390_TLS_IE64",
43569 + "BFD_RELOC_390_TLS_IEENT",
43570 + "BFD_RELOC_390_TLS_LE32",
43571 + "BFD_RELOC_390_TLS_LE64",
43572 + "BFD_RELOC_390_TLS_LDO32",
43573 + "BFD_RELOC_390_TLS_LDO64",
43574 + "BFD_RELOC_390_TLS_DTPMOD",
43575 + "BFD_RELOC_390_TLS_DTPOFF",
43576 + "BFD_RELOC_390_TLS_TPOFF",
43577 + "BFD_RELOC_390_20",
43578 + "BFD_RELOC_390_GOT20",
43579 + "BFD_RELOC_390_GOTPLT20",
43580 + "BFD_RELOC_390_TLS_GOTIE20",
43581 + "BFD_RELOC_SCORE_DUMMY1",
43582 + "BFD_RELOC_SCORE_GPREL15",
43583 + "BFD_RELOC_SCORE_DUMMY2",
43584 + "BFD_RELOC_SCORE_JMP",
43585 + "BFD_RELOC_SCORE_BRANCH",
43586 + "BFD_RELOC_SCORE16_JMP",
43587 + "BFD_RELOC_SCORE16_BRANCH",
43588 + "BFD_RELOC_SCORE_GOT15",
43589 + "BFD_RELOC_SCORE_GOT_LO16",
43590 + "BFD_RELOC_SCORE_CALL15",
43591 + "BFD_RELOC_SCORE_DUMMY_HI16",
43592 + "BFD_RELOC_IP2K_FR9",
43593 + "BFD_RELOC_IP2K_BANK",
43594 + "BFD_RELOC_IP2K_ADDR16CJP",
43595 + "BFD_RELOC_IP2K_PAGE3",
43596 + "BFD_RELOC_IP2K_LO8DATA",
43597 + "BFD_RELOC_IP2K_HI8DATA",
43598 + "BFD_RELOC_IP2K_EX8DATA",
43599 + "BFD_RELOC_IP2K_LO8INSN",
43600 + "BFD_RELOC_IP2K_HI8INSN",
43601 + "BFD_RELOC_IP2K_PC_SKIP",
43602 + "BFD_RELOC_IP2K_TEXT",
43603 + "BFD_RELOC_IP2K_FR_OFFSET",
43604 + "BFD_RELOC_VPE4KMATH_DATA",
43605 + "BFD_RELOC_VPE4KMATH_INSN",
43606 + "BFD_RELOC_VTABLE_INHERIT",
43607 + "BFD_RELOC_VTABLE_ENTRY",
43608 + "BFD_RELOC_IA64_IMM14",
43609 + "BFD_RELOC_IA64_IMM22",
43610 + "BFD_RELOC_IA64_IMM64",
43611 + "BFD_RELOC_IA64_DIR32MSB",
43612 + "BFD_RELOC_IA64_DIR32LSB",
43613 + "BFD_RELOC_IA64_DIR64MSB",
43614 + "BFD_RELOC_IA64_DIR64LSB",
43615 + "BFD_RELOC_IA64_GPREL22",
43616 + "BFD_RELOC_IA64_GPREL64I",
43617 + "BFD_RELOC_IA64_GPREL32MSB",
43618 + "BFD_RELOC_IA64_GPREL32LSB",
43619 + "BFD_RELOC_IA64_GPREL64MSB",
43620 + "BFD_RELOC_IA64_GPREL64LSB",
43621 + "BFD_RELOC_IA64_LTOFF22",
43622 + "BFD_RELOC_IA64_LTOFF64I",
43623 + "BFD_RELOC_IA64_PLTOFF22",
43624 + "BFD_RELOC_IA64_PLTOFF64I",
43625 + "BFD_RELOC_IA64_PLTOFF64MSB",
43626 + "BFD_RELOC_IA64_PLTOFF64LSB",
43627 + "BFD_RELOC_IA64_FPTR64I",
43628 + "BFD_RELOC_IA64_FPTR32MSB",
43629 + "BFD_RELOC_IA64_FPTR32LSB",
43630 + "BFD_RELOC_IA64_FPTR64MSB",
43631 + "BFD_RELOC_IA64_FPTR64LSB",
43632 + "BFD_RELOC_IA64_PCREL21B",
43633 + "BFD_RELOC_IA64_PCREL21BI",
43634 + "BFD_RELOC_IA64_PCREL21M",
43635 + "BFD_RELOC_IA64_PCREL21F",
43636 + "BFD_RELOC_IA64_PCREL22",
43637 + "BFD_RELOC_IA64_PCREL60B",
43638 + "BFD_RELOC_IA64_PCREL64I",
43639 + "BFD_RELOC_IA64_PCREL32MSB",
43640 + "BFD_RELOC_IA64_PCREL32LSB",
43641 + "BFD_RELOC_IA64_PCREL64MSB",
43642 + "BFD_RELOC_IA64_PCREL64LSB",
43643 + "BFD_RELOC_IA64_LTOFF_FPTR22",
43644 + "BFD_RELOC_IA64_LTOFF_FPTR64I",
43645 + "BFD_RELOC_IA64_LTOFF_FPTR32MSB",
43646 + "BFD_RELOC_IA64_LTOFF_FPTR32LSB",
43647 + "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
43648 + "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
43649 + "BFD_RELOC_IA64_SEGREL32MSB",
43650 + "BFD_RELOC_IA64_SEGREL32LSB",
43651 + "BFD_RELOC_IA64_SEGREL64MSB",
43652 + "BFD_RELOC_IA64_SEGREL64LSB",
43653 + "BFD_RELOC_IA64_SECREL32MSB",
43654 + "BFD_RELOC_IA64_SECREL32LSB",
43655 + "BFD_RELOC_IA64_SECREL64MSB",
43656 + "BFD_RELOC_IA64_SECREL64LSB",
43657 + "BFD_RELOC_IA64_REL32MSB",
43658 + "BFD_RELOC_IA64_REL32LSB",
43659 + "BFD_RELOC_IA64_REL64MSB",
43660 + "BFD_RELOC_IA64_REL64LSB",
43661 + "BFD_RELOC_IA64_LTV32MSB",
43662 + "BFD_RELOC_IA64_LTV32LSB",
43663 + "BFD_RELOC_IA64_LTV64MSB",
43664 + "BFD_RELOC_IA64_LTV64LSB",
43665 + "BFD_RELOC_IA64_IPLTMSB",
43666 + "BFD_RELOC_IA64_IPLTLSB",
43667 + "BFD_RELOC_IA64_COPY",
43668 + "BFD_RELOC_IA64_LTOFF22X",
43669 + "BFD_RELOC_IA64_LDXMOV",
43670 + "BFD_RELOC_IA64_TPREL14",
43671 + "BFD_RELOC_IA64_TPREL22",
43672 + "BFD_RELOC_IA64_TPREL64I",
43673 + "BFD_RELOC_IA64_TPREL64MSB",
43674 + "BFD_RELOC_IA64_TPREL64LSB",
43675 + "BFD_RELOC_IA64_LTOFF_TPREL22",
43676 + "BFD_RELOC_IA64_DTPMOD64MSB",
43677 + "BFD_RELOC_IA64_DTPMOD64LSB",
43678 + "BFD_RELOC_IA64_LTOFF_DTPMOD22",
43679 + "BFD_RELOC_IA64_DTPREL14",
43680 + "BFD_RELOC_IA64_DTPREL22",
43681 + "BFD_RELOC_IA64_DTPREL64I",
43682 + "BFD_RELOC_IA64_DTPREL32MSB",
43683 + "BFD_RELOC_IA64_DTPREL32LSB",
43684 + "BFD_RELOC_IA64_DTPREL64MSB",
43685 + "BFD_RELOC_IA64_DTPREL64LSB",
43686 + "BFD_RELOC_IA64_LTOFF_DTPREL22",
43687 + "BFD_RELOC_M68HC11_HI8",
43688 + "BFD_RELOC_M68HC11_LO8",
43689 + "BFD_RELOC_M68HC11_3B",
43690 + "BFD_RELOC_M68HC11_RL_JUMP",
43691 + "BFD_RELOC_M68HC11_RL_GROUP",
43692 + "BFD_RELOC_M68HC11_LO16",
43693 + "BFD_RELOC_M68HC11_PAGE",
43694 + "BFD_RELOC_M68HC11_24",
43695 + "BFD_RELOC_M68HC12_5B",
43696 + "BFD_RELOC_16C_NUM08",
43697 + "BFD_RELOC_16C_NUM08_C",
43698 + "BFD_RELOC_16C_NUM16",
43699 + "BFD_RELOC_16C_NUM16_C",
43700 + "BFD_RELOC_16C_NUM32",
43701 + "BFD_RELOC_16C_NUM32_C",
43702 + "BFD_RELOC_16C_DISP04",
43703 + "BFD_RELOC_16C_DISP04_C",
43704 + "BFD_RELOC_16C_DISP08",
43705 + "BFD_RELOC_16C_DISP08_C",
43706 + "BFD_RELOC_16C_DISP16",
43707 + "BFD_RELOC_16C_DISP16_C",
43708 + "BFD_RELOC_16C_DISP24",
43709 + "BFD_RELOC_16C_DISP24_C",
43710 + "BFD_RELOC_16C_DISP24a",
43711 + "BFD_RELOC_16C_DISP24a_C",
43712 + "BFD_RELOC_16C_REG04",
43713 + "BFD_RELOC_16C_REG04_C",
43714 + "BFD_RELOC_16C_REG04a",
43715 + "BFD_RELOC_16C_REG04a_C",
43716 + "BFD_RELOC_16C_REG14",
43717 + "BFD_RELOC_16C_REG14_C",
43718 + "BFD_RELOC_16C_REG16",
43719 + "BFD_RELOC_16C_REG16_C",
43720 + "BFD_RELOC_16C_REG20",
43721 + "BFD_RELOC_16C_REG20_C",
43722 + "BFD_RELOC_16C_ABS20",
43723 + "BFD_RELOC_16C_ABS20_C",
43724 + "BFD_RELOC_16C_ABS24",
43725 + "BFD_RELOC_16C_ABS24_C",
43726 + "BFD_RELOC_16C_IMM04",
43727 + "BFD_RELOC_16C_IMM04_C",
43728 + "BFD_RELOC_16C_IMM16",
43729 + "BFD_RELOC_16C_IMM16_C",
43730 + "BFD_RELOC_16C_IMM20",
43731 + "BFD_RELOC_16C_IMM20_C",
43732 + "BFD_RELOC_16C_IMM24",
43733 + "BFD_RELOC_16C_IMM24_C",
43734 + "BFD_RELOC_16C_IMM32",
43735 + "BFD_RELOC_16C_IMM32_C",
43736 + "BFD_RELOC_CR16_NUM8",
43737 + "BFD_RELOC_CR16_NUM16",
43738 + "BFD_RELOC_CR16_NUM32",
43739 + "BFD_RELOC_CR16_NUM32a",
43740 + "BFD_RELOC_CR16_REGREL0",
43741 + "BFD_RELOC_CR16_REGREL4",
43742 + "BFD_RELOC_CR16_REGREL4a",
43743 + "BFD_RELOC_CR16_REGREL14",
43744 + "BFD_RELOC_CR16_REGREL14a",
43745 + "BFD_RELOC_CR16_REGREL16",
43746 + "BFD_RELOC_CR16_REGREL20",
43747 + "BFD_RELOC_CR16_REGREL20a",
43748 + "BFD_RELOC_CR16_ABS20",
43749 + "BFD_RELOC_CR16_ABS24",
43750 + "BFD_RELOC_CR16_IMM4",
43751 + "BFD_RELOC_CR16_IMM8",
43752 + "BFD_RELOC_CR16_IMM16",
43753 + "BFD_RELOC_CR16_IMM20",
43754 + "BFD_RELOC_CR16_IMM24",
43755 + "BFD_RELOC_CR16_IMM32",
43756 + "BFD_RELOC_CR16_IMM32a",
43757 + "BFD_RELOC_CR16_DISP4",
43758 + "BFD_RELOC_CR16_DISP8",
43759 + "BFD_RELOC_CR16_DISP16",
43760 + "BFD_RELOC_CR16_DISP20",
43761 + "BFD_RELOC_CR16_DISP24",
43762 + "BFD_RELOC_CR16_DISP24a",
43763 + "BFD_RELOC_CRX_REL4",
43764 + "BFD_RELOC_CRX_REL8",
43765 + "BFD_RELOC_CRX_REL8_CMP",
43766 + "BFD_RELOC_CRX_REL16",
43767 + "BFD_RELOC_CRX_REL24",
43768 + "BFD_RELOC_CRX_REL32",
43769 + "BFD_RELOC_CRX_REGREL12",
43770 + "BFD_RELOC_CRX_REGREL22",
43771 + "BFD_RELOC_CRX_REGREL28",
43772 + "BFD_RELOC_CRX_REGREL32",
43773 + "BFD_RELOC_CRX_ABS16",
43774 + "BFD_RELOC_CRX_ABS32",
43775 + "BFD_RELOC_CRX_NUM8",
43776 + "BFD_RELOC_CRX_NUM16",
43777 + "BFD_RELOC_CRX_NUM32",
43778 + "BFD_RELOC_CRX_IMM16",
43779 + "BFD_RELOC_CRX_IMM32",
43780 + "BFD_RELOC_CRX_SWITCH8",
43781 + "BFD_RELOC_CRX_SWITCH16",
43782 + "BFD_RELOC_CRX_SWITCH32",
43783 + "BFD_RELOC_CRIS_BDISP8",
43784 + "BFD_RELOC_CRIS_UNSIGNED_5",
43785 + "BFD_RELOC_CRIS_SIGNED_6",
43786 + "BFD_RELOC_CRIS_UNSIGNED_6",
43787 + "BFD_RELOC_CRIS_SIGNED_8",
43788 + "BFD_RELOC_CRIS_UNSIGNED_8",
43789 + "BFD_RELOC_CRIS_SIGNED_16",
43790 + "BFD_RELOC_CRIS_UNSIGNED_16",
43791 + "BFD_RELOC_CRIS_LAPCQ_OFFSET",
43792 + "BFD_RELOC_CRIS_UNSIGNED_4",
43793 + "BFD_RELOC_CRIS_COPY",
43794 + "BFD_RELOC_CRIS_GLOB_DAT",
43795 + "BFD_RELOC_CRIS_JUMP_SLOT",
43796 + "BFD_RELOC_CRIS_RELATIVE",
43797 + "BFD_RELOC_CRIS_32_GOT",
43798 + "BFD_RELOC_CRIS_16_GOT",
43799 + "BFD_RELOC_CRIS_32_GOTPLT",
43800 + "BFD_RELOC_CRIS_16_GOTPLT",
43801 + "BFD_RELOC_CRIS_32_GOTREL",
43802 + "BFD_RELOC_CRIS_32_PLT_GOTREL",
43803 + "BFD_RELOC_CRIS_32_PLT_PCREL",
43804 + "BFD_RELOC_860_COPY",
43805 + "BFD_RELOC_860_GLOB_DAT",
43806 + "BFD_RELOC_860_JUMP_SLOT",
43807 + "BFD_RELOC_860_RELATIVE",
43808 + "BFD_RELOC_860_PC26",
43809 + "BFD_RELOC_860_PLT26",
43810 + "BFD_RELOC_860_PC16",
43811 + "BFD_RELOC_860_LOW0",
43812 + "BFD_RELOC_860_SPLIT0",
43813 + "BFD_RELOC_860_LOW1",
43814 + "BFD_RELOC_860_SPLIT1",
43815 + "BFD_RELOC_860_LOW2",
43816 + "BFD_RELOC_860_SPLIT2",
43817 + "BFD_RELOC_860_LOW3",
43818 + "BFD_RELOC_860_LOGOT0",
43819 + "BFD_RELOC_860_SPGOT0",
43820 + "BFD_RELOC_860_LOGOT1",
43821 + "BFD_RELOC_860_SPGOT1",
43822 + "BFD_RELOC_860_LOGOTOFF0",
43823 + "BFD_RELOC_860_SPGOTOFF0",
43824 + "BFD_RELOC_860_LOGOTOFF1",
43825 + "BFD_RELOC_860_SPGOTOFF1",
43826 + "BFD_RELOC_860_LOGOTOFF2",
43827 + "BFD_RELOC_860_LOGOTOFF3",
43828 + "BFD_RELOC_860_LOPC",
43829 + "BFD_RELOC_860_HIGHADJ",
43830 + "BFD_RELOC_860_HAGOT",
43831 + "BFD_RELOC_860_HAGOTOFF",
43832 + "BFD_RELOC_860_HAPC",
43833 + "BFD_RELOC_860_HIGH",
43834 + "BFD_RELOC_860_HIGOT",
43835 + "BFD_RELOC_860_HIGOTOFF",
43836 + "BFD_RELOC_OPENRISC_ABS_26",
43837 + "BFD_RELOC_OPENRISC_REL_26",
43838 + "BFD_RELOC_H8_DIR16A8",
43839 + "BFD_RELOC_H8_DIR16R8",
43840 + "BFD_RELOC_H8_DIR24A8",
43841 + "BFD_RELOC_H8_DIR24R8",
43842 + "BFD_RELOC_H8_DIR32A16",
43843 + "BFD_RELOC_XSTORMY16_REL_12",
43844 + "BFD_RELOC_XSTORMY16_12",
43845 + "BFD_RELOC_XSTORMY16_24",
43846 + "BFD_RELOC_XSTORMY16_FPTR16",
43847 + "BFD_RELOC_RELC",
43848 +
43849 + "BFD_RELOC_XC16X_PAG",
43850 + "BFD_RELOC_XC16X_POF",
43851 + "BFD_RELOC_XC16X_SEG",
43852 + "BFD_RELOC_XC16X_SOF",
43853 + "BFD_RELOC_VAX_GLOB_DAT",
43854 + "BFD_RELOC_VAX_JMP_SLOT",
43855 + "BFD_RELOC_VAX_RELATIVE",
43856 + "BFD_RELOC_MT_PC16",
43857 + "BFD_RELOC_MT_HI16",
43858 + "BFD_RELOC_MT_LO16",
43859 + "BFD_RELOC_MT_GNU_VTINHERIT",
43860 + "BFD_RELOC_MT_GNU_VTENTRY",
43861 + "BFD_RELOC_MT_PCINSN8",
43862 + "BFD_RELOC_MSP430_10_PCREL",
43863 + "BFD_RELOC_MSP430_16_PCREL",
43864 + "BFD_RELOC_MSP430_16",
43865 + "BFD_RELOC_MSP430_16_PCREL_BYTE",
43866 + "BFD_RELOC_MSP430_16_BYTE",
43867 + "BFD_RELOC_MSP430_2X_PCREL",
43868 + "BFD_RELOC_MSP430_RL_PCREL",
43869 + "BFD_RELOC_IQ2000_OFFSET_16",
43870 + "BFD_RELOC_IQ2000_OFFSET_21",
43871 + "BFD_RELOC_IQ2000_UHI16",
43872 + "BFD_RELOC_XTENSA_RTLD",
43873 + "BFD_RELOC_XTENSA_GLOB_DAT",
43874 + "BFD_RELOC_XTENSA_JMP_SLOT",
43875 + "BFD_RELOC_XTENSA_RELATIVE",
43876 + "BFD_RELOC_XTENSA_PLT",
43877 + "BFD_RELOC_XTENSA_DIFF8",
43878 + "BFD_RELOC_XTENSA_DIFF16",
43879 + "BFD_RELOC_XTENSA_DIFF32",
43880 + "BFD_RELOC_XTENSA_SLOT0_OP",
43881 + "BFD_RELOC_XTENSA_SLOT1_OP",
43882 + "BFD_RELOC_XTENSA_SLOT2_OP",
43883 + "BFD_RELOC_XTENSA_SLOT3_OP",
43884 + "BFD_RELOC_XTENSA_SLOT4_OP",
43885 + "BFD_RELOC_XTENSA_SLOT5_OP",
43886 + "BFD_RELOC_XTENSA_SLOT6_OP",
43887 + "BFD_RELOC_XTENSA_SLOT7_OP",
43888 + "BFD_RELOC_XTENSA_SLOT8_OP",
43889 + "BFD_RELOC_XTENSA_SLOT9_OP",
43890 + "BFD_RELOC_XTENSA_SLOT10_OP",
43891 + "BFD_RELOC_XTENSA_SLOT11_OP",
43892 + "BFD_RELOC_XTENSA_SLOT12_OP",
43893 + "BFD_RELOC_XTENSA_SLOT13_OP",
43894 + "BFD_RELOC_XTENSA_SLOT14_OP",
43895 + "BFD_RELOC_XTENSA_SLOT0_ALT",
43896 + "BFD_RELOC_XTENSA_SLOT1_ALT",
43897 + "BFD_RELOC_XTENSA_SLOT2_ALT",
43898 + "BFD_RELOC_XTENSA_SLOT3_ALT",
43899 + "BFD_RELOC_XTENSA_SLOT4_ALT",
43900 + "BFD_RELOC_XTENSA_SLOT5_ALT",
43901 + "BFD_RELOC_XTENSA_SLOT6_ALT",
43902 + "BFD_RELOC_XTENSA_SLOT7_ALT",
43903 + "BFD_RELOC_XTENSA_SLOT8_ALT",
43904 + "BFD_RELOC_XTENSA_SLOT9_ALT",
43905 + "BFD_RELOC_XTENSA_SLOT10_ALT",
43906 + "BFD_RELOC_XTENSA_SLOT11_ALT",
43907 + "BFD_RELOC_XTENSA_SLOT12_ALT",
43908 + "BFD_RELOC_XTENSA_SLOT13_ALT",
43909 + "BFD_RELOC_XTENSA_SLOT14_ALT",
43910 + "BFD_RELOC_XTENSA_OP0",
43911 + "BFD_RELOC_XTENSA_OP1",
43912 + "BFD_RELOC_XTENSA_OP2",
43913 + "BFD_RELOC_XTENSA_ASM_EXPAND",
43914 + "BFD_RELOC_XTENSA_ASM_SIMPLIFY",
43915 + "BFD_RELOC_Z80_DISP8",
43916 + "BFD_RELOC_Z8K_DISP7",
43917 + "BFD_RELOC_Z8K_CALLR",
43918 + "BFD_RELOC_Z8K_IMM4L",
43919 + "@@overflow: BFD_RELOC_UNUSED@@",
43920 +};
43921 +#endif
43922 +
43923 +reloc_howto_type *bfd_default_reloc_type_lookup
43924 + (bfd *abfd, bfd_reloc_code_real_type code);
43925 +
43926 +bfd_boolean bfd_generic_relax_section
43927 + (bfd *abfd,
43928 + asection *section,
43929 + struct bfd_link_info *,
43930 + bfd_boolean *);
43931 +
43932 +bfd_boolean bfd_generic_gc_sections
43933 + (bfd *, struct bfd_link_info *);
43934 +
43935 +bfd_boolean bfd_generic_merge_sections
43936 + (bfd *, struct bfd_link_info *);
43937 +
43938 +bfd_byte *bfd_generic_get_relocated_section_contents
43939 + (bfd *abfd,
43940 + struct bfd_link_info *link_info,
43941 + struct bfd_link_order *link_order,
43942 + bfd_byte *data,
43943 + bfd_boolean relocatable,
43944 + asymbol **symbols);
43945 +
43946 +/* Extracted from archures.c. */
43947 +extern const bfd_arch_info_type bfd_default_arch_struct;
43948 +bfd_boolean bfd_default_set_arch_mach
43949 + (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
43950 +
43951 +const bfd_arch_info_type *bfd_default_compatible
43952 + (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
43953 +
43954 +bfd_boolean bfd_default_scan
43955 + (const struct bfd_arch_info *info, const char *string);
43956 +
43957 +/* Extracted from elf.c. */
43958 +struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
43959 +
43960 Index: binutils-2.18/bfd/doc/libcoff.h
43961 ===================================================================
43962 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
43963 +++ binutils-2.18/bfd/doc/libcoff.h 2008-11-25 15:25:40.000000000 +0100
43964 @@ -0,0 +1,936 @@
43965 +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
43966 + generated from "libcoff-in.h" and "coffcode.h".
43967 + Run "make headers" in your build bfd/ to regenerate. */
43968 +
43969 +/* BFD COFF object file private structure.
43970 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
43971 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
43972 + Free Software Foundation, Inc.
43973 + Written by Cygnus Support.
43974 +
43975 + This file is part of BFD, the Binary File Descriptor library.
43976 +
43977 + This program is free software; you can redistribute it and/or modify
43978 + it under the terms of the GNU General Public License as published by
43979 + the Free Software Foundation; either version 3 of the License, or
43980 + (at your option) any later version.
43981 +
43982 + This program is distributed in the hope that it will be useful,
43983 + but WITHOUT ANY WARRANTY; without even the implied warranty of
43984 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
43985 + GNU General Public License for more details.
43986 +
43987 + You should have received a copy of the GNU General Public License
43988 + along with this program; if not, write to the Free Software
43989 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
43990 + MA 02110-1301, USA. */
43991 +
43992 +#include "bfdlink.h"
43993 +
43994 +/* Object file tdata; access macros. */
43995 +
43996 +#define coff_data(bfd) ((bfd)->tdata.coff_obj_data)
43997 +#define exec_hdr(bfd) (coff_data (bfd)->hdr)
43998 +#define obj_pe(bfd) (coff_data (bfd)->pe)
43999 +#define obj_symbols(bfd) (coff_data (bfd)->symbols)
44000 +#define obj_sym_filepos(bfd) (coff_data (bfd)->sym_filepos)
44001 +#define obj_relocbase(bfd) (coff_data (bfd)->relocbase)
44002 +#define obj_raw_syments(bfd) (coff_data (bfd)->raw_syments)
44003 +#define obj_raw_syment_count(bfd) (coff_data (bfd)->raw_syment_count)
44004 +#define obj_convert(bfd) (coff_data (bfd)->conversion_table)
44005 +#define obj_conv_table_size(bfd) (coff_data (bfd)->conv_table_size)
44006 +#define obj_coff_external_syms(bfd) (coff_data (bfd)->external_syms)
44007 +#define obj_coff_keep_syms(bfd) (coff_data (bfd)->keep_syms)
44008 +#define obj_coff_strings(bfd) (coff_data (bfd)->strings)
44009 +#define obj_coff_keep_strings(bfd) (coff_data (bfd)->keep_strings)
44010 +#define obj_coff_sym_hashes(bfd) (coff_data (bfd)->sym_hashes)
44011 +#define obj_coff_strings_written(bfd) (coff_data (bfd)->strings_written)
44012 +#define obj_coff_local_toc_table(bfd) (coff_data (bfd)->local_toc_sym_map)
44013 +
44014 +/* `Tdata' information kept for COFF files. */
44015 +
44016 +typedef struct coff_tdata
44017 +{
44018 + struct coff_symbol_struct *symbols; /* Symtab for input bfd. */
44019 + unsigned int *conversion_table;
44020 + int conv_table_size;
44021 + file_ptr sym_filepos;
44022 +
44023 + struct coff_ptr_struct *raw_syments;
44024 + unsigned long raw_syment_count;
44025 +
44026 + /* These are only valid once writing has begun. */
44027 + long int relocbase;
44028 +
44029 + /* These members communicate important constants about the symbol table
44030 + to GDB's symbol-reading code. These `constants' unfortunately vary
44031 + from coff implementation to implementation... */
44032 + unsigned local_n_btmask;
44033 + unsigned local_n_btshft;
44034 + unsigned local_n_tmask;
44035 + unsigned local_n_tshift;
44036 + unsigned local_symesz;
44037 + unsigned local_auxesz;
44038 + unsigned local_linesz;
44039 +
44040 + /* The unswapped external symbols. May be NULL. Read by
44041 + _bfd_coff_get_external_symbols. */
44042 + void * external_syms;
44043 + /* If this is TRUE, the external_syms may not be freed. */
44044 + bfd_boolean keep_syms;
44045 +
44046 + /* The string table. May be NULL. Read by
44047 + _bfd_coff_read_string_table. */
44048 + char *strings;
44049 + /* If this is TRUE, the strings may not be freed. */
44050 + bfd_boolean keep_strings;
44051 + /* If this is TRUE, the strings have been written out already. */
44052 + bfd_boolean strings_written;
44053 +
44054 + /* Is this a PE format coff file? */
44055 + int pe;
44056 + /* Used by the COFF backend linker. */
44057 + struct coff_link_hash_entry **sym_hashes;
44058 +
44059 + /* Used by the pe linker for PowerPC. */
44060 + int *local_toc_sym_map;
44061 +
44062 + struct bfd_link_info *link_info;
44063 +
44064 + /* Used by coff_find_nearest_line. */
44065 + void * line_info;
44066 +
44067 + /* A place to stash dwarf2 info for this bfd. */
44068 + void * dwarf2_find_line_info;
44069 +
44070 + /* The timestamp from the COFF file header. */
44071 + long timestamp;
44072 +
44073 + /* Copy of some of the f_flags bits in the COFF filehdr structure,
44074 + used by ARM code. */
44075 + flagword flags;
44076 +
44077 +} coff_data_type;
44078 +
44079 +/* Tdata for pe image files. */
44080 +typedef struct pe_tdata
44081 +{
44082 + coff_data_type coff;
44083 + struct internal_extra_pe_aouthdr pe_opthdr;
44084 + int dll;
44085 + int has_reloc_section;
44086 + bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
44087 + flagword real_flags;
44088 + int target_subsystem;
44089 + bfd_boolean force_minimum_alignment;
44090 +} pe_data_type;
44091 +
44092 +#define pe_data(bfd) ((bfd)->tdata.pe_obj_data)
44093 +
44094 +/* Tdata for XCOFF files. */
44095 +
44096 +struct xcoff_tdata
44097 +{
44098 + /* Basic COFF information. */
44099 + coff_data_type coff;
44100 +
44101 + /* TRUE if this is an XCOFF64 file. */
44102 + bfd_boolean xcoff64;
44103 +
44104 + /* TRUE if a large a.out header should be generated. */
44105 + bfd_boolean full_aouthdr;
44106 +
44107 + /* TOC value. */
44108 + bfd_vma toc;
44109 +
44110 + /* Index of section holding TOC. */
44111 + int sntoc;
44112 +
44113 + /* Index of section holding entry point. */
44114 + int snentry;
44115 +
44116 + /* .text alignment from optional header. */
44117 + int text_align_power;
44118 +
44119 + /* .data alignment from optional header. */
44120 + int data_align_power;
44121 +
44122 + /* modtype from optional header. */
44123 + short modtype;
44124 +
44125 + /* cputype from optional header. */
44126 + short cputype;
44127 +
44128 + /* maxdata from optional header. */
44129 + bfd_vma maxdata;
44130 +
44131 + /* maxstack from optional header. */
44132 + bfd_vma maxstack;
44133 +
44134 + /* Used by the XCOFF backend linker. */
44135 + asection **csects;
44136 + unsigned long *debug_indices;
44137 + unsigned int import_file_id;
44138 +};
44139 +
44140 +#define xcoff_data(abfd) ((abfd)->tdata.xcoff_obj_data)
44141 +
44142 +/* We take the address of the first element of an asymbol to ensure that the
44143 + macro is only ever applied to an asymbol. */
44144 +#define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
44145 +
44146 +/* The used_by_bfd field of a section may be set to a pointer to this
44147 + structure. */
44148 +
44149 +struct coff_section_tdata
44150 +{
44151 + /* The relocs, swapped into COFF internal form. This may be NULL. */
44152 + struct internal_reloc *relocs;
44153 + /* If this is TRUE, the relocs entry may not be freed. */
44154 + bfd_boolean keep_relocs;
44155 + /* The section contents. This may be NULL. */
44156 + bfd_byte *contents;
44157 + /* If this is TRUE, the contents entry may not be freed. */
44158 + bfd_boolean keep_contents;
44159 + /* Information cached by coff_find_nearest_line. */
44160 + bfd_vma offset;
44161 + unsigned int i;
44162 + const char *function;
44163 + /* Optional information about a COMDAT entry; NULL if not COMDAT. */
44164 + struct coff_comdat_info *comdat;
44165 + int line_base;
44166 + /* A pointer used for .stab linking optimizations. */
44167 + void * stab_info;
44168 + /* Available for individual backends. */
44169 + void * tdata;
44170 +};
44171 +
44172 +/* An accessor macro for the coff_section_tdata structure. */
44173 +#define coff_section_data(abfd, sec) \
44174 + ((struct coff_section_tdata *) (sec)->used_by_bfd)
44175 +
44176 +/* Tdata for sections in XCOFF files. This is used by the linker. */
44177 +
44178 +struct xcoff_section_tdata
44179 +{
44180 + /* Used for XCOFF csects created by the linker; points to the real
44181 + XCOFF section which contains this csect. */
44182 + asection *enclosing;
44183 + /* The lineno_count field for the enclosing section, because we are
44184 + going to clobber it there. */
44185 + unsigned int lineno_count;
44186 + /* The first and one past the last symbol indices for symbols used
44187 + by this csect. */
44188 + unsigned long first_symndx;
44189 + unsigned long last_symndx;
44190 +};
44191 +
44192 +/* An accessor macro the xcoff_section_tdata structure. */
44193 +#define xcoff_section_data(abfd, sec) \
44194 + ((struct xcoff_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
44195 +
44196 +/* Tdata for sections in PE files. */
44197 +
44198 +struct pei_section_tdata
44199 +{
44200 + /* The virtual size of the section. */
44201 + bfd_size_type virt_size;
44202 + /* The PE section flags. */
44203 + long pe_flags;
44204 +};
44205 +
44206 +/* An accessor macro for the pei_section_tdata structure. */
44207 +#define pei_section_data(abfd, sec) \
44208 + ((struct pei_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
44209 +
44210 +/* COFF linker hash table entries. */
44211 +
44212 +struct coff_link_hash_entry
44213 +{
44214 + struct bfd_link_hash_entry root;
44215 +
44216 + /* Symbol index in output file. Set to -1 initially. Set to -2 if
44217 + there is a reloc against this symbol. */
44218 + long indx;
44219 +
44220 + /* Symbol type. */
44221 + unsigned short type;
44222 +
44223 + /* Symbol class. */
44224 + unsigned char class;
44225 +
44226 + /* Number of auxiliary entries. */
44227 + char numaux;
44228 +
44229 + /* BFD to take auxiliary entries from. */
44230 + bfd *auxbfd;
44231 +
44232 + /* Pointer to array of auxiliary entries, if any. */
44233 + union internal_auxent *aux;
44234 +
44235 + /* Flag word; legal values follow. */
44236 + unsigned short coff_link_hash_flags;
44237 + /* Symbol is a PE section symbol. */
44238 +#define COFF_LINK_HASH_PE_SECTION_SYMBOL (01)
44239 +};
44240 +
44241 +/* COFF linker hash table. */
44242 +
44243 +struct coff_link_hash_table
44244 +{
44245 + struct bfd_link_hash_table root;
44246 + /* A pointer to information used to link stabs in sections. */
44247 + struct stab_info stab_info;
44248 +};
44249 +
44250 +/* Look up an entry in a COFF linker hash table. */
44251 +
44252 +#define coff_link_hash_lookup(table, string, create, copy, follow) \
44253 + ((struct coff_link_hash_entry *) \
44254 + bfd_link_hash_lookup (&(table)->root, (string), (create), \
44255 + (copy), (follow)))
44256 +
44257 +/* Traverse a COFF linker hash table. */
44258 +
44259 +#define coff_link_hash_traverse(table, func, info) \
44260 + (bfd_link_hash_traverse \
44261 + (&(table)->root, \
44262 + (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
44263 + (info)))
44264 +
44265 +/* Get the COFF linker hash table from a link_info structure. */
44266 +
44267 +#define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
44268 +
44269 +/* Functions in coffgen.c. */
44270 +extern const bfd_target *coff_object_p
44271 + (bfd *);
44272 +extern struct bfd_section *coff_section_from_bfd_index
44273 + (bfd *, int);
44274 +extern long coff_get_symtab_upper_bound
44275 + (bfd *);
44276 +extern long coff_canonicalize_symtab
44277 + (bfd *, asymbol **);
44278 +extern int coff_count_linenumbers
44279 + (bfd *);
44280 +extern struct coff_symbol_struct *coff_symbol_from
44281 + (bfd *, asymbol *);
44282 +extern bfd_boolean coff_renumber_symbols
44283 + (bfd *, int *);
44284 +extern void coff_mangle_symbols
44285 + (bfd *);
44286 +extern bfd_boolean coff_write_symbols
44287 + (bfd *);
44288 +extern bfd_boolean coff_write_linenumbers
44289 + (bfd *);
44290 +extern alent *coff_get_lineno
44291 + (bfd *, asymbol *);
44292 +extern asymbol *coff_section_symbol
44293 + (bfd *, char *);
44294 +extern bfd_boolean _bfd_coff_get_external_symbols
44295 + (bfd *);
44296 +extern const char *_bfd_coff_read_string_table
44297 + (bfd *);
44298 +extern bfd_boolean _bfd_coff_free_symbols
44299 + (bfd *);
44300 +extern struct coff_ptr_struct *coff_get_normalized_symtab
44301 + (bfd *);
44302 +extern long coff_get_reloc_upper_bound
44303 + (bfd *, sec_ptr);
44304 +extern asymbol *coff_make_empty_symbol
44305 + (bfd *);
44306 +extern void coff_print_symbol
44307 + (bfd *, void * filep, asymbol *, bfd_print_symbol_type);
44308 +extern void coff_get_symbol_info
44309 + (bfd *, asymbol *, symbol_info *ret);
44310 +extern bfd_boolean _bfd_coff_is_local_label_name
44311 + (bfd *, const char *);
44312 +extern asymbol *coff_bfd_make_debug_symbol
44313 + (bfd *, void *, unsigned long);
44314 +extern bfd_boolean coff_find_nearest_line
44315 + (bfd *, asection *, asymbol **, bfd_vma, const char **,
44316 + const char **, unsigned int *);
44317 +extern bfd_boolean coff_find_inliner_info
44318 + (bfd *, const char **, const char **, unsigned int *);
44319 +extern int coff_sizeof_headers
44320 + (bfd *, struct bfd_link_info *);
44321 +extern bfd_boolean bfd_coff_reloc16_relax_section
44322 + (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
44323 +extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents
44324 + (bfd *, struct bfd_link_info *, struct bfd_link_order *,
44325 + bfd_byte *, bfd_boolean, asymbol **);
44326 +extern bfd_vma bfd_coff_reloc16_get_value
44327 + (arelent *, struct bfd_link_info *, asection *);
44328 +extern void bfd_perform_slip
44329 + (bfd *, unsigned int, asection *, bfd_vma);
44330 +
44331 +/* Functions and types in cofflink.c. */
44332 +
44333 +#define STRING_SIZE_SIZE 4
44334 +
44335 +/* We use a hash table to merge identical enum, struct, and union
44336 + definitions in the linker. */
44337 +
44338 +/* Information we keep for a single element (an enum value, a
44339 + structure or union field) in the debug merge hash table. */
44340 +
44341 +struct coff_debug_merge_element
44342 +{
44343 + /* Next element. */
44344 + struct coff_debug_merge_element *next;
44345 +
44346 + /* Name. */
44347 + const char *name;
44348 +
44349 + /* Type. */
44350 + unsigned int type;
44351 +
44352 + /* Symbol index for complex type. */
44353 + long tagndx;
44354 +};
44355 +
44356 +/* A linked list of debug merge entries for a given name. */
44357 +
44358 +struct coff_debug_merge_type
44359 +{
44360 + /* Next type with the same name. */
44361 + struct coff_debug_merge_type *next;
44362 +
44363 + /* Class of type. */
44364 + int class;
44365 +
44366 + /* Symbol index where this type is defined. */
44367 + long indx;
44368 +
44369 + /* List of elements. */
44370 + struct coff_debug_merge_element *elements;
44371 +};
44372 +
44373 +/* Information we store in the debug merge hash table. */
44374 +
44375 +struct coff_debug_merge_hash_entry
44376 +{
44377 + struct bfd_hash_entry root;
44378 +
44379 + /* A list of types with this name. */
44380 + struct coff_debug_merge_type *types;
44381 +};
44382 +
44383 +/* The debug merge hash table. */
44384 +
44385 +struct coff_debug_merge_hash_table
44386 +{
44387 + struct bfd_hash_table root;
44388 +};
44389 +
44390 +/* Initialize a COFF debug merge hash table. */
44391 +
44392 +#define coff_debug_merge_hash_table_init(table) \
44393 + (bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \
44394 + sizeof (struct coff_debug_merge_hash_entry)))
44395 +
44396 +/* Free a COFF debug merge hash table. */
44397 +
44398 +#define coff_debug_merge_hash_table_free(table) \
44399 + (bfd_hash_table_free (&(table)->root))
44400 +
44401 +/* Look up an entry in a COFF debug merge hash table. */
44402 +
44403 +#define coff_debug_merge_hash_lookup(table, string, create, copy) \
44404 + ((struct coff_debug_merge_hash_entry *) \
44405 + bfd_hash_lookup (&(table)->root, (string), (create), (copy)))
44406 +
44407 +/* Information we keep for each section in the output file when doing
44408 + a relocatable link. */
44409 +
44410 +struct coff_link_section_info
44411 +{
44412 + /* The relocs to be output. */
44413 + struct internal_reloc *relocs;
44414 + /* For each reloc against a global symbol whose index was not known
44415 + when the reloc was handled, the global hash table entry. */
44416 + struct coff_link_hash_entry **rel_hashes;
44417 +};
44418 +
44419 +/* Information that we pass around while doing the final link step. */
44420 +
44421 +struct coff_final_link_info
44422 +{
44423 + /* General link information. */
44424 + struct bfd_link_info *info;
44425 + /* Output BFD. */
44426 + bfd *output_bfd;
44427 + /* Used to indicate failure in traversal routine. */
44428 + bfd_boolean failed;
44429 + /* If doing "task linking" set only during the time when we want the
44430 + global symbol writer to convert the storage class of defined global
44431 + symbols from global to static. */
44432 + bfd_boolean global_to_static;
44433 + /* Hash table for long symbol names. */
44434 + struct bfd_strtab_hash *strtab;
44435 + /* When doing a relocatable link, an array of information kept for
44436 + each output section, indexed by the target_index field. */
44437 + struct coff_link_section_info *section_info;
44438 + /* Symbol index of last C_FILE symbol (-1 if none). */
44439 + long last_file_index;
44440 + /* Contents of last C_FILE symbol. */
44441 + struct internal_syment last_file;
44442 + /* Symbol index of first aux entry of last .bf symbol with an empty
44443 + endndx field (-1 if none). */
44444 + long last_bf_index;
44445 + /* Contents of last_bf_index aux entry. */
44446 + union internal_auxent last_bf;
44447 + /* Hash table used to merge debug information. */
44448 + struct coff_debug_merge_hash_table debug_merge;
44449 + /* Buffer large enough to hold swapped symbols of any input file. */
44450 + struct internal_syment *internal_syms;
44451 + /* Buffer large enough to hold sections of symbols of any input file. */
44452 + asection **sec_ptrs;
44453 + /* Buffer large enough to hold output indices of symbols of any
44454 + input file. */
44455 + long *sym_indices;
44456 + /* Buffer large enough to hold output symbols for any input file. */
44457 + bfd_byte *outsyms;
44458 + /* Buffer large enough to hold external line numbers for any input
44459 + section. */
44460 + bfd_byte *linenos;
44461 + /* Buffer large enough to hold any input section. */
44462 + bfd_byte *contents;
44463 + /* Buffer large enough to hold external relocs of any input section. */
44464 + bfd_byte *external_relocs;
44465 + /* Buffer large enough to hold swapped relocs of any input section. */
44466 + struct internal_reloc *internal_relocs;
44467 +};
44468 +
44469 +/* Most COFF variants have no way to record the alignment of a
44470 + section. This struct is used to set a specific alignment based on
44471 + the name of the section. */
44472 +
44473 +struct coff_section_alignment_entry
44474 +{
44475 + /* The section name. */
44476 + const char *name;
44477 +
44478 + /* This is either (unsigned int) -1, indicating that the section
44479 + name must match exactly, or it is the number of letters which
44480 + must match at the start of the name. */
44481 + unsigned int comparison_length;
44482 +
44483 + /* These macros may be used to fill in the first two fields in a
44484 + structure initialization. */
44485 +#define COFF_SECTION_NAME_EXACT_MATCH(name) (name), ((unsigned int) -1)
44486 +#define COFF_SECTION_NAME_PARTIAL_MATCH(name) (name), (sizeof (name) - 1)
44487 +
44488 + /* Only use this entry if the default section alignment for this
44489 + target is at least that much (as a power of two). If this field
44490 + is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
44491 + unsigned int default_alignment_min;
44492 +
44493 + /* Only use this entry if the default section alignment for this
44494 + target is no greater than this (as a power of two). If this
44495 + field is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
44496 + unsigned int default_alignment_max;
44497 +
44498 +#define COFF_ALIGNMENT_FIELD_EMPTY ((unsigned int) -1)
44499 +
44500 + /* The desired alignment for this section (as a power of two). */
44501 + unsigned int alignment_power;
44502 +};
44503 +
44504 +extern struct bfd_hash_entry *_bfd_coff_link_hash_newfunc
44505 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
44506 +extern bfd_boolean _bfd_coff_link_hash_table_init
44507 + (struct coff_link_hash_table *, bfd *,
44508 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
44509 + struct bfd_hash_table *,
44510 + const char *),
44511 + unsigned int);
44512 +extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
44513 + (bfd *);
44514 +extern const char *_bfd_coff_internal_syment_name
44515 + (bfd *, const struct internal_syment *, char *);
44516 +extern bfd_boolean _bfd_coff_link_add_symbols
44517 + (bfd *, struct bfd_link_info *);
44518 +extern bfd_boolean _bfd_coff_final_link
44519 + (bfd *, struct bfd_link_info *);
44520 +extern struct internal_reloc *_bfd_coff_read_internal_relocs
44521 + (bfd *, asection *, bfd_boolean, bfd_byte *, bfd_boolean,
44522 + struct internal_reloc *);
44523 +extern bfd_boolean _bfd_coff_generic_relocate_section
44524 + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
44525 + struct internal_reloc *, struct internal_syment *, asection **);
44526 +extern struct bfd_hash_entry *_bfd_coff_debug_merge_hash_newfunc
44527 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
44528 +extern bfd_boolean _bfd_coff_write_global_sym
44529 + (struct coff_link_hash_entry *, void *);
44530 +extern bfd_boolean _bfd_coff_write_task_globals
44531 + (struct coff_link_hash_entry *, void *);
44532 +extern bfd_boolean _bfd_coff_link_input_bfd
44533 + (struct coff_final_link_info *, bfd *);
44534 +extern bfd_boolean _bfd_coff_reloc_link_order
44535 + (bfd *, struct coff_final_link_info *, asection *,
44536 + struct bfd_link_order *);
44537 +
44538 +
44539 +#define coff_get_section_contents_in_window \
44540 + _bfd_generic_get_section_contents_in_window
44541 +
44542 +/* Functions in xcofflink.c. */
44543 +
44544 +extern long _bfd_xcoff_get_dynamic_symtab_upper_bound
44545 + (bfd *);
44546 +extern long _bfd_xcoff_canonicalize_dynamic_symtab
44547 + (bfd *, asymbol **);
44548 +extern long _bfd_xcoff_get_dynamic_reloc_upper_bound
44549 + (bfd *);
44550 +extern long _bfd_xcoff_canonicalize_dynamic_reloc
44551 + (bfd *, arelent **, asymbol **);
44552 +extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create
44553 + (bfd *);
44554 +extern void _bfd_xcoff_bfd_link_hash_table_free
44555 + (struct bfd_link_hash_table *);
44556 +extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
44557 + (bfd *, struct bfd_link_info *);
44558 +extern bfd_boolean _bfd_xcoff_bfd_final_link
44559 + (bfd *, struct bfd_link_info *);
44560 +extern bfd_boolean _bfd_ppc_xcoff_relocate_section
44561 + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
44562 + struct internal_reloc *, struct internal_syment *, asection **);
44563 +
44564 +/* Functions in coff-ppc.c. FIXME: These are called be pe.em in the
44565 + linker, and so should start with bfd and be declared in bfd.h. */
44566 +
44567 +extern bfd_boolean ppc_allocate_toc_section
44568 + (struct bfd_link_info *);
44569 +extern bfd_boolean ppc_process_before_allocation
44570 + (bfd *, struct bfd_link_info *);
44571 +
44572 +/* Extracted from coffcode.h. */
44573 +typedef struct coff_ptr_struct
44574 +{
44575 + /* Remembers the offset from the first symbol in the file for
44576 + this symbol. Generated by coff_renumber_symbols. */
44577 + unsigned int offset;
44578 +
44579 + /* Should the value of this symbol be renumbered. Used for
44580 + XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */
44581 + unsigned int fix_value : 1;
44582 +
44583 + /* Should the tag field of this symbol be renumbered.
44584 + Created by coff_pointerize_aux. */
44585 + unsigned int fix_tag : 1;
44586 +
44587 + /* Should the endidx field of this symbol be renumbered.
44588 + Created by coff_pointerize_aux. */
44589 + unsigned int fix_end : 1;
44590 +
44591 + /* Should the x_csect.x_scnlen field be renumbered.
44592 + Created by coff_pointerize_aux. */
44593 + unsigned int fix_scnlen : 1;
44594 +
44595 + /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the
44596 + index into the line number entries. Set by coff_slurp_symbol_table. */
44597 + unsigned int fix_line : 1;
44598 +
44599 + /* The container for the symbol structure as read and translated
44600 + from the file. */
44601 + union
44602 + {
44603 + union internal_auxent auxent;
44604 + struct internal_syment syment;
44605 + } u;
44606 +} combined_entry_type;
44607 +
44608 +
44609 +/* Each canonical asymbol really looks like this: */
44610 +
44611 +typedef struct coff_symbol_struct
44612 +{
44613 + /* The actual symbol which the rest of BFD works with */
44614 + asymbol symbol;
44615 +
44616 + /* A pointer to the hidden information for this symbol */
44617 + combined_entry_type *native;
44618 +
44619 + /* A pointer to the linenumber information for this symbol */
44620 + struct lineno_cache_entry *lineno;
44621 +
44622 + /* Have the line numbers been relocated yet ? */
44623 + bfd_boolean done_lineno;
44624 +} coff_symbol_type;
44625 +/* COFF symbol classifications. */
44626 +
44627 +enum coff_symbol_classification
44628 +{
44629 + /* Global symbol. */
44630 + COFF_SYMBOL_GLOBAL,
44631 + /* Common symbol. */
44632 + COFF_SYMBOL_COMMON,
44633 + /* Undefined symbol. */
44634 + COFF_SYMBOL_UNDEFINED,
44635 + /* Local symbol. */
44636 + COFF_SYMBOL_LOCAL,
44637 + /* PE section symbol. */
44638 + COFF_SYMBOL_PE_SECTION
44639 +};
44640 +
44641 +typedef struct
44642 +{
44643 + void (*_bfd_coff_swap_aux_in)
44644 + (bfd *, void *, int, int, int, int, void *);
44645 +
44646 + void (*_bfd_coff_swap_sym_in)
44647 + (bfd *, void *, void *);
44648 +
44649 + void (*_bfd_coff_swap_lineno_in)
44650 + (bfd *, void *, void *);
44651 +
44652 + unsigned int (*_bfd_coff_swap_aux_out)
44653 + (bfd *, void *, int, int, int, int, void *);
44654 +
44655 + unsigned int (*_bfd_coff_swap_sym_out)
44656 + (bfd *, void *, void *);
44657 +
44658 + unsigned int (*_bfd_coff_swap_lineno_out)
44659 + (bfd *, void *, void *);
44660 +
44661 + unsigned int (*_bfd_coff_swap_reloc_out)
44662 + (bfd *, void *, void *);
44663 +
44664 + unsigned int (*_bfd_coff_swap_filehdr_out)
44665 + (bfd *, void *, void *);
44666 +
44667 + unsigned int (*_bfd_coff_swap_aouthdr_out)
44668 + (bfd *, void *, void *);
44669 +
44670 + unsigned int (*_bfd_coff_swap_scnhdr_out)
44671 + (bfd *, void *, void *);
44672 +
44673 + unsigned int _bfd_filhsz;
44674 + unsigned int _bfd_aoutsz;
44675 + unsigned int _bfd_scnhsz;
44676 + unsigned int _bfd_symesz;
44677 + unsigned int _bfd_auxesz;
44678 + unsigned int _bfd_relsz;
44679 + unsigned int _bfd_linesz;
44680 + unsigned int _bfd_filnmlen;
44681 + bfd_boolean _bfd_coff_long_filenames;
44682 + bfd_boolean _bfd_coff_long_section_names;
44683 + unsigned int _bfd_coff_default_section_alignment_power;
44684 + bfd_boolean _bfd_coff_force_symnames_in_strings;
44685 + unsigned int _bfd_coff_debug_string_prefix_length;
44686 +
44687 + void (*_bfd_coff_swap_filehdr_in)
44688 + (bfd *, void *, void *);
44689 +
44690 + void (*_bfd_coff_swap_aouthdr_in)
44691 + (bfd *, void *, void *);
44692 +
44693 + void (*_bfd_coff_swap_scnhdr_in)
44694 + (bfd *, void *, void *);
44695 +
44696 + void (*_bfd_coff_swap_reloc_in)
44697 + (bfd *abfd, void *, void *);
44698 +
44699 + bfd_boolean (*_bfd_coff_bad_format_hook)
44700 + (bfd *, void *);
44701 +
44702 + bfd_boolean (*_bfd_coff_set_arch_mach_hook)
44703 + (bfd *, void *);
44704 +
44705 + void * (*_bfd_coff_mkobject_hook)
44706 + (bfd *, void *, void *);
44707 +
44708 + bfd_boolean (*_bfd_styp_to_sec_flags_hook)
44709 + (bfd *, void *, const char *, asection *, flagword *);
44710 +
44711 + void (*_bfd_set_alignment_hook)
44712 + (bfd *, asection *, void *);
44713 +
44714 + bfd_boolean (*_bfd_coff_slurp_symbol_table)
44715 + (bfd *);
44716 +
44717 + bfd_boolean (*_bfd_coff_symname_in_debug)
44718 + (bfd *, struct internal_syment *);
44719 +
44720 + bfd_boolean (*_bfd_coff_pointerize_aux_hook)
44721 + (bfd *, combined_entry_type *, combined_entry_type *,
44722 + unsigned int, combined_entry_type *);
44723 +
44724 + bfd_boolean (*_bfd_coff_print_aux)
44725 + (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
44726 + combined_entry_type *, unsigned int);
44727 +
44728 + void (*_bfd_coff_reloc16_extra_cases)
44729 + (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
44730 + bfd_byte *, unsigned int *, unsigned int *);
44731 +
44732 + int (*_bfd_coff_reloc16_estimate)
44733 + (bfd *, asection *, arelent *, unsigned int,
44734 + struct bfd_link_info *);
44735 +
44736 + enum coff_symbol_classification (*_bfd_coff_classify_symbol)
44737 + (bfd *, struct internal_syment *);
44738 +
44739 + bfd_boolean (*_bfd_coff_compute_section_file_positions)
44740 + (bfd *);
44741 +
44742 + bfd_boolean (*_bfd_coff_start_final_link)
44743 + (bfd *, struct bfd_link_info *);
44744 +
44745 + bfd_boolean (*_bfd_coff_relocate_section)
44746 + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
44747 + struct internal_reloc *, struct internal_syment *, asection **);
44748 +
44749 + reloc_howto_type *(*_bfd_coff_rtype_to_howto)
44750 + (bfd *, asection *, struct internal_reloc *,
44751 + struct coff_link_hash_entry *, struct internal_syment *,
44752 + bfd_vma *);
44753 +
44754 + bfd_boolean (*_bfd_coff_adjust_symndx)
44755 + (bfd *, struct bfd_link_info *, bfd *, asection *,
44756 + struct internal_reloc *, bfd_boolean *);
44757 +
44758 + bfd_boolean (*_bfd_coff_link_add_one_symbol)
44759 + (struct bfd_link_info *, bfd *, const char *, flagword,
44760 + asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
44761 + struct bfd_link_hash_entry **);
44762 +
44763 + bfd_boolean (*_bfd_coff_link_output_has_begun)
44764 + (bfd *, struct coff_final_link_info *);
44765 +
44766 + bfd_boolean (*_bfd_coff_final_link_postscript)
44767 + (bfd *, struct coff_final_link_info *);
44768 +
44769 +} bfd_coff_backend_data;
44770 +
44771 +#define coff_backend_info(abfd) \
44772 + ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
44773 +
44774 +#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
44775 + ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
44776 +
44777 +#define bfd_coff_swap_sym_in(a,e,i) \
44778 + ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
44779 +
44780 +#define bfd_coff_swap_lineno_in(a,e,i) \
44781 + ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
44782 +
44783 +#define bfd_coff_swap_reloc_out(abfd, i, o) \
44784 + ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
44785 +
44786 +#define bfd_coff_swap_lineno_out(abfd, i, o) \
44787 + ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
44788 +
44789 +#define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
44790 + ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
44791 +
44792 +#define bfd_coff_swap_sym_out(abfd, i,o) \
44793 + ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
44794 +
44795 +#define bfd_coff_swap_scnhdr_out(abfd, i,o) \
44796 + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
44797 +
44798 +#define bfd_coff_swap_filehdr_out(abfd, i,o) \
44799 + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
44800 +
44801 +#define bfd_coff_swap_aouthdr_out(abfd, i,o) \
44802 + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
44803 +
44804 +#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
44805 +#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
44806 +#define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
44807 +#define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
44808 +#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
44809 +#define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz)
44810 +#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
44811 +#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
44812 +#define bfd_coff_long_filenames(abfd) \
44813 + (coff_backend_info (abfd)->_bfd_coff_long_filenames)
44814 +#define bfd_coff_long_section_names(abfd) \
44815 + (coff_backend_info (abfd)->_bfd_coff_long_section_names)
44816 +#define bfd_coff_default_section_alignment_power(abfd) \
44817 + (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
44818 +#define bfd_coff_swap_filehdr_in(abfd, i,o) \
44819 + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
44820 +
44821 +#define bfd_coff_swap_aouthdr_in(abfd, i,o) \
44822 + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
44823 +
44824 +#define bfd_coff_swap_scnhdr_in(abfd, i,o) \
44825 + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
44826 +
44827 +#define bfd_coff_swap_reloc_in(abfd, i, o) \
44828 + ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
44829 +
44830 +#define bfd_coff_bad_format_hook(abfd, filehdr) \
44831 + ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
44832 +
44833 +#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
44834 + ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
44835 +#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
44836 + ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
44837 + (abfd, filehdr, aouthdr))
44838 +
44839 +#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
44840 + ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
44841 + (abfd, scnhdr, name, section, flags_ptr))
44842 +
44843 +#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
44844 + ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
44845 +
44846 +#define bfd_coff_slurp_symbol_table(abfd)\
44847 + ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
44848 +
44849 +#define bfd_coff_symname_in_debug(abfd, sym)\
44850 + ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
44851 +
44852 +#define bfd_coff_force_symnames_in_strings(abfd)\
44853 + (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
44854 +
44855 +#define bfd_coff_debug_string_prefix_length(abfd)\
44856 + (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
44857 +
44858 +#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
44859 + ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
44860 + (abfd, file, base, symbol, aux, indaux))
44861 +
44862 +#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
44863 + reloc, data, src_ptr, dst_ptr)\
44864 + ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
44865 + (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
44866 +
44867 +#define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
44868 + ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
44869 + (abfd, section, reloc, shrink, link_info))
44870 +
44871 +#define bfd_coff_classify_symbol(abfd, sym)\
44872 + ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
44873 + (abfd, sym))
44874 +
44875 +#define bfd_coff_compute_section_file_positions(abfd)\
44876 + ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
44877 + (abfd))
44878 +
44879 +#define bfd_coff_start_final_link(obfd, info)\
44880 + ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
44881 + (obfd, info))
44882 +#define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
44883 + ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
44884 + (obfd, info, ibfd, o, con, rel, isyms, secs))
44885 +#define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
44886 + ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
44887 + (abfd, sec, rel, h, sym, addendp))
44888 +#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
44889 + ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
44890 + (obfd, info, ibfd, sec, rel, adjustedp))
44891 +#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
44892 + value, string, cp, coll, hashp)\
44893 + ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
44894 + (info, abfd, name, flags, section, value, string, cp, coll, hashp))
44895 +
44896 +#define bfd_coff_link_output_has_begun(a,p) \
44897 + ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
44898 +#define bfd_coff_final_link_postscript(a,p) \
44899 + ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
44900 +
44901 Index: binutils-2.18/bfd/libbfd.h
44902 ===================================================================
44903 --- binutils-2.18.orig/bfd/libbfd.h 2008-11-25 15:24:48.000000000 +0100
44904 +++ binutils-2.18/bfd/libbfd.h 2008-11-25 15:25:40.000000000 +0100
44905 @@ -1601,6 +1601,48 @@
44906 "BFD_RELOC_AVR_LDI",
44907 "BFD_RELOC_AVR_6",
44908 "BFD_RELOC_AVR_6_ADIW",
44909 + "BFD_RELOC_AVR32_DIFF32",
44910 + "BFD_RELOC_AVR32_DIFF16",
44911 + "BFD_RELOC_AVR32_DIFF8",
44912 + "BFD_RELOC_AVR32_GOT32",
44913 + "BFD_RELOC_AVR32_GOT16",
44914 + "BFD_RELOC_AVR32_GOT8",
44915 + "BFD_RELOC_AVR32_21S",
44916 + "BFD_RELOC_AVR32_16U",
44917 + "BFD_RELOC_AVR32_16S",
44918 + "BFD_RELOC_AVR32_SUB5",
44919 + "BFD_RELOC_AVR32_8S_EXT",
44920 + "BFD_RELOC_AVR32_8S",
44921 + "BFD_RELOC_AVR32_15S",
44922 + "BFD_RELOC_AVR32_22H_PCREL",
44923 + "BFD_RELOC_AVR32_18W_PCREL",
44924 + "BFD_RELOC_AVR32_16B_PCREL",
44925 + "BFD_RELOC_AVR32_16N_PCREL",
44926 + "BFD_RELOC_AVR32_14UW_PCREL",
44927 + "BFD_RELOC_AVR32_11H_PCREL",
44928 + "BFD_RELOC_AVR32_10UW_PCREL",
44929 + "BFD_RELOC_AVR32_9H_PCREL",
44930 + "BFD_RELOC_AVR32_9UW_PCREL",
44931 + "BFD_RELOC_AVR32_GOTPC",
44932 + "BFD_RELOC_AVR32_GOTCALL",
44933 + "BFD_RELOC_AVR32_LDA_GOT",
44934 + "BFD_RELOC_AVR32_GOT21S",
44935 + "BFD_RELOC_AVR32_GOT18SW",
44936 + "BFD_RELOC_AVR32_GOT16S",
44937 + "BFD_RELOC_AVR32_32_CPENT",
44938 + "BFD_RELOC_AVR32_CPCALL",
44939 + "BFD_RELOC_AVR32_16_CP",
44940 + "BFD_RELOC_AVR32_9W_CP",
44941 + "BFD_RELOC_AVR32_ALIGN",
44942 + "BFD_RELOC_AVR32_14UW",
44943 + "BFD_RELOC_AVR32_10UW",
44944 + "BFD_RELOC_AVR32_10SW",
44945 + "BFD_RELOC_AVR32_STHH_W",
44946 + "BFD_RELOC_AVR32_7UW",
44947 + "BFD_RELOC_AVR32_6S",
44948 + "BFD_RELOC_AVR32_6UW",
44949 + "BFD_RELOC_AVR32_4UH",
44950 + "BFD_RELOC_AVR32_3U",
44951 "BFD_RELOC_390_12",
44952 "BFD_RELOC_390_GOT12",
44953 "BFD_RELOC_390_PLT32",
44954 Index: binutils-2.18/bfd/libtool
44955 ===================================================================
44956 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
44957 +++ binutils-2.18/bfd/libtool 2008-11-25 15:25:40.000000000 +0100
44958 @@ -0,0 +1,7871 @@
44959 +#! /bin/bash
44960 +
44961 +# libtool - Provide generalized library-building support services.
44962 +# Generated automatically by config.status (bfd) 2.18
44963 +# Libtool was configured on host hcegtvedt:
44964 +# NOTE: Changes made to this file will be lost: look at ltmain.sh.
44965 +#
44966 +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
44967 +# 2006, 2007, 2008 Free Software Foundation, Inc.
44968 +# Written by Gordon Matzigkeit, 1996
44969 +#
44970 +# This file is part of GNU Libtool.
44971 +#
44972 +# GNU Libtool is free software; you can redistribute it and/or
44973 +# modify it under the terms of the GNU General Public License as
44974 +# published by the Free Software Foundation; either version 2 of
44975 +# the License, or (at your option) any later version.
44976 +#
44977 +# As a special exception to the GNU General Public License,
44978 +# if you distribute this file as part of a program or library that
44979 +# is built using GNU Libtool, you may include this file under the
44980 +# same distribution terms that you use for the rest of that program.
44981 +#
44982 +# GNU Libtool is distributed in the hope that it will be useful,
44983 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
44984 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
44985 +# GNU General Public License for more details.
44986 +#
44987 +# You should have received a copy of the GNU General Public License
44988 +# along with GNU Libtool; see the file COPYING. If not, a copy
44989 +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
44990 +# obtained by writing to the Free Software Foundation, Inc.,
44991 +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
44992 +
44993 +
44994 +# The names of the tagged configurations supported by this script.
44995 +available_tags=""
44996 +
44997 +# ### BEGIN LIBTOOL CONFIG
44998 +
44999 +# Whether or not to build shared libraries.
45000 +build_libtool_libs=no
45001 +
45002 +# Which release of libtool.m4 was used?
45003 +macro_version=2.2.4
45004 +macro_revision=1.2976
45005 +
45006 +# Whether or not to build static libraries.
45007 +build_old_libs=yes
45008 +
45009 +# What type of objects to build.
45010 +pic_mode=default
45011 +
45012 +# Whether or not to optimize for fast installation.
45013 +fast_install=needless
45014 +
45015 +# The host system.
45016 +host_alias=i686-pc-linux-gnu
45017 +host=i686-pc-linux-gnu
45018 +host_os=linux-gnu
45019 +
45020 +# The build system.
45021 +build_alias=i686-pc-linux-gnu
45022 +build=i686-pc-linux-gnu
45023 +build_os=linux-gnu
45024 +
45025 +# A sed program that does not truncate output.
45026 +SED="/bin/sed"
45027 +
45028 +# Sed that helps us avoid accidentally triggering echo(1) options like -n.
45029 +Xsed="$SED -e 1s/^X//"
45030 +
45031 +# A grep program that handles long lines.
45032 +GREP="/bin/grep"
45033 +
45034 +# An ERE matcher.
45035 +EGREP="/bin/grep -E"
45036 +
45037 +# A literal string matcher.
45038 +FGREP="/bin/grep -F"
45039 +
45040 +# A BSD- or MS-compatible name lister.
45041 +NM="nm"
45042 +
45043 +# Whether we need soft or hard links.
45044 +LN_S="ln -s"
45045 +
45046 +# What is the maximum length of a command?
45047 +max_cmd_len=805306365
45048 +
45049 +# Object file suffix (normally "o").
45050 +objext=o
45051 +
45052 +# Executable file suffix (normally "").
45053 +exeext=
45054 +
45055 +# whether the shell understands "unset".
45056 +lt_unset=unset
45057 +
45058 +# turn spaces into newlines.
45059 +SP2NL="tr \\040 \\012"
45060 +
45061 +# turn newlines into spaces.
45062 +NL2SP="tr \\015\\012 \\040\\040"
45063 +
45064 +# How to create reloadable object files.
45065 +reload_flag=" -r"
45066 +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
45067 +
45068 +# Method to check whether dependent libraries are shared objects.
45069 +deplibs_check_method="pass_all"
45070 +
45071 +# Command to use when deplibs_check_method == "file_magic".
45072 +file_magic_cmd="\$MAGIC_CMD"
45073 +
45074 +# The archiver.
45075 +AR="ar"
45076 +AR_FLAGS="cru"
45077 +
45078 +# A symbol stripping program.
45079 +STRIP="strip"
45080 +
45081 +# Commands used to install an old-style archive.
45082 +RANLIB="ranlib"
45083 +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
45084 +old_postuninstall_cmds=""
45085 +
45086 +# A C compiler.
45087 +LTCC="gcc"
45088 +
45089 +# LTCC compiler flags.
45090 +LTCFLAGS="-g -O2"
45091 +
45092 +# Take the output of nm and produce a listing of raw symbols and C names.
45093 +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
45094 +
45095 +# Transform the output of nm in a proper C declaration.
45096 +global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
45097 +
45098 +# Transform the output of nm in a C name address pair.
45099 +global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'"
45100 +
45101 +# Transform the output of nm in a C name address pair when lib prefix is needed.
45102 +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'"
45103 +
45104 +# The name of the directory that contains temporary libtool files.
45105 +objdir=.libs
45106 +
45107 +# Shell to use when invoking shell scripts.
45108 +SHELL="/bin/bash"
45109 +
45110 +# An echo program that does not interpret backslashes.
45111 +ECHO="echo"
45112 +
45113 +# Used to examine libraries when file_magic_cmd begins with "file".
45114 +MAGIC_CMD=file
45115 +
45116 +# Must we lock files when doing compilation?
45117 +need_locks="no"
45118 +
45119 +# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
45120 +DSYMUTIL=""
45121 +
45122 +# Tool to change global to local symbols on Mac OS X.
45123 +NMEDIT=""
45124 +
45125 +# Tool to manipulate fat objects and archives on Mac OS X.
45126 +LIPO=""
45127 +
45128 +# ldd/readelf like tool for Mach-O binaries on Mac OS X.
45129 +OTOOL=""
45130 +
45131 +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
45132 +OTOOL64=""
45133 +
45134 +# Old archive suffix (normally "a").
45135 +libext=a
45136 +
45137 +# Shared library suffix (normally ".so").
45138 +shrext_cmds=".so"
45139 +
45140 +# The commands to extract the exported symbol list from a shared archive.
45141 +extract_expsyms_cmds=""
45142 +
45143 +# Variables whose values should be saved in libtool wrapper scripts and
45144 +# restored at link time.
45145 +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
45146 +
45147 +# Do we need the "lib" prefix for modules?
45148 +need_lib_prefix=no
45149 +
45150 +# Do we need a version for libraries?
45151 +need_version=no
45152 +
45153 +# Library versioning type.
45154 +version_type=linux
45155 +
45156 +# Shared library runtime path variable.
45157 +runpath_var=LD_RUN_PATH
45158 +
45159 +# Shared library path variable.
45160 +shlibpath_var=LD_LIBRARY_PATH
45161 +
45162 +# Is shlibpath searched before the hard-coded library search path?
45163 +shlibpath_overrides_runpath=no
45164 +
45165 +# Format of library name prefix.
45166 +libname_spec="lib\$name"
45167 +
45168 +# List of archive names. First name is the real one, the rest are links.
45169 +# The last name is the one that the linker finds with -lNAME
45170 +library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
45171 +
45172 +# The coded name of the library, if different from the real name.
45173 +soname_spec="\${libname}\${release}\${shared_ext}\$major"
45174 +
45175 +# Command to use after installation of a shared archive.
45176 +postinstall_cmds=""
45177 +
45178 +# Command to use after uninstallation of a shared archive.
45179 +postuninstall_cmds=""
45180 +
45181 +# Commands used to finish a libtool library installation in a directory.
45182 +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
45183 +
45184 +# As "finish_cmds", except a single script fragment to be evaled but
45185 +# not shown.
45186 +finish_eval=""
45187 +
45188 +# Whether we should hardcode library paths into libraries.
45189 +hardcode_into_libs=yes
45190 +
45191 +# Compile-time system search path for libraries.
45192 +sys_lib_search_path_spec="/usr/lib/gcc/i486-linux-gnu/4.2.4 /usr/lib /lib"
45193 +
45194 +# Run-time system search path for libraries.
45195 +sys_lib_dlsearch_path_spec="/lib /usr/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/lib/alsa-lib /usr/local/lib "
45196 +
45197 +# Whether dlopen is supported.
45198 +dlopen_support=unknown
45199 +
45200 +# Whether dlopen of programs is supported.
45201 +dlopen_self=unknown
45202 +
45203 +# Whether dlopen of statically linked programs is supported.
45204 +dlopen_self_static=unknown
45205 +
45206 +# Commands to strip libraries.
45207 +old_striplib="strip --strip-debug"
45208 +striplib="strip --strip-unneeded"
45209 +
45210 +
45211 +# The linker used to build libraries.
45212 +LD="ld"
45213 +
45214 +# Commands used to build an old-style archive.
45215 +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
45216 +
45217 +# A language specific compiler.
45218 +CC="gcc"
45219 +
45220 +# Is the compiler the GNU compiler?
45221 +with_gcc=yes
45222 +
45223 +# Compiler flag to turn off builtin functions.
45224 +no_builtin_flag=" -fno-builtin"
45225 +
45226 +# How to pass a linker flag through the compiler.
45227 +wl="-Wl,"
45228 +
45229 +# Additional compiler flags for building library objects.
45230 +pic_flag=" -fPIC -DPIC"
45231 +
45232 +# Compiler flag to prevent dynamic linking.
45233 +link_static_flag="-static"
45234 +
45235 +# Does compiler simultaneously support -c and -o options?
45236 +compiler_c_o="yes"
45237 +
45238 +# Whether or not to add -lc for building shared libraries.
45239 +build_libtool_need_lc=yes
45240 +
45241 +# Whether or not to disallow shared libs when runtime libs are static.
45242 +allow_libtool_libs_with_static_runtimes=no
45243 +
45244 +# Compiler flag to allow reflexive dlopens.
45245 +export_dynamic_flag_spec="\${wl}--export-dynamic"
45246 +
45247 +# Compiler flag to generate shared objects directly from archives.
45248 +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
45249 +
45250 +# Whether the compiler copes with passing no objects directly.
45251 +compiler_needs_object="no"
45252 +
45253 +# Create an old-style archive from a shared archive.
45254 +old_archive_from_new_cmds=""
45255 +
45256 +# Create a temporary old-style archive to link instead of a shared archive.
45257 +old_archive_from_expsyms_cmds=""
45258 +
45259 +# Commands used to build a shared archive.
45260 +archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
45261 +archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
45262 + cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
45263 + echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
45264 + \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
45265 +
45266 +# Commands used to build a loadable module if different from building
45267 +# a shared archive.
45268 +module_cmds=""
45269 +module_expsym_cmds=""
45270 +
45271 +# Whether we are building with GNU ld or not.
45272 +with_gnu_ld="yes"
45273 +
45274 +# Flag that allows shared libraries with undefined symbols to be built.
45275 +allow_undefined_flag=""
45276 +
45277 +# Flag that enforces no undefined symbols.
45278 +no_undefined_flag=""
45279 +
45280 +# Flag to hardcode $libdir into a binary during linking.
45281 +# This must work even if $libdir does not exist
45282 +hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
45283 +
45284 +# If ld is used when linking, flag to hardcode $libdir into a binary
45285 +# during linking. This must work even if $libdir does not exist.
45286 +hardcode_libdir_flag_spec_ld=""
45287 +
45288 +# Whether we need a single "-rpath" flag with a separated argument.
45289 +hardcode_libdir_separator=""
45290 +
45291 +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
45292 +# DIR into the resulting binary.
45293 +hardcode_direct=no
45294 +
45295 +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
45296 +# DIR into the resulting binary and the resulting library dependency is
45297 +# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
45298 +# library is relocated.
45299 +hardcode_direct_absolute=no
45300 +
45301 +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
45302 +# into the resulting binary.
45303 +hardcode_minus_L=no
45304 +
45305 +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
45306 +# into the resulting binary.
45307 +hardcode_shlibpath_var=unsupported
45308 +
45309 +# Set to "yes" if building a shared library automatically hardcodes DIR
45310 +# into the library and all subsequent libraries and executables linked
45311 +# against it.
45312 +hardcode_automatic=no
45313 +
45314 +# Set to yes if linker adds runtime paths of dependent libraries
45315 +# to runtime path list.
45316 +inherit_rpath=no
45317 +
45318 +# Whether libtool must link a program against all its dependency libraries.
45319 +link_all_deplibs=unknown
45320 +
45321 +# Fix the shell variable $srcfile for the compiler.
45322 +fix_srcfile_path=""
45323 +
45324 +# Set to "yes" if exported symbols are required.
45325 +always_export_symbols=no
45326 +
45327 +# The commands to list exported symbols.
45328 +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
45329 +
45330 +# Symbols that should not be listed in the preloaded symbols.
45331 +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
45332 +
45333 +# Symbols that must always be exported.
45334 +include_expsyms=""
45335 +
45336 +# Commands necessary for linking programs (against libraries) with templates.
45337 +prelink_cmds=""
45338 +
45339 +# Specify filename containing input files.
45340 +file_list_spec=""
45341 +
45342 +# How to hardcode a shared library path into an executable.
45343 +hardcode_action=immediate
45344 +
45345 +# ### END LIBTOOL CONFIG
45346 +
45347 +# Generated from ltmain.m4sh; do not edit by hand
45348 +
45349 +# ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
45350 +# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
45351 +
45352 +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
45353 +# This is free software; see the source for copying conditions. There is NO
45354 +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
45355 +
45356 +# This program is free software; you can redistribute it and/or modify
45357 +# it under the terms of the GNU General Public License as published by
45358 +# the Free Software Foundation; either version 2 of the License, or
45359 +# (at your option) any later version.
45360 +#
45361 +# This program is distributed in the hope that it will be useful, but
45362 +# WITHOUT ANY WARRANTY; without even the implied warranty of
45363 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
45364 +# General Public License for more details.
45365 +#
45366 +# You should have received a copy of the GNU General Public License
45367 +# along with this program; if not, write to the Free Software
45368 +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
45369 +#
45370 +# As a special exception to the GNU General Public License, if you
45371 +# distribute this file as part of a program that contains a
45372 +# configuration script generated by Autoconf, you may include it under
45373 +# the same distribution terms that you use for the rest of that program.
45374 +
45375 +# Usage: $progname [OPTION]... [MODE-ARG]...
45376 +#
45377 +# Provide generalized library-building support services.
45378 +#
45379 +# --config show all configuration variables
45380 +# --debug enable verbose shell tracing
45381 +# -n, --dry-run display commands without modifying any files
45382 +# --features display basic configuration information and exit
45383 +# --mode=MODE use operation mode MODE
45384 +# --preserve-dup-deps don't remove duplicate dependency libraries
45385 +# --quiet, --silent don't print informational messages
45386 +# --tag=TAG use configuration variables from tag TAG
45387 +# -v, --verbose print informational messages (default)
45388 +# --version print version information
45389 +# -h, --help print short or long help message
45390 +#
45391 +# MODE must be one of the following:
45392 +#
45393 +# clean remove files from the build directory
45394 +# compile compile a source file into a libtool object
45395 +# execute automatically set library path, then run a program
45396 +# finish complete the installation of libtool libraries
45397 +# install install libraries or executables
45398 +# link create a library or an executable
45399 +# uninstall remove libraries from an installed directory
45400 +#
45401 +# MODE-ARGS vary depending on the MODE.
45402 +# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
45403 +#
45404 +# When reporting a bug, please describe a test case to reproduce it and
45405 +# include the following information:
45406 +#
45407 +# host-triplet: $host
45408 +# shell: $SHELL
45409 +# compiler: $LTCC
45410 +# compiler flags: $LTCFLAGS
45411 +# linker: $LD (gnu? $with_gnu_ld)
45412 +# $progname: (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
45413 +# automake: $automake_version
45414 +# autoconf: $autoconf_version
45415 +#
45416 +# Report bugs to <bug-libtool@gnu.org>.
45417 +
45418 +PROGRAM=ltmain.sh
45419 +PACKAGE=libtool
45420 +VERSION=2.1a
45421 +TIMESTAMP=" 1.2435 2007/03/18 18:44:42"
45422 +package_revision=1.2435
45423 +
45424 +# Be Bourne compatible
45425 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
45426 + emulate sh
45427 + NULLCMD=:
45428 + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
45429 + # is contrary to our usage. Disable this feature.
45430 + alias -g '${1+"$@"}'='"$@"'
45431 + setopt NO_GLOB_SUBST
45432 +else
45433 + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
45434 +fi
45435 +BIN_SH=xpg4; export BIN_SH # for Tru64
45436 +DUALCASE=1; export DUALCASE # for MKS sh
45437 +
45438 +# NLS nuisances: We save the old values to restore during execute mode.
45439 +# Only set LANG and LC_ALL to C if already set.
45440 +# These must not be set unconditionally because not all systems understand
45441 +# e.g. LANG=C (notably SCO).
45442 +for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
45443 +do
45444 + eval "if test \"\${$lt_var+set}\" = set; then
45445 + save_$lt_var=\$$lt_var
45446 + $lt_var=C
45447 + export $lt_var
45448 + fi"
45449 +done
45450 +
45451 +$lt_unset CDPATH
45452 +
45453 +
45454 +
45455 +
45456 +
45457 +: ${CP="cp -f"}
45458 +: ${ECHO="echo"}
45459 +: ${EGREP="/bin/grep -E"}
45460 +: ${FGREP="/bin/grep -F"}
45461 +: ${GREP="/bin/grep"}
45462 +: ${LN_S="ln -s"}
45463 +: ${MAKE="make"}
45464 +: ${MKDIR="mkdir"}
45465 +: ${MV="mv -f"}
45466 +: ${RM="rm -f"}
45467 +: ${SED="/bin/sed"}
45468 +: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
45469 +: ${Xsed="$SED -e 1s/^X//"}
45470 +
45471 +# Global variables:
45472 +EXIT_SUCCESS=0
45473 +EXIT_FAILURE=1
45474 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
45475 +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
45476 +
45477 +exit_status=$EXIT_SUCCESS
45478 +
45479 +# Make sure IFS has a sensible default
45480 +lt_nl='
45481 +'
45482 +IFS=" $lt_nl"
45483 +
45484 +dirname="s,/[^/]*$,,"
45485 +basename="s,^.*/,,"
45486 +
45487 +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
45488 +# is ksh but when the shell is invoked as "sh" and the current value of
45489 +# the _XPG environment variable is not equal to 1 (one), the special
45490 +# positional parameter $0, within a function call, is the name of the
45491 +# function.
45492 +progpath="$0"
45493 +
45494 +# The name of this program:
45495 +# In the unlikely event $progname began with a '-', it would play havoc with
45496 +# func_echo (imagine progname=-n), so we prepend ./ in that case:
45497 +progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,./-,'`
45498 +
45499 +# Make sure we have an absolute path for reexecution:
45500 +case $progpath in
45501 + [\\/]*|[A-Za-z]:\\*) ;;
45502 + *[\\/]*)
45503 + progdir=`$ECHO "X$progpath" | $Xsed -e "$dirname"`
45504 + progdir=`cd "$progdir" && pwd`
45505 + progpath="$progdir/$progname"
45506 + ;;
45507 + *)
45508 + save_IFS="$IFS"
45509 + IFS=:
45510 + for progdir in $PATH; do
45511 + IFS="$save_IFS"
45512 + test -x "$progdir/$progname" && break
45513 + done
45514 + IFS="$save_IFS"
45515 + test -n "$progdir" || progdir=`pwd`
45516 + progpath="$progdir/$progname"
45517 + ;;
45518 +esac
45519 +
45520 +# Sed substitution that helps us do robust quoting. It backslashifies
45521 +# metacharacters that are still active within double-quoted strings.
45522 +Xsed="${SED}"' -e 1s/^X//'
45523 +sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
45524 +
45525 +# Same as above, but do not quote variable references.
45526 +double_quote_subst='s/\(["`\\]\)/\\\1/g'
45527 +
45528 +# Re-`\' parameter expansions in output of double_quote_subst that were
45529 +# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
45530 +# in input to double_quote_subst, that '$' was protected from expansion.
45531 +# Since each input `\' is now two `\'s, look for any number of runs of
45532 +# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
45533 +bs='\\'
45534 +bs2='\\\\'
45535 +bs4='\\\\\\\\'
45536 +dollar='\$'
45537 +sed_double_backslash="\
45538 + s/$bs4/&\\
45539 +/g
45540 + s/^$bs2$dollar/$bs&/
45541 + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
45542 + s/\n//g"
45543 +
45544 +# Standard options:
45545 +opt_dry_run=false
45546 +opt_help=false
45547 +opt_quiet=false
45548 +opt_verbose=false
45549 +
45550 +# func_echo arg...
45551 +# Echo program name prefixed message, along with the current mode
45552 +# name if it has been set yet.
45553 +func_echo ()
45554 +{
45555 + $ECHO "$progname${mode+: }$mode: "${1+"$@"}
45556 +}
45557 +
45558 +# func_verbose arg...
45559 +# Echo program name prefixed message in verbose mode only.
45560 +func_verbose ()
45561 +{
45562 + $opt_verbose && func_echo ${1+"$@"}
45563 +
45564 + # A bug in bash halts the script if the last line of a function
45565 + # fails when set -e is in force, so we need another command to
45566 + # work around that:
45567 + :
45568 +}
45569 +
45570 +# func_error arg...
45571 +# Echo program name prefixed message to standard error.
45572 +func_error ()
45573 +{
45574 + $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
45575 +}
45576 +
45577 +# func_warning arg...
45578 +# Echo program name prefixed warning message to standard error.
45579 +func_warning ()
45580 +{
45581 + $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
45582 +}
45583 +
45584 +# func_fatal_error arg...
45585 +# Echo program name prefixed message to standard error, and exit.
45586 +func_fatal_error ()
45587 +{
45588 + func_error ${1+"$@"}
45589 + exit $EXIT_FAILURE
45590 +}
45591 +
45592 +# func_fatal_help arg...
45593 +# Echo program name prefixed message to standard error, followed by
45594 +# a help hint, and exit.
45595 +func_fatal_help ()
45596 +{
45597 + func_error ${1+"$@"}
45598 + func_fatal_error "$help"
45599 +}
45600 +help="Try \`$progname --help' for more information." ## default
45601 +
45602 +
45603 +# func_grep expression filename
45604 +# Check whether EXPRESSION matches any line of FILENAME, without output.
45605 +func_grep ()
45606 +{
45607 + $GREP "$1" "$2" >/dev/null 2>&1
45608 +}
45609 +
45610 +
45611 +# func_mkdir_p directory-path
45612 +# Make sure the entire path to DIRECTORY-PATH is available.
45613 +func_mkdir_p ()
45614 +{
45615 + my_directory_path="$1"
45616 + my_dir_list=
45617 +
45618 + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
45619 +
45620 + # Protect directory names starting with `-'
45621 + case $my_directory_path in
45622 + -*) my_directory_path="./$my_directory_path" ;;
45623 + esac
45624 +
45625 + # While some portion of DIR does not yet exist...
45626 + while test ! -d "$my_directory_path"; do
45627 + # ...make a list in topmost first order. Use a colon delimited
45628 + # list incase some portion of path contains whitespace.
45629 + my_dir_list="$my_directory_path:$my_dir_list"
45630 +
45631 + # If the last portion added has no slash in it, the list is done
45632 + case $my_directory_path in */*) ;; *) break ;; esac
45633 +
45634 + # ...otherwise throw away the child directory and loop
45635 + my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
45636 + done
45637 + my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
45638 +
45639 + save_mkdir_p_IFS="$IFS"; IFS=':'
45640 + for my_dir in $my_dir_list; do
45641 + IFS="$save_mkdir_p_IFS"
45642 + # mkdir can fail with a `File exist' error if two processes
45643 + # try to create one of the directories concurrently. Don't
45644 + # stop in that case!
45645 + $MKDIR "$my_dir" 2>/dev/null || :
45646 + done
45647 + IFS="$save_mkdir_p_IFS"
45648 +
45649 + # Bail out if we (or some other process) failed to create a directory.
45650 + test -d "$my_directory_path" || \
45651 + func_fatal_error "Failed to create \`$1'"
45652 + fi
45653 +}
45654 +
45655 +
45656 +# func_mktempdir [string]
45657 +# Make a temporary directory that won't clash with other running
45658 +# libtool processes, and avoids race conditions if possible. If
45659 +# given, STRING is the basename for that directory.
45660 +func_mktempdir ()
45661 +{
45662 + my_template="${TMPDIR-/tmp}/${1-$progname}"
45663 +
45664 + if test "$opt_dry_run" = ":"; then
45665 + # Return a directory name, but don't create it in dry-run mode
45666 + my_tmpdir="${my_template}-$$"
45667 + else
45668 +
45669 + # If mktemp works, use that first and foremost
45670 + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
45671 +
45672 + if test ! -d "$my_tmpdir"; then
45673 + # Failing that, at least try and use $RANDOM to avoid a race
45674 + my_tmpdir="${my_template}-${RANDOM-0}$$"
45675 +
45676 + save_mktempdir_umask=`umask`
45677 + umask 0077
45678 + $MKDIR "$my_tmpdir"
45679 + umask $save_mktempdir_umask
45680 + fi
45681 +
45682 + # If we're not in dry-run mode, bomb out on failure
45683 + test -d "$my_tmpdir" || \
45684 + func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
45685 + fi
45686 +
45687 + $ECHO "X$my_tmpdir" | $Xsed
45688 +}
45689 +
45690 +
45691 +# func_quote_for_eval arg
45692 +# Aesthetically quote ARG to be evaled later.
45693 +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
45694 +# is double-quoted, suitable for a subsequent eval, whereas
45695 +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
45696 +# which are still active within double quotes backslashified.
45697 +func_quote_for_eval ()
45698 +{
45699 + case $1 in
45700 + *[\\\`\"\$]*)
45701 + func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
45702 + *)
45703 + func_quote_for_eval_unquoted_result="$1" ;;
45704 + esac
45705 +
45706 + case $func_quote_for_eval_unquoted_result in
45707 + # Double-quote args containing shell metacharacters to delay
45708 + # word splitting, command substitution and and variable
45709 + # expansion for a subsequent eval.
45710 + # Many Bourne shells cannot handle close brackets correctly
45711 + # in scan sets, so we specify it separately.
45712 + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
45713 + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
45714 + ;;
45715 + *)
45716 + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
45717 + esac
45718 +}
45719 +
45720 +
45721 +# func_quote_for_expand arg
45722 +# Aesthetically quote ARG to be evaled later; same as above,
45723 +# but do not quote variable references.
45724 +func_quote_for_expand ()
45725 +{
45726 + case $1 in
45727 + *[\\\`\"]*)
45728 + my_arg=`$ECHO "X$1" | $Xsed \
45729 + -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
45730 + *)
45731 + my_arg="$1" ;;
45732 + esac
45733 +
45734 + case $my_arg in
45735 + # Double-quote args containing shell metacharacters to delay
45736 + # word splitting and command substitution for a subsequent eval.
45737 + # Many Bourne shells cannot handle close brackets correctly
45738 + # in scan sets, so we specify it separately.
45739 + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
45740 + my_arg="\"$my_arg\""
45741 + ;;
45742 + esac
45743 +
45744 + func_quote_for_expand_result="$my_arg"
45745 +}
45746 +
45747 +
45748 +# func_show_eval cmd [fail_exp]
45749 +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
45750 +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
45751 +# is given, then evaluate it.
45752 +func_show_eval ()
45753 +{
45754 + my_cmd="$1"
45755 + my_fail_exp="${2-:}"
45756 +
45757 + ${opt_silent-false} || {
45758 + func_quote_for_expand "$my_cmd"
45759 + eval "func_echo $func_quote_for_expand_result"
45760 + }
45761 +
45762 + if ${opt_dry_run-false}; then :; else
45763 + eval "$my_cmd"
45764 + my_status=$?
45765 + if test "$my_status" -eq 0; then :; else
45766 + eval "(exit $my_status); $my_fail_exp"
45767 + fi
45768 + fi
45769 +}
45770 +
45771 +
45772 +
45773 +
45774 +
45775 +# func_version
45776 +# Echo version message to standard output and exit.
45777 +func_version ()
45778 +{
45779 + $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
45780 + s/^# //
45781 + s/^# *$//
45782 + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
45783 + p
45784 + }' < "$progpath"
45785 + exit $?
45786 +}
45787 +
45788 +# func_usage
45789 +# Echo short help message to standard output and exit.
45790 +func_usage ()
45791 +{
45792 + $SED -n '/^# Usage:/,/# -h/ {
45793 + s/^# //
45794 + s/^# *$//
45795 + s/\$progname/'$progname'/
45796 + p
45797 + }' < "$progpath"
45798 + $ECHO
45799 + $ECHO "run \`$progname --help | more' for full usage"
45800 + exit $?
45801 +}
45802 +
45803 +# func_help
45804 +# Echo long help message to standard output and exit.
45805 +func_help ()
45806 +{
45807 + $SED -n '/^# Usage:/,/# Report bugs to/ {
45808 + s/^# //
45809 + s/^# *$//
45810 + s*\$progname*'$progname'*
45811 + s*\$host*'"$host"'*
45812 + s*\$SHELL*'"$SHELL"'*
45813 + s*\$LTCC*'"$LTCC"'*
45814 + s*\$LTCFLAGS*'"$LTCFLAGS"'*
45815 + s*\$LD*'"$LD"'*
45816 + s/\$with_gnu_ld/'"$with_gnu_ld"'/
45817 + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
45818 + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
45819 + p
45820 + }' < "$progpath"
45821 + exit $?
45822 +}
45823 +
45824 +# func_missing_arg argname
45825 +# Echo program name prefixed message to standard error and set global
45826 +# exit_cmd.
45827 +func_missing_arg ()
45828 +{
45829 + func_error "missing argument for $1"
45830 + exit_cmd=exit
45831 +}
45832 +
45833 +exit_cmd=:
45834 +
45835 +
45836 +
45837 +
45838 +
45839 +# Check that we have a working $ECHO.
45840 +if test "X$1" = X--no-reexec; then
45841 + # Discard the --no-reexec flag, and continue.
45842 + shift
45843 +elif test "X$1" = X--fallback-echo; then
45844 + # Avoid inline document here, it may be left over
45845 + :
45846 +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
45847 + # Yippee, $ECHO works!
45848 + :
45849 +else
45850 + # Restart under the correct shell, and then maybe $ECHO will work.
45851 + exec $SHELL "$progpath" --no-reexec ${1+"$@"}
45852 +fi
45853 +
45854 +if test "X$1" = X--fallback-echo; then
45855 + # used as fallback echo
45856 + shift
45857 + cat <<EOF
45858 +$*
45859 +EOF
45860 + exit $EXIT_SUCCESS
45861 +fi
45862 +
45863 +magic="%%%MAGIC variable%%%"
45864 +
45865 +
45866 +# Global variables.
45867 +# $mode is unset
45868 +nonopt=
45869 +execute_dlfiles=
45870 +preserve_args=
45871 +lo2o="s/\\.lo\$/.${objext}/"
45872 +o2lo="s/\\.${objext}\$/.lo/"
45873 +extracted_archives=
45874 +extracted_serial=0
45875 +
45876 +opt_dry_run=false
45877 +opt_duplicate_deps=false
45878 +opt_silent=false
45879 +opt_debug=:
45880 +
45881 +# If this variable is set in any of the actions, the command in it
45882 +# will be execed at the end. This prevents here-documents from being
45883 +# left over by shells.
45884 +exec_cmd=
45885 +
45886 +# func_fatal_configuration arg...
45887 +# Echo program name prefixed message to standard error, followed by
45888 +# a configuration failure hint, and exit.
45889 +func_fatal_configuration ()
45890 +{
45891 + func_error ${1+"$@"}
45892 + func_error "See the $PACKAGE documentation for more information."
45893 + func_fatal_error "Fatal configuration error."
45894 +}
45895 +
45896 +
45897 +# func_config
45898 +# Display the configuration for all the tags in this script.
45899 +func_config ()
45900 +{
45901 + re_begincf='^# ### BEGIN LIBTOOL'
45902 + re_endcf='^# ### END LIBTOOL'
45903 +
45904 + # Default configuration.
45905 + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
45906 +
45907 + # Now print the configurations for the tags.
45908 + for tagname in $taglist; do
45909 + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
45910 + done
45911 +
45912 + exit $?
45913 +}
45914 +
45915 +# func_features
45916 +# Display the features supported by this script.
45917 +func_features ()
45918 +{
45919 + $ECHO "host: $host"
45920 + if test "$build_libtool_libs" = yes; then
45921 + $ECHO "enable shared libraries"
45922 + else
45923 + $ECHO "disable shared libraries"
45924 + fi
45925 + if test "$build_old_libs" = yes; then
45926 + $ECHO "enable static libraries"
45927 + else
45928 + $ECHO "disable static libraries"
45929 + fi
45930 +
45931 + exit $?
45932 +}
45933 +
45934 +# func_enable_tag tagname
45935 +# Verify that TAGNAME is valid, and either flag an error and exit, or
45936 +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
45937 +# variable here.
45938 +func_enable_tag ()
45939 +{
45940 + # Global variable:
45941 + tagname="$1"
45942 +
45943 + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
45944 + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
45945 + sed_extractcf="/$re_begincf/,/$re_endcf/p"
45946 +
45947 + # Validate tagname.
45948 + case $tagname in
45949 + *[!-_A-Za-z0-9,/]*)
45950 + func_fatal_error "invalid tag name: $tagname"
45951 + ;;
45952 + esac
45953 +
45954 + # Don't test for the "default" C tag, as we know it's
45955 + # there but not specially marked.
45956 + case $tagname in
45957 + CC) ;;
45958 + *)
45959 + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
45960 + taglist="$taglist $tagname"
45961 +
45962 + # Evaluate the configuration. Be careful to quote the path
45963 + # and the sed script, to avoid splitting on whitespace, but
45964 + # also don't use non-portable quotes within backquotes within
45965 + # quotes we have to do it in 2 steps:
45966 + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
45967 + eval "$extractedcf"
45968 + else
45969 + func_error "ignoring unknown tag $tagname"
45970 + fi
45971 + ;;
45972 + esac
45973 +}
45974 +
45975 +
45976 +func_mode_help ()
45977 +{
45978 + # We need to display help for each of the modes.
45979 + case $mode in
45980 + "")
45981 + # Generic help is extracted from the usage comments
45982 + # at the start of this file.
45983 + func_help
45984 + ;;
45985 +
45986 + clean)
45987 + $ECHO \
45988 +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
45989 +
45990 +Remove files from the build directory.
45991 +
45992 +RM is the name of the program to use to delete files associated with each FILE
45993 +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
45994 +to RM.
45995 +
45996 +If FILE is a libtool library, object or program, all the files associated
45997 +with it are deleted. Otherwise, only FILE itself is deleted using RM."
45998 + ;;
45999 +
46000 + compile)
46001 + $ECHO \
46002 +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
46003 +
46004 +Compile a source file into a libtool library object.
46005 +
46006 +This mode accepts the following additional options:
46007 +
46008 + -o OUTPUT-FILE set the output file name to OUTPUT-FILE
46009 + -no-suppress do not suppress compiler output for multiple passes
46010 + -prefer-pic try to building PIC objects only
46011 + -prefer-non-pic try to building non-PIC objects only
46012 + -shared do not build a \`.o' file suitable for static linking
46013 + -static only build a \`.o' file suitable for static linking
46014 +
46015 +COMPILE-COMMAND is a command to be used in creating a \`standard' object file
46016 +from the given SOURCEFILE.
46017 +
46018 +The output file name is determined by removing the directory component from
46019 +SOURCEFILE, then substituting the C source code suffix \`.c' with the
46020 +library object suffix, \`.lo'."
46021 + ;;
46022 +
46023 + execute)
46024 + $ECHO \
46025 +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
46026 +
46027 +Automatically set library path, then run a program.
46028 +
46029 +This mode accepts the following additional options:
46030 +
46031 + -dlopen FILE add the directory containing FILE to the library path
46032 +
46033 +This mode sets the library path environment variable according to \`-dlopen'
46034 +flags.
46035 +
46036 +If any of the ARGS are libtool executable wrappers, then they are translated
46037 +into their corresponding uninstalled binary, and any of their required library
46038 +directories are added to the library path.
46039 +
46040 +Then, COMMAND is executed, with ARGS as arguments."
46041 + ;;
46042 +
46043 + finish)
46044 + $ECHO \
46045 +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
46046 +
46047 +Complete the installation of libtool libraries.
46048 +
46049 +Each LIBDIR is a directory that contains libtool libraries.
46050 +
46051 +The commands that this mode executes may require superuser privileges. Use
46052 +the \`--dry-run' option if you just want to see what would be executed."
46053 + ;;
46054 +
46055 + install)
46056 + $ECHO \
46057 +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
46058 +
46059 +Install executables or libraries.
46060 +
46061 +INSTALL-COMMAND is the installation command. The first component should be
46062 +either the \`install' or \`cp' program.
46063 +
46064 +The following components of INSTALL-COMMAND are treated specially:
46065 +
46066 + -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
46067 +
46068 +The rest of the components are interpreted as arguments to that command (only
46069 +BSD-compatible install options are recognized)."
46070 + ;;
46071 +
46072 + link)
46073 + $ECHO \
46074 +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
46075 +
46076 +Link object files or libraries together to form another library, or to
46077 +create an executable program.
46078 +
46079 +LINK-COMMAND is a command using the C compiler that you would use to create
46080 +a program from several object files.
46081 +
46082 +The following components of LINK-COMMAND are treated specially:
46083 +
46084 + -all-static do not do any dynamic linking at all
46085 + -avoid-version do not add a version suffix if possible
46086 + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
46087 + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
46088 + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
46089 + -export-symbols SYMFILE
46090 + try to export only the symbols listed in SYMFILE
46091 + -export-symbols-regex REGEX
46092 + try to export only the symbols matching REGEX
46093 + -LLIBDIR search LIBDIR for required installed libraries
46094 + -lNAME OUTPUT-FILE requires the installed library libNAME
46095 + -module build a library that can dlopened
46096 + -no-fast-install disable the fast-install mode
46097 + -no-install link a not-installable executable
46098 + -no-undefined declare that a library does not refer to external symbols
46099 + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
46100 + -objectlist FILE Use a list of object files found in FILE to specify objects
46101 + -precious-files-regex REGEX
46102 + don't remove output files matching REGEX
46103 + -release RELEASE specify package release information
46104 + -rpath LIBDIR the created library will eventually be installed in LIBDIR
46105 + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
46106 + -shared only do dynamic linking of libtool libraries
46107 + -shrext SUFFIX override the standard shared library file extension
46108 + -static do not do any dynamic linking of uninstalled libtool libraries
46109 + -static-libtool-libs
46110 + do not do any dynamic linking of libtool libraries
46111 + -version-info CURRENT[:REVISION[:AGE]]
46112 + specify library version info [each variable defaults to 0]
46113 + -weak LIBNAME declare that the target provides the LIBNAME interface
46114 +
46115 +All other options (arguments beginning with \`-') are ignored.
46116 +
46117 +Every other argument is treated as a filename. Files ending in \`.la' are
46118 +treated as uninstalled libtool libraries, other files are standard or library
46119 +object files.
46120 +
46121 +If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
46122 +only library objects (\`.lo' files) may be specified, and \`-rpath' is
46123 +required, except when creating a convenience library.
46124 +
46125 +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
46126 +using \`ar' and \`ranlib', or on Windows using \`lib'.
46127 +
46128 +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
46129 +is created, otherwise an executable program is created."
46130 + ;;
46131 +
46132 + uninstall)
46133 + $ECHO \
46134 +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
46135 +
46136 +Remove libraries from an installation directory.
46137 +
46138 +RM is the name of the program to use to delete files associated with each FILE
46139 +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
46140 +to RM.
46141 +
46142 +If FILE is a libtool library, all the files associated with it are deleted.
46143 +Otherwise, only FILE itself is deleted using RM."
46144 + ;;
46145 +
46146 + *)
46147 + func_fatal_help "invalid operation mode \`$mode'"
46148 + ;;
46149 + esac
46150 +
46151 + $ECHO
46152 + $ECHO "Try \`$progname --help' for more information about other modes."
46153 +
46154 + exit $?
46155 +}
46156 +
46157 +# Generated shell functions inserted here.
46158 +
46159 +# func_dirname file append nondir_replacement
46160 +# Compute the dirname of FILE. If nonempty, add APPEND to the result,
46161 +# otherwise set result to NONDIR_REPLACEMENT.
46162 +func_dirname ()
46163 +{
46164 + case ${1} in
46165 + */*) func_dirname_result="${1%/*}${2}" ;;
46166 + * ) func_dirname_result="${3}" ;;
46167 + esac
46168 +}
46169 +
46170 +# func_basename file
46171 +func_basename ()
46172 +{
46173 + func_basename_result="${1##*/}"
46174 +}
46175 +
46176 +# func_dirname_and_basename file append nondir_replacement
46177 +# perform func_basename and func_dirname in a single function
46178 +# call:
46179 +# dirname: Compute the dirname of FILE. If nonempty,
46180 +# add APPEND to the result, otherwise set result
46181 +# to NONDIR_REPLACEMENT.
46182 +# value returned in "$func_dirname_result"
46183 +# basename: Compute filename of FILE.
46184 +# value retuned in "$func_basename_result"
46185 +# Implementation must be kept synchronized with func_dirname
46186 +# and func_basename. For efficiency, we do not delegate to
46187 +# those functions but instead duplicate the functionality here.
46188 +func_dirname_and_basename ()
46189 +{
46190 + case ${1} in
46191 + */*) func_dirname_result="${1%/*}${2}" ;;
46192 + * ) func_dirname_result="${3}" ;;
46193 + esac
46194 + func_basename_result="${1##*/}"
46195 +}
46196 +
46197 +# func_stripname prefix suffix name
46198 +# strip PREFIX and SUFFIX off of NAME.
46199 +# PREFIX and SUFFIX must not contain globbing or regex special
46200 +# characters, hashes, percent signs, but SUFFIX may contain a leading
46201 +# dot (in which case that matches only a dot).
46202 +func_stripname ()
46203 +{
46204 + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
46205 + # positional parameters, so assign one to ordinary parameter first.
46206 + func_stripname_result=${3}
46207 + func_stripname_result=${func_stripname_result#"${1}"}
46208 + func_stripname_result=${func_stripname_result%"${2}"}
46209 +}
46210 +
46211 +# func_opt_split
46212 +func_opt_split ()
46213 +{
46214 + func_opt_split_opt=${1%%=*}
46215 + func_opt_split_arg=${1#*=}
46216 +}
46217 +
46218 +# func_lo2o object
46219 +func_lo2o ()
46220 +{
46221 + case ${1} in
46222 + *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
46223 + *) func_lo2o_result=${1} ;;
46224 + esac
46225 +}
46226 +
46227 +# func_xform libobj-or-source
46228 +func_xform ()
46229 +{
46230 + func_xform_result=${1%.*}.lo
46231 +}
46232 +
46233 +# func_arith arithmetic-term...
46234 +func_arith ()
46235 +{
46236 + func_arith_result=$(( $* ))
46237 +}
46238 +
46239 +# func_len string
46240 +# STRING may not start with a hyphen.
46241 +func_len ()
46242 +{
46243 + func_len_result=${#1}
46244 +}
46245 +
46246 +
46247 +# func_append var value
46248 +# Append VALUE to the end of shell variable VAR.
46249 +func_append ()
46250 +{
46251 + eval "$1+=\$2"
46252 +}
46253 +# Generated shell functions inserted here.
46254 +
46255 +
46256 +# Parse options once, thoroughly. This comes as soon as possible in
46257 +# the script to make things like `libtool --version' happen quickly.
46258 +{
46259 +
46260 + # Shorthand for --mode=foo, only valid as the first argument
46261 + case $1 in
46262 + clean|clea|cle|cl)
46263 + shift; set dummy --mode clean ${1+"$@"}; shift
46264 + ;;
46265 + compile|compil|compi|comp|com|co|c)
46266 + shift; set dummy --mode compile ${1+"$@"}; shift
46267 + ;;
46268 + execute|execut|execu|exec|exe|ex|e)
46269 + shift; set dummy --mode execute ${1+"$@"}; shift
46270 + ;;
46271 + finish|finis|fini|fin|fi|f)
46272 + shift; set dummy --mode finish ${1+"$@"}; shift
46273 + ;;
46274 + install|instal|insta|inst|ins|in|i)
46275 + shift; set dummy --mode install ${1+"$@"}; shift
46276 + ;;
46277 + link|lin|li|l)
46278 + shift; set dummy --mode link ${1+"$@"}; shift
46279 + ;;
46280 + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
46281 + shift; set dummy --mode uninstall ${1+"$@"}; shift
46282 + ;;
46283 + esac
46284 +
46285 + # Parse non-mode specific arguments:
46286 + while test "$#" -gt 0; do
46287 + opt="$1"
46288 + shift
46289 +
46290 + case $opt in
46291 + --config) func_config ;;
46292 +
46293 + --debug) preserve_args="$preserve_args $opt"
46294 + func_echo "enabling shell trace mode"
46295 + opt_debug='set -x'
46296 + $opt_debug
46297 + ;;
46298 +
46299 + -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
46300 + execute_dlfiles="$execute_dlfiles $1"
46301 + shift
46302 + ;;
46303 +
46304 + --dry-run | -n) opt_dry_run=: ;;
46305 + --features) func_features ;;
46306 + --finish) mode="finish" ;;
46307 +
46308 + --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
46309 + case $1 in
46310 + # Valid mode arguments:
46311 + clean) ;;
46312 + compile) ;;
46313 + execute) ;;
46314 + finish) ;;
46315 + install) ;;
46316 + link) ;;
46317 + relink) ;;
46318 + uninstall) ;;
46319 +
46320 + # Catch anything else as an error
46321 + *) func_error "invalid argument for $opt"
46322 + exit_cmd=exit
46323 + break
46324 + ;;
46325 + esac
46326 +
46327 + mode="$1"
46328 + shift
46329 + ;;
46330 +
46331 + --preserve-dup-deps)
46332 + opt_duplicate_deps=: ;;
46333 +
46334 + --quiet|--silent) preserve_args="$preserve_args $opt"
46335 + opt_silent=:
46336 + ;;
46337 +
46338 + --verbose| -v) preserve_args="$preserve_args $opt"
46339 + opt_silent=false
46340 + ;;
46341 +
46342 + --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
46343 + preserve_args="$preserve_args $opt $1"
46344 + func_enable_tag "$1" # tagname is set here
46345 + shift
46346 + ;;
46347 +
46348 + # Separate optargs to long options:
46349 + -dlopen=*|--mode=*|--tag=*)
46350 + func_opt_split "$opt"
46351 + set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
46352 + shift
46353 + ;;
46354 +
46355 + -\?|-h) func_usage ;;
46356 + --help) opt_help=: ;;
46357 + --version) func_version ;;
46358 +
46359 + -*) func_fatal_help "unrecognized option \`$opt'" ;;
46360 +
46361 + *) nonopt="$opt"
46362 + break
46363 + ;;
46364 + esac
46365 + done
46366 +
46367 + # Now that we've collected a possible --mode arg, show help if necessary
46368 + $opt_help && func_mode_help
46369 +
46370 + case $host in
46371 + *cygwin* | *mingw* | *pw32*)
46372 + # don't eliminate duplications in $postdeps and $predeps
46373 + opt_duplicate_compiler_generated_deps=:
46374 + ;;
46375 + *)
46376 + opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
46377 + ;;
46378 + esac
46379 +
46380 + # Having warned about all mis-specified options, bail out if
46381 + # anything was wrong.
46382 + $exit_cmd $EXIT_FAILURE
46383 +}
46384 +
46385 +# func_check_version_match
46386 +# Ensure that we are using m4 macros, and libtool script from the same
46387 +# release of libtool.
46388 +func_check_version_match ()
46389 +{
46390 + if test "$package_revision" != "$macro_revision"; then
46391 + if test "$VERSION" != "$macro_version"; then
46392 + if test -z "$macro_version"; then
46393 + cat >&2 <<_LT_EOF
46394 +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
46395 +$progname: definition of this LT_INIT comes from an older release.
46396 +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
46397 +$progname: and run autoconf again.
46398 +_LT_EOF
46399 + else
46400 + cat >&2 <<_LT_EOF
46401 +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
46402 +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
46403 +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
46404 +$progname: and run autoconf again.
46405 +_LT_EOF
46406 + fi
46407 + else
46408 + cat >&2 <<_LT_EOF
46409 +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
46410 +$progname: but the definition of this LT_INIT comes from revision $macro_revision.
46411 +$progname: You should recreate aclocal.m4 with macros from revision $package_revision
46412 +$progname: of $PACKAGE $VERSION and run autoconf again.
46413 +_LT_EOF
46414 + fi
46415 +
46416 + exit $EXIT_MISMATCH
46417 + fi
46418 +}
46419 +
46420 +
46421 +## ----------- ##
46422 +## Main. ##
46423 +## ----------- ##
46424 +
46425 +{
46426 + # Sanity checks first:
46427 + func_check_version_match
46428 +
46429 + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
46430 + func_fatal_configuration "not configured to build any kind of library"
46431 + fi
46432 +
46433 + test -z "$mode" && func_fatal_error "error: you must specify a MODE."
46434 +
46435 +
46436 + # Darwin sucks
46437 + eval std_shrext=\"$shrext_cmds\"
46438 +
46439 +
46440 + # Only execute mode is allowed to have -dlopen flags.
46441 + if test -n "$execute_dlfiles" && test "$mode" != execute; then
46442 + func_error "unrecognized option \`-dlopen'"
46443 + $ECHO "$help" 1>&2
46444 + exit $EXIT_FAILURE
46445 + fi
46446 +
46447 + # Change the help message to a mode-specific one.
46448 + generic_help="$help"
46449 + help="Try \`$progname --help --mode=$mode' for more information."
46450 +}
46451 +
46452 +
46453 +# func_lalib_p file
46454 +# True iff FILE is a libtool `.la' library or `.lo' object file.
46455 +# This function is only a basic sanity check; it will hardly flush out
46456 +# determined imposters.
46457 +func_lalib_p ()
46458 +{
46459 + $SED -e 4q "$1" 2>/dev/null \
46460 + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
46461 +}
46462 +
46463 +# func_lalib_unsafe_p file
46464 +# True iff FILE is a libtool `.la' library or `.lo' object file.
46465 +# This function implements the same check as func_lalib_p without
46466 +# resorting to external programs. To this end, it redirects stdin and
46467 +# closes it afterwards, without saving the original file descriptor.
46468 +# As a safety measure, use it only where a negative result would be
46469 +# fatal anyway. Works if `file' does not exist.
46470 +func_lalib_unsafe_p ()
46471 +{
46472 + lalib_p=no
46473 + if test -r "$1" && exec 5<&1 <"$1"; then
46474 + for lalib_p_l in 1 2 3 4
46475 + do
46476 + read lalib_p_line
46477 + case "$lalib_p_line" in
46478 + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
46479 + esac
46480 + done
46481 + exec 1<&5 5<&-
46482 + fi
46483 + test "$lalib_p" = yes
46484 +}
46485 +
46486 +# func_ltwrapper_p file
46487 +# True iff FILE is a libtool wrapper script.
46488 +# This function is only a basic sanity check; it will hardly flush out
46489 +# determined imposters.
46490 +func_ltwrapper_p ()
46491 +{
46492 + func_lalib_p "$1"
46493 +}
46494 +
46495 +
46496 +# func_execute_cmds commands fail_cmd
46497 +# Execute tilde-delimited COMMANDS.
46498 +# If FAIL_CMD is given, eval that upon failure.
46499 +# FAIL_CMD may read-access the current command in variable CMD!
46500 +func_execute_cmds ()
46501 +{
46502 + $opt_debug
46503 + save_ifs=$IFS; IFS='~'
46504 + for cmd in $1; do
46505 + IFS=$save_ifs
46506 + eval cmd=\"$cmd\"
46507 + func_show_eval "$cmd" "${2-:}"
46508 + done
46509 + IFS=$save_ifs
46510 +}
46511 +
46512 +
46513 +# func_source file
46514 +# Source FILE, adding directory component if necessary.
46515 +# Note that it is not necessary on cygwin/mingw to append a dot to
46516 +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
46517 +# behavior happens only for exec(3), not for open(2)! Also, sourcing
46518 +# `FILE.' does not work on cygwin managed mounts.
46519 +func_source ()
46520 +{
46521 + $opt_debug
46522 + case $1 in
46523 + */* | *\\*) . "$1" ;;
46524 + *) . "./$1" ;;
46525 + esac
46526 +}
46527 +
46528 +
46529 +# func_win32_libid arg
46530 +# return the library type of file 'arg'
46531 +#
46532 +# Need a lot of goo to handle *both* DLLs and import libs
46533 +# Has to be a shell function in order to 'eat' the argument
46534 +# that is supplied when $file_magic_command is called.
46535 +func_win32_libid ()
46536 +{
46537 + $opt_debug
46538 + win32_libid_type="unknown"
46539 + win32_fileres=`file -L $1 2>/dev/null`
46540 + case $win32_fileres in
46541 + *ar\ archive\ import\ library*) # definitely import
46542 + win32_libid_type="x86 archive import"
46543 + ;;
46544 + *ar\ archive*) # could be an import, or static
46545 + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
46546 + $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
46547 + win32_nmres=`eval $NM -f posix -A $1 |
46548 + $SED -n -e '
46549 + 1,100{
46550 + / I /{
46551 + s,.*,import,
46552 + p
46553 + q
46554 + }
46555 + }'`
46556 + case $win32_nmres in
46557 + import*) win32_libid_type="x86 archive import";;
46558 + *) win32_libid_type="x86 archive static";;
46559 + esac
46560 + fi
46561 + ;;
46562 + *DLL*)
46563 + win32_libid_type="x86 DLL"
46564 + ;;
46565 + *executable*) # but shell scripts are "executable" too...
46566 + case $win32_fileres in
46567 + *MS\ Windows\ PE\ Intel*)
46568 + win32_libid_type="x86 DLL"
46569 + ;;
46570 + esac
46571 + ;;
46572 + esac
46573 + $ECHO "$win32_libid_type"
46574 +}
46575 +
46576 +
46577 +
46578 +# func_infer_tag arg
46579 +# Infer tagged configuration to use if any are available and
46580 +# if one wasn't chosen via the "--tag" command line option.
46581 +# Only attempt this if the compiler in the base compile
46582 +# command doesn't match the default compiler.
46583 +# arg is usually of the form 'gcc ...'
46584 +func_infer_tag ()
46585 +{
46586 + $opt_debug
46587 + if test -n "$available_tags" && test -z "$tagname"; then
46588 + CC_quoted=
46589 + for arg in $CC; do
46590 + func_quote_for_eval "$arg"
46591 + CC_quoted="$CC_quoted $func_quote_for_eval_result"
46592 + done
46593 + case $@ in
46594 + # Blanks in the command may have been stripped by the calling shell,
46595 + # but not from the CC environment variable when configure was run.
46596 + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
46597 + # Blanks at the start of $base_compile will cause this to fail
46598 + # if we don't check for them as well.
46599 + *)
46600 + for z in $available_tags; do
46601 + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
46602 + # Evaluate the configuration.
46603 + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
46604 + CC_quoted=
46605 + for arg in $CC; do
46606 + # Double-quote args containing other shell metacharacters.
46607 + func_quote_for_eval "$arg"
46608 + CC_quoted="$CC_quoted $func_quote_for_eval_result"
46609 + done
46610 + case "$@ " in
46611 + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
46612 + # The compiler in the base compile command matches
46613 + # the one in the tagged configuration.
46614 + # Assume this is the tagged configuration we want.
46615 + tagname=$z
46616 + break
46617 + ;;
46618 + esac
46619 + fi
46620 + done
46621 + # If $tagname still isn't set, then no tagged configuration
46622 + # was found and let the user know that the "--tag" command
46623 + # line option must be used.
46624 + if test -z "$tagname"; then
46625 + func_echo "unable to infer tagged configuration"
46626 + func_fatal_error "specify a tag with \`--tag'"
46627 +# else
46628 +# func_verbose "using $tagname tagged configuration"
46629 + fi
46630 + ;;
46631 + esac
46632 + fi
46633 +}
46634 +
46635 +
46636 +
46637 +# func_generate_dlsyms outputname originator pic_p
46638 +# Extract symbols from dlprefiles and create ${outputname}S.o with
46639 +# a dlpreopen symbol table.
46640 +func_generate_dlsyms ()
46641 +{
46642 + $opt_debug
46643 + my_outputname="$1"
46644 + my_originator="$2"
46645 + my_pic_p="${3-no}"
46646 + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
46647 + my_dlsyms=
46648 +
46649 + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
46650 + if test -n "$NM" && test -n "$global_symbol_pipe"; then
46651 + my_dlsyms="${my_outputname}S.c"
46652 + else
46653 + func_error "not configured to extract global symbols from dlpreopened files"
46654 + fi
46655 + fi
46656 +
46657 + if test -n "$my_dlsyms"; then
46658 + case $my_dlsyms in
46659 + "") ;;
46660 + *.c)
46661 + # Discover the nlist of each of the dlfiles.
46662 + nlist="$output_objdir/${my_outputname}.nm"
46663 +
46664 + func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
46665 +
46666 + # Parse the name list into a source file.
46667 + func_echo "creating $output_objdir/$my_dlsyms"
46668 +
46669 + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
46670 +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
46671 +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
46672 +
46673 +#ifdef __cplusplus
46674 +extern \"C\" {
46675 +#endif
46676 +
46677 +/* External symbol declarations for the compiler. */\
46678 +"
46679 +
46680 + if test "$dlself" = yes; then
46681 + func_echo "generating symbol list for \`$output'"
46682 +
46683 + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
46684 +
46685 + # Add our own program objects to the symbol list.
46686 + progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
46687 + for progfile in $progfiles; do
46688 + func_echo "extracting global C symbols from \`$progfile'"
46689 + $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
46690 + done
46691 +
46692 + if test -n "$exclude_expsyms"; then
46693 + $opt_dry_run || {
46694 + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
46695 + eval '$MV "$nlist"T "$nlist"'
46696 + }
46697 + fi
46698 +
46699 + if test -n "$export_symbols_regex"; then
46700 + $opt_dry_run || {
46701 + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
46702 + eval '$MV "$nlist"T "$nlist"'
46703 + }
46704 + fi
46705 +
46706 + # Prepare the list of exported symbols
46707 + if test -z "$export_symbols"; then
46708 + export_symbols="$output_objdir/$outputname.exp"
46709 + $opt_dry_run || {
46710 + $RM $export_symbols
46711 + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
46712 + case $host in
46713 + *cygwin* | *mingw* )
46714 + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
46715 + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
46716 + ;;
46717 + esac
46718 + }
46719 + else
46720 + $opt_dry_run || {
46721 + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
46722 + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
46723 + eval '$MV "$nlist"T "$nlist"'
46724 + case $host in
46725 + *cygwin | *mingw* )
46726 + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
46727 + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
46728 + ;;
46729 + esac
46730 + }
46731 + fi
46732 + fi
46733 +
46734 + for dlprefile in $dlprefiles; do
46735 + func_echo "extracting global C symbols from \`$dlprefile'"
46736 + func_basename "$dlprefile"
46737 + name="$func_basename_result"
46738 + $opt_dry_run || {
46739 + eval '$ECHO ": $name " >> "$nlist"'
46740 + eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
46741 + }
46742 + done
46743 +
46744 + $opt_dry_run || {
46745 + # Make sure we have at least an empty file.
46746 + test -f "$nlist" || : > "$nlist"
46747 +
46748 + if test -n "$exclude_expsyms"; then
46749 + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
46750 + $MV "$nlist"T "$nlist"
46751 + fi
46752 +
46753 + # Try sorting and uniquifying the output.
46754 + if $GREP -v "^: " < "$nlist" |
46755 + if sort -k 3 </dev/null >/dev/null 2>&1; then
46756 + sort -k 3
46757 + else
46758 + sort +2
46759 + fi |
46760 + uniq > "$nlist"S; then
46761 + :
46762 + else
46763 + $GREP -v "^: " < "$nlist" > "$nlist"S
46764 + fi
46765 +
46766 + if test -f "$nlist"S; then
46767 + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
46768 + else
46769 + $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
46770 + fi
46771 +
46772 + $ECHO >> "$output_objdir/$my_dlsyms" "\
46773 +
46774 +/* The mapping between symbol names and symbols. */
46775 +typedef struct {
46776 + const char *name;
46777 + void *address;
46778 +} lt_dlsymlist;
46779 +"
46780 + case $host in
46781 + *cygwin* | *mingw* )
46782 + $ECHO >> "$output_objdir/$my_dlsyms" "\
46783 +/* DATA imports from DLLs on WIN32 con't be const, because
46784 + runtime relocations are performed -- see ld's documentation
46785 + on pseudo-relocs. */"
46786 + lt_dlsym_const= ;;
46787 + *osf5*)
46788 + echo >> "$output_objdir/$my_dlsyms" "\
46789 +/* This system does not cope well with relocations in const data */"
46790 + lt_dlsym_const= ;;
46791 + *)
46792 + lt_dlsym_const=const ;;
46793 + esac
46794 +
46795 + $ECHO >> "$output_objdir/$my_dlsyms" "\
46796 +extern $lt_dlsym_const lt_dlsymlist
46797 +lt_${my_prefix}_LTX_preloaded_symbols[];
46798 +$lt_dlsym_const lt_dlsymlist
46799 +lt_${my_prefix}_LTX_preloaded_symbols[] =
46800 +{\
46801 + { \"$my_originator\", (void *) 0 },"
46802 +
46803 + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
46804 +
46805 + $ECHO >> "$output_objdir/$my_dlsyms" "\
46806 + {0, (void *) 0}
46807 +};
46808 +
46809 +/* This works around a problem in FreeBSD linker */
46810 +#ifdef FREEBSD_WORKAROUND
46811 +static const void *lt_preloaded_setup() {
46812 + return lt_${my_prefix}_LTX_preloaded_symbols;
46813 +}
46814 +#endif
46815 +
46816 +#ifdef __cplusplus
46817 +}
46818 +#endif\
46819 +"
46820 + } # !$opt_dry_run
46821 +
46822 + pic_flag_for_symtable=
46823 + case "$compile_command " in
46824 + *" -static "*) ;;
46825 + *)
46826 + case $host in
46827 + # compiling the symbol table file with pic_flag works around
46828 + # a FreeBSD bug that causes programs to crash when -lm is
46829 + # linked before any other PIC object. But we must not use
46830 + # pic_flag when linking with -static. The problem exists in
46831 + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
46832 + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
46833 + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
46834 + *-*-hpux*)
46835 + pic_flag_for_symtable=" $pic_flag" ;;
46836 + *)
46837 + if test "X$my_pic_p" != Xno; then
46838 + pic_flag_for_symtable=" $pic_flag"
46839 + fi
46840 + ;;
46841 + esac
46842 + ;;
46843 + esac
46844 + symtab_cflags=
46845 + for arg in $LTCFLAGS; do
46846 + case $arg in
46847 + -pie | -fpie | -fPIE) ;;
46848 + *) symtab_cflags="$symtab_cflags $arg" ;;
46849 + esac
46850 + done
46851 +
46852 + # Now compile the dynamic symbol file.
46853 + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
46854 +
46855 + # Clean up the generated files.
46856 + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
46857 +
46858 + # Transform the symbol file into the correct name.
46859 + symfileobj="$output_objdir/${my_outputname}S.$objext"
46860 + case $host in
46861 + *cygwin* | *mingw* )
46862 + if test -f "$output_objdir/$my_outputname.def"; then
46863 + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
46864 + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
46865 + else
46866 + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
46867 + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
46868 + fi
46869 + ;;
46870 + *)
46871 + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
46872 + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
46873 + ;;
46874 + esac
46875 + ;;
46876 + *)
46877 + func_fatal_error "unknown suffix for \`$my_dlsyms'"
46878 + ;;
46879 + esac
46880 + else
46881 + # We keep going just in case the user didn't refer to
46882 + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
46883 + # really was required.
46884 +
46885 + # Nullify the symbol file.
46886 + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
46887 + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
46888 + fi
46889 +}
46890 +
46891 +# func_extract_an_archive dir oldlib
46892 +func_extract_an_archive ()
46893 +{
46894 + $opt_debug
46895 + f_ex_an_ar_dir="$1"; shift
46896 + f_ex_an_ar_oldlib="$1"
46897 + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" 'exit $?'
46898 + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
46899 + :
46900 + else
46901 + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
46902 + fi
46903 +}
46904 +
46905 +
46906 +# func_extract_archives gentop oldlib ...
46907 +func_extract_archives ()
46908 +{
46909 + $opt_debug
46910 + my_gentop="$1"; shift
46911 + my_oldlibs=${1+"$@"}
46912 + my_oldobjs=""
46913 + my_xlib=""
46914 + my_xabs=""
46915 + my_xdir=""
46916 +
46917 + for my_xlib in $my_oldlibs; do
46918 + # Extract the objects.
46919 + case $my_xlib in
46920 + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
46921 + *) my_xabs=`pwd`"/$my_xlib" ;;
46922 + esac
46923 + func_basename "$my_xlib"
46924 + my_xlib="$func_basename_result"
46925 + my_xlib_u=$my_xlib
46926 + while :; do
46927 + case " $extracted_archives " in
46928 + *" $my_xlib_u "*)
46929 + extracted_serial=`expr $extracted_serial + 1`
46930 + my_xlib_u=lt$extracted_serial-$my_xlib ;;
46931 + *) break ;;
46932 + esac
46933 + done
46934 + extracted_archives="$extracted_archives $my_xlib_u"
46935 + my_xdir="$my_gentop/$my_xlib_u"
46936 +
46937 + func_mkdir_p "$my_xdir"
46938 +
46939 + case $host in
46940 + *-darwin*)
46941 + func_echo "Extracting $my_xabs"
46942 + # Do not bother doing anything if just a dry run
46943 + $opt_dry_run || {
46944 + darwin_orig_dir=`pwd`
46945 + cd $my_xdir || exit $?
46946 + darwin_archive=$my_xabs
46947 + darwin_curdir=`pwd`
46948 + darwin_base_archive=`basename $darwin_archive`
46949 + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
46950 + if test -n "$darwin_arches"; then
46951 + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
46952 + darwin_arch=
46953 + func_echo "$darwin_base_archive has multiple architectures $darwin_arches"
46954 + for darwin_arch in $darwin_arches ; do
46955 + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
46956 + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
46957 + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
46958 + func_extract_an_archive "`pwd`" "${darwin_base_archive}"
46959 + cd "$darwin_curdir"
46960 + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
46961 + done # $darwin_arches
46962 + ## Okay now we've a bunch of thin objects, gotta fatten them up :)
46963 + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
46964 + darwin_file=
46965 + darwin_files=
46966 + for darwin_file in $darwin_filelist; do
46967 + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
46968 + lipo -create -output "$darwin_file" $darwin_files
46969 + done # $darwin_filelist
46970 + $RM -rf unfat-$$
46971 + cd "$darwin_orig_dir"
46972 + else
46973 + cd $darwin_orig_dir
46974 + func_extract_an_archive "$my_xdir" "$my_xabs"
46975 + fi # $darwin_arches
46976 + } # !$opt_dry_run
46977 + ;;
46978 + *)
46979 + func_extract_an_archive "$my_xdir" "$my_xabs"
46980 + ;;
46981 + esac
46982 + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
46983 + done
46984 +
46985 + func_extract_archives_result="$my_oldobjs"
46986 +}
46987 +
46988 +
46989 +
46990 +# func_write_libtool_object output_name pic_name nonpic_name
46991 +# Create a libtool object file (analogous to a ".la" file),
46992 +# but don't create it if we're doing a dry run.
46993 +func_write_libtool_object ()
46994 +{
46995 + write_libobj=${1}
46996 + if test "$build_libtool_libs" = yes; then
46997 + write_lobj=\'${2}\'
46998 + else
46999 + write_lobj=none
47000 + fi
47001 +
47002 + if test "$build_old_libs" = yes; then
47003 + write_oldobj=\'${3}\'
47004 + else
47005 + write_oldobj=none
47006 + fi
47007 +
47008 + $opt_dry_run || {
47009 + cat >${write_libobj}T <<EOF
47010 +# $write_libobj - a libtool object file
47011 +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
47012 +#
47013 +# Please DO NOT delete this file!
47014 +# It is necessary for linking the library.
47015 +
47016 +# Name of the PIC object.
47017 +pic_object=$write_lobj
47018 +
47019 +# Name of the non-PIC object
47020 +non_pic_object=$write_oldobj
47021 +
47022 +EOF
47023 + mv -f "${write_libobj}T" "${write_libobj}"
47024 + }
47025 +}
47026 +
47027 +# func_mode_compile arg...
47028 +func_mode_compile ()
47029 +{
47030 + $opt_debug
47031 + # Get the compilation command and the source file.
47032 + base_compile=
47033 + srcfile="$nonopt" # always keep a non-empty value in "srcfile"
47034 + suppress_opt=yes
47035 + suppress_output=
47036 + arg_mode=normal
47037 + libobj=
47038 + later=
47039 + pie_flag=
47040 +
47041 + for arg
47042 + do
47043 + case $arg_mode in
47044 + arg )
47045 + # do not "continue". Instead, add this to base_compile
47046 + lastarg="$arg"
47047 + arg_mode=normal
47048 + ;;
47049 +
47050 + target )
47051 + libobj="$arg"
47052 + arg_mode=normal
47053 + continue
47054 + ;;
47055 +
47056 + normal )
47057 + # Accept any command-line options.
47058 + case $arg in
47059 + -o)
47060 + test -n "$libobj" && \
47061 + func_fatal_error "you cannot specify \`-o' more than once"
47062 + arg_mode=target
47063 + continue
47064 + ;;
47065 +
47066 + -pie | -fpie | -fPIE)
47067 + pie_flag="$pie_flag $arg"
47068 + continue
47069 + ;;
47070 +
47071 + -shared | -static | -prefer-pic | -prefer-non-pic)
47072 + later="$later $arg"
47073 + continue
47074 + ;;
47075 +
47076 + -no-suppress)
47077 + suppress_opt=no
47078 + continue
47079 + ;;
47080 +
47081 + -Xcompiler)
47082 + arg_mode=arg # the next one goes into the "base_compile" arg list
47083 + continue # The current "srcfile" will either be retained or
47084 + ;; # replaced later. I would guess that would be a bug.
47085 +
47086 + -Wc,*)
47087 + func_stripname '-Wc,' '' "$arg"
47088 + args=$func_stripname_result
47089 + lastarg=
47090 + save_ifs="$IFS"; IFS=','
47091 + for arg in $args; do
47092 + IFS="$save_ifs"
47093 + func_quote_for_eval "$arg"
47094 + lastarg="$lastarg $func_quote_for_eval_result"
47095 + done
47096 + IFS="$save_ifs"
47097 + func_stripname ' ' '' "$lastarg"
47098 + lastarg=$func_stripname_result
47099 +
47100 + # Add the arguments to base_compile.
47101 + base_compile="$base_compile $lastarg"
47102 + continue
47103 + ;;
47104 +
47105 + *)
47106 + # Accept the current argument as the source file.
47107 + # The previous "srcfile" becomes the current argument.
47108 + #
47109 + lastarg="$srcfile"
47110 + srcfile="$arg"
47111 + ;;
47112 + esac # case $arg
47113 + ;;
47114 + esac # case $arg_mode
47115 +
47116 + # Aesthetically quote the previous argument.
47117 + func_quote_for_eval "$lastarg"
47118 + base_compile="$base_compile $func_quote_for_eval_result"
47119 + done # for arg
47120 +
47121 + case $arg_mode in
47122 + arg)
47123 + func_fatal_error "you must specify an argument for -Xcompile"
47124 + ;;
47125 + target)
47126 + func_fatal_error "you must specify a target with \`-o'"
47127 + ;;
47128 + *)
47129 + # Get the name of the library object.
47130 + test -z "$libobj" && {
47131 + func_basename "$srcfile"
47132 + libobj="$func_basename_result"
47133 + }
47134 + ;;
47135 + esac
47136 +
47137 + # Recognize several different file suffixes.
47138 + # If the user specifies -o file.o, it is replaced with file.lo
47139 + xform='[cCFSifmso]'
47140 + case $libobj in
47141 + *.ada) xform=ada ;;
47142 + *.adb) xform=adb ;;
47143 + *.ads) xform=ads ;;
47144 + *.asm) xform=asm ;;
47145 + *.c++) xform=c++ ;;
47146 + *.cc) xform=cc ;;
47147 + *.ii) xform=ii ;;
47148 + *.class) xform=class ;;
47149 + *.cpp) xform=cpp ;;
47150 + *.cxx) xform=cxx ;;
47151 + *.[fF][09]?) xform='[fF][09].' ;;
47152 + *.for) xform=for ;;
47153 + *.java) xform=java ;;
47154 + *.obj) xform=obj ;;
47155 + esac
47156 +
47157 + libobj=`$ECHO "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
47158 +
47159 + case $libobj in
47160 + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
47161 + *)
47162 + func_fatal_error "cannot determine name of library object from \`$libobj'"
47163 + ;;
47164 + esac
47165 +
47166 + func_infer_tag $base_compile
47167 +
47168 + for arg in $later; do
47169 + case $arg in
47170 + -shared)
47171 + test "$build_libtool_libs" != yes && \
47172 + func_fatal_configuration "can not build a shared library"
47173 + build_old_libs=no
47174 + continue
47175 + ;;
47176 +
47177 + -static)
47178 + build_libtool_libs=no
47179 + build_old_libs=yes
47180 + continue
47181 + ;;
47182 +
47183 + -prefer-pic)
47184 + pic_mode=yes
47185 + continue
47186 + ;;
47187 +
47188 + -prefer-non-pic)
47189 + pic_mode=no
47190 + continue
47191 + ;;
47192 + esac
47193 + done
47194 +
47195 + func_quote_for_eval "$libobj"
47196 + test "X$libobj" != "X$func_quote_for_eval_result" \
47197 + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
47198 + && func_warning "libobj name \`$libobj' may not contain shell special characters."
47199 + func_basename "$obj"
47200 + objname="$func_basename_result"
47201 + func_dirname "$obj" "/" ""
47202 + xdir="$func_dirname_result"
47203 + lobj=${xdir}$objdir/$objname
47204 +
47205 + test -z "$base_compile" && \
47206 + func_fatal_help "you must specify a compilation command"
47207 +
47208 + # Delete any leftover library objects.
47209 + if test "$build_old_libs" = yes; then
47210 + removelist="$obj $lobj $libobj ${libobj}T"
47211 + else
47212 + removelist="$lobj $libobj ${libobj}T"
47213 + fi
47214 +
47215 + $opt_dry_run || $RM $removelist
47216 + trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
47217 +
47218 + # On Cygwin there's no "real" PIC flag so we must build both object types
47219 + case $host_os in
47220 + cygwin* | mingw* | pw32* | os2*)
47221 + pic_mode=default
47222 + ;;
47223 + esac
47224 + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
47225 + # non-PIC code in shared libraries is not supported
47226 + pic_mode=default
47227 + fi
47228 +
47229 + # Calculate the filename of the output object if compiler does
47230 + # not support -o with -c
47231 + if test "$compiler_c_o" = no; then
47232 + output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
47233 + lockfile="$output_obj.lock"
47234 + removelist="$removelist $output_obj $lockfile"
47235 + trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
47236 + else
47237 + output_obj=
47238 + need_locks=no
47239 + lockfile=
47240 + fi
47241 +
47242 + # Lock this critical section if it is needed
47243 + # We use this script file to make the link, it avoids creating a new file
47244 + if test "$need_locks" = yes; then
47245 + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
47246 + func_echo "Waiting for $lockfile to be removed"
47247 + sleep 2
47248 + done
47249 + elif test "$need_locks" = warn; then
47250 + if test -f "$lockfile"; then
47251 + $ECHO "\
47252 +*** ERROR, $lockfile exists and contains:
47253 +`cat $lockfile 2>/dev/null`
47254 +
47255 +This indicates that another process is trying to use the same
47256 +temporary object file, and libtool could not work around it because
47257 +your compiler does not support \`-c' and \`-o' together. If you
47258 +repeat this compilation, it may succeed, by chance, but you had better
47259 +avoid parallel builds (make -j) in this platform, or get a better
47260 +compiler."
47261 +
47262 + $opt_dry_run || $RM $removelist
47263 + exit $EXIT_FAILURE
47264 + fi
47265 + $ECHO "$srcfile" > "$lockfile"
47266 + fi
47267 +
47268 + if test -n "$fix_srcfile_path"; then
47269 + eval srcfile=\"$fix_srcfile_path\"
47270 + fi
47271 + func_quote_for_eval "$srcfile"
47272 + qsrcfile=$func_quote_for_eval_result
47273 +
47274 + $opt_dry_run || $RM "$libobj" "${libobj}T"
47275 +
47276 + # Only build a PIC object if we are building libtool libraries.
47277 + if test "$build_libtool_libs" = yes; then
47278 + # Without this assignment, base_compile gets emptied.
47279 + fbsd_hideous_sh_bug=$base_compile
47280 +
47281 + if test "$pic_mode" != no; then
47282 + command="$base_compile $qsrcfile $pic_flag"
47283 + else
47284 + # Don't build PIC code
47285 + command="$base_compile $qsrcfile"
47286 + fi
47287 +
47288 + func_mkdir_p "$xdir$objdir"
47289 +
47290 + if test -z "$output_obj"; then
47291 + # Place PIC objects in $objdir
47292 + command="$command -o $lobj"
47293 + fi
47294 +
47295 + $opt_dry_run || $RM "$lobj" "$output_obj"
47296 +
47297 + func_show_eval "$command" \
47298 + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
47299 +
47300 + if test "$need_locks" = warn &&
47301 + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
47302 + $ECHO "\
47303 +*** ERROR, $lockfile contains:
47304 +`cat $lockfile 2>/dev/null`
47305 +
47306 +but it should contain:
47307 +$srcfile
47308 +
47309 +This indicates that another process is trying to use the same
47310 +temporary object file, and libtool could not work around it because
47311 +your compiler does not support \`-c' and \`-o' together. If you
47312 +repeat this compilation, it may succeed, by chance, but you had better
47313 +avoid parallel builds (make -j) in this platform, or get a better
47314 +compiler."
47315 +
47316 + $opt_dry_run || $RM $removelist
47317 + exit $EXIT_FAILURE
47318 + fi
47319 +
47320 + # Just move the object if needed, then go on to compile the next one
47321 + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
47322 + func_show_eval '$MV "$output_obj" "$lobj"' \
47323 + 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
47324 + fi
47325 +
47326 + # Allow error messages only from the first compilation.
47327 + if test "$suppress_opt" = yes; then
47328 + suppress_output=' >/dev/null 2>&1'
47329 + fi
47330 + fi
47331 +
47332 + # Only build a position-dependent object if we build old libraries.
47333 + if test "$build_old_libs" = yes; then
47334 + if test "$pic_mode" != yes; then
47335 + # Don't build PIC code
47336 + command="$base_compile $qsrcfile$pie_flag"
47337 + else
47338 + command="$base_compile $qsrcfile $pic_flag"
47339 + fi
47340 + if test "$compiler_c_o" = yes; then
47341 + command="$command -o $obj"
47342 + fi
47343 +
47344 + # Suppress compiler output if we already did a PIC compilation.
47345 + command="$command$suppress_output"
47346 + $opt_dry_run || $RM "$obj" "$output_obj"
47347 + func_show_eval "$command" \
47348 + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
47349 +
47350 + if test "$need_locks" = warn &&
47351 + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
47352 + $ECHO "\
47353 +*** ERROR, $lockfile contains:
47354 +`cat $lockfile 2>/dev/null`
47355 +
47356 +but it should contain:
47357 +$srcfile
47358 +
47359 +This indicates that another process is trying to use the same
47360 +temporary object file, and libtool could not work around it because
47361 +your compiler does not support \`-c' and \`-o' together. If you
47362 +repeat this compilation, it may succeed, by chance, but you had better
47363 +avoid parallel builds (make -j) in this platform, or get a better
47364 +compiler."
47365 +
47366 + $opt_dry_run || $RM $removelist
47367 + exit $EXIT_FAILURE
47368 + fi
47369 +
47370 + # Just move the object if needed
47371 + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
47372 + func_show_eval '$MV "$output_obj" "$obj"' \
47373 + 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
47374 + fi
47375 + fi
47376 +
47377 + $opt_dry_run || {
47378 + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
47379 +
47380 + # Unlock the critical section if it was locked
47381 + if test "$need_locks" != no; then
47382 + $RM "$lockfile"
47383 + fi
47384 + }
47385 +
47386 + exit $EXIT_SUCCESS
47387 +}
47388 +
47389 +test "$mode" = compile && func_mode_compile ${1+"$@"}
47390 +
47391 +
47392 +# func_mode_execute arg...
47393 +func_mode_execute ()
47394 +{
47395 + $opt_debug
47396 + # The first argument is the command name.
47397 + cmd="$nonopt"
47398 + test -z "$cmd" && \
47399 + func_fatal_help "you must specify a COMMAND"
47400 +
47401 + # Handle -dlopen flags immediately.
47402 + for file in $execute_dlfiles; do
47403 + test -f "$file" \
47404 + || func_fatal_help "\`$file' is not a file"
47405 +
47406 + dir=
47407 + case $file in
47408 + *.la)
47409 + # Check to see that this really is a libtool archive.
47410 + func_lalib_unsafe_p "$file" \
47411 + || func_fatal_help "\`$lib' is not a valid libtool archive"
47412 +
47413 + # Read the libtool library.
47414 + dlname=
47415 + library_names=
47416 + func_source "$file"
47417 +
47418 + # Skip this library if it cannot be dlopened.
47419 + if test -z "$dlname"; then
47420 + # Warn if it was a shared library.
47421 + test -n "$library_names" && \
47422 + func_warning "\`$file' was not linked with \`-export-dynamic'"
47423 + continue
47424 + fi
47425 +
47426 + func_dirname "$file" "" "."
47427 + dir="$func_dirname_result"
47428 +
47429 + if test -f "$dir/$objdir/$dlname"; then
47430 + dir="$dir/$objdir"
47431 + else
47432 + if test ! -f "$dir/$dlname"; then
47433 + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
47434 + fi
47435 + fi
47436 + ;;
47437 +
47438 + *.lo)
47439 + # Just add the directory containing the .lo file.
47440 + func_dirname "$file" "" "."
47441 + dir="$func_dirname_result"
47442 + ;;
47443 +
47444 + *)
47445 + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
47446 + continue
47447 + ;;
47448 + esac
47449 +
47450 + # Get the absolute pathname.
47451 + absdir=`cd "$dir" && pwd`
47452 + test -n "$absdir" && dir="$absdir"
47453 +
47454 + # Now add the directory to shlibpath_var.
47455 + if eval "test -z \"\$$shlibpath_var\""; then
47456 + eval "$shlibpath_var=\"\$dir\""
47457 + else
47458 + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
47459 + fi
47460 + done
47461 +
47462 + # This variable tells wrapper scripts just to set shlibpath_var
47463 + # rather than running their programs.
47464 + libtool_execute_magic="$magic"
47465 +
47466 + # Check if any of the arguments is a wrapper script.
47467 + args=
47468 + for file
47469 + do
47470 + case $file in
47471 + -*) ;;
47472 + *)
47473 + # Do a test to see if this is really a libtool program.
47474 + if func_ltwrapper_p "$file"; then
47475 + func_source "$file"
47476 +
47477 + # Transform arg to wrapped name.
47478 + file="$progdir/$program"
47479 + fi
47480 + ;;
47481 + esac
47482 + # Quote arguments (to preserve shell metacharacters).
47483 + func_quote_for_eval "$file"
47484 + args="$args $func_quote_for_eval_result"
47485 + done
47486 +
47487 + if test "X$opt_dry_run" = Xfalse; then
47488 + if test -n "$shlibpath_var"; then
47489 + # Export the shlibpath_var.
47490 + eval "export $shlibpath_var"
47491 + fi
47492 +
47493 + # Restore saved environment variables
47494 + for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
47495 + do
47496 + eval "if test \"\${save_$lt_var+set}\" = set; then
47497 + $lt_var=\$save_$lt_var; export $lt_var
47498 + else
47499 + $lt_unset $lt_var
47500 + fi"
47501 + done
47502 +
47503 + # Now prepare to actually exec the command.
47504 + exec_cmd="\$cmd$args"
47505 + else
47506 + # Display what would be done.
47507 + if test -n "$shlibpath_var"; then
47508 + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
47509 + $ECHO "export $shlibpath_var"
47510 + fi
47511 + $ECHO "$cmd$args"
47512 + exit $EXIT_SUCCESS
47513 + fi
47514 +}
47515 +
47516 +test "$mode" = execute && func_mode_execute ${1+"$@"}
47517 +
47518 +
47519 +# func_mode_finish arg...
47520 +func_mode_finish ()
47521 +{
47522 + $opt_debug
47523 + libdirs="$nonopt"
47524 + admincmds=
47525 +
47526 + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
47527 + for dir
47528 + do
47529 + libdirs="$libdirs $dir"
47530 + done
47531 +
47532 + for libdir in $libdirs; do
47533 + if test -n "$finish_cmds"; then
47534 + # Do each command in the finish commands.
47535 + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
47536 +'"$cmd"'"'
47537 + fi
47538 + if test -n "$finish_eval"; then
47539 + # Do the single finish_eval.
47540 + eval cmds=\"$finish_eval\"
47541 + $opt_dry_run || eval "$cmds" || admincmds="$admincmds
47542 + $cmds"
47543 + fi
47544 + done
47545 + fi
47546 +
47547 + # Exit here if they wanted silent mode.
47548 + $opt_silent && exit $EXIT_SUCCESS
47549 +
47550 + $ECHO "X----------------------------------------------------------------------" | $Xsed
47551 + $ECHO "Libraries have been installed in:"
47552 + for libdir in $libdirs; do
47553 + $ECHO " $libdir"
47554 + done
47555 + $ECHO
47556 + $ECHO "If you ever happen to want to link against installed libraries"
47557 + $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
47558 + $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
47559 + $ECHO "flag during linking and do at least one of the following:"
47560 + if test -n "$shlibpath_var"; then
47561 + $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
47562 + $ECHO " during execution"
47563 + fi
47564 + if test -n "$runpath_var"; then
47565 + $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
47566 + $ECHO " during linking"
47567 + fi
47568 + if test -n "$hardcode_libdir_flag_spec"; then
47569 + libdir=LIBDIR
47570 + eval flag=\"$hardcode_libdir_flag_spec\"
47571 +
47572 + $ECHO " - use the \`$flag' linker flag"
47573 + fi
47574 + if test -n "$admincmds"; then
47575 + $ECHO " - have your system administrator run these commands:$admincmds"
47576 + fi
47577 + if test -f /etc/ld.so.conf; then
47578 + $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
47579 + fi
47580 + $ECHO
47581 +
47582 + $ECHO "See any operating system documentation about shared libraries for"
47583 + case $host in
47584 + solaris2.[6789]|solaris2.1[0-9])
47585 + $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
47586 + $ECHO "pages."
47587 + ;;
47588 + *)
47589 + $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
47590 + ;;
47591 + esac
47592 + $ECHO "X----------------------------------------------------------------------" | $Xsed
47593 + exit $EXIT_SUCCESS
47594 +}
47595 +
47596 +test "$mode" = finish && func_mode_finish ${1+"$@"}
47597 +
47598 +
47599 +# func_mode_install arg...
47600 +func_mode_install ()
47601 +{
47602 + $opt_debug
47603 + # There may be an optional sh(1) argument at the beginning of
47604 + # install_prog (especially on Windows NT).
47605 + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
47606 + # Allow the use of GNU shtool's install command.
47607 + $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
47608 + # Aesthetically quote it.
47609 + func_quote_for_eval "$nonopt"
47610 + install_prog="$func_quote_for_eval_result "
47611 + arg=$1
47612 + shift
47613 + else
47614 + install_prog=
47615 + arg=$nonopt
47616 + fi
47617 +
47618 + # The real first argument should be the name of the installation program.
47619 + # Aesthetically quote it.
47620 + func_quote_for_eval "$arg"
47621 + install_prog="$install_prog$func_quote_for_eval_result"
47622 +
47623 + # We need to accept at least all the BSD install flags.
47624 + dest=
47625 + files=
47626 + opts=
47627 + prev=
47628 + install_type=
47629 + isdir=no
47630 + stripme=
47631 + for arg
47632 + do
47633 + if test -n "$dest"; then
47634 + files="$files $dest"
47635 + dest=$arg
47636 + continue
47637 + fi
47638 +
47639 + case $arg in
47640 + -d) isdir=yes ;;
47641 + -f)
47642 + case " $install_prog " in
47643 + *[\\\ /]cp\ *) ;;
47644 + *) prev=$arg ;;
47645 + esac
47646 + ;;
47647 + -g | -m | -o)
47648 + prev=$arg
47649 + ;;
47650 + -s)
47651 + stripme=" -s"
47652 + continue
47653 + ;;
47654 + -*)
47655 + ;;
47656 + *)
47657 + # If the previous option needed an argument, then skip it.
47658 + if test -n "$prev"; then
47659 + prev=
47660 + else
47661 + dest=$arg
47662 + continue
47663 + fi
47664 + ;;
47665 + esac
47666 +
47667 + # Aesthetically quote the argument.
47668 + func_quote_for_eval "$arg"
47669 + install_prog="$install_prog $func_quote_for_eval_result"
47670 + done
47671 +
47672 + test -z "$install_prog" && \
47673 + func_fatal_help "you must specify an install program"
47674 +
47675 + test -n "$prev" && \
47676 + func_fatal_help "the \`$prev' option requires an argument"
47677 +
47678 + if test -z "$files"; then
47679 + if test -z "$dest"; then
47680 + func_fatal_help "no file or destination specified"
47681 + else
47682 + func_fatal_help "you must specify a destination"
47683 + fi
47684 + fi
47685 +
47686 + # Strip any trailing slash from the destination.
47687 + func_stripname '' '/' "$dest"
47688 + dest=$func_stripname_result
47689 +
47690 + # Check to see that the destination is a directory.
47691 + test -d "$dest" && isdir=yes
47692 + if test "$isdir" = yes; then
47693 + destdir="$dest"
47694 + destname=
47695 + else
47696 + func_dirname "$dest" "" "."
47697 + destdir="$func_dirname_result"
47698 + func_basename "$dest"
47699 + destname="$func_basename_result"
47700 +
47701 + # Not a directory, so check to see that there is only one file specified.
47702 + set dummy $files; shift
47703 + test "$#" -gt 1 && \
47704 + func_fatal_help "\`$dest' is not a directory"
47705 + fi
47706 + case $destdir in
47707 + [\\/]* | [A-Za-z]:[\\/]*) ;;
47708 + *)
47709 + for file in $files; do
47710 + case $file in
47711 + *.lo) ;;
47712 + *)
47713 + func_fatal_help "\`$destdir' must be an absolute directory name"
47714 + ;;
47715 + esac
47716 + done
47717 + ;;
47718 + esac
47719 +
47720 + # This variable tells wrapper scripts just to set variables rather
47721 + # than running their programs.
47722 + libtool_install_magic="$magic"
47723 +
47724 + staticlibs=
47725 + future_libdirs=
47726 + current_libdirs=
47727 + for file in $files; do
47728 +
47729 + # Do each installation.
47730 + case $file in
47731 + *.$libext)
47732 + # Do the static libraries later.
47733 + staticlibs="$staticlibs $file"
47734 + ;;
47735 +
47736 + *.la)
47737 + # Check to see that this really is a libtool archive.
47738 + func_lalib_unsafe_p "$file" \
47739 + || func_fatal_help "\`$file' is not a valid libtool archive"
47740 +
47741 + library_names=
47742 + old_library=
47743 + relink_command=
47744 + func_source "$file"
47745 +
47746 + # Add the libdir to current_libdirs if it is the destination.
47747 + if test "X$destdir" = "X$libdir"; then
47748 + case "$current_libdirs " in
47749 + *" $libdir "*) ;;
47750 + *) current_libdirs="$current_libdirs $libdir" ;;
47751 + esac
47752 + else
47753 + # Note the libdir as a future libdir.
47754 + case "$future_libdirs " in
47755 + *" $libdir "*) ;;
47756 + *) future_libdirs="$future_libdirs $libdir" ;;
47757 + esac
47758 + fi
47759 +
47760 + func_dirname "$file" "/" ""
47761 + dir="$func_dirname_result"
47762 + dir="$dir$objdir"
47763 +
47764 + if test -n "$relink_command"; then
47765 + # Determine the prefix the user has applied to our future dir.
47766 + inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
47767 +
47768 + # Don't allow the user to place us outside of our expected
47769 + # location b/c this prevents finding dependent libraries that
47770 + # are installed to the same prefix.
47771 + # At present, this check doesn't affect windows .dll's that
47772 + # are installed into $libdir/../bin (currently, that works fine)
47773 + # but it's something to keep an eye on.
47774 + test "$inst_prefix_dir" = "$destdir" && \
47775 + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
47776 +
47777 + if test -n "$inst_prefix_dir"; then
47778 + # Stick the inst_prefix_dir data into the link command.
47779 + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
47780 + else
47781 + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
47782 + fi
47783 +
47784 + func_warning "relinking \`$file'"
47785 + func_show_eval "$relink_command" \
47786 + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
47787 + fi
47788 +
47789 + # See the names of the shared library.
47790 + set dummy $library_names; shift
47791 + if test -n "$1"; then
47792 + realname="$1"
47793 + shift
47794 +
47795 + srcname="$realname"
47796 + test -n "$relink_command" && srcname="$realname"T
47797 +
47798 + # Install the shared library and build the symlinks.
47799 + func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
47800 + 'exit $?'
47801 + tstripme="$stripme"
47802 + case $host_os in
47803 + cygwin* | mingw* | pw32*)
47804 + case $realname in
47805 + *.dll.a)
47806 + tstripme=""
47807 + ;;
47808 + esac
47809 + ;;
47810 + esac
47811 + if test -n "$tstripme" && test -n "$striplib"; then
47812 + func_show_eval "$striplib $destdir/$realname" 'exit $?'
47813 + fi
47814 +
47815 + if test "$#" -gt 0; then
47816 + # Delete the old symlinks, and create new ones.
47817 + # Try `ln -sf' first, because the `ln' binary might depend on
47818 + # the symlink we replace! Solaris /bin/ln does not understand -f,
47819 + # so we also need to try rm && ln -s.
47820 + for linkname
47821 + do
47822 + test "$linkname" != "$realname" \
47823 + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
47824 + done
47825 + fi
47826 +
47827 + # Do each command in the postinstall commands.
47828 + lib="$destdir/$realname"
47829 + func_execute_cmds "$postinstall_cmds" 'exit $?'
47830 + fi
47831 +
47832 + # Install the pseudo-library for information purposes.
47833 + func_basename "$file"
47834 + name="$func_basename_result"
47835 + instname="$dir/$name"i
47836 + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
47837 +
47838 + # Maybe install the static library, too.
47839 + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
47840 + ;;
47841 +
47842 + *.lo)
47843 + # Install (i.e. copy) a libtool object.
47844 +
47845 + # Figure out destination file name, if it wasn't already specified.
47846 + if test -n "$destname"; then
47847 + destfile="$destdir/$destname"
47848 + else
47849 + func_basename "$file"
47850 + destfile="$func_basename_result"
47851 + destfile="$destdir/$destfile"
47852 + fi
47853 +
47854 + # Deduce the name of the destination old-style object file.
47855 + case $destfile in
47856 + *.lo)
47857 + func_lo2o "$destfile"
47858 + staticdest=$func_lo2o_result
47859 + ;;
47860 + *.$objext)
47861 + staticdest="$destfile"
47862 + destfile=
47863 + ;;
47864 + *)
47865 + func_fatal_help "cannot copy a libtool object to \`$destfile'"
47866 + ;;
47867 + esac
47868 +
47869 + # Install the libtool object if requested.
47870 + test -n "$destfile" && \
47871 + func_show_eval "$install_prog $file $destfile" 'exit $?'
47872 +
47873 + # Install the old object if enabled.
47874 + if test "$build_old_libs" = yes; then
47875 + # Deduce the name of the old-style object file.
47876 + func_lo2o "$file"
47877 + staticobj=$func_lo2o_result
47878 + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
47879 + fi
47880 + exit $EXIT_SUCCESS
47881 + ;;
47882 +
47883 + *)
47884 + # Figure out destination file name, if it wasn't already specified.
47885 + if test -n "$destname"; then
47886 + destfile="$destdir/$destname"
47887 + else
47888 + func_basename "$file"
47889 + destfile="$func_basename_result"
47890 + destfile="$destdir/$destfile"
47891 + fi
47892 +
47893 + # If the file is missing, and there is a .exe on the end, strip it
47894 + # because it is most likely a libtool script we actually want to
47895 + # install
47896 + stripped_ext=""
47897 + case $file in
47898 + *.exe)
47899 + if test ! -f "$file"; then
47900 + func_stripname '' '.exe' "$file"
47901 + file=$func_stripname_result
47902 + stripped_ext=".exe"
47903 + fi
47904 + ;;
47905 + esac
47906 +
47907 + # Do a test to see if this is really a libtool program.
47908 + case $host in
47909 + *cygwin*|*mingw*)
47910 + func_stripname '' '.exe' "$file"
47911 + wrapper=$func_stripname_result
47912 + ;;
47913 + *)
47914 + wrapper=$file
47915 + ;;
47916 + esac
47917 + if func_ltwrapper_p "$wrapper"; then
47918 + notinst_deplibs=
47919 + relink_command=
47920 +
47921 + func_source "$wrapper"
47922 +
47923 + # Check the variables that should have been set.
47924 + test -z "$generated_by_libtool_version" && \
47925 + func_fatal_error "invalid libtool wrapper script \`$wrapper'"
47926 +
47927 + finalize=yes
47928 + for lib in $notinst_deplibs; do
47929 + # Check to see that each library is installed.
47930 + libdir=
47931 + if test -f "$lib"; then
47932 + func_source "$lib"
47933 + fi
47934 + libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
47935 + if test -n "$libdir" && test ! -f "$libfile"; then
47936 + func_warning "\`$lib' has not been installed in \`$libdir'"
47937 + finalize=no
47938 + fi
47939 + done
47940 +
47941 + relink_command=
47942 + func_source "$wrapper"
47943 +
47944 + outputname=
47945 + if test "$fast_install" = no && test -n "$relink_command"; then
47946 + $opt_dry_run || {
47947 + if test "$finalize" = yes; then
47948 + tmpdir=`func_mktempdir`
47949 + func_basename "$file$stripped_ext"
47950 + file="$func_basename_result"
47951 + outputname="$tmpdir/$file"
47952 + # Replace the output file specification.
47953 + relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
47954 +
47955 + $opt_silent || {
47956 + func_quote_for_expand "$relink_command"
47957 + eval "func_echo $func_quote_for_expand_result"
47958 + }
47959 + if eval "$relink_command"; then :
47960 + else
47961 + func_error "error: relink \`$file' with the above command before installing it"
47962 + $opt_dry_run || ${RM}r "$tmpdir"
47963 + continue
47964 + fi
47965 + file="$outputname"
47966 + else
47967 + func_warning "cannot relink \`$file'"
47968 + fi
47969 + }
47970 + else
47971 + # Install the binary that we compiled earlier.
47972 + file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
47973 + fi
47974 + fi
47975 +
47976 + # remove .exe since cygwin /usr/bin/install will append another
47977 + # one anyway
47978 + case $install_prog,$host in
47979 + */usr/bin/install*,*cygwin*)
47980 + case $file:$destfile in
47981 + *.exe:*.exe)
47982 + # this is ok
47983 + ;;
47984 + *.exe:*)
47985 + destfile=$destfile.exe
47986 + ;;
47987 + *:*.exe)
47988 + func_stripname '' '.exe' "$destfile"
47989 + destfile=$func_stripname_result
47990 + ;;
47991 + esac
47992 + ;;
47993 + esac
47994 + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
47995 + $opt_dry_run || if test -n "$outputname"; then
47996 + ${RM}r "$tmpdir"
47997 + fi
47998 + ;;
47999 + esac
48000 + done
48001 +
48002 + for file in $staticlibs; do
48003 + func_basename "$file"
48004 + name="$func_basename_result"
48005 +
48006 + # Set up the ranlib parameters.
48007 + oldlib="$destdir/$name"
48008 +
48009 + func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
48010 +
48011 + if test -n "$stripme" && test -n "$old_striplib"; then
48012 + func_show_eval "$old_striplib $oldlib" 'exit $?'
48013 + fi
48014 +
48015 + # Do each command in the postinstall commands.
48016 + func_execute_cmds "$old_postinstall_cmds" 'exit $?'
48017 + done
48018 +
48019 + test -n "$future_libdirs" && \
48020 + func_warning "remember to run \`$progname --finish$future_libdirs'"
48021 +
48022 + if test -n "$current_libdirs"; then
48023 + # Maybe just do a dry run.
48024 + $opt_dry_run && current_libdirs=" -n$current_libdirs"
48025 + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
48026 + else
48027 + exit $EXIT_SUCCESS
48028 + fi
48029 +}
48030 +
48031 +test "$mode" = install && func_mode_install ${1+"$@"}
48032 +
48033 +
48034 +# func_mode_link arg...
48035 +func_mode_link ()
48036 +{
48037 + $opt_debug
48038 + case $host in
48039 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
48040 + # It is impossible to link a dll without this setting, and
48041 + # we shouldn't force the makefile maintainer to figure out
48042 + # which system we are compiling for in order to pass an extra
48043 + # flag for every libtool invocation.
48044 + # allow_undefined=no
48045 +
48046 + # FIXME: Unfortunately, there are problems with the above when trying
48047 + # to make a dll which has undefined symbols, in which case not
48048 + # even a static library is built. For now, we need to specify
48049 + # -no-undefined on the libtool link line when we can be certain
48050 + # that all symbols are satisfied, otherwise we get a static library.
48051 + allow_undefined=yes
48052 + ;;
48053 + *)
48054 + allow_undefined=yes
48055 + ;;
48056 + esac
48057 + libtool_args=$nonopt
48058 + base_compile="$nonopt $@"
48059 + compile_command=$nonopt
48060 + finalize_command=$nonopt
48061 +
48062 + compile_rpath=
48063 + finalize_rpath=
48064 + compile_shlibpath=
48065 + finalize_shlibpath=
48066 + convenience=
48067 + old_convenience=
48068 + deplibs=
48069 + old_deplibs=
48070 + compiler_flags=
48071 + linker_flags=
48072 + dllsearchpath=
48073 + lib_search_path=`pwd`
48074 + inst_prefix_dir=
48075 + new_inherited_linker_flags=
48076 +
48077 + avoid_version=no
48078 + dlfiles=
48079 + dlprefiles=
48080 + dlself=no
48081 + export_dynamic=no
48082 + export_symbols=
48083 + export_symbols_regex=
48084 + generated=
48085 + libobjs=
48086 + ltlibs=
48087 + module=no
48088 + no_install=no
48089 + objs=
48090 + non_pic_objects=
48091 + precious_files_regex=
48092 + prefer_static_libs=no
48093 + preload=no
48094 + prev=
48095 + prevarg=
48096 + release=
48097 + rpath=
48098 + xrpath=
48099 + perm_rpath=
48100 + temp_rpath=
48101 + thread_safe=no
48102 + vinfo=
48103 + vinfo_number=no
48104 + weak_libs=
48105 + single_module="${wl}-single_module"
48106 + func_infer_tag $base_compile
48107 +
48108 + # We need to know -static, to get the right output filenames.
48109 + for arg
48110 + do
48111 + case $arg in
48112 + -shared)
48113 + test "$build_libtool_libs" != yes && \
48114 + func_fatal_configuration "can not build a shared library"
48115 + build_old_libs=no
48116 + break
48117 + ;;
48118 + -all-static | -static | -static-libtool-libs)
48119 + case $arg in
48120 + -all-static)
48121 + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
48122 + func_warning "complete static linking is impossible in this configuration"
48123 + fi
48124 + if test -n "$link_static_flag"; then
48125 + dlopen_self=$dlopen_self_static
48126 + # See comment for -static flag below, for more details.
48127 + func_append compile_command " $link_static_flag"
48128 + func_append finalize_command " $link_static_flag"
48129 + fi
48130 + prefer_static_libs=yes
48131 + ;;
48132 + -static)
48133 + if test -z "$pic_flag" && test -n "$link_static_flag"; then
48134 + dlopen_self=$dlopen_self_static
48135 + fi
48136 + prefer_static_libs=built
48137 + ;;
48138 + -static-libtool-libs)
48139 + if test -z "$pic_flag" && test -n "$link_static_flag"; then
48140 + dlopen_self=$dlopen_self_static
48141 + fi
48142 + prefer_static_libs=yes
48143 + ;;
48144 + esac
48145 + build_libtool_libs=no
48146 + build_old_libs=yes
48147 + break
48148 + ;;
48149 + esac
48150 + done
48151 +
48152 + # See if our shared archives depend on static archives.
48153 + test -n "$old_archive_from_new_cmds" && build_old_libs=yes
48154 +
48155 + # Go through the arguments, transforming them on the way.
48156 + while test "$#" -gt 0; do
48157 + arg="$1"
48158 + shift
48159 + func_quote_for_eval "$arg"
48160 + qarg=$func_quote_for_eval_unquoted_result
48161 + func_append libtool_args " $func_quote_for_eval_result"
48162 +
48163 + # If the previous option needs an argument, assign it.
48164 + if test -n "$prev"; then
48165 + case $prev in
48166 + output)
48167 + func_append compile_command " @OUTPUT@"
48168 + func_append finalize_command " @OUTPUT@"
48169 + ;;
48170 + esac
48171 +
48172 + case $prev in
48173 + dlfiles|dlprefiles)
48174 + if test "$preload" = no; then
48175 + # Add the symbol object into the linking commands.
48176 + func_append compile_command " @SYMFILE@"
48177 + func_append finalize_command " @SYMFILE@"
48178 + preload=yes
48179 + fi
48180 + case $arg in
48181 + *.la | *.lo) ;; # We handle these cases below.
48182 + force)
48183 + if test "$dlself" = no; then
48184 + dlself=needless
48185 + export_dynamic=yes
48186 + fi
48187 + prev=
48188 + continue
48189 + ;;
48190 + self)
48191 + if test "$prev" = dlprefiles; then
48192 + dlself=yes
48193 + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
48194 + dlself=yes
48195 + else
48196 + dlself=needless
48197 + export_dynamic=yes
48198 + fi
48199 + prev=
48200 + continue
48201 + ;;
48202 + *)
48203 + if test "$prev" = dlfiles; then
48204 + dlfiles="$dlfiles $arg"
48205 + else
48206 + dlprefiles="$dlprefiles $arg"
48207 + fi
48208 + prev=
48209 + continue
48210 + ;;
48211 + esac
48212 + ;;
48213 + expsyms)
48214 + export_symbols="$arg"
48215 + test -f "$arg" \
48216 + || func_fatal_error "symbol file \`$arg' does not exist"
48217 + prev=
48218 + continue
48219 + ;;
48220 + expsyms_regex)
48221 + export_symbols_regex="$arg"
48222 + prev=
48223 + continue
48224 + ;;
48225 + framework)
48226 + case $host in
48227 + *-*-darwin*)
48228 + case "$deplibs " in
48229 + *" $qarg.ltframework "*) ;;
48230 + *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
48231 + ;;
48232 + esac
48233 + ;;
48234 + esac
48235 + prev=
48236 + continue
48237 + ;;
48238 + inst_prefix)
48239 + inst_prefix_dir="$arg"
48240 + prev=
48241 + continue
48242 + ;;
48243 + objectlist)
48244 + if test -f "$arg"; then
48245 + save_arg=$arg
48246 + moreargs=
48247 + for fil in `cat "$save_arg"`
48248 + do
48249 +# moreargs="$moreargs $fil"
48250 + arg=$fil
48251 + # A libtool-controlled object.
48252 +
48253 + # Check to see that this really is a libtool object.
48254 + if func_lalib_unsafe_p "$arg"; then
48255 + pic_object=
48256 + non_pic_object=
48257 +
48258 + # Read the .lo file
48259 + func_source "$arg"
48260 +
48261 + if test -z "$pic_object" ||
48262 + test -z "$non_pic_object" ||
48263 + test "$pic_object" = none &&
48264 + test "$non_pic_object" = none; then
48265 + func_fatal_error "cannot find name of object for \`$arg'"
48266 + fi
48267 +
48268 + # Extract subdirectory from the argument.
48269 + func_dirname "$arg" "/" ""
48270 + xdir="$func_dirname_result"
48271 +
48272 + if test "$pic_object" != none; then
48273 + # Prepend the subdirectory the object is found in.
48274 + pic_object="$xdir$pic_object"
48275 +
48276 + if test "$prev" = dlfiles; then
48277 + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48278 + dlfiles="$dlfiles $pic_object"
48279 + prev=
48280 + continue
48281 + else
48282 + # If libtool objects are unsupported, then we need to preload.
48283 + prev=dlprefiles
48284 + fi
48285 + fi
48286 +
48287 + # CHECK ME: I think I busted this. -Ossama
48288 + if test "$prev" = dlprefiles; then
48289 + # Preload the old-style object.
48290 + dlprefiles="$dlprefiles $pic_object"
48291 + prev=
48292 + fi
48293 +
48294 + # A PIC object.
48295 + func_append libobjs " $pic_object"
48296 + arg="$pic_object"
48297 + fi
48298 +
48299 + # Non-PIC object.
48300 + if test "$non_pic_object" != none; then
48301 + # Prepend the subdirectory the object is found in.
48302 + non_pic_object="$xdir$non_pic_object"
48303 +
48304 + # A standard non-PIC object
48305 + func_append non_pic_objects " $non_pic_object"
48306 + if test -z "$pic_object" || test "$pic_object" = none ; then
48307 + arg="$non_pic_object"
48308 + fi
48309 + else
48310 + # If the PIC object exists, use it instead.
48311 + # $xdir was prepended to $pic_object above.
48312 + non_pic_object="$pic_object"
48313 + func_append non_pic_objects " $non_pic_object"
48314 + fi
48315 + else
48316 + # Only an error if not doing a dry-run.
48317 + if $opt_dry_run; then
48318 + # Extract subdirectory from the argument.
48319 + func_dirname "$arg" "/" ""
48320 + xdir="$func_dirname_result"
48321 +
48322 + func_lo2o "$arg"
48323 + pic_object=$xdir$objdir/$func_lo2o_result
48324 + non_pic_object=$xdir$func_lo2o_result
48325 + func_append libobjs " $pic_object"
48326 + func_append non_pic_objects " $non_pic_object"
48327 + else
48328 + func_fatal_error "\`$arg' is not a valid libtool object"
48329 + fi
48330 + fi
48331 + done
48332 + else
48333 + func_fatal_error "link input file \`$arg' does not exist"
48334 + fi
48335 + arg=$save_arg
48336 + prev=
48337 + continue
48338 + ;;
48339 + precious_regex)
48340 + precious_files_regex="$arg"
48341 + prev=
48342 + continue
48343 + ;;
48344 + release)
48345 + release="-$arg"
48346 + prev=
48347 + continue
48348 + ;;
48349 + rpath | xrpath)
48350 + # We need an absolute path.
48351 + case $arg in
48352 + [\\/]* | [A-Za-z]:[\\/]*) ;;
48353 + *)
48354 + func_fatal_error "only absolute run-paths are allowed"
48355 + ;;
48356 + esac
48357 + if test "$prev" = rpath; then
48358 + case "$rpath " in
48359 + *" $arg "*) ;;
48360 + *) rpath="$rpath $arg" ;;
48361 + esac
48362 + else
48363 + case "$xrpath " in
48364 + *" $arg "*) ;;
48365 + *) xrpath="$xrpath $arg" ;;
48366 + esac
48367 + fi
48368 + prev=
48369 + continue
48370 + ;;
48371 + shrext)
48372 + shrext_cmds="$arg"
48373 + prev=
48374 + continue
48375 + ;;
48376 + weak)
48377 + weak_libs="$weak_libs $arg"
48378 + prev=
48379 + continue
48380 + ;;
48381 + xcclinker)
48382 + linker_flags="$linker_flags $qarg"
48383 + compiler_flags="$compiler_flags $qarg"
48384 + prev=
48385 + func_append compile_command " $qarg"
48386 + func_append finalize_command " $qarg"
48387 + continue
48388 + ;;
48389 + xcompiler)
48390 + compiler_flags="$compiler_flags $qarg"
48391 + prev=
48392 + func_append compile_command " $qarg"
48393 + func_append finalize_command " $qarg"
48394 + continue
48395 + ;;
48396 + xlinker)
48397 + linker_flags="$linker_flags $qarg"
48398 + compiler_flags="$compiler_flags $wl$qarg"
48399 + prev=
48400 + func_append compile_command " $wl$qarg"
48401 + func_append finalize_command " $wl$qarg"
48402 + continue
48403 + ;;
48404 + *)
48405 + eval "$prev=\"\$arg\""
48406 + prev=
48407 + continue
48408 + ;;
48409 + esac
48410 + fi # test -n "$prev"
48411 +
48412 + prevarg="$arg"
48413 +
48414 + case $arg in
48415 + -all-static)
48416 + # The effects of -all-static are defined in a previous loop.
48417 + continue
48418 + ;;
48419 +
48420 + -allow-undefined)
48421 + # FIXME: remove this flag sometime in the future.
48422 + func_fatal_error "\`-allow-undefined' must not be used because it is the default"
48423 + ;;
48424 +
48425 + -avoid-version)
48426 + avoid_version=yes
48427 + continue
48428 + ;;
48429 +
48430 + -dlopen)
48431 + prev=dlfiles
48432 + continue
48433 + ;;
48434 +
48435 + -dlpreopen)
48436 + prev=dlprefiles
48437 + continue
48438 + ;;
48439 +
48440 + -export-dynamic)
48441 + export_dynamic=yes
48442 + continue
48443 + ;;
48444 +
48445 + -export-symbols | -export-symbols-regex)
48446 + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
48447 + func_fatal_error "more than one -exported-symbols argument is not allowed"
48448 + fi
48449 + if test "X$arg" = "X-export-symbols"; then
48450 + prev=expsyms
48451 + else
48452 + prev=expsyms_regex
48453 + fi
48454 + continue
48455 + ;;
48456 +
48457 + -framework)
48458 + prev=framework
48459 + continue
48460 + ;;
48461 +
48462 + -inst-prefix-dir)
48463 + prev=inst_prefix
48464 + continue
48465 + ;;
48466 +
48467 + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
48468 + # so, if we see these flags be careful not to treat them like -L
48469 + -L[A-Z][A-Z]*:*)
48470 + case $with_gcc/$host in
48471 + no/*-*-irix* | /*-*-irix*)
48472 + func_append compile_command " $arg"
48473 + func_append finalize_command " $arg"
48474 + ;;
48475 + esac
48476 + continue
48477 + ;;
48478 +
48479 + -L*)
48480 + func_stripname '-L' '' "$arg"
48481 + dir=$func_stripname_result
48482 + # We need an absolute path.
48483 + case $dir in
48484 + [\\/]* | [A-Za-z]:[\\/]*) ;;
48485 + *)
48486 + absdir=`cd "$dir" && pwd`
48487 + test -z "$absdir" && \
48488 + func_fatal_error "cannot determine absolute directory name of \`$dir'"
48489 + dir="$absdir"
48490 + ;;
48491 + esac
48492 + case "$deplibs " in
48493 + *" -L$dir "*) ;;
48494 + *)
48495 + deplibs="$deplibs -L$dir"
48496 + lib_search_path="$lib_search_path $dir"
48497 + ;;
48498 + esac
48499 + case $host in
48500 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
48501 + testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
48502 + case :$dllsearchpath: in
48503 + *":$dir:"*) ;;
48504 + *) dllsearchpath="$dllsearchpath:$dir";;
48505 + esac
48506 + case :$dllsearchpath: in
48507 + *":$testbindir:"*) ;;
48508 + *) dllsearchpath="$dllsearchpath:$testbindir";;
48509 + esac
48510 + ;;
48511 + esac
48512 + continue
48513 + ;;
48514 +
48515 + -l*)
48516 + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
48517 + case $host in
48518 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
48519 + # These systems don't actually have a C or math library (as such)
48520 + continue
48521 + ;;
48522 + *-*-os2*)
48523 + # These systems don't actually have a C library (as such)
48524 + test "X$arg" = "X-lc" && continue
48525 + ;;
48526 + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
48527 + # Do not include libc due to us having libc/libc_r.
48528 + test "X$arg" = "X-lc" && continue
48529 + ;;
48530 + *-*-rhapsody* | *-*-darwin1.[012])
48531 + # Rhapsody C and math libraries are in the System framework
48532 + deplibs="$deplibs System.ltframework"
48533 + continue
48534 + ;;
48535 + *-*-sco3.2v5* | *-*-sco5v6*)
48536 + # Causes problems with __ctype
48537 + test "X$arg" = "X-lc" && continue
48538 + ;;
48539 + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
48540 + # Compiler inserts libc in the correct place for threads to work
48541 + test "X$arg" = "X-lc" && continue
48542 + ;;
48543 + esac
48544 + elif test "X$arg" = "X-lc_r"; then
48545 + case $host in
48546 + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
48547 + # Do not include libc_r directly, use -pthread flag.
48548 + continue
48549 + ;;
48550 + esac
48551 + fi
48552 + deplibs="$deplibs $arg"
48553 + continue
48554 + ;;
48555 +
48556 + -module)
48557 + module=yes
48558 + continue
48559 + ;;
48560 +
48561 + # Tru64 UNIX uses -model [arg] to determine the layout of C++
48562 + # classes, name mangling, and exception handling.
48563 + # Darwin uses the -arch flag to determine output architecture.
48564 + -model|-arch|-isysroot)
48565 + compiler_flags="$compiler_flags $arg"
48566 + func_append compile_command " $arg"
48567 + func_append finalize_command " $arg"
48568 + prev=xcompiler
48569 + continue
48570 + ;;
48571 +
48572 + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
48573 + compiler_flags="$compiler_flags $arg"
48574 + func_append compile_command " $arg"
48575 + func_append finalize_command " $arg"
48576 + case "$new_inherited_linker_flags " in
48577 + *" $arg "*) ;;
48578 + * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
48579 + esac
48580 + continue
48581 + ;;
48582 +
48583 + -multi_module)
48584 + single_module="${wl}-multi_module"
48585 + continue
48586 + ;;
48587 +
48588 + -no-fast-install)
48589 + fast_install=no
48590 + continue
48591 + ;;
48592 +
48593 + -no-install)
48594 + case $host in
48595 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
48596 + # The PATH hackery in wrapper scripts is required on Windows
48597 + # in order for the loader to find any dlls it needs.
48598 + func_warning "\`-no-install' is ignored for $host"
48599 + func_warning "assuming \`-no-fast-install' instead"
48600 + fast_install=no
48601 + ;;
48602 + *) no_install=yes ;;
48603 + esac
48604 + continue
48605 + ;;
48606 +
48607 + -no-undefined)
48608 + allow_undefined=no
48609 + continue
48610 + ;;
48611 +
48612 + -objectlist)
48613 + prev=objectlist
48614 + continue
48615 + ;;
48616 +
48617 + -o) prev=output ;;
48618 +
48619 + -precious-files-regex)
48620 + prev=precious_regex
48621 + continue
48622 + ;;
48623 +
48624 + -release)
48625 + prev=release
48626 + continue
48627 + ;;
48628 +
48629 + -rpath)
48630 + prev=rpath
48631 + continue
48632 + ;;
48633 +
48634 + -R)
48635 + prev=xrpath
48636 + continue
48637 + ;;
48638 +
48639 + -R*)
48640 + func_stripname '-R' '' "$arg"
48641 + dir=$func_stripname_result
48642 + # We need an absolute path.
48643 + case $dir in
48644 + [\\/]* | [A-Za-z]:[\\/]*) ;;
48645 + *)
48646 + func_fatal_error "only absolute run-paths are allowed"
48647 + ;;
48648 + esac
48649 + case "$xrpath " in
48650 + *" $dir "*) ;;
48651 + *) xrpath="$xrpath $dir" ;;
48652 + esac
48653 + continue
48654 + ;;
48655 +
48656 + -shared)
48657 + # The effects of -shared are defined in a previous loop.
48658 + continue
48659 + ;;
48660 +
48661 + -shrext)
48662 + prev=shrext
48663 + continue
48664 + ;;
48665 +
48666 + -static | -static-libtool-libs)
48667 + # The effects of -static are defined in a previous loop.
48668 + # We used to do the same as -all-static on platforms that
48669 + # didn't have a PIC flag, but the assumption that the effects
48670 + # would be equivalent was wrong. It would break on at least
48671 + # Digital Unix and AIX.
48672 + continue
48673 + ;;
48674 +
48675 + -thread-safe)
48676 + thread_safe=yes
48677 + continue
48678 + ;;
48679 +
48680 + -version-info)
48681 + prev=vinfo
48682 + continue
48683 + ;;
48684 +
48685 + -version-number)
48686 + prev=vinfo
48687 + vinfo_number=yes
48688 + continue
48689 + ;;
48690 +
48691 + -weak)
48692 + prev=weak
48693 + continue
48694 + ;;
48695 +
48696 + -Wc,*)
48697 + func_stripname '-Wc,' '' "$arg"
48698 + args=$func_stripname_result
48699 + arg=
48700 + save_ifs="$IFS"; IFS=','
48701 + for flag in $args; do
48702 + IFS="$save_ifs"
48703 + func_quote_for_eval "$flag"
48704 + arg="$arg $wl$func_quote_for_eval_result"
48705 + compiler_flags="$compiler_flags $func_quote_for_eval_result"
48706 + done
48707 + IFS="$save_ifs"
48708 + func_stripname ' ' '' "$arg"
48709 + arg=$func_stripname_result
48710 + ;;
48711 +
48712 + -Wl,*)
48713 + func_stripname '-Wl,' '' "$arg"
48714 + args=$func_stripname_result
48715 + arg=
48716 + save_ifs="$IFS"; IFS=','
48717 + for flag in $args; do
48718 + IFS="$save_ifs"
48719 + func_quote_for_eval "$flag"
48720 + arg="$arg $wl$func_quote_for_eval_result"
48721 + compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
48722 + linker_flags="$linker_flags $func_quote_for_eval_result"
48723 + done
48724 + IFS="$save_ifs"
48725 + func_stripname ' ' '' "$arg"
48726 + arg=$func_stripname_result
48727 + ;;
48728 +
48729 + -Xcompiler)
48730 + prev=xcompiler
48731 + continue
48732 + ;;
48733 +
48734 + -Xlinker)
48735 + prev=xlinker
48736 + continue
48737 + ;;
48738 +
48739 + -XCClinker)
48740 + prev=xcclinker
48741 + continue
48742 + ;;
48743 +
48744 + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
48745 + # -r[0-9][0-9]* specifies the processor on the SGI compiler
48746 + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
48747 + # +DA*, +DD* enable 64-bit mode on the HP compiler
48748 + # -q* pass through compiler args for the IBM compiler
48749 + # -m*, -t[45]*, -txscale* pass through architecture-specific
48750 + # compiler args for GCC
48751 + # -F/path gives path to uninstalled frameworks, gcc on darwin
48752 + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
48753 + # @file GCC response files
48754 + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
48755 + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
48756 + func_quote_for_eval "$arg"
48757 + arg="$func_quote_for_eval_result"
48758 + func_append compile_command " $arg"
48759 + func_append finalize_command " $arg"
48760 + compiler_flags="$compiler_flags $arg"
48761 + continue
48762 + ;;
48763 +
48764 + # Some other compiler flag.
48765 + -* | +*)
48766 + func_quote_for_eval "$arg"
48767 + arg="$func_quote_for_eval_result"
48768 + ;;
48769 +
48770 + *.$objext)
48771 + # A standard object.
48772 + objs="$objs $arg"
48773 + ;;
48774 +
48775 + *.lo)
48776 + # A libtool-controlled object.
48777 +
48778 + # Check to see that this really is a libtool object.
48779 + if func_lalib_unsafe_p "$arg"; then
48780 + pic_object=
48781 + non_pic_object=
48782 +
48783 + # Read the .lo file
48784 + func_source "$arg"
48785 +
48786 + if test -z "$pic_object" ||
48787 + test -z "$non_pic_object" ||
48788 + test "$pic_object" = none &&
48789 + test "$non_pic_object" = none; then
48790 + func_fatal_error "cannot find name of object for \`$arg'"
48791 + fi
48792 +
48793 + # Extract subdirectory from the argument.
48794 + func_dirname "$arg" "/" ""
48795 + xdir="$func_dirname_result"
48796 +
48797 + if test "$pic_object" != none; then
48798 + # Prepend the subdirectory the object is found in.
48799 + pic_object="$xdir$pic_object"
48800 +
48801 + if test "$prev" = dlfiles; then
48802 + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48803 + dlfiles="$dlfiles $pic_object"
48804 + prev=
48805 + continue
48806 + else
48807 + # If libtool objects are unsupported, then we need to preload.
48808 + prev=dlprefiles
48809 + fi
48810 + fi
48811 +
48812 + # CHECK ME: I think I busted this. -Ossama
48813 + if test "$prev" = dlprefiles; then
48814 + # Preload the old-style object.
48815 + dlprefiles="$dlprefiles $pic_object"
48816 + prev=
48817 + fi
48818 +
48819 + # A PIC object.
48820 + func_append libobjs " $pic_object"
48821 + arg="$pic_object"
48822 + fi
48823 +
48824 + # Non-PIC object.
48825 + if test "$non_pic_object" != none; then
48826 + # Prepend the subdirectory the object is found in.
48827 + non_pic_object="$xdir$non_pic_object"
48828 +
48829 + # A standard non-PIC object
48830 + func_append non_pic_objects " $non_pic_object"
48831 + if test -z "$pic_object" || test "$pic_object" = none ; then
48832 + arg="$non_pic_object"
48833 + fi
48834 + else
48835 + # If the PIC object exists, use it instead.
48836 + # $xdir was prepended to $pic_object above.
48837 + non_pic_object="$pic_object"
48838 + func_append non_pic_objects " $non_pic_object"
48839 + fi
48840 + else
48841 + # Only an error if not doing a dry-run.
48842 + if $opt_dry_run; then
48843 + # Extract subdirectory from the argument.
48844 + func_dirname "$arg" "/" ""
48845 + xdir="$func_dirname_result"
48846 +
48847 + func_lo2o "$arg"
48848 + pic_object=$xdir$objdir/$func_lo2o_result
48849 + non_pic_object=$xdir$func_lo2o_result
48850 + func_append libobjs " $pic_object"
48851 + func_append non_pic_objects " $non_pic_object"
48852 + else
48853 + func_fatal_error "\`$arg' is not a valid libtool object"
48854 + fi
48855 + fi
48856 + ;;
48857 +
48858 + *.$libext)
48859 + # An archive.
48860 + deplibs="$deplibs $arg"
48861 + old_deplibs="$old_deplibs $arg"
48862 + continue
48863 + ;;
48864 +
48865 + *.la)
48866 + # A libtool-controlled library.
48867 +
48868 + if test "$prev" = dlfiles; then
48869 + # This library was specified with -dlopen.
48870 + dlfiles="$dlfiles $arg"
48871 + prev=
48872 + elif test "$prev" = dlprefiles; then
48873 + # The library was specified with -dlpreopen.
48874 + dlprefiles="$dlprefiles $arg"
48875 + prev=
48876 + else
48877 + deplibs="$deplibs $arg"
48878 + fi
48879 + continue
48880 + ;;
48881 +
48882 + # Some other compiler argument.
48883 + *)
48884 + # Unknown arguments in both finalize_command and compile_command need
48885 + # to be aesthetically quoted because they are evaled later.
48886 + func_quote_for_eval "$arg"
48887 + arg="$func_quote_for_eval_result"
48888 + ;;
48889 + esac # arg
48890 +
48891 + # Now actually substitute the argument into the commands.
48892 + if test -n "$arg"; then
48893 + func_append compile_command " $arg"
48894 + func_append finalize_command " $arg"
48895 + fi
48896 + done # argument parsing loop
48897 +
48898 + test -n "$prev" && \
48899 + func_fatal_help "the \`$prevarg' option requires an argument"
48900 +
48901 + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
48902 + eval arg=\"$export_dynamic_flag_spec\"
48903 + func_append compile_command " $arg"
48904 + func_append finalize_command " $arg"
48905 + fi
48906 +
48907 + oldlibs=
48908 + # calculate the name of the file, without its directory
48909 + func_basename "$output"
48910 + outputname="$func_basename_result"
48911 + libobjs_save="$libobjs"
48912 +
48913 + if test -n "$shlibpath_var"; then
48914 + # get the directories listed in $shlibpath_var
48915 + eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
48916 + else
48917 + shlib_search_path=
48918 + fi
48919 + eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
48920 + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
48921 +
48922 + func_dirname "$output" "/" ""
48923 + output_objdir="$func_dirname_result$objdir"
48924 + # Create the object directory.
48925 + func_mkdir_p "$output_objdir"
48926 +
48927 + # Determine the type of output
48928 + case $output in
48929 + "")
48930 + func_fatal_help "you must specify an output file"
48931 + ;;
48932 + *.$libext) linkmode=oldlib ;;
48933 + *.lo | *.$objext) linkmode=obj ;;
48934 + *.la) linkmode=lib ;;
48935 + *) linkmode=prog ;; # Anything else should be a program.
48936 + esac
48937 +
48938 + specialdeplibs=
48939 +
48940 + libs=
48941 + # Find all interdependent deplibs by searching for libraries
48942 + # that are linked more than once (e.g. -la -lb -la)
48943 + for deplib in $deplibs; do
48944 + if $opt_duplicate_deps ; then
48945 + case "$libs " in
48946 + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
48947 + esac
48948 + fi
48949 + libs="$libs $deplib"
48950 + done
48951 +
48952 + if test "$linkmode" = lib; then
48953 + libs="$predeps $libs $compiler_lib_search_path $postdeps"
48954 +
48955 + # Compute libraries that are listed more than once in $predeps
48956 + # $postdeps and mark them as special (i.e., whose duplicates are
48957 + # not to be eliminated).
48958 + pre_post_deps=
48959 + if $opt_duplicate_compiler_generated_deps; then
48960 + for pre_post_dep in $predeps $postdeps; do
48961 + case "$pre_post_deps " in
48962 + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
48963 + esac
48964 + pre_post_deps="$pre_post_deps $pre_post_dep"
48965 + done
48966 + fi
48967 + pre_post_deps=
48968 + fi
48969 +
48970 + deplibs=
48971 + newdependency_libs=
48972 + newlib_search_path=
48973 + need_relink=no # whether we're linking any uninstalled libtool libraries
48974 + notinst_deplibs= # not-installed libtool libraries
48975 + notinst_path= # paths that contain not-installed libtool libraries
48976 +
48977 + case $linkmode in
48978 + lib)
48979 + passes="conv dlpreopen link"
48980 + for file in $dlfiles $dlprefiles; do
48981 + case $file in
48982 + *.la) ;;
48983 + *)
48984 + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
48985 + ;;
48986 + esac
48987 + done
48988 + ;;
48989 + prog)
48990 + compile_deplibs=
48991 + finalize_deplibs=
48992 + alldeplibs=no
48993 + newdlfiles=
48994 + newdlprefiles=
48995 + passes="conv scan dlopen dlpreopen link"
48996 + ;;
48997 + *) passes="conv"
48998 + ;;
48999 + esac
49000 +
49001 + for pass in $passes; do
49002 + # The preopen pass in lib mode reverses $deplibs; put it back here
49003 + # so that -L comes before libs that need it for instance...
49004 + if test "$linkmode,$pass" = "lib,link"; then
49005 + ## FIXME: Find the place where the list is rebuilt in the wrong
49006 + ## order, and fix it there properly
49007 + tmp_deplibs=
49008 + for deplib in $deplibs; do
49009 + tmp_deplibs="$deplib $tmp_deplibs"
49010 + done
49011 + deplibs="$tmp_deplibs"
49012 + fi
49013 +
49014 + if test "$linkmode,$pass" = "lib,link" ||
49015 + test "$linkmode,$pass" = "prog,scan"; then
49016 + libs="$deplibs"
49017 + deplibs=
49018 + fi
49019 + if test "$linkmode" = prog; then
49020 + case $pass in
49021 + dlopen) libs="$dlfiles" ;;
49022 + dlpreopen) libs="$dlprefiles" ;;
49023 + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
49024 + esac
49025 + fi
49026 + if test "$linkmode,$pass" = "lib,dlpreopen"; then
49027 + # Collect and forward deplibs of preopened libtool libs
49028 + for lib in $dlprefiles; do
49029 + # Ignore non-libtool-libs
49030 + dependency_libs=
49031 + case $lib in
49032 + *.la) func_source "$lib" ;;
49033 + esac
49034 +
49035 + # Collect preopened libtool deplibs, except any this library
49036 + # has declared as weak libs
49037 + for deplib in $dependency_libs; do
49038 + deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
49039 + case " $weak_libs " in
49040 + *" $deplib_base "*) ;;
49041 + *) deplibs="$deplibs $deplib" ;;
49042 + esac
49043 + done
49044 + done
49045 + libs="$dlprefiles"
49046 + fi
49047 + if test "$pass" = dlopen; then
49048 + # Collect dlpreopened libraries
49049 + save_deplibs="$deplibs"
49050 + deplibs=
49051 + fi
49052 +
49053 + for deplib in $libs; do
49054 + lib=
49055 + found=no
49056 + case $deplib in
49057 + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
49058 + if test "$linkmode,$pass" = "prog,link"; then
49059 + compile_deplibs="$deplib $compile_deplibs"
49060 + finalize_deplibs="$deplib $finalize_deplibs"
49061 + else
49062 + compiler_flags="$compiler_flags $deplib"
49063 + if test "$linkmode" = lib ; then
49064 + case "$new_inherited_linker_flags " in
49065 + *" $deplib "*) ;;
49066 + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
49067 + esac
49068 + fi
49069 + fi
49070 + continue
49071 + ;;
49072 + -l*)
49073 + if test "$linkmode" != lib && test "$linkmode" != prog; then
49074 + func_warning "\`-l' is ignored for archives/objects"
49075 + continue
49076 + fi
49077 + func_stripname '-l' '' "$deplib"
49078 + name=$func_stripname_result
49079 + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
49080 + for search_ext in .la $std_shrext .so .a; do
49081 + # Search the libtool library
49082 + lib="$searchdir/lib${name}${search_ext}"
49083 + if test -f "$lib"; then
49084 + if test "$search_ext" = ".la"; then
49085 + found=yes
49086 + else
49087 + found=no
49088 + fi
49089 + break 2
49090 + fi
49091 + done
49092 + done
49093 + if test "$found" != yes; then
49094 + # deplib doesn't seem to be a libtool library
49095 + if test "$linkmode,$pass" = "prog,link"; then
49096 + compile_deplibs="$deplib $compile_deplibs"
49097 + finalize_deplibs="$deplib $finalize_deplibs"
49098 + else
49099 + deplibs="$deplib $deplibs"
49100 + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
49101 + fi
49102 + continue
49103 + else # deplib is a libtool library
49104 + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
49105 + # We need to do some special things here, and not later.
49106 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
49107 + case " $predeps $postdeps " in
49108 + *" $deplib "*)
49109 + if func_lalib_p "$lib"; then
49110 + library_names=
49111 + old_library=
49112 + func_source "$lib"
49113 + for l in $old_library $library_names; do
49114 + ll="$l"
49115 + done
49116 + if test "X$ll" = "X$old_library" ; then # only static version available
49117 + found=no
49118 + func_dirname "$lib" "" "."
49119 + ladir="$func_dirname_result"
49120 + lib=$ladir/$old_library
49121 + if test "$linkmode,$pass" = "prog,link"; then
49122 + compile_deplibs="$deplib $compile_deplibs"
49123 + finalize_deplibs="$deplib $finalize_deplibs"
49124 + else
49125 + deplibs="$deplib $deplibs"
49126 + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
49127 + fi
49128 + continue
49129 + fi
49130 + fi
49131 + ;;
49132 + *) ;;
49133 + esac
49134 + fi
49135 + fi
49136 + ;; # -l
49137 + *.ltframework)
49138 + if test "$linkmode,$pass" = "prog,link"; then
49139 + compile_deplibs="$deplib $compile_deplibs"
49140 + finalize_deplibs="$deplib $finalize_deplibs"
49141 + else
49142 + deplibs="$deplib $deplibs"
49143 + if test "$linkmode" = lib ; then
49144 + case "$new_inherited_linker_flags " in
49145 + *" $deplib "*) ;;
49146 + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
49147 + esac
49148 + fi
49149 + fi
49150 + continue
49151 + ;;
49152 + -L*)
49153 + case $linkmode in
49154 + lib)
49155 + deplibs="$deplib $deplibs"
49156 + test "$pass" = conv && continue
49157 + newdependency_libs="$deplib $newdependency_libs"
49158 + func_stripname '-L' '' "$deplib"
49159 + newlib_search_path="$newlib_search_path $func_stripname_result"
49160 + ;;
49161 + prog)
49162 + if test "$pass" = conv; then
49163 + deplibs="$deplib $deplibs"
49164 + continue
49165 + fi
49166 + if test "$pass" = scan; then
49167 + deplibs="$deplib $deplibs"
49168 + else
49169 + compile_deplibs="$deplib $compile_deplibs"
49170 + finalize_deplibs="$deplib $finalize_deplibs"
49171 + fi
49172 + func_stripname '-L' '' "$deplib"
49173 + newlib_search_path="$newlib_search_path $func_stripname_result"
49174 + ;;
49175 + *)
49176 + func_warning "\`-L' is ignored for archives/objects"
49177 + ;;
49178 + esac # linkmode
49179 + continue
49180 + ;; # -L
49181 + -R*)
49182 + if test "$pass" = link; then
49183 + func_stripname '-R' '' "$deplib"
49184 + dir=$func_stripname_result
49185 + # Make sure the xrpath contains only unique directories.
49186 + case "$xrpath " in
49187 + *" $dir "*) ;;
49188 + *) xrpath="$xrpath $dir" ;;
49189 + esac
49190 + fi
49191 + deplibs="$deplib $deplibs"
49192 + continue
49193 + ;;
49194 + *.la) lib="$deplib" ;;
49195 + *.$libext)
49196 + if test "$pass" = conv; then
49197 + deplibs="$deplib $deplibs"
49198 + continue
49199 + fi
49200 + case $linkmode in
49201 + lib)
49202 + # Linking convenience modules into shared libraries is allowed,
49203 + # but linking other static libraries is non-portable.
49204 + case " $dlpreconveniencelibs " in
49205 + *" $deplib "*) ;;
49206 + *)
49207 + valid_a_lib=no
49208 + case $deplibs_check_method in
49209 + match_pattern*)
49210 + set dummy $deplibs_check_method; shift
49211 + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
49212 + if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
49213 + | $EGREP "$match_pattern_regex" > /dev/null; then
49214 + valid_a_lib=yes
49215 + fi
49216 + ;;
49217 + pass_all)
49218 + valid_a_lib=yes
49219 + ;;
49220 + esac
49221 + if test "$valid_a_lib" != yes; then
49222 + $ECHO
49223 + $ECHO "*** Warning: Trying to link with static lib archive $deplib."
49224 + $ECHO "*** I have the capability to make that library automatically link in when"
49225 + $ECHO "*** you link to this library. But I can only do this if you have a"
49226 + $ECHO "*** shared version of the library, which you do not appear to have"
49227 + $ECHO "*** because the file extensions .$libext of this argument makes me believe"
49228 + $ECHO "*** that it is just a static archive that I should not use here."
49229 + else
49230 + $ECHO
49231 + $ECHO "*** Warning: Linking the shared library $output against the"
49232 + $ECHO "*** static library $deplib is not portable!"
49233 + deplibs="$deplib $deplibs"
49234 + fi
49235 + ;;
49236 + esac
49237 + continue
49238 + ;;
49239 + prog)
49240 + if test "$pass" != link; then
49241 + deplibs="$deplib $deplibs"
49242 + else
49243 + compile_deplibs="$deplib $compile_deplibs"
49244 + finalize_deplibs="$deplib $finalize_deplibs"
49245 + fi
49246 + continue
49247 + ;;
49248 + esac # linkmode
49249 + ;; # *.$libext
49250 + *.lo | *.$objext)
49251 + if test "$pass" = conv; then
49252 + deplibs="$deplib $deplibs"
49253 + elif test "$linkmode" = prog; then
49254 + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
49255 + # If there is no dlopen support or we're linking statically,
49256 + # we need to preload.
49257 + newdlprefiles="$newdlprefiles $deplib"
49258 + compile_deplibs="$deplib $compile_deplibs"
49259 + finalize_deplibs="$deplib $finalize_deplibs"
49260 + else
49261 + newdlfiles="$newdlfiles $deplib"
49262 + fi
49263 + fi
49264 + continue
49265 + ;;
49266 + %DEPLIBS%)
49267 + alldeplibs=yes
49268 + continue
49269 + ;;
49270 + esac # case $deplib
49271 +
49272 + if test "$found" = yes || test -f "$lib"; then :
49273 + else
49274 + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
49275 + fi
49276 +
49277 + # Check to see that this really is a libtool archive.
49278 + func_lalib_unsafe_p "$lib" \
49279 + || func_fatal_error "\`$lib' is not a valid libtool archive"
49280 +
49281 + func_dirname "$lib" "" "."
49282 + ladir="$func_dirname_result"
49283 +
49284 + dlname=
49285 + dlopen=
49286 + dlpreopen=
49287 + libdir=
49288 + library_names=
49289 + old_library=
49290 + inherited_linker_flags=
49291 + # If the library was installed with an old release of libtool,
49292 + # it will not redefine variables installed, or shouldnotlink
49293 + installed=yes
49294 + shouldnotlink=no
49295 + avoidtemprpath=
49296 +
49297 +
49298 + # Read the .la file
49299 + func_source "$lib"
49300 +
49301 + # Convert "-framework foo" to "foo.ltframework"
49302 + if test -n "$inherited_linker_flags"; then
49303 + tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
49304 + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
49305 + case " $new_inherited_linker_flags " in
49306 + *" $tmp_inherited_linker_flag "*) ;;
49307 + *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
49308 + esac
49309 + done
49310 + fi
49311 + dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
49312 + if test "$linkmode,$pass" = "prog,link"; then
49313 + compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
49314 + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
49315 + else
49316 + compiler_flags="$compiler_flags $inherited_linker_flags"
49317 + fi
49318 + if test "$linkmode,$pass" = "lib,link" ||
49319 + test "$linkmode,$pass" = "prog,scan" ||
49320 + { test "$linkmode" != prog && test "$linkmode" != lib; }; then
49321 + test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
49322 + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
49323 + fi
49324 +
49325 + if test "$pass" = conv; then
49326 + # Only check for convenience libraries
49327 + deplibs="$lib $deplibs"
49328 + if test -z "$libdir"; then
49329 + if test -z "$old_library"; then
49330 + func_fatal_error "cannot find name of link library for \`$lib'"
49331 + fi
49332 + # It is a libtool convenience library, so add in its objects.
49333 + convenience="$convenience $ladir/$objdir/$old_library"
49334 + old_convenience="$old_convenience $ladir/$objdir/$old_library"
49335 + elif test "$linkmode" != prog && test "$linkmode" != lib; then
49336 + func_fatal_error "\`$lib' is not a convenience library"
49337 + fi
49338 + tmp_libs=
49339 + for deplib in $dependency_libs; do
49340 + deplibs="$deplib $deplibs"
49341 + if $opt_duplicate_deps ; then
49342 + case "$tmp_libs " in
49343 + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49344 + esac
49345 + fi
49346 + tmp_libs="$tmp_libs $deplib"
49347 + done
49348 + continue
49349 + fi # $pass = conv
49350 +
49351 +
49352 + # Get the name of the library we link against.
49353 + linklib=
49354 + for l in $old_library $library_names; do
49355 + linklib="$l"
49356 + done
49357 + if test -z "$linklib"; then
49358 + func_fatal_error "cannot find name of link library for \`$lib'"
49359 + fi
49360 +
49361 + # This library was specified with -dlopen.
49362 + if test "$pass" = dlopen; then
49363 + if test -z "$libdir"; then
49364 + func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
49365 + fi
49366 + if test -z "$dlname" ||
49367 + test "$dlopen_support" != yes ||
49368 + test "$build_libtool_libs" = no; then
49369 + # If there is no dlname, no dlopen support or we're linking
49370 + # statically, we need to preload. We also need to preload any
49371 + # dependent libraries so libltdl's deplib preloader doesn't
49372 + # bomb out in the load deplibs phase.
49373 + dlprefiles="$dlprefiles $lib $dependency_libs"
49374 + else
49375 + newdlfiles="$newdlfiles $lib"
49376 + fi
49377 + continue
49378 + fi # $pass = dlopen
49379 +
49380 + # We need an absolute path.
49381 + case $ladir in
49382 + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
49383 + *)
49384 + abs_ladir=`cd "$ladir" && pwd`
49385 + if test -z "$abs_ladir"; then
49386 + func_warning "cannot determine absolute directory name of \`$ladir'"
49387 + func_warning "passing it literally to the linker, although it might fail"
49388 + abs_ladir="$ladir"
49389 + fi
49390 + ;;
49391 + esac
49392 + func_basename "$lib"
49393 + laname="$func_basename_result"
49394 +
49395 + # Find the relevant object directory and library name.
49396 + if test "X$installed" = Xyes; then
49397 + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
49398 + func_warning "library \`$lib' was moved."
49399 + dir="$ladir"
49400 + absdir="$abs_ladir"
49401 + libdir="$abs_ladir"
49402 + else
49403 + dir="$libdir"
49404 + absdir="$libdir"
49405 + fi
49406 + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
49407 + else
49408 + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
49409 + dir="$ladir"
49410 + absdir="$abs_ladir"
49411 + # Remove this search path later
49412 + notinst_path="$notinst_path $abs_ladir"
49413 + else
49414 + dir="$ladir/$objdir"
49415 + absdir="$abs_ladir/$objdir"
49416 + # Remove this search path later
49417 + notinst_path="$notinst_path $abs_ladir"
49418 + fi
49419 + fi # $installed = yes
49420 + func_stripname 'lib' '.la' "$laname"
49421 + name=$func_stripname_result
49422 +
49423 + # This library was specified with -dlpreopen.
49424 + if test "$pass" = dlpreopen; then
49425 + if test -z "$libdir" && test "$linkmode" = prog; then
49426 + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
49427 + fi
49428 + # Prefer using a static library (so that no silly _DYNAMIC symbols
49429 + # are required to link).
49430 + if test -n "$old_library"; then
49431 + newdlprefiles="$newdlprefiles $dir/$old_library"
49432 + # Keep a list of preopened convenience libraries to check
49433 + # that they are being used correctly in the link pass.
49434 + test -z "$libdir" && \
49435 + dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
49436 + # Otherwise, use the dlname, so that lt_dlopen finds it.
49437 + elif test -n "$dlname"; then
49438 + newdlprefiles="$newdlprefiles $dir/$dlname"
49439 + else
49440 + newdlprefiles="$newdlprefiles $dir/$linklib"
49441 + fi
49442 + fi # $pass = dlpreopen
49443 +
49444 + if test -z "$libdir"; then
49445 + # Link the convenience library
49446 + if test "$linkmode" = lib; then
49447 + deplibs="$dir/$old_library $deplibs"
49448 + elif test "$linkmode,$pass" = "prog,link"; then
49449 + compile_deplibs="$dir/$old_library $compile_deplibs"
49450 + finalize_deplibs="$dir/$old_library $finalize_deplibs"
49451 + else
49452 + deplibs="$lib $deplibs" # used for prog,scan pass
49453 + fi
49454 + continue
49455 + fi
49456 +
49457 +
49458 + if test "$linkmode" = prog && test "$pass" != link; then
49459 + newlib_search_path="$newlib_search_path $ladir"
49460 + deplibs="$lib $deplibs"
49461 +
49462 + linkalldeplibs=no
49463 + if test "$link_all_deplibs" != no || test -z "$library_names" ||
49464 + test "$build_libtool_libs" = no; then
49465 + linkalldeplibs=yes
49466 + fi
49467 +
49468 + tmp_libs=
49469 + for deplib in $dependency_libs; do
49470 + case $deplib in
49471 + -L*) func_stripname '-L' '' "$deplib"
49472 + newlib_search_path="$newlib_search_path $func_stripname_result"
49473 + ;;
49474 + esac
49475 + # Need to link against all dependency_libs?
49476 + if test "$linkalldeplibs" = yes; then
49477 + deplibs="$deplib $deplibs"
49478 + else
49479 + # Need to hardcode shared library paths
49480 + # or/and link against static libraries
49481 + newdependency_libs="$deplib $newdependency_libs"
49482 + fi
49483 + if $opt_duplicate_deps ; then
49484 + case "$tmp_libs " in
49485 + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49486 + esac
49487 + fi
49488 + tmp_libs="$tmp_libs $deplib"
49489 + done # for deplib
49490 + continue
49491 + fi # $linkmode = prog...
49492 +
49493 + if test "$linkmode,$pass" = "prog,link"; then
49494 + if test -n "$library_names" &&
49495 + { { test "$prefer_static_libs" = no ||
49496 + test "$prefer_static_libs,$installed" = "built,yes"; } ||
49497 + test -z "$old_library"; }; then
49498 + # We need to hardcode the library path
49499 + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
49500 + # Make sure the rpath contains only unique directories.
49501 + case "$temp_rpath:" in
49502 + *"$absdir:"*) ;;
49503 + *) temp_rpath="$temp_rpath$absdir:" ;;
49504 + esac
49505 + fi
49506 +
49507 + # Hardcode the library path.
49508 + # Skip directories that are in the system default run-time
49509 + # search path.
49510 + case " $sys_lib_dlsearch_path " in
49511 + *" $absdir "*) ;;
49512 + *)
49513 + case "$compile_rpath " in
49514 + *" $absdir "*) ;;
49515 + *) compile_rpath="$compile_rpath $absdir"
49516 + esac
49517 + ;;
49518 + esac
49519 + case " $sys_lib_dlsearch_path " in
49520 + *" $libdir "*) ;;
49521 + *)
49522 + case "$finalize_rpath " in
49523 + *" $libdir "*) ;;
49524 + *) finalize_rpath="$finalize_rpath $libdir"
49525 + esac
49526 + ;;
49527 + esac
49528 + fi # $linkmode,$pass = prog,link...
49529 +
49530 + if test "$alldeplibs" = yes &&
49531 + { test "$deplibs_check_method" = pass_all ||
49532 + { test "$build_libtool_libs" = yes &&
49533 + test -n "$library_names"; }; }; then
49534 + # We only need to search for static libraries
49535 + continue
49536 + fi
49537 + fi
49538 +
49539 + link_static=no # Whether the deplib will be linked statically
49540 + use_static_libs=$prefer_static_libs
49541 + if test "$use_static_libs" = built && test "$installed" = yes; then
49542 + use_static_libs=no
49543 + fi
49544 + if test -n "$library_names" &&
49545 + { test "$use_static_libs" = no || test -z "$old_library"; }; then
49546 + case $host in
49547 + *cygwin* | *mingw*)
49548 + # No point in relinking DLLs because paths are not encoded
49549 + notinst_deplibs="$notinst_deplibs $lib"
49550 + need_relink=no
49551 + ;;
49552 + *)
49553 + if test "$installed" = no; then
49554 + notinst_deplibs="$notinst_deplibs $lib"
49555 + need_relink=yes
49556 + fi
49557 + ;;
49558 + esac
49559 + # This is a shared library
49560 +
49561 + # Warn about portability, can't link against -module's on some
49562 + # systems (darwin). Don't bleat about dlopened modules though!
49563 + dlopenmodule=""
49564 + for dlpremoduletest in $dlprefiles; do
49565 + if test "X$dlpremoduletest" = "X$lib"; then
49566 + dlopenmodule="$dlpremoduletest"
49567 + break
49568 + fi
49569 + done
49570 + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
49571 + $ECHO
49572 + if test "$linkmode" = prog; then
49573 + $ECHO "*** Warning: Linking the executable $output against the loadable module"
49574 + else
49575 + $ECHO "*** Warning: Linking the shared library $output against the loadable module"
49576 + fi
49577 + $ECHO "*** $linklib is not portable!"
49578 + fi
49579 + if test "$linkmode" = lib &&
49580 + test "$hardcode_into_libs" = yes; then
49581 + # Hardcode the library path.
49582 + # Skip directories that are in the system default run-time
49583 + # search path.
49584 + case " $sys_lib_dlsearch_path " in
49585 + *" $absdir "*) ;;
49586 + *)
49587 + case "$compile_rpath " in
49588 + *" $absdir "*) ;;
49589 + *) compile_rpath="$compile_rpath $absdir"
49590 + esac
49591 + ;;
49592 + esac
49593 + case " $sys_lib_dlsearch_path " in
49594 + *" $libdir "*) ;;
49595 + *)
49596 + case "$finalize_rpath " in
49597 + *" $libdir "*) ;;
49598 + *) finalize_rpath="$finalize_rpath $libdir"
49599 + esac
49600 + ;;
49601 + esac
49602 + fi
49603 +
49604 + if test -n "$old_archive_from_expsyms_cmds"; then
49605 + # figure out the soname
49606 + set dummy $library_names
49607 + shift
49608 + realname="$1"
49609 + shift
49610 + libname=`eval "\\$ECHO \"$libname_spec\""`
49611 + # use dlname if we got it. it's perfectly good, no?
49612 + if test -n "$dlname"; then
49613 + soname="$dlname"
49614 + elif test -n "$soname_spec"; then
49615 + # bleh windows
49616 + case $host in
49617 + *cygwin* | mingw*)
49618 + major=`expr $current - $age`
49619 + versuffix="-$major"
49620 + ;;
49621 + esac
49622 + eval soname=\"$soname_spec\"
49623 + else
49624 + soname="$realname"
49625 + fi
49626 +
49627 + # Make a new name for the extract_expsyms_cmds to use
49628 + soroot="$soname"
49629 + func_basename "$soroot"
49630 + soname="$func_basename_result"
49631 + func_stripname 'lib' '.dll' "$soname"
49632 + newlib=libimp-$func_stripname_result.a
49633 +
49634 + # If the library has no export list, then create one now
49635 + if test -f "$output_objdir/$soname-def"; then :
49636 + else
49637 + func_echo "extracting exported symbol list from \`$soname'"
49638 + func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
49639 + fi
49640 +
49641 + # Create $newlib
49642 + if test -f "$output_objdir/$newlib"; then :; else
49643 + func_echo "generating import library for \`$soname'"
49644 + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
49645 + fi
49646 + # make sure the library variables are pointing to the new library
49647 + dir=$output_objdir
49648 + linklib=$newlib
49649 + fi # test -n "$old_archive_from_expsyms_cmds"
49650 +
49651 + if test "$linkmode" = prog || test "$mode" != relink; then
49652 + add_shlibpath=
49653 + add_dir=
49654 + add=
49655 + lib_linked=yes
49656 + case $hardcode_action in
49657 + immediate | unsupported)
49658 + if test "$hardcode_direct" = no; then
49659 + add="$dir/$linklib"
49660 + case $host in
49661 + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
49662 + *-*-sysv4*uw2*) add_dir="-L$dir" ;;
49663 + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
49664 + *-*-unixware7*) add_dir="-L$dir" ;;
49665 + *-*-darwin* )
49666 + # if the lib is a (non-dlopened) module then we can not
49667 + # link against it, someone is ignoring the earlier warnings
49668 + if /usr/bin/file -L $add 2> /dev/null |
49669 + $GREP ": [^:]* bundle" >/dev/null ; then
49670 + if test "X$dlopenmodule" != "X$lib"; then
49671 + $ECHO "*** Warning: lib $linklib is a module, not a shared library"
49672 + if test -z "$old_library" ; then
49673 + $ECHO
49674 + $ECHO "*** And there doesn't seem to be a static archive available"
49675 + $ECHO "*** The link will probably fail, sorry"
49676 + else
49677 + add="$dir/$old_library"
49678 + fi
49679 + elif test -n "$old_library"; then
49680 + add="$dir/$old_library"
49681 + fi
49682 + fi
49683 + esac
49684 + elif test "$hardcode_minus_L" = no; then
49685 + case $host in
49686 + *-*-sunos*) add_shlibpath="$dir" ;;
49687 + esac
49688 + add_dir="-L$dir"
49689 + add="-l$name"
49690 + elif test "$hardcode_shlibpath_var" = no; then
49691 + add_shlibpath="$dir"
49692 + add="-l$name"
49693 + else
49694 + lib_linked=no
49695 + fi
49696 + ;;
49697 + relink)
49698 + if test "$hardcode_direct" = yes &&
49699 + test "$hardcode_direct_absolute" = no; then
49700 + add="$dir/$linklib"
49701 + elif test "$hardcode_minus_L" = yes; then
49702 + add_dir="-L$dir"
49703 + # Try looking first in the location we're being installed to.
49704 + if test -n "$inst_prefix_dir"; then
49705 + case $libdir in
49706 + [\\/]*)
49707 + add_dir="$add_dir -L$inst_prefix_dir$libdir"
49708 + ;;
49709 + esac
49710 + fi
49711 + add="-l$name"
49712 + elif test "$hardcode_shlibpath_var" = yes; then
49713 + add_shlibpath="$dir"
49714 + add="-l$name"
49715 + else
49716 + lib_linked=no
49717 + fi
49718 + ;;
49719 + *) lib_linked=no ;;
49720 + esac
49721 +
49722 + if test "$lib_linked" != yes; then
49723 + func_fatal_configuration "unsupported hardcode properties"
49724 + fi
49725 +
49726 + if test -n "$add_shlibpath"; then
49727 + case :$compile_shlibpath: in
49728 + *":$add_shlibpath:"*) ;;
49729 + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
49730 + esac
49731 + fi
49732 + if test "$linkmode" = prog; then
49733 + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
49734 + test -n "$add" && compile_deplibs="$add $compile_deplibs"
49735 + else
49736 + test -n "$add_dir" && deplibs="$add_dir $deplibs"
49737 + test -n "$add" && deplibs="$add $deplibs"
49738 + if test "$hardcode_direct" != yes &&
49739 + test "$hardcode_minus_L" != yes &&
49740 + test "$hardcode_shlibpath_var" = yes; then
49741 + case :$finalize_shlibpath: in
49742 + *":$libdir:"*) ;;
49743 + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
49744 + esac
49745 + fi
49746 + fi
49747 + fi
49748 +
49749 + if test "$linkmode" = prog || test "$mode" = relink; then
49750 + add_shlibpath=
49751 + add_dir=
49752 + add=
49753 + # Finalize command for both is simple: just hardcode it.
49754 + if test "$hardcode_direct" = yes &&
49755 + test "$hardcode_direct_absolute" = no; then
49756 + add="$libdir/$linklib"
49757 + elif test "$hardcode_minus_L" = yes; then
49758 + add_dir="-L$libdir"
49759 + add="-l$name"
49760 + elif test "$hardcode_shlibpath_var" = yes; then
49761 + case :$finalize_shlibpath: in
49762 + *":$libdir:"*) ;;
49763 + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
49764 + esac
49765 + add="-l$name"
49766 + elif test "$hardcode_automatic" = yes; then
49767 + if test -n "$inst_prefix_dir" &&
49768 + test -f "$inst_prefix_dir$libdir/$linklib" ; then
49769 + add="$inst_prefix_dir$libdir/$linklib"
49770 + else
49771 + add="$libdir/$linklib"
49772 + fi
49773 + else
49774 + # We cannot seem to hardcode it, guess we'll fake it.
49775 + add_dir="-L$libdir"
49776 + # Try looking first in the location we're being installed to.
49777 + if test -n "$inst_prefix_dir"; then
49778 + case $libdir in
49779 + [\\/]*)
49780 + add_dir="$add_dir -L$inst_prefix_dir$libdir"
49781 + ;;
49782 + esac
49783 + fi
49784 + add="-l$name"
49785 + fi
49786 +
49787 + if test "$linkmode" = prog; then
49788 + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
49789 + test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
49790 + else
49791 + test -n "$add_dir" && deplibs="$add_dir $deplibs"
49792 + test -n "$add" && deplibs="$add $deplibs"
49793 + fi
49794 + fi
49795 + elif test "$linkmode" = prog; then
49796 + # Here we assume that one of hardcode_direct or hardcode_minus_L
49797 + # is not unsupported. This is valid on all known static and
49798 + # shared platforms.
49799 + if test "$hardcode_direct" != unsupported; then
49800 + test -n "$old_library" && linklib="$old_library"
49801 + compile_deplibs="$dir/$linklib $compile_deplibs"
49802 + finalize_deplibs="$dir/$linklib $finalize_deplibs"
49803 + else
49804 + compile_deplibs="-l$name -L$dir $compile_deplibs"
49805 + finalize_deplibs="-l$name -L$dir $finalize_deplibs"
49806 + fi
49807 + elif test "$build_libtool_libs" = yes; then
49808 + # Not a shared library
49809 + if test "$deplibs_check_method" != pass_all; then
49810 + # We're trying link a shared library against a static one
49811 + # but the system doesn't support it.
49812 +
49813 + # Just print a warning and add the library to dependency_libs so
49814 + # that the program can be linked against the static library.
49815 + $ECHO
49816 + $ECHO "*** Warning: This system can not link to static lib archive $lib."
49817 + $ECHO "*** I have the capability to make that library automatically link in when"
49818 + $ECHO "*** you link to this library. But I can only do this if you have a"
49819 + $ECHO "*** shared version of the library, which you do not appear to have."
49820 + if test "$module" = yes; then
49821 + $ECHO "*** But as you try to build a module library, libtool will still create "
49822 + $ECHO "*** a static module, that should work as long as the dlopening application"
49823 + $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
49824 + if test -z "$global_symbol_pipe"; then
49825 + $ECHO
49826 + $ECHO "*** However, this would only work if libtool was able to extract symbol"
49827 + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
49828 + $ECHO "*** not find such a program. So, this module is probably useless."
49829 + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
49830 + fi
49831 + if test "$build_old_libs" = no; then
49832 + build_libtool_libs=module
49833 + build_old_libs=yes
49834 + else
49835 + build_libtool_libs=no
49836 + fi
49837 + fi
49838 + else
49839 + deplibs="$dir/$old_library $deplibs"
49840 + link_static=yes
49841 + fi
49842 + fi # link shared/static library?
49843 +
49844 + if test "$linkmode" = lib; then
49845 + if test -n "$dependency_libs" &&
49846 + { test "$hardcode_into_libs" != yes ||
49847 + test "$build_old_libs" = yes ||
49848 + test "$link_static" = yes; }; then
49849 + # Extract -R from dependency_libs
49850 + temp_deplibs=
49851 + for libdir in $dependency_libs; do
49852 + case $libdir in
49853 + -R*) func_stripname '-R' '' "$libdir"
49854 + temp_xrpath=$func_stripname_result
49855 + case " $xrpath " in
49856 + *" $temp_xrpath "*) ;;
49857 + *) xrpath="$xrpath $temp_xrpath";;
49858 + esac;;
49859 + *) temp_deplibs="$temp_deplibs $libdir";;
49860 + esac
49861 + done
49862 + dependency_libs="$temp_deplibs"
49863 + fi
49864 +
49865 + newlib_search_path="$newlib_search_path $absdir"
49866 + # Link against this library
49867 + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
49868 + # ... and its dependency_libs
49869 + tmp_libs=
49870 + for deplib in $dependency_libs; do
49871 + newdependency_libs="$deplib $newdependency_libs"
49872 + if $opt_duplicate_deps ; then
49873 + case "$tmp_libs " in
49874 + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49875 + esac
49876 + fi
49877 + tmp_libs="$tmp_libs $deplib"
49878 + done
49879 +
49880 + if test "$link_all_deplibs" != no; then
49881 + # Add the search paths of all dependency libraries
49882 + for deplib in $dependency_libs; do
49883 + case $deplib in
49884 + -L*) path="$deplib" ;;
49885 + *.la)
49886 + func_dirname "$deplib" "" "."
49887 + dir="$func_dirname_result"
49888 + # We need an absolute path.
49889 + case $dir in
49890 + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
49891 + *)
49892 + absdir=`cd "$dir" && pwd`
49893 + if test -z "$absdir"; then
49894 + func_warning "cannot determine absolute directory name of \`$dir'"
49895 + absdir="$dir"
49896 + fi
49897 + ;;
49898 + esac
49899 + if $GREP "^installed=no" $deplib > /dev/null; then
49900 + case $host in
49901 + *-*-darwin*)
49902 + depdepl=
49903 + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
49904 + if test -n "$deplibrary_names" ; then
49905 + for tmp in $deplibrary_names ; do
49906 + depdepl=$tmp
49907 + done
49908 + if test -f "$absdir/$objdir/$depdepl" ; then
49909 + depdepl="$absdir/$objdir/$depdepl"
49910 + darwin_install_name=`otool -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
49911 + darwin_install_name=`$ECHO $darwin_install_name`
49912 + if test -z "$darwin_install_name"; then
49913 + darwin_install_name=`otool64 -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
49914 + darwin_install_name=`$ECHO $darwin_install_name`
49915 + fi
49916 + compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
49917 + linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
49918 + path=
49919 + fi
49920 + fi
49921 + ;;
49922 + *)
49923 + path="-L$absdir/$objdir"
49924 + ;;
49925 + esac
49926 + else
49927 + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
49928 + test -z "$libdir" && \
49929 + func_fatal_error "\`$deplib' is not a valid libtool archive"
49930 + test "$absdir" != "$libdir" && \
49931 + func_warning "\`$deplib' seems to be moved"
49932 +
49933 + path="-L$absdir"
49934 + fi
49935 + ;;
49936 + esac
49937 + case " $deplibs " in
49938 + *" $path "*) ;;
49939 + *) deplibs="$path $deplibs" ;;
49940 + esac
49941 + done
49942 + fi # link_all_deplibs != no
49943 + fi # linkmode = lib
49944 + done # for deplib in $libs
49945 + dependency_libs="$newdependency_libs"
49946 + if test "$pass" = dlpreopen; then
49947 + # Link the dlpreopened libraries before other libraries
49948 + for deplib in $save_deplibs; do
49949 + deplibs="$deplib $deplibs"
49950 + done
49951 + fi
49952 + if test "$pass" != dlopen; then
49953 + if test "$pass" != conv; then
49954 + # Make sure lib_search_path contains only unique directories.
49955 + lib_search_path=
49956 + for dir in $newlib_search_path; do
49957 + case "$lib_search_path " in
49958 + *" $dir "*) ;;
49959 + *) lib_search_path="$lib_search_path $dir" ;;
49960 + esac
49961 + done
49962 + newlib_search_path=
49963 + fi
49964 +
49965 + if test "$linkmode,$pass" != "prog,link"; then
49966 + vars="deplibs"
49967 + else
49968 + vars="compile_deplibs finalize_deplibs"
49969 + fi
49970 + for var in $vars dependency_libs; do
49971 + # Add libraries to $var in reverse order
49972 + eval tmp_libs=\"\$$var\"
49973 + new_libs=
49974 + for deplib in $tmp_libs; do
49975 + # FIXME: Pedantically, this is the right thing to do, so
49976 + # that some nasty dependency loop isn't accidentally
49977 + # broken:
49978 + #new_libs="$deplib $new_libs"
49979 + # Pragmatically, this seems to cause very few problems in
49980 + # practice:
49981 + case $deplib in
49982 + -L*) new_libs="$deplib $new_libs" ;;
49983 + -R*) ;;
49984 + *)
49985 + # And here is the reason: when a library appears more
49986 + # than once as an explicit dependence of a library, or
49987 + # is implicitly linked in more than once by the
49988 + # compiler, it is considered special, and multiple
49989 + # occurrences thereof are not removed. Compare this
49990 + # with having the same library being listed as a
49991 + # dependency of multiple other libraries: in this case,
49992 + # we know (pedantically, we assume) the library does not
49993 + # need to be listed more than once, so we keep only the
49994 + # last copy. This is not always right, but it is rare
49995 + # enough that we require users that really mean to play
49996 + # such unportable linking tricks to link the library
49997 + # using -Wl,-lname, so that libtool does not consider it
49998 + # for duplicate removal.
49999 + case " $specialdeplibs " in
50000 + *" $deplib "*) new_libs="$deplib $new_libs" ;;
50001 + *)
50002 + case " $new_libs " in
50003 + *" $deplib "*) ;;
50004 + *) new_libs="$deplib $new_libs" ;;
50005 + esac
50006 + ;;
50007 + esac
50008 + ;;
50009 + esac
50010 + done
50011 + tmp_libs=
50012 + for deplib in $new_libs; do
50013 + case $deplib in
50014 + -L*)
50015 + case " $tmp_libs " in
50016 + *" $deplib "*) ;;
50017 + *) tmp_libs="$tmp_libs $deplib" ;;
50018 + esac
50019 + ;;
50020 + *) tmp_libs="$tmp_libs $deplib" ;;
50021 + esac
50022 + done
50023 + eval $var=\"$tmp_libs\"
50024 + done # for var
50025 + fi
50026 + # Last step: remove runtime libs from dependency_libs
50027 + # (they stay in deplibs)
50028 + tmp_libs=
50029 + for i in $dependency_libs ; do
50030 + case " $predeps $postdeps $compiler_lib_search_path " in
50031 + *" $i "*)
50032 + i=""
50033 + ;;
50034 + esac
50035 + if test -n "$i" ; then
50036 + tmp_libs="$tmp_libs $i"
50037 + fi
50038 + done
50039 + dependency_libs=$tmp_libs
50040 + done # for pass
50041 + if test "$linkmode" = prog; then
50042 + dlfiles="$newdlfiles"
50043 + fi
50044 + if test "$linkmode" = prog || test "$linkmode" = lib; then
50045 + dlprefiles="$newdlprefiles"
50046 + fi
50047 +
50048 + case $linkmode in
50049 + oldlib)
50050 + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
50051 + func_warning "\`-dlopen' is ignored for archives"
50052 + fi
50053 +
50054 + test -n "$deplibs" && \
50055 + func_warning "\`-l' and \`-L' are ignored for archives"
50056 +
50057 +
50058 + test -n "$rpath" && \
50059 + func_warning "\`-rpath' is ignored for archives"
50060 +
50061 + test -n "$xrpath" && \
50062 + func_warning "\`-R' is ignored for archives"
50063 +
50064 + test -n "$vinfo" && \
50065 + func_warning "\`-version-info/-version-number' is ignored for archives"
50066 +
50067 + test -n "$release" && \
50068 + func_warning "\`-release' is ignored for archives"
50069 +
50070 + test -n "$export_symbols$export_symbols_regex" && \
50071 + func_warning "\`-export-symbols' is ignored for archives"
50072 +
50073 + # Now set the variables for building old libraries.
50074 + build_libtool_libs=no
50075 + oldlibs="$output"
50076 + objs="$objs$old_deplibs"
50077 + ;;
50078 +
50079 + lib)
50080 + # Make sure we only generate libraries of the form `libNAME.la'.
50081 + case $outputname in
50082 + lib*)
50083 + func_stripname 'lib' '.la' "$outputname"
50084 + name=$func_stripname_result
50085 + eval shared_ext=\"$shrext_cmds\"
50086 + eval libname=\"$libname_spec\"
50087 + ;;
50088 + *)
50089 + test "$module" = no && \
50090 + func_fatal_help "libtool library \`$output' must begin with \`lib'"
50091 +
50092 + if test "$need_lib_prefix" != no; then
50093 + # Add the "lib" prefix for modules if required
50094 + func_stripname '' '.la' "$outputname"
50095 + name=$func_stripname_result
50096 + eval shared_ext=\"$shrext_cmds\"
50097 + eval libname=\"$libname_spec\"
50098 + else
50099 + func_stripname '' '.la' "$outputname"
50100 + libname=$func_stripname_result
50101 + fi
50102 + ;;
50103 + esac
50104 +
50105 + if test -n "$objs"; then
50106 + if test "$deplibs_check_method" != pass_all; then
50107 + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
50108 + else
50109 + $ECHO
50110 + $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
50111 + $ECHO "*** objects $objs is not portable!"
50112 + libobjs="$libobjs $objs"
50113 + fi
50114 + fi
50115 +
50116 + test "$dlself" != no && \
50117 + func_warning "\`-dlopen self' is ignored for libtool libraries"
50118 +
50119 + set dummy $rpath
50120 + shift
50121 + test "$#" -gt 1 && \
50122 + func_warning "ignoring multiple \`-rpath's for a libtool library"
50123 +
50124 + install_libdir="$1"
50125 +
50126 + oldlibs=
50127 + if test -z "$rpath"; then
50128 + if test "$build_libtool_libs" = yes; then
50129 + # Building a libtool convenience library.
50130 + # Some compilers have problems with a `.al' extension so
50131 + # convenience libraries should have the same extension an
50132 + # archive normally would.
50133 + oldlibs="$output_objdir/$libname.$libext $oldlibs"
50134 + build_libtool_libs=convenience
50135 + build_old_libs=yes
50136 + fi
50137 +
50138 + test -n "$vinfo" && \
50139 + func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
50140 +
50141 + test -n "$release" && \
50142 + func_warning "\`-release' is ignored for convenience libraries"
50143 + else
50144 +
50145 + # Parse the version information argument.
50146 + save_ifs="$IFS"; IFS=':'
50147 + set dummy $vinfo 0 0 0
50148 + shift
50149 + IFS="$save_ifs"
50150 +
50151 + test -n "$7" && \
50152 + func_fatal_help "too many parameters to \`-version-info'"
50153 +
50154 + # convert absolute version numbers to libtool ages
50155 + # this retains compatibility with .la files and attempts
50156 + # to make the code below a bit more comprehensible
50157 +
50158 + case $vinfo_number in
50159 + yes)
50160 + number_major="$1"
50161 + number_minor="$2"
50162 + number_revision="$3"
50163 + #
50164 + # There are really only two kinds -- those that
50165 + # use the current revision as the major version
50166 + # and those that subtract age and use age as
50167 + # a minor version. But, then there is irix
50168 + # which has an extra 1 added just for fun
50169 + #
50170 + case $version_type in
50171 + darwin|linux|osf|windows|none)
50172 + current=`expr $number_major + $number_minor`
50173 + age="$number_minor"
50174 + revision="$number_revision"
50175 + ;;
50176 + freebsd-aout|freebsd-elf|sunos)
50177 + current="$number_major"
50178 + revision="$number_minor"
50179 + age="0"
50180 + ;;
50181 + irix|nonstopux)
50182 + current=`expr $number_major + $number_minor - 1`
50183 + age="$number_minor"
50184 + revision="$number_minor"
50185 + ;;
50186 + esac
50187 + ;;
50188 + no)
50189 + current="$1"
50190 + revision="$2"
50191 + age="$3"
50192 + ;;
50193 + esac
50194 +
50195 + # Check that each of the things are valid numbers.
50196 + case $current in
50197 + 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]) ;;
50198 + *)
50199 + func_error "CURRENT \`$current' must be a nonnegative integer"
50200 + func_fatal_error "\`$vinfo' is not valid version information"
50201 + ;;
50202 + esac
50203 +
50204 + case $revision in
50205 + 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]) ;;
50206 + *)
50207 + func_error "REVISION \`$revision' must be a nonnegative integer"
50208 + func_fatal_error "\`$vinfo' is not valid version information"
50209 + ;;
50210 + esac
50211 +
50212 + case $age in
50213 + 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]) ;;
50214 + *)
50215 + func_error "AGE \`$age' must be a nonnegative integer"
50216 + func_fatal_error "\`$vinfo' is not valid version information"
50217 + ;;
50218 + esac
50219 +
50220 + if test "$age" -gt "$current"; then
50221 + func_error "AGE \`$age' is greater than the current interface number \`$current'"
50222 + func_fatal_error "\`$vinfo' is not valid version information"
50223 + fi
50224 +
50225 + # Calculate the version variables.
50226 + major=
50227 + versuffix=
50228 + verstring=
50229 + case $version_type in
50230 + none) ;;
50231 +
50232 + darwin)
50233 + # Like Linux, but with the current version available in
50234 + # verstring for coding it into the library header
50235 + major=.`expr $current - $age`
50236 + versuffix="$major.$age.$revision"
50237 + # Darwin ld doesn't like 0 for these options...
50238 + minor_current=`expr $current + 1`
50239 + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
50240 + ;;
50241 +
50242 + freebsd-aout)
50243 + major=".$current"
50244 + versuffix=".$current.$revision";
50245 + ;;
50246 +
50247 + freebsd-elf)
50248 + major=".$current"
50249 + versuffix=".$current"
50250 + ;;
50251 +
50252 + irix | nonstopux)
50253 + major=`expr $current - $age + 1`
50254 +
50255 + case $version_type in
50256 + nonstopux) verstring_prefix=nonstopux ;;
50257 + *) verstring_prefix=sgi ;;
50258 + esac
50259 + verstring="$verstring_prefix$major.$revision"
50260 +
50261 + # Add in all the interfaces that we are compatible with.
50262 + loop=$revision
50263 + while test "$loop" -ne 0; do
50264 + iface=`expr $revision - $loop`
50265 + loop=`expr $loop - 1`
50266 + verstring="$verstring_prefix$major.$iface:$verstring"
50267 + done
50268 +
50269 + # Before this point, $major must not contain `.'.
50270 + major=.$major
50271 + versuffix="$major.$revision"
50272 + ;;
50273 +
50274 + linux)
50275 + major=.`expr $current - $age`
50276 + versuffix="$major.$age.$revision"
50277 + ;;
50278 +
50279 + osf)
50280 + major=.`expr $current - $age`
50281 + versuffix=".$current.$age.$revision"
50282 + verstring="$current.$age.$revision"
50283 +
50284 + # Add in all the interfaces that we are compatible with.
50285 + loop=$age
50286 + while test "$loop" -ne 0; do
50287 + iface=`expr $current - $loop`
50288 + loop=`expr $loop - 1`
50289 + verstring="$verstring:${iface}.0"
50290 + done
50291 +
50292 + # Make executables depend on our current version.
50293 + verstring="$verstring:${current}.0"
50294 + ;;
50295 +
50296 + qnx)
50297 + major=".$current"
50298 + versuffix=".$current"
50299 + ;;
50300 +
50301 + sunos)
50302 + major=".$current"
50303 + versuffix=".$current.$revision"
50304 + ;;
50305 +
50306 + windows)
50307 + # Use '-' rather than '.', since we only want one
50308 + # extension on DOS 8.3 filesystems.
50309 + major=`expr $current - $age`
50310 + versuffix="-$major"
50311 + ;;
50312 +
50313 + *)
50314 + func_fatal_configuration "unknown library version type \`$version_type'"
50315 + ;;
50316 + esac
50317 +
50318 + # Clear the version info if we defaulted, and they specified a release.
50319 + if test -z "$vinfo" && test -n "$release"; then
50320 + major=
50321 + case $version_type in
50322 + darwin)
50323 + # we can't check for "0.0" in archive_cmds due to quoting
50324 + # problems, so we reset it completely
50325 + verstring=
50326 + ;;
50327 + *)
50328 + verstring="0.0"
50329 + ;;
50330 + esac
50331 + if test "$need_version" = no; then
50332 + versuffix=
50333 + else
50334 + versuffix=".0.0"
50335 + fi
50336 + fi
50337 +
50338 + # Remove version info from name if versioning should be avoided
50339 + if test "$avoid_version" = yes && test "$need_version" = no; then
50340 + major=
50341 + versuffix=
50342 + verstring=""
50343 + fi
50344 +
50345 + # Check to see if the archive will have undefined symbols.
50346 + if test "$allow_undefined" = yes; then
50347 + if test "$allow_undefined_flag" = unsupported; then
50348 + func_warning "undefined symbols not allowed in $host shared libraries"
50349 + build_libtool_libs=no
50350 + build_old_libs=yes
50351 + fi
50352 + else
50353 + # Don't allow undefined symbols.
50354 + allow_undefined_flag="$no_undefined_flag"
50355 + fi
50356 +
50357 + fi
50358 +
50359 + func_generate_dlsyms "$libname" "$libname" "yes"
50360 + libobjs="$libobjs $symfileobj"
50361 + test "X$libobjs" = "X " && libobjs=
50362 +
50363 + if test "$mode" != relink; then
50364 + # Remove our outputs, but don't remove object files since they
50365 + # may have been created when compiling PIC objects.
50366 + removelist=
50367 + tempremovelist=`$ECHO "$output_objdir/*"`
50368 + for p in $tempremovelist; do
50369 + case $p in
50370 + *.$objext)
50371 + ;;
50372 + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
50373 + if test "X$precious_files_regex" != "X"; then
50374 + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
50375 + then
50376 + continue
50377 + fi
50378 + fi
50379 + removelist="$removelist $p"
50380 + ;;
50381 + *) ;;
50382 + esac
50383 + done
50384 + test -n "$removelist" && \
50385 + func_show_eval "${RM}r \$removelist"
50386 + fi
50387 +
50388 + # Now set the variables for building old libraries.
50389 + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
50390 + oldlibs="$oldlibs $output_objdir/$libname.$libext"
50391 +
50392 + # Transform .lo files to .o files.
50393 + oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
50394 + fi
50395 +
50396 + # Eliminate all temporary directories.
50397 + #for path in $notinst_path; do
50398 + # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
50399 + # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
50400 + # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
50401 + #done
50402 +
50403 + if test -n "$xrpath"; then
50404 + # If the user specified any rpath flags, then add them.
50405 + temp_xrpath=
50406 + for libdir in $xrpath; do
50407 + temp_xrpath="$temp_xrpath -R$libdir"
50408 + case "$finalize_rpath " in
50409 + *" $libdir "*) ;;
50410 + *) finalize_rpath="$finalize_rpath $libdir" ;;
50411 + esac
50412 + done
50413 + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
50414 + dependency_libs="$temp_xrpath $dependency_libs"
50415 + fi
50416 + fi
50417 +
50418 + # Make sure dlfiles contains only unique files that won't be dlpreopened
50419 + old_dlfiles="$dlfiles"
50420 + dlfiles=
50421 + for lib in $old_dlfiles; do
50422 + case " $dlprefiles $dlfiles " in
50423 + *" $lib "*) ;;
50424 + *) dlfiles="$dlfiles $lib" ;;
50425 + esac
50426 + done
50427 +
50428 + # Make sure dlprefiles contains only unique files
50429 + old_dlprefiles="$dlprefiles"
50430 + dlprefiles=
50431 + for lib in $old_dlprefiles; do
50432 + case "$dlprefiles " in
50433 + *" $lib "*) ;;
50434 + *) dlprefiles="$dlprefiles $lib" ;;
50435 + esac
50436 + done
50437 +
50438 + if test "$build_libtool_libs" = yes; then
50439 + if test -n "$rpath"; then
50440 + case $host in
50441 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
50442 + # these systems don't actually have a c library (as such)!
50443 + ;;
50444 + *-*-rhapsody* | *-*-darwin1.[012])
50445 + # Rhapsody C library is in the System framework
50446 + deplibs="$deplibs System.ltframework"
50447 + ;;
50448 + *-*-netbsd*)
50449 + # Don't link with libc until the a.out ld.so is fixed.
50450 + ;;
50451 + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
50452 + # Do not include libc due to us having libc/libc_r.
50453 + ;;
50454 + *-*-sco3.2v5* | *-*-sco5v6*)
50455 + # Causes problems with __ctype
50456 + ;;
50457 + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
50458 + # Compiler inserts libc in the correct place for threads to work
50459 + ;;
50460 + *)
50461 + # Add libc to deplibs on all other systems if necessary.
50462 + if test "$build_libtool_need_lc" = "yes"; then
50463 + deplibs="$deplibs -lc"
50464 + fi
50465 + ;;
50466 + esac
50467 + fi
50468 +
50469 + # Transform deplibs into only deplibs that can be linked in shared.
50470 + name_save=$name
50471 + libname_save=$libname
50472 + release_save=$release
50473 + versuffix_save=$versuffix
50474 + major_save=$major
50475 + # I'm not sure if I'm treating the release correctly. I think
50476 + # release should show up in the -l (ie -lgmp5) so we don't want to
50477 + # add it in twice. Is that correct?
50478 + release=""
50479 + versuffix=""
50480 + major=""
50481 + newdeplibs=
50482 + droppeddeps=no
50483 + case $deplibs_check_method in
50484 + pass_all)
50485 + # Don't check for shared/static. Everything works.
50486 + # This might be a little naive. We might want to check
50487 + # whether the library exists or not. But this is on
50488 + # osf3 & osf4 and I'm not really sure... Just
50489 + # implementing what was already the behavior.
50490 + newdeplibs=$deplibs
50491 + ;;
50492 + test_compile)
50493 + # This code stresses the "libraries are programs" paradigm to its
50494 + # limits. Maybe even breaks it. We compile a program, linking it
50495 + # against the deplibs as a proxy for the library. Then we can check
50496 + # whether they linked in statically or dynamically with ldd.
50497 + $opt_dry_run || $RM conftest.c
50498 + cat > conftest.c <<EOF
50499 + int main() { return 0; }
50500 +EOF
50501 + $opt_dry_run || $RM conftest
50502 + if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
50503 + ldd_output=`ldd conftest`
50504 + for i in $deplibs; do
50505 + name=`expr $i : '-l\(.*\)'`
50506 + # If $name is empty we are operating on a -L argument.
50507 + if test "$name" != "" && test "$name" != "0"; then
50508 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
50509 + case " $predeps $postdeps " in
50510 + *" $i "*)
50511 + newdeplibs="$newdeplibs $i"
50512 + i=""
50513 + ;;
50514 + esac
50515 + fi
50516 + if test -n "$i" ; then
50517 + libname=`eval "\\$ECHO \"$libname_spec\""`
50518 + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
50519 + set dummy $deplib_matches; shift
50520 + deplib_match=$1
50521 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
50522 + newdeplibs="$newdeplibs $i"
50523 + else
50524 + droppeddeps=yes
50525 + $ECHO
50526 + $ECHO "*** Warning: dynamic linker does not accept needed library $i."
50527 + $ECHO "*** I have the capability to make that library automatically link in when"
50528 + $ECHO "*** you link to this library. But I can only do this if you have a"
50529 + $ECHO "*** shared version of the library, which I believe you do not have"
50530 + $ECHO "*** because a test_compile did reveal that the linker did not use it for"
50531 + $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
50532 + fi
50533 + fi
50534 + else
50535 + newdeplibs="$newdeplibs $i"
50536 + fi
50537 + done
50538 + else
50539 + # Error occurred in the first compile. Let's try to salvage
50540 + # the situation: Compile a separate program for each library.
50541 + for i in $deplibs; do
50542 + name=`expr $i : '-l\(.*\)'`
50543 + # If $name is empty we are operating on a -L argument.
50544 + if test "$name" != "" && test "$name" != "0"; then
50545 + $opt_dry_run || $RM conftest
50546 + if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
50547 + ldd_output=`ldd conftest`
50548 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
50549 + case " $predeps $postdeps " in
50550 + *" $i "*)
50551 + newdeplibs="$newdeplibs $i"
50552 + i=""
50553 + ;;
50554 + esac
50555 + fi
50556 + if test -n "$i" ; then
50557 + libname=`eval "\\$ECHO \"$libname_spec\""`
50558 + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
50559 + set dummy $deplib_matches; shift
50560 + deplib_match=$1
50561 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
50562 + newdeplibs="$newdeplibs $i"
50563 + else
50564 + droppeddeps=yes
50565 + $ECHO
50566 + $ECHO "*** Warning: dynamic linker does not accept needed library $i."
50567 + $ECHO "*** I have the capability to make that library automatically link in when"
50568 + $ECHO "*** you link to this library. But I can only do this if you have a"
50569 + $ECHO "*** shared version of the library, which you do not appear to have"
50570 + $ECHO "*** because a test_compile did reveal that the linker did not use this one"
50571 + $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
50572 + fi
50573 + fi
50574 + else
50575 + droppeddeps=yes
50576 + $ECHO
50577 + $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
50578 + $ECHO "*** make it link in! You will probably need to install it or some"
50579 + $ECHO "*** library that it depends on before this library will be fully"
50580 + $ECHO "*** functional. Installing it before continuing would be even better."
50581 + fi
50582 + else
50583 + newdeplibs="$newdeplibs $i"
50584 + fi
50585 + done
50586 + fi
50587 + ;;
50588 + file_magic*)
50589 + set dummy $deplibs_check_method; shift
50590 + file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
50591 + for a_deplib in $deplibs; do
50592 + name=`expr $a_deplib : '-l\(.*\)'`
50593 + # If $name is empty we are operating on a -L argument.
50594 + if test "$name" != "" && test "$name" != "0"; then
50595 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
50596 + case " $predeps $postdeps " in
50597 + *" $a_deplib "*)
50598 + newdeplibs="$newdeplibs $a_deplib"
50599 + a_deplib=""
50600 + ;;
50601 + esac
50602 + fi
50603 + if test -n "$a_deplib" ; then
50604 + libname=`eval "\\$ECHO \"$libname_spec\""`
50605 + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
50606 + potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
50607 + for potent_lib in $potential_libs; do
50608 + # Follow soft links.
50609 + if ls -lLd "$potent_lib" 2>/dev/null |
50610 + $GREP " -> " >/dev/null; then
50611 + continue
50612 + fi
50613 + # The statement above tries to avoid entering an
50614 + # endless loop below, in case of cyclic links.
50615 + # We might still enter an endless loop, since a link
50616 + # loop can be closed while we follow links,
50617 + # but so what?
50618 + potlib="$potent_lib"
50619 + while test -h "$potlib" 2>/dev/null; do
50620 + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
50621 + case $potliblink in
50622 + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
50623 + *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
50624 + esac
50625 + done
50626 + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
50627 + $SED -e 10q |
50628 + $EGREP "$file_magic_regex" > /dev/null; then
50629 + newdeplibs="$newdeplibs $a_deplib"
50630 + a_deplib=""
50631 + break 2
50632 + fi
50633 + done
50634 + done
50635 + fi
50636 + if test -n "$a_deplib" ; then
50637 + droppeddeps=yes
50638 + $ECHO
50639 + $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
50640 + $ECHO "*** I have the capability to make that library automatically link in when"
50641 + $ECHO "*** you link to this library. But I can only do this if you have a"
50642 + $ECHO "*** shared version of the library, which you do not appear to have"
50643 + $ECHO "*** because I did check the linker path looking for a file starting"
50644 + if test -z "$potlib" ; then
50645 + $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
50646 + else
50647 + $ECHO "*** with $libname and none of the candidates passed a file format test"
50648 + $ECHO "*** using a file magic. Last file checked: $potlib"
50649 + fi
50650 + fi
50651 + else
50652 + # Add a -L argument.
50653 + newdeplibs="$newdeplibs $a_deplib"
50654 + fi
50655 + done # Gone through all deplibs.
50656 + ;;
50657 + match_pattern*)
50658 + set dummy $deplibs_check_method; shift
50659 + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
50660 + for a_deplib in $deplibs; do
50661 + name=`expr $a_deplib : '-l\(.*\)'`
50662 + # If $name is empty we are operating on a -L argument.
50663 + if test -n "$name" && test "$name" != "0"; then
50664 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
50665 + case " $predeps $postdeps " in
50666 + *" $a_deplib "*)
50667 + newdeplibs="$newdeplibs $a_deplib"
50668 + a_deplib=""
50669 + ;;
50670 + esac
50671 + fi
50672 + if test -n "$a_deplib" ; then
50673 + libname=`eval "\\$ECHO \"$libname_spec\""`
50674 + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
50675 + potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
50676 + for potent_lib in $potential_libs; do
50677 + potlib="$potent_lib" # see symlink-check above in file_magic test
50678 + if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
50679 + $EGREP "$match_pattern_regex" > /dev/null; then
50680 + newdeplibs="$newdeplibs $a_deplib"
50681 + a_deplib=""
50682 + break 2
50683 + fi
50684 + done
50685 + done
50686 + fi
50687 + if test -n "$a_deplib" ; then
50688 + droppeddeps=yes
50689 + $ECHO
50690 + $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
50691 + $ECHO "*** I have the capability to make that library automatically link in when"
50692 + $ECHO "*** you link to this library. But I can only do this if you have a"
50693 + $ECHO "*** shared version of the library, which you do not appear to have"
50694 + $ECHO "*** because I did check the linker path looking for a file starting"
50695 + if test -z "$potlib" ; then
50696 + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
50697 + else
50698 + $ECHO "*** with $libname and none of the candidates passed a file format test"
50699 + $ECHO "*** using a regex pattern. Last file checked: $potlib"
50700 + fi
50701 + fi
50702 + else
50703 + # Add a -L argument.
50704 + newdeplibs="$newdeplibs $a_deplib"
50705 + fi
50706 + done # Gone through all deplibs.
50707 + ;;
50708 + none | unknown | *)
50709 + newdeplibs=""
50710 + tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
50711 + -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
50712 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
50713 + for i in $predeps $postdeps ; do
50714 + # can't use Xsed below, because $i might contain '/'
50715 + tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
50716 + done
50717 + fi
50718 + if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' |
50719 + $GREP . >/dev/null; then
50720 + $ECHO
50721 + if test "X$deplibs_check_method" = "Xnone"; then
50722 + $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
50723 + else
50724 + $ECHO "*** Warning: inter-library dependencies are not known to be supported."
50725 + fi
50726 + $ECHO "*** All declared inter-library dependencies are being dropped."
50727 + droppeddeps=yes
50728 + fi
50729 + ;;
50730 + esac
50731 + versuffix=$versuffix_save
50732 + major=$major_save
50733 + release=$release_save
50734 + libname=$libname_save
50735 + name=$name_save
50736 +
50737 + case $host in
50738 + *-*-rhapsody* | *-*-darwin1.[012])
50739 + # On Rhapsody replace the C library with the System framework
50740 + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
50741 + ;;
50742 + esac
50743 +
50744 + if test "$droppeddeps" = yes; then
50745 + if test "$module" = yes; then
50746 + $ECHO
50747 + $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
50748 + $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
50749 + $ECHO "*** a static module, that should work as long as the dlopening"
50750 + $ECHO "*** application is linked with the -dlopen flag."
50751 + if test -z "$global_symbol_pipe"; then
50752 + $ECHO
50753 + $ECHO "*** However, this would only work if libtool was able to extract symbol"
50754 + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
50755 + $ECHO "*** not find such a program. So, this module is probably useless."
50756 + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
50757 + fi
50758 + if test "$build_old_libs" = no; then
50759 + oldlibs="$output_objdir/$libname.$libext"
50760 + build_libtool_libs=module
50761 + build_old_libs=yes
50762 + else
50763 + build_libtool_libs=no
50764 + fi
50765 + else
50766 + $ECHO "*** The inter-library dependencies that have been dropped here will be"
50767 + $ECHO "*** automatically added whenever a program is linked with this library"
50768 + $ECHO "*** or is declared to -dlopen it."
50769 +
50770 + if test "$allow_undefined" = no; then
50771 + $ECHO
50772 + $ECHO "*** Since this library must not contain undefined symbols,"
50773 + $ECHO "*** because either the platform does not support them or"
50774 + $ECHO "*** it was explicitly requested with -no-undefined,"
50775 + $ECHO "*** libtool will only create a static version of it."
50776 + if test "$build_old_libs" = no; then
50777 + oldlibs="$output_objdir/$libname.$libext"
50778 + build_libtool_libs=module
50779 + build_old_libs=yes
50780 + else
50781 + build_libtool_libs=no
50782 + fi
50783 + fi
50784 + fi
50785 + fi
50786 + # Done checking deplibs!
50787 + deplibs=$newdeplibs
50788 + fi
50789 + # Time to change all our "foo.ltframework" stuff back to "-framework foo"
50790 + case $host in
50791 + *-*-darwin*)
50792 + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
50793 + new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
50794 + deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
50795 + ;;
50796 + esac
50797 +
50798 + # move library search paths that coincide with paths to not yet
50799 + # installed libraries to the beginning of the library search list
50800 + new_libs=
50801 + for path in $notinst_path; do
50802 + case " $new_libs " in
50803 + *" -L$path/$objdir "*) ;;
50804 + *)
50805 + case " $deplibs " in
50806 + *" -L$path/$objdir "*)
50807 + new_libs="$new_libs -L$path/$objdir" ;;
50808 + esac
50809 + ;;
50810 + esac
50811 + done
50812 + for deplib in $deplibs; do
50813 + case $deplib in
50814 + -L*)
50815 + case " $new_libs " in
50816 + *" $deplib "*) ;;
50817 + *) new_libs="$new_libs $deplib" ;;
50818 + esac
50819 + ;;
50820 + *) new_libs="$new_libs $deplib" ;;
50821 + esac
50822 + done
50823 + deplibs="$new_libs"
50824 +
50825 + # All the library-specific variables (install_libdir is set above).
50826 + library_names=
50827 + old_library=
50828 + dlname=
50829 +
50830 + # Test again, we may have decided not to build it any more
50831 + if test "$build_libtool_libs" = yes; then
50832 + if test "$hardcode_into_libs" = yes; then
50833 + # Hardcode the library paths
50834 + hardcode_libdirs=
50835 + dep_rpath=
50836 + rpath="$finalize_rpath"
50837 + test "$mode" != relink && rpath="$compile_rpath$rpath"
50838 + for libdir in $rpath; do
50839 + if test -n "$hardcode_libdir_flag_spec"; then
50840 + if test -n "$hardcode_libdir_separator"; then
50841 + if test -z "$hardcode_libdirs"; then
50842 + hardcode_libdirs="$libdir"
50843 + else
50844 + # Just accumulate the unique libdirs.
50845 + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
50846 + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
50847 + ;;
50848 + *)
50849 + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
50850 + ;;
50851 + esac
50852 + fi
50853 + else
50854 + eval flag=\"$hardcode_libdir_flag_spec\"
50855 + dep_rpath="$dep_rpath $flag"
50856 + fi
50857 + elif test -n "$runpath_var"; then
50858 + case "$perm_rpath " in
50859 + *" $libdir "*) ;;
50860 + *) perm_rpath="$perm_rpath $libdir" ;;
50861 + esac
50862 + fi
50863 + done
50864 + # Substitute the hardcoded libdirs into the rpath.
50865 + if test -n "$hardcode_libdir_separator" &&
50866 + test -n "$hardcode_libdirs"; then
50867 + libdir="$hardcode_libdirs"
50868 + if test -n "$hardcode_libdir_flag_spec_ld"; then
50869 + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
50870 + else
50871 + eval dep_rpath=\"$hardcode_libdir_flag_spec\"
50872 + fi
50873 + fi
50874 + if test -n "$runpath_var" && test -n "$perm_rpath"; then
50875 + # We should set the runpath_var.
50876 + rpath=
50877 + for dir in $perm_rpath; do
50878 + rpath="$rpath$dir:"
50879 + done
50880 + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
50881 + fi
50882 + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
50883 + fi
50884 +
50885 + shlibpath="$finalize_shlibpath"
50886 + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
50887 + if test -n "$shlibpath"; then
50888 + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
50889 + fi
50890 +
50891 + # Get the real and link names of the library.
50892 + eval shared_ext=\"$shrext_cmds\"
50893 + eval library_names=\"$library_names_spec\"
50894 + set dummy $library_names
50895 + shift
50896 + realname="$1"
50897 + shift
50898 +
50899 + if test -n "$soname_spec"; then
50900 + eval soname=\"$soname_spec\"
50901 + else
50902 + soname="$realname"
50903 + fi
50904 + if test -z "$dlname"; then
50905 + dlname=$soname
50906 + fi
50907 +
50908 + lib="$output_objdir/$realname"
50909 + linknames=
50910 + for link
50911 + do
50912 + linknames="$linknames $link"
50913 + done
50914 +
50915 + # Use standard objects if they are pic
50916 + test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
50917 + test "X$libobjs" = "X " && libobjs=
50918 +
50919 + delfiles=
50920 + if test -n "$export_symbols" && test -n "$include_expsyms"; then
50921 + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
50922 + export_symbols="$output_objdir/$libname.uexp"
50923 + delfiles="$delfiles $export_symbols"
50924 + fi
50925 +
50926 + orig_export_symbols=
50927 + case $host_os in
50928 + cygwin* | mingw*)
50929 + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
50930 + # exporting using user supplied symfile
50931 + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
50932 + # and it's NOT already a .def file. Must figure out
50933 + # which of the given symbols are data symbols and tag
50934 + # them as such. So, trigger use of export_symbols_cmds.
50935 + # export_symbols gets reassigned inside the "prepare
50936 + # the list of exported symbols" if statement, so the
50937 + # include_expsyms logic still works.
50938 + orig_export_symbols="$export_symbols"
50939 + export_symbols=
50940 + always_export_symbols=yes
50941 + fi
50942 + fi
50943 + ;;
50944 + esac
50945 +
50946 + # Prepare the list of exported symbols
50947 + if test -z "$export_symbols"; then
50948 + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
50949 + func_echo "generating symbol list for \`$libname.la'"
50950 + export_symbols="$output_objdir/$libname.exp"
50951 + $opt_dry_run || $RM $export_symbols
50952 + cmds=$export_symbols_cmds
50953 + save_ifs="$IFS"; IFS='~'
50954 + for cmd in $cmds; do
50955 + IFS="$save_ifs"
50956 + eval cmd=\"$cmd\"
50957 + if len=`expr "X$cmd" : ".*"` &&
50958 + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
50959 + func_show_eval "$cmd" 'exit $?'
50960 + skipped_export=false
50961 + else
50962 + # The command line is too long to execute in one step.
50963 + func_echo "using reloadable object file for export list..."
50964 + skipped_export=:
50965 + # Break out early, otherwise skipped_export may be
50966 + # set to false by a later but shorter cmd.
50967 + break
50968 + fi
50969 + done
50970 + IFS="$save_ifs"
50971 + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
50972 + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
50973 + func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
50974 + fi
50975 + fi
50976 + fi
50977 +
50978 + if test -n "$export_symbols" && test -n "$include_expsyms"; then
50979 + tmp_export_symbols="$export_symbols"
50980 + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
50981 + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
50982 + fi
50983 +
50984 + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
50985 + # The given exports_symbols file has to be filtered, so filter it.
50986 + func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
50987 + # FIXME: $output_objdir/$libname.filter potentially contains lots of
50988 + # 's' commands which not all seds can handle. GNU sed should be fine
50989 + # though. Also, the filter scales superlinearly with the number of
50990 + # global variables. join(1) would be nice here, but unfortunately
50991 + # isn't a blessed tool.
50992 + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
50993 + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
50994 + export_symbols=$output_objdir/$libname.def
50995 + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
50996 + fi
50997 +
50998 + tmp_deplibs=
50999 + for test_deplib in $deplibs; do
51000 + case " $convenience " in
51001 + *" $test_deplib "*) ;;
51002 + *)
51003 + tmp_deplibs="$tmp_deplibs $test_deplib"
51004 + ;;
51005 + esac
51006 + done
51007 + deplibs="$tmp_deplibs"
51008 +
51009 + if test -n "$convenience"; then
51010 + if test -n "$whole_archive_flag_spec" &&
51011 + test "$compiler_needs_object" = yes &&
51012 + test -z "$libobjs"; then
51013 + # extract the archives, so we have objects to list.
51014 + # TODO: could optimize this to just extract one archive.
51015 + whole_archive_flag_spec=
51016 + fi
51017 + if test -n "$whole_archive_flag_spec"; then
51018 + save_libobjs=$libobjs
51019 + eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
51020 + test "X$libobjs" = "X " && libobjs=
51021 + else
51022 + gentop="$output_objdir/${outputname}x"
51023 + generated="$generated $gentop"
51024 +
51025 + func_extract_archives $gentop $convenience
51026 + libobjs="$libobjs $func_extract_archives_result"
51027 + test "X$libobjs" = "X " && libobjs=
51028 + fi
51029 + fi
51030 +
51031 + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
51032 + eval flag=\"$thread_safe_flag_spec\"
51033 + linker_flags="$linker_flags $flag"
51034 + fi
51035 +
51036 + # Make a backup of the uninstalled library when relinking
51037 + if test "$mode" = relink; then
51038 + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
51039 + fi
51040 +
51041 + # Do each of the archive commands.
51042 + if test "$module" = yes && test -n "$module_cmds" ; then
51043 + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
51044 + eval test_cmds=\"$module_expsym_cmds\"
51045 + cmds=$module_expsym_cmds
51046 + else
51047 + eval test_cmds=\"$module_cmds\"
51048 + cmds=$module_cmds
51049 + fi
51050 + else
51051 + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
51052 + eval test_cmds=\"$archive_expsym_cmds\"
51053 + cmds=$archive_expsym_cmds
51054 + else
51055 + eval test_cmds=\"$archive_cmds\"
51056 + cmds=$archive_cmds
51057 + fi
51058 + fi
51059 +
51060 + if test "X$skipped_export" != "X:" &&
51061 + len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
51062 + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
51063 + :
51064 + else
51065 + # The command line is too long to link in one step, link piecewise
51066 + # or, if using GNU ld and skipped_export is not :, use a linker
51067 + # script.
51068 +
51069 + # Save the value of $output and $libobjs because we want to
51070 + # use them later. If we have whole_archive_flag_spec, we
51071 + # want to use save_libobjs as it was before
51072 + # whole_archive_flag_spec was expanded, because we can't
51073 + # assume the linker understands whole_archive_flag_spec.
51074 + # This may have to be revisited, in case too many
51075 + # convenience libraries get linked in and end up exceeding
51076 + # the spec.
51077 + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
51078 + save_libobjs=$libobjs
51079 + fi
51080 + save_output=$output
51081 + output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
51082 +
51083 + # Clear the reloadable object creation command queue and
51084 + # initialize k to one.
51085 + test_cmds=
51086 + concat_cmds=
51087 + objlist=
51088 + last_robj=
51089 + k=1
51090 +
51091 + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
51092 + output=${output_objdir}/${output_la}.lnkscript
51093 + func_echo "creating GNU ld script: $output"
51094 + $ECHO 'INPUT (' > $output
51095 + for obj in $save_libobjs
51096 + do
51097 + $ECHO "$obj" >> $output
51098 + done
51099 + $ECHO ')' >> $output
51100 + delfiles="$delfiles $output"
51101 + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
51102 + output=${output_objdir}/${output_la}.lnk
51103 + func_echo "creating linker input file list: $output"
51104 + : > $output
51105 + set x $save_libobjs
51106 + shift
51107 + firstobj=
51108 + if test "$compiler_needs_object" = yes; then
51109 + firstobj="$1 "
51110 + shift
51111 + fi
51112 + for obj
51113 + do
51114 + $ECHO "$obj" >> $output
51115 + done
51116 + delfiles="$delfiles $output"
51117 + output=$firstobj\"$file_list_spec$output\"
51118 + else
51119 + if test -n "$save_libobjs"; then
51120 + func_echo "creating reloadable object files..."
51121 + output=$output_objdir/$output_la-${k}.$objext
51122 + # Loop over the list of objects to be linked.
51123 + for obj in $save_libobjs
51124 + do
51125 + eval test_cmds=\"$reload_cmds $objlist $last_robj\"
51126 + if test "X$objlist" = X ||
51127 + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
51128 + test "$len" -le "$max_cmd_len"; }; then
51129 + objlist="$objlist $obj"
51130 + else
51131 + # The command $test_cmds is almost too long, add a
51132 + # command to the queue.
51133 + if test "$k" -eq 1 ; then
51134 + # The first file doesn't have a previous command to add.
51135 + eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
51136 + else
51137 + # All subsequent reloadable object files will link in
51138 + # the last one created.
51139 + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
51140 + fi
51141 + last_robj=$output_objdir/$output_la-${k}.$objext
51142 + k=`expr $k + 1`
51143 + output=$output_objdir/$output_la-${k}.$objext
51144 + objlist=$obj
51145 + len=1
51146 + fi
51147 + done
51148 + # Handle the remaining objects by creating one last
51149 + # reloadable object file. All subsequent reloadable object
51150 + # files will link in the last one created.
51151 + test -z "$concat_cmds" || concat_cmds=$concat_cmds~
51152 + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
51153 +
51154 + # Set up a command to remove the reloadable object files
51155 + # after they are used.
51156 + i=0
51157 + while test "$i" -lt "$k"
51158 + do
51159 + i=`expr $i + 1`
51160 + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
51161 + done
51162 + else
51163 + output=
51164 + fi
51165 +
51166 + if ${skipped_export-false}; then
51167 + func_echo "generating symbol list for \`$libname.la'"
51168 + export_symbols="$output_objdir/$libname.exp"
51169 + $opt_dry_run || $RM $export_symbols
51170 + libobjs=$output
51171 + # Append the command to create the export file.
51172 + test -z "$concat_cmds" || concat_cmds=$concat_cmds~
51173 + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
51174 + fi
51175 +
51176 + test -n "$save_libobjs" &&
51177 + func_echo "creating a temporary reloadable object file: $output"
51178 +
51179 + # Loop through the commands generated above and execute them.
51180 + save_ifs="$IFS"; IFS='~'
51181 + for cmd in $concat_cmds; do
51182 + IFS="$save_ifs"
51183 + $opt_silent || {
51184 + func_quote_for_expand "$cmd"
51185 + eval "func_echo $func_quote_for_expand_result"
51186 + }
51187 + $opt_dry_run || eval "$cmd" || {
51188 + lt_exit=$?
51189 +
51190 + # Restore the uninstalled library and exit
51191 + if test "$mode" = relink; then
51192 + ( cd "$output_objdir" && \
51193 + $RM "${realname}T" && \
51194 + $MV "${realname}U" "$realname" )
51195 + fi
51196 +
51197 + exit $lt_exit
51198 + }
51199 + done
51200 + IFS="$save_ifs"
51201 +
51202 + if test -n "$export_symbols_regex" && ${skipped_export-false}; then
51203 + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
51204 + func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
51205 + fi
51206 + fi
51207 +
51208 + if ${skipped_export-false}; then
51209 + if test -n "$export_symbols" && test -n "$include_expsyms"; then
51210 + tmp_export_symbols="$export_symbols"
51211 + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
51212 + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
51213 + fi
51214 +
51215 + if test -n "$orig_export_symbols"; then
51216 + # The given exports_symbols file has to be filtered, so filter it.
51217 + func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
51218 + # FIXME: $output_objdir/$libname.filter potentially contains lots of
51219 + # 's' commands which not all seds can handle. GNU sed should be fine
51220 + # though. Also, the filter scales superlinearly with the number of
51221 + # global variables. join(1) would be nice here, but unfortunately
51222 + # isn't a blessed tool.
51223 + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
51224 + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
51225 + export_symbols=$output_objdir/$libname.def
51226 + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
51227 + fi
51228 + fi
51229 +
51230 + libobjs=$output
51231 + # Restore the value of output.
51232 + output=$save_output
51233 +
51234 + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
51235 + eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
51236 + test "X$libobjs" = "X " && libobjs=
51237 + fi
51238 + # Expand the library linking commands again to reset the
51239 + # value of $libobjs for piecewise linking.
51240 +
51241 + # Do each of the archive commands.
51242 + if test "$module" = yes && test -n "$module_cmds" ; then
51243 + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
51244 + cmds=$module_expsym_cmds
51245 + else
51246 + cmds=$module_cmds
51247 + fi
51248 + else
51249 + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
51250 + cmds=$archive_expsym_cmds
51251 + else
51252 + cmds=$archive_cmds
51253 + fi
51254 + fi
51255 + fi
51256 +
51257 + if test -n "$delfiles"; then
51258 + # Append the command to remove temporary files to $cmds.
51259 + eval cmds=\"\$cmds~\$RM $delfiles\"
51260 + fi
51261 +
51262 + # Add any objects from preloaded convenience libraries
51263 + if test -n "$dlprefiles"; then
51264 + gentop="$output_objdir/${outputname}x"
51265 + generated="$generated $gentop"
51266 +
51267 + func_extract_archives $gentop $dlprefiles
51268 + libobjs="$libobjs $func_extract_archives_result"
51269 + test "X$libobjs" = "X " && libobjs=
51270 + fi
51271 +
51272 + save_ifs="$IFS"; IFS='~'
51273 + for cmd in $cmds; do
51274 + IFS="$save_ifs"
51275 + eval cmd=\"$cmd\"
51276 + $opt_silent || {
51277 + func_quote_for_expand "$cmd"
51278 + eval "func_echo $func_quote_for_expand_result"
51279 + }
51280 + $opt_dry_run || eval "$cmd" || {
51281 + lt_exit=$?
51282 +
51283 + # Restore the uninstalled library and exit
51284 + if test "$mode" = relink; then
51285 + ( cd "$output_objdir" && \
51286 + $RM "${realname}T" && \
51287 + $MV "${realname}U" "$realname" )
51288 + fi
51289 +
51290 + exit $lt_exit
51291 + }
51292 + done
51293 + IFS="$save_ifs"
51294 +
51295 + # Restore the uninstalled library and exit
51296 + if test "$mode" = relink; then
51297 + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
51298 +
51299 + if test -n "$convenience"; then
51300 + if test -z "$whole_archive_flag_spec"; then
51301 + func_show_eval '${RM}r "$gentop"'
51302 + fi
51303 + fi
51304 +
51305 + exit $EXIT_SUCCESS
51306 + fi
51307 +
51308 + # Create links to the real library.
51309 + for linkname in $linknames; do
51310 + if test "$realname" != "$linkname"; then
51311 + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
51312 + fi
51313 + done
51314 +
51315 + # If -module or -export-dynamic was specified, set the dlname.
51316 + if test "$module" = yes || test "$export_dynamic" = yes; then
51317 + # On all known operating systems, these are identical.
51318 + dlname="$soname"
51319 + fi
51320 + fi
51321 + ;;
51322 +
51323 + obj)
51324 + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
51325 + func_warning "\`-dlopen' is ignored for objects"
51326 + fi
51327 +
51328 + test -n "$deplibs" && \
51329 + func_warning "\`-l' and \`-L' are ignored for objects"
51330 +
51331 + test -n "$rpath" && \
51332 + func_warning "\`-rpath' is ignored for objects"
51333 +
51334 + test -n "$xrpath" && \
51335 + func_warning "\`-R' is ignored for objects"
51336 +
51337 + test -n "$vinfo" && \
51338 + func_warning "\`-version-info' is ignored for objects"
51339 +
51340 + test -n "$release" && \
51341 + func_warning "\`-release' is ignored for objects"
51342 +
51343 + case $output in
51344 + *.lo)
51345 + test -n "$objs$old_deplibs" && \
51346 + func_fatal_error "cannot build library object \`$output' from non-libtool objects"
51347 +
51348 + libobj=$output
51349 + func_lo2o "$libobj"
51350 + obj=$func_lo2o_result
51351 + ;;
51352 + *)
51353 + libobj=
51354 + obj="$output"
51355 + ;;
51356 + esac
51357 +
51358 + # Delete the old objects.
51359 + $opt_dry_run || $RM $obj $libobj
51360 +
51361 + # Objects from convenience libraries. This assumes
51362 + # single-version convenience libraries. Whenever we create
51363 + # different ones for PIC/non-PIC, this we'll have to duplicate
51364 + # the extraction.
51365 + reload_conv_objs=
51366 + gentop=
51367 + # reload_cmds runs $LD directly, so let us get rid of
51368 + # -Wl from whole_archive_flag_spec and hope we can get by with
51369 + # turning comma into space..
51370 + wl=
51371 +
51372 + if test -n "$convenience"; then
51373 + if test -n "$whole_archive_flag_spec"; then
51374 + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
51375 + reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
51376 + else
51377 + gentop="$output_objdir/${obj}x"
51378 + generated="$generated $gentop"
51379 +
51380 + func_extract_archives $gentop $convenience
51381 + reload_conv_objs="$reload_objs $func_extract_archives_result"
51382 + fi
51383 + fi
51384 +
51385 + # Create the old-style object.
51386 + 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
51387 +
51388 + output="$obj"
51389 + func_execute_cmds "$reload_cmds" 'exit $?'
51390 +
51391 + # Exit if we aren't doing a library object file.
51392 + if test -z "$libobj"; then
51393 + if test -n "$gentop"; then
51394 + func_show_eval '${RM}r "$gentop"'
51395 + fi
51396 +
51397 + exit $EXIT_SUCCESS
51398 + fi
51399 +
51400 + if test "$build_libtool_libs" != yes; then
51401 + if test -n "$gentop"; then
51402 + func_show_eval '${RM}r "$gentop"'
51403 + fi
51404 +
51405 + # Create an invalid libtool object if no PIC, so that we don't
51406 + # accidentally link it into a program.
51407 + # $show "echo timestamp > $libobj"
51408 + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
51409 + exit $EXIT_SUCCESS
51410 + fi
51411 +
51412 + if test -n "$pic_flag" || test "$pic_mode" != default; then
51413 + # Only do commands if we really have different PIC objects.
51414 + reload_objs="$libobjs $reload_conv_objs"
51415 + output="$libobj"
51416 + func_execute_cmds "$reload_cmds" 'exit $?'
51417 + fi
51418 +
51419 + if test -n "$gentop"; then
51420 + func_show_eval '${RM}r "$gentop"'
51421 + fi
51422 +
51423 + exit $EXIT_SUCCESS
51424 + ;;
51425 +
51426 + prog)
51427 + case $host in
51428 + *cygwin*) func_stripname '' '.exe' "$output"
51429 + output=$func_stripname_result.exe;;
51430 + esac
51431 + test -n "$vinfo" && \
51432 + func_warning "\`-version-info' is ignored for programs"
51433 +
51434 + test -n "$release" && \
51435 + func_warning "\`-release' is ignored for programs"
51436 +
51437 + test "$preload" = yes \
51438 + && test "$dlopen_support" = unknown \
51439 + && test "$dlopen_self" = unknown \
51440 + && test "$dlopen_self_static" = unknown && \
51441 + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
51442 +
51443 + case $host in
51444 + *-*-rhapsody* | *-*-darwin1.[012])
51445 + # On Rhapsody replace the C library is the System framework
51446 + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
51447 + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
51448 + ;;
51449 + esac
51450 +
51451 + case $host in
51452 + *-*-darwin*)
51453 + # Don't allow lazy linking, it breaks C++ global constructors
51454 + # But is supposedly fixed on 10.4 or later (yay!).
51455 + if test "$tagname" = CXX ; then
51456 + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
51457 + 10.[0123])
51458 + compile_command="$compile_command ${wl}-bind_at_load"
51459 + finalize_command="$finalize_command ${wl}-bind_at_load"
51460 + ;;
51461 + esac
51462 + fi
51463 + # Time to change all our "foo.ltframework" stuff back to "-framework foo"
51464 + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
51465 + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
51466 + ;;
51467 + esac
51468 +
51469 +
51470 + # move library search paths that coincide with paths to not yet
51471 + # installed libraries to the beginning of the library search list
51472 + new_libs=
51473 + for path in $notinst_path; do
51474 + case " $new_libs " in
51475 + *" -L$path/$objdir "*) ;;
51476 + *)
51477 + case " $compile_deplibs " in
51478 + *" -L$path/$objdir "*)
51479 + new_libs="$new_libs -L$path/$objdir" ;;
51480 + esac
51481 + ;;
51482 + esac
51483 + done
51484 + for deplib in $compile_deplibs; do
51485 + case $deplib in
51486 + -L*)
51487 + case " $new_libs " in
51488 + *" $deplib "*) ;;
51489 + *) new_libs="$new_libs $deplib" ;;
51490 + esac
51491 + ;;
51492 + *) new_libs="$new_libs $deplib" ;;
51493 + esac
51494 + done
51495 + compile_deplibs="$new_libs"
51496 +
51497 +
51498 + compile_command="$compile_command $compile_deplibs"
51499 + finalize_command="$finalize_command $finalize_deplibs"
51500 +
51501 + if test -n "$rpath$xrpath"; then
51502 + # If the user specified any rpath flags, then add them.
51503 + for libdir in $rpath $xrpath; do
51504 + # This is the magic to use -rpath.
51505 + case "$finalize_rpath " in
51506 + *" $libdir "*) ;;
51507 + *) finalize_rpath="$finalize_rpath $libdir" ;;
51508 + esac
51509 + done
51510 + fi
51511 +
51512 + # Now hardcode the library paths
51513 + rpath=
51514 + hardcode_libdirs=
51515 + for libdir in $compile_rpath $finalize_rpath; do
51516 + if test -n "$hardcode_libdir_flag_spec"; then
51517 + if test -n "$hardcode_libdir_separator"; then
51518 + if test -z "$hardcode_libdirs"; then
51519 + hardcode_libdirs="$libdir"
51520 + else
51521 + # Just accumulate the unique libdirs.
51522 + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
51523 + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
51524 + ;;
51525 + *)
51526 + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
51527 + ;;
51528 + esac
51529 + fi
51530 + else
51531 + eval flag=\"$hardcode_libdir_flag_spec\"
51532 + rpath="$rpath $flag"
51533 + fi
51534 + elif test -n "$runpath_var"; then
51535 + case "$perm_rpath " in
51536 + *" $libdir "*) ;;
51537 + *) perm_rpath="$perm_rpath $libdir" ;;
51538 + esac
51539 + fi
51540 + case $host in
51541 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
51542 + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
51543 + case :$dllsearchpath: in
51544 + *":$libdir:"*) ;;
51545 + *) dllsearchpath="$dllsearchpath:$libdir";;
51546 + esac
51547 + case :$dllsearchpath: in
51548 + *":$testbindir:"*) ;;
51549 + *) dllsearchpath="$dllsearchpath:$testbindir";;
51550 + esac
51551 + ;;
51552 + esac
51553 + done
51554 + # Substitute the hardcoded libdirs into the rpath.
51555 + if test -n "$hardcode_libdir_separator" &&
51556 + test -n "$hardcode_libdirs"; then
51557 + libdir="$hardcode_libdirs"
51558 + eval rpath=\" $hardcode_libdir_flag_spec\"
51559 + fi
51560 + compile_rpath="$rpath"
51561 +
51562 + rpath=
51563 + hardcode_libdirs=
51564 + for libdir in $finalize_rpath; do
51565 + if test -n "$hardcode_libdir_flag_spec"; then
51566 + if test -n "$hardcode_libdir_separator"; then
51567 + if test -z "$hardcode_libdirs"; then
51568 + hardcode_libdirs="$libdir"
51569 + else
51570 + # Just accumulate the unique libdirs.
51571 + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
51572 + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
51573 + ;;
51574 + *)
51575 + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
51576 + ;;
51577 + esac
51578 + fi
51579 + else
51580 + eval flag=\"$hardcode_libdir_flag_spec\"
51581 + rpath="$rpath $flag"
51582 + fi
51583 + elif test -n "$runpath_var"; then
51584 + case "$finalize_perm_rpath " in
51585 + *" $libdir "*) ;;
51586 + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
51587 + esac
51588 + fi
51589 + done
51590 + # Substitute the hardcoded libdirs into the rpath.
51591 + if test -n "$hardcode_libdir_separator" &&
51592 + test -n "$hardcode_libdirs"; then
51593 + libdir="$hardcode_libdirs"
51594 + eval rpath=\" $hardcode_libdir_flag_spec\"
51595 + fi
51596 + finalize_rpath="$rpath"
51597 +
51598 + if test -n "$libobjs" && test "$build_old_libs" = yes; then
51599 + # Transform all the library objects into standard objects.
51600 + compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
51601 + finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
51602 + fi
51603 +
51604 + func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
51605 +
51606 + # template prelinking step
51607 + if test -n "$prelink_cmds"; then
51608 + func_execute_cmds "$prelink_cmds" 'exit $?'
51609 + fi
51610 +
51611 + wrappers_required=yes
51612 + case $host in
51613 + *cygwin* | *mingw* )
51614 + if test "$build_libtool_libs" != yes; then
51615 + wrappers_required=no
51616 + fi
51617 + ;;
51618 + *)
51619 + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
51620 + wrappers_required=no
51621 + fi
51622 + ;;
51623 + esac
51624 + if test "$wrappers_required" = no; then
51625 + # Replace the output file specification.
51626 + compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
51627 + link_command="$compile_command$compile_rpath"
51628 +
51629 + # We have no uninstalled library dependencies, so finalize right now.
51630 + exit_status=0
51631 + func_show_eval "$link_command" 'exit_status=$?'
51632 +
51633 + # Delete the generated files.
51634 + if test -f "$output_objdir/${outputname}S.${objext}"; then
51635 + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
51636 + fi
51637 +
51638 + exit $exit_status
51639 + fi
51640 +
51641 + if test -n "$compile_shlibpath$finalize_shlibpath"; then
51642 + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
51643 + fi
51644 + if test -n "$finalize_shlibpath"; then
51645 + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
51646 + fi
51647 +
51648 + compile_var=
51649 + finalize_var=
51650 + if test -n "$runpath_var"; then
51651 + if test -n "$perm_rpath"; then
51652 + # We should set the runpath_var.
51653 + rpath=
51654 + for dir in $perm_rpath; do
51655 + rpath="$rpath$dir:"
51656 + done
51657 + compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
51658 + fi
51659 + if test -n "$finalize_perm_rpath"; then
51660 + # We should set the runpath_var.
51661 + rpath=
51662 + for dir in $finalize_perm_rpath; do
51663 + rpath="$rpath$dir:"
51664 + done
51665 + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
51666 + fi
51667 + fi
51668 +
51669 + if test "$no_install" = yes; then
51670 + # We don't need to create a wrapper script.
51671 + link_command="$compile_var$compile_command$compile_rpath"
51672 + # Replace the output file specification.
51673 + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
51674 + # Delete the old output file.
51675 + $opt_dry_run || $RM $output
51676 + # Link the executable and exit
51677 + func_show_eval "$link_command" 'exit $?'
51678 + exit $EXIT_SUCCESS
51679 + fi
51680 +
51681 + if test "$hardcode_action" = relink; then
51682 + # Fast installation is not supported
51683 + link_command="$compile_var$compile_command$compile_rpath"
51684 + relink_command="$finalize_var$finalize_command$finalize_rpath"
51685 +
51686 + func_warning "this platform does not like uninstalled shared libraries"
51687 + func_warning "\`$output' will be relinked during installation"
51688 + else
51689 + if test "$fast_install" != no; then
51690 + link_command="$finalize_var$compile_command$finalize_rpath"
51691 + if test "$fast_install" = yes; then
51692 + relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
51693 + else
51694 + # fast_install is set to needless
51695 + relink_command=
51696 + fi
51697 + else
51698 + link_command="$compile_var$compile_command$compile_rpath"
51699 + relink_command="$finalize_var$finalize_command$finalize_rpath"
51700 + fi
51701 + fi
51702 +
51703 + # Replace the output file specification.
51704 + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
51705 +
51706 + # Delete the old output files.
51707 + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
51708 +
51709 + func_show_eval "$link_command" 'exit $?'
51710 +
51711 + # Now create the wrapper script.
51712 + func_echo "creating $output"
51713 +
51714 + # Quote the relink command for shipping.
51715 + if test -n "$relink_command"; then
51716 + # Preserve any variables that may affect compiler behavior
51717 + for var in $variables_saved_for_relink; do
51718 + if eval test -z \"\${$var+set}\"; then
51719 + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
51720 + elif eval var_value=\$$var; test -z "$var_value"; then
51721 + relink_command="$var=; export $var; $relink_command"
51722 + else
51723 + func_quote_for_eval "$var_value"
51724 + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
51725 + fi
51726 + done
51727 + relink_command="(cd `pwd`; $relink_command)"
51728 + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
51729 + fi
51730 +
51731 + # Quote $ECHO for shipping.
51732 + if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
51733 + case $progpath in
51734 + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
51735 + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
51736 + esac
51737 + qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
51738 + else
51739 + qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
51740 + fi
51741 +
51742 + # Only actually do things if not in dry run mode.
51743 + $opt_dry_run || {
51744 + # win32 will think the script is a binary if it has
51745 + # a .exe suffix, so we strip it off here.
51746 + case $output in
51747 + *.exe) func_stripname '' '.exe' "$output"
51748 + output=$func_stripname_result ;;
51749 + esac
51750 + # test for cygwin because mv fails w/o .exe extensions
51751 + case $host in
51752 + *cygwin*)
51753 + exeext=.exe
51754 + func_stripname '' '.exe' "$outputname"
51755 + outputname=$func_stripname_result ;;
51756 + *) exeext= ;;
51757 + esac
51758 + case $host in
51759 + *cygwin* | *mingw* )
51760 + output_name=`basename $output`
51761 + output_path=`dirname $output`
51762 + cwrappersource="$output_path/$objdir/lt-$output_name.c"
51763 + cwrapper="$output_path/$output_name.exe"
51764 + $RM $cwrappersource $cwrapper
51765 + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
51766 +
51767 + cat > $cwrappersource <<EOF
51768 +
51769 +/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
51770 + Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
51771 +
51772 + The $output program cannot be directly executed until all the libtool
51773 + libraries that it depends on are installed.
51774 +
51775 + This wrapper executable should never be moved out of the build directory.
51776 + If it is, it will not operate correctly.
51777 +
51778 + Currently, it simply execs the wrapper *script* "/bin/sh $output",
51779 + but could eventually absorb all of the scripts functionality and
51780 + exec $objdir/$outputname directly.
51781 +*/
51782 +EOF
51783 + cat >> $cwrappersource<<"EOF"
51784 +#include <stdio.h>
51785 +#include <stdlib.h>
51786 +#include <unistd.h>
51787 +#include <malloc.h>
51788 +#include <stdarg.h>
51789 +#include <assert.h>
51790 +#include <string.h>
51791 +#include <ctype.h>
51792 +#include <sys/stat.h>
51793 +
51794 +#if defined(PATH_MAX)
51795 +# define LT_PATHMAX PATH_MAX
51796 +#elif defined(MAXPATHLEN)
51797 +# define LT_PATHMAX MAXPATHLEN
51798 +#else
51799 +# define LT_PATHMAX 1024
51800 +#endif
51801 +
51802 +#ifndef DIR_SEPARATOR
51803 +# define DIR_SEPARATOR '/'
51804 +# define PATH_SEPARATOR ':'
51805 +#endif
51806 +
51807 +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
51808 + defined (__OS2__)
51809 +# define HAVE_DOS_BASED_FILE_SYSTEM
51810 +# ifndef DIR_SEPARATOR_2
51811 +# define DIR_SEPARATOR_2 '\\'
51812 +# endif
51813 +# ifndef PATH_SEPARATOR_2
51814 +# define PATH_SEPARATOR_2 ';'
51815 +# endif
51816 +#endif
51817 +
51818 +#ifndef DIR_SEPARATOR_2
51819 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
51820 +#else /* DIR_SEPARATOR_2 */
51821 +# define IS_DIR_SEPARATOR(ch) \
51822 + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
51823 +#endif /* DIR_SEPARATOR_2 */
51824 +
51825 +#ifndef PATH_SEPARATOR_2
51826 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
51827 +#else /* PATH_SEPARATOR_2 */
51828 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
51829 +#endif /* PATH_SEPARATOR_2 */
51830 +
51831 +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
51832 +#define XFREE(stale) do { \
51833 + if (stale) { free ((void *) stale); stale = 0; } \
51834 +} while (0)
51835 +
51836 +/* -DDEBUG is fairly common in CFLAGS. */
51837 +#undef DEBUG
51838 +#if defined DEBUGWRAPPER
51839 +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
51840 +#else
51841 +# define DEBUG(format, ...)
51842 +#endif
51843 +
51844 +const char *program_name = NULL;
51845 +
51846 +void * xmalloc (size_t num);
51847 +char * xstrdup (const char *string);
51848 +const char * base_name (const char *name);
51849 +char * find_executable(const char *wrapper);
51850 +int check_executable(const char *path);
51851 +char * strendzap(char *str, const char *pat);
51852 +void lt_fatal (const char *message, ...);
51853 +
51854 +int
51855 +main (int argc, char *argv[])
51856 +{
51857 + char **newargz;
51858 + int i;
51859 +
51860 + program_name = (char *) xstrdup (base_name (argv[0]));
51861 + DEBUG("(main) argv[0] : %s\n",argv[0]);
51862 + DEBUG("(main) program_name : %s\n",program_name);
51863 + newargz = XMALLOC(char *, argc+2);
51864 +EOF
51865 +
51866 + cat >> $cwrappersource <<EOF
51867 + newargz[0] = (char *) xstrdup("$SHELL");
51868 +EOF
51869 +
51870 + cat >> $cwrappersource <<"EOF"
51871 + newargz[1] = find_executable(argv[0]);
51872 + if (newargz[1] == NULL)
51873 + lt_fatal("Couldn't find %s", argv[0]);
51874 + DEBUG("(main) found exe at : %s\n",newargz[1]);
51875 + /* we know the script has the same name, without the .exe */
51876 + /* so make sure newargz[1] doesn't end in .exe */
51877 + strendzap(newargz[1],".exe");
51878 + for (i = 1; i < argc; i++)
51879 + newargz[i+1] = xstrdup(argv[i]);
51880 + newargz[argc+1] = NULL;
51881 +
51882 + for (i=0; i<argc+1; i++)
51883 + {
51884 + DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
51885 + ;
51886 + }
51887 +
51888 +EOF
51889 +
51890 + case $host_os in
51891 + mingw*)
51892 + cat >> $cwrappersource <<EOF
51893 + execv("$SHELL",(char const **)newargz);
51894 +EOF
51895 + ;;
51896 + *)
51897 + cat >> $cwrappersource <<EOF
51898 + execv("$SHELL",newargz);
51899 +EOF
51900 + ;;
51901 + esac
51902 +
51903 + cat >> $cwrappersource <<"EOF"
51904 + return 127;
51905 +}
51906 +
51907 +void *
51908 +xmalloc (size_t num)
51909 +{
51910 + void * p = (void *) malloc (num);
51911 + if (!p)
51912 + lt_fatal ("Memory exhausted");
51913 +
51914 + return p;
51915 +}
51916 +
51917 +char *
51918 +xstrdup (const char *string)
51919 +{
51920 + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
51921 +;
51922 +}
51923 +
51924 +const char *
51925 +base_name (const char *name)
51926 +{
51927 + const char *base;
51928 +
51929 +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
51930 + /* Skip over the disk name in MSDOS pathnames. */
51931 + if (isalpha ((unsigned char)name[0]) && name[1] == ':')
51932 + name += 2;
51933 +#endif
51934 +
51935 + for (base = name; *name; name++)
51936 + if (IS_DIR_SEPARATOR (*name))
51937 + base = name + 1;
51938 + return base;
51939 +}
51940 +
51941 +int
51942 +check_executable(const char * path)
51943 +{
51944 + struct stat st;
51945 +
51946 + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
51947 + if ((!path) || (!*path))
51948 + return 0;
51949 +
51950 + if ((stat (path, &st) >= 0) &&
51951 + (
51952 + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
51953 +#if defined (S_IXOTH)
51954 + ((st.st_mode & S_IXOTH) == S_IXOTH) ||
51955 +#endif
51956 +#if defined (S_IXGRP)
51957 + ((st.st_mode & S_IXGRP) == S_IXGRP) ||
51958 +#endif
51959 + ((st.st_mode & S_IXUSR) == S_IXUSR))
51960 + )
51961 + return 1;
51962 + else
51963 + return 0;
51964 +}
51965 +
51966 +/* Searches for the full path of the wrapper. Returns
51967 + newly allocated full path name if found, NULL otherwise */
51968 +char *
51969 +find_executable (const char* wrapper)
51970 +{
51971 + int has_slash = 0;
51972 + const char* p;
51973 + const char* p_next;
51974 + /* static buffer for getcwd */
51975 + char tmp[LT_PATHMAX + 1];
51976 + int tmp_len;
51977 + char* concat_name;
51978 +
51979 + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
51980 +
51981 + if ((wrapper == NULL) || (*wrapper == '\0'))
51982 + return NULL;
51983 +
51984 + /* Absolute path? */
51985 +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
51986 + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
51987 + {
51988 + concat_name = xstrdup (wrapper);
51989 + if (check_executable(concat_name))
51990 + return concat_name;
51991 + XFREE(concat_name);
51992 + }
51993 + else
51994 + {
51995 +#endif
51996 + if (IS_DIR_SEPARATOR (wrapper[0]))
51997 + {
51998 + concat_name = xstrdup (wrapper);
51999 + if (check_executable(concat_name))
52000 + return concat_name;
52001 + XFREE(concat_name);
52002 + }
52003 +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
52004 + }
52005 +#endif
52006 +
52007 + for (p = wrapper; *p; p++)
52008 + if (*p == '/')
52009 + {
52010 + has_slash = 1;
52011 + break;
52012 + }
52013 + if (!has_slash)
52014 + {
52015 + /* no slashes; search PATH */
52016 + const char* path = getenv ("PATH");
52017 + if (path != NULL)
52018 + {
52019 + for (p = path; *p; p = p_next)
52020 + {
52021 + const char* q;
52022 + size_t p_len;
52023 + for (q = p; *q; q++)
52024 + if (IS_PATH_SEPARATOR(*q))
52025 + break;
52026 + p_len = q - p;
52027 + p_next = (*q == '\0' ? q : q + 1);
52028 + if (p_len == 0)
52029 + {
52030 + /* empty path: current directory */
52031 + if (getcwd (tmp, LT_PATHMAX) == NULL)
52032 + lt_fatal ("getcwd failed");
52033 + tmp_len = strlen(tmp);
52034 + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
52035 + memcpy (concat_name, tmp, tmp_len);
52036 + concat_name[tmp_len] = '/';
52037 + strcpy (concat_name + tmp_len + 1, wrapper);
52038 + }
52039 + else
52040 + {
52041 + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
52042 + memcpy (concat_name, p, p_len);
52043 + concat_name[p_len] = '/';
52044 + strcpy (concat_name + p_len + 1, wrapper);
52045 + }
52046 + if (check_executable(concat_name))
52047 + return concat_name;
52048 + XFREE(concat_name);
52049 + }
52050 + }
52051 + /* not found in PATH; assume curdir */
52052 + }
52053 + /* Relative path | not found in path: prepend cwd */
52054 + if (getcwd (tmp, LT_PATHMAX) == NULL)
52055 + lt_fatal ("getcwd failed");
52056 + tmp_len = strlen(tmp);
52057 + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
52058 + memcpy (concat_name, tmp, tmp_len);
52059 + concat_name[tmp_len] = '/';
52060 + strcpy (concat_name + tmp_len + 1, wrapper);
52061 +
52062 + if (check_executable(concat_name))
52063 + return concat_name;
52064 + XFREE(concat_name);
52065 + return NULL;
52066 +}
52067 +
52068 +char *
52069 +strendzap(char *str, const char *pat)
52070 +{
52071 + size_t len, patlen;
52072 +
52073 + assert(str != NULL);
52074 + assert(pat != NULL);
52075 +
52076 + len = strlen(str);
52077 + patlen = strlen(pat);
52078 +
52079 + if (patlen <= len)
52080 + {
52081 + str += len - patlen;
52082 + if (strcmp(str, pat) == 0)
52083 + *str = '\0';
52084 + }
52085 + return str;
52086 +}
52087 +
52088 +static void
52089 +lt_error_core (int exit_status, const char * mode,
52090 + const char * message, va_list ap)
52091 +{
52092 + fprintf (stderr, "%s: %s: ", program_name, mode);
52093 + vfprintf (stderr, message, ap);
52094 + fprintf (stderr, ".\n");
52095 +
52096 + if (exit_status >= 0)
52097 + exit (exit_status);
52098 +}
52099 +
52100 +void
52101 +lt_fatal (const char *message, ...)
52102 +{
52103 + va_list ap;
52104 + va_start (ap, message);
52105 + lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
52106 + va_end (ap);
52107 +}
52108 +EOF
52109 + # we should really use a build-platform specific compiler
52110 + # here, but OTOH, the wrappers (shell script and this C one)
52111 + # are only useful if you want to execute the "real" binary.
52112 + # Since the "real" binary is built for $host, then this
52113 + # wrapper might as well be built for $host, too.
52114 + $opt_dry_run || $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
52115 + ;;
52116 + esac
52117 + $RM $output
52118 + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
52119 +
52120 + $ECHO > $output "\
52121 +#! $SHELL
52122 +
52123 +# $output - temporary wrapper script for $objdir/$outputname
52124 +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
52125 +#
52126 +# The $output program cannot be directly executed until all the libtool
52127 +# libraries that it depends on are installed.
52128 +#
52129 +# This wrapper script should never be moved out of the build directory.
52130 +# If it is, it will not operate correctly.
52131 +
52132 +# Sed substitution that helps us do robust quoting. It backslashifies
52133 +# metacharacters that are still active within double-quoted strings.
52134 +Xsed='${SED} -e 1s/^X//'
52135 +sed_quote_subst='$sed_quote_subst'
52136 +
52137 +# Be Bourne compatible
52138 +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
52139 + emulate sh
52140 + NULLCMD=:
52141 + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
52142 + # is contrary to our usage. Disable this feature.
52143 + alias -g '\${1+\"\$@\"}'='\"\$@\"'
52144 + setopt NO_GLOB_SUBST
52145 +else
52146 + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
52147 +fi
52148 +BIN_SH=xpg4; export BIN_SH # for Tru64
52149 +DUALCASE=1; export DUALCASE # for MKS sh
52150 +
52151 +# The HP-UX ksh and POSIX shell print the target directory to stdout
52152 +# if CDPATH is set.
52153 +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
52154 +
52155 +relink_command=\"$relink_command\"
52156 +
52157 +# This environment variable determines our operation mode.
52158 +if test \"\$libtool_install_magic\" = \"$magic\"; then
52159 + # install mode needs the following variables:
52160 + generated_by_libtool_version='$macro_version'
52161 + notinst_deplibs='$notinst_deplibs'
52162 +else
52163 + # When we are sourced in execute mode, \$file and \$ECHO are already set.
52164 + if test \"\$libtool_execute_magic\" != \"$magic\"; then
52165 + ECHO=\"$qecho\"
52166 + file=\"\$0\"
52167 + # Make sure echo works.
52168 + if test \"X\$1\" = X--no-reexec; then
52169 + # Discard the --no-reexec flag, and continue.
52170 + shift
52171 + elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
52172 + # Yippee, \$ECHO works!
52173 + :
52174 + else
52175 + # Restart under the correct shell, and then maybe \$ECHO will work.
52176 + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
52177 + fi
52178 + fi\
52179 +"
52180 + $ECHO >> $output "\
52181 +
52182 + # Find the directory that this script lives in.
52183 + thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
52184 + test \"x\$thisdir\" = \"x\$file\" && thisdir=.
52185 +
52186 + # Follow symbolic links until we get to the real thisdir.
52187 + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
52188 + while test -n \"\$file\"; do
52189 + destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
52190 +
52191 + # If there was a directory component, then change thisdir.
52192 + if test \"x\$destdir\" != \"x\$file\"; then
52193 + case \"\$destdir\" in
52194 + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
52195 + *) thisdir=\"\$thisdir/\$destdir\" ;;
52196 + esac
52197 + fi
52198 +
52199 + file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
52200 + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
52201 + done
52202 +
52203 + # Try to get the absolute directory name.
52204 + absdir=\`cd \"\$thisdir\" && pwd\`
52205 + test -n \"\$absdir\" && thisdir=\"\$absdir\"
52206 +"
52207 +
52208 + if test "$fast_install" = yes; then
52209 + $ECHO >> $output "\
52210 + program=lt-'$outputname'$exeext
52211 + progdir=\"\$thisdir/$objdir\"
52212 +
52213 + if test ! -f \"\$progdir/\$program\" ||
52214 + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
52215 + test \"X\$file\" != \"X\$progdir/\$program\"; }; then
52216 +
52217 + file=\"\$\$-\$program\"
52218 +
52219 + if test ! -d \"\$progdir\"; then
52220 + $MKDIR \"\$progdir\"
52221 + else
52222 + $RM \"\$progdir/\$file\"
52223 + fi"
52224 +
52225 + $ECHO >> $output "\
52226 +
52227 + # relink executable if necessary
52228 + if test -n \"\$relink_command\"; then
52229 + if relink_command_output=\`eval \$relink_command 2>&1\`; then :
52230 + else
52231 + $ECHO \"\$relink_command_output\" >&2
52232 + $RM \"\$progdir/\$file\"
52233 + exit 1
52234 + fi
52235 + fi
52236 +
52237 + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
52238 + { $RM \"\$progdir/\$program\";
52239 + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
52240 + $RM \"\$progdir/\$file\"
52241 + fi"
52242 + else
52243 + $ECHO >> $output "\
52244 + program='$outputname'
52245 + progdir=\"\$thisdir/$objdir\"
52246 +"
52247 + fi
52248 +
52249 + $ECHO >> $output "\
52250 +
52251 + if test -f \"\$progdir/\$program\"; then"
52252 +
52253 + # Export our shlibpath_var if we have one.
52254 + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
52255 + $ECHO >> $output "\
52256 + # Add our own library path to $shlibpath_var
52257 + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
52258 +
52259 + # Some systems cannot cope with colon-terminated $shlibpath_var
52260 + # The second colon is a workaround for a bug in BeOS R4 sed
52261 + $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
52262 +
52263 + export $shlibpath_var
52264 +"
52265 + fi
52266 +
52267 + # fixup the dll searchpath if we need to.
52268 + if test -n "$dllsearchpath"; then
52269 + $ECHO >> $output "\
52270 + # Add the dll search path components to the executable PATH
52271 + PATH=$dllsearchpath:\$PATH
52272 +"
52273 + fi
52274 +
52275 + $ECHO >> $output "\
52276 + if test \"\$libtool_execute_magic\" != \"$magic\"; then
52277 + # Run the actual program with our arguments.
52278 +"
52279 + case $host in
52280 + # Backslashes separate directories on plain windows
52281 + *-*-mingw | *-*-os2*)
52282 + $ECHO >> $output "\
52283 + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
52284 +"
52285 + ;;
52286 +
52287 + *)
52288 + $ECHO >> $output "\
52289 + exec \"\$progdir/\$program\" \${1+\"\$@\"}
52290 +"
52291 + ;;
52292 + esac
52293 + $ECHO >> $output "\
52294 + \$ECHO \"\$0: cannot exec \$program \$*\"
52295 + exit 1
52296 + fi
52297 + else
52298 + # The program doesn't exist.
52299 + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
52300 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
52301 + $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
52302 + exit 1
52303 + fi
52304 +fi\
52305 +"
52306 + chmod +x $output
52307 + }
52308 + exit $EXIT_SUCCESS
52309 + ;;
52310 + esac
52311 +
52312 + # See if we need to build an old-fashioned archive.
52313 + for oldlib in $oldlibs; do
52314 +
52315 + if test "$build_libtool_libs" = convenience; then
52316 + oldobjs="$libobjs_save $symfileobj"
52317 + addlibs="$convenience"
52318 + build_libtool_libs=no
52319 + else
52320 + if test "$build_libtool_libs" = module; then
52321 + oldobjs="$libobjs_save"
52322 + build_libtool_libs=no
52323 + else
52324 + oldobjs="$old_deplibs $non_pic_objects"
52325 + if test "$preload" = yes && test -f "$symfileobj"; then
52326 + oldobjs="$oldobjs $symfileobj"
52327 + fi
52328 + fi
52329 + addlibs="$old_convenience"
52330 + fi
52331 +
52332 + if test -n "$addlibs"; then
52333 + gentop="$output_objdir/${outputname}x"
52334 + generated="$generated $gentop"
52335 +
52336 + func_extract_archives $gentop $addlibs
52337 + oldobjs="$oldobjs $func_extract_archives_result"
52338 + fi
52339 +
52340 + # Do each command in the archive commands.
52341 + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
52342 + cmds=$old_archive_from_new_cmds
52343 + else
52344 +
52345 + # Add any objects from preloaded convenience libraries
52346 + if test -n "$dlprefiles"; then
52347 + gentop="$output_objdir/${outputname}x"
52348 + generated="$generated $gentop"
52349 +
52350 + func_extract_archives $gentop $dlprefiles
52351 + oldobjs="$oldobjs $func_extract_archives_result"
52352 + fi
52353 +
52354 + # POSIX demands no paths to be encoded in archives. We have
52355 + # to avoid creating archives with duplicate basenames if we
52356 + # might have to extract them afterwards, e.g., when creating a
52357 + # static archive out of a convenience library, or when linking
52358 + # the entirety of a libtool archive into another (currently
52359 + # not supported by libtool).
52360 + if (for obj in $oldobjs
52361 + do
52362 + func_basename "$obj"
52363 + $ECHO "$func_basename_result"
52364 + done | sort | sort -uc >/dev/null 2>&1); then
52365 + :
52366 + else
52367 + $ECHO "copying selected object files to avoid basename conflicts..."
52368 + gentop="$output_objdir/${outputname}x"
52369 + generated="$generated $gentop"
52370 + func_mkdir_p "$gentop"
52371 + save_oldobjs=$oldobjs
52372 + oldobjs=
52373 + counter=1
52374 + for obj in $save_oldobjs
52375 + do
52376 + func_basename "$obj"
52377 + objbase="$func_basename_result"
52378 + case " $oldobjs " in
52379 + " ") oldobjs=$obj ;;
52380 + *[\ /]"$objbase "*)
52381 + while :; do
52382 + # Make sure we don't pick an alternate name that also
52383 + # overlaps.
52384 + newobj=lt$counter-$objbase
52385 + counter=`expr $counter + 1`
52386 + case " $oldobjs " in
52387 + *[\ /]"$newobj "*) ;;
52388 + *) if test ! -f "$gentop/$newobj"; then break; fi ;;
52389 + esac
52390 + done
52391 + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
52392 + oldobjs="$oldobjs $gentop/$newobj"
52393 + ;;
52394 + *) oldobjs="$oldobjs $obj" ;;
52395 + esac
52396 + done
52397 + fi
52398 + eval cmds=\"$old_archive_cmds\"
52399 +
52400 + if len=`expr "X$cmds" : ".*" 2>/dev/null` &&
52401 + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
52402 + cmds=$old_archive_cmds
52403 + else
52404 + # the command line is too long to link in one step, link in parts
52405 + func_echo "using piecewise archive linking..."
52406 + save_RANLIB=$RANLIB
52407 + RANLIB=:
52408 + objlist=
52409 + concat_cmds=
52410 + save_oldobjs=$oldobjs
52411 + # Is there a better way of finding the last object in the list?
52412 + for obj in $save_oldobjs
52413 + do
52414 + last_oldobj=$obj
52415 + done
52416 + for obj in $save_oldobjs
52417 + do
52418 + oldobjs="$objlist $obj"
52419 + objlist="$objlist $obj"
52420 + eval test_cmds=\"$old_archive_cmds\"
52421 + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
52422 + test "$len" -le "$max_cmd_len"; then
52423 + :
52424 + else
52425 + # the above command should be used before it gets too long
52426 + oldobjs=$objlist
52427 + if test "$obj" = "$last_oldobj" ; then
52428 + RANLIB=$save_RANLIB
52429 + fi
52430 + test -z "$concat_cmds" || concat_cmds=$concat_cmds~
52431 + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
52432 + objlist=
52433 + fi
52434 + done
52435 + RANLIB=$save_RANLIB
52436 + oldobjs=$objlist
52437 + if test "X$oldobjs" = "X" ; then
52438 + eval cmds=\"\$concat_cmds\"
52439 + else
52440 + eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
52441 + fi
52442 + fi
52443 + fi
52444 + func_execute_cmds "$cmds" 'exit $?'
52445 + done
52446 +
52447 + test -n "$generated" && \
52448 + func_show_eval "${RM}r$generated"
52449 +
52450 + # Now create the libtool archive.
52451 + case $output in
52452 + *.la)
52453 + old_library=
52454 + test "$build_old_libs" = yes && old_library="$libname.$libext"
52455 + func_echo "creating $output"
52456 +
52457 + # Preserve any variables that may affect compiler behavior
52458 + for var in $variables_saved_for_relink; do
52459 + if eval test -z \"\${$var+set}\"; then
52460 + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
52461 + elif eval var_value=\$$var; test -z "$var_value"; then
52462 + relink_command="$var=; export $var; $relink_command"
52463 + else
52464 + func_quote_for_eval "$var_value"
52465 + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
52466 + fi
52467 + done
52468 + # Quote the link command for shipping.
52469 + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
52470 + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
52471 + if test "$hardcode_automatic" = yes ; then
52472 + relink_command=
52473 + fi
52474 +
52475 + # Only create the output if not a dry run.
52476 + $opt_dry_run || {
52477 + for installed in no yes; do
52478 + if test "$installed" = yes; then
52479 + if test -z "$install_libdir"; then
52480 + break
52481 + fi
52482 + output="$output_objdir/$outputname"i
52483 + # Replace all uninstalled libtool libraries with the installed ones
52484 + newdependency_libs=
52485 + for deplib in $dependency_libs; do
52486 + case $deplib in
52487 + *.la)
52488 + func_basename "$deplib"
52489 + name="$func_basename_result"
52490 + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
52491 + test -z "$libdir" && \
52492 + func_fatal_error "\`$deplib' is not a valid libtool archive"
52493 + newdependency_libs="$newdependency_libs $libdir/$name"
52494 + ;;
52495 + *) newdependency_libs="$newdependency_libs $deplib" ;;
52496 + esac
52497 + done
52498 + dependency_libs="$newdependency_libs"
52499 + newdlfiles=
52500 +
52501 + for lib in $dlfiles; do
52502 + case $lib in
52503 + *.la)
52504 + func_basename "$lib"
52505 + name="$func_basename_result"
52506 + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
52507 + test -z "$libdir" && \
52508 + func_fatal_error "\`$lib' is not a valid libtool archive"
52509 + newdlfiles="$newdlfiles $libdir/$name"
52510 + ;;
52511 + *) newdlfiles="$newdlfiles $lib" ;;
52512 + esac
52513 + done
52514 + dlfiles="$newdlfiles"
52515 + newdlprefiles=
52516 + for lib in $dlprefiles; do
52517 + case $lib in
52518 + *.la)
52519 + # Only pass preopened files to the pseudo-archive (for
52520 + # eventual linking with the app. that links it) if we
52521 + # didn't already link the preopened objects directly into
52522 + # the library:
52523 + func_basename "$lib"
52524 + name="$func_basename_result"
52525 + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
52526 + test -z "$libdir" && \
52527 + func_fatal_error "\`$lib' is not a valid libtool archive"
52528 + newdlprefiles="$newdlprefiles $libdir/$name"
52529 + ;;
52530 + esac
52531 + done
52532 + dlprefiles="$newdlprefiles"
52533 + else
52534 + newdlfiles=
52535 + for lib in $dlfiles; do
52536 + case $lib in
52537 + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
52538 + *) abs=`pwd`"/$lib" ;;
52539 + esac
52540 + newdlfiles="$newdlfiles $abs"
52541 + done
52542 + dlfiles="$newdlfiles"
52543 + newdlprefiles=
52544 + for lib in $dlprefiles; do
52545 + case $lib in
52546 + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
52547 + *) abs=`pwd`"/$lib" ;;
52548 + esac
52549 + newdlprefiles="$newdlprefiles $abs"
52550 + done
52551 + dlprefiles="$newdlprefiles"
52552 + fi
52553 + $RM $output
52554 + # place dlname in correct position for cygwin
52555 + tdlname=$dlname
52556 + case $host,$output,$installed,$module,$dlname in
52557 + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
52558 + esac
52559 + $ECHO > $output "\
52560 +# $outputname - a libtool library file
52561 +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
52562 +#
52563 +# Please DO NOT delete this file!
52564 +# It is necessary for linking the library.
52565 +
52566 +# The name that we can dlopen(3).
52567 +dlname='$tdlname'
52568 +
52569 +# Names of this library.
52570 +library_names='$library_names'
52571 +
52572 +# The name of the static archive.
52573 +old_library='$old_library'
52574 +
52575 +# Linker flags that can not go in dependency_libs.
52576 +inherited_linker_flags='$new_inherited_linker_flags'
52577 +
52578 +# Libraries that this one depends upon.
52579 +dependency_libs='$dependency_libs'
52580 +
52581 +# Names of additional weak libraries provided by this library
52582 +weak_library_names='$weak_libs'
52583 +
52584 +# Version information for $libname.
52585 +current=$current
52586 +age=$age
52587 +revision=$revision
52588 +
52589 +# Is this an already installed library?
52590 +installed=$installed
52591 +
52592 +# Should we warn about portability when linking against -modules?
52593 +shouldnotlink=$module
52594 +
52595 +# Files to dlopen/dlpreopen
52596 +dlopen='$dlfiles'
52597 +dlpreopen='$dlprefiles'
52598 +
52599 +# Directory that this library needs to be installed in:
52600 +libdir='$install_libdir'"
52601 + if test "$installed" = no && test "$need_relink" = yes; then
52602 + $ECHO >> $output "\
52603 +relink_command=\"$relink_command\""
52604 + fi
52605 + done
52606 + }
52607 +
52608 + # Do a symbolic link so that the libtool archive can be found in
52609 + # LD_LIBRARY_PATH before the program is installed.
52610 + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
52611 + ;;
52612 + esac
52613 + exit $EXIT_SUCCESS
52614 +}
52615 +
52616 +{ test "$mode" = link || test "$mode" = relink; } &&
52617 + func_mode_link ${1+"$@"}
52618 +
52619 +
52620 +# func_mode_uninstall arg...
52621 +func_mode_uninstall ()
52622 +{
52623 + $opt_debug
52624 + RM="$nonopt"
52625 + files=
52626 + rmforce=
52627 + exit_status=0
52628 +
52629 + # This variable tells wrapper scripts just to set variables rather
52630 + # than running their programs.
52631 + libtool_install_magic="$magic"
52632 +
52633 + for arg
52634 + do
52635 + case $arg in
52636 + -f) RM="$RM $arg"; rmforce=yes ;;
52637 + -*) RM="$RM $arg" ;;
52638 + *) files="$files $arg" ;;
52639 + esac
52640 + done
52641 +
52642 + test -z "$RM" && \
52643 + func_fatal_help "you must specify an RM program"
52644 +
52645 + rmdirs=
52646 +
52647 + origobjdir="$objdir"
52648 + for file in $files; do
52649 + func_dirname "$file" "" "."
52650 + dir="$func_dirname_result"
52651 + if test "X$dir" = X.; then
52652 + objdir="$origobjdir"
52653 + else
52654 + objdir="$dir/$origobjdir"
52655 + fi
52656 + func_basename "$file"
52657 + name="$func_basename_result"
52658 + test "$mode" = uninstall && objdir="$dir"
52659 +
52660 + # Remember objdir for removal later, being careful to avoid duplicates
52661 + if test "$mode" = clean; then
52662 + case " $rmdirs " in
52663 + *" $objdir "*) ;;
52664 + *) rmdirs="$rmdirs $objdir" ;;
52665 + esac
52666 + fi
52667 +
52668 + # Don't error if the file doesn't exist and rm -f was used.
52669 + if { test -L "$file"; } >/dev/null 2>&1 ||
52670 + { test -h "$file"; } >/dev/null 2>&1 ||
52671 + test -f "$file"; then
52672 + :
52673 + elif test -d "$file"; then
52674 + exit_status=1
52675 + continue
52676 + elif test "$rmforce" = yes; then
52677 + continue
52678 + fi
52679 +
52680 + rmfiles="$file"
52681 +
52682 + case $name in
52683 + *.la)
52684 + # Possibly a libtool archive, so verify it.
52685 + if func_lalib_p "$file"; then
52686 + func_source $dir/$name
52687 +
52688 + # Delete the libtool libraries and symlinks.
52689 + for n in $library_names; do
52690 + rmfiles="$rmfiles $objdir/$n"
52691 + done
52692 + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
52693 +
52694 + case "$mode" in
52695 + clean)
52696 + case " $library_names " in
52697 + # " " in the beginning catches empty $dlname
52698 + *" $dlname "*) ;;
52699 + *) rmfiles="$rmfiles $objdir/$dlname" ;;
52700 + esac
52701 + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
52702 + ;;
52703 + uninstall)
52704 + if test -n "$library_names"; then
52705 + # Do each command in the postuninstall commands.
52706 + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
52707 + fi
52708 +
52709 + if test -n "$old_library"; then
52710 + # Do each command in the old_postuninstall commands.
52711 + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
52712 + fi
52713 + # FIXME: should reinstall the best remaining shared library.
52714 + ;;
52715 + esac
52716 + fi
52717 + ;;
52718 +
52719 + *.lo)
52720 + # Possibly a libtool object, so verify it.
52721 + if func_lalib_p "$file"; then
52722 +
52723 + # Read the .lo file
52724 + func_source $dir/$name
52725 +
52726 + # Add PIC object to the list of files to remove.
52727 + if test -n "$pic_object" &&
52728 + test "$pic_object" != none; then
52729 + rmfiles="$rmfiles $dir/$pic_object"
52730 + fi
52731 +
52732 + # Add non-PIC object to the list of files to remove.
52733 + if test -n "$non_pic_object" &&
52734 + test "$non_pic_object" != none; then
52735 + rmfiles="$rmfiles $dir/$non_pic_object"
52736 + fi
52737 + fi
52738 + ;;
52739 +
52740 + *)
52741 + if test "$mode" = clean ; then
52742 + noexename=$name
52743 + case $file in
52744 + *.exe)
52745 + func_stripname '' '.exe' "$file"
52746 + file=$func_stripname_result
52747 + func_stripname '' '.exe' "$name"
52748 + noexename=$func_stripname_result
52749 + # $file with .exe has already been added to rmfiles,
52750 + # add $file without .exe
52751 + rmfiles="$rmfiles $file"
52752 + ;;
52753 + esac
52754 + # Do a test to see if this is a libtool program.
52755 + if func_ltwrapper_p "$file"; then
52756 + relink_command=
52757 + func_source $dir/$noexename
52758 +
52759 + # note $name still contains .exe if it was in $file originally
52760 + # as does the version of $file that was added into $rmfiles
52761 + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
52762 + if test "$fast_install" = yes && test -n "$relink_command"; then
52763 + rmfiles="$rmfiles $objdir/lt-$name"
52764 + fi
52765 + if test "X$noexename" != "X$name" ; then
52766 + rmfiles="$rmfiles $objdir/lt-${noexename}.c"
52767 + fi
52768 + fi
52769 + fi
52770 + ;;
52771 + esac
52772 + func_show_eval "$RM $rmfiles" 'exit_status=1'
52773 + done
52774 + objdir="$origobjdir"
52775 +
52776 + # Try to remove the ${objdir}s in the directories where we deleted files
52777 + for dir in $rmdirs; do
52778 + if test -d "$dir"; then
52779 + func_show_eval "rmdir $dir >/dev/null 2>&1"
52780 + fi
52781 + done
52782 +
52783 + exit $exit_status
52784 +}
52785 +
52786 +{ test "$mode" = uninstall || test "$mode" = clean; } &&
52787 + func_mode_uninstall ${1+"$@"}
52788 +
52789 +test -z "$mode" && {
52790 + help="$generic_help"
52791 + func_fatal_help "you must specify a MODE"
52792 +}
52793 +
52794 +test -z "$exec_cmd" && \
52795 + func_fatal_help "invalid operation mode \`$mode'"
52796 +
52797 +if test -n "$exec_cmd"; then
52798 + eval exec "$exec_cmd"
52799 + exit $EXIT_FAILURE
52800 +fi
52801 +
52802 +exit $exit_status
52803 +
52804 +
52805 +# The TAGs below are defined such that we never get into a situation
52806 +# in which we disable both kinds of libraries. Given conflicting
52807 +# choices, we go for a static library, that is the most portable,
52808 +# since we can't tell whether shared libraries were disabled because
52809 +# the user asked for that or because the platform doesn't support
52810 +# them. This is particularly important on AIX, because we don't
52811 +# support having both static and shared libraries enabled at the same
52812 +# time on that platform, so we default to a shared-only configuration.
52813 +# If a disable-shared tag is given, we'll fallback to a static-only
52814 +# configuration. But we'll never go from static-only to shared-only.
52815 +
52816 +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
52817 +build_libtool_libs=no
52818 +build_old_libs=yes
52819 +# ### END LIBTOOL TAG CONFIG: disable-shared
52820 +
52821 +# ### BEGIN LIBTOOL TAG CONFIG: disable-static
52822 +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
52823 +# ### END LIBTOOL TAG CONFIG: disable-static
52824 +
52825 +# Local Variables:
52826 +# mode:shell-script
52827 +# sh-indentation:2
52828 +# End:
52829 +# vi:sw=2
52830 Index: binutils-2.18/bfd/Makefile.in
52831 ===================================================================
52832 --- binutils-2.18.orig/bfd/Makefile.in 2008-11-25 15:24:48.000000000 +0100
52833 +++ binutils-2.18/bfd/Makefile.in 2008-11-25 15:25:40.000000000 +0100
52834 @@ -312,6 +312,7 @@
52835 cpu-arc.lo \
52836 cpu-arm.lo \
52837 cpu-avr.lo \
52838 + cpu-avr32.lo \
52839 cpu-bfin.lo \
52840 cpu-cr16.lo \
52841 cpu-cr16c.lo \
52842 @@ -493,6 +494,7 @@
52843 elf32-arc.lo \
52844 elf32-arm.lo \
52845 elf32-avr.lo \
52846 + elf32-avr32.lo \
52847 elf32-bfin.lo \
52848 elf32-cr16.lo \
52849 elf32-cr16c.lo \
52850 @@ -1908,6 +1910,10 @@
52851 $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
52852 $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
52853 $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
52854 +elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
52855 + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
52856 + $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
52857 + elf32-target.h
52858 elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
52859 $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
52860 $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
52861 Index: binutils-2.18/bfd/po/Makefile.in
52862 ===================================================================
52863 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
52864 +++ binutils-2.18/bfd/po/Makefile.in 2008-11-25 15:25:40.000000000 +0100
52865 @@ -0,0 +1,297 @@
52866 +# Makefile for program source directory in GNU NLS utilities package.
52867 +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
52868 +# Copyright 2001, 2003, 2006 Free Software Foundation, Inc.
52869 +#
52870 +# This file may be copied and used freely without restrictions. It can
52871 +# be used in projects which are not available under the GNU Public License
52872 +# but which still want to provide support for the GNU gettext functionality.
52873 +# Please note that the actual code is *not* freely available.
52874 +
52875 +PACKAGE = bfd
52876 +VERSION = 2.18
52877 +
52878 +SHELL = /bin/sh
52879 +
52880 +
52881 +srcdir = .
52882 +top_srcdir = ..
52883 +
52884 +top_builddir = ..
52885 +
52886 +prefix = /usr
52887 +exec_prefix = ${prefix}
52888 +datadir = $(prefix)/share
52889 +localedir = $(datadir)/locale
52890 +gnulocaledir = $(prefix)/share/locale
52891 +gettextsrcdir = $(prefix)/share/gettext/po
52892 +subdir = po
52893 +
52894 +DESTDIR =
52895 +
52896 +INSTALL = /usr/bin/install -c
52897 +INSTALL_DATA = ${INSTALL} -m 644
52898 +MKINSTALLDIRS = $(top_builddir)/./../mkinstalldirs
52899 +
52900 +CC = gcc
52901 +GENCAT = gencat
52902 +GMSGFMT = PATH=../src:$$PATH /usr/bin/msgfmt
52903 +MSGFMT = /usr/bin/msgfmt
52904 +XGETTEXT = PATH=../src:$$PATH /usr/bin/xgettext
52905 +MSGMERGE = PATH=../src:$$PATH msgmerge
52906 +
52907 +DEFS = -DHAVE_CONFIG_H
52908 +CFLAGS = -g -O2
52909 +CPPFLAGS =
52910 +
52911 +INCLUDES = -I.. -I$(top_srcdir)/intl
52912 +
52913 +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
52914 +
52915 +SOURCES = cat-id-tbl.c
52916 +POFILES = @POFILES@
52917 +GMOFILES = @GMOFILES@
52918 +DISTFILES = ChangeLog Makefile.in.in SRC-POTFILES.in BLD-POTFILES.in $(PACKAGE).pot \
52919 +stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
52920 +
52921 +# Note - the following line gets processed by bfd/configure and amended
52922 +# to contain the full list of source dir POTFILES.
52923 +SRC-POTFILES = \
52924 +
52925 +# Note - the following line gets processed by bfd/configure and amended
52926 +# to contain the full list of build dir POTFILES.
52927 +BLD-POTFILES = \
52928 +
52929 +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
52930 +CATOBJEXT = .gmo
52931 +INSTOBJEXT = .mo
52932 +
52933 +.SUFFIXES:
52934 +.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
52935 +
52936 +.c.o:
52937 + $(COMPILE) $<
52938 +
52939 +.po.pox:
52940 + $(MAKE) $(PACKAGE).pot
52941 + $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
52942 +
52943 +.po.mo:
52944 + $(MSGFMT) -o $@ $<
52945 +
52946 +.po.gmo:
52947 + file=`echo $* | sed 's,.*/,,'`.gmo \
52948 + && rm -f $$file && $(GMSGFMT) -o $$file $<
52949 +
52950 +.po.cat:
52951 + sed -f ../intl/po2msg.sed < $< > $*.msg \
52952 + && rm -f $@ && $(GENCAT) $@ $*.msg
52953 +
52954 +
52955 +all: all-yes
52956 +
52957 +all-yes: $(CATALOGS) # $(PACKAGE).pot
52958 +all-no:
52959 +
52960 +$(srcdir)/$(PACKAGE).pot: $(SRC-POTFILES) $(BLD-POTFILES)
52961 + $(XGETTEXT) --default-domain=$(PACKAGE) \
52962 + --directory=$(top_srcdir) \
52963 + --add-comments --keyword=_ --keyword=N_ \
52964 + --msgid-bugs-address=bug-binutils@gnu.org \
52965 + --files-from=$(srcdir)/SRC-POTFILES.in
52966 + $(XGETTEXT) --default-domain=$(PACKAGE) \
52967 + --directory=.. \
52968 + --directory=. \
52969 + --add-comments --keyword=_ --keyword=N_ \
52970 + --join-existing \
52971 + --msgid-bugs-address=bug-binutils@gnu.org \
52972 + --files-from=$(srcdir)/BLD-POTFILES.in
52973 + rm -f $(srcdir)/$(PACKAGE).pot
52974 + mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
52975 +
52976 +$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
52977 +$(srcdir)/stamp-cat-id: $(PACKAGE).pot
52978 + rm -f cat-id-tbl.tmp
52979 + sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
52980 + | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
52981 + if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
52982 + rm cat-id-tbl.tmp; \
52983 + else \
52984 + echo cat-id-tbl.c changed; \
52985 + rm -f $(srcdir)/cat-id-tbl.c; \
52986 + mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
52987 + fi
52988 + cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
52989 +
52990 +
52991 +install: install-exec install-data
52992 +install-exec:
52993 +install-info:
52994 +install-html:
52995 +install-data: install-data-yes
52996 +install-data-no: all
52997 +install-data-yes: all
52998 + if test -r $(MKINSTALLDIRS); then \
52999 + $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
53000 + else \
53001 + $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
53002 + fi
53003 + @catalogs='$(CATALOGS)'; \
53004 + for cat in $$catalogs; do \
53005 + cat=`basename $$cat`; \
53006 + case "$$cat" in \
53007 + *.gmo) destdir=$(gnulocaledir);; \
53008 + *) destdir=$(localedir);; \
53009 + esac; \
53010 + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
53011 + dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
53012 + if test -r $(MKINSTALLDIRS); then \
53013 + $(MKINSTALLDIRS) $$dir; \
53014 + else \
53015 + $(top_srcdir)/mkinstalldirs $$dir; \
53016 + fi; \
53017 + if test -r $$cat; then \
53018 + $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
53019 + echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
53020 + else \
53021 + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
53022 + echo "installing $(srcdir)/$$cat as" \
53023 + "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
53024 + fi; \
53025 + if test -r $$cat.m; then \
53026 + $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
53027 + echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
53028 + else \
53029 + if test -r $(srcdir)/$$cat.m ; then \
53030 + $(INSTALL_DATA) $(srcdir)/$$cat.m \
53031 + $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
53032 + echo "installing $(srcdir)/$$cat as" \
53033 + "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
53034 + else \
53035 + true; \
53036 + fi; \
53037 + fi; \
53038 + done
53039 + if test "$(PACKAGE)" = "gettext"; then \
53040 + if test -r $(MKINSTALLDIRS); then \
53041 + $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
53042 + else \
53043 + $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
53044 + fi; \
53045 + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
53046 + $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
53047 + else \
53048 + : ; \
53049 + fi
53050 +
53051 +# Define this as empty until I found a useful application.
53052 +installcheck:
53053 +
53054 +uninstall:
53055 + catalogs='$(CATALOGS)'; \
53056 + for cat in $$catalogs; do \
53057 + cat=`basename $$cat`; \
53058 + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
53059 + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
53060 + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
53061 + rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
53062 + rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
53063 + done
53064 + rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in
53065 +
53066 +check: all
53067 +
53068 +cat-id-tbl.o: ../intl/libgettext.h
53069 +
53070 +html dvi pdf ps info tags TAGS ID:
53071 +
53072 +mostlyclean:
53073 + rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
53074 + rm -fr *.o
53075 +
53076 +clean: mostlyclean
53077 +
53078 +distclean: clean
53079 + rm -f Makefile Makefile.in *.mo *.msg *.cat *.cat.m
53080 + rm -f SRC-POTFILES BLD-POTFILES
53081 +
53082 +maintainer-clean: distclean
53083 + @echo "This command is intended for maintainers to use;"
53084 + @echo "it deletes files that may require special tools to rebuild."
53085 + rm -f $(GMOFILES) SRC-POTFILES.in BLD-POTFILES.in
53086 +
53087 +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
53088 +dist distdir: update-po $(DISTFILES)
53089 + dists="$(DISTFILES)"; \
53090 + for file in $$dists; do \
53091 + ln $(srcdir)/$$file $(distdir) 2> /dev/null \
53092 + || cp -p $(srcdir)/$$file $(distdir); \
53093 + done
53094 +
53095 +update-po: Makefile
53096 + $(MAKE) $(PACKAGE).pot
53097 + PATH=`pwd`/../src:$$PATH; \
53098 + cd $(srcdir); \
53099 + catalogs='$(CATALOGS)'; \
53100 + for cat in $$catalogs; do \
53101 + cat=`basename $$cat`; \
53102 + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
53103 + mv $$lang.po $$lang.old.po; \
53104 + echo "$$lang:"; \
53105 + if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
53106 + rm -f $$lang.old.po; \
53107 + else \
53108 + echo "msgmerge for $$cat failed!"; \
53109 + rm -f $$lang.po; \
53110 + mv $$lang.old.po $$lang.po; \
53111 + fi; \
53112 + done
53113 +
53114 +SRC-POTFILES: SRC-POTFILES.in
53115 + ( if test 'x$(srcdir)' != 'x.'; then \
53116 + posrcprefix='$(top_srcdir)/'; \
53117 + else \
53118 + posrcprefix="../"; \
53119 + fi; \
53120 + rm -f $@-t $@ \
53121 + && (sed -e '/^#/d' \
53122 + -e '/^[ ]*$$/d' \
53123 + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
53124 + | sed -e '$$s/\\$$//') > $@-t \
53125 + && chmod a-w $@-t \
53126 + && mv $@-t $@ )
53127 +
53128 +BLD-POTFILES: BLD-POTFILES.in
53129 + ( rm -f $@-t $@ \
53130 + && (sed -e '/^#/d' \
53131 + -e '/^[ ]*$$/d' \
53132 + -e "s@.*@ ../& \\\\@" < $(srcdir)/$@.in \
53133 + | sed -e '$$s/\\$$//') > $@-t \
53134 + && chmod a-w $@-t \
53135 + && mv $@-t $@ )
53136 +
53137 +SRC-POTFILES.in: # ../Makefile
53138 + cd .. && $(MAKE) po/SRC-POTFILES.in
53139 +
53140 +BLD-POTFILES.in: # ../Makefile
53141 + cd .. && $(MAKE) po/BLD-POTFILES.in
53142 +
53143 +# Note - The presence of SRC-POTFILES and BLD-POTFILES as dependencies
53144 +# here breaks the implementation of the 'distclean' rule for maintainers.
53145 +# This is because if 'make distclean' is run in the BFD directory, the
53146 +# Makefile there will be deleted before 'distclean' is made here, and so
53147 +# the dependency SRC-POTFILES -> SRC-POTFILES.in -> ../Makefile cannot
53148 +# be satisfied.
53149 +#
53150 +# The SRC-POTFILES and BLD-POTFILES dependencies cannot be removed,
53151 +# however since it is necessary that these files be built during
53152 +# *configure* time, so that configure can insert them into the
53153 +# po/Makefile that it is creating, so that the Makefile will have
53154 +# the correct dependencies.
53155 +Makefile: Make-in ../config.status SRC-POTFILES BLD-POTFILES
53156 + cd .. \
53157 + && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
53158 + CONFIG_HEADERS= $(SHELL) ./config.status
53159 +
53160 +# Tell versions [3.59,3.63) of GNU make not to export all variables.
53161 +# Otherwise a system limit (for SysV at least) may be exceeded.
53162 +.NOEXPORT:
53163 Index: binutils-2.18/binutils/Makefile.in
53164 ===================================================================
53165 --- binutils-2.18.orig/binutils/Makefile.in 2008-11-25 15:24:48.000000000 +0100
53166 +++ binutils-2.18/binutils/Makefile.in 2008-11-25 15:25:40.000000000 +0100
53167 @@ -1327,7 +1327,7 @@
53168 $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
53169 $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
53170 $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
53171 - $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
53172 + $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
53173 $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
53174 $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
53175 $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
53176 Index: binutils-2.18/ld/Makefile.in
53177 ===================================================================
53178 --- binutils-2.18.orig/ld/Makefile.in 2008-11-25 15:24:48.000000000 +0100
53179 +++ binutils-2.18/ld/Makefile.in 2008-11-25 15:25:40.000000000 +0100
53180 @@ -384,7 +384,34 @@
53181 eavr3.o \
53182 eavr4.o \
53183 eavr5.o \
53184 - eavr6.o \
53185 + eavr6.o \
53186 + eavr32elf_ap7000.o \
53187 + eavr32elf_ap7001.o \
53188 + eavr32elf_ap7002.o \
53189 + eavr32elf_ap7200.o \
53190 + eavr32elf_uc3a0128.o \
53191 + eavr32elf_uc3a0256.o \
53192 + eavr32elf_uc3a0512.o \
53193 + eavr32elf_uc3a0512es.o \
53194 + eavr32elf_uc3a1128.o \
53195 + eavr32elf_uc3a1256.o \
53196 + eavr32elf_uc3a1512es.o \
53197 + eavr32elf_uc3a1512.o \
53198 + eavr32elf_uc3a364.o \
53199 + eavr32elf_uc3a364s.o \
53200 + eavr32elf_uc3a3128.o \
53201 + eavr32elf_uc3a3128s.o \
53202 + eavr32elf_uc3a3256.o \
53203 + eavr32elf_uc3a3256s.o \
53204 + eavr32elf_uc3b064.o \
53205 + eavr32elf_uc3b0128.o \
53206 + eavr32elf_uc3b0256es.o \
53207 + eavr32elf_uc3b0256.o \
53208 + eavr32elf_uc3b164.o \
53209 + eavr32elf_uc3b1128.o \
53210 + eavr32elf_uc3b1256es.o \
53211 + eavr32elf_uc3b1256.o \
53212 + eavr32linux.o \
53213 ecoff_i860.o \
53214 ecoff_sparc.o \
53215 eelf32_spu.o \
53216 @@ -1448,6 +1475,114 @@
53217 $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
53218 ${GEN_DEPENDS}
53219 ${GENSCRIPTS} avr6 "$(tdir_avr2)"
53220 +eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
53221 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53222 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53223 + ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
53224 +eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
53225 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53226 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53227 + ${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
53228 +eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
53229 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53230 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53231 + ${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
53232 +eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
53233 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53234 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53235 + ${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
53236 +eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
53237 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53238 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53239 + ${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
53240 +eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
53241 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53242 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53243 + ${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
53244 +eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
53245 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53246 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53247 + ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
53248 +eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
53249 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53250 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53251 + ${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
53252 +eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
53253 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53254 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53255 + ${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
53256 +eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
53257 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53258 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53259 + ${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
53260 +eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
53261 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53262 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53263 + ${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
53264 +eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
53265 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53266 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53267 + ${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
53268 +eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
53269 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53270 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53271 + ${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
53272 +eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
53273 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53274 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53275 + ${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
53276 +eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
53277 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53278 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53279 + ${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
53280 +eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
53281 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53282 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53283 + ${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
53284 +eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
53285 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53286 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53287 + ${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
53288 +eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
53289 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53290 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53291 + ${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
53292 +eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
53293 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53294 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53295 + ${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
53296 +eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
53297 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53298 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53299 + ${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
53300 +eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
53301 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53302 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53303 + ${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
53304 +eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
53305 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53306 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53307 + ${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
53308 +eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
53309 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53310 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53311 + ${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
53312 +eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
53313 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53314 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53315 + ${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
53316 +eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
53317 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53318 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53319 + ${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
53320 +eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
53321 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53322 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53323 + ${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
53324 +eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
53325 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53326 + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
53327 + ${GENSCRIPTS} avr32linux "$(tdir_avr32)"
53328 ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
53329 $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
53330 ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
53331 @@ -2679,7 +2814,9 @@
53332 || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
53333 fi
53334
53335 -install-data-local:
53336 +# We want install to imply install-info as per GNU standards, despite the
53337 +# cygnus option.
53338 +install-data-local: install-info
53339 $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
53340 for f in ldscripts/*; do \
53341 $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
53342 Index: binutils-2.18/libiberty/required-list
53343 ===================================================================
53344 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
53345 +++ binutils-2.18/libiberty/required-list 2008-11-25 15:25:40.000000000 +0100
53346 @@ -0,0 +1 @@
53347 +./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
53348 Index: binutils-2.18/opcodes/configure
53349 ===================================================================
53350 --- binutils-2.18.orig/opcodes/configure 2008-11-25 15:24:48.000000000 +0100
53351 +++ binutils-2.18/opcodes/configure 2008-11-25 15:25:40.000000000 +0100
53352 @@ -11418,6 +11418,7 @@
53353 bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
53354 bfd_arm_arch) ta="$ta arm-dis.lo" ;;
53355 bfd_avr_arch) ta="$ta avr-dis.lo" ;;
53356 + bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
53357 bfd_bfin_arch) ta="$ta bfin-dis.lo" ;;
53358 bfd_cr16_arch) ta="$ta cr16-dis.lo cr16-opc.lo" ;;
53359 bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
53360 @@ -11476,7 +11477,7 @@
53361 ta="$ta sh64-dis.lo sh64-opc.lo"
53362 archdefs="$archdefs -DINCLUDE_SHMEDIA"
53363 break;;
53364 - esac;
53365 + esac
53366 done
53367 ta="$ta sh-dis.lo cgen-bitset.lo" ;;
53368 bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
53369 Index: binutils-2.18/opcodes/Makefile.in
53370 ===================================================================
53371 --- binutils-2.18.orig/opcodes/Makefile.in 2008-11-25 15:24:48.000000000 +0100
53372 +++ binutils-2.18/opcodes/Makefile.in 2008-11-25 15:25:40.000000000 +0100
53373 @@ -257,6 +257,7 @@
53374 # Header files.
53375 HFILES = \
53376 cgen-ops.h cgen-types.h \
53377 + avr32-asm.h avr32-opc.h \
53378 fr30-desc.h fr30-opc.h \
53379 frv-desc.h frv-opc.h \
53380 h8500-opc.h \
53381 @@ -291,6 +292,9 @@
53382 arc-ext.c \
53383 arm-dis.c \
53384 avr-dis.c \
53385 + avr32-asm.c \
53386 + avr32-dis.c \
53387 + avr32-opc.c \
53388 bfin-dis.c \
53389 cgen-asm.c \
53390 cgen-bitset.c \
53391 @@ -445,6 +449,9 @@
53392 arc-ext.lo \
53393 arm-dis.lo \
53394 avr-dis.lo \
53395 + avr32-asm.lo \
53396 + avr32-dis.lo \
53397 + avr32-opc.lo \
53398 bfin-dis.lo \
53399 cgen-asm.lo \
53400 cgen-bitset.lo \
53401 @@ -1225,6 +1232,15 @@
53402 $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
53403 opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
53404 $(INCDIR)/opcode/avr.h
53405 +avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
53406 + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
53407 + $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
53408 + $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
53409 +avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
53410 + $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
53411 + avr32-opc.h opintl.h
53412 +avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
53413 + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
53414 bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
53415 $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
53416 cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \