1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/patches/binutils/2.18a/130-avr32-atmel-v1.0.1.patch Thu Jun 14 23:04:28 2012 +0200
1.3 @@ -0,0 +1,52747 @@
1.4 +--- a/bfd/archures.c
1.5 ++++ b/bfd/archures.c
1.6 +@@ -346,6 +346,11 @@ DESCRIPTION
1.7 + .#define bfd_mach_avr4 4
1.8 + .#define bfd_mach_avr5 5
1.9 + .#define bfd_mach_avr6 6
1.10 ++. bfd_arch_avr32, {* Atmel AVR32 *}
1.11 ++.#define bfd_mach_avr32_ap 7000
1.12 ++.#define bfd_mach_avr32_uc 3000
1.13 ++.#define bfd_mach_avr32_ucr1 3001
1.14 ++.#define bfd_mach_avr32_ucr2 3002
1.15 + . bfd_arch_bfin, {* ADI Blackfin *}
1.16 + .#define bfd_mach_bfin 1
1.17 + . bfd_arch_cr16, {* National Semiconductor CompactRISC (ie CR16). *}
1.18 +@@ -438,6 +443,7 @@ extern const bfd_arch_info_type bfd_alph
1.19 + extern const bfd_arch_info_type bfd_arc_arch;
1.20 + extern const bfd_arch_info_type bfd_arm_arch;
1.21 + extern const bfd_arch_info_type bfd_avr_arch;
1.22 ++extern const bfd_arch_info_type bfd_avr32_arch;
1.23 + extern const bfd_arch_info_type bfd_bfin_arch;
1.24 + extern const bfd_arch_info_type bfd_cr16_arch;
1.25 + extern const bfd_arch_info_type bfd_cr16c_arch;
1.26 +@@ -509,6 +515,7 @@ static const bfd_arch_info_type * const
1.27 + &bfd_arc_arch,
1.28 + &bfd_arm_arch,
1.29 + &bfd_avr_arch,
1.30 ++ &bfd_avr32_arch,
1.31 + &bfd_bfin_arch,
1.32 + &bfd_cr16_arch,
1.33 + &bfd_cr16c_arch,
1.34 +--- a/bfd/config.bfd
1.35 ++++ b/bfd/config.bfd
1.36 +@@ -335,6 +335,10 @@ case "${targ}" in
1.37 + targ_underscore=yes
1.38 + ;;
1.39 +
1.40 ++ avr32-*-*)
1.41 ++ targ_defvec=bfd_elf32_avr32_vec
1.42 ++ ;;
1.43 ++
1.44 + c30-*-*aout* | tic30-*-*aout*)
1.45 + targ_defvec=tic30_aout_vec
1.46 + ;;
1.47 +--- a/bfd/configure.in
1.48 ++++ b/bfd/configure.in
1.49 +@@ -8,7 +8,7 @@ AC_CONFIG_SRCDIR([libbfd.c])
1.50 + AC_CANONICAL_TARGET
1.51 + AC_ISC_POSIX
1.52 +
1.53 +-AM_INIT_AUTOMAKE(bfd, 2.18)
1.54 ++AM_INIT_AUTOMAKE(bfd, 2.18.atmel.1.0.1.avr32linux.1)
1.55 +
1.56 + dnl These must be called before AM_PROG_LIBTOOL, because it may want
1.57 + dnl to call AC_CHECK_PROG.
1.58 +@@ -619,6 +619,7 @@ do
1.59 + bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
1.60 + bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
1.61 + bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
1.62 ++ bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
1.63 + bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
1.64 + bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
1.65 + bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
1.66 +--- /dev/null
1.67 ++++ b/bfd/cpu-avr32.c
1.68 +@@ -0,0 +1,51 @@
1.69 ++/* BFD library support routines for AVR32.
1.70 ++ Copyright 2003-2006 Atmel Corporation.
1.71 ++
1.72 ++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
1.73 ++
1.74 ++ This is part of BFD, the Binary File Descriptor library.
1.75 ++
1.76 ++ This program is free software; you can redistribute it and/or modify
1.77 ++ it under the terms of the GNU General Public License as published by
1.78 ++ the Free Software Foundation; either version 2 of the License, or
1.79 ++ (at your option) any later version.
1.80 ++
1.81 ++ This program is distributed in the hope that it will be useful,
1.82 ++ but WITHOUT ANY WARRANTY; without even the implied warranty of
1.83 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.84 ++ GNU General Public License for more details.
1.85 ++
1.86 ++ You should have received a copy of the GNU General Public License
1.87 ++ along with this program; if not, write to the Free Software
1.88 ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
1.89 ++
1.90 ++#include "bfd.h"
1.91 ++#include "sysdep.h"
1.92 ++#include "libbfd.h"
1.93 ++
1.94 ++#define N(machine, print, default, next) \
1.95 ++ { \
1.96 ++ 32, /* 32 bits in a word */ \
1.97 ++ 32, /* 32 bits in an address */ \
1.98 ++ 8, /* 8 bits in a byte */ \
1.99 ++ bfd_arch_avr32, /* architecture */ \
1.100 ++ machine, /* machine */ \
1.101 ++ "avr32", /* arch name */ \
1.102 ++ print, /* printable name */ \
1.103 ++ 1, /* section align power */ \
1.104 ++ default, /* the default machine? */ \
1.105 ++ bfd_default_compatible, \
1.106 ++ bfd_default_scan, \
1.107 ++ next, \
1.108 ++ }
1.109 ++
1.110 ++static const bfd_arch_info_type cpu_info[] =
1.111 ++{
1.112 ++ N(bfd_mach_avr32_ap, "avr32:ap", FALSE, &cpu_info[1]),
1.113 ++ N(bfd_mach_avr32_uc, "avr32:uc", FALSE, &cpu_info[2]),
1.114 ++ N(bfd_mach_avr32_ucr1, "avr32:ucr1", FALSE, &cpu_info[3]),
1.115 ++ N(bfd_mach_avr32_ucr2, "avr32:ucr2", FALSE, NULL),
1.116 ++};
1.117 ++
1.118 ++const bfd_arch_info_type bfd_avr32_arch =
1.119 ++ N(bfd_mach_avr32_ap, "avr32", TRUE, &cpu_info[0]);
1.120 +--- /dev/null
1.121 ++++ b/bfd/elf32-avr32.c
1.122 +@@ -0,0 +1,3915 @@
1.123 ++/* AVR32-specific support for 32-bit ELF.
1.124 ++ Copyright 2003-2006 Atmel Corporation.
1.125 ++
1.126 ++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
1.127 ++
1.128 ++ This file is part of BFD, the Binary File Descriptor library.
1.129 ++
1.130 ++ This program is free software; you can redistribute it and/or modify
1.131 ++ it under the terms of the GNU General Public License as published by
1.132 ++ the Free Software Foundation; either version 2 of the License, or
1.133 ++ (at your option) any later version.
1.134 ++
1.135 ++ This program is distributed in the hope that it will be useful,
1.136 ++ but WITHOUT ANY WARRANTY; without even the implied warranty of
1.137 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.138 ++ GNU General Public License for more details.
1.139 ++
1.140 ++ You should have received a copy of the GNU General Public License
1.141 ++ along with this program; if not, write to the Free Software
1.142 ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
1.143 ++
1.144 ++#include "bfd.h"
1.145 ++#include "sysdep.h"
1.146 ++#include "bfdlink.h"
1.147 ++#include "libbfd.h"
1.148 ++#include "elf-bfd.h"
1.149 ++#include "elf/avr32.h"
1.150 ++#include "elf32-avr32.h"
1.151 ++
1.152 ++#define xDEBUG
1.153 ++#define xRELAX_DEBUG
1.154 ++
1.155 ++#ifdef DEBUG
1.156 ++# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
1.157 ++#else
1.158 ++# define pr_debug(fmt, args...) do { } while (0)
1.159 ++#endif
1.160 ++
1.161 ++#ifdef RELAX_DEBUG
1.162 ++# define RDBG(fmt, args...) fprintf(stderr, fmt, ##args)
1.163 ++#else
1.164 ++# define RDBG(fmt, args...) do { } while (0)
1.165 ++#endif
1.166 ++
1.167 ++/* When things go wrong, we want it to blow up, damnit! */
1.168 ++#undef BFD_ASSERT
1.169 ++#undef abort
1.170 ++#define BFD_ASSERT(expr) \
1.171 ++ do \
1.172 ++ { \
1.173 ++ if (!(expr)) \
1.174 ++ { \
1.175 ++ bfd_assert(__FILE__, __LINE__); \
1.176 ++ abort(); \
1.177 ++ } \
1.178 ++ } \
1.179 ++ while (0)
1.180 ++
1.181 ++/* The name of the dynamic interpreter. This is put in the .interp section. */
1.182 ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
1.183 ++
1.184 ++#define AVR32_GOT_HEADER_SIZE 8
1.185 ++#define AVR32_FUNCTION_STUB_SIZE 8
1.186 ++
1.187 ++#define ELF_R_INFO(x, y) ELF32_R_INFO(x, y)
1.188 ++#define ELF_R_TYPE(x) ELF32_R_TYPE(x)
1.189 ++#define ELF_R_SYM(x) ELF32_R_SYM(x)
1.190 ++
1.191 ++#define NOP_OPCODE 0xd703
1.192 ++
1.193 ++
1.194 ++/* Mapping between BFD relocations and ELF relocations */
1.195 ++
1.196 ++static reloc_howto_type *
1.197 ++bfd_elf32_bfd_reloc_type_lookup(bfd *abfd, bfd_reloc_code_real_type code);
1.198 ++
1.199 ++static reloc_howto_type *
1.200 ++bfd_elf32_bfd_reloc_name_lookup(bfd *abfd, const char *r_name);
1.201 ++
1.202 ++static void
1.203 ++avr32_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst);
1.204 ++
1.205 ++/* Generic HOWTO */
1.206 ++#define GENH(name, align, size, bitsize, pcrel, bitpos, complain, mask) \
1.207 ++ HOWTO(name, align, size, bitsize, pcrel, bitpos, \
1.208 ++ complain_overflow_##complain, bfd_elf_generic_reloc, #name, \
1.209 ++ FALSE, 0, mask, pcrel)
1.210 ++
1.211 ++static reloc_howto_type elf_avr32_howto_table[] = {
1.212 ++ /* NAME ALN SZ BSZ PCREL BP COMPLAIN MASK */
1.213 ++ GENH(R_AVR32_NONE, 0, 0, 0, FALSE, 0, dont, 0x00000000),
1.214 ++
1.215 ++ GENH(R_AVR32_32, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
1.216 ++ GENH(R_AVR32_16, 0, 1, 16, FALSE, 0, bitfield, 0x0000ffff),
1.217 ++ GENH(R_AVR32_8, 0, 0, 8, FALSE, 0, bitfield, 0x000000ff),
1.218 ++ GENH(R_AVR32_32_PCREL, 0, 2, 32, TRUE, 0, signed, 0xffffffff),
1.219 ++ GENH(R_AVR32_16_PCREL, 0, 1, 16, TRUE, 0, signed, 0x0000ffff),
1.220 ++ GENH(R_AVR32_8_PCREL, 0, 0, 8, TRUE, 0, signed, 0x000000ff),
1.221 ++
1.222 ++ /* Difference between two symbol (sym2 - sym1). The reloc encodes
1.223 ++ the value of sym1. The field contains the difference before any
1.224 ++ relaxing is done. */
1.225 ++ GENH(R_AVR32_DIFF32, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
1.226 ++ GENH(R_AVR32_DIFF16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff),
1.227 ++ GENH(R_AVR32_DIFF8, 0, 0, 8, FALSE, 0, signed, 0x000000ff),
1.228 ++
1.229 ++ GENH(R_AVR32_GOT32, 0, 2, 32, FALSE, 0, signed, 0xffffffff),
1.230 ++ GENH(R_AVR32_GOT16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff),
1.231 ++ GENH(R_AVR32_GOT8, 0, 0, 8, FALSE, 0, signed, 0x000000ff),
1.232 ++
1.233 ++ GENH(R_AVR32_21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff),
1.234 ++ GENH(R_AVR32_16U, 0, 2, 16, FALSE, 0, unsigned, 0x0000ffff),
1.235 ++ GENH(R_AVR32_16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff),
1.236 ++ GENH(R_AVR32_8S, 0, 1, 8, FALSE, 4, signed, 0x00000ff0),
1.237 ++ GENH(R_AVR32_8S_EXT, 0, 2, 8, FALSE, 0, signed, 0x000000ff),
1.238 ++
1.239 ++ GENH(R_AVR32_22H_PCREL, 1, 2, 21, TRUE, 0, signed, 0x1e10ffff),
1.240 ++ GENH(R_AVR32_18W_PCREL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff),
1.241 ++ GENH(R_AVR32_16B_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
1.242 ++ GENH(R_AVR32_16N_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
1.243 ++ GENH(R_AVR32_14UW_PCREL, 2, 2, 12, TRUE, 0, unsigned, 0x0000f0ff),
1.244 ++ GENH(R_AVR32_11H_PCREL, 1, 1, 10, TRUE, 4, signed, 0x00000ff3),
1.245 ++ GENH(R_AVR32_10UW_PCREL, 2, 2, 8, TRUE, 0, unsigned, 0x000000ff),
1.246 ++ GENH(R_AVR32_9H_PCREL, 1, 1, 8, TRUE, 4, signed, 0x00000ff0),
1.247 ++ GENH(R_AVR32_9UW_PCREL, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0),
1.248 ++
1.249 ++ GENH(R_AVR32_HI16, 16, 2, 16, FALSE, 0, dont, 0x0000ffff),
1.250 ++ GENH(R_AVR32_LO16, 0, 2, 16, FALSE, 0, dont, 0x0000ffff),
1.251 ++
1.252 ++ GENH(R_AVR32_GOTPC, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
1.253 ++ GENH(R_AVR32_GOTCALL, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff),
1.254 ++ GENH(R_AVR32_LDA_GOT, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff),
1.255 ++ GENH(R_AVR32_GOT21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff),
1.256 ++ GENH(R_AVR32_GOT18SW, 2, 2, 16, FALSE, 0, signed, 0x0000ffff),
1.257 ++ GENH(R_AVR32_GOT16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff),
1.258 ++ GENH(R_AVR32_GOT7UW, 2, 1, 5, FALSE, 4, unsigned, 0x000001f0),
1.259 ++
1.260 ++ GENH(R_AVR32_32_CPENT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
1.261 ++ GENH(R_AVR32_CPCALL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff),
1.262 ++ GENH(R_AVR32_16_CP, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
1.263 ++ GENH(R_AVR32_9W_CP, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0),
1.264 ++
1.265 ++ GENH(R_AVR32_RELATIVE, 0, 2, 32, FALSE, 0, signed, 0xffffffff),
1.266 ++ GENH(R_AVR32_GLOB_DAT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
1.267 ++ GENH(R_AVR32_JMP_SLOT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
1.268 ++
1.269 ++ GENH(R_AVR32_ALIGN, 0, 1, 0, FALSE, 0, unsigned, 0x00000000),
1.270 ++
1.271 ++ GENH(R_AVR32_15S, 2, 2, 15, FALSE, 0, signed, 0x00007fff),
1.272 ++};
1.273 ++
1.274 ++struct elf_reloc_map
1.275 ++{
1.276 ++ bfd_reloc_code_real_type bfd_reloc_val;
1.277 ++ unsigned char elf_reloc_val;
1.278 ++};
1.279 ++
1.280 ++static const struct elf_reloc_map avr32_reloc_map[] =
1.281 ++{
1.282 ++ { BFD_RELOC_NONE, R_AVR32_NONE },
1.283 ++
1.284 ++ { BFD_RELOC_32, R_AVR32_32 },
1.285 ++ { BFD_RELOC_16, R_AVR32_16 },
1.286 ++ { BFD_RELOC_8, R_AVR32_8 },
1.287 ++ { BFD_RELOC_32_PCREL, R_AVR32_32_PCREL },
1.288 ++ { BFD_RELOC_16_PCREL, R_AVR32_16_PCREL },
1.289 ++ { BFD_RELOC_8_PCREL, R_AVR32_8_PCREL },
1.290 ++ { BFD_RELOC_AVR32_DIFF32, R_AVR32_DIFF32 },
1.291 ++ { BFD_RELOC_AVR32_DIFF16, R_AVR32_DIFF16 },
1.292 ++ { BFD_RELOC_AVR32_DIFF8, R_AVR32_DIFF8 },
1.293 ++ { BFD_RELOC_AVR32_GOT32, R_AVR32_GOT32 },
1.294 ++ { BFD_RELOC_AVR32_GOT16, R_AVR32_GOT16 },
1.295 ++ { BFD_RELOC_AVR32_GOT8, R_AVR32_GOT8 },
1.296 ++
1.297 ++ { BFD_RELOC_AVR32_21S, R_AVR32_21S },
1.298 ++ { BFD_RELOC_AVR32_16U, R_AVR32_16U },
1.299 ++ { BFD_RELOC_AVR32_16S, R_AVR32_16S },
1.300 ++ { BFD_RELOC_AVR32_SUB5, R_AVR32_16S },
1.301 ++ { BFD_RELOC_AVR32_8S_EXT, R_AVR32_8S_EXT },
1.302 ++ { BFD_RELOC_AVR32_8S, R_AVR32_8S },
1.303 ++
1.304 ++ { BFD_RELOC_AVR32_22H_PCREL, R_AVR32_22H_PCREL },
1.305 ++ { BFD_RELOC_AVR32_18W_PCREL, R_AVR32_18W_PCREL },
1.306 ++ { BFD_RELOC_AVR32_16B_PCREL, R_AVR32_16B_PCREL },
1.307 ++ { BFD_RELOC_AVR32_16N_PCREL, R_AVR32_16N_PCREL },
1.308 ++ { BFD_RELOC_AVR32_11H_PCREL, R_AVR32_11H_PCREL },
1.309 ++ { BFD_RELOC_AVR32_10UW_PCREL, R_AVR32_10UW_PCREL },
1.310 ++ { BFD_RELOC_AVR32_9H_PCREL, R_AVR32_9H_PCREL },
1.311 ++ { BFD_RELOC_AVR32_9UW_PCREL, R_AVR32_9UW_PCREL },
1.312 ++
1.313 ++ { BFD_RELOC_HI16, R_AVR32_HI16 },
1.314 ++ { BFD_RELOC_LO16, R_AVR32_LO16 },
1.315 ++
1.316 ++ { BFD_RELOC_AVR32_GOTPC, R_AVR32_GOTPC },
1.317 ++ { BFD_RELOC_AVR32_GOTCALL, R_AVR32_GOTCALL },
1.318 ++ { BFD_RELOC_AVR32_LDA_GOT, R_AVR32_LDA_GOT },
1.319 ++ { BFD_RELOC_AVR32_GOT21S, R_AVR32_GOT21S },
1.320 ++ { BFD_RELOC_AVR32_GOT18SW, R_AVR32_GOT18SW },
1.321 ++ { BFD_RELOC_AVR32_GOT16S, R_AVR32_GOT16S },
1.322 ++ /* GOT7UW should never be generated by the assembler */
1.323 ++
1.324 ++ { BFD_RELOC_AVR32_32_CPENT, R_AVR32_32_CPENT },
1.325 ++ { BFD_RELOC_AVR32_CPCALL, R_AVR32_CPCALL },
1.326 ++ { BFD_RELOC_AVR32_16_CP, R_AVR32_16_CP },
1.327 ++ { BFD_RELOC_AVR32_9W_CP, R_AVR32_9W_CP },
1.328 ++
1.329 ++ { BFD_RELOC_AVR32_ALIGN, R_AVR32_ALIGN },
1.330 ++
1.331 ++ { BFD_RELOC_AVR32_15S, R_AVR32_15S },
1.332 ++};
1.333 ++
1.334 ++static reloc_howto_type *
1.335 ++bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
1.336 ++ bfd_reloc_code_real_type code)
1.337 ++{
1.338 ++ unsigned int i;
1.339 ++
1.340 ++ for (i = 0; i < sizeof(avr32_reloc_map) / sizeof(struct elf_reloc_map); i++)
1.341 ++ {
1.342 ++ if (avr32_reloc_map[i].bfd_reloc_val == code)
1.343 ++ return &elf_avr32_howto_table[avr32_reloc_map[i].elf_reloc_val];
1.344 ++ }
1.345 ++
1.346 ++ return NULL;
1.347 ++}
1.348 ++
1.349 ++static reloc_howto_type *
1.350 ++bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
1.351 ++ const char *r_name)
1.352 ++{
1.353 ++ unsigned int i;
1.354 ++
1.355 ++ for (i = 0;
1.356 ++ i < sizeof (elf_avr32_howto_table) / sizeof (elf_avr32_howto_table[0]);
1.357 ++ i++)
1.358 ++ if (elf_avr32_howto_table[i].name != NULL
1.359 ++ && strcasecmp (elf_avr32_howto_table[i].name, r_name) == 0)
1.360 ++ return &elf_avr32_howto_table[i];
1.361 ++
1.362 ++ return NULL;
1.363 ++}
1.364 ++
1.365 ++/* Set the howto pointer for an AVR32 ELF reloc. */
1.366 ++static void
1.367 ++avr32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
1.368 ++ arelent *cache_ptr,
1.369 ++ Elf_Internal_Rela *dst)
1.370 ++{
1.371 ++ unsigned int r_type;
1.372 ++
1.373 ++ r_type = ELF32_R_TYPE (dst->r_info);
1.374 ++ BFD_ASSERT (r_type < (unsigned int) R_AVR32_max);
1.375 ++ cache_ptr->howto = &elf_avr32_howto_table[r_type];
1.376 ++}
1.377 ++
1.378 ++
1.379 ++/* AVR32 ELF linker hash table and associated hash entries. */
1.380 ++
1.381 ++static struct bfd_hash_entry *
1.382 ++avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
1.383 ++ struct bfd_hash_table *table,
1.384 ++ const char *string);
1.385 ++static void
1.386 ++avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
1.387 ++ struct elf_link_hash_entry *dir,
1.388 ++ struct elf_link_hash_entry *ind);
1.389 ++static struct bfd_link_hash_table *
1.390 ++avr32_elf_link_hash_table_create(bfd *abfd);
1.391 ++
1.392 ++/*
1.393 ++ Try to limit memory usage to something reasonable when sorting the
1.394 ++ GOT. If just a couple of entries end up getting more references
1.395 ++ than this, it won't affect performance at all, but if there are many
1.396 ++ of them, we could end up with the wrong symbols being assigned the
1.397 ++ first GOT entries.
1.398 ++*/
1.399 ++#define MAX_NR_GOT_HOLES 2048
1.400 ++
1.401 ++/*
1.402 ++ AVR32 GOT entry. We need to keep track of refcounts and offsets
1.403 ++ simultaneously, since we need the offsets during relaxation, and we
1.404 ++ also want to be able to drop GOT entries during relaxation. In
1.405 ++ addition to this, we want to keep the list of GOT entries sorted so
1.406 ++ that we can keep the most-used entries at the lowest offsets.
1.407 ++*/
1.408 ++struct got_entry
1.409 ++{
1.410 ++ struct got_entry *next;
1.411 ++ struct got_entry **pprev;
1.412 ++ int refcount;
1.413 ++ bfd_signed_vma offset;
1.414 ++};
1.415 ++
1.416 ++struct elf_avr32_link_hash_entry
1.417 ++{
1.418 ++ struct elf_link_hash_entry root;
1.419 ++
1.420 ++ /* Number of runtime relocations against this symbol. */
1.421 ++ unsigned int possibly_dynamic_relocs;
1.422 ++
1.423 ++ /* If there are anything but R_AVR32_GOT18 relocations against this
1.424 ++ symbol, it means that someone may be taking the address of the
1.425 ++ function, and we should therefore not create a stub. */
1.426 ++ bfd_boolean no_fn_stub;
1.427 ++
1.428 ++ /* If there is a R_AVR32_32 relocation in a read-only section
1.429 ++ against this symbol, we could be in trouble. If we're linking a
1.430 ++ shared library or this symbol is defined in one, it means we must
1.431 ++ emit a run-time reloc for it and that's not allowed in read-only
1.432 ++ sections. */
1.433 ++ asection *readonly_reloc_sec;
1.434 ++ bfd_vma readonly_reloc_offset;
1.435 ++
1.436 ++ /* Record which frag (if any) contains the symbol. This is used
1.437 ++ during relaxation in order to avoid having to update all symbols
1.438 ++ whenever we move something. For local symbols, this information
1.439 ++ is in the local_sym_frag member of struct elf_obj_tdata. */
1.440 ++ struct fragment *sym_frag;
1.441 ++};
1.442 ++#define avr32_elf_hash_entry(ent) ((struct elf_avr32_link_hash_entry *)(ent))
1.443 ++
1.444 ++struct elf_avr32_link_hash_table
1.445 ++{
1.446 ++ struct elf_link_hash_table root;
1.447 ++
1.448 ++ /* Shortcuts to get to dynamic linker sections. */
1.449 ++ asection *sgot;
1.450 ++ asection *srelgot;
1.451 ++ asection *sstub;
1.452 ++
1.453 ++ /* We use a variation of Pigeonhole Sort to sort the GOT. After the
1.454 ++ initial refcounts have been determined, we initialize
1.455 ++ nr_got_holes to the highest refcount ever seen and allocate an
1.456 ++ array of nr_got_holes entries for got_hole. Each GOT entry is
1.457 ++ then stored in this array at the index given by its refcount.
1.458 ++
1.459 ++ When a GOT entry has its refcount decremented during relaxation,
1.460 ++ it is moved to a lower index in the got_hole array.
1.461 ++ */
1.462 ++ struct got_entry **got_hole;
1.463 ++ int nr_got_holes;
1.464 ++
1.465 ++ /* Dynamic relocations to local symbols. Only used when linking a
1.466 ++ shared library and -Bsymbolic is not given. */
1.467 ++ unsigned int local_dynamic_relocs;
1.468 ++
1.469 ++ bfd_boolean relocations_analyzed;
1.470 ++ bfd_boolean symbols_adjusted;
1.471 ++ bfd_boolean repeat_pass;
1.472 ++ bfd_boolean direct_data_refs;
1.473 ++ unsigned int relax_iteration;
1.474 ++ unsigned int relax_pass;
1.475 ++};
1.476 ++#define avr32_elf_hash_table(p) \
1.477 ++ ((struct elf_avr32_link_hash_table *)((p)->hash))
1.478 ++
1.479 ++static struct bfd_hash_entry *
1.480 ++avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
1.481 ++ struct bfd_hash_table *table,
1.482 ++ const char *string)
1.483 ++{
1.484 ++ struct elf_avr32_link_hash_entry *ret = avr32_elf_hash_entry(entry);
1.485 ++
1.486 ++ /* Allocate the structure if it hasn't already been allocated by a
1.487 ++ subclass */
1.488 ++ if (ret == NULL)
1.489 ++ ret = (struct elf_avr32_link_hash_entry *)
1.490 ++ bfd_hash_allocate(table, sizeof(struct elf_avr32_link_hash_entry));
1.491 ++
1.492 ++ if (ret == NULL)
1.493 ++ return NULL;
1.494 ++
1.495 ++ memset(ret, 0, sizeof(struct elf_avr32_link_hash_entry));
1.496 ++
1.497 ++ /* Give the superclass a chance */
1.498 ++ ret = (struct elf_avr32_link_hash_entry *)
1.499 ++ _bfd_elf_link_hash_newfunc((struct bfd_hash_entry *)ret, table, string);
1.500 ++
1.501 ++ return (struct bfd_hash_entry *)ret;
1.502 ++}
1.503 ++
1.504 ++/* Copy data from an indirect symbol to its direct symbol, hiding the
1.505 ++ old indirect symbol. Process additional relocation information.
1.506 ++ Also called for weakdefs, in which case we just let
1.507 ++ _bfd_elf_link_hash_copy_indirect copy the flags for us. */
1.508 ++
1.509 ++static void
1.510 ++avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
1.511 ++ struct elf_link_hash_entry *dir,
1.512 ++ struct elf_link_hash_entry *ind)
1.513 ++{
1.514 ++ struct elf_avr32_link_hash_entry *edir, *eind;
1.515 ++
1.516 ++ _bfd_elf_link_hash_copy_indirect (info, dir, ind);
1.517 ++
1.518 ++ if (ind->root.type != bfd_link_hash_indirect)
1.519 ++ return;
1.520 ++
1.521 ++ edir = (struct elf_avr32_link_hash_entry *)dir;
1.522 ++ eind = (struct elf_avr32_link_hash_entry *)ind;
1.523 ++
1.524 ++ edir->possibly_dynamic_relocs += eind->possibly_dynamic_relocs;
1.525 ++ edir->no_fn_stub = edir->no_fn_stub || eind->no_fn_stub;
1.526 ++}
1.527 ++
1.528 ++static struct bfd_link_hash_table *
1.529 ++avr32_elf_link_hash_table_create(bfd *abfd)
1.530 ++{
1.531 ++ struct elf_avr32_link_hash_table *ret;
1.532 ++
1.533 ++ ret = bfd_zmalloc(sizeof(*ret));
1.534 ++ if (ret == NULL)
1.535 ++ return NULL;
1.536 ++
1.537 ++ if (! _bfd_elf_link_hash_table_init(&ret->root, abfd,
1.538 ++ avr32_elf_link_hash_newfunc,
1.539 ++ sizeof (struct elf_avr32_link_hash_entry)))
1.540 ++ {
1.541 ++ free(ret);
1.542 ++ return NULL;
1.543 ++ }
1.544 ++
1.545 ++ /* Prevent the BFD core from creating bogus got_entry pointers */
1.546 ++ ret->root.init_got_refcount.glist = NULL;
1.547 ++ ret->root.init_plt_refcount.glist = NULL;
1.548 ++ ret->root.init_got_offset.glist = NULL;
1.549 ++ ret->root.init_plt_offset.glist = NULL;
1.550 ++
1.551 ++ return &ret->root.root;
1.552 ++}
1.553 ++
1.554 ++
1.555 ++/* Initial analysis and creation of dynamic sections and symbols */
1.556 ++
1.557 ++static asection *
1.558 ++create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
1.559 ++ unsigned int align_power);
1.560 ++static struct elf_link_hash_entry *
1.561 ++create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
1.562 ++ const char *name, asection *sec,
1.563 ++ bfd_vma offset);
1.564 ++static bfd_boolean
1.565 ++avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info);
1.566 ++static bfd_boolean
1.567 ++avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info);
1.568 ++static bfd_boolean
1.569 ++avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
1.570 ++ const Elf_Internal_Rela *relocs);
1.571 ++static bfd_boolean
1.572 ++avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
1.573 ++ struct elf_link_hash_entry *h);
1.574 ++
1.575 ++static asection *
1.576 ++create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
1.577 ++ unsigned int align_power)
1.578 ++{
1.579 ++ asection *sec;
1.580 ++
1.581 ++ sec = bfd_make_section(dynobj, name);
1.582 ++ if (!sec
1.583 ++ || !bfd_set_section_flags(dynobj, sec, flags)
1.584 ++ || !bfd_set_section_alignment(dynobj, sec, align_power))
1.585 ++ return NULL;
1.586 ++
1.587 ++ return sec;
1.588 ++}
1.589 ++
1.590 ++static struct elf_link_hash_entry *
1.591 ++create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
1.592 ++ const char *name, asection *sec,
1.593 ++ bfd_vma offset)
1.594 ++{
1.595 ++ struct bfd_link_hash_entry *bh = NULL;
1.596 ++ struct elf_link_hash_entry *h;
1.597 ++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
1.598 ++
1.599 ++ if (!(_bfd_generic_link_add_one_symbol
1.600 ++ (info, dynobj, name, BSF_GLOBAL, sec, offset, NULL, FALSE,
1.601 ++ bed->collect, &bh)))
1.602 ++ return NULL;
1.603 ++
1.604 ++ h = (struct elf_link_hash_entry *)bh;
1.605 ++ h->def_regular = 1;
1.606 ++ h->type = STT_OBJECT;
1.607 ++ h->other = STV_HIDDEN;
1.608 ++
1.609 ++ return h;
1.610 ++}
1.611 ++
1.612 ++static bfd_boolean
1.613 ++avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info)
1.614 ++{
1.615 ++ struct elf_avr32_link_hash_table *htab;
1.616 ++ flagword flags;
1.617 ++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
1.618 ++
1.619 ++ htab = avr32_elf_hash_table(info);
1.620 ++ flags = bed->dynamic_sec_flags;
1.621 ++
1.622 ++ if (htab->sgot)
1.623 ++ return TRUE;
1.624 ++
1.625 ++ htab->sgot = create_dynamic_section(dynobj, ".got", flags, 2);
1.626 ++ if (!htab->srelgot)
1.627 ++ htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
1.628 ++ flags | SEC_READONLY, 2);
1.629 ++
1.630 ++ if (!htab->sgot || !htab->srelgot)
1.631 ++ return FALSE;
1.632 ++
1.633 ++ htab->root.hgot = create_dynamic_symbol(dynobj, info, "_GLOBAL_OFFSET_TABLE_",
1.634 ++ htab->sgot, 0);
1.635 ++ if (!htab->root.hgot)
1.636 ++ return FALSE;
1.637 ++
1.638 ++ /* Make room for the GOT header */
1.639 ++ htab->sgot->size += bed->got_header_size;
1.640 ++
1.641 ++ return TRUE;
1.642 ++}
1.643 ++
1.644 ++/* (1) Create all dynamic (i.e. linker generated) sections that we may
1.645 ++ need during the link */
1.646 ++
1.647 ++static bfd_boolean
1.648 ++avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
1.649 ++{
1.650 ++ struct elf_avr32_link_hash_table *htab;
1.651 ++ flagword flags;
1.652 ++ const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
1.653 ++
1.654 ++ pr_debug("(1) create dynamic sections\n");
1.655 ++
1.656 ++ htab = avr32_elf_hash_table(info);
1.657 ++ flags = bed->dynamic_sec_flags;
1.658 ++
1.659 ++ if (!avr32_elf_create_got_section (dynobj, info))
1.660 ++ return FALSE;
1.661 ++
1.662 ++ if (!htab->sstub)
1.663 ++ htab->sstub = create_dynamic_section(dynobj, ".stub",
1.664 ++ flags | SEC_READONLY | SEC_CODE, 2);
1.665 ++
1.666 ++ if (!htab->sstub)
1.667 ++ return FALSE;
1.668 ++
1.669 ++ return TRUE;
1.670 ++}
1.671 ++
1.672 ++/* (2) Go through all the relocs and count any potential GOT- or
1.673 ++ PLT-references to each symbol */
1.674 ++
1.675 ++static bfd_boolean
1.676 ++avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
1.677 ++ const Elf_Internal_Rela *relocs)
1.678 ++{
1.679 ++ Elf_Internal_Shdr *symtab_hdr;
1.680 ++ struct elf_avr32_link_hash_table *htab;
1.681 ++ struct elf_link_hash_entry **sym_hashes;
1.682 ++ const Elf_Internal_Rela *rel, *rel_end;
1.683 ++ struct got_entry **local_got_ents;
1.684 ++ struct got_entry *got;
1.685 ++ const struct elf_backend_data *bed = get_elf_backend_data (abfd);
1.686 ++ asection *sgot;
1.687 ++ bfd *dynobj;
1.688 ++
1.689 ++ pr_debug("(2) check relocs for %s:<%s> (size 0x%lx)\n",
1.690 ++ abfd->filename, sec->name, sec->size);
1.691 ++
1.692 ++ if (info->relocatable)
1.693 ++ return TRUE;
1.694 ++
1.695 ++ dynobj = elf_hash_table(info)->dynobj;
1.696 ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
1.697 ++ sym_hashes = elf_sym_hashes(abfd);
1.698 ++ htab = avr32_elf_hash_table(info);
1.699 ++ local_got_ents = elf_local_got_ents(abfd);
1.700 ++ sgot = htab->sgot;
1.701 ++
1.702 ++ rel_end = relocs + sec->reloc_count;
1.703 ++ for (rel = relocs; rel < rel_end; rel++)
1.704 ++ {
1.705 ++ unsigned long r_symndx, r_type;
1.706 ++ struct elf_avr32_link_hash_entry *h;
1.707 ++
1.708 ++ r_symndx = ELF32_R_SYM(rel->r_info);
1.709 ++ r_type = ELF32_R_TYPE(rel->r_info);
1.710 ++
1.711 ++ /* Local symbols use local_got_ents, while others store the same
1.712 ++ information in the hash entry */
1.713 ++ if (r_symndx < symtab_hdr->sh_info)
1.714 ++ {
1.715 ++ pr_debug(" (2a) processing local symbol %lu\n", r_symndx);
1.716 ++ h = NULL;
1.717 ++ }
1.718 ++ else
1.719 ++ {
1.720 ++ h = (struct elf_avr32_link_hash_entry *)
1.721 ++ sym_hashes[r_symndx - symtab_hdr->sh_info];
1.722 ++ while (h->root.type == bfd_link_hash_indirect
1.723 ++ || h->root.type == bfd_link_hash_warning)
1.724 ++ h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
1.725 ++ pr_debug(" (2a) processing symbol %s\n", h->root.root.root.string);
1.726 ++ }
1.727 ++
1.728 ++ /* Some relocs require special sections to be created. */
1.729 ++ switch (r_type)
1.730 ++ {
1.731 ++ case R_AVR32_GOT32:
1.732 ++ case R_AVR32_GOT16:
1.733 ++ case R_AVR32_GOT8:
1.734 ++ case R_AVR32_GOT21S:
1.735 ++ case R_AVR32_GOT18SW:
1.736 ++ case R_AVR32_GOT16S:
1.737 ++ case R_AVR32_GOT7UW:
1.738 ++ case R_AVR32_LDA_GOT:
1.739 ++ case R_AVR32_GOTCALL:
1.740 ++ if (rel->r_addend)
1.741 ++ {
1.742 ++ if (info->callbacks->reloc_dangerous
1.743 ++ (info, _("Non-zero addend on GOT-relative relocation"),
1.744 ++ abfd, sec, rel->r_offset) == FALSE)
1.745 ++ return FALSE;
1.746 ++ }
1.747 ++ /* fall through */
1.748 ++ case R_AVR32_GOTPC:
1.749 ++ if (dynobj == NULL)
1.750 ++ elf_hash_table(info)->dynobj = dynobj = abfd;
1.751 ++ if (sgot == NULL && !avr32_elf_create_got_section(dynobj, info))
1.752 ++ return FALSE;
1.753 ++ break;
1.754 ++ case R_AVR32_32:
1.755 ++ /* We may need to create .rela.dyn later on. */
1.756 ++ if (dynobj == NULL
1.757 ++ && (info->shared || h != NULL)
1.758 ++ && (sec->flags & SEC_ALLOC))
1.759 ++ elf_hash_table(info)->dynobj = dynobj = abfd;
1.760 ++ break;
1.761 ++ }
1.762 ++
1.763 ++ if (h != NULL && r_type != R_AVR32_GOT18SW)
1.764 ++ h->no_fn_stub = TRUE;
1.765 ++
1.766 ++ switch (r_type)
1.767 ++ {
1.768 ++ case R_AVR32_GOT32:
1.769 ++ case R_AVR32_GOT16:
1.770 ++ case R_AVR32_GOT8:
1.771 ++ case R_AVR32_GOT21S:
1.772 ++ case R_AVR32_GOT18SW:
1.773 ++ case R_AVR32_GOT16S:
1.774 ++ case R_AVR32_GOT7UW:
1.775 ++ case R_AVR32_LDA_GOT:
1.776 ++ case R_AVR32_GOTCALL:
1.777 ++ if (h != NULL)
1.778 ++ {
1.779 ++ got = h->root.got.glist;
1.780 ++ if (!got)
1.781 ++ {
1.782 ++ got = bfd_zalloc(abfd, sizeof(struct got_entry));
1.783 ++ if (!got)
1.784 ++ return FALSE;
1.785 ++ h->root.got.glist = got;
1.786 ++ }
1.787 ++ }
1.788 ++ else
1.789 ++ {
1.790 ++ if (!local_got_ents)
1.791 ++ {
1.792 ++ bfd_size_type size;
1.793 ++ bfd_size_type i;
1.794 ++ struct got_entry *tmp_entry;
1.795 ++
1.796 ++ size = symtab_hdr->sh_info;
1.797 ++ size *= sizeof(struct got_entry *) + sizeof(struct got_entry);
1.798 ++ local_got_ents = bfd_zalloc(abfd, size);
1.799 ++ if (!local_got_ents)
1.800 ++ return FALSE;
1.801 ++
1.802 ++ elf_local_got_ents(abfd) = local_got_ents;
1.803 ++
1.804 ++ tmp_entry = (struct got_entry *)(local_got_ents
1.805 ++ + symtab_hdr->sh_info);
1.806 ++ for (i = 0; i < symtab_hdr->sh_info; i++)
1.807 ++ local_got_ents[i] = &tmp_entry[i];
1.808 ++ }
1.809 ++
1.810 ++ got = local_got_ents[r_symndx];
1.811 ++ }
1.812 ++
1.813 ++ got->refcount++;
1.814 ++ if (got->refcount > htab->nr_got_holes)
1.815 ++ htab->nr_got_holes = got->refcount;
1.816 ++ break;
1.817 ++
1.818 ++ case R_AVR32_32:
1.819 ++ if ((info->shared || h != NULL)
1.820 ++ && (sec->flags & SEC_ALLOC))
1.821 ++ {
1.822 ++ if (htab->srelgot == NULL)
1.823 ++ {
1.824 ++ htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
1.825 ++ bed->dynamic_sec_flags
1.826 ++ | SEC_READONLY, 2);
1.827 ++ if (htab->srelgot == NULL)
1.828 ++ return FALSE;
1.829 ++ }
1.830 ++
1.831 ++ if (sec->flags & SEC_READONLY
1.832 ++ && !h->readonly_reloc_sec)
1.833 ++ {
1.834 ++ h->readonly_reloc_sec = sec;
1.835 ++ h->readonly_reloc_offset = rel->r_offset;
1.836 ++ }
1.837 ++
1.838 ++ if (h != NULL)
1.839 ++ {
1.840 ++ pr_debug("Non-GOT reference to symbol %s\n",
1.841 ++ h->root.root.root.string);
1.842 ++ h->possibly_dynamic_relocs++;
1.843 ++ }
1.844 ++ else
1.845 ++ {
1.846 ++ pr_debug("Non-GOT reference to local symbol %lu\n",
1.847 ++ r_symndx);
1.848 ++ htab->local_dynamic_relocs++;
1.849 ++ }
1.850 ++ }
1.851 ++
1.852 ++ break;
1.853 ++
1.854 ++ /* TODO: GNU_VTINHERIT and GNU_VTENTRY */
1.855 ++ }
1.856 ++ }
1.857 ++
1.858 ++ return TRUE;
1.859 ++}
1.860 ++
1.861 ++/* (3) Adjust a symbol defined by a dynamic object and referenced by a
1.862 ++ regular object. The current definition is in some section of the
1.863 ++ dynamic object, but we're not including those sections. We have to
1.864 ++ change the definition to something the rest of the link can
1.865 ++ understand. */
1.866 ++
1.867 ++static bfd_boolean
1.868 ++avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
1.869 ++ struct elf_link_hash_entry *h)
1.870 ++{
1.871 ++ struct elf_avr32_link_hash_table *htab;
1.872 ++ struct elf_avr32_link_hash_entry *havr;
1.873 ++ bfd *dynobj;
1.874 ++
1.875 ++ pr_debug("(3) adjust dynamic symbol %s\n", h->root.root.string);
1.876 ++
1.877 ++ htab = avr32_elf_hash_table(info);
1.878 ++ havr = (struct elf_avr32_link_hash_entry *)h;
1.879 ++ dynobj = elf_hash_table(info)->dynobj;
1.880 ++
1.881 ++ /* Make sure we know what is going on here. */
1.882 ++ BFD_ASSERT (dynobj != NULL
1.883 ++ && (h->u.weakdef != NULL
1.884 ++ || (h->def_dynamic
1.885 ++ && h->ref_regular
1.886 ++ && !h->def_regular)));
1.887 ++
1.888 ++ /* We don't want dynamic relocations in read-only sections. */
1.889 ++ if (havr->readonly_reloc_sec)
1.890 ++ {
1.891 ++ if (info->callbacks->reloc_dangerous
1.892 ++ (info, _("dynamic relocation in read-only section"),
1.893 ++ havr->readonly_reloc_sec->owner, havr->readonly_reloc_sec,
1.894 ++ havr->readonly_reloc_offset) == FALSE)
1.895 ++ return FALSE;
1.896 ++ }
1.897 ++
1.898 ++ /* If this is a function, create a stub if possible and set the
1.899 ++ symbol to the stub location. */
1.900 ++ if (0 && !havr->no_fn_stub)
1.901 ++ {
1.902 ++ if (!h->def_regular)
1.903 ++ {
1.904 ++ asection *s = htab->sstub;
1.905 ++
1.906 ++ BFD_ASSERT(s != NULL);
1.907 ++
1.908 ++ h->root.u.def.section = s;
1.909 ++ h->root.u.def.value = s->size;
1.910 ++ h->plt.offset = s->size;
1.911 ++ s->size += AVR32_FUNCTION_STUB_SIZE;
1.912 ++
1.913 ++ return TRUE;
1.914 ++ }
1.915 ++ }
1.916 ++ else if (h->type == STT_FUNC)
1.917 ++ {
1.918 ++ /* This will set the entry for this symbol in the GOT to 0, and
1.919 ++ the dynamic linker will take care of this. */
1.920 ++ h->root.u.def.value = 0;
1.921 ++ return TRUE;
1.922 ++ }
1.923 ++
1.924 ++ /* If this is a weak symbol, and there is a real definition, the
1.925 ++ processor independent code will have arranged for us to see the
1.926 ++ real definition first, and we can just use the same value. */
1.927 ++ if (h->u.weakdef != NULL)
1.928 ++ {
1.929 ++ BFD_ASSERT(h->u.weakdef->root.type == bfd_link_hash_defined
1.930 ++ || h->u.weakdef->root.type == bfd_link_hash_defweak);
1.931 ++ h->root.u.def.section = h->u.weakdef->root.u.def.section;
1.932 ++ h->root.u.def.value = h->u.weakdef->root.u.def.value;
1.933 ++ return TRUE;
1.934 ++ }
1.935 ++
1.936 ++ /* This is a reference to a symbol defined by a dynamic object which
1.937 ++ is not a function. */
1.938 ++
1.939 ++ return TRUE;
1.940 ++}
1.941 ++
1.942 ++
1.943 ++/* Garbage-collection of unused sections */
1.944 ++
1.945 ++static asection *
1.946 ++avr32_elf_gc_mark_hook(asection *sec,
1.947 ++ struct bfd_link_info *info ATTRIBUTE_UNUSED,
1.948 ++ Elf_Internal_Rela *rel,
1.949 ++ struct elf_link_hash_entry *h,
1.950 ++ Elf_Internal_Sym *sym)
1.951 ++{
1.952 ++ if (h)
1.953 ++ {
1.954 ++ switch (ELF32_R_TYPE(rel->r_info))
1.955 ++ {
1.956 ++ /* TODO: VTINHERIT/VTENTRY */
1.957 ++ default:
1.958 ++ switch (h->root.type)
1.959 ++ {
1.960 ++ case bfd_link_hash_defined:
1.961 ++ case bfd_link_hash_defweak:
1.962 ++ return h->root.u.def.section;
1.963 ++
1.964 ++ case bfd_link_hash_common:
1.965 ++ return h->root.u.c.p->section;
1.966 ++
1.967 ++ default:
1.968 ++ break;
1.969 ++ }
1.970 ++ }
1.971 ++ }
1.972 ++ else
1.973 ++ return bfd_section_from_elf_index(sec->owner, sym->st_shndx);
1.974 ++
1.975 ++ return NULL;
1.976 ++}
1.977 ++
1.978 ++/* Update the GOT entry reference counts for the section being removed. */
1.979 ++static bfd_boolean
1.980 ++avr32_elf_gc_sweep_hook(bfd *abfd,
1.981 ++ struct bfd_link_info *info ATTRIBUTE_UNUSED,
1.982 ++ asection *sec,
1.983 ++ const Elf_Internal_Rela *relocs)
1.984 ++{
1.985 ++ Elf_Internal_Shdr *symtab_hdr;
1.986 ++ struct elf_avr32_link_hash_entry **sym_hashes;
1.987 ++ struct got_entry **local_got_ents;
1.988 ++ const Elf_Internal_Rela *rel, *relend;
1.989 ++
1.990 ++ if (!(sec->flags & SEC_ALLOC))
1.991 ++ return TRUE;
1.992 ++
1.993 ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
1.994 ++ sym_hashes = (struct elf_avr32_link_hash_entry **)elf_sym_hashes(abfd);
1.995 ++ local_got_ents = elf_local_got_ents(abfd);
1.996 ++
1.997 ++ relend = relocs + sec->reloc_count;
1.998 ++ for (rel = relocs; rel < relend; rel++)
1.999 ++ {
1.1000 ++ unsigned long r_symndx;
1.1001 ++ unsigned int r_type;
1.1002 ++ struct elf_avr32_link_hash_entry *h = NULL;
1.1003 ++
1.1004 ++ r_symndx = ELF32_R_SYM(rel->r_info);
1.1005 ++ if (r_symndx >= symtab_hdr->sh_info)
1.1006 ++ {
1.1007 ++ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
1.1008 ++ while (h->root.root.type == bfd_link_hash_indirect
1.1009 ++ || h->root.root.type == bfd_link_hash_warning)
1.1010 ++ h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
1.1011 ++ }
1.1012 ++
1.1013 ++ r_type = ELF32_R_TYPE(rel->r_info);
1.1014 ++
1.1015 ++ switch (r_type)
1.1016 ++ {
1.1017 ++ case R_AVR32_GOT32:
1.1018 ++ case R_AVR32_GOT16:
1.1019 ++ case R_AVR32_GOT8:
1.1020 ++ case R_AVR32_GOT21S:
1.1021 ++ case R_AVR32_GOT18SW:
1.1022 ++ case R_AVR32_GOT16S:
1.1023 ++ case R_AVR32_GOT7UW:
1.1024 ++ case R_AVR32_LDA_GOT:
1.1025 ++ case R_AVR32_GOTCALL:
1.1026 ++ if (h)
1.1027 ++ h->root.got.glist->refcount--;
1.1028 ++ else
1.1029 ++ local_got_ents[r_symndx]->refcount--;
1.1030 ++ break;
1.1031 ++
1.1032 ++ case R_AVR32_32:
1.1033 ++ if (info->shared || h)
1.1034 ++ {
1.1035 ++ if (h)
1.1036 ++ h->possibly_dynamic_relocs--;
1.1037 ++ else
1.1038 ++ avr32_elf_hash_table(info)->local_dynamic_relocs--;
1.1039 ++ }
1.1040 ++
1.1041 ++ default:
1.1042 ++ break;
1.1043 ++ }
1.1044 ++ }
1.1045 ++
1.1046 ++ return TRUE;
1.1047 ++}
1.1048 ++
1.1049 ++/* Sizing and refcounting of dynamic sections */
1.1050 ++
1.1051 ++static void
1.1052 ++insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
1.1053 ++static void
1.1054 ++unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
1.1055 ++static void
1.1056 ++ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
1.1057 ++static bfd_boolean
1.1058 ++assign_got_offsets(struct elf_avr32_link_hash_table *htab);
1.1059 ++static bfd_boolean
1.1060 ++allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info);
1.1061 ++static bfd_boolean
1.1062 ++avr32_elf_size_dynamic_sections (bfd *output_bfd,
1.1063 ++ struct bfd_link_info *info);
1.1064 ++
1.1065 ++static void
1.1066 ++insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
1.1067 ++{
1.1068 ++ /* Any entries with got_refcount > htab->nr_got_holes end up in the
1.1069 ++ * last pigeonhole without any sorting. We expect the number of such
1.1070 ++ * entries to be small, so it is very unlikely to affect
1.1071 ++ * performance. */
1.1072 ++ int entry = got->refcount;
1.1073 ++
1.1074 ++ if (entry > htab->nr_got_holes)
1.1075 ++ entry = htab->nr_got_holes;
1.1076 ++
1.1077 ++ got->pprev = &htab->got_hole[entry];
1.1078 ++ got->next = htab->got_hole[entry];
1.1079 ++
1.1080 ++ if (got->next)
1.1081 ++ got->next->pprev = &got->next;
1.1082 ++
1.1083 ++ htab->got_hole[entry] = got;
1.1084 ++}
1.1085 ++
1.1086 ++/* Decrement the refcount of a GOT entry and update its position in
1.1087 ++ the pigeonhole array. */
1.1088 ++static void
1.1089 ++unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
1.1090 ++{
1.1091 ++ BFD_ASSERT(got->refcount > 0);
1.1092 ++
1.1093 ++ if (got->next)
1.1094 ++ got->next->pprev = got->pprev;
1.1095 ++
1.1096 ++ *(got->pprev) = got->next;
1.1097 ++ got->refcount--;
1.1098 ++ insert_got_entry(htab, got);
1.1099 ++}
1.1100 ++
1.1101 ++static void
1.1102 ++ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
1.1103 ++{
1.1104 ++ if (got->next)
1.1105 ++ got->next->pprev = got->pprev;
1.1106 ++
1.1107 ++ *(got->pprev) = got->next;
1.1108 ++ got->refcount++;
1.1109 ++ insert_got_entry(htab, got);
1.1110 ++
1.1111 ++ BFD_ASSERT(got->refcount > 0);
1.1112 ++}
1.1113 ++
1.1114 ++/* Assign offsets to all GOT entries we intend to keep. The entries
1.1115 ++ that are referenced most often are placed at low offsets so that we
1.1116 ++ can use compact instructions as much as possible.
1.1117 ++
1.1118 ++ Returns TRUE if any offsets or the total size of the GOT changed. */
1.1119 ++
1.1120 ++static bfd_boolean
1.1121 ++assign_got_offsets(struct elf_avr32_link_hash_table *htab)
1.1122 ++{
1.1123 ++ struct got_entry *got;
1.1124 ++ bfd_size_type got_size = 0;
1.1125 ++ bfd_boolean changed = FALSE;
1.1126 ++ bfd_signed_vma offset;
1.1127 ++ int i;
1.1128 ++
1.1129 ++ /* The GOT header provides the address of the DYNAMIC segment, so
1.1130 ++ we need that even if the GOT is otherwise empty. */
1.1131 ++ if (htab->root.dynamic_sections_created)
1.1132 ++ got_size = AVR32_GOT_HEADER_SIZE;
1.1133 ++
1.1134 ++ for (i = htab->nr_got_holes; i > 0; i--)
1.1135 ++ {
1.1136 ++ got = htab->got_hole[i];
1.1137 ++ while (got)
1.1138 ++ {
1.1139 ++ if (got->refcount > 0)
1.1140 ++ {
1.1141 ++ offset = got_size;
1.1142 ++ if (got->offset != offset)
1.1143 ++ {
1.1144 ++ RDBG("GOT offset changed: %ld -> %ld\n",
1.1145 ++ got->offset, offset);
1.1146 ++ changed = TRUE;
1.1147 ++ }
1.1148 ++ got->offset = offset;
1.1149 ++ got_size += 4;
1.1150 ++ }
1.1151 ++ got = got->next;
1.1152 ++ }
1.1153 ++ }
1.1154 ++
1.1155 ++ if (htab->sgot->size != got_size)
1.1156 ++ {
1.1157 ++ RDBG("GOT size changed: %lu -> %lu\n", htab->sgot->size,
1.1158 ++ got_size);
1.1159 ++ changed = TRUE;
1.1160 ++ }
1.1161 ++ htab->sgot->size = got_size;
1.1162 ++
1.1163 ++ RDBG("assign_got_offsets: total size %lu (%s)\n",
1.1164 ++ got_size, changed ? "changed" : "no change");
1.1165 ++
1.1166 ++ return changed;
1.1167 ++}
1.1168 ++
1.1169 ++static bfd_boolean
1.1170 ++allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info)
1.1171 ++{
1.1172 ++ struct bfd_link_info *info = _info;
1.1173 ++ struct elf_avr32_link_hash_table *htab;
1.1174 ++ struct elf_avr32_link_hash_entry *havr;
1.1175 ++ struct got_entry *got;
1.1176 ++
1.1177 ++ pr_debug(" (4b) allocate_dynrelocs: %s\n", h->root.root.string);
1.1178 ++
1.1179 ++ if (h->root.type == bfd_link_hash_indirect)
1.1180 ++ return TRUE;
1.1181 ++
1.1182 ++ if (h->root.type == bfd_link_hash_warning)
1.1183 ++ /* When warning symbols are created, they **replace** the "real"
1.1184 ++ entry in the hash table, thus we never get to see the real
1.1185 ++ symbol in a hash traversal. So look at it now. */
1.1186 ++ h = (struct elf_link_hash_entry *) h->root.u.i.link;
1.1187 ++
1.1188 ++ htab = avr32_elf_hash_table(info);
1.1189 ++ havr = (struct elf_avr32_link_hash_entry *)h;
1.1190 ++
1.1191 ++ got = h->got.glist;
1.1192 ++
1.1193 ++ /* If got is NULL, the symbol is never referenced through the GOT */
1.1194 ++ if (got && got->refcount > 0)
1.1195 ++ {
1.1196 ++ insert_got_entry(htab, got);
1.1197 ++
1.1198 ++ /* Shared libraries need relocs for all GOT entries unless the
1.1199 ++ symbol is forced local or -Bsymbolic is used. Others need
1.1200 ++ relocs for everything that is not guaranteed to be defined in
1.1201 ++ a regular object. */
1.1202 ++ if ((info->shared
1.1203 ++ && !info->symbolic
1.1204 ++ && h->dynindx != -1)
1.1205 ++ || (htab->root.dynamic_sections_created
1.1206 ++ && h->def_dynamic
1.1207 ++ && !h->def_regular))
1.1208 ++ htab->srelgot->size += sizeof(Elf32_External_Rela);
1.1209 ++ }
1.1210 ++
1.1211 ++ if (havr->possibly_dynamic_relocs
1.1212 ++ && (info->shared
1.1213 ++ || (elf_hash_table(info)->dynamic_sections_created
1.1214 ++ && h->def_dynamic
1.1215 ++ && !h->def_regular)))
1.1216 ++ {
1.1217 ++ pr_debug("Allocating %d dynamic reloc against symbol %s...\n",
1.1218 ++ havr->possibly_dynamic_relocs, h->root.root.string);
1.1219 ++ htab->srelgot->size += (havr->possibly_dynamic_relocs
1.1220 ++ * sizeof(Elf32_External_Rela));
1.1221 ++ }
1.1222 ++
1.1223 ++ return TRUE;
1.1224 ++}
1.1225 ++
1.1226 ++/* (4) Calculate the sizes of the linker-generated sections and
1.1227 ++ allocate memory for them. */
1.1228 ++
1.1229 ++static bfd_boolean
1.1230 ++avr32_elf_size_dynamic_sections (bfd *output_bfd,
1.1231 ++ struct bfd_link_info *info)
1.1232 ++{
1.1233 ++ struct elf_avr32_link_hash_table *htab;
1.1234 ++ bfd *dynobj;
1.1235 ++ asection *s;
1.1236 ++ bfd *ibfd;
1.1237 ++ bfd_boolean relocs;
1.1238 ++
1.1239 ++ pr_debug("(4) size dynamic sections\n");
1.1240 ++
1.1241 ++ htab = avr32_elf_hash_table(info);
1.1242 ++ dynobj = htab->root.dynobj;
1.1243 ++ BFD_ASSERT(dynobj != NULL);
1.1244 ++
1.1245 ++ if (htab->root.dynamic_sections_created)
1.1246 ++ {
1.1247 ++ /* Initialize the contents of the .interp section to the name of
1.1248 ++ the dynamic loader */
1.1249 ++ if (info->executable)
1.1250 ++ {
1.1251 ++ s = bfd_get_section_by_name(dynobj, ".interp");
1.1252 ++ BFD_ASSERT(s != NULL);
1.1253 ++ s->size = sizeof(ELF_DYNAMIC_INTERPRETER);
1.1254 ++ s->contents = (unsigned char *)ELF_DYNAMIC_INTERPRETER;
1.1255 ++ }
1.1256 ++ }
1.1257 ++
1.1258 ++ if (htab->nr_got_holes > 0)
1.1259 ++ {
1.1260 ++ /* Allocate holes for the pigeonhole sort algorithm */
1.1261 ++ pr_debug("Highest GOT refcount: %d\n", htab->nr_got_holes);
1.1262 ++
1.1263 ++ /* Limit the memory usage by clipping the number of pigeonholes
1.1264 ++ * at a predefined maximum. All entries with a higher refcount
1.1265 ++ * will end up in the last pigeonhole. */
1.1266 ++ if (htab->nr_got_holes >= MAX_NR_GOT_HOLES)
1.1267 ++ {
1.1268 ++ htab->nr_got_holes = MAX_NR_GOT_HOLES - 1;
1.1269 ++
1.1270 ++ pr_debug("Limiting maximum number of GOT pigeonholes to %u\n",
1.1271 ++ htab->nr_got_holes);
1.1272 ++ }
1.1273 ++ htab->got_hole = bfd_zalloc(output_bfd,
1.1274 ++ sizeof(struct got_entry *)
1.1275 ++ * (htab->nr_got_holes + 1));
1.1276 ++ if (!htab->got_hole)
1.1277 ++ return FALSE;
1.1278 ++
1.1279 ++ /* Set up .got offsets for local syms. */
1.1280 ++ for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
1.1281 ++ {
1.1282 ++ struct got_entry **local_got;
1.1283 ++ struct got_entry **end_local_got;
1.1284 ++ Elf_Internal_Shdr *symtab_hdr;
1.1285 ++ bfd_size_type locsymcount;
1.1286 ++
1.1287 ++ pr_debug(" (4a) processing file %s...\n", ibfd->filename);
1.1288 ++
1.1289 ++ BFD_ASSERT(bfd_get_flavour(ibfd) == bfd_target_elf_flavour);
1.1290 ++
1.1291 ++ local_got = elf_local_got_ents(ibfd);
1.1292 ++ if (!local_got)
1.1293 ++ continue;
1.1294 ++
1.1295 ++ symtab_hdr = &elf_tdata(ibfd)->symtab_hdr;
1.1296 ++ locsymcount = symtab_hdr->sh_info;
1.1297 ++ end_local_got = local_got + locsymcount;
1.1298 ++
1.1299 ++ for (; local_got < end_local_got; ++local_got)
1.1300 ++ insert_got_entry(htab, *local_got);
1.1301 ++ }
1.1302 ++ }
1.1303 ++
1.1304 ++ /* Allocate global sym .got entries and space for global sym
1.1305 ++ dynamic relocs */
1.1306 ++ elf_link_hash_traverse(&htab->root, allocate_dynrelocs, info);
1.1307 ++
1.1308 ++ /* Now that we have sorted the GOT entries, we are ready to
1.1309 ++ assign offsets and determine the initial size of the GOT. */
1.1310 ++ if (htab->sgot)
1.1311 ++ assign_got_offsets(htab);
1.1312 ++
1.1313 ++ /* Allocate space for local sym dynamic relocs */
1.1314 ++ BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared);
1.1315 ++ if (htab->local_dynamic_relocs)
1.1316 ++ htab->srelgot->size += (htab->local_dynamic_relocs
1.1317 ++ * sizeof(Elf32_External_Rela));
1.1318 ++
1.1319 ++ /* We now have determined the sizes of the various dynamic
1.1320 ++ sections. Allocate memory for them. */
1.1321 ++ relocs = FALSE;
1.1322 ++ for (s = dynobj->sections; s; s = s->next)
1.1323 ++ {
1.1324 ++ if ((s->flags & SEC_LINKER_CREATED) == 0)
1.1325 ++ continue;
1.1326 ++
1.1327 ++ if (s == htab->sgot
1.1328 ++ || s == htab->sstub)
1.1329 ++ {
1.1330 ++ /* Strip this section if we don't need it */
1.1331 ++ }
1.1332 ++ else if (strncmp (bfd_get_section_name(dynobj, s), ".rela", 5) == 0)
1.1333 ++ {
1.1334 ++ if (s->size != 0)
1.1335 ++ relocs = TRUE;
1.1336 ++
1.1337 ++ s->reloc_count = 0;
1.1338 ++ }
1.1339 ++ else
1.1340 ++ {
1.1341 ++ /* It's not one of our sections */
1.1342 ++ continue;
1.1343 ++ }
1.1344 ++
1.1345 ++ if (s->size == 0)
1.1346 ++ {
1.1347 ++ /* Strip unneeded sections */
1.1348 ++ pr_debug("Stripping section %s from output...\n", s->name);
1.1349 ++ /* deleted function in 2.17
1.1350 ++ _bfd_strip_section_from_output(info, s);
1.1351 ++ */
1.1352 ++ continue;
1.1353 ++ }
1.1354 ++
1.1355 ++ s->contents = bfd_zalloc(dynobj, s->size);
1.1356 ++ if (s->contents == NULL)
1.1357 ++ return FALSE;
1.1358 ++ }
1.1359 ++
1.1360 ++ if (htab->root.dynamic_sections_created)
1.1361 ++ {
1.1362 ++ /* Add some entries to the .dynamic section. We fill in the
1.1363 ++ values later, in sh_elf_finish_dynamic_sections, but we
1.1364 ++ must add the entries now so that we get the correct size for
1.1365 ++ the .dynamic section. The DT_DEBUG entry is filled in by the
1.1366 ++ dynamic linker and used by the debugger. */
1.1367 ++#define add_dynamic_entry(TAG, VAL) _bfd_elf_add_dynamic_entry(info, TAG, VAL)
1.1368 ++
1.1369 ++ if (!add_dynamic_entry(DT_PLTGOT, 0))
1.1370 ++ return FALSE;
1.1371 ++ if (!add_dynamic_entry(DT_AVR32_GOTSZ, 0))
1.1372 ++ return FALSE;
1.1373 ++
1.1374 ++ if (info->executable)
1.1375 ++ {
1.1376 ++ if (!add_dynamic_entry(DT_DEBUG, 0))
1.1377 ++ return FALSE;
1.1378 ++ }
1.1379 ++ if (relocs)
1.1380 ++ {
1.1381 ++ if (!add_dynamic_entry(DT_RELA, 0)
1.1382 ++ || !add_dynamic_entry(DT_RELASZ, 0)
1.1383 ++ || !add_dynamic_entry(DT_RELAENT,
1.1384 ++ sizeof(Elf32_External_Rela)))
1.1385 ++ return FALSE;
1.1386 ++ }
1.1387 ++ }
1.1388 ++#undef add_dynamic_entry
1.1389 ++
1.1390 ++ return TRUE;
1.1391 ++}
1.1392 ++
1.1393 ++
1.1394 ++/* Access to internal relocations, section contents and symbols.
1.1395 ++ (stolen from the xtensa port) */
1.1396 ++
1.1397 ++static Elf_Internal_Rela *
1.1398 ++retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory);
1.1399 ++static void
1.1400 ++pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
1.1401 ++static void
1.1402 ++release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
1.1403 ++static bfd_byte *
1.1404 ++retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory);
1.1405 ++/*
1.1406 ++static void
1.1407 ++pin_contents (asection *sec, bfd_byte *contents);
1.1408 ++*/
1.1409 ++static void
1.1410 ++release_contents (asection *sec, bfd_byte *contents);
1.1411 ++static Elf_Internal_Sym *
1.1412 ++retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory);
1.1413 ++/*
1.1414 ++static void
1.1415 ++pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
1.1416 ++*/
1.1417 ++static void
1.1418 ++release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
1.1419 ++
1.1420 ++/* During relaxation, we need to modify relocations, section contents,
1.1421 ++ and symbol definitions, and we need to keep the original values from
1.1422 ++ being reloaded from the input files, i.e., we need to "pin" the
1.1423 ++ modified values in memory. We also want to continue to observe the
1.1424 ++ setting of the "keep-memory" flag. The following functions wrap the
1.1425 ++ standard BFD functions to take care of this for us. */
1.1426 ++
1.1427 ++static Elf_Internal_Rela *
1.1428 ++retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory)
1.1429 ++{
1.1430 ++ /* _bfd_elf_link_read_relocs knows about caching, so no need for us
1.1431 ++ to be clever here. */
1.1432 ++ return _bfd_elf_link_read_relocs(abfd, sec, NULL, NULL, keep_memory);
1.1433 ++}
1.1434 ++
1.1435 ++static void
1.1436 ++pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
1.1437 ++{
1.1438 ++ elf_section_data (sec)->relocs = internal_relocs;
1.1439 ++}
1.1440 ++
1.1441 ++static void
1.1442 ++release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
1.1443 ++{
1.1444 ++ if (internal_relocs
1.1445 ++ && elf_section_data (sec)->relocs != internal_relocs)
1.1446 ++ free (internal_relocs);
1.1447 ++}
1.1448 ++
1.1449 ++static bfd_byte *
1.1450 ++retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory)
1.1451 ++{
1.1452 ++ bfd_byte *contents;
1.1453 ++ bfd_size_type sec_size;
1.1454 ++
1.1455 ++ sec_size = bfd_get_section_limit (abfd, sec);
1.1456 ++ contents = elf_section_data (sec)->this_hdr.contents;
1.1457 ++
1.1458 ++ if (contents == NULL && sec_size != 0)
1.1459 ++ {
1.1460 ++ if (!bfd_malloc_and_get_section (abfd, sec, &contents))
1.1461 ++ {
1.1462 ++ if (contents)
1.1463 ++ free (contents);
1.1464 ++ return NULL;
1.1465 ++ }
1.1466 ++ if (keep_memory)
1.1467 ++ elf_section_data (sec)->this_hdr.contents = contents;
1.1468 ++ }
1.1469 ++ return contents;
1.1470 ++}
1.1471 ++
1.1472 ++/*
1.1473 ++static void
1.1474 ++pin_contents (asection *sec, bfd_byte *contents)
1.1475 ++{
1.1476 ++ elf_section_data (sec)->this_hdr.contents = contents;
1.1477 ++}
1.1478 ++*/
1.1479 ++static void
1.1480 ++release_contents (asection *sec, bfd_byte *contents)
1.1481 ++{
1.1482 ++ if (contents && elf_section_data (sec)->this_hdr.contents != contents)
1.1483 ++ free (contents);
1.1484 ++}
1.1485 ++
1.1486 ++static Elf_Internal_Sym *
1.1487 ++retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory)
1.1488 ++{
1.1489 ++ Elf_Internal_Shdr *symtab_hdr;
1.1490 ++ Elf_Internal_Sym *isymbuf;
1.1491 ++ size_t locsymcount;
1.1492 ++
1.1493 ++ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
1.1494 ++ locsymcount = symtab_hdr->sh_info;
1.1495 ++
1.1496 ++ isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
1.1497 ++ if (isymbuf == NULL && locsymcount != 0)
1.1498 ++ {
1.1499 ++ isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0,
1.1500 ++ NULL, NULL, NULL);
1.1501 ++ if (isymbuf && keep_memory)
1.1502 ++ symtab_hdr->contents = (unsigned char *) isymbuf;
1.1503 ++ }
1.1504 ++
1.1505 ++ return isymbuf;
1.1506 ++}
1.1507 ++
1.1508 ++/*
1.1509 ++static void
1.1510 ++pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
1.1511 ++{
1.1512 ++ elf_tdata (input_bfd)->symtab_hdr.contents = (unsigned char *)isymbuf;
1.1513 ++}
1.1514 ++
1.1515 ++*/
1.1516 ++static void
1.1517 ++release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
1.1518 ++{
1.1519 ++ if (isymbuf && (elf_tdata (input_bfd)->symtab_hdr.contents
1.1520 ++ != (unsigned char *)isymbuf))
1.1521 ++ free (isymbuf);
1.1522 ++}
1.1523 ++
1.1524 ++/* Data structures used during relaxation. */
1.1525 ++
1.1526 ++enum relax_state_id {
1.1527 ++ RS_ERROR = -1,
1.1528 ++ RS_NONE = 0,
1.1529 ++ RS_ALIGN,
1.1530 ++ RS_CPENT,
1.1531 ++ RS_PIC_CALL,
1.1532 ++ RS_PIC_MCALL,
1.1533 ++ RS_PIC_RCALL2,
1.1534 ++ RS_PIC_RCALL1,
1.1535 ++ RS_PIC_LDA,
1.1536 ++ RS_PIC_LDW4,
1.1537 ++ RS_PIC_LDW3,
1.1538 ++ RS_PIC_SUB5,
1.1539 ++ RS_NOPIC_MCALL,
1.1540 ++ RS_NOPIC_RCALL2,
1.1541 ++ RS_NOPIC_RCALL1,
1.1542 ++ RS_NOPIC_LDW4,
1.1543 ++ RS_NOPIC_LDDPC,
1.1544 ++ RS_NOPIC_SUB5,
1.1545 ++ RS_NOPIC_MOV2,
1.1546 ++ RS_NOPIC_MOV1,
1.1547 ++ RS_RCALL2,
1.1548 ++ RS_RCALL1,
1.1549 ++ RS_BRC2,
1.1550 ++ RS_BRC1,
1.1551 ++ RS_BRAL,
1.1552 ++ RS_RJMP,
1.1553 ++ RS_MAX,
1.1554 ++};
1.1555 ++
1.1556 ++enum reference_type {
1.1557 ++ REF_ABSOLUTE,
1.1558 ++ REF_PCREL,
1.1559 ++ REF_CPOOL,
1.1560 ++ REF_GOT,
1.1561 ++};
1.1562 ++
1.1563 ++struct relax_state
1.1564 ++{
1.1565 ++ const char *name;
1.1566 ++ enum relax_state_id id;
1.1567 ++ enum relax_state_id direct;
1.1568 ++ enum relax_state_id next;
1.1569 ++ enum relax_state_id prev;
1.1570 ++
1.1571 ++ enum reference_type reftype;
1.1572 ++
1.1573 ++ unsigned int r_type;
1.1574 ++
1.1575 ++ bfd_vma opcode;
1.1576 ++ bfd_vma opcode_mask;
1.1577 ++
1.1578 ++ bfd_signed_vma range_min;
1.1579 ++ bfd_signed_vma range_max;
1.1580 ++
1.1581 ++ bfd_size_type size;
1.1582 ++};
1.1583 ++
1.1584 ++/*
1.1585 ++ * This is for relocs that
1.1586 ++ * a) has an addend or is of type R_AVR32_DIFF32, and
1.1587 ++ * b) references a different section than it's in, and
1.1588 ++ * c) references a section that is relaxable
1.1589 ++ *
1.1590 ++ * as well as relocs that references the constant pool, in which case
1.1591 ++ * the add_frag member points to the frag containing the constant pool
1.1592 ++ * entry.
1.1593 ++ *
1.1594 ++ * Such relocs must be fixed up whenever we delete any code. Sections
1.1595 ++ * that don't have any relocs with all of the above properties don't
1.1596 ++ * have any additional reloc data, but sections that do will have
1.1597 ++ * additional data for all its relocs.
1.1598 ++ */
1.1599 ++struct avr32_reloc_data
1.1600 ++{
1.1601 ++ struct fragment *add_frag;
1.1602 ++ struct fragment *sub_frag;
1.1603 ++};
1.1604 ++
1.1605 ++/*
1.1606 ++ * A 'fragment' is a relaxable entity, that is, code may be added or
1.1607 ++ * deleted at the end of a fragment. When this happens, all subsequent
1.1608 ++ * fragments in the list will have their offsets updated.
1.1609 ++ */
1.1610 ++struct fragment
1.1611 ++{
1.1612 ++ enum relax_state_id state;
1.1613 ++ enum relax_state_id initial_state;
1.1614 ++
1.1615 ++ Elf_Internal_Rela *rela;
1.1616 ++ bfd_size_type size;
1.1617 ++ bfd_vma offset;
1.1618 ++ int size_adjust;
1.1619 ++ int offset_adjust;
1.1620 ++ bfd_boolean has_grown;
1.1621 ++
1.1622 ++ /* Only used by constant pool entries. When this drops to zero, the
1.1623 ++ frag is discarded (i.e. size_adjust is set to -4.) */
1.1624 ++ int refcount;
1.1625 ++};
1.1626 ++
1.1627 ++struct avr32_relax_data
1.1628 ++{
1.1629 ++ unsigned int frag_count;
1.1630 ++ struct fragment *frag;
1.1631 ++ struct avr32_reloc_data *reloc_data;
1.1632 ++
1.1633 ++ /* TRUE if this section has one or more relaxable relocations */
1.1634 ++ bfd_boolean is_relaxable;
1.1635 ++ unsigned int iteration;
1.1636 ++};
1.1637 ++
1.1638 ++struct avr32_section_data
1.1639 ++{
1.1640 ++ struct bfd_elf_section_data elf;
1.1641 ++ struct avr32_relax_data relax_data;
1.1642 ++};
1.1643 ++
1.1644 ++/* Relax state definitions */
1.1645 ++
1.1646 ++#define PIC_MOV2_OPCODE 0xe0600000
1.1647 ++#define PIC_MOV2_MASK 0xe1e00000
1.1648 ++#define PIC_MOV2_RANGE_MIN (-1048576 * 4)
1.1649 ++#define PIC_MOV2_RANGE_MAX (1048575 * 4)
1.1650 ++#define PIC_MCALL_OPCODE 0xf0160000
1.1651 ++#define PIC_MCALL_MASK 0xffff0000
1.1652 ++#define PIC_MCALL_RANGE_MIN (-131072)
1.1653 ++#define PIC_MCALL_RANGE_MAX (131068)
1.1654 ++#define RCALL2_OPCODE 0xe0a00000
1.1655 ++#define RCALL2_MASK 0xe1ef0000
1.1656 ++#define RCALL2_RANGE_MIN (-2097152)
1.1657 ++#define RCALL2_RANGE_MAX (2097150)
1.1658 ++#define RCALL1_OPCODE 0xc00c0000
1.1659 ++#define RCALL1_MASK 0xf00c0000
1.1660 ++#define RCALL1_RANGE_MIN (-1024)
1.1661 ++#define RCALL1_RANGE_MAX (1022)
1.1662 ++#define PIC_LDW4_OPCODE 0xecf00000
1.1663 ++#define PIC_LDW4_MASK 0xfff00000
1.1664 ++#define PIC_LDW4_RANGE_MIN (-32768)
1.1665 ++#define PIC_LDW4_RANGE_MAX (32767)
1.1666 ++#define PIC_LDW3_OPCODE 0x6c000000
1.1667 ++#define PIC_LDW3_MASK 0xfe000000
1.1668 ++#define PIC_LDW3_RANGE_MIN (0)
1.1669 ++#define PIC_LDW3_RANGE_MAX (124)
1.1670 ++#define SUB5_PC_OPCODE 0xfec00000
1.1671 ++#define SUB5_PC_MASK 0xfff00000
1.1672 ++#define SUB5_PC_RANGE_MIN (-32768)
1.1673 ++#define SUB5_PC_RANGE_MAX (32767)
1.1674 ++#define NOPIC_MCALL_OPCODE 0xf01f0000
1.1675 ++#define NOPIC_MCALL_MASK 0xffff0000
1.1676 ++#define NOPIC_MCALL_RANGE_MIN PIC_MCALL_RANGE_MIN
1.1677 ++#define NOPIC_MCALL_RANGE_MAX PIC_MCALL_RANGE_MAX
1.1678 ++#define NOPIC_LDW4_OPCODE 0xfef00000
1.1679 ++#define NOPIC_LDW4_MASK 0xfff00000
1.1680 ++#define NOPIC_LDW4_RANGE_MIN PIC_LDW4_RANGE_MIN
1.1681 ++#define NOPIC_LDW4_RANGE_MAX PIC_LDW4_RANGE_MAX
1.1682 ++#define LDDPC_OPCODE 0x48000000
1.1683 ++#define LDDPC_MASK 0xf8000000
1.1684 ++#define LDDPC_RANGE_MIN 0
1.1685 ++#define LDDPC_RANGE_MAX 508
1.1686 ++
1.1687 ++#define NOPIC_MOV2_OPCODE 0xe0600000
1.1688 ++#define NOPIC_MOV2_MASK 0xe1e00000
1.1689 ++#define NOPIC_MOV2_RANGE_MIN (-1048576)
1.1690 ++#define NOPIC_MOV2_RANGE_MAX (1048575)
1.1691 ++#define NOPIC_MOV1_OPCODE 0x30000000
1.1692 ++#define NOPIC_MOV1_MASK 0xf0000000
1.1693 ++#define NOPIC_MOV1_RANGE_MIN (-128)
1.1694 ++#define NOPIC_MOV1_RANGE_MAX (127)
1.1695 ++
1.1696 ++/* Only brc2 variants with cond[3] == 0 is considered, since the
1.1697 ++ others are not relaxable. bral is a special case and is handled
1.1698 ++ separately. */
1.1699 ++#define BRC2_OPCODE 0xe0800000
1.1700 ++#define BRC2_MASK 0xe1e80000
1.1701 ++#define BRC2_RANGE_MIN (-2097152)
1.1702 ++#define BRC2_RANGE_MAX (2097150)
1.1703 ++#define BRC1_OPCODE 0xc0000000
1.1704 ++#define BRC1_MASK 0xf0080000
1.1705 ++#define BRC1_RANGE_MIN (-256)
1.1706 ++#define BRC1_RANGE_MAX (254)
1.1707 ++#define BRAL_OPCODE 0xe08f0000
1.1708 ++#define BRAL_MASK 0xe1ef0000
1.1709 ++#define BRAL_RANGE_MIN BRC2_RANGE_MIN
1.1710 ++#define BRAL_RANGE_MAX BRC2_RANGE_MAX
1.1711 ++#define RJMP_OPCODE 0xc0080000
1.1712 ++#define RJMP_MASK 0xf00c0000
1.1713 ++#define RJMP_RANGE_MIN (-1024)
1.1714 ++#define RJMP_RANGE_MAX (1022)
1.1715 ++
1.1716 ++/* Define a relax state using the GOT */
1.1717 ++#define RG(id, dir, next, prev, r_type, opc, size) \
1.1718 ++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_GOT, \
1.1719 ++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
1.1720 ++ opc##_RANGE_MIN, opc##_RANGE_MAX, size }
1.1721 ++/* Define a relax state using the Constant Pool */
1.1722 ++#define RC(id, dir, next, prev, r_type, opc, size) \
1.1723 ++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_CPOOL, \
1.1724 ++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
1.1725 ++ opc##_RANGE_MIN, opc##_RANGE_MAX, size }
1.1726 ++
1.1727 ++/* Define a relax state using pc-relative direct reference */
1.1728 ++#define RP(id, dir, next, prev, r_type, opc, size) \
1.1729 ++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_PCREL, \
1.1730 ++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
1.1731 ++ opc##_RANGE_MIN, opc##_RANGE_MAX, size }
1.1732 ++
1.1733 ++/* Define a relax state using non-pc-relative direct reference */
1.1734 ++#define RD(id, dir, next, prev, r_type, opc, size) \
1.1735 ++ { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_ABSOLUTE, \
1.1736 ++ R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
1.1737 ++ opc##_RANGE_MIN, opc##_RANGE_MAX, size }
1.1738 ++
1.1739 ++/* Define a relax state that will be handled specially */
1.1740 ++#define RS(id, r_type, size) \
1.1741 ++ { "RS_"#id, RS_##id, RS_NONE, RS_NONE, RS_NONE, REF_ABSOLUTE, \
1.1742 ++ R_AVR32_##r_type, 0, 0, 0, 0, size }
1.1743 ++
1.1744 ++const struct relax_state relax_state[RS_MAX] = {
1.1745 ++ RS(NONE, NONE, 0),
1.1746 ++ RS(ALIGN, ALIGN, 0),
1.1747 ++ RS(CPENT, 32_CPENT, 4),
1.1748 ++
1.1749 ++ RG(PIC_CALL, PIC_RCALL1, PIC_MCALL, NONE, GOTCALL, PIC_MOV2, 10),
1.1750 ++ RG(PIC_MCALL, PIC_RCALL1, NONE, PIC_CALL, GOT18SW, PIC_MCALL, 4),
1.1751 ++ RP(PIC_RCALL2, NONE, PIC_RCALL1, PIC_MCALL, 22H_PCREL, RCALL2, 4),
1.1752 ++ RP(PIC_RCALL1, NONE, NONE, PIC_RCALL2, 11H_PCREL, RCALL1, 2),
1.1753 ++
1.1754 ++ RG(PIC_LDA, PIC_SUB5, PIC_LDW4, NONE, LDA_GOT, PIC_MOV2, 8),
1.1755 ++ RG(PIC_LDW4, PIC_SUB5, PIC_LDW3, PIC_LDA, GOT16S, PIC_LDW4, 4),
1.1756 ++ RG(PIC_LDW3, PIC_SUB5, NONE, PIC_LDW4, GOT7UW, PIC_LDW3, 2),
1.1757 ++ RP(PIC_SUB5, NONE, NONE, PIC_LDW3, 16N_PCREL, SUB5_PC, 4),
1.1758 ++
1.1759 ++ RC(NOPIC_MCALL, NOPIC_RCALL1, NONE, NONE, CPCALL, NOPIC_MCALL, 4),
1.1760 ++ RP(NOPIC_RCALL2, NONE, NOPIC_RCALL1, NOPIC_MCALL, 22H_PCREL, RCALL2, 4),
1.1761 ++ RP(NOPIC_RCALL1, NONE, NONE, NOPIC_RCALL2, 11H_PCREL, RCALL1, 2),
1.1762 ++
1.1763 ++ RC(NOPIC_LDW4, NOPIC_MOV1, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4),
1.1764 ++ RC(NOPIC_LDDPC, NOPIC_MOV1, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2),
1.1765 ++ RP(NOPIC_SUB5, NOPIC_MOV1, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4),
1.1766 ++ RD(NOPIC_MOV2, NONE, NOPIC_MOV1, NOPIC_SUB5, 21S, NOPIC_MOV2, 4),
1.1767 ++ RD(NOPIC_MOV1, NONE, NONE, NOPIC_MOV2, 8S, NOPIC_MOV1, 2),
1.1768 ++
1.1769 ++ RP(RCALL2, NONE, RCALL1, NONE, 22H_PCREL, RCALL2, 4),
1.1770 ++ RP(RCALL1, NONE, NONE, RCALL2, 11H_PCREL, RCALL1, 2),
1.1771 ++ RP(BRC2, NONE, BRC1, NONE, 22H_PCREL, BRC2, 4),
1.1772 ++ RP(BRC1, NONE, NONE, BRC2, 9H_PCREL, BRC1, 2),
1.1773 ++ RP(BRAL, NONE, RJMP, NONE, 22H_PCREL, BRAL, 4),
1.1774 ++ RP(RJMP, NONE, NONE, BRAL, 11H_PCREL, RJMP, 2),
1.1775 ++};
1.1776 ++
1.1777 ++static bfd_boolean
1.1778 ++avr32_elf_new_section_hook(bfd *abfd, asection *sec)
1.1779 ++{
1.1780 ++ struct avr32_section_data *sdata;
1.1781 ++
1.1782 ++ sdata = bfd_zalloc(abfd, sizeof(struct avr32_section_data));
1.1783 ++ if (!sdata)
1.1784 ++ return FALSE;
1.1785 ++
1.1786 ++ sec->used_by_bfd = sdata;
1.1787 ++ return _bfd_elf_new_section_hook(abfd, sec);
1.1788 ++}
1.1789 ++
1.1790 ++static struct avr32_relax_data *
1.1791 ++avr32_relax_data(asection *sec)
1.1792 ++{
1.1793 ++ struct avr32_section_data *sdata;
1.1794 ++
1.1795 ++ BFD_ASSERT(sec->used_by_bfd);
1.1796 ++
1.1797 ++ sdata = (struct avr32_section_data *)elf_section_data(sec);
1.1798 ++ return &sdata->relax_data;
1.1799 ++}
1.1800 ++
1.1801 ++/* Link-time relaxation */
1.1802 ++
1.1803 ++static bfd_boolean
1.1804 ++avr32_elf_relax_section(bfd *abfd, asection *sec,
1.1805 ++ struct bfd_link_info *info, bfd_boolean *again);
1.1806 ++
1.1807 ++enum relax_pass_id {
1.1808 ++ RELAX_PASS_SIZE_FRAGS,
1.1809 ++ RELAX_PASS_MOVE_DATA,
1.1810 ++};
1.1811 ++
1.1812 ++/* Stolen from the xtensa port */
1.1813 ++static int
1.1814 ++internal_reloc_compare (const void *ap, const void *bp)
1.1815 ++{
1.1816 ++ const Elf_Internal_Rela *a = (const Elf_Internal_Rela *) ap;
1.1817 ++ const Elf_Internal_Rela *b = (const Elf_Internal_Rela *) bp;
1.1818 ++
1.1819 ++ if (a->r_offset != b->r_offset)
1.1820 ++ return (a->r_offset - b->r_offset);
1.1821 ++
1.1822 ++ /* We don't need to sort on these criteria for correctness,
1.1823 ++ but enforcing a more strict ordering prevents unstable qsort
1.1824 ++ from behaving differently with different implementations.
1.1825 ++ Without the code below we get correct but different results
1.1826 ++ on Solaris 2.7 and 2.8. We would like to always produce the
1.1827 ++ same results no matter the host. */
1.1828 ++
1.1829 ++ if (a->r_info != b->r_info)
1.1830 ++ return (a->r_info - b->r_info);
1.1831 ++
1.1832 ++ return (a->r_addend - b->r_addend);
1.1833 ++}
1.1834 ++
1.1835 ++static enum relax_state_id
1.1836 ++get_pcrel22_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
1.1837 ++ const Elf_Internal_Rela *rela)
1.1838 ++{
1.1839 ++ bfd_byte *contents;
1.1840 ++ bfd_vma insn;
1.1841 ++ enum relax_state_id rs = RS_NONE;
1.1842 ++
1.1843 ++ contents = retrieve_contents(abfd, sec, info->keep_memory);
1.1844 ++ if (!contents)
1.1845 ++ return RS_ERROR;
1.1846 ++
1.1847 ++ insn = bfd_get_32(abfd, contents + rela->r_offset);
1.1848 ++ if ((insn & RCALL2_MASK) == RCALL2_OPCODE)
1.1849 ++ rs = RS_RCALL2;
1.1850 ++ else if ((insn & BRAL_MASK) == BRAL_OPCODE)
1.1851 ++ /* Optimizing bral -> rjmp gets us into all kinds of
1.1852 ++ trouble with jump tables. Better not do it. */
1.1853 ++ rs = RS_NONE;
1.1854 ++ else if ((insn & BRC2_MASK) == BRC2_OPCODE)
1.1855 ++ rs = RS_BRC2;
1.1856 ++
1.1857 ++ release_contents(sec, contents);
1.1858 ++
1.1859 ++ return rs;
1.1860 ++}
1.1861 ++
1.1862 ++static enum relax_state_id
1.1863 ++get_initial_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
1.1864 ++ const Elf_Internal_Rela *rela)
1.1865 ++{
1.1866 ++ switch (ELF_R_TYPE(rela->r_info))
1.1867 ++ {
1.1868 ++ case R_AVR32_GOTCALL:
1.1869 ++ return RS_PIC_CALL;
1.1870 ++ case R_AVR32_GOT18SW:
1.1871 ++ return RS_PIC_MCALL;
1.1872 ++ case R_AVR32_LDA_GOT:
1.1873 ++ return RS_PIC_LDA;
1.1874 ++ case R_AVR32_GOT16S:
1.1875 ++ return RS_PIC_LDW4;
1.1876 ++ case R_AVR32_CPCALL:
1.1877 ++ return RS_NOPIC_MCALL;
1.1878 ++ case R_AVR32_16_CP:
1.1879 ++ return RS_NOPIC_LDW4;
1.1880 ++ case R_AVR32_9W_CP:
1.1881 ++ return RS_NOPIC_LDDPC;
1.1882 ++ case R_AVR32_ALIGN:
1.1883 ++ return RS_ALIGN;
1.1884 ++ case R_AVR32_32_CPENT:
1.1885 ++ return RS_CPENT;
1.1886 ++ case R_AVR32_22H_PCREL:
1.1887 ++ return get_pcrel22_relax_state(abfd, sec, info, rela);
1.1888 ++ case R_AVR32_9H_PCREL:
1.1889 ++ return RS_BRC1;
1.1890 ++ default:
1.1891 ++ return RS_NONE;
1.1892 ++ }
1.1893 ++}
1.1894 ++
1.1895 ++static bfd_boolean
1.1896 ++reloc_is_cpool_ref(const Elf_Internal_Rela *rela)
1.1897 ++{
1.1898 ++ switch (ELF_R_TYPE(rela->r_info))
1.1899 ++ {
1.1900 ++ case R_AVR32_CPCALL:
1.1901 ++ case R_AVR32_16_CP:
1.1902 ++ case R_AVR32_9W_CP:
1.1903 ++ return TRUE;
1.1904 ++ default:
1.1905 ++ return FALSE;
1.1906 ++ }
1.1907 ++}
1.1908 ++
1.1909 ++static struct fragment *
1.1910 ++new_frag(bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
1.1911 ++ struct avr32_relax_data *rd, enum relax_state_id state,
1.1912 ++ Elf_Internal_Rela *rela)
1.1913 ++{
1.1914 ++ struct fragment *frag;
1.1915 ++ bfd_size_type r_size;
1.1916 ++ bfd_vma r_offset;
1.1917 ++ unsigned int i = rd->frag_count;
1.1918 ++
1.1919 ++ BFD_ASSERT(state >= RS_NONE && state < RS_MAX);
1.1920 ++
1.1921 ++ rd->frag_count++;
1.1922 ++ frag = bfd_realloc(rd->frag, sizeof(struct fragment) * rd->frag_count);
1.1923 ++ if (!frag)
1.1924 ++ return NULL;
1.1925 ++ rd->frag = frag;
1.1926 ++
1.1927 ++ frag += i;
1.1928 ++ memset(frag, 0, sizeof(struct fragment));
1.1929 ++
1.1930 ++ if (state == RS_ALIGN)
1.1931 ++ r_size = (((rela->r_offset + (1 << rela->r_addend) - 1)
1.1932 ++ & ~((1 << rela->r_addend) - 1)) - rela->r_offset);
1.1933 ++ else
1.1934 ++ r_size = relax_state[state].size;
1.1935 ++
1.1936 ++ if (rela)
1.1937 ++ r_offset = rela->r_offset;
1.1938 ++ else
1.1939 ++ r_offset = sec->size;
1.1940 ++
1.1941 ++ if (i == 0)
1.1942 ++ {
1.1943 ++ frag->offset = 0;
1.1944 ++ frag->size = r_offset + r_size;
1.1945 ++ }
1.1946 ++ else
1.1947 ++ {
1.1948 ++ frag->offset = rd->frag[i - 1].offset + rd->frag[i - 1].size;
1.1949 ++ frag->size = r_offset + r_size - frag->offset;
1.1950 ++ }
1.1951 ++
1.1952 ++ if (state != RS_CPENT)
1.1953 ++ /* Make sure we don't discard this frag */
1.1954 ++ frag->refcount = 1;
1.1955 ++
1.1956 ++ frag->initial_state = frag->state = state;
1.1957 ++ frag->rela = rela;
1.1958 ++
1.1959 ++ return frag;
1.1960 ++}
1.1961 ++
1.1962 ++static struct fragment *
1.1963 ++find_frag(asection *sec, bfd_vma offset)
1.1964 ++{
1.1965 ++ struct fragment *first, *last;
1.1966 ++ struct avr32_relax_data *rd = avr32_relax_data(sec);
1.1967 ++
1.1968 ++ if (rd->frag_count == 0)
1.1969 ++ return NULL;
1.1970 ++
1.1971 ++ first = &rd->frag[0];
1.1972 ++ last = &rd->frag[rd->frag_count - 1];
1.1973 ++
1.1974 ++ /* This may be a reloc referencing the end of a section. The last
1.1975 ++ frag will never have a reloc associated with it, so its size will
1.1976 ++ never change, thus the offset adjustment of the last frag will
1.1977 ++ always be the same as the offset adjustment of the end of the
1.1978 ++ section. */
1.1979 ++ if (offset == sec->size)
1.1980 ++ {
1.1981 ++ BFD_ASSERT(last->offset + last->size == sec->size);
1.1982 ++ BFD_ASSERT(!last->rela);
1.1983 ++ return last;
1.1984 ++ }
1.1985 ++
1.1986 ++ while (first <= last)
1.1987 ++ {
1.1988 ++ struct fragment *mid;
1.1989 ++
1.1990 ++ mid = (last - first) / 2 + first;
1.1991 ++ if ((mid->offset + mid->size) <= offset)
1.1992 ++ first = mid + 1;
1.1993 ++ else if (mid->offset > offset)
1.1994 ++ last = mid - 1;
1.1995 ++ else
1.1996 ++ return mid;
1.1997 ++ }
1.1998 ++
1.1999 ++ return NULL;
1.2000 ++}
1.2001 ++
1.2002 ++/* Look through all relocs in a section and determine if any relocs
1.2003 ++ may be affected by relaxation in other sections. If so, allocate
1.2004 ++ an array of additional relocation data which links the affected
1.2005 ++ relocations to the frag(s) where the relaxation may occur.
1.2006 ++
1.2007 ++ This function also links cpool references to cpool entries and
1.2008 ++ increments the refcount of the latter when this happens. */
1.2009 ++
1.2010 ++static bfd_boolean
1.2011 ++allocate_reloc_data(bfd *abfd, asection *sec, Elf_Internal_Rela *relocs,
1.2012 ++ struct bfd_link_info *info)
1.2013 ++{
1.2014 ++ Elf_Internal_Shdr *symtab_hdr;
1.2015 ++ Elf_Internal_Sym *isymbuf = NULL;
1.2016 ++ struct avr32_relax_data *rd;
1.2017 ++ unsigned int i;
1.2018 ++ bfd_boolean ret = FALSE;
1.2019 ++
1.2020 ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
1.2021 ++ rd = avr32_relax_data(sec);
1.2022 ++
1.2023 ++ RDBG("%s<%s>: allocate_reloc_data\n", abfd->filename, sec->name);
1.2024 ++
1.2025 ++ for (i = 0; i < sec->reloc_count; i++)
1.2026 ++ {
1.2027 ++ Elf_Internal_Rela *rel = &relocs[i];
1.2028 ++ asection *sym_sec;
1.2029 ++ unsigned long r_symndx;
1.2030 ++ bfd_vma sym_value;
1.2031 ++
1.2032 ++ if (!rel->r_addend && ELF_R_TYPE(rel->r_info) != R_AVR32_DIFF32
1.2033 ++ && !reloc_is_cpool_ref(rel))
1.2034 ++ continue;
1.2035 ++
1.2036 ++ r_symndx = ELF_R_SYM(rel->r_info);
1.2037 ++
1.2038 ++ if (r_symndx < symtab_hdr->sh_info)
1.2039 ++ {
1.2040 ++ Elf_Internal_Sym *isym;
1.2041 ++
1.2042 ++ if (!isymbuf)
1.2043 ++ isymbuf = retrieve_local_syms(abfd, info->keep_memory);
1.2044 ++ if (!isymbuf)
1.2045 ++ return FALSE;
1.2046 ++
1.2047 ++ isym = &isymbuf[r_symndx];
1.2048 ++ sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
1.2049 ++ sym_value = isym->st_value;
1.2050 ++ }
1.2051 ++ else
1.2052 ++ {
1.2053 ++ struct elf_link_hash_entry *h;
1.2054 ++
1.2055 ++ h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
1.2056 ++
1.2057 ++ while (h->root.type == bfd_link_hash_indirect
1.2058 ++ || h->root.type == bfd_link_hash_warning)
1.2059 ++ h = (struct elf_link_hash_entry *)h->root.u.i.link;
1.2060 ++
1.2061 ++ if (h->root.type != bfd_link_hash_defined
1.2062 ++ && h->root.type != bfd_link_hash_defweak)
1.2063 ++ continue;
1.2064 ++
1.2065 ++ sym_sec = h->root.u.def.section;
1.2066 ++ sym_value = h->root.u.def.value;
1.2067 ++ }
1.2068 ++
1.2069 ++ if (sym_sec && avr32_relax_data(sym_sec)->is_relaxable)
1.2070 ++ {
1.2071 ++ bfd_size_type size;
1.2072 ++ struct fragment *frag;
1.2073 ++
1.2074 ++ if (!rd->reloc_data)
1.2075 ++ {
1.2076 ++ size = sizeof(struct avr32_reloc_data) * sec->reloc_count;
1.2077 ++ rd->reloc_data = bfd_zalloc(abfd, size);
1.2078 ++ if (!rd->reloc_data)
1.2079 ++ goto out;
1.2080 ++ }
1.2081 ++
1.2082 ++ RDBG("[%3d] 0x%04lx: target: 0x%lx + 0x%lx",
1.2083 ++ i, rel->r_offset, sym_value, rel->r_addend);
1.2084 ++
1.2085 ++ frag = find_frag(sym_sec, sym_value + rel->r_addend);
1.2086 ++ BFD_ASSERT(frag);
1.2087 ++ rd->reloc_data[i].add_frag = frag;
1.2088 ++
1.2089 ++ RDBG(" -> %s<%s>:%04lx\n", sym_sec->owner->filename, sym_sec->name,
1.2090 ++ frag->rela ? frag->rela->r_offset : sym_sec->size);
1.2091 ++
1.2092 ++ if (reloc_is_cpool_ref(rel))
1.2093 ++ {
1.2094 ++ BFD_ASSERT(ELF_R_TYPE(frag->rela->r_info) == R_AVR32_32_CPENT);
1.2095 ++ frag->refcount++;
1.2096 ++ }
1.2097 ++
1.2098 ++ if (ELF_R_TYPE(rel->r_info) == R_AVR32_DIFF32)
1.2099 ++ {
1.2100 ++ bfd_byte *contents;
1.2101 ++ bfd_signed_vma diff;
1.2102 ++
1.2103 ++ contents = retrieve_contents(abfd, sec, info->keep_memory);
1.2104 ++ if (!contents)
1.2105 ++ goto out;
1.2106 ++
1.2107 ++ diff = bfd_get_signed_32(abfd, contents + rel->r_offset);
1.2108 ++ frag = find_frag(sym_sec, sym_value + rel->r_addend + diff);
1.2109 ++ BFD_ASSERT(frag);
1.2110 ++ rd->reloc_data[i].sub_frag = frag;
1.2111 ++
1.2112 ++ release_contents(sec, contents);
1.2113 ++ }
1.2114 ++ }
1.2115 ++ }
1.2116 ++
1.2117 ++ ret = TRUE;
1.2118 ++
1.2119 ++ out:
1.2120 ++ release_local_syms(abfd, isymbuf);
1.2121 ++ return ret;
1.2122 ++}
1.2123 ++
1.2124 ++static bfd_boolean
1.2125 ++global_sym_set_frag(struct elf_avr32_link_hash_entry *havr,
1.2126 ++ struct bfd_link_info *info ATTRIBUTE_UNUSED)
1.2127 ++{
1.2128 ++ struct fragment *frag;
1.2129 ++ asection *sec;
1.2130 ++
1.2131 ++ if (havr->root.root.type != bfd_link_hash_defined
1.2132 ++ && havr->root.root.type != bfd_link_hash_defweak)
1.2133 ++ return TRUE;
1.2134 ++
1.2135 ++ sec = havr->root.root.u.def.section;
1.2136 ++ if (bfd_is_const_section(sec)
1.2137 ++ || !avr32_relax_data(sec)->is_relaxable)
1.2138 ++ return TRUE;
1.2139 ++
1.2140 ++ frag = find_frag(sec, havr->root.root.u.def.value);
1.2141 ++ if (!frag)
1.2142 ++ {
1.2143 ++ unsigned int i;
1.2144 ++ struct avr32_relax_data *rd = avr32_relax_data(sec);
1.2145 ++
1.2146 ++ RDBG("In %s: No frag for %s <%s+%lu> (limit %lu)\n",
1.2147 ++ sec->owner->filename, havr->root.root.root.string,
1.2148 ++ sec->name, havr->root.root.u.def.value, sec->size);
1.2149 ++ for (i = 0; i < rd->frag_count; i++)
1.2150 ++ RDBG(" %8lu - %8lu\n", rd->frag[i].offset,
1.2151 ++ rd->frag[i].offset + rd->frag[i].size);
1.2152 ++ }
1.2153 ++ BFD_ASSERT(frag);
1.2154 ++
1.2155 ++ havr->sym_frag = frag;
1.2156 ++ return TRUE;
1.2157 ++}
1.2158 ++
1.2159 ++static bfd_boolean
1.2160 ++analyze_relocations(struct bfd_link_info *info)
1.2161 ++{
1.2162 ++ bfd *abfd;
1.2163 ++ asection *sec;
1.2164 ++
1.2165 ++ /* Divide all relaxable sections into fragments */
1.2166 ++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
1.2167 ++ {
1.2168 ++ if (!(elf_elfheader(abfd)->e_flags & EF_AVR32_LINKRELAX))
1.2169 ++ {
1.2170 ++ if (!(*info->callbacks->warning)
1.2171 ++ (info, _("input is not relaxable"), NULL, abfd, NULL, 0))
1.2172 ++ return FALSE;
1.2173 ++ continue;
1.2174 ++ }
1.2175 ++
1.2176 ++ for (sec = abfd->sections; sec; sec = sec->next)
1.2177 ++ {
1.2178 ++ struct avr32_relax_data *rd;
1.2179 ++ struct fragment *frag;
1.2180 ++ Elf_Internal_Rela *relocs;
1.2181 ++ unsigned int i;
1.2182 ++ bfd_boolean ret = TRUE;
1.2183 ++
1.2184 ++ if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
1.2185 ++ continue;
1.2186 ++
1.2187 ++ rd = avr32_relax_data(sec);
1.2188 ++
1.2189 ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
1.2190 ++ if (!relocs)
1.2191 ++ return FALSE;
1.2192 ++
1.2193 ++ qsort(relocs, sec->reloc_count, sizeof(Elf_Internal_Rela),
1.2194 ++ internal_reloc_compare);
1.2195 ++
1.2196 ++ for (i = 0; i < sec->reloc_count; i++)
1.2197 ++ {
1.2198 ++ enum relax_state_id state;
1.2199 ++
1.2200 ++ ret = FALSE;
1.2201 ++ state = get_initial_relax_state(abfd, sec, info, &relocs[i]);
1.2202 ++ if (state == RS_ERROR)
1.2203 ++ break;
1.2204 ++
1.2205 ++ if (state)
1.2206 ++ {
1.2207 ++ frag = new_frag(abfd, sec, rd, state, &relocs[i]);
1.2208 ++ if (!frag)
1.2209 ++ break;
1.2210 ++
1.2211 ++ pin_internal_relocs(sec, relocs);
1.2212 ++ rd->is_relaxable = TRUE;
1.2213 ++ }
1.2214 ++
1.2215 ++ ret = TRUE;
1.2216 ++ }
1.2217 ++
1.2218 ++ release_internal_relocs(sec, relocs);
1.2219 ++ if (!ret)
1.2220 ++ return ret;
1.2221 ++
1.2222 ++ if (rd->is_relaxable)
1.2223 ++ {
1.2224 ++ frag = new_frag(abfd, sec, rd, RS_NONE, NULL);
1.2225 ++ if (!frag)
1.2226 ++ return FALSE;
1.2227 ++ }
1.2228 ++ }
1.2229 ++ }
1.2230 ++
1.2231 ++ /* Link each global symbol to the fragment where it's defined. */
1.2232 ++ elf_link_hash_traverse(elf_hash_table(info), global_sym_set_frag, info);
1.2233 ++
1.2234 ++ /* Do the same for local symbols. */
1.2235 ++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
1.2236 ++ {
1.2237 ++ Elf_Internal_Sym *isymbuf, *isym;
1.2238 ++ struct fragment **local_sym_frag;
1.2239 ++ unsigned int i, sym_count;
1.2240 ++
1.2241 ++ sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
1.2242 ++ if (sym_count == 0)
1.2243 ++ continue;
1.2244 ++
1.2245 ++ local_sym_frag = bfd_zalloc(abfd, sym_count * sizeof(struct fragment *));
1.2246 ++ if (!local_sym_frag)
1.2247 ++ return FALSE;
1.2248 ++ elf_tdata(abfd)->local_sym_frag = local_sym_frag;
1.2249 ++
1.2250 ++ isymbuf = retrieve_local_syms(abfd, info->keep_memory);
1.2251 ++ if (!isymbuf)
1.2252 ++ return FALSE;
1.2253 ++
1.2254 ++ for (i = 0; i < sym_count; i++)
1.2255 ++ {
1.2256 ++ struct avr32_relax_data *rd;
1.2257 ++ struct fragment *frag;
1.2258 ++ asection *sec;
1.2259 ++
1.2260 ++ isym = &isymbuf[i];
1.2261 ++
1.2262 ++ sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
1.2263 ++ if (!sec)
1.2264 ++ continue;
1.2265 ++
1.2266 ++ rd = avr32_relax_data(sec);
1.2267 ++ if (!rd->is_relaxable)
1.2268 ++ continue;
1.2269 ++
1.2270 ++ frag = find_frag(sec, isym->st_value);
1.2271 ++ BFD_ASSERT(frag);
1.2272 ++
1.2273 ++ local_sym_frag[i] = frag;
1.2274 ++ }
1.2275 ++
1.2276 ++ release_local_syms(abfd, isymbuf);
1.2277 ++ }
1.2278 ++
1.2279 ++ /* And again for relocs with addends and constant pool references */
1.2280 ++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
1.2281 ++ for (sec = abfd->sections; sec; sec = sec->next)
1.2282 ++ {
1.2283 ++ Elf_Internal_Rela *relocs;
1.2284 ++ bfd_boolean ret;
1.2285 ++
1.2286 ++ if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
1.2287 ++ continue;
1.2288 ++
1.2289 ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
1.2290 ++ if (!relocs)
1.2291 ++ return FALSE;
1.2292 ++
1.2293 ++ ret = allocate_reloc_data(abfd, sec, relocs, info);
1.2294 ++
1.2295 ++ release_internal_relocs(sec, relocs);
1.2296 ++ if (ret == FALSE)
1.2297 ++ return ret;
1.2298 ++ }
1.2299 ++
1.2300 ++ return TRUE;
1.2301 ++}
1.2302 ++
1.2303 ++static bfd_boolean
1.2304 ++rs_is_good_enough(const struct relax_state *rs, struct fragment *frag,
1.2305 ++ bfd_vma symval, bfd_vma addr, struct got_entry *got,
1.2306 ++ struct avr32_reloc_data *ind_data,
1.2307 ++ bfd_signed_vma offset_adjust)
1.2308 ++{
1.2309 ++ bfd_signed_vma target = 0;
1.2310 ++
1.2311 ++ switch (rs->reftype)
1.2312 ++ {
1.2313 ++ case REF_ABSOLUTE:
1.2314 ++ target = symval;
1.2315 ++ break;
1.2316 ++ case REF_PCREL:
1.2317 ++ target = symval - addr;
1.2318 ++ break;
1.2319 ++ case REF_CPOOL:
1.2320 ++ /* cpool frags are always in the same section and always after
1.2321 ++ all frags referring to it. So it's always correct to add in
1.2322 ++ offset_adjust here. */
1.2323 ++ target = (ind_data->add_frag->offset + ind_data->add_frag->offset_adjust
1.2324 ++ + offset_adjust - frag->offset - frag->offset_adjust);
1.2325 ++ break;
1.2326 ++ case REF_GOT:
1.2327 ++ target = got->offset;
1.2328 ++ break;
1.2329 ++ default:
1.2330 ++ abort();
1.2331 ++ }
1.2332 ++
1.2333 ++ if (target >= rs->range_min && target <= rs->range_max)
1.2334 ++ return TRUE;
1.2335 ++ else
1.2336 ++ return FALSE;
1.2337 ++}
1.2338 ++
1.2339 ++static bfd_boolean
1.2340 ++avr32_size_frags(bfd *abfd, asection *sec, struct bfd_link_info *info)
1.2341 ++{
1.2342 ++ struct elf_avr32_link_hash_table *htab;
1.2343 ++ struct avr32_relax_data *rd;
1.2344 ++ Elf_Internal_Shdr *symtab_hdr;
1.2345 ++ Elf_Internal_Rela *relocs = NULL;
1.2346 ++ Elf_Internal_Sym *isymbuf = NULL;
1.2347 ++ struct got_entry **local_got_ents;
1.2348 ++ struct fragment **local_sym_frag;
1.2349 ++ bfd_boolean ret = FALSE;
1.2350 ++ bfd_signed_vma delta = 0;
1.2351 ++ unsigned int i;
1.2352 ++
1.2353 ++ htab = avr32_elf_hash_table(info);
1.2354 ++ rd = avr32_relax_data(sec);
1.2355 ++
1.2356 ++ if (sec == htab->sgot)
1.2357 ++ {
1.2358 ++ RDBG("Relaxing GOT section (vma: 0x%lx)\n",
1.2359 ++ sec->output_section->vma + sec->output_offset);
1.2360 ++ if (assign_got_offsets(htab))
1.2361 ++ htab->repeat_pass = TRUE;
1.2362 ++ return TRUE;
1.2363 ++ }
1.2364 ++
1.2365 ++ if (!rd->is_relaxable)
1.2366 ++ return TRUE;
1.2367 ++
1.2368 ++ if (!sec->rawsize)
1.2369 ++ sec->rawsize = sec->size;
1.2370 ++
1.2371 ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
1.2372 ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
1.2373 ++ if (!relocs)
1.2374 ++ goto out;
1.2375 ++
1.2376 ++ isymbuf = retrieve_local_syms(abfd, info->keep_memory);
1.2377 ++ if (!isymbuf)
1.2378 ++ goto out;
1.2379 ++
1.2380 ++ local_got_ents = elf_local_got_ents(abfd);
1.2381 ++ local_sym_frag = elf_tdata(abfd)->local_sym_frag;
1.2382 ++
1.2383 ++ RDBG("size_frags: %s<%s>\n vma: 0x%08lx, size: 0x%08lx\n",
1.2384 ++ abfd->filename, sec->name,
1.2385 ++ sec->output_section->vma + sec->output_offset, sec->size);
1.2386 ++
1.2387 ++ for (i = 0; i < rd->frag_count; i++)
1.2388 ++ {
1.2389 ++ struct fragment *frag = &rd->frag[i];
1.2390 ++ struct avr32_reloc_data *r_data = NULL, *ind_data = NULL;
1.2391 ++ const struct relax_state *state, *next_state;
1.2392 ++ struct fragment *target_frag = NULL;
1.2393 ++ asection *sym_sec = NULL;
1.2394 ++ Elf_Internal_Rela *rela;
1.2395 ++ struct got_entry *got;
1.2396 ++ bfd_vma symval, r_offset, addend, addr;
1.2397 ++ bfd_signed_vma size_adjust = 0, distance;
1.2398 ++ unsigned long r_symndx;
1.2399 ++ bfd_boolean defined = TRUE, dynamic = FALSE;
1.2400 ++ unsigned char sym_type;
1.2401 ++
1.2402 ++ frag->offset_adjust += delta;
1.2403 ++ state = next_state = &relax_state[frag->state];
1.2404 ++ rela = frag->rela;
1.2405 ++
1.2406 ++ BFD_ASSERT(state->id == frag->state);
1.2407 ++
1.2408 ++ RDBG(" 0x%04lx%c%d: %s [size %ld]", rela ? rela->r_offset : sec->rawsize,
1.2409 ++ (frag->offset_adjust < 0)?'-':'+',
1.2410 ++ abs(frag->offset_adjust), state->name, state->size);
1.2411 ++
1.2412 ++ if (!rela)
1.2413 ++ {
1.2414 ++ RDBG(": no reloc, ignoring\n");
1.2415 ++ continue;
1.2416 ++ }
1.2417 ++
1.2418 ++ BFD_ASSERT((unsigned int)(rela - relocs) < sec->reloc_count);
1.2419 ++ BFD_ASSERT(state != RS_NONE);
1.2420 ++
1.2421 ++ r_offset = rela->r_offset + frag->offset_adjust;
1.2422 ++ addr = sec->output_section->vma + sec->output_offset + r_offset;
1.2423 ++
1.2424 ++ switch (frag->state)
1.2425 ++ {
1.2426 ++ case RS_ALIGN:
1.2427 ++ size_adjust = ((addr + (1 << rela->r_addend) - 1)
1.2428 ++ & ~((1 << rela->r_addend) - 1));
1.2429 ++ size_adjust -= (sec->output_section->vma + sec->output_offset
1.2430 ++ + frag->offset + frag->offset_adjust
1.2431 ++ + frag->size + frag->size_adjust);
1.2432 ++
1.2433 ++ RDBG(": adjusting size %lu -> %lu\n", frag->size + frag->size_adjust,
1.2434 ++ frag->size + frag->size_adjust + size_adjust);
1.2435 ++ break;
1.2436 ++
1.2437 ++ case RS_CPENT:
1.2438 ++ if (frag->refcount == 0 && frag->size_adjust == 0)
1.2439 ++ {
1.2440 ++ RDBG(": discarding frag\n");
1.2441 ++ size_adjust = -4;
1.2442 ++ }
1.2443 ++ else if (frag->refcount > 0 && frag->size_adjust < 0)
1.2444 ++ {
1.2445 ++ RDBG(": un-discarding frag\n");
1.2446 ++ size_adjust = 4;
1.2447 ++ }
1.2448 ++ break;
1.2449 ++
1.2450 ++ default:
1.2451 ++ if (rd->reloc_data)
1.2452 ++ r_data = &rd->reloc_data[frag->rela - relocs];
1.2453 ++
1.2454 ++ /* If this is a cpool reference, we want the symbol that the
1.2455 ++ cpool entry refers to, not the symbol for the cpool entry
1.2456 ++ itself, as we already know what frag it's in. */
1.2457 ++ if (relax_state[frag->initial_state].reftype == REF_CPOOL)
1.2458 ++ {
1.2459 ++ Elf_Internal_Rela *irela = r_data->add_frag->rela;
1.2460 ++
1.2461 ++ r_symndx = ELF_R_SYM(irela->r_info);
1.2462 ++ addend = irela->r_addend;
1.2463 ++
1.2464 ++ /* The constant pool must be in the same section as the
1.2465 ++ reloc referring to it. */
1.2466 ++ BFD_ASSERT((unsigned long)(irela - relocs) < sec->reloc_count);
1.2467 ++
1.2468 ++ ind_data = r_data;
1.2469 ++ r_data = &rd->reloc_data[irela - relocs];
1.2470 ++ }
1.2471 ++ else
1.2472 ++ {
1.2473 ++ r_symndx = ELF_R_SYM(rela->r_info);
1.2474 ++ addend = rela->r_addend;
1.2475 ++ }
1.2476 ++
1.2477 ++ /* Get the value of the symbol referred to by the reloc. */
1.2478 ++ if (r_symndx < symtab_hdr->sh_info)
1.2479 ++ {
1.2480 ++ Elf_Internal_Sym *isym;
1.2481 ++
1.2482 ++ isym = isymbuf + r_symndx;
1.2483 ++ symval = 0;
1.2484 ++
1.2485 ++ RDBG(" local sym %lu: ", r_symndx);
1.2486 ++
1.2487 ++ if (isym->st_shndx == SHN_UNDEF)
1.2488 ++ defined = FALSE;
1.2489 ++ else if (isym->st_shndx == SHN_ABS)
1.2490 ++ sym_sec = bfd_abs_section_ptr;
1.2491 ++ else if (isym->st_shndx == SHN_COMMON)
1.2492 ++ sym_sec = bfd_com_section_ptr;
1.2493 ++ else
1.2494 ++ sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
1.2495 ++
1.2496 ++ symval = isym->st_value;
1.2497 ++ sym_type = ELF_ST_TYPE(isym->st_info);
1.2498 ++ target_frag = local_sym_frag[r_symndx];
1.2499 ++
1.2500 ++ if (local_got_ents)
1.2501 ++ got = local_got_ents[r_symndx];
1.2502 ++ else
1.2503 ++ got = NULL;
1.2504 ++ }
1.2505 ++ else
1.2506 ++ {
1.2507 ++ /* Global symbol */
1.2508 ++ unsigned long index;
1.2509 ++ struct elf_link_hash_entry *h;
1.2510 ++ struct elf_avr32_link_hash_entry *havr;
1.2511 ++
1.2512 ++ index = r_symndx - symtab_hdr->sh_info;
1.2513 ++ h = elf_sym_hashes(abfd)[index];
1.2514 ++ BFD_ASSERT(h != NULL);
1.2515 ++
1.2516 ++ while (h->root.type == bfd_link_hash_indirect
1.2517 ++ || h->root.type == bfd_link_hash_warning)
1.2518 ++ h = (struct elf_link_hash_entry *)h->root.u.i.link;
1.2519 ++
1.2520 ++ havr = (struct elf_avr32_link_hash_entry *)h;
1.2521 ++ got = h->got.glist;
1.2522 ++
1.2523 ++ symval = 0;
1.2524 ++
1.2525 ++ RDBG(" %s: ", h->root.root.string);
1.2526 ++
1.2527 ++ if (h->root.type != bfd_link_hash_defined
1.2528 ++ && h->root.type != bfd_link_hash_defweak)
1.2529 ++ {
1.2530 ++ RDBG("(undef)");
1.2531 ++ defined = FALSE;
1.2532 ++ }
1.2533 ++ else if ((info->shared && !info->symbolic && h->dynindx != -1)
1.2534 ++ || (htab->root.dynamic_sections_created
1.2535 ++ && h->def_dynamic && !h->def_regular))
1.2536 ++ {
1.2537 ++ RDBG("(dynamic)");
1.2538 ++ dynamic = TRUE;
1.2539 ++ sym_sec = h->root.u.def.section;
1.2540 ++ }
1.2541 ++ else
1.2542 ++ {
1.2543 ++ sym_sec = h->root.u.def.section;
1.2544 ++ symval = h->root.u.def.value;
1.2545 ++ target_frag = havr->sym_frag;
1.2546 ++ }
1.2547 ++
1.2548 ++ sym_type = h->type;
1.2549 ++ }
1.2550 ++
1.2551 ++ /* Thanks to elf32-ppc for this one. */
1.2552 ++ if (sym_sec && sym_sec->sec_info_type == ELF_INFO_TYPE_MERGE)
1.2553 ++ {
1.2554 ++ /* At this stage in linking, no SEC_MERGE symbol has been
1.2555 ++ adjusted, so all references to such symbols need to be
1.2556 ++ passed through _bfd_merged_section_offset. (Later, in
1.2557 ++ relocate_section, all SEC_MERGE symbols *except* for
1.2558 ++ section symbols have been adjusted.)
1.2559 ++
1.2560 ++ SEC_MERGE sections are not relaxed by us, as they
1.2561 ++ shouldn't contain any code. */
1.2562 ++
1.2563 ++ BFD_ASSERT(!target_frag && !(r_data && r_data->add_frag));
1.2564 ++
1.2565 ++ /* gas may reduce relocations against symbols in SEC_MERGE
1.2566 ++ sections to a relocation against the section symbol when
1.2567 ++ the original addend was zero. When the reloc is against
1.2568 ++ a section symbol we should include the addend in the
1.2569 ++ offset passed to _bfd_merged_section_offset, since the
1.2570 ++ location of interest is the original symbol. On the
1.2571 ++ other hand, an access to "sym+addend" where "sym" is not
1.2572 ++ a section symbol should not include the addend; Such an
1.2573 ++ access is presumed to be an offset from "sym"; The
1.2574 ++ location of interest is just "sym". */
1.2575 ++ RDBG("\n MERGE: %s: 0x%lx+0x%lx+0x%lx -> ",
1.2576 ++ (sym_type == STT_SECTION)?"section":"not section",
1.2577 ++ sym_sec->output_section->vma + sym_sec->output_offset,
1.2578 ++ symval, addend);
1.2579 ++
1.2580 ++ if (sym_type == STT_SECTION)
1.2581 ++ symval += addend;
1.2582 ++
1.2583 ++ symval = (_bfd_merged_section_offset
1.2584 ++ (abfd, &sym_sec,
1.2585 ++ elf_section_data(sym_sec)->sec_info, symval));
1.2586 ++
1.2587 ++ if (sym_type != STT_SECTION)
1.2588 ++ symval += addend;
1.2589 ++ }
1.2590 ++ else
1.2591 ++ symval += addend;
1.2592 ++
1.2593 ++ if (defined && !dynamic)
1.2594 ++ {
1.2595 ++ RDBG("0x%lx+0x%lx",
1.2596 ++ sym_sec->output_section->vma + sym_sec->output_offset,
1.2597 ++ symval);
1.2598 ++ symval += sym_sec->output_section->vma + sym_sec->output_offset;
1.2599 ++ }
1.2600 ++
1.2601 ++ if (r_data && r_data->add_frag)
1.2602 ++ /* If the add_frag pointer is set, it means that this reloc
1.2603 ++ has an addend that may be affected by relaxation. */
1.2604 ++ target_frag = r_data->add_frag;
1.2605 ++
1.2606 ++ if (target_frag)
1.2607 ++ {
1.2608 ++ symval += target_frag->offset_adjust;
1.2609 ++
1.2610 ++ /* If target_frag comes after this frag in the same
1.2611 ++ section, we should assume that it will be moved by
1.2612 ++ the same amount we are. */
1.2613 ++ if ((target_frag - rd->frag) < (int)rd->frag_count
1.2614 ++ && target_frag > frag)
1.2615 ++ symval += delta;
1.2616 ++ }
1.2617 ++
1.2618 ++ distance = symval - addr;
1.2619 ++
1.2620 ++ /* First, try to make a direct reference. If the symbol is
1.2621 ++ dynamic or undefined, we must take care not to change its
1.2622 ++ reference type, that is, we can't make it direct.
1.2623 ++
1.2624 ++ Also, it seems like some sections may actually be resized
1.2625 ++ after the relaxation code is done, so we can't really
1.2626 ++ trust that our "distance" is correct. There's really no
1.2627 ++ easy solution to this problem, so we'll just disallow
1.2628 ++ direct references to SEC_DATA sections.
1.2629 ++
1.2630 ++ Oh, and .bss isn't actually SEC_DATA, so we disallow
1.2631 ++ !SEC_HAS_CONTENTS as well. */
1.2632 ++ if (!dynamic && defined
1.2633 ++ && (htab->direct_data_refs
1.2634 ++ || (!(sym_sec->flags & SEC_DATA)
1.2635 ++ && (sym_sec->flags & SEC_HAS_CONTENTS)))
1.2636 ++ && next_state->direct)
1.2637 ++ {
1.2638 ++ next_state = &relax_state[next_state->direct];
1.2639 ++ RDBG(" D-> %s", next_state->name);
1.2640 ++ }
1.2641 ++
1.2642 ++ /* Iterate backwards until we find a state that fits. */
1.2643 ++ while (next_state->prev
1.2644 ++ && !rs_is_good_enough(next_state, frag, symval, addr,
1.2645 ++ got, ind_data, delta))
1.2646 ++ {
1.2647 ++ next_state = &relax_state[next_state->prev];
1.2648 ++ RDBG(" P-> %s", next_state->name);
1.2649 ++ }
1.2650 ++
1.2651 ++ /* Then try to find the best possible state. */
1.2652 ++ while (next_state->next)
1.2653 ++ {
1.2654 ++ const struct relax_state *candidate;
1.2655 ++
1.2656 ++ candidate = &relax_state[next_state->next];
1.2657 ++ if (!rs_is_good_enough(candidate, frag, symval, addr, got,
1.2658 ++ ind_data, delta))
1.2659 ++ break;
1.2660 ++
1.2661 ++ next_state = candidate;
1.2662 ++ RDBG(" N-> %s", next_state->name);
1.2663 ++ }
1.2664 ++
1.2665 ++ RDBG(" [size %ld]\n", next_state->size);
1.2666 ++
1.2667 ++ BFD_ASSERT(next_state->id);
1.2668 ++ BFD_ASSERT(!dynamic || next_state->reftype == REF_GOT);
1.2669 ++
1.2670 ++ size_adjust = next_state->size - state->size;
1.2671 ++
1.2672 ++ /* There's a theoretical possibility that shrinking one frag
1.2673 ++ may cause another to grow, which may cause the first one to
1.2674 ++ grow as well, and we're back where we started. Avoid this
1.2675 ++ scenario by disallowing a frag that has grown to ever
1.2676 ++ shrink again. */
1.2677 ++ if (state->reftype == REF_GOT && next_state->reftype != REF_GOT)
1.2678 ++ {
1.2679 ++ if (frag->has_grown)
1.2680 ++ next_state = state;
1.2681 ++ else
1.2682 ++ unref_got_entry(htab, got);
1.2683 ++ }
1.2684 ++ else if (state->reftype != REF_GOT && next_state->reftype == REF_GOT)
1.2685 ++ {
1.2686 ++ ref_got_entry(htab, got);
1.2687 ++ frag->has_grown = TRUE;
1.2688 ++ }
1.2689 ++ else if (state->reftype == REF_CPOOL
1.2690 ++ && next_state->reftype != REF_CPOOL)
1.2691 ++ {
1.2692 ++ if (frag->has_grown)
1.2693 ++ next_state = state;
1.2694 ++ else
1.2695 ++ ind_data->add_frag->refcount--;
1.2696 ++ }
1.2697 ++ else if (state->reftype != REF_CPOOL
1.2698 ++ && next_state->reftype == REF_CPOOL)
1.2699 ++ {
1.2700 ++ ind_data->add_frag->refcount++;
1.2701 ++ frag->has_grown = TRUE;
1.2702 ++ }
1.2703 ++ else
1.2704 ++ {
1.2705 ++ if (frag->has_grown && size_adjust < 0)
1.2706 ++ next_state = state;
1.2707 ++ else if (size_adjust > 0)
1.2708 ++ frag->has_grown = TRUE;
1.2709 ++ }
1.2710 ++
1.2711 ++ size_adjust = next_state->size - state->size;
1.2712 ++ frag->state = next_state->id;
1.2713 ++
1.2714 ++ break;
1.2715 ++ }
1.2716 ++
1.2717 ++ if (size_adjust)
1.2718 ++ htab->repeat_pass = TRUE;
1.2719 ++
1.2720 ++ frag->size_adjust += size_adjust;
1.2721 ++ sec->size += size_adjust;
1.2722 ++ delta += size_adjust;
1.2723 ++
1.2724 ++ BFD_ASSERT((frag->offset + frag->offset_adjust
1.2725 ++ + frag->size + frag->size_adjust)
1.2726 ++ == (frag[1].offset + frag[1].offset_adjust + delta));
1.2727 ++ }
1.2728 ++
1.2729 ++ ret = TRUE;
1.2730 ++
1.2731 ++ out:
1.2732 ++ release_local_syms(abfd, isymbuf);
1.2733 ++ release_internal_relocs(sec, relocs);
1.2734 ++ return ret;
1.2735 ++}
1.2736 ++
1.2737 ++static bfd_boolean
1.2738 ++adjust_global_symbol(struct elf_avr32_link_hash_entry *havr,
1.2739 ++ struct bfd_link_info *info ATTRIBUTE_UNUSED)
1.2740 ++{
1.2741 ++ struct elf_link_hash_entry *h = &havr->root;
1.2742 ++
1.2743 ++ if (havr->sym_frag && (h->root.type == bfd_link_hash_defined
1.2744 ++ || h->root.type == bfd_link_hash_defweak))
1.2745 ++ {
1.2746 ++ RDBG("adjust_global_symbol: %s 0x%08lx -> 0x%08lx\n",
1.2747 ++ h->root.root.string, h->root.u.def.value,
1.2748 ++ h->root.u.def.value + havr->sym_frag->offset_adjust);
1.2749 ++ h->root.u.def.value += havr->sym_frag->offset_adjust;
1.2750 ++ }
1.2751 ++ return TRUE;
1.2752 ++}
1.2753 ++
1.2754 ++static bfd_boolean
1.2755 ++adjust_syms(struct bfd_link_info *info)
1.2756 ++{
1.2757 ++ struct elf_avr32_link_hash_table *htab;
1.2758 ++ bfd *abfd;
1.2759 ++
1.2760 ++ htab = avr32_elf_hash_table(info);
1.2761 ++ elf_link_hash_traverse(&htab->root, adjust_global_symbol, info);
1.2762 ++
1.2763 ++ for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
1.2764 ++ {
1.2765 ++ Elf_Internal_Sym *isymbuf;
1.2766 ++ struct fragment **local_sym_frag, *frag;
1.2767 ++ unsigned int i, sym_count;
1.2768 ++
1.2769 ++ sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
1.2770 ++ if (sym_count == 0)
1.2771 ++ continue;
1.2772 ++
1.2773 ++ isymbuf = retrieve_local_syms(abfd, info->keep_memory);
1.2774 ++ if (!isymbuf)
1.2775 ++ return FALSE;
1.2776 ++
1.2777 ++ local_sym_frag = elf_tdata(abfd)->local_sym_frag;
1.2778 ++
1.2779 ++ for (i = 0; i < sym_count; i++)
1.2780 ++ {
1.2781 ++ frag = local_sym_frag[i];
1.2782 ++ if (frag)
1.2783 ++ {
1.2784 ++ RDBG("adjust_local_symbol: %s[%u] 0x%08lx -> 0x%08lx\n",
1.2785 ++ abfd->filename, i, isymbuf[i].st_value,
1.2786 ++ isymbuf[i].st_value + frag->offset_adjust);
1.2787 ++ isymbuf[i].st_value += frag->offset_adjust;
1.2788 ++ }
1.2789 ++ }
1.2790 ++
1.2791 ++ release_local_syms(abfd, isymbuf);
1.2792 ++ }
1.2793 ++
1.2794 ++ htab->symbols_adjusted = TRUE;
1.2795 ++ return TRUE;
1.2796 ++}
1.2797 ++
1.2798 ++static bfd_boolean
1.2799 ++adjust_relocs(bfd *abfd, asection *sec, struct bfd_link_info *info)
1.2800 ++{
1.2801 ++ struct avr32_relax_data *rd;
1.2802 ++ Elf_Internal_Rela *relocs;
1.2803 ++ Elf_Internal_Shdr *symtab_hdr;
1.2804 ++ unsigned int i;
1.2805 ++ bfd_boolean ret = FALSE;
1.2806 ++
1.2807 ++ rd = avr32_relax_data(sec);
1.2808 ++ if (!rd->reloc_data)
1.2809 ++ return TRUE;
1.2810 ++
1.2811 ++ RDBG("adjust_relocs: %s<%s> (count: %u)\n", abfd->filename, sec->name,
1.2812 ++ sec->reloc_count);
1.2813 ++
1.2814 ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
1.2815 ++ if (!relocs)
1.2816 ++ return FALSE;
1.2817 ++
1.2818 ++ symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
1.2819 ++
1.2820 ++ for (i = 0; i < sec->reloc_count; i++)
1.2821 ++ {
1.2822 ++ Elf_Internal_Rela *rela = &relocs[i];
1.2823 ++ struct avr32_reloc_data *r_data = &rd->reloc_data[i];
1.2824 ++ struct fragment *sym_frag;
1.2825 ++ unsigned long r_symndx;
1.2826 ++
1.2827 ++ if (r_data->add_frag)
1.2828 ++ {
1.2829 ++ r_symndx = ELF_R_SYM(rela->r_info);
1.2830 ++
1.2831 ++ if (r_symndx < symtab_hdr->sh_info)
1.2832 ++ sym_frag = elf_tdata(abfd)->local_sym_frag[r_symndx];
1.2833 ++ else
1.2834 ++ {
1.2835 ++ struct elf_link_hash_entry *h;
1.2836 ++
1.2837 ++ h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
1.2838 ++
1.2839 ++ while (h->root.type == bfd_link_hash_indirect
1.2840 ++ || h->root.type == bfd_link_hash_warning)
1.2841 ++ h = (struct elf_link_hash_entry *)h->root.u.i.link;
1.2842 ++
1.2843 ++ BFD_ASSERT(h->root.type == bfd_link_hash_defined
1.2844 ++ || h->root.type == bfd_link_hash_defweak);
1.2845 ++
1.2846 ++ sym_frag = ((struct elf_avr32_link_hash_entry *)h)->sym_frag;
1.2847 ++ }
1.2848 ++
1.2849 ++ RDBG(" addend: 0x%08lx -> 0x%08lx\n",
1.2850 ++ rela->r_addend,
1.2851 ++ rela->r_addend + r_data->add_frag->offset_adjust
1.2852 ++ - (sym_frag ? sym_frag->offset_adjust : 0));
1.2853 ++
1.2854 ++ /* If this is against a section symbol, we won't find any
1.2855 ++ sym_frag, so we'll just adjust the addend. */
1.2856 ++ rela->r_addend += r_data->add_frag->offset_adjust;
1.2857 ++ if (sym_frag)
1.2858 ++ rela->r_addend -= sym_frag->offset_adjust;
1.2859 ++
1.2860 ++ if (r_data->sub_frag)
1.2861 ++ {
1.2862 ++ bfd_byte *contents;
1.2863 ++ bfd_signed_vma diff;
1.2864 ++
1.2865 ++ contents = retrieve_contents(abfd, sec, info->keep_memory);
1.2866 ++ if (!contents)
1.2867 ++ goto out;
1.2868 ++
1.2869 ++ /* I realize now that sub_frag is misnamed. It's
1.2870 ++ actually add_frag which is subtracted in this
1.2871 ++ case... */
1.2872 ++ diff = bfd_get_signed_32(abfd, contents + rela->r_offset);
1.2873 ++ diff += (r_data->sub_frag->offset_adjust
1.2874 ++ - r_data->add_frag->offset_adjust);
1.2875 ++ bfd_put_32(abfd, diff, contents + rela->r_offset);
1.2876 ++
1.2877 ++ RDBG(" 0x%lx: DIFF32 updated: 0x%lx\n", rela->r_offset, diff);
1.2878 ++
1.2879 ++ release_contents(sec, contents);
1.2880 ++ }
1.2881 ++ }
1.2882 ++ else
1.2883 ++ BFD_ASSERT(!r_data->sub_frag);
1.2884 ++ }
1.2885 ++
1.2886 ++ ret = TRUE;
1.2887 ++
1.2888 ++ out:
1.2889 ++ release_internal_relocs(sec, relocs);
1.2890 ++ return ret;
1.2891 ++}
1.2892 ++
1.2893 ++static bfd_boolean
1.2894 ++avr32_move_data(bfd *abfd, asection *sec, struct bfd_link_info *info)
1.2895 ++{
1.2896 ++ struct elf_avr32_link_hash_table *htab;
1.2897 ++ struct avr32_relax_data *rd;
1.2898 ++ struct fragment *frag, *fragend;
1.2899 ++ Elf_Internal_Rela *relocs = NULL;
1.2900 ++ bfd_byte *contents = NULL;
1.2901 ++ unsigned int i;
1.2902 ++ bfd_boolean ret = FALSE;
1.2903 ++
1.2904 ++ htab = avr32_elf_hash_table(info);
1.2905 ++ rd = avr32_relax_data(sec);
1.2906 ++
1.2907 ++ if (!htab->symbols_adjusted)
1.2908 ++ if (!adjust_syms(info))
1.2909 ++ return FALSE;
1.2910 ++
1.2911 ++ if (rd->is_relaxable)
1.2912 ++ {
1.2913 ++ /* Resize the section first, so that we can be sure that enough
1.2914 ++ memory is allocated in case the section has grown. */
1.2915 ++ if (sec->size > sec->rawsize
1.2916 ++ && elf_section_data(sec)->this_hdr.contents)
1.2917 ++ {
1.2918 ++ /* We must not use cached data if the section has grown. */
1.2919 ++ free(elf_section_data(sec)->this_hdr.contents);
1.2920 ++ elf_section_data(sec)->this_hdr.contents = NULL;
1.2921 ++ }
1.2922 ++
1.2923 ++ relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
1.2924 ++ if (!relocs)
1.2925 ++ goto out;
1.2926 ++ contents = retrieve_contents(abfd, sec, info->keep_memory);
1.2927 ++ if (!contents)
1.2928 ++ goto out;
1.2929 ++
1.2930 ++ fragend = rd->frag + rd->frag_count;
1.2931 ++
1.2932 ++ RDBG("move_data: %s<%s>: relocs=%p, contents=%p\n",
1.2933 ++ abfd->filename, sec->name, relocs, contents);
1.2934 ++
1.2935 ++ /* First, move the data into place. We must take care to move
1.2936 ++ frags in the right order so that we don't accidentally
1.2937 ++ overwrite parts of the next frag. */
1.2938 ++ for (frag = rd->frag; frag < fragend; frag++)
1.2939 ++ {
1.2940 ++ RDBG(" 0x%08lx%c0x%x: size 0x%lx%c0x%x\n",
1.2941 ++ frag->offset, frag->offset_adjust >= 0 ? '+' : '-',
1.2942 ++ abs(frag->offset_adjust),
1.2943 ++ frag->size, frag->size_adjust >= 0 ? '+' : '-',
1.2944 ++ abs(frag->size_adjust));
1.2945 ++ if (frag->offset_adjust > 0)
1.2946 ++ {
1.2947 ++ struct fragment *prev = frag - 1;
1.2948 ++ struct fragment *last;
1.2949 ++
1.2950 ++ for (last = frag; last < fragend && last->offset_adjust > 0;
1.2951 ++ last++) ;
1.2952 ++
1.2953 ++ if (last == fragend)
1.2954 ++ last--;
1.2955 ++
1.2956 ++ for (frag = last; frag != prev; frag--)
1.2957 ++ {
1.2958 ++ if (frag->offset_adjust
1.2959 ++ && frag->size + frag->size_adjust > 0)
1.2960 ++ {
1.2961 ++ RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
1.2962 ++ frag->offset, frag->offset + frag->offset_adjust,
1.2963 ++ frag->size + frag->size_adjust);
1.2964 ++ memmove(contents + frag->offset + frag->offset_adjust,
1.2965 ++ contents + frag->offset,
1.2966 ++ frag->size + frag->size_adjust);
1.2967 ++ }
1.2968 ++ }
1.2969 ++ frag = last;
1.2970 ++ }
1.2971 ++ else if (frag->offset_adjust && frag->size + frag->size_adjust > 0)
1.2972 ++ {
1.2973 ++ RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
1.2974 ++ frag->offset, frag->offset + frag->offset_adjust,
1.2975 ++ frag->size + frag->size_adjust);
1.2976 ++ memmove(contents + frag->offset + frag->offset_adjust,
1.2977 ++ contents + frag->offset,
1.2978 ++ frag->size + frag->size_adjust);
1.2979 ++ }
1.2980 ++ }
1.2981 ++
1.2982 ++ i = 0;
1.2983 ++
1.2984 ++ for (frag = rd->frag; frag < fragend; frag++)
1.2985 ++ {
1.2986 ++ const struct relax_state *state, *istate;
1.2987 ++ struct avr32_reloc_data *r_data = NULL;
1.2988 ++
1.2989 ++ istate = &relax_state[frag->initial_state];
1.2990 ++ state = &relax_state[frag->state];
1.2991 ++
1.2992 ++ if (rd->reloc_data)
1.2993 ++ r_data = &rd->reloc_data[frag->rela - relocs];
1.2994 ++
1.2995 ++ BFD_ASSERT((long)(frag->size + frag->size_adjust) >= 0);
1.2996 ++ BFD_ASSERT(state->reftype != REF_CPOOL
1.2997 ++ || r_data->add_frag->refcount > 0);
1.2998 ++
1.2999 ++ if (istate->reftype == REF_CPOOL && state->reftype != REF_CPOOL)
1.3000 ++ {
1.3001 ++ struct fragment *ifrag;
1.3002 ++
1.3003 ++ /* An indirect reference through the cpool has been
1.3004 ++ converted to a direct reference. We must update the
1.3005 ++ reloc to point to the symbol itself instead of the
1.3006 ++ constant pool entry. The reloc type will be updated
1.3007 ++ later. */
1.3008 ++ ifrag = r_data->add_frag;
1.3009 ++ frag->rela->r_info = ifrag->rela->r_info;
1.3010 ++ frag->rela->r_addend = ifrag->rela->r_addend;
1.3011 ++
1.3012 ++ /* Copy the reloc data so the addend will be adjusted
1.3013 ++ correctly later. */
1.3014 ++ *r_data = rd->reloc_data[ifrag->rela - relocs];
1.3015 ++ }
1.3016 ++
1.3017 ++ /* Move all relocs covered by this frag. */
1.3018 ++ if (frag->rela)
1.3019 ++ BFD_ASSERT(&relocs[i] <= frag->rela);
1.3020 ++ else
1.3021 ++ BFD_ASSERT((frag + 1) == fragend && frag->state == RS_NONE);
1.3022 ++
1.3023 ++ if (frag == rd->frag)
1.3024 ++ BFD_ASSERT(i == 0);
1.3025 ++ else
1.3026 ++ BFD_ASSERT(&relocs[i] > frag[-1].rela);
1.3027 ++
1.3028 ++ /* If non-null, frag->rela is the last relocation in the
1.3029 ++ fragment. frag->rela can only be null in the last
1.3030 ++ fragment, so in that case, we'll just do the rest. */
1.3031 ++ for (; (i < sec->reloc_count
1.3032 ++ && (!frag->rela || &relocs[i] <= frag->rela)); i++)
1.3033 ++ {
1.3034 ++ RDBG("[%4u] r_offset 0x%08lx -> 0x%08lx\n", i, relocs[i].r_offset,
1.3035 ++ relocs[i].r_offset + frag->offset_adjust);
1.3036 ++ relocs[i].r_offset += frag->offset_adjust;
1.3037 ++ }
1.3038 ++
1.3039 ++ if (frag->refcount == 0)
1.3040 ++ {
1.3041 ++ /* If this frag is to be discarded, make sure we won't
1.3042 ++ relocate it later on. */
1.3043 ++ BFD_ASSERT(frag->state == RS_CPENT);
1.3044 ++ frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
1.3045 ++ R_AVR32_NONE);
1.3046 ++ }
1.3047 ++ else if (frag->state == RS_ALIGN)
1.3048 ++ {
1.3049 ++ bfd_vma addr, addr_end;
1.3050 ++
1.3051 ++ addr = frag->rela->r_offset;
1.3052 ++ addr_end = (frag->offset + frag->offset_adjust
1.3053 ++ + frag->size + frag->size_adjust);
1.3054 ++
1.3055 ++ /* If the section is executable, insert NOPs.
1.3056 ++ Otherwise, insert zeroes. */
1.3057 ++ if (sec->flags & SEC_CODE)
1.3058 ++ {
1.3059 ++ if (addr & 1)
1.3060 ++ {
1.3061 ++ bfd_put_8(abfd, 0, contents + addr);
1.3062 ++ addr++;
1.3063 ++ }
1.3064 ++
1.3065 ++ BFD_ASSERT(!((addr_end - addr) & 1));
1.3066 ++
1.3067 ++ while (addr < addr_end)
1.3068 ++ {
1.3069 ++ bfd_put_16(abfd, NOP_OPCODE, contents + addr);
1.3070 ++ addr += 2;
1.3071 ++ }
1.3072 ++ }
1.3073 ++ else
1.3074 ++ memset(contents + addr, 0, addr_end - addr);
1.3075 ++ }
1.3076 ++ else if (state->opcode_mask)
1.3077 ++ {
1.3078 ++ bfd_vma insn;
1.3079 ++
1.3080 ++ /* Update the opcode and the relocation type unless it's a
1.3081 ++ "special" relax state (i.e. RS_NONE, RS_ALIGN or
1.3082 ++ RS_CPENT.), in which case the opcode mask is zero. */
1.3083 ++ insn = bfd_get_32(abfd, contents + frag->rela->r_offset);
1.3084 ++ insn &= ~state->opcode_mask;
1.3085 ++ insn |= state->opcode;
1.3086 ++ RDBG(" 0x%lx: inserting insn %08lx\n",
1.3087 ++ frag->rela->r_offset, insn);
1.3088 ++ bfd_put_32(abfd, insn, contents + frag->rela->r_offset);
1.3089 ++
1.3090 ++ frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
1.3091 ++ state->r_type);
1.3092 ++ }
1.3093 ++
1.3094 ++ if ((frag + 1) == fragend)
1.3095 ++ BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
1.3096 ++ + frag->size_adjust) == sec->size);
1.3097 ++ else
1.3098 ++ BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
1.3099 ++ + frag->size_adjust)
1.3100 ++ == (frag[1].offset + frag[1].offset_adjust));
1.3101 ++ }
1.3102 ++ }
1.3103 ++
1.3104 ++ /* Adjust reloc addends and DIFF32 differences */
1.3105 ++ if (!adjust_relocs(abfd, sec, info))
1.3106 ++ return FALSE;
1.3107 ++
1.3108 ++ ret = TRUE;
1.3109 ++
1.3110 ++ out:
1.3111 ++ release_contents(sec, contents);
1.3112 ++ release_internal_relocs(sec, relocs);
1.3113 ++ return ret;
1.3114 ++}
1.3115 ++
1.3116 ++static bfd_boolean
1.3117 ++avr32_elf_relax_section(bfd *abfd, asection *sec,
1.3118 ++ struct bfd_link_info *info, bfd_boolean *again)
1.3119 ++{
1.3120 ++ struct elf_avr32_link_hash_table *htab;
1.3121 ++ struct avr32_relax_data *rd;
1.3122 ++
1.3123 ++ *again = FALSE;
1.3124 ++ if (info->relocatable)
1.3125 ++ return TRUE;
1.3126 ++
1.3127 ++ htab = avr32_elf_hash_table(info);
1.3128 ++ if ((!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
1.3129 ++ && sec != htab->sgot)
1.3130 ++ return TRUE;
1.3131 ++
1.3132 ++ if (!htab->relocations_analyzed)
1.3133 ++ {
1.3134 ++ if (!analyze_relocations(info))
1.3135 ++ return FALSE;
1.3136 ++ htab->relocations_analyzed = TRUE;
1.3137 ++ }
1.3138 ++
1.3139 ++ rd = avr32_relax_data(sec);
1.3140 ++
1.3141 ++ if (rd->iteration != htab->relax_iteration)
1.3142 ++ {
1.3143 ++ if (!htab->repeat_pass)
1.3144 ++ htab->relax_pass++;
1.3145 ++ htab->relax_iteration++;
1.3146 ++ htab->repeat_pass = FALSE;
1.3147 ++ }
1.3148 ++
1.3149 ++ rd->iteration++;
1.3150 ++
1.3151 ++ switch (htab->relax_pass)
1.3152 ++ {
1.3153 ++ case RELAX_PASS_SIZE_FRAGS:
1.3154 ++ if (!avr32_size_frags(abfd, sec, info))
1.3155 ++ return FALSE;
1.3156 ++ *again = TRUE;
1.3157 ++ break;
1.3158 ++ case RELAX_PASS_MOVE_DATA:
1.3159 ++ if (!avr32_move_data(abfd, sec, info))
1.3160 ++ return FALSE;
1.3161 ++ break;
1.3162 ++ }
1.3163 ++
1.3164 ++ return TRUE;
1.3165 ++}
1.3166 ++
1.3167 ++
1.3168 ++/* Relocation */
1.3169 ++
1.3170 ++static bfd_reloc_status_type
1.3171 ++avr32_check_reloc_value(asection *sec, Elf_Internal_Rela *rela,
1.3172 ++ bfd_signed_vma relocation, reloc_howto_type *howto);
1.3173 ++static bfd_reloc_status_type
1.3174 ++avr32_final_link_relocate(reloc_howto_type *howto, bfd *input_bfd,
1.3175 ++ asection *input_section, bfd_byte *contents,
1.3176 ++ Elf_Internal_Rela *rel, bfd_vma value);
1.3177 ++static bfd_boolean
1.3178 ++avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
1.3179 ++ bfd *input_bfd, asection *input_section,
1.3180 ++ bfd_byte *contents, Elf_Internal_Rela *relocs,
1.3181 ++ Elf_Internal_Sym *local_syms,
1.3182 ++ asection **local_sections);
1.3183 ++
1.3184 ++
1.3185 ++#define symbol_address(symbol) \
1.3186 ++ symbol->value + symbol->section->output_section->vma \
1.3187 ++ + symbol->section->output_offset
1.3188 ++
1.3189 ++#define avr32_elf_insert_field(size, field, abfd, reloc_entry, data) \
1.3190 ++ do \
1.3191 ++ { \
1.3192 ++ unsigned long x; \
1.3193 ++ x = bfd_get_##size (abfd, data + reloc_entry->address); \
1.3194 ++ x &= ~reloc_entry->howto->dst_mask; \
1.3195 ++ x |= field & reloc_entry->howto->dst_mask; \
1.3196 ++ bfd_put_##size (abfd, (bfd_vma) x, data + reloc_entry->address); \
1.3197 ++ } \
1.3198 ++ while(0)
1.3199 ++
1.3200 ++static bfd_reloc_status_type
1.3201 ++avr32_check_reloc_value(asection *sec ATTRIBUTE_UNUSED,
1.3202 ++ Elf_Internal_Rela *rela ATTRIBUTE_UNUSED,
1.3203 ++ bfd_signed_vma relocation,
1.3204 ++ reloc_howto_type *howto)
1.3205 ++{
1.3206 ++ bfd_vma reloc_u;
1.3207 ++
1.3208 ++ /* We take "complain_overflow_dont" to mean "don't complain on
1.3209 ++ alignment either". This way, we don't have to special-case
1.3210 ++ R_AVR32_HI16 */
1.3211 ++ if (howto->complain_on_overflow == complain_overflow_dont)
1.3212 ++ return bfd_reloc_ok;
1.3213 ++
1.3214 ++ /* Check if the value is correctly aligned */
1.3215 ++ if (relocation & ((1 << howto->rightshift) - 1))
1.3216 ++ {
1.3217 ++ RDBG("misaligned: %s<%s+%lx>: %s: 0x%lx (align %u)\n",
1.3218 ++ sec->owner->filename, sec->name, rela->r_offset,
1.3219 ++ howto->name, relocation, howto->rightshift);
1.3220 ++ return bfd_reloc_overflow;
1.3221 ++ }
1.3222 ++
1.3223 ++ /* Now, get rid of the unnecessary bits */
1.3224 ++ relocation >>= howto->rightshift;
1.3225 ++ reloc_u = (bfd_vma)relocation;
1.3226 ++
1.3227 ++ switch (howto->complain_on_overflow)
1.3228 ++ {
1.3229 ++ case complain_overflow_unsigned:
1.3230 ++ case complain_overflow_bitfield:
1.3231 ++ if (reloc_u > (unsigned long)((1 << howto->bitsize) - 1))
1.3232 ++ {
1.3233 ++ RDBG("unsigned overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
1.3234 ++ sec->owner->filename, sec->name, rela->r_offset,
1.3235 ++ howto->name, reloc_u, howto->bitsize);
1.3236 ++ RDBG("reloc vma: 0x%lx\n",
1.3237 ++ sec->output_section->vma + sec->output_offset + rela->r_offset);
1.3238 ++
1.3239 ++ return bfd_reloc_overflow;
1.3240 ++ }
1.3241 ++ break;
1.3242 ++ case complain_overflow_signed:
1.3243 ++ if (relocation > (1 << (howto->bitsize - 1)) - 1)
1.3244 ++ {
1.3245 ++ RDBG("signed overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
1.3246 ++ sec->owner->filename, sec->name, rela->r_offset,
1.3247 ++ howto->name, reloc_u, howto->bitsize);
1.3248 ++ RDBG("reloc vma: 0x%lx\n",
1.3249 ++ sec->output_section->vma + sec->output_offset + rela->r_offset);
1.3250 ++
1.3251 ++ return bfd_reloc_overflow;
1.3252 ++ }
1.3253 ++ if (relocation < -(1 << (howto->bitsize - 1)))
1.3254 ++ {
1.3255 ++ RDBG("signed overflow: %s<%s+%lx>: %s: -0x%lx (size %u)\n",
1.3256 ++ sec->owner->filename, sec->name, rela->r_offset,
1.3257 ++ howto->name, -relocation, howto->bitsize);
1.3258 ++ RDBG("reloc vma: 0x%lx\n",
1.3259 ++ sec->output_section->vma + sec->output_offset + rela->r_offset);
1.3260 ++
1.3261 ++ return bfd_reloc_overflow;
1.3262 ++ }
1.3263 ++ break;
1.3264 ++ default:
1.3265 ++ abort();
1.3266 ++ }
1.3267 ++
1.3268 ++ return bfd_reloc_ok;
1.3269 ++}
1.3270 ++
1.3271 ++
1.3272 ++static bfd_reloc_status_type
1.3273 ++avr32_final_link_relocate(reloc_howto_type *howto,
1.3274 ++ bfd *input_bfd,
1.3275 ++ asection *input_section,
1.3276 ++ bfd_byte *contents,
1.3277 ++ Elf_Internal_Rela *rel,
1.3278 ++ bfd_vma value)
1.3279 ++{
1.3280 ++ bfd_vma field;
1.3281 ++ bfd_vma relocation;
1.3282 ++ bfd_reloc_status_type status;
1.3283 ++ bfd_byte *p = contents + rel->r_offset;
1.3284 ++ unsigned long x;
1.3285 ++
1.3286 ++ pr_debug(" (6b) final link relocate\n");
1.3287 ++
1.3288 ++ /* Sanity check the address */
1.3289 ++ if (rel->r_offset > input_section->size)
1.3290 ++ {
1.3291 ++ (*_bfd_error_handler)
1.3292 ++ ("%B: %A+0x%lx: offset out of range (section size: 0x%lx)",
1.3293 ++ input_bfd, input_section, rel->r_offset, input_section->size);
1.3294 ++ return bfd_reloc_outofrange;
1.3295 ++ }
1.3296 ++
1.3297 ++ relocation = value + rel->r_addend;
1.3298 ++
1.3299 ++ if (howto->pc_relative)
1.3300 ++ {
1.3301 ++ bfd_vma addr;
1.3302 ++
1.3303 ++ addr = input_section->output_section->vma
1.3304 ++ + input_section->output_offset + rel->r_offset;
1.3305 ++ addr &= ~0UL << howto->rightshift;
1.3306 ++ relocation -= addr;
1.3307 ++ }
1.3308 ++
1.3309 ++ switch (ELF32_R_TYPE(rel->r_info))
1.3310 ++ {
1.3311 ++ case R_AVR32_16N_PCREL:
1.3312 ++ /* sub reg, pc, . - (sym + addend) */
1.3313 ++ relocation = -relocation;
1.3314 ++ break;
1.3315 ++ }
1.3316 ++
1.3317 ++ status = avr32_check_reloc_value(input_section, rel, relocation, howto);
1.3318 ++
1.3319 ++ relocation >>= howto->rightshift;
1.3320 ++ if (howto->bitsize == 21)
1.3321 ++ field = (relocation & 0xffff)
1.3322 ++ | ((relocation & 0x10000) << 4)
1.3323 ++ | ((relocation & 0x1e0000) << 8);
1.3324 ++ else if (howto->bitsize == 12)
1.3325 ++ field = (relocation & 0xff) | ((relocation & 0xf00) << 4);
1.3326 ++ else if (howto->bitsize == 10)
1.3327 ++ field = ((relocation & 0xff) << 4)
1.3328 ++ | ((relocation & 0x300) >> 8);
1.3329 ++ else
1.3330 ++ field = relocation << howto->bitpos;
1.3331 ++
1.3332 ++ switch (howto->size)
1.3333 ++ {
1.3334 ++ case 0:
1.3335 ++ x = bfd_get_8 (input_bfd, p);
1.3336 ++ x &= ~howto->dst_mask;
1.3337 ++ x |= field & howto->dst_mask;
1.3338 ++ bfd_put_8 (input_bfd, (bfd_vma) x, p);
1.3339 ++ break;
1.3340 ++ case 1:
1.3341 ++ x = bfd_get_16 (input_bfd, p);
1.3342 ++ x &= ~howto->dst_mask;
1.3343 ++ x |= field & howto->dst_mask;
1.3344 ++ bfd_put_16 (input_bfd, (bfd_vma) x, p);
1.3345 ++ break;
1.3346 ++ case 2:
1.3347 ++ x = bfd_get_32 (input_bfd, p);
1.3348 ++ x &= ~howto->dst_mask;
1.3349 ++ x |= field & howto->dst_mask;
1.3350 ++ bfd_put_32 (input_bfd, (bfd_vma) x, p);
1.3351 ++ break;
1.3352 ++ default:
1.3353 ++ abort();
1.3354 ++ }
1.3355 ++
1.3356 ++ return status;
1.3357 ++}
1.3358 ++
1.3359 ++/* (6) Apply relocations to the normal (non-dynamic) sections */
1.3360 ++
1.3361 ++static bfd_boolean
1.3362 ++avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
1.3363 ++ bfd *input_bfd, asection *input_section,
1.3364 ++ bfd_byte *contents, Elf_Internal_Rela *relocs,
1.3365 ++ Elf_Internal_Sym *local_syms,
1.3366 ++ asection **local_sections)
1.3367 ++{
1.3368 ++ struct elf_avr32_link_hash_table *htab;
1.3369 ++ Elf_Internal_Shdr *symtab_hdr;
1.3370 ++ Elf_Internal_Rela *rel, *relend;
1.3371 ++ struct elf_link_hash_entry **sym_hashes;
1.3372 ++ struct got_entry **local_got_ents;
1.3373 ++ asection *sgot;
1.3374 ++ asection *srelgot;
1.3375 ++
1.3376 ++ pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n",
1.3377 ++ input_bfd->filename, input_section->name, input_section->size);
1.3378 ++
1.3379 ++ /* If we're doing a partial link, we don't have to do anything since
1.3380 ++ we're using RELA relocations */
1.3381 ++ if (info->relocatable)
1.3382 ++ return TRUE;
1.3383 ++
1.3384 ++ htab = avr32_elf_hash_table(info);
1.3385 ++ symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr;
1.3386 ++ sym_hashes = elf_sym_hashes(input_bfd);
1.3387 ++ local_got_ents = elf_local_got_ents(input_bfd);
1.3388 ++ sgot = htab->sgot;
1.3389 ++ srelgot = htab->srelgot;
1.3390 ++
1.3391 ++ relend = relocs + input_section->reloc_count;
1.3392 ++ for (rel = relocs; rel < relend; rel++)
1.3393 ++ {
1.3394 ++ unsigned long r_type, r_symndx;
1.3395 ++ reloc_howto_type *howto;
1.3396 ++ Elf_Internal_Sym *sym = NULL;
1.3397 ++ struct elf_link_hash_entry *h = NULL;
1.3398 ++ asection *sec = NULL;
1.3399 ++ bfd_vma value;
1.3400 ++ bfd_vma offset;
1.3401 ++ bfd_reloc_status_type status;
1.3402 ++
1.3403 ++ r_type = ELF32_R_TYPE(rel->r_info);
1.3404 ++ r_symndx = ELF32_R_SYM(rel->r_info);
1.3405 ++
1.3406 ++ if (r_type == R_AVR32_NONE
1.3407 ++ || r_type == R_AVR32_ALIGN
1.3408 ++ || r_type == R_AVR32_DIFF32
1.3409 ++ || r_type == R_AVR32_DIFF16
1.3410 ++ || r_type == R_AVR32_DIFF8)
1.3411 ++ continue;
1.3412 ++
1.3413 ++ /* Sanity check */
1.3414 ++ if (r_type > R_AVR32_max)
1.3415 ++ {
1.3416 ++ bfd_set_error(bfd_error_bad_value);
1.3417 ++ return FALSE;
1.3418 ++ }
1.3419 ++
1.3420 ++ howto = &elf_avr32_howto_table[r_type];
1.3421 ++
1.3422 ++ if (r_symndx < symtab_hdr->sh_info)
1.3423 ++ {
1.3424 ++ sym = local_syms + r_symndx;
1.3425 ++ sec = local_sections[r_symndx];
1.3426 ++
1.3427 ++ pr_debug(" (6a) processing %s against local symbol %lu\n",
1.3428 ++ howto->name, r_symndx);
1.3429 ++
1.3430 ++ /* The following function changes rel->r_addend behind our back. */
1.3431 ++ value = _bfd_elf_rela_local_sym(output_bfd, sym, &sec, rel);
1.3432 ++ pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend);
1.3433 ++ }
1.3434 ++ else
1.3435 ++ {
1.3436 ++ if (sym_hashes == NULL)
1.3437 ++ return FALSE;
1.3438 ++
1.3439 ++ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
1.3440 ++ while (h->root.type == bfd_link_hash_indirect
1.3441 ++ || h->root.type == bfd_link_hash_warning)
1.3442 ++ h = (struct elf_link_hash_entry *)h->root.u.i.link;
1.3443 ++
1.3444 ++ pr_debug(" (6a) processing %s against symbol %s\n",
1.3445 ++ howto->name, h->root.root.string);
1.3446 ++
1.3447 ++ if (h->root.type == bfd_link_hash_defined
1.3448 ++ || h->root.type == bfd_link_hash_defweak)
1.3449 ++ {
1.3450 ++ bfd_boolean dyn;
1.3451 ++
1.3452 ++ dyn = htab->root.dynamic_sections_created;
1.3453 ++ sec = h->root.u.def.section;
1.3454 ++
1.3455 ++ if (sec->output_section)
1.3456 ++ value = (h->root.u.def.value
1.3457 ++ + sec->output_section->vma
1.3458 ++ + sec->output_offset);
1.3459 ++ else
1.3460 ++ value = h->root.u.def.value;
1.3461 ++ }
1.3462 ++ else if (h->root.type == bfd_link_hash_undefweak)
1.3463 ++ value = 0;
1.3464 ++ else if (info->unresolved_syms_in_objects == RM_IGNORE
1.3465 ++ && ELF_ST_VISIBILITY(h->other) == STV_DEFAULT)
1.3466 ++ value = 0;
1.3467 ++ else
1.3468 ++ {
1.3469 ++ bfd_boolean err;
1.3470 ++ err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
1.3471 ++ || ELF_ST_VISIBILITY(h->other) != STV_DEFAULT);
1.3472 ++ if (!info->callbacks->undefined_symbol
1.3473 ++ (info, h->root.root.string, input_bfd,
1.3474 ++ input_section, rel->r_offset, err))
1.3475 ++ return FALSE;
1.3476 ++ value = 0;
1.3477 ++ }
1.3478 ++
1.3479 ++ pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend);
1.3480 ++ }
1.3481 ++
1.3482 ++ switch (r_type)
1.3483 ++ {
1.3484 ++ case R_AVR32_GOT32:
1.3485 ++ case R_AVR32_GOT16:
1.3486 ++ case R_AVR32_GOT8:
1.3487 ++ case R_AVR32_GOT21S:
1.3488 ++ case R_AVR32_GOT18SW:
1.3489 ++ case R_AVR32_GOT16S:
1.3490 ++ case R_AVR32_GOT7UW:
1.3491 ++ case R_AVR32_LDA_GOT:
1.3492 ++ case R_AVR32_GOTCALL:
1.3493 ++ BFD_ASSERT(sgot != NULL);
1.3494 ++
1.3495 ++ if (h != NULL)
1.3496 ++ {
1.3497 ++ BFD_ASSERT(h->got.glist->refcount > 0);
1.3498 ++ offset = h->got.glist->offset;
1.3499 ++
1.3500 ++ BFD_ASSERT(offset < sgot->size);
1.3501 ++ if (!elf_hash_table(info)->dynamic_sections_created
1.3502 ++ || (h->def_regular
1.3503 ++ && (!info->shared
1.3504 ++ || info->symbolic
1.3505 ++ || h->dynindx == -1)))
1.3506 ++ {
1.3507 ++ /* This is actually a static link, or it is a
1.3508 ++ -Bsymbolic link and the symbol is defined
1.3509 ++ locally, or the symbol was forced to be local. */
1.3510 ++ bfd_put_32(output_bfd, value, sgot->contents + offset);
1.3511 ++ }
1.3512 ++ }
1.3513 ++ else
1.3514 ++ {
1.3515 ++ BFD_ASSERT(local_got_ents &&
1.3516 ++ local_got_ents[r_symndx]->refcount > 0);
1.3517 ++ offset = local_got_ents[r_symndx]->offset;
1.3518 ++
1.3519 ++ /* Local GOT entries don't have relocs. If this is a
1.3520 ++ shared library, the dynamic linker will add the load
1.3521 ++ address to the initial value at startup. */
1.3522 ++ BFD_ASSERT(offset < sgot->size);
1.3523 ++ pr_debug("Initializing GOT entry at offset %lu: 0x%lx\n",
1.3524 ++ offset, value);
1.3525 ++ bfd_put_32 (output_bfd, value, sgot->contents + offset);
1.3526 ++ }
1.3527 ++
1.3528 ++ value = sgot->output_offset + offset;
1.3529 ++ pr_debug("GOT reference: New value %lx\n", value);
1.3530 ++ break;
1.3531 ++
1.3532 ++ case R_AVR32_GOTPC:
1.3533 ++ /* This relocation type is for constant pool entries used in
1.3534 ++ the calculation "Rd = PC - (PC - GOT)", where the
1.3535 ++ constant pool supplies the constant (PC - GOT)
1.3536 ++ offset. The symbol value + addend indicates where the
1.3537 ++ value of PC is taken. */
1.3538 ++ value -= sgot->output_section->vma;
1.3539 ++ break;
1.3540 ++
1.3541 ++ case R_AVR32_32_PCREL:
1.3542 ++ /* We must adjust r_offset to account for discarded data in
1.3543 ++ the .eh_frame section. This is probably not the right
1.3544 ++ way to do this, since AFAICS all other architectures do
1.3545 ++ it some other way. I just can't figure out how... */
1.3546 ++ {
1.3547 ++ bfd_vma r_offset;
1.3548 ++
1.3549 ++ r_offset = _bfd_elf_section_offset(output_bfd, info,
1.3550 ++ input_section,
1.3551 ++ rel->r_offset);
1.3552 ++ if (r_offset == (bfd_vma)-1
1.3553 ++ || r_offset == (bfd_vma)-2)
1.3554 ++ continue;
1.3555 ++ rel->r_offset = r_offset;
1.3556 ++ }
1.3557 ++ break;
1.3558 ++
1.3559 ++ case R_AVR32_32:
1.3560 ++ /* We need to emit a run-time relocation in the following cases:
1.3561 ++ - we're creating a shared library
1.3562 ++ - the symbol is not defined in any regular objects
1.3563 ++
1.3564 ++ Of course, sections that aren't going to be part of the
1.3565 ++ run-time image will not get any relocs, and undefined
1.3566 ++ symbols won't have any either (only weak undefined
1.3567 ++ symbols should get this far). */
1.3568 ++ if ((info->shared
1.3569 ++ || (elf_hash_table(info)->dynamic_sections_created
1.3570 ++ && h != NULL
1.3571 ++ && h->def_dynamic
1.3572 ++ && !h->def_regular))
1.3573 ++ && r_symndx != 0
1.3574 ++ && (input_section->flags & SEC_ALLOC))
1.3575 ++ {
1.3576 ++ Elf_Internal_Rela outrel;
1.3577 ++ bfd_byte *loc;
1.3578 ++ bfd_boolean skip, relocate;
1.3579 ++ struct elf_avr32_link_hash_entry *avrh;
1.3580 ++
1.3581 ++ pr_debug("Going to generate dynamic reloc...\n");
1.3582 ++
1.3583 ++ skip = FALSE;
1.3584 ++ relocate = FALSE;
1.3585 ++
1.3586 ++ outrel.r_offset = _bfd_elf_section_offset(output_bfd, info,
1.3587 ++ input_section,
1.3588 ++ rel->r_offset);
1.3589 ++ if (outrel.r_offset == (bfd_vma)-1)
1.3590 ++ skip = TRUE;
1.3591 ++ else if (outrel.r_offset == (bfd_vma)-2)
1.3592 ++ skip = TRUE, relocate = TRUE;
1.3593 ++
1.3594 ++ outrel.r_offset += (input_section->output_section->vma
1.3595 ++ + input_section->output_offset);
1.3596 ++
1.3597 ++ pr_debug(" ... offset %lx, dynindx %ld\n",
1.3598 ++ outrel.r_offset, h ? h->dynindx : -1);
1.3599 ++
1.3600 ++ if (skip)
1.3601 ++ memset(&outrel, 0, sizeof(outrel));
1.3602 ++ else
1.3603 ++ {
1.3604 ++ avrh = (struct elf_avr32_link_hash_entry *)h;
1.3605 ++ /* h->dynindx may be -1 if this symbol was marked to
1.3606 ++ become local. */
1.3607 ++ if (h == NULL
1.3608 ++ || ((info->symbolic || h->dynindx == -1)
1.3609 ++ && h->def_regular))
1.3610 ++ {
1.3611 ++ relocate = TRUE;
1.3612 ++ outrel.r_info = ELF32_R_INFO(0, R_AVR32_RELATIVE);
1.3613 ++ outrel.r_addend = value + rel->r_addend;
1.3614 ++ pr_debug(" ... R_AVR32_RELATIVE\n");
1.3615 ++ }
1.3616 ++ else
1.3617 ++ {
1.3618 ++ BFD_ASSERT(h->dynindx != -1);
1.3619 ++ relocate = TRUE;
1.3620 ++ outrel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
1.3621 ++ outrel.r_addend = rel->r_addend;
1.3622 ++ pr_debug(" ... R_AVR32_GLOB_DAT\n");
1.3623 ++ }
1.3624 ++ }
1.3625 ++
1.3626 ++ pr_debug("srelgot reloc_count: %d, size %lu\n",
1.3627 ++ srelgot->reloc_count, srelgot->size);
1.3628 ++
1.3629 ++ loc = srelgot->contents;
1.3630 ++ loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela);
1.3631 ++ bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc);
1.3632 ++
1.3633 ++ BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
1.3634 ++ <= srelgot->size);
1.3635 ++
1.3636 ++ if (!relocate)
1.3637 ++ continue;
1.3638 ++ }
1.3639 ++ break;
1.3640 ++ }
1.3641 ++
1.3642 ++ status = avr32_final_link_relocate(howto, input_bfd, input_section,
1.3643 ++ contents, rel, value);
1.3644 ++
1.3645 ++ switch (status)
1.3646 ++ {
1.3647 ++ case bfd_reloc_ok:
1.3648 ++ break;
1.3649 ++
1.3650 ++ case bfd_reloc_overflow:
1.3651 ++ {
1.3652 ++ const char *name;
1.3653 ++
1.3654 ++ if (h != NULL)
1.3655 ++ name = h->root.root.string;
1.3656 ++ else
1.3657 ++ {
1.3658 ++ name = bfd_elf_string_from_elf_section(input_bfd,
1.3659 ++ symtab_hdr->sh_link,
1.3660 ++ sym->st_name);
1.3661 ++ if (name == NULL)
1.3662 ++ return FALSE;
1.3663 ++ if (*name == '\0')
1.3664 ++ name = bfd_section_name(input_bfd, sec);
1.3665 ++ }
1.3666 ++ if (!((*info->callbacks->reloc_overflow)
1.3667 ++ (info, (h ? &h->root : NULL), name, howto->name,
1.3668 ++ rel->r_addend, input_bfd, input_section, rel->r_offset)))
1.3669 ++ return FALSE;
1.3670 ++ }
1.3671 ++ break;
1.3672 ++
1.3673 ++ case bfd_reloc_outofrange:
1.3674 ++ default:
1.3675 ++ abort();
1.3676 ++ }
1.3677 ++ }
1.3678 ++
1.3679 ++ return TRUE;
1.3680 ++}
1.3681 ++
1.3682 ++
1.3683 ++/* Additional processing of dynamic sections after relocation */
1.3684 ++
1.3685 ++static bfd_boolean
1.3686 ++avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
1.3687 ++ struct elf_link_hash_entry *h,
1.3688 ++ Elf_Internal_Sym *sym);
1.3689 ++static bfd_boolean
1.3690 ++avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info);
1.3691 ++
1.3692 ++
1.3693 ++/* (7) Initialize the contents of a dynamic symbol and/or emit
1.3694 ++ relocations for it */
1.3695 ++
1.3696 ++static bfd_boolean
1.3697 ++avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
1.3698 ++ struct elf_link_hash_entry *h,
1.3699 ++ Elf_Internal_Sym *sym)
1.3700 ++{
1.3701 ++ struct elf_avr32_link_hash_table *htab;
1.3702 ++ struct got_entry *got;
1.3703 ++
1.3704 ++ pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string);
1.3705 ++
1.3706 ++ htab = avr32_elf_hash_table(info);
1.3707 ++ got = h->got.glist;
1.3708 ++
1.3709 ++ if (got && got->refcount > 0)
1.3710 ++ {
1.3711 ++ asection *sgot;
1.3712 ++ asection *srelgot;
1.3713 ++ Elf_Internal_Rela rel;
1.3714 ++ bfd_byte *loc;
1.3715 ++
1.3716 ++ /* This symbol has an entry in the GOT. Set it up. */
1.3717 ++ sgot = htab->sgot;
1.3718 ++ srelgot = htab->srelgot;
1.3719 ++ BFD_ASSERT(sgot && srelgot);
1.3720 ++
1.3721 ++ rel.r_offset = (sgot->output_section->vma
1.3722 ++ + sgot->output_offset
1.3723 ++ + got->offset);
1.3724 ++
1.3725 ++ /* If this is a static link, or it is a -Bsymbolic link and the
1.3726 ++ symbol is defined locally or was forced to be local because
1.3727 ++ of a version file, we just want to emit a RELATIVE reloc. The
1.3728 ++ entry in the global offset table will already have been
1.3729 ++ initialized in the relocate_section function. */
1.3730 ++ if ((info->shared
1.3731 ++ && !info->symbolic
1.3732 ++ && h->dynindx != -1)
1.3733 ++ || (htab->root.dynamic_sections_created
1.3734 ++ && h->def_dynamic
1.3735 ++ && !h->def_regular))
1.3736 ++ {
1.3737 ++ bfd_put_32(output_bfd, 0, sgot->contents + got->offset);
1.3738 ++ rel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
1.3739 ++ rel.r_addend = 0;
1.3740 ++
1.3741 ++ pr_debug("GOT reloc R_AVR32_GLOB_DAT, dynindx: %ld\n", h->dynindx);
1.3742 ++ pr_debug(" srelgot reloc_count: %d, size: %lu\n",
1.3743 ++ srelgot->reloc_count, srelgot->size);
1.3744 ++
1.3745 ++ loc = (srelgot->contents
1.3746 ++ + srelgot->reloc_count++ * sizeof(Elf32_External_Rela));
1.3747 ++ bfd_elf32_swap_reloca_out(output_bfd, &rel, loc);
1.3748 ++
1.3749 ++ BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
1.3750 ++ <= srelgot->size);
1.3751 ++ }
1.3752 ++ }
1.3753 ++
1.3754 ++ /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute */
1.3755 ++ if (strcmp(h->root.root.string, "_DYNAMIC") == 0
1.3756 ++ || strcmp(h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
1.3757 ++ sym->st_shndx = SHN_ABS;
1.3758 ++
1.3759 ++ return TRUE;
1.3760 ++}
1.3761 ++
1.3762 ++/* (8) Do any remaining initialization of the dynamic sections */
1.3763 ++
1.3764 ++static bfd_boolean
1.3765 ++avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info)
1.3766 ++{
1.3767 ++ struct elf_avr32_link_hash_table *htab;
1.3768 ++ asection *sgot, *sdyn;
1.3769 ++
1.3770 ++ pr_debug("(8) finish dynamic sections\n");
1.3771 ++
1.3772 ++ htab = avr32_elf_hash_table(info);
1.3773 ++ sgot = htab->sgot;
1.3774 ++ sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic");
1.3775 ++
1.3776 ++ if (htab->root.dynamic_sections_created)
1.3777 ++ {
1.3778 ++ Elf32_External_Dyn *dyncon, *dynconend;
1.3779 ++
1.3780 ++ BFD_ASSERT(sdyn && sgot && sgot->size >= AVR32_GOT_HEADER_SIZE);
1.3781 ++
1.3782 ++ dyncon = (Elf32_External_Dyn *)sdyn->contents;
1.3783 ++ dynconend = (Elf32_External_Dyn *)(sdyn->contents + sdyn->size);
1.3784 ++ for (; dyncon < dynconend; dyncon++)
1.3785 ++ {
1.3786 ++ Elf_Internal_Dyn dyn;
1.3787 ++ asection *s;
1.3788 ++
1.3789 ++ bfd_elf32_swap_dyn_in(htab->root.dynobj, dyncon, &dyn);
1.3790 ++
1.3791 ++ switch (dyn.d_tag)
1.3792 ++ {
1.3793 ++ default:
1.3794 ++ break;
1.3795 ++
1.3796 ++ case DT_PLTGOT:
1.3797 ++ s = sgot->output_section;
1.3798 ++ BFD_ASSERT(s != NULL);
1.3799 ++ dyn.d_un.d_ptr = s->vma;
1.3800 ++ bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
1.3801 ++ break;
1.3802 ++
1.3803 ++ case DT_AVR32_GOTSZ:
1.3804 ++ s = sgot->output_section;
1.3805 ++ BFD_ASSERT(s != NULL);
1.3806 ++ dyn.d_un.d_val = s->size;
1.3807 ++ bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
1.3808 ++ break;
1.3809 ++ }
1.3810 ++ }
1.3811 ++
1.3812 ++ /* Fill in the first two entries in the global offset table */
1.3813 ++ bfd_put_32(output_bfd,
1.3814 ++ sdyn->output_section->vma + sdyn->output_offset,
1.3815 ++ sgot->contents);
1.3816 ++
1.3817 ++ /* The runtime linker will fill this one in with the address of
1.3818 ++ the run-time link map */
1.3819 ++ bfd_put_32(output_bfd, 0, sgot->contents + 4);
1.3820 ++ }
1.3821 ++
1.3822 ++ if (sgot)
1.3823 ++ elf_section_data(sgot->output_section)->this_hdr.sh_entsize = 4;
1.3824 ++
1.3825 ++ return TRUE;
1.3826 ++}
1.3827 ++
1.3828 ++
1.3829 ++/* AVR32-specific private ELF data */
1.3830 ++
1.3831 ++static bfd_boolean
1.3832 ++avr32_elf_set_private_flags(bfd *abfd, flagword flags);
1.3833 ++static bfd_boolean
1.3834 ++avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
1.3835 ++static bfd_boolean
1.3836 ++avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
1.3837 ++static bfd_boolean
1.3838 ++avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr);
1.3839 ++
1.3840 ++static bfd_boolean
1.3841 ++avr32_elf_set_private_flags(bfd *abfd, flagword flags)
1.3842 ++{
1.3843 ++ elf_elfheader(abfd)->e_flags = flags;
1.3844 ++ elf_flags_init(abfd) = TRUE;
1.3845 ++
1.3846 ++ return TRUE;
1.3847 ++}
1.3848 ++
1.3849 ++/* Copy backend specific data from one object module to another. */
1.3850 ++
1.3851 ++static bfd_boolean
1.3852 ++avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd)
1.3853 ++{
1.3854 ++ elf_elfheader(obfd)->e_flags = elf_elfheader(ibfd)->e_flags;
1.3855 ++ return TRUE;
1.3856 ++}
1.3857 ++
1.3858 ++/* Merge backend specific data from an object file to the output
1.3859 ++ object file when linking. */
1.3860 ++
1.3861 ++static bfd_boolean
1.3862 ++avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd)
1.3863 ++{
1.3864 ++ flagword out_flags, in_flags;
1.3865 ++
1.3866 ++ pr_debug("(0) merge_private_bfd_data: %s -> %s\n",
1.3867 ++ ibfd->filename, obfd->filename);
1.3868 ++
1.3869 ++ in_flags = elf_elfheader(ibfd)->e_flags;
1.3870 ++ out_flags = elf_elfheader(obfd)->e_flags;
1.3871 ++
1.3872 ++ if (elf_flags_init(obfd))
1.3873 ++ {
1.3874 ++ /* If one of the inputs are non-PIC, the output must be
1.3875 ++ considered non-PIC. The same applies to linkrelax. */
1.3876 ++ if (!(in_flags & EF_AVR32_PIC))
1.3877 ++ out_flags &= ~EF_AVR32_PIC;
1.3878 ++ if (!(in_flags & EF_AVR32_LINKRELAX))
1.3879 ++ out_flags &= ~EF_AVR32_LINKRELAX;
1.3880 ++ }
1.3881 ++ else
1.3882 ++ {
1.3883 ++ elf_flags_init(obfd) = TRUE;
1.3884 ++ out_flags = in_flags;
1.3885 ++ }
1.3886 ++
1.3887 ++ elf_elfheader(obfd)->e_flags = out_flags;
1.3888 ++
1.3889 ++ return TRUE;
1.3890 ++}
1.3891 ++
1.3892 ++static bfd_boolean
1.3893 ++avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr)
1.3894 ++{
1.3895 ++ FILE *file = (FILE *)ptr;
1.3896 ++ unsigned long flags;
1.3897 ++
1.3898 ++ BFD_ASSERT(abfd != NULL && ptr != NULL);
1.3899 ++
1.3900 ++ _bfd_elf_print_private_bfd_data(abfd, ptr);
1.3901 ++
1.3902 ++ flags = elf_elfheader(abfd)->e_flags;
1.3903 ++
1.3904 ++ fprintf(file, _("private flags = %lx:"), elf_elfheader(abfd)->e_flags);
1.3905 ++
1.3906 ++ if (flags & EF_AVR32_PIC)
1.3907 ++ fprintf(file, " [PIC]");
1.3908 ++ if (flags & EF_AVR32_LINKRELAX)
1.3909 ++ fprintf(file, " [linker relaxable]");
1.3910 ++
1.3911 ++ flags &= ~(EF_AVR32_PIC | EF_AVR32_LINKRELAX);
1.3912 ++
1.3913 ++ if (flags)
1.3914 ++ fprintf(file, _("<Unrecognized flag bits set>"));
1.3915 ++
1.3916 ++ fputc('\n', file);
1.3917 ++
1.3918 ++ return TRUE;
1.3919 ++}
1.3920 ++
1.3921 ++/* Set avr32-specific linker options. */
1.3922 ++void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
1.3923 ++ int direct_data_refs)
1.3924 ++{
1.3925 ++ struct elf_avr32_link_hash_table *htab;
1.3926 ++
1.3927 ++ htab = avr32_elf_hash_table (info);
1.3928 ++ htab->direct_data_refs = !!direct_data_refs;
1.3929 ++}
1.3930 ++
1.3931 ++
1.3932 ++
1.3933 ++/* Understanding core dumps */
1.3934 ++
1.3935 ++static bfd_boolean
1.3936 ++avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note);
1.3937 ++static bfd_boolean
1.3938 ++avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note);
1.3939 ++
1.3940 ++static bfd_boolean
1.3941 ++avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note)
1.3942 ++{
1.3943 ++ /* Linux/AVR32B elf_prstatus */
1.3944 ++ if (note->descsz != 148)
1.3945 ++ return FALSE;
1.3946 ++
1.3947 ++ /* pr_cursig */
1.3948 ++ elf_tdata(abfd)->core_signal = bfd_get_16(abfd, note->descdata + 12);
1.3949 ++
1.3950 ++ /* pr_pid */
1.3951 ++ elf_tdata(abfd)->core_pid = bfd_get_32(abfd, note->descdata + 24);
1.3952 ++
1.3953 ++ /* Make a ".reg/999" section for pr_reg. The size is for 16
1.3954 ++ general-purpose registers, SR and r12_orig (18 * 4 = 72). */
1.3955 ++ return _bfd_elfcore_make_pseudosection(abfd, ".reg", 72,
1.3956 ++ note->descpos + 72);
1.3957 ++}
1.3958 ++
1.3959 ++static bfd_boolean
1.3960 ++avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note)
1.3961 ++{
1.3962 ++ /* Linux/AVR32B elf_prpsinfo */
1.3963 ++ if (note->descsz != 128)
1.3964 ++ return FALSE;
1.3965 ++
1.3966 ++ elf_tdata(abfd)->core_program
1.3967 ++ = _bfd_elfcore_strndup(abfd, note->descdata + 32, 16);
1.3968 ++ elf_tdata(abfd)->core_command
1.3969 ++ = _bfd_elfcore_strndup(abfd, note->descdata + 48, 80);
1.3970 ++
1.3971 ++ /* Note that for some reason, a spurious space is tacked
1.3972 ++ onto the end of the args in some (at least one anyway)
1.3973 ++ implementations, so strip it off if it exists. */
1.3974 ++
1.3975 ++ {
1.3976 ++ char *command = elf_tdata (abfd)->core_command;
1.3977 ++ int n = strlen (command);
1.3978 ++
1.3979 ++ if (0 < n && command[n - 1] == ' ')
1.3980 ++ command[n - 1] = '\0';
1.3981 ++ }
1.3982 ++
1.3983 ++ return TRUE;
1.3984 ++}
1.3985 ++
1.3986 ++
1.3987 ++#define ELF_ARCH bfd_arch_avr32
1.3988 ++#define ELF_MACHINE_CODE EM_AVR32
1.3989 ++#define ELF_MAXPAGESIZE 0x1000
1.3990 ++
1.3991 ++#define TARGET_BIG_SYM bfd_elf32_avr32_vec
1.3992 ++#define TARGET_BIG_NAME "elf32-avr32"
1.3993 ++
1.3994 ++#define elf_backend_grok_prstatus avr32_elf_grok_prstatus
1.3995 ++#define elf_backend_grok_psinfo avr32_elf_grok_psinfo
1.3996 ++
1.3997 ++/* Only RELA relocations are used */
1.3998 ++#define elf_backend_may_use_rel_p 0
1.3999 ++#define elf_backend_may_use_rela_p 1
1.4000 ++#define elf_backend_default_use_rela_p 1
1.4001 ++#define elf_backend_rela_normal 1
1.4002 ++#define elf_info_to_howto_rel NULL
1.4003 ++#define elf_info_to_howto avr32_info_to_howto
1.4004 ++
1.4005 ++#define bfd_elf32_bfd_copy_private_bfd_data avr32_elf_copy_private_bfd_data
1.4006 ++#define bfd_elf32_bfd_merge_private_bfd_data avr32_elf_merge_private_bfd_data
1.4007 ++#define bfd_elf32_bfd_set_private_flags avr32_elf_set_private_flags
1.4008 ++#define bfd_elf32_bfd_print_private_bfd_data avr32_elf_print_private_bfd_data
1.4009 ++#define bfd_elf32_new_section_hook avr32_elf_new_section_hook
1.4010 ++
1.4011 ++#define elf_backend_gc_mark_hook avr32_elf_gc_mark_hook
1.4012 ++#define elf_backend_gc_sweep_hook avr32_elf_gc_sweep_hook
1.4013 ++#define elf_backend_relocate_section avr32_elf_relocate_section
1.4014 ++#define elf_backend_copy_indirect_symbol avr32_elf_copy_indirect_symbol
1.4015 ++#define elf_backend_create_dynamic_sections avr32_elf_create_dynamic_sections
1.4016 ++#define bfd_elf32_bfd_link_hash_table_create avr32_elf_link_hash_table_create
1.4017 ++#define elf_backend_adjust_dynamic_symbol avr32_elf_adjust_dynamic_symbol
1.4018 ++#define elf_backend_size_dynamic_sections avr32_elf_size_dynamic_sections
1.4019 ++#define elf_backend_finish_dynamic_symbol avr32_elf_finish_dynamic_symbol
1.4020 ++#define elf_backend_finish_dynamic_sections avr32_elf_finish_dynamic_sections
1.4021 ++
1.4022 ++#define bfd_elf32_bfd_relax_section avr32_elf_relax_section
1.4023 ++
1.4024 ++/* Find out which symbols need an entry in .got. */
1.4025 ++#define elf_backend_check_relocs avr32_check_relocs
1.4026 ++#define elf_backend_can_refcount 1
1.4027 ++#define elf_backend_can_gc_sections 1
1.4028 ++#define elf_backend_plt_readonly 1
1.4029 ++#define elf_backend_plt_not_loaded 1
1.4030 ++#define elf_backend_want_plt_sym 0
1.4031 ++#define elf_backend_plt_alignment 2
1.4032 ++#define elf_backend_want_dynbss 0
1.4033 ++#define elf_backend_want_got_plt 0
1.4034 ++#define elf_backend_want_got_sym 1
1.4035 ++#define elf_backend_got_header_size AVR32_GOT_HEADER_SIZE
1.4036 ++
1.4037 ++#include "elf32-target.h"
1.4038 +--- /dev/null
1.4039 ++++ b/bfd/elf32-avr32.h
1.4040 +@@ -0,0 +1,23 @@
1.4041 ++/* AVR32-specific support for 32-bit ELF.
1.4042 ++ Copyright 2007 Atmel Corporation.
1.4043 ++
1.4044 ++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
1.4045 ++
1.4046 ++ This file is part of BFD, the Binary File Descriptor library.
1.4047 ++
1.4048 ++ This program is free software; you can redistribute it and/or modify
1.4049 ++ it under the terms of the GNU General Public License as published by
1.4050 ++ the Free Software Foundation; either version 2 of the License, or
1.4051 ++ (at your option) any later version.
1.4052 ++
1.4053 ++ This program is distributed in the hope that it will be useful,
1.4054 ++ but WITHOUT ANY WARRANTY; without even the implied warranty of
1.4055 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.4056 ++ GNU General Public License for more details.
1.4057 ++
1.4058 ++ You should have received a copy of the GNU General Public License
1.4059 ++ along with this program; if not, write to the Free Software
1.4060 ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
1.4061 ++
1.4062 ++void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
1.4063 ++ int direct_data_refs);
1.4064 +--- a/bfd/elf-bfd.h
1.4065 ++++ b/bfd/elf-bfd.h
1.4066 +@@ -1400,6 +1400,10 @@ struct elf_obj_tdata
1.4067 + find_nearest_line. */
1.4068 + struct mips_elf_find_line *find_line_info;
1.4069 +
1.4070 ++ /* Used by AVR32 ELF relaxation code. Contains an array of pointers
1.4071 ++ for each local symbol to the fragment where it is defined. */
1.4072 ++ struct fragment **local_sym_frag;
1.4073 ++
1.4074 + /* A place to stash dwarf1 info for this bfd. */
1.4075 + struct dwarf1_debug *dwarf1_find_line_info;
1.4076 +
1.4077 +--- a/bfd/Makefile.am
1.4078 ++++ b/bfd/Makefile.am
1.4079 +@@ -63,6 +63,7 @@ ALL_MACHINES = \
1.4080 + cpu-arc.lo \
1.4081 + cpu-arm.lo \
1.4082 + cpu-avr.lo \
1.4083 ++ cpu-avr32.lo \
1.4084 + cpu-bfin.lo \
1.4085 + cpu-cr16.lo \
1.4086 + cpu-cr16c.lo \
1.4087 +@@ -243,6 +244,7 @@ BFD32_BACKENDS = \
1.4088 + elf32-arc.lo \
1.4089 + elf32-arm.lo \
1.4090 + elf32-avr.lo \
1.4091 ++ elf32-avr32.lo \
1.4092 + elf32-bfin.lo \
1.4093 + elf32-cr16.lo \
1.4094 + elf32-cr16c.lo \
1.4095 +@@ -1328,6 +1330,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
1.4096 + $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
1.4097 + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
1.4098 + $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
1.4099 ++elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
1.4100 ++ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
1.4101 ++ $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
1.4102 ++ elf32-target.h
1.4103 + elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
1.4104 + $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
1.4105 + $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
1.4106 +--- a/bfd/reloc.c
1.4107 ++++ b/bfd/reloc.c
1.4108 +@@ -3948,6 +3948,131 @@ ENUMDOC
1.4109 + instructions
1.4110 +
1.4111 + ENUM
1.4112 ++ BFD_RELOC_AVR32_DIFF32
1.4113 ++ENUMX
1.4114 ++ BFD_RELOC_AVR32_DIFF16
1.4115 ++ENUMX
1.4116 ++ BFD_RELOC_AVR32_DIFF8
1.4117 ++ENUMDOC
1.4118 ++ Difference between two labels: L2 - L1. The value of L1 is encoded
1.4119 ++ as sym + addend, while the initial difference after assembly is
1.4120 ++ inserted into the object file by the assembler.
1.4121 ++ENUM
1.4122 ++ BFD_RELOC_AVR32_GOT32
1.4123 ++ENUMX
1.4124 ++ BFD_RELOC_AVR32_GOT16
1.4125 ++ENUMX
1.4126 ++ BFD_RELOC_AVR32_GOT8
1.4127 ++ENUMDOC
1.4128 ++ Reference to a symbol through the Global Offset Table. The linker
1.4129 ++ will allocate an entry for symbol in the GOT and insert the offset
1.4130 ++ of this entry as the relocation value.
1.4131 ++ENUM
1.4132 ++ BFD_RELOC_AVR32_21S
1.4133 ++ENUMX
1.4134 ++ BFD_RELOC_AVR32_16U
1.4135 ++ENUMX
1.4136 ++ BFD_RELOC_AVR32_16S
1.4137 ++ENUMX
1.4138 ++ BFD_RELOC_AVR32_SUB5
1.4139 ++ENUMX
1.4140 ++ BFD_RELOC_AVR32_8S_EXT
1.4141 ++ENUMX
1.4142 ++ BFD_RELOC_AVR32_8S
1.4143 ++ENUMX
1.4144 ++ BFD_RELOC_AVR32_15S
1.4145 ++ENUMDOC
1.4146 ++ Normal (non-pc-relative) code relocations. Alignment and signedness
1.4147 ++ is indicated by the suffixes. S means signed, U means unsigned. W
1.4148 ++ means word-aligned, H means halfword-aligned, neither means
1.4149 ++ byte-aligned (no alignment.) SUB5 is the same relocation as 16S.
1.4150 ++ENUM
1.4151 ++ BFD_RELOC_AVR32_22H_PCREL
1.4152 ++ENUMX
1.4153 ++ BFD_RELOC_AVR32_18W_PCREL
1.4154 ++ENUMX
1.4155 ++ BFD_RELOC_AVR32_16B_PCREL
1.4156 ++ENUMX
1.4157 ++ BFD_RELOC_AVR32_16N_PCREL
1.4158 ++ENUMX
1.4159 ++ BFD_RELOC_AVR32_14UW_PCREL
1.4160 ++ENUMX
1.4161 ++ BFD_RELOC_AVR32_11H_PCREL
1.4162 ++ENUMX
1.4163 ++ BFD_RELOC_AVR32_10UW_PCREL
1.4164 ++ENUMX
1.4165 ++ BFD_RELOC_AVR32_9H_PCREL
1.4166 ++ENUMX
1.4167 ++ BFD_RELOC_AVR32_9UW_PCREL
1.4168 ++ENUMDOC
1.4169 ++ PC-relative relocations are signed if neither 'U' nor 'S' is
1.4170 ++ specified. However, we explicitly tack on a 'B' to indicate no
1.4171 ++ alignment, to avoid confusion with data relocs. All of these resolve
1.4172 ++ to sym + addend - offset, except the one with 'N' (negated) suffix.
1.4173 ++ This particular one resolves to offset - sym - addend.
1.4174 ++ENUM
1.4175 ++ BFD_RELOC_AVR32_GOTPC
1.4176 ++ENUMDOC
1.4177 ++ Subtract the link-time address of the GOT from (symbol + addend)
1.4178 ++ and insert the result.
1.4179 ++ENUM
1.4180 ++ BFD_RELOC_AVR32_GOTCALL
1.4181 ++ENUMX
1.4182 ++ BFD_RELOC_AVR32_LDA_GOT
1.4183 ++ENUMX
1.4184 ++ BFD_RELOC_AVR32_GOT21S
1.4185 ++ENUMX
1.4186 ++ BFD_RELOC_AVR32_GOT18SW
1.4187 ++ENUMX
1.4188 ++ BFD_RELOC_AVR32_GOT16S
1.4189 ++ENUMDOC
1.4190 ++ Reference to a symbol through the GOT. The linker will allocate an
1.4191 ++ entry for symbol in the GOT and insert the offset of this entry as
1.4192 ++ the relocation value. addend must be zero. As usual, 'S' means
1.4193 ++ signed, 'W' means word-aligned, etc.
1.4194 ++ENUM
1.4195 ++ BFD_RELOC_AVR32_32_CPENT
1.4196 ++ENUMDOC
1.4197 ++ 32-bit constant pool entry. I don't think 8- and 16-bit entries make
1.4198 ++ a whole lot of sense.
1.4199 ++ENUM
1.4200 ++ BFD_RELOC_AVR32_CPCALL
1.4201 ++ENUMX
1.4202 ++ BFD_RELOC_AVR32_16_CP
1.4203 ++ENUMX
1.4204 ++ BFD_RELOC_AVR32_9W_CP
1.4205 ++ENUMDOC
1.4206 ++ Constant pool references. Some of these relocations are signed,
1.4207 ++ others are unsigned. It doesn't really matter, since the constant
1.4208 ++ pool always comes after the code that references it.
1.4209 ++ENUM
1.4210 ++ BFD_RELOC_AVR32_ALIGN
1.4211 ++ENUMDOC
1.4212 ++ sym must be the absolute symbol. The addend specifies the alignment
1.4213 ++ order, e.g. if addend is 2, the linker must add padding so that the
1.4214 ++ next address is aligned to a 4-byte boundary.
1.4215 ++ENUM
1.4216 ++ BFD_RELOC_AVR32_14UW
1.4217 ++ENUMX
1.4218 ++ BFD_RELOC_AVR32_10UW
1.4219 ++ENUMX
1.4220 ++ BFD_RELOC_AVR32_10SW
1.4221 ++ENUMX
1.4222 ++ BFD_RELOC_AVR32_STHH_W
1.4223 ++ENUMX
1.4224 ++ BFD_RELOC_AVR32_7UW
1.4225 ++ENUMX
1.4226 ++ BFD_RELOC_AVR32_6S
1.4227 ++ENUMX
1.4228 ++ BFD_RELOC_AVR32_6UW
1.4229 ++ENUMX
1.4230 ++ BFD_RELOC_AVR32_4UH
1.4231 ++ENUMX
1.4232 ++ BFD_RELOC_AVR32_3U
1.4233 ++ENUMDOC
1.4234 ++ Code relocations that will never make it to the output file.
1.4235 ++
1.4236 ++ENUM
1.4237 + BFD_RELOC_390_12
1.4238 + ENUMDOC
1.4239 + Direct 12 bit.
1.4240 +--- a/bfd/targets.c
1.4241 ++++ b/bfd/targets.c
1.4242 +@@ -564,6 +564,7 @@ extern const bfd_target bfd_efi_app_ia32
1.4243 + extern const bfd_target bfd_efi_app_x86_64_vec;
1.4244 + extern const bfd_target bfd_efi_app_ia64_vec;
1.4245 + extern const bfd_target bfd_elf32_avr_vec;
1.4246 ++extern const bfd_target bfd_elf32_avr32_vec;
1.4247 + extern const bfd_target bfd_elf32_bfin_vec;
1.4248 + extern const bfd_target bfd_elf32_bfinfdpic_vec;
1.4249 + extern const bfd_target bfd_elf32_big_generic_vec;
1.4250 +@@ -884,6 +885,7 @@ static const bfd_target * const _bfd_tar
1.4251 + &bfd_efi_app_ia64_vec,
1.4252 + #endif
1.4253 + &bfd_elf32_avr_vec,
1.4254 ++ &bfd_elf32_avr32_vec,
1.4255 + &bfd_elf32_bfin_vec,
1.4256 + &bfd_elf32_bfinfdpic_vec,
1.4257 +
1.4258 +--- a/binutils/Makefile.am
1.4259 ++++ b/binutils/Makefile.am
1.4260 +@@ -577,7 +577,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
1.4261 + $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
1.4262 + $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
1.4263 + $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
1.4264 +- $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
1.4265 ++ $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
1.4266 + $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
1.4267 + $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
1.4268 + $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
1.4269 +--- a/binutils/readelf.c
1.4270 ++++ b/binutils/readelf.c
1.4271 +@@ -21,7 +21,7 @@
1.4272 + along with this program; if not, write to the Free Software
1.4273 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
1.4274 + 02110-1301, USA. */
1.4275 +-
1.4276 ++
1.4277 + /* The difference between readelf and objdump:
1.4278 +
1.4279 + Both programs are capable of displaying the contents of ELF format files,
1.4280 +@@ -40,7 +40,7 @@
1.4281 + There is also the case that readelf can provide more information about an
1.4282 + ELF file than is provided by objdump. In particular it can display DWARF
1.4283 + debugging information which (at the moment) objdump cannot. */
1.4284 +-
1.4285 ++
1.4286 + #include "sysdep.h"
1.4287 + #include <assert.h>
1.4288 + #include <sys/stat.h>
1.4289 +@@ -109,6 +109,7 @@
1.4290 + #include "elf/arc.h"
1.4291 + #include "elf/arm.h"
1.4292 + #include "elf/avr.h"
1.4293 ++#include "elf/avr32.h"
1.4294 + #include "elf/bfin.h"
1.4295 + #include "elf/cr16.h"
1.4296 + #include "elf/cris.h"
1.4297 +@@ -303,7 +304,7 @@ static void (*byte_put) (unsigned char *
1.4298 + #define streq(a,b) (strcmp ((a), (b)) == 0)
1.4299 + #define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
1.4300 + #define const_strneq(a,b) (strncmp ((a), (b), sizeof (b) - 1) == 0)
1.4301 +-
1.4302 ++
1.4303 + static void *
1.4304 + get_data (void *var, FILE *file, long offset, size_t size, size_t nmemb,
1.4305 + const char *reason)
1.4306 +@@ -614,6 +615,7 @@ guess_is_rela (unsigned long e_machine)
1.4307 + case EM_ALPHA:
1.4308 + case EM_ALTERA_NIOS2:
1.4309 + case EM_AVR:
1.4310 ++ case EM_AVR32:
1.4311 + case EM_AVR_OLD:
1.4312 + case EM_BLACKFIN:
1.4313 + case EM_CR16:
1.4314 +@@ -1006,6 +1008,10 @@ dump_relocations (FILE *file,
1.4315 + rtype = elf_avr_reloc_type (type);
1.4316 + break;
1.4317 +
1.4318 ++ case EM_AVR32:
1.4319 ++ rtype = elf_avr32_reloc_type (type);
1.4320 ++ break;
1.4321 ++
1.4322 + case EM_OLD_SPARCV9:
1.4323 + case EM_SPARC32PLUS:
1.4324 + case EM_SPARCV9:
1.4325 +@@ -1763,6 +1769,7 @@ get_machine_name (unsigned e_machine)
1.4326 + case EM_VAX: return "Digital VAX";
1.4327 + case EM_AVR_OLD:
1.4328 + case EM_AVR: return "Atmel AVR 8-bit microcontroller";
1.4329 ++ case EM_AVR32: return "Atmel AVR32";
1.4330 + case EM_CRIS: return "Axis Communications 32-bit embedded processor";
1.4331 + case EM_JAVELIN: return "Infineon Technologies 32-bit embedded cpu";
1.4332 + case EM_FIREPATH: return "Element 14 64-bit DSP processor";
1.4333 +--- a/gas/as.c
1.4334 ++++ b/gas/as.c
1.4335 +@@ -441,10 +441,10 @@ parse_args (int * pargc, char *** pargv)
1.4336 + the end of the preceeding line so that it is simpler to
1.4337 + selectively add and remove lines from this list. */
1.4338 + {"alternate", no_argument, NULL, OPTION_ALTERNATE}
1.4339 +- /* The entry for "a" is here to prevent getopt_long_only() from
1.4340 +- considering that -a is an abbreviation for --alternate. This is
1.4341 +- necessary because -a=<FILE> is a valid switch but getopt would
1.4342 +- normally reject it since --alternate does not take an argument. */
1.4343 ++ /* The next two entries are here to prevent getopt_long_only() from
1.4344 ++ considering that -a or -al is an abbreviation for --alternate.
1.4345 ++ This is necessary because -a=<FILE> is a valid switch but getopt
1.4346 ++ would normally reject it since --alternate does not take an argument. */
1.4347 + ,{"a", optional_argument, NULL, 'a'}
1.4348 + /* Handle -al=<FILE>. */
1.4349 + ,{"al", optional_argument, NULL, OPTION_AL}
1.4350 +@@ -803,8 +803,15 @@ This program has absolutely no warranty.
1.4351 + case 'a':
1.4352 + if (optarg)
1.4353 + {
1.4354 +- if (optarg != old_argv[optind] && optarg[-1] == '=')
1.4355 +- --optarg;
1.4356 ++ /* If optarg is part of the -a switch and not a separate argument
1.4357 ++ in its own right, then scan backwards to the just after the -a.
1.4358 ++ This means skipping over both '=' and 'l' which might have been
1.4359 ++ taken to be part of the -a switch itself. */
1.4360 ++ if (optarg != old_argv[optind])
1.4361 ++ {
1.4362 ++ while (optarg[-1] == '=' || optarg[-1] == 'l')
1.4363 ++ --optarg;
1.4364 ++ }
1.4365 +
1.4366 + if (md_parse_option (optc, optarg) != 0)
1.4367 + break;
1.4368 +@@ -1234,7 +1241,7 @@ main (int argc, char ** argv)
1.4369 + keep_it = 0;
1.4370 +
1.4371 + if (!keep_it)
1.4372 +- unlink_if_ordinary (out_file_name);
1.4373 ++ unlink (out_file_name);
1.4374 +
1.4375 + input_scrub_end ();
1.4376 +
1.4377 +--- /dev/null
1.4378 ++++ b/gas/config/tc-avr32.c
1.4379 +@@ -0,0 +1,4806 @@
1.4380 ++/* Assembler implementation for AVR32.
1.4381 ++ Copyright 2003-2006 Atmel Corporation.
1.4382 ++
1.4383 ++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
1.4384 ++
1.4385 ++ This file is part of GAS, the GNU Assembler.
1.4386 ++
1.4387 ++ GAS is free software; you can redistribute it and/or modify it
1.4388 ++ under the terms of the GNU General Public License as published by
1.4389 ++ the Free Software Foundation; either version 2, or (at your option)
1.4390 ++ any later version.
1.4391 ++
1.4392 ++ GAS is distributed in the hope that it will be useful, but WITHOUT
1.4393 ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
1.4394 ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
1.4395 ++ License for more details.
1.4396 ++
1.4397 ++ You should have received a copy of the GNU General Public License
1.4398 ++ along with GAS; see the file COPYING. If not, write to the Free
1.4399 ++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
1.4400 ++ 02111-1307, USA. */
1.4401 ++
1.4402 ++#include <stdio.h>
1.4403 ++#include "as.h"
1.4404 ++#include "safe-ctype.h"
1.4405 ++#include "subsegs.h"
1.4406 ++#include "symcat.h"
1.4407 ++#include "opcodes/avr32-opc.h"
1.4408 ++#include "opcodes/avr32-asm.h"
1.4409 ++#include "elf/avr32.h"
1.4410 ++#include "dwarf2dbg.h"
1.4411 ++
1.4412 ++#define xDEBUG
1.4413 ++#define xOPC_CONSISTENCY_CHECK
1.4414 ++
1.4415 ++#ifdef DEBUG
1.4416 ++# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
1.4417 ++#else
1.4418 ++# define pr_debug(fmt, args...)
1.4419 ++#endif
1.4420 ++
1.4421 ++/* 3 MSB of instruction word indicate group. Group 7 -> extended */
1.4422 ++#define AVR32_COMPACT_P(opcode) ((opcode[0] & 0xe0) != 0xe0)
1.4423 ++
1.4424 ++#define streq(a, b) (strcmp(a, b) == 0)
1.4425 ++#define skip_whitespace(str) do { while(*(str) == ' ') ++(str); } while(0)
1.4426 ++
1.4427 ++/* Flags given on the command line */
1.4428 ++static int avr32_pic = FALSE;
1.4429 ++int linkrelax = FALSE;
1.4430 ++int avr32_iarcompat = FALSE;
1.4431 ++
1.4432 ++/* This array holds the chars that always start a comment. */
1.4433 ++const char comment_chars[] = "#";
1.4434 ++
1.4435 ++/* This array holds the chars that only start a comment at the
1.4436 ++ beginning of a line. We must include '#' here because the compiler
1.4437 ++ may produce #APP and #NO_APP in its output. */
1.4438 ++const char line_comment_chars[] = "#";
1.4439 ++
1.4440 ++/* These may be used instead of newline (same as ';' in C). */
1.4441 ++const char line_separator_chars[] = ";";
1.4442 ++
1.4443 ++/* Chars that can be used to separate mantissa from exponent in
1.4444 ++ floating point numbers. */
1.4445 ++const char EXP_CHARS[] = "eE";
1.4446 ++
1.4447 ++/* Chars that mean this number is a floating point constant. */
1.4448 ++const char FLT_CHARS[] = "dD";
1.4449 ++
1.4450 ++/* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
1.4451 ++symbolS *GOT_symbol;
1.4452 ++
1.4453 ++static struct hash_control *avr32_mnemonic_htab;
1.4454 ++
1.4455 ++struct avr32_ifield_data
1.4456 ++{
1.4457 ++ bfd_vma value;
1.4458 ++ /* FIXME: Get rid of align_order and complain. complain is never
1.4459 ++ used, align_order is used in one place. Try to use the relax
1.4460 ++ table instead. */
1.4461 ++ unsigned int align_order;
1.4462 ++};
1.4463 ++
1.4464 ++struct avr32_insn
1.4465 ++{
1.4466 ++ const struct avr32_syntax *syntax;
1.4467 ++ expressionS immediate;
1.4468 ++ int pcrel;
1.4469 ++ int force_extended;
1.4470 ++ unsigned int next_slot;
1.4471 ++ bfd_reloc_code_real_type r_type;
1.4472 ++ struct avr32_ifield_data field_value[AVR32_MAX_FIELDS];
1.4473 ++};
1.4474 ++
1.4475 ++static struct avr32_insn current_insn;
1.4476 ++
1.4477 ++/* The target specific pseudo-ops we support. */
1.4478 ++static void s_rseg (int);
1.4479 ++static void s_cpool(int);
1.4480 ++
1.4481 ++const pseudo_typeS md_pseudo_table[] =
1.4482 ++{
1.4483 ++ /* Make sure that .word is 32 bits */
1.4484 ++ { "word", cons, 4 },
1.4485 ++ { "file", (void (*) PARAMS ((int))) dwarf2_directive_file, 0 },
1.4486 ++ { "loc", dwarf2_directive_loc, 0 },
1.4487 ++
1.4488 ++ /* .lcomm requires an explicit alignment parameter */
1.4489 ++ { "lcomm", s_lcomm, 1 },
1.4490 ++
1.4491 ++ /* AVR32-specific pseudo-ops */
1.4492 ++ { "cpool", s_cpool, 0},
1.4493 ++
1.4494 ++ /* IAR compatible pseudo-ops */
1.4495 ++ { "program", s_ignore, 0 },
1.4496 ++ { "public", s_globl, 0 },
1.4497 ++ { "extern", s_ignore, 0 },
1.4498 ++ { "module", s_ignore, 0 },
1.4499 ++ { "rseg", s_rseg, 0 },
1.4500 ++ { "dc8", cons, 1 },
1.4501 ++ { "dc16", cons, 2 },
1.4502 ++ { "dc32", cons, 4 },
1.4503 ++
1.4504 ++ { NULL, NULL, 0 }
1.4505 ++};
1.4506 ++
1.4507 ++/* Questionable stuff starts here */
1.4508 ++
1.4509 ++enum avr32_opinfo {
1.4510 ++ AVR32_OPINFO_NONE = BFD_RELOC_NONE,
1.4511 ++ AVR32_OPINFO_GOT,
1.4512 ++ AVR32_OPINFO_TLSGD,
1.4513 ++ AVR32_OPINFO_HI,
1.4514 ++ AVR32_OPINFO_LO,
1.4515 ++};
1.4516 ++
1.4517 ++enum avr32_arch {
1.4518 ++ ARCH_TYPE_AP,
1.4519 ++ ARCH_TYPE_UCR1,
1.4520 ++ ARCH_TYPE_UCR2,
1.4521 ++};
1.4522 ++
1.4523 ++struct arch_type_s
1.4524 ++{
1.4525 ++ /* Architecture name */
1.4526 ++ char *name;
1.4527 ++ /* Instruction Set Architecture Flags */
1.4528 ++ unsigned long isa_flags;
1.4529 ++};
1.4530 ++
1.4531 ++struct part_type_s
1.4532 ++{
1.4533 ++ /* Part name */
1.4534 ++ char *name;
1.4535 ++ /* Architecture type */
1.4536 ++ unsigned int arch;
1.4537 ++};
1.4538 ++
1.4539 ++static struct arch_type_s arch_types[] =
1.4540 ++{
1.4541 ++ {"ap", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_PICO},
1.4542 ++ {"ucr1", AVR32_V1 | AVR32_DSP | AVR32_RMW},
1.4543 ++ {"ucr2", AVR32_V1 | AVR32_V2 | AVR32_DSP | AVR32_RMW},
1.4544 ++ {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO},
1.4545 ++ {NULL, 0}
1.4546 ++};
1.4547 ++
1.4548 ++static struct part_type_s part_types[] = {
1.4549 ++ {"ap7000", ARCH_TYPE_AP},
1.4550 ++ {"ap7001", ARCH_TYPE_AP},
1.4551 ++ {"ap7002", ARCH_TYPE_AP},
1.4552 ++ {"ap7200", ARCH_TYPE_AP},
1.4553 ++ {"uc3a0128", ARCH_TYPE_UCR2},
1.4554 ++ {"uc3a0256", ARCH_TYPE_UCR2},
1.4555 ++ {"uc3a0512es", ARCH_TYPE_UCR1},
1.4556 ++ {"uc3a0512", ARCH_TYPE_UCR2},
1.4557 ++ {"uc3a1128", ARCH_TYPE_UCR2},
1.4558 ++ {"uc3a1256es", ARCH_TYPE_UCR1},
1.4559 ++ {"uc3a1256", ARCH_TYPE_UCR2},
1.4560 ++ {"uc3a1512es", ARCH_TYPE_UCR1},
1.4561 ++ {"uc3a1512", ARCH_TYPE_UCR2},
1.4562 ++ {"uc3a364", ARCH_TYPE_UCR2},
1.4563 ++ {"uc3a364s", ARCH_TYPE_UCR2},
1.4564 ++ {"uc3a3128", ARCH_TYPE_UCR2},
1.4565 ++ {"uc3a3128s", ARCH_TYPE_UCR2},
1.4566 ++ {"uc3a3256", ARCH_TYPE_UCR2},
1.4567 ++ {"uc3a3256s", ARCH_TYPE_UCR2},
1.4568 ++ {"uc3b064", ARCH_TYPE_UCR1},
1.4569 ++ {"uc3b0128", ARCH_TYPE_UCR1},
1.4570 ++ {"uc3b0256es", ARCH_TYPE_UCR1},
1.4571 ++ {"uc3b0256", ARCH_TYPE_UCR1},
1.4572 ++ {"uc3b164", ARCH_TYPE_UCR1},
1.4573 ++ {"uc3b1128", ARCH_TYPE_UCR1},
1.4574 ++ {"uc3b1256es", ARCH_TYPE_UCR1},
1.4575 ++ {"uc3b1256", ARCH_TYPE_UCR1},
1.4576 ++ {NULL, 0}
1.4577 ++};
1.4578 ++
1.4579 ++/* Current architecture type. */
1.4580 ++static struct arch_type_s default_arch = {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO };
1.4581 ++static struct arch_type_s *avr32_arch = &default_arch;
1.4582 ++
1.4583 ++/* Display nicely formatted list of known part- and architecture names. */
1.4584 ++
1.4585 ++static void
1.4586 ++show_arch_list (FILE *stream)
1.4587 ++{
1.4588 ++ int i, x;
1.4589 ++
1.4590 ++ fprintf (stream, _("Known architecture names:"));
1.4591 ++ x = 1000;
1.4592 ++
1.4593 ++ for (i = 0; arch_types[i].name; i++)
1.4594 ++ {
1.4595 ++ int len = strlen (arch_types[i].name);
1.4596 ++
1.4597 ++ x += len + 1;
1.4598 ++
1.4599 ++ if (x < 75)
1.4600 ++ fprintf (stream, " %s", arch_types[i].name);
1.4601 ++ else
1.4602 ++ {
1.4603 ++ fprintf (stream, "\n %s", arch_types[i].name);
1.4604 ++ x = len + 2;
1.4605 ++ }
1.4606 ++ }
1.4607 ++
1.4608 ++ fprintf (stream, "\n");
1.4609 ++}
1.4610 ++
1.4611 ++static void
1.4612 ++show_part_list (FILE *stream)
1.4613 ++{
1.4614 ++ int i, x;
1.4615 ++
1.4616 ++ fprintf (stream, _("Known part names:"));
1.4617 ++ x = 1000;
1.4618 ++
1.4619 ++ for (i = 0; part_types[i].name; i++)
1.4620 ++ {
1.4621 ++ int len = strlen(part_types[i].name);
1.4622 ++
1.4623 ++ x += len + 1;
1.4624 ++
1.4625 ++ if (x < 75)
1.4626 ++ fprintf (stream, " %s", part_types[i].name);
1.4627 ++ else
1.4628 ++ {
1.4629 ++ fprintf(stream, "\n %s", part_types[i].name);
1.4630 ++ x = len + 2;
1.4631 ++ }
1.4632 ++ }
1.4633 ++
1.4634 ++ fprintf (stream, "\n");
1.4635 ++}
1.4636 ++
1.4637 ++const char *md_shortopts = "";
1.4638 ++struct option md_longopts[] =
1.4639 ++{
1.4640 ++#define OPTION_ARCH (OPTION_MD_BASE)
1.4641 ++#define OPTION_PART (OPTION_ARCH + 1)
1.4642 ++#define OPTION_IAR (OPTION_PART + 1)
1.4643 ++#define OPTION_PIC (OPTION_IAR + 1)
1.4644 ++#define OPTION_NOPIC (OPTION_PIC + 1)
1.4645 ++#define OPTION_LINKRELAX (OPTION_NOPIC + 1)
1.4646 ++#define OPTION_NOLINKRELAX (OPTION_LINKRELAX + 1)
1.4647 ++#define OPTION_DIRECT_DATA_REFS (OPTION_NOLINKRELAX + 1)
1.4648 ++ {"march", required_argument, NULL, OPTION_ARCH},
1.4649 ++ {"mpart", required_argument, NULL, OPTION_PART},
1.4650 ++ {"iar", no_argument, NULL, OPTION_IAR},
1.4651 ++ {"pic", no_argument, NULL, OPTION_PIC},
1.4652 ++ {"no-pic", no_argument, NULL, OPTION_NOPIC},
1.4653 ++ {"linkrelax", no_argument, NULL, OPTION_LINKRELAX},
1.4654 ++ {"no-linkrelax", no_argument, NULL, OPTION_NOLINKRELAX},
1.4655 ++ /* deprecated alias for -mpart=xxx */
1.4656 ++ {"mcpu", required_argument, NULL, OPTION_PART},
1.4657 ++ {NULL, no_argument, NULL, 0}
1.4658 ++};
1.4659 ++
1.4660 ++size_t md_longopts_size = sizeof (md_longopts);
1.4661 ++
1.4662 ++void
1.4663 ++md_show_usage (FILE *stream)
1.4664 ++{
1.4665 ++ fprintf (stream, _("\
1.4666 ++AVR32 options:\n\
1.4667 ++ -march=[arch-name] Select cpu architecture. [Default `all-insn']\n\
1.4668 ++ -mpart=[part-name] Select specific part. [Default `none']\n\
1.4669 ++ --pic Produce Position-Independent Code\n\
1.4670 ++ --no-pic Don't produce Position-Independent Code\n\
1.4671 ++ --linkrelax Produce output suitable for linker relaxing\n\
1.4672 ++ --no-linkrelax Don't produce output suitable for linker relaxing\n"));
1.4673 ++ show_arch_list(stream);
1.4674 ++}
1.4675 ++
1.4676 ++int
1.4677 ++md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
1.4678 ++{
1.4679 ++ switch (c)
1.4680 ++ {
1.4681 ++ case OPTION_ARCH:
1.4682 ++ {
1.4683 ++ int i;
1.4684 ++ char *s = alloca (strlen (arg) + 1);
1.4685 ++
1.4686 ++ {
1.4687 ++ char *t = s;
1.4688 ++ char *arg1 = arg;
1.4689 ++
1.4690 ++ do
1.4691 ++ *t = TOLOWER (*arg1++);
1.4692 ++ while (*t++);
1.4693 ++ }
1.4694 ++
1.4695 ++ /* Add backward compability */
1.4696 ++ if (strcmp ("uc", s)== 0)
1.4697 ++ {
1.4698 ++ as_warn("Deprecated arch `%s' specified. "
1.4699 ++ "Please use '-march=ucr1' instead. "
1.4700 ++ "Converting to arch 'ucr1'\n",
1.4701 ++ s);
1.4702 ++ s="ucr1";
1.4703 ++ }
1.4704 ++
1.4705 ++ for (i = 0; arch_types[i].name; ++i)
1.4706 ++ if (strcmp (arch_types[i].name, s) == 0)
1.4707 ++ break;
1.4708 ++
1.4709 ++ if (!arch_types[i].name)
1.4710 ++ {
1.4711 ++ show_arch_list (stderr);
1.4712 ++ as_fatal (_("unknown architecture: %s\n"), arg);
1.4713 ++ }
1.4714 ++
1.4715 ++ avr32_arch = &arch_types[i];
1.4716 ++ break;
1.4717 ++ }
1.4718 ++ case OPTION_PART:
1.4719 ++ {
1.4720 ++ int i;
1.4721 ++ char *s = alloca (strlen (arg) + 1);
1.4722 ++ char *t = s;
1.4723 ++ char *p = arg;
1.4724 ++
1.4725 ++ /* If arch type has already been set, don't bother.
1.4726 ++ -march= always overrides -mpart= */
1.4727 ++ if (avr32_arch != &default_arch)
1.4728 ++ break;
1.4729 ++
1.4730 ++ do
1.4731 ++ *t = TOLOWER (*p++);
1.4732 ++ while (*t++);
1.4733 ++
1.4734 ++ for (i = 0; part_types[i].name; ++i)
1.4735 ++ if (strcmp (part_types[i].name, s) == 0)
1.4736 ++ break;
1.4737 ++
1.4738 ++ if (!part_types[i].name)
1.4739 ++ {
1.4740 ++ show_part_list (stderr);
1.4741 ++ as_fatal (_("unknown part: %s\n"), arg);
1.4742 ++ }
1.4743 ++
1.4744 ++ avr32_arch = &arch_types[part_types[i].arch];
1.4745 ++ break;
1.4746 ++ }
1.4747 ++ case OPTION_IAR:
1.4748 ++ avr32_iarcompat = 1;
1.4749 ++ break;
1.4750 ++ case OPTION_PIC:
1.4751 ++ avr32_pic = 1;
1.4752 ++ break;
1.4753 ++ case OPTION_NOPIC:
1.4754 ++ avr32_pic = 0;
1.4755 ++ break;
1.4756 ++ case OPTION_LINKRELAX:
1.4757 ++ linkrelax = 1;
1.4758 ++ break;
1.4759 ++ case OPTION_NOLINKRELAX:
1.4760 ++ linkrelax = 0;
1.4761 ++ break;
1.4762 ++ default:
1.4763 ++ return 0;
1.4764 ++ }
1.4765 ++ return 1;
1.4766 ++}
1.4767 ++
1.4768 ++/* Can't use symbol_new here, so have to create a symbol and then at
1.4769 ++ a later date assign it a value. Thats what these functions do.
1.4770 ++
1.4771 ++ Shamelessly stolen from ARM. */
1.4772 ++
1.4773 ++static void
1.4774 ++symbol_locate (symbolS * symbolP,
1.4775 ++ const char * name, /* It is copied, the caller can modify. */
1.4776 ++ segT segment, /* Segment identifier (SEG_<something>). */
1.4777 ++ valueT valu, /* Symbol value. */
1.4778 ++ fragS * frag) /* Associated fragment. */
1.4779 ++{
1.4780 ++ unsigned int name_length;
1.4781 ++ char * preserved_copy_of_name;
1.4782 ++
1.4783 ++ name_length = strlen (name) + 1; /* +1 for \0. */
1.4784 ++ obstack_grow (¬es, name, name_length);
1.4785 ++ preserved_copy_of_name = obstack_finish (¬es);
1.4786 ++#ifdef STRIP_UNDERSCORE
1.4787 ++ if (preserved_copy_of_name[0] == '_')
1.4788 ++ preserved_copy_of_name++;
1.4789 ++#endif
1.4790 ++
1.4791 ++#ifdef tc_canonicalize_symbol_name
1.4792 ++ preserved_copy_of_name =
1.4793 ++ tc_canonicalize_symbol_name (preserved_copy_of_name);
1.4794 ++#endif
1.4795 ++
1.4796 ++ S_SET_NAME (symbolP, preserved_copy_of_name);
1.4797 ++
1.4798 ++ S_SET_SEGMENT (symbolP, segment);
1.4799 ++ S_SET_VALUE (symbolP, valu);
1.4800 ++ symbol_clear_list_pointers (symbolP);
1.4801 ++
1.4802 ++ symbol_set_frag (symbolP, frag);
1.4803 ++
1.4804 ++ /* Link to end of symbol chain. */
1.4805 ++ {
1.4806 ++ extern int symbol_table_frozen;
1.4807 ++
1.4808 ++ if (symbol_table_frozen)
1.4809 ++ abort ();
1.4810 ++ }
1.4811 ++
1.4812 ++ symbol_append (symbolP, symbol_lastP, & symbol_rootP, & symbol_lastP);
1.4813 ++
1.4814 ++ obj_symbol_new_hook (symbolP);
1.4815 ++
1.4816 ++#ifdef tc_symbol_new_hook
1.4817 ++ tc_symbol_new_hook (symbolP);
1.4818 ++#endif
1.4819 ++
1.4820 ++#ifdef DEBUG_SYMS
1.4821 ++ verify_symbol_chain (symbol_rootP, symbol_lastP);
1.4822 ++#endif /* DEBUG_SYMS */
1.4823 ++}
1.4824 ++
1.4825 ++struct cpool_entry
1.4826 ++{
1.4827 ++ int refcount;
1.4828 ++ offsetT offset;
1.4829 ++ expressionS exp;
1.4830 ++};
1.4831 ++
1.4832 ++struct cpool
1.4833 ++{
1.4834 ++ struct cpool *next;
1.4835 ++ int used;
1.4836 ++ struct cpool_entry *literals;
1.4837 ++ unsigned int padding;
1.4838 ++ unsigned int next_free_entry;
1.4839 ++ unsigned int id;
1.4840 ++ symbolS *symbol;
1.4841 ++ segT section;
1.4842 ++ subsegT sub_section;
1.4843 ++};
1.4844 ++
1.4845 ++struct cpool *cpool_list = NULL;
1.4846 ++
1.4847 ++static struct cpool *
1.4848 ++find_cpool(segT section, subsegT sub_section)
1.4849 ++{
1.4850 ++ struct cpool *pool;
1.4851 ++
1.4852 ++ for (pool = cpool_list; pool != NULL; pool = pool->next)
1.4853 ++ {
1.4854 ++ if (!pool->used
1.4855 ++ && pool->section == section
1.4856 ++ && pool->sub_section == sub_section)
1.4857 ++ break;
1.4858 ++ }
1.4859 ++
1.4860 ++ return pool;
1.4861 ++}
1.4862 ++
1.4863 ++static struct cpool *
1.4864 ++find_or_make_cpool(segT section, subsegT sub_section)
1.4865 ++{
1.4866 ++ static unsigned int next_cpool_id = 0;
1.4867 ++ struct cpool *pool;
1.4868 ++
1.4869 ++ pool = find_cpool(section, sub_section);
1.4870 ++
1.4871 ++ if (!pool)
1.4872 ++ {
1.4873 ++ pool = xmalloc(sizeof(*pool));
1.4874 ++ if (!pool)
1.4875 ++ return NULL;
1.4876 ++
1.4877 ++ pool->used = 0;
1.4878 ++ pool->literals = NULL;
1.4879 ++ pool->padding = 0;
1.4880 ++ pool->next_free_entry = 0;
1.4881 ++ pool->section = section;
1.4882 ++ pool->sub_section = sub_section;
1.4883 ++ pool->next = cpool_list;
1.4884 ++ pool->symbol = NULL;
1.4885 ++
1.4886 ++ cpool_list = pool;
1.4887 ++ }
1.4888 ++
1.4889 ++ /* NULL symbol means that the pool is new or has just been emptied. */
1.4890 ++ if (!pool->symbol)
1.4891 ++ {
1.4892 ++ pool->symbol = symbol_create(FAKE_LABEL_NAME, undefined_section,
1.4893 ++ 0, &zero_address_frag);
1.4894 ++ pool->id = next_cpool_id++;
1.4895 ++ }
1.4896 ++
1.4897 ++ return pool;
1.4898 ++}
1.4899 ++
1.4900 ++static struct cpool *
1.4901 ++add_to_cpool(expressionS *exp, unsigned int *index, int ref)
1.4902 ++{
1.4903 ++ struct cpool *pool;
1.4904 ++ unsigned int entry;
1.4905 ++
1.4906 ++ pool = find_or_make_cpool(now_seg, now_subseg);
1.4907 ++
1.4908 ++ /* Check if this constant is already in the pool. */
1.4909 ++ for (entry = 0; entry < pool->next_free_entry; entry++)
1.4910 ++ {
1.4911 ++ if ((pool->literals[entry].exp.X_op == exp->X_op)
1.4912 ++ && (exp->X_op == O_constant)
1.4913 ++ && (pool->literals[entry].exp.X_add_number
1.4914 ++ == exp->X_add_number)
1.4915 ++ && (pool->literals[entry].exp.X_unsigned
1.4916 ++ == exp->X_unsigned))
1.4917 ++ break;
1.4918 ++
1.4919 ++ if ((pool->literals[entry].exp.X_op == exp->X_op)
1.4920 ++ && (exp->X_op == O_symbol)
1.4921 ++ && (pool->literals[entry].exp.X_add_number
1.4922 ++ == exp->X_add_number)
1.4923 ++ && (pool->literals[entry].exp.X_add_symbol
1.4924 ++ == exp->X_add_symbol)
1.4925 ++ && (pool->literals[entry].exp.X_op_symbol
1.4926 ++ == exp->X_op_symbol))
1.4927 ++ break;
1.4928 ++ }
1.4929 ++
1.4930 ++ /* Create an entry if we didn't find a match */
1.4931 ++ if (entry == pool->next_free_entry)
1.4932 ++ {
1.4933 ++ pool->literals = xrealloc(pool->literals,
1.4934 ++ sizeof(struct cpool_entry) * (entry + 1));
1.4935 ++ pool->literals[entry].exp = *exp;
1.4936 ++ pool->literals[entry].refcount = 0;
1.4937 ++ pool->next_free_entry++;
1.4938 ++ }
1.4939 ++
1.4940 ++ if (index)
1.4941 ++ *index = entry;
1.4942 ++ if (ref)
1.4943 ++ pool->literals[entry].refcount++;
1.4944 ++
1.4945 ++ return pool;
1.4946 ++}
1.4947 ++
1.4948 ++struct avr32_operand
1.4949 ++{
1.4950 ++ int id;
1.4951 ++ int is_signed;
1.4952 ++ int is_pcrel;
1.4953 ++ int align_order;
1.4954 ++ int (*match)(char *str);
1.4955 ++ void (*parse)(const struct avr32_operand *op, char *str, int opindex);
1.4956 ++};
1.4957 ++
1.4958 ++static int
1.4959 ++match_anything(char *str ATTRIBUTE_UNUSED)
1.4960 ++{
1.4961 ++ return 1;
1.4962 ++}
1.4963 ++
1.4964 ++static int
1.4965 ++match_intreg(char *str)
1.4966 ++{
1.4967 ++ int regid, ret = 1;
1.4968 ++
1.4969 ++ regid = avr32_parse_intreg(str);
1.4970 ++ if (regid < 0)
1.4971 ++ ret = 0;
1.4972 ++
1.4973 ++ pr_debug("match_intreg: `%s': %d\n", str, ret);
1.4974 ++
1.4975 ++ return ret;
1.4976 ++}
1.4977 ++
1.4978 ++static int
1.4979 ++match_intreg_predec(char *str)
1.4980 ++{
1.4981 ++ int regid;
1.4982 ++
1.4983 ++ if (str[0] != '-' || str[1] != '-')
1.4984 ++ return 0;
1.4985 ++
1.4986 ++ regid = avr32_parse_intreg(str + 2);
1.4987 ++ if (regid < 0)
1.4988 ++ return 0;
1.4989 ++
1.4990 ++ return 1;
1.4991 ++}
1.4992 ++
1.4993 ++static int
1.4994 ++match_intreg_postinc(char *str)
1.4995 ++{
1.4996 ++ int regid, ret = 1;
1.4997 ++ char *p, c;
1.4998 ++
1.4999 ++ for (p = str; *p; p++)
1.5000 ++ if (*p == '+')
1.5001 ++ break;
1.5002 ++
1.5003 ++ if (p[0] != '+' || p[1] != '+')
1.5004 ++ return 0;
1.5005 ++
1.5006 ++ c = *p, *p = 0;
1.5007 ++ regid = avr32_parse_intreg(str);
1.5008 ++ if (regid < 0)
1.5009 ++ ret = 0;
1.5010 ++
1.5011 ++ *p = c;
1.5012 ++ return ret;
1.5013 ++}
1.5014 ++
1.5015 ++static int
1.5016 ++match_intreg_lsl(char *str)
1.5017 ++{
1.5018 ++ int regid, ret = 1;
1.5019 ++ char *p, c;
1.5020 ++
1.5021 ++ for (p = str; *p; p++)
1.5022 ++ if (*p == '<')
1.5023 ++ break;
1.5024 ++
1.5025 ++ if (p[0] && p[1] != '<')
1.5026 ++ return 0;
1.5027 ++
1.5028 ++ c = *p, *p = 0;
1.5029 ++ regid = avr32_parse_intreg(str);
1.5030 ++ if (regid < 0)
1.5031 ++ ret = 0;
1.5032 ++
1.5033 ++ *p = c;
1.5034 ++ return ret;
1.5035 ++}
1.5036 ++
1.5037 ++static int
1.5038 ++match_intreg_lsr(char *str)
1.5039 ++{
1.5040 ++ int regid, ret = 1;
1.5041 ++ char *p, c;
1.5042 ++
1.5043 ++ for (p = str; *p; p++)
1.5044 ++ if (*p == '>')
1.5045 ++ break;
1.5046 ++
1.5047 ++ if (p[0] && p[1] != '>')
1.5048 ++ return 0;
1.5049 ++
1.5050 ++ c = *p, *p = 0;
1.5051 ++
1.5052 ++ regid = avr32_parse_intreg(str);
1.5053 ++ if (regid < 0)
1.5054 ++ ret = 0;
1.5055 ++
1.5056 ++ *p = c;
1.5057 ++ return ret;
1.5058 ++}
1.5059 ++
1.5060 ++static int
1.5061 ++match_intreg_part(char *str)
1.5062 ++{
1.5063 ++ int regid, ret = 1;
1.5064 ++ char *p, c;
1.5065 ++
1.5066 ++ for (p = str; *p; p++)
1.5067 ++ if (*p == ':')
1.5068 ++ break;
1.5069 ++
1.5070 ++ if (p[0] != ':' || !ISPRINT(p[1]) || p[2] != '\0')
1.5071 ++ return 0;
1.5072 ++
1.5073 ++ c = *p, *p = 0;
1.5074 ++ regid = avr32_parse_intreg(str);
1.5075 ++ if (regid < 0)
1.5076 ++ ret = 0;
1.5077 ++
1.5078 ++ *p = c;
1.5079 ++
1.5080 ++ return ret;
1.5081 ++}
1.5082 ++
1.5083 ++#define match_intreg_disp match_anything
1.5084 ++
1.5085 ++static int
1.5086 ++match_intreg_index(char *str)
1.5087 ++{
1.5088 ++ int regid, ret = 1;
1.5089 ++ char *p, *end, c;
1.5090 ++
1.5091 ++ for (p = str; *p; p++)
1.5092 ++ if (*p == '[')
1.5093 ++ break;
1.5094 ++
1.5095 ++ /* don't allow empty displacement here (it makes no sense) */
1.5096 ++ if (p[0] != '[')
1.5097 ++ return 0;
1.5098 ++
1.5099 ++ for (end = p + 1; *end; end++) ;
1.5100 ++ if (*(--end) != ']')
1.5101 ++ return 0;
1.5102 ++
1.5103 ++ c = *end, *end = 0;
1.5104 ++ if (!match_intreg_lsl(p + 1))
1.5105 ++ ret = 0;
1.5106 ++ *end = c;
1.5107 ++
1.5108 ++ if (ret)
1.5109 ++ {
1.5110 ++ c = *p, *p = 0;
1.5111 ++ regid = avr32_parse_intreg(str);
1.5112 ++ if (regid < 0)
1.5113 ++ ret = 0;
1.5114 ++ *p = c;
1.5115 ++ }
1.5116 ++
1.5117 ++ return ret;
1.5118 ++}
1.5119 ++
1.5120 ++static int
1.5121 ++match_intreg_xindex(char *str)
1.5122 ++{
1.5123 ++ int regid, ret = 1;
1.5124 ++ char *p, *end, c;
1.5125 ++
1.5126 ++ for (p = str; *p; p++)
1.5127 ++ if (*p == '[')
1.5128 ++ break;
1.5129 ++
1.5130 ++ /* empty displacement makes no sense here either */
1.5131 ++ if (p[0] != '[')
1.5132 ++ return 0;
1.5133 ++
1.5134 ++ for (end = p + 1; *end; end++)
1.5135 ++ if (*end == '<')
1.5136 ++ break;
1.5137 ++
1.5138 ++ if (!streq(end, "<<2]"))
1.5139 ++ return 0;
1.5140 ++
1.5141 ++ c = *end, *end = 0;
1.5142 ++ if (!match_intreg_part(p + 1))
1.5143 ++ ret = 0;
1.5144 ++ *end = c;
1.5145 ++
1.5146 ++ if (ret)
1.5147 ++ {
1.5148 ++ c = *p, *p = 0;
1.5149 ++ regid = avr32_parse_intreg(str);
1.5150 ++ if (regid < 0)
1.5151 ++ ret = 0;
1.5152 ++ *p = c;
1.5153 ++ }
1.5154 ++
1.5155 ++ return ret;
1.5156 ++}
1.5157 ++
1.5158 ++/* The PC_UDISP_W operator may show up as a label or as a pc[disp]
1.5159 ++ expression. So there's no point in attempting to match this... */
1.5160 ++#define match_pc_disp match_anything
1.5161 ++
1.5162 ++static int
1.5163 ++match_sp(char *str)
1.5164 ++{
1.5165 ++ /* SP in any form will do */
1.5166 ++ return avr32_parse_intreg(str) == AVR32_REG_SP;
1.5167 ++}
1.5168 ++
1.5169 ++static int
1.5170 ++match_sp_disp(char *str)
1.5171 ++{
1.5172 ++ int regid, ret = 1;
1.5173 ++ char *p, c;
1.5174 ++
1.5175 ++ for (p = str; *p; p++)
1.5176 ++ if (*p == '[')
1.5177 ++ break;
1.5178 ++
1.5179 ++ /* allow empty displacement, meaning zero */
1.5180 ++ if (p[0] == '[')
1.5181 ++ {
1.5182 ++ char *end;
1.5183 ++ for (end = p + 1; *end; end++) ;
1.5184 ++ if (end[-1] != ']')
1.5185 ++ return 0;
1.5186 ++ }
1.5187 ++
1.5188 ++ c = *p, *p = 0;
1.5189 ++ regid = avr32_parse_intreg(str);
1.5190 ++ if (regid != AVR32_REG_SP)
1.5191 ++ ret = 0;
1.5192 ++
1.5193 ++ *p = c;
1.5194 ++ return ret;
1.5195 ++}
1.5196 ++
1.5197 ++static int
1.5198 ++match_cpno(char *str)
1.5199 ++{
1.5200 ++ if (strncasecmp(str, "cp", 2) != 0)
1.5201 ++ return 0;
1.5202 ++ return 1;
1.5203 ++}
1.5204 ++
1.5205 ++static int
1.5206 ++match_cpreg(char *str)
1.5207 ++{
1.5208 ++ if (strncasecmp(str, "cr", 2) != 0)
1.5209 ++ return 0;
1.5210 ++ return 1;
1.5211 ++}
1.5212 ++
1.5213 ++/* We allow complex expressions, and register names may show up as
1.5214 ++ symbols. Just make sure immediate expressions are always matched
1.5215 ++ last. */
1.5216 ++#define match_const match_anything
1.5217 ++#define match_jmplabel match_anything
1.5218 ++#define match_number match_anything
1.5219 ++
1.5220 ++/* Mnemonics that take reglists never accept anything else */
1.5221 ++#define match_reglist8 match_anything
1.5222 ++#define match_reglist9 match_anything
1.5223 ++#define match_reglist16 match_anything
1.5224 ++#define match_reglist_ldm match_anything
1.5225 ++#define match_reglist_cp8 match_anything
1.5226 ++#define match_reglist_cpd8 match_anything
1.5227 ++
1.5228 ++/* Ditto for retval, jospinc and mcall */
1.5229 ++#define match_retval match_anything
1.5230 ++#define match_jospinc match_anything
1.5231 ++#define match_mcall match_anything
1.5232 ++
1.5233 ++/* COH is used to select between two different syntaxes */
1.5234 ++static int
1.5235 ++match_coh(char *str)
1.5236 ++{
1.5237 ++ return strcasecmp(str, "coh") == 0;
1.5238 ++}
1.5239 ++
1.5240 ++static int
1.5241 ++match_fpreg(char *str)
1.5242 ++{
1.5243 ++ unsigned long regid;
1.5244 ++ char *endptr;
1.5245 ++
1.5246 ++ if ((str[0] != 'f' && str[0] != 'F')
1.5247 ++ || (str[1] != 'r' && str[1] != 'R'))
1.5248 ++ return 0;
1.5249 ++
1.5250 ++ str += 2;
1.5251 ++ regid = strtoul(str, &endptr, 10);
1.5252 ++ if (!*str || *endptr)
1.5253 ++ return 0;
1.5254 ++
1.5255 ++ return 1;
1.5256 ++}
1.5257 ++
1.5258 ++static int
1.5259 ++match_picoreg(char *str)
1.5260 ++{
1.5261 ++ int regid;
1.5262 ++
1.5263 ++ regid = avr32_parse_picoreg(str);
1.5264 ++ if (regid < 0)
1.5265 ++ return 0;
1.5266 ++ return 1;
1.5267 ++}
1.5268 ++
1.5269 ++#define match_pico_reglist_w match_anything
1.5270 ++#define match_pico_reglist_d match_anything
1.5271 ++
1.5272 ++static int
1.5273 ++match_pico_in(char *str)
1.5274 ++{
1.5275 ++ unsigned long regid;
1.5276 ++ char *end;
1.5277 ++
1.5278 ++ if (strncasecmp(str, "in", 2) != 0)
1.5279 ++ return 0;
1.5280 ++
1.5281 ++ str += 2;
1.5282 ++ regid = strtoul(str, &end, 10);
1.5283 ++ if (!*str || *end)
1.5284 ++ return 0;
1.5285 ++
1.5286 ++ return 1;
1.5287 ++}
1.5288 ++
1.5289 ++static int
1.5290 ++match_pico_out0(char *str)
1.5291 ++{
1.5292 ++ if (strcasecmp(str, "out0") != 0)
1.5293 ++ return 0;
1.5294 ++ return 1;
1.5295 ++}
1.5296 ++
1.5297 ++static int
1.5298 ++match_pico_out1(char *str)
1.5299 ++{
1.5300 ++ if (strcasecmp(str, "out1") != 0)
1.5301 ++ return 0;
1.5302 ++ return 1;
1.5303 ++}
1.5304 ++
1.5305 ++static int
1.5306 ++match_pico_out2(char *str)
1.5307 ++{
1.5308 ++ if (strcasecmp(str, "out2") != 0)
1.5309 ++ return 0;
1.5310 ++ return 1;
1.5311 ++}
1.5312 ++
1.5313 ++static int
1.5314 ++match_pico_out3(char *str)
1.5315 ++{
1.5316 ++ if (strcasecmp(str, "out3") != 0)
1.5317 ++ return 0;
1.5318 ++ return 1;
1.5319 ++}
1.5320 ++
1.5321 ++static void parse_nothing(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.5322 ++ char *str ATTRIBUTE_UNUSED,
1.5323 ++ int opindex ATTRIBUTE_UNUSED)
1.5324 ++{
1.5325 ++ /* Do nothing (this is used for "match-only" operands like COH) */
1.5326 ++}
1.5327 ++
1.5328 ++static void
1.5329 ++parse_const(const struct avr32_operand *op, char *str,
1.5330 ++ int opindex ATTRIBUTE_UNUSED)
1.5331 ++{
1.5332 ++ expressionS *exp = ¤t_insn.immediate;
1.5333 ++ expressionS *sym_exp;
1.5334 ++ int slot;
1.5335 ++ char *save;
1.5336 ++
1.5337 ++ pr_debug("parse_const: `%s' (signed: %d, pcrel: %d, align: %d)\n",
1.5338 ++ str, op->is_signed, op->is_pcrel, op->align_order);
1.5339 ++
1.5340 ++ save = input_line_pointer;
1.5341 ++ input_line_pointer = str;
1.5342 ++
1.5343 ++ expression(exp);
1.5344 ++
1.5345 ++ slot = current_insn.next_slot++;
1.5346 ++ current_insn.field_value[slot].align_order = op->align_order;
1.5347 ++ current_insn.pcrel = op->is_pcrel;
1.5348 ++
1.5349 ++ switch (exp->X_op)
1.5350 ++ {
1.5351 ++ case O_illegal:
1.5352 ++ as_bad(_("illegal operand"));
1.5353 ++ break;
1.5354 ++ case O_absent:
1.5355 ++ as_bad(_("missing operand"));
1.5356 ++ break;
1.5357 ++ case O_constant:
1.5358 ++ pr_debug(" -> constant: %ld\n", (long)exp->X_add_number);
1.5359 ++ current_insn.field_value[slot].value = exp->X_add_number;
1.5360 ++ break;
1.5361 ++ case O_uminus:
1.5362 ++ pr_debug(" -> uminus\n");
1.5363 ++ sym_exp = symbol_get_value_expression(exp->X_add_symbol);
1.5364 ++ switch (sym_exp->X_op) {
1.5365 ++ case O_subtract:
1.5366 ++ pr_debug(" -> subtract: switching operands\n");
1.5367 ++ exp->X_op_symbol = sym_exp->X_add_symbol;
1.5368 ++ exp->X_add_symbol = sym_exp->X_op_symbol;
1.5369 ++ exp->X_op = O_subtract;
1.5370 ++ /* TODO: Remove the old X_add_symbol */
1.5371 ++ break;
1.5372 ++ default:
1.5373 ++ as_bad(_("Expression too complex\n"));
1.5374 ++ break;
1.5375 ++ }
1.5376 ++ break;
1.5377 ++#if 0
1.5378 ++ case O_subtract:
1.5379 ++ /* Any expression subtracting a symbol from the current section
1.5380 ++ can be made PC-relative by adding the right offset. */
1.5381 ++ if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
1.5382 ++ current_insn.pcrel = TRUE;
1.5383 ++ pr_debug(" -> subtract: pcrel? %s\n",
1.5384 ++ current_insn.pcrel ? "yes" : "no");
1.5385 ++ /* fall through */
1.5386 ++#endif
1.5387 ++ default:
1.5388 ++ pr_debug(" -> (%p <%d> %p + %d)\n",
1.5389 ++ exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
1.5390 ++ exp->X_add_number);
1.5391 ++ current_insn.field_value[slot].value = 0;
1.5392 ++ break;
1.5393 ++ }
1.5394 ++
1.5395 ++ input_line_pointer = save;
1.5396 ++}
1.5397 ++
1.5398 ++static void
1.5399 ++parse_jmplabel(const struct avr32_operand *op, char *str,
1.5400 ++ int opindex ATTRIBUTE_UNUSED)
1.5401 ++{
1.5402 ++ expressionS *exp = ¤t_insn.immediate;
1.5403 ++ int slot;
1.5404 ++ char *save;
1.5405 ++
1.5406 ++ pr_debug("parse_jmplabel: `%s' (signed: %d, pcrel: %d, align: %d)\n",
1.5407 ++ str, op->is_signed, op->is_pcrel, op->align_order);
1.5408 ++
1.5409 ++ save = input_line_pointer;
1.5410 ++ input_line_pointer = str;
1.5411 ++
1.5412 ++ expression(exp);
1.5413 ++
1.5414 ++ slot = current_insn.next_slot++;
1.5415 ++ current_insn.field_value[slot].align_order = op->align_order;
1.5416 ++ current_insn.pcrel = TRUE;
1.5417 ++
1.5418 ++ switch (exp->X_op)
1.5419 ++ {
1.5420 ++ case O_illegal:
1.5421 ++ as_bad(_("illegal operand"));
1.5422 ++ break;
1.5423 ++ case O_absent:
1.5424 ++ as_bad(_("missing operand"));
1.5425 ++ break;
1.5426 ++ case O_constant:
1.5427 ++ pr_debug(" -> constant: %ld\n", (long)exp->X_add_number);
1.5428 ++ current_insn.field_value[slot].value = exp->X_add_number;
1.5429 ++ current_insn.pcrel = 0;
1.5430 ++ break;
1.5431 ++ default:
1.5432 ++ pr_debug(" -> (%p <%d> %p + %d)\n",
1.5433 ++ exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
1.5434 ++ exp->X_add_number);
1.5435 ++ current_insn.field_value[slot].value = 0;
1.5436 ++ break;
1.5437 ++ }
1.5438 ++
1.5439 ++ input_line_pointer = save;
1.5440 ++}
1.5441 ++
1.5442 ++static void
1.5443 ++parse_intreg(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.5444 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.5445 ++{
1.5446 ++ int regid, slot;
1.5447 ++
1.5448 ++ pr_debug("parse_intreg: `%s'\n", str);
1.5449 ++
1.5450 ++ regid = avr32_parse_intreg(str);
1.5451 ++ assert(regid >= 0);
1.5452 ++
1.5453 ++ slot = current_insn.next_slot++;
1.5454 ++ current_insn.field_value[slot].value = regid;
1.5455 ++ current_insn.field_value[slot].align_order = op->align_order;
1.5456 ++}
1.5457 ++
1.5458 ++static void
1.5459 ++parse_intreg_predec(const struct avr32_operand *op, char *str, int opindex)
1.5460 ++{
1.5461 ++ parse_intreg(op, str + 2, opindex);
1.5462 ++}
1.5463 ++
1.5464 ++static void
1.5465 ++parse_intreg_postinc(const struct avr32_operand *op, char *str, int opindex)
1.5466 ++{
1.5467 ++ char *p, c;
1.5468 ++
1.5469 ++ pr_debug("parse_intreg_postinc: `%s'\n", str);
1.5470 ++
1.5471 ++ for (p = str; *p != '+'; p++) ;
1.5472 ++
1.5473 ++ c = *p, *p = 0;
1.5474 ++ parse_intreg(op, str, opindex);
1.5475 ++ *p = c;
1.5476 ++}
1.5477 ++
1.5478 ++static void
1.5479 ++parse_intreg_shift(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.5480 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.5481 ++{
1.5482 ++ int regid, slot, shift = 0;
1.5483 ++ char *p, c;
1.5484 ++ char shiftop;
1.5485 ++
1.5486 ++ pr_debug("parse Ry<<sa: `%s'\n", str);
1.5487 ++
1.5488 ++ for (p = str; *p; p++)
1.5489 ++ if (*p == '<' || *p == '>')
1.5490 ++ break;
1.5491 ++
1.5492 ++ shiftop = *p;
1.5493 ++
1.5494 ++ c = *p, *p = 0;
1.5495 ++ regid = avr32_parse_intreg(str);
1.5496 ++ assert(regid >= 0);
1.5497 ++ *p = c;
1.5498 ++
1.5499 ++ if (c)
1.5500 ++ {
1.5501 ++ if (p[0] != shiftop || p[1] != shiftop)
1.5502 ++ as_bad(_("expected shift operator in `%s'"), p);
1.5503 ++ else
1.5504 ++ {
1.5505 ++ expressionS exp;
1.5506 ++ char *saved;
1.5507 ++
1.5508 ++ saved = input_line_pointer;
1.5509 ++ input_line_pointer = p + 2;
1.5510 ++ expression(&exp);
1.5511 ++ input_line_pointer = saved;
1.5512 ++
1.5513 ++ if (exp.X_op != O_constant)
1.5514 ++ as_bad(_("shift amount must be a numeric constant"));
1.5515 ++ else
1.5516 ++ shift = exp.X_add_number;
1.5517 ++ }
1.5518 ++ }
1.5519 ++
1.5520 ++ slot = current_insn.next_slot++;
1.5521 ++ current_insn.field_value[slot].value = regid;
1.5522 ++ slot = current_insn.next_slot++;
1.5523 ++ current_insn.field_value[slot].value = shift;
1.5524 ++}
1.5525 ++
1.5526 ++/* The match() function selected the right opcode, so it doesn't
1.5527 ++ matter which way we shift any more. */
1.5528 ++#define parse_intreg_lsl parse_intreg_shift
1.5529 ++#define parse_intreg_lsr parse_intreg_shift
1.5530 ++
1.5531 ++static void
1.5532 ++parse_intreg_part(const struct avr32_operand *op, char *str,
1.5533 ++ int opindex ATTRIBUTE_UNUSED)
1.5534 ++{
1.5535 ++ static const char bparts[] = { 'b', 'l', 'u', 't' };
1.5536 ++ static const char hparts[] = { 'b', 't' };
1.5537 ++ unsigned int slot, sel;
1.5538 ++ int regid;
1.5539 ++ char *p, c;
1.5540 ++
1.5541 ++ pr_debug("parse reg:part `%s'\n", str);
1.5542 ++
1.5543 ++ for (p = str; *p; p++)
1.5544 ++ if (*p == ':')
1.5545 ++ break;
1.5546 ++
1.5547 ++ c = *p, *p = 0;
1.5548 ++ regid = avr32_parse_intreg(str);
1.5549 ++ assert(regid >= 0);
1.5550 ++ *p = c;
1.5551 ++
1.5552 ++ assert(c == ':');
1.5553 ++
1.5554 ++ if (op->align_order)
1.5555 ++ {
1.5556 ++ for (sel = 0; sel < sizeof(hparts); sel++)
1.5557 ++ if (TOLOWER(p[1]) == hparts[sel])
1.5558 ++ break;
1.5559 ++
1.5560 ++ if (sel >= sizeof(hparts))
1.5561 ++ {
1.5562 ++ as_bad(_("invalid halfword selector `%c' (must be either b or t)"),
1.5563 ++ p[1]);
1.5564 ++ sel = 0;
1.5565 ++ }
1.5566 ++ }
1.5567 ++ else
1.5568 ++ {
1.5569 ++ for (sel = 0; sel < sizeof(bparts); sel++)
1.5570 ++ if (TOLOWER(p[1]) == bparts[sel])
1.5571 ++ break;
1.5572 ++
1.5573 ++ if (sel >= sizeof(bparts))
1.5574 ++ {
1.5575 ++ as_bad(_("invalid byte selector `%c' (must be one of b,l,u,t)"),
1.5576 ++ p[1]);
1.5577 ++ sel = 0;
1.5578 ++ }
1.5579 ++ }
1.5580 ++
1.5581 ++ slot = current_insn.next_slot++;
1.5582 ++ current_insn.field_value[slot].value = regid;
1.5583 ++ slot = current_insn.next_slot++;
1.5584 ++ current_insn.field_value[slot].value = sel;
1.5585 ++}
1.5586 ++
1.5587 ++/* This is the parser for "Rp[displacement]" expressions. In addition
1.5588 ++ to the "official" syntax, we accept a label as a replacement for
1.5589 ++ the register expression. This syntax implies Rp=PC and the
1.5590 ++ displacement is the pc-relative distance to the label. */
1.5591 ++static void
1.5592 ++parse_intreg_disp(const struct avr32_operand *op, char *str, int opindex)
1.5593 ++{
1.5594 ++ expressionS *exp = ¤t_insn.immediate;
1.5595 ++ int slot, regid;
1.5596 ++ char *save, *p, c;
1.5597 ++
1.5598 ++ pr_debug("parse_intreg_disp: `%s' (signed: %d, pcrel: %d, align: %d)\n",
1.5599 ++ str, op->is_signed, op->is_pcrel, op->align_order);
1.5600 ++
1.5601 ++ for (p = str; *p; p++)
1.5602 ++ if (*p == '[')
1.5603 ++ break;
1.5604 ++
1.5605 ++ slot = current_insn.next_slot++;
1.5606 ++
1.5607 ++ /* First, check if we have a valid register either before '[' or as
1.5608 ++ the sole expression. If so, we use the Rp[disp] syntax. */
1.5609 ++ c = *p, *p = 0;
1.5610 ++ regid = avr32_parse_intreg(str);
1.5611 ++ *p = c;
1.5612 ++
1.5613 ++ if (regid >= 0)
1.5614 ++ {
1.5615 ++ current_insn.field_value[slot].value = regid;
1.5616 ++
1.5617 ++ slot = current_insn.next_slot++;
1.5618 ++ current_insn.field_value[slot].align_order = op->align_order;
1.5619 ++
1.5620 ++ if (c == '[')
1.5621 ++ {
1.5622 ++ save = input_line_pointer;
1.5623 ++ input_line_pointer = p + 1;
1.5624 ++
1.5625 ++ expression(exp);
1.5626 ++
1.5627 ++ if (*input_line_pointer != ']')
1.5628 ++ as_bad(_("junk after displacement expression"));
1.5629 ++
1.5630 ++ input_line_pointer = save;
1.5631 ++
1.5632 ++ switch (exp->X_op)
1.5633 ++ {
1.5634 ++ case O_illegal:
1.5635 ++ as_bad(_("illegal displacement expression"));
1.5636 ++ break;
1.5637 ++ case O_absent:
1.5638 ++ as_bad(_("missing displacement expression"));
1.5639 ++ break;
1.5640 ++ case O_constant:
1.5641 ++ pr_debug(" -> constant: %ld\n", exp->X_add_number);
1.5642 ++ current_insn.field_value[slot].value = exp->X_add_number;
1.5643 ++ break;
1.5644 ++#if 0
1.5645 ++ case O_subtract:
1.5646 ++ if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
1.5647 ++ current_insn.pcrel = TRUE;
1.5648 ++ pr_debug(" -> subtract: pcrel? %s\n",
1.5649 ++ current_insn.pcrel ? "yes" : "no");
1.5650 ++ /* fall through */
1.5651 ++#endif
1.5652 ++ default:
1.5653 ++ pr_debug(" -> (%p <%d> %p + %d)\n",
1.5654 ++ exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
1.5655 ++ exp->X_add_number);
1.5656 ++ current_insn.field_value[slot].value = 0;
1.5657 ++ }
1.5658 ++ }
1.5659 ++ else
1.5660 ++ {
1.5661 ++ exp->X_op = O_constant;
1.5662 ++ exp->X_add_number = 0;
1.5663 ++ current_insn.field_value[slot].value = 0;
1.5664 ++ }
1.5665 ++ }
1.5666 ++ else
1.5667 ++ {
1.5668 ++ /* Didn't find a valid register. Try parsing it as a label. */
1.5669 ++ current_insn.field_value[slot].value = AVR32_REG_PC;
1.5670 ++ parse_jmplabel(op, str, opindex);
1.5671 ++ }
1.5672 ++}
1.5673 ++
1.5674 ++static void
1.5675 ++parse_intreg_index(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.5676 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.5677 ++{
1.5678 ++ int slot, regid;
1.5679 ++ char *p, *end, c;
1.5680 ++
1.5681 ++ for (p = str; *p; p++)
1.5682 ++ if (*p == '[')
1.5683 ++ break;
1.5684 ++
1.5685 ++ assert(*p);
1.5686 ++
1.5687 ++ c = *p, *p = 0;
1.5688 ++ regid = avr32_parse_intreg(str);
1.5689 ++ assert(regid >= 0);
1.5690 ++ *p = c;
1.5691 ++
1.5692 ++ slot = current_insn.next_slot++;
1.5693 ++ current_insn.field_value[slot].value = regid;
1.5694 ++
1.5695 ++ p++;
1.5696 ++ for (end = p; *end; end++)
1.5697 ++ if (*end == ']' || *end == '<')
1.5698 ++ break;
1.5699 ++
1.5700 ++ assert(*end);
1.5701 ++
1.5702 ++ c = *end, *end = 0;
1.5703 ++ regid = avr32_parse_intreg(p);
1.5704 ++ assert(regid >= 0);
1.5705 ++ *end = c;
1.5706 ++
1.5707 ++ slot = current_insn.next_slot++;
1.5708 ++ current_insn.field_value[slot].value = regid;
1.5709 ++
1.5710 ++ slot = current_insn.next_slot++;
1.5711 ++ current_insn.field_value[slot].value = 0;
1.5712 ++
1.5713 ++ if (*end == '<')
1.5714 ++ {
1.5715 ++ expressionS exp;
1.5716 ++ char *save;
1.5717 ++
1.5718 ++ p = end + 2;
1.5719 ++ for (end = p; *end; end++)
1.5720 ++ if (*end == ']')
1.5721 ++ break;
1.5722 ++
1.5723 ++ assert(*end == ']');
1.5724 ++
1.5725 ++ c = *end, *end = 0;
1.5726 ++ save = input_line_pointer;
1.5727 ++ input_line_pointer = p;
1.5728 ++ expression(&exp);
1.5729 ++
1.5730 ++ if (*input_line_pointer)
1.5731 ++ as_bad(_("junk after shift expression"));
1.5732 ++
1.5733 ++ *end = c;
1.5734 ++ input_line_pointer = save;
1.5735 ++
1.5736 ++ if (exp.X_op == O_constant)
1.5737 ++ current_insn.field_value[slot].value = exp.X_add_number;
1.5738 ++ else
1.5739 ++ as_bad(_("shift expression too complex"));
1.5740 ++ }
1.5741 ++}
1.5742 ++
1.5743 ++static void
1.5744 ++parse_intreg_xindex(const struct avr32_operand *op, char *str, int opindex)
1.5745 ++{
1.5746 ++ int slot, regid;
1.5747 ++ char *p, *end, c;
1.5748 ++
1.5749 ++ for (p = str; *p; p++)
1.5750 ++ if (*p == '[')
1.5751 ++ break;
1.5752 ++
1.5753 ++ assert(*p);
1.5754 ++
1.5755 ++ c = *p, *p = 0;
1.5756 ++ regid = avr32_parse_intreg(str);
1.5757 ++ assert(regid >= 0);
1.5758 ++ *p = c;
1.5759 ++
1.5760 ++ slot = current_insn.next_slot++;
1.5761 ++ current_insn.field_value[slot].value = regid;
1.5762 ++
1.5763 ++ p++;
1.5764 ++ for (end = p; *end; end++)
1.5765 ++ if (*end == '<')
1.5766 ++ break;
1.5767 ++
1.5768 ++ assert(*end);
1.5769 ++
1.5770 ++ c = *end, *end = 0;
1.5771 ++ parse_intreg_part(op, p, opindex);
1.5772 ++ *end = c;
1.5773 ++}
1.5774 ++
1.5775 ++static void
1.5776 ++parse_pc_disp(const struct avr32_operand *op, char *str, int opindex)
1.5777 ++{
1.5778 ++ char *p, c;
1.5779 ++
1.5780 ++ for (p = str; *p; p++)
1.5781 ++ if (*p == '[')
1.5782 ++ break;
1.5783 ++
1.5784 ++ /* The lddpc instruction comes in two different syntax variants:
1.5785 ++ lddpc reg, expression
1.5786 ++ lddpc reg, pc[disp]
1.5787 ++ If the operand contains a '[', we use the second form. */
1.5788 ++ if (*p)
1.5789 ++ {
1.5790 ++ int regid;
1.5791 ++
1.5792 ++ c = *p, *p = 0;
1.5793 ++ regid = avr32_parse_intreg(str);
1.5794 ++ *p = c;
1.5795 ++ if (regid == AVR32_REG_PC)
1.5796 ++ {
1.5797 ++ char *end;
1.5798 ++
1.5799 ++ for (end = ++p; *end; end++) ;
1.5800 ++ if (*(--end) != ']')
1.5801 ++ as_bad(_("unrecognized form of instruction: `%s'"), str);
1.5802 ++ else
1.5803 ++ {
1.5804 ++ c = *end, *end = 0;
1.5805 ++ parse_const(op, p, opindex);
1.5806 ++ *end = c;
1.5807 ++ current_insn.pcrel = 0;
1.5808 ++ }
1.5809 ++ }
1.5810 ++ else
1.5811 ++ as_bad(_("unrecognized form of instruction: `%s'"), str);
1.5812 ++ }
1.5813 ++ else
1.5814 ++ {
1.5815 ++ parse_jmplabel(op, str, opindex);
1.5816 ++ }
1.5817 ++}
1.5818 ++
1.5819 ++static void parse_sp(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.5820 ++ char *str ATTRIBUTE_UNUSED,
1.5821 ++ int opindex ATTRIBUTE_UNUSED)
1.5822 ++{
1.5823 ++ int slot;
1.5824 ++
1.5825 ++ slot = current_insn.next_slot++;
1.5826 ++ current_insn.field_value[slot].value = AVR32_REG_SP;
1.5827 ++}
1.5828 ++
1.5829 ++static void
1.5830 ++parse_sp_disp(const struct avr32_operand *op, char *str, int opindex)
1.5831 ++{
1.5832 ++ char *p, c;
1.5833 ++
1.5834 ++ for (; *str; str++)
1.5835 ++ if (*str == '[')
1.5836 ++ break;
1.5837 ++
1.5838 ++ assert(*str);
1.5839 ++
1.5840 ++ for (p = ++str; *p; p++)
1.5841 ++ if (*p == ']')
1.5842 ++ break;
1.5843 ++
1.5844 ++ c = *p, *p = 0;
1.5845 ++ parse_const(op, str, opindex);
1.5846 ++ *p = c;
1.5847 ++}
1.5848 ++
1.5849 ++static void
1.5850 ++parse_cpno(const struct avr32_operand *op ATTRIBUTE_UNUSED, char *str,
1.5851 ++ int opindex ATTRIBUTE_UNUSED)
1.5852 ++{
1.5853 ++ int slot;
1.5854 ++
1.5855 ++ str += 2;
1.5856 ++ if (*str == '#')
1.5857 ++ str++;
1.5858 ++ if (*str < '0' || *str > '7' || str[1])
1.5859 ++ as_bad(_("invalid coprocessor `%s'"), str);
1.5860 ++
1.5861 ++ slot = current_insn.next_slot++;
1.5862 ++ current_insn.field_value[slot].value = *str - '0';
1.5863 ++}
1.5864 ++
1.5865 ++static void
1.5866 ++parse_cpreg(const struct avr32_operand *op, char *str,
1.5867 ++ int opindex ATTRIBUTE_UNUSED)
1.5868 ++{
1.5869 ++ unsigned int crid;
1.5870 ++ int slot;
1.5871 ++ char *endptr;
1.5872 ++
1.5873 ++ str += 2;
1.5874 ++ crid = strtoul(str, &endptr, 10);
1.5875 ++ if (*endptr || crid > 15 || crid & ((1 << op->align_order) - 1))
1.5876 ++ as_bad(_("invalid coprocessor register `%s'"), str);
1.5877 ++
1.5878 ++ crid >>= op->align_order;
1.5879 ++
1.5880 ++ slot = current_insn.next_slot++;
1.5881 ++ current_insn.field_value[slot].value = crid;
1.5882 ++}
1.5883 ++
1.5884 ++static void
1.5885 ++parse_number(const struct avr32_operand *op, char *str,
1.5886 ++ int opindex ATTRIBUTE_UNUSED)
1.5887 ++{
1.5888 ++ expressionS exp;
1.5889 ++ int slot;
1.5890 ++ char *save;
1.5891 ++
1.5892 ++ save = input_line_pointer;
1.5893 ++ input_line_pointer = str;
1.5894 ++ expression(&exp);
1.5895 ++ input_line_pointer = save;
1.5896 ++
1.5897 ++ slot = current_insn.next_slot++;
1.5898 ++ current_insn.field_value[slot].align_order = op->align_order;
1.5899 ++
1.5900 ++ if (exp.X_op == O_constant)
1.5901 ++ current_insn.field_value[slot].value = exp.X_add_number;
1.5902 ++ else
1.5903 ++ as_bad(_("invalid numeric expression `%s'"), str);
1.5904 ++}
1.5905 ++
1.5906 ++static void
1.5907 ++parse_reglist8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.5908 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.5909 ++{
1.5910 ++ unsigned long regmask;
1.5911 ++ unsigned long value = 0;
1.5912 ++ int slot;
1.5913 ++ char *tail;
1.5914 ++
1.5915 ++ regmask = avr32_parse_reglist(str, &tail);
1.5916 ++ if (*tail)
1.5917 ++ as_bad(_("invalid register list `%s'"), str);
1.5918 ++ else
1.5919 ++ {
1.5920 ++ if (avr32_make_regmask8(regmask, &value))
1.5921 ++ as_bad(_("register list `%s' doesn't fit"), str);
1.5922 ++ }
1.5923 ++
1.5924 ++ slot = current_insn.next_slot++;
1.5925 ++ current_insn.field_value[slot].value = value;
1.5926 ++}
1.5927 ++
1.5928 ++static int
1.5929 ++parse_reglist_tail(char *str, unsigned long regmask)
1.5930 ++{
1.5931 ++ expressionS exp;
1.5932 ++ char *save, *p, c;
1.5933 ++ int regid;
1.5934 ++
1.5935 ++ for (p = str + 1; *p; p++)
1.5936 ++ if (*p == '=')
1.5937 ++ break;
1.5938 ++
1.5939 ++ if (!*p)
1.5940 ++ {
1.5941 ++ as_bad(_("invalid register list `%s'"), str);
1.5942 ++ return -2;
1.5943 ++ }
1.5944 ++
1.5945 ++ c = *p, *p = 0;
1.5946 ++ regid = avr32_parse_intreg(str);
1.5947 ++ *p = c;
1.5948 ++
1.5949 ++ if (regid != 12)
1.5950 ++ {
1.5951 ++ as_bad(_("invalid register list `%s'"), str);
1.5952 ++ return -2;
1.5953 ++ }
1.5954 ++
1.5955 ++ /* If we have an assignment, we must pop PC and we must _not_
1.5956 ++ pop LR or R12 */
1.5957 ++ if (!(regmask & (1 << AVR32_REG_PC)))
1.5958 ++ {
1.5959 ++ as_bad(_("return value specified for non-return instruction"));
1.5960 ++ return -2;
1.5961 ++ }
1.5962 ++ else if (regmask & ((1 << AVR32_REG_R12) | (1 << AVR32_REG_LR)))
1.5963 ++ {
1.5964 ++ as_bad(_("can't pop LR or R12 when specifying return value"));
1.5965 ++ return -2;
1.5966 ++ }
1.5967 ++
1.5968 ++ save = input_line_pointer;
1.5969 ++ input_line_pointer = p + 1;
1.5970 ++ expression(&exp);
1.5971 ++ input_line_pointer = save;
1.5972 ++
1.5973 ++ if (exp.X_op != O_constant
1.5974 ++ || exp.X_add_number < -1
1.5975 ++ || exp.X_add_number > 1)
1.5976 ++ {
1.5977 ++ as_bad(_("invalid return value `%s'"), str);
1.5978 ++ return -2;
1.5979 ++ }
1.5980 ++
1.5981 ++ return exp.X_add_number;
1.5982 ++}
1.5983 ++
1.5984 ++static void
1.5985 ++parse_reglist9(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.5986 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.5987 ++{
1.5988 ++ unsigned long regmask;
1.5989 ++ unsigned long value = 0, kbit = 0;
1.5990 ++ int slot;
1.5991 ++ char *tail;
1.5992 ++
1.5993 ++ regmask = avr32_parse_reglist(str, &tail);
1.5994 ++ /* printf("parsed reglist16: %04lx, tail: `%s'\n", regmask, tail); */
1.5995 ++ if (*tail)
1.5996 ++ {
1.5997 ++ int retval;
1.5998 ++
1.5999 ++ retval = parse_reglist_tail(tail, regmask);
1.6000 ++
1.6001 ++ switch (retval)
1.6002 ++ {
1.6003 ++ case -1:
1.6004 ++ regmask |= 1 << AVR32_REG_LR;
1.6005 ++ break;
1.6006 ++ case 0:
1.6007 ++ break;
1.6008 ++ case 1:
1.6009 ++ regmask |= 1 << AVR32_REG_R12;
1.6010 ++ break;
1.6011 ++ default:
1.6012 ++ break;
1.6013 ++ }
1.6014 ++
1.6015 ++ kbit = 1;
1.6016 ++ }
1.6017 ++
1.6018 ++ if (avr32_make_regmask8(regmask, &value))
1.6019 ++ as_bad(_("register list `%s' doesn't fit"), str);
1.6020 ++
1.6021 ++
1.6022 ++ slot = current_insn.next_slot++;
1.6023 ++ current_insn.field_value[slot].value = (value << 1) | kbit;
1.6024 ++}
1.6025 ++
1.6026 ++static void
1.6027 ++parse_reglist16(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.6028 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.6029 ++{
1.6030 ++ unsigned long regmask;
1.6031 ++ int slot;
1.6032 ++ char *tail;
1.6033 ++
1.6034 ++ regmask = avr32_parse_reglist(str, &tail);
1.6035 ++ if (*tail)
1.6036 ++ as_bad(_("invalid register list `%s'"), str);
1.6037 ++
1.6038 ++ slot = current_insn.next_slot++;
1.6039 ++ current_insn.field_value[slot].value = regmask;
1.6040 ++}
1.6041 ++
1.6042 ++static void
1.6043 ++parse_reglist_ldm(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.6044 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.6045 ++{
1.6046 ++ unsigned long regmask;
1.6047 ++ int slot, rp, w_bit = 0;
1.6048 ++ char *tail, *p, c;
1.6049 ++
1.6050 ++ for (p = str; *p && *p != ','; p++)
1.6051 ++ if (*p == '+')
1.6052 ++ break;
1.6053 ++
1.6054 ++ c = *p, *p = 0;
1.6055 ++ rp = avr32_parse_intreg(str);
1.6056 ++ *p = c;
1.6057 ++ if (rp < 0)
1.6058 ++ {
1.6059 ++ as_bad(_("invalid destination register in `%s'"), str);
1.6060 ++ return;
1.6061 ++ }
1.6062 ++
1.6063 ++ if (p[0] == '+' && p[1] == '+')
1.6064 ++ {
1.6065 ++ w_bit = 1;
1.6066 ++ p += 2;
1.6067 ++ }
1.6068 ++
1.6069 ++ if (*p != ',')
1.6070 ++ {
1.6071 ++ as_bad(_("expected `,' after destination register in `%s'"), str);
1.6072 ++ return;
1.6073 ++ }
1.6074 ++
1.6075 ++ str = p + 1;
1.6076 ++ regmask = avr32_parse_reglist(str, &tail);
1.6077 ++ if (*tail)
1.6078 ++ {
1.6079 ++ int retval;
1.6080 ++
1.6081 ++ if (rp != AVR32_REG_SP)
1.6082 ++ {
1.6083 ++ as_bad(_("junk at end of line: `%s'"), tail);
1.6084 ++ return;
1.6085 ++ }
1.6086 ++
1.6087 ++ rp = AVR32_REG_PC;
1.6088 ++
1.6089 ++ retval = parse_reglist_tail(tail, regmask);
1.6090 ++
1.6091 ++ switch (retval)
1.6092 ++ {
1.6093 ++ case -1:
1.6094 ++ regmask |= 1 << AVR32_REG_LR;
1.6095 ++ break;
1.6096 ++ case 0:
1.6097 ++ break;
1.6098 ++ case 1:
1.6099 ++ regmask |= 1 << AVR32_REG_R12;
1.6100 ++ break;
1.6101 ++ default:
1.6102 ++ return;
1.6103 ++ }
1.6104 ++ }
1.6105 ++
1.6106 ++ slot = current_insn.next_slot++;
1.6107 ++ current_insn.field_value[slot].value = rp;
1.6108 ++ slot = current_insn.next_slot++;
1.6109 ++ current_insn.field_value[slot].value = w_bit;
1.6110 ++ slot = current_insn.next_slot++;
1.6111 ++ current_insn.field_value[slot].value = regmask;
1.6112 ++}
1.6113 ++
1.6114 ++static void
1.6115 ++parse_reglist_cp8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.6116 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.6117 ++{
1.6118 ++ unsigned long regmask;
1.6119 ++ int slot, h_bit = 0;
1.6120 ++ char *tail;
1.6121 ++
1.6122 ++ regmask = avr32_parse_cpreglist(str, &tail);
1.6123 ++ if (*tail)
1.6124 ++ as_bad(_("junk at end of line: `%s'"), tail);
1.6125 ++ else if (regmask & 0xffUL)
1.6126 ++ {
1.6127 ++ if (regmask & 0xff00UL)
1.6128 ++ as_bad(_("register list `%s' doesn't fit"), str);
1.6129 ++ regmask &= 0xff;
1.6130 ++ }
1.6131 ++ else if (regmask & 0xff00UL)
1.6132 ++ {
1.6133 ++ regmask >>= 8;
1.6134 ++ h_bit = 1;
1.6135 ++ }
1.6136 ++ else
1.6137 ++ as_warn(_("register list is empty"));
1.6138 ++
1.6139 ++ slot = current_insn.next_slot++;
1.6140 ++ current_insn.field_value[slot].value = regmask;
1.6141 ++ slot = current_insn.next_slot++;
1.6142 ++ current_insn.field_value[slot].value = h_bit;
1.6143 ++}
1.6144 ++
1.6145 ++static void
1.6146 ++parse_reglist_cpd8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.6147 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.6148 ++{
1.6149 ++ unsigned long regmask, regmask_d = 0;
1.6150 ++ int slot, i;
1.6151 ++ char *tail;
1.6152 ++
1.6153 ++ regmask = avr32_parse_cpreglist(str, &tail);
1.6154 ++ if (*tail)
1.6155 ++ as_bad(_("junk at end of line: `%s'"), tail);
1.6156 ++
1.6157 ++ for (i = 0; i < 8; i++)
1.6158 ++ {
1.6159 ++ if (regmask & 1)
1.6160 ++ {
1.6161 ++ if (!(regmask & 2))
1.6162 ++ {
1.6163 ++ as_bad(_("register list `%s' doesn't fit"), str);
1.6164 ++ break;
1.6165 ++ }
1.6166 ++ regmask_d |= 1 << i;
1.6167 ++ }
1.6168 ++ else if (regmask & 2)
1.6169 ++ {
1.6170 ++ as_bad(_("register list `%s' doesn't fit"), str);
1.6171 ++ break;
1.6172 ++ }
1.6173 ++
1.6174 ++ regmask >>= 2;
1.6175 ++ }
1.6176 ++
1.6177 ++ slot = current_insn.next_slot++;
1.6178 ++ current_insn.field_value[slot].value = regmask_d;
1.6179 ++}
1.6180 ++
1.6181 ++static void
1.6182 ++parse_retval(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.6183 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.6184 ++{
1.6185 ++ int regid, slot;
1.6186 ++
1.6187 ++ regid = avr32_parse_intreg(str);
1.6188 ++ if (regid < 0)
1.6189 ++ {
1.6190 ++ expressionS exp;
1.6191 ++ char *save;
1.6192 ++
1.6193 ++ regid = 0;
1.6194 ++
1.6195 ++ save = input_line_pointer;
1.6196 ++ input_line_pointer = str;
1.6197 ++ expression(&exp);
1.6198 ++ input_line_pointer = save;
1.6199 ++
1.6200 ++ if (exp.X_op != O_constant)
1.6201 ++ as_bad(_("invalid return value `%s'"), str);
1.6202 ++ else
1.6203 ++ switch (exp.X_add_number)
1.6204 ++ {
1.6205 ++ case -1:
1.6206 ++ regid = AVR32_REG_LR;
1.6207 ++ break;
1.6208 ++ case 0:
1.6209 ++ regid = AVR32_REG_SP;
1.6210 ++ break;
1.6211 ++ case 1:
1.6212 ++ regid = AVR32_REG_PC;
1.6213 ++ break;
1.6214 ++ default:
1.6215 ++ as_bad(_("invalid return value `%s'"), str);
1.6216 ++ break;
1.6217 ++ }
1.6218 ++ }
1.6219 ++
1.6220 ++ slot = current_insn.next_slot++;
1.6221 ++ current_insn.field_value[slot].value = regid;
1.6222 ++}
1.6223 ++
1.6224 ++#define parse_mcall parse_intreg_disp
1.6225 ++
1.6226 ++static void
1.6227 ++parse_jospinc(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.6228 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.6229 ++{
1.6230 ++ expressionS exp;
1.6231 ++ int slot;
1.6232 ++ char *save;
1.6233 ++
1.6234 ++ save = input_line_pointer;
1.6235 ++ input_line_pointer = str;
1.6236 ++ expression(&exp);
1.6237 ++ input_line_pointer = save;
1.6238 ++
1.6239 ++ slot = current_insn.next_slot++;
1.6240 ++
1.6241 ++ if (exp.X_op == O_constant)
1.6242 ++ {
1.6243 ++ if (exp.X_add_number > 0)
1.6244 ++ exp.X_add_number--;
1.6245 ++ current_insn.field_value[slot].value = exp.X_add_number;
1.6246 ++ }
1.6247 ++ else
1.6248 ++ as_bad(_("invalid numeric expression `%s'"), str);
1.6249 ++}
1.6250 ++
1.6251 ++#define parse_coh parse_nothing
1.6252 ++
1.6253 ++static void
1.6254 ++parse_fpreg(const struct avr32_operand *op,
1.6255 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.6256 ++{
1.6257 ++ unsigned long regid;
1.6258 ++ int slot;
1.6259 ++
1.6260 ++ regid = strtoul(str + 2, NULL, 10);
1.6261 ++
1.6262 ++ if ((regid >= 16) || (regid & ((1 << op->align_order) - 1)))
1.6263 ++ as_bad(_("invalid floating-point register `%s'"), str);
1.6264 ++
1.6265 ++ slot = current_insn.next_slot++;
1.6266 ++ current_insn.field_value[slot].value = regid;
1.6267 ++ current_insn.field_value[slot].align_order = op->align_order;
1.6268 ++}
1.6269 ++
1.6270 ++static void
1.6271 ++parse_picoreg(const struct avr32_operand *op,
1.6272 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.6273 ++{
1.6274 ++ unsigned long regid;
1.6275 ++ int slot;
1.6276 ++
1.6277 ++ regid = avr32_parse_picoreg(str);
1.6278 ++ if (regid & ((1 << op->align_order) - 1))
1.6279 ++ as_bad(_("invalid double-word PiCo register `%s'"), str);
1.6280 ++
1.6281 ++ slot = current_insn.next_slot++;
1.6282 ++ current_insn.field_value[slot].value = regid;
1.6283 ++ current_insn.field_value[slot].align_order = op->align_order;
1.6284 ++}
1.6285 ++
1.6286 ++static void
1.6287 ++parse_pico_reglist_w(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.6288 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.6289 ++{
1.6290 ++ unsigned long regmask;
1.6291 ++ int slot, h_bit = 0;
1.6292 ++ char *tail;
1.6293 ++
1.6294 ++ regmask = avr32_parse_pico_reglist(str, &tail);
1.6295 ++ if (*tail)
1.6296 ++ as_bad(_("junk at end of line: `%s'"), tail);
1.6297 ++
1.6298 ++ if (regmask & 0x00ffUL)
1.6299 ++ {
1.6300 ++ if (regmask & 0xff00UL)
1.6301 ++ as_bad(_("register list `%s' doesn't fit"), str);
1.6302 ++ regmask &= 0x00ffUL;
1.6303 ++ }
1.6304 ++ else if (regmask & 0xff00UL)
1.6305 ++ {
1.6306 ++ regmask >>= 8;
1.6307 ++ h_bit = 1;
1.6308 ++ }
1.6309 ++ else
1.6310 ++ as_warn(_("register list is empty"));
1.6311 ++
1.6312 ++ slot = current_insn.next_slot++;
1.6313 ++ current_insn.field_value[slot].value = regmask;
1.6314 ++ slot = current_insn.next_slot++;
1.6315 ++ current_insn.field_value[slot].value = h_bit;
1.6316 ++}
1.6317 ++
1.6318 ++static void
1.6319 ++parse_pico_reglist_d(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.6320 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.6321 ++{
1.6322 ++ unsigned long regmask, regmask_d = 0;
1.6323 ++ int slot, i;
1.6324 ++ char *tail;
1.6325 ++
1.6326 ++ regmask = avr32_parse_pico_reglist(str, &tail);
1.6327 ++ if (*tail)
1.6328 ++ as_bad(_("junk at end of line: `%s'"), tail);
1.6329 ++
1.6330 ++ for (i = 0; i < 8; i++)
1.6331 ++ {
1.6332 ++ if (regmask & 1)
1.6333 ++ {
1.6334 ++ if (!(regmask & 2))
1.6335 ++ {
1.6336 ++ as_bad(_("register list `%s' doesn't fit"), str);
1.6337 ++ break;
1.6338 ++ }
1.6339 ++ regmask_d |= 1 << i;
1.6340 ++ }
1.6341 ++ else if (regmask & 2)
1.6342 ++ {
1.6343 ++ as_bad(_("register list `%s' doesn't fit"), str);
1.6344 ++ break;
1.6345 ++ }
1.6346 ++
1.6347 ++ regmask >>= 2;
1.6348 ++ }
1.6349 ++
1.6350 ++ slot = current_insn.next_slot++;
1.6351 ++ current_insn.field_value[slot].value = regmask_d;
1.6352 ++}
1.6353 ++
1.6354 ++static void
1.6355 ++parse_pico_in(const struct avr32_operand *op ATTRIBUTE_UNUSED,
1.6356 ++ char *str, int opindex ATTRIBUTE_UNUSED)
1.6357 ++{
1.6358 ++ unsigned long regid;
1.6359 ++ int slot;
1.6360 ++
1.6361 ++ regid = strtoul(str + 2, NULL, 10);
1.6362 ++
1.6363 ++ if (regid >= 12)
1.6364 ++ as_bad(_("invalid PiCo IN register `%s'"), str);
1.6365 ++
1.6366 ++ slot = current_insn.next_slot++;
1.6367 ++ current_insn.field_value[slot].value = regid;
1.6368 ++ current_insn.field_value[slot].align_order = 0;
1.6369 ++}
1.6370 ++
1.6371 ++#define parse_pico_out0 parse_nothing
1.6372 ++#define parse_pico_out1 parse_nothing
1.6373 ++#define parse_pico_out2 parse_nothing
1.6374 ++#define parse_pico_out3 parse_nothing
1.6375 ++
1.6376 ++#define OP(name, sgn, pcrel, align, func) \
1.6377 ++ { AVR32_OPERAND_##name, sgn, pcrel, align, match_##func, parse_##func }
1.6378 ++
1.6379 ++struct avr32_operand avr32_operand_table[] = {
1.6380 ++ OP(INTREG, 0, 0, 0, intreg),
1.6381 ++ OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
1.6382 ++ OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
1.6383 ++ OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
1.6384 ++ OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
1.6385 ++ OP(INTREG_BSEL, 0, 0, 0, intreg_part),
1.6386 ++ OP(INTREG_HSEL, 0, 0, 1, intreg_part),
1.6387 ++ OP(INTREG_SDISP, 1, 0, 0, intreg_disp),
1.6388 ++ OP(INTREG_SDISP_H, 1, 0, 1, intreg_disp),
1.6389 ++ OP(INTREG_SDISP_W, 1, 0, 2, intreg_disp),
1.6390 ++ OP(INTREG_UDISP, 0, 0, 0, intreg_disp),
1.6391 ++ OP(INTREG_UDISP_H, 0, 0, 1, intreg_disp),
1.6392 ++ OP(INTREG_UDISP_W, 0, 0, 2, intreg_disp),
1.6393 ++ OP(INTREG_INDEX, 0, 0, 0, intreg_index),
1.6394 ++ OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
1.6395 ++ OP(DWREG, 0, 0, 1, intreg),
1.6396 ++ OP(PC_UDISP_W, 0, 1, 2, pc_disp),
1.6397 ++ OP(SP, 0, 0, 0, sp),
1.6398 ++ OP(SP_UDISP_W, 0, 0, 2, sp_disp),
1.6399 ++ OP(CPNO, 0, 0, 0, cpno),
1.6400 ++ OP(CPREG, 0, 0, 0, cpreg),
1.6401 ++ OP(CPREG_D, 0, 0, 1, cpreg),
1.6402 ++ OP(UNSIGNED_CONST, 0, 0, 0, const),
1.6403 ++ OP(UNSIGNED_CONST_W, 0, 0, 2, const),
1.6404 ++ OP(SIGNED_CONST, 1, 0, 0, const),
1.6405 ++ OP(SIGNED_CONST_W, 1, 0, 2, const),
1.6406 ++ OP(JMPLABEL, 1, 1, 1, jmplabel),
1.6407 ++ OP(UNSIGNED_NUMBER, 0, 0, 0, number),
1.6408 ++ OP(UNSIGNED_NUMBER_W, 0, 0, 2, number),
1.6409 ++ OP(REGLIST8, 0, 0, 0, reglist8),
1.6410 ++ OP(REGLIST9, 0, 0, 0, reglist9),
1.6411 ++ OP(REGLIST16, 0, 0, 0, reglist16),
1.6412 ++ OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
1.6413 ++ OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
1.6414 ++ OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
1.6415 ++ OP(RETVAL, 0, 0, 0, retval),
1.6416 ++ OP(MCALL, 1, 0, 2, mcall),
1.6417 ++ OP(JOSPINC, 0, 0, 0, jospinc),
1.6418 ++ OP(COH, 0, 0, 0, coh),
1.6419 ++ OP(FPREG_S, 0, 0, 0, fpreg),
1.6420 ++ OP(FPREG_D, 0, 0, 1, fpreg),
1.6421 ++ OP(PICO_REG_W, 0, 0, 0, picoreg),
1.6422 ++ OP(PICO_REG_D, 0, 0, 1, picoreg),
1.6423 ++ OP(PICO_REGLIST_W, 0, 0, 0, pico_reglist_w),
1.6424 ++ OP(PICO_REGLIST_D, 0, 0, 0, pico_reglist_d),
1.6425 ++ OP(PICO_IN, 0, 0, 0, pico_in),
1.6426 ++ OP(PICO_OUT0, 0, 0, 0, pico_out0),
1.6427 ++ OP(PICO_OUT1, 0, 0, 0, pico_out1),
1.6428 ++ OP(PICO_OUT2, 0, 0, 0, pico_out2),
1.6429 ++ OP(PICO_OUT3, 0, 0, 0, pico_out3),
1.6430 ++};
1.6431 ++
1.6432 ++symbolS *
1.6433 ++md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
1.6434 ++{
1.6435 ++ pr_debug("md_undefined_symbol: %s\n", name);
1.6436 ++ return 0;
1.6437 ++}
1.6438 ++
1.6439 ++struct avr32_relax_type
1.6440 ++{
1.6441 ++ long lower_bound;
1.6442 ++ long upper_bound;
1.6443 ++ unsigned char align;
1.6444 ++ unsigned char length;
1.6445 ++ signed short next;
1.6446 ++};
1.6447 ++
1.6448 ++#define EMPTY { 0, 0, 0, 0, -1 }
1.6449 ++#define C(lower, upper, align, next) \
1.6450 ++ { (lower), (upper), (align), 2, AVR32_OPC_##next }
1.6451 ++#define E(lower, upper, align) \
1.6452 ++ { (lower), (upper), (align), 4, -1 }
1.6453 ++
1.6454 ++static const struct avr32_relax_type avr32_relax_table[] =
1.6455 ++ {
1.6456 ++ /* 0 */
1.6457 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6458 ++ EMPTY, EMPTY, EMPTY,
1.6459 ++ E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0),
1.6460 ++ EMPTY,
1.6461 ++ /* 16 */
1.6462 ++ EMPTY, EMPTY, EMPTY, EMPTY,
1.6463 ++
1.6464 ++ C(-256, 254, 1, BREQ2), C(-256, 254, 1, BRNE2),
1.6465 ++ C(-256, 254, 1, BRCC2), C(-256, 254, 1, BRCS2),
1.6466 ++ C(-256, 254, 1, BRGE2), C(-256, 254, 1, BRLT2),
1.6467 ++ C(-256, 254, 1, BRMI2), C(-256, 254, 1, BRPL2),
1.6468 ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
1.6469 ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
1.6470 ++ /* 32 */
1.6471 ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
1.6472 ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
1.6473 ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
1.6474 ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
1.6475 ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
1.6476 ++ E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
1.6477 ++
1.6478 ++ EMPTY, EMPTY, EMPTY, EMPTY,
1.6479 ++ /* 48 */
1.6480 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6481 ++ EMPTY, EMPTY, EMPTY,
1.6482 ++
1.6483 ++ C(-32, 31, 0, CP_W3), E(-1048576, 1048575, 0),
1.6484 ++
1.6485 ++ EMPTY, EMPTY, EMPTY,
1.6486 ++ /* 64: csrfcz */
1.6487 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6488 ++ E(0, 65535, 0), E(0, 65535, 0),
1.6489 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6490 ++ E(-32768, 32767, 0),
1.6491 ++ /* 80: LD_SB2 */
1.6492 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6493 ++
1.6494 ++ C(0, 7, 0, LD_UB4), E(-32768, 32767, 0),
1.6495 ++
1.6496 ++ EMPTY,
1.6497 ++ EMPTY, EMPTY,
1.6498 ++
1.6499 ++ C(0, 14, 1, LD_SH4), E(-32768, 32767, 0),
1.6500 ++
1.6501 ++ EMPTY, EMPTY, EMPTY,
1.6502 ++
1.6503 ++ C(0, 14, 1, LD_UH4),
1.6504 ++
1.6505 ++ /* 96: LD_UH4 */
1.6506 ++ E(-32768, 32767, 0),
1.6507 ++
1.6508 ++ EMPTY, EMPTY, EMPTY, EMPTY,
1.6509 ++
1.6510 ++ C(0, 124, 2, LD_W4), E(-32768, 32767, 0),
1.6511 ++
1.6512 ++ E(0, 1020, 2), /* LDC_D1 */
1.6513 ++ EMPTY, EMPTY,
1.6514 ++ E(0, 1020, 2), /* LDC_W1 */
1.6515 ++ EMPTY, EMPTY,
1.6516 ++ E(0, 16380, 2), /* LDC0_D */
1.6517 ++ E(0, 16380, 2), /* LDC0_W */
1.6518 ++ EMPTY,
1.6519 ++
1.6520 ++ /* 112: LDCM_D_PU */
1.6521 ++ EMPTY, EMPTY, EMPTY,
1.6522 ++
1.6523 ++ C(0, 508, 2, LDDPC_EXT), E(-32768, 32767, 0),
1.6524 ++
1.6525 ++ EMPTY,EMPTY, EMPTY,
1.6526 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6527 ++
1.6528 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6529 ++ /* 134: MACHH_W */
1.6530 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6531 ++ E(-131072, 131068, 2), /* MCALL */
1.6532 ++ E(0, 1020, 2), /* MFDR */
1.6533 ++ E(0, 1020, 2), /* MFSR */
1.6534 ++ EMPTY, EMPTY,
1.6535 ++
1.6536 ++ C(-128, 127, 0, MOV2), E(-1048576, 1048575, 0),
1.6537 ++
1.6538 ++ EMPTY, EMPTY, EMPTY,
1.6539 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6540 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6541 ++
1.6542 ++ E(-128, 127, 0), /* MOVEQ2 */
1.6543 ++ E(-128, 127, 0), /* MOVNE2 */
1.6544 ++ E(-128, 127, 0), /* MOVCC2 */
1.6545 ++ E(-128, 127, 0), /* 166: MOVCS2 */
1.6546 ++ E(-128, 127, 0), /* MOVGE2 */
1.6547 ++ E(-128, 127, 0), /* MOVLT2 */
1.6548 ++ E(-128, 127, 0), /* MOVMI2 */
1.6549 ++ E(-128, 127, 0), /* MOVPL2 */
1.6550 ++ E(-128, 127, 0), /* MOVLS2 */
1.6551 ++ E(-128, 127, 0), /* MOVGT2 */
1.6552 ++ E(-128, 127, 0), /* MOVLE2 */
1.6553 ++ E(-128, 127, 0), /* MOVHI2 */
1.6554 ++ E(-128, 127, 0), /* MOVVS2 */
1.6555 ++ E(-128, 127, 0), /* MOVVC2 */
1.6556 ++ E(-128, 127, 0), /* MOVQS2 */
1.6557 ++ E(-128, 127, 0), /* MOVAL2 */
1.6558 ++
1.6559 ++ E(0, 1020, 2), /* MTDR */
1.6560 ++ E(0, 1020, 2), /* MTSR */
1.6561 ++ EMPTY,
1.6562 ++ EMPTY,
1.6563 ++ E(-128, 127, 0), /* MUL3 */
1.6564 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6565 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6566 ++ /* 198: MVCR_W */
1.6567 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6568 ++ E(0, 65535, 0), E(0, 65535, 0),
1.6569 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6570 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6571 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6572 ++ /* 230: PASR_H */
1.6573 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6574 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6575 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6576 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6577 ++ /* 262: PUNPCKSB_H */
1.6578 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6579 ++
1.6580 ++ C(-1024, 1022, 1, RCALL2), E(-2097152, 2097150, 1),
1.6581 ++
1.6582 ++ EMPTY,
1.6583 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6584 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6585 ++ EMPTY, EMPTY, EMPTY,
1.6586 ++
1.6587 ++ C(-1024, 1022, 1, BRAL),
1.6588 ++
1.6589 ++ EMPTY, EMPTY, EMPTY,
1.6590 ++ E(-128, 127, 0), /* RSUB2 */
1.6591 ++ /* 294: SATADD_H */
1.6592 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6593 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6594 ++ E(0, 255, 0), /* SLEEP */
1.6595 ++ EMPTY, EMPTY,
1.6596 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6597 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6598 ++ /* 326: ST_B2 */
1.6599 ++ EMPTY, EMPTY,
1.6600 ++ C(0, 7, 0, ST_B4), E(-32768, 32767, 0),
1.6601 ++ EMPTY, EMPTY, EMPTY, EMPTY,
1.6602 ++ E(-32768, 32767, 0),
1.6603 ++ EMPTY, EMPTY, EMPTY,
1.6604 ++ C(0, 14, 1, ST_H4), E(-32768, 32767, 0),
1.6605 ++ EMPTY, EMPTY,
1.6606 ++ EMPTY,
1.6607 ++ C(0, 60, 2, ST_W4), E(-32768, 32767, 0),
1.6608 ++ E(0, 1020, 2), /* STC_D1 */
1.6609 ++ EMPTY, EMPTY,
1.6610 ++ E(0, 1020, 2), /* STC_W1 */
1.6611 ++ EMPTY, EMPTY,
1.6612 ++ E(0, 16380, 2), /* STC0_D */
1.6613 ++ E(0, 16380, 2), /* STC0_W */
1.6614 ++
1.6615 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6616 ++ /* 358: STDSP */
1.6617 ++ EMPTY, EMPTY,
1.6618 ++ E(0, 1020, 2), /* STHH_W1 */
1.6619 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6620 ++ EMPTY, EMPTY, EMPTY,
1.6621 ++ E(-32768, 32767, 0),
1.6622 ++ C(-512, 508, 2, SUB4),
1.6623 ++ C(-128, 127, 0, SUB4), E(-1048576, 1048576, 0),
1.6624 ++ /* SUB{cond} */
1.6625 ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
1.6626 ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
1.6627 ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
1.6628 ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
1.6629 ++ /* SUBF{cond} */
1.6630 ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
1.6631 ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
1.6632 ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
1.6633 ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
1.6634 ++ EMPTY,
1.6635 ++
1.6636 ++ /* 406: SWAP_B */
1.6637 ++ EMPTY, EMPTY, EMPTY,
1.6638 ++ E(0, 255, 0), /* SYNC */
1.6639 ++ EMPTY, EMPTY, EMPTY, EMPTY,
1.6640 ++ /* 414: TST */
1.6641 ++ EMPTY, EMPTY, E(-65536, 65535, 2), E(-65536, 65535, 2), E(-65536, 65535, 2), EMPTY, EMPTY, EMPTY,
1.6642 ++ /* 422: RSUB{cond} */
1.6643 ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
1.6644 ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
1.6645 ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
1.6646 ++ E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
1.6647 ++ /* 436: ADD{cond} */
1.6648 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6649 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6650 ++ /* 454: SUB{cond} */
1.6651 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6652 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6653 ++ /* 472: AND{cond} */
1.6654 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6655 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6656 ++ /* 486: OR{cond} */
1.6657 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6658 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6659 ++ /* 502: EOR{cond} */
1.6660 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6661 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6662 ++ /* 518: LD.w{cond} */
1.6663 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6664 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6665 ++ /* 534: LD.sh{cond} */
1.6666 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6667 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6668 ++ /* 550: LD.uh{cond} */
1.6669 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6670 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6671 ++ /* 566: LD.sb{cond} */
1.6672 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6673 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6674 ++ /* 582: LD.ub{cond} */
1.6675 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6676 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6677 ++ /* 596: ST.w{cond} */
1.6678 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6679 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6680 ++ /* 614: ST.h{cond} */
1.6681 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6682 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6683 ++ /* 630: ST.b{cond} */
1.6684 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6685 ++ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
1.6686 ++ /* 646: movh */
1.6687 ++ E(0, 65535, 0)
1.6688 ++ };
1.6689 ++
1.6690 ++#undef E
1.6691 ++#undef C
1.6692 ++#undef EMPTY
1.6693 ++
1.6694 ++#define AVR32_RS_NONE (-1)
1.6695 ++
1.6696 ++#define avr32_rs_size(state) (avr32_relax_table[(state)].length)
1.6697 ++#define avr32_rs_align(state) (avr32_relax_table[(state)].align)
1.6698 ++#define relax_more(state) (avr32_relax_table[(state)].next)
1.6699 ++
1.6700 ++#define opc_initial_substate(opc) ((opc)->id)
1.6701 ++
1.6702 ++static int need_relax(int subtype, offsetT distance)
1.6703 ++{
1.6704 ++ offsetT upper_bound, lower_bound;
1.6705 ++
1.6706 ++ upper_bound = avr32_relax_table[subtype].upper_bound;
1.6707 ++ lower_bound = avr32_relax_table[subtype].lower_bound;
1.6708 ++
1.6709 ++ if (distance & ((1 << avr32_rs_align(subtype)) - 1))
1.6710 ++ return 1;
1.6711 ++ if ((distance > upper_bound) || (distance < lower_bound))
1.6712 ++ return 1;
1.6713 ++
1.6714 ++ return 0;
1.6715 ++}
1.6716 ++
1.6717 ++enum {
1.6718 ++ LDA_SUBTYPE_MOV1,
1.6719 ++ LDA_SUBTYPE_MOV2,
1.6720 ++ LDA_SUBTYPE_SUB,
1.6721 ++ LDA_SUBTYPE_LDDPC,
1.6722 ++ LDA_SUBTYPE_LDW,
1.6723 ++ LDA_SUBTYPE_GOTLOAD,
1.6724 ++ LDA_SUBTYPE_GOTLOAD_LARGE,
1.6725 ++};
1.6726 ++
1.6727 ++enum {
1.6728 ++ CALL_SUBTYPE_RCALL1,
1.6729 ++ CALL_SUBTYPE_RCALL2,
1.6730 ++ CALL_SUBTYPE_MCALL_CP,
1.6731 ++ CALL_SUBTYPE_MCALL_GOT,
1.6732 ++ CALL_SUBTYPE_MCALL_LARGE,
1.6733 ++};
1.6734 ++
1.6735 ++#define LDA_INITIAL_SIZE (avr32_pic ? 4 : 2)
1.6736 ++#define CALL_INITIAL_SIZE 2
1.6737 ++
1.6738 ++#define need_reloc(sym, seg, pcrel) \
1.6739 ++ (!(S_IS_DEFINED(sym) \
1.6740 ++ && ((pcrel && S_GET_SEGMENT(sym) == seg) \
1.6741 ++ || (!pcrel && S_GET_SEGMENT(sym) == absolute_section))) \
1.6742 ++ || S_FORCE_RELOC(sym, 1))
1.6743 ++
1.6744 ++/* Return an initial guess of the length by which a fragment must grow to
1.6745 ++ hold a branch to reach its destination.
1.6746 ++ Also updates fr_type/fr_subtype as necessary.
1.6747 ++
1.6748 ++ Called just before doing relaxation.
1.6749 ++ Any symbol that is now undefined will not become defined.
1.6750 ++ The guess for fr_var is ACTUALLY the growth beyond fr_fix.
1.6751 ++ Whatever we do to grow fr_fix or fr_var contributes to our returned value.
1.6752 ++ Although it may not be explicit in the frag, pretend fr_var starts with a
1.6753 ++ 0 value. */
1.6754 ++
1.6755 ++static int
1.6756 ++avr32_default_estimate_size_before_relax (fragS *fragP, segT segment)
1.6757 ++{
1.6758 ++ int growth = 0;
1.6759 ++
1.6760 ++ assert(fragP);
1.6761 ++ assert(fragP->fr_symbol);
1.6762 ++
1.6763 ++ if (fragP->tc_frag_data.force_extended
1.6764 ++ || need_reloc(fragP->fr_symbol, segment, fragP->tc_frag_data.pcrel))
1.6765 ++ {
1.6766 ++ int largest_state = fragP->fr_subtype;
1.6767 ++ while (relax_more(largest_state) != AVR32_RS_NONE)
1.6768 ++ largest_state = relax_more(largest_state);
1.6769 ++ growth = avr32_rs_size(largest_state) - fragP->fr_var;
1.6770 ++ }
1.6771 ++ else
1.6772 ++ {
1.6773 ++ growth = avr32_rs_size(fragP->fr_subtype) - fragP->fr_var;
1.6774 ++ }
1.6775 ++
1.6776 ++ pr_debug("%s:%d: md_estimate_size_before_relax: %d\n",
1.6777 ++ fragP->fr_file, fragP->fr_line, growth);
1.6778 ++
1.6779 ++ return growth;
1.6780 ++}
1.6781 ++
1.6782 ++static int
1.6783 ++avr32_lda_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
1.6784 ++{
1.6785 ++ return fragP->fr_var - LDA_INITIAL_SIZE;
1.6786 ++}
1.6787 ++
1.6788 ++static int
1.6789 ++avr32_call_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
1.6790 ++{
1.6791 ++ return fragP->fr_var - CALL_INITIAL_SIZE;
1.6792 ++}
1.6793 ++
1.6794 ++static int
1.6795 ++avr32_cpool_estimate_size_before_relax(fragS *fragP,
1.6796 ++ segT segment ATTRIBUTE_UNUSED)
1.6797 ++{
1.6798 ++ return fragP->fr_var;
1.6799 ++}
1.6800 ++
1.6801 ++/* This macro may be defined to relax a frag. GAS will call this with the
1.6802 ++ * segment, the frag, and the change in size of all previous frags;
1.6803 ++ * md_relax_frag should return the change in size of the frag. */
1.6804 ++static long
1.6805 ++avr32_default_relax_frag (segT segment, fragS *fragP, long stretch)
1.6806 ++{
1.6807 ++ int state, next_state;
1.6808 ++ symbolS *symbolP; /* The target symbol */
1.6809 ++ long growth = 0;
1.6810 ++
1.6811 ++ state = next_state = fragP->fr_subtype;
1.6812 ++
1.6813 ++ symbolP = fragP->fr_symbol;
1.6814 ++
1.6815 ++ if (fragP->tc_frag_data.force_extended
1.6816 ++ || need_reloc(symbolP, segment, fragP->tc_frag_data.pcrel))
1.6817 ++ {
1.6818 ++ /* Symbol must be resolved by the linker. Emit the largest
1.6819 ++ possible opcode. */
1.6820 ++ while (relax_more(next_state) != AVR32_RS_NONE)
1.6821 ++ next_state = relax_more(next_state);
1.6822 ++ }
1.6823 ++ else
1.6824 ++ {
1.6825 ++ addressT address; /* The address of fragP */
1.6826 ++ addressT target; /* The address of the target symbol */
1.6827 ++ offsetT distance; /* The distance between the insn and the symbol */
1.6828 ++ fragS *sym_frag;
1.6829 ++
1.6830 ++ address = fragP->fr_address;
1.6831 ++ target = fragP->fr_offset;
1.6832 ++ symbolP = fragP->fr_symbol;
1.6833 ++ sym_frag = symbol_get_frag(symbolP);
1.6834 ++
1.6835 ++ address += fragP->fr_fix - fragP->fr_var;
1.6836 ++ target += S_GET_VALUE(symbolP);
1.6837 ++
1.6838 ++ if (stretch != 0
1.6839 ++ && sym_frag->relax_marker != fragP->relax_marker
1.6840 ++ && S_GET_SEGMENT(symbolP) == segment)
1.6841 ++ /* if it was correctly aligned before, make sure it stays aligned */
1.6842 ++ target += stretch & (~0UL << avr32_rs_align(state));
1.6843 ++
1.6844 ++ if (fragP->tc_frag_data.pcrel)
1.6845 ++ distance = target - (address & (~0UL << avr32_rs_align(state)));
1.6846 ++ else
1.6847 ++ distance = target;
1.6848 ++
1.6849 ++ pr_debug("%s:%d: relax more? 0x%x - 0x%x = 0x%x (%d), align %d\n",
1.6850 ++ fragP->fr_file, fragP->fr_line, target, address,
1.6851 ++ distance, distance, avr32_rs_align(state));
1.6852 ++
1.6853 ++ if (need_relax(state, distance))
1.6854 ++ {
1.6855 ++ if (relax_more(state) != AVR32_RS_NONE)
1.6856 ++ next_state = relax_more(state);
1.6857 ++ pr_debug("%s:%d: relax more %d -> %d (%d - %d, align %d)\n",
1.6858 ++ fragP->fr_file, fragP->fr_line, state, next_state,
1.6859 ++ target, address, avr32_rs_align(state));
1.6860 ++ }
1.6861 ++ }
1.6862 ++
1.6863 ++ growth = avr32_rs_size(next_state) - avr32_rs_size(state);
1.6864 ++ fragP->fr_subtype = next_state;
1.6865 ++
1.6866 ++ pr_debug("%s:%d: md_relax_frag: growth=%d, subtype=%d, opc=0x%08lx\n",
1.6867 ++ fragP->fr_file, fragP->fr_line, growth, fragP->fr_subtype,
1.6868 ++ avr32_opc_table[next_state].value);
1.6869 ++
1.6870 ++ return growth;
1.6871 ++}
1.6872 ++
1.6873 ++static long
1.6874 ++avr32_lda_relax_frag(segT segment, fragS *fragP, long stretch)
1.6875 ++{
1.6876 ++ struct cpool *pool= NULL;
1.6877 ++ unsigned int entry = 0;
1.6878 ++ addressT address, target;
1.6879 ++ offsetT distance;
1.6880 ++ symbolS *symbolP;
1.6881 ++ fragS *sym_frag;
1.6882 ++ long old_size, new_size;
1.6883 ++
1.6884 ++ symbolP = fragP->fr_symbol;
1.6885 ++ old_size = fragP->fr_var;
1.6886 ++ if (!avr32_pic)
1.6887 ++ {
1.6888 ++ pool = fragP->tc_frag_data.pool;
1.6889 ++ entry = fragP->tc_frag_data.pool_entry;
1.6890 ++ }
1.6891 ++
1.6892 ++ address = fragP->fr_address;
1.6893 ++ address += fragP->fr_fix - LDA_INITIAL_SIZE;
1.6894 ++
1.6895 ++ if (!S_IS_DEFINED(symbolP) || S_FORCE_RELOC(symbolP, 1))
1.6896 ++ goto relax_max;
1.6897 ++
1.6898 ++ target = fragP->fr_offset;
1.6899 ++ sym_frag = symbol_get_frag(symbolP);
1.6900 ++ target += S_GET_VALUE(symbolP);
1.6901 ++
1.6902 ++ if (sym_frag->relax_marker != fragP->relax_marker
1.6903 ++ && S_GET_SEGMENT(symbolP) == segment)
1.6904 ++ target += stretch;
1.6905 ++
1.6906 ++ distance = target - address;
1.6907 ++
1.6908 ++ pr_debug("lda_relax_frag: target: %d, address: %d, var: %d\n",
1.6909 ++ target, address, fragP->fr_var);
1.6910 ++
1.6911 ++ if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
1.6912 ++ && target <= 127 && (offsetT)target >= -128)
1.6913 ++ {
1.6914 ++ if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
1.6915 ++ || fragP->fr_subtype == LDA_SUBTYPE_LDW)
1.6916 ++ pool->literals[entry].refcount--;
1.6917 ++ new_size = 2;
1.6918 ++ fragP->fr_subtype = LDA_SUBTYPE_MOV1;
1.6919 ++ }
1.6920 ++ else if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
1.6921 ++ && target <= 1048575 && (offsetT)target >= -1048576)
1.6922 ++ {
1.6923 ++ if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
1.6924 ++ || fragP->fr_subtype == LDA_SUBTYPE_LDW)
1.6925 ++ pool->literals[entry].refcount--;
1.6926 ++ new_size = 4;
1.6927 ++ fragP->fr_subtype = LDA_SUBTYPE_MOV2;
1.6928 ++ }
1.6929 ++ else if (!linkrelax && S_GET_SEGMENT(symbolP) == segment
1.6930 ++ /* the field will be negated, so this is really -(-32768)
1.6931 ++ and -(32767) */
1.6932 ++ && distance <= 32768 && distance >= -32767)
1.6933 ++ {
1.6934 ++ if (!avr32_pic
1.6935 ++ && (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
1.6936 ++ || fragP->fr_subtype == LDA_SUBTYPE_LDW))
1.6937 ++ pool->literals[entry].refcount--;
1.6938 ++ new_size = 4;
1.6939 ++ fragP->fr_subtype = LDA_SUBTYPE_SUB;
1.6940 ++ }
1.6941 ++ else
1.6942 ++ {
1.6943 ++ relax_max:
1.6944 ++ if (avr32_pic)
1.6945 ++ {
1.6946 ++ if (linkrelax)
1.6947 ++ {
1.6948 ++ new_size = 8;
1.6949 ++ fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD_LARGE;
1.6950 ++ }
1.6951 ++ else
1.6952 ++ {
1.6953 ++ new_size = 4;
1.6954 ++ fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD;
1.6955 ++ }
1.6956 ++ }
1.6957 ++ else
1.6958 ++ {
1.6959 ++ if (fragP->fr_subtype != LDA_SUBTYPE_LDDPC
1.6960 ++ && fragP->fr_subtype != LDA_SUBTYPE_LDW)
1.6961 ++ pool->literals[entry].refcount++;
1.6962 ++
1.6963 ++ sym_frag = symbol_get_frag(pool->symbol);
1.6964 ++ target = (sym_frag->fr_address + sym_frag->fr_fix
1.6965 ++ + pool->padding + pool->literals[entry].offset);
1.6966 ++
1.6967 ++ pr_debug("cpool sym address: 0x%lx\n",
1.6968 ++ sym_frag->fr_address + sym_frag->fr_fix);
1.6969 ++
1.6970 ++ know(pool->section == segment);
1.6971 ++
1.6972 ++ if (sym_frag->relax_marker != fragP->relax_marker)
1.6973 ++ target += stretch;
1.6974 ++
1.6975 ++ distance = target - address;
1.6976 ++ if (distance <= 508 && distance >= 0)
1.6977 ++ {
1.6978 ++ new_size = 2;
1.6979 ++ fragP->fr_subtype = LDA_SUBTYPE_LDDPC;
1.6980 ++ }
1.6981 ++ else
1.6982 ++ {
1.6983 ++ new_size = 4;
1.6984 ++ fragP->fr_subtype = LDA_SUBTYPE_LDW;
1.6985 ++ }
1.6986 ++
1.6987 ++ pr_debug("lda_relax_frag (cpool): target=0x%lx, address=0x%lx, refcount=%d\n",
1.6988 ++ target, address, pool->literals[entry].refcount);
1.6989 ++ }
1.6990 ++ }
1.6991 ++
1.6992 ++ fragP->fr_var = new_size;
1.6993 ++
1.6994 ++ pr_debug("%s:%d: lda: relax pass done. subtype: %d, growth: %ld\n",
1.6995 ++ fragP->fr_file, fragP->fr_line,
1.6996 ++ fragP->fr_subtype, new_size - old_size);
1.6997 ++
1.6998 ++ return new_size - old_size;
1.6999 ++}
1.7000 ++
1.7001 ++static long
1.7002 ++avr32_call_relax_frag(segT segment, fragS *fragP, long stretch)
1.7003 ++{
1.7004 ++ struct cpool *pool = NULL;
1.7005 ++ unsigned int entry = 0;
1.7006 ++ addressT address, target;
1.7007 ++ offsetT distance;
1.7008 ++ symbolS *symbolP;
1.7009 ++ fragS *sym_frag;
1.7010 ++ long old_size, new_size;
1.7011 ++
1.7012 ++ symbolP = fragP->fr_symbol;
1.7013 ++ old_size = fragP->fr_var;
1.7014 ++ if (!avr32_pic)
1.7015 ++ {
1.7016 ++ pool = fragP->tc_frag_data.pool;
1.7017 ++ entry = fragP->tc_frag_data.pool_entry;
1.7018 ++ }
1.7019 ++
1.7020 ++ address = fragP->fr_address;
1.7021 ++ address += fragP->fr_fix - CALL_INITIAL_SIZE;
1.7022 ++
1.7023 ++ if (need_reloc(symbolP, segment, 1))
1.7024 ++ {
1.7025 ++ pr_debug("call: must emit reloc\n");
1.7026 ++ goto relax_max;
1.7027 ++ }
1.7028 ++
1.7029 ++ target = fragP->fr_offset;
1.7030 ++ sym_frag = symbol_get_frag(symbolP);
1.7031 ++ target += S_GET_VALUE(symbolP);
1.7032 ++
1.7033 ++ if (sym_frag->relax_marker != fragP->relax_marker
1.7034 ++ && S_GET_SEGMENT(symbolP) == segment)
1.7035 ++ target += stretch;
1.7036 ++
1.7037 ++ distance = target - address;
1.7038 ++
1.7039 ++ if (distance <= 1022 && distance >= -1024)
1.7040 ++ {
1.7041 ++ pr_debug("call: distance is %d, emitting short rcall\n", distance);
1.7042 ++ if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
1.7043 ++ pool->literals[entry].refcount--;
1.7044 ++ new_size = 2;
1.7045 ++ fragP->fr_subtype = CALL_SUBTYPE_RCALL1;
1.7046 ++ }
1.7047 ++ else if (distance <= 2097150 && distance >= -2097152)
1.7048 ++ {
1.7049 ++ pr_debug("call: distance is %d, emitting long rcall\n", distance);
1.7050 ++ if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
1.7051 ++ pool->literals[entry].refcount--;
1.7052 ++ new_size = 4;
1.7053 ++ fragP->fr_subtype = CALL_SUBTYPE_RCALL2;
1.7054 ++ }
1.7055 ++ else
1.7056 ++ {
1.7057 ++ pr_debug("call: distance %d too far, emitting something big\n", distance);
1.7058 ++
1.7059 ++ relax_max:
1.7060 ++ if (avr32_pic)
1.7061 ++ {
1.7062 ++ if (linkrelax)
1.7063 ++ {
1.7064 ++ new_size = 10;
1.7065 ++ fragP->fr_subtype = CALL_SUBTYPE_MCALL_LARGE;
1.7066 ++ }
1.7067 ++ else
1.7068 ++ {
1.7069 ++ new_size = 4;
1.7070 ++ fragP->fr_subtype = CALL_SUBTYPE_MCALL_GOT;
1.7071 ++ }
1.7072 ++ }
1.7073 ++ else
1.7074 ++ {
1.7075 ++ if (fragP->fr_subtype != CALL_SUBTYPE_MCALL_CP)
1.7076 ++ pool->literals[entry].refcount++;
1.7077 ++
1.7078 ++ new_size = 4;
1.7079 ++ fragP->fr_subtype = CALL_SUBTYPE_MCALL_CP;
1.7080 ++ }
1.7081 ++ }
1.7082 ++
1.7083 ++ fragP->fr_var = new_size;
1.7084 ++
1.7085 ++ pr_debug("%s:%d: call: relax pass done, growth: %d, fr_var: %d\n",
1.7086 ++ fragP->fr_file, fragP->fr_line,
1.7087 ++ new_size - old_size, fragP->fr_var);
1.7088 ++
1.7089 ++ return new_size - old_size;
1.7090 ++}
1.7091 ++
1.7092 ++static long
1.7093 ++avr32_cpool_relax_frag(segT segment ATTRIBUTE_UNUSED,
1.7094 ++ fragS *fragP,
1.7095 ++ long stretch ATTRIBUTE_UNUSED)
1.7096 ++{
1.7097 ++ struct cpool *pool;
1.7098 ++ addressT address;
1.7099 ++ long old_size, new_size;
1.7100 ++ unsigned int entry;
1.7101 ++
1.7102 ++ pool = fragP->tc_frag_data.pool;
1.7103 ++ address = fragP->fr_address + fragP->fr_fix;
1.7104 ++ old_size = fragP->fr_var;
1.7105 ++ new_size = 0;
1.7106 ++
1.7107 ++ for (entry = 0; entry < pool->next_free_entry; entry++)
1.7108 ++ {
1.7109 ++ if (pool->literals[entry].refcount > 0)
1.7110 ++ {
1.7111 ++ pool->literals[entry].offset = new_size;
1.7112 ++ new_size += 4;
1.7113 ++ }
1.7114 ++ }
1.7115 ++
1.7116 ++ fragP->fr_var = new_size;
1.7117 ++
1.7118 ++ return new_size - old_size;
1.7119 ++}
1.7120 ++
1.7121 ++/* *fragP has been relaxed to its final size, and now needs to have
1.7122 ++ the bytes inside it modified to conform to the new size.
1.7123 ++
1.7124 ++ Called after relaxation is finished.
1.7125 ++ fragP->fr_type == rs_machine_dependent.
1.7126 ++ fragP->fr_subtype is the subtype of what the address relaxed to. */
1.7127 ++
1.7128 ++static void
1.7129 ++avr32_default_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
1.7130 ++ segT segment ATTRIBUTE_UNUSED,
1.7131 ++ fragS *fragP)
1.7132 ++{
1.7133 ++ const struct avr32_opcode *opc;
1.7134 ++ const struct avr32_ifield *ifield;
1.7135 ++ bfd_reloc_code_real_type r_type;
1.7136 ++ symbolS *symbolP;
1.7137 ++ fixS *fixP;
1.7138 ++ bfd_vma value;
1.7139 ++ int subtype;
1.7140 ++
1.7141 ++ opc = &avr32_opc_table[fragP->fr_subtype];
1.7142 ++ ifield = opc->fields[opc->var_field];
1.7143 ++ symbolP = fragP->fr_symbol;
1.7144 ++ subtype = fragP->fr_subtype;
1.7145 ++ r_type = opc->reloc_type;
1.7146 ++
1.7147 ++ /* Clear the opcode bits and the bits belonging to the relaxed
1.7148 ++ field. We assume all other fields stay the same. */
1.7149 ++ value = bfd_getb32(fragP->fr_opcode);
1.7150 ++ value &= ~(opc->mask | ifield->mask);
1.7151 ++
1.7152 ++ /* Insert the new opcode */
1.7153 ++ value |= opc->value;
1.7154 ++ bfd_putb32(value, fragP->fr_opcode);
1.7155 ++
1.7156 ++ fragP->fr_fix += opc->size - fragP->fr_var;
1.7157 ++
1.7158 ++ if (fragP->tc_frag_data.reloc_info != AVR32_OPINFO_NONE)
1.7159 ++ {
1.7160 ++ switch (fragP->tc_frag_data.reloc_info)
1.7161 ++ {
1.7162 ++ case AVR32_OPINFO_HI:
1.7163 ++ r_type = BFD_RELOC_HI16;
1.7164 ++ break;
1.7165 ++ case AVR32_OPINFO_LO:
1.7166 ++ r_type = BFD_RELOC_LO16;
1.7167 ++ break;
1.7168 ++ case AVR32_OPINFO_GOT:
1.7169 ++ switch (r_type)
1.7170 ++ {
1.7171 ++ case BFD_RELOC_AVR32_18W_PCREL:
1.7172 ++ r_type = BFD_RELOC_AVR32_GOT18SW;
1.7173 ++ break;
1.7174 ++ case BFD_RELOC_AVR32_16S:
1.7175 ++ r_type = BFD_RELOC_AVR32_GOT16S;
1.7176 ++ break;
1.7177 ++ default:
1.7178 ++ BAD_CASE(r_type);
1.7179 ++ break;
1.7180 ++ }
1.7181 ++ break;
1.7182 ++ default:
1.7183 ++ BAD_CASE(fragP->tc_frag_data.reloc_info);
1.7184 ++ break;
1.7185 ++ }
1.7186 ++ }
1.7187 ++
1.7188 ++ pr_debug("%s:%d: convert_frag: new %s fixup\n",
1.7189 ++ fragP->fr_file, fragP->fr_line,
1.7190 ++ bfd_get_reloc_code_name(r_type));
1.7191 ++
1.7192 ++#if 1
1.7193 ++ fixP = fix_new_exp(fragP, fragP->fr_fix - opc->size, opc->size,
1.7194 ++ &fragP->tc_frag_data.exp,
1.7195 ++ fragP->tc_frag_data.pcrel, r_type);
1.7196 ++#else
1.7197 ++ fixP = fix_new(fragP, fragP->fr_fix - opc->size, opc->size, symbolP,
1.7198 ++ fragP->fr_offset, fragP->tc_frag_data.pcrel, r_type);
1.7199 ++#endif
1.7200 ++
1.7201 ++ /* Revert fix_new brain damage. "dot_value" is the value of PC at
1.7202 ++ the point of the fixup, relative to the frag address. fix_new()
1.7203 ++ and friends think they are only being called during the assembly
1.7204 ++ pass, not during relaxation or similar, so fx_dot_value, fx_file
1.7205 ++ and fx_line are all initialized to the wrong value. But we don't
1.7206 ++ know the size of the fixup until now, so we really can't live up
1.7207 ++ to the assumptions these functions make about the target. What
1.7208 ++ do these functions think the "where" and "frag" argument mean
1.7209 ++ anyway? */
1.7210 ++ fixP->fx_dot_value = fragP->fr_fix - opc->size;
1.7211 ++ fixP->fx_file = fragP->fr_file;
1.7212 ++ fixP->fx_line = fragP->fr_line;
1.7213 ++
1.7214 ++ fixP->tc_fix_data.ifield = ifield;
1.7215 ++ fixP->tc_fix_data.align = avr32_rs_align(subtype);
1.7216 ++ fixP->tc_fix_data.min = avr32_relax_table[subtype].lower_bound;
1.7217 ++ fixP->tc_fix_data.max = avr32_relax_table[subtype].upper_bound;
1.7218 ++}
1.7219 ++
1.7220 ++static void
1.7221 ++avr32_lda_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
1.7222 ++ segT segment ATTRIBUTE_UNUSED,
1.7223 ++ fragS *fragP)
1.7224 ++{
1.7225 ++ const struct avr32_opcode *opc;
1.7226 ++ const struct avr32_ifield *ifield;
1.7227 ++ bfd_reloc_code_real_type r_type;
1.7228 ++ expressionS exp;
1.7229 ++ struct cpool *pool;
1.7230 ++ fixS *fixP;
1.7231 ++ bfd_vma value;
1.7232 ++ int regid, pcrel = 0, align = 0;
1.7233 ++ char *p;
1.7234 ++
1.7235 ++ r_type = BFD_RELOC_NONE;
1.7236 ++ regid = fragP->tc_frag_data.reloc_info;
1.7237 ++ p = fragP->fr_opcode;
1.7238 ++ exp.X_add_symbol = fragP->fr_symbol;
1.7239 ++ exp.X_add_number = fragP->fr_offset;
1.7240 ++ exp.X_op = O_symbol;
1.7241 ++
1.7242 ++ pr_debug("%s:%d: lda_convert_frag, subtype: %d, fix: %d, var: %d, regid: %d\n",
1.7243 ++ fragP->fr_file, fragP->fr_line,
1.7244 ++ fragP->fr_subtype, fragP->fr_fix, fragP->fr_var, regid);
1.7245 ++
1.7246 ++ switch (fragP->fr_subtype)
1.7247 ++ {
1.7248 ++ case LDA_SUBTYPE_MOV1:
1.7249 ++ opc = &avr32_opc_table[AVR32_OPC_MOV1];
1.7250 ++ opc->fields[0]->insert(opc->fields[0], p, regid);
1.7251 ++ ifield = opc->fields[1];
1.7252 ++ r_type = opc->reloc_type;
1.7253 ++ break;
1.7254 ++ case LDA_SUBTYPE_MOV2:
1.7255 ++ opc = &avr32_opc_table[AVR32_OPC_MOV2];
1.7256 ++ opc->fields[0]->insert(opc->fields[0], p, regid);
1.7257 ++ ifield = opc->fields[1];
1.7258 ++ r_type = opc->reloc_type;
1.7259 ++ break;
1.7260 ++ case LDA_SUBTYPE_SUB:
1.7261 ++ opc = &avr32_opc_table[AVR32_OPC_SUB5];
1.7262 ++ opc->fields[0]->insert(opc->fields[0], p, regid);
1.7263 ++ opc->fields[1]->insert(opc->fields[1], p, AVR32_REG_PC);
1.7264 ++ ifield = opc->fields[2];
1.7265 ++ r_type = BFD_RELOC_AVR32_16N_PCREL;
1.7266 ++
1.7267 ++ /* Pretend that SUB5 isn't a "negated" pcrel expression for now.
1.7268 ++ We'll have to fix it up later when we know whether to
1.7269 ++ generate a reloc for it (in which case the linker will negate
1.7270 ++ it, so we shouldn't). */
1.7271 ++ pcrel = 1;
1.7272 ++ break;
1.7273 ++ case LDA_SUBTYPE_LDDPC:
1.7274 ++ opc = &avr32_opc_table[AVR32_OPC_LDDPC];
1.7275 ++ align = 2;
1.7276 ++ r_type = BFD_RELOC_AVR32_9W_CP;
1.7277 ++ goto cpool_common;
1.7278 ++ case LDA_SUBTYPE_LDW:
1.7279 ++ opc = &avr32_opc_table[AVR32_OPC_LDDPC_EXT];
1.7280 ++ r_type = BFD_RELOC_AVR32_16_CP;
1.7281 ++ cpool_common:
1.7282 ++ opc->fields[0]->insert(opc->fields[0], p, regid);
1.7283 ++ ifield = opc->fields[1];
1.7284 ++ pool = fragP->tc_frag_data.pool;
1.7285 ++ exp.X_add_symbol = pool->symbol;
1.7286 ++ exp.X_add_number = pool->literals[fragP->tc_frag_data.pool_entry].offset;
1.7287 ++ pcrel = 1;
1.7288 ++ break;
1.7289 ++ case LDA_SUBTYPE_GOTLOAD_LARGE:
1.7290 ++ /* ld.w Rd, r6[Rd << 2] (last) */
1.7291 ++ opc = &avr32_opc_table[AVR32_OPC_LD_W5];
1.7292 ++ bfd_putb32(opc->value, p + 4);
1.7293 ++ opc->fields[0]->insert(opc->fields[0], p + 4, regid);
1.7294 ++ opc->fields[1]->insert(opc->fields[1], p + 4, 6);
1.7295 ++ opc->fields[2]->insert(opc->fields[2], p + 4, regid);
1.7296 ++ opc->fields[3]->insert(opc->fields[3], p + 4, 2);
1.7297 ++
1.7298 ++ /* mov Rd, (got_offset / 4) */
1.7299 ++ opc = &avr32_opc_table[AVR32_OPC_MOV2];
1.7300 ++ opc->fields[0]->insert(opc->fields[0], p, regid);
1.7301 ++ ifield = opc->fields[1];
1.7302 ++ r_type = BFD_RELOC_AVR32_LDA_GOT;
1.7303 ++ break;
1.7304 ++ case LDA_SUBTYPE_GOTLOAD:
1.7305 ++ opc = &avr32_opc_table[AVR32_OPC_LD_W4];
1.7306 ++ opc->fields[0]->insert(opc->fields[0], p, regid);
1.7307 ++ opc->fields[1]->insert(opc->fields[1], p, 6);
1.7308 ++ ifield = opc->fields[2];
1.7309 ++ if (r_type == BFD_RELOC_NONE)
1.7310 ++ r_type = BFD_RELOC_AVR32_GOT16S;
1.7311 ++ break;
1.7312 ++ default:
1.7313 ++ BAD_CASE(fragP->fr_subtype);
1.7314 ++ }
1.7315 ++
1.7316 ++ value = bfd_getb32(p);
1.7317 ++ value &= ~(opc->mask | ifield->mask);
1.7318 ++ value |= opc->value;
1.7319 ++ bfd_putb32(value, p);
1.7320 ++
1.7321 ++ fragP->fr_fix += fragP->fr_var - LDA_INITIAL_SIZE;
1.7322 ++
1.7323 ++ if (fragP->fr_next
1.7324 ++ && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
1.7325 ++ != fragP->fr_fix))
1.7326 ++ {
1.7327 ++ fprintf(stderr, "LDA frag: fr_fix is wrong! fragP->fr_var = %ld, r_type = %s\n",
1.7328 ++ fragP->fr_var, bfd_get_reloc_code_name(r_type));
1.7329 ++ abort();
1.7330 ++ }
1.7331 ++
1.7332 ++ fixP = fix_new_exp(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
1.7333 ++ &exp, pcrel, r_type);
1.7334 ++
1.7335 ++ /* Revert fix_new brain damage. "dot_value" is the value of PC at
1.7336 ++ the point of the fixup, relative to the frag address. fix_new()
1.7337 ++ and friends think they are only being called during the assembly
1.7338 ++ pass, not during relaxation or similar, so fx_dot_value, fx_file
1.7339 ++ and fx_line are all initialized to the wrong value. But we don't
1.7340 ++ know the size of the fixup until now, so we really can't live up
1.7341 ++ to the assumptions these functions make about the target. What
1.7342 ++ do these functions think the "where" and "frag" argument mean
1.7343 ++ anyway? */
1.7344 ++ fixP->fx_dot_value = fragP->fr_fix - opc->size;
1.7345 ++ fixP->fx_file = fragP->fr_file;
1.7346 ++ fixP->fx_line = fragP->fr_line;
1.7347 ++
1.7348 ++ fixP->tc_fix_data.ifield = ifield;
1.7349 ++ fixP->tc_fix_data.align = align;
1.7350 ++ /* these are only used if the fixup can actually be resolved */
1.7351 ++ fixP->tc_fix_data.min = -32768;
1.7352 ++ fixP->tc_fix_data.max = 32767;
1.7353 ++}
1.7354 ++
1.7355 ++static void
1.7356 ++avr32_call_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
1.7357 ++ segT segment ATTRIBUTE_UNUSED,
1.7358 ++ fragS *fragP)
1.7359 ++{
1.7360 ++ const struct avr32_opcode *opc = NULL;
1.7361 ++ const struct avr32_ifield *ifield;
1.7362 ++ bfd_reloc_code_real_type r_type;
1.7363 ++ symbolS *symbol;
1.7364 ++ offsetT offset;
1.7365 ++ fixS *fixP;
1.7366 ++ bfd_vma value;
1.7367 ++ int pcrel = 0, align = 0;
1.7368 ++ char *p;
1.7369 ++
1.7370 ++ symbol = fragP->fr_symbol;
1.7371 ++ offset = fragP->fr_offset;
1.7372 ++ r_type = BFD_RELOC_NONE;
1.7373 ++ p = fragP->fr_opcode;
1.7374 ++
1.7375 ++ pr_debug("%s:%d: call_convert_frag, subtype: %d, fix: %d, var: %d\n",
1.7376 ++ fragP->fr_file, fragP->fr_line,
1.7377 ++ fragP->fr_subtype, fragP->fr_fix, fragP->fr_var);
1.7378 ++
1.7379 ++ switch (fragP->fr_subtype)
1.7380 ++ {
1.7381 ++ case CALL_SUBTYPE_RCALL1:
1.7382 ++ opc = &avr32_opc_table[AVR32_OPC_RCALL1];
1.7383 ++ /* fall through */
1.7384 ++ case CALL_SUBTYPE_RCALL2:
1.7385 ++ if (!opc)
1.7386 ++ opc = &avr32_opc_table[AVR32_OPC_RCALL2];
1.7387 ++ ifield = opc->fields[0];
1.7388 ++ r_type = opc->reloc_type;
1.7389 ++ pcrel = 1;
1.7390 ++ align = 1;
1.7391 ++ break;
1.7392 ++ case CALL_SUBTYPE_MCALL_CP:
1.7393 ++ opc = &avr32_opc_table[AVR32_OPC_MCALL];
1.7394 ++ opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_PC);
1.7395 ++ ifield = opc->fields[1];
1.7396 ++ r_type = BFD_RELOC_AVR32_CPCALL;
1.7397 ++ symbol = fragP->tc_frag_data.pool->symbol;
1.7398 ++ offset = fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].offset;
1.7399 ++ assert(fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].refcount > 0);
1.7400 ++ pcrel = 1;
1.7401 ++ align = 2;
1.7402 ++ break;
1.7403 ++ case CALL_SUBTYPE_MCALL_GOT:
1.7404 ++ opc = &avr32_opc_table[AVR32_OPC_MCALL];
1.7405 ++ opc->fields[0]->insert(opc->fields[0], p, 6);
1.7406 ++ ifield = opc->fields[1];
1.7407 ++ r_type = BFD_RELOC_AVR32_GOT18SW;
1.7408 ++ break;
1.7409 ++ case CALL_SUBTYPE_MCALL_LARGE:
1.7410 ++ assert(fragP->fr_var == 10);
1.7411 ++ /* ld.w lr, r6[lr << 2] */
1.7412 ++ opc = &avr32_opc_table[AVR32_OPC_LD_W5];
1.7413 ++ bfd_putb32(opc->value, p + 4);
1.7414 ++ opc->fields[0]->insert(opc->fields[0], p + 4, AVR32_REG_LR);
1.7415 ++ opc->fields[1]->insert(opc->fields[1], p + 4, 6);
1.7416 ++ opc->fields[2]->insert(opc->fields[2], p + 4, AVR32_REG_LR);
1.7417 ++ opc->fields[3]->insert(opc->fields[3], p + 4, 2);
1.7418 ++
1.7419 ++ /* icall lr */
1.7420 ++ opc = &avr32_opc_table[AVR32_OPC_ICALL];
1.7421 ++ bfd_putb16(opc->value >> 16, p + 8);
1.7422 ++ opc->fields[0]->insert(opc->fields[0], p + 8, AVR32_REG_LR);
1.7423 ++
1.7424 ++ /* mov lr, (got_offset / 4) */
1.7425 ++ opc = &avr32_opc_table[AVR32_OPC_MOV2];
1.7426 ++ opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_LR);
1.7427 ++ ifield = opc->fields[1];
1.7428 ++ r_type = BFD_RELOC_AVR32_GOTCALL;
1.7429 ++ break;
1.7430 ++ default:
1.7431 ++ BAD_CASE(fragP->fr_subtype);
1.7432 ++ }
1.7433 ++
1.7434 ++ /* Insert the opcode and clear the variable ifield */
1.7435 ++ value = bfd_getb32(p);
1.7436 ++ value &= ~(opc->mask | ifield->mask);
1.7437 ++ value |= opc->value;
1.7438 ++ bfd_putb32(value, p);
1.7439 ++
1.7440 ++ fragP->fr_fix += fragP->fr_var - CALL_INITIAL_SIZE;
1.7441 ++
1.7442 ++ if (fragP->fr_next
1.7443 ++ && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
1.7444 ++ != fragP->fr_fix))
1.7445 ++ {
1.7446 ++ fprintf(stderr, "%s:%d: fr_fix %lu is wrong! fr_var=%lu, r_type=%s\n",
1.7447 ++ fragP->fr_file, fragP->fr_line,
1.7448 ++ fragP->fr_fix, fragP->fr_var, bfd_get_reloc_code_name(r_type));
1.7449 ++ fprintf(stderr, "fr_fix should be %ld. next frag is %s:%d\n",
1.7450 ++ (offsetT)(fragP->fr_next->fr_address - fragP->fr_address),
1.7451 ++ fragP->fr_next->fr_file, fragP->fr_next->fr_line);
1.7452 ++ }
1.7453 ++
1.7454 ++ fixP = fix_new(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
1.7455 ++ symbol, offset, pcrel, r_type);
1.7456 ++
1.7457 ++ /* Revert fix_new brain damage. "dot_value" is the value of PC at
1.7458 ++ the point of the fixup, relative to the frag address. fix_new()
1.7459 ++ and friends think they are only being called during the assembly
1.7460 ++ pass, not during relaxation or similar, so fx_dot_value, fx_file
1.7461 ++ and fx_line are all initialized to the wrong value. But we don't
1.7462 ++ know the size of the fixup until now, so we really can't live up
1.7463 ++ to the assumptions these functions make about the target. What
1.7464 ++ do these functions think the "where" and "frag" argument mean
1.7465 ++ anyway? */
1.7466 ++ fixP->fx_dot_value = fragP->fr_fix - opc->size;
1.7467 ++ fixP->fx_file = fragP->fr_file;
1.7468 ++ fixP->fx_line = fragP->fr_line;
1.7469 ++
1.7470 ++ fixP->tc_fix_data.ifield = ifield;
1.7471 ++ fixP->tc_fix_data.align = align;
1.7472 ++ /* these are only used if the fixup can actually be resolved */
1.7473 ++ fixP->tc_fix_data.min = -2097152;
1.7474 ++ fixP->tc_fix_data.max = 2097150;
1.7475 ++}
1.7476 ++
1.7477 ++static void
1.7478 ++avr32_cpool_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
1.7479 ++ segT segment ATTRIBUTE_UNUSED,
1.7480 ++ fragS *fragP)
1.7481 ++{
1.7482 ++ struct cpool *pool;
1.7483 ++ addressT address;
1.7484 ++ unsigned int entry;
1.7485 ++ char *p;
1.7486 ++ char sym_name[20];
1.7487 ++
1.7488 ++ /* Did we get rid of the frag altogether? */
1.7489 ++ if (!fragP->fr_var)
1.7490 ++ return;
1.7491 ++
1.7492 ++ pool = fragP->tc_frag_data.pool;
1.7493 ++ address = fragP->fr_address + fragP->fr_fix;
1.7494 ++ p = fragP->fr_literal + fragP->fr_fix;
1.7495 ++
1.7496 ++ sprintf(sym_name, "$$cp_\002%x", pool->id);
1.7497 ++ symbol_locate(pool->symbol, sym_name, pool->section, fragP->fr_fix, fragP);
1.7498 ++ symbol_table_insert(pool->symbol);
1.7499 ++
1.7500 ++ for (entry = 0; entry < pool->next_free_entry; entry++)
1.7501 ++ {
1.7502 ++ if (pool->literals[entry].refcount > 0)
1.7503 ++ {
1.7504 ++ fix_new_exp(fragP, fragP->fr_fix, 4, &pool->literals[entry].exp,
1.7505 ++ FALSE, BFD_RELOC_AVR32_32_CPENT);
1.7506 ++ fragP->fr_fix += 4;
1.7507 ++ }
1.7508 ++ }
1.7509 ++}
1.7510 ++
1.7511 ++static struct avr32_relaxer avr32_default_relaxer = {
1.7512 ++ .estimate_size = avr32_default_estimate_size_before_relax,
1.7513 ++ .relax_frag = avr32_default_relax_frag,
1.7514 ++ .convert_frag = avr32_default_convert_frag,
1.7515 ++};
1.7516 ++static struct avr32_relaxer avr32_lda_relaxer = {
1.7517 ++ .estimate_size = avr32_lda_estimate_size_before_relax,
1.7518 ++ .relax_frag = avr32_lda_relax_frag,
1.7519 ++ .convert_frag = avr32_lda_convert_frag,
1.7520 ++};
1.7521 ++static struct avr32_relaxer avr32_call_relaxer = {
1.7522 ++ .estimate_size = avr32_call_estimate_size_before_relax,
1.7523 ++ .relax_frag = avr32_call_relax_frag,
1.7524 ++ .convert_frag = avr32_call_convert_frag,
1.7525 ++};
1.7526 ++static struct avr32_relaxer avr32_cpool_relaxer = {
1.7527 ++ .estimate_size = avr32_cpool_estimate_size_before_relax,
1.7528 ++ .relax_frag = avr32_cpool_relax_frag,
1.7529 ++ .convert_frag = avr32_cpool_convert_frag,
1.7530 ++};
1.7531 ++
1.7532 ++static void s_cpool(int arg ATTRIBUTE_UNUSED)
1.7533 ++{
1.7534 ++ struct cpool *pool;
1.7535 ++ unsigned int max_size;
1.7536 ++ char *buf;
1.7537 ++
1.7538 ++ pool = find_cpool(now_seg, now_subseg);
1.7539 ++ if (!pool || !pool->symbol || pool->next_free_entry == 0)
1.7540 ++ return;
1.7541 ++
1.7542 ++ /* Make sure the constant pool is properly aligned */
1.7543 ++ frag_align_code(2, 0);
1.7544 ++ if (bfd_get_section_alignment(stdoutput, pool->section) < 2)
1.7545 ++ bfd_set_section_alignment(stdoutput, pool->section, 2);
1.7546 ++
1.7547 ++ /* Assume none of the entries are discarded, and that we need the
1.7548 ++ maximum amount of alignment. But we're not going to allocate
1.7549 ++ anything up front. */
1.7550 ++ max_size = pool->next_free_entry * 4 + 2;
1.7551 ++ frag_grow(max_size);
1.7552 ++ buf = frag_more(0);
1.7553 ++
1.7554 ++ frag_now->tc_frag_data.relaxer = &avr32_cpool_relaxer;
1.7555 ++ frag_now->tc_frag_data.pool = pool;
1.7556 ++
1.7557 ++ symbol_set_frag(pool->symbol, frag_now);
1.7558 ++
1.7559 ++ /* Assume zero initial size, allowing other relaxers to be
1.7560 ++ optimistic about things. */
1.7561 ++ frag_var(rs_machine_dependent, max_size, 0,
1.7562 ++ 0, pool->symbol, 0, NULL);
1.7563 ++
1.7564 ++ /* Mark the pool as empty. */
1.7565 ++ pool->used = 1;
1.7566 ++}
1.7567 ++
1.7568 ++/* The location from which a PC relative jump should be calculated,
1.7569 ++ given a PC relative reloc. */
1.7570 ++
1.7571 ++long
1.7572 ++md_pcrel_from_section (fixS *fixP, segT sec)
1.7573 ++{
1.7574 ++ pr_debug("pcrel_from_section, fx_offset = %d\n", fixP->fx_offset);
1.7575 ++
1.7576 ++ if (fixP->fx_addsy != NULL
1.7577 ++ && (! S_IS_DEFINED (fixP->fx_addsy)
1.7578 ++ || S_GET_SEGMENT (fixP->fx_addsy) != sec
1.7579 ++ || S_FORCE_RELOC(fixP->fx_addsy, 1)))
1.7580 ++ {
1.7581 ++ pr_debug("Unknown pcrel symbol: %s\n", S_GET_NAME(fixP->fx_addsy));
1.7582 ++
1.7583 ++ /* The symbol is undefined (or is defined but not in this section).
1.7584 ++ Let the linker figure it out. */
1.7585 ++ return 0;
1.7586 ++ }
1.7587 ++
1.7588 ++ pr_debug("pcrel from %x + %x, symbol: %s (%x)\n",
1.7589 ++ fixP->fx_frag->fr_address, fixP->fx_where,
1.7590 ++ fixP->fx_addsy?S_GET_NAME(fixP->fx_addsy):"(null)",
1.7591 ++ fixP->fx_addsy?S_GET_VALUE(fixP->fx_addsy):0);
1.7592 ++
1.7593 ++ return ((fixP->fx_frag->fr_address + fixP->fx_where)
1.7594 ++ & (~0UL << fixP->tc_fix_data.align));
1.7595 ++}
1.7596 ++
1.7597 ++valueT
1.7598 ++md_section_align (segT segment, valueT size)
1.7599 ++{
1.7600 ++ int align = bfd_get_section_alignment (stdoutput, segment);
1.7601 ++ return ((size + (1 << align) - 1) & (-1 << align));
1.7602 ++}
1.7603 ++
1.7604 ++static int syntax_matches(const struct avr32_syntax *syntax,
1.7605 ++ char *str)
1.7606 ++{
1.7607 ++ int i;
1.7608 ++
1.7609 ++ pr_debug("syntax %d matches `%s'?\n", syntax->id, str);
1.7610 ++
1.7611 ++ if (syntax->nr_operands < 0)
1.7612 ++ {
1.7613 ++ struct avr32_operand *op;
1.7614 ++ int optype;
1.7615 ++
1.7616 ++ for (i = 0; i < (-syntax->nr_operands - 1); i++)
1.7617 ++ {
1.7618 ++ char *p;
1.7619 ++ char c;
1.7620 ++
1.7621 ++ optype = syntax->operand[i];
1.7622 ++ assert(optype < AVR32_NR_OPERANDS);
1.7623 ++ op = &avr32_operand_table[optype];
1.7624 ++
1.7625 ++ for (p = str; *p; p++)
1.7626 ++ if (*p == ',')
1.7627 ++ break;
1.7628 ++
1.7629 ++ if (p == str)
1.7630 ++ return 0;
1.7631 ++
1.7632 ++ c = *p;
1.7633 ++ *p = 0;
1.7634 ++
1.7635 ++ if (!op->match(str))
1.7636 ++ {
1.7637 ++ *p = c;
1.7638 ++ return 0;
1.7639 ++ }
1.7640 ++
1.7641 ++ str = p;
1.7642 ++ *p = c;
1.7643 ++ if (c)
1.7644 ++ str++;
1.7645 ++ }
1.7646 ++
1.7647 ++ optype = syntax->operand[i];
1.7648 ++ assert(optype < AVR32_NR_OPERANDS);
1.7649 ++ op = &avr32_operand_table[optype];
1.7650 ++
1.7651 ++ if (!op->match(str))
1.7652 ++ return 0;
1.7653 ++ return 1;
1.7654 ++ }
1.7655 ++
1.7656 ++ for (i = 0; i < syntax->nr_operands; i++)
1.7657 ++ {
1.7658 ++ struct avr32_operand *op;
1.7659 ++ int optype = syntax->operand[i];
1.7660 ++ char *p;
1.7661 ++ char c;
1.7662 ++
1.7663 ++ assert(optype < AVR32_NR_OPERANDS);
1.7664 ++ op = &avr32_operand_table[optype];
1.7665 ++
1.7666 ++ for (p = str; *p; p++)
1.7667 ++ if (*p == ',')
1.7668 ++ break;
1.7669 ++
1.7670 ++ if (p == str)
1.7671 ++ return 0;
1.7672 ++
1.7673 ++ c = *p;
1.7674 ++ *p = 0;
1.7675 ++
1.7676 ++ if (!op->match(str))
1.7677 ++ {
1.7678 ++ *p = c;
1.7679 ++ return 0;
1.7680 ++ }
1.7681 ++
1.7682 ++ str = p;
1.7683 ++ *p = c;
1.7684 ++ if (c)
1.7685 ++ str++;
1.7686 ++ }
1.7687 ++
1.7688 ++ if (*str == '\0')
1.7689 ++ return 1;
1.7690 ++
1.7691 ++ if ((*str == 'e' || *str == 'E') && !str[1])
1.7692 ++ return 1;
1.7693 ++
1.7694 ++ return 0;
1.7695 ++}
1.7696 ++
1.7697 ++static int parse_operands(char *str)
1.7698 ++{
1.7699 ++ int i;
1.7700 ++
1.7701 ++ if (current_insn.syntax->nr_operands < 0)
1.7702 ++ {
1.7703 ++ int optype;
1.7704 ++ struct avr32_operand *op;
1.7705 ++
1.7706 ++ for (i = 0; i < (-current_insn.syntax->nr_operands - 1); i++)
1.7707 ++ {
1.7708 ++ char *p;
1.7709 ++ char c;
1.7710 ++
1.7711 ++ optype = current_insn.syntax->operand[i];
1.7712 ++ op = &avr32_operand_table[optype];
1.7713 ++
1.7714 ++ for (p = str; *p; p++)
1.7715 ++ if (*p == ',')
1.7716 ++ break;
1.7717 ++
1.7718 ++ assert(p != str);
1.7719 ++
1.7720 ++ c = *p, *p = 0;
1.7721 ++ op->parse(op, str, i);
1.7722 ++ *p = c;
1.7723 ++
1.7724 ++ str = p;
1.7725 ++ if (c) str++;
1.7726 ++ }
1.7727 ++
1.7728 ++ /* give the rest of the line to the last operand */
1.7729 ++ optype = current_insn.syntax->operand[i];
1.7730 ++ op = &avr32_operand_table[optype];
1.7731 ++ op->parse(op, str, i);
1.7732 ++ }
1.7733 ++ else
1.7734 ++ {
1.7735 ++ for (i = 0; i < current_insn.syntax->nr_operands; i++)
1.7736 ++ {
1.7737 ++ int optype = current_insn.syntax->operand[i];
1.7738 ++ struct avr32_operand *op = &avr32_operand_table[optype];
1.7739 ++ char *p;
1.7740 ++ char c;
1.7741 ++
1.7742 ++ skip_whitespace(str);
1.7743 ++
1.7744 ++ for (p = str; *p; p++)
1.7745 ++ if (*p == ',')
1.7746 ++ break;
1.7747 ++
1.7748 ++ assert(p != str);
1.7749 ++
1.7750 ++ c = *p, *p = 0;
1.7751 ++ op->parse(op, str, i);
1.7752 ++ *p = c;
1.7753 ++
1.7754 ++ str = p;
1.7755 ++ if (c) str++;
1.7756 ++ }
1.7757 ++
1.7758 ++ if (*str == 'E' || *str == 'e')
1.7759 ++ current_insn.force_extended = 1;
1.7760 ++ }
1.7761 ++
1.7762 ++ return 0;
1.7763 ++}
1.7764 ++
1.7765 ++static const char *
1.7766 ++finish_insn(const struct avr32_opcode *opc)
1.7767 ++{
1.7768 ++ expressionS *exp = ¤t_insn.immediate;
1.7769 ++ unsigned int i;
1.7770 ++ int will_relax = 0;
1.7771 ++ char *buf;
1.7772 ++
1.7773 ++ assert(current_insn.next_slot == opc->nr_fields);
1.7774 ++
1.7775 ++ pr_debug("%s:%d: finish_insn: trying opcode %d\n",
1.7776 ++ frag_now->fr_file, frag_now->fr_line, opc->id);
1.7777 ++
1.7778 ++ /* Go through the relaxation stage for all instructions that can
1.7779 ++ possibly take a symbolic immediate. The relax code will take
1.7780 ++ care of range checking and alignment. */
1.7781 ++ if (opc->var_field != -1)
1.7782 ++ {
1.7783 ++ int substate, largest_substate;
1.7784 ++ symbolS *sym;
1.7785 ++ offsetT off;
1.7786 ++
1.7787 ++ will_relax = 1;
1.7788 ++ substate = largest_substate = opc_initial_substate(opc);
1.7789 ++
1.7790 ++ while (relax_more(largest_substate) != AVR32_RS_NONE)
1.7791 ++ largest_substate = relax_more(largest_substate);
1.7792 ++
1.7793 ++ pr_debug("will relax. initial substate: %d (size %d), largest substate: %d (size %d)\n",
1.7794 ++ substate, avr32_rs_size(substate),
1.7795 ++ largest_substate, avr32_rs_size(largest_substate));
1.7796 ++
1.7797 ++ /* make sure we have enough room for the largest possible opcode */
1.7798 ++ frag_grow(avr32_rs_size(largest_substate));
1.7799 ++ buf = frag_more(opc->size);
1.7800 ++
1.7801 ++ dwarf2_emit_insn(opc->size);
1.7802 ++
1.7803 ++ frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_NONE;
1.7804 ++ frag_now->tc_frag_data.pcrel = current_insn.pcrel;
1.7805 ++ frag_now->tc_frag_data.force_extended = current_insn.force_extended;
1.7806 ++ frag_now->tc_frag_data.relaxer = &avr32_default_relaxer;
1.7807 ++
1.7808 ++ if (exp->X_op == O_hi)
1.7809 ++ {
1.7810 ++ frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_HI;
1.7811 ++ exp->X_op = exp->X_md;
1.7812 ++ }
1.7813 ++ else if (exp->X_op == O_lo)
1.7814 ++ {
1.7815 ++ frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_LO;
1.7816 ++ exp->X_op = exp->X_md;
1.7817 ++ }
1.7818 ++ else if (exp->X_op == O_got)
1.7819 ++ {
1.7820 ++ frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_GOT;
1.7821 ++ exp->X_op = O_symbol;
1.7822 ++ }
1.7823 ++
1.7824 ++#if 0
1.7825 ++ if ((opc->reloc_type == BFD_RELOC_AVR32_SUB5)
1.7826 ++ && exp->X_op == O_subtract)
1.7827 ++ {
1.7828 ++ symbolS *tmp;
1.7829 ++ tmp = exp->X_add_symbol;
1.7830 ++ exp->X_add_symbol = exp->X_op_symbol;
1.7831 ++ exp->X_op_symbol = tmp;
1.7832 ++ }
1.7833 ++#endif
1.7834 ++
1.7835 ++ frag_now->tc_frag_data.exp = current_insn.immediate;
1.7836 ++
1.7837 ++ sym = exp->X_add_symbol;
1.7838 ++ off = exp->X_add_number;
1.7839 ++ if (exp->X_op != O_symbol)
1.7840 ++ {
1.7841 ++ sym = make_expr_symbol(exp);
1.7842 ++ off = 0;
1.7843 ++ }
1.7844 ++
1.7845 ++ frag_var(rs_machine_dependent,
1.7846 ++ avr32_rs_size(largest_substate) - opc->size,
1.7847 ++ opc->size,
1.7848 ++ substate, sym, off, buf);
1.7849 ++ }
1.7850 ++ else
1.7851 ++ {
1.7852 ++ assert(avr32_rs_size(opc_initial_substate(opc)) == 0);
1.7853 ++
1.7854 ++ /* Make sure we always have room for another whole word, as the ifield
1.7855 ++ inserters can only write words. */
1.7856 ++ frag_grow(4);
1.7857 ++ buf = frag_more(opc->size);
1.7858 ++ dwarf2_emit_insn(opc->size);
1.7859 ++ }
1.7860 ++
1.7861 ++ assert(!(opc->value & ~opc->mask));
1.7862 ++
1.7863 ++ pr_debug("inserting opcode: 0x%lx\n", opc->value);
1.7864 ++ bfd_putb32(opc->value, buf);
1.7865 ++
1.7866 ++ for (i = 0; i < opc->nr_fields; i++)
1.7867 ++ {
1.7868 ++ const struct avr32_ifield *f = opc->fields[i];
1.7869 ++ const struct avr32_ifield_data *fd = ¤t_insn.field_value[i];
1.7870 ++
1.7871 ++ pr_debug("inserting field: 0x%lx & 0x%lx\n",
1.7872 ++ fd->value >> fd->align_order, f->mask);
1.7873 ++
1.7874 ++ f->insert(f, buf, fd->value >> fd->align_order);
1.7875 ++ }
1.7876 ++
1.7877 ++ assert(will_relax || !current_insn.immediate.X_add_symbol);
1.7878 ++ return NULL;
1.7879 ++}
1.7880 ++
1.7881 ++static const char *
1.7882 ++finish_alias(const struct avr32_alias *alias)
1.7883 ++{
1.7884 ++ const struct avr32_opcode *opc;
1.7885 ++ struct {
1.7886 ++ unsigned long value;
1.7887 ++ unsigned long align;
1.7888 ++ } mapped_operand[AVR32_MAX_OPERANDS];
1.7889 ++ unsigned int i;
1.7890 ++
1.7891 ++ opc = alias->opc;
1.7892 ++
1.7893 ++ /* Remap the operands from the alias to the real opcode */
1.7894 ++ for (i = 0; i < opc->nr_fields; i++)
1.7895 ++ {
1.7896 ++ if (alias->operand_map[i].is_opindex)
1.7897 ++ {
1.7898 ++ struct avr32_ifield_data *fd;
1.7899 ++ fd = ¤t_insn.field_value[alias->operand_map[i].value];
1.7900 ++ mapped_operand[i].value = fd->value;
1.7901 ++ mapped_operand[i].align = fd->align_order;
1.7902 ++ }
1.7903 ++ else
1.7904 ++ {
1.7905 ++ mapped_operand[i].value = alias->operand_map[i].value;
1.7906 ++ mapped_operand[i].align = 0;
1.7907 ++ }
1.7908 ++ }
1.7909 ++
1.7910 ++ for (i = 0; i < opc->nr_fields; i++)
1.7911 ++ {
1.7912 ++ current_insn.field_value[i].value = mapped_operand[i].value;
1.7913 ++ if (opc->id == AVR32_OPC_COP)
1.7914 ++ current_insn.field_value[i].align_order = 0;
1.7915 ++ else
1.7916 ++ current_insn.field_value[i].align_order
1.7917 ++ = mapped_operand[i].align;
1.7918 ++ }
1.7919 ++
1.7920 ++ current_insn.next_slot = opc->nr_fields;
1.7921 ++
1.7922 ++ return finish_insn(opc);
1.7923 ++}
1.7924 ++
1.7925 ++static const char *
1.7926 ++finish_lda(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
1.7927 ++{
1.7928 ++ expressionS *exp = ¤t_insn.immediate;
1.7929 ++ relax_substateT initial_subtype;
1.7930 ++ symbolS *sym;
1.7931 ++ offsetT off;
1.7932 ++ int initial_size, max_size;
1.7933 ++ char *buf;
1.7934 ++
1.7935 ++ initial_size = LDA_INITIAL_SIZE;
1.7936 ++
1.7937 ++ if (avr32_pic)
1.7938 ++ {
1.7939 ++ initial_subtype = LDA_SUBTYPE_SUB;
1.7940 ++ if (linkrelax)
1.7941 ++ max_size = 8;
1.7942 ++ else
1.7943 ++ max_size = 4;
1.7944 ++ }
1.7945 ++ else
1.7946 ++ {
1.7947 ++ initial_subtype = LDA_SUBTYPE_MOV1;
1.7948 ++ max_size = 4;
1.7949 ++ }
1.7950 ++
1.7951 ++ frag_grow(max_size);
1.7952 ++ buf = frag_more(initial_size);
1.7953 ++ dwarf2_emit_insn(initial_size);
1.7954 ++
1.7955 ++ if (exp->X_op == O_symbol)
1.7956 ++ {
1.7957 ++ sym = exp->X_add_symbol;
1.7958 ++ off = exp->X_add_number;
1.7959 ++ }
1.7960 ++ else
1.7961 ++ {
1.7962 ++ sym = make_expr_symbol(exp);
1.7963 ++ off = 0;
1.7964 ++ }
1.7965 ++
1.7966 ++ frag_now->tc_frag_data.reloc_info = current_insn.field_value[0].value;
1.7967 ++ frag_now->tc_frag_data.relaxer = &avr32_lda_relaxer;
1.7968 ++
1.7969 ++ if (!avr32_pic)
1.7970 ++ {
1.7971 ++ /* The relaxer will bump the refcount if necessary */
1.7972 ++ frag_now->tc_frag_data.pool
1.7973 ++ = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
1.7974 ++ }
1.7975 ++
1.7976 ++ frag_var(rs_machine_dependent, max_size - initial_size,
1.7977 ++ initial_size, initial_subtype, sym, off, buf);
1.7978 ++
1.7979 ++ return NULL;
1.7980 ++}
1.7981 ++
1.7982 ++static const char *
1.7983 ++finish_call(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
1.7984 ++{
1.7985 ++ expressionS *exp = ¤t_insn.immediate;
1.7986 ++ symbolS *sym;
1.7987 ++ offsetT off;
1.7988 ++ int initial_size, max_size;
1.7989 ++ char *buf;
1.7990 ++
1.7991 ++ initial_size = CALL_INITIAL_SIZE;
1.7992 ++
1.7993 ++ if (avr32_pic)
1.7994 ++ {
1.7995 ++ if (linkrelax)
1.7996 ++ max_size = 10;
1.7997 ++ else
1.7998 ++ max_size = 4;
1.7999 ++ }
1.8000 ++ else
1.8001 ++ max_size = 4;
1.8002 ++
1.8003 ++ frag_grow(max_size);
1.8004 ++ buf = frag_more(initial_size);
1.8005 ++ dwarf2_emit_insn(initial_size);
1.8006 ++
1.8007 ++ frag_now->tc_frag_data.relaxer = &avr32_call_relaxer;
1.8008 ++
1.8009 ++ if (exp->X_op == O_symbol)
1.8010 ++ {
1.8011 ++ sym = exp->X_add_symbol;
1.8012 ++ off = exp->X_add_number;
1.8013 ++ }
1.8014 ++ else
1.8015 ++ {
1.8016 ++ sym = make_expr_symbol(exp);
1.8017 ++ off = 0;
1.8018 ++ }
1.8019 ++
1.8020 ++ if (!avr32_pic)
1.8021 ++ {
1.8022 ++ /* The relaxer will bump the refcount if necessary */
1.8023 ++ frag_now->tc_frag_data.pool
1.8024 ++ = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
1.8025 ++ }
1.8026 ++
1.8027 ++ frag_var(rs_machine_dependent, max_size - initial_size,
1.8028 ++ initial_size, CALL_SUBTYPE_RCALL1, sym, off, buf);
1.8029 ++
1.8030 ++ return NULL;
1.8031 ++}
1.8032 ++
1.8033 ++void
1.8034 ++md_begin (void)
1.8035 ++{
1.8036 ++ unsigned long flags = 0;
1.8037 ++ int i;
1.8038 ++
1.8039 ++ avr32_mnemonic_htab = hash_new();
1.8040 ++
1.8041 ++ if (!avr32_mnemonic_htab)
1.8042 ++ as_fatal(_("virtual memory exhausted"));
1.8043 ++
1.8044 ++ for (i = 0; i < AVR32_NR_MNEMONICS; i++)
1.8045 ++ {
1.8046 ++ hash_insert(avr32_mnemonic_htab, avr32_mnemonic_table[i].name,
1.8047 ++ (void *)&avr32_mnemonic_table[i]);
1.8048 ++ }
1.8049 ++
1.8050 ++ if (linkrelax)
1.8051 ++ flags |= EF_AVR32_LINKRELAX;
1.8052 ++ if (avr32_pic)
1.8053 ++ flags |= EF_AVR32_PIC;
1.8054 ++
1.8055 ++ bfd_set_private_flags(stdoutput, flags);
1.8056 ++
1.8057 ++#ifdef OPC_CONSISTENCY_CHECK
1.8058 ++ if (sizeof(avr32_operand_table)/sizeof(avr32_operand_table[0])
1.8059 ++ < AVR32_NR_OPERANDS)
1.8060 ++ as_fatal(_("operand table is incomplete"));
1.8061 ++
1.8062 ++ for (i = 0; i < AVR32_NR_OPERANDS; i++)
1.8063 ++ if (avr32_operand_table[i].id != i)
1.8064 ++ as_fatal(_("operand table inconsistency found at index %d\n"), i);
1.8065 ++ pr_debug("%d operands verified\n", AVR32_NR_OPERANDS);
1.8066 ++
1.8067 ++ for (i = 0; i < AVR32_NR_IFIELDS; i++)
1.8068 ++ if (avr32_ifield_table[i].id != i)
1.8069 ++ as_fatal(_("ifield table inconsistency found at index %d\n"), i);
1.8070 ++ pr_debug("%d instruction fields verified\n", AVR32_NR_IFIELDS);
1.8071 ++
1.8072 ++ for (i = 0; i < AVR32_NR_OPCODES; i++)
1.8073 ++ {
1.8074 ++ if (avr32_opc_table[i].id != i)
1.8075 ++ as_fatal(_("opcode table inconsistency found at index %d\n"), i);
1.8076 ++ if ((avr32_opc_table[i].var_field == -1
1.8077 ++ && avr32_relax_table[i].length != 0)
1.8078 ++ || (avr32_opc_table[i].var_field != -1
1.8079 ++ && avr32_relax_table[i].length == 0))
1.8080 ++ as_fatal(_("relax table inconsistency found at index %d\n"), i);
1.8081 ++ }
1.8082 ++ pr_debug("%d opcodes verified\n", AVR32_NR_OPCODES);
1.8083 ++
1.8084 ++ for (i = 0; i < AVR32_NR_SYNTAX; i++)
1.8085 ++ if (avr32_syntax_table[i].id != i)
1.8086 ++ as_fatal(_("syntax table inconsistency found at index %d\n"), i);
1.8087 ++ pr_debug("%d syntax variants verified\n", AVR32_NR_SYNTAX);
1.8088 ++
1.8089 ++ for (i = 0; i < AVR32_NR_ALIAS; i++)
1.8090 ++ if (avr32_alias_table[i].id != i)
1.8091 ++ as_fatal(_("alias table inconsistency found at index %d\n"), i);
1.8092 ++ pr_debug("%d aliases verified\n", AVR32_NR_ALIAS);
1.8093 ++
1.8094 ++ for (i = 0; i < AVR32_NR_MNEMONICS; i++)
1.8095 ++ if (avr32_mnemonic_table[i].id != i)
1.8096 ++ as_fatal(_("mnemonic table inconsistency found at index %d\n"), i);
1.8097 ++ pr_debug("%d mnemonics verified\n", AVR32_NR_MNEMONICS);
1.8098 ++#endif
1.8099 ++}
1.8100 ++
1.8101 ++void
1.8102 ++md_assemble (char *str)
1.8103 ++{
1.8104 ++ struct avr32_mnemonic *mnemonic;
1.8105 ++ char *p, c;
1.8106 ++
1.8107 ++ memset(¤t_insn, 0, sizeof(current_insn));
1.8108 ++ current_insn.immediate.X_op = O_constant;
1.8109 ++
1.8110 ++ skip_whitespace(str);
1.8111 ++ for (p = str; *p; p++)
1.8112 ++ if (*p == ' ')
1.8113 ++ break;
1.8114 ++ c = *p;
1.8115 ++ *p = 0;
1.8116 ++
1.8117 ++ mnemonic = hash_find(avr32_mnemonic_htab, str);
1.8118 ++ *p = c;
1.8119 ++ if (c) p++;
1.8120 ++
1.8121 ++ if (mnemonic)
1.8122 ++ {
1.8123 ++ const struct avr32_syntax *syntax;
1.8124 ++
1.8125 ++ for (syntax = mnemonic->syntax; syntax; syntax = syntax->next)
1.8126 ++ {
1.8127 ++ const char *errmsg = NULL;
1.8128 ++
1.8129 ++ if (syntax_matches(syntax, p))
1.8130 ++ {
1.8131 ++ if (!(syntax->isa_flags & avr32_arch->isa_flags))
1.8132 ++ {
1.8133 ++ as_bad(_("Selected architecture `%s' does not support `%s'"),
1.8134 ++ avr32_arch->name, str);
1.8135 ++ return;
1.8136 ++ }
1.8137 ++
1.8138 ++ current_insn.syntax = syntax;
1.8139 ++ parse_operands(p);
1.8140 ++
1.8141 ++ switch (syntax->type)
1.8142 ++ {
1.8143 ++ case AVR32_PARSER_NORMAL:
1.8144 ++ errmsg = finish_insn(syntax->u.opc);
1.8145 ++ break;
1.8146 ++ case AVR32_PARSER_ALIAS:
1.8147 ++ errmsg = finish_alias(syntax->u.alias);
1.8148 ++ break;
1.8149 ++ case AVR32_PARSER_LDA:
1.8150 ++ errmsg = finish_lda(syntax);
1.8151 ++ break;
1.8152 ++ case AVR32_PARSER_CALL:
1.8153 ++ errmsg = finish_call(syntax);
1.8154 ++ break;
1.8155 ++ default:
1.8156 ++ BAD_CASE(syntax->type);
1.8157 ++ break;
1.8158 ++ }
1.8159 ++
1.8160 ++ if (errmsg)
1.8161 ++ as_bad("%s in `%s'", errmsg, str);
1.8162 ++
1.8163 ++ return;
1.8164 ++ }
1.8165 ++ }
1.8166 ++
1.8167 ++ as_bad(_("unrecognized form of instruction: `%s'"), str);
1.8168 ++ }
1.8169 ++ else
1.8170 ++ as_bad(_("unrecognized instruction `%s'"), str);
1.8171 ++}
1.8172 ++
1.8173 ++void avr32_cleanup(void)
1.8174 ++{
1.8175 ++ struct cpool *pool;
1.8176 ++
1.8177 ++ /* Emit any constant pools that haven't been explicitly flushed with
1.8178 ++ a .cpool directive. */
1.8179 ++ for (pool = cpool_list; pool; pool = pool->next)
1.8180 ++ {
1.8181 ++ subseg_set(pool->section, pool->sub_section);
1.8182 ++ s_cpool(0);
1.8183 ++ }
1.8184 ++}
1.8185 ++
1.8186 ++/* Handle any PIC-related operands in data allocation pseudo-ops */
1.8187 ++void
1.8188 ++avr32_cons_fix_new (fragS *frag, int off, int size, expressionS *exp)
1.8189 ++{
1.8190 ++ bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED;
1.8191 ++ int pcrel = 0;
1.8192 ++
1.8193 ++ pr_debug("%s:%u: cons_fix_new, add_sym: %s, op_sym: %s, op: %d, add_num: %d\n",
1.8194 ++ frag->fr_file, frag->fr_line,
1.8195 ++ exp->X_add_symbol?S_GET_NAME(exp->X_add_symbol):"(none)",
1.8196 ++ exp->X_op_symbol?S_GET_NAME(exp->X_op_symbol):"(none)",
1.8197 ++ exp->X_op, exp->X_add_number);
1.8198 ++
1.8199 ++ if (exp->X_op == O_subtract && exp->X_op_symbol)
1.8200 ++ {
1.8201 ++ if (exp->X_op_symbol == GOT_symbol)
1.8202 ++ {
1.8203 ++ if (size != 4)
1.8204 ++ goto bad_size;
1.8205 ++ r_type = BFD_RELOC_AVR32_GOTPC;
1.8206 ++ exp->X_op = O_symbol;
1.8207 ++ exp->X_op_symbol = NULL;
1.8208 ++ }
1.8209 ++ }
1.8210 ++ else if (exp->X_op == O_got)
1.8211 ++ {
1.8212 ++ switch (size)
1.8213 ++ {
1.8214 ++ case 1:
1.8215 ++ r_type = BFD_RELOC_AVR32_GOT8;
1.8216 ++ break;
1.8217 ++ case 2:
1.8218 ++ r_type = BFD_RELOC_AVR32_GOT16;
1.8219 ++ break;
1.8220 ++ case 4:
1.8221 ++ r_type = BFD_RELOC_AVR32_GOT32;
1.8222 ++ break;
1.8223 ++ default:
1.8224 ++ goto bad_size;
1.8225 ++ }
1.8226 ++
1.8227 ++ exp->X_op = O_symbol;
1.8228 ++ }
1.8229 ++
1.8230 ++ if (r_type == BFD_RELOC_UNUSED)
1.8231 ++ switch (size)
1.8232 ++ {
1.8233 ++ case 1:
1.8234 ++ r_type = BFD_RELOC_8;
1.8235 ++ break;
1.8236 ++ case 2:
1.8237 ++ r_type = BFD_RELOC_16;
1.8238 ++ break;
1.8239 ++ case 4:
1.8240 ++ r_type = BFD_RELOC_32;
1.8241 ++ break;
1.8242 ++ default:
1.8243 ++ goto bad_size;
1.8244 ++ }
1.8245 ++ else if (size != 4)
1.8246 ++ {
1.8247 ++ bad_size:
1.8248 ++ as_bad(_("unsupported BFD relocation size %u"), size);
1.8249 ++ r_type = BFD_RELOC_UNUSED;
1.8250 ++ }
1.8251 ++
1.8252 ++ fix_new_exp (frag, off, size, exp, pcrel, r_type);
1.8253 ++}
1.8254 ++
1.8255 ++static void
1.8256 ++avr32_frob_section(bfd *abfd ATTRIBUTE_UNUSED, segT sec,
1.8257 ++ void *ignore ATTRIBUTE_UNUSED)
1.8258 ++{
1.8259 ++ segment_info_type *seginfo;
1.8260 ++ fixS *fix;
1.8261 ++
1.8262 ++ seginfo = seg_info(sec);
1.8263 ++ if (!seginfo)
1.8264 ++ return;
1.8265 ++
1.8266 ++ for (fix = seginfo->fix_root; fix; fix = fix->fx_next)
1.8267 ++ {
1.8268 ++ if (fix->fx_done)
1.8269 ++ continue;
1.8270 ++
1.8271 ++ if (fix->fx_r_type == BFD_RELOC_AVR32_SUB5
1.8272 ++ && fix->fx_addsy && fix->fx_subsy)
1.8273 ++ {
1.8274 ++ if (S_GET_SEGMENT(fix->fx_addsy) != S_GET_SEGMENT(fix->fx_subsy)
1.8275 ++ || linkrelax)
1.8276 ++ {
1.8277 ++ symbolS *tmp;
1.8278 ++#ifdef DEBUG
1.8279 ++ fprintf(stderr, "Swapping symbols in fixup:\n");
1.8280 ++ print_fixup(fix);
1.8281 ++#endif
1.8282 ++ tmp = fix->fx_addsy;
1.8283 ++ fix->fx_addsy = fix->fx_subsy;
1.8284 ++ fix->fx_subsy = tmp;
1.8285 ++ fix->fx_offset = -fix->fx_offset;
1.8286 ++ }
1.8287 ++ }
1.8288 ++ }
1.8289 ++}
1.8290 ++
1.8291 ++/* We need to look for SUB5 instructions with expressions that will be
1.8292 ++ made PC-relative and switch fx_addsy with fx_subsy. This has to be
1.8293 ++ done before adjustment or the wrong symbol might be adjusted.
1.8294 ++
1.8295 ++ This applies to fixups that are a result of expressions like -(sym
1.8296 ++ - .) and that will make it all the way to md_apply_fix3(). LDA
1.8297 ++ does the right thing in convert_frag, so we must not convert
1.8298 ++ those. */
1.8299 ++void
1.8300 ++avr32_frob_file(void)
1.8301 ++{
1.8302 ++ /* if (1 || !linkrelax)
1.8303 ++ return; */
1.8304 ++
1.8305 ++ bfd_map_over_sections(stdoutput, avr32_frob_section, NULL);
1.8306 ++}
1.8307 ++
1.8308 ++static bfd_boolean
1.8309 ++convert_to_diff_reloc(fixS *fixP)
1.8310 ++{
1.8311 ++ switch (fixP->fx_r_type)
1.8312 ++ {
1.8313 ++ case BFD_RELOC_32:
1.8314 ++ fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
1.8315 ++ break;
1.8316 ++ case BFD_RELOC_16:
1.8317 ++ fixP->fx_r_type = BFD_RELOC_AVR32_DIFF16;
1.8318 ++ break;
1.8319 ++ case BFD_RELOC_8:
1.8320 ++ fixP->fx_r_type = BFD_RELOC_AVR32_DIFF8;
1.8321 ++ break;
1.8322 ++ default:
1.8323 ++ return FALSE;
1.8324 ++ }
1.8325 ++
1.8326 ++ return TRUE;
1.8327 ++}
1.8328 ++
1.8329 ++/* Simplify a fixup. If possible, the fixup is reduced to a single
1.8330 ++ constant which is written to the output file. Otherwise, a
1.8331 ++ relocation is generated so that the linker can take care of the
1.8332 ++ rest.
1.8333 ++
1.8334 ++ ELF relocations have certain constraints: They can only take a
1.8335 ++ single symbol and a single addend. This means that for difference
1.8336 ++ expressions, we _must_ get rid of the fx_subsy symbol somehow.
1.8337 ++
1.8338 ++ The difference between two labels in the same section can be
1.8339 ++ calculated directly unless 'linkrelax' is set, or a relocation is
1.8340 ++ forced. If so, we must emit a R_AVR32_DIFFxx relocation. If there
1.8341 ++ are addends involved at this point, we must be especially careful
1.8342 ++ as the relocation must point exactly to the symbol being
1.8343 ++ subtracted.
1.8344 ++
1.8345 ++ When subtracting a symbol defined in the same section as the fixup,
1.8346 ++ we might be able to convert it to a PC-relative expression, unless
1.8347 ++ linkrelax is set. If this is the case, there's no way we can make
1.8348 ++ sure that the difference between the fixup and fx_subsy stays
1.8349 ++ constant. So for now, we're just going to disallow that.
1.8350 ++ */
1.8351 ++void
1.8352 ++avr32_process_fixup(fixS *fixP, segT this_segment)
1.8353 ++{
1.8354 ++ segT add_symbol_segment = absolute_section;
1.8355 ++ segT sub_symbol_segment = absolute_section;
1.8356 ++ symbolS *fx_addsy, *fx_subsy;
1.8357 ++ offsetT value = 0, fx_offset;
1.8358 ++ bfd_boolean apply = FALSE;
1.8359 ++
1.8360 ++ assert(this_segment != absolute_section);
1.8361 ++
1.8362 ++ if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
1.8363 ++ {
1.8364 ++ as_bad_where(fixP->fx_file, fixP->fx_line,
1.8365 ++ _("Bad relocation type %d\n"), fixP->fx_r_type);
1.8366 ++ return;
1.8367 ++ }
1.8368 ++
1.8369 ++ /* BFD_RELOC_AVR32_SUB5 fixups have been swapped by avr32_frob_section() */
1.8370 ++ fx_addsy = fixP->fx_addsy;
1.8371 ++ fx_subsy = fixP->fx_subsy;
1.8372 ++ fx_offset = fixP->fx_offset;
1.8373 ++
1.8374 ++ if (fx_addsy)
1.8375 ++ add_symbol_segment = S_GET_SEGMENT(fx_addsy);
1.8376 ++
1.8377 ++ if (fx_subsy)
1.8378 ++ {
1.8379 ++ resolve_symbol_value(fx_subsy);
1.8380 ++ sub_symbol_segment = S_GET_SEGMENT(fx_subsy);
1.8381 ++
1.8382 ++ if (sub_symbol_segment == this_segment
1.8383 ++ && (!linkrelax
1.8384 ++ || S_GET_VALUE(fx_subsy) == (fixP->fx_frag->fr_address
1.8385 ++ + fixP->fx_where)))
1.8386 ++ {
1.8387 ++ fixP->fx_pcrel = TRUE;
1.8388 ++ fx_offset += (fixP->fx_frag->fr_address + fixP->fx_where
1.8389 ++ - S_GET_VALUE(fx_subsy));
1.8390 ++ fx_subsy = NULL;
1.8391 ++ }
1.8392 ++ else if (sub_symbol_segment == absolute_section)
1.8393 ++ {
1.8394 ++ /* The symbol is really a constant. */
1.8395 ++ fx_offset -= S_GET_VALUE(fx_subsy);
1.8396 ++ fx_subsy = NULL;
1.8397 ++ }
1.8398 ++ else if (SEG_NORMAL(add_symbol_segment)
1.8399 ++ && sub_symbol_segment == add_symbol_segment
1.8400 ++ && (!linkrelax || convert_to_diff_reloc(fixP)))
1.8401 ++ {
1.8402 ++ /* Difference between two labels in the same section. */
1.8403 ++ if (linkrelax)
1.8404 ++ {
1.8405 ++ /* convert_to_diff() has ensured that the reloc type is
1.8406 ++ either DIFF32, DIFF16 or DIFF8. */
1.8407 ++ value = (S_GET_VALUE(fx_addsy) + fixP->fx_offset
1.8408 ++ - S_GET_VALUE(fx_subsy));
1.8409 ++
1.8410 ++ /* Try to convert it to a section symbol if possible */
1.8411 ++ if (!S_FORCE_RELOC(fx_addsy, 1)
1.8412 ++ && !(sub_symbol_segment->flags & SEC_THREAD_LOCAL))
1.8413 ++ {
1.8414 ++ fx_offset = S_GET_VALUE(fx_subsy);
1.8415 ++ fx_addsy = section_symbol(sub_symbol_segment);
1.8416 ++ }
1.8417 ++ else
1.8418 ++ {
1.8419 ++ fx_addsy = fx_subsy;
1.8420 ++ fx_offset = 0;
1.8421 ++ }
1.8422 ++
1.8423 ++ fx_subsy = NULL;
1.8424 ++ apply = TRUE;
1.8425 ++ }
1.8426 ++ else
1.8427 ++ {
1.8428 ++ fx_offset += S_GET_VALUE(fx_addsy);
1.8429 ++ fx_offset -= S_GET_VALUE(fx_subsy);
1.8430 ++ fx_addsy = NULL;
1.8431 ++ fx_subsy = NULL;
1.8432 ++ }
1.8433 ++ }
1.8434 ++ else
1.8435 ++ {
1.8436 ++ as_bad_where(fixP->fx_file, fixP->fx_line,
1.8437 ++ _("can't resolve `%s' {%s section} - `%s' {%s section}"),
1.8438 ++ fx_addsy ? S_GET_NAME (fx_addsy) : "0",
1.8439 ++ segment_name (add_symbol_segment),
1.8440 ++ S_GET_NAME (fx_subsy),
1.8441 ++ segment_name (sub_symbol_segment));
1.8442 ++ return;
1.8443 ++ }
1.8444 ++ }
1.8445 ++
1.8446 ++ if (fx_addsy && !TC_FORCE_RELOCATION(fixP))
1.8447 ++ {
1.8448 ++ if (add_symbol_segment == this_segment
1.8449 ++ && fixP->fx_pcrel)
1.8450 ++ {
1.8451 ++ value += S_GET_VALUE(fx_addsy);
1.8452 ++ value -= md_pcrel_from_section(fixP, this_segment);
1.8453 ++ fx_addsy = NULL;
1.8454 ++ fixP->fx_pcrel = FALSE;
1.8455 ++ }
1.8456 ++ else if (add_symbol_segment == absolute_section)
1.8457 ++ {
1.8458 ++ fx_offset += S_GET_VALUE(fixP->fx_addsy);
1.8459 ++ fx_addsy = NULL;
1.8460 ++ }
1.8461 ++ }
1.8462 ++
1.8463 ++ if (!fx_addsy)
1.8464 ++ fixP->fx_done = TRUE;
1.8465 ++
1.8466 ++ if (fixP->fx_pcrel)
1.8467 ++ {
1.8468 ++ if (fx_addsy != NULL
1.8469 ++ && S_IS_DEFINED(fx_addsy)
1.8470 ++ && S_GET_SEGMENT(fx_addsy) != this_segment)
1.8471 ++ value += md_pcrel_from_section(fixP, this_segment);
1.8472 ++
1.8473 ++ switch (fixP->fx_r_type)
1.8474 ++ {
1.8475 ++ case BFD_RELOC_32:
1.8476 ++ fixP->fx_r_type = BFD_RELOC_32_PCREL;
1.8477 ++ break;
1.8478 ++ case BFD_RELOC_16:
1.8479 ++ fixP->fx_r_type = BFD_RELOC_16_PCREL;
1.8480 ++ break;
1.8481 ++ case BFD_RELOC_8:
1.8482 ++ fixP->fx_r_type = BFD_RELOC_8_PCREL;
1.8483 ++ break;
1.8484 ++ case BFD_RELOC_AVR32_SUB5:
1.8485 ++ fixP->fx_r_type = BFD_RELOC_AVR32_16N_PCREL;
1.8486 ++ break;
1.8487 ++ case BFD_RELOC_AVR32_16S:
1.8488 ++ fixP->fx_r_type = BFD_RELOC_AVR32_16B_PCREL;
1.8489 ++ break;
1.8490 ++ case BFD_RELOC_AVR32_14UW:
1.8491 ++ fixP->fx_r_type = BFD_RELOC_AVR32_14UW_PCREL;
1.8492 ++ break;
1.8493 ++ case BFD_RELOC_AVR32_10UW:
1.8494 ++ fixP->fx_r_type = BFD_RELOC_AVR32_10UW_PCREL;
1.8495 ++ break;
1.8496 ++ default:
1.8497 ++ /* Should have been taken care of already */
1.8498 ++ break;
1.8499 ++ }
1.8500 ++ }
1.8501 ++
1.8502 ++ if (fixP->fx_done || apply)
1.8503 ++ {
1.8504 ++ const struct avr32_ifield *ifield;
1.8505 ++ char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
1.8506 ++
1.8507 ++ if (fixP->fx_done)
1.8508 ++ value += fx_offset;
1.8509 ++
1.8510 ++ /* For hosts with longs bigger than 32-bits make sure that the top
1.8511 ++ bits of a 32-bit negative value read in by the parser are set,
1.8512 ++ so that the correct comparisons are made. */
1.8513 ++ if (value & 0x80000000)
1.8514 ++ value |= (-1L << 31);
1.8515 ++
1.8516 ++ switch (fixP->fx_r_type)
1.8517 ++ {
1.8518 ++ case BFD_RELOC_32:
1.8519 ++ case BFD_RELOC_16:
1.8520 ++ case BFD_RELOC_8:
1.8521 ++ case BFD_RELOC_AVR32_DIFF32:
1.8522 ++ case BFD_RELOC_AVR32_DIFF16:
1.8523 ++ case BFD_RELOC_AVR32_DIFF8:
1.8524 ++ md_number_to_chars(buf, value, fixP->fx_size);
1.8525 ++ break;
1.8526 ++ case BFD_RELOC_HI16:
1.8527 ++ value >>= 16;
1.8528 ++ case BFD_RELOC_LO16:
1.8529 ++ value &= 0xffff;
1.8530 ++ md_number_to_chars(buf + 2, value, 2);
1.8531 ++ break;
1.8532 ++ case BFD_RELOC_AVR32_16N_PCREL:
1.8533 ++ value = -value;
1.8534 ++ /* fall through */
1.8535 ++ case BFD_RELOC_AVR32_22H_PCREL:
1.8536 ++ case BFD_RELOC_AVR32_18W_PCREL:
1.8537 ++ case BFD_RELOC_AVR32_16B_PCREL:
1.8538 ++ case BFD_RELOC_AVR32_11H_PCREL:
1.8539 ++ case BFD_RELOC_AVR32_9H_PCREL:
1.8540 ++ case BFD_RELOC_AVR32_9UW_PCREL:
1.8541 ++ case BFD_RELOC_AVR32_3U:
1.8542 ++ case BFD_RELOC_AVR32_4UH:
1.8543 ++ case BFD_RELOC_AVR32_6UW:
1.8544 ++ case BFD_RELOC_AVR32_6S:
1.8545 ++ case BFD_RELOC_AVR32_7UW:
1.8546 ++ case BFD_RELOC_AVR32_8S_EXT:
1.8547 ++ case BFD_RELOC_AVR32_8S:
1.8548 ++ case BFD_RELOC_AVR32_10UW:
1.8549 ++ case BFD_RELOC_AVR32_10SW:
1.8550 ++ case BFD_RELOC_AVR32_STHH_W:
1.8551 ++ case BFD_RELOC_AVR32_14UW:
1.8552 ++ case BFD_RELOC_AVR32_16S:
1.8553 ++ case BFD_RELOC_AVR32_16U:
1.8554 ++ case BFD_RELOC_AVR32_21S:
1.8555 ++ case BFD_RELOC_AVR32_SUB5:
1.8556 ++ case BFD_RELOC_AVR32_CPCALL:
1.8557 ++ case BFD_RELOC_AVR32_16_CP:
1.8558 ++ case BFD_RELOC_AVR32_9W_CP:
1.8559 ++ case BFD_RELOC_AVR32_15S:
1.8560 ++ ifield = fixP->tc_fix_data.ifield;
1.8561 ++ pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
1.8562 ++ fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
1.8563 ++ fixP->tc_fix_data.align);
1.8564 ++ if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
1.8565 ++ as_bad_where(fixP->fx_file, fixP->fx_line,
1.8566 ++ _("operand out of range (%ld not between %ld and %ld)"),
1.8567 ++ value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
1.8568 ++ if (value & ((1 << fixP->tc_fix_data.align) - 1))
1.8569 ++ as_bad_where(fixP->fx_file, fixP->fx_line,
1.8570 ++ _("misaligned operand (required alignment: %d)"),
1.8571 ++ 1 << fixP->tc_fix_data.align);
1.8572 ++ ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
1.8573 ++ break;
1.8574 ++ case BFD_RELOC_AVR32_ALIGN:
1.8575 ++ /* Nothing to do */
1.8576 ++ fixP->fx_done = FALSE;
1.8577 ++ break;
1.8578 ++ default:
1.8579 ++ as_fatal("reloc type %s not handled\n",
1.8580 ++ bfd_get_reloc_code_name(fixP->fx_r_type));
1.8581 ++ }
1.8582 ++ }
1.8583 ++
1.8584 ++ fixP->fx_addsy = fx_addsy;
1.8585 ++ fixP->fx_subsy = fx_subsy;
1.8586 ++ fixP->fx_offset = fx_offset;
1.8587 ++
1.8588 ++ if (!fixP->fx_done)
1.8589 ++ {
1.8590 ++ if (!fixP->fx_addsy)
1.8591 ++ fixP->fx_addsy = abs_section_sym;
1.8592 ++
1.8593 ++ symbol_mark_used_in_reloc(fixP->fx_addsy);
1.8594 ++ if (fixP->fx_subsy)
1.8595 ++ abort();
1.8596 ++ }
1.8597 ++}
1.8598 ++
1.8599 ++#if 0
1.8600 ++void
1.8601 ++md_apply_fix3 (fixS *fixP, valueT *valP, segT seg)
1.8602 ++{
1.8603 ++ const struct avr32_ifield *ifield;
1.8604 ++ offsetT value = *valP;
1.8605 ++ char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
1.8606 ++ bfd_boolean apply;
1.8607 ++
1.8608 ++ pr_debug("%s:%u: apply_fix3: r_type=%d value=%lx offset=%lx\n",
1.8609 ++ fixP->fx_file, fixP->fx_line, fixP->fx_r_type, *valP,
1.8610 ++ fixP->fx_offset);
1.8611 ++
1.8612 ++ if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
1.8613 ++ {
1.8614 ++ as_bad_where(fixP->fx_file, fixP->fx_line,
1.8615 ++ _("Bad relocation type %d\n"), fixP->fx_r_type);
1.8616 ++ return;
1.8617 ++ }
1.8618 ++
1.8619 ++ if (!fixP->fx_addsy && !fixP->fx_subsy)
1.8620 ++ fixP->fx_done = 1;
1.8621 ++
1.8622 ++ if (fixP->fx_pcrel)
1.8623 ++ {
1.8624 ++ if (fixP->fx_addsy != NULL
1.8625 ++ && S_IS_DEFINED(fixP->fx_addsy)
1.8626 ++ && S_GET_SEGMENT(fixP->fx_addsy) != seg)
1.8627 ++ value += md_pcrel_from_section(fixP, seg);
1.8628 ++
1.8629 ++ switch (fixP->fx_r_type)
1.8630 ++ {
1.8631 ++ case BFD_RELOC_32:
1.8632 ++ fixP->fx_r_type = BFD_RELOC_32_PCREL;
1.8633 ++ break;
1.8634 ++ case BFD_RELOC_16:
1.8635 ++ case BFD_RELOC_8:
1.8636 ++ as_bad_where (fixP->fx_file, fixP->fx_line,
1.8637 ++ _("8- and 16-bit PC-relative relocations not supported"));
1.8638 ++ break;
1.8639 ++ case BFD_RELOC_AVR32_SUB5:
1.8640 ++ fixP->fx_r_type = BFD_RELOC_AVR32_PCREL_SUB5;
1.8641 ++ break;
1.8642 ++ case BFD_RELOC_AVR32_16S:
1.8643 ++ fixP->fx_r_type = BFD_RELOC_AVR32_16_PCREL;
1.8644 ++ break;
1.8645 ++ default:
1.8646 ++ /* Should have been taken care of already */
1.8647 ++ break;
1.8648 ++ }
1.8649 ++ }
1.8650 ++
1.8651 ++ if (fixP->fx_r_type == BFD_RELOC_32
1.8652 ++ && fixP->fx_subsy)
1.8653 ++ {
1.8654 ++ fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
1.8655 ++
1.8656 ++ /* Offsets are only allowed if it's a result of adjusting a
1.8657 ++ local symbol into a section-relative offset.
1.8658 ++ tc_fix_adjustable() should prevent any adjustment if there
1.8659 ++ was an offset involved before. */
1.8660 ++ if (fixP->fx_offset && !symbol_section_p(fixP->fx_addsy))
1.8661 ++ as_bad_where(fixP->fx_file, fixP->fx_line,
1.8662 ++ _("cannot represent symbol difference with an offset"));
1.8663 ++
1.8664 ++ value = (S_GET_VALUE(fixP->fx_addsy) + fixP->fx_offset
1.8665 ++ - S_GET_VALUE(fixP->fx_subsy));
1.8666 ++
1.8667 ++ /* The difference before any relaxing takes place is written
1.8668 ++ out, and the DIFF32 reloc identifies the address of the first
1.8669 ++ symbol (i.e. the on that's subtracted.) */
1.8670 ++ *valP = value;
1.8671 ++ fixP->fx_offset -= value;
1.8672 ++ fixP->fx_subsy = NULL;
1.8673 ++
1.8674 ++ md_number_to_chars(buf, value, fixP->fx_size);
1.8675 ++ }
1.8676 ++
1.8677 ++ if (fixP->fx_done)
1.8678 ++ {
1.8679 ++ switch (fixP->fx_r_type)
1.8680 ++ {
1.8681 ++ case BFD_RELOC_8:
1.8682 ++ case BFD_RELOC_16:
1.8683 ++ case BFD_RELOC_32:
1.8684 ++ md_number_to_chars(buf, value, fixP->fx_size);
1.8685 ++ break;
1.8686 ++ case BFD_RELOC_HI16:
1.8687 ++ value >>= 16;
1.8688 ++ case BFD_RELOC_LO16:
1.8689 ++ value &= 0xffff;
1.8690 ++ *valP = value;
1.8691 ++ md_number_to_chars(buf + 2, value, 2);
1.8692 ++ break;
1.8693 ++ case BFD_RELOC_AVR32_PCREL_SUB5:
1.8694 ++ value = -value;
1.8695 ++ /* fall through */
1.8696 ++ case BFD_RELOC_AVR32_9_PCREL:
1.8697 ++ case BFD_RELOC_AVR32_11_PCREL:
1.8698 ++ case BFD_RELOC_AVR32_16_PCREL:
1.8699 ++ case BFD_RELOC_AVR32_18_PCREL:
1.8700 ++ case BFD_RELOC_AVR32_22_PCREL:
1.8701 ++ case BFD_RELOC_AVR32_3U:
1.8702 ++ case BFD_RELOC_AVR32_4UH:
1.8703 ++ case BFD_RELOC_AVR32_6UW:
1.8704 ++ case BFD_RELOC_AVR32_6S:
1.8705 ++ case BFD_RELOC_AVR32_7UW:
1.8706 ++ case BFD_RELOC_AVR32_8S:
1.8707 ++ case BFD_RELOC_AVR32_10UW:
1.8708 ++ case BFD_RELOC_AVR32_10SW:
1.8709 ++ case BFD_RELOC_AVR32_14UW:
1.8710 ++ case BFD_RELOC_AVR32_16S:
1.8711 ++ case BFD_RELOC_AVR32_16U:
1.8712 ++ case BFD_RELOC_AVR32_21S:
1.8713 ++ case BFD_RELOC_AVR32_BRC1:
1.8714 ++ case BFD_RELOC_AVR32_SUB5:
1.8715 ++ case BFD_RELOC_AVR32_CPCALL:
1.8716 ++ case BFD_RELOC_AVR32_16_CP:
1.8717 ++ case BFD_RELOC_AVR32_9_CP:
1.8718 ++ case BFD_RELOC_AVR32_15S:
1.8719 ++ ifield = fixP->tc_fix_data.ifield;
1.8720 ++ pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
1.8721 ++ fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
1.8722 ++ fixP->tc_fix_data.align);
1.8723 ++ if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
1.8724 ++ as_bad_where(fixP->fx_file, fixP->fx_line,
1.8725 ++ _("operand out of range (%ld not between %ld and %ld)"),
1.8726 ++ value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
1.8727 ++ if (value & ((1 << fixP->tc_fix_data.align) - 1))
1.8728 ++ as_bad_where(fixP->fx_file, fixP->fx_line,
1.8729 ++ _("misaligned operand (required alignment: %d)"),
1.8730 ++ 1 << fixP->tc_fix_data.align);
1.8731 ++ ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
1.8732 ++ break;
1.8733 ++ case BFD_RELOC_AVR32_ALIGN:
1.8734 ++ /* Nothing to do */
1.8735 ++ fixP->fx_done = FALSE;
1.8736 ++ break;
1.8737 ++ default:
1.8738 ++ as_fatal("reloc type %s not handled\n",
1.8739 ++ bfd_get_reloc_code_name(fixP->fx_r_type));
1.8740 ++ }
1.8741 ++ }
1.8742 ++}
1.8743 ++#endif
1.8744 ++
1.8745 ++arelent *
1.8746 ++tc_gen_reloc (asection *section ATTRIBUTE_UNUSED,
1.8747 ++ fixS *fixp)
1.8748 ++{
1.8749 ++ arelent *reloc;
1.8750 ++ bfd_reloc_code_real_type code;
1.8751 ++
1.8752 ++ reloc = xmalloc (sizeof (arelent));
1.8753 ++
1.8754 ++ reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *));
1.8755 ++ *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
1.8756 ++ reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
1.8757 ++ reloc->addend = fixp->fx_offset;
1.8758 ++ code = fixp->fx_r_type;
1.8759 ++
1.8760 ++ reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
1.8761 ++
1.8762 ++ if (reloc->howto == NULL)
1.8763 ++ {
1.8764 ++ as_bad_where (fixp->fx_file, fixp->fx_line,
1.8765 ++ _("cannot represent relocation %s in this object file format"),
1.8766 ++ bfd_get_reloc_code_name (code));
1.8767 ++ return NULL;
1.8768 ++ }
1.8769 ++
1.8770 ++ return reloc;
1.8771 ++}
1.8772 ++
1.8773 ++bfd_boolean
1.8774 ++avr32_force_reloc(fixS *fixP)
1.8775 ++{
1.8776 ++ if (linkrelax && fixP->fx_addsy
1.8777 ++ && !(S_GET_SEGMENT(fixP->fx_addsy)->flags & SEC_DEBUGGING)
1.8778 ++ && S_GET_SEGMENT(fixP->fx_addsy) != absolute_section)
1.8779 ++ {
1.8780 ++ pr_debug(stderr, "force reloc: addsy=%p, r_type=%d, sec=%s\n",
1.8781 ++ fixP->fx_addsy, fixP->fx_r_type, S_GET_SEGMENT(fixP->fx_addsy)->name);
1.8782 ++ return 1;
1.8783 ++ }
1.8784 ++
1.8785 ++ return generic_force_reloc(fixP);
1.8786 ++}
1.8787 ++
1.8788 ++bfd_boolean
1.8789 ++avr32_fix_adjustable(fixS *fixP)
1.8790 ++{
1.8791 ++ switch (fixP->fx_r_type)
1.8792 ++ {
1.8793 ++ /* GOT relocations can't have addends since BFD treats all
1.8794 ++ references to a given symbol the same. This means that we
1.8795 ++ must avoid section-relative references to local symbols when
1.8796 ++ dealing with these kinds of relocs */
1.8797 ++ case BFD_RELOC_AVR32_GOT32:
1.8798 ++ case BFD_RELOC_AVR32_GOT16:
1.8799 ++ case BFD_RELOC_AVR32_GOT8:
1.8800 ++ case BFD_RELOC_AVR32_GOT21S:
1.8801 ++ case BFD_RELOC_AVR32_GOT18SW:
1.8802 ++ case BFD_RELOC_AVR32_GOT16S:
1.8803 ++ case BFD_RELOC_AVR32_LDA_GOT:
1.8804 ++ case BFD_RELOC_AVR32_GOTCALL:
1.8805 ++ pr_debug("fix not adjustable\n");
1.8806 ++ return 0;
1.8807 ++
1.8808 ++ default:
1.8809 ++ break;
1.8810 ++ }
1.8811 ++
1.8812 ++ return 1;
1.8813 ++}
1.8814 ++
1.8815 ++/* When we want the linker to be able to relax the code, we need to
1.8816 ++ output a reloc for every .align directive requesting an alignment
1.8817 ++ to a four byte boundary or larger. If we don't do this, the linker
1.8818 ++ can't guarantee that the alignment is actually maintained in the
1.8819 ++ linker output.
1.8820 ++
1.8821 ++ TODO: Might as well insert proper NOPs while we're at it... */
1.8822 ++void
1.8823 ++avr32_handle_align(fragS *frag)
1.8824 ++{
1.8825 ++ if (linkrelax
1.8826 ++ && frag->fr_type == rs_align_code
1.8827 ++ && frag->fr_address + frag->fr_fix > 0
1.8828 ++ && frag->fr_offset > 0)
1.8829 ++ {
1.8830 ++ /* The alignment order (fr_offset) is stored in the addend. */
1.8831 ++ fix_new(frag, frag->fr_fix, 2, &abs_symbol, frag->fr_offset,
1.8832 ++ FALSE, BFD_RELOC_AVR32_ALIGN);
1.8833 ++ }
1.8834 ++}
1.8835 ++
1.8836 ++/* Relax_align. Advance location counter to next address that has 'alignment'
1.8837 ++ lowest order bits all 0s, return size of adjustment made. */
1.8838 ++relax_addressT
1.8839 ++avr32_relax_align(segT segment ATTRIBUTE_UNUSED,
1.8840 ++ fragS *fragP,
1.8841 ++ relax_addressT address)
1.8842 ++{
1.8843 ++ relax_addressT mask;
1.8844 ++ relax_addressT new_address;
1.8845 ++ int alignment;
1.8846 ++
1.8847 ++ alignment = fragP->fr_offset;
1.8848 ++ mask = ~((~0) << alignment);
1.8849 ++ new_address = (address + mask) & (~mask);
1.8850 ++
1.8851 ++ return new_address - address;
1.8852 ++}
1.8853 ++
1.8854 ++/* Turn a string in input_line_pointer into a floating point constant
1.8855 ++ of type type, and store the appropriate bytes in *litP. The number
1.8856 ++ of LITTLENUMS emitted is stored in *sizeP . An error message is
1.8857 ++ returned, or NULL on OK. */
1.8858 ++
1.8859 ++/* Equal to MAX_PRECISION in atof-ieee.c */
1.8860 ++#define MAX_LITTLENUMS 6
1.8861 ++
1.8862 ++char *
1.8863 ++md_atof (type, litP, sizeP)
1.8864 ++char type;
1.8865 ++char * litP;
1.8866 ++int * sizeP;
1.8867 ++{
1.8868 ++ int i;
1.8869 ++ int prec;
1.8870 ++ LITTLENUM_TYPE words [MAX_LITTLENUMS];
1.8871 ++ char * t;
1.8872 ++
1.8873 ++ switch (type)
1.8874 ++ {
1.8875 ++ case 'f':
1.8876 ++ case 'F':
1.8877 ++ case 's':
1.8878 ++ case 'S':
1.8879 ++ prec = 2;
1.8880 ++ break;
1.8881 ++
1.8882 ++ case 'd':
1.8883 ++ case 'D':
1.8884 ++ case 'r':
1.8885 ++ case 'R':
1.8886 ++ prec = 4;
1.8887 ++ break;
1.8888 ++
1.8889 ++ /* FIXME: Some targets allow other format chars for bigger sizes here. */
1.8890 ++
1.8891 ++ default:
1.8892 ++ * sizeP = 0;
1.8893 ++ return _("Bad call to md_atof()");
1.8894 ++ }
1.8895 ++
1.8896 ++ t = atof_ieee (input_line_pointer, type, words);
1.8897 ++ if (t)
1.8898 ++ input_line_pointer = t;
1.8899 ++ * sizeP = prec * sizeof (LITTLENUM_TYPE);
1.8900 ++
1.8901 ++ for (i = 0; i < prec; i++)
1.8902 ++ {
1.8903 ++ md_number_to_chars (litP, (valueT) words[i],
1.8904 ++ sizeof (LITTLENUM_TYPE));
1.8905 ++ litP += sizeof (LITTLENUM_TYPE);
1.8906 ++ }
1.8907 ++
1.8908 ++ return 0;
1.8909 ++}
1.8910 ++
1.8911 ++static char *avr32_end_of_match(char *cont, char *what)
1.8912 ++{
1.8913 ++ int len = strlen (what);
1.8914 ++
1.8915 ++ if (! is_part_of_name (cont[len])
1.8916 ++ && strncasecmp (cont, what, len) == 0)
1.8917 ++ return cont + len;
1.8918 ++
1.8919 ++ return NULL;
1.8920 ++}
1.8921 ++
1.8922 ++int
1.8923 ++avr32_parse_name (char const *name, expressionS *exp, char *nextchar)
1.8924 ++{
1.8925 ++ char *next = input_line_pointer;
1.8926 ++ char *next_end;
1.8927 ++
1.8928 ++ pr_debug("parse_name: %s, nextchar=%c (%02x)\n", name, *nextchar, *nextchar);
1.8929 ++
1.8930 ++ if (*nextchar == '(')
1.8931 ++ {
1.8932 ++ if (strcasecmp(name, "hi") == 0)
1.8933 ++ {
1.8934 ++ *next = *nextchar;
1.8935 ++
1.8936 ++ expression(exp);
1.8937 ++
1.8938 ++ if (exp->X_op == O_constant)
1.8939 ++ {
1.8940 ++ pr_debug(" -> constant hi(0x%08lx) -> 0x%04lx\n",
1.8941 ++ exp->X_add_number, exp->X_add_number >> 16);
1.8942 ++ exp->X_add_number = (exp->X_add_number >> 16) & 0xffff;
1.8943 ++ }
1.8944 ++ else
1.8945 ++ {
1.8946 ++ exp->X_md = exp->X_op;
1.8947 ++ exp->X_op = O_hi;
1.8948 ++ }
1.8949 ++
1.8950 ++ return 1;
1.8951 ++ }
1.8952 ++ else if (strcasecmp(name, "lo") == 0)
1.8953 ++ {
1.8954 ++ *next = *nextchar;
1.8955 ++
1.8956 ++ expression(exp);
1.8957 ++
1.8958 ++ if (exp->X_op == O_constant)
1.8959 ++ exp->X_add_number &= 0xffff;
1.8960 ++ else
1.8961 ++ {
1.8962 ++ exp->X_md = exp->X_op;
1.8963 ++ exp->X_op = O_lo;
1.8964 ++ }
1.8965 ++
1.8966 ++ return 1;
1.8967 ++ }
1.8968 ++ }
1.8969 ++ else if (*nextchar == '@')
1.8970 ++ {
1.8971 ++ exp->X_md = exp->X_op;
1.8972 ++
1.8973 ++ if ((next_end = avr32_end_of_match (next + 1, "got")))
1.8974 ++ exp->X_op = O_got;
1.8975 ++ else if ((next_end = avr32_end_of_match (next + 1, "tlsgd")))
1.8976 ++ exp->X_op = O_tlsgd;
1.8977 ++ /* Add more as needed */
1.8978 ++ else
1.8979 ++ {
1.8980 ++ char c;
1.8981 ++ input_line_pointer++;
1.8982 ++ c = get_symbol_end();
1.8983 ++ as_bad (_("unknown relocation override `%s'"), next + 1);
1.8984 ++ *input_line_pointer = c;
1.8985 ++ input_line_pointer = next;
1.8986 ++ return 0;
1.8987 ++ }
1.8988 ++
1.8989 ++ exp->X_op_symbol = NULL;
1.8990 ++ exp->X_add_symbol = symbol_find_or_make (name);
1.8991 ++ exp->X_add_number = 0;
1.8992 ++
1.8993 ++ *input_line_pointer = *nextchar;
1.8994 ++ input_line_pointer = next_end;
1.8995 ++ *nextchar = *input_line_pointer;
1.8996 ++ *input_line_pointer = '\0';
1.8997 ++ return 1;
1.8998 ++ }
1.8999 ++ else if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0)
1.9000 ++ {
1.9001 ++ if (!GOT_symbol)
1.9002 ++ GOT_symbol = symbol_find_or_make(name);
1.9003 ++
1.9004 ++ exp->X_add_symbol = GOT_symbol;
1.9005 ++ exp->X_op = O_symbol;
1.9006 ++ exp->X_add_number = 0;
1.9007 ++ return 1;
1.9008 ++ }
1.9009 ++
1.9010 ++ return 0;
1.9011 ++}
1.9012 ++
1.9013 ++static void
1.9014 ++s_rseg (int value ATTRIBUTE_UNUSED)
1.9015 ++{
1.9016 ++ /* Syntax: RSEG segment_name [:type] [NOROOT|ROOT] [(align)]
1.9017 ++ * Defaults:
1.9018 ++ * - type: undocumented ("typically CODE or DATA")
1.9019 ++ * - ROOT
1.9020 ++ * - align: 1 for code, 0 for others
1.9021 ++ *
1.9022 ++ * TODO: NOROOT is ignored. If gas supports discardable segments, it should
1.9023 ++ * be implemented.
1.9024 ++ */
1.9025 ++ char *name, *end;
1.9026 ++ int length, type, attr;
1.9027 ++ int align = 0;
1.9028 ++
1.9029 ++ SKIP_WHITESPACE();
1.9030 ++
1.9031 ++ end = input_line_pointer;
1.9032 ++ while (0 == strchr ("\n\t;:( ", *end))
1.9033 ++ end++;
1.9034 ++ if (end == input_line_pointer)
1.9035 ++ {
1.9036 ++ as_warn (_("missing name"));
1.9037 ++ ignore_rest_of_line();
1.9038 ++ return;
1.9039 ++ }
1.9040 ++
1.9041 ++ name = xmalloc (end - input_line_pointer + 1);
1.9042 ++ memcpy (name, input_line_pointer, end - input_line_pointer);
1.9043 ++ name[end - input_line_pointer] = '\0';
1.9044 ++ input_line_pointer = end;
1.9045 ++
1.9046 ++ SKIP_WHITESPACE();
1.9047 ++
1.9048 ++ type = SHT_NULL;
1.9049 ++ attr = 0;
1.9050 ++
1.9051 ++ if (*input_line_pointer == ':')
1.9052 ++ {
1.9053 ++ /* Skip the colon */
1.9054 ++ ++input_line_pointer;
1.9055 ++ SKIP_WHITESPACE();
1.9056 ++
1.9057 ++ /* Possible options at this point:
1.9058 ++ * - flag (ROOT or NOROOT)
1.9059 ++ * - a segment type
1.9060 ++ */
1.9061 ++ end = input_line_pointer;
1.9062 ++ while (0 == strchr ("\n\t;:( ", *end))
1.9063 ++ end++;
1.9064 ++ length = end - input_line_pointer;
1.9065 ++ if (((length == 4) && (0 == strncasecmp( input_line_pointer, "ROOT", 4))) ||
1.9066 ++ ((length == 6) && (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
1.9067 ++ {
1.9068 ++ /* Ignore ROOT/NOROOT */
1.9069 ++ input_line_pointer = end;
1.9070 ++ }
1.9071 ++ else
1.9072 ++ {
1.9073 ++ /* Must be a segment type */
1.9074 ++ switch (*input_line_pointer)
1.9075 ++ {
1.9076 ++ case 'C':
1.9077 ++ case 'c':
1.9078 ++ if ((length == 4) &&
1.9079 ++ (0 == strncasecmp (input_line_pointer, "CODE", 4)))
1.9080 ++ {
1.9081 ++ attr |= SHF_ALLOC | SHF_EXECINSTR;
1.9082 ++ type = SHT_PROGBITS;
1.9083 ++ align = 1;
1.9084 ++ break;
1.9085 ++ }
1.9086 ++ if ((length == 5) &&
1.9087 ++ (0 == strncasecmp (input_line_pointer, "CONST", 5)))
1.9088 ++ {
1.9089 ++ attr |= SHF_ALLOC;
1.9090 ++ type = SHT_PROGBITS;
1.9091 ++ break;
1.9092 ++ }
1.9093 ++ goto de_fault;
1.9094 ++
1.9095 ++ case 'D':
1.9096 ++ case 'd':
1.9097 ++ if ((length == 4) &&
1.9098 ++ (0 == strncasecmp (input_line_pointer, "DATA", 4)))
1.9099 ++ {
1.9100 ++ attr |= SHF_ALLOC | SHF_WRITE;
1.9101 ++ type = SHT_PROGBITS;
1.9102 ++ break;
1.9103 ++ }
1.9104 ++ goto de_fault;
1.9105 ++
1.9106 ++ /* TODO: Add FAR*, HUGE*, IDATA and NEAR* if necessary */
1.9107 ++
1.9108 ++ case 'U':
1.9109 ++ case 'u':
1.9110 ++ if ((length == 7) &&
1.9111 ++ (0 == strncasecmp (input_line_pointer, "UNTYPED", 7)))
1.9112 ++ break;
1.9113 ++ goto de_fault;
1.9114 ++
1.9115 ++ /* TODO: Add XDATA and ZPAGE if necessary */
1.9116 ++
1.9117 ++ de_fault:
1.9118 ++ default:
1.9119 ++ as_warn (_("unrecognized segment type"));
1.9120 ++ }
1.9121 ++
1.9122 ++ input_line_pointer = end;
1.9123 ++ SKIP_WHITESPACE();
1.9124 ++
1.9125 ++ if (*input_line_pointer == ':')
1.9126 ++ {
1.9127 ++ /* ROOT/NOROOT */
1.9128 ++ ++input_line_pointer;
1.9129 ++ SKIP_WHITESPACE();
1.9130 ++
1.9131 ++ end = input_line_pointer;
1.9132 ++ while (0 == strchr ("\n\t;:( ", *end))
1.9133 ++ end++;
1.9134 ++ length = end - input_line_pointer;
1.9135 ++ if (! ((length == 4) &&
1.9136 ++ (0 == strncasecmp( input_line_pointer, "ROOT", 4))) &&
1.9137 ++ ! ((length == 6) &&
1.9138 ++ (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
1.9139 ++ {
1.9140 ++ as_warn (_("unrecognized segment flag"));
1.9141 ++ }
1.9142 ++
1.9143 ++ input_line_pointer = end;
1.9144 ++ SKIP_WHITESPACE();
1.9145 ++ }
1.9146 ++ }
1.9147 ++ }
1.9148 ++
1.9149 ++ if (*input_line_pointer == '(')
1.9150 ++ {
1.9151 ++ align = get_absolute_expression ();
1.9152 ++ }
1.9153 ++
1.9154 ++ demand_empty_rest_of_line();
1.9155 ++
1.9156 ++ obj_elf_change_section (name, type, attr, 0, NULL, 0, 0);
1.9157 ++#ifdef AVR32_DEBUG
1.9158 ++ fprintf( stderr, "RSEG: Changed section to %s, type: 0x%x, attr: 0x%x\n",
1.9159 ++ name, type, attr );
1.9160 ++ fprintf( stderr, "RSEG: Aligning to 2**%d\n", align );
1.9161 ++#endif
1.9162 ++
1.9163 ++ if (align > 15)
1.9164 ++ {
1.9165 ++ align = 15;
1.9166 ++ as_warn (_("alignment too large: %u assumed"), align);
1.9167 ++ }
1.9168 ++
1.9169 ++ /* Hope not, that is */
1.9170 ++ assert (now_seg != absolute_section);
1.9171 ++
1.9172 ++ /* Only make a frag if we HAVE to... */
1.9173 ++ if (align != 0 && !need_pass_2)
1.9174 ++ {
1.9175 ++ if (subseg_text_p (now_seg))
1.9176 ++ frag_align_code (align, 0);
1.9177 ++ else
1.9178 ++ frag_align (align, 0, 0);
1.9179 ++ }
1.9180 ++
1.9181 ++ record_alignment (now_seg, align - OCTETS_PER_BYTE_POWER);
1.9182 ++}
1.9183 ++
1.9184 ++/* vim: syntax=c sw=2
1.9185 ++ */
1.9186 +--- /dev/null
1.9187 ++++ b/gas/config/tc-avr32.h
1.9188 +@@ -0,0 +1,325 @@
1.9189 ++/* Assembler definitions for AVR32.
1.9190 ++ Copyright 2003-2006 Atmel Corporation.
1.9191 ++
1.9192 ++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
1.9193 ++
1.9194 ++ This file is part of GAS, the GNU Assembler.
1.9195 ++
1.9196 ++ GAS is free software; you can redistribute it and/or modify it
1.9197 ++ under the terms of the GNU General Public License as published by
1.9198 ++ the Free Software Foundation; either version 2, or (at your option)
1.9199 ++ any later version.
1.9200 ++
1.9201 ++ GAS is distributed in the hope that it will be useful, but WITHOUT
1.9202 ++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
1.9203 ++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
1.9204 ++ License for more details.
1.9205 ++
1.9206 ++ You should have received a copy of the GNU General Public License
1.9207 ++ along with GAS; see the file COPYING. If not, write to the Free
1.9208 ++ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
1.9209 ++ 02111-1307, USA. */
1.9210 ++
1.9211 ++#if 0
1.9212 ++#define DEBUG
1.9213 ++#define DEBUG1
1.9214 ++#define DEBUG2
1.9215 ++#define DEBUG3
1.9216 ++#define DEBUG4
1.9217 ++#define DEBUG5
1.9218 ++#endif
1.9219 ++
1.9220 ++/* Are we trying to be compatible with the IAR assembler? (--iar) */
1.9221 ++extern int avr32_iarcompat;
1.9222 ++
1.9223 ++/* By convention, you should define this macro in the `.h' file. For
1.9224 ++ example, `tc-m68k.h' defines `TC_M68K'. You might have to use this
1.9225 ++ if it is necessary to add CPU specific code to the object format
1.9226 ++ file. */
1.9227 ++#define TC_AVR32
1.9228 ++
1.9229 ++/* This macro is the BFD target name to use when creating the output
1.9230 ++ file. This will normally depend upon the `OBJ_FMT' macro. */
1.9231 ++#define TARGET_FORMAT "elf32-avr32"
1.9232 ++
1.9233 ++/* This macro is the BFD architecture to pass to `bfd_set_arch_mach'. */
1.9234 ++#define TARGET_ARCH bfd_arch_avr32
1.9235 ++
1.9236 ++/* This macro is the BFD machine number to pass to
1.9237 ++ `bfd_set_arch_mach'. If it is not defined, GAS will use 0. */
1.9238 ++#define TARGET_MACH 0
1.9239 ++
1.9240 ++/* UNDOCUMENTED: Allow //-style comments */
1.9241 ++#define DOUBLESLASH_LINE_COMMENTS
1.9242 ++
1.9243 ++/* You should define this macro to be non-zero if the target is big
1.9244 ++ endian, and zero if the target is little endian. */
1.9245 ++#define TARGET_BYTES_BIG_ENDIAN 1
1.9246 ++
1.9247 ++/* FIXME: It seems that GAS only expects a one-byte opcode...
1.9248 ++ #define NOP_OPCODE 0xd703 */
1.9249 ++
1.9250 ++/* If you define this macro, GAS will warn about the use of
1.9251 ++ nonstandard escape sequences in a string. */
1.9252 ++#undef ONLY_STANDARD_ESCAPES
1.9253 ++
1.9254 ++#define DWARF2_FORMAT() dwarf2_format_32bit
1.9255 ++
1.9256 ++/* Instructions are either 2 or 4 bytes long */
1.9257 ++/* #define DWARF2_LINE_MIN_INSN_LENGTH 2 */
1.9258 ++
1.9259 ++/* GAS will call this function for any expression that can not be
1.9260 ++ recognized. When the function is called, `input_line_pointer'
1.9261 ++ will point to the start of the expression. */
1.9262 ++#define md_operand(x)
1.9263 ++
1.9264 ++#define md_parse_name(name, expr, mode, c) avr32_parse_name(name, expr, c)
1.9265 ++extern int avr32_parse_name(const char *, struct expressionS *, char *);
1.9266 ++
1.9267 ++/* You may define this macro to generate a fixup for a data
1.9268 ++ allocation pseudo-op. */
1.9269 ++#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP) \
1.9270 ++ avr32_cons_fix_new(FRAG, OFF, LEN, EXP)
1.9271 ++void avr32_cons_fix_new (fragS *, int, int, expressionS *);
1.9272 ++
1.9273 ++/* `extsym - .' expressions can be emitted using PC-relative relocs */
1.9274 ++#define DIFF_EXPR_OK
1.9275 ++
1.9276 ++/* This is used to construct expressions out of @gotoff, etc. The
1.9277 ++ relocation type is stored in X_md */
1.9278 ++#define O_got O_md1
1.9279 ++#define O_hi O_md2
1.9280 ++#define O_lo O_md3
1.9281 ++#define O_tlsgd O_md4
1.9282 ++
1.9283 ++/* You may define this macro to parse an expression used in a data
1.9284 ++ allocation pseudo-op such as `.word'. You can use this to
1.9285 ++ recognize relocation directives that may appear in such directives. */
1.9286 ++/* #define TC_PARSE_CONS_EXPRESSION(EXPR,N) avr_parse_cons_expression (EXPR,N)
1.9287 ++ void avr_parse_cons_expression (expressionS *exp, int nbytes); */
1.9288 ++
1.9289 ++/* This should just call either `number_to_chars_bigendian' or
1.9290 ++ `number_to_chars_littleendian', whichever is appropriate. On
1.9291 ++ targets like the MIPS which support options to change the
1.9292 ++ endianness, which function to call is a runtime decision. On
1.9293 ++ other targets, `md_number_to_chars' can be a simple macro. */
1.9294 ++#define md_number_to_chars number_to_chars_bigendian
1.9295 ++
1.9296 ++/* `md_short_jump_size'
1.9297 ++ `md_long_jump_size'
1.9298 ++ `md_create_short_jump'
1.9299 ++ `md_create_long_jump'
1.9300 ++ If `WORKING_DOT_WORD' is defined, GAS will not do broken word
1.9301 ++ processing (*note Broken words::.). Otherwise, you should set
1.9302 ++ `md_short_jump_size' to the size of a short jump (a jump that is
1.9303 ++ just long enough to jump around a long jmp) and
1.9304 ++ `md_long_jump_size' to the size of a long jump (a jump that can go
1.9305 ++ anywhere in the function), You should define
1.9306 ++ `md_create_short_jump' to create a short jump around a long jump,
1.9307 ++ and define `md_create_long_jump' to create a long jump. */
1.9308 ++#define WORKING_DOT_WORD
1.9309 ++
1.9310 ++/* If you define this macro, it means that `tc_gen_reloc' may return
1.9311 ++ multiple relocation entries for a single fixup. In this case, the
1.9312 ++ return value of `tc_gen_reloc' is a pointer to a null terminated
1.9313 ++ array. */
1.9314 ++#undef RELOC_EXPANSION_POSSIBLE
1.9315 ++
1.9316 ++/* If you define this macro, GAS will not require pseudo-ops to start with a .
1.9317 ++ character. */
1.9318 ++#define NO_PSEUDO_DOT (avr32_iarcompat)
1.9319 ++
1.9320 ++/* The IAR assembler uses $ as the location counter. Unfortunately, we
1.9321 ++ can't make this dependent on avr32_iarcompat... */
1.9322 ++#define DOLLAR_DOT
1.9323 ++
1.9324 ++/* Values passed to md_apply_fix3 don't include the symbol value. */
1.9325 ++#define MD_APPLY_SYM_VALUE(FIX) 0
1.9326 ++
1.9327 ++/* The number of bytes to put into a word in a listing. This affects
1.9328 ++ the way the bytes are clumped together in the listing. For
1.9329 ++ example, a value of 2 might print `1234 5678' where a value of 1
1.9330 ++ would print `12 34 56 78'. The default value is 4. */
1.9331 ++#define LISTING_WORD_SIZE 4
1.9332 ++
1.9333 ++/* extern const struct relax_type md_relax_table[];
1.9334 ++#define TC_GENERIC_RELAX_TABLE md_relax_table */
1.9335 ++
1.9336 ++/*
1.9337 ++ An `.lcomm' directive with no explicit alignment parameter will use
1.9338 ++ this macro to set P2VAR to the alignment that a request for SIZE
1.9339 ++ bytes will have. The alignment is expressed as a power of two. If
1.9340 ++ no alignment should take place, the macro definition should do
1.9341 ++ nothing. Some targets define a `.bss' directive that is also
1.9342 ++ affected by this macro. The default definition will set P2VAR to
1.9343 ++ the truncated power of two of sizes up to eight bytes.
1.9344 ++
1.9345 ++ We want doublewords to be word-aligned, so we're going to modify the
1.9346 ++ default definition a tiny bit.
1.9347 ++*/
1.9348 ++#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) \
1.9349 ++ do \
1.9350 ++ { \
1.9351 ++ if ((SIZE) >= 4) \
1.9352 ++ (P2VAR) = 2; \
1.9353 ++ else if ((SIZE) >= 2) \
1.9354 ++ (P2VAR) = 1; \
1.9355 ++ else \
1.9356 ++ (P2VAR) = 0; \
1.9357 ++ } \
1.9358 ++ while (0)
1.9359 ++
1.9360 ++/* When relaxing, we need to generate relocations for alignment
1.9361 ++ directives. */
1.9362 ++#define HANDLE_ALIGN(frag) avr32_handle_align(frag)
1.9363 ++extern void avr32_handle_align(fragS *);
1.9364 ++
1.9365 ++/* See internals doc for explanation. Oh wait...
1.9366 ++ Now, can you guess where "alignment" comes from? ;-) */
1.9367 ++#define MAX_MEM_FOR_RS_ALIGN_CODE ((1 << alignment) - 1)
1.9368 ++
1.9369 ++/* We need to stop gas from reducing certain expressions (e.g. GOT
1.9370 ++ references) */
1.9371 ++#define tc_fix_adjustable(fix) avr32_fix_adjustable(fix)
1.9372 ++extern bfd_boolean avr32_fix_adjustable(struct fix *);
1.9373 ++
1.9374 ++/* The linker needs to be passed a little more information when relaxing. */
1.9375 ++#define TC_FORCE_RELOCATION(fix) avr32_force_reloc(fix)
1.9376 ++extern bfd_boolean avr32_force_reloc(struct fix *);
1.9377 ++
1.9378 ++/* I'm tired of working around all the madness in fixup_segment().
1.9379 ++ This hook will do basically the same things as the generic code,
1.9380 ++ and then it will "goto" right past it. */
1.9381 ++#define TC_VALIDATE_FIX(FIX, SEG, SKIP) \
1.9382 ++ do \
1.9383 ++ { \
1.9384 ++ avr32_process_fixup(FIX, SEG); \
1.9385 ++ if (!(FIX)->fx_done) \
1.9386 ++ ++seg_reloc_count; \
1.9387 ++ goto SKIP; \
1.9388 ++ } \
1.9389 ++ while (0)
1.9390 ++extern void avr32_process_fixup(struct fix *fixP, segT this_segment);
1.9391 ++
1.9392 ++/* Positive values of TC_FX_SIZE_SLACK allow a target to define
1.9393 ++ fixups that far past the end of a frag. Having such fixups
1.9394 ++ is of course most most likely a bug in setting fx_size correctly.
1.9395 ++ A negative value disables the fixup check entirely, which is
1.9396 ++ appropriate for something like the Renesas / SuperH SH_COUNT
1.9397 ++ reloc. */
1.9398 ++/* This target is buggy, and sets fix size too large. */
1.9399 ++#define TC_FX_SIZE_SLACK(FIX) -1
1.9400 ++
1.9401 ++/* We don't want the gas core to make any assumptions about our way of
1.9402 ++ doing linkrelaxing. */
1.9403 ++#define TC_LINKRELAX_FIXUP(SEG) 0
1.9404 ++
1.9405 ++/* ... but we do want it to insert lots of padding. */
1.9406 ++#define LINKER_RELAXING_SHRINKS_ONLY
1.9407 ++
1.9408 ++/* Better do it ourselves, really... */
1.9409 ++#define TC_RELAX_ALIGN(SEG, FRAG, ADDR) avr32_relax_align(SEG, FRAG, ADDR)
1.9410 ++extern relax_addressT
1.9411 ++avr32_relax_align(segT segment, fragS *fragP, relax_addressT address);
1.9412 ++
1.9413 ++/* Use line number format that is amenable to linker relaxation. */
1.9414 ++#define DWARF2_USE_FIXED_ADVANCE_PC (linkrelax != 0)
1.9415 ++
1.9416 ++/* This is called by write_object_file() just before symbols are
1.9417 ++ attempted converted into section symbols. */
1.9418 ++#define tc_frob_file_before_adjust() avr32_frob_file()
1.9419 ++extern void avr32_frob_file(void);
1.9420 ++
1.9421 ++/* If you define this macro, GAS will call it at the end of each input
1.9422 ++ file. */
1.9423 ++#define md_cleanup() avr32_cleanup()
1.9424 ++extern void avr32_cleanup(void);
1.9425 ++
1.9426 ++/* There's an AVR32-specific hack in operand() which creates O_md
1.9427 ++ expressions when encountering HWRD or LWRD. We need to generate
1.9428 ++ proper relocs for them */
1.9429 ++/* #define md_cgen_record_fixup_exp avr32_cgen_record_fixup_exp */
1.9430 ++
1.9431 ++/* I needed to add an extra hook in gas_cgen_finish_insn() for
1.9432 ++ conversion of O_md* operands because md_cgen_record_fixup_exp()
1.9433 ++ isn't called for relaxable insns */
1.9434 ++/* #define md_cgen_convert_expr(exp, opinfo) avr32_cgen_convert_expr(exp, opinfo)
1.9435 ++ int avr32_cgen_convert_expr(expressionS *, int); */
1.9436 ++
1.9437 ++/* #define tc_gen_reloc gas_cgen_tc_gen_reloc */
1.9438 ++
1.9439 ++/* If you define this macro, it should return the position from which
1.9440 ++ the PC relative adjustment for a PC relative fixup should be
1.9441 ++ made. On many processors, the base of a PC relative instruction is
1.9442 ++ the next instruction, so this macro would return the length of an
1.9443 ++ instruction, plus the address of the PC relative fixup. The latter
1.9444 ++ can be calculated as fixp->fx_where + fixp->fx_frag->fr_address. */
1.9445 ++extern long md_pcrel_from_section (struct fix *, segT);
1.9446 ++#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
1.9447 ++
1.9448 ++#define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L'))
1.9449 ++#define LOCAL_LABELS_FB 1
1.9450 ++
1.9451 ++struct avr32_relaxer
1.9452 ++{
1.9453 ++ int (*estimate_size)(fragS *, segT);
1.9454 ++ long (*relax_frag)(segT, fragS *, long);
1.9455 ++ void (*convert_frag)(bfd *, segT, fragS *);
1.9456 ++};
1.9457 ++
1.9458 ++/* AVR32 has quite complex instruction coding, which means we need
1.9459 ++ * lots of information in order to do the right thing during relaxing
1.9460 ++ * (basically, we need to be able to reconstruct a whole new opcode if
1.9461 ++ * necessary) */
1.9462 ++#define TC_FRAG_TYPE struct avr32_frag_data
1.9463 ++
1.9464 ++struct cpool;
1.9465 ++
1.9466 ++struct avr32_frag_data
1.9467 ++{
1.9468 ++ /* TODO: Maybe add an expression object here so that we can use
1.9469 ++ fix_new_exp() in md_convert_frag? We may have to decide
1.9470 ++ pcrel-ness in md_estimate_size_before_relax() as well...or we
1.9471 ++ might do it when parsing. Doing it while parsing may fail
1.9472 ++ because the sub_symbol is undefined then... */
1.9473 ++ int pcrel;
1.9474 ++ int force_extended;
1.9475 ++ int reloc_info;
1.9476 ++ struct avr32_relaxer *relaxer;
1.9477 ++ expressionS exp;
1.9478 ++
1.9479 ++ /* Points to associated constant pool, for use by LDA and CALL in
1.9480 ++ non-pic mode, and when relaxing the .cpool directive */
1.9481 ++ struct cpool *pool;
1.9482 ++ unsigned int pool_entry;
1.9483 ++};
1.9484 ++
1.9485 ++/* We will have to initialize the fields explicitly when needed */
1.9486 ++#define TC_FRAG_INIT(fragP)
1.9487 ++
1.9488 ++#define md_estimate_size_before_relax(fragP, segT) \
1.9489 ++ ((fragP)->tc_frag_data.relaxer->estimate_size(fragP, segT))
1.9490 ++#define md_relax_frag(segment, fragP, stretch) \
1.9491 ++ ((fragP)->tc_frag_data.relaxer->relax_frag(segment, fragP, stretch))
1.9492 ++#define md_convert_frag(abfd, segment, fragP) \
1.9493 ++ ((fragP)->tc_frag_data.relaxer->convert_frag(abfd, segment, fragP))
1.9494 ++
1.9495 ++#define TC_FIX_TYPE struct avr32_fix_data
1.9496 ++
1.9497 ++struct avr32_fix_data
1.9498 ++{
1.9499 ++ const struct avr32_ifield *ifield;
1.9500 ++ unsigned int align;
1.9501 ++ long min;
1.9502 ++ long max;
1.9503 ++};
1.9504 ++
1.9505 ++#define TC_INIT_FIX_DATA(fixP) \
1.9506 ++ do \
1.9507 ++ { \
1.9508 ++ (fixP)->tc_fix_data.ifield = NULL; \
1.9509 ++ (fixP)->tc_fix_data.align = 0; \
1.9510 ++ (fixP)->tc_fix_data.min = 0; \
1.9511 ++ (fixP)->tc_fix_data.max = 0; \
1.9512 ++ } \
1.9513 ++ while (0)
1.9514 +--- a/gas/configure.tgt
1.9515 ++++ b/gas/configure.tgt
1.9516 +@@ -33,6 +33,7 @@ case ${cpu} in
1.9517 + am33_2.0) cpu_type=mn10300 endian=little ;;
1.9518 + arm*be|arm*b) cpu_type=arm endian=big ;;
1.9519 + arm*) cpu_type=arm endian=little ;;
1.9520 ++ avr32*) cpu_type=avr32 endian=big ;;
1.9521 + bfin*) cpu_type=bfin endian=little ;;
1.9522 + c4x*) cpu_type=tic4x ;;
1.9523 + cr16*) cpu_type=cr16 endian=little ;;
1.9524 +@@ -129,6 +130,9 @@ case ${generic_target} in
1.9525 + bfin-*elf) fmt=elf ;;
1.9526 + cr16-*-elf*) fmt=elf ;;
1.9527 +
1.9528 ++ avr32-*-linux*) fmt=elf em=linux bfd_gas=yes ;;
1.9529 ++ avr32*) fmt=elf bfd_gas=yes ;;
1.9530 ++
1.9531 + cris-*-linux-* | crisv32-*-linux-*)
1.9532 + fmt=multi em=linux ;;
1.9533 + cris-*-* | crisv32-*-*) fmt=multi ;;
1.9534 +--- a/gas/doc/all.texi
1.9535 ++++ b/gas/doc/all.texi
1.9536 +@@ -30,6 +30,7 @@
1.9537 + @set ARC
1.9538 + @set ARM
1.9539 + @set AVR
1.9540 ++@set AVR32
1.9541 + @set BFIN
1.9542 + @set CR16
1.9543 + @set CRIS
1.9544 +--- a/gas/doc/as.texinfo
1.9545 ++++ b/gas/doc/as.texinfo
1.9546 +@@ -6353,6 +6353,9 @@ subject, see the hardware manufacturer's
1.9547 + @ifset AVR
1.9548 + * AVR-Dependent:: AVR Dependent Features
1.9549 + @end ifset
1.9550 ++@ifset AVR32
1.9551 ++* AVR32-Dependent:: AVR32 Dependent Features
1.9552 ++@end ifset
1.9553 + @ifset BFIN
1.9554 + * BFIN-Dependent:: BFIN Dependent Features
1.9555 + @end ifset
1.9556 +@@ -6476,6 +6479,10 @@ subject, see the hardware manufacturer's
1.9557 + @include c-avr.texi
1.9558 + @end ifset
1.9559 +
1.9560 ++@ifset AVR32
1.9561 ++@include c-avr32.texi
1.9562 ++@end ifset
1.9563 ++
1.9564 + @ifset BFIN
1.9565 + @include c-bfin.texi
1.9566 + @end ifset
1.9567 +--- /dev/null
1.9568 ++++ b/gas/doc/c-avr32.texi
1.9569 +@@ -0,0 +1,247 @@
1.9570 ++@c Copyright 2005, 2006
1.9571 ++@c Atmel Corporation
1.9572 ++@c This is part of the GAS manual.
1.9573 ++@c For copying conditions, see the file as.texinfo.
1.9574 ++
1.9575 ++@ifset GENERIC
1.9576 ++@page
1.9577 ++@node AVR32-Dependent
1.9578 ++@chapter AVR32 Dependent Features
1.9579 ++@end ifset
1.9580 ++
1.9581 ++@ifclear GENERIC
1.9582 ++@node Machine Dependencies
1.9583 ++@chapter AVR32 Dependent Features
1.9584 ++@end ifclear
1.9585 ++
1.9586 ++@cindex AVR32 support
1.9587 ++@menu
1.9588 ++* AVR32 Options:: Options
1.9589 ++* AVR32 Syntax:: Syntax
1.9590 ++* AVR32 Directives:: Directives
1.9591 ++* AVR32 Opcodes:: Opcodes
1.9592 ++@end menu
1.9593 ++
1.9594 ++@node AVR32 Options
1.9595 ++@section Options
1.9596 ++@cindex AVR32 options
1.9597 ++@cindex options for AVR32
1.9598 ++
1.9599 ++There are currently no AVR32-specific options. However, the following
1.9600 ++options are planned:
1.9601 ++
1.9602 ++@table @code
1.9603 ++
1.9604 ++@cindex @code{--pic} command line option, AVR32
1.9605 ++@cindex PIC code generation for AVR32
1.9606 ++@item --pic
1.9607 ++This option specifies that the output of the assembler should be marked
1.9608 ++as position-independent code (PIC). It will also ensure that
1.9609 ++pseudo-instructions that deal with address calculation are output as
1.9610 ++PIC, and that all absolute address references in the code are marked as
1.9611 ++such.
1.9612 ++
1.9613 ++@cindex @code{--linkrelax} command line option, AVR32
1.9614 ++@item --linkrelax
1.9615 ++This option specifies that the output of the assembler should be marked
1.9616 ++as linker-relaxable. It will also ensure that all PC-relative operands
1.9617 ++that may change during linker relaxation get appropriate relocations.
1.9618 ++
1.9619 ++@end table
1.9620 ++
1.9621 ++
1.9622 ++@node AVR32 Syntax
1.9623 ++@section Syntax
1.9624 ++@menu
1.9625 ++* AVR32-Chars:: Special Characters
1.9626 ++* AVR32-Symrefs:: Symbol references
1.9627 ++@end menu
1.9628 ++
1.9629 ++@node AVR32-Chars
1.9630 ++@subsection Special Characters
1.9631 ++
1.9632 ++@cindex line comment character, AVR32
1.9633 ++@cindex AVR32 line comment character
1.9634 ++The presence of a @samp{//} on a line indicates the start of a comment
1.9635 ++that extends to the end of the current line. If a @samp{#} appears as
1.9636 ++the first character of a line, the whole line is treated as a comment.
1.9637 ++
1.9638 ++@cindex line separator, AVR32
1.9639 ++@cindex statement separator, AVR32
1.9640 ++@cindex AVR32 line separator
1.9641 ++The @samp{;} character can be used instead of a newline to separate
1.9642 ++statements.
1.9643 ++
1.9644 ++@node AVR32-Symrefs
1.9645 ++@subsection Symbol references
1.9646 ++
1.9647 ++The absolute value of a symbol can be obtained by simply naming the
1.9648 ++symbol. However, as AVR32 symbols have 32-bit values, most symbols have
1.9649 ++values that are outside the range of any instructions.
1.9650 ++
1.9651 ++Instructions that take a PC-relative offset, e.g. @code{lddpc} or
1.9652 ++@code{rcall}, can also reference a symbol by simply naming the symbol
1.9653 ++(no explicit calculations necessary). In this case, the assembler or
1.9654 ++linker subtracts the address of the instruction from the symbol's value
1.9655 ++and inserts the result into the instruction. Note that even though an
1.9656 ++overflow is less likely to happen for a relative reference than for an
1.9657 ++absolute reference, the assembler or linker will generate an error if
1.9658 ++the referenced symbol is too far away from the current location.
1.9659 ++
1.9660 ++Relative references can be used for data as well. For example:
1.9661 ++
1.9662 ++@smallexample
1.9663 ++ lddpc r0, 2f
1.9664 ++1: add r0, pc
1.9665 ++ ...
1.9666 ++ .align 2
1.9667 ++2: .int @var{some_symbol} - 1b
1.9668 ++@end smallexample
1.9669 ++
1.9670 ++Here, r0 will end up with the run-time address of @var{some_symbol} even
1.9671 ++if the program was loaded at a different address than it was linked
1.9672 ++(position-independent code).
1.9673 ++
1.9674 ++@subsubsection Symbol modifiers
1.9675 ++
1.9676 ++@table @code
1.9677 ++
1.9678 ++@item @code{hi(@var{symbol})}
1.9679 ++Evaluates to the value of the symbol shifted right 16 bits. This will
1.9680 ++work even if @var{symbol} is defined in a different module.
1.9681 ++
1.9682 ++@item @code{lo(@var{symbol})}
1.9683 ++Evaluates to the low 16 bits of the symbol's value. This will work even
1.9684 ++if @var{symbol} is defined in a different module.
1.9685 ++
1.9686 ++@item @code{@var{symbol}@@got}
1.9687 ++Create a GOT entry for @var{symbol} and return the offset of that entry
1.9688 ++relative to the GOT base.
1.9689 ++
1.9690 ++@end table
1.9691 ++
1.9692 ++
1.9693 ++@node AVR32 Directives
1.9694 ++@section Directives
1.9695 ++@cindex machine directives, AVR32
1.9696 ++@cindex AVR32 directives
1.9697 ++
1.9698 ++@table @code
1.9699 ++
1.9700 ++@cindex @code{.cpool} directive, AVR32
1.9701 ++@item .cpool
1.9702 ++This directive causes the current contents of the constant pool to be
1.9703 ++dumped into the current section at the current location (aligned to a
1.9704 ++word boundary). @code{GAS} maintains a separate constant pool for each
1.9705 ++section and each sub-section. The @code{.cpool} directive will only
1.9706 ++affect the constant pool of the current section and sub-section. At the
1.9707 ++end of assembly, all remaining, non-empty constant pools will
1.9708 ++automatically be dumped.
1.9709 ++
1.9710 ++@end table
1.9711 ++
1.9712 ++
1.9713 ++@node AVR32 Opcodes
1.9714 ++@section Opcodes
1.9715 ++@cindex AVR32 opcodes
1.9716 ++@cindex opcodes for AVR32
1.9717 ++
1.9718 ++@code{@value{AS}} implements all the standard AVR32 opcodes. It also
1.9719 ++implements several pseudo-opcodes, which are recommended to use wherever
1.9720 ++possible because they give the tool chain better freedom to generate
1.9721 ++optimal code.
1.9722 ++
1.9723 ++@table @code
1.9724 ++
1.9725 ++@cindex @code{LDA.W reg, symbol} pseudo op, AVR32
1.9726 ++@item LDA.W
1.9727 ++@smallexample
1.9728 ++ lda.w @var{reg}, @var{symbol}
1.9729 ++@end smallexample
1.9730 ++
1.9731 ++This instruction will load the address of @var{symbol} into
1.9732 ++@var{reg}. The instruction will evaluate to one of the following,
1.9733 ++depending on the relative distance to the symbol, the relative distance
1.9734 ++to the constant pool and whether the @code{--pic} option has been
1.9735 ++specified. If the @code{--pic} option has not been specified, the
1.9736 ++alternatives are as follows:
1.9737 ++@smallexample
1.9738 ++ /* @var{symbol} evaluates to a small enough value */
1.9739 ++ mov @var{reg}, @var{symbol}
1.9740 ++
1.9741 ++ /* (. - @var{symbol}) evaluates to a small enough value */
1.9742 ++ sub @var{reg}, pc, . - @var{symbol}
1.9743 ++
1.9744 ++ /* Constant pool is close enough */
1.9745 ++ lddpc @var{reg}, @var{cpent}
1.9746 ++ ...
1.9747 ++@var{cpent}:
1.9748 ++ .long @var{symbol}
1.9749 ++
1.9750 ++ /* Otherwise (not implemented yet, probably not necessary) */
1.9751 ++ mov @var{reg}, lo(@var{symbol})
1.9752 ++ orh @var{reg}, hi(@var{symbol})
1.9753 ++@end smallexample
1.9754 ++
1.9755 ++If the @code{--pic} option has been specified, the alternatives are as
1.9756 ++follows:
1.9757 ++@smallexample
1.9758 ++ /* (. - @var{symbol}) evaluates to a small enough value */
1.9759 ++ sub @var{reg}, pc, . - @var{symbol}
1.9760 ++
1.9761 ++ /* If @code{--linkrelax} not specified */
1.9762 ++ ld.w @var{reg}, r6[@var{symbol}@@got]
1.9763 ++
1.9764 ++ /* Otherwise */
1.9765 ++ mov @var{reg}, @var{symbol}@@got / 4
1.9766 ++ ld.w @var{reg}, r6[@var{reg} << 2]
1.9767 ++@end smallexample
1.9768 ++
1.9769 ++If @var{symbol} is not defined in the same file and section as the
1.9770 ++@code{LDA.W} instruction, the most pessimistic alternative of the
1.9771 ++above is selected. The linker may convert it back into the most
1.9772 ++optimal alternative when the final value of all symbols is known.
1.9773 ++
1.9774 ++@cindex @code{CALL symbol} pseudo op, AVR32
1.9775 ++@item CALL
1.9776 ++@smallexample
1.9777 ++ call @var{symbol}
1.9778 ++@end smallexample
1.9779 ++
1.9780 ++This instruction will insert code to call the subroutine identified by
1.9781 ++@var{symbol}. It will evaluate to one of the following, depending on
1.9782 ++the relative distance to the symbol as well as the @code{--linkrelax}
1.9783 ++and @code{--pic} command-line options.
1.9784 ++
1.9785 ++If @var{symbol} is defined in the same section and input file, and the
1.9786 ++distance is small enough, an @code{rcall} instruction is inserted:
1.9787 ++@smallexample
1.9788 ++ rcall @var{symbol}
1.9789 ++@end smallexample
1.9790 ++
1.9791 ++Otherwise, if the @code{--pic} option has not been specified:
1.9792 ++@smallexample
1.9793 ++ mcall @var{cpent}
1.9794 ++ ...
1.9795 ++@var{cpent}:
1.9796 ++ .long @var{symbol}
1.9797 ++@end smallexample
1.9798 ++
1.9799 ++Finally, if nothing else fits and the @code{--pic} option has been
1.9800 ++specified, the assembler will indirect the call through the Global
1.9801 ++Offset Table:
1.9802 ++@smallexample
1.9803 ++ /* If @code{--linkrelax} not specified */
1.9804 ++ mcall r6[@var{symbol}@@got]
1.9805 ++
1.9806 ++ /* If @code{--linkrelax} specified */
1.9807 ++ mov lr, @var{symbol}@@got / 4
1.9808 ++ ld.w lr, r6[lr << 2]
1.9809 ++ icall lr
1.9810 ++@end smallexample
1.9811 ++
1.9812 ++The linker, after determining the final value of @var{symbol}, may
1.9813 ++convert any of these into more optimal alternatives. This includes
1.9814 ++deleting any superfluous constant pool- and GOT-entries.
1.9815 ++
1.9816 ++@end table
1.9817 +--- a/gas/doc/Makefile.am
1.9818 ++++ b/gas/doc/Makefile.am
1.9819 +@@ -33,6 +33,7 @@ CPU_DOCS = \
1.9820 + c-arc.texi \
1.9821 + c-arm.texi \
1.9822 + c-avr.texi \
1.9823 ++ c-avr32.texi \
1.9824 + c-bfin.texi \
1.9825 + c-cr16.texi \
1.9826 + c-d10v.texi \
1.9827 +--- a/gas/Makefile.am
1.9828 ++++ b/gas/Makefile.am
1.9829 +@@ -47,6 +47,7 @@ CPU_TYPES = \
1.9830 + arc \
1.9831 + arm \
1.9832 + avr \
1.9833 ++ avr32 \
1.9834 + bfin \
1.9835 + cr16 \
1.9836 + cris \
1.9837 +@@ -241,6 +242,7 @@ TARGET_CPU_CFILES = \
1.9838 + config/tc-arc.c \
1.9839 + config/tc-arm.c \
1.9840 + config/tc-avr.c \
1.9841 ++ config/tc-avr32.c \
1.9842 + config/tc-bfin.c \
1.9843 + config/tc-cr16.c \
1.9844 + config/tc-cris.c \
1.9845 +@@ -296,6 +298,7 @@ TARGET_CPU_HFILES = \
1.9846 + config/tc-arc.h \
1.9847 + config/tc-arm.h \
1.9848 + config/tc-avr.h \
1.9849 ++ config/tc-avr32.h \
1.9850 + config/tc-bfin.h \
1.9851 + config/tc-cr16.h \
1.9852 + config/tc-cris.h \
1.9853 +@@ -1050,6 +1053,11 @@ DEPTC_avr_elf = $(srcdir)/config/obj-elf
1.9854 + $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
1.9855 + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
1.9856 + $(INCDIR)/opcode/avr.h
1.9857 ++DEPTC_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
1.9858 ++ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
1.9859 ++ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
1.9860 ++ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
1.9861 ++ $(srcdir)/../opcodes/avr32-opc.h $(srcdir)/../opcodes/avr32-asm.h
1.9862 + DEPTC_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
1.9863 + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
1.9864 + $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
1.9865 +@@ -1487,6 +1495,11 @@ DEPOBJ_avr_elf = $(srcdir)/config/obj-el
1.9866 + $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
1.9867 + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
1.9868 + $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
1.9869 ++DEPOBJ_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
1.9870 ++ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
1.9871 ++ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
1.9872 ++ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
1.9873 ++ struc-symbol.h dwarf2dbg.h
1.9874 + DEPOBJ_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
1.9875 + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
1.9876 + $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
1.9877 +@@ -1858,6 +1871,9 @@ DEP_cr16_elf = $(srcdir)/config/obj-elf.
1.9878 + $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cr16.h dwarf2dbg.h \
1.9879 + $(srcdir)/config/obj-coff.h $(INCDIR)/coff/internal.h \
1.9880 + $(BFDDIR)/libcoff.h
1.9881 ++DEP_avr32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
1.9882 ++ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
1.9883 ++ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h
1.9884 + DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
1.9885 + $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
1.9886 + DEP_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
1.9887 +--- /dev/null
1.9888 ++++ b/gas/testsuite/gas/avr32/aliases.d
1.9889 +@@ -0,0 +1,19 @@
1.9890 ++#as:
1.9891 ++#objdump: -dr
1.9892 ++#name: aliases
1.9893 ++
1.9894 ++.*: +file format .*
1.9895 ++
1.9896 ++Disassembly of section \.text:
1.9897 ++
1.9898 ++00000000 <ld_nodisp>:
1.9899 ++ 0: 19 80 [ \t]+ld\.ub r0,r12\[0x0\]
1.9900 ++ 2: f9 20 00 00[ \t]+ld\.sb r0,r12\[0\]
1.9901 ++ 6: 98 80 [ \t]+ld\.uh r0,r12\[0x0\]
1.9902 ++ 8: 98 00 [ \t]+ld\.sh r0,r12\[0x0\]
1.9903 ++ a: 78 00 [ \t]+ld\.w r0,r12\[0x0\]
1.9904 ++
1.9905 ++0000000c <st_nodisp>:
1.9906 ++ c: b8 80 [ \t]+st\.b r12\[0x0\],r0
1.9907 ++ e: b8 00 [ \t]+st\.h r12\[0x0\],r0
1.9908 ++ 10: 99 00 [ \t]+st\.w r12\[0x0\],r0
1.9909 +--- /dev/null
1.9910 ++++ b/gas/testsuite/gas/avr32/aliases.s
1.9911 +@@ -0,0 +1,14 @@
1.9912 ++ .text
1.9913 ++ .global ld_nodisp
1.9914 ++ld_nodisp:
1.9915 ++ ld.ub r0, r12
1.9916 ++ ld.sb r0, r12
1.9917 ++ ld.uh r0, r12
1.9918 ++ ld.sh r0, r12
1.9919 ++ ld.w r0, r12
1.9920 ++
1.9921 ++ .global st_nodisp
1.9922 ++st_nodisp:
1.9923 ++ st.b r12, r0
1.9924 ++ st.h r12, r0
1.9925 ++ st.w r12, r0
1.9926 +--- /dev/null
1.9927 ++++ b/gas/testsuite/gas/avr32/allinsn.d
1.9928 +@@ -0,0 +1,2987 @@
1.9929 ++#as:
1.9930 ++#objdump: -dr
1.9931 ++#name: allinsn
1.9932 ++
1.9933 ++.*: +file format .*
1.9934 ++
1.9935 ++Disassembly of section \.text:
1.9936 ++
1.9937 ++[0-9a-f]* <ld_d5>:
1.9938 ++ *[0-9a-f]*: fe 0f 02 3e ld\.d lr,pc\[pc<<0x3\]
1.9939 ++ *[0-9a-f]*: e0 00 02 00 ld\.d r0,r0\[r0\]
1.9940 ++ *[0-9a-f]*: ea 05 02 26 ld\.d r6,r5\[r5<<0x2\]
1.9941 ++ *[0-9a-f]*: e8 04 02 14 ld\.d r4,r4\[r4<<0x1\]
1.9942 ++ *[0-9a-f]*: fc 0e 02 1e ld\.d lr,lr\[lr<<0x1\]
1.9943 ++ *[0-9a-f]*: e6 0d 02 2a ld\.d r10,r3\[sp<<0x2\]
1.9944 ++ *[0-9a-f]*: f4 06 02 28 ld\.d r8,r10\[r6<<0x2\]
1.9945 ++ *[0-9a-f]*: ee 09 02 02 ld\.d r2,r7\[r9\]
1.9946 ++
1.9947 ++[0-9a-f]* <ld_w5>:
1.9948 ++ *[0-9a-f]*: fe 0f 03 0f ld\.w pc,pc\[pc\]
1.9949 ++ *[0-9a-f]*: f8 0c 03 3c ld\.w r12,r12\[r12<<0x3\]
1.9950 ++ *[0-9a-f]*: ea 05 03 25 ld\.w r5,r5\[r5<<0x2\]
1.9951 ++ *[0-9a-f]*: e8 04 03 14 ld\.w r4,r4\[r4<<0x1\]
1.9952 ++ *[0-9a-f]*: fc 0e 03 1e ld\.w lr,lr\[lr<<0x1\]
1.9953 ++ *[0-9a-f]*: f2 09 03 02 ld\.w r2,r9\[r9\]
1.9954 ++ *[0-9a-f]*: e4 06 03 0b ld\.w r11,r2\[r6\]
1.9955 ++ *[0-9a-f]*: e4 0d 03 30 ld\.w r0,r2\[sp<<0x3\]
1.9956 ++
1.9957 ++[0-9a-f]* <ld_sh5>:
1.9958 ++ *[0-9a-f]*: fe 0f 04 0f ld\.sh pc,pc\[pc\]
1.9959 ++ *[0-9a-f]*: f8 0c 04 3c ld\.sh r12,r12\[r12<<0x3\]
1.9960 ++ *[0-9a-f]*: ea 05 04 25 ld\.sh r5,r5\[r5<<0x2\]
1.9961 ++ *[0-9a-f]*: e8 04 04 14 ld\.sh r4,r4\[r4<<0x1\]
1.9962 ++ *[0-9a-f]*: fc 0e 04 1e ld\.sh lr,lr\[lr<<0x1\]
1.9963 ++ *[0-9a-f]*: e0 0f 04 2b ld\.sh r11,r0\[pc<<0x2\]
1.9964 ++ *[0-9a-f]*: fa 06 04 2a ld\.sh r10,sp\[r6<<0x2\]
1.9965 ++ *[0-9a-f]*: e4 02 04 0c ld\.sh r12,r2\[r2\]
1.9966 ++
1.9967 ++[0-9a-f]* <ld_uh5>:
1.9968 ++ *[0-9a-f]*: fe 0f 05 0f ld\.uh pc,pc\[pc\]
1.9969 ++ *[0-9a-f]*: f8 0c 05 3c ld\.uh r12,r12\[r12<<0x3\]
1.9970 ++ *[0-9a-f]*: ea 05 05 25 ld\.uh r5,r5\[r5<<0x2\]
1.9971 ++ *[0-9a-f]*: e8 04 05 14 ld\.uh r4,r4\[r4<<0x1\]
1.9972 ++ *[0-9a-f]*: fc 0e 05 1e ld\.uh lr,lr\[lr<<0x1\]
1.9973 ++ *[0-9a-f]*: fe 0e 05 38 ld\.uh r8,pc\[lr<<0x3\]
1.9974 ++ *[0-9a-f]*: e2 0f 05 16 ld\.uh r6,r1\[pc<<0x1\]
1.9975 ++ *[0-9a-f]*: fc 0d 05 16 ld\.uh r6,lr\[sp<<0x1\]
1.9976 ++
1.9977 ++[0-9a-f]* <ld_sb2>:
1.9978 ++ *[0-9a-f]*: fe 0f 06 0f ld\.sb pc,pc\[pc\]
1.9979 ++ *[0-9a-f]*: f8 0c 06 3c ld\.sb r12,r12\[r12<<0x3\]
1.9980 ++ *[0-9a-f]*: ea 05 06 25 ld\.sb r5,r5\[r5<<0x2\]
1.9981 ++ *[0-9a-f]*: e8 04 06 14 ld\.sb r4,r4\[r4<<0x1\]
1.9982 ++ *[0-9a-f]*: fc 0e 06 1e ld\.sb lr,lr\[lr<<0x1\]
1.9983 ++ *[0-9a-f]*: e2 0f 06 39 ld\.sb r9,r1\[pc<<0x3\]
1.9984 ++ *[0-9a-f]*: e6 0b 06 10 ld\.sb r0,r3\[r11<<0x1\]
1.9985 ++ *[0-9a-f]*: ea 05 06 1a ld\.sb r10,r5\[r5<<0x1\]
1.9986 ++
1.9987 ++[0-9a-f]* <ld_ub5>:
1.9988 ++ *[0-9a-f]*: fe 0f 07 0f ld\.ub pc,pc\[pc\]
1.9989 ++ *[0-9a-f]*: f8 0c 07 3c ld\.ub r12,r12\[r12<<0x3\]
1.9990 ++ *[0-9a-f]*: ea 05 07 25 ld\.ub r5,r5\[r5<<0x2\]
1.9991 ++ *[0-9a-f]*: e8 04 07 14 ld\.ub r4,r4\[r4<<0x1\]
1.9992 ++ *[0-9a-f]*: fc 0e 07 1e ld\.ub lr,lr\[lr<<0x1\]
1.9993 ++ *[0-9a-f]*: f8 07 07 36 ld\.ub r6,r12\[r7<<0x3\]
1.9994 ++ *[0-9a-f]*: ec 0c 07 02 ld\.ub r2,r6\[r12\]
1.9995 ++ *[0-9a-f]*: ee 0b 07 10 ld\.ub r0,r7\[r11<<0x1\]
1.9996 ++
1.9997 ++[0-9a-f]* <st_d5>:
1.9998 ++ *[0-9a-f]*: fe 0f 08 0e st\.d pc\[pc\],lr
1.9999 ++ *[0-9a-f]*: f8 0c 08 3c st\.d r12\[r12<<0x3\],r12
1.10000 ++ *[0-9a-f]*: ea 05 08 26 st\.d r5\[r5<<0x2\],r6
1.10001 ++ *[0-9a-f]*: e8 04 08 14 st\.d r4\[r4<<0x1\],r4
1.10002 ++ *[0-9a-f]*: fc 0e 08 1e st\.d lr\[lr<<0x1\],lr
1.10003 ++ *[0-9a-f]*: e2 09 08 14 st\.d r1\[r9<<0x1\],r4
1.10004 ++ *[0-9a-f]*: f4 02 08 14 st\.d r10\[r2<<0x1\],r4
1.10005 ++ *[0-9a-f]*: f8 06 08 0e st\.d r12\[r6\],lr
1.10006 ++
1.10007 ++[0-9a-f]* <st_w5>:
1.10008 ++ *[0-9a-f]*: fe 0f 09 0f st\.w pc\[pc\],pc
1.10009 ++ *[0-9a-f]*: f8 0c 09 3c st\.w r12\[r12<<0x3\],r12
1.10010 ++ *[0-9a-f]*: ea 05 09 25 st\.w r5\[r5<<0x2\],r5
1.10011 ++ *[0-9a-f]*: e8 04 09 14 st\.w r4\[r4<<0x1\],r4
1.10012 ++ *[0-9a-f]*: fc 0e 09 1e st\.w lr\[lr<<0x1\],lr
1.10013 ++ *[0-9a-f]*: e2 0a 09 03 st\.w r1\[r10\],r3
1.10014 ++ *[0-9a-f]*: e0 0a 09 19 st\.w r0\[r10<<0x1\],r9
1.10015 ++ *[0-9a-f]*: e8 05 09 3f st\.w r4\[r5<<0x3\],pc
1.10016 ++
1.10017 ++[0-9a-f]* <st_h5>:
1.10018 ++ *[0-9a-f]*: fe 0f 0a 0f st\.h pc\[pc\],pc
1.10019 ++ *[0-9a-f]*: f8 0c 0a 3c st\.h r12\[r12<<0x3\],r12
1.10020 ++ *[0-9a-f]*: ea 05 0a 25 st\.h r5\[r5<<0x2\],r5
1.10021 ++ *[0-9a-f]*: e8 04 0a 14 st\.h r4\[r4<<0x1\],r4
1.10022 ++ *[0-9a-f]*: fc 0e 0a 1e st\.h lr\[lr<<0x1\],lr
1.10023 ++ *[0-9a-f]*: e4 09 0a 0b st\.h r2\[r9\],r11
1.10024 ++ *[0-9a-f]*: ea 01 0a 2c st\.h r5\[r1<<0x2\],r12
1.10025 ++ *[0-9a-f]*: fe 08 0a 23 st\.h pc\[r8<<0x2\],r3
1.10026 ++
1.10027 ++[0-9a-f]* <st_b5>:
1.10028 ++ *[0-9a-f]*: fe 0f 0b 0f st\.b pc\[pc\],pc
1.10029 ++ *[0-9a-f]*: f8 0c 0b 3c st\.b r12\[r12<<0x3\],r12
1.10030 ++ *[0-9a-f]*: ea 05 0b 25 st\.b r5\[r5<<0x2\],r5
1.10031 ++ *[0-9a-f]*: e8 04 0b 14 st\.b r4\[r4<<0x1\],r4
1.10032 ++ *[0-9a-f]*: fc 0e 0b 1e st\.b lr\[lr<<0x1\],lr
1.10033 ++ *[0-9a-f]*: e2 08 0b 16 st\.b r1\[r8<<0x1\],r6
1.10034 ++ *[0-9a-f]*: fc 0e 0b 31 st\.b lr\[lr<<0x3\],r1
1.10035 ++ *[0-9a-f]*: ea 00 0b 2f st\.b r5\[r0<<0x2\],pc
1.10036 ++
1.10037 ++[0-9a-f]* <divs>:
1.10038 ++ *[0-9a-f]*: fe 0f 0c 0f divs pc,pc,pc
1.10039 ++ *[0-9a-f]*: f8 0c 0c 0c divs r12,r12,r12
1.10040 ++ *[0-9a-f]*: ea 05 0c 05 divs r5,r5,r5
1.10041 ++ *[0-9a-f]*: e8 04 0c 04 divs r4,r4,r4
1.10042 ++ *[0-9a-f]*: fc 0e 0c 0e divs lr,lr,lr
1.10043 ++ *[0-9a-f]*: fe 0f 0c 03 divs r3,pc,pc
1.10044 ++ *[0-9a-f]*: f8 02 0c 09 divs r9,r12,r2
1.10045 ++ *[0-9a-f]*: e8 01 0c 07 divs r7,r4,r1
1.10046 ++
1.10047 ++[0-9a-f]* <add1>:
1.10048 ++ *[0-9a-f]*: 1e 0f add pc,pc
1.10049 ++ *[0-9a-f]*: 18 0c add r12,r12
1.10050 ++ *[0-9a-f]*: 0a 05 add r5,r5
1.10051 ++ *[0-9a-f]*: 08 04 add r4,r4
1.10052 ++ *[0-9a-f]*: 1c 0e add lr,lr
1.10053 ++ *[0-9a-f]*: 12 0c add r12,r9
1.10054 ++ *[0-9a-f]*: 06 06 add r6,r3
1.10055 ++ *[0-9a-f]*: 18 0a add r10,r12
1.10056 ++
1.10057 ++[0-9a-f]* <sub1>:
1.10058 ++ *[0-9a-f]*: 1e 1f sub pc,pc
1.10059 ++ *[0-9a-f]*: 18 1c sub r12,r12
1.10060 ++ *[0-9a-f]*: 0a 15 sub r5,r5
1.10061 ++ *[0-9a-f]*: 08 14 sub r4,r4
1.10062 ++ *[0-9a-f]*: 1c 1e sub lr,lr
1.10063 ++ *[0-9a-f]*: 0c 1e sub lr,r6
1.10064 ++ *[0-9a-f]*: 1a 10 sub r0,sp
1.10065 ++ *[0-9a-f]*: 18 16 sub r6,r12
1.10066 ++
1.10067 ++[0-9a-f]* <rsub1>:
1.10068 ++ *[0-9a-f]*: 1e 2f rsub pc,pc
1.10069 ++ *[0-9a-f]*: 18 2c rsub r12,r12
1.10070 ++ *[0-9a-f]*: 0a 25 rsub r5,r5
1.10071 ++ *[0-9a-f]*: 08 24 rsub r4,r4
1.10072 ++ *[0-9a-f]*: 1c 2e rsub lr,lr
1.10073 ++ *[0-9a-f]*: 1a 2b rsub r11,sp
1.10074 ++ *[0-9a-f]*: 08 27 rsub r7,r4
1.10075 ++ *[0-9a-f]*: 02 29 rsub r9,r1
1.10076 ++
1.10077 ++[0-9a-f]* <cp1>:
1.10078 ++ *[0-9a-f]*: 1e 3f cp\.w pc,pc
1.10079 ++ *[0-9a-f]*: 18 3c cp\.w r12,r12
1.10080 ++ *[0-9a-f]*: 0a 35 cp\.w r5,r5
1.10081 ++ *[0-9a-f]*: 08 34 cp\.w r4,r4
1.10082 ++ *[0-9a-f]*: 1c 3e cp\.w lr,lr
1.10083 ++ *[0-9a-f]*: 04 36 cp\.w r6,r2
1.10084 ++ *[0-9a-f]*: 12 30 cp\.w r0,r9
1.10085 ++ *[0-9a-f]*: 1a 33 cp\.w r3,sp
1.10086 ++
1.10087 ++[0-9a-f]* <or1>:
1.10088 ++ *[0-9a-f]*: 1e 4f or pc,pc
1.10089 ++ *[0-9a-f]*: 18 4c or r12,r12
1.10090 ++ *[0-9a-f]*: 0a 45 or r5,r5
1.10091 ++ *[0-9a-f]*: 08 44 or r4,r4
1.10092 ++ *[0-9a-f]*: 1c 4e or lr,lr
1.10093 ++ *[0-9a-f]*: 12 44 or r4,r9
1.10094 ++ *[0-9a-f]*: 08 4b or r11,r4
1.10095 ++ *[0-9a-f]*: 00 44 or r4,r0
1.10096 ++
1.10097 ++[0-9a-f]* <eor1>:
1.10098 ++ *[0-9a-f]*: 1e 5f eor pc,pc
1.10099 ++ *[0-9a-f]*: 18 5c eor r12,r12
1.10100 ++ *[0-9a-f]*: 0a 55 eor r5,r5
1.10101 ++ *[0-9a-f]*: 08 54 eor r4,r4
1.10102 ++ *[0-9a-f]*: 1c 5e eor lr,lr
1.10103 ++ *[0-9a-f]*: 16 5c eor r12,r11
1.10104 ++ *[0-9a-f]*: 02 50 eor r0,r1
1.10105 ++ *[0-9a-f]*: 1e 55 eor r5,pc
1.10106 ++
1.10107 ++[0-9a-f]* <and1>:
1.10108 ++ *[0-9a-f]*: 1e 6f and pc,pc
1.10109 ++ *[0-9a-f]*: 18 6c and r12,r12
1.10110 ++ *[0-9a-f]*: 0a 65 and r5,r5
1.10111 ++ *[0-9a-f]*: 08 64 and r4,r4
1.10112 ++ *[0-9a-f]*: 1c 6e and lr,lr
1.10113 ++ *[0-9a-f]*: 02 68 and r8,r1
1.10114 ++ *[0-9a-f]*: 1a 60 and r0,sp
1.10115 ++ *[0-9a-f]*: 0a 6a and r10,r5
1.10116 ++
1.10117 ++[0-9a-f]* <tst>:
1.10118 ++ *[0-9a-f]*: 1e 7f tst pc,pc
1.10119 ++ *[0-9a-f]*: 18 7c tst r12,r12
1.10120 ++ *[0-9a-f]*: 0a 75 tst r5,r5
1.10121 ++ *[0-9a-f]*: 08 74 tst r4,r4
1.10122 ++ *[0-9a-f]*: 1c 7e tst lr,lr
1.10123 ++ *[0-9a-f]*: 18 70 tst r0,r12
1.10124 ++ *[0-9a-f]*: 0c 7a tst r10,r6
1.10125 ++ *[0-9a-f]*: 08 7d tst sp,r4
1.10126 ++
1.10127 ++[0-9a-f]* <andn>:
1.10128 ++ *[0-9a-f]*: 1e 8f andn pc,pc
1.10129 ++ *[0-9a-f]*: 18 8c andn r12,r12
1.10130 ++ *[0-9a-f]*: 0a 85 andn r5,r5
1.10131 ++ *[0-9a-f]*: 08 84 andn r4,r4
1.10132 ++ *[0-9a-f]*: 1c 8e andn lr,lr
1.10133 ++ *[0-9a-f]*: 18 89 andn r9,r12
1.10134 ++ *[0-9a-f]*: 1a 8b andn r11,sp
1.10135 ++ *[0-9a-f]*: 0a 8c andn r12,r5
1.10136 ++
1.10137 ++[0-9a-f]* <mov3>:
1.10138 ++ *[0-9a-f]*: 1e 9f mov pc,pc
1.10139 ++ *[0-9a-f]*: 18 9c mov r12,r12
1.10140 ++ *[0-9a-f]*: 0a 95 mov r5,r5
1.10141 ++ *[0-9a-f]*: 08 94 mov r4,r4
1.10142 ++ *[0-9a-f]*: 1c 9e mov lr,lr
1.10143 ++ *[0-9a-f]*: 12 95 mov r5,r9
1.10144 ++ *[0-9a-f]*: 16 9b mov r11,r11
1.10145 ++ *[0-9a-f]*: 1c 92 mov r2,lr
1.10146 ++
1.10147 ++[0-9a-f]* <st_w1>:
1.10148 ++ *[0-9a-f]*: 1e af st\.w pc\+\+,pc
1.10149 ++ *[0-9a-f]*: 18 ac st\.w r12\+\+,r12
1.10150 ++ *[0-9a-f]*: 0a a5 st\.w r5\+\+,r5
1.10151 ++ *[0-9a-f]*: 08 a4 st\.w r4\+\+,r4
1.10152 ++ *[0-9a-f]*: 1c ae st\.w lr\+\+,lr
1.10153 ++ *[0-9a-f]*: 02 ab st\.w r1\+\+,r11
1.10154 ++ *[0-9a-f]*: 1a a0 st\.w sp\+\+,r0
1.10155 ++ *[0-9a-f]*: 1a a1 st\.w sp\+\+,r1
1.10156 ++
1.10157 ++[0-9a-f]* <st_h1>:
1.10158 ++ *[0-9a-f]*: 1e bf st\.h pc\+\+,pc
1.10159 ++ *[0-9a-f]*: 18 bc st\.h r12\+\+,r12
1.10160 ++ *[0-9a-f]*: 0a b5 st\.h r5\+\+,r5
1.10161 ++ *[0-9a-f]*: 08 b4 st\.h r4\+\+,r4
1.10162 ++ *[0-9a-f]*: 1c be st\.h lr\+\+,lr
1.10163 ++ *[0-9a-f]*: 18 bd st\.h r12\+\+,sp
1.10164 ++ *[0-9a-f]*: 0e be st\.h r7\+\+,lr
1.10165 ++ *[0-9a-f]*: 0e b4 st\.h r7\+\+,r4
1.10166 ++
1.10167 ++[0-9a-f]* <st_b1>:
1.10168 ++ *[0-9a-f]*: 1e cf st\.b pc\+\+,pc
1.10169 ++ *[0-9a-f]*: 18 cc st\.b r12\+\+,r12
1.10170 ++ *[0-9a-f]*: 0a c5 st\.b r5\+\+,r5
1.10171 ++ *[0-9a-f]*: 08 c4 st\.b r4\+\+,r4
1.10172 ++ *[0-9a-f]*: 1c ce st\.b lr\+\+,lr
1.10173 ++ *[0-9a-f]*: 12 cd st\.b r9\+\+,sp
1.10174 ++ *[0-9a-f]*: 02 cd st\.b r1\+\+,sp
1.10175 ++ *[0-9a-f]*: 00 c4 st\.b r0\+\+,r4
1.10176 ++
1.10177 ++[0-9a-f]* <st_w2>:
1.10178 ++ *[0-9a-f]*: 1e df st\.w --pc,pc
1.10179 ++ *[0-9a-f]*: 18 dc st\.w --r12,r12
1.10180 ++ *[0-9a-f]*: 0a d5 st\.w --r5,r5
1.10181 ++ *[0-9a-f]*: 08 d4 st\.w --r4,r4
1.10182 ++ *[0-9a-f]*: 1c de st\.w --lr,lr
1.10183 ++ *[0-9a-f]*: 02 d7 st\.w --r1,r7
1.10184 ++ *[0-9a-f]*: 06 d9 st\.w --r3,r9
1.10185 ++ *[0-9a-f]*: 0a d5 st\.w --r5,r5
1.10186 ++
1.10187 ++[0-9a-f]* <st_h2>:
1.10188 ++ *[0-9a-f]*: 1e ef st\.h --pc,pc
1.10189 ++ *[0-9a-f]*: 18 ec st\.h --r12,r12
1.10190 ++ *[0-9a-f]*: 0a e5 st\.h --r5,r5
1.10191 ++ *[0-9a-f]*: 08 e4 st\.h --r4,r4
1.10192 ++ *[0-9a-f]*: 1c ee st\.h --lr,lr
1.10193 ++ *[0-9a-f]*: 0a e7 st\.h --r5,r7
1.10194 ++ *[0-9a-f]*: 10 e8 st\.h --r8,r8
1.10195 ++ *[0-9a-f]*: 0e e2 st\.h --r7,r2
1.10196 ++
1.10197 ++[0-9a-f]* <st_b2>:
1.10198 ++ *[0-9a-f]*: 1e ff st\.b --pc,pc
1.10199 ++ *[0-9a-f]*: 18 fc st\.b --r12,r12
1.10200 ++ *[0-9a-f]*: 0a f5 st\.b --r5,r5
1.10201 ++ *[0-9a-f]*: 08 f4 st\.b --r4,r4
1.10202 ++ *[0-9a-f]*: 1c fe st\.b --lr,lr
1.10203 ++ *[0-9a-f]*: 1a fd st\.b --sp,sp
1.10204 ++ *[0-9a-f]*: 1a fb st\.b --sp,r11
1.10205 ++ *[0-9a-f]*: 08 f5 st\.b --r4,r5
1.10206 ++
1.10207 ++[0-9a-f]* <ld_w1>:
1.10208 ++ *[0-9a-f]*: 1f 0f ld\.w pc,pc\+\+
1.10209 ++ *[0-9a-f]*: 19 0c ld\.w r12,r12\+\+
1.10210 ++ *[0-9a-f]*: 0b 05 ld\.w r5,r5\+\+
1.10211 ++ *[0-9a-f]*: 09 04 ld\.w r4,r4\+\+
1.10212 ++ *[0-9a-f]*: 1d 0e ld\.w lr,lr\+\+
1.10213 ++ *[0-9a-f]*: 0f 03 ld\.w r3,r7\+\+
1.10214 ++ *[0-9a-f]*: 1d 03 ld\.w r3,lr\+\+
1.10215 ++ *[0-9a-f]*: 0b 0c ld\.w r12,r5\+\+
1.10216 ++
1.10217 ++[0-9a-f]* <ld_sh1>:
1.10218 ++ *[0-9a-f]*: 1f 1f ld\.sh pc,pc\+\+
1.10219 ++ *[0-9a-f]*: 19 1c ld\.sh r12,r12\+\+
1.10220 ++ *[0-9a-f]*: 0b 15 ld\.sh r5,r5\+\+
1.10221 ++ *[0-9a-f]*: 09 14 ld\.sh r4,r4\+\+
1.10222 ++ *[0-9a-f]*: 1d 1e ld\.sh lr,lr\+\+
1.10223 ++ *[0-9a-f]*: 05 1b ld\.sh r11,r2\+\+
1.10224 ++ *[0-9a-f]*: 11 12 ld\.sh r2,r8\+\+
1.10225 ++ *[0-9a-f]*: 0d 17 ld\.sh r7,r6\+\+
1.10226 ++
1.10227 ++[0-9a-f]* <ld_uh1>:
1.10228 ++ *[0-9a-f]*: 1f 2f ld\.uh pc,pc\+\+
1.10229 ++ *[0-9a-f]*: 19 2c ld\.uh r12,r12\+\+
1.10230 ++ *[0-9a-f]*: 0b 25 ld\.uh r5,r5\+\+
1.10231 ++ *[0-9a-f]*: 09 24 ld\.uh r4,r4\+\+
1.10232 ++ *[0-9a-f]*: 1d 2e ld\.uh lr,lr\+\+
1.10233 ++ *[0-9a-f]*: 0f 26 ld\.uh r6,r7\+\+
1.10234 ++ *[0-9a-f]*: 17 2a ld\.uh r10,r11\+\+
1.10235 ++ *[0-9a-f]*: 09 2e ld\.uh lr,r4\+\+
1.10236 ++
1.10237 ++[0-9a-f]* <ld_ub1>:
1.10238 ++ *[0-9a-f]*: 1f 3f ld\.ub pc,pc\+\+
1.10239 ++ *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+
1.10240 ++ *[0-9a-f]*: 0b 35 ld\.ub r5,r5\+\+
1.10241 ++ *[0-9a-f]*: 09 34 ld\.ub r4,r4\+\+
1.10242 ++ *[0-9a-f]*: 1d 3e ld\.ub lr,lr\+\+
1.10243 ++ *[0-9a-f]*: 1d 38 ld\.ub r8,lr\+\+
1.10244 ++ *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+
1.10245 ++ *[0-9a-f]*: 15 3b ld\.ub r11,r10\+\+
1.10246 ++
1.10247 ++[0-9a-f]* <ld_w2>:
1.10248 ++ *[0-9a-f]*: 1f 4f ld\.w pc,--pc
1.10249 ++ *[0-9a-f]*: 19 4c ld\.w r12,--r12
1.10250 ++ *[0-9a-f]*: 0b 45 ld\.w r5,--r5
1.10251 ++ *[0-9a-f]*: 09 44 ld\.w r4,--r4
1.10252 ++ *[0-9a-f]*: 1d 4e ld\.w lr,--lr
1.10253 ++ *[0-9a-f]*: 1d 4a ld\.w r10,--lr
1.10254 ++ *[0-9a-f]*: 13 4c ld\.w r12,--r9
1.10255 ++ *[0-9a-f]*: 0b 46 ld\.w r6,--r5
1.10256 ++
1.10257 ++[0-9a-f]* <ld_sh2>:
1.10258 ++ *[0-9a-f]*: 1f 5f ld\.sh pc,--pc
1.10259 ++ *[0-9a-f]*: 19 5c ld\.sh r12,--r12
1.10260 ++ *[0-9a-f]*: 0b 55 ld\.sh r5,--r5
1.10261 ++ *[0-9a-f]*: 09 54 ld\.sh r4,--r4
1.10262 ++ *[0-9a-f]*: 1d 5e ld\.sh lr,--lr
1.10263 ++ *[0-9a-f]*: 15 5f ld\.sh pc,--r10
1.10264 ++ *[0-9a-f]*: 07 56 ld\.sh r6,--r3
1.10265 ++ *[0-9a-f]*: 0d 54 ld\.sh r4,--r6
1.10266 ++
1.10267 ++[0-9a-f]* <ld_uh2>:
1.10268 ++ *[0-9a-f]*: 1f 6f ld\.uh pc,--pc
1.10269 ++ *[0-9a-f]*: 19 6c ld\.uh r12,--r12
1.10270 ++ *[0-9a-f]*: 0b 65 ld\.uh r5,--r5
1.10271 ++ *[0-9a-f]*: 09 64 ld\.uh r4,--r4
1.10272 ++ *[0-9a-f]*: 1d 6e ld\.uh lr,--lr
1.10273 ++ *[0-9a-f]*: 05 63 ld\.uh r3,--r2
1.10274 ++ *[0-9a-f]*: 01 61 ld\.uh r1,--r0
1.10275 ++ *[0-9a-f]*: 13 62 ld\.uh r2,--r9
1.10276 ++
1.10277 ++[0-9a-f]* <ld_ub2>:
1.10278 ++ *[0-9a-f]*: 1f 7f ld\.ub pc,--pc
1.10279 ++ *[0-9a-f]*: 19 7c ld\.ub r12,--r12
1.10280 ++ *[0-9a-f]*: 0b 75 ld\.ub r5,--r5
1.10281 ++ *[0-9a-f]*: 09 74 ld\.ub r4,--r4
1.10282 ++ *[0-9a-f]*: 1d 7e ld\.ub lr,--lr
1.10283 ++ *[0-9a-f]*: 03 71 ld\.ub r1,--r1
1.10284 ++ *[0-9a-f]*: 0d 70 ld\.ub r0,--r6
1.10285 ++ *[0-9a-f]*: 0f 72 ld\.ub r2,--r7
1.10286 ++
1.10287 ++[0-9a-f]* <ld_ub3>:
1.10288 ++ *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\]
1.10289 ++ *[0-9a-f]*: 19 fc ld\.ub r12,r12\[0x7\]
1.10290 ++ *[0-9a-f]*: 0b c5 ld\.ub r5,r5\[0x4\]
1.10291 ++ *[0-9a-f]*: 09 b4 ld\.ub r4,r4\[0x3\]
1.10292 ++ *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\]
1.10293 ++ *[0-9a-f]*: 13 e6 ld\.ub r6,r9\[0x6\]
1.10294 ++ *[0-9a-f]*: 1d c2 ld\.ub r2,lr\[0x4\]
1.10295 ++ *[0-9a-f]*: 11 81 ld\.ub r1,r8\[0x0\]
1.10296 ++
1.10297 ++[0-9a-f]* <sub3_sp>:
1.10298 ++ *[0-9a-f]*: 20 0d sub sp,0
1.10299 ++ *[0-9a-f]*: 2f fd sub sp,-4
1.10300 ++ *[0-9a-f]*: 28 0d sub sp,-512
1.10301 ++ *[0-9a-f]*: 27 fd sub sp,508
1.10302 ++ *[0-9a-f]*: 20 1d sub sp,4
1.10303 ++ *[0-9a-f]*: 20 bd sub sp,44
1.10304 ++ *[0-9a-f]*: 20 2d sub sp,8
1.10305 ++ *[0-9a-f]*: 25 7d sub sp,348
1.10306 ++
1.10307 ++[0-9a-f]* <sub3>:
1.10308 ++ *[0-9a-f]*: 20 0f sub pc,0
1.10309 ++ *[0-9a-f]*: 2f fc sub r12,-1
1.10310 ++ *[0-9a-f]*: 28 05 sub r5,-128
1.10311 ++ *[0-9a-f]*: 27 f4 sub r4,127
1.10312 ++ *[0-9a-f]*: 20 1e sub lr,1
1.10313 ++ *[0-9a-f]*: 2d 76 sub r6,-41
1.10314 ++ *[0-9a-f]*: 22 54 sub r4,37
1.10315 ++ *[0-9a-f]*: 23 8c sub r12,56
1.10316 ++
1.10317 ++[0-9a-f]* <mov1>:
1.10318 ++ *[0-9a-f]*: 30 0f mov pc,0
1.10319 ++ *[0-9a-f]*: 3f fc mov r12,-1
1.10320 ++ *[0-9a-f]*: 38 05 mov r5,-128
1.10321 ++ *[0-9a-f]*: 37 f4 mov r4,127
1.10322 ++ *[0-9a-f]*: 30 1e mov lr,1
1.10323 ++ *[0-9a-f]*: 30 ef mov pc,14
1.10324 ++ *[0-9a-f]*: 39 c6 mov r6,-100
1.10325 ++ *[0-9a-f]*: 38 6e mov lr,-122
1.10326 ++
1.10327 ++[0-9a-f]* <lddsp>:
1.10328 ++ *[0-9a-f]*: 40 0f lddsp pc,sp\[0x0\]
1.10329 ++ *[0-9a-f]*: 47 fc lddsp r12,sp\[0x1fc\]
1.10330 ++ *[0-9a-f]*: 44 05 lddsp r5,sp\[0x100\]
1.10331 ++ *[0-9a-f]*: 43 f4 lddsp r4,sp\[0xfc\]
1.10332 ++ *[0-9a-f]*: 40 1e lddsp lr,sp\[0x4\]
1.10333 ++ *[0-9a-f]*: 44 0e lddsp lr,sp\[0x100\]
1.10334 ++ *[0-9a-f]*: 40 5c lddsp r12,sp\[0x14\]
1.10335 ++ *[0-9a-f]*: 47 69 lddsp r9,sp\[0x1d8\]
1.10336 ++
1.10337 ++[0-9a-f]* <lddpc>:
1.10338 ++ *[0-9a-f]*: 48 0f lddpc pc,[0-9a-f]* <.*>
1.10339 ++ *[0-9a-f]*: 4f f0 lddpc r0,[0-9a-f]* <.*>
1.10340 ++ *[0-9a-f]*: 4c 08 lddpc r8,[0-9a-f]* <.*>
1.10341 ++ *[0-9a-f]*: 4b f7 lddpc r7,[0-9a-f]* <.*>
1.10342 ++ *[0-9a-f]*: 48 1e lddpc lr,[0-9a-f]* <.*>
1.10343 ++ *[0-9a-f]*: 4f 6d lddpc sp,[0-9a-f]* <.*>
1.10344 ++ *[0-9a-f]*: 49 e6 lddpc r6,[0-9a-f]* <.*>
1.10345 ++ *[0-9a-f]*: 48 7b lddpc r11,[0-9a-f]* <.*>
1.10346 ++
1.10347 ++[0-9a-f]* <stdsp>:
1.10348 ++ *[0-9a-f]*: 50 0f stdsp sp\[0x0\],pc
1.10349 ++ *[0-9a-f]*: 57 fc stdsp sp\[0x1fc\],r12
1.10350 ++ *[0-9a-f]*: 54 05 stdsp sp\[0x100\],r5
1.10351 ++ *[0-9a-f]*: 53 f4 stdsp sp\[0xfc\],r4
1.10352 ++ *[0-9a-f]*: 50 1e stdsp sp\[0x4\],lr
1.10353 ++ *[0-9a-f]*: 54 cf stdsp sp\[0x130\],pc
1.10354 ++ *[0-9a-f]*: 54 00 stdsp sp\[0x100\],r0
1.10355 ++ *[0-9a-f]*: 55 45 stdsp sp\[0x150\],r5
1.10356 ++
1.10357 ++[0-9a-f]* <cp2>:
1.10358 ++ *[0-9a-f]*: 58 0f cp.w pc,0
1.10359 ++ *[0-9a-f]*: 5b fc cp.w r12,-1
1.10360 ++ *[0-9a-f]*: 5a 05 cp.w r5,-32
1.10361 ++ *[0-9a-f]*: 59 f4 cp.w r4,31
1.10362 ++ *[0-9a-f]*: 58 1e cp.w lr,1
1.10363 ++ *[0-9a-f]*: 58 38 cp.w r8,3
1.10364 ++ *[0-9a-f]*: 59 0e cp.w lr,16
1.10365 ++ *[0-9a-f]*: 5a 67 cp.w r7,-26
1.10366 ++
1.10367 ++[0-9a-f]* <acr>:
1.10368 ++ *[0-9a-f]*: 5c 0f acr pc
1.10369 ++ *[0-9a-f]*: 5c 0c acr r12
1.10370 ++ *[0-9a-f]*: 5c 05 acr r5
1.10371 ++ *[0-9a-f]*: 5c 04 acr r4
1.10372 ++ *[0-9a-f]*: 5c 0e acr lr
1.10373 ++ *[0-9a-f]*: 5c 02 acr r2
1.10374 ++ *[0-9a-f]*: 5c 0c acr r12
1.10375 ++ *[0-9a-f]*: 5c 0f acr pc
1.10376 ++
1.10377 ++[0-9a-f]* <scr>:
1.10378 ++ *[0-9a-f]*: 5c 1f scr pc
1.10379 ++ *[0-9a-f]*: 5c 1c scr r12
1.10380 ++ *[0-9a-f]*: 5c 15 scr r5
1.10381 ++ *[0-9a-f]*: 5c 14 scr r4
1.10382 ++ *[0-9a-f]*: 5c 1e scr lr
1.10383 ++ *[0-9a-f]*: 5c 1f scr pc
1.10384 ++ *[0-9a-f]*: 5c 16 scr r6
1.10385 ++ *[0-9a-f]*: 5c 11 scr r1
1.10386 ++
1.10387 ++[0-9a-f]* <cpc0>:
1.10388 ++ *[0-9a-f]*: 5c 2f cpc pc
1.10389 ++ *[0-9a-f]*: 5c 2c cpc r12
1.10390 ++ *[0-9a-f]*: 5c 25 cpc r5
1.10391 ++ *[0-9a-f]*: 5c 24 cpc r4
1.10392 ++ *[0-9a-f]*: 5c 2e cpc lr
1.10393 ++ *[0-9a-f]*: 5c 2f cpc pc
1.10394 ++ *[0-9a-f]*: 5c 24 cpc r4
1.10395 ++ *[0-9a-f]*: 5c 29 cpc r9
1.10396 ++
1.10397 ++[0-9a-f]* <neg>:
1.10398 ++ *[0-9a-f]*: 5c 3f neg pc
1.10399 ++ *[0-9a-f]*: 5c 3c neg r12
1.10400 ++ *[0-9a-f]*: 5c 35 neg r5
1.10401 ++ *[0-9a-f]*: 5c 34 neg r4
1.10402 ++ *[0-9a-f]*: 5c 3e neg lr
1.10403 ++ *[0-9a-f]*: 5c 37 neg r7
1.10404 ++ *[0-9a-f]*: 5c 31 neg r1
1.10405 ++ *[0-9a-f]*: 5c 39 neg r9
1.10406 ++
1.10407 ++[0-9a-f]* <abs>:
1.10408 ++ *[0-9a-f]*: 5c 4f abs pc
1.10409 ++ *[0-9a-f]*: 5c 4c abs r12
1.10410 ++ *[0-9a-f]*: 5c 45 abs r5
1.10411 ++ *[0-9a-f]*: 5c 44 abs r4
1.10412 ++ *[0-9a-f]*: 5c 4e abs lr
1.10413 ++ *[0-9a-f]*: 5c 46 abs r6
1.10414 ++ *[0-9a-f]*: 5c 46 abs r6
1.10415 ++ *[0-9a-f]*: 5c 44 abs r4
1.10416 ++
1.10417 ++[0-9a-f]* <castu_b>:
1.10418 ++ *[0-9a-f]*: 5c 5f castu\.b pc
1.10419 ++ *[0-9a-f]*: 5c 5c castu\.b r12
1.10420 ++ *[0-9a-f]*: 5c 55 castu\.b r5
1.10421 ++ *[0-9a-f]*: 5c 54 castu\.b r4
1.10422 ++ *[0-9a-f]*: 5c 5e castu\.b lr
1.10423 ++ *[0-9a-f]*: 5c 57 castu\.b r7
1.10424 ++ *[0-9a-f]*: 5c 5d castu\.b sp
1.10425 ++ *[0-9a-f]*: 5c 59 castu\.b r9
1.10426 ++
1.10427 ++[0-9a-f]* <casts_b>:
1.10428 ++ *[0-9a-f]*: 5c 6f casts\.b pc
1.10429 ++ *[0-9a-f]*: 5c 6c casts\.b r12
1.10430 ++ *[0-9a-f]*: 5c 65 casts\.b r5
1.10431 ++ *[0-9a-f]*: 5c 64 casts\.b r4
1.10432 ++ *[0-9a-f]*: 5c 6e casts\.b lr
1.10433 ++ *[0-9a-f]*: 5c 6b casts\.b r11
1.10434 ++ *[0-9a-f]*: 5c 61 casts\.b r1
1.10435 ++ *[0-9a-f]*: 5c 6a casts\.b r10
1.10436 ++
1.10437 ++[0-9a-f]* <castu_h>:
1.10438 ++ *[0-9a-f]*: 5c 7f castu\.h pc
1.10439 ++ *[0-9a-f]*: 5c 7c castu\.h r12
1.10440 ++ *[0-9a-f]*: 5c 75 castu\.h r5
1.10441 ++ *[0-9a-f]*: 5c 74 castu\.h r4
1.10442 ++ *[0-9a-f]*: 5c 7e castu\.h lr
1.10443 ++ *[0-9a-f]*: 5c 7a castu\.h r10
1.10444 ++ *[0-9a-f]*: 5c 7b castu\.h r11
1.10445 ++ *[0-9a-f]*: 5c 71 castu\.h r1
1.10446 ++
1.10447 ++[0-9a-f]* <casts_h>:
1.10448 ++ *[0-9a-f]*: 5c 8f casts\.h pc
1.10449 ++ *[0-9a-f]*: 5c 8c casts\.h r12
1.10450 ++ *[0-9a-f]*: 5c 85 casts\.h r5
1.10451 ++ *[0-9a-f]*: 5c 84 casts\.h r4
1.10452 ++ *[0-9a-f]*: 5c 8e casts\.h lr
1.10453 ++ *[0-9a-f]*: 5c 80 casts\.h r0
1.10454 ++ *[0-9a-f]*: 5c 85 casts\.h r5
1.10455 ++ *[0-9a-f]*: 5c 89 casts\.h r9
1.10456 ++
1.10457 ++[0-9a-f]* <brev>:
1.10458 ++ *[0-9a-f]*: 5c 9f brev pc
1.10459 ++ *[0-9a-f]*: 5c 9c brev r12
1.10460 ++ *[0-9a-f]*: 5c 95 brev r5
1.10461 ++ *[0-9a-f]*: 5c 94 brev r4
1.10462 ++ *[0-9a-f]*: 5c 9e brev lr
1.10463 ++ *[0-9a-f]*: 5c 95 brev r5
1.10464 ++ *[0-9a-f]*: 5c 9a brev r10
1.10465 ++ *[0-9a-f]*: 5c 98 brev r8
1.10466 ++
1.10467 ++[0-9a-f]* <swap_h>:
1.10468 ++ *[0-9a-f]*: 5c af swap\.h pc
1.10469 ++ *[0-9a-f]*: 5c ac swap\.h r12
1.10470 ++ *[0-9a-f]*: 5c a5 swap\.h r5
1.10471 ++ *[0-9a-f]*: 5c a4 swap\.h r4
1.10472 ++ *[0-9a-f]*: 5c ae swap\.h lr
1.10473 ++ *[0-9a-f]*: 5c a7 swap\.h r7
1.10474 ++ *[0-9a-f]*: 5c a0 swap\.h r0
1.10475 ++ *[0-9a-f]*: 5c a8 swap\.h r8
1.10476 ++
1.10477 ++[0-9a-f]* <swap_b>:
1.10478 ++ *[0-9a-f]*: 5c bf swap\.b pc
1.10479 ++ *[0-9a-f]*: 5c bc swap\.b r12
1.10480 ++ *[0-9a-f]*: 5c b5 swap\.b r5
1.10481 ++ *[0-9a-f]*: 5c b4 swap\.b r4
1.10482 ++ *[0-9a-f]*: 5c be swap\.b lr
1.10483 ++ *[0-9a-f]*: 5c ba swap\.b r10
1.10484 ++ *[0-9a-f]*: 5c bc swap\.b r12
1.10485 ++ *[0-9a-f]*: 5c b1 swap\.b r1
1.10486 ++
1.10487 ++[0-9a-f]* <swap_bh>:
1.10488 ++ *[0-9a-f]*: 5c cf swap\.bh pc
1.10489 ++ *[0-9a-f]*: 5c cc swap\.bh r12
1.10490 ++ *[0-9a-f]*: 5c c5 swap\.bh r5
1.10491 ++ *[0-9a-f]*: 5c c4 swap\.bh r4
1.10492 ++ *[0-9a-f]*: 5c ce swap\.bh lr
1.10493 ++ *[0-9a-f]*: 5c c9 swap\.bh r9
1.10494 ++ *[0-9a-f]*: 5c c4 swap\.bh r4
1.10495 ++ *[0-9a-f]*: 5c c1 swap\.bh r1
1.10496 ++
1.10497 ++[0-9a-f]* <One_s_compliment>:
1.10498 ++ *[0-9a-f]*: 5c df com pc
1.10499 ++ *[0-9a-f]*: 5c dc com r12
1.10500 ++ *[0-9a-f]*: 5c d5 com r5
1.10501 ++ *[0-9a-f]*: 5c d4 com r4
1.10502 ++ *[0-9a-f]*: 5c de com lr
1.10503 ++ *[0-9a-f]*: 5c d2 com r2
1.10504 ++ *[0-9a-f]*: 5c d2 com r2
1.10505 ++ *[0-9a-f]*: 5c d7 com r7
1.10506 ++
1.10507 ++[0-9a-f]* <tnbz>:
1.10508 ++ *[0-9a-f]*: 5c ef tnbz pc
1.10509 ++ *[0-9a-f]*: 5c ec tnbz r12
1.10510 ++ *[0-9a-f]*: 5c e5 tnbz r5
1.10511 ++ *[0-9a-f]*: 5c e4 tnbz r4
1.10512 ++ *[0-9a-f]*: 5c ee tnbz lr
1.10513 ++ *[0-9a-f]*: 5c e8 tnbz r8
1.10514 ++ *[0-9a-f]*: 5c ec tnbz r12
1.10515 ++ *[0-9a-f]*: 5c ef tnbz pc
1.10516 ++
1.10517 ++[0-9a-f]* <rol>:
1.10518 ++ *[0-9a-f]*: 5c ff rol pc
1.10519 ++ *[0-9a-f]*: 5c fc rol r12
1.10520 ++ *[0-9a-f]*: 5c f5 rol r5
1.10521 ++ *[0-9a-f]*: 5c f4 rol r4
1.10522 ++ *[0-9a-f]*: 5c fe rol lr
1.10523 ++ *[0-9a-f]*: 5c fa rol r10
1.10524 ++ *[0-9a-f]*: 5c f9 rol r9
1.10525 ++ *[0-9a-f]*: 5c f5 rol r5
1.10526 ++
1.10527 ++[0-9a-f]* <ror>:
1.10528 ++ *[0-9a-f]*: 5d 0f ror pc
1.10529 ++ *[0-9a-f]*: 5d 0c ror r12
1.10530 ++ *[0-9a-f]*: 5d 05 ror r5
1.10531 ++ *[0-9a-f]*: 5d 04 ror r4
1.10532 ++ *[0-9a-f]*: 5d 0e ror lr
1.10533 ++ *[0-9a-f]*: 5d 08 ror r8
1.10534 ++ *[0-9a-f]*: 5d 04 ror r4
1.10535 ++ *[0-9a-f]*: 5d 07 ror r7
1.10536 ++
1.10537 ++[0-9a-f]* <icall>:
1.10538 ++ *[0-9a-f]*: 5d 1f icall pc
1.10539 ++ *[0-9a-f]*: 5d 1c icall r12
1.10540 ++ *[0-9a-f]*: 5d 15 icall r5
1.10541 ++ *[0-9a-f]*: 5d 14 icall r4
1.10542 ++ *[0-9a-f]*: 5d 1e icall lr
1.10543 ++ *[0-9a-f]*: 5d 13 icall r3
1.10544 ++ *[0-9a-f]*: 5d 11 icall r1
1.10545 ++ *[0-9a-f]*: 5d 13 icall r3
1.10546 ++
1.10547 ++[0-9a-f]* <mustr>:
1.10548 ++ *[0-9a-f]*: 5d 2f mustr pc
1.10549 ++ *[0-9a-f]*: 5d 2c mustr r12
1.10550 ++ *[0-9a-f]*: 5d 25 mustr r5
1.10551 ++ *[0-9a-f]*: 5d 24 mustr r4
1.10552 ++ *[0-9a-f]*: 5d 2e mustr lr
1.10553 ++ *[0-9a-f]*: 5d 21 mustr r1
1.10554 ++ *[0-9a-f]*: 5d 24 mustr r4
1.10555 ++ *[0-9a-f]*: 5d 2c mustr r12
1.10556 ++
1.10557 ++[0-9a-f]* <musfr>:
1.10558 ++ *[0-9a-f]*: 5d 3f musfr pc
1.10559 ++ *[0-9a-f]*: 5d 3c musfr r12
1.10560 ++ *[0-9a-f]*: 5d 35 musfr r5
1.10561 ++ *[0-9a-f]*: 5d 34 musfr r4
1.10562 ++ *[0-9a-f]*: 5d 3e musfr lr
1.10563 ++ *[0-9a-f]*: 5d 3b musfr r11
1.10564 ++ *[0-9a-f]*: 5d 3c musfr r12
1.10565 ++ *[0-9a-f]*: 5d 32 musfr r2
1.10566 ++
1.10567 ++[0-9a-f]* <ret_cond>:
1.10568 ++ *[0-9a-f]*: 5e 0f reteq 1
1.10569 ++ *[0-9a-f]*: 5e fc retal r12
1.10570 ++ *[0-9a-f]*: 5e 85 retls r5
1.10571 ++ *[0-9a-f]*: 5e 74 retpl r4
1.10572 ++ *[0-9a-f]*: 5e 1e retne -1
1.10573 ++ *[0-9a-f]*: 5e 90 retgt r0
1.10574 ++ *[0-9a-f]*: 5e 9c retgt r12
1.10575 ++ *[0-9a-f]*: 5e 4a retge r10
1.10576 ++
1.10577 ++[0-9a-f]* <sr_cond>:
1.10578 ++ *[0-9a-f]*: 5f 0f sreq pc
1.10579 ++ *[0-9a-f]*: 5f fc sral r12
1.10580 ++ *[0-9a-f]*: 5f 85 srls r5
1.10581 ++ *[0-9a-f]*: 5f 74 srpl r4
1.10582 ++ *[0-9a-f]*: 5f 1e srne lr
1.10583 ++ *[0-9a-f]*: 5f 50 srlt r0
1.10584 ++ *[0-9a-f]*: 5f fd sral sp
1.10585 ++ *[0-9a-f]*: 5f 49 srge r9
1.10586 ++
1.10587 ++[0-9a-f]* <ld_w3>:
1.10588 ++ *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\]
1.10589 ++ *[0-9a-f]*: 79 fc ld\.w r12,r12\[0x7c\]
1.10590 ++ *[0-9a-f]*: 6b 05 ld\.w r5,r5\[0x40\]
1.10591 ++ *[0-9a-f]*: 68 f4 ld\.w r4,r4\[0x3c\]
1.10592 ++ *[0-9a-f]*: 7c 1e ld\.w lr,lr\[0x4\]
1.10593 ++ *[0-9a-f]*: 64 dd ld\.w sp,r2\[0x34\]
1.10594 ++ *[0-9a-f]*: 62 29 ld\.w r9,r1\[0x8\]
1.10595 ++ *[0-9a-f]*: 7a f5 ld\.w r5,sp\[0x3c\]
1.10596 ++
1.10597 ++[0-9a-f]* <ld_sh3>:
1.10598 ++ *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\]
1.10599 ++ *[0-9a-f]*: 98 7c ld\.sh r12,r12\[0xe\]
1.10600 ++ *[0-9a-f]*: 8a 45 ld\.sh r5,r5\[0x8\]
1.10601 ++ *[0-9a-f]*: 88 34 ld\.sh r4,r4\[0x6\]
1.10602 ++ *[0-9a-f]*: 9c 1e ld\.sh lr,lr\[0x2\]
1.10603 ++ *[0-9a-f]*: 84 44 ld\.sh r4,r2\[0x8\]
1.10604 ++ *[0-9a-f]*: 9c 5d ld\.sh sp,lr\[0xa\]
1.10605 ++ *[0-9a-f]*: 96 12 ld\.sh r2,r11\[0x2\]
1.10606 ++
1.10607 ++[0-9a-f]* <ld_uh3>:
1.10608 ++ *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\]
1.10609 ++ *[0-9a-f]*: 98 fc ld\.uh r12,r12\[0xe\]
1.10610 ++ *[0-9a-f]*: 8a c5 ld\.uh r5,r5\[0x8\]
1.10611 ++ *[0-9a-f]*: 88 b4 ld\.uh r4,r4\[0x6\]
1.10612 ++ *[0-9a-f]*: 9c 9e ld\.uh lr,lr\[0x2\]
1.10613 ++ *[0-9a-f]*: 80 da ld\.uh r10,r0\[0xa\]
1.10614 ++ *[0-9a-f]*: 96 c8 ld\.uh r8,r11\[0x8\]
1.10615 ++ *[0-9a-f]*: 84 ea ld\.uh r10,r2\[0xc\]
1.10616 ++
1.10617 ++[0-9a-f]* <st_w3>:
1.10618 ++ *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc
1.10619 ++ *[0-9a-f]*: 99 fc st\.w r12\[0x3c\],r12
1.10620 ++ *[0-9a-f]*: 8b 85 st\.w r5\[0x20\],r5
1.10621 ++ *[0-9a-f]*: 89 74 st\.w r4\[0x1c\],r4
1.10622 ++ *[0-9a-f]*: 9d 1e st\.w lr\[0x4\],lr
1.10623 ++ *[0-9a-f]*: 8f bb st\.w r7\[0x2c\],r11
1.10624 ++ *[0-9a-f]*: 85 66 st\.w r2\[0x18\],r6
1.10625 ++ *[0-9a-f]*: 89 39 st\.w r4\[0xc\],r9
1.10626 ++
1.10627 ++[0-9a-f]* <st_h3>:
1.10628 ++ *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc
1.10629 ++ *[0-9a-f]*: b8 7c st\.h r12\[0xe\],r12
1.10630 ++ *[0-9a-f]*: aa 45 st\.h r5\[0x8\],r5
1.10631 ++ *[0-9a-f]*: a8 34 st\.h r4\[0x6\],r4
1.10632 ++ *[0-9a-f]*: bc 1e st\.h lr\[0x2\],lr
1.10633 ++ *[0-9a-f]*: bc 5c st\.h lr\[0xa\],r12
1.10634 ++ *[0-9a-f]*: ac 20 st\.h r6\[0x4\],r0
1.10635 ++ *[0-9a-f]*: aa 6d st\.h r5\[0xc\],sp
1.10636 ++
1.10637 ++[0-9a-f]* <st_b3>:
1.10638 ++ *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc
1.10639 ++ *[0-9a-f]*: b8 fc st\.b r12\[0x7\],r12
1.10640 ++ *[0-9a-f]*: aa c5 st\.b r5\[0x4\],r5
1.10641 ++ *[0-9a-f]*: a8 b4 st\.b r4\[0x3\],r4
1.10642 ++ *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr
1.10643 ++ *[0-9a-f]*: b8 e9 st\.b r12\[0x6\],r9
1.10644 ++ *[0-9a-f]*: a4 be st\.b r2\[0x3\],lr
1.10645 ++ *[0-9a-f]*: a2 bb st\.b r1\[0x3\],r11
1.10646 ++
1.10647 ++[0-9a-f]* <ldd>:
1.10648 ++ *[0-9a-f]*: bf 00 ld\.d r0,pc
1.10649 ++ *[0-9a-f]*: b9 0e ld\.d lr,r12
1.10650 ++ *[0-9a-f]*: ab 08 ld\.d r8,r5
1.10651 ++ *[0-9a-f]*: a9 06 ld\.d r6,r4
1.10652 ++ *[0-9a-f]*: bd 02 ld\.d r2,lr
1.10653 ++ *[0-9a-f]*: af 0e ld\.d lr,r7
1.10654 ++ *[0-9a-f]*: a9 04 ld\.d r4,r4
1.10655 ++ *[0-9a-f]*: bf 0e ld\.d lr,pc
1.10656 ++
1.10657 ++[0-9a-f]* <ldd_postinc>:
1.10658 ++ *[0-9a-f]*: bf 01 ld\.d r0,pc\+\+
1.10659 ++ *[0-9a-f]*: b9 0f ld\.d lr,r12\+\+
1.10660 ++ *[0-9a-f]*: ab 09 ld\.d r8,r5\+\+
1.10661 ++ *[0-9a-f]*: a9 07 ld\.d r6,r4\+\+
1.10662 ++ *[0-9a-f]*: bd 03 ld\.d r2,lr\+\+
1.10663 ++ *[0-9a-f]*: ab 0f ld\.d lr,r5\+\+
1.10664 ++ *[0-9a-f]*: b7 0d ld\.d r12,r11\+\+
1.10665 ++ *[0-9a-f]*: b9 03 ld\.d r2,r12\+\+
1.10666 ++
1.10667 ++[0-9a-f]* <ldd_predec>:
1.10668 ++ *[0-9a-f]*: bf 10 ld\.d r0,--pc
1.10669 ++ *[0-9a-f]*: b9 1e ld\.d lr,--r12
1.10670 ++ *[0-9a-f]*: ab 18 ld\.d r8,--r5
1.10671 ++ *[0-9a-f]*: a9 16 ld\.d r6,--r4
1.10672 ++ *[0-9a-f]*: bd 12 ld\.d r2,--lr
1.10673 ++ *[0-9a-f]*: a1 18 ld\.d r8,--r0
1.10674 ++ *[0-9a-f]*: bf 1a ld\.d r10,--pc
1.10675 ++ *[0-9a-f]*: a9 12 ld\.d r2,--r4
1.10676 ++
1.10677 ++[0-9a-f]* <std>:
1.10678 ++ *[0-9a-f]*: bf 11 st\.d pc,r0
1.10679 ++ *[0-9a-f]*: b9 1f st\.d r12,lr
1.10680 ++ *[0-9a-f]*: ab 19 st\.d r5,r8
1.10681 ++ *[0-9a-f]*: a9 17 st\.d r4,r6
1.10682 ++ *[0-9a-f]*: bd 13 st\.d lr,r2
1.10683 ++ *[0-9a-f]*: a1 1d st\.d r0,r12
1.10684 ++ *[0-9a-f]*: bb 15 st\.d sp,r4
1.10685 ++ *[0-9a-f]*: b9 1d st\.d r12,r12
1.10686 ++
1.10687 ++[0-9a-f]* <std_postinc>:
1.10688 ++ *[0-9a-f]*: bf 20 st\.d pc\+\+,r0
1.10689 ++ *[0-9a-f]*: b9 2e st\.d r12\+\+,lr
1.10690 ++ *[0-9a-f]*: ab 28 st\.d r5\+\+,r8
1.10691 ++ *[0-9a-f]*: a9 26 st\.d r4\+\+,r6
1.10692 ++ *[0-9a-f]*: bd 22 st\.d lr\+\+,r2
1.10693 ++ *[0-9a-f]*: bb 26 st\.d sp\+\+,r6
1.10694 ++ *[0-9a-f]*: b5 26 st\.d r10\+\+,r6
1.10695 ++ *[0-9a-f]*: af 22 st\.d r7\+\+,r2
1.10696 ++
1.10697 ++[0-9a-f]* <std_predec>:
1.10698 ++ *[0-9a-f]*: bf 21 st\.d --pc,r0
1.10699 ++ *[0-9a-f]*: b9 2f st\.d --r12,lr
1.10700 ++ *[0-9a-f]*: ab 29 st\.d --r5,r8
1.10701 ++ *[0-9a-f]*: a9 27 st\.d --r4,r6
1.10702 ++ *[0-9a-f]*: bd 23 st\.d --lr,r2
1.10703 ++ *[0-9a-f]*: a7 27 st\.d --r3,r6
1.10704 ++ *[0-9a-f]*: bd 23 st\.d --lr,r2
1.10705 ++ *[0-9a-f]*: a1 25 st\.d --r0,r4
1.10706 ++
1.10707 ++[0-9a-f]* <mul>:
1.10708 ++ *[0-9a-f]*: bf 3f mul pc,pc
1.10709 ++ *[0-9a-f]*: b9 3c mul r12,r12
1.10710 ++ *[0-9a-f]*: ab 35 mul r5,r5
1.10711 ++ *[0-9a-f]*: a9 34 mul r4,r4
1.10712 ++ *[0-9a-f]*: bd 3e mul lr,lr
1.10713 ++ *[0-9a-f]*: bd 3a mul r10,lr
1.10714 ++ *[0-9a-f]*: b1 30 mul r0,r8
1.10715 ++ *[0-9a-f]*: ab 38 mul r8,r5
1.10716 ++
1.10717 ++[0-9a-f]* <asr_imm5>:
1.10718 ++ *[0-9a-f]*: a1 4f asr pc,0x0
1.10719 ++ *[0-9a-f]*: bf 5c asr r12,0x1f
1.10720 ++ *[0-9a-f]*: b1 45 asr r5,0x10
1.10721 ++ *[0-9a-f]*: af 54 asr r4,0xf
1.10722 ++ *[0-9a-f]*: a1 5e asr lr,0x1
1.10723 ++ *[0-9a-f]*: b7 56 asr r6,0x17
1.10724 ++ *[0-9a-f]*: b3 46 asr r6,0x12
1.10725 ++ *[0-9a-f]*: a9 45 asr r5,0x8
1.10726 ++
1.10727 ++[0-9a-f]* <lsl_imm5>:
1.10728 ++ *[0-9a-f]*: a1 6f lsl pc,0x0
1.10729 ++ *[0-9a-f]*: bf 7c lsl r12,0x1f
1.10730 ++ *[0-9a-f]*: b1 65 lsl r5,0x10
1.10731 ++ *[0-9a-f]*: af 74 lsl r4,0xf
1.10732 ++ *[0-9a-f]*: a1 7e lsl lr,0x1
1.10733 ++ *[0-9a-f]*: ad 7c lsl r12,0xd
1.10734 ++ *[0-9a-f]*: b1 66 lsl r6,0x10
1.10735 ++ *[0-9a-f]*: b9 71 lsl r1,0x19
1.10736 ++
1.10737 ++[0-9a-f]* <lsr_imm5>:
1.10738 ++ *[0-9a-f]*: a1 8f lsr pc,0x0
1.10739 ++ *[0-9a-f]*: bf 9c lsr r12,0x1f
1.10740 ++ *[0-9a-f]*: b1 85 lsr r5,0x10
1.10741 ++ *[0-9a-f]*: af 94 lsr r4,0xf
1.10742 ++ *[0-9a-f]*: a1 9e lsr lr,0x1
1.10743 ++ *[0-9a-f]*: a1 90 lsr r0,0x1
1.10744 ++ *[0-9a-f]*: ab 88 lsr r8,0xa
1.10745 ++ *[0-9a-f]*: bb 87 lsr r7,0x1a
1.10746 ++
1.10747 ++[0-9a-f]* <sbr>:
1.10748 ++ *[0-9a-f]*: a1 af sbr pc,0x0
1.10749 ++ *[0-9a-f]*: bf bc sbr r12,0x1f
1.10750 ++ *[0-9a-f]*: b1 a5 sbr r5,0x10
1.10751 ++ *[0-9a-f]*: af b4 sbr r4,0xf
1.10752 ++ *[0-9a-f]*: a1 be sbr lr,0x1
1.10753 ++ *[0-9a-f]*: bf b8 sbr r8,0x1f
1.10754 ++ *[0-9a-f]*: b7 a6 sbr r6,0x16
1.10755 ++ *[0-9a-f]*: b7 b1 sbr r1,0x17
1.10756 ++
1.10757 ++[0-9a-f]* <cbr>:
1.10758 ++ *[0-9a-f]*: a1 cf cbr pc,0x0
1.10759 ++ *[0-9a-f]*: bf dc cbr r12,0x1f
1.10760 ++ *[0-9a-f]*: b1 c5 cbr r5,0x10
1.10761 ++ *[0-9a-f]*: af d4 cbr r4,0xf
1.10762 ++ *[0-9a-f]*: a1 de cbr lr,0x1
1.10763 ++ *[0-9a-f]*: ab cc cbr r12,0xa
1.10764 ++ *[0-9a-f]*: b7 c7 cbr r7,0x16
1.10765 ++ *[0-9a-f]*: a9 d8 cbr r8,0x9
1.10766 ++
1.10767 ++[0-9a-f]* <brc1>:
1.10768 ++ *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*>
1.10769 ++ *[0-9a-f]*: cf f7 brpl [0-9a-f]* <.*>
1.10770 ++ *[0-9a-f]*: c8 04 brge [0-9a-f]* <.*>
1.10771 ++ *[0-9a-f]*: c7 f3 brcs [0-9a-f]* <.*>
1.10772 ++ *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*>
1.10773 ++ *[0-9a-f]*: c7 33 brcs [0-9a-f]* <.*>
1.10774 ++ *[0-9a-f]*: cf 70 breq [0-9a-f]* <.*>
1.10775 ++ *[0-9a-f]*: c0 60 breq [0-9a-f]* <.*>
1.10776 ++
1.10777 ++[0-9a-f]* <rjmp>:
1.10778 ++ *[0-9a-f]*: c0 08 rjmp [0-9a-f]* <.*>
1.10779 ++ *[0-9a-f]*: cf fb rjmp [0-9a-f]* <.*>
1.10780 ++ *[0-9a-f]*: c0 0a rjmp [0-9a-f]* <.*>
1.10781 ++ *[0-9a-f]*: cf f9 rjmp [0-9a-f]* <.*>
1.10782 ++ *[0-9a-f]*: c0 18 rjmp [0-9a-f]* <.*>
1.10783 ++ *[0-9a-f]*: c1 fa rjmp [0-9a-f]* <.*>
1.10784 ++ *[0-9a-f]*: c0 78 rjmp [0-9a-f]* <.*>
1.10785 ++ *[0-9a-f]*: cf ea rjmp [0-9a-f]* <.*>
1.10786 ++
1.10787 ++[0-9a-f]* <rcall1>:
1.10788 ++ *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*>
1.10789 ++ *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*>
1.10790 ++ *[0-9a-f]*: c0 0e rcall [0-9a-f]* <.*>
1.10791 ++ *[0-9a-f]*: cf fd rcall [0-9a-f]* <.*>
1.10792 ++ *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*>
1.10793 ++ *[0-9a-f]*: c6 cc rcall [0-9a-f]* <.*>
1.10794 ++ *[0-9a-f]*: cf 7e rcall [0-9a-f]* <.*>
1.10795 ++ *[0-9a-f]*: c1 ae rcall [0-9a-f]* <.*>
1.10796 ++
1.10797 ++[0-9a-f]* <acall>:
1.10798 ++ *[0-9a-f]*: d0 00 acall 0x0
1.10799 ++ *[0-9a-f]*: df f0 acall 0x3fc
1.10800 ++ *[0-9a-f]*: d8 00 acall 0x200
1.10801 ++ *[0-9a-f]*: d7 f0 acall 0x1fc
1.10802 ++ *[0-9a-f]*: d0 10 acall 0x4
1.10803 ++ *[0-9a-f]*: d5 90 acall 0x164
1.10804 ++ *[0-9a-f]*: d4 c0 acall 0x130
1.10805 ++ *[0-9a-f]*: d2 b0 acall 0xac
1.10806 ++
1.10807 ++[0-9a-f]* <scall>:
1.10808 ++ *[0-9a-f]*: d7 33 scall
1.10809 ++ *[0-9a-f]*: d7 33 scall
1.10810 ++ *[0-9a-f]*: d7 33 scall
1.10811 ++ *[0-9a-f]*: d7 33 scall
1.10812 ++ *[0-9a-f]*: d7 33 scall
1.10813 ++ *[0-9a-f]*: d7 33 scall
1.10814 ++ *[0-9a-f]*: d7 33 scall
1.10815 ++ *[0-9a-f]*: d7 33 scall
1.10816 ++
1.10817 ++[0-9a-f]* <popm>:
1.10818 ++ *[0-9a-f]*: d8 02 popm pc
1.10819 ++ *[0-9a-f]*: dd fa popm r0-r11,pc,r12=-1
1.10820 ++ *[0-9a-f]*: d4 02 popm lr
1.10821 ++ *[0-9a-f]*: db fa popm r0-r11,pc,r12=1
1.10822 ++ *[0-9a-f]*: d0 12 popm r0-r3
1.10823 ++ *[0-9a-f]*: d8 e2 popm r4-r10,pc
1.10824 ++ *[0-9a-f]*: d9 1a popm r0-r3,r11,pc,r12=0
1.10825 ++ *[0-9a-f]*: d7 b2 popm r0-r7,r10-r12,lr
1.10826 ++
1.10827 ++[0-9a-f]* <pushm>:
1.10828 ++ *[0-9a-f]*: d8 01 pushm pc
1.10829 ++ *[0-9a-f]*: df f1 pushm r0-r12,lr-pc
1.10830 ++ *[0-9a-f]*: d8 01 pushm pc
1.10831 ++ *[0-9a-f]*: d7 f1 pushm r0-r12,lr
1.10832 ++ *[0-9a-f]*: d0 11 pushm r0-r3
1.10833 ++ *[0-9a-f]*: dc c1 pushm r8-r10,lr-pc
1.10834 ++ *[0-9a-f]*: d0 91 pushm r0-r3,r10
1.10835 ++ *[0-9a-f]*: d2 41 pushm r8-r9,r12
1.10836 ++
1.10837 ++[0-9a-f]* <popm_n>:
1.10838 ++.*
1.10839 ++.*
1.10840 ++.*
1.10841 ++.*
1.10842 ++.*
1.10843 ++.*
1.10844 ++.*
1.10845 ++.*
1.10846 ++
1.10847 ++[0-9a-f]* <pushm_n>:
1.10848 ++.*
1.10849 ++.*
1.10850 ++.*
1.10851 ++.*
1.10852 ++.*
1.10853 ++.*
1.10854 ++.*
1.10855 ++.*
1.10856 ++
1.10857 ++[0-9a-f]* <csrfcz>:
1.10858 ++ *[0-9a-f]*: d0 03 csrfcz 0x0
1.10859 ++ *[0-9a-f]*: d1 f3 csrfcz 0x1f
1.10860 ++ *[0-9a-f]*: d1 03 csrfcz 0x10
1.10861 ++ *[0-9a-f]*: d0 f3 csrfcz 0xf
1.10862 ++ *[0-9a-f]*: d0 13 csrfcz 0x1
1.10863 ++ *[0-9a-f]*: d0 53 csrfcz 0x5
1.10864 ++ *[0-9a-f]*: d0 d3 csrfcz 0xd
1.10865 ++ *[0-9a-f]*: d1 73 csrfcz 0x17
1.10866 ++
1.10867 ++[0-9a-f]* <ssrf>:
1.10868 ++ *[0-9a-f]*: d2 03 ssrf 0x0
1.10869 ++ *[0-9a-f]*: d3 f3 ssrf 0x1f
1.10870 ++ *[0-9a-f]*: d3 03 ssrf 0x10
1.10871 ++ *[0-9a-f]*: d2 f3 ssrf 0xf
1.10872 ++ *[0-9a-f]*: d2 13 ssrf 0x1
1.10873 ++ *[0-9a-f]*: d3 d3 ssrf 0x1d
1.10874 ++ *[0-9a-f]*: d2 d3 ssrf 0xd
1.10875 ++ *[0-9a-f]*: d2 d3 ssrf 0xd
1.10876 ++
1.10877 ++[0-9a-f]* <csrf>:
1.10878 ++ *[0-9a-f]*: d4 03 csrf 0x0
1.10879 ++ *[0-9a-f]*: d5 f3 csrf 0x1f
1.10880 ++ *[0-9a-f]*: d5 03 csrf 0x10
1.10881 ++ *[0-9a-f]*: d4 f3 csrf 0xf
1.10882 ++ *[0-9a-f]*: d4 13 csrf 0x1
1.10883 ++ *[0-9a-f]*: d4 a3 csrf 0xa
1.10884 ++ *[0-9a-f]*: d4 f3 csrf 0xf
1.10885 ++ *[0-9a-f]*: d4 b3 csrf 0xb
1.10886 ++
1.10887 ++[0-9a-f]* <rete>:
1.10888 ++ *[0-9a-f]*: d6 03 rete
1.10889 ++
1.10890 ++[0-9a-f]* <rets>:
1.10891 ++ *[0-9a-f]*: d6 13 rets
1.10892 ++
1.10893 ++[0-9a-f]* <retd>:
1.10894 ++ *[0-9a-f]*: d6 23 retd
1.10895 ++
1.10896 ++[0-9a-f]* <retj>:
1.10897 ++ *[0-9a-f]*: d6 33 retj
1.10898 ++
1.10899 ++[0-9a-f]* <tlbr>:
1.10900 ++ *[0-9a-f]*: d6 43 tlbr
1.10901 ++
1.10902 ++[0-9a-f]* <tlbs>:
1.10903 ++ *[0-9a-f]*: d6 53 tlbs
1.10904 ++
1.10905 ++[0-9a-f]* <tlbw>:
1.10906 ++ *[0-9a-f]*: d6 63 tlbw
1.10907 ++
1.10908 ++[0-9a-f]* <breakpoint>:
1.10909 ++ *[0-9a-f]*: d6 73 breakpoint
1.10910 ++
1.10911 ++[0-9a-f]* <incjosp>:
1.10912 ++ *[0-9a-f]*: d6 83 incjosp 1
1.10913 ++ *[0-9a-f]*: d6 93 incjosp 2
1.10914 ++ *[0-9a-f]*: d6 a3 incjosp 3
1.10915 ++ *[0-9a-f]*: d6 b3 incjosp 4
1.10916 ++ *[0-9a-f]*: d6 c3 incjosp -4
1.10917 ++ *[0-9a-f]*: d6 d3 incjosp -3
1.10918 ++ *[0-9a-f]*: d6 e3 incjosp -2
1.10919 ++ *[0-9a-f]*: d6 f3 incjosp -1
1.10920 ++
1.10921 ++[0-9a-f]* <nop>:
1.10922 ++ *[0-9a-f]*: d7 03 nop
1.10923 ++
1.10924 ++[0-9a-f]* <popjc>:
1.10925 ++ *[0-9a-f]*: d7 13 popjc
1.10926 ++
1.10927 ++[0-9a-f]* <pushjc>:
1.10928 ++ *[0-9a-f]*: d7 23 pushjc
1.10929 ++
1.10930 ++[0-9a-f]* <add2>:
1.10931 ++ *[0-9a-f]*: fe 0f 00 0f add pc,pc,pc
1.10932 ++ *[0-9a-f]*: f8 0c 00 3c add r12,r12,r12<<0x3
1.10933 ++ *[0-9a-f]*: ea 05 00 25 add r5,r5,r5<<0x2
1.10934 ++ *[0-9a-f]*: e8 04 00 14 add r4,r4,r4<<0x1
1.10935 ++ *[0-9a-f]*: fc 0e 00 1e add lr,lr,lr<<0x1
1.10936 ++ *[0-9a-f]*: f8 00 00 10 add r0,r12,r0<<0x1
1.10937 ++ *[0-9a-f]*: f8 04 00 09 add r9,r12,r4
1.10938 ++ *[0-9a-f]*: f8 07 00 2c add r12,r12,r7<<0x2
1.10939 ++
1.10940 ++[0-9a-f]* <sub2>:
1.10941 ++ *[0-9a-f]*: fe 0f 01 0f sub pc,pc,pc
1.10942 ++ *[0-9a-f]*: f8 0c 01 3c sub r12,r12,r12<<0x3
1.10943 ++ *[0-9a-f]*: ea 05 01 25 sub r5,r5,r5<<0x2
1.10944 ++ *[0-9a-f]*: e8 04 01 14 sub r4,r4,r4<<0x1
1.10945 ++ *[0-9a-f]*: fc 0e 01 1e sub lr,lr,lr<<0x1
1.10946 ++ *[0-9a-f]*: e6 04 01 0d sub sp,r3,r4
1.10947 ++ *[0-9a-f]*: ee 03 01 03 sub r3,r7,r3
1.10948 ++ *[0-9a-f]*: f4 0d 01 1d sub sp,r10,sp<<0x1
1.10949 ++
1.10950 ++[0-9a-f]* <divu>:
1.10951 ++ *[0-9a-f]*: fe 0f 0d 0f divu pc,pc,pc
1.10952 ++ *[0-9a-f]*: f8 0c 0d 0c divu r12,r12,r12
1.10953 ++ *[0-9a-f]*: ea 05 0d 05 divu r5,r5,r5
1.10954 ++ *[0-9a-f]*: e8 04 0d 04 divu r4,r4,r4
1.10955 ++ *[0-9a-f]*: fc 0e 0d 0e divu lr,lr,lr
1.10956 ++ *[0-9a-f]*: e8 0f 0d 0d divu sp,r4,pc
1.10957 ++ *[0-9a-f]*: ea 0d 0d 05 divu r5,r5,sp
1.10958 ++ *[0-9a-f]*: fa 00 0d 0a divu r10,sp,r0
1.10959 ++
1.10960 ++[0-9a-f]* <addhh_w>:
1.10961 ++ *[0-9a-f]*: fe 0f 0e 0f addhh\.w pc,pc:b,pc:b
1.10962 ++ *[0-9a-f]*: f8 0c 0e 3c addhh\.w r12,r12:t,r12:t
1.10963 ++ *[0-9a-f]*: ea 05 0e 35 addhh\.w r5,r5:t,r5:t
1.10964 ++ *[0-9a-f]*: e8 04 0e 04 addhh\.w r4,r4:b,r4:b
1.10965 ++ *[0-9a-f]*: fc 0e 0e 3e addhh\.w lr,lr:t,lr:t
1.10966 ++ *[0-9a-f]*: e0 03 0e 00 addhh\.w r0,r0:b,r3:b
1.10967 ++ *[0-9a-f]*: f8 07 0e 2e addhh\.w lr,r12:t,r7:b
1.10968 ++ *[0-9a-f]*: f4 02 0e 23 addhh\.w r3,r10:t,r2:b
1.10969 ++
1.10970 ++[0-9a-f]* <subhh_w>:
1.10971 ++ *[0-9a-f]*: fe 0f 0f 0f subhh\.w pc,pc:b,pc:b
1.10972 ++ *[0-9a-f]*: f8 0c 0f 3c subhh\.w r12,r12:t,r12:t
1.10973 ++ *[0-9a-f]*: ea 05 0f 35 subhh\.w r5,r5:t,r5:t
1.10974 ++ *[0-9a-f]*: e8 04 0f 04 subhh\.w r4,r4:b,r4:b
1.10975 ++ *[0-9a-f]*: fc 0e 0f 3e subhh\.w lr,lr:t,lr:t
1.10976 ++ *[0-9a-f]*: e2 07 0f 2a subhh\.w r10,r1:t,r7:b
1.10977 ++ *[0-9a-f]*: f4 0e 0f 3f subhh\.w pc,r10:t,lr:t
1.10978 ++ *[0-9a-f]*: e0 0c 0f 23 subhh\.w r3,r0:t,r12:b
1.10979 ++
1.10980 ++[0-9a-f]* <adc>:
1.10981 ++ *[0-9a-f]*: fe 0f 00 4f adc pc,pc,pc
1.10982 ++ *[0-9a-f]*: f8 0c 00 4c adc r12,r12,r12
1.10983 ++ *[0-9a-f]*: ea 05 00 45 adc r5,r5,r5
1.10984 ++ *[0-9a-f]*: e8 04 00 44 adc r4,r4,r4
1.10985 ++ *[0-9a-f]*: fc 0e 00 4e adc lr,lr,lr
1.10986 ++ *[0-9a-f]*: e0 07 00 44 adc r4,r0,r7
1.10987 ++ *[0-9a-f]*: e8 03 00 4d adc sp,r4,r3
1.10988 ++ *[0-9a-f]*: f8 00 00 42 adc r2,r12,r0
1.10989 ++
1.10990 ++[0-9a-f]* <sbc>:
1.10991 ++ *[0-9a-f]*: fe 0f 01 4f sbc pc,pc,pc
1.10992 ++ *[0-9a-f]*: f8 0c 01 4c sbc r12,r12,r12
1.10993 ++ *[0-9a-f]*: ea 05 01 45 sbc r5,r5,r5
1.10994 ++ *[0-9a-f]*: e8 04 01 44 sbc r4,r4,r4
1.10995 ++ *[0-9a-f]*: fc 0e 01 4e sbc lr,lr,lr
1.10996 ++ *[0-9a-f]*: ee 09 01 46 sbc r6,r7,r9
1.10997 ++ *[0-9a-f]*: f0 05 01 40 sbc r0,r8,r5
1.10998 ++ *[0-9a-f]*: e0 04 01 41 sbc r1,r0,r4
1.10999 ++
1.11000 ++[0-9a-f]* <mul_2>:
1.11001 ++ *[0-9a-f]*: fe 0f 02 4f mul pc,pc,pc
1.11002 ++ *[0-9a-f]*: f8 0c 02 4c mul r12,r12,r12
1.11003 ++ *[0-9a-f]*: ea 05 02 45 mul r5,r5,r5
1.11004 ++ *[0-9a-f]*: e8 04 02 44 mul r4,r4,r4
1.11005 ++ *[0-9a-f]*: fc 0e 02 4e mul lr,lr,lr
1.11006 ++ *[0-9a-f]*: e0 00 02 4f mul pc,r0,r0
1.11007 ++ *[0-9a-f]*: fe 0e 02 48 mul r8,pc,lr
1.11008 ++ *[0-9a-f]*: f8 0f 02 44 mul r4,r12,pc
1.11009 ++
1.11010 ++[0-9a-f]* <mac>:
1.11011 ++ *[0-9a-f]*: fe 0f 03 4f mac pc,pc,pc
1.11012 ++ *[0-9a-f]*: f8 0c 03 4c mac r12,r12,r12
1.11013 ++ *[0-9a-f]*: ea 05 03 45 mac r5,r5,r5
1.11014 ++ *[0-9a-f]*: e8 04 03 44 mac r4,r4,r4
1.11015 ++ *[0-9a-f]*: fc 0e 03 4e mac lr,lr,lr
1.11016 ++ *[0-9a-f]*: e8 00 03 4a mac r10,r4,r0
1.11017 ++ *[0-9a-f]*: fc 00 03 47 mac r7,lr,r0
1.11018 ++ *[0-9a-f]*: f2 0c 03 42 mac r2,r9,r12
1.11019 ++
1.11020 ++[0-9a-f]* <mulsd>:
1.11021 ++ *[0-9a-f]*: fe 0f 04 4f muls\.d pc,pc,pc
1.11022 ++ *[0-9a-f]*: f8 0c 04 4c muls\.d r12,r12,r12
1.11023 ++ *[0-9a-f]*: ea 05 04 45 muls\.d r5,r5,r5
1.11024 ++ *[0-9a-f]*: e8 04 04 44 muls\.d r4,r4,r4
1.11025 ++ *[0-9a-f]*: fc 0e 04 4e muls\.d lr,lr,lr
1.11026 ++ *[0-9a-f]*: f0 0e 04 42 muls\.d r2,r8,lr
1.11027 ++ *[0-9a-f]*: e0 0b 04 44 muls\.d r4,r0,r11
1.11028 ++ *[0-9a-f]*: fc 06 04 45 muls\.d r5,lr,r6
1.11029 ++
1.11030 ++[0-9a-f]* <macsd>:
1.11031 ++ *[0-9a-f]*: fe 0f 05 40 macs\.d r0,pc,pc
1.11032 ++ *[0-9a-f]*: f8 0c 05 4e macs\.d lr,r12,r12
1.11033 ++ *[0-9a-f]*: ea 05 05 48 macs\.d r8,r5,r5
1.11034 ++ *[0-9a-f]*: e8 04 05 46 macs\.d r6,r4,r4
1.11035 ++ *[0-9a-f]*: fc 0e 05 42 macs\.d r2,lr,lr
1.11036 ++ *[0-9a-f]*: e2 09 05 48 macs\.d r8,r1,r9
1.11037 ++ *[0-9a-f]*: f0 08 05 4e macs\.d lr,r8,r8
1.11038 ++ *[0-9a-f]*: e6 0c 05 44 macs\.d r4,r3,r12
1.11039 ++
1.11040 ++[0-9a-f]* <mulud>:
1.11041 ++ *[0-9a-f]*: fe 0f 06 40 mulu\.d r0,pc,pc
1.11042 ++ *[0-9a-f]*: f8 0c 06 4e mulu\.d lr,r12,r12
1.11043 ++ *[0-9a-f]*: ea 05 06 48 mulu\.d r8,r5,r5
1.11044 ++ *[0-9a-f]*: e8 04 06 46 mulu\.d r6,r4,r4
1.11045 ++ *[0-9a-f]*: fc 0e 06 42 mulu\.d r2,lr,lr
1.11046 ++ *[0-9a-f]*: ea 00 06 46 mulu\.d r6,r5,r0
1.11047 ++ *[0-9a-f]*: ec 01 06 44 mulu\.d r4,r6,r1
1.11048 ++ *[0-9a-f]*: f0 02 06 48 mulu\.d r8,r8,r2
1.11049 ++
1.11050 ++[0-9a-f]* <macud>:
1.11051 ++ *[0-9a-f]*: fe 0f 07 40 macu\.d r0,pc,pc
1.11052 ++ *[0-9a-f]*: f8 0c 07 4e macu\.d lr,r12,r12
1.11053 ++ *[0-9a-f]*: ea 05 07 48 macu\.d r8,r5,r5
1.11054 ++ *[0-9a-f]*: e8 04 07 46 macu\.d r6,r4,r4
1.11055 ++ *[0-9a-f]*: fc 0e 07 42 macu\.d r2,lr,lr
1.11056 ++ *[0-9a-f]*: fa 0b 07 46 macu\.d r6,sp,r11
1.11057 ++ *[0-9a-f]*: e8 08 07 42 macu\.d r2,r4,r8
1.11058 ++ *[0-9a-f]*: f4 09 07 46 macu\.d r6,r10,r9
1.11059 ++
1.11060 ++[0-9a-f]* <asr_1>:
1.11061 ++ *[0-9a-f]*: fe 0f 08 4f asr pc,pc,pc
1.11062 ++ *[0-9a-f]*: f8 0c 08 4c asr r12,r12,r12
1.11063 ++ *[0-9a-f]*: ea 05 08 45 asr r5,r5,r5
1.11064 ++ *[0-9a-f]*: e8 04 08 44 asr r4,r4,r4
1.11065 ++ *[0-9a-f]*: fc 0e 08 4e asr lr,lr,lr
1.11066 ++ *[0-9a-f]*: ec 0f 08 4f asr pc,r6,pc
1.11067 ++ *[0-9a-f]*: ec 0c 08 40 asr r0,r6,r12
1.11068 ++ *[0-9a-f]*: fa 00 08 44 asr r4,sp,r0
1.11069 ++
1.11070 ++[0-9a-f]* <lsl_1>:
1.11071 ++ *[0-9a-f]*: fe 0f 09 4f lsl pc,pc,pc
1.11072 ++ *[0-9a-f]*: f8 0c 09 4c lsl r12,r12,r12
1.11073 ++ *[0-9a-f]*: ea 05 09 45 lsl r5,r5,r5
1.11074 ++ *[0-9a-f]*: e8 04 09 44 lsl r4,r4,r4
1.11075 ++ *[0-9a-f]*: fc 0e 09 4e lsl lr,lr,lr
1.11076 ++ *[0-9a-f]*: ea 0e 09 4e lsl lr,r5,lr
1.11077 ++ *[0-9a-f]*: fe 03 09 45 lsl r5,pc,r3
1.11078 ++ *[0-9a-f]*: fe 09 09 41 lsl r1,pc,r9
1.11079 ++
1.11080 ++[0-9a-f]* <lsr_1>:
1.11081 ++ *[0-9a-f]*: fe 0f 0a 4f lsr pc,pc,pc
1.11082 ++ *[0-9a-f]*: f8 0c 0a 4c lsr r12,r12,r12
1.11083 ++ *[0-9a-f]*: ea 05 0a 45 lsr r5,r5,r5
1.11084 ++ *[0-9a-f]*: e8 04 0a 44 lsr r4,r4,r4
1.11085 ++ *[0-9a-f]*: fc 0e 0a 4e lsr lr,lr,lr
1.11086 ++ *[0-9a-f]*: e8 01 0a 42 lsr r2,r4,r1
1.11087 ++ *[0-9a-f]*: e2 06 0a 45 lsr r5,r1,r6
1.11088 ++ *[0-9a-f]*: ec 07 0a 4d lsr sp,r6,r7
1.11089 ++
1.11090 ++[0-9a-f]* <xchg>:
1.11091 ++ *[0-9a-f]*: fe 0f 0b 4f xchg pc,pc,pc
1.11092 ++ *[0-9a-f]*: f8 0c 0b 4c xchg r12,r12,r12
1.11093 ++ *[0-9a-f]*: ea 05 0b 45 xchg r5,r5,r5
1.11094 ++ *[0-9a-f]*: e8 04 0b 44 xchg r4,r4,r4
1.11095 ++ *[0-9a-f]*: fc 0e 0b 4e xchg lr,lr,lr
1.11096 ++ *[0-9a-f]*: e8 0d 0b 4e xchg lr,r4,sp
1.11097 ++ *[0-9a-f]*: ea 0c 0b 41 xchg r1,r5,r12
1.11098 ++ *[0-9a-f]*: f8 00 0b 4e xchg lr,r12,r0
1.11099 ++
1.11100 ++[0-9a-f]* <max>:
1.11101 ++ *[0-9a-f]*: fe 0f 0c 4f max pc,pc,pc
1.11102 ++ *[0-9a-f]*: f8 0c 0c 4c max r12,r12,r12
1.11103 ++ *[0-9a-f]*: ea 05 0c 45 max r5,r5,r5
1.11104 ++ *[0-9a-f]*: e8 04 0c 44 max r4,r4,r4
1.11105 ++ *[0-9a-f]*: fc 0e 0c 4e max lr,lr,lr
1.11106 ++ *[0-9a-f]*: e4 0d 0c 4e max lr,r2,sp
1.11107 ++ *[0-9a-f]*: f4 09 0c 44 max r4,r10,r9
1.11108 ++ *[0-9a-f]*: f2 0e 0c 4e max lr,r9,lr
1.11109 ++
1.11110 ++[0-9a-f]* <min>:
1.11111 ++ *[0-9a-f]*: fe 0f 0d 4f min pc,pc,pc
1.11112 ++ *[0-9a-f]*: f8 0c 0d 4c min r12,r12,r12
1.11113 ++ *[0-9a-f]*: ea 05 0d 45 min r5,r5,r5
1.11114 ++ *[0-9a-f]*: e8 04 0d 44 min r4,r4,r4
1.11115 ++ *[0-9a-f]*: fc 0e 0d 4e min lr,lr,lr
1.11116 ++ *[0-9a-f]*: ee 08 0d 49 min r9,r7,r8
1.11117 ++ *[0-9a-f]*: ea 05 0d 4d min sp,r5,r5
1.11118 ++ *[0-9a-f]*: e2 04 0d 44 min r4,r1,r4
1.11119 ++
1.11120 ++[0-9a-f]* <addabs>:
1.11121 ++ *[0-9a-f]*: fe 0f 0e 4f addabs pc,pc,pc
1.11122 ++ *[0-9a-f]*: f8 0c 0e 4c addabs r12,r12,r12
1.11123 ++ *[0-9a-f]*: ea 05 0e 45 addabs r5,r5,r5
1.11124 ++ *[0-9a-f]*: e8 04 0e 44 addabs r4,r4,r4
1.11125 ++ *[0-9a-f]*: fc 0e 0e 4e addabs lr,lr,lr
1.11126 ++ *[0-9a-f]*: f4 00 0e 47 addabs r7,r10,r0
1.11127 ++ *[0-9a-f]*: f2 07 0e 49 addabs r9,r9,r7
1.11128 ++ *[0-9a-f]*: f0 0c 0e 42 addabs r2,r8,r12
1.11129 ++
1.11130 ++[0-9a-f]* <mulnhh_w>:
1.11131 ++ *[0-9a-f]*: fe 0f 01 8f mulnhh\.w pc,pc:b,pc:b
1.11132 ++ *[0-9a-f]*: f8 0c 01 bc mulnhh\.w r12,r12:t,r12:t
1.11133 ++ *[0-9a-f]*: ea 05 01 b5 mulnhh\.w r5,r5:t,r5:t
1.11134 ++ *[0-9a-f]*: e8 04 01 84 mulnhh\.w r4,r4:b,r4:b
1.11135 ++ *[0-9a-f]*: fc 0e 01 be mulnhh\.w lr,lr:t,lr:t
1.11136 ++ *[0-9a-f]*: fa 09 01 ab mulnhh\.w r11,sp:t,r9:b
1.11137 ++ *[0-9a-f]*: e8 0e 01 9d mulnhh\.w sp,r4:b,lr:t
1.11138 ++ *[0-9a-f]*: e4 0b 01 ac mulnhh\.w r12,r2:t,r11:b
1.11139 ++
1.11140 ++[0-9a-f]* <mulnwh_d>:
1.11141 ++ *[0-9a-f]*: fe 0f 02 80 mulnwh\.d r0,pc,pc:b
1.11142 ++ *[0-9a-f]*: f8 0c 02 9e mulnwh\.d lr,r12,r12:t
1.11143 ++ *[0-9a-f]*: ea 05 02 98 mulnwh\.d r8,r5,r5:t
1.11144 ++ *[0-9a-f]*: e8 04 02 86 mulnwh\.d r6,r4,r4:b
1.11145 ++ *[0-9a-f]*: fc 0e 02 92 mulnwh\.d r2,lr,lr:t
1.11146 ++ *[0-9a-f]*: e6 02 02 9e mulnwh\.d lr,r3,r2:t
1.11147 ++ *[0-9a-f]*: ea 09 02 84 mulnwh\.d r4,r5,r9:b
1.11148 ++ *[0-9a-f]*: e8 04 02 9c mulnwh\.d r12,r4,r4:t
1.11149 ++
1.11150 ++[0-9a-f]* <machh_w>:
1.11151 ++ *[0-9a-f]*: fe 0f 04 8f machh\.w pc,pc:b,pc:b
1.11152 ++ *[0-9a-f]*: f8 0c 04 bc machh\.w r12,r12:t,r12:t
1.11153 ++ *[0-9a-f]*: ea 05 04 b5 machh\.w r5,r5:t,r5:t
1.11154 ++ *[0-9a-f]*: e8 04 04 84 machh\.w r4,r4:b,r4:b
1.11155 ++ *[0-9a-f]*: fc 0e 04 be machh\.w lr,lr:t,lr:t
1.11156 ++ *[0-9a-f]*: ea 01 04 9e machh\.w lr,r5:b,r1:t
1.11157 ++ *[0-9a-f]*: ec 07 04 89 machh\.w r9,r6:b,r7:b
1.11158 ++ *[0-9a-f]*: fc 0c 04 a5 machh\.w r5,lr:t,r12:b
1.11159 ++
1.11160 ++[0-9a-f]* <machh_d>:
1.11161 ++ *[0-9a-f]*: fe 0f 05 80 machh\.d r0,pc:b,pc:b
1.11162 ++ *[0-9a-f]*: f8 0c 05 be machh\.d lr,r12:t,r12:t
1.11163 ++ *[0-9a-f]*: ea 05 05 b8 machh\.d r8,r5:t,r5:t
1.11164 ++ *[0-9a-f]*: e8 04 05 86 machh\.d r6,r4:b,r4:b
1.11165 ++ *[0-9a-f]*: fc 0e 05 b2 machh\.d r2,lr:t,lr:t
1.11166 ++ *[0-9a-f]*: e0 08 05 8a machh\.d r10,r0:b,r8:b
1.11167 ++ *[0-9a-f]*: e8 05 05 9e machh\.d lr,r4:b,r5:t
1.11168 ++ *[0-9a-f]*: e0 04 05 98 machh\.d r8,r0:b,r4:t
1.11169 ++
1.11170 ++[0-9a-f]* <macsathh_w>:
1.11171 ++ *[0-9a-f]*: fe 0f 06 8f macsathh\.w pc,pc:b,pc:b
1.11172 ++ *[0-9a-f]*: f8 0c 06 bc macsathh\.w r12,r12:t,r12:t
1.11173 ++ *[0-9a-f]*: ea 05 06 b5 macsathh\.w r5,r5:t,r5:t
1.11174 ++ *[0-9a-f]*: e8 04 06 84 macsathh\.w r4,r4:b,r4:b
1.11175 ++ *[0-9a-f]*: fc 0e 06 be macsathh\.w lr,lr:t,lr:t
1.11176 ++ *[0-9a-f]*: ee 0f 06 b7 macsathh\.w r7,r7:t,pc:t
1.11177 ++ *[0-9a-f]*: e4 04 06 a4 macsathh\.w r4,r2:t,r4:b
1.11178 ++ *[0-9a-f]*: f0 03 06 b4 macsathh\.w r4,r8:t,r3:t
1.11179 ++
1.11180 ++[0-9a-f]* <mulhh_w>:
1.11181 ++ *[0-9a-f]*: fe 0f 07 8f mulhh\.w pc,pc:b,pc:b
1.11182 ++ *[0-9a-f]*: f8 0c 07 bc mulhh\.w r12,r12:t,r12:t
1.11183 ++ *[0-9a-f]*: ea 05 07 b5 mulhh\.w r5,r5:t,r5:t
1.11184 ++ *[0-9a-f]*: e8 04 07 84 mulhh\.w r4,r4:b,r4:b
1.11185 ++ *[0-9a-f]*: fc 0e 07 be mulhh\.w lr,lr:t,lr:t
1.11186 ++ *[0-9a-f]*: e8 09 07 a7 mulhh\.w r7,r4:t,r9:b
1.11187 ++ *[0-9a-f]*: e6 07 07 bf mulhh\.w pc,r3:t,r7:t
1.11188 ++ *[0-9a-f]*: e8 09 07 9f mulhh\.w pc,r4:b,r9:t
1.11189 ++
1.11190 ++[0-9a-f]* <mulsathh_h>:
1.11191 ++ *[0-9a-f]*: fe 0f 08 8f mulsathh\.h pc,pc:b,pc:b
1.11192 ++ *[0-9a-f]*: f8 0c 08 bc mulsathh\.h r12,r12:t,r12:t
1.11193 ++ *[0-9a-f]*: ea 05 08 b5 mulsathh\.h r5,r5:t,r5:t
1.11194 ++ *[0-9a-f]*: e8 04 08 84 mulsathh\.h r4,r4:b,r4:b
1.11195 ++ *[0-9a-f]*: fc 0e 08 be mulsathh\.h lr,lr:t,lr:t
1.11196 ++ *[0-9a-f]*: e2 0d 08 83 mulsathh\.h r3,r1:b,sp:b
1.11197 ++ *[0-9a-f]*: fc 0b 08 ab mulsathh\.h r11,lr:t,r11:b
1.11198 ++ *[0-9a-f]*: f0 0b 08 98 mulsathh\.h r8,r8:b,r11:t
1.11199 ++
1.11200 ++[0-9a-f]* <mulsathh_w>:
1.11201 ++ *[0-9a-f]*: fe 0f 09 8f mulsathh\.w pc,pc:b,pc:b
1.11202 ++ *[0-9a-f]*: f8 0c 09 bc mulsathh\.w r12,r12:t,r12:t
1.11203 ++ *[0-9a-f]*: ea 05 09 b5 mulsathh\.w r5,r5:t,r5:t
1.11204 ++ *[0-9a-f]*: e8 04 09 84 mulsathh\.w r4,r4:b,r4:b
1.11205 ++ *[0-9a-f]*: fc 0e 09 be mulsathh\.w lr,lr:t,lr:t
1.11206 ++ *[0-9a-f]*: f6 06 09 ae mulsathh\.w lr,r11:t,r6:b
1.11207 ++ *[0-9a-f]*: ec 07 09 96 mulsathh\.w r6,r6:b,r7:t
1.11208 ++ *[0-9a-f]*: e4 03 09 8a mulsathh\.w r10,r2:b,r3:b
1.11209 ++
1.11210 ++[0-9a-f]* <mulsatrndhh_h>:
1.11211 ++ *[0-9a-f]*: fe 0f 0a 8f mulsatrndhh\.h pc,pc:b,pc:b
1.11212 ++ *[0-9a-f]*: f8 0c 0a bc mulsatrndhh\.h r12,r12:t,r12:t
1.11213 ++ *[0-9a-f]*: ea 05 0a b5 mulsatrndhh\.h r5,r5:t,r5:t
1.11214 ++ *[0-9a-f]*: e8 04 0a 84 mulsatrndhh\.h r4,r4:b,r4:b
1.11215 ++ *[0-9a-f]*: fc 0e 0a be mulsatrndhh\.h lr,lr:t,lr:t
1.11216 ++ *[0-9a-f]*: ec 09 0a 8b mulsatrndhh\.h r11,r6:b,r9:b
1.11217 ++ *[0-9a-f]*: e6 08 0a 9b mulsatrndhh\.h r11,r3:b,r8:t
1.11218 ++ *[0-9a-f]*: fa 07 0a b5 mulsatrndhh\.h r5,sp:t,r7:t
1.11219 ++
1.11220 ++[0-9a-f]* <mulsatrndwh_w>:
1.11221 ++ *[0-9a-f]*: fe 0f 0b 8f mulsatrndwh\.w pc,pc,pc:b
1.11222 ++ *[0-9a-f]*: f8 0c 0b 9c mulsatrndwh\.w r12,r12,r12:t
1.11223 ++ *[0-9a-f]*: ea 05 0b 95 mulsatrndwh\.w r5,r5,r5:t
1.11224 ++ *[0-9a-f]*: e8 04 0b 84 mulsatrndwh\.w r4,r4,r4:b
1.11225 ++ *[0-9a-f]*: fc 0e 0b 9e mulsatrndwh\.w lr,lr,lr:t
1.11226 ++ *[0-9a-f]*: f8 00 0b 85 mulsatrndwh\.w r5,r12,r0:b
1.11227 ++ *[0-9a-f]*: f4 0f 0b 87 mulsatrndwh\.w r7,r10,pc:b
1.11228 ++ *[0-9a-f]*: f0 05 0b 9a mulsatrndwh\.w r10,r8,r5:t
1.11229 ++
1.11230 ++[0-9a-f]* <macwh_d>:
1.11231 ++ *[0-9a-f]*: fe 0f 0c 80 macwh\.d r0,pc,pc:b
1.11232 ++ *[0-9a-f]*: f8 0c 0c 9e macwh\.d lr,r12,r12:t
1.11233 ++ *[0-9a-f]*: ea 05 0c 98 macwh\.d r8,r5,r5:t
1.11234 ++ *[0-9a-f]*: e8 04 0c 86 macwh\.d r6,r4,r4:b
1.11235 ++ *[0-9a-f]*: fc 0e 0c 92 macwh\.d r2,lr,lr:t
1.11236 ++ *[0-9a-f]*: f4 0c 0c 94 macwh\.d r4,r10,r12:t
1.11237 ++ *[0-9a-f]*: ee 0d 0c 84 macwh\.d r4,r7,sp:b
1.11238 ++ *[0-9a-f]*: f2 0b 0c 8e macwh\.d lr,r9,r11:b
1.11239 ++
1.11240 ++[0-9a-f]* <mulwh_d>:
1.11241 ++ *[0-9a-f]*: fe 0f 0d 80 mulwh\.d r0,pc,pc:b
1.11242 ++ *[0-9a-f]*: f8 0c 0d 9e mulwh\.d lr,r12,r12:t
1.11243 ++ *[0-9a-f]*: ea 05 0d 98 mulwh\.d r8,r5,r5:t
1.11244 ++ *[0-9a-f]*: e8 04 0d 86 mulwh\.d r6,r4,r4:b
1.11245 ++ *[0-9a-f]*: fc 0e 0d 92 mulwh\.d r2,lr,lr:t
1.11246 ++ *[0-9a-f]*: ea 01 0d 8c mulwh\.d r12,r5,r1:b
1.11247 ++ *[0-9a-f]*: e2 03 0d 90 mulwh\.d r0,r1,r3:t
1.11248 ++ *[0-9a-f]*: f2 02 0d 80 mulwh\.d r0,r9,r2:b
1.11249 ++
1.11250 ++[0-9a-f]* <mulsatwh_w>:
1.11251 ++ *[0-9a-f]*: fe 0f 0e 8f mulsatwh\.w pc,pc,pc:b
1.11252 ++ *[0-9a-f]*: f8 0c 0e 9c mulsatwh\.w r12,r12,r12:t
1.11253 ++ *[0-9a-f]*: ea 05 0e 95 mulsatwh\.w r5,r5,r5:t
1.11254 ++ *[0-9a-f]*: e8 04 0e 84 mulsatwh\.w r4,r4,r4:b
1.11255 ++ *[0-9a-f]*: fc 0e 0e 9e mulsatwh\.w lr,lr,lr:t
1.11256 ++ *[0-9a-f]*: fe 0a 0e 9b mulsatwh\.w r11,pc,r10:t
1.11257 ++ *[0-9a-f]*: f8 09 0e 9d mulsatwh\.w sp,r12,r9:t
1.11258 ++ *[0-9a-f]*: e6 02 0e 90 mulsatwh\.w r0,r3,r2:t
1.11259 ++
1.11260 ++[0-9a-f]* <ldw7>:
1.11261 ++ *[0-9a-f]*: fe 0f 0f 8f ld\.w pc,pc\[pc:b<<2\]
1.11262 ++ *[0-9a-f]*: f8 0c 0f bc ld\.w r12,r12\[r12:t<<2\]
1.11263 ++ *[0-9a-f]*: ea 05 0f a5 ld\.w r5,r5\[r5:u<<2\]
1.11264 ++ *[0-9a-f]*: e8 04 0f 94 ld\.w r4,r4\[r4:l<<2\]
1.11265 ++ *[0-9a-f]*: fc 0e 0f 9e ld\.w lr,lr\[lr:l<<2\]
1.11266 ++ *[0-9a-f]*: f4 06 0f 99 ld\.w r9,r10\[r6:l<<2\]
1.11267 ++ *[0-9a-f]*: f4 0a 0f 82 ld\.w r2,r10\[r10:b<<2\]
1.11268 ++ *[0-9a-f]*: ea 0f 0f 8b ld\.w r11,r5\[pc:b<<2\]
1.11269 ++
1.11270 ++[0-9a-f]* <satadd_w>:
1.11271 ++ *[0-9a-f]*: fe 0f 00 cf satadd\.w pc,pc,pc
1.11272 ++ *[0-9a-f]*: f8 0c 00 cc satadd\.w r12,r12,r12
1.11273 ++ *[0-9a-f]*: ea 05 00 c5 satadd\.w r5,r5,r5
1.11274 ++ *[0-9a-f]*: e8 04 00 c4 satadd\.w r4,r4,r4
1.11275 ++ *[0-9a-f]*: fc 0e 00 ce satadd\.w lr,lr,lr
1.11276 ++ *[0-9a-f]*: f0 0b 00 c4 satadd\.w r4,r8,r11
1.11277 ++ *[0-9a-f]*: f8 06 00 c3 satadd\.w r3,r12,r6
1.11278 ++ *[0-9a-f]*: fc 09 00 c3 satadd\.w r3,lr,r9
1.11279 ++
1.11280 ++[0-9a-f]* <satsub_w1>:
1.11281 ++ *[0-9a-f]*: fe 0f 01 cf satsub\.w pc,pc,pc
1.11282 ++ *[0-9a-f]*: f8 0c 01 cc satsub\.w r12,r12,r12
1.11283 ++ *[0-9a-f]*: ea 05 01 c5 satsub\.w r5,r5,r5
1.11284 ++ *[0-9a-f]*: e8 04 01 c4 satsub\.w r4,r4,r4
1.11285 ++ *[0-9a-f]*: fc 0e 01 ce satsub\.w lr,lr,lr
1.11286 ++ *[0-9a-f]*: fa 00 01 c8 satsub\.w r8,sp,r0
1.11287 ++ *[0-9a-f]*: f0 04 01 c9 satsub\.w r9,r8,r4
1.11288 ++ *[0-9a-f]*: fc 02 01 cf satsub\.w pc,lr,r2
1.11289 ++
1.11290 ++[0-9a-f]* <satadd_h>:
1.11291 ++ *[0-9a-f]*: fe 0f 02 cf satadd\.h pc,pc,pc
1.11292 ++ *[0-9a-f]*: f8 0c 02 cc satadd\.h r12,r12,r12
1.11293 ++ *[0-9a-f]*: ea 05 02 c5 satadd\.h r5,r5,r5
1.11294 ++ *[0-9a-f]*: e8 04 02 c4 satadd\.h r4,r4,r4
1.11295 ++ *[0-9a-f]*: fc 0e 02 ce satadd\.h lr,lr,lr
1.11296 ++ *[0-9a-f]*: e6 09 02 c7 satadd\.h r7,r3,r9
1.11297 ++ *[0-9a-f]*: e0 02 02 c1 satadd\.h r1,r0,r2
1.11298 ++ *[0-9a-f]*: e8 0e 02 c1 satadd\.h r1,r4,lr
1.11299 ++
1.11300 ++[0-9a-f]* <satsub_h>:
1.11301 ++ *[0-9a-f]*: fe 0f 03 cf satsub\.h pc,pc,pc
1.11302 ++ *[0-9a-f]*: f8 0c 03 cc satsub\.h r12,r12,r12
1.11303 ++ *[0-9a-f]*: ea 05 03 c5 satsub\.h r5,r5,r5
1.11304 ++ *[0-9a-f]*: e8 04 03 c4 satsub\.h r4,r4,r4
1.11305 ++ *[0-9a-f]*: fc 0e 03 ce satsub\.h lr,lr,lr
1.11306 ++ *[0-9a-f]*: fc 03 03 ce satsub\.h lr,lr,r3
1.11307 ++ *[0-9a-f]*: ec 05 03 cb satsub\.h r11,r6,r5
1.11308 ++ *[0-9a-f]*: fa 00 03 c3 satsub\.h r3,sp,r0
1.11309 ++
1.11310 ++[0-9a-f]* <mul3>:
1.11311 ++ *[0-9a-f]*: fe 0f 10 00 mul pc,pc,0
1.11312 ++ *[0-9a-f]*: f8 0c 10 ff mul r12,r12,-1
1.11313 ++ *[0-9a-f]*: ea 05 10 80 mul r5,r5,-128
1.11314 ++ *[0-9a-f]*: e8 04 10 7f mul r4,r4,127
1.11315 ++ *[0-9a-f]*: fc 0e 10 01 mul lr,lr,1
1.11316 ++ *[0-9a-f]*: e4 0c 10 f9 mul r12,r2,-7
1.11317 ++ *[0-9a-f]*: fe 01 10 5f mul r1,pc,95
1.11318 ++ *[0-9a-f]*: ec 04 10 13 mul r4,r6,19
1.11319 ++
1.11320 ++[0-9a-f]* <rsub2>:
1.11321 ++ *[0-9a-f]*: fe 0f 11 00 rsub pc,pc,0
1.11322 ++ *[0-9a-f]*: f8 0c 11 ff rsub r12,r12,-1
1.11323 ++ *[0-9a-f]*: ea 05 11 80 rsub r5,r5,-128
1.11324 ++ *[0-9a-f]*: e8 04 11 7f rsub r4,r4,127
1.11325 ++ *[0-9a-f]*: fc 0e 11 01 rsub lr,lr,1
1.11326 ++ *[0-9a-f]*: fc 09 11 60 rsub r9,lr,96
1.11327 ++ *[0-9a-f]*: e2 0b 11 38 rsub r11,r1,56
1.11328 ++ *[0-9a-f]*: ee 00 11 a9 rsub r0,r7,-87
1.11329 ++
1.11330 ++[0-9a-f]* <clz>:
1.11331 ++ *[0-9a-f]*: fe 0f 12 00 clz pc,pc
1.11332 ++ *[0-9a-f]*: f8 0c 12 00 clz r12,r12
1.11333 ++ *[0-9a-f]*: ea 05 12 00 clz r5,r5
1.11334 ++ *[0-9a-f]*: e8 04 12 00 clz r4,r4
1.11335 ++ *[0-9a-f]*: fc 0e 12 00 clz lr,lr
1.11336 ++ *[0-9a-f]*: e6 02 12 00 clz r2,r3
1.11337 ++ *[0-9a-f]*: f6 05 12 00 clz r5,r11
1.11338 ++ *[0-9a-f]*: e6 0f 12 00 clz pc,r3
1.11339 ++
1.11340 ++[0-9a-f]* <cpc1>:
1.11341 ++ *[0-9a-f]*: fe 0f 13 00 cpc pc,pc
1.11342 ++ *[0-9a-f]*: f8 0c 13 00 cpc r12,r12
1.11343 ++ *[0-9a-f]*: ea 05 13 00 cpc r5,r5
1.11344 ++ *[0-9a-f]*: e8 04 13 00 cpc r4,r4
1.11345 ++ *[0-9a-f]*: fc 0e 13 00 cpc lr,lr
1.11346 ++ *[0-9a-f]*: e8 0f 13 00 cpc pc,r4
1.11347 ++ *[0-9a-f]*: f2 05 13 00 cpc r5,r9
1.11348 ++ *[0-9a-f]*: ee 06 13 00 cpc r6,r7
1.11349 ++
1.11350 ++[0-9a-f]* <asr3>:
1.11351 ++ *[0-9a-f]*: fe 0f 14 00 asr pc,pc,0x0
1.11352 ++ *[0-9a-f]*: f8 0c 14 1f asr r12,r12,0x1f
1.11353 ++ *[0-9a-f]*: ea 05 14 10 asr r5,r5,0x10
1.11354 ++ *[0-9a-f]*: e8 04 14 0f asr r4,r4,0xf
1.11355 ++ *[0-9a-f]*: fc 0e 14 01 asr lr,lr,0x1
1.11356 ++ *[0-9a-f]*: f6 04 14 13 asr r4,r11,0x13
1.11357 ++ *[0-9a-f]*: fe 0d 14 1a asr sp,pc,0x1a
1.11358 ++ *[0-9a-f]*: fa 0b 14 08 asr r11,sp,0x8
1.11359 ++
1.11360 ++[0-9a-f]* <lsl3>:
1.11361 ++ *[0-9a-f]*: fe 0f 15 00 lsl pc,pc,0x0
1.11362 ++ *[0-9a-f]*: f8 0c 15 1f lsl r12,r12,0x1f
1.11363 ++ *[0-9a-f]*: ea 05 15 10 lsl r5,r5,0x10
1.11364 ++ *[0-9a-f]*: e8 04 15 0f lsl r4,r4,0xf
1.11365 ++ *[0-9a-f]*: fc 0e 15 01 lsl lr,lr,0x1
1.11366 ++ *[0-9a-f]*: f4 08 15 11 lsl r8,r10,0x11
1.11367 ++ *[0-9a-f]*: fc 02 15 03 lsl r2,lr,0x3
1.11368 ++ *[0-9a-f]*: f6 0e 15 0e lsl lr,r11,0xe
1.11369 ++
1.11370 ++[0-9a-f]* <lsr3>:
1.11371 ++ *[0-9a-f]*: fe 0f 16 00 lsr pc,pc,0x0
1.11372 ++ *[0-9a-f]*: f8 0c 16 1f lsr r12,r12,0x1f
1.11373 ++ *[0-9a-f]*: ea 05 16 10 lsr r5,r5,0x10
1.11374 ++ *[0-9a-f]*: e8 04 16 0f lsr r4,r4,0xf
1.11375 ++ *[0-9a-f]*: fc 0e 16 01 lsr lr,lr,0x1
1.11376 ++ *[0-9a-f]*: e6 04 16 1f lsr r4,r3,0x1f
1.11377 ++ *[0-9a-f]*: f2 0f 16 0e lsr pc,r9,0xe
1.11378 ++ *[0-9a-f]*: e0 03 16 06 lsr r3,r0,0x6
1.11379 ++
1.11380 ++[0-9a-f]* <movc1>:
1.11381 ++ *[0-9a-f]*: fe 0f 17 00 moveq pc,pc
1.11382 ++ *[0-9a-f]*: f8 0c 17 f0 moval r12,r12
1.11383 ++ *[0-9a-f]*: ea 05 17 80 movls r5,r5
1.11384 ++ *[0-9a-f]*: e8 04 17 70 movpl r4,r4
1.11385 ++ *[0-9a-f]*: fc 0e 17 10 movne lr,lr
1.11386 ++ *[0-9a-f]*: f6 0f 17 10 movne pc,r11
1.11387 ++ *[0-9a-f]*: e4 0a 17 60 movmi r10,r2
1.11388 ++ *[0-9a-f]*: f8 08 17 80 movls r8,r12
1.11389 ++
1.11390 ++[0-9a-f]* <padd_h>:
1.11391 ++ *[0-9a-f]*: fe 0f 20 0f padd\.h pc,pc,pc
1.11392 ++ *[0-9a-f]*: f8 0c 20 0c padd\.h r12,r12,r12
1.11393 ++ *[0-9a-f]*: ea 05 20 05 padd\.h r5,r5,r5
1.11394 ++ *[0-9a-f]*: e8 04 20 04 padd\.h r4,r4,r4
1.11395 ++ *[0-9a-f]*: fc 0e 20 0e padd\.h lr,lr,lr
1.11396 ++ *[0-9a-f]*: e4 07 20 08 padd\.h r8,r2,r7
1.11397 ++ *[0-9a-f]*: e0 03 20 00 padd\.h r0,r0,r3
1.11398 ++ *[0-9a-f]*: f6 06 20 0d padd\.h sp,r11,r6
1.11399 ++
1.11400 ++[0-9a-f]* <psub_h>:
1.11401 ++ *[0-9a-f]*: fe 0f 20 1f psub\.h pc,pc,pc
1.11402 ++ *[0-9a-f]*: f8 0c 20 1c psub\.h r12,r12,r12
1.11403 ++ *[0-9a-f]*: ea 05 20 15 psub\.h r5,r5,r5
1.11404 ++ *[0-9a-f]*: e8 04 20 14 psub\.h r4,r4,r4
1.11405 ++ *[0-9a-f]*: fc 0e 20 1e psub\.h lr,lr,lr
1.11406 ++ *[0-9a-f]*: ec 08 20 1e psub\.h lr,r6,r8
1.11407 ++ *[0-9a-f]*: e2 0d 20 10 psub\.h r0,r1,sp
1.11408 ++ *[0-9a-f]*: fe 0d 20 1f psub\.h pc,pc,sp
1.11409 ++
1.11410 ++[0-9a-f]* <paddx_h>:
1.11411 ++ *[0-9a-f]*: fe 0f 20 2f paddx\.h pc,pc,pc
1.11412 ++ *[0-9a-f]*: f8 0c 20 2c paddx\.h r12,r12,r12
1.11413 ++ *[0-9a-f]*: ea 05 20 25 paddx\.h r5,r5,r5
1.11414 ++ *[0-9a-f]*: e8 04 20 24 paddx\.h r4,r4,r4
1.11415 ++ *[0-9a-f]*: fc 0e 20 2e paddx\.h lr,lr,lr
1.11416 ++ *[0-9a-f]*: fe 01 20 2f paddx\.h pc,pc,r1
1.11417 ++ *[0-9a-f]*: e8 05 20 2a paddx\.h r10,r4,r5
1.11418 ++ *[0-9a-f]*: fe 02 20 25 paddx\.h r5,pc,r2
1.11419 ++
1.11420 ++[0-9a-f]* <psubx_h>:
1.11421 ++ *[0-9a-f]*: fe 0f 20 3f psubx\.h pc,pc,pc
1.11422 ++ *[0-9a-f]*: f8 0c 20 3c psubx\.h r12,r12,r12
1.11423 ++ *[0-9a-f]*: ea 05 20 35 psubx\.h r5,r5,r5
1.11424 ++ *[0-9a-f]*: e8 04 20 34 psubx\.h r4,r4,r4
1.11425 ++ *[0-9a-f]*: fc 0e 20 3e psubx\.h lr,lr,lr
1.11426 ++ *[0-9a-f]*: f8 05 20 35 psubx\.h r5,r12,r5
1.11427 ++ *[0-9a-f]*: f0 03 20 33 psubx\.h r3,r8,r3
1.11428 ++ *[0-9a-f]*: e4 03 20 35 psubx\.h r5,r2,r3
1.11429 ++
1.11430 ++[0-9a-f]* <padds_sh>:
1.11431 ++ *[0-9a-f]*: fe 0f 20 4f padds\.sh pc,pc,pc
1.11432 ++ *[0-9a-f]*: f8 0c 20 4c padds\.sh r12,r12,r12
1.11433 ++ *[0-9a-f]*: ea 05 20 45 padds\.sh r5,r5,r5
1.11434 ++ *[0-9a-f]*: e8 04 20 44 padds\.sh r4,r4,r4
1.11435 ++ *[0-9a-f]*: fc 0e 20 4e padds\.sh lr,lr,lr
1.11436 ++ *[0-9a-f]*: fc 02 20 49 padds\.sh r9,lr,r2
1.11437 ++ *[0-9a-f]*: f0 01 20 46 padds\.sh r6,r8,r1
1.11438 ++ *[0-9a-f]*: e8 0a 20 46 padds\.sh r6,r4,r10
1.11439 ++
1.11440 ++[0-9a-f]* <psubs_sh>:
1.11441 ++ *[0-9a-f]*: fe 0f 20 5f psubs\.sh pc,pc,pc
1.11442 ++ *[0-9a-f]*: f8 0c 20 5c psubs\.sh r12,r12,r12
1.11443 ++ *[0-9a-f]*: ea 05 20 55 psubs\.sh r5,r5,r5
1.11444 ++ *[0-9a-f]*: e8 04 20 54 psubs\.sh r4,r4,r4
1.11445 ++ *[0-9a-f]*: fc 0e 20 5e psubs\.sh lr,lr,lr
1.11446 ++ *[0-9a-f]*: fc 0b 20 56 psubs\.sh r6,lr,r11
1.11447 ++ *[0-9a-f]*: f8 04 20 52 psubs\.sh r2,r12,r4
1.11448 ++ *[0-9a-f]*: f2 00 20 50 psubs\.sh r0,r9,r0
1.11449 ++
1.11450 ++[0-9a-f]* <paddxs_sh>:
1.11451 ++ *[0-9a-f]*: fe 0f 20 6f paddxs\.sh pc,pc,pc
1.11452 ++ *[0-9a-f]*: f8 0c 20 6c paddxs\.sh r12,r12,r12
1.11453 ++ *[0-9a-f]*: ea 05 20 65 paddxs\.sh r5,r5,r5
1.11454 ++ *[0-9a-f]*: e8 04 20 64 paddxs\.sh r4,r4,r4
1.11455 ++ *[0-9a-f]*: fc 0e 20 6e paddxs\.sh lr,lr,lr
1.11456 ++ *[0-9a-f]*: e6 09 20 60 paddxs\.sh r0,r3,r9
1.11457 ++ *[0-9a-f]*: f4 0b 20 6f paddxs\.sh pc,r10,r11
1.11458 ++ *[0-9a-f]*: f4 0f 20 6f paddxs\.sh pc,r10,pc
1.11459 ++
1.11460 ++[0-9a-f]* <psubxs_sh>:
1.11461 ++ *[0-9a-f]*: fe 0f 20 7f psubxs\.sh pc,pc,pc
1.11462 ++ *[0-9a-f]*: f8 0c 20 7c psubxs\.sh r12,r12,r12
1.11463 ++ *[0-9a-f]*: ea 05 20 75 psubxs\.sh r5,r5,r5
1.11464 ++ *[0-9a-f]*: e8 04 20 74 psubxs\.sh r4,r4,r4
1.11465 ++ *[0-9a-f]*: fc 0e 20 7e psubxs\.sh lr,lr,lr
1.11466 ++ *[0-9a-f]*: e8 04 20 77 psubxs\.sh r7,r4,r4
1.11467 ++ *[0-9a-f]*: f0 03 20 77 psubxs\.sh r7,r8,r3
1.11468 ++ *[0-9a-f]*: ec 05 20 7f psubxs\.sh pc,r6,r5
1.11469 ++
1.11470 ++[0-9a-f]* <padds_uh>:
1.11471 ++ *[0-9a-f]*: fe 0f 20 8f padds\.uh pc,pc,pc
1.11472 ++ *[0-9a-f]*: f8 0c 20 8c padds\.uh r12,r12,r12
1.11473 ++ *[0-9a-f]*: ea 05 20 85 padds\.uh r5,r5,r5
1.11474 ++ *[0-9a-f]*: e8 04 20 84 padds\.uh r4,r4,r4
1.11475 ++ *[0-9a-f]*: fc 0e 20 8e padds\.uh lr,lr,lr
1.11476 ++ *[0-9a-f]*: f6 07 20 8c padds\.uh r12,r11,r7
1.11477 ++ *[0-9a-f]*: f0 0e 20 87 padds\.uh r7,r8,lr
1.11478 ++ *[0-9a-f]*: f2 07 20 86 padds\.uh r6,r9,r7
1.11479 ++
1.11480 ++[0-9a-f]* <psubs_uh>:
1.11481 ++ *[0-9a-f]*: fe 0f 20 9f psubs\.uh pc,pc,pc
1.11482 ++ *[0-9a-f]*: f8 0c 20 9c psubs\.uh r12,r12,r12
1.11483 ++ *[0-9a-f]*: ea 05 20 95 psubs\.uh r5,r5,r5
1.11484 ++ *[0-9a-f]*: e8 04 20 94 psubs\.uh r4,r4,r4
1.11485 ++ *[0-9a-f]*: fc 0e 20 9e psubs\.uh lr,lr,lr
1.11486 ++ *[0-9a-f]*: f4 06 20 9e psubs\.uh lr,r10,r6
1.11487 ++ *[0-9a-f]*: e4 0f 20 9d psubs\.uh sp,r2,pc
1.11488 ++ *[0-9a-f]*: f2 02 20 92 psubs\.uh r2,r9,r2
1.11489 ++
1.11490 ++[0-9a-f]* <paddxs_uh>:
1.11491 ++ *[0-9a-f]*: fe 0f 20 af paddxs\.uh pc,pc,pc
1.11492 ++ *[0-9a-f]*: f8 0c 20 ac paddxs\.uh r12,r12,r12
1.11493 ++ *[0-9a-f]*: ea 05 20 a5 paddxs\.uh r5,r5,r5
1.11494 ++ *[0-9a-f]*: e8 04 20 a4 paddxs\.uh r4,r4,r4
1.11495 ++ *[0-9a-f]*: fc 0e 20 ae paddxs\.uh lr,lr,lr
1.11496 ++ *[0-9a-f]*: f2 05 20 a7 paddxs\.uh r7,r9,r5
1.11497 ++ *[0-9a-f]*: e2 04 20 a9 paddxs\.uh r9,r1,r4
1.11498 ++ *[0-9a-f]*: e4 03 20 a5 paddxs\.uh r5,r2,r3
1.11499 ++
1.11500 ++[0-9a-f]* <psubxs_uh>:
1.11501 ++ *[0-9a-f]*: fe 0f 20 bf psubxs\.uh pc,pc,pc
1.11502 ++ *[0-9a-f]*: f8 0c 20 bc psubxs\.uh r12,r12,r12
1.11503 ++ *[0-9a-f]*: ea 05 20 b5 psubxs\.uh r5,r5,r5
1.11504 ++ *[0-9a-f]*: e8 04 20 b4 psubxs\.uh r4,r4,r4
1.11505 ++ *[0-9a-f]*: fc 0e 20 be psubxs\.uh lr,lr,lr
1.11506 ++ *[0-9a-f]*: ea 0d 20 bd psubxs\.uh sp,r5,sp
1.11507 ++ *[0-9a-f]*: ec 06 20 bd psubxs\.uh sp,r6,r6
1.11508 ++ *[0-9a-f]*: f6 08 20 b3 psubxs\.uh r3,r11,r8
1.11509 ++
1.11510 ++[0-9a-f]* <paddh_sh>:
1.11511 ++ *[0-9a-f]*: fe 0f 20 cf paddh\.sh pc,pc,pc
1.11512 ++ *[0-9a-f]*: f8 0c 20 cc paddh\.sh r12,r12,r12
1.11513 ++ *[0-9a-f]*: ea 05 20 c5 paddh\.sh r5,r5,r5
1.11514 ++ *[0-9a-f]*: e8 04 20 c4 paddh\.sh r4,r4,r4
1.11515 ++ *[0-9a-f]*: fc 0e 20 ce paddh\.sh lr,lr,lr
1.11516 ++ *[0-9a-f]*: fa 03 20 cc paddh\.sh r12,sp,r3
1.11517 ++ *[0-9a-f]*: ea 03 20 cf paddh\.sh pc,r5,r3
1.11518 ++ *[0-9a-f]*: f0 0d 20 c8 paddh\.sh r8,r8,sp
1.11519 ++
1.11520 ++[0-9a-f]* <psubh_sh>:
1.11521 ++ *[0-9a-f]*: fe 0f 20 df psubh\.sh pc,pc,pc
1.11522 ++ *[0-9a-f]*: f8 0c 20 dc psubh\.sh r12,r12,r12
1.11523 ++ *[0-9a-f]*: ea 05 20 d5 psubh\.sh r5,r5,r5
1.11524 ++ *[0-9a-f]*: e8 04 20 d4 psubh\.sh r4,r4,r4
1.11525 ++ *[0-9a-f]*: fc 0e 20 de psubh\.sh lr,lr,lr
1.11526 ++ *[0-9a-f]*: ea 08 20 d1 psubh\.sh r1,r5,r8
1.11527 ++ *[0-9a-f]*: e6 06 20 d7 psubh\.sh r7,r3,r6
1.11528 ++ *[0-9a-f]*: e6 03 20 d4 psubh\.sh r4,r3,r3
1.11529 ++
1.11530 ++[0-9a-f]* <paddxh_sh>:
1.11531 ++ *[0-9a-f]*: fe 0f 20 ef paddxh\.sh pc,pc,pc
1.11532 ++ *[0-9a-f]*: f8 0c 20 ec paddxh\.sh r12,r12,r12
1.11533 ++ *[0-9a-f]*: ea 05 20 e5 paddxh\.sh r5,r5,r5
1.11534 ++ *[0-9a-f]*: e8 04 20 e4 paddxh\.sh r4,r4,r4
1.11535 ++ *[0-9a-f]*: fc 0e 20 ee paddxh\.sh lr,lr,lr
1.11536 ++ *[0-9a-f]*: e0 04 20 e6 paddxh\.sh r6,r0,r4
1.11537 ++ *[0-9a-f]*: f0 09 20 e9 paddxh\.sh r9,r8,r9
1.11538 ++ *[0-9a-f]*: e0 0d 20 e3 paddxh\.sh r3,r0,sp
1.11539 ++
1.11540 ++[0-9a-f]* <psubxh_sh>:
1.11541 ++ *[0-9a-f]*: fe 0f 20 ff psubxh\.sh pc,pc,pc
1.11542 ++ *[0-9a-f]*: f8 0c 20 fc psubxh\.sh r12,r12,r12
1.11543 ++ *[0-9a-f]*: ea 05 20 f5 psubxh\.sh r5,r5,r5
1.11544 ++ *[0-9a-f]*: e8 04 20 f4 psubxh\.sh r4,r4,r4
1.11545 ++ *[0-9a-f]*: fc 0e 20 fe psubxh\.sh lr,lr,lr
1.11546 ++ *[0-9a-f]*: fe 0c 20 f4 psubxh\.sh r4,pc,r12
1.11547 ++ *[0-9a-f]*: e8 06 20 f8 psubxh\.sh r8,r4,r6
1.11548 ++ *[0-9a-f]*: f2 04 20 fc psubxh\.sh r12,r9,r4
1.11549 ++
1.11550 ++[0-9a-f]* <paddsub_h>:
1.11551 ++ *[0-9a-f]*: fe 0f 21 0f paddsub\.h pc,pc:b,pc:b
1.11552 ++ *[0-9a-f]*: f8 0c 21 3c paddsub\.h r12,r12:t,r12:t
1.11553 ++ *[0-9a-f]*: ea 05 21 35 paddsub\.h r5,r5:t,r5:t
1.11554 ++ *[0-9a-f]*: e8 04 21 04 paddsub\.h r4,r4:b,r4:b
1.11555 ++ *[0-9a-f]*: fc 0e 21 3e paddsub\.h lr,lr:t,lr:t
1.11556 ++ *[0-9a-f]*: e4 0e 21 25 paddsub\.h r5,r2:t,lr:b
1.11557 ++ *[0-9a-f]*: e2 08 21 07 paddsub\.h r7,r1:b,r8:b
1.11558 ++ *[0-9a-f]*: f4 05 21 36 paddsub\.h r6,r10:t,r5:t
1.11559 ++
1.11560 ++[0-9a-f]* <psubadd_h>:
1.11561 ++ *[0-9a-f]*: fe 0f 21 4f psubadd\.h pc,pc:b,pc:b
1.11562 ++ *[0-9a-f]*: f8 0c 21 7c psubadd\.h r12,r12:t,r12:t
1.11563 ++ *[0-9a-f]*: ea 05 21 75 psubadd\.h r5,r5:t,r5:t
1.11564 ++ *[0-9a-f]*: e8 04 21 44 psubadd\.h r4,r4:b,r4:b
1.11565 ++ *[0-9a-f]*: fc 0e 21 7e psubadd\.h lr,lr:t,lr:t
1.11566 ++ *[0-9a-f]*: f6 08 21 79 psubadd\.h r9,r11:t,r8:t
1.11567 ++ *[0-9a-f]*: ee 0e 21 7a psubadd\.h r10,r7:t,lr:t
1.11568 ++ *[0-9a-f]*: fe 0f 21 66 psubadd\.h r6,pc:t,pc:b
1.11569 ++
1.11570 ++[0-9a-f]* <paddsubs_sh>:
1.11571 ++ *[0-9a-f]*: fe 0f 21 8f paddsubs\.sh pc,pc:b,pc:b
1.11572 ++ *[0-9a-f]*: f8 0c 21 bc paddsubs\.sh r12,r12:t,r12:t
1.11573 ++ *[0-9a-f]*: ea 05 21 b5 paddsubs\.sh r5,r5:t,r5:t
1.11574 ++ *[0-9a-f]*: e8 04 21 84 paddsubs\.sh r4,r4:b,r4:b
1.11575 ++ *[0-9a-f]*: fc 0e 21 be paddsubs\.sh lr,lr:t,lr:t
1.11576 ++ *[0-9a-f]*: fc 00 21 a0 paddsubs\.sh r0,lr:t,r0:b
1.11577 ++ *[0-9a-f]*: e4 04 21 b9 paddsubs\.sh r9,r2:t,r4:t
1.11578 ++ *[0-9a-f]*: f2 0d 21 bc paddsubs\.sh r12,r9:t,sp:t
1.11579 ++
1.11580 ++[0-9a-f]* <psubadds_sh>:
1.11581 ++ *[0-9a-f]*: fe 0f 21 cf psubadds\.sh pc,pc:b,pc:b
1.11582 ++ *[0-9a-f]*: f8 0c 21 fc psubadds\.sh r12,r12:t,r12:t
1.11583 ++ *[0-9a-f]*: ea 05 21 f5 psubadds\.sh r5,r5:t,r5:t
1.11584 ++ *[0-9a-f]*: e8 04 21 c4 psubadds\.sh r4,r4:b,r4:b
1.11585 ++ *[0-9a-f]*: fc 0e 21 fe psubadds\.sh lr,lr:t,lr:t
1.11586 ++ *[0-9a-f]*: fc 01 21 df psubadds\.sh pc,lr:b,r1:t
1.11587 ++ *[0-9a-f]*: e6 0c 21 cb psubadds\.sh r11,r3:b,r12:b
1.11588 ++ *[0-9a-f]*: e4 08 21 fa psubadds\.sh r10,r2:t,r8:t
1.11589 ++
1.11590 ++[0-9a-f]* <paddsubs_uh>:
1.11591 ++ *[0-9a-f]*: fe 0f 22 0f paddsubs\.uh pc,pc:b,pc:b
1.11592 ++ *[0-9a-f]*: f8 0c 22 3c paddsubs\.uh r12,r12:t,r12:t
1.11593 ++ *[0-9a-f]*: ea 05 22 35 paddsubs\.uh r5,r5:t,r5:t
1.11594 ++ *[0-9a-f]*: e8 04 22 04 paddsubs\.uh r4,r4:b,r4:b
1.11595 ++ *[0-9a-f]*: fc 0e 22 3e paddsubs\.uh lr,lr:t,lr:t
1.11596 ++ *[0-9a-f]*: e4 03 22 09 paddsubs\.uh r9,r2:b,r3:b
1.11597 ++ *[0-9a-f]*: fa 07 22 1d paddsubs\.uh sp,sp:b,r7:t
1.11598 ++ *[0-9a-f]*: e0 0a 22 1e paddsubs\.uh lr,r0:b,r10:t
1.11599 ++
1.11600 ++[0-9a-f]* <psubadds_uh>:
1.11601 ++ *[0-9a-f]*: fe 0f 22 4f psubadds\.uh pc,pc:b,pc:b
1.11602 ++ *[0-9a-f]*: f8 0c 22 7c psubadds\.uh r12,r12:t,r12:t
1.11603 ++ *[0-9a-f]*: ea 05 22 75 psubadds\.uh r5,r5:t,r5:t
1.11604 ++ *[0-9a-f]*: e8 04 22 44 psubadds\.uh r4,r4:b,r4:b
1.11605 ++ *[0-9a-f]*: fc 0e 22 7e psubadds\.uh lr,lr:t,lr:t
1.11606 ++ *[0-9a-f]*: f2 0f 22 7c psubadds\.uh r12,r9:t,pc:t
1.11607 ++ *[0-9a-f]*: ec 08 22 48 psubadds\.uh r8,r6:b,r8:b
1.11608 ++ *[0-9a-f]*: f0 04 22 48 psubadds\.uh r8,r8:b,r4:b
1.11609 ++
1.11610 ++[0-9a-f]* <paddsubh_sh>:
1.11611 ++ *[0-9a-f]*: fe 0f 22 8f paddsubh\.sh pc,pc:b,pc:b
1.11612 ++ *[0-9a-f]*: f8 0c 22 bc paddsubh\.sh r12,r12:t,r12:t
1.11613 ++ *[0-9a-f]*: ea 05 22 b5 paddsubh\.sh r5,r5:t,r5:t
1.11614 ++ *[0-9a-f]*: e8 04 22 84 paddsubh\.sh r4,r4:b,r4:b
1.11615 ++ *[0-9a-f]*: fc 0e 22 be paddsubh\.sh lr,lr:t,lr:t
1.11616 ++ *[0-9a-f]*: f2 09 22 a8 paddsubh\.sh r8,r9:t,r9:b
1.11617 ++ *[0-9a-f]*: fa 01 22 b0 paddsubh\.sh r0,sp:t,r1:t
1.11618 ++ *[0-9a-f]*: e2 00 22 93 paddsubh\.sh r3,r1:b,r0:t
1.11619 ++
1.11620 ++[0-9a-f]* <psubaddh_sh>:
1.11621 ++ *[0-9a-f]*: fe 0f 22 cf psubaddh\.sh pc,pc:b,pc:b
1.11622 ++ *[0-9a-f]*: f8 0c 22 fc psubaddh\.sh r12,r12:t,r12:t
1.11623 ++ *[0-9a-f]*: ea 05 22 f5 psubaddh\.sh r5,r5:t,r5:t
1.11624 ++ *[0-9a-f]*: e8 04 22 c4 psubaddh\.sh r4,r4:b,r4:b
1.11625 ++ *[0-9a-f]*: fc 0e 22 fe psubaddh\.sh lr,lr:t,lr:t
1.11626 ++ *[0-9a-f]*: e6 0a 22 e7 psubaddh\.sh r7,r3:t,r10:b
1.11627 ++ *[0-9a-f]*: e4 01 22 f7 psubaddh\.sh r7,r2:t,r1:t
1.11628 ++ *[0-9a-f]*: e6 06 22 cb psubaddh\.sh r11,r3:b,r6:b
1.11629 ++
1.11630 ++[0-9a-f]* <padd_b>:
1.11631 ++ *[0-9a-f]*: fe 0f 23 0f padd\.b pc,pc,pc
1.11632 ++ *[0-9a-f]*: f8 0c 23 0c padd\.b r12,r12,r12
1.11633 ++ *[0-9a-f]*: ea 05 23 05 padd\.b r5,r5,r5
1.11634 ++ *[0-9a-f]*: e8 04 23 04 padd\.b r4,r4,r4
1.11635 ++ *[0-9a-f]*: fc 0e 23 0e padd\.b lr,lr,lr
1.11636 ++ *[0-9a-f]*: ec 0f 23 02 padd\.b r2,r6,pc
1.11637 ++ *[0-9a-f]*: f2 0c 23 08 padd\.b r8,r9,r12
1.11638 ++ *[0-9a-f]*: f8 03 23 05 padd\.b r5,r12,r3
1.11639 ++
1.11640 ++[0-9a-f]* <psub_b>:
1.11641 ++ *[0-9a-f]*: fe 0f 23 1f psub\.b pc,pc,pc
1.11642 ++ *[0-9a-f]*: f8 0c 23 1c psub\.b r12,r12,r12
1.11643 ++ *[0-9a-f]*: ea 05 23 15 psub\.b r5,r5,r5
1.11644 ++ *[0-9a-f]*: e8 04 23 14 psub\.b r4,r4,r4
1.11645 ++ *[0-9a-f]*: fc 0e 23 1e psub\.b lr,lr,lr
1.11646 ++ *[0-9a-f]*: f8 0f 23 10 psub\.b r0,r12,pc
1.11647 ++ *[0-9a-f]*: fa 0a 23 17 psub\.b r7,sp,r10
1.11648 ++ *[0-9a-f]*: fa 0c 23 15 psub\.b r5,sp,r12
1.11649 ++
1.11650 ++[0-9a-f]* <padds_sb>:
1.11651 ++ *[0-9a-f]*: fe 0f 23 2f padds\.sb pc,pc,pc
1.11652 ++ *[0-9a-f]*: f8 0c 23 2c padds\.sb r12,r12,r12
1.11653 ++ *[0-9a-f]*: ea 05 23 25 padds\.sb r5,r5,r5
1.11654 ++ *[0-9a-f]*: e8 04 23 24 padds\.sb r4,r4,r4
1.11655 ++ *[0-9a-f]*: fc 0e 23 2e padds\.sb lr,lr,lr
1.11656 ++ *[0-9a-f]*: f6 04 23 2d padds\.sb sp,r11,r4
1.11657 ++ *[0-9a-f]*: f4 0b 23 2b padds\.sb r11,r10,r11
1.11658 ++ *[0-9a-f]*: f8 06 23 25 padds\.sb r5,r12,r6
1.11659 ++
1.11660 ++[0-9a-f]* <psubs_sb>:
1.11661 ++ *[0-9a-f]*: fe 0f 23 3f psubs\.sb pc,pc,pc
1.11662 ++ *[0-9a-f]*: f8 0c 23 3c psubs\.sb r12,r12,r12
1.11663 ++ *[0-9a-f]*: ea 05 23 35 psubs\.sb r5,r5,r5
1.11664 ++ *[0-9a-f]*: e8 04 23 34 psubs\.sb r4,r4,r4
1.11665 ++ *[0-9a-f]*: fc 0e 23 3e psubs\.sb lr,lr,lr
1.11666 ++ *[0-9a-f]*: ec 08 23 37 psubs\.sb r7,r6,r8
1.11667 ++ *[0-9a-f]*: f4 09 23 3c psubs\.sb r12,r10,r9
1.11668 ++ *[0-9a-f]*: f6 00 23 3f psubs\.sb pc,r11,r0
1.11669 ++
1.11670 ++[0-9a-f]* <padds_ub>:
1.11671 ++ *[0-9a-f]*: fe 0f 23 4f padds\.ub pc,pc,pc
1.11672 ++ *[0-9a-f]*: f8 0c 23 4c padds\.ub r12,r12,r12
1.11673 ++ *[0-9a-f]*: ea 05 23 45 padds\.ub r5,r5,r5
1.11674 ++ *[0-9a-f]*: e8 04 23 44 padds\.ub r4,r4,r4
1.11675 ++ *[0-9a-f]*: fc 0e 23 4e padds\.ub lr,lr,lr
1.11676 ++ *[0-9a-f]*: e4 0b 23 43 padds\.ub r3,r2,r11
1.11677 ++ *[0-9a-f]*: f0 01 23 4a padds\.ub r10,r8,r1
1.11678 ++ *[0-9a-f]*: f0 0a 23 4b padds\.ub r11,r8,r10
1.11679 ++
1.11680 ++[0-9a-f]* <psubs_ub>:
1.11681 ++ *[0-9a-f]*: fe 0f 23 5f psubs\.ub pc,pc,pc
1.11682 ++ *[0-9a-f]*: f8 0c 23 5c psubs\.ub r12,r12,r12
1.11683 ++ *[0-9a-f]*: ea 05 23 55 psubs\.ub r5,r5,r5
1.11684 ++ *[0-9a-f]*: e8 04 23 54 psubs\.ub r4,r4,r4
1.11685 ++ *[0-9a-f]*: fc 0e 23 5e psubs\.ub lr,lr,lr
1.11686 ++ *[0-9a-f]*: e4 07 23 50 psubs\.ub r0,r2,r7
1.11687 ++ *[0-9a-f]*: ea 03 23 5e psubs\.ub lr,r5,r3
1.11688 ++ *[0-9a-f]*: ee 09 23 56 psubs\.ub r6,r7,r9
1.11689 ++
1.11690 ++[0-9a-f]* <paddh_ub>:
1.11691 ++ *[0-9a-f]*: fe 0f 23 6f paddh\.ub pc,pc,pc
1.11692 ++ *[0-9a-f]*: f8 0c 23 6c paddh\.ub r12,r12,r12
1.11693 ++ *[0-9a-f]*: ea 05 23 65 paddh\.ub r5,r5,r5
1.11694 ++ *[0-9a-f]*: e8 04 23 64 paddh\.ub r4,r4,r4
1.11695 ++ *[0-9a-f]*: fc 0e 23 6e paddh\.ub lr,lr,lr
1.11696 ++ *[0-9a-f]*: e2 00 23 6e paddh\.ub lr,r1,r0
1.11697 ++ *[0-9a-f]*: ee 07 23 62 paddh\.ub r2,r7,r7
1.11698 ++ *[0-9a-f]*: e2 02 23 62 paddh\.ub r2,r1,r2
1.11699 ++
1.11700 ++[0-9a-f]* <psubh_ub>:
1.11701 ++ *[0-9a-f]*: fe 0f 23 7f psubh\.ub pc,pc,pc
1.11702 ++ *[0-9a-f]*: f8 0c 23 7c psubh\.ub r12,r12,r12
1.11703 ++ *[0-9a-f]*: ea 05 23 75 psubh\.ub r5,r5,r5
1.11704 ++ *[0-9a-f]*: e8 04 23 74 psubh\.ub r4,r4,r4
1.11705 ++ *[0-9a-f]*: fc 0e 23 7e psubh\.ub lr,lr,lr
1.11706 ++ *[0-9a-f]*: e2 06 23 70 psubh\.ub r0,r1,r6
1.11707 ++ *[0-9a-f]*: fc 0a 23 74 psubh\.ub r4,lr,r10
1.11708 ++ *[0-9a-f]*: f0 01 23 79 psubh\.ub r9,r8,r1
1.11709 ++
1.11710 ++[0-9a-f]* <pmax_ub>:
1.11711 ++ *[0-9a-f]*: fe 0f 23 8f pmax\.ub pc,pc,pc
1.11712 ++ *[0-9a-f]*: f8 0c 23 8c pmax\.ub r12,r12,r12
1.11713 ++ *[0-9a-f]*: ea 05 23 85 pmax\.ub r5,r5,r5
1.11714 ++ *[0-9a-f]*: e8 04 23 84 pmax\.ub r4,r4,r4
1.11715 ++ *[0-9a-f]*: fc 0e 23 8e pmax\.ub lr,lr,lr
1.11716 ++ *[0-9a-f]*: e4 0b 23 8f pmax\.ub pc,r2,r11
1.11717 ++ *[0-9a-f]*: e2 01 23 8c pmax\.ub r12,r1,r1
1.11718 ++ *[0-9a-f]*: e4 00 23 85 pmax\.ub r5,r2,r0
1.11719 ++
1.11720 ++[0-9a-f]* <pmax_sh>:
1.11721 ++ *[0-9a-f]*: fe 0f 23 9f pmax\.sh pc,pc,pc
1.11722 ++ *[0-9a-f]*: f8 0c 23 9c pmax\.sh r12,r12,r12
1.11723 ++ *[0-9a-f]*: ea 05 23 95 pmax\.sh r5,r5,r5
1.11724 ++ *[0-9a-f]*: e8 04 23 94 pmax\.sh r4,r4,r4
1.11725 ++ *[0-9a-f]*: fc 0e 23 9e pmax\.sh lr,lr,lr
1.11726 ++ *[0-9a-f]*: ec 0c 23 9e pmax\.sh lr,r6,r12
1.11727 ++ *[0-9a-f]*: fe 05 23 92 pmax\.sh r2,pc,r5
1.11728 ++ *[0-9a-f]*: e4 07 23 9f pmax\.sh pc,r2,r7
1.11729 ++
1.11730 ++[0-9a-f]* <pmin_ub>:
1.11731 ++ *[0-9a-f]*: fe 0f 23 af pmin\.ub pc,pc,pc
1.11732 ++ *[0-9a-f]*: f8 0c 23 ac pmin\.ub r12,r12,r12
1.11733 ++ *[0-9a-f]*: ea 05 23 a5 pmin\.ub r5,r5,r5
1.11734 ++ *[0-9a-f]*: e8 04 23 a4 pmin\.ub r4,r4,r4
1.11735 ++ *[0-9a-f]*: fc 0e 23 ae pmin\.ub lr,lr,lr
1.11736 ++ *[0-9a-f]*: e2 05 23 a8 pmin\.ub r8,r1,r5
1.11737 ++ *[0-9a-f]*: f0 03 23 a1 pmin\.ub r1,r8,r3
1.11738 ++ *[0-9a-f]*: e4 07 23 a0 pmin\.ub r0,r2,r7
1.11739 ++
1.11740 ++[0-9a-f]* <pmin_sh>:
1.11741 ++ *[0-9a-f]*: fe 0f 23 bf pmin\.sh pc,pc,pc
1.11742 ++ *[0-9a-f]*: f8 0c 23 bc pmin\.sh r12,r12,r12
1.11743 ++ *[0-9a-f]*: ea 05 23 b5 pmin\.sh r5,r5,r5
1.11744 ++ *[0-9a-f]*: e8 04 23 b4 pmin\.sh r4,r4,r4
1.11745 ++ *[0-9a-f]*: fc 0e 23 be pmin\.sh lr,lr,lr
1.11746 ++ *[0-9a-f]*: e8 0a 23 b8 pmin\.sh r8,r4,r10
1.11747 ++ *[0-9a-f]*: f4 0c 23 be pmin\.sh lr,r10,r12
1.11748 ++ *[0-9a-f]*: ec 02 23 b2 pmin\.sh r2,r6,r2
1.11749 ++
1.11750 ++[0-9a-f]* <pavg_ub>:
1.11751 ++ *[0-9a-f]*: fe 0f 23 cf pavg\.ub pc,pc,pc
1.11752 ++ *[0-9a-f]*: f8 0c 23 cc pavg\.ub r12,r12,r12
1.11753 ++ *[0-9a-f]*: ea 05 23 c5 pavg\.ub r5,r5,r5
1.11754 ++ *[0-9a-f]*: e8 04 23 c4 pavg\.ub r4,r4,r4
1.11755 ++ *[0-9a-f]*: fc 0e 23 ce pavg\.ub lr,lr,lr
1.11756 ++ *[0-9a-f]*: e2 06 23 c0 pavg\.ub r0,r1,r6
1.11757 ++ *[0-9a-f]*: e6 06 23 c8 pavg\.ub r8,r3,r6
1.11758 ++ *[0-9a-f]*: f8 0a 23 cf pavg\.ub pc,r12,r10
1.11759 ++
1.11760 ++[0-9a-f]* <pavg_sh>:
1.11761 ++ *[0-9a-f]*: fe 0f 23 df pavg\.sh pc,pc,pc
1.11762 ++ *[0-9a-f]*: f8 0c 23 dc pavg\.sh r12,r12,r12
1.11763 ++ *[0-9a-f]*: ea 05 23 d5 pavg\.sh r5,r5,r5
1.11764 ++ *[0-9a-f]*: e8 04 23 d4 pavg\.sh r4,r4,r4
1.11765 ++ *[0-9a-f]*: fc 0e 23 de pavg\.sh lr,lr,lr
1.11766 ++ *[0-9a-f]*: fe 0d 23 d9 pavg\.sh r9,pc,sp
1.11767 ++ *[0-9a-f]*: fa 03 23 df pavg\.sh pc,sp,r3
1.11768 ++ *[0-9a-f]*: e2 09 23 d6 pavg\.sh r6,r1,r9
1.11769 ++
1.11770 ++[0-9a-f]* <pabs_sb>:
1.11771 ++ *[0-9a-f]*: e0 0f 23 ef pabs\.sb pc,pc
1.11772 ++ *[0-9a-f]*: e0 0c 23 ec pabs\.sb r12,r12
1.11773 ++ *[0-9a-f]*: e0 05 23 e5 pabs\.sb r5,r5
1.11774 ++ *[0-9a-f]*: e0 04 23 e4 pabs\.sb r4,r4
1.11775 ++ *[0-9a-f]*: e0 0e 23 ee pabs\.sb lr,lr
1.11776 ++ *[0-9a-f]*: e0 06 23 eb pabs\.sb r11,r6
1.11777 ++ *[0-9a-f]*: e0 09 23 ee pabs\.sb lr,r9
1.11778 ++ *[0-9a-f]*: e0 07 23 ed pabs\.sb sp,r7
1.11779 ++
1.11780 ++[0-9a-f]* <pabs_sh>:
1.11781 ++ *[0-9a-f]*: e0 0f 23 ff pabs\.sh pc,pc
1.11782 ++ *[0-9a-f]*: e0 0c 23 fc pabs\.sh r12,r12
1.11783 ++ *[0-9a-f]*: e0 05 23 f5 pabs\.sh r5,r5
1.11784 ++ *[0-9a-f]*: e0 04 23 f4 pabs\.sh r4,r4
1.11785 ++ *[0-9a-f]*: e0 0e 23 fe pabs\.sh lr,lr
1.11786 ++ *[0-9a-f]*: e0 03 23 ff pabs\.sh pc,r3
1.11787 ++ *[0-9a-f]*: e0 07 23 f5 pabs\.sh r5,r7
1.11788 ++ *[0-9a-f]*: e0 00 23 f4 pabs\.sh r4,r0
1.11789 ++
1.11790 ++[0-9a-f]* <psad>:
1.11791 ++ *[0-9a-f]*: fe 0f 24 0f psad pc,pc,pc
1.11792 ++ *[0-9a-f]*: f8 0c 24 0c psad r12,r12,r12
1.11793 ++ *[0-9a-f]*: ea 05 24 05 psad r5,r5,r5
1.11794 ++ *[0-9a-f]*: e8 04 24 04 psad r4,r4,r4
1.11795 ++ *[0-9a-f]*: fc 0e 24 0e psad lr,lr,lr
1.11796 ++ *[0-9a-f]*: f6 0b 24 09 psad r9,r11,r11
1.11797 ++ *[0-9a-f]*: e8 0d 24 0e psad lr,r4,sp
1.11798 ++ *[0-9a-f]*: e8 05 24 0e psad lr,r4,r5
1.11799 ++
1.11800 ++[0-9a-f]* <pasr_b>:
1.11801 ++ *[0-9a-f]*: fe 00 24 1f pasr\.b pc,pc,0x0
1.11802 ++ *[0-9a-f]*: f8 07 24 1c pasr\.b r12,r12,0x7
1.11803 ++ *[0-9a-f]*: ea 04 24 15 pasr\.b r5,r5,0x4
1.11804 ++ *[0-9a-f]*: e8 03 24 14 pasr\.b r4,r4,0x3
1.11805 ++ *[0-9a-f]*: fc 01 24 1e pasr\.b lr,lr,0x1
1.11806 ++ *[0-9a-f]*: ee 01 24 1f pasr\.b pc,r7,0x1
1.11807 ++ *[0-9a-f]*: fc 06 24 1d pasr\.b sp,lr,0x6
1.11808 ++ *[0-9a-f]*: e6 02 24 1d pasr\.b sp,r3,0x2
1.11809 ++
1.11810 ++[0-9a-f]* <plsl_b>:
1.11811 ++ *[0-9a-f]*: fe 00 24 2f plsl\.b pc,pc,0x0
1.11812 ++ *[0-9a-f]*: f8 07 24 2c plsl\.b r12,r12,0x7
1.11813 ++ *[0-9a-f]*: ea 04 24 25 plsl\.b r5,r5,0x4
1.11814 ++ *[0-9a-f]*: e8 03 24 24 plsl\.b r4,r4,0x3
1.11815 ++ *[0-9a-f]*: fc 01 24 2e plsl\.b lr,lr,0x1
1.11816 ++ *[0-9a-f]*: f6 04 24 22 plsl\.b r2,r11,0x4
1.11817 ++ *[0-9a-f]*: ea 07 24 28 plsl\.b r8,r5,0x7
1.11818 ++ *[0-9a-f]*: e0 02 24 2f plsl\.b pc,r0,0x2
1.11819 ++
1.11820 ++[0-9a-f]* <plsr_b>:
1.11821 ++ *[0-9a-f]*: fe 00 24 3f plsr\.b pc,pc,0x0
1.11822 ++ *[0-9a-f]*: f8 07 24 3c plsr\.b r12,r12,0x7
1.11823 ++ *[0-9a-f]*: ea 04 24 35 plsr\.b r5,r5,0x4
1.11824 ++ *[0-9a-f]*: e8 03 24 34 plsr\.b r4,r4,0x3
1.11825 ++ *[0-9a-f]*: fc 01 24 3e plsr\.b lr,lr,0x1
1.11826 ++ *[0-9a-f]*: e2 02 24 3c plsr\.b r12,r1,0x2
1.11827 ++ *[0-9a-f]*: fe 07 24 36 plsr\.b r6,pc,0x7
1.11828 ++ *[0-9a-f]*: f6 02 24 3c plsr\.b r12,r11,0x2
1.11829 ++
1.11830 ++[0-9a-f]* <pasr_h>:
1.11831 ++ *[0-9a-f]*: fe 00 24 4f pasr\.h pc,pc,0x0
1.11832 ++ *[0-9a-f]*: f8 0f 24 4c pasr\.h r12,r12,0xf
1.11833 ++ *[0-9a-f]*: ea 08 24 45 pasr\.h r5,r5,0x8
1.11834 ++ *[0-9a-f]*: e8 07 24 44 pasr\.h r4,r4,0x7
1.11835 ++ *[0-9a-f]*: fc 01 24 4e pasr\.h lr,lr,0x1
1.11836 ++ *[0-9a-f]*: f6 0a 24 40 pasr\.h r0,r11,0xa
1.11837 ++ *[0-9a-f]*: ec 08 24 44 pasr\.h r4,r6,0x8
1.11838 ++ *[0-9a-f]*: e4 04 24 46 pasr\.h r6,r2,0x4
1.11839 ++
1.11840 ++[0-9a-f]* <plsl_h>:
1.11841 ++ *[0-9a-f]*: fe 00 24 5f plsl\.h pc,pc,0x0
1.11842 ++ *[0-9a-f]*: f8 0f 24 5c plsl\.h r12,r12,0xf
1.11843 ++ *[0-9a-f]*: ea 08 24 55 plsl\.h r5,r5,0x8
1.11844 ++ *[0-9a-f]*: e8 07 24 54 plsl\.h r4,r4,0x7
1.11845 ++ *[0-9a-f]*: fc 01 24 5e plsl\.h lr,lr,0x1
1.11846 ++ *[0-9a-f]*: f4 09 24 55 plsl\.h r5,r10,0x9
1.11847 ++ *[0-9a-f]*: fc 08 24 5d plsl\.h sp,lr,0x8
1.11848 ++ *[0-9a-f]*: fc 07 24 50 plsl\.h r0,lr,0x7
1.11849 ++
1.11850 ++[0-9a-f]* <plsr_h>:
1.11851 ++ *[0-9a-f]*: fe 00 24 6f plsr\.h pc,pc,0x0
1.11852 ++ *[0-9a-f]*: f8 0f 24 6c plsr\.h r12,r12,0xf
1.11853 ++ *[0-9a-f]*: ea 08 24 65 plsr\.h r5,r5,0x8
1.11854 ++ *[0-9a-f]*: e8 07 24 64 plsr\.h r4,r4,0x7
1.11855 ++ *[0-9a-f]*: fc 01 24 6e plsr\.h lr,lr,0x1
1.11856 ++ *[0-9a-f]*: e0 0f 24 6b plsr\.h r11,r0,0xf
1.11857 ++ *[0-9a-f]*: e6 03 24 6e plsr\.h lr,r3,0x3
1.11858 ++ *[0-9a-f]*: fc 0a 24 68 plsr\.h r8,lr,0xa
1.11859 ++
1.11860 ++[0-9a-f]* <packw_sh>:
1.11861 ++ *[0-9a-f]*: fe 0f 24 7f packw\.sh pc,pc,pc
1.11862 ++ *[0-9a-f]*: f8 0c 24 7c packw\.sh r12,r12,r12
1.11863 ++ *[0-9a-f]*: ea 05 24 75 packw\.sh r5,r5,r5
1.11864 ++ *[0-9a-f]*: e8 04 24 74 packw\.sh r4,r4,r4
1.11865 ++ *[0-9a-f]*: fc 0e 24 7e packw\.sh lr,lr,lr
1.11866 ++ *[0-9a-f]*: f6 0a 24 7d packw\.sh sp,r11,r10
1.11867 ++ *[0-9a-f]*: e4 0c 24 78 packw\.sh r8,r2,r12
1.11868 ++ *[0-9a-f]*: e2 05 24 78 packw\.sh r8,r1,r5
1.11869 ++
1.11870 ++[0-9a-f]* <punpckub_h>:
1.11871 ++ *[0-9a-f]*: fe 00 24 8f punpckub\.h pc,pc:b
1.11872 ++ *[0-9a-f]*: f8 00 24 9c punpckub\.h r12,r12:t
1.11873 ++ *[0-9a-f]*: ea 00 24 95 punpckub\.h r5,r5:t
1.11874 ++ *[0-9a-f]*: e8 00 24 84 punpckub\.h r4,r4:b
1.11875 ++ *[0-9a-f]*: fc 00 24 9e punpckub\.h lr,lr:t
1.11876 ++ *[0-9a-f]*: e2 00 24 96 punpckub\.h r6,r1:t
1.11877 ++ *[0-9a-f]*: ea 00 24 8e punpckub\.h lr,r5:b
1.11878 ++ *[0-9a-f]*: e4 00 24 9e punpckub\.h lr,r2:t
1.11879 ++
1.11880 ++[0-9a-f]* <punpcksb_h>:
1.11881 ++ *[0-9a-f]*: fe 00 24 af punpcksb\.h pc,pc:b
1.11882 ++ *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t
1.11883 ++ *[0-9a-f]*: ea 00 24 b5 punpcksb\.h r5,r5:t
1.11884 ++ *[0-9a-f]*: e8 00 24 a4 punpcksb\.h r4,r4:b
1.11885 ++ *[0-9a-f]*: fc 00 24 be punpcksb\.h lr,lr:t
1.11886 ++ *[0-9a-f]*: ee 00 24 b4 punpcksb\.h r4,r7:t
1.11887 ++ *[0-9a-f]*: fc 00 24 a6 punpcksb\.h r6,lr:b
1.11888 ++ *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t
1.11889 ++
1.11890 ++[0-9a-f]* <packsh_ub>:
1.11891 ++ *[0-9a-f]*: fe 0f 24 cf packsh\.ub pc,pc,pc
1.11892 ++ *[0-9a-f]*: f8 0c 24 cc packsh\.ub r12,r12,r12
1.11893 ++ *[0-9a-f]*: ea 05 24 c5 packsh\.ub r5,r5,r5
1.11894 ++ *[0-9a-f]*: e8 04 24 c4 packsh\.ub r4,r4,r4
1.11895 ++ *[0-9a-f]*: fc 0e 24 ce packsh\.ub lr,lr,lr
1.11896 ++ *[0-9a-f]*: ec 03 24 c3 packsh\.ub r3,r6,r3
1.11897 ++ *[0-9a-f]*: e0 03 24 c8 packsh\.ub r8,r0,r3
1.11898 ++ *[0-9a-f]*: e6 0e 24 c9 packsh\.ub r9,r3,lr
1.11899 ++
1.11900 ++[0-9a-f]* <packsh_sb>:
1.11901 ++ *[0-9a-f]*: fe 0f 24 df packsh\.sb pc,pc,pc
1.11902 ++ *[0-9a-f]*: f8 0c 24 dc packsh\.sb r12,r12,r12
1.11903 ++ *[0-9a-f]*: ea 05 24 d5 packsh\.sb r5,r5,r5
1.11904 ++ *[0-9a-f]*: e8 04 24 d4 packsh\.sb r4,r4,r4
1.11905 ++ *[0-9a-f]*: fc 0e 24 de packsh\.sb lr,lr,lr
1.11906 ++ *[0-9a-f]*: f0 01 24 d6 packsh\.sb r6,r8,r1
1.11907 ++ *[0-9a-f]*: f2 08 24 de packsh\.sb lr,r9,r8
1.11908 ++ *[0-9a-f]*: ec 06 24 dd packsh\.sb sp,r6,r6
1.11909 ++
1.11910 ++[0-9a-f]* <andl>:
1.11911 ++ *[0-9a-f]*: e0 1f 00 00 andl pc,0x0
1.11912 ++ *[0-9a-f]*: e0 1c ff ff andl r12,0xffff
1.11913 ++ *[0-9a-f]*: e0 15 80 00 andl r5,0x8000
1.11914 ++ *[0-9a-f]*: e0 14 7f ff andl r4,0x7fff
1.11915 ++ *[0-9a-f]*: e0 1e 00 01 andl lr,0x1
1.11916 ++ *[0-9a-f]*: e0 1f 5a 58 andl pc,0x5a58
1.11917 ++ *[0-9a-f]*: e0 18 b8 9e andl r8,0xb89e
1.11918 ++ *[0-9a-f]*: e0 17 35 97 andl r7,0x3597
1.11919 ++
1.11920 ++[0-9a-f]* <andl_coh>:
1.11921 ++ *[0-9a-f]*: e2 1f 00 00 andl pc,0x0,COH
1.11922 ++ *[0-9a-f]*: e2 1c ff ff andl r12,0xffff,COH
1.11923 ++ *[0-9a-f]*: e2 15 80 00 andl r5,0x8000,COH
1.11924 ++ *[0-9a-f]*: e2 14 7f ff andl r4,0x7fff,COH
1.11925 ++ *[0-9a-f]*: e2 1e 00 01 andl lr,0x1,COH
1.11926 ++ *[0-9a-f]*: e2 16 58 e1 andl r6,0x58e1,COH
1.11927 ++ *[0-9a-f]*: e2 10 9e cd andl r0,0x9ecd,COH
1.11928 ++ *[0-9a-f]*: e2 14 bd c4 andl r4,0xbdc4,COH
1.11929 ++
1.11930 ++[0-9a-f]* <andh>:
1.11931 ++ *[0-9a-f]*: e4 1f 00 00 andh pc,0x0
1.11932 ++ *[0-9a-f]*: e4 1c ff ff andh r12,0xffff
1.11933 ++ *[0-9a-f]*: e4 15 80 00 andh r5,0x8000
1.11934 ++ *[0-9a-f]*: e4 14 7f ff andh r4,0x7fff
1.11935 ++ *[0-9a-f]*: e4 1e 00 01 andh lr,0x1
1.11936 ++ *[0-9a-f]*: e4 1c cc 58 andh r12,0xcc58
1.11937 ++ *[0-9a-f]*: e4 13 21 e3 andh r3,0x21e3
1.11938 ++ *[0-9a-f]*: e4 12 a7 eb andh r2,0xa7eb
1.11939 ++
1.11940 ++[0-9a-f]* <andh_coh>:
1.11941 ++ *[0-9a-f]*: e6 1f 00 00 andh pc,0x0,COH
1.11942 ++ *[0-9a-f]*: e6 1c ff ff andh r12,0xffff,COH
1.11943 ++ *[0-9a-f]*: e6 15 80 00 andh r5,0x8000,COH
1.11944 ++ *[0-9a-f]*: e6 14 7f ff andh r4,0x7fff,COH
1.11945 ++ *[0-9a-f]*: e6 1e 00 01 andh lr,0x1,COH
1.11946 ++ *[0-9a-f]*: e6 1b 86 0d andh r11,0x860d,COH
1.11947 ++ *[0-9a-f]*: e6 18 ce f6 andh r8,0xcef6,COH
1.11948 ++ *[0-9a-f]*: e6 1a 5c 83 andh r10,0x5c83,COH
1.11949 ++
1.11950 ++[0-9a-f]* <orl>:
1.11951 ++ *[0-9a-f]*: e8 1f 00 00 orl pc,0x0
1.11952 ++ *[0-9a-f]*: e8 1c ff ff orl r12,0xffff
1.11953 ++ *[0-9a-f]*: e8 15 80 00 orl r5,0x8000
1.11954 ++ *[0-9a-f]*: e8 14 7f ff orl r4,0x7fff
1.11955 ++ *[0-9a-f]*: e8 1e 00 01 orl lr,0x1
1.11956 ++ *[0-9a-f]*: e8 1d 41 7e orl sp,0x417e
1.11957 ++ *[0-9a-f]*: e8 10 52 bd orl r0,0x52bd
1.11958 ++ *[0-9a-f]*: e8 1f ac 47 orl pc,0xac47
1.11959 ++
1.11960 ++[0-9a-f]* <orh>:
1.11961 ++ *[0-9a-f]*: ea 1f 00 00 orh pc,0x0
1.11962 ++ *[0-9a-f]*: ea 1c ff ff orh r12,0xffff
1.11963 ++ *[0-9a-f]*: ea 15 80 00 orh r5,0x8000
1.11964 ++ *[0-9a-f]*: ea 14 7f ff orh r4,0x7fff
1.11965 ++ *[0-9a-f]*: ea 1e 00 01 orh lr,0x1
1.11966 ++ *[0-9a-f]*: ea 18 6e 7d orh r8,0x6e7d
1.11967 ++ *[0-9a-f]*: ea 1c 77 1c orh r12,0x771c
1.11968 ++ *[0-9a-f]*: ea 11 ea 1a orh r1,0xea1a
1.11969 ++
1.11970 ++[0-9a-f]* <eorl>:
1.11971 ++ *[0-9a-f]*: ec 1f 00 00 eorl pc,0x0
1.11972 ++ *[0-9a-f]*: ec 1c ff ff eorl r12,0xffff
1.11973 ++ *[0-9a-f]*: ec 15 80 00 eorl r5,0x8000
1.11974 ++ *[0-9a-f]*: ec 14 7f ff eorl r4,0x7fff
1.11975 ++ *[0-9a-f]*: ec 1e 00 01 eorl lr,0x1
1.11976 ++ *[0-9a-f]*: ec 14 c7 b9 eorl r4,0xc7b9
1.11977 ++ *[0-9a-f]*: ec 16 fb dd eorl r6,0xfbdd
1.11978 ++ *[0-9a-f]*: ec 11 51 b1 eorl r1,0x51b1
1.11979 ++
1.11980 ++[0-9a-f]* <eorh>:
1.11981 ++ *[0-9a-f]*: ee 1f 00 00 eorh pc,0x0
1.11982 ++ *[0-9a-f]*: ee 1c ff ff eorh r12,0xffff
1.11983 ++ *[0-9a-f]*: ee 15 80 00 eorh r5,0x8000
1.11984 ++ *[0-9a-f]*: ee 14 7f ff eorh r4,0x7fff
1.11985 ++ *[0-9a-f]*: ee 1e 00 01 eorh lr,0x1
1.11986 ++ *[0-9a-f]*: ee 10 2d d4 eorh r0,0x2dd4
1.11987 ++ *[0-9a-f]*: ee 1a 94 b5 eorh r10,0x94b5
1.11988 ++ *[0-9a-f]*: ee 19 df 2a eorh r9,0xdf2a
1.11989 ++
1.11990 ++[0-9a-f]* <mcall>:
1.11991 ++ *[0-9a-f]*: f0 1f 00 00 mcall [0-9a-f]* <.*>
1.11992 ++ *[0-9a-f]*: f0 1c ff ff mcall r12\[-4\]
1.11993 ++ *[0-9a-f]*: f0 15 80 00 mcall r5\[-131072\]
1.11994 ++ *[0-9a-f]*: f0 14 7f ff mcall r4\[131068\]
1.11995 ++ *[0-9a-f]*: f0 1e 00 01 mcall lr\[4\]
1.11996 ++ *[0-9a-f]*: f0 1d 3b bf mcall sp\[61180\]
1.11997 ++ *[0-9a-f]*: f0 14 dd d2 mcall r4\[-35000\]
1.11998 ++ *[0-9a-f]*: f0 10 09 b1 mcall r0\[9924\]
1.11999 ++
1.12000 ++[0-9a-f]* <pref>:
1.12001 ++ *[0-9a-f]*: f2 1f 00 00 pref pc\[0\]
1.12002 ++ *[0-9a-f]*: f2 1c ff ff pref r12\[-1\]
1.12003 ++ *[0-9a-f]*: f2 15 80 00 pref r5\[-32768\]
1.12004 ++ *[0-9a-f]*: f2 14 7f ff pref r4\[32767\]
1.12005 ++ *[0-9a-f]*: f2 1e 00 01 pref lr\[1\]
1.12006 ++ *[0-9a-f]*: f2 17 1e 44 pref r7\[7748\]
1.12007 ++ *[0-9a-f]*: f2 17 e1 ed pref r7\[-7699\]
1.12008 ++ *[0-9a-f]*: f2 12 9a dc pref r2\[-25892\]
1.12009 ++
1.12010 ++[0-9a-f]* <cache>:
1.12011 ++ *[0-9a-f]*: f4 1f 00 00 cache pc\[0\],0x0
1.12012 ++ *[0-9a-f]*: f4 1c ff ff cache r12\[-1\],0x1f
1.12013 ++ *[0-9a-f]*: f4 15 84 00 cache r5\[-1024\],0x10
1.12014 ++ *[0-9a-f]*: f4 14 7b ff cache r4\[1023\],0xf
1.12015 ++ *[0-9a-f]*: f4 1e 08 01 cache lr\[1\],0x1
1.12016 ++ *[0-9a-f]*: f4 13 8c 3c cache r3\[-964\],0x11
1.12017 ++ *[0-9a-f]*: f4 14 b6 89 cache r4\[-375\],0x16
1.12018 ++ *[0-9a-f]*: f4 13 8c 88 cache r3\[-888\],0x11
1.12019 ++
1.12020 ++[0-9a-f]* <sub4>:
1.12021 ++ *[0-9a-f]*: 20 0f sub pc,0
1.12022 ++ *[0-9a-f]*: 2f fc sub r12,-1
1.12023 ++ *[0-9a-f]*: f0 25 00 00 sub r5,-1048576
1.12024 ++ *[0-9a-f]*: ee 34 ff ff sub r4,1048575
1.12025 ++ *[0-9a-f]*: 20 1e sub lr,1
1.12026 ++ *[0-9a-f]*: f6 22 8d 6c sub r2,-619156
1.12027 ++ *[0-9a-f]*: e6 3e 0a cd sub lr,461517
1.12028 ++ *[0-9a-f]*: fc 38 2d 25 sub r8,-185051
1.12029 ++
1.12030 ++[0-9a-f]* <cp3>:
1.12031 ++ *[0-9a-f]*: 58 0f cp.w pc,0
1.12032 ++ *[0-9a-f]*: 5b fc cp.w r12,-1
1.12033 ++ *[0-9a-f]*: f0 45 00 00 cp.w r5,-1048576
1.12034 ++ *[0-9a-f]*: ee 54 ff ff cp.w r4,1048575
1.12035 ++ *[0-9a-f]*: 58 1e cp.w lr,1
1.12036 ++ *[0-9a-f]*: e0 51 e4 ae cp.w r1,124078
1.12037 ++ *[0-9a-f]*: fa 40 37 e3 cp.w r0,-378909
1.12038 ++ *[0-9a-f]*: fc 44 4a 14 cp.w r4,-243180
1.12039 ++
1.12040 ++[0-9a-f]* <mov2>:
1.12041 ++ *[0-9a-f]*: 30 0f mov pc,0
1.12042 ++ *[0-9a-f]*: 3f fc mov r12,-1
1.12043 ++ *[0-9a-f]*: f0 65 00 00 mov r5,-1048576
1.12044 ++ *[0-9a-f]*: ee 74 ff ff mov r4,1048575
1.12045 ++ *[0-9a-f]*: 30 1e mov lr,1
1.12046 ++ *[0-9a-f]*: fa 75 29 a3 mov r5,-317021
1.12047 ++ *[0-9a-f]*: f4 6d 91 94 mov sp,-749164
1.12048 ++ *[0-9a-f]*: ee 65 58 93 mov r5,940179
1.12049 ++
1.12050 ++[0-9a-f]* <brc2>:
1.12051 ++ *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*>
1.12052 ++ *[0-9a-f]*: fe 9f ff ff bral [0-9a-f]* <.*>
1.12053 ++ *[0-9a-f]*: f0 88 00 00 brls [0-9a-f]* <.*>
1.12054 ++ *[0-9a-f]*: ee 97 ff ff brpl [0-9a-f]* <.*>
1.12055 ++ *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*>
1.12056 ++ *[0-9a-f]*: f2 8b 4a 4d brhi [0-9a-f]* <.*>
1.12057 ++ *[0-9a-f]*: ea 8e 14 cc brqs [0-9a-f]* <.*>
1.12058 ++ *[0-9a-f]*: fa 98 98 33 brls [0-9a-f]* <.*>
1.12059 ++
1.12060 ++[0-9a-f]* <rcall2>:
1.12061 ++ *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*>
1.12062 ++ *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*>
1.12063 ++ *[0-9a-f]*: f0 a0 00 00 rcall [0-9a-f]* <.*>
1.12064 ++ *[0-9a-f]*: ee b0 ff ff rcall [0-9a-f]* <.*>
1.12065 ++ *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*>
1.12066 ++ *[0-9a-f]*: e2 b0 ca 5a rcall [0-9a-f]* <.*>
1.12067 ++ *[0-9a-f]*: e8 a0 47 52 rcall [0-9a-f]* <.*>
1.12068 ++ *[0-9a-f]*: fe b0 fd ef rcall [0-9a-f]* <.*>
1.12069 ++
1.12070 ++[0-9a-f]* <sub5>:
1.12071 ++ *[0-9a-f]*: fe cf 00 00 sub pc,pc,0
1.12072 ++ *[0-9a-f]*: f8 cc ff ff sub r12,r12,-1
1.12073 ++ *[0-9a-f]*: ea c5 80 00 sub r5,r5,-32768
1.12074 ++ *[0-9a-f]*: e8 c4 7f ff sub r4,r4,32767
1.12075 ++ *[0-9a-f]*: fc ce 00 01 sub lr,lr,1
1.12076 ++ *[0-9a-f]*: fe cf ce 38 sub pc,pc,-12744
1.12077 ++ *[0-9a-f]*: ee c7 95 1b sub r7,r7,-27365
1.12078 ++ *[0-9a-f]*: f2 c2 bc 32 sub r2,r9,-17358
1.12079 ++
1.12080 ++[0-9a-f]* <satsub_w2>:
1.12081 ++ *[0-9a-f]*: fe df 00 00 satsub\.w pc,pc,0
1.12082 ++ *[0-9a-f]*: f8 dc ff ff satsub\.w r12,r12,-1
1.12083 ++ *[0-9a-f]*: ea d5 80 00 satsub\.w r5,r5,-32768
1.12084 ++ *[0-9a-f]*: e8 d4 7f ff satsub\.w r4,r4,32767
1.12085 ++ *[0-9a-f]*: fc de 00 01 satsub\.w lr,lr,1
1.12086 ++ *[0-9a-f]*: fc d2 f8 29 satsub\.w r2,lr,-2007
1.12087 ++ *[0-9a-f]*: f8 d7 fc f0 satsub\.w r7,r12,-784
1.12088 ++ *[0-9a-f]*: ee d4 5a 8c satsub\.w r4,r7,23180
1.12089 ++
1.12090 ++[0-9a-f]* <ld_d4>:
1.12091 ++ *[0-9a-f]*: fe e0 00 00 ld\.d r0,pc\[0\]
1.12092 ++ *[0-9a-f]*: f8 ee ff ff ld\.d lr,r12\[-1\]
1.12093 ++ *[0-9a-f]*: ea e8 80 00 ld\.d r8,r5\[-32768\]
1.12094 ++ *[0-9a-f]*: e8 e6 7f ff ld\.d r6,r4\[32767\]
1.12095 ++ *[0-9a-f]*: fc e2 00 01 ld\.d r2,lr\[1\]
1.12096 ++ *[0-9a-f]*: f6 ee 39 c0 ld\.d lr,r11\[14784\]
1.12097 ++ *[0-9a-f]*: f2 e6 b6 27 ld\.d r6,r9\[-18905\]
1.12098 ++ *[0-9a-f]*: e6 e2 e7 2d ld\.d r2,r3\[-6355\]
1.12099 ++
1.12100 ++[0-9a-f]* <ld_w4>:
1.12101 ++ *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\]
1.12102 ++ *[0-9a-f]*: f8 fc ff ff ld\.w r12,r12\[-1\]
1.12103 ++ *[0-9a-f]*: ea f5 80 00 ld\.w r5,r5\[-32768\]
1.12104 ++ *[0-9a-f]*: e8 f4 7f ff ld\.w r4,r4\[32767\]
1.12105 ++ *[0-9a-f]*: fc fe 00 01 ld\.w lr,lr\[1\]
1.12106 ++ *[0-9a-f]*: f8 f0 a9 8b ld\.w r0,r12\[-22133\]
1.12107 ++ *[0-9a-f]*: fe fd af d7 ld\.w sp,pc\[-20521\]
1.12108 ++ *[0-9a-f]*: d7 03 nop
1.12109 ++
1.12110 ++[0-9a-f]* <ld_sh4>:
1.12111 ++ *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\]
1.12112 ++ *[0-9a-f]*: f9 0c ff ff ld\.sh r12,r12\[-1\]
1.12113 ++ *[0-9a-f]*: eb 05 80 00 ld\.sh r5,r5\[-32768\]
1.12114 ++ *[0-9a-f]*: e9 04 7f ff ld\.sh r4,r4\[32767\]
1.12115 ++ *[0-9a-f]*: fd 0e 00 01 ld\.sh lr,lr\[1\]
1.12116 ++ *[0-9a-f]*: f5 06 78 d2 ld\.sh r6,r10\[30930\]
1.12117 ++ *[0-9a-f]*: f5 06 55 d5 ld\.sh r6,r10\[21973\]
1.12118 ++ *[0-9a-f]*: d7 03 nop
1.12119 ++
1.12120 ++[0-9a-f]* <ld_uh4>:
1.12121 ++ *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\]
1.12122 ++ *[0-9a-f]*: f9 1c ff ff ld\.uh r12,r12\[-1\]
1.12123 ++ *[0-9a-f]*: eb 15 80 00 ld\.uh r5,r5\[-32768\]
1.12124 ++ *[0-9a-f]*: e9 14 7f ff ld\.uh r4,r4\[32767\]
1.12125 ++ *[0-9a-f]*: fd 1e 00 01 ld\.uh lr,lr\[1\]
1.12126 ++ *[0-9a-f]*: f3 11 cb d6 ld\.uh r1,r9\[-13354\]
1.12127 ++ *[0-9a-f]*: f7 1e 53 59 ld\.uh lr,r11\[21337\]
1.12128 ++ *[0-9a-f]*: d7 03 nop
1.12129 ++
1.12130 ++[0-9a-f]* <ld_sb1>:
1.12131 ++ *[0-9a-f]*: ff 2f 00 00 ld\.sb pc,pc\[0\]
1.12132 ++ *[0-9a-f]*: f9 2c ff ff ld\.sb r12,r12\[-1\]
1.12133 ++ *[0-9a-f]*: eb 25 80 00 ld\.sb r5,r5\[-32768\]
1.12134 ++ *[0-9a-f]*: e9 24 7f ff ld\.sb r4,r4\[32767\]
1.12135 ++ *[0-9a-f]*: fd 2e 00 01 ld\.sb lr,lr\[1\]
1.12136 ++ *[0-9a-f]*: fb 27 90 09 ld\.sb r7,sp\[-28663\]
1.12137 ++ *[0-9a-f]*: e3 22 e9 09 ld\.sb r2,r1\[-5879\]
1.12138 ++ *[0-9a-f]*: e7 2c 49 2e ld\.sb r12,r3\[18734\]
1.12139 ++
1.12140 ++[0-9a-f]* <ld_ub4>:
1.12141 ++ *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\]
1.12142 ++ *[0-9a-f]*: f9 3c ff ff ld\.ub r12,r12\[-1\]
1.12143 ++ *[0-9a-f]*: eb 35 80 00 ld\.ub r5,r5\[-32768\]
1.12144 ++ *[0-9a-f]*: e9 34 7f ff ld\.ub r4,r4\[32767\]
1.12145 ++ *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\]
1.12146 ++ *[0-9a-f]*: e9 3f 20 55 ld\.ub pc,r4\[8277\]
1.12147 ++ *[0-9a-f]*: f9 35 4a e4 ld\.ub r5,r12\[19172\]
1.12148 ++ *[0-9a-f]*: fd 3a 66 eb ld\.ub r10,lr\[26347\]
1.12149 ++
1.12150 ++[0-9a-f]* <st_d4>:
1.12151 ++ *[0-9a-f]*: fe e1 00 00 st\.d pc\[0\],r0
1.12152 ++ *[0-9a-f]*: f8 ef ff ff st\.d r12\[-1\],lr
1.12153 ++ *[0-9a-f]*: ea e9 80 00 st\.d r5\[-32768\],r8
1.12154 ++ *[0-9a-f]*: e8 e7 7f ff st\.d r4\[32767\],r6
1.12155 ++ *[0-9a-f]*: fc e3 00 01 st\.d lr\[1\],r2
1.12156 ++ *[0-9a-f]*: ea eb 33 90 st\.d r5\[13200\],r10
1.12157 ++ *[0-9a-f]*: ea eb 24 88 st\.d r5\[9352\],r10
1.12158 ++ *[0-9a-f]*: ea e5 7e 75 st\.d r5\[32373\],r4
1.12159 ++
1.12160 ++[0-9a-f]* <st_w4>:
1.12161 ++ *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc
1.12162 ++ *[0-9a-f]*: f9 4c ff ff st\.w r12\[-1\],r12
1.12163 ++ *[0-9a-f]*: eb 45 80 00 st\.w r5\[-32768\],r5
1.12164 ++ *[0-9a-f]*: e9 44 7f ff st\.w r4\[32767\],r4
1.12165 ++ *[0-9a-f]*: fd 4e 00 01 st\.w lr\[1\],lr
1.12166 ++ *[0-9a-f]*: fb 47 17 f8 st\.w sp\[6136\],r7
1.12167 ++ *[0-9a-f]*: ed 4c 69 cf st\.w r6\[27087\],r12
1.12168 ++ *[0-9a-f]*: d7 03 nop
1.12169 ++
1.12170 ++[0-9a-f]* <st_h4>:
1.12171 ++ *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc
1.12172 ++ *[0-9a-f]*: f9 5c ff ff st\.h r12\[-1\],r12
1.12173 ++ *[0-9a-f]*: eb 55 80 00 st\.h r5\[-32768\],r5
1.12174 ++ *[0-9a-f]*: e9 54 7f ff st\.h r4\[32767\],r4
1.12175 ++ *[0-9a-f]*: fd 5e 00 01 st\.h lr\[1\],lr
1.12176 ++ *[0-9a-f]*: e9 57 d9 16 st\.h r4\[-9962\],r7
1.12177 ++ *[0-9a-f]*: f3 53 c0 86 st\.h r9\[-16250\],r3
1.12178 ++ *[0-9a-f]*: d7 03 nop
1.12179 ++
1.12180 ++[0-9a-f]* <st_b4>:
1.12181 ++ *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc
1.12182 ++ *[0-9a-f]*: f9 6c ff ff st\.b r12\[-1\],r12
1.12183 ++ *[0-9a-f]*: eb 65 80 00 st\.b r5\[-32768\],r5
1.12184 ++ *[0-9a-f]*: e9 64 7f ff st\.b r4\[32767\],r4
1.12185 ++ *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr
1.12186 ++ *[0-9a-f]*: f9 66 75 96 st\.b r12\[30102\],r6
1.12187 ++ *[0-9a-f]*: eb 61 71 31 st\.b r5\[28977\],r1
1.12188 ++ *[0-9a-f]*: e1 61 15 5e st\.b r0\[5470\],r1
1.12189 ++
1.12190 ++[0-9a-f]* <mfsr>:
1.12191 ++ *[0-9a-f]*: e1 bf 00 00 mfsr pc,0x0
1.12192 ++ *[0-9a-f]*: e1 bc 00 ff mfsr r12,0x3fc
1.12193 ++ *[0-9a-f]*: e1 b5 00 80 mfsr r5,0x200
1.12194 ++ *[0-9a-f]*: e1 b4 00 7f mfsr r4,0x1fc
1.12195 ++ *[0-9a-f]*: e1 be 00 01 mfsr lr,0x4
1.12196 ++ *[0-9a-f]*: e1 b2 00 ae mfsr r2,0x2b8
1.12197 ++ *[0-9a-f]*: e1 b4 00 41 mfsr r4,0x104
1.12198 ++ *[0-9a-f]*: e1 ba 00 fe mfsr r10,0x3f8
1.12199 ++
1.12200 ++[0-9a-f]* <mtsr>:
1.12201 ++ *[0-9a-f]*: e3 bf 00 00 mtsr 0x0,pc
1.12202 ++ *[0-9a-f]*: e3 bc 00 ff mtsr 0x3fc,r12
1.12203 ++ *[0-9a-f]*: e3 b5 00 80 mtsr 0x200,r5
1.12204 ++ *[0-9a-f]*: e3 b4 00 7f mtsr 0x1fc,r4
1.12205 ++ *[0-9a-f]*: e3 be 00 01 mtsr 0x4,lr
1.12206 ++ *[0-9a-f]*: e3 ba 00 38 mtsr 0xe0,r10
1.12207 ++ *[0-9a-f]*: e3 bc 00 d1 mtsr 0x344,r12
1.12208 ++ *[0-9a-f]*: e3 b9 00 4c mtsr 0x130,r9
1.12209 ++
1.12210 ++[0-9a-f]* <mfdr>:
1.12211 ++ *[0-9a-f]*: e5 bf 00 00 mfdr pc,0x0
1.12212 ++ *[0-9a-f]*: e5 bc 00 ff mfdr r12,0x3fc
1.12213 ++ *[0-9a-f]*: e5 b5 00 80 mfdr r5,0x200
1.12214 ++ *[0-9a-f]*: e5 b4 00 7f mfdr r4,0x1fc
1.12215 ++ *[0-9a-f]*: e5 be 00 01 mfdr lr,0x4
1.12216 ++ *[0-9a-f]*: e5 b6 00 e9 mfdr r6,0x3a4
1.12217 ++ *[0-9a-f]*: e5 b5 00 09 mfdr r5,0x24
1.12218 ++ *[0-9a-f]*: e5 b9 00 4b mfdr r9,0x12c
1.12219 ++
1.12220 ++[0-9a-f]* <mtdr>:
1.12221 ++ *[0-9a-f]*: e7 bf 00 00 mtdr 0x0,pc
1.12222 ++ *[0-9a-f]*: e7 bc 00 ff mtdr 0x3fc,r12
1.12223 ++ *[0-9a-f]*: e7 b5 00 80 mtdr 0x200,r5
1.12224 ++ *[0-9a-f]*: e7 b4 00 7f mtdr 0x1fc,r4
1.12225 ++ *[0-9a-f]*: e7 be 00 01 mtdr 0x4,lr
1.12226 ++ *[0-9a-f]*: e7 b8 00 2d mtdr 0xb4,r8
1.12227 ++ *[0-9a-f]*: e7 ba 00 b4 mtdr 0x2d0,r10
1.12228 ++ *[0-9a-f]*: e7 be 00 66 mtdr 0x198,lr
1.12229 ++
1.12230 ++[0-9a-f]* <sleep>:
1.12231 ++ *[0-9a-f]*: e9 b0 00 00 sleep 0x0
1.12232 ++ *[0-9a-f]*: e9 b0 00 ff sleep 0xff
1.12233 ++ *[0-9a-f]*: e9 b0 00 80 sleep 0x80
1.12234 ++ *[0-9a-f]*: e9 b0 00 7f sleep 0x7f
1.12235 ++ *[0-9a-f]*: e9 b0 00 01 sleep 0x1
1.12236 ++ *[0-9a-f]*: e9 b0 00 fe sleep 0xfe
1.12237 ++ *[0-9a-f]*: e9 b0 00 0f sleep 0xf
1.12238 ++ *[0-9a-f]*: e9 b0 00 2b sleep 0x2b
1.12239 ++
1.12240 ++[0-9a-f]* <sync>:
1.12241 ++ *[0-9a-f]*: eb b0 00 00 sync 0x0
1.12242 ++ *[0-9a-f]*: eb b0 00 ff sync 0xff
1.12243 ++ *[0-9a-f]*: eb b0 00 80 sync 0x80
1.12244 ++ *[0-9a-f]*: eb b0 00 7f sync 0x7f
1.12245 ++ *[0-9a-f]*: eb b0 00 01 sync 0x1
1.12246 ++ *[0-9a-f]*: eb b0 00 a6 sync 0xa6
1.12247 ++ *[0-9a-f]*: eb b0 00 e6 sync 0xe6
1.12248 ++ *[0-9a-f]*: eb b0 00 b4 sync 0xb4
1.12249 ++
1.12250 ++[0-9a-f]* <bld>:
1.12251 ++ *[0-9a-f]*: ed bf 00 00 bld pc,0x0
1.12252 ++ *[0-9a-f]*: ed bc 00 1f bld r12,0x1f
1.12253 ++ *[0-9a-f]*: ed b5 00 10 bld r5,0x10
1.12254 ++ *[0-9a-f]*: ed b4 00 0f bld r4,0xf
1.12255 ++ *[0-9a-f]*: ed be 00 01 bld lr,0x1
1.12256 ++ *[0-9a-f]*: ed b9 00 0f bld r9,0xf
1.12257 ++ *[0-9a-f]*: ed b0 00 04 bld r0,0x4
1.12258 ++ *[0-9a-f]*: ed be 00 1a bld lr,0x1a
1.12259 ++
1.12260 ++[0-9a-f]* <bst>:
1.12261 ++ *[0-9a-f]*: ef bf 00 00 bst pc,0x0
1.12262 ++ *[0-9a-f]*: ef bc 00 1f bst r12,0x1f
1.12263 ++ *[0-9a-f]*: ef b5 00 10 bst r5,0x10
1.12264 ++ *[0-9a-f]*: ef b4 00 0f bst r4,0xf
1.12265 ++ *[0-9a-f]*: ef be 00 01 bst lr,0x1
1.12266 ++ *[0-9a-f]*: ef ba 00 1c bst r10,0x1c
1.12267 ++ *[0-9a-f]*: ef b0 00 03 bst r0,0x3
1.12268 ++ *[0-9a-f]*: ef bd 00 02 bst sp,0x2
1.12269 ++
1.12270 ++[0-9a-f]* <sats>:
1.12271 ++ *[0-9a-f]*: f1 bf 00 00 sats pc,0x0
1.12272 ++ *[0-9a-f]*: f1 bc 03 ff sats r12>>0x1f,0x1f
1.12273 ++ *[0-9a-f]*: f1 b5 02 10 sats r5>>0x10,0x10
1.12274 ++ *[0-9a-f]*: f1 b4 01 ef sats r4>>0xf,0xf
1.12275 ++ *[0-9a-f]*: f1 be 00 21 sats lr>>0x1,0x1
1.12276 ++ *[0-9a-f]*: f1 ba 02 63 sats r10>>0x3,0x13
1.12277 ++ *[0-9a-f]*: f1 ba 03 42 sats r10>>0x2,0x1a
1.12278 ++ *[0-9a-f]*: f1 b1 00 34 sats r1>>0x14,0x1
1.12279 ++
1.12280 ++[0-9a-f]* <satu>:
1.12281 ++ *[0-9a-f]*: f1 bf 04 00 satu pc,0x0
1.12282 ++ *[0-9a-f]*: f1 bc 07 ff satu r12>>0x1f,0x1f
1.12283 ++ *[0-9a-f]*: f1 b5 06 10 satu r5>>0x10,0x10
1.12284 ++ *[0-9a-f]*: f1 b4 05 ef satu r4>>0xf,0xf
1.12285 ++ *[0-9a-f]*: f1 be 04 21 satu lr>>0x1,0x1
1.12286 ++ *[0-9a-f]*: f1 bf 04 e5 satu pc>>0x5,0x7
1.12287 ++ *[0-9a-f]*: f1 b7 04 a5 satu r7>>0x5,0x5
1.12288 ++ *[0-9a-f]*: f1 b2 06 7a satu r2>>0x1a,0x13
1.12289 ++
1.12290 ++[0-9a-f]* <satrnds>:
1.12291 ++ *[0-9a-f]*: f3 bf 00 00 satrnds pc,0x0
1.12292 ++ *[0-9a-f]*: f3 bc 03 ff satrnds r12>>0x1f,0x1f
1.12293 ++ *[0-9a-f]*: f3 b5 02 10 satrnds r5>>0x10,0x10
1.12294 ++ *[0-9a-f]*: f3 b4 01 ef satrnds r4>>0xf,0xf
1.12295 ++ *[0-9a-f]*: f3 be 00 21 satrnds lr>>0x1,0x1
1.12296 ++ *[0-9a-f]*: f3 b0 02 75 satrnds r0>>0x15,0x13
1.12297 ++ *[0-9a-f]*: f3 bd 00 40 satrnds sp,0x2
1.12298 ++ *[0-9a-f]*: f3 b7 03 a6 satrnds r7>>0x6,0x1d
1.12299 ++
1.12300 ++[0-9a-f]* <satrndu>:
1.12301 ++ *[0-9a-f]*: f3 bf 04 00 satrndu pc,0x0
1.12302 ++ *[0-9a-f]*: f3 bc 07 ff satrndu r12>>0x1f,0x1f
1.12303 ++ *[0-9a-f]*: f3 b5 06 10 satrndu r5>>0x10,0x10
1.12304 ++ *[0-9a-f]*: f3 b4 05 ef satrndu r4>>0xf,0xf
1.12305 ++ *[0-9a-f]*: f3 be 04 21 satrndu lr>>0x1,0x1
1.12306 ++ *[0-9a-f]*: f3 bc 07 40 satrndu r12,0x1a
1.12307 ++ *[0-9a-f]*: f3 b4 04 75 satrndu r4>>0x15,0x3
1.12308 ++ *[0-9a-f]*: f3 ba 06 03 satrndu r10>>0x3,0x10
1.12309 ++
1.12310 ++[0-9a-f]* <subfc>:
1.12311 ++ *[0-9a-f]*: f5 bf 00 00 subfeq pc,0
1.12312 ++ *[0-9a-f]*: f5 bc 0f ff subfal r12,-1
1.12313 ++ *[0-9a-f]*: f5 b5 08 80 subfls r5,-128
1.12314 ++ *[0-9a-f]*: f5 b4 07 7f subfpl r4,127
1.12315 ++ *[0-9a-f]*: f5 be 01 01 subfne lr,1
1.12316 ++ *[0-9a-f]*: f5 ba 08 08 subfls r10,8
1.12317 ++ *[0-9a-f]*: f5 bb 0d 63 subfvc r11,99
1.12318 ++ *[0-9a-f]*: f5 b2 0c 49 subfvs r2,73
1.12319 ++
1.12320 ++[0-9a-f]* <subc>:
1.12321 ++ *[0-9a-f]*: f7 bf 00 00 subeq pc,0
1.12322 ++ *[0-9a-f]*: f7 bc 0f ff subal r12,-1
1.12323 ++ *[0-9a-f]*: f7 b5 08 80 subls r5,-128
1.12324 ++ *[0-9a-f]*: f7 b4 07 7f subpl r4,127
1.12325 ++ *[0-9a-f]*: f7 be 01 01 subne lr,1
1.12326 ++ *[0-9a-f]*: f7 bc 08 76 subls r12,118
1.12327 ++ *[0-9a-f]*: f7 be 0d f4 subvc lr,-12
1.12328 ++ *[0-9a-f]*: f7 b4 06 f3 submi r4,-13
1.12329 ++
1.12330 ++[0-9a-f]* <movc2>:
1.12331 ++ *[0-9a-f]*: f9 bf 00 00 moveq pc,0
1.12332 ++ *[0-9a-f]*: f9 bc 0f ff moval r12,-1
1.12333 ++ *[0-9a-f]*: f9 b5 08 80 movls r5,-128
1.12334 ++ *[0-9a-f]*: f9 b4 07 7f movpl r4,127
1.12335 ++ *[0-9a-f]*: f9 be 01 01 movne lr,1
1.12336 ++ *[0-9a-f]*: f9 b3 05 86 movlt r3,-122
1.12337 ++ *[0-9a-f]*: f9 b8 0d 02 movvc r8,2
1.12338 ++ *[0-9a-f]*: f9 b7 01 91 movne r7,-111
1.12339 ++
1.12340 ++[0-9a-f]* <cp_b>:
1.12341 ++ *[0-9a-f]*: e0 0f 18 00 cp\.b pc,r0
1.12342 ++ *[0-9a-f]*: fe 00 18 00 cp\.b r0,pc
1.12343 ++ *[0-9a-f]*: f0 07 18 00 cp\.b r7,r8
1.12344 ++ *[0-9a-f]*: ee 08 18 00 cp\.b r8,r7
1.12345 ++
1.12346 ++[0-9a-f]* <cp_h>:
1.12347 ++ *[0-9a-f]*: e0 0f 19 00 cp\.h pc,r0
1.12348 ++ *[0-9a-f]*: fe 00 19 00 cp\.h r0,pc
1.12349 ++ *[0-9a-f]*: f0 07 19 00 cp\.h r7,r8
1.12350 ++ *[0-9a-f]*: ee 08 19 00 cp\.h r8,r7
1.12351 ++
1.12352 ++[0-9a-f]* <ldm>:
1.12353 ++ *[0-9a-f]*: e1 cf 00 7e ldm pc,r1-r6
1.12354 ++ *[0-9a-f]*: e1 cc ff ff ldm r12,r0-pc
1.12355 ++ *[0-9a-f]*: e1 c5 80 00 ldm r5,pc
1.12356 ++ *[0-9a-f]*: e1 c4 7f ff ldm r4,r0-lr
1.12357 ++ *[0-9a-f]*: e1 ce 00 01 ldm lr,r0
1.12358 ++ *[0-9a-f]*: e1 c9 40 22 ldm r9,r1,r5,lr
1.12359 ++ *[0-9a-f]*: e1 cb 81 ec ldm r11,r2-r3,r5-r8,pc
1.12360 ++ *[0-9a-f]*: e1 c6 a2 09 ldm r6,r0,r3,r9,sp,pc
1.12361 ++
1.12362 ++[0-9a-f]* <ldm_pu>:
1.12363 ++ *[0-9a-f]*: e3 cf 03 c0 ldm pc\+\+,r6-r9
1.12364 ++ *[0-9a-f]*: e3 cc ff ff ldm r12\+\+,r0-pc
1.12365 ++ *[0-9a-f]*: e3 c5 80 00 ldm r5\+\+,pc
1.12366 ++ *[0-9a-f]*: e3 c4 7f ff ldm r4\+\+,r0-lr
1.12367 ++ *[0-9a-f]*: e3 ce 00 01 ldm lr\+\+,r0
1.12368 ++ *[0-9a-f]*: e3 cc d5 38 ldm r12\+\+,r3-r5,r8,r10,r12,lr-pc
1.12369 ++ *[0-9a-f]*: e3 ca c0 74 ldm r10\+\+,r2,r4-r6,lr-pc
1.12370 ++ *[0-9a-f]*: e3 c6 7e 1a ldm r6\+\+,r1,r3-r4,r9-lr
1.12371 ++
1.12372 ++[0-9a-f]* <ldmts>:
1.12373 ++ *[0-9a-f]*: e5 cf 01 80 ldmts pc,r7-r8
1.12374 ++ *[0-9a-f]*: e5 cc ff ff ldmts r12,r0-pc
1.12375 ++ *[0-9a-f]*: e5 c5 80 00 ldmts r5,pc
1.12376 ++ *[0-9a-f]*: e5 c4 7f ff ldmts r4,r0-lr
1.12377 ++ *[0-9a-f]*: e5 ce 00 01 ldmts lr,r0
1.12378 ++ *[0-9a-f]*: e5 c0 18 06 ldmts r0,r1-r2,r11-r12
1.12379 ++ *[0-9a-f]*: e5 ce 61 97 ldmts lr,r0-r2,r4,r7-r8,sp-lr
1.12380 ++ *[0-9a-f]*: e5 cc c2 3b ldmts r12,r0-r1,r3-r5,r9,lr-pc
1.12381 ++
1.12382 ++[0-9a-f]* <ldmts_pu>:
1.12383 ++ *[0-9a-f]*: e7 cf 02 00 ldmts pc\+\+,r9
1.12384 ++ *[0-9a-f]*: e7 cc ff ff ldmts r12\+\+,r0-pc
1.12385 ++ *[0-9a-f]*: e7 c5 80 00 ldmts r5\+\+,pc
1.12386 ++ *[0-9a-f]*: e7 c4 7f ff ldmts r4\+\+,r0-lr
1.12387 ++ *[0-9a-f]*: e7 ce 00 01 ldmts lr\+\+,r0
1.12388 ++ *[0-9a-f]*: e7 cd 0a bd ldmts sp\+\+,r0,r2-r5,r7,r9,r11
1.12389 ++ *[0-9a-f]*: e7 c5 0c 8e ldmts r5\+\+,r1-r3,r7,r10-r11
1.12390 ++ *[0-9a-f]*: e7 c8 a1 9c ldmts r8\+\+,r2-r4,r7-r8,sp,pc
1.12391 ++
1.12392 ++[0-9a-f]* <stm>:
1.12393 ++ *[0-9a-f]*: e9 cf 00 80 stm pc,r7
1.12394 ++ *[0-9a-f]*: e9 cc ff ff stm r12,r0-pc
1.12395 ++ *[0-9a-f]*: e9 c5 80 00 stm r5,pc
1.12396 ++ *[0-9a-f]*: e9 c4 7f ff stm r4,r0-lr
1.12397 ++ *[0-9a-f]*: e9 ce 00 01 stm lr,r0
1.12398 ++ *[0-9a-f]*: e9 cd 49 2c stm sp,r2-r3,r5,r8,r11,lr
1.12399 ++ *[0-9a-f]*: e9 c4 4c 5f stm r4,r0-r4,r6,r10-r11,lr
1.12400 ++ *[0-9a-f]*: e9 c9 f2 22 stm r9,r1,r5,r9,r12-pc
1.12401 ++
1.12402 ++[0-9a-f]* <stm_pu>:
1.12403 ++ *[0-9a-f]*: eb cf 00 70 stm --pc,r4-r6
1.12404 ++ *[0-9a-f]*: eb cc ff ff stm --r12,r0-pc
1.12405 ++ *[0-9a-f]*: eb c5 80 00 stm --r5,pc
1.12406 ++ *[0-9a-f]*: eb c4 7f ff stm --r4,r0-lr
1.12407 ++ *[0-9a-f]*: eb ce 00 01 stm --lr,r0
1.12408 ++ *[0-9a-f]*: eb cb fb f1 stm --r11,r0,r4-r9,r11-pc
1.12409 ++ *[0-9a-f]*: eb cb 56 09 stm --r11,r0,r3,r9-r10,r12,lr
1.12410 ++ *[0-9a-f]*: eb c6 63 04 stm --r6,r2,r8-r9,sp-lr
1.12411 ++
1.12412 ++[0-9a-f]* <stmts>:
1.12413 ++ *[0-9a-f]*: ed cf 01 00 stmts pc,r8
1.12414 ++ *[0-9a-f]*: ed cc ff ff stmts r12,r0-pc
1.12415 ++ *[0-9a-f]*: ed c5 80 00 stmts r5,pc
1.12416 ++ *[0-9a-f]*: ed c4 7f ff stmts r4,r0-lr
1.12417 ++ *[0-9a-f]*: ed ce 00 01 stmts lr,r0
1.12418 ++ *[0-9a-f]*: ed c1 c6 5b stmts r1,r0-r1,r3-r4,r6,r9-r10,lr-pc
1.12419 ++ *[0-9a-f]*: ed c3 1d c1 stmts r3,r0,r6-r8,r10-r12
1.12420 ++ *[0-9a-f]*: ed cb d6 d1 stmts r11,r0,r4,r6-r7,r9-r10,r12,lr-pc
1.12421 ++
1.12422 ++[0-9a-f]* <stmts_pu>:
1.12423 ++ *[0-9a-f]*: ef cf 01 c0 stmts --pc,r6-r8
1.12424 ++ *[0-9a-f]*: ef cc ff ff stmts --r12,r0-pc
1.12425 ++ *[0-9a-f]*: ef c5 80 00 stmts --r5,pc
1.12426 ++ *[0-9a-f]*: ef c4 7f ff stmts --r4,r0-lr
1.12427 ++ *[0-9a-f]*: ef ce 00 01 stmts --lr,r0
1.12428 ++ *[0-9a-f]*: ef c2 36 19 stmts --r2,r0,r3-r4,r9-r10,r12-sp
1.12429 ++ *[0-9a-f]*: ef c3 c0 03 stmts --r3,r0-r1,lr-pc
1.12430 ++ *[0-9a-f]*: ef c0 44 7d stmts --r0,r0,r2-r6,r10,lr
1.12431 ++
1.12432 ++[0-9a-f]* <ldins_h>:
1.12433 ++ *[0-9a-f]*: ff df 00 00 ldins\.h pc:b,pc\[0\]
1.12434 ++ *[0-9a-f]*: f9 dc 1f ff ldins\.h r12:t,r12\[-2\]
1.12435 ++ *[0-9a-f]*: eb d5 18 00 ldins\.h r5:t,r5\[-4096\]
1.12436 ++ *[0-9a-f]*: e9 d4 07 ff ldins\.h r4:b,r4\[4094\]
1.12437 ++ *[0-9a-f]*: fd de 10 01 ldins\.h lr:t,lr\[2\]
1.12438 ++ *[0-9a-f]*: fd d0 13 c5 ldins\.h r0:t,lr\[1930\]
1.12439 ++ *[0-9a-f]*: ef d3 0e f5 ldins\.h r3:b,r7\[-534\]
1.12440 ++ *[0-9a-f]*: f9 d2 0b 9a ldins\.h r2:b,r12\[-2252\]
1.12441 ++
1.12442 ++[0-9a-f]* <ldins_b>:
1.12443 ++ *[0-9a-f]*: ff df 40 00 ldins\.b pc:b,pc\[0\]
1.12444 ++ *[0-9a-f]*: f9 dc 7f ff ldins\.b r12:t,r12\[-1\]
1.12445 ++ *[0-9a-f]*: eb d5 68 00 ldins\.b r5:u,r5\[-2048\]
1.12446 ++ *[0-9a-f]*: e9 d4 57 ff ldins\.b r4:l,r4\[2047\]
1.12447 ++ *[0-9a-f]*: fd de 50 01 ldins\.b lr:l,lr\[1\]
1.12448 ++ *[0-9a-f]*: e9 d6 7d 6a ldins\.b r6:t,r4\[-662\]
1.12449 ++ *[0-9a-f]*: e3 d5 4f 69 ldins\.b r5:b,r1\[-151\]
1.12450 ++ *[0-9a-f]*: f7 da 78 7d ldins\.b r10:t,r11\[-1923\]
1.12451 ++
1.12452 ++[0-9a-f]* <ldswp_sh>:
1.12453 ++ *[0-9a-f]*: ff df 20 00 ldswp\.sh pc,pc\[0\]
1.12454 ++ *[0-9a-f]*: f9 dc 2f ff ldswp\.sh r12,r12\[-2\]
1.12455 ++ *[0-9a-f]*: eb d5 28 00 ldswp\.sh r5,r5\[-4096\]
1.12456 ++ *[0-9a-f]*: e9 d4 27 ff ldswp\.sh r4,r4\[4094\]
1.12457 ++ *[0-9a-f]*: fd de 20 01 ldswp\.sh lr,lr\[2\]
1.12458 ++ *[0-9a-f]*: f5 d9 27 84 ldswp\.sh r9,r10\[3848\]
1.12459 ++ *[0-9a-f]*: f9 d4 2c 04 ldswp\.sh r4,r12\[-2040\]
1.12460 ++ *[0-9a-f]*: e5 da 26 08 ldswp\.sh r10,r2\[3088\]
1.12461 ++
1.12462 ++[0-9a-f]* <ldswp_uh>:
1.12463 ++ *[0-9a-f]*: ff df 30 00 ldswp\.uh pc,pc\[0\]
1.12464 ++ *[0-9a-f]*: f9 dc 3f ff ldswp\.uh r12,r12\[-2\]
1.12465 ++ *[0-9a-f]*: eb d5 38 00 ldswp\.uh r5,r5\[-4096\]
1.12466 ++ *[0-9a-f]*: e9 d4 37 ff ldswp\.uh r4,r4\[4094\]
1.12467 ++ *[0-9a-f]*: fd de 30 01 ldswp\.uh lr,lr\[2\]
1.12468 ++ *[0-9a-f]*: f3 d4 37 46 ldswp\.uh r4,r9\[3724\]
1.12469 ++ *[0-9a-f]*: fb de 3c bc ldswp\.uh lr,sp\[-1672\]
1.12470 ++ *[0-9a-f]*: f9 d8 38 7d ldswp\.uh r8,r12\[-3846\]
1.12471 ++
1.12472 ++[0-9a-f]* <ldswp_w>:
1.12473 ++ *[0-9a-f]*: ff df 80 00 ldswp\.w pc,pc\[0\]
1.12474 ++ *[0-9a-f]*: f9 dc 8f ff ldswp\.w r12,r12\[-4\]
1.12475 ++ *[0-9a-f]*: eb d5 88 00 ldswp\.w r5,r5\[-8192\]
1.12476 ++ *[0-9a-f]*: e9 d4 87 ff ldswp\.w r4,r4\[8188\]
1.12477 ++ *[0-9a-f]*: fd de 80 01 ldswp\.w lr,lr\[4\]
1.12478 ++ *[0-9a-f]*: ef dd 81 d1 ldswp\.w sp,r7\[1860\]
1.12479 ++ *[0-9a-f]*: eb df 8c c1 ldswp\.w pc,r5\[-3324\]
1.12480 ++ *[0-9a-f]*: f5 dc 8c c8 ldswp\.w r12,r10\[-3296\]
1.12481 ++
1.12482 ++[0-9a-f]* <stswp_h>:
1.12483 ++ *[0-9a-f]*: ff df 90 00 stswp\.h pc\[0\],pc
1.12484 ++ *[0-9a-f]*: f9 dc 9f ff stswp\.h r12\[-2\],r12
1.12485 ++ *[0-9a-f]*: eb d5 98 00 stswp\.h r5\[-4096\],r5
1.12486 ++ *[0-9a-f]*: e9 d4 97 ff stswp\.h r4\[4094\],r4
1.12487 ++ *[0-9a-f]*: fd de 90 01 stswp\.h lr\[2\],lr
1.12488 ++ *[0-9a-f]*: ef da 90 20 stswp\.h r7\[64\],r10
1.12489 ++ *[0-9a-f]*: f5 d2 95 e8 stswp\.h r10\[3024\],r2
1.12490 ++ *[0-9a-f]*: e1 da 9b 74 stswp\.h r0\[-2328\],r10
1.12491 ++
1.12492 ++[0-9a-f]* <stswp_w>:
1.12493 ++ *[0-9a-f]*: ff df a0 00 stswp\.w pc\[0\],pc
1.12494 ++ *[0-9a-f]*: f9 dc af ff stswp\.w r12\[-4\],r12
1.12495 ++ *[0-9a-f]*: eb d5 a8 00 stswp\.w r5\[-8192\],r5
1.12496 ++ *[0-9a-f]*: e9 d4 a7 ff stswp\.w r4\[8188\],r4
1.12497 ++ *[0-9a-f]*: fd de a0 01 stswp\.w lr\[4\],lr
1.12498 ++ *[0-9a-f]*: ff d8 a1 21 stswp\.w pc\[1156\],r8
1.12499 ++ *[0-9a-f]*: fb da a7 ce stswp\.w sp\[7992\],r10
1.12500 ++ *[0-9a-f]*: f1 d5 ae db stswp\.w r8\[-1172\],r5
1.12501 ++
1.12502 ++[0-9a-f]* <and2>:
1.12503 ++ *[0-9a-f]*: ff ef 00 0f and pc,pc,pc
1.12504 ++ *[0-9a-f]*: f9 ec 01 fc and r12,r12,r12<<0x1f
1.12505 ++ *[0-9a-f]*: eb e5 01 05 and r5,r5,r5<<0x10
1.12506 ++ *[0-9a-f]*: e9 e4 00 f4 and r4,r4,r4<<0xf
1.12507 ++ *[0-9a-f]*: fd ee 00 1e and lr,lr,lr<<0x1
1.12508 ++ *[0-9a-f]*: e5 e1 00 1a and r10,r2,r1<<0x1
1.12509 ++ *[0-9a-f]*: f1 eb 01 bc and r12,r8,r11<<0x1b
1.12510 ++ *[0-9a-f]*: ef e0 00 3a and r10,r7,r0<<0x3
1.12511 ++
1.12512 ++[0-9a-f]* <and3>:
1.12513 ++ *[0-9a-f]*: ff ef 02 0f and pc,pc,pc
1.12514 ++ *[0-9a-f]*: f9 ec 03 fc and r12,r12,r12>>0x1f
1.12515 ++ *[0-9a-f]*: eb e5 03 05 and r5,r5,r5>>0x10
1.12516 ++ *[0-9a-f]*: e9 e4 02 f4 and r4,r4,r4>>0xf
1.12517 ++ *[0-9a-f]*: fd ee 02 1e and lr,lr,lr>>0x1
1.12518 ++ *[0-9a-f]*: f1 e7 03 1c and r12,r8,r7>>0x11
1.12519 ++ *[0-9a-f]*: e9 e9 03 4f and pc,r4,r9>>0x14
1.12520 ++ *[0-9a-f]*: f3 ea 02 ca and r10,r9,r10>>0xc
1.12521 ++
1.12522 ++[0-9a-f]* <or2>:
1.12523 ++ *[0-9a-f]*: ff ef 10 0f or pc,pc,pc
1.12524 ++ *[0-9a-f]*: f9 ec 11 fc or r12,r12,r12<<0x1f
1.12525 ++ *[0-9a-f]*: eb e5 11 05 or r5,r5,r5<<0x10
1.12526 ++ *[0-9a-f]*: e9 e4 10 f4 or r4,r4,r4<<0xf
1.12527 ++ *[0-9a-f]*: fd ee 10 1e or lr,lr,lr<<0x1
1.12528 ++ *[0-9a-f]*: fb eb 11 d8 or r8,sp,r11<<0x1d
1.12529 ++ *[0-9a-f]*: f3 e2 11 cf or pc,r9,r2<<0x1c
1.12530 ++ *[0-9a-f]*: e3 e2 10 35 or r5,r1,r2<<0x3
1.12531 ++
1.12532 ++[0-9a-f]* <or3>:
1.12533 ++ *[0-9a-f]*: ff ef 12 0f or pc,pc,pc
1.12534 ++ *[0-9a-f]*: f9 ec 13 fc or r12,r12,r12>>0x1f
1.12535 ++ *[0-9a-f]*: eb e5 13 05 or r5,r5,r5>>0x10
1.12536 ++ *[0-9a-f]*: e9 e4 12 f4 or r4,r4,r4>>0xf
1.12537 ++ *[0-9a-f]*: fd ee 12 1e or lr,lr,lr>>0x1
1.12538 ++ *[0-9a-f]*: fb ed 12 21 or r1,sp,sp>>0x2
1.12539 ++ *[0-9a-f]*: e3 e1 13 d0 or r0,r1,r1>>0x1d
1.12540 ++ *[0-9a-f]*: f9 e8 12 84 or r4,r12,r8>>0x8
1.12541 ++
1.12542 ++[0-9a-f]* <eor2>:
1.12543 ++ *[0-9a-f]*: ff ef 20 0f eor pc,pc,pc
1.12544 ++ *[0-9a-f]*: f9 ec 21 fc eor r12,r12,r12<<0x1f
1.12545 ++ *[0-9a-f]*: eb e5 21 05 eor r5,r5,r5<<0x10
1.12546 ++ *[0-9a-f]*: e9 e4 20 f4 eor r4,r4,r4<<0xf
1.12547 ++ *[0-9a-f]*: fd ee 20 1e eor lr,lr,lr<<0x1
1.12548 ++ *[0-9a-f]*: f3 e4 20 ba eor r10,r9,r4<<0xb
1.12549 ++ *[0-9a-f]*: e1 e1 21 f4 eor r4,r0,r1<<0x1f
1.12550 ++ *[0-9a-f]*: e5 ec 20 d6 eor r6,r2,r12<<0xd
1.12551 ++
1.12552 ++[0-9a-f]* <eor3>:
1.12553 ++ *[0-9a-f]*: ff ef 22 0f eor pc,pc,pc
1.12554 ++ *[0-9a-f]*: f9 ec 23 fc eor r12,r12,r12>>0x1f
1.12555 ++ *[0-9a-f]*: eb e5 23 05 eor r5,r5,r5>>0x10
1.12556 ++ *[0-9a-f]*: e9 e4 22 f4 eor r4,r4,r4>>0xf
1.12557 ++ *[0-9a-f]*: fd ee 22 1e eor lr,lr,lr>>0x1
1.12558 ++ *[0-9a-f]*: eb e5 23 65 eor r5,r5,r5>>0x16
1.12559 ++ *[0-9a-f]*: e3 ee 22 3a eor r10,r1,lr>>0x3
1.12560 ++ *[0-9a-f]*: fd ed 23 a7 eor r7,lr,sp>>0x1a
1.12561 ++
1.12562 ++[0-9a-f]* <sthh_w2>:
1.12563 ++ *[0-9a-f]*: ff ef 8f 0f sthh\.w pc\[pc\],pc:b,pc:b
1.12564 ++ *[0-9a-f]*: f9 ec bc 3c sthh\.w r12\[r12<<0x3\],r12:t,r12:t
1.12565 ++ *[0-9a-f]*: eb e5 b5 25 sthh\.w r5\[r5<<0x2\],r5:t,r5:t
1.12566 ++ *[0-9a-f]*: e9 e4 84 14 sthh\.w r4\[r4<<0x1\],r4:b,r4:b
1.12567 ++ *[0-9a-f]*: fd ee be 1e sthh\.w lr\[lr<<0x1\],lr:t,lr:t
1.12568 ++ *[0-9a-f]*: e3 ec b6 3d sthh\.w sp\[r6<<0x3\],r1:t,r12:t
1.12569 ++ *[0-9a-f]*: f3 e9 b6 06 sthh\.w r6\[r6\],r9:t,r9:t
1.12570 ++ *[0-9a-f]*: e1 eb 93 0a sthh\.w r10\[r3\],r0:b,r11:t
1.12571 ++
1.12572 ++[0-9a-f]* <sthh_w1>:
1.12573 ++ *[0-9a-f]*: ff ef c0 0f sthh\.w pc\[0x0\],pc:b,pc:b
1.12574 ++ *[0-9a-f]*: f9 ec ff fc sthh\.w r12\[0x3fc\],r12:t,r12:t
1.12575 ++ *[0-9a-f]*: eb e5 f8 05 sthh\.w r5\[0x200\],r5:t,r5:t
1.12576 ++ *[0-9a-f]*: e9 e4 c7 f4 sthh\.w r4\[0x1fc\],r4:b,r4:b
1.12577 ++ *[0-9a-f]*: fd ee f0 1e sthh\.w lr\[0x4\],lr:t,lr:t
1.12578 ++ *[0-9a-f]*: f3 e0 e6 54 sthh\.w r4\[0x194\],r9:t,r0:b
1.12579 ++ *[0-9a-f]*: e5 ea e5 78 sthh\.w r8\[0x15c\],r2:t,r10:b
1.12580 ++ *[0-9a-f]*: f3 e2 c2 bd sthh\.w sp\[0xac\],r9:b,r2:b
1.12581 ++
1.12582 ++[0-9a-f]* <cop>:
1.12583 ++ *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0
1.12584 ++ *[0-9a-f]*: e7 af ff ff cop cp7,cr15,cr15,cr15,0x7f
1.12585 ++ *[0-9a-f]*: e3 a8 75 55 cop cp3,cr5,cr5,cr5,0x31
1.12586 ++ *[0-9a-f]*: e3 a8 44 44 cop cp2,cr4,cr4,cr4,0x30
1.12587 ++ *[0-9a-f]*: e5 ad a8 37 cop cp5,cr8,cr3,cr7,0x5a
1.12588 ++
1.12589 ++[0-9a-f]* <ldc_w1>:
1.12590 ++ *[0-9a-f]*: e9 a0 00 00 ldc\.w cp0,cr0,r0\[0x0\]
1.12591 ++ *[0-9a-f]*: e9 af ef ff ldc\.w cp7,cr15,pc\[0x3fc\]
1.12592 ++ *[0-9a-f]*: e9 a5 65 80 ldc\.w cp3,cr5,r5\[0x200\]
1.12593 ++ *[0-9a-f]*: e9 a4 44 7f ldc\.w cp2,cr4,r4\[0x1fc\]
1.12594 ++ *[0-9a-f]*: e9 ad 89 24 ldc\.w cp4,cr9,sp\[0x90\]
1.12595 ++
1.12596 ++[0-9a-f]* <ldc_w2>:
1.12597 ++ *[0-9a-f]*: ef a0 00 40 ldc\.w cp0,cr0,--r0
1.12598 ++ *[0-9a-f]*: ef af ef 40 ldc\.w cp7,cr15,--pc
1.12599 ++ *[0-9a-f]*: ef a5 65 40 ldc\.w cp3,cr5,--r5
1.12600 ++ *[0-9a-f]*: ef a4 44 40 ldc\.w cp2,cr4,--r4
1.12601 ++ *[0-9a-f]*: ef ad 89 40 ldc\.w cp4,cr9,--sp
1.12602 ++
1.12603 ++[0-9a-f]* <ldc_w3>:
1.12604 ++ *[0-9a-f]*: ef a0 10 00 ldc\.w cp0,cr0,r0\[r0\]
1.12605 ++ *[0-9a-f]*: ef af ff 3f ldc\.w cp7,cr15,pc\[pc<<0x3\]
1.12606 ++ *[0-9a-f]*: ef a5 75 24 ldc\.w cp3,cr5,r5\[r4<<0x2\]
1.12607 ++ *[0-9a-f]*: ef a4 54 13 ldc\.w cp2,cr4,r4\[r3<<0x1\]
1.12608 ++ *[0-9a-f]*: ef ad 99 0c ldc\.w cp4,cr9,sp\[r12\]
1.12609 ++
1.12610 ++[0-9a-f]* <ldc_d1>:
1.12611 ++ *[0-9a-f]*: e9 a0 10 00 ldc\.d cp0,cr0,r0\[0x0\]
1.12612 ++ *[0-9a-f]*: e9 af fe ff ldc\.d cp7,cr14,pc\[0x3fc\]
1.12613 ++ *[0-9a-f]*: e9 a5 76 80 ldc\.d cp3,cr6,r5\[0x200\]
1.12614 ++ *[0-9a-f]*: e9 a4 54 7f ldc\.d cp2,cr4,r4\[0x1fc\]
1.12615 ++ *[0-9a-f]*: e9 ad 98 24 ldc\.d cp4,cr8,sp\[0x90\]
1.12616 ++
1.12617 ++[0-9a-f]* <ldc_d2>:
1.12618 ++ *[0-9a-f]*: ef a0 00 50 ldc\.d cp0,cr0,--r0
1.12619 ++ *[0-9a-f]*: ef af ee 50 ldc\.d cp7,cr14,--pc
1.12620 ++ *[0-9a-f]*: ef a5 66 50 ldc\.d cp3,cr6,--r5
1.12621 ++ *[0-9a-f]*: ef a4 44 50 ldc\.d cp2,cr4,--r4
1.12622 ++ *[0-9a-f]*: ef ad 88 50 ldc\.d cp4,cr8,--sp
1.12623 ++
1.12624 ++[0-9a-f]* <ldc_d3>:
1.12625 ++ *[0-9a-f]*: ef a0 10 40 ldc\.d cp0,cr0,r0\[r0\]
1.12626 ++ *[0-9a-f]*: ef af fe 7f ldc\.d cp7,cr14,pc\[pc<<0x3\]
1.12627 ++ *[0-9a-f]*: ef a5 76 64 ldc\.d cp3,cr6,r5\[r4<<0x2\]
1.12628 ++ *[0-9a-f]*: ef a4 54 53 ldc\.d cp2,cr4,r4\[r3<<0x1\]
1.12629 ++ *[0-9a-f]*: ef ad 98 4c ldc\.d cp4,cr8,sp\[r12\]
1.12630 ++
1.12631 ++[0-9a-f]* <stc_w1>:
1.12632 ++ *[0-9a-f]*: eb a0 00 00 stc\.w cp0,r0\[0x0\],cr0
1.12633 ++ *[0-9a-f]*: eb af ef ff stc\.w cp7,pc\[0x3fc\],cr15
1.12634 ++ *[0-9a-f]*: eb a5 65 80 stc\.w cp3,r5\[0x200\],cr5
1.12635 ++ *[0-9a-f]*: eb a4 44 7f stc\.w cp2,r4\[0x1fc\],cr4
1.12636 ++ *[0-9a-f]*: eb ad 89 24 stc\.w cp4,sp\[0x90\],cr9
1.12637 ++
1.12638 ++[0-9a-f]* <stc_w2>:
1.12639 ++ *[0-9a-f]*: ef a0 00 60 stc\.w cp0,r0\+\+,cr0
1.12640 ++ *[0-9a-f]*: ef af ef 60 stc\.w cp7,pc\+\+,cr15
1.12641 ++ *[0-9a-f]*: ef a5 65 60 stc\.w cp3,r5\+\+,cr5
1.12642 ++ *[0-9a-f]*: ef a4 44 60 stc\.w cp2,r4\+\+,cr4
1.12643 ++ *[0-9a-f]*: ef ad 89 60 stc\.w cp4,sp\+\+,cr9
1.12644 ++
1.12645 ++[0-9a-f]* <stc_w3>:
1.12646 ++ *[0-9a-f]*: ef a0 10 80 stc\.w cp0,r0\[r0\],cr0
1.12647 ++ *[0-9a-f]*: ef af ff bf stc\.w cp7,pc\[pc<<0x3\],cr15
1.12648 ++ *[0-9a-f]*: ef a5 75 a4 stc\.w cp3,r5\[r4<<0x2\],cr5
1.12649 ++ *[0-9a-f]*: ef a4 54 93 stc\.w cp2,r4\[r3<<0x1\],cr4
1.12650 ++ *[0-9a-f]*: ef ad 99 8c stc\.w cp4,sp\[r12\],cr9
1.12651 ++
1.12652 ++[0-9a-f]* <stc_d1>:
1.12653 ++ *[0-9a-f]*: eb a0 10 00 stc\.d cp0,r0\[0x0\],cr0
1.12654 ++ *[0-9a-f]*: eb af fe ff stc\.d cp7,pc\[0x3fc\],cr14
1.12655 ++ *[0-9a-f]*: eb a5 76 80 stc\.d cp3,r5\[0x200\],cr6
1.12656 ++ *[0-9a-f]*: eb a4 54 7f stc\.d cp2,r4\[0x1fc\],cr4
1.12657 ++ *[0-9a-f]*: eb ad 98 24 stc\.d cp4,sp\[0x90\],cr8
1.12658 ++
1.12659 ++[0-9a-f]* <stc_d2>:
1.12660 ++ *[0-9a-f]*: ef a0 00 70 stc\.d cp0,r0\+\+,cr0
1.12661 ++ *[0-9a-f]*: ef af ee 70 stc\.d cp7,pc\+\+,cr14
1.12662 ++ *[0-9a-f]*: ef a5 66 70 stc\.d cp3,r5\+\+,cr6
1.12663 ++ *[0-9a-f]*: ef a4 44 70 stc\.d cp2,r4\+\+,cr4
1.12664 ++ *[0-9a-f]*: ef ad 88 70 stc\.d cp4,sp\+\+,cr8
1.12665 ++
1.12666 ++[0-9a-f]* <stc_d3>:
1.12667 ++ *[0-9a-f]*: ef a0 10 c0 stc\.d cp0,r0\[r0\],cr0
1.12668 ++ *[0-9a-f]*: ef af fe ff stc\.d cp7,pc\[pc<<0x3\],cr14
1.12669 ++ *[0-9a-f]*: ef a5 76 e4 stc\.d cp3,r5\[r4<<0x2\],cr6
1.12670 ++ *[0-9a-f]*: ef a4 54 d3 stc\.d cp2,r4\[r3<<0x1\],cr4
1.12671 ++ *[0-9a-f]*: ef ad 98 cc stc\.d cp4,sp\[r12\],cr8
1.12672 ++
1.12673 ++[0-9a-f]* <ldc0_w>:
1.12674 ++ *[0-9a-f]*: f1 a0 00 00 ldc0\.w cr0,r0\[0x0\]
1.12675 ++ *[0-9a-f]*: f1 af ff ff ldc0\.w cr15,pc\[0x3ffc\]
1.12676 ++ *[0-9a-f]*: f1 a5 85 00 ldc0\.w cr5,r5\[0x2000\]
1.12677 ++ *[0-9a-f]*: f1 a4 74 ff ldc0\.w cr4,r4\[0x1ffc\]
1.12678 ++ *[0-9a-f]*: f1 ad 09 93 ldc0\.w cr9,sp\[0x24c\]
1.12679 ++
1.12680 ++[0-9a-f]* <ldc0_d>:
1.12681 ++ *[0-9a-f]*: f3 a0 00 00 ldc0\.d cr0,r0\[0x0\]
1.12682 ++ *[0-9a-f]*: f3 af fe ff ldc0\.d cr14,pc\[0x3ffc\]
1.12683 ++ *[0-9a-f]*: f3 a5 86 00 ldc0\.d cr6,r5\[0x2000\]
1.12684 ++ *[0-9a-f]*: f3 a4 74 ff ldc0\.d cr4,r4\[0x1ffc\]
1.12685 ++ *[0-9a-f]*: f3 ad 08 93 ldc0\.d cr8,sp\[0x24c\]
1.12686 ++
1.12687 ++[0-9a-f]* <stc0_w>:
1.12688 ++ *[0-9a-f]*: f5 a0 00 00 stc0\.w r0\[0x0\],cr0
1.12689 ++ *[0-9a-f]*: f5 af ff ff stc0\.w pc\[0x3ffc\],cr15
1.12690 ++ *[0-9a-f]*: f5 a5 85 00 stc0\.w r5\[0x2000\],cr5
1.12691 ++ *[0-9a-f]*: f5 a4 74 ff stc0\.w r4\[0x1ffc\],cr4
1.12692 ++ *[0-9a-f]*: f5 ad 09 93 stc0\.w sp\[0x24c\],cr9
1.12693 ++
1.12694 ++[0-9a-f]* <stc0_d>:
1.12695 ++ *[0-9a-f]*: f7 a0 00 00 stc0\.d r0\[0x0\],cr0
1.12696 ++ *[0-9a-f]*: f7 af fe ff stc0\.d pc\[0x3ffc\],cr14
1.12697 ++ *[0-9a-f]*: f7 a5 86 00 stc0\.d r5\[0x2000\],cr6
1.12698 ++ *[0-9a-f]*: f7 a4 74 ff stc0\.d r4\[0x1ffc\],cr4
1.12699 ++ *[0-9a-f]*: f7 ad 08 93 stc0\.d sp\[0x24c\],cr8
1.12700 ++
1.12701 ++[0-9a-f]* <memc>:
1.12702 ++ *[0-9a-f]*: f6 10 00 00 memc 0,0x0
1.12703 ++ *[0-9a-f]*: f6 1f ff ff memc -4,0x1f
1.12704 ++ *[0-9a-f]*: f6 18 40 00 memc -65536,0x10
1.12705 ++ *[0-9a-f]*: f6 17 bf ff memc 65532,0xf
1.12706 ++
1.12707 ++[0-9a-f]* <mems>:
1.12708 ++ *[0-9a-f]*: f8 10 00 00 mems 0,0x0
1.12709 ++ *[0-9a-f]*: f8 1f ff ff mems -4,0x1f
1.12710 ++ *[0-9a-f]*: f8 18 40 00 mems -65536,0x10
1.12711 ++ *[0-9a-f]*: f8 17 bf ff mems 65532,0xf
1.12712 ++
1.12713 ++[0-9a-f]* <memt>:
1.12714 ++ *[0-9a-f]*: fa 10 00 00 memt 0,0x0
1.12715 ++ *[0-9a-f]*: fa 1f ff ff memt -4,0x1f
1.12716 ++ *[0-9a-f]*: fa 18 40 00 memt -65536,0x10
1.12717 ++ *[0-9a-f]*: fa 17 bf ff memt 65532,0xf
1.12718 ++
1.12719 ++[0-9a-f]* <stcond>:
1.12720 ++ *[0-9a-f]*: e1 70 00 00 stcond r0\[0\],r0
1.12721 ++ *[0-9a-f]*: ff 7f ff ff stcond pc\[-1\],pc
1.12722 ++ *[0-9a-f]*: f1 77 80 00 stcond r8\[-32768\],r7
1.12723 ++ *[0-9a-f]*: ef 78 7f ff stcond r7\[32767\],r8
1.12724 ++ *[0-9a-f]*: eb 7a 12 34 stcond r5\[4660\],r10
1.12725 ++
1.12726 ++[0-9a-f]* <ldcm_w>:
1.12727 ++ *[0-9a-f]*: ed af 00 ff ldcm\.w cp0,pc,cr0-cr7
1.12728 ++ *[0-9a-f]*: ed a0 e0 01 ldcm\.w cp7,r0,cr0
1.12729 ++ *[0-9a-f]*: ed a4 90 7f ldcm\.w cp4,r4\+\+,cr0-cr6
1.12730 ++ *[0-9a-f]*: ed a7 60 80 ldcm\.w cp3,r7,cr7
1.12731 ++ *[0-9a-f]*: ed ac 30 72 ldcm\.w cp1,r12\+\+,cr1,cr4-cr6
1.12732 ++ *[0-9a-f]*: ed af 01 ff ldcm\.w cp0,pc,cr8-cr15
1.12733 ++ *[0-9a-f]*: ed a0 e1 01 ldcm\.w cp7,r0,cr8
1.12734 ++ *[0-9a-f]*: ed a4 91 7f ldcm\.w cp4,r4\+\+,cr8-cr14
1.12735 ++ *[0-9a-f]*: ed a7 61 80 ldcm\.w cp3,r7,cr15
1.12736 ++ *[0-9a-f]*: ed ac 31 72 ldcm\.w cp1,r12\+\+,cr9,cr12-cr14
1.12737 ++
1.12738 ++[0-9a-f]* <ldcm_d>:
1.12739 ++ *[0-9a-f]*: ed af 04 ff ldcm\.d cp0,pc,cr0-cr15
1.12740 ++ *[0-9a-f]*: ed a0 e4 01 ldcm\.d cp7,r0,cr0-cr1
1.12741 ++ *[0-9a-f]*: ed a4 94 7f ldcm\.d cp4,r4\+\+,cr0-cr13
1.12742 ++ *[0-9a-f]*: ed a7 64 80 ldcm\.d cp3,r7,cr14-cr15
1.12743 ++ *[0-9a-f]*: ed ac 54 93 ldcm\.d cp2,r12\+\+,cr0-cr3,cr8-cr9,cr14-cr15
1.12744 ++
1.12745 ++[0-9a-f]* <stcm_w>:
1.12746 ++ *[0-9a-f]*: ed af 02 ff stcm\.w cp0,pc,cr0-cr7
1.12747 ++ *[0-9a-f]*: ed a0 e2 01 stcm\.w cp7,r0,cr0
1.12748 ++ *[0-9a-f]*: ed a4 92 7f stcm\.w cp4,--r4,cr0-cr6
1.12749 ++ *[0-9a-f]*: ed a7 62 80 stcm\.w cp3,r7,cr7
1.12750 ++ *[0-9a-f]*: ed ac 32 72 stcm\.w cp1,--r12,cr1,cr4-cr6
1.12751 ++ *[0-9a-f]*: ed af 03 ff stcm\.w cp0,pc,cr8-cr15
1.12752 ++ *[0-9a-f]*: ed a0 e3 01 stcm\.w cp7,r0,cr8
1.12753 ++ *[0-9a-f]*: ed a4 93 7f stcm\.w cp4,--r4,cr8-cr14
1.12754 ++ *[0-9a-f]*: ed a7 63 80 stcm\.w cp3,r7,cr15
1.12755 ++ *[0-9a-f]*: ed ac 33 72 stcm\.w cp1,--r12,cr9,cr12-cr14
1.12756 ++
1.12757 ++[0-9a-f]* <stcm_d>:
1.12758 ++ *[0-9a-f]*: ed af 05 ff stcm\.d cp0,pc,cr0-cr15
1.12759 ++ *[0-9a-f]*: ed a0 e5 01 stcm\.d cp7,r0,cr0-cr1
1.12760 ++ *[0-9a-f]*: ed a4 95 7f stcm\.d cp4,--r4,cr0-cr13
1.12761 ++ *[0-9a-f]*: ed a7 65 80 stcm\.d cp3,r7,cr14-cr15
1.12762 ++ *[0-9a-f]*: ed ac 55 93 stcm\.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
1.12763 ++
1.12764 ++[0-9a-f]* <mvcr_w>:
1.12765 ++ *[0-9a-f]*: ef af ef 00 mvcr\.w cp7,pc,cr15
1.12766 ++ *[0-9a-f]*: ef a0 00 00 mvcr\.w cp0,r0,cr0
1.12767 ++ *[0-9a-f]*: ef af 0f 00 mvcr\.w cp0,pc,cr15
1.12768 ++ *[0-9a-f]*: ef a0 ef 00 mvcr\.w cp7,r0,cr15
1.12769 ++ *[0-9a-f]*: ef af e0 00 mvcr\.w cp7,pc,cr0
1.12770 ++ *[0-9a-f]*: ef a7 88 00 mvcr\.w cp4,r7,cr8
1.12771 ++ *[0-9a-f]*: ef a8 67 00 mvcr\.w cp3,r8,cr7
1.12772 ++
1.12773 ++[0-9a-f]* <mvcr_d>:
1.12774 ++ *[0-9a-f]*: ef ae ee 10 mvcr\.d cp7,lr,cr14
1.12775 ++ *[0-9a-f]*: ef a0 00 10 mvcr\.d cp0,r0,cr0
1.12776 ++ *[0-9a-f]*: ef ae 0e 10 mvcr\.d cp0,lr,cr14
1.12777 ++ *[0-9a-f]*: ef a0 ee 10 mvcr\.d cp7,r0,cr14
1.12778 ++ *[0-9a-f]*: ef ae e0 10 mvcr\.d cp7,lr,cr0
1.12779 ++ *[0-9a-f]*: ef a6 88 10 mvcr\.d cp4,r6,cr8
1.12780 ++ *[0-9a-f]*: ef a8 66 10 mvcr\.d cp3,r8,cr6
1.12781 ++
1.12782 ++[0-9a-f]* <mvrc_w>:
1.12783 ++ *[0-9a-f]*: ef af ef 20 mvrc\.w cp7,cr15,pc
1.12784 ++ *[0-9a-f]*: ef a0 00 20 mvrc\.w cp0,cr0,r0
1.12785 ++ *[0-9a-f]*: ef af 0f 20 mvrc\.w cp0,cr15,pc
1.12786 ++ *[0-9a-f]*: ef a0 ef 20 mvrc\.w cp7,cr15,r0
1.12787 ++ *[0-9a-f]*: ef af e0 20 mvrc\.w cp7,cr0,pc
1.12788 ++ *[0-9a-f]*: ef a7 88 20 mvrc\.w cp4,cr8,r7
1.12789 ++ *[0-9a-f]*: ef a8 67 20 mvrc\.w cp3,cr7,r8
1.12790 ++
1.12791 ++[0-9a-f]* <mvrc_d>:
1.12792 ++ *[0-9a-f]*: ef ae ee 30 mvrc\.d cp7,cr14,lr
1.12793 ++ *[0-9a-f]*: ef a0 00 30 mvrc\.d cp0,cr0,r0
1.12794 ++ *[0-9a-f]*: ef ae 0e 30 mvrc\.d cp0,cr14,lr
1.12795 ++ *[0-9a-f]*: ef a0 ee 30 mvrc\.d cp7,cr14,r0
1.12796 ++ *[0-9a-f]*: ef ae e0 30 mvrc\.d cp7,cr0,lr
1.12797 ++ *[0-9a-f]*: ef a6 88 30 mvrc\.d cp4,cr8,r6
1.12798 ++ *[0-9a-f]*: ef a8 66 30 mvrc\.d cp3,cr6,r8
1.12799 ++
1.12800 ++[0-9a-f]* <bfexts>:
1.12801 ++ *[0-9a-f]*: ff df b3 ff bfexts pc,pc,0x1f,0x1f
1.12802 ++ *[0-9a-f]*: e1 d0 b0 00 bfexts r0,r0,0x0,0x0
1.12803 ++ *[0-9a-f]*: e1 df b3 ff bfexts r0,pc,0x1f,0x1f
1.12804 ++ *[0-9a-f]*: ff d0 b3 ff bfexts pc,r0,0x1f,0x1f
1.12805 ++ *[0-9a-f]*: ff df b0 1f bfexts pc,pc,0x0,0x1f
1.12806 ++ *[0-9a-f]*: ff df b3 e0 bfexts pc,pc,0x1f,0x0
1.12807 ++ *[0-9a-f]*: ef d8 b1 f0 bfexts r7,r8,0xf,0x10
1.12808 ++ *[0-9a-f]*: f1 d7 b2 0f bfexts r8,r7,0x10,0xf
1.12809 ++
1.12810 ++[0-9a-f]* <bfextu>:
1.12811 ++ *[0-9a-f]*: ff df c3 ff bfextu pc,pc,0x1f,0x1f
1.12812 ++ *[0-9a-f]*: e1 d0 c0 00 bfextu r0,r0,0x0,0x0
1.12813 ++ *[0-9a-f]*: e1 df c3 ff bfextu r0,pc,0x1f,0x1f
1.12814 ++ *[0-9a-f]*: ff d0 c3 ff bfextu pc,r0,0x1f,0x1f
1.12815 ++ *[0-9a-f]*: ff df c0 1f bfextu pc,pc,0x0,0x1f
1.12816 ++ *[0-9a-f]*: ff df c3 e0 bfextu pc,pc,0x1f,0x0
1.12817 ++ *[0-9a-f]*: ef d8 c1 f0 bfextu r7,r8,0xf,0x10
1.12818 ++ *[0-9a-f]*: f1 d7 c2 0f bfextu r8,r7,0x10,0xf
1.12819 ++
1.12820 ++[0-9a-f]* <bfins>:
1.12821 ++ *[0-9a-f]*: ff df d3 ff bfins pc,pc,0x1f,0x1f
1.12822 ++ *[0-9a-f]*: e1 d0 d0 00 bfins r0,r0,0x0,0x0
1.12823 ++ *[0-9a-f]*: e1 df d3 ff bfins r0,pc,0x1f,0x1f
1.12824 ++ *[0-9a-f]*: ff d0 d3 ff bfins pc,r0,0x1f,0x1f
1.12825 ++ *[0-9a-f]*: ff df d0 1f bfins pc,pc,0x0,0x1f
1.12826 ++ *[0-9a-f]*: ff df d3 e0 bfins pc,pc,0x1f,0x0
1.12827 ++ *[0-9a-f]*: ef d8 d1 f0 bfins r7,r8,0xf,0x10
1.12828 ++ *[0-9a-f]*: f1 d7 d2 0f bfins r8,r7,0x10,0xf
1.12829 ++
1.12830 ++[0-9a-f]* <rsubc>:
1.12831 ++ *[0-9a-f]*: fb bf 00 00 rsubeq pc,0
1.12832 ++ *[0-9a-f]*: fb bc 0f ff rsubal r12,-1
1.12833 ++ *[0-9a-f]*: fb b5 08 80 rsubls r5,-128
1.12834 ++ *[0-9a-f]*: fb b4 07 7f rsubpl r4,127
1.12835 ++ *[0-9a-f]*: fb be 01 01 rsubne lr,1
1.12836 ++ *[0-9a-f]*: fb bc 08 76 rsubls r12,118
1.12837 ++ *[0-9a-f]*: fb be 0d f4 rsubvc lr,-12
1.12838 ++ *[0-9a-f]*: fb b4 06 f3 rsubmi r4,-13
1.12839 ++
1.12840 ++[0-9a-f]* <addc>:
1.12841 ++ *[0-9a-f]*: ff df e0 0f addeq pc,pc,pc
1.12842 ++ *[0-9a-f]*: f9 dc ef 0c addal r12,r12,r12
1.12843 ++ *[0-9a-f]*: eb d5 e8 05 addls r5,r5,r5
1.12844 ++ *[0-9a-f]*: e9 d4 e7 04 addpl r4,r4,r4
1.12845 ++ *[0-9a-f]*: fd de e1 0e addne lr,lr,lr
1.12846 ++ *[0-9a-f]*: e5 d1 e8 0a addls r10,r2,r1
1.12847 ++ *[0-9a-f]*: f1 db ed 0c addvc r12,r8,r11
1.12848 ++ *[0-9a-f]*: ef d0 e6 0a addmi r10,r7,r0
1.12849 ++
1.12850 ++[0-9a-f]* <subc2>:
1.12851 ++ *[0-9a-f]*: ff df e0 1f subeq pc,pc,pc
1.12852 ++ *[0-9a-f]*: f9 dc ef 1c subal r12,r12,r12
1.12853 ++ *[0-9a-f]*: eb d5 e8 15 subls r5,r5,r5
1.12854 ++ *[0-9a-f]*: e9 d4 e7 14 subpl r4,r4,r4
1.12855 ++ *[0-9a-f]*: fd de e1 1e subne lr,lr,lr
1.12856 ++ *[0-9a-f]*: e5 d1 e8 1a subls r10,r2,r1
1.12857 ++ *[0-9a-f]*: f1 db ed 1c subvc r12,r8,r11
1.12858 ++ *[0-9a-f]*: ef d0 e6 1a submi r10,r7,r0
1.12859 ++
1.12860 ++[0-9a-f]* <andc>:
1.12861 ++ *[0-9a-f]*: ff df e0 2f andeq pc,pc,pc
1.12862 ++ *[0-9a-f]*: f9 dc ef 2c andal r12,r12,r12
1.12863 ++ *[0-9a-f]*: eb d5 e8 25 andls r5,r5,r5
1.12864 ++ *[0-9a-f]*: e9 d4 e7 24 andpl r4,r4,r4
1.12865 ++ *[0-9a-f]*: fd de e1 2e andne lr,lr,lr
1.12866 ++ *[0-9a-f]*: e5 d1 e8 2a andls r10,r2,r1
1.12867 ++ *[0-9a-f]*: f1 db ed 2c andvc r12,r8,r11
1.12868 ++ *[0-9a-f]*: ef d0 e6 2a andmi r10,r7,r0
1.12869 ++
1.12870 ++[0-9a-f]* <orc>:
1.12871 ++ *[0-9a-f]*: ff df e0 3f oreq pc,pc,pc
1.12872 ++ *[0-9a-f]*: f9 dc ef 3c oral r12,r12,r12
1.12873 ++ *[0-9a-f]*: eb d5 e8 35 orls r5,r5,r5
1.12874 ++ *[0-9a-f]*: e9 d4 e7 34 orpl r4,r4,r4
1.12875 ++ *[0-9a-f]*: fd de e1 3e orne lr,lr,lr
1.12876 ++ *[0-9a-f]*: e5 d1 e8 3a orls r10,r2,r1
1.12877 ++ *[0-9a-f]*: f1 db ed 3c orvc r12,r8,r11
1.12878 ++ *[0-9a-f]*: ef d0 e6 3a ormi r10,r7,r0
1.12879 ++
1.12880 ++[0-9a-f]* <eorc>:
1.12881 ++ *[0-9a-f]*: ff df e0 4f eoreq pc,pc,pc
1.12882 ++ *[0-9a-f]*: f9 dc ef 4c eoral r12,r12,r12
1.12883 ++ *[0-9a-f]*: eb d5 e8 45 eorls r5,r5,r5
1.12884 ++ *[0-9a-f]*: e9 d4 e7 44 eorpl r4,r4,r4
1.12885 ++ *[0-9a-f]*: fd de e1 4e eorne lr,lr,lr
1.12886 ++ *[0-9a-f]*: e5 d1 e8 4a eorls r10,r2,r1
1.12887 ++ *[0-9a-f]*: f1 db ed 4c eorvc r12,r8,r11
1.12888 ++ *[0-9a-f]*: ef d0 e6 4a eormi r10,r7,r0
1.12889 ++
1.12890 ++[0-9a-f]* <ldcond>:
1.12891 ++ *[0-9a-f]*: ff ff 01 ff ld.weq pc,pc[0x7fc]
1.12892 ++ *[0-9a-f]*: f9 fc f3 ff ld.shal r12,r12[0x3fe]
1.12893 ++ *[0-9a-f]*: eb f5 84 00 ld.shls r5,r5[0x0]
1.12894 ++ *[0-9a-f]*: e9 f4 79 ff ld.ubpl r4,r4[0x1ff]
1.12895 ++ *[0-9a-f]*: fd fe 16 00 ld.sbne lr,lr[0x0]
1.12896 ++ *[0-9a-f]*: e5 fa 80 00 ld.wls r10,r2[0x0]
1.12897 ++ *[0-9a-f]*: f1 fc d3 ff ld.shvc r12,r8[0x3fe]
1.12898 ++ *[0-9a-f]*: ef fa 68 01 ld.ubmi r10,r7[0x1]
1.12899 ++
1.12900 ++[0-9a-f]* <stcond2>:
1.12901 ++ *[0-9a-f]*: ff ff 0b ff st.weq pc[0x7fc],pc
1.12902 ++ *[0-9a-f]*: f9 fc fd ff st.hal r12[0x3fe],r12
1.12903 ++ *[0-9a-f]*: eb f5 8c 00 st.hls r5[0x0],r5
1.12904 ++ *[0-9a-f]*: e9 f4 7f ff st.bpl r4[0x1ff],r4
1.12905 ++ *[0-9a-f]*: fd fe 1e 00 st.bne lr[0x0],lr
1.12906 ++ *[0-9a-f]*: e5 fa 8a 00 st.wls r2[0x0],r10
1.12907 ++ *[0-9a-f]*: f1 fc dd ff st.hvc r8[0x3fe],r12
1.12908 ++ *[0-9a-f]*: ef fa 6e 01 st.bmi r7[0x1],r10
1.12909 ++
1.12910 ++[0-9a-f]* <movh>:
1.12911 ++ *[0-9a-f]*: fc 1f ff ff movh pc,0xffff
1.12912 ++ *[0-9a-f]*: fc 10 00 00 movh r0,0x0
1.12913 ++ *[0-9a-f]*: fc 15 00 01 movh r5,0x1
1.12914 ++ *[0-9a-f]*: fc 1c 7f ff movh r12,0x7fff
1.12915 ++
1.12916 +--- /dev/null
1.12917 ++++ b/gas/testsuite/gas/avr32/allinsn.exp
1.12918 +@@ -0,0 +1,5 @@
1.12919 ++# AVR32 assembler testsuite. -*- Tcl -*-
1.12920 ++
1.12921 ++if [istarget avr32-*-*] {
1.12922 ++ run_dump_test "allinsn"
1.12923 ++}
1.12924 +--- /dev/null
1.12925 ++++ b/gas/testsuite/gas/avr32/allinsn.s
1.12926 +@@ -0,0 +1,3330 @@
1.12927 ++ .data
1.12928 ++foodata: .word 42
1.12929 ++ .text
1.12930 ++footext:
1.12931 ++ .text
1.12932 ++ .global ld_d5
1.12933 ++ld_d5:
1.12934 ++ ld.d lr,pc[pc<<3]
1.12935 ++ ld.d r0,r0[r0<<0]
1.12936 ++ ld.d r6,r5[r5<<2]
1.12937 ++ ld.d r4,r4[r4<<1]
1.12938 ++ ld.d lr,lr[lr<<1]
1.12939 ++ ld.d r10,r3[sp<<2]
1.12940 ++ ld.d r8,r10[r6<<2]
1.12941 ++ ld.d r2,r7[r9<<0]
1.12942 ++ .text
1.12943 ++ .global ld_w5
1.12944 ++ld_w5:
1.12945 ++ ld.w pc,pc[pc<<0]
1.12946 ++ ld.w r12,r12[r12<<3]
1.12947 ++ ld.w r5,r5[r5<<2]
1.12948 ++ ld.w r4,r4[r4<<1]
1.12949 ++ ld.w lr,lr[lr<<1]
1.12950 ++ ld.w r2,r9[r9<<0]
1.12951 ++ ld.w r11,r2[r6<<0]
1.12952 ++ ld.w r0,r2[sp<<3]
1.12953 ++ .text
1.12954 ++ .global ld_sh5
1.12955 ++ld_sh5:
1.12956 ++ ld.sh pc,pc[pc<<0]
1.12957 ++ ld.sh r12,r12[r12<<3]
1.12958 ++ ld.sh r5,r5[r5<<2]
1.12959 ++ ld.sh r4,r4[r4<<1]
1.12960 ++ ld.sh lr,lr[lr<<1]
1.12961 ++ ld.sh r11,r0[pc<<2]
1.12962 ++ ld.sh r10,sp[r6<<2]
1.12963 ++ ld.sh r12,r2[r2<<0]
1.12964 ++ .text
1.12965 ++ .global ld_uh5
1.12966 ++ld_uh5:
1.12967 ++ ld.uh pc,pc[pc<<0]
1.12968 ++ ld.uh r12,r12[r12<<3]
1.12969 ++ ld.uh r5,r5[r5<<2]
1.12970 ++ ld.uh r4,r4[r4<<1]
1.12971 ++ ld.uh lr,lr[lr<<1]
1.12972 ++ ld.uh r8,pc[lr<<3]
1.12973 ++ ld.uh r6,r1[pc<<1]
1.12974 ++ ld.uh r6,lr[sp<<1]
1.12975 ++ .text
1.12976 ++ .global ld_sb2
1.12977 ++ld_sb2:
1.12978 ++ ld.sb pc,pc[pc<<0]
1.12979 ++ ld.sb r12,r12[r12<<3]
1.12980 ++ ld.sb r5,r5[r5<<2]
1.12981 ++ ld.sb r4,r4[r4<<1]
1.12982 ++ ld.sb lr,lr[lr<<1]
1.12983 ++ ld.sb r9,r1[pc<<3]
1.12984 ++ ld.sb r0,r3[r11<<1]
1.12985 ++ ld.sb r10,r5[r5<<1]
1.12986 ++ .text
1.12987 ++ .global ld_ub5
1.12988 ++ld_ub5:
1.12989 ++ ld.ub pc,pc[pc<<0]
1.12990 ++ ld.ub r12,r12[r12<<3]
1.12991 ++ ld.ub r5,r5[r5<<2]
1.12992 ++ ld.ub r4,r4[r4<<1]
1.12993 ++ ld.ub lr,lr[lr<<1]
1.12994 ++ ld.ub r6,r12[r7<<3]
1.12995 ++ ld.ub r2,r6[r12<<0]
1.12996 ++ ld.ub r0,r7[r11<<1]
1.12997 ++ .text
1.12998 ++ .global st_d5
1.12999 ++st_d5:
1.13000 ++ st.d pc[pc<<0],r14
1.13001 ++ st.d r12[r12<<3],r12
1.13002 ++ st.d r5[r5<<2],r6
1.13003 ++ st.d r4[r4<<1],r4
1.13004 ++ st.d lr[lr<<1],lr
1.13005 ++ st.d r1[r9<<1],r4
1.13006 ++ st.d r10[r2<<1],r4
1.13007 ++ st.d r12[r6<<0],lr
1.13008 ++ .text
1.13009 ++ .global st_w5
1.13010 ++st_w5:
1.13011 ++ st.w pc[pc<<0],pc
1.13012 ++ st.w r12[r12<<3],r12
1.13013 ++ st.w r5[r5<<2],r5
1.13014 ++ st.w r4[r4<<1],r4
1.13015 ++ st.w lr[lr<<1],lr
1.13016 ++ st.w r1[r10<<0],r3
1.13017 ++ st.w r0[r10<<1],r9
1.13018 ++ st.w r4[r5<<3],pc
1.13019 ++ .text
1.13020 ++ .global st_h5
1.13021 ++st_h5:
1.13022 ++ st.h pc[pc<<0],pc
1.13023 ++ st.h r12[r12<<3],r12
1.13024 ++ st.h r5[r5<<2],r5
1.13025 ++ st.h r4[r4<<1],r4
1.13026 ++ st.h lr[lr<<1],lr
1.13027 ++ st.h r2[r9<<0],r11
1.13028 ++ st.h r5[r1<<2],r12
1.13029 ++ st.h pc[r8<<2],r3
1.13030 ++ .text
1.13031 ++ .global st_b5
1.13032 ++st_b5:
1.13033 ++ st.b pc[pc<<0],pc
1.13034 ++ st.b r12[r12<<3],r12
1.13035 ++ st.b r5[r5<<2],r5
1.13036 ++ st.b r4[r4<<1],r4
1.13037 ++ st.b lr[lr<<1],lr
1.13038 ++ st.b r1[r8<<1],r6
1.13039 ++ st.b lr[lr<<3],r1
1.13040 ++ st.b r5[r0<<2],pc
1.13041 ++ .text
1.13042 ++ .global divs
1.13043 ++divs:
1.13044 ++ divs pc,pc,pc
1.13045 ++ divs r12,r12,r12
1.13046 ++ divs r5,r5,r5
1.13047 ++ divs r4,r4,r4
1.13048 ++ divs lr,lr,lr
1.13049 ++ divs r3,pc,pc
1.13050 ++ divs r9,r12,r2
1.13051 ++ divs r7,r4,r1
1.13052 ++ .text
1.13053 ++ .global add1
1.13054 ++add1:
1.13055 ++ add pc,pc
1.13056 ++ add r12,r12
1.13057 ++ add r5,r5
1.13058 ++ add r4,r4
1.13059 ++ add lr,lr
1.13060 ++ add r12,r9
1.13061 ++ add r6,r3
1.13062 ++ add r10,r12
1.13063 ++ .text
1.13064 ++ .global sub1
1.13065 ++sub1:
1.13066 ++ sub pc,pc
1.13067 ++ sub r12,r12
1.13068 ++ sub r5,r5
1.13069 ++ sub r4,r4
1.13070 ++ sub lr,lr
1.13071 ++ sub lr,r6
1.13072 ++ sub r0,sp
1.13073 ++ sub r6,r12
1.13074 ++ .text
1.13075 ++ .global rsub1
1.13076 ++rsub1:
1.13077 ++ rsub pc,pc
1.13078 ++ rsub r12,r12
1.13079 ++ rsub r5,r5
1.13080 ++ rsub r4,r4
1.13081 ++ rsub lr,lr
1.13082 ++ rsub r11,sp
1.13083 ++ rsub r7,r4
1.13084 ++ rsub r9,r1
1.13085 ++ .text
1.13086 ++ .global cp1
1.13087 ++cp1:
1.13088 ++ cp pc,pc
1.13089 ++ cp r12,r12
1.13090 ++ cp r5,r5
1.13091 ++ cp r4,r4
1.13092 ++ cp lr,lr
1.13093 ++ cp r6,r2
1.13094 ++ cp r0,r9
1.13095 ++ cp r3,sp
1.13096 ++ .text
1.13097 ++ .global or1
1.13098 ++or1:
1.13099 ++ or pc,pc
1.13100 ++ or r12,r12
1.13101 ++ or r5,r5
1.13102 ++ or r4,r4
1.13103 ++ or lr,lr
1.13104 ++ or r4,r9
1.13105 ++ or r11,r4
1.13106 ++ or r4,r0
1.13107 ++ .text
1.13108 ++ .global eor1
1.13109 ++eor1:
1.13110 ++ eor pc,pc
1.13111 ++ eor r12,r12
1.13112 ++ eor r5,r5
1.13113 ++ eor r4,r4
1.13114 ++ eor lr,lr
1.13115 ++ eor r12,r11
1.13116 ++ eor r0,r1
1.13117 ++ eor r5,pc
1.13118 ++ .text
1.13119 ++ .global and1
1.13120 ++and1:
1.13121 ++ and pc,pc
1.13122 ++ and r12,r12
1.13123 ++ and r5,r5
1.13124 ++ and r4,r4
1.13125 ++ and lr,lr
1.13126 ++ and r8,r1
1.13127 ++ and r0,sp
1.13128 ++ and r10,r5
1.13129 ++ .text
1.13130 ++ .global tst
1.13131 ++tst:
1.13132 ++ tst pc,pc
1.13133 ++ tst r12,r12
1.13134 ++ tst r5,r5
1.13135 ++ tst r4,r4
1.13136 ++ tst lr,lr
1.13137 ++ tst r0,r12
1.13138 ++ tst r10,r6
1.13139 ++ tst sp,r4
1.13140 ++ .text
1.13141 ++ .global andn
1.13142 ++andn:
1.13143 ++ andn pc,pc
1.13144 ++ andn r12,r12
1.13145 ++ andn r5,r5
1.13146 ++ andn r4,r4
1.13147 ++ andn lr,lr
1.13148 ++ andn r9,r12
1.13149 ++ andn r11,sp
1.13150 ++ andn r12,r5
1.13151 ++ .text
1.13152 ++ .global mov3
1.13153 ++mov3:
1.13154 ++ mov pc,pc
1.13155 ++ mov r12,r12
1.13156 ++ mov r5,r5
1.13157 ++ mov r4,r4
1.13158 ++ mov lr,lr
1.13159 ++ mov r5,r9
1.13160 ++ mov r11,r11
1.13161 ++ mov r2,lr
1.13162 ++ .text
1.13163 ++ .global st_w1
1.13164 ++st_w1:
1.13165 ++ st.w pc++,pc
1.13166 ++ st.w r12++,r12
1.13167 ++ st.w r5++,r5
1.13168 ++ st.w r4++,r4
1.13169 ++ st.w lr++,lr
1.13170 ++ st.w r1++,r11
1.13171 ++ st.w sp++,r0
1.13172 ++ st.w sp++,r1
1.13173 ++ .text
1.13174 ++ .global st_h1
1.13175 ++st_h1:
1.13176 ++ st.h pc++,pc
1.13177 ++ st.h r12++,r12
1.13178 ++ st.h r5++,r5
1.13179 ++ st.h r4++,r4
1.13180 ++ st.h lr++,lr
1.13181 ++ st.h r12++,sp
1.13182 ++ st.h r7++,lr
1.13183 ++ st.h r7++,r4
1.13184 ++ .text
1.13185 ++ .global st_b1
1.13186 ++st_b1:
1.13187 ++ st.b pc++,pc
1.13188 ++ st.b r12++,r12
1.13189 ++ st.b r5++,r5
1.13190 ++ st.b r4++,r4
1.13191 ++ st.b lr++,lr
1.13192 ++ st.b r9++,sp
1.13193 ++ st.b r1++,sp
1.13194 ++ st.b r0++,r4
1.13195 ++ .text
1.13196 ++ .global st_w2
1.13197 ++st_w2:
1.13198 ++ st.w --pc,pc
1.13199 ++ st.w --r12,r12
1.13200 ++ st.w --r5,r5
1.13201 ++ st.w --r4,r4
1.13202 ++ st.w --lr,lr
1.13203 ++ st.w --r1,r7
1.13204 ++ st.w --r3,r9
1.13205 ++ st.w --r5,r5
1.13206 ++ .text
1.13207 ++ .global st_h2
1.13208 ++st_h2:
1.13209 ++ st.h --pc,pc
1.13210 ++ st.h --r12,r12
1.13211 ++ st.h --r5,r5
1.13212 ++ st.h --r4,r4
1.13213 ++ st.h --lr,lr
1.13214 ++ st.h --r5,r7
1.13215 ++ st.h --r8,r8
1.13216 ++ st.h --r7,r2
1.13217 ++ .text
1.13218 ++ .global st_b2
1.13219 ++st_b2:
1.13220 ++ st.b --pc,pc
1.13221 ++ st.b --r12,r12
1.13222 ++ st.b --r5,r5
1.13223 ++ st.b --r4,r4
1.13224 ++ st.b --lr,lr
1.13225 ++ st.b --sp,sp
1.13226 ++ st.b --sp,r11
1.13227 ++ st.b --r4,r5
1.13228 ++ .text
1.13229 ++ .global ld_w1
1.13230 ++ld_w1:
1.13231 ++ ld.w pc,pc++
1.13232 ++ ld.w r12,r12++
1.13233 ++ ld.w r5,r5++
1.13234 ++ ld.w r4,r4++
1.13235 ++ ld.w lr,lr++
1.13236 ++ ld.w r3,r7++
1.13237 ++ ld.w r3,lr++
1.13238 ++ ld.w r12,r5++
1.13239 ++ .text
1.13240 ++ .global ld_sh1
1.13241 ++ld_sh1:
1.13242 ++ ld.sh pc,pc++
1.13243 ++ ld.sh r12,r12++
1.13244 ++ ld.sh r5,r5++
1.13245 ++ ld.sh r4,r4++
1.13246 ++ ld.sh lr,lr++
1.13247 ++ ld.sh r11,r2++
1.13248 ++ ld.sh r2,r8++
1.13249 ++ ld.sh r7,r6++
1.13250 ++ .text
1.13251 ++ .global ld_uh1
1.13252 ++ld_uh1:
1.13253 ++ ld.uh pc,pc++
1.13254 ++ ld.uh r12,r12++
1.13255 ++ ld.uh r5,r5++
1.13256 ++ ld.uh r4,r4++
1.13257 ++ ld.uh lr,lr++
1.13258 ++ ld.uh r6,r7++
1.13259 ++ ld.uh r10,r11++
1.13260 ++ ld.uh lr,r4++
1.13261 ++ .text
1.13262 ++ .global ld_ub1
1.13263 ++ld_ub1:
1.13264 ++ ld.ub pc,pc++
1.13265 ++ ld.ub r12,r12++
1.13266 ++ ld.ub r5,r5++
1.13267 ++ ld.ub r4,r4++
1.13268 ++ ld.ub lr,lr++
1.13269 ++ ld.ub r8,lr++
1.13270 ++ ld.ub r12,r12++
1.13271 ++ ld.ub r11,r10++
1.13272 ++ .text
1.13273 ++ .global ld_w2
1.13274 ++ld_w2:
1.13275 ++ ld.w pc,--pc
1.13276 ++ ld.w r12,--r12
1.13277 ++ ld.w r5,--r5
1.13278 ++ ld.w r4,--r4
1.13279 ++ ld.w lr,--lr
1.13280 ++ ld.w r10,--lr
1.13281 ++ ld.w r12,--r9
1.13282 ++ ld.w r6,--r5
1.13283 ++ .text
1.13284 ++ .global ld_sh2
1.13285 ++ld_sh2:
1.13286 ++ ld.sh pc,--pc
1.13287 ++ ld.sh r12,--r12
1.13288 ++ ld.sh r5,--r5
1.13289 ++ ld.sh r4,--r4
1.13290 ++ ld.sh lr,--lr
1.13291 ++ ld.sh pc,--r10
1.13292 ++ ld.sh r6,--r3
1.13293 ++ ld.sh r4,--r6
1.13294 ++ .text
1.13295 ++ .global ld_uh2
1.13296 ++ld_uh2:
1.13297 ++ ld.uh pc,--pc
1.13298 ++ ld.uh r12,--r12
1.13299 ++ ld.uh r5,--r5
1.13300 ++ ld.uh r4,--r4
1.13301 ++ ld.uh lr,--lr
1.13302 ++ ld.uh r3,--r2
1.13303 ++ ld.uh r1,--r0
1.13304 ++ ld.uh r2,--r9
1.13305 ++ .text
1.13306 ++ .global ld_ub2
1.13307 ++ld_ub2:
1.13308 ++ ld.ub pc,--pc
1.13309 ++ ld.ub r12,--r12
1.13310 ++ ld.ub r5,--r5
1.13311 ++ ld.ub r4,--r4
1.13312 ++ ld.ub lr,--lr
1.13313 ++ ld.ub r1,--r1
1.13314 ++ ld.ub r0,--r6
1.13315 ++ ld.ub r2,--r7
1.13316 ++ .text
1.13317 ++ .global ld_ub3
1.13318 ++ld_ub3:
1.13319 ++ ld.ub pc,pc[0]
1.13320 ++ ld.ub r12,r12[7]
1.13321 ++ ld.ub r5,r5[4]
1.13322 ++ ld.ub r4,r4[3]
1.13323 ++ ld.ub lr,lr[1]
1.13324 ++ ld.ub r6,r9[6]
1.13325 ++ ld.ub r2,lr[4]
1.13326 ++ ld.ub r1,r8[0]
1.13327 ++ .text
1.13328 ++ .global sub3_sp
1.13329 ++sub3_sp:
1.13330 ++ sub sp,0
1.13331 ++ sub sp,-4
1.13332 ++ sub sp,-512
1.13333 ++ sub sp,508
1.13334 ++ sub sp,4
1.13335 ++ sub sp,44
1.13336 ++ sub sp,8
1.13337 ++ sub sp,348
1.13338 ++ .text
1.13339 ++ .global sub3
1.13340 ++sub3:
1.13341 ++ sub pc,0
1.13342 ++ sub r12,-1
1.13343 ++ sub r5,-128
1.13344 ++ sub r4,127
1.13345 ++ sub lr,1
1.13346 ++ sub r6,-41
1.13347 ++ sub r4,37
1.13348 ++ sub r12,56
1.13349 ++ .text
1.13350 ++ .global mov1
1.13351 ++mov1:
1.13352 ++ mov pc,0
1.13353 ++ mov r12,-1
1.13354 ++ mov r5,-128
1.13355 ++ mov r4,127
1.13356 ++ mov lr,1
1.13357 ++ mov pc,14
1.13358 ++ mov r6,-100
1.13359 ++ mov lr,-122
1.13360 ++ .text
1.13361 ++ .global lddsp
1.13362 ++lddsp:
1.13363 ++ lddsp pc,sp[0]
1.13364 ++ lddsp r12,sp[508]
1.13365 ++ lddsp r5,sp[256]
1.13366 ++ lddsp r4,sp[252]
1.13367 ++ lddsp lr,sp[4]
1.13368 ++ lddsp lr,sp[256]
1.13369 ++ lddsp r12,sp[20]
1.13370 ++ lddsp r9,sp[472]
1.13371 ++ .text
1.13372 ++ .global lddpc
1.13373 ++lddpc:
1.13374 ++ lddpc pc,pc[0]
1.13375 ++ lddpc r0,pc[508]
1.13376 ++ lddpc r8,pc[256]
1.13377 ++ lddpc r7,pc[252]
1.13378 ++ lddpc lr,pc[4]
1.13379 ++ lddpc sp,pc[472]
1.13380 ++ lddpc r6,pc[120]
1.13381 ++ lddpc r11,pc[28]
1.13382 ++ .text
1.13383 ++ .global stdsp
1.13384 ++stdsp:
1.13385 ++ stdsp sp[0],pc
1.13386 ++ stdsp sp[508],r12
1.13387 ++ stdsp sp[256],r5
1.13388 ++ stdsp sp[252],r4
1.13389 ++ stdsp sp[4],lr
1.13390 ++ stdsp sp[304],pc
1.13391 ++ stdsp sp[256],r0
1.13392 ++ stdsp sp[336],r5
1.13393 ++ .text
1.13394 ++ .global cp2
1.13395 ++cp2:
1.13396 ++ cp pc,0
1.13397 ++ cp r12,-1
1.13398 ++ cp r5,-32
1.13399 ++ cp r4,31
1.13400 ++ cp lr,1
1.13401 ++ cp r8,3
1.13402 ++ cp lr,16
1.13403 ++ cp r7,-26
1.13404 ++ .text
1.13405 ++ .global acr
1.13406 ++acr:
1.13407 ++ acr pc
1.13408 ++ acr r12
1.13409 ++ acr r5
1.13410 ++ acr r4
1.13411 ++ acr lr
1.13412 ++ acr r2
1.13413 ++ acr r12
1.13414 ++ acr pc
1.13415 ++ .text
1.13416 ++ .global scr
1.13417 ++scr:
1.13418 ++ scr pc
1.13419 ++ scr r12
1.13420 ++ scr r5
1.13421 ++ scr r4
1.13422 ++ scr lr
1.13423 ++ scr pc
1.13424 ++ scr r6
1.13425 ++ scr r1
1.13426 ++ .text
1.13427 ++ .global cpc0
1.13428 ++cpc0:
1.13429 ++ cpc pc
1.13430 ++ cpc r12
1.13431 ++ cpc r5
1.13432 ++ cpc r4
1.13433 ++ cpc lr
1.13434 ++ cpc pc
1.13435 ++ cpc r4
1.13436 ++ cpc r9
1.13437 ++ .text
1.13438 ++ .global neg
1.13439 ++neg:
1.13440 ++ neg pc
1.13441 ++ neg r12
1.13442 ++ neg r5
1.13443 ++ neg r4
1.13444 ++ neg lr
1.13445 ++ neg r7
1.13446 ++ neg r1
1.13447 ++ neg r9
1.13448 ++ .text
1.13449 ++ .global abs
1.13450 ++abs:
1.13451 ++ abs pc
1.13452 ++ abs r12
1.13453 ++ abs r5
1.13454 ++ abs r4
1.13455 ++ abs lr
1.13456 ++ abs r6
1.13457 ++ abs r6
1.13458 ++ abs r4
1.13459 ++ .text
1.13460 ++ .global castu_b
1.13461 ++castu_b:
1.13462 ++ castu.b pc
1.13463 ++ castu.b r12
1.13464 ++ castu.b r5
1.13465 ++ castu.b r4
1.13466 ++ castu.b lr
1.13467 ++ castu.b r7
1.13468 ++ castu.b sp
1.13469 ++ castu.b r9
1.13470 ++ .text
1.13471 ++ .global casts_b
1.13472 ++casts_b:
1.13473 ++ casts.b pc
1.13474 ++ casts.b r12
1.13475 ++ casts.b r5
1.13476 ++ casts.b r4
1.13477 ++ casts.b lr
1.13478 ++ casts.b r11
1.13479 ++ casts.b r1
1.13480 ++ casts.b r10
1.13481 ++ .text
1.13482 ++ .global castu_h
1.13483 ++castu_h:
1.13484 ++ castu.h pc
1.13485 ++ castu.h r12
1.13486 ++ castu.h r5
1.13487 ++ castu.h r4
1.13488 ++ castu.h lr
1.13489 ++ castu.h r10
1.13490 ++ castu.h r11
1.13491 ++ castu.h r1
1.13492 ++ .text
1.13493 ++ .global casts_h
1.13494 ++casts_h:
1.13495 ++ casts.h pc
1.13496 ++ casts.h r12
1.13497 ++ casts.h r5
1.13498 ++ casts.h r4
1.13499 ++ casts.h lr
1.13500 ++ casts.h r0
1.13501 ++ casts.h r5
1.13502 ++ casts.h r9
1.13503 ++ .text
1.13504 ++ .global brev
1.13505 ++brev:
1.13506 ++ brev pc
1.13507 ++ brev r12
1.13508 ++ brev r5
1.13509 ++ brev r4
1.13510 ++ brev lr
1.13511 ++ brev r5
1.13512 ++ brev r10
1.13513 ++ brev r8
1.13514 ++ .text
1.13515 ++ .global swap_h
1.13516 ++swap_h:
1.13517 ++ swap.h pc
1.13518 ++ swap.h r12
1.13519 ++ swap.h r5
1.13520 ++ swap.h r4
1.13521 ++ swap.h lr
1.13522 ++ swap.h r7
1.13523 ++ swap.h r0
1.13524 ++ swap.h r8
1.13525 ++ .text
1.13526 ++ .global swap_b
1.13527 ++swap_b:
1.13528 ++ swap.b pc
1.13529 ++ swap.b r12
1.13530 ++ swap.b r5
1.13531 ++ swap.b r4
1.13532 ++ swap.b lr
1.13533 ++ swap.b r10
1.13534 ++ swap.b r12
1.13535 ++ swap.b r1
1.13536 ++ .text
1.13537 ++ .global swap_bh
1.13538 ++swap_bh:
1.13539 ++ swap.bh pc
1.13540 ++ swap.bh r12
1.13541 ++ swap.bh r5
1.13542 ++ swap.bh r4
1.13543 ++ swap.bh lr
1.13544 ++ swap.bh r9
1.13545 ++ swap.bh r4
1.13546 ++ swap.bh r1
1.13547 ++ .text
1.13548 ++ .global One_s_compliment
1.13549 ++One_s_compliment:
1.13550 ++ com pc
1.13551 ++ com r12
1.13552 ++ com r5
1.13553 ++ com r4
1.13554 ++ com lr
1.13555 ++ com r2
1.13556 ++ com r2
1.13557 ++ com r7
1.13558 ++ .text
1.13559 ++ .global tnbz
1.13560 ++tnbz:
1.13561 ++ tnbz pc
1.13562 ++ tnbz r12
1.13563 ++ tnbz r5
1.13564 ++ tnbz r4
1.13565 ++ tnbz lr
1.13566 ++ tnbz r8
1.13567 ++ tnbz r12
1.13568 ++ tnbz pc
1.13569 ++ .text
1.13570 ++ .global rol
1.13571 ++rol:
1.13572 ++ rol pc
1.13573 ++ rol r12
1.13574 ++ rol r5
1.13575 ++ rol r4
1.13576 ++ rol lr
1.13577 ++ rol r10
1.13578 ++ rol r9
1.13579 ++ rol r5
1.13580 ++ .text
1.13581 ++ .global ror
1.13582 ++ror:
1.13583 ++ ror pc
1.13584 ++ ror r12
1.13585 ++ ror r5
1.13586 ++ ror r4
1.13587 ++ ror lr
1.13588 ++ ror r8
1.13589 ++ ror r4
1.13590 ++ ror r7
1.13591 ++ .text
1.13592 ++ .global icall
1.13593 ++icall:
1.13594 ++ icall pc
1.13595 ++ icall r12
1.13596 ++ icall r5
1.13597 ++ icall r4
1.13598 ++ icall lr
1.13599 ++ icall r3
1.13600 ++ icall r1
1.13601 ++ icall r3
1.13602 ++ .text
1.13603 ++ .global mustr
1.13604 ++mustr:
1.13605 ++ mustr pc
1.13606 ++ mustr r12
1.13607 ++ mustr r5
1.13608 ++ mustr r4
1.13609 ++ mustr lr
1.13610 ++ mustr r1
1.13611 ++ mustr r4
1.13612 ++ mustr r12
1.13613 ++ .text
1.13614 ++ .global musfr
1.13615 ++musfr:
1.13616 ++ musfr pc
1.13617 ++ musfr r12
1.13618 ++ musfr r5
1.13619 ++ musfr r4
1.13620 ++ musfr lr
1.13621 ++ musfr r11
1.13622 ++ musfr r12
1.13623 ++ musfr r2
1.13624 ++ .text
1.13625 ++ .global ret_cond
1.13626 ++ret_cond:
1.13627 ++ reteq pc
1.13628 ++ retal r12
1.13629 ++ retls r5
1.13630 ++ retpl r4
1.13631 ++ retne lr
1.13632 ++ retgt r0
1.13633 ++ retgt r12
1.13634 ++ retge r10
1.13635 ++ .text
1.13636 ++ .global sr_cond
1.13637 ++sr_cond:
1.13638 ++ sreq pc
1.13639 ++ sral r12
1.13640 ++ srls r5
1.13641 ++ srpl r4
1.13642 ++ srne lr
1.13643 ++ srlt r0
1.13644 ++ sral sp
1.13645 ++ srge r9
1.13646 ++ .text
1.13647 ++ .global ld_w3
1.13648 ++ld_w3:
1.13649 ++ ld.w pc,pc[0]
1.13650 ++ ld.w r12,r12[124]
1.13651 ++ ld.w r5,r5[64]
1.13652 ++ ld.w r4,r4[60]
1.13653 ++ ld.w lr,lr[4]
1.13654 ++ ld.w sp,r2[52]
1.13655 ++ ld.w r9,r1[8]
1.13656 ++ ld.w r5,sp[60]
1.13657 ++ .text
1.13658 ++ .global ld_sh3
1.13659 ++ld_sh3:
1.13660 ++ ld.sh pc,pc[0]
1.13661 ++ ld.sh r12,r12[14]
1.13662 ++ ld.sh r5,r5[8]
1.13663 ++ ld.sh r4,r4[6]
1.13664 ++ ld.sh lr,lr[2]
1.13665 ++ ld.sh r4,r2[8]
1.13666 ++ ld.sh sp,lr[10]
1.13667 ++ ld.sh r2,r11[2]
1.13668 ++ .text
1.13669 ++ .global ld_uh3
1.13670 ++ld_uh3:
1.13671 ++ ld.uh pc,pc[0]
1.13672 ++ ld.uh r12,r12[14]
1.13673 ++ ld.uh r5,r5[8]
1.13674 ++ ld.uh r4,r4[6]
1.13675 ++ ld.uh lr,lr[2]
1.13676 ++ ld.uh r10,r0[10]
1.13677 ++ ld.uh r8,r11[8]
1.13678 ++ ld.uh r10,r2[12]
1.13679 ++ .text
1.13680 ++ .global st_w3
1.13681 ++st_w3:
1.13682 ++ st.w pc[0],pc
1.13683 ++ st.w r12[60],r12
1.13684 ++ st.w r5[32],r5
1.13685 ++ st.w r4[28],r4
1.13686 ++ st.w lr[4],lr
1.13687 ++ st.w r7[44],r11
1.13688 ++ st.w r2[24],r6
1.13689 ++ st.w r4[12],r9
1.13690 ++ .text
1.13691 ++ .global st_h3
1.13692 ++st_h3:
1.13693 ++ st.h pc[0],pc
1.13694 ++ st.h r12[14],r12
1.13695 ++ st.h r5[8],r5
1.13696 ++ st.h r4[6],r4
1.13697 ++ st.h lr[2],lr
1.13698 ++ st.h lr[10],r12
1.13699 ++ st.h r6[4],r0
1.13700 ++ st.h r5[12],sp
1.13701 ++ .text
1.13702 ++ .global st_b3
1.13703 ++st_b3:
1.13704 ++ st.b pc[0],pc
1.13705 ++ st.b r12[7],r12
1.13706 ++ st.b r5[4],r5
1.13707 ++ st.b r4[3],r4
1.13708 ++ st.b lr[1],lr
1.13709 ++ st.b r12[6],r9
1.13710 ++ st.b r2[3],lr
1.13711 ++ st.b r1[3],r11
1.13712 ++ .text
1.13713 ++ .global ldd
1.13714 ++ldd:
1.13715 ++ ld.d r0,pc
1.13716 ++ ld.d r14,r12
1.13717 ++ ld.d r8,r5
1.13718 ++ ld.d r6,r4
1.13719 ++ ld.d r2,lr
1.13720 ++ ld.d r14,r7
1.13721 ++ ld.d r4,r4
1.13722 ++ ld.d r14,pc
1.13723 ++ .text
1.13724 ++ .global ldd_postinc
1.13725 ++ldd_postinc:
1.13726 ++ ld.d r0,pc++
1.13727 ++ ld.d r14,r12++
1.13728 ++ ld.d r8,r5++
1.13729 ++ ld.d r6,r4++
1.13730 ++ ld.d r2,lr++
1.13731 ++ ld.d r14,r5++
1.13732 ++ ld.d r12,r11++
1.13733 ++ ld.d r2,r12++
1.13734 ++ .text
1.13735 ++ .global ldd_predec
1.13736 ++ldd_predec:
1.13737 ++ ld.d r0,--pc
1.13738 ++ ld.d r14,--r12
1.13739 ++ ld.d r8,--r5
1.13740 ++ ld.d r6,--r4
1.13741 ++ ld.d r2,--lr
1.13742 ++ ld.d r8,--r0
1.13743 ++ ld.d r10,--pc
1.13744 ++ ld.d r2,--r4
1.13745 ++ .text
1.13746 ++ .global std
1.13747 ++std:
1.13748 ++ st.d pc,r0
1.13749 ++ st.d r12,r14
1.13750 ++ st.d r5,r8
1.13751 ++ st.d r4,r6
1.13752 ++ st.d lr,r2
1.13753 ++ st.d r0,r12
1.13754 ++ st.d sp,r4
1.13755 ++ st.d r12,r12
1.13756 ++ .text
1.13757 ++ .global std_postinc
1.13758 ++std_postinc:
1.13759 ++ st.d pc++,r0
1.13760 ++ st.d r12++,r14
1.13761 ++ st.d r5++,r8
1.13762 ++ st.d r4++,r6
1.13763 ++ st.d lr++,r2
1.13764 ++ st.d sp++,r6
1.13765 ++ st.d r10++,r6
1.13766 ++ st.d r7++,r2
1.13767 ++ .text
1.13768 ++ .global std_predec
1.13769 ++std_predec:
1.13770 ++ st.d --pc,r0
1.13771 ++ st.d --r12,r14
1.13772 ++ st.d --r5,r8
1.13773 ++ st.d --r4,r6
1.13774 ++ st.d --lr,r2
1.13775 ++ st.d --r3,r6
1.13776 ++ st.d --lr,r2
1.13777 ++ st.d --r0,r4
1.13778 ++ .text
1.13779 ++ .global mul
1.13780 ++mul:
1.13781 ++ mul pc,pc
1.13782 ++ mul r12,r12
1.13783 ++ mul r5,r5
1.13784 ++ mul r4,r4
1.13785 ++ mul lr,lr
1.13786 ++ mul r10,lr
1.13787 ++ mul r0,r8
1.13788 ++ mul r8,r5
1.13789 ++ .text
1.13790 ++ .global asr_imm5
1.13791 ++asr_imm5:
1.13792 ++ asr pc,0
1.13793 ++ asr r12,31
1.13794 ++ asr r5,16
1.13795 ++ asr r4,15
1.13796 ++ asr lr,1
1.13797 ++ asr r6,23
1.13798 ++ asr r6,18
1.13799 ++ asr r5,8
1.13800 ++ .text
1.13801 ++ .global lsl_imm5
1.13802 ++lsl_imm5:
1.13803 ++ lsl pc,0
1.13804 ++ lsl r12,31
1.13805 ++ lsl r5,16
1.13806 ++ lsl r4,15
1.13807 ++ lsl lr,1
1.13808 ++ lsl r12,13
1.13809 ++ lsl r6,16
1.13810 ++ lsl r1,25
1.13811 ++ .text
1.13812 ++ .global lsr_imm5
1.13813 ++lsr_imm5:
1.13814 ++ lsr pc,0
1.13815 ++ lsr r12,31
1.13816 ++ lsr r5,16
1.13817 ++ lsr r4,15
1.13818 ++ lsr lr,1
1.13819 ++ lsr r0,1
1.13820 ++ lsr r8,10
1.13821 ++ lsr r7,26
1.13822 ++ .text
1.13823 ++ .global sbr
1.13824 ++sbr:
1.13825 ++ sbr pc,0
1.13826 ++ sbr r12,31
1.13827 ++ sbr r5,16
1.13828 ++ sbr r4,15
1.13829 ++ sbr lr,1
1.13830 ++ sbr r8,31
1.13831 ++ sbr r6,22
1.13832 ++ sbr r1,23
1.13833 ++ .text
1.13834 ++ .global cbr
1.13835 ++cbr:
1.13836 ++ cbr pc,0
1.13837 ++ cbr r12,31
1.13838 ++ cbr r5,16
1.13839 ++ cbr r4,15
1.13840 ++ cbr lr,1
1.13841 ++ cbr r12,10
1.13842 ++ cbr r7,22
1.13843 ++ cbr r8,9
1.13844 ++ .text
1.13845 ++ .global brc1
1.13846 ++brc1:
1.13847 ++ breq 0
1.13848 ++ brpl -2
1.13849 ++ brge -256
1.13850 ++ brcs 254
1.13851 ++ brne 2
1.13852 ++ brcs 230
1.13853 ++ breq -18
1.13854 ++ breq 12
1.13855 ++ .text
1.13856 ++ .global rjmp
1.13857 ++rjmp:
1.13858 ++ rjmp 0
1.13859 ++ rjmp -2
1.13860 ++ rjmp -1024
1.13861 ++ rjmp 1022
1.13862 ++ rjmp 2
1.13863 ++ rjmp -962
1.13864 ++ rjmp 14
1.13865 ++ rjmp -516
1.13866 ++ .text
1.13867 ++ .global rcall1
1.13868 ++rcall1:
1.13869 ++ rcall 0
1.13870 ++ rcall -2
1.13871 ++ rcall -1024
1.13872 ++ rcall 1022
1.13873 ++ rcall 2
1.13874 ++ rcall 216
1.13875 ++ rcall -530
1.13876 ++ rcall -972
1.13877 ++ .text
1.13878 ++ .global acall
1.13879 ++acall:
1.13880 ++ acall 0
1.13881 ++ acall 1020
1.13882 ++ acall 512
1.13883 ++ acall 508
1.13884 ++ acall 4
1.13885 ++ acall 356
1.13886 ++ acall 304
1.13887 ++ acall 172
1.13888 ++ .text
1.13889 ++ .global scall
1.13890 ++scall:
1.13891 ++ scall
1.13892 ++ scall
1.13893 ++ scall
1.13894 ++ scall
1.13895 ++ scall
1.13896 ++ scall
1.13897 ++ scall
1.13898 ++ scall
1.13899 ++ .text
1.13900 ++ .global popm
1.13901 ++popm:
1.13902 ++ /* popm with no argument fails currently */
1.13903 ++ popm pc
1.13904 ++ popm r0-r11,pc,r12=-1
1.13905 ++ popm lr
1.13906 ++ popm r0-r11,pc,r12=1
1.13907 ++ popm r0-r3
1.13908 ++ popm r4-r10,pc
1.13909 ++ popm r0-r3,r11,pc,r12=0
1.13910 ++ popm r0-r7,r10-r12,lr
1.13911 ++ .text
1.13912 ++ .global pushm
1.13913 ++pushm:
1.13914 ++ pushm pc
1.13915 ++ pushm r0-r12,lr,pc
1.13916 ++ pushm pc
1.13917 ++ pushm r0-r12,lr
1.13918 ++ pushm r0-r3
1.13919 ++ pushm r8-r10,lr,pc
1.13920 ++ pushm r0-r3,r10
1.13921 ++ pushm r8-r9,r12
1.13922 ++ .text
1.13923 ++ .global popm_n
1.13924 ++popm_n:
1.13925 ++ popm pc
1.13926 ++ popm r0-r11,pc,r12=-1
1.13927 ++ popm lr
1.13928 ++ popm r0-r11,pc,r12=1
1.13929 ++ popm r0-r3
1.13930 ++ popm r4-r10,pc
1.13931 ++ popm r0-r3,r11,pc,r12=0
1.13932 ++ popm r0-r7,r10-r12,lr
1.13933 ++ .text
1.13934 ++ .global pushm_n
1.13935 ++pushm_n:
1.13936 ++ pushm pc
1.13937 ++ pushm r0-r12,lr,pc
1.13938 ++ pushm pc
1.13939 ++ pushm r0-r12,lr
1.13940 ++ pushm r0-r3
1.13941 ++ pushm r8-r10,lr,pc
1.13942 ++ pushm r0-r3,r10
1.13943 ++ pushm r8-r9,r12
1.13944 ++ .text
1.13945 ++ .global csrfcz
1.13946 ++csrfcz:
1.13947 ++ csrfcz 0
1.13948 ++ csrfcz 31
1.13949 ++ csrfcz 16
1.13950 ++ csrfcz 15
1.13951 ++ csrfcz 1
1.13952 ++ csrfcz 5
1.13953 ++ csrfcz 13
1.13954 ++ csrfcz 23
1.13955 ++ .text
1.13956 ++ .global ssrf
1.13957 ++ssrf:
1.13958 ++ ssrf 0
1.13959 ++ ssrf 31
1.13960 ++ ssrf 16
1.13961 ++ ssrf 15
1.13962 ++ ssrf 1
1.13963 ++ ssrf 29
1.13964 ++ ssrf 13
1.13965 ++ ssrf 13
1.13966 ++ .text
1.13967 ++ .global csrf
1.13968 ++csrf:
1.13969 ++ csrf 0
1.13970 ++ csrf 31
1.13971 ++ csrf 16
1.13972 ++ csrf 15
1.13973 ++ csrf 1
1.13974 ++ csrf 10
1.13975 ++ csrf 15
1.13976 ++ csrf 11
1.13977 ++ .text
1.13978 ++ .global rete
1.13979 ++rete:
1.13980 ++ rete
1.13981 ++ .text
1.13982 ++ .global rets
1.13983 ++rets:
1.13984 ++ rets
1.13985 ++ .text
1.13986 ++ .global retd
1.13987 ++retd:
1.13988 ++ retd
1.13989 ++ .text
1.13990 ++ .global retj
1.13991 ++retj:
1.13992 ++ retj
1.13993 ++ .text
1.13994 ++ .global tlbr
1.13995 ++tlbr:
1.13996 ++ tlbr
1.13997 ++ .text
1.13998 ++ .global tlbs
1.13999 ++tlbs:
1.14000 ++ tlbs
1.14001 ++ .text
1.14002 ++ .global tlbw
1.14003 ++tlbw:
1.14004 ++ tlbw
1.14005 ++ .text
1.14006 ++ .global breakpoint
1.14007 ++breakpoint:
1.14008 ++ breakpoint
1.14009 ++ .text
1.14010 ++ .global incjosp
1.14011 ++incjosp:
1.14012 ++ incjosp 1
1.14013 ++ incjosp 2
1.14014 ++ incjosp 3
1.14015 ++ incjosp 4
1.14016 ++ incjosp -4
1.14017 ++ incjosp -3
1.14018 ++ incjosp -2
1.14019 ++ incjosp -1
1.14020 ++ .text
1.14021 ++ .global nop
1.14022 ++nop:
1.14023 ++ nop
1.14024 ++ .text
1.14025 ++ .global popjc
1.14026 ++popjc:
1.14027 ++ popjc
1.14028 ++ .text
1.14029 ++ .global pushjc
1.14030 ++pushjc:
1.14031 ++ pushjc
1.14032 ++ .text
1.14033 ++ .global add2
1.14034 ++add2:
1.14035 ++ add pc,pc,pc<<0
1.14036 ++ add r12,r12,r12<<3
1.14037 ++ add r5,r5,r5<<2
1.14038 ++ add r4,r4,r4<<1
1.14039 ++ add lr,lr,lr<<1
1.14040 ++ add r0,r12,r0<<1
1.14041 ++ add r9,r12,r4<<0
1.14042 ++ add r12,r12,r7<<2
1.14043 ++ .text
1.14044 ++ .global sub2
1.14045 ++sub2:
1.14046 ++ sub pc,pc,pc<<0
1.14047 ++ sub r12,r12,r12<<3
1.14048 ++ sub r5,r5,r5<<2
1.14049 ++ sub r4,r4,r4<<1
1.14050 ++ sub lr,lr,lr<<1
1.14051 ++ sub sp,r3,r4<<0
1.14052 ++ sub r3,r7,r3<<0
1.14053 ++ sub sp,r10,sp<<1
1.14054 ++ .text
1.14055 ++ .global divu
1.14056 ++divu:
1.14057 ++ divu pc,pc,pc
1.14058 ++ divu r12,r12,r12
1.14059 ++ divu r5,r5,r5
1.14060 ++ divu r4,r4,r4
1.14061 ++ divu lr,lr,lr
1.14062 ++ divu sp,r4,pc
1.14063 ++ divu r5,r5,sp
1.14064 ++ divu r10,sp,r0
1.14065 ++ .text
1.14066 ++ .global addhh_w
1.14067 ++addhh_w:
1.14068 ++ addhh.w pc,pc:b,pc:b
1.14069 ++ addhh.w r12,r12:t,r12:t
1.14070 ++ addhh.w r5,r5:t,r5:t
1.14071 ++ addhh.w r4,r4:b,r4:b
1.14072 ++ addhh.w lr,lr:t,lr:t
1.14073 ++ addhh.w r0,r0:b,r3:b
1.14074 ++ addhh.w lr,r12:t,r7:b
1.14075 ++ addhh.w r3,r10:t,r2:b
1.14076 ++ .text
1.14077 ++ .global subhh_w
1.14078 ++subhh_w:
1.14079 ++ subhh.w pc,pc:b,pc:b
1.14080 ++ subhh.w r12,r12:t,r12:t
1.14081 ++ subhh.w r5,r5:t,r5:t
1.14082 ++ subhh.w r4,r4:b,r4:b
1.14083 ++ subhh.w lr,lr:t,lr:t
1.14084 ++ subhh.w r10,r1:t,r7:b
1.14085 ++ subhh.w pc,r10:t,lr:t
1.14086 ++ subhh.w r3,r0:t,r12:b
1.14087 ++ .text
1.14088 ++ .global adc
1.14089 ++adc:
1.14090 ++ adc pc,pc,pc
1.14091 ++ adc r12,r12,r12
1.14092 ++ adc r5,r5,r5
1.14093 ++ adc r4,r4,r4
1.14094 ++ adc lr,lr,lr
1.14095 ++ adc r4,r0,r7
1.14096 ++ adc sp,r4,r3
1.14097 ++ adc r2,r12,r0
1.14098 ++ .text
1.14099 ++ .global sbc
1.14100 ++sbc:
1.14101 ++ sbc pc,pc,pc
1.14102 ++ sbc r12,r12,r12
1.14103 ++ sbc r5,r5,r5
1.14104 ++ sbc r4,r4,r4
1.14105 ++ sbc lr,lr,lr
1.14106 ++ sbc r6,r7,r9
1.14107 ++ sbc r0,r8,r5
1.14108 ++ sbc r1,r0,r4
1.14109 ++ .text
1.14110 ++ .global mul_2
1.14111 ++mul_2:
1.14112 ++ mul pc,pc,pc
1.14113 ++ mul r12,r12,r12
1.14114 ++ mul r5,r5,r5
1.14115 ++ mul r4,r4,r4
1.14116 ++ mul lr,lr,lr
1.14117 ++ mul pc,r0,r0
1.14118 ++ mul r8,pc,lr
1.14119 ++ mul r4,r12,pc
1.14120 ++ .text
1.14121 ++ .global mac
1.14122 ++mac:
1.14123 ++ mac pc,pc,pc
1.14124 ++ mac r12,r12,r12
1.14125 ++ mac r5,r5,r5
1.14126 ++ mac r4,r4,r4
1.14127 ++ mac lr,lr,lr
1.14128 ++ mac r10,r4,r0
1.14129 ++ mac r7,lr,r0
1.14130 ++ mac r2,r9,r12
1.14131 ++ .text
1.14132 ++ .global mulsd
1.14133 ++mulsd:
1.14134 ++ muls.d pc,pc,pc
1.14135 ++ muls.d r12,r12,r12
1.14136 ++ muls.d r5,r5,r5
1.14137 ++ muls.d r4,r4,r4
1.14138 ++ muls.d lr,lr,lr
1.14139 ++ muls.d r2,r8,lr
1.14140 ++ muls.d r4,r0,r11
1.14141 ++ muls.d r5,lr,r6
1.14142 ++ .text
1.14143 ++ .global macsd
1.14144 ++macsd:
1.14145 ++ macs.d r0,pc,pc
1.14146 ++ macs.d r14,r12,r12
1.14147 ++ macs.d r8,r5,r5
1.14148 ++ macs.d r6,r4,r4
1.14149 ++ macs.d r2,lr,lr
1.14150 ++ macs.d r8,r1,r9
1.14151 ++ macs.d r14,r8,r8
1.14152 ++ macs.d r4,r3,r12
1.14153 ++ .text
1.14154 ++ .global mulud
1.14155 ++mulud:
1.14156 ++ mulu.d r0,pc,pc
1.14157 ++ mulu.d r14,r12,r12
1.14158 ++ mulu.d r8,r5,r5
1.14159 ++ mulu.d r6,r4,r4
1.14160 ++ mulu.d r2,lr,lr
1.14161 ++ mulu.d r6,r5,r0
1.14162 ++ mulu.d r4,r6,r1
1.14163 ++ mulu.d r8,r8,r2
1.14164 ++ .text
1.14165 ++ .global macud
1.14166 ++macud:
1.14167 ++ macu.d r0,pc,pc
1.14168 ++ macu.d r14,r12,r12
1.14169 ++ macu.d r8,r5,r5
1.14170 ++ macu.d r6,r4,r4
1.14171 ++ macu.d r2,lr,lr
1.14172 ++ macu.d r6,sp,r11
1.14173 ++ macu.d r2,r4,r8
1.14174 ++ macu.d r6,r10,r9
1.14175 ++ .text
1.14176 ++ .global asr_1
1.14177 ++asr_1:
1.14178 ++ asr pc,pc,pc
1.14179 ++ asr r12,r12,r12
1.14180 ++ asr r5,r5,r5
1.14181 ++ asr r4,r4,r4
1.14182 ++ asr lr,lr,lr
1.14183 ++ asr pc,r6,pc
1.14184 ++ asr r0,r6,r12
1.14185 ++ asr r4,sp,r0
1.14186 ++ .text
1.14187 ++ .global lsl_1
1.14188 ++lsl_1:
1.14189 ++ lsl pc,pc,pc
1.14190 ++ lsl r12,r12,r12
1.14191 ++ lsl r5,r5,r5
1.14192 ++ lsl r4,r4,r4
1.14193 ++ lsl lr,lr,lr
1.14194 ++ lsl lr,r5,lr
1.14195 ++ lsl r5,pc,r3
1.14196 ++ lsl r1,pc,r9
1.14197 ++ .text
1.14198 ++ .global lsr_1
1.14199 ++lsr_1:
1.14200 ++ lsr pc,pc,pc
1.14201 ++ lsr r12,r12,r12
1.14202 ++ lsr r5,r5,r5
1.14203 ++ lsr r4,r4,r4
1.14204 ++ lsr lr,lr,lr
1.14205 ++ lsr r2,r4,r1
1.14206 ++ lsr r5,r1,r6
1.14207 ++ lsr sp,r6,r7
1.14208 ++ .text
1.14209 ++ .global xchg
1.14210 ++xchg:
1.14211 ++ xchg pc,pc,pc
1.14212 ++ xchg r12,r12,r12
1.14213 ++ xchg r5,r5,r5
1.14214 ++ xchg r4,r4,r4
1.14215 ++ xchg lr,lr,lr
1.14216 ++ xchg lr,r4,sp
1.14217 ++ xchg r1,r5,r12
1.14218 ++ xchg lr,r12,r0
1.14219 ++ .text
1.14220 ++ .global max
1.14221 ++max:
1.14222 ++ max pc,pc,pc
1.14223 ++ max r12,r12,r12
1.14224 ++ max r5,r5,r5
1.14225 ++ max r4,r4,r4
1.14226 ++ max lr,lr,lr
1.14227 ++ max lr,r2,sp
1.14228 ++ max r4,r10,r9
1.14229 ++ max lr,r9,lr
1.14230 ++ .text
1.14231 ++ .global min
1.14232 ++min:
1.14233 ++ min pc,pc,pc
1.14234 ++ min r12,r12,r12
1.14235 ++ min r5,r5,r5
1.14236 ++ min r4,r4,r4
1.14237 ++ min lr,lr,lr
1.14238 ++ min r9,r7,r8
1.14239 ++ min sp,r5,r5
1.14240 ++ min r4,r1,r4
1.14241 ++ .text
1.14242 ++ .global addabs
1.14243 ++addabs:
1.14244 ++ addabs pc,pc,pc
1.14245 ++ addabs r12,r12,r12
1.14246 ++ addabs r5,r5,r5
1.14247 ++ addabs r4,r4,r4
1.14248 ++ addabs lr,lr,lr
1.14249 ++ addabs r7,r10,r0
1.14250 ++ addabs r9,r9,r7
1.14251 ++ addabs r2,r8,r12
1.14252 ++ .text
1.14253 ++ .global mulnhh_w
1.14254 ++mulnhh_w:
1.14255 ++ mulnhh.w pc,pc:b,pc:b
1.14256 ++ mulnhh.w r12,r12:t,r12:t
1.14257 ++ mulnhh.w r5,r5:t,r5:t
1.14258 ++ mulnhh.w r4,r4:b,r4:b
1.14259 ++ mulnhh.w lr,lr:t,lr:t
1.14260 ++ mulnhh.w r11,sp:t,r9:b
1.14261 ++ mulnhh.w sp,r4:b,lr:t
1.14262 ++ mulnhh.w r12,r2:t,r11:b
1.14263 ++ .text
1.14264 ++ .global mulnwh_d
1.14265 ++mulnwh_d:
1.14266 ++ mulnwh.d r0,pc,pc:b
1.14267 ++ mulnwh.d r14,r12,r12:t
1.14268 ++ mulnwh.d r8,r5,r5:t
1.14269 ++ mulnwh.d r6,r4,r4:b
1.14270 ++ mulnwh.d r2,lr,lr:t
1.14271 ++ mulnwh.d r14,r3,r2:t
1.14272 ++ mulnwh.d r4,r5,r9:b
1.14273 ++ mulnwh.d r12,r4,r4:t
1.14274 ++ .text
1.14275 ++ .global machh_w
1.14276 ++machh_w:
1.14277 ++ machh.w pc,pc:b,pc:b
1.14278 ++ machh.w r12,r12:t,r12:t
1.14279 ++ machh.w r5,r5:t,r5:t
1.14280 ++ machh.w r4,r4:b,r4:b
1.14281 ++ machh.w lr,lr:t,lr:t
1.14282 ++ machh.w lr,r5:b,r1:t
1.14283 ++ machh.w r9,r6:b,r7:b
1.14284 ++ machh.w r5,lr:t,r12:b
1.14285 ++ .text
1.14286 ++ .global machh_d
1.14287 ++machh_d:
1.14288 ++ machh.d r0,pc:b,pc:b
1.14289 ++ machh.d r14,r12:t,r12:t
1.14290 ++ machh.d r8,r5:t,r5:t
1.14291 ++ machh.d r6,r4:b,r4:b
1.14292 ++ machh.d r2,lr:t,lr:t
1.14293 ++ machh.d r10,r0:b,r8:b
1.14294 ++ machh.d r14,r4:b,r5:t
1.14295 ++ machh.d r8,r0:b,r4:t
1.14296 ++ .text
1.14297 ++ .global macsathh_w
1.14298 ++macsathh_w:
1.14299 ++ macsathh.w pc,pc:b,pc:b
1.14300 ++ macsathh.w r12,r12:t,r12:t
1.14301 ++ macsathh.w r5,r5:t,r5:t
1.14302 ++ macsathh.w r4,r4:b,r4:b
1.14303 ++ macsathh.w lr,lr:t,lr:t
1.14304 ++ macsathh.w r7,r7:t,pc:t
1.14305 ++ macsathh.w r4,r2:t,r4:b
1.14306 ++ macsathh.w r4,r8:t,r3:t
1.14307 ++ .text
1.14308 ++ .global mulhh_w
1.14309 ++mulhh_w:
1.14310 ++ mulhh.w pc,pc:b,pc:b
1.14311 ++ mulhh.w r12,r12:t,r12:t
1.14312 ++ mulhh.w r5,r5:t,r5:t
1.14313 ++ mulhh.w r4,r4:b,r4:b
1.14314 ++ mulhh.w lr,lr:t,lr:t
1.14315 ++ mulhh.w r7,r4:t,r9:b
1.14316 ++ mulhh.w pc,r3:t,r7:t
1.14317 ++ mulhh.w pc,r4:b,r9:t
1.14318 ++ .text
1.14319 ++ .global mulsathh_h
1.14320 ++mulsathh_h:
1.14321 ++ mulsathh.h pc,pc:b,pc:b
1.14322 ++ mulsathh.h r12,r12:t,r12:t
1.14323 ++ mulsathh.h r5,r5:t,r5:t
1.14324 ++ mulsathh.h r4,r4:b,r4:b
1.14325 ++ mulsathh.h lr,lr:t,lr:t
1.14326 ++ mulsathh.h r3,r1:b,sp:b
1.14327 ++ mulsathh.h r11,lr:t,r11:b
1.14328 ++ mulsathh.h r8,r8:b,r11:t
1.14329 ++ .text
1.14330 ++ .global mulsathh_w
1.14331 ++mulsathh_w:
1.14332 ++ mulsathh.w pc,pc:b,pc:b
1.14333 ++ mulsathh.w r12,r12:t,r12:t
1.14334 ++ mulsathh.w r5,r5:t,r5:t
1.14335 ++ mulsathh.w r4,r4:b,r4:b
1.14336 ++ mulsathh.w lr,lr:t,lr:t
1.14337 ++ mulsathh.w lr,r11:t,r6:b
1.14338 ++ mulsathh.w r6,r6:b,r7:t
1.14339 ++ mulsathh.w r10,r2:b,r3:b
1.14340 ++ .text
1.14341 ++ .global mulsatrndhh_h
1.14342 ++mulsatrndhh_h:
1.14343 ++ mulsatrndhh.h pc,pc:b,pc:b
1.14344 ++ mulsatrndhh.h r12,r12:t,r12:t
1.14345 ++ mulsatrndhh.h r5,r5:t,r5:t
1.14346 ++ mulsatrndhh.h r4,r4:b,r4:b
1.14347 ++ mulsatrndhh.h lr,lr:t,lr:t
1.14348 ++ mulsatrndhh.h r11,r6:b,r9:b
1.14349 ++ mulsatrndhh.h r11,r3:b,r8:t
1.14350 ++ mulsatrndhh.h r5,sp:t,r7:t
1.14351 ++ .text
1.14352 ++ .global mulsatrndwh_w
1.14353 ++mulsatrndwh_w:
1.14354 ++ mulsatrndwh.w pc,pc,pc:b
1.14355 ++ mulsatrndwh.w r12,r12,r12:t
1.14356 ++ mulsatrndwh.w r5,r5,r5:t
1.14357 ++ mulsatrndwh.w r4,r4,r4:b
1.14358 ++ mulsatrndwh.w lr,lr,lr:t
1.14359 ++ mulsatrndwh.w r5,r12,r0:b
1.14360 ++ mulsatrndwh.w r7,r10,pc:b
1.14361 ++ mulsatrndwh.w r10,r8,r5:t
1.14362 ++ .text
1.14363 ++ .global macwh_d
1.14364 ++macwh_d:
1.14365 ++ macwh.d r0,pc,pc:b
1.14366 ++ macwh.d r14,r12,r12:t
1.14367 ++ macwh.d r8,r5,r5:t
1.14368 ++ macwh.d r6,r4,r4:b
1.14369 ++ macwh.d r2,lr,lr:t
1.14370 ++ macwh.d r4,r10,r12:t
1.14371 ++ macwh.d r4,r7,sp:b
1.14372 ++ macwh.d r14,r9,r11:b
1.14373 ++ .text
1.14374 ++ .global mulwh_d
1.14375 ++mulwh_d:
1.14376 ++ mulwh.d r0,pc,pc:b
1.14377 ++ mulwh.d r14,r12,r12:t
1.14378 ++ mulwh.d r8,r5,r5:t
1.14379 ++ mulwh.d r6,r4,r4:b
1.14380 ++ mulwh.d r2,lr,lr:t
1.14381 ++ mulwh.d r12,r5,r1:b
1.14382 ++ mulwh.d r0,r1,r3:t
1.14383 ++ mulwh.d r0,r9,r2:b
1.14384 ++ .text
1.14385 ++ .global mulsatwh_w
1.14386 ++mulsatwh_w:
1.14387 ++ mulsatwh.w pc,pc,pc:b
1.14388 ++ mulsatwh.w r12,r12,r12:t
1.14389 ++ mulsatwh.w r5,r5,r5:t
1.14390 ++ mulsatwh.w r4,r4,r4:b
1.14391 ++ mulsatwh.w lr,lr,lr:t
1.14392 ++ mulsatwh.w r11,pc,r10:t
1.14393 ++ mulsatwh.w sp,r12,r9:t
1.14394 ++ mulsatwh.w r0,r3,r2:t
1.14395 ++ .text
1.14396 ++ .global ldw7
1.14397 ++ldw7:
1.14398 ++ ld.w pc,pc[pc:b<<2]
1.14399 ++ ld.w r12,r12[r12:t<<2]
1.14400 ++ ld.w r5,r5[r5:u<<2]
1.14401 ++ ld.w r4,r4[r4:l<<2]
1.14402 ++ ld.w lr,lr[lr:l<<2]
1.14403 ++ ld.w r9,r10[r6:l<<2]
1.14404 ++ ld.w r2,r10[r10:b<<2]
1.14405 ++ ld.w r11,r5[pc:b<<2]
1.14406 ++ .text
1.14407 ++ .global satadd_w
1.14408 ++satadd_w:
1.14409 ++ satadd.w pc,pc,pc
1.14410 ++ satadd.w r12,r12,r12
1.14411 ++ satadd.w r5,r5,r5
1.14412 ++ satadd.w r4,r4,r4
1.14413 ++ satadd.w lr,lr,lr
1.14414 ++ satadd.w r4,r8,r11
1.14415 ++ satadd.w r3,r12,r6
1.14416 ++ satadd.w r3,lr,r9
1.14417 ++ .text
1.14418 ++ .global satsub_w1
1.14419 ++satsub_w1:
1.14420 ++ satsub.w pc,pc,pc
1.14421 ++ satsub.w r12,r12,r12
1.14422 ++ satsub.w r5,r5,r5
1.14423 ++ satsub.w r4,r4,r4
1.14424 ++ satsub.w lr,lr,lr
1.14425 ++ satsub.w r8,sp,r0
1.14426 ++ satsub.w r9,r8,r4
1.14427 ++ satsub.w pc,lr,r2
1.14428 ++ .text
1.14429 ++ .global satadd_h
1.14430 ++satadd_h:
1.14431 ++ satadd.h pc,pc,pc
1.14432 ++ satadd.h r12,r12,r12
1.14433 ++ satadd.h r5,r5,r5
1.14434 ++ satadd.h r4,r4,r4
1.14435 ++ satadd.h lr,lr,lr
1.14436 ++ satadd.h r7,r3,r9
1.14437 ++ satadd.h r1,r0,r2
1.14438 ++ satadd.h r1,r4,lr
1.14439 ++ .text
1.14440 ++ .global satsub_h
1.14441 ++satsub_h:
1.14442 ++ satsub.h pc,pc,pc
1.14443 ++ satsub.h r12,r12,r12
1.14444 ++ satsub.h r5,r5,r5
1.14445 ++ satsub.h r4,r4,r4
1.14446 ++ satsub.h lr,lr,lr
1.14447 ++ satsub.h lr,lr,r3
1.14448 ++ satsub.h r11,r6,r5
1.14449 ++ satsub.h r3,sp,r0
1.14450 ++ .text
1.14451 ++ .global mul3
1.14452 ++mul3:
1.14453 ++ mul pc,pc,0
1.14454 ++ mul r12,r12,-1
1.14455 ++ mul r5,r5,-128
1.14456 ++ mul r4,r4,127
1.14457 ++ mul lr,lr,1
1.14458 ++ mul r12,r2,-7
1.14459 ++ mul r1,pc,95
1.14460 ++ mul r4,r6,19
1.14461 ++ .text
1.14462 ++ .global rsub2
1.14463 ++rsub2:
1.14464 ++ rsub pc,pc,0
1.14465 ++ rsub r12,r12,-1
1.14466 ++ rsub r5,r5,-128
1.14467 ++ rsub r4,r4,127
1.14468 ++ rsub lr,lr,1
1.14469 ++ rsub r9,lr,96
1.14470 ++ rsub r11,r1,56
1.14471 ++ rsub r0,r7,-87
1.14472 ++ .text
1.14473 ++ .global clz
1.14474 ++clz:
1.14475 ++ clz pc,pc
1.14476 ++ clz r12,r12
1.14477 ++ clz r5,r5
1.14478 ++ clz r4,r4
1.14479 ++ clz lr,lr
1.14480 ++ clz r2,r3
1.14481 ++ clz r5,r11
1.14482 ++ clz pc,r3
1.14483 ++ .text
1.14484 ++ .global cpc1
1.14485 ++cpc1:
1.14486 ++ cpc pc,pc
1.14487 ++ cpc r12,r12
1.14488 ++ cpc r5,r5
1.14489 ++ cpc r4,r4
1.14490 ++ cpc lr,lr
1.14491 ++ cpc pc,r4
1.14492 ++ cpc r5,r9
1.14493 ++ cpc r6,r7
1.14494 ++ .text
1.14495 ++ .global asr3
1.14496 ++asr3:
1.14497 ++ asr pc,pc,0
1.14498 ++ asr r12,r12,31
1.14499 ++ asr r5,r5,16
1.14500 ++ asr r4,r4,15
1.14501 ++ asr lr,lr,1
1.14502 ++ asr r4,r11,19
1.14503 ++ asr sp,pc,26
1.14504 ++ asr r11,sp,8
1.14505 ++ .text
1.14506 ++ .global lsl3
1.14507 ++lsl3:
1.14508 ++ lsl pc,pc,0
1.14509 ++ lsl r12,r12,31
1.14510 ++ lsl r5,r5,16
1.14511 ++ lsl r4,r4,15
1.14512 ++ lsl lr,lr,1
1.14513 ++ lsl r8,r10,17
1.14514 ++ lsl r2,lr,3
1.14515 ++ lsl lr,r11,14
1.14516 ++ .text
1.14517 ++ .global lsr3
1.14518 ++lsr3:
1.14519 ++ lsr pc,pc,0
1.14520 ++ lsr r12,r12,31
1.14521 ++ lsr r5,r5,16
1.14522 ++ lsr r4,r4,15
1.14523 ++ lsr lr,lr,1
1.14524 ++ lsr r4,r3,31
1.14525 ++ lsr pc,r9,14
1.14526 ++ lsr r3,r0,6
1.14527 ++/* .text
1.14528 ++ .global extract_b
1.14529 ++extract_b:
1.14530 ++ extract.b pc,pc:b
1.14531 ++ extract.b r12,r12:t
1.14532 ++ extract.b r5,r5:u
1.14533 ++ extract.b r4,r4:l
1.14534 ++ extract.b lr,lr:l
1.14535 ++ extract.b r2,r5:l
1.14536 ++ extract.b r12,r3:l
1.14537 ++ extract.b sp,r3:l
1.14538 ++ .text
1.14539 ++ .global insert_b
1.14540 ++insert_b:
1.14541 ++ insert.b pc:b,pc
1.14542 ++ insert.b r12:t,r12
1.14543 ++ insert.b r5:u,r5
1.14544 ++ insert.b r4:l,r4
1.14545 ++ insert.b lr:l,lr
1.14546 ++ insert.b r12:u,r3
1.14547 ++ insert.b r10:l,lr
1.14548 ++ insert.b r11:l,r12
1.14549 ++ .text
1.14550 ++ .global extract_h
1.14551 ++extract_h:
1.14552 ++ extract.h pc,pc:b
1.14553 ++ extract.h r12,r12:t
1.14554 ++ extract.h r5,r5:t
1.14555 ++ extract.h r4,r4:b
1.14556 ++ extract.h lr,lr:t
1.14557 ++ extract.h r11,lr:b
1.14558 ++ extract.h r10,r0:b
1.14559 ++ extract.h r11,r12:b
1.14560 ++ .text
1.14561 ++ .global insert_h
1.14562 ++insert_h:
1.14563 ++ insert.h pc:b,pc
1.14564 ++ insert.h r12:t,r12
1.14565 ++ insert.h r5:t,r5
1.14566 ++ insert.h r4:b,r4
1.14567 ++ insert.h lr:t,lr
1.14568 ++ insert.h r12:t,r11
1.14569 ++ insert.h r7:b,r6
1.14570 ++ insert.h r1:t,r11 */
1.14571 ++ .text
1.14572 ++ .global movc1
1.14573 ++movc1:
1.14574 ++ moveq pc,pc
1.14575 ++ moval r12,r12
1.14576 ++ movls r5,r5
1.14577 ++ movpl r4,r4
1.14578 ++ movne lr,lr
1.14579 ++ movne pc,r11
1.14580 ++ movmi r10,r2
1.14581 ++ movls r8,r12
1.14582 ++ .text
1.14583 ++ .global padd_h
1.14584 ++padd_h:
1.14585 ++ padd.h pc,pc,pc
1.14586 ++ padd.h r12,r12,r12
1.14587 ++ padd.h r5,r5,r5
1.14588 ++ padd.h r4,r4,r4
1.14589 ++ padd.h lr,lr,lr
1.14590 ++ padd.h r8,r2,r7
1.14591 ++ padd.h r0,r0,r3
1.14592 ++ padd.h sp,r11,r6
1.14593 ++ .text
1.14594 ++ .global psub_h
1.14595 ++psub_h:
1.14596 ++ psub.h pc,pc,pc
1.14597 ++ psub.h r12,r12,r12
1.14598 ++ psub.h r5,r5,r5
1.14599 ++ psub.h r4,r4,r4
1.14600 ++ psub.h lr,lr,lr
1.14601 ++ psub.h lr,r6,r8
1.14602 ++ psub.h r0,r1,sp
1.14603 ++ psub.h pc,pc,sp
1.14604 ++ .text
1.14605 ++ .global paddx_h
1.14606 ++paddx_h:
1.14607 ++ paddx.h pc,pc,pc
1.14608 ++ paddx.h r12,r12,r12
1.14609 ++ paddx.h r5,r5,r5
1.14610 ++ paddx.h r4,r4,r4
1.14611 ++ paddx.h lr,lr,lr
1.14612 ++ paddx.h pc,pc,r1
1.14613 ++ paddx.h r10,r4,r5
1.14614 ++ paddx.h r5,pc,r2
1.14615 ++ .text
1.14616 ++ .global psubx_h
1.14617 ++psubx_h:
1.14618 ++ psubx.h pc,pc,pc
1.14619 ++ psubx.h r12,r12,r12
1.14620 ++ psubx.h r5,r5,r5
1.14621 ++ psubx.h r4,r4,r4
1.14622 ++ psubx.h lr,lr,lr
1.14623 ++ psubx.h r5,r12,r5
1.14624 ++ psubx.h r3,r8,r3
1.14625 ++ psubx.h r5,r2,r3
1.14626 ++ .text
1.14627 ++ .global padds_sh
1.14628 ++padds_sh:
1.14629 ++ padds.sh pc,pc,pc
1.14630 ++ padds.sh r12,r12,r12
1.14631 ++ padds.sh r5,r5,r5
1.14632 ++ padds.sh r4,r4,r4
1.14633 ++ padds.sh lr,lr,lr
1.14634 ++ padds.sh r9,lr,r2
1.14635 ++ padds.sh r6,r8,r1
1.14636 ++ padds.sh r6,r4,r10
1.14637 ++ .text
1.14638 ++ .global psubs_sh
1.14639 ++psubs_sh:
1.14640 ++ psubs.sh pc,pc,pc
1.14641 ++ psubs.sh r12,r12,r12
1.14642 ++ psubs.sh r5,r5,r5
1.14643 ++ psubs.sh r4,r4,r4
1.14644 ++ psubs.sh lr,lr,lr
1.14645 ++ psubs.sh r6,lr,r11
1.14646 ++ psubs.sh r2,r12,r4
1.14647 ++ psubs.sh r0,r9,r0
1.14648 ++ .text
1.14649 ++ .global paddxs_sh
1.14650 ++paddxs_sh:
1.14651 ++ paddxs.sh pc,pc,pc
1.14652 ++ paddxs.sh r12,r12,r12
1.14653 ++ paddxs.sh r5,r5,r5
1.14654 ++ paddxs.sh r4,r4,r4
1.14655 ++ paddxs.sh lr,lr,lr
1.14656 ++ paddxs.sh r0,r3,r9
1.14657 ++ paddxs.sh pc,r10,r11
1.14658 ++ paddxs.sh pc,r10,pc
1.14659 ++ .text
1.14660 ++ .global psubxs_sh
1.14661 ++psubxs_sh:
1.14662 ++ psubxs.sh pc,pc,pc
1.14663 ++ psubxs.sh r12,r12,r12
1.14664 ++ psubxs.sh r5,r5,r5
1.14665 ++ psubxs.sh r4,r4,r4
1.14666 ++ psubxs.sh lr,lr,lr
1.14667 ++ psubxs.sh r7,r4,r4
1.14668 ++ psubxs.sh r7,r8,r3
1.14669 ++ psubxs.sh pc,r6,r5
1.14670 ++ .text
1.14671 ++ .global padds_uh
1.14672 ++padds_uh:
1.14673 ++ padds.uh pc,pc,pc
1.14674 ++ padds.uh r12,r12,r12
1.14675 ++ padds.uh r5,r5,r5
1.14676 ++ padds.uh r4,r4,r4
1.14677 ++ padds.uh lr,lr,lr
1.14678 ++ padds.uh r12,r11,r7
1.14679 ++ padds.uh r7,r8,lr
1.14680 ++ padds.uh r6,r9,r7
1.14681 ++ .text
1.14682 ++ .global psubs_uh
1.14683 ++psubs_uh:
1.14684 ++ psubs.uh pc,pc,pc
1.14685 ++ psubs.uh r12,r12,r12
1.14686 ++ psubs.uh r5,r5,r5
1.14687 ++ psubs.uh r4,r4,r4
1.14688 ++ psubs.uh lr,lr,lr
1.14689 ++ psubs.uh lr,r10,r6
1.14690 ++ psubs.uh sp,r2,pc
1.14691 ++ psubs.uh r2,r9,r2
1.14692 ++ .text
1.14693 ++ .global paddxs_uh
1.14694 ++paddxs_uh:
1.14695 ++ paddxs.uh pc,pc,pc
1.14696 ++ paddxs.uh r12,r12,r12
1.14697 ++ paddxs.uh r5,r5,r5
1.14698 ++ paddxs.uh r4,r4,r4
1.14699 ++ paddxs.uh lr,lr,lr
1.14700 ++ paddxs.uh r7,r9,r5
1.14701 ++ paddxs.uh r9,r1,r4
1.14702 ++ paddxs.uh r5,r2,r3
1.14703 ++ .text
1.14704 ++ .global psubxs_uh
1.14705 ++psubxs_uh:
1.14706 ++ psubxs.uh pc,pc,pc
1.14707 ++ psubxs.uh r12,r12,r12
1.14708 ++ psubxs.uh r5,r5,r5
1.14709 ++ psubxs.uh r4,r4,r4
1.14710 ++ psubxs.uh lr,lr,lr
1.14711 ++ psubxs.uh sp,r5,sp
1.14712 ++ psubxs.uh sp,r6,r6
1.14713 ++ psubxs.uh r3,r11,r8
1.14714 ++ .text
1.14715 ++ .global paddh_sh
1.14716 ++paddh_sh:
1.14717 ++ paddh.sh pc,pc,pc
1.14718 ++ paddh.sh r12,r12,r12
1.14719 ++ paddh.sh r5,r5,r5
1.14720 ++ paddh.sh r4,r4,r4
1.14721 ++ paddh.sh lr,lr,lr
1.14722 ++ paddh.sh r12,sp,r3
1.14723 ++ paddh.sh pc,r5,r3
1.14724 ++ paddh.sh r8,r8,sp
1.14725 ++ .text
1.14726 ++ .global psubh_sh
1.14727 ++psubh_sh:
1.14728 ++ psubh.sh pc,pc,pc
1.14729 ++ psubh.sh r12,r12,r12
1.14730 ++ psubh.sh r5,r5,r5
1.14731 ++ psubh.sh r4,r4,r4
1.14732 ++ psubh.sh lr,lr,lr
1.14733 ++ psubh.sh r1,r5,r8
1.14734 ++ psubh.sh r7,r3,r6
1.14735 ++ psubh.sh r4,r3,r3
1.14736 ++ .text
1.14737 ++ .global paddxh_sh
1.14738 ++paddxh_sh:
1.14739 ++ paddxh.sh pc,pc,pc
1.14740 ++ paddxh.sh r12,r12,r12
1.14741 ++ paddxh.sh r5,r5,r5
1.14742 ++ paddxh.sh r4,r4,r4
1.14743 ++ paddxh.sh lr,lr,lr
1.14744 ++ paddxh.sh r6,r0,r4
1.14745 ++ paddxh.sh r9,r8,r9
1.14746 ++ paddxh.sh r3,r0,sp
1.14747 ++ .text
1.14748 ++ .global psubxh_sh
1.14749 ++psubxh_sh:
1.14750 ++ psubxh.sh pc,pc,pc
1.14751 ++ psubxh.sh r12,r12,r12
1.14752 ++ psubxh.sh r5,r5,r5
1.14753 ++ psubxh.sh r4,r4,r4
1.14754 ++ psubxh.sh lr,lr,lr
1.14755 ++ psubxh.sh r4,pc,r12
1.14756 ++ psubxh.sh r8,r4,r6
1.14757 ++ psubxh.sh r12,r9,r4
1.14758 ++ .text
1.14759 ++ .global paddsub_h
1.14760 ++paddsub_h:
1.14761 ++ paddsub.h pc,pc:b,pc:b
1.14762 ++ paddsub.h r12,r12:t,r12:t
1.14763 ++ paddsub.h r5,r5:t,r5:t
1.14764 ++ paddsub.h r4,r4:b,r4:b
1.14765 ++ paddsub.h lr,lr:t,lr:t
1.14766 ++ paddsub.h r5,r2:t,lr:b
1.14767 ++ paddsub.h r7,r1:b,r8:b
1.14768 ++ paddsub.h r6,r10:t,r5:t
1.14769 ++ .text
1.14770 ++ .global psubadd_h
1.14771 ++psubadd_h:
1.14772 ++ psubadd.h pc,pc:b,pc:b
1.14773 ++ psubadd.h r12,r12:t,r12:t
1.14774 ++ psubadd.h r5,r5:t,r5:t
1.14775 ++ psubadd.h r4,r4:b,r4:b
1.14776 ++ psubadd.h lr,lr:t,lr:t
1.14777 ++ psubadd.h r9,r11:t,r8:t
1.14778 ++ psubadd.h r10,r7:t,lr:t
1.14779 ++ psubadd.h r6,pc:t,pc:b
1.14780 ++ .text
1.14781 ++ .global paddsubs_sh
1.14782 ++paddsubs_sh:
1.14783 ++ paddsubs.sh pc,pc:b,pc:b
1.14784 ++ paddsubs.sh r12,r12:t,r12:t
1.14785 ++ paddsubs.sh r5,r5:t,r5:t
1.14786 ++ paddsubs.sh r4,r4:b,r4:b
1.14787 ++ paddsubs.sh lr,lr:t,lr:t
1.14788 ++ paddsubs.sh r0,lr:t,r0:b
1.14789 ++ paddsubs.sh r9,r2:t,r4:t
1.14790 ++ paddsubs.sh r12,r9:t,sp:t
1.14791 ++ .text
1.14792 ++ .global psubadds_sh
1.14793 ++psubadds_sh:
1.14794 ++ psubadds.sh pc,pc:b,pc:b
1.14795 ++ psubadds.sh r12,r12:t,r12:t
1.14796 ++ psubadds.sh r5,r5:t,r5:t
1.14797 ++ psubadds.sh r4,r4:b,r4:b
1.14798 ++ psubadds.sh lr,lr:t,lr:t
1.14799 ++ psubadds.sh pc,lr:b,r1:t
1.14800 ++ psubadds.sh r11,r3:b,r12:b
1.14801 ++ psubadds.sh r10,r2:t,r8:t
1.14802 ++ .text
1.14803 ++ .global paddsubs_uh
1.14804 ++paddsubs_uh:
1.14805 ++ paddsubs.uh pc,pc:b,pc:b
1.14806 ++ paddsubs.uh r12,r12:t,r12:t
1.14807 ++ paddsubs.uh r5,r5:t,r5:t
1.14808 ++ paddsubs.uh r4,r4:b,r4:b
1.14809 ++ paddsubs.uh lr,lr:t,lr:t
1.14810 ++ paddsubs.uh r9,r2:b,r3:b
1.14811 ++ paddsubs.uh sp,sp:b,r7:t
1.14812 ++ paddsubs.uh lr,r0:b,r10:t
1.14813 ++ .text
1.14814 ++ .global psubadds_uh
1.14815 ++psubadds_uh:
1.14816 ++ psubadds.uh pc,pc:b,pc:b
1.14817 ++ psubadds.uh r12,r12:t,r12:t
1.14818 ++ psubadds.uh r5,r5:t,r5:t
1.14819 ++ psubadds.uh r4,r4:b,r4:b
1.14820 ++ psubadds.uh lr,lr:t,lr:t
1.14821 ++ psubadds.uh r12,r9:t,pc:t
1.14822 ++ psubadds.uh r8,r6:b,r8:b
1.14823 ++ psubadds.uh r8,r8:b,r4:b
1.14824 ++ .text
1.14825 ++ .global paddsubh_sh
1.14826 ++paddsubh_sh:
1.14827 ++ paddsubh.sh pc,pc:b,pc:b
1.14828 ++ paddsubh.sh r12,r12:t,r12:t
1.14829 ++ paddsubh.sh r5,r5:t,r5:t
1.14830 ++ paddsubh.sh r4,r4:b,r4:b
1.14831 ++ paddsubh.sh lr,lr:t,lr:t
1.14832 ++ paddsubh.sh r8,r9:t,r9:b
1.14833 ++ paddsubh.sh r0,sp:t,r1:t
1.14834 ++ paddsubh.sh r3,r1:b,r0:t
1.14835 ++ .text
1.14836 ++ .global psubaddh_sh
1.14837 ++psubaddh_sh:
1.14838 ++ psubaddh.sh pc,pc:b,pc:b
1.14839 ++ psubaddh.sh r12,r12:t,r12:t
1.14840 ++ psubaddh.sh r5,r5:t,r5:t
1.14841 ++ psubaddh.sh r4,r4:b,r4:b
1.14842 ++ psubaddh.sh lr,lr:t,lr:t
1.14843 ++ psubaddh.sh r7,r3:t,r10:b
1.14844 ++ psubaddh.sh r7,r2:t,r1:t
1.14845 ++ psubaddh.sh r11,r3:b,r6:b
1.14846 ++ .text
1.14847 ++ .global padd_b
1.14848 ++padd_b:
1.14849 ++ padd.b pc,pc,pc
1.14850 ++ padd.b r12,r12,r12
1.14851 ++ padd.b r5,r5,r5
1.14852 ++ padd.b r4,r4,r4
1.14853 ++ padd.b lr,lr,lr
1.14854 ++ padd.b r2,r6,pc
1.14855 ++ padd.b r8,r9,r12
1.14856 ++ padd.b r5,r12,r3
1.14857 ++ .text
1.14858 ++ .global psub_b
1.14859 ++psub_b:
1.14860 ++ psub.b pc,pc,pc
1.14861 ++ psub.b r12,r12,r12
1.14862 ++ psub.b r5,r5,r5
1.14863 ++ psub.b r4,r4,r4
1.14864 ++ psub.b lr,lr,lr
1.14865 ++ psub.b r0,r12,pc
1.14866 ++ psub.b r7,sp,r10
1.14867 ++ psub.b r5,sp,r12
1.14868 ++ .text
1.14869 ++ .global padds_sb
1.14870 ++padds_sb:
1.14871 ++ padds.sb pc,pc,pc
1.14872 ++ padds.sb r12,r12,r12
1.14873 ++ padds.sb r5,r5,r5
1.14874 ++ padds.sb r4,r4,r4
1.14875 ++ padds.sb lr,lr,lr
1.14876 ++ padds.sb sp,r11,r4
1.14877 ++ padds.sb r11,r10,r11
1.14878 ++ padds.sb r5,r12,r6
1.14879 ++ .text
1.14880 ++ .global psubs_sb
1.14881 ++psubs_sb:
1.14882 ++ psubs.sb pc,pc,pc
1.14883 ++ psubs.sb r12,r12,r12
1.14884 ++ psubs.sb r5,r5,r5
1.14885 ++ psubs.sb r4,r4,r4
1.14886 ++ psubs.sb lr,lr,lr
1.14887 ++ psubs.sb r7,r6,r8
1.14888 ++ psubs.sb r12,r10,r9
1.14889 ++ psubs.sb pc,r11,r0
1.14890 ++ .text
1.14891 ++ .global padds_ub
1.14892 ++padds_ub:
1.14893 ++ padds.ub pc,pc,pc
1.14894 ++ padds.ub r12,r12,r12
1.14895 ++ padds.ub r5,r5,r5
1.14896 ++ padds.ub r4,r4,r4
1.14897 ++ padds.ub lr,lr,lr
1.14898 ++ padds.ub r3,r2,r11
1.14899 ++ padds.ub r10,r8,r1
1.14900 ++ padds.ub r11,r8,r10
1.14901 ++ .text
1.14902 ++ .global psubs_ub
1.14903 ++psubs_ub:
1.14904 ++ psubs.ub pc,pc,pc
1.14905 ++ psubs.ub r12,r12,r12
1.14906 ++ psubs.ub r5,r5,r5
1.14907 ++ psubs.ub r4,r4,r4
1.14908 ++ psubs.ub lr,lr,lr
1.14909 ++ psubs.ub r0,r2,r7
1.14910 ++ psubs.ub lr,r5,r3
1.14911 ++ psubs.ub r6,r7,r9
1.14912 ++ .text
1.14913 ++ .global paddh_ub
1.14914 ++paddh_ub:
1.14915 ++ paddh.ub pc,pc,pc
1.14916 ++ paddh.ub r12,r12,r12
1.14917 ++ paddh.ub r5,r5,r5
1.14918 ++ paddh.ub r4,r4,r4
1.14919 ++ paddh.ub lr,lr,lr
1.14920 ++ paddh.ub lr,r1,r0
1.14921 ++ paddh.ub r2,r7,r7
1.14922 ++ paddh.ub r2,r1,r2
1.14923 ++ .text
1.14924 ++ .global psubh_ub
1.14925 ++psubh_ub:
1.14926 ++ psubh.ub pc,pc,pc
1.14927 ++ psubh.ub r12,r12,r12
1.14928 ++ psubh.ub r5,r5,r5
1.14929 ++ psubh.ub r4,r4,r4
1.14930 ++ psubh.ub lr,lr,lr
1.14931 ++ psubh.ub r0,r1,r6
1.14932 ++ psubh.ub r4,lr,r10
1.14933 ++ psubh.ub r9,r8,r1
1.14934 ++ .text
1.14935 ++ .global pmax_ub
1.14936 ++pmax_ub:
1.14937 ++ pmax.ub pc,pc,pc
1.14938 ++ pmax.ub r12,r12,r12
1.14939 ++ pmax.ub r5,r5,r5
1.14940 ++ pmax.ub r4,r4,r4
1.14941 ++ pmax.ub lr,lr,lr
1.14942 ++ pmax.ub pc,r2,r11
1.14943 ++ pmax.ub r12,r1,r1
1.14944 ++ pmax.ub r5,r2,r0
1.14945 ++ .text
1.14946 ++ .global pmax_sh
1.14947 ++pmax_sh:
1.14948 ++ pmax.sh pc,pc,pc
1.14949 ++ pmax.sh r12,r12,r12
1.14950 ++ pmax.sh r5,r5,r5
1.14951 ++ pmax.sh r4,r4,r4
1.14952 ++ pmax.sh lr,lr,lr
1.14953 ++ pmax.sh lr,r6,r12
1.14954 ++ pmax.sh r2,pc,r5
1.14955 ++ pmax.sh pc,r2,r7
1.14956 ++ .text
1.14957 ++ .global pmin_ub
1.14958 ++pmin_ub:
1.14959 ++ pmin.ub pc,pc,pc
1.14960 ++ pmin.ub r12,r12,r12
1.14961 ++ pmin.ub r5,r5,r5
1.14962 ++ pmin.ub r4,r4,r4
1.14963 ++ pmin.ub lr,lr,lr
1.14964 ++ pmin.ub r8,r1,r5
1.14965 ++ pmin.ub r1,r8,r3
1.14966 ++ pmin.ub r0,r2,r7
1.14967 ++ .text
1.14968 ++ .global pmin_sh
1.14969 ++pmin_sh:
1.14970 ++ pmin.sh pc,pc,pc
1.14971 ++ pmin.sh r12,r12,r12
1.14972 ++ pmin.sh r5,r5,r5
1.14973 ++ pmin.sh r4,r4,r4
1.14974 ++ pmin.sh lr,lr,lr
1.14975 ++ pmin.sh r8,r4,r10
1.14976 ++ pmin.sh lr,r10,r12
1.14977 ++ pmin.sh r2,r6,r2
1.14978 ++ .text
1.14979 ++ .global pavg_ub
1.14980 ++pavg_ub:
1.14981 ++ pavg.ub pc,pc,pc
1.14982 ++ pavg.ub r12,r12,r12
1.14983 ++ pavg.ub r5,r5,r5
1.14984 ++ pavg.ub r4,r4,r4
1.14985 ++ pavg.ub lr,lr,lr
1.14986 ++ pavg.ub r0,r1,r6
1.14987 ++ pavg.ub r8,r3,r6
1.14988 ++ pavg.ub pc,r12,r10
1.14989 ++ .text
1.14990 ++ .global pavg_sh
1.14991 ++pavg_sh:
1.14992 ++ pavg.sh pc,pc,pc
1.14993 ++ pavg.sh r12,r12,r12
1.14994 ++ pavg.sh r5,r5,r5
1.14995 ++ pavg.sh r4,r4,r4
1.14996 ++ pavg.sh lr,lr,lr
1.14997 ++ pavg.sh r9,pc,sp
1.14998 ++ pavg.sh pc,sp,r3
1.14999 ++ pavg.sh r6,r1,r9
1.15000 ++ .text
1.15001 ++ .global pabs_sb
1.15002 ++pabs_sb:
1.15003 ++ pabs.sb pc,pc
1.15004 ++ pabs.sb r12,r12
1.15005 ++ pabs.sb r5,r5
1.15006 ++ pabs.sb r4,r4
1.15007 ++ pabs.sb lr,lr
1.15008 ++ pabs.sb r11,r6
1.15009 ++ pabs.sb lr,r9
1.15010 ++ pabs.sb sp,r7
1.15011 ++ .text
1.15012 ++ .global pabs_sh
1.15013 ++pabs_sh:
1.15014 ++ pabs.sh pc,pc
1.15015 ++ pabs.sh r12,r12
1.15016 ++ pabs.sh r5,r5
1.15017 ++ pabs.sh r4,r4
1.15018 ++ pabs.sh lr,lr
1.15019 ++ pabs.sh pc,r3
1.15020 ++ pabs.sh r5,r7
1.15021 ++ pabs.sh r4,r0
1.15022 ++ .text
1.15023 ++ .global psad
1.15024 ++psad:
1.15025 ++ psad pc,pc,pc
1.15026 ++ psad r12,r12,r12
1.15027 ++ psad r5,r5,r5
1.15028 ++ psad r4,r4,r4
1.15029 ++ psad lr,lr,lr
1.15030 ++ psad r9,r11,r11
1.15031 ++ psad lr,r4,sp
1.15032 ++ psad lr,r4,r5
1.15033 ++ .text
1.15034 ++ .global pasr_b
1.15035 ++pasr_b:
1.15036 ++ pasr.b pc,pc,0
1.15037 ++ pasr.b r12,r12,7
1.15038 ++ pasr.b r5,r5,4
1.15039 ++ pasr.b r4,r4,3
1.15040 ++ pasr.b lr,lr,1
1.15041 ++ pasr.b pc,r7,1
1.15042 ++ pasr.b sp,lr,6
1.15043 ++ pasr.b sp,r3,2
1.15044 ++ .text
1.15045 ++ .global plsl_b
1.15046 ++plsl_b:
1.15047 ++ plsl.b pc,pc,0
1.15048 ++ plsl.b r12,r12,7
1.15049 ++ plsl.b r5,r5,4
1.15050 ++ plsl.b r4,r4,3
1.15051 ++ plsl.b lr,lr,1
1.15052 ++ plsl.b r2,r11,4
1.15053 ++ plsl.b r8,r5,7
1.15054 ++ plsl.b pc,r0,2
1.15055 ++ .text
1.15056 ++ .global plsr_b
1.15057 ++plsr_b:
1.15058 ++ plsr.b pc,pc,0
1.15059 ++ plsr.b r12,r12,7
1.15060 ++ plsr.b r5,r5,4
1.15061 ++ plsr.b r4,r4,3
1.15062 ++ plsr.b lr,lr,1
1.15063 ++ plsr.b r12,r1,2
1.15064 ++ plsr.b r6,pc,7
1.15065 ++ plsr.b r12,r11,2
1.15066 ++ .text
1.15067 ++ .global pasr_h
1.15068 ++pasr_h:
1.15069 ++ pasr.h pc,pc,0
1.15070 ++ pasr.h r12,r12,15
1.15071 ++ pasr.h r5,r5,8
1.15072 ++ pasr.h r4,r4,7
1.15073 ++ pasr.h lr,lr,1
1.15074 ++ pasr.h r0,r11,10
1.15075 ++ pasr.h r4,r6,8
1.15076 ++ pasr.h r6,r2,4
1.15077 ++ .text
1.15078 ++ .global plsl_h
1.15079 ++plsl_h:
1.15080 ++ plsl.h pc,pc,0
1.15081 ++ plsl.h r12,r12,15
1.15082 ++ plsl.h r5,r5,8
1.15083 ++ plsl.h r4,r4,7
1.15084 ++ plsl.h lr,lr,1
1.15085 ++ plsl.h r5,r10,9
1.15086 ++ plsl.h sp,lr,8
1.15087 ++ plsl.h r0,lr,7
1.15088 ++ .text
1.15089 ++ .global plsr_h
1.15090 ++plsr_h:
1.15091 ++ plsr.h pc,pc,0
1.15092 ++ plsr.h r12,r12,15
1.15093 ++ plsr.h r5,r5,8
1.15094 ++ plsr.h r4,r4,7
1.15095 ++ plsr.h lr,lr,1
1.15096 ++ plsr.h r11,r0,15
1.15097 ++ plsr.h lr,r3,3
1.15098 ++ plsr.h r8,lr,10
1.15099 ++ .text
1.15100 ++ .global packw_sh
1.15101 ++packw_sh:
1.15102 ++ packw.sh pc,pc,pc
1.15103 ++ packw.sh r12,r12,r12
1.15104 ++ packw.sh r5,r5,r5
1.15105 ++ packw.sh r4,r4,r4
1.15106 ++ packw.sh lr,lr,lr
1.15107 ++ packw.sh sp,r11,r10
1.15108 ++ packw.sh r8,r2,r12
1.15109 ++ packw.sh r8,r1,r5
1.15110 ++ .text
1.15111 ++ .global punpckub_h
1.15112 ++punpckub_h:
1.15113 ++ punpckub.h pc,pc:b
1.15114 ++ punpckub.h r12,r12:t
1.15115 ++ punpckub.h r5,r5:t
1.15116 ++ punpckub.h r4,r4:b
1.15117 ++ punpckub.h lr,lr:t
1.15118 ++ punpckub.h r6,r1:t
1.15119 ++ punpckub.h lr,r5:b
1.15120 ++ punpckub.h lr,r2:t
1.15121 ++ .text
1.15122 ++ .global punpcksb_h
1.15123 ++punpcksb_h:
1.15124 ++ punpcksb.h pc,pc:b
1.15125 ++ punpcksb.h r12,r12:t
1.15126 ++ punpcksb.h r5,r5:t
1.15127 ++ punpcksb.h r4,r4:b
1.15128 ++ punpcksb.h lr,lr:t
1.15129 ++ punpcksb.h r4,r7:t
1.15130 ++ punpcksb.h r6,lr:b
1.15131 ++ punpcksb.h r12,r12:t
1.15132 ++ .text
1.15133 ++ .global packsh_ub
1.15134 ++packsh_ub:
1.15135 ++ packsh.ub pc,pc,pc
1.15136 ++ packsh.ub r12,r12,r12
1.15137 ++ packsh.ub r5,r5,r5
1.15138 ++ packsh.ub r4,r4,r4
1.15139 ++ packsh.ub lr,lr,lr
1.15140 ++ packsh.ub r3,r6,r3
1.15141 ++ packsh.ub r8,r0,r3
1.15142 ++ packsh.ub r9,r3,lr
1.15143 ++ .text
1.15144 ++ .global packsh_sb
1.15145 ++packsh_sb:
1.15146 ++ packsh.sb pc,pc,pc
1.15147 ++ packsh.sb r12,r12,r12
1.15148 ++ packsh.sb r5,r5,r5
1.15149 ++ packsh.sb r4,r4,r4
1.15150 ++ packsh.sb lr,lr,lr
1.15151 ++ packsh.sb r6,r8,r1
1.15152 ++ packsh.sb lr,r9,r8
1.15153 ++ packsh.sb sp,r6,r6
1.15154 ++ .text
1.15155 ++ .global andl
1.15156 ++andl:
1.15157 ++ andl pc,0
1.15158 ++ andl r12,65535
1.15159 ++ andl r5,32768
1.15160 ++ andl r4,32767
1.15161 ++ andl lr,1
1.15162 ++ andl pc,23128
1.15163 ++ andl r8,47262
1.15164 ++ andl r7,13719
1.15165 ++ .text
1.15166 ++ .global andl_coh
1.15167 ++andl_coh:
1.15168 ++ andl pc,0,COH
1.15169 ++ andl r12,65535,COH
1.15170 ++ andl r5,32768,COH
1.15171 ++ andl r4,32767,COH
1.15172 ++ andl lr,1,COH
1.15173 ++ andl r6,22753,COH
1.15174 ++ andl r0,40653,COH
1.15175 ++ andl r4,48580,COH
1.15176 ++ .text
1.15177 ++ .global andh
1.15178 ++andh:
1.15179 ++ andh pc,0
1.15180 ++ andh r12,65535
1.15181 ++ andh r5,32768
1.15182 ++ andh r4,32767
1.15183 ++ andh lr,1
1.15184 ++ andh r12,52312
1.15185 ++ andh r3,8675
1.15186 ++ andh r2,42987
1.15187 ++ .text
1.15188 ++ .global andh_coh
1.15189 ++andh_coh:
1.15190 ++ andh pc,0,COH
1.15191 ++ andh r12,65535,COH
1.15192 ++ andh r5,32768,COH
1.15193 ++ andh r4,32767,COH
1.15194 ++ andh lr,1,COH
1.15195 ++ andh r11,34317,COH
1.15196 ++ andh r8,52982,COH
1.15197 ++ andh r10,23683,COH
1.15198 ++ .text
1.15199 ++ .global orl
1.15200 ++orl:
1.15201 ++ orl pc,0
1.15202 ++ orl r12,65535
1.15203 ++ orl r5,32768
1.15204 ++ orl r4,32767
1.15205 ++ orl lr,1
1.15206 ++ orl sp,16766
1.15207 ++ orl r0,21181
1.15208 ++ orl pc,44103
1.15209 ++ .text
1.15210 ++ .global orh
1.15211 ++orh:
1.15212 ++ orh pc,0
1.15213 ++ orh r12,65535
1.15214 ++ orh r5,32768
1.15215 ++ orh r4,32767
1.15216 ++ orh lr,1
1.15217 ++ orh r8,28285
1.15218 ++ orh r12,30492
1.15219 ++ orh r1,59930
1.15220 ++ .text
1.15221 ++ .global eorl
1.15222 ++eorl:
1.15223 ++ eorl pc,0
1.15224 ++ eorl r12,65535
1.15225 ++ eorl r5,32768
1.15226 ++ eorl r4,32767
1.15227 ++ eorl lr,1
1.15228 ++ eorl r4,51129
1.15229 ++ eorl r6,64477
1.15230 ++ eorl r1,20913
1.15231 ++ .text
1.15232 ++ .global eorh
1.15233 ++eorh:
1.15234 ++ eorh pc,0
1.15235 ++ eorh r12,65535
1.15236 ++ eorh r5,32768
1.15237 ++ eorh r4,32767
1.15238 ++ eorh lr,1
1.15239 ++ eorh r0,11732
1.15240 ++ eorh r10,38069
1.15241 ++ eorh r9,57130
1.15242 ++ .text
1.15243 ++ .global mcall
1.15244 ++mcall:
1.15245 ++ mcall pc[0]
1.15246 ++ mcall r12[-4]
1.15247 ++ mcall r5[-131072]
1.15248 ++ mcall r4[131068]
1.15249 ++ mcall lr[4]
1.15250 ++ mcall sp[61180]
1.15251 ++ mcall r4[-35000]
1.15252 ++ mcall r0[9924]
1.15253 ++ .text
1.15254 ++ .global pref
1.15255 ++pref:
1.15256 ++ pref pc[0]
1.15257 ++ pref r12[-1]
1.15258 ++ pref r5[-32768]
1.15259 ++ pref r4[32767]
1.15260 ++ pref lr[1]
1.15261 ++ pref r7[7748]
1.15262 ++ pref r7[-7699]
1.15263 ++ pref r2[-25892]
1.15264 ++ .text
1.15265 ++ .global cache
1.15266 ++cache:
1.15267 ++ cache pc[0],0
1.15268 ++ cache r12[-1],31
1.15269 ++ cache r5[-1024],16
1.15270 ++ cache r4[1023],15
1.15271 ++ cache lr[1],1
1.15272 ++ cache r3[-964],17
1.15273 ++ cache r4[-375],22
1.15274 ++ cache r3[-888],17
1.15275 ++ .text
1.15276 ++ .global sub4
1.15277 ++sub4:
1.15278 ++ sub pc,0
1.15279 ++ sub r12,-1
1.15280 ++ sub r5,-1048576
1.15281 ++ sub r4,1048575
1.15282 ++ sub lr,1
1.15283 ++ sub r2,-619156
1.15284 ++ sub lr,461517
1.15285 ++ sub r8,-185051
1.15286 ++ .text
1.15287 ++ .global cp3
1.15288 ++cp3:
1.15289 ++ cp pc,0
1.15290 ++ cp r12,-1
1.15291 ++ cp r5,-1048576
1.15292 ++ cp r4,1048575
1.15293 ++ cp lr,1
1.15294 ++ cp r1,124078
1.15295 ++ cp r0,-378909
1.15296 ++ cp r4,-243180
1.15297 ++ .text
1.15298 ++ .global mov2
1.15299 ++mov2:
1.15300 ++ mov pc,0
1.15301 ++ mov r12,-1
1.15302 ++ mov r5,-1048576
1.15303 ++ mov r4,1048575
1.15304 ++ mov lr,1
1.15305 ++ mov r5,-317021
1.15306 ++ mov sp,-749164
1.15307 ++ mov r5,940179
1.15308 ++ .text
1.15309 ++ .global brc2
1.15310 ++brc2:
1.15311 ++ breq 0
1.15312 ++ bral -2
1.15313 ++ brls -2097152
1.15314 ++ brpl 2097150
1.15315 ++ brne 2
1.15316 ++ brhi -1796966
1.15317 ++ brqs 1321368
1.15318 ++ brls -577434
1.15319 ++ .text
1.15320 ++ .global rcall2
1.15321 ++rcall2:
1.15322 ++ rcall 0
1.15323 ++ rcall -2
1.15324 ++ rcall -2097152
1.15325 ++ rcall 2097150
1.15326 ++ rcall 2
1.15327 ++ rcall 496820
1.15328 ++ rcall 1085092
1.15329 ++ rcall -1058
1.15330 ++ .text
1.15331 ++ .global sub5
1.15332 ++sub5:
1.15333 ++ sub pc,pc,0
1.15334 ++ sub r12,r12,-1
1.15335 ++ sub r5,r5,-32768
1.15336 ++ sub r4,r4,32767
1.15337 ++ sub lr,lr,1
1.15338 ++ sub pc,pc,-12744
1.15339 ++ sub r7,r7,-27365
1.15340 ++ sub r2,r9,-17358
1.15341 ++ .text
1.15342 ++ .global satsub_w2
1.15343 ++satsub_w2:
1.15344 ++ satsub.w pc,pc,0
1.15345 ++ satsub.w r12,r12,-1
1.15346 ++ satsub.w r5,r5,-32768
1.15347 ++ satsub.w r4,r4,32767
1.15348 ++ satsub.w lr,lr,1
1.15349 ++ satsub.w r2,lr,-2007
1.15350 ++ satsub.w r7,r12,-784
1.15351 ++ satsub.w r4,r7,23180
1.15352 ++ .text
1.15353 ++ .global ld_d4
1.15354 ++ld_d4:
1.15355 ++ ld.d r0,pc[0]
1.15356 ++ ld.d r14,r12[-1]
1.15357 ++ ld.d r8,r5[-32768]
1.15358 ++ ld.d r6,r4[32767]
1.15359 ++ ld.d r2,lr[1]
1.15360 ++ ld.d r14,r11[14784]
1.15361 ++ ld.d r6,r9[-18905]
1.15362 ++ ld.d r2,r3[-6355]
1.15363 ++ .text
1.15364 ++ .global ld_w4
1.15365 ++ld_w4:
1.15366 ++ ld.w pc,pc[0]
1.15367 ++ ld.w r12,r12[-1]
1.15368 ++ ld.w r5,r5[-32768]
1.15369 ++ ld.w r4,r4[32767]
1.15370 ++ ld.w lr,lr[1]
1.15371 ++ ld.w r0,r12[-22133]
1.15372 ++ ld.w sp,pc[-20521]
1.15373 ++ /* ld.w r3,r5[29035] */
1.15374 ++ nop
1.15375 ++ .text
1.15376 ++ .global ld_sh4
1.15377 ++ld_sh4:
1.15378 ++ ld.sh pc,pc[0]
1.15379 ++ ld.sh r12,r12[-1]
1.15380 ++ ld.sh r5,r5[-32768]
1.15381 ++ ld.sh r4,r4[32767]
1.15382 ++ ld.sh lr,lr[1]
1.15383 ++ ld.sh r6,r10[30930]
1.15384 ++ ld.sh r6,r10[21973]
1.15385 ++ /* ld.sh r11,r10[-2058] */
1.15386 ++ nop
1.15387 ++ .text
1.15388 ++ .global ld_uh4
1.15389 ++ld_uh4:
1.15390 ++ ld.uh pc,pc[0]
1.15391 ++ ld.uh r12,r12[-1]
1.15392 ++ ld.uh r5,r5[-32768]
1.15393 ++ ld.uh r4,r4[32767]
1.15394 ++ ld.uh lr,lr[1]
1.15395 ++ ld.uh r1,r9[-13354]
1.15396 ++ ld.uh lr,r11[21337]
1.15397 ++ /* ld.uh r2,lr[-25370] */
1.15398 ++ nop
1.15399 ++ .text
1.15400 ++ .global ld_sb1
1.15401 ++ld_sb1:
1.15402 ++ ld.sb pc,pc[0]
1.15403 ++ ld.sb r12,r12[-1]
1.15404 ++ ld.sb r5,r5[-32768]
1.15405 ++ ld.sb r4,r4[32767]
1.15406 ++ ld.sb lr,lr[1]
1.15407 ++ ld.sb r7,sp[-28663]
1.15408 ++ ld.sb r2,r1[-5879]
1.15409 ++ ld.sb r12,r3[18734]
1.15410 ++ .text
1.15411 ++ .global ld_ub4
1.15412 ++ld_ub4:
1.15413 ++ ld.ub pc,pc[0]
1.15414 ++ ld.ub r12,r12[-1]
1.15415 ++ ld.ub r5,r5[-32768]
1.15416 ++ ld.ub r4,r4[32767]
1.15417 ++ ld.ub lr,lr[1]
1.15418 ++ ld.ub pc,r4[8277]
1.15419 ++ ld.ub r5,r12[19172]
1.15420 ++ ld.ub r10,lr[26347]
1.15421 ++ .text
1.15422 ++ .global st_d4
1.15423 ++st_d4:
1.15424 ++ st.d pc[0],r0
1.15425 ++ st.d r12[-1],r14
1.15426 ++ st.d r5[-32768],r8
1.15427 ++ st.d r4[32767],r6
1.15428 ++ st.d lr[1],r2
1.15429 ++ st.d r5[13200],r10
1.15430 ++ st.d r5[9352],r10
1.15431 ++ st.d r5[32373],r4
1.15432 ++ .text
1.15433 ++ .global st_w4
1.15434 ++st_w4:
1.15435 ++ st.w pc[0],pc
1.15436 ++ st.w r12[-1],r12
1.15437 ++ st.w r5[-32768],r5
1.15438 ++ st.w r4[32767],r4
1.15439 ++ st.w lr[1],lr
1.15440 ++ st.w sp[6136],r7
1.15441 ++ st.w r6[27087],r12
1.15442 ++ /* st.w r3[20143],r7 */
1.15443 ++ nop
1.15444 ++ .text
1.15445 ++ .global st_h4
1.15446 ++st_h4:
1.15447 ++ st.h pc[0],pc
1.15448 ++ st.h r12[-1],r12
1.15449 ++ st.h r5[-32768],r5
1.15450 ++ st.h r4[32767],r4
1.15451 ++ st.h lr[1],lr
1.15452 ++ st.h r4[-9962],r7
1.15453 ++ st.h r9[-16250],r3
1.15454 ++ /* st.h r8[-28810],r7 */
1.15455 ++ nop
1.15456 ++ .text
1.15457 ++ .global st_b4
1.15458 ++st_b4:
1.15459 ++ st.b pc[0],pc
1.15460 ++ st.b r12[-1],r12
1.15461 ++ st.b r5[-32768],r5
1.15462 ++ st.b r4[32767],r4
1.15463 ++ st.b lr[1],lr
1.15464 ++ st.b r12[30102],r6
1.15465 ++ st.b r5[28977],r1
1.15466 ++ st.b r0[5470],r1
1.15467 ++ .text
1.15468 ++ .global mfsr
1.15469 ++mfsr:
1.15470 ++ mfsr pc,0
1.15471 ++ mfsr r12,1020
1.15472 ++ mfsr r5,512
1.15473 ++ mfsr r4,508
1.15474 ++ mfsr lr,4
1.15475 ++ mfsr r2,696
1.15476 ++ mfsr r4,260
1.15477 ++ mfsr r10,1016
1.15478 ++ .text
1.15479 ++ .global mtsr
1.15480 ++mtsr:
1.15481 ++ mtsr 0,pc
1.15482 ++ mtsr 1020,r12
1.15483 ++ mtsr 512,r5
1.15484 ++ mtsr 508,r4
1.15485 ++ mtsr 4,lr
1.15486 ++ mtsr 224,r10
1.15487 ++ mtsr 836,r12
1.15488 ++ mtsr 304,r9
1.15489 ++ .text
1.15490 ++ .global mfdr
1.15491 ++mfdr:
1.15492 ++ mfdr pc,0
1.15493 ++ mfdr r12,1020
1.15494 ++ mfdr r5,512
1.15495 ++ mfdr r4,508
1.15496 ++ mfdr lr,4
1.15497 ++ mfdr r6,932
1.15498 ++ mfdr r5,36
1.15499 ++ mfdr r9,300
1.15500 ++ .text
1.15501 ++ .global mtdr
1.15502 ++mtdr:
1.15503 ++ mtdr 0,pc
1.15504 ++ mtdr 1020,r12
1.15505 ++ mtdr 512,r5
1.15506 ++ mtdr 508,r4
1.15507 ++ mtdr 4,lr
1.15508 ++ mtdr 180,r8
1.15509 ++ mtdr 720,r10
1.15510 ++ mtdr 408,lr
1.15511 ++ .text
1.15512 ++ .global sleep
1.15513 ++sleep:
1.15514 ++ sleep 0
1.15515 ++ sleep 255
1.15516 ++ sleep 128
1.15517 ++ sleep 127
1.15518 ++ sleep 1
1.15519 ++ sleep 254
1.15520 ++ sleep 15
1.15521 ++ sleep 43
1.15522 ++ .text
1.15523 ++ .global sync
1.15524 ++sync:
1.15525 ++ sync 0
1.15526 ++ sync 255
1.15527 ++ sync 128
1.15528 ++ sync 127
1.15529 ++ sync 1
1.15530 ++ sync 166
1.15531 ++ sync 230
1.15532 ++ sync 180
1.15533 ++ .text
1.15534 ++ .global bld
1.15535 ++bld:
1.15536 ++ bld pc,0
1.15537 ++ bld r12,31
1.15538 ++ bld r5,16
1.15539 ++ bld r4,15
1.15540 ++ bld lr,1
1.15541 ++ bld r9,15
1.15542 ++ bld r0,4
1.15543 ++ bld lr,26
1.15544 ++ .text
1.15545 ++ .global bst
1.15546 ++bst:
1.15547 ++ bst pc,0
1.15548 ++ bst r12,31
1.15549 ++ bst r5,16
1.15550 ++ bst r4,15
1.15551 ++ bst lr,1
1.15552 ++ bst r10,28
1.15553 ++ bst r0,3
1.15554 ++ bst sp,2
1.15555 ++ .text
1.15556 ++ .global sats
1.15557 ++sats:
1.15558 ++ sats pc>>0,0
1.15559 ++ sats r12>>31,31
1.15560 ++ sats r5>>16,16
1.15561 ++ sats r4>>15,15
1.15562 ++ sats lr>>1,1
1.15563 ++ sats r10>>3,19
1.15564 ++ sats r10>>2,26
1.15565 ++ sats r1>>20,1
1.15566 ++ .text
1.15567 ++ .global satu
1.15568 ++satu:
1.15569 ++ satu pc>>0,0
1.15570 ++ satu r12>>31,31
1.15571 ++ satu r5>>16,16
1.15572 ++ satu r4>>15,15
1.15573 ++ satu lr>>1,1
1.15574 ++ satu pc>>5,7
1.15575 ++ satu r7>>5,5
1.15576 ++ satu r2>>26,19
1.15577 ++ .text
1.15578 ++ .global satrnds
1.15579 ++satrnds:
1.15580 ++ satrnds pc>>0,0
1.15581 ++ satrnds r12>>31,31
1.15582 ++ satrnds r5>>16,16
1.15583 ++ satrnds r4>>15,15
1.15584 ++ satrnds lr>>1,1
1.15585 ++ satrnds r0>>21,19
1.15586 ++ satrnds sp>>0,2
1.15587 ++ satrnds r7>>6,29
1.15588 ++ .text
1.15589 ++ .global satrndu
1.15590 ++satrndu:
1.15591 ++ satrndu pc>>0,0
1.15592 ++ satrndu r12>>31,31
1.15593 ++ satrndu r5>>16,16
1.15594 ++ satrndu r4>>15,15
1.15595 ++ satrndu lr>>1,1
1.15596 ++ satrndu r12>>0,26
1.15597 ++ satrndu r4>>21,3
1.15598 ++ satrndu r10>>3,16
1.15599 ++ .text
1.15600 ++ .global subfc
1.15601 ++subfc:
1.15602 ++ subfeq pc,0
1.15603 ++ subfal r12,-1
1.15604 ++ subfls r5,-128
1.15605 ++ subfpl r4,127
1.15606 ++ subfne lr,1
1.15607 ++ subfls r10,8
1.15608 ++ subfvc r11,99
1.15609 ++ subfvs r2,73
1.15610 ++ .text
1.15611 ++ .global subc
1.15612 ++subc:
1.15613 ++ subeq pc,0
1.15614 ++ subal r12,-1
1.15615 ++ subls r5,-128
1.15616 ++ subpl r4,127
1.15617 ++ subne lr,1
1.15618 ++ subls r12,118
1.15619 ++ subvc lr,-12
1.15620 ++ submi r4,-13
1.15621 ++ .text
1.15622 ++ .global movc2
1.15623 ++movc2:
1.15624 ++ moveq pc,0
1.15625 ++ moval r12,-1
1.15626 ++ movls r5,-128
1.15627 ++ movpl r4,127
1.15628 ++ movne lr,1
1.15629 ++ movlt r3,-122
1.15630 ++ movvc r8,2
1.15631 ++ movne r7,-111
1.15632 ++ .text
1.15633 ++ .global cp_b
1.15634 ++cp_b:
1.15635 ++ cp.b pc,r0
1.15636 ++ cp.b r0,pc
1.15637 ++ cp.b r7,r8
1.15638 ++ cp.b r8,r7
1.15639 ++ .text
1.15640 ++ .global cp_h
1.15641 ++cp_h:
1.15642 ++ cp.h pc,r0
1.15643 ++ cp.h r0,pc
1.15644 ++ cp.h r7,r8
1.15645 ++ cp.h r8,r7
1.15646 ++ .text
1.15647 ++ .global ldm
1.15648 ++ldm:
1.15649 ++ ldm pc,r1-r6
1.15650 ++ ldm r12,r0-r15
1.15651 ++ ldm r5,r15
1.15652 ++ ldm r4,r0-r14
1.15653 ++ ldm lr,r0
1.15654 ++ ldm r9,r1,r5,r14
1.15655 ++ ldm r11,r2-r3,r5-r8,r15
1.15656 ++ ldm r6,r0,r3,r9,r13,r15
1.15657 ++ .text
1.15658 ++ .global ldm_pu
1.15659 ++ldm_pu:
1.15660 ++ ldm pc++,r6-r9
1.15661 ++ ldm r12++,r0-r15
1.15662 ++ ldm r5++,r15
1.15663 ++ ldm r4++,r0-r14
1.15664 ++ ldm lr++,r0
1.15665 ++ ldm r12++,r3-r5,r8,r10,r12,r14-r15
1.15666 ++ ldm r10++,r2,r4-r6,r14-r15
1.15667 ++ ldm r6++,r1,r3-r4,r9-r14
1.15668 ++ .text
1.15669 ++ .global ldmts
1.15670 ++ldmts:
1.15671 ++ ldmts pc,r7-r8
1.15672 ++ ldmts r12,r0-r15
1.15673 ++ ldmts r5,r15
1.15674 ++ ldmts r4,r0-r14
1.15675 ++ ldmts lr,r0
1.15676 ++ ldmts r0,r1-r2,r11-r12
1.15677 ++ ldmts lr,r0-r2,r4,r7-r8,r13-r14
1.15678 ++ ldmts r12,r0-r1,r3-r5,r9,r14-r15
1.15679 ++ .text
1.15680 ++ .global ldmts_pu
1.15681 ++ldmts_pu:
1.15682 ++ ldmts pc++,r9
1.15683 ++ ldmts r12++,r0-r15
1.15684 ++ ldmts r5++,r15
1.15685 ++ ldmts r4++,r0-r14
1.15686 ++ ldmts lr++,r0
1.15687 ++ ldmts sp++,r0,r2-r5,r7,r9,r11
1.15688 ++ ldmts r5++,r1-r3,r7,r10-r11
1.15689 ++ ldmts r8++,r2-r4,r7-r8,r13,r15
1.15690 ++ .text
1.15691 ++ .global stm
1.15692 ++stm:
1.15693 ++ stm pc,r7
1.15694 ++ stm r12,r0-r15
1.15695 ++ stm r5,r15
1.15696 ++ stm r4,r0-r14
1.15697 ++ stm lr,r0
1.15698 ++ stm sp,r2-r3,r5,r8,r11,r14
1.15699 ++ stm r4,r0-r4,r6,r10-r11,r14
1.15700 ++ stm r9,r1,r5,r9,r12-r15
1.15701 ++ .text
1.15702 ++ .global stm_pu
1.15703 ++stm_pu:
1.15704 ++ stm --pc,r4-r6
1.15705 ++ stm --r12,r0-r15
1.15706 ++ stm --r5,r15
1.15707 ++ stm --r4,r0-r14
1.15708 ++ stm --lr,r0
1.15709 ++ stm --r11,r0,r4-r9,r11-r15
1.15710 ++ stm --r11,r0,r3,r9-r10,r12,r14
1.15711 ++ stm --r6,r2,r8-r9,r13-r14
1.15712 ++ .text
1.15713 ++ .global stmts
1.15714 ++stmts:
1.15715 ++ stmts pc,r8
1.15716 ++ stmts r12,r0-r15
1.15717 ++ stmts r5,r15
1.15718 ++ stmts r4,r0-r14
1.15719 ++ stmts lr,r0
1.15720 ++ stmts r1,r0-r1,r3-r4,r6,r9-r10,r14-r15
1.15721 ++ stmts r3,r0,r6-r8,r10-r12
1.15722 ++ stmts r11,r0,r4,r6-r7,r9-r10,r12,r14-r15
1.15723 ++ .text
1.15724 ++ .global stmts_pu
1.15725 ++stmts_pu:
1.15726 ++ stmts --pc,r6-r8
1.15727 ++ stmts --r12,r0-r15
1.15728 ++ stmts --r5,r15
1.15729 ++ stmts --r4,r0-r14
1.15730 ++ stmts --lr,r0
1.15731 ++ stmts --r2,r0,r3-r4,r9-r10,r12-r13
1.15732 ++ stmts --r3,r0-r1,r14-r15
1.15733 ++ stmts --r0,r0,r2-r6,r10,r14
1.15734 ++ .text
1.15735 ++ .global ldins_h
1.15736 ++ldins_h:
1.15737 ++ ldins.h pc:b,pc[0]
1.15738 ++ ldins.h r12:t,r12[-2]
1.15739 ++ ldins.h r5:t,r5[-4096]
1.15740 ++ ldins.h r4:b,r4[4094]
1.15741 ++ ldins.h lr:t,lr[2]
1.15742 ++ ldins.h r0:t,lr[1930]
1.15743 ++ ldins.h r3:b,r7[-534]
1.15744 ++ ldins.h r2:b,r12[-2252]
1.15745 ++ .text
1.15746 ++ .global ldins_b
1.15747 ++ldins_b:
1.15748 ++ ldins.b pc:b,pc[0]
1.15749 ++ ldins.b r12:t,r12[-1]
1.15750 ++ ldins.b r5:u,r5[-2048]
1.15751 ++ ldins.b r4:l,r4[2047]
1.15752 ++ ldins.b lr:l,lr[1]
1.15753 ++ ldins.b r6:t,r4[-662]
1.15754 ++ ldins.b r5:b,r1[-151]
1.15755 ++ ldins.b r10:t,r11[-1923]
1.15756 ++ .text
1.15757 ++ .global ldswp_sh
1.15758 ++ldswp_sh:
1.15759 ++ ldswp.sh pc,pc[0]
1.15760 ++ ldswp.sh r12,r12[-2]
1.15761 ++ ldswp.sh r5,r5[-4096]
1.15762 ++ ldswp.sh r4,r4[4094]
1.15763 ++ ldswp.sh lr,lr[2]
1.15764 ++ ldswp.sh r9,r10[3848]
1.15765 ++ ldswp.sh r4,r12[-2040]
1.15766 ++ ldswp.sh r10,r2[3088]
1.15767 ++ .text
1.15768 ++ .global ldswp_uh
1.15769 ++ldswp_uh:
1.15770 ++ ldswp.uh pc,pc[0]
1.15771 ++ ldswp.uh r12,r12[-2]
1.15772 ++ ldswp.uh r5,r5[-4096]
1.15773 ++ ldswp.uh r4,r4[4094]
1.15774 ++ ldswp.uh lr,lr[2]
1.15775 ++ ldswp.uh r4,r9[3724]
1.15776 ++ ldswp.uh lr,sp[-1672]
1.15777 ++ ldswp.uh r8,r12[-3846]
1.15778 ++ .text
1.15779 ++ .global ldswp_w
1.15780 ++ldswp_w:
1.15781 ++ ldswp.w pc,pc[0]
1.15782 ++ ldswp.w r12,r12[-4]
1.15783 ++ ldswp.w r5,r5[-8192]
1.15784 ++ ldswp.w r4,r4[8188]
1.15785 ++ ldswp.w lr,lr[4]
1.15786 ++ ldswp.w sp,r7[1860]
1.15787 ++ ldswp.w pc,r5[-3324]
1.15788 ++ ldswp.w r12,r10[-3296]
1.15789 ++ .text
1.15790 ++ .global stswp_h
1.15791 ++stswp_h:
1.15792 ++ stswp.h pc[0],pc
1.15793 ++ stswp.h r12[-2],r12
1.15794 ++ stswp.h r5[-4096],r5
1.15795 ++ stswp.h r4[4094],r4
1.15796 ++ stswp.h lr[2],lr
1.15797 ++ stswp.h r7[64],r10
1.15798 ++ stswp.h r10[3024],r2
1.15799 ++ stswp.h r0[-2328],r10
1.15800 ++ .text
1.15801 ++ .global stswp_w
1.15802 ++stswp_w:
1.15803 ++ stswp.w pc[0],pc
1.15804 ++ stswp.w r12[-4],r12
1.15805 ++ stswp.w r5[-8192],r5
1.15806 ++ stswp.w r4[8188],r4
1.15807 ++ stswp.w lr[4],lr
1.15808 ++ stswp.w pc[1156],r8
1.15809 ++ stswp.w sp[7992],r10
1.15810 ++ stswp.w r8[-1172],r5
1.15811 ++ .text
1.15812 ++ .global and2
1.15813 ++and2:
1.15814 ++ and pc,pc,pc<<0
1.15815 ++ and r12,r12,r12<<31
1.15816 ++ and r5,r5,r5<<16
1.15817 ++ and r4,r4,r4<<15
1.15818 ++ and lr,lr,lr<<1
1.15819 ++ and r10,r2,r1<<1
1.15820 ++ and r12,r8,r11<<27
1.15821 ++ and r10,r7,r0<<3
1.15822 ++ .text
1.15823 ++ .global and3
1.15824 ++and3:
1.15825 ++ and pc,pc,pc>>0
1.15826 ++ and r12,r12,r12>>31
1.15827 ++ and r5,r5,r5>>16
1.15828 ++ and r4,r4,r4>>15
1.15829 ++ and lr,lr,lr>>1
1.15830 ++ and r12,r8,r7>>17
1.15831 ++ and pc,r4,r9>>20
1.15832 ++ and r10,r9,r10>>12
1.15833 ++ .text
1.15834 ++ .global or2
1.15835 ++or2:
1.15836 ++ or pc,pc,pc<<0
1.15837 ++ or r12,r12,r12<<31
1.15838 ++ or r5,r5,r5<<16
1.15839 ++ or r4,r4,r4<<15
1.15840 ++ or lr,lr,lr<<1
1.15841 ++ or r8,sp,r11<<29
1.15842 ++ or pc,r9,r2<<28
1.15843 ++ or r5,r1,r2<<3
1.15844 ++ .text
1.15845 ++ .global or3
1.15846 ++or3:
1.15847 ++ or pc,pc,pc>>0
1.15848 ++ or r12,r12,r12>>31
1.15849 ++ or r5,r5,r5>>16
1.15850 ++ or r4,r4,r4>>15
1.15851 ++ or lr,lr,lr>>1
1.15852 ++ or r1,sp,sp>>2
1.15853 ++ or r0,r1,r1>>29
1.15854 ++ or r4,r12,r8>>8
1.15855 ++ .text
1.15856 ++ .global eor2
1.15857 ++eor2:
1.15858 ++ eor pc,pc,pc<<0
1.15859 ++ eor r12,r12,r12<<31
1.15860 ++ eor r5,r5,r5<<16
1.15861 ++ eor r4,r4,r4<<15
1.15862 ++ eor lr,lr,lr<<1
1.15863 ++ eor r10,r9,r4<<11
1.15864 ++ eor r4,r0,r1<<31
1.15865 ++ eor r6,r2,r12<<13
1.15866 ++ .text
1.15867 ++ .global eor3
1.15868 ++eor3:
1.15869 ++ eor pc,pc,pc>>0
1.15870 ++ eor r12,r12,r12>>31
1.15871 ++ eor r5,r5,r5>>16
1.15872 ++ eor r4,r4,r4>>15
1.15873 ++ eor lr,lr,lr>>1
1.15874 ++ eor r5,r5,r5>>22
1.15875 ++ eor r10,r1,lr>>3
1.15876 ++ eor r7,lr,sp>>26
1.15877 ++ .text
1.15878 ++ .global sthh_w2
1.15879 ++sthh_w2:
1.15880 ++ sthh.w pc[pc<<0],pc:b,pc:b
1.15881 ++ sthh.w r12[r12<<3],r12:t,r12:t
1.15882 ++ sthh.w r5[r5<<2],r5:t,r5:t
1.15883 ++ sthh.w r4[r4<<1],r4:b,r4:b
1.15884 ++ sthh.w lr[lr<<1],lr:t,lr:t
1.15885 ++ sthh.w sp[r6<<3],r1:t,r12:t
1.15886 ++ sthh.w r6[r6<<0],r9:t,r9:t
1.15887 ++ sthh.w r10[r3<<0],r0:b,r11:t
1.15888 ++ .text
1.15889 ++ .global sthh_w1
1.15890 ++sthh_w1:
1.15891 ++ sthh.w pc[0],pc:b,pc:b
1.15892 ++ sthh.w r12[1020],r12:t,r12:t
1.15893 ++ sthh.w r5[512],r5:t,r5:t
1.15894 ++ sthh.w r4[508],r4:b,r4:b
1.15895 ++ sthh.w lr[4],lr:t,lr:t
1.15896 ++ sthh.w r4[404],r9:t,r0:b
1.15897 ++ sthh.w r8[348],r2:t,r10:b
1.15898 ++ sthh.w sp[172],r9:b,r2:b
1.15899 ++ .text
1.15900 ++ .global cop
1.15901 ++cop:
1.15902 ++ cop cp0,cr0,cr0,cr0,0
1.15903 ++ cop cp7,cr15,cr15,cr15,0x7f
1.15904 ++ cop cp3,cr5,cr5,cr5,0x31
1.15905 ++ cop cp2,cr4,cr4,cr4,0x30
1.15906 ++ cop cp5,cr8,cr3,cr7,0x5a
1.15907 ++ .text
1.15908 ++ .global ldc_w1
1.15909 ++ldc_w1:
1.15910 ++ ldc.w cp0,cr0,r0[0]
1.15911 ++ ldc.w cp7,cr15,pc[255<<2]
1.15912 ++ ldc.w cp3,cr5,r5[128<<2]
1.15913 ++ ldc.w cp2,cr4,r4[127<<2]
1.15914 ++ ldc.w cp4,cr9,r13[36<<2]
1.15915 ++ .text
1.15916 ++ .global ldc_w2
1.15917 ++ldc_w2:
1.15918 ++ ldc.w cp0,cr0,--r0
1.15919 ++ ldc.w cp7,cr15,--pc
1.15920 ++ ldc.w cp3,cr5,--r5
1.15921 ++ ldc.w cp2,cr4,--r4
1.15922 ++ ldc.w cp4,cr9,--r13
1.15923 ++ .text
1.15924 ++ .global ldc_w3
1.15925 ++ldc_w3:
1.15926 ++ ldc.w cp0,cr0,r0[r0]
1.15927 ++ ldc.w cp7,cr15,pc[pc<<3]
1.15928 ++ ldc.w cp3,cr5,r5[r4<<2]
1.15929 ++ ldc.w cp2,cr4,r4[r3<<1]
1.15930 ++ ldc.w cp4,cr9,r13[r12<<0]
1.15931 ++ .text
1.15932 ++ .global ldc_d1
1.15933 ++ldc_d1:
1.15934 ++ ldc.d cp0,cr0,r0[0]
1.15935 ++ ldc.d cp7,cr14,pc[255<<2]
1.15936 ++ ldc.d cp3,cr6,r5[128<<2]
1.15937 ++ ldc.d cp2,cr4,r4[127<<2]
1.15938 ++ ldc.d cp4,cr8,r13[36<<2]
1.15939 ++ .text
1.15940 ++ .global ldc_d2
1.15941 ++ldc_d2:
1.15942 ++ ldc.d cp0,cr0,--r0
1.15943 ++ ldc.d cp7,cr14,--pc
1.15944 ++ ldc.d cp3,cr6,--r5
1.15945 ++ ldc.d cp2,cr4,--r4
1.15946 ++ ldc.d cp4,cr8,--r13
1.15947 ++ .text
1.15948 ++ .global ldc_d3
1.15949 ++ldc_d3:
1.15950 ++ ldc.d cp0,cr0,r0[r0]
1.15951 ++ ldc.d cp7,cr14,pc[pc<<3]
1.15952 ++ ldc.d cp3,cr6,r5[r4<<2]
1.15953 ++ ldc.d cp2,cr4,r4[r3<<1]
1.15954 ++ ldc.d cp4,cr8,r13[r12<<0]
1.15955 ++ .text
1.15956 ++ .global stc_w1
1.15957 ++stc_w1:
1.15958 ++ stc.w cp0,r0[0],cr0
1.15959 ++ stc.w cp7,pc[255<<2],cr15
1.15960 ++ stc.w cp3,r5[128<<2],cr5
1.15961 ++ stc.w cp2,r4[127<<2],cr4
1.15962 ++ stc.w cp4,r13[36<<2],cr9
1.15963 ++ .text
1.15964 ++ .global stc_w2
1.15965 ++stc_w2:
1.15966 ++ stc.w cp0,r0++,cr0
1.15967 ++ stc.w cp7,pc++,cr15
1.15968 ++ stc.w cp3,r5++,cr5
1.15969 ++ stc.w cp2,r4++,cr4
1.15970 ++ stc.w cp4,r13++,cr9
1.15971 ++ .text
1.15972 ++ .global stc_w3
1.15973 ++stc_w3:
1.15974 ++ stc.w cp0,r0[r0],cr0
1.15975 ++ stc.w cp7,pc[pc<<3],cr15
1.15976 ++ stc.w cp3,r5[r4<<2],cr5
1.15977 ++ stc.w cp2,r4[r3<<1],cr4
1.15978 ++ stc.w cp4,r13[r12<<0],cr9
1.15979 ++ .text
1.15980 ++ .global stc_d1
1.15981 ++stc_d1:
1.15982 ++ stc.d cp0,r0[0],cr0
1.15983 ++ stc.d cp7,pc[255<<2],cr14
1.15984 ++ stc.d cp3,r5[128<<2],cr6
1.15985 ++ stc.d cp2,r4[127<<2],cr4
1.15986 ++ stc.d cp4,r13[36<<2],cr8
1.15987 ++ .text
1.15988 ++ .global stc_d2
1.15989 ++stc_d2:
1.15990 ++ stc.d cp0,r0++,cr0
1.15991 ++ stc.d cp7,pc++,cr14
1.15992 ++ stc.d cp3,r5++,cr6
1.15993 ++ stc.d cp2,r4++,cr4
1.15994 ++ stc.d cp4,r13++,cr8
1.15995 ++ .text
1.15996 ++ .global stc_d3
1.15997 ++stc_d3:
1.15998 ++ stc.d cp0,r0[r0],cr0
1.15999 ++ stc.d cp7,pc[pc<<3],cr14
1.16000 ++ stc.d cp3,r5[r4<<2],cr6
1.16001 ++ stc.d cp2,r4[r3<<1],cr4
1.16002 ++ stc.d cp4,r13[r12<<0],cr8
1.16003 ++ .text
1.16004 ++ .global ldc0_w
1.16005 ++ldc0_w:
1.16006 ++ ldc0.w cr0,r0[0]
1.16007 ++ ldc0.w cr15,pc[4095<<2]
1.16008 ++ ldc0.w cr5,r5[2048<<2]
1.16009 ++ ldc0.w cr4,r4[2047<<2]
1.16010 ++ ldc0.w cr9,r13[147<<2]
1.16011 ++ .text
1.16012 ++ .global ldc0_d
1.16013 ++ldc0_d:
1.16014 ++ ldc0.d cr0,r0[0]
1.16015 ++ ldc0.d cr14,pc[4095<<2]
1.16016 ++ ldc0.d cr6,r5[2048<<2]
1.16017 ++ ldc0.d cr4,r4[2047<<2]
1.16018 ++ ldc0.d cr8,r13[147<<2]
1.16019 ++ .text
1.16020 ++ .global stc0_w
1.16021 ++stc0_w:
1.16022 ++ stc0.w r0[0],cr0
1.16023 ++ stc0.w pc[4095<<2],cr15
1.16024 ++ stc0.w r5[2048<<2],cr5
1.16025 ++ stc0.w r4[2047<<2],cr4
1.16026 ++ stc0.w r13[147<<2],cr9
1.16027 ++ .text
1.16028 ++ .global stc0_d
1.16029 ++stc0_d:
1.16030 ++ stc0.d r0[0],cr0
1.16031 ++ stc0.d pc[4095<<2],cr14
1.16032 ++ stc0.d r5[2048<<2],cr6
1.16033 ++ stc0.d r4[2047<<2],cr4
1.16034 ++ stc0.d r13[147<<2],cr8
1.16035 ++ .text
1.16036 ++ .global memc
1.16037 ++memc:
1.16038 ++ memc 0, 0
1.16039 ++ memc -4, 31
1.16040 ++ memc -65536, 16
1.16041 ++ memc 65532, 15
1.16042 ++ .text
1.16043 ++ .global mems
1.16044 ++mems:
1.16045 ++ mems 0, 0
1.16046 ++ mems -4, 31
1.16047 ++ mems -65536, 16
1.16048 ++ mems 65532, 15
1.16049 ++ .text
1.16050 ++ .global memt
1.16051 ++memt:
1.16052 ++ memt 0, 0
1.16053 ++ memt -4, 31
1.16054 ++ memt -65536, 16
1.16055 ++ memt 65532, 15
1.16056 ++
1.16057 ++ .text
1.16058 ++ .global stcond
1.16059 ++stcond:
1.16060 ++ stcond r0[0], r0
1.16061 ++ stcond pc[-1], pc
1.16062 ++ stcond r8[-32768], r7
1.16063 ++ stcond r7[32767], r8
1.16064 ++ stcond r5[0x1234], r10
1.16065 ++
1.16066 ++ldcm_w:
1.16067 ++ ldcm.w cp0,pc,cr0-cr7
1.16068 ++ ldcm.w cp7,r0,cr0
1.16069 ++ ldcm.w cp4,r4++,cr0-cr6
1.16070 ++ ldcm.w cp3,r7,cr7
1.16071 ++ ldcm.w cp1,r12++,cr1,cr4-cr6
1.16072 ++ ldcm.w cp0,pc,cr8-cr15
1.16073 ++ ldcm.w cp7,r0,cr8
1.16074 ++ ldcm.w cp4,r4++,cr8-cr14
1.16075 ++ ldcm.w cp3,r7,cr15
1.16076 ++ ldcm.w cp1,r12++,cr9,cr12-cr14
1.16077 ++
1.16078 ++ldcm_d:
1.16079 ++ ldcm.d cp0,pc,cr0-cr15
1.16080 ++ ldcm.d cp7,r0,cr0,cr1
1.16081 ++ ldcm.d cp4,r4++,cr0-cr13
1.16082 ++ ldcm.d cp3,r7,cr14-cr15
1.16083 ++ ldcm.d cp2,r12++,cr0-cr3,cr8-cr9,cr14-cr15
1.16084 ++
1.16085 ++stcm_w:
1.16086 ++ stcm.w cp0,pc,cr0-cr7
1.16087 ++ stcm.w cp7,r0,cr0
1.16088 ++ stcm.w cp4,--r4,cr0-cr6
1.16089 ++ stcm.w cp3,r7,cr7
1.16090 ++ stcm.w cp1,--r12,cr1,cr4-cr6
1.16091 ++ stcm.w cp0,pc,cr8-cr15
1.16092 ++ stcm.w cp7,r0,cr8
1.16093 ++ stcm.w cp4,--r4,cr8-cr14
1.16094 ++ stcm.w cp3,r7,cr15
1.16095 ++ stcm.w cp1,--r12,cr9,cr12-cr14
1.16096 ++
1.16097 ++stcm_d:
1.16098 ++ stcm.d cp0,pc,cr0-cr15
1.16099 ++ stcm.d cp7,r0,cr0,cr1
1.16100 ++ stcm.d cp4,--r4,cr0-cr13
1.16101 ++ stcm.d cp3,r7,cr14-cr15
1.16102 ++ stcm.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
1.16103 ++
1.16104 ++mvcr_w:
1.16105 ++ mvcr.w cp7,pc,cr15
1.16106 ++ mvcr.w cp0,r0,cr0
1.16107 ++ mvcr.w cp0,pc,cr15
1.16108 ++ mvcr.w cp7,r0,cr15
1.16109 ++ mvcr.w cp7,pc,cr0
1.16110 ++ mvcr.w cp4,r7,cr8
1.16111 ++ mvcr.w cp3,r8,cr7
1.16112 ++
1.16113 ++mvcr_d:
1.16114 ++ mvcr.d cp7,lr,cr14
1.16115 ++ mvcr.d cp0,r0,cr0
1.16116 ++ mvcr.d cp0,lr,cr14
1.16117 ++ mvcr.d cp7,r0,cr14
1.16118 ++ mvcr.d cp7,lr,cr0
1.16119 ++ mvcr.d cp4,r6,cr8
1.16120 ++ mvcr.d cp3,r8,cr6
1.16121 ++
1.16122 ++mvrc_w:
1.16123 ++ mvrc.w cp7,cr15,pc
1.16124 ++ mvrc.w cp0,cr0,r0
1.16125 ++ mvrc.w cp0,cr15,pc
1.16126 ++ mvrc.w cp7,cr15,r0
1.16127 ++ mvrc.w cp7,cr0,pc
1.16128 ++ mvrc.w cp4,cr8,r7
1.16129 ++ mvrc.w cp3,cr7,r8
1.16130 ++
1.16131 ++mvrc_d:
1.16132 ++ mvrc.d cp7,cr14,lr
1.16133 ++ mvrc.d cp0,cr0,r0
1.16134 ++ mvrc.d cp0,cr14,lr
1.16135 ++ mvrc.d cp7,cr14,r0
1.16136 ++ mvrc.d cp7,cr0,lr
1.16137 ++ mvrc.d cp4,cr8,r6
1.16138 ++ mvrc.d cp3,cr6,r8
1.16139 ++
1.16140 ++bfexts:
1.16141 ++ bfexts pc,pc,31,31
1.16142 ++ bfexts r0,r0,0,0
1.16143 ++ bfexts r0,pc,31,31
1.16144 ++ bfexts pc,r0,31,31
1.16145 ++ bfexts pc,pc,0,31
1.16146 ++ bfexts pc,pc,31,0
1.16147 ++ bfexts r7,r8,15,16
1.16148 ++ bfexts r8,r7,16,15
1.16149 ++
1.16150 ++bfextu:
1.16151 ++ bfextu pc,pc,31,31
1.16152 ++ bfextu r0,r0,0,0
1.16153 ++ bfextu r0,pc,31,31
1.16154 ++ bfextu pc,r0,31,31
1.16155 ++ bfextu pc,pc,0,31
1.16156 ++ bfextu pc,pc,31,0
1.16157 ++ bfextu r7,r8,15,16
1.16158 ++ bfextu r8,r7,16,15
1.16159 ++
1.16160 ++bfins:
1.16161 ++ bfins pc,pc,31,31
1.16162 ++ bfins r0,r0,0,0
1.16163 ++ bfins r0,pc,31,31
1.16164 ++ bfins pc,r0,31,31
1.16165 ++ bfins pc,pc,0,31
1.16166 ++ bfins pc,pc,31,0
1.16167 ++ bfins r7,r8,15,16
1.16168 ++ bfins r8,r7,16,15
1.16169 ++
1.16170 ++rsubc:
1.16171 ++ rsubeq pc,0
1.16172 ++ rsubal r12,-1
1.16173 ++ rsubls r5,-128
1.16174 ++ rsubpl r4,127
1.16175 ++ rsubne lr,1
1.16176 ++ rsubls r12,118
1.16177 ++ rsubvc lr,-12
1.16178 ++ rsubmi r4,-13
1.16179 ++
1.16180 ++addc:
1.16181 ++ addeq pc,pc,pc
1.16182 ++ addal r12,r12,r12
1.16183 ++ addls r5,r5,r5
1.16184 ++ addpl r4,r4,r4
1.16185 ++ addne lr,lr,lr
1.16186 ++ addls r10,r2,r1
1.16187 ++ addvc r12,r8,r11
1.16188 ++ addmi r10,r7,r0
1.16189 ++
1.16190 ++subc2:
1.16191 ++ subeq pc,pc,pc
1.16192 ++ subal r12,r12,r12
1.16193 ++ subls r5,r5,r5
1.16194 ++ subpl r4,r4,r4
1.16195 ++ subne lr,lr,lr
1.16196 ++ subls r10,r2,r1
1.16197 ++ subvc r12,r8,r11
1.16198 ++ submi r10,r7,r0
1.16199 ++
1.16200 ++andc:
1.16201 ++ andeq pc,pc,pc
1.16202 ++ andal r12,r12,r12
1.16203 ++ andls r5,r5,r5
1.16204 ++ andpl r4,r4,r4
1.16205 ++ andne lr,lr,lr
1.16206 ++ andls r10,r2,r1
1.16207 ++ andvc r12,r8,r11
1.16208 ++ andmi r10,r7,r0
1.16209 ++
1.16210 ++orc:
1.16211 ++ oreq pc,pc,pc
1.16212 ++ oral r12,r12,r12
1.16213 ++ orls r5,r5,r5
1.16214 ++ orpl r4,r4,r4
1.16215 ++ orne lr,lr,lr
1.16216 ++ orls r10,r2,r1
1.16217 ++ orvc r12,r8,r11
1.16218 ++ ormi r10,r7,r0
1.16219 ++
1.16220 ++eorc:
1.16221 ++ eoreq pc,pc,pc
1.16222 ++ eoral r12,r12,r12
1.16223 ++ eorls r5,r5,r5
1.16224 ++ eorpl r4,r4,r4
1.16225 ++ eorne lr,lr,lr
1.16226 ++ eorls r10,r2,r1
1.16227 ++ eorvc r12,r8,r11
1.16228 ++ eormi r10,r7,r0
1.16229 ++
1.16230 ++ldcond:
1.16231 ++ ld.weq pc,pc[2044]
1.16232 ++ ld.shal r12,r12[1022]
1.16233 ++ ld.uhls r5,r5[0]
1.16234 ++ ld.ubpl r4,r4[511]
1.16235 ++ ld.sbne lr,lr[0]
1.16236 ++ ld.wls r10,r2[0]
1.16237 ++ ld.shvc r12,r8[0x3fe]
1.16238 ++ ld.ubmi r10,r7[1]
1.16239 ++
1.16240 ++stcond2:
1.16241 ++ st.weq pc[2044],pc
1.16242 ++ st.hal r12[1022],r12
1.16243 ++ st.hls r5[0],r5
1.16244 ++ st.bpl r4[511],r4
1.16245 ++ st.bne lr[0],lr
1.16246 ++ st.wls r2[0],r10
1.16247 ++ st.hvc r8[0x3fe],r12
1.16248 ++ st.bmi r7[1],r10
1.16249 ++
1.16250 ++movh:
1.16251 ++ movh pc, 65535
1.16252 ++ movh r0, 0
1.16253 ++ movh r5, 1
1.16254 ++ movh r12, 32767
1.16255 ++
1.16256 ++
1.16257 +--- /dev/null
1.16258 ++++ b/gas/testsuite/gas/avr32/avr32.exp
1.16259 +@@ -0,0 +1,23 @@
1.16260 ++# AVR32 assembler testsuite. -*- Tcl -*-
1.16261 ++
1.16262 ++if [istarget avr32-*-*] {
1.16263 ++ run_dump_test "hwrd-lwrd"
1.16264 ++ run_dump_test "pcrel"
1.16265 ++ run_dump_test "aliases"
1.16266 ++ run_dump_test "dwarf2"
1.16267 ++ run_dump_test "pic_reloc"
1.16268 ++ run_dump_test "fpinsn"
1.16269 ++ run_dump_test "pico"
1.16270 ++ run_dump_test "lda_pic"
1.16271 ++ run_dump_test "lda_pic_linkrelax"
1.16272 ++ run_dump_test "lda_nopic"
1.16273 ++ run_dump_test "lda_nopic_linkrelax"
1.16274 ++ run_dump_test "call_pic"
1.16275 ++ run_dump_test "call_pic_linkrelax"
1.16276 ++ run_dump_test "call_nopic"
1.16277 ++ run_dump_test "call_nopic_linkrelax"
1.16278 ++ run_dump_test "jmptable"
1.16279 ++ run_dump_test "jmptable_linkrelax"
1.16280 ++ run_dump_test "symdiff"
1.16281 ++ run_dump_test "symdiff_linkrelax"
1.16282 ++}
1.16283 +--- /dev/null
1.16284 ++++ b/gas/testsuite/gas/avr32/call_nopic.d
1.16285 +@@ -0,0 +1,36 @@
1.16286 ++#source: call.s
1.16287 ++#as:
1.16288 ++#objdump: -dr
1.16289 ++#name: call_nopic
1.16290 ++
1.16291 ++.*: +file format .*
1.16292 ++
1.16293 ++Disassembly of section \.text:
1.16294 ++
1.16295 ++00000000 <call_test>:
1.16296 ++ 0: d7 03 nop
1.16297 ++
1.16298 ++00000002 <toofar_negative>:
1.16299 ++ \.\.\.
1.16300 ++ 1ffffe: 00 00 add r0,r0
1.16301 ++ 200000: f0 a0 00 00 rcall 0 <call_test>
1.16302 ++ 200004: f0 1f 00 0c mcall 200034 <toofar_negative\+0x200032>
1.16303 ++ 200008: f0 1f 00 0c mcall 200038 <toofar_negative\+0x200036>
1.16304 ++ 20000c: f0 1f 00 0c mcall 20003c <toofar_negative\+0x20003a>
1.16305 ++ 200010: f0 1f 00 0c mcall 200040 <toofar_negative\+0x20003e>
1.16306 ++ \.\.\.
1.16307 ++ 200030: ee b0 ff ff rcall 40002e <far_positive>
1.16308 ++ \.\.\.
1.16309 ++ 200034: R_AVR32_32_CPENT \.text\+0x2
1.16310 ++ 200038: R_AVR32_32_CPENT \.text\.init
1.16311 ++ 20003c: R_AVR32_32_CPENT undefined
1.16312 ++ 200040: R_AVR32_32_CPENT \.text\+0x40002c
1.16313 ++
1.16314 ++0040002c <toofar_positive>:
1.16315 ++ 40002c: d7 03 nop
1.16316 ++0040002e <far_positive>:
1.16317 ++ 40002e: d7 03 nop
1.16318 ++Disassembly of section \.text\.init:
1.16319 ++
1.16320 ++00000000 <different_section>:
1.16321 ++ 0: e2 c0 00 00 sub r0,r1,0
1.16322 +--- /dev/null
1.16323 ++++ b/gas/testsuite/gas/avr32/call_nopic_linkrelax.d
1.16324 +@@ -0,0 +1,43 @@
1.16325 ++#source: call.s
1.16326 ++#as: --linkrelax
1.16327 ++#objdump: -dr
1.16328 ++#name: call_nopic_linkrelax
1.16329 ++
1.16330 ++.*: +file format .*
1.16331 ++
1.16332 ++Disassembly of section \.text:
1.16333 ++
1.16334 ++00000000 <call_test>:
1.16335 ++ 0: d7 03 nop
1.16336 ++
1.16337 ++00000002 <toofar_negative>:
1.16338 ++ \.\.\.
1.16339 ++ 1ffffe: 00 00 add r0,r0
1.16340 ++ 200000: e0 a0 00 00 rcall 200000 <toofar_negative\+0x1ffffe>
1.16341 ++ 200000: R_AVR32_22H_PCREL \.text
1.16342 ++ 200004: f0 1f 00 00 mcall 200004 <toofar_negative\+0x200002>
1.16343 ++ 200004: R_AVR32_CPCALL \.text\+0x200034
1.16344 ++ 200008: f0 1f 00 00 mcall 200008 <toofar_negative\+0x200006>
1.16345 ++ 200008: R_AVR32_CPCALL \.text\+0x200038
1.16346 ++ 20000c: f0 1f 00 00 mcall 20000c <toofar_negative\+0x20000a>
1.16347 ++ 20000c: R_AVR32_CPCALL \.text\+0x20003c
1.16348 ++ 200010: f0 1f 00 00 mcall 200010 <toofar_negative\+0x20000e>
1.16349 ++ 200010: R_AVR32_CPCALL \.text\+0x200040
1.16350 ++ \.\.\.
1.16351 ++ 200030: e0 a0 00 00 rcall 200030 <toofar_negative\+0x20002e>
1.16352 ++ 200030: R_AVR32_22H_PCREL \.text\+0x40002e
1.16353 ++ \.\.\.
1.16354 ++ 200034: R_AVR32_ALIGN \*ABS\*\+0x2
1.16355 ++ 200034: R_AVR32_32_CPENT \.text\+0x2
1.16356 ++ 200038: R_AVR32_32_CPENT \.text\.init
1.16357 ++ 20003c: R_AVR32_32_CPENT undefined
1.16358 ++ 200040: R_AVR32_32_CPENT \.text\+0x40002c
1.16359 ++
1.16360 ++0040002c <toofar_positive>:
1.16361 ++ 40002c: d7 03 nop
1.16362 ++0040002e <far_positive>:
1.16363 ++ 40002e: d7 03 nop
1.16364 ++Disassembly of section \.text\.init:
1.16365 ++
1.16366 ++00000000 <different_section>:
1.16367 ++ 0: e2 c0 00 00 sub r0,r1,0
1.16368 +--- /dev/null
1.16369 ++++ b/gas/testsuite/gas/avr32/call_pic.d
1.16370 +@@ -0,0 +1,36 @@
1.16371 ++#source: call.s
1.16372 ++#as: --pic
1.16373 ++#objdump: -dr
1.16374 ++#name: call_pic
1.16375 ++
1.16376 ++.*: +file format .*
1.16377 ++
1.16378 ++Disassembly of section \.text:
1.16379 ++
1.16380 ++00000000 <call_test>:
1.16381 ++ 0: d7 03 nop
1.16382 ++
1.16383 ++00000002 <toofar_negative>:
1.16384 ++ \.\.\.
1.16385 ++ 1ffffe: 00 00 add r0,r0
1.16386 ++ 200000: f0 a0 00 00 rcall 0 <call_test>
1.16387 ++ 200004: f0 16 00 00 mcall r6\[0\]
1.16388 ++ 200004: R_AVR32_GOT18SW toofar_negative
1.16389 ++ 200008: f0 16 00 00 mcall r6\[0\]
1.16390 ++ 200008: R_AVR32_GOT18SW different_section
1.16391 ++ 20000c: f0 16 00 00 mcall r6\[0\]
1.16392 ++ 20000c: R_AVR32_GOT18SW undefined
1.16393 ++ 200010: f0 16 00 00 mcall r6\[0\]
1.16394 ++ 200010: R_AVR32_GOT18SW toofar_positive
1.16395 ++ \.\.\.
1.16396 ++ 200030: ee b0 ff ff rcall 40002e <far_positive>
1.16397 ++ \.\.\.
1.16398 ++
1.16399 ++0040002c <toofar_positive>:
1.16400 ++ 40002c: d7 03 nop
1.16401 ++0040002e <far_positive>:
1.16402 ++ 40002e: d7 03 nop
1.16403 ++Disassembly of section \.text\.init:
1.16404 ++
1.16405 ++00000000 <different_section>:
1.16406 ++ 0: e2 c0 00 00 sub r0,r1,0
1.16407 +--- /dev/null
1.16408 ++++ b/gas/testsuite/gas/avr32/call_pic_linkrelax.d
1.16409 +@@ -0,0 +1,47 @@
1.16410 ++#source: call.s
1.16411 ++#as: --pic --linkrelax
1.16412 ++#objdump: -dr
1.16413 ++#name: call_pic_linkrelax
1.16414 ++
1.16415 ++.*: +file format .*
1.16416 ++
1.16417 ++Disassembly of section \.text:
1.16418 ++
1.16419 ++00000000 <call_test>:
1.16420 ++ 0: d7 03 nop
1.16421 ++
1.16422 ++00000002 <toofar_negative>:
1.16423 ++ \.\.\.
1.16424 ++ 1ffffe: 00 00 add r0,r0
1.16425 ++ 200000: e0 a0 00 00 rcall 200000 <toofar_negative\+0x1ffffe>
1.16426 ++ 200000: R_AVR32_22H_PCREL \.text
1.16427 ++ 200004: e0 6e 00 00 mov lr,0
1.16428 ++ 200004: R_AVR32_GOTCALL toofar_negative
1.16429 ++ 200008: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
1.16430 ++ 20000c: 5d 1e icall lr
1.16431 ++ 20000e: e0 6e 00 00 mov lr,0
1.16432 ++ 20000e: R_AVR32_GOTCALL different_section
1.16433 ++ 200012: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
1.16434 ++ 200016: 5d 1e icall lr
1.16435 ++ 200018: e0 6e 00 00 mov lr,0
1.16436 ++ 200018: R_AVR32_GOTCALL undefined
1.16437 ++ 20001c: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
1.16438 ++ 200020: 5d 1e icall lr
1.16439 ++ 200022: e0 6e 00 00 mov lr,0
1.16440 ++ 200022: R_AVR32_GOTCALL toofar_positive
1.16441 ++ 200026: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
1.16442 ++ 20002a: 5d 1e icall lr
1.16443 ++ 20002c: 00 00 add r0,r0
1.16444 ++ 20002e: 00 00 add r0,r0
1.16445 ++ 200030: e0 a0 00 00 rcall 200030 <toofar_negative\+0x20002e>
1.16446 ++ 200030: R_AVR32_22H_PCREL \.text\+0x40002e
1.16447 ++ \.\.\.
1.16448 ++
1.16449 ++0040002c <toofar_positive>:
1.16450 ++ 40002c: d7 03 nop
1.16451 ++0040002e <far_positive>:
1.16452 ++ 40002e: d7 03 nop
1.16453 ++Disassembly of section \.text\.init:
1.16454 ++
1.16455 ++00000000 <different_section>:
1.16456 ++ 0: e2 c0 00 00 sub r0,r1,0
1.16457 +--- /dev/null
1.16458 ++++ b/gas/testsuite/gas/avr32/call.s
1.16459 +@@ -0,0 +1,30 @@
1.16460 ++
1.16461 ++ .text
1.16462 ++ .global call_test
1.16463 ++call_test:
1.16464 ++far_negative:
1.16465 ++ nop
1.16466 ++toofar_negative:
1.16467 ++
1.16468 ++ .org 0x200000
1.16469 ++
1.16470 ++ call far_negative
1.16471 ++ call toofar_negative
1.16472 ++ call different_section
1.16473 ++ call undefined
1.16474 ++ call toofar_positive
1.16475 ++ .org 0x200030
1.16476 ++ call far_positive
1.16477 ++
1.16478 ++ .cpool
1.16479 ++
1.16480 ++ .org 0x40002c
1.16481 ++
1.16482 ++toofar_positive:
1.16483 ++ nop
1.16484 ++far_positive:
1.16485 ++ nop
1.16486 ++
1.16487 ++ .section .text.init,"ax",@progbits
1.16488 ++different_section:
1.16489 ++ sub r0, r1, 0
1.16490 +--- /dev/null
1.16491 ++++ b/gas/testsuite/gas/avr32/dwarf2.d
1.16492 +@@ -0,0 +1,42 @@
1.16493 ++#readelf: -wl
1.16494 ++#name: dwarf2
1.16495 ++#source: dwarf2.s
1.16496 ++
1.16497 ++Dump of debug contents of section \.debug_line:
1.16498 ++
1.16499 ++ Length: 53
1.16500 ++ DWARF Version: 2
1.16501 ++ Prologue Length: 26
1.16502 ++ Minimum Instruction Length: 1
1.16503 ++ Initial value of 'is_stmt': 1
1.16504 ++ Line Base: -5
1.16505 ++ Line Range: 14
1.16506 ++ Opcode Base: 10
1.16507 ++ \(Pointer size: 4\)
1.16508 ++
1.16509 ++ Opcodes:
1.16510 ++ Opcode 1 has 0 args
1.16511 ++ Opcode 2 has 1 args
1.16512 ++ Opcode 3 has 1 args
1.16513 ++ Opcode 4 has 1 args
1.16514 ++ Opcode 5 has 1 args
1.16515 ++ Opcode 6 has 0 args
1.16516 ++ Opcode 7 has 0 args
1.16517 ++ Opcode 8 has 0 args
1.16518 ++ Opcode 9 has 1 args
1.16519 ++
1.16520 ++ The Directory Table is empty\.
1.16521 ++
1.16522 ++ The File Name Table:
1.16523 ++ Entry Dir Time Size Name
1.16524 ++ 1 0 0 0 main\.c
1.16525 ++
1.16526 ++ Line Number Statements:
1.16527 ++ Extended opcode 2: set Address to 0x0
1.16528 ++ Advance Line by 87 to 88
1.16529 ++ Copy
1.16530 ++ Advance Line by 23 to 111
1.16531 ++ Special opcode .*: advance Address by 4 to 0x4 and Line by 0 to 111
1.16532 ++ Special opcode .*: advance Address by 10 to 0xe and Line by 1 to 112
1.16533 ++ Advance PC by 530 to 220
1.16534 ++ Extended opcode 1: End of Sequence
1.16535 +--- /dev/null
1.16536 ++++ b/gas/testsuite/gas/avr32/dwarf2.s
1.16537 +@@ -0,0 +1,67 @@
1.16538 ++# Source file used to test DWARF2 information for AVR32.
1.16539 ++
1.16540 ++ .file "main.c"
1.16541 ++
1.16542 ++ .section .debug_abbrev,"",@progbits
1.16543 ++.Ldebug_abbrev0:
1.16544 ++ .section .debug_info,"",@progbits
1.16545 ++.Ldebug_info0:
1.16546 ++ .section .debug_line,"",@progbits
1.16547 ++.Ldebug_line0:
1.16548 ++
1.16549 ++ .text
1.16550 ++ .align 1
1.16551 ++ .globl main
1.16552 ++ .type main, @function
1.16553 ++.Ltext0:
1.16554 ++main:
1.16555 ++ .file 1 "main.c"
1.16556 ++ .loc 1 88 0
1.16557 ++ pushm r0-r7,lr
1.16558 ++ sub sp, 4
1.16559 ++ .loc 1 111 0
1.16560 ++ lddpc r12, .LC1
1.16561 ++ lddpc r7, .LC1
1.16562 ++ icall r7
1.16563 ++ .loc 1 112 0
1.16564 ++ lddpc r6, .LC4
1.16565 ++
1.16566 ++ .align 2
1.16567 ++.LC4: .int 0
1.16568 ++
1.16569 ++ .fill 256, 2, 0
1.16570 ++
1.16571 ++ .align 2
1.16572 ++.LC1:
1.16573 ++ .int 0
1.16574 ++.LC2:
1.16575 ++ .int 0
1.16576 ++.LC3:
1.16577 ++ .int 0
1.16578 ++ .size main, . - main
1.16579 ++
1.16580 ++.Letext0:
1.16581 ++
1.16582 ++ .section .debug_info
1.16583 ++ .int .Ledebug_info0 - .Ldebug_info0 // size
1.16584 ++ .short 2 // version
1.16585 ++ .int .Ldebug_abbrev0 // abbrev offset
1.16586 ++ .byte 4 // bytes per addr
1.16587 ++
1.16588 ++ .uleb128 1 // abbrev 1
1.16589 ++ .int .Ldebug_line0 // DW_AT_stmt_list
1.16590 ++ .int .Letext0 // DW_AT_high_pc
1.16591 ++ .int .Ltext0 // DW_AT_low_pc
1.16592 ++
1.16593 ++.Ledebug_info0:
1.16594 ++
1.16595 ++ .section .debug_abbrev
1.16596 ++ .uleb128 0x01
1.16597 ++ .uleb128 0x11 // DW_TAG_compile_unit
1.16598 ++ .byte 0 // DW_CHILDREN_no
1.16599 ++ .uleb128 0x10, 0x6 // DW_AT_stmt_list
1.16600 ++ .uleb128 0x12, 0x1 // DW_AT_high_pc
1.16601 ++ .uleb128 0x11, 0x1 // DW_AT_low_pc
1.16602 ++ .uleb128 0, 0
1.16603 ++
1.16604 ++ .byte 0
1.16605 +--- /dev/null
1.16606 ++++ b/gas/testsuite/gas/avr32/fpinsn.d
1.16607 +@@ -0,0 +1,271 @@
1.16608 ++#as:
1.16609 ++#objdump: -dr
1.16610 ++#name: fpinsn
1.16611 ++
1.16612 ++.*: +file format .*
1.16613 ++
1.16614 ++Disassembly of section \.text:
1.16615 ++
1.16616 ++[0-9a-f]* <fadd_s>:
1.16617 ++ *[0-9a-f]*: e1 a2 0f ff cop cp0,cr15,cr15,cr15,0x4
1.16618 ++ *[0-9a-f]*: e1 a2 00 00 cop cp0,cr0,cr0,cr0,0x4
1.16619 ++ *[0-9a-f]*: e1 a2 00 ff cop cp0,cr0,cr15,cr15,0x4
1.16620 ++ *[0-9a-f]*: e1 a2 0f 0f cop cp0,cr15,cr0,cr15,0x4
1.16621 ++ *[0-9a-f]*: e1 a2 0f f0 cop cp0,cr15,cr15,cr0,0x4
1.16622 ++ *[0-9a-f]*: e1 a2 07 88 cop cp0,cr7,cr8,cr8,0x4
1.16623 ++ *[0-9a-f]*: e1 a2 08 78 cop cp0,cr8,cr7,cr8,0x4
1.16624 ++ *[0-9a-f]*: e1 a2 08 87 cop cp0,cr8,cr8,cr7,0x4
1.16625 ++
1.16626 ++[0-9a-f]* <fsub_s>:
1.16627 ++ *[0-9a-f]*: e1 a2 1f ff cop cp0,cr15,cr15,cr15,0x5
1.16628 ++ *[0-9a-f]*: e1 a2 10 00 cop cp0,cr0,cr0,cr0,0x5
1.16629 ++ *[0-9a-f]*: e1 a2 10 ff cop cp0,cr0,cr15,cr15,0x5
1.16630 ++ *[0-9a-f]*: e1 a2 1f 0f cop cp0,cr15,cr0,cr15,0x5
1.16631 ++ *[0-9a-f]*: e1 a2 1f f0 cop cp0,cr15,cr15,cr0,0x5
1.16632 ++ *[0-9a-f]*: e1 a2 17 88 cop cp0,cr7,cr8,cr8,0x5
1.16633 ++ *[0-9a-f]*: e1 a2 18 78 cop cp0,cr8,cr7,cr8,0x5
1.16634 ++ *[0-9a-f]*: e1 a2 18 87 cop cp0,cr8,cr8,cr7,0x5
1.16635 ++
1.16636 ++[0-9a-f]* <fmac_s>:
1.16637 ++ *[0-9a-f]*: e1 a0 0f ff cop cp0,cr15,cr15,cr15,0x0
1.16638 ++ *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0
1.16639 ++ *[0-9a-f]*: e1 a0 00 ff cop cp0,cr0,cr15,cr15,0x0
1.16640 ++ *[0-9a-f]*: e1 a0 0f 0f cop cp0,cr15,cr0,cr15,0x0
1.16641 ++ *[0-9a-f]*: e1 a0 0f f0 cop cp0,cr15,cr15,cr0,0x0
1.16642 ++ *[0-9a-f]*: e1 a0 07 88 cop cp0,cr7,cr8,cr8,0x0
1.16643 ++ *[0-9a-f]*: e1 a0 08 78 cop cp0,cr8,cr7,cr8,0x0
1.16644 ++ *[0-9a-f]*: e1 a0 08 87 cop cp0,cr8,cr8,cr7,0x0
1.16645 ++
1.16646 ++[0-9a-f]* <fnmac_s>:
1.16647 ++ *[0-9a-f]*: e1 a0 1f ff cop cp0,cr15,cr15,cr15,0x1
1.16648 ++ *[0-9a-f]*: e1 a0 10 00 cop cp0,cr0,cr0,cr0,0x1
1.16649 ++ *[0-9a-f]*: e1 a0 10 ff cop cp0,cr0,cr15,cr15,0x1
1.16650 ++ *[0-9a-f]*: e1 a0 1f 0f cop cp0,cr15,cr0,cr15,0x1
1.16651 ++ *[0-9a-f]*: e1 a0 1f f0 cop cp0,cr15,cr15,cr0,0x1
1.16652 ++ *[0-9a-f]*: e1 a0 17 88 cop cp0,cr7,cr8,cr8,0x1
1.16653 ++ *[0-9a-f]*: e1 a0 18 78 cop cp0,cr8,cr7,cr8,0x1
1.16654 ++ *[0-9a-f]*: e1 a0 18 87 cop cp0,cr8,cr8,cr7,0x1
1.16655 ++
1.16656 ++[0-9a-f]* <fmsc_s>:
1.16657 ++ *[0-9a-f]*: e1 a1 0f ff cop cp0,cr15,cr15,cr15,0x2
1.16658 ++ *[0-9a-f]*: e1 a1 00 00 cop cp0,cr0,cr0,cr0,0x2
1.16659 ++ *[0-9a-f]*: e1 a1 00 ff cop cp0,cr0,cr15,cr15,0x2
1.16660 ++ *[0-9a-f]*: e1 a1 0f 0f cop cp0,cr15,cr0,cr15,0x2
1.16661 ++ *[0-9a-f]*: e1 a1 0f f0 cop cp0,cr15,cr15,cr0,0x2
1.16662 ++ *[0-9a-f]*: e1 a1 07 88 cop cp0,cr7,cr8,cr8,0x2
1.16663 ++ *[0-9a-f]*: e1 a1 08 78 cop cp0,cr8,cr7,cr8,0x2
1.16664 ++ *[0-9a-f]*: e1 a1 08 87 cop cp0,cr8,cr8,cr7,0x2
1.16665 ++
1.16666 ++[0-9a-f]* <fnmsc_s>:
1.16667 ++ *[0-9a-f]*: e1 a1 1f ff cop cp0,cr15,cr15,cr15,0x3
1.16668 ++ *[0-9a-f]*: e1 a1 10 00 cop cp0,cr0,cr0,cr0,0x3
1.16669 ++ *[0-9a-f]*: e1 a1 10 ff cop cp0,cr0,cr15,cr15,0x3
1.16670 ++ *[0-9a-f]*: e1 a1 1f 0f cop cp0,cr15,cr0,cr15,0x3
1.16671 ++ *[0-9a-f]*: e1 a1 1f f0 cop cp0,cr15,cr15,cr0,0x3
1.16672 ++ *[0-9a-f]*: e1 a1 17 88 cop cp0,cr7,cr8,cr8,0x3
1.16673 ++ *[0-9a-f]*: e1 a1 18 78 cop cp0,cr8,cr7,cr8,0x3
1.16674 ++ *[0-9a-f]*: e1 a1 18 87 cop cp0,cr8,cr8,cr7,0x3
1.16675 ++
1.16676 ++[0-9a-f]* <fmul_s>:
1.16677 ++ *[0-9a-f]*: e1 a3 0f ff cop cp0,cr15,cr15,cr15,0x6
1.16678 ++ *[0-9a-f]*: e1 a3 00 00 cop cp0,cr0,cr0,cr0,0x6
1.16679 ++ *[0-9a-f]*: e1 a3 00 ff cop cp0,cr0,cr15,cr15,0x6
1.16680 ++ *[0-9a-f]*: e1 a3 0f 0f cop cp0,cr15,cr0,cr15,0x6
1.16681 ++ *[0-9a-f]*: e1 a3 0f f0 cop cp0,cr15,cr15,cr0,0x6
1.16682 ++ *[0-9a-f]*: e1 a3 07 88 cop cp0,cr7,cr8,cr8,0x6
1.16683 ++ *[0-9a-f]*: e1 a3 08 78 cop cp0,cr8,cr7,cr8,0x6
1.16684 ++ *[0-9a-f]*: e1 a3 08 87 cop cp0,cr8,cr8,cr7,0x6
1.16685 ++
1.16686 ++[0-9a-f]* <fnmul_s>:
1.16687 ++ *[0-9a-f]*: e1 a3 1f ff cop cp0,cr15,cr15,cr15,0x7
1.16688 ++ *[0-9a-f]*: e1 a3 10 00 cop cp0,cr0,cr0,cr0,0x7
1.16689 ++ *[0-9a-f]*: e1 a3 10 ff cop cp0,cr0,cr15,cr15,0x7
1.16690 ++ *[0-9a-f]*: e1 a3 1f 0f cop cp0,cr15,cr0,cr15,0x7
1.16691 ++ *[0-9a-f]*: e1 a3 1f f0 cop cp0,cr15,cr15,cr0,0x7
1.16692 ++ *[0-9a-f]*: e1 a3 17 88 cop cp0,cr7,cr8,cr8,0x7
1.16693 ++ *[0-9a-f]*: e1 a3 18 78 cop cp0,cr8,cr7,cr8,0x7
1.16694 ++ *[0-9a-f]*: e1 a3 18 87 cop cp0,cr8,cr8,cr7,0x7
1.16695 ++
1.16696 ++[0-9a-f]* <fneg_s>:
1.16697 ++ *[0-9a-f]*: e1 a4 0f f0 cop cp0,cr15,cr15,cr0,0x8
1.16698 ++ *[0-9a-f]*: e1 a4 00 00 cop cp0,cr0,cr0,cr0,0x8
1.16699 ++ *[0-9a-f]*: e1 a4 00 f0 cop cp0,cr0,cr15,cr0,0x8
1.16700 ++ *[0-9a-f]*: e1 a4 0f 00 cop cp0,cr15,cr0,cr0,0x8
1.16701 ++ *[0-9a-f]*: e1 a4 07 80 cop cp0,cr7,cr8,cr0,0x8
1.16702 ++ *[0-9a-f]*: e1 a4 08 70 cop cp0,cr8,cr7,cr0,0x8
1.16703 ++
1.16704 ++[0-9a-f]* <fabs_s>:
1.16705 ++ *[0-9a-f]*: e1 a4 1f f0 cop cp0,cr15,cr15,cr0,0x9
1.16706 ++ *[0-9a-f]*: e1 a4 10 00 cop cp0,cr0,cr0,cr0,0x9
1.16707 ++ *[0-9a-f]*: e1 a4 10 f0 cop cp0,cr0,cr15,cr0,0x9
1.16708 ++ *[0-9a-f]*: e1 a4 1f 00 cop cp0,cr15,cr0,cr0,0x9
1.16709 ++ *[0-9a-f]*: e1 a4 17 80 cop cp0,cr7,cr8,cr0,0x9
1.16710 ++ *[0-9a-f]*: e1 a4 18 70 cop cp0,cr8,cr7,cr0,0x9
1.16711 ++
1.16712 ++[0-9a-f]* <fcmp_s>:
1.16713 ++ *[0-9a-f]*: e1 a6 10 ff cop cp0,cr0,cr15,cr15,0xd
1.16714 ++ *[0-9a-f]*: e1 a6 10 00 cop cp0,cr0,cr0,cr0,0xd
1.16715 ++ *[0-9a-f]*: e1 a6 10 0f cop cp0,cr0,cr0,cr15,0xd
1.16716 ++ *[0-9a-f]*: e1 a6 10 f0 cop cp0,cr0,cr15,cr0,0xd
1.16717 ++ *[0-9a-f]*: e1 a6 10 78 cop cp0,cr0,cr7,cr8,0xd
1.16718 ++ *[0-9a-f]*: e1 a6 10 87 cop cp0,cr0,cr8,cr7,0xd
1.16719 ++
1.16720 ++[0-9a-f]* <fadd_d>:
1.16721 ++ *[0-9a-f]*: e5 a2 0e ee cop cp0,cr14,cr14,cr14,0x44
1.16722 ++ *[0-9a-f]*: e5 a2 00 00 cop cp0,cr0,cr0,cr0,0x44
1.16723 ++ *[0-9a-f]*: e5 a2 00 ee cop cp0,cr0,cr14,cr14,0x44
1.16724 ++ *[0-9a-f]*: e5 a2 0e 0e cop cp0,cr14,cr0,cr14,0x44
1.16725 ++ *[0-9a-f]*: e5 a2 0e e0 cop cp0,cr14,cr14,cr0,0x44
1.16726 ++ *[0-9a-f]*: e5 a2 06 88 cop cp0,cr6,cr8,cr8,0x44
1.16727 ++ *[0-9a-f]*: e5 a2 08 68 cop cp0,cr8,cr6,cr8,0x44
1.16728 ++ *[0-9a-f]*: e5 a2 08 86 cop cp0,cr8,cr8,cr6,0x44
1.16729 ++
1.16730 ++[0-9a-f]* <fsub_d>:
1.16731 ++ *[0-9a-f]*: e5 a2 1e ee cop cp0,cr14,cr14,cr14,0x45
1.16732 ++ *[0-9a-f]*: e5 a2 10 00 cop cp0,cr0,cr0,cr0,0x45
1.16733 ++ *[0-9a-f]*: e5 a2 10 ee cop cp0,cr0,cr14,cr14,0x45
1.16734 ++ *[0-9a-f]*: e5 a2 1e 0e cop cp0,cr14,cr0,cr14,0x45
1.16735 ++ *[0-9a-f]*: e5 a2 1e e0 cop cp0,cr14,cr14,cr0,0x45
1.16736 ++ *[0-9a-f]*: e5 a2 16 88 cop cp0,cr6,cr8,cr8,0x45
1.16737 ++ *[0-9a-f]*: e5 a2 18 68 cop cp0,cr8,cr6,cr8,0x45
1.16738 ++ *[0-9a-f]*: e5 a2 18 86 cop cp0,cr8,cr8,cr6,0x45
1.16739 ++
1.16740 ++[0-9a-f]* <fmac_d>:
1.16741 ++ *[0-9a-f]*: e5 a0 0e ee cop cp0,cr14,cr14,cr14,0x40
1.16742 ++ *[0-9a-f]*: e5 a0 00 00 cop cp0,cr0,cr0,cr0,0x40
1.16743 ++ *[0-9a-f]*: e5 a0 00 ee cop cp0,cr0,cr14,cr14,0x40
1.16744 ++ *[0-9a-f]*: e5 a0 0e 0e cop cp0,cr14,cr0,cr14,0x40
1.16745 ++ *[0-9a-f]*: e5 a0 0e e0 cop cp0,cr14,cr14,cr0,0x40
1.16746 ++ *[0-9a-f]*: e5 a0 06 88 cop cp0,cr6,cr8,cr8,0x40
1.16747 ++ *[0-9a-f]*: e5 a0 08 68 cop cp0,cr8,cr6,cr8,0x40
1.16748 ++ *[0-9a-f]*: e5 a0 08 86 cop cp0,cr8,cr8,cr6,0x40
1.16749 ++
1.16750 ++[0-9a-f]* <fnmac_d>:
1.16751 ++ *[0-9a-f]*: e5 a0 1e ee cop cp0,cr14,cr14,cr14,0x41
1.16752 ++ *[0-9a-f]*: e5 a0 10 00 cop cp0,cr0,cr0,cr0,0x41
1.16753 ++ *[0-9a-f]*: e5 a0 10 ee cop cp0,cr0,cr14,cr14,0x41
1.16754 ++ *[0-9a-f]*: e5 a0 1e 0e cop cp0,cr14,cr0,cr14,0x41
1.16755 ++ *[0-9a-f]*: e5 a0 1e e0 cop cp0,cr14,cr14,cr0,0x41
1.16756 ++ *[0-9a-f]*: e5 a0 16 88 cop cp0,cr6,cr8,cr8,0x41
1.16757 ++ *[0-9a-f]*: e5 a0 18 68 cop cp0,cr8,cr6,cr8,0x41
1.16758 ++ *[0-9a-f]*: e5 a0 18 86 cop cp0,cr8,cr8,cr6,0x41
1.16759 ++
1.16760 ++[0-9a-f]* <fmsc_d>:
1.16761 ++ *[0-9a-f]*: e5 a1 0e ee cop cp0,cr14,cr14,cr14,0x42
1.16762 ++ *[0-9a-f]*: e5 a1 00 00 cop cp0,cr0,cr0,cr0,0x42
1.16763 ++ *[0-9a-f]*: e5 a1 00 ee cop cp0,cr0,cr14,cr14,0x42
1.16764 ++ *[0-9a-f]*: e5 a1 0e 0e cop cp0,cr14,cr0,cr14,0x42
1.16765 ++ *[0-9a-f]*: e5 a1 0e e0 cop cp0,cr14,cr14,cr0,0x42
1.16766 ++ *[0-9a-f]*: e5 a1 06 88 cop cp0,cr6,cr8,cr8,0x42
1.16767 ++ *[0-9a-f]*: e5 a1 08 68 cop cp0,cr8,cr6,cr8,0x42
1.16768 ++ *[0-9a-f]*: e5 a1 08 86 cop cp0,cr8,cr8,cr6,0x42
1.16769 ++
1.16770 ++[0-9a-f]* <fnmsc_d>:
1.16771 ++ *[0-9a-f]*: e5 a1 1e ee cop cp0,cr14,cr14,cr14,0x43
1.16772 ++ *[0-9a-f]*: e5 a1 10 00 cop cp0,cr0,cr0,cr0,0x43
1.16773 ++ *[0-9a-f]*: e5 a1 10 ee cop cp0,cr0,cr14,cr14,0x43
1.16774 ++ *[0-9a-f]*: e5 a1 1e 0e cop cp0,cr14,cr0,cr14,0x43
1.16775 ++ *[0-9a-f]*: e5 a1 1e e0 cop cp0,cr14,cr14,cr0,0x43
1.16776 ++ *[0-9a-f]*: e5 a1 16 88 cop cp0,cr6,cr8,cr8,0x43
1.16777 ++ *[0-9a-f]*: e5 a1 18 68 cop cp0,cr8,cr6,cr8,0x43
1.16778 ++ *[0-9a-f]*: e5 a1 18 86 cop cp0,cr8,cr8,cr6,0x43
1.16779 ++
1.16780 ++[0-9a-f]* <fmul_d>:
1.16781 ++ *[0-9a-f]*: e5 a3 0e ee cop cp0,cr14,cr14,cr14,0x46
1.16782 ++ *[0-9a-f]*: e5 a3 00 00 cop cp0,cr0,cr0,cr0,0x46
1.16783 ++ *[0-9a-f]*: e5 a3 00 ee cop cp0,cr0,cr14,cr14,0x46
1.16784 ++ *[0-9a-f]*: e5 a3 0e 0e cop cp0,cr14,cr0,cr14,0x46
1.16785 ++ *[0-9a-f]*: e5 a3 0e e0 cop cp0,cr14,cr14,cr0,0x46
1.16786 ++ *[0-9a-f]*: e5 a3 06 88 cop cp0,cr6,cr8,cr8,0x46
1.16787 ++ *[0-9a-f]*: e5 a3 08 68 cop cp0,cr8,cr6,cr8,0x46
1.16788 ++ *[0-9a-f]*: e5 a3 08 86 cop cp0,cr8,cr8,cr6,0x46
1.16789 ++
1.16790 ++[0-9a-f]* <fnmul_d>:
1.16791 ++ *[0-9a-f]*: e5 a3 1e ee cop cp0,cr14,cr14,cr14,0x47
1.16792 ++ *[0-9a-f]*: e5 a3 10 00 cop cp0,cr0,cr0,cr0,0x47
1.16793 ++ *[0-9a-f]*: e5 a3 10 ee cop cp0,cr0,cr14,cr14,0x47
1.16794 ++ *[0-9a-f]*: e5 a3 1e 0e cop cp0,cr14,cr0,cr14,0x47
1.16795 ++ *[0-9a-f]*: e5 a3 1e e0 cop cp0,cr14,cr14,cr0,0x47
1.16796 ++ *[0-9a-f]*: e5 a3 16 88 cop cp0,cr6,cr8,cr8,0x47
1.16797 ++ *[0-9a-f]*: e5 a3 18 68 cop cp0,cr8,cr6,cr8,0x47
1.16798 ++ *[0-9a-f]*: e5 a3 18 86 cop cp0,cr8,cr8,cr6,0x47
1.16799 ++
1.16800 ++[0-9a-f]* <fneg_d>:
1.16801 ++ *[0-9a-f]*: e5 a4 0e e0 cop cp0,cr14,cr14,cr0,0x48
1.16802 ++ *[0-9a-f]*: e5 a4 00 00 cop cp0,cr0,cr0,cr0,0x48
1.16803 ++ *[0-9a-f]*: e5 a4 00 e0 cop cp0,cr0,cr14,cr0,0x48
1.16804 ++ *[0-9a-f]*: e5 a4 0e 00 cop cp0,cr14,cr0,cr0,0x48
1.16805 ++ *[0-9a-f]*: e5 a4 06 80 cop cp0,cr6,cr8,cr0,0x48
1.16806 ++ *[0-9a-f]*: e5 a4 08 60 cop cp0,cr8,cr6,cr0,0x48
1.16807 ++
1.16808 ++[0-9a-f]* <fabs_d>:
1.16809 ++ *[0-9a-f]*: e5 a4 1e e0 cop cp0,cr14,cr14,cr0,0x49
1.16810 ++ *[0-9a-f]*: e5 a4 10 00 cop cp0,cr0,cr0,cr0,0x49
1.16811 ++ *[0-9a-f]*: e5 a4 10 e0 cop cp0,cr0,cr14,cr0,0x49
1.16812 ++ *[0-9a-f]*: e5 a4 1e 00 cop cp0,cr14,cr0,cr0,0x49
1.16813 ++ *[0-9a-f]*: e5 a4 16 80 cop cp0,cr6,cr8,cr0,0x49
1.16814 ++ *[0-9a-f]*: e5 a4 18 60 cop cp0,cr8,cr6,cr0,0x49
1.16815 ++
1.16816 ++[0-9a-f]* <fcmp_d>:
1.16817 ++ *[0-9a-f]*: e5 a6 10 ee cop cp0,cr0,cr14,cr14,0x4d
1.16818 ++ *[0-9a-f]*: e5 a6 10 00 cop cp0,cr0,cr0,cr0,0x4d
1.16819 ++ *[0-9a-f]*: e5 a6 10 0e cop cp0,cr0,cr0,cr14,0x4d
1.16820 ++ *[0-9a-f]*: e5 a6 10 e0 cop cp0,cr0,cr14,cr0,0x4d
1.16821 ++ *[0-9a-f]*: e5 a6 10 68 cop cp0,cr0,cr6,cr8,0x4d
1.16822 ++ *[0-9a-f]*: e5 a6 10 86 cop cp0,cr0,cr8,cr6,0x4d
1.16823 ++
1.16824 ++[0-9a-f]* <fmov_s>:
1.16825 ++ *[0-9a-f]*: e1 a5 0f f0 cop cp0,cr15,cr15,cr0,0xa
1.16826 ++ *[0-9a-f]*: e1 a5 00 00 cop cp0,cr0,cr0,cr0,0xa
1.16827 ++ *[0-9a-f]*: e1 a5 0f 00 cop cp0,cr15,cr0,cr0,0xa
1.16828 ++ *[0-9a-f]*: e1 a5 00 f0 cop cp0,cr0,cr15,cr0,0xa
1.16829 ++ *[0-9a-f]*: e1 a5 08 70 cop cp0,cr8,cr7,cr0,0xa
1.16830 ++ *[0-9a-f]*: e1 a5 07 80 cop cp0,cr7,cr8,cr0,0xa
1.16831 ++ *[0-9a-f]*: ef af 0f 00 mvcr.w cp0,pc,cr15
1.16832 ++ *[0-9a-f]*: ef a0 00 00 mvcr.w cp0,r0,cr0
1.16833 ++ *[0-9a-f]*: ef af 00 00 mvcr.w cp0,pc,cr0
1.16834 ++ *[0-9a-f]*: ef a0 0f 00 mvcr.w cp0,r0,cr15
1.16835 ++ *[0-9a-f]*: ef a8 07 00 mvcr.w cp0,r8,cr7
1.16836 ++ *[0-9a-f]*: ef a7 08 00 mvcr.w cp0,r7,cr8
1.16837 ++ *[0-9a-f]*: ef af 0f 20 mvrc.w cp0,cr15,pc
1.16838 ++ *[0-9a-f]*: ef a0 00 20 mvrc.w cp0,cr0,r0
1.16839 ++ *[0-9a-f]*: ef a0 0f 20 mvrc.w cp0,cr15,r0
1.16840 ++ *[0-9a-f]*: ef af 00 20 mvrc.w cp0,cr0,pc
1.16841 ++ *[0-9a-f]*: ef a7 08 20 mvrc.w cp0,cr8,r7
1.16842 ++ *[0-9a-f]*: ef a8 07 20 mvrc.w cp0,cr7,r8
1.16843 ++
1.16844 ++[0-9a-f]* <fmov_d>:
1.16845 ++ *[0-9a-f]*: e5 a5 0e e0 cop cp0,cr14,cr14,cr0,0x4a
1.16846 ++ *[0-9a-f]*: e5 a5 00 00 cop cp0,cr0,cr0,cr0,0x4a
1.16847 ++ *[0-9a-f]*: e5 a5 0e 00 cop cp0,cr14,cr0,cr0,0x4a
1.16848 ++ *[0-9a-f]*: e5 a5 00 e0 cop cp0,cr0,cr14,cr0,0x4a
1.16849 ++ *[0-9a-f]*: e5 a5 08 60 cop cp0,cr8,cr6,cr0,0x4a
1.16850 ++ *[0-9a-f]*: e5 a5 06 80 cop cp0,cr6,cr8,cr0,0x4a
1.16851 ++ *[0-9a-f]*: ef ae 0e 10 mvcr.d cp0,lr,cr14
1.16852 ++ *[0-9a-f]*: ef a0 00 10 mvcr.d cp0,r0,cr0
1.16853 ++ *[0-9a-f]*: ef ae 00 10 mvcr.d cp0,lr,cr0
1.16854 ++ *[0-9a-f]*: ef a0 0e 10 mvcr.d cp0,r0,cr14
1.16855 ++ *[0-9a-f]*: ef a8 06 10 mvcr.d cp0,r8,cr6
1.16856 ++ *[0-9a-f]*: ef a6 08 10 mvcr.d cp0,r6,cr8
1.16857 ++ *[0-9a-f]*: ef ae 0e 30 mvrc.d cp0,cr14,lr
1.16858 ++ *[0-9a-f]*: ef a0 00 30 mvrc.d cp0,cr0,r0
1.16859 ++ *[0-9a-f]*: ef a0 0e 30 mvrc.d cp0,cr14,r0
1.16860 ++ *[0-9a-f]*: ef ae 00 30 mvrc.d cp0,cr0,lr
1.16861 ++ *[0-9a-f]*: ef a6 08 30 mvrc.d cp0,cr8,r6
1.16862 ++ *[0-9a-f]*: ef a8 06 30 mvrc.d cp0,cr6,r8
1.16863 ++
1.16864 ++[0-9a-f]* <fcasts_d>:
1.16865 ++ *[0-9a-f]*: e1 a7 1f e0 cop cp0,cr15,cr14,cr0,0xf
1.16866 ++ *[0-9a-f]*: e1 a7 10 00 cop cp0,cr0,cr0,cr0,0xf
1.16867 ++ *[0-9a-f]*: e1 a7 1f 00 cop cp0,cr15,cr0,cr0,0xf
1.16868 ++ *[0-9a-f]*: e1 a7 10 e0 cop cp0,cr0,cr14,cr0,0xf
1.16869 ++ *[0-9a-f]*: e1 a7 18 60 cop cp0,cr8,cr6,cr0,0xf
1.16870 ++ *[0-9a-f]*: e1 a7 17 80 cop cp0,cr7,cr8,cr0,0xf
1.16871 ++
1.16872 ++[0-9a-f]* <fcastd_s>:
1.16873 ++ *[0-9a-f]*: e1 a8 0e f0 cop cp0,cr14,cr15,cr0,0x10
1.16874 ++ *[0-9a-f]*: e1 a8 00 00 cop cp0,cr0,cr0,cr0,0x10
1.16875 ++ *[0-9a-f]*: e1 a8 0e 00 cop cp0,cr14,cr0,cr0,0x10
1.16876 ++ *[0-9a-f]*: e1 a8 00 f0 cop cp0,cr0,cr15,cr0,0x10
1.16877 ++ *[0-9a-f]*: e1 a8 08 70 cop cp0,cr8,cr7,cr0,0x10
1.16878 ++ *[0-9a-f]*: e1 a8 06 80 cop cp0,cr6,cr8,cr0,0x10
1.16879 +--- /dev/null
1.16880 ++++ b/gas/testsuite/gas/avr32/fpinsn.s
1.16881 +@@ -0,0 +1,266 @@
1.16882 ++
1.16883 ++ .text
1.16884 ++ .global fadd_s
1.16885 ++fadd_s:
1.16886 ++ fadd.s fr15, fr15, fr15
1.16887 ++ fadd.s fr0, fr0, fr0
1.16888 ++ fadd.s fr0, fr15, fr15
1.16889 ++ fadd.s fr15, fr0, fr15
1.16890 ++ fadd.s fr15, fr15, fr0
1.16891 ++ fadd.s fr7, fr8, fr8
1.16892 ++ fadd.s fr8, fr7, fr8
1.16893 ++ fadd.s fr8, fr8, fr7
1.16894 ++ .global fsub_s
1.16895 ++fsub_s:
1.16896 ++ fsub.s fr15, fr15, fr15
1.16897 ++ fsub.s fr0, fr0, fr0
1.16898 ++ fsub.s fr0, fr15, fr15
1.16899 ++ fsub.s fr15, fr0, fr15
1.16900 ++ fsub.s fr15, fr15, fr0
1.16901 ++ fsub.s fr7, fr8, fr8
1.16902 ++ fsub.s fr8, fr7, fr8
1.16903 ++ fsub.s fr8, fr8, fr7
1.16904 ++ .global fmac_s
1.16905 ++fmac_s:
1.16906 ++ fmac.s fr15, fr15, fr15
1.16907 ++ fmac.s fr0, fr0, fr0
1.16908 ++ fmac.s fr0, fr15, fr15
1.16909 ++ fmac.s fr15, fr0, fr15
1.16910 ++ fmac.s fr15, fr15, fr0
1.16911 ++ fmac.s fr7, fr8, fr8
1.16912 ++ fmac.s fr8, fr7, fr8
1.16913 ++ fmac.s fr8, fr8, fr7
1.16914 ++ .global fnmac_s
1.16915 ++fnmac_s:
1.16916 ++ fnmac.s fr15, fr15, fr15
1.16917 ++ fnmac.s fr0, fr0, fr0
1.16918 ++ fnmac.s fr0, fr15, fr15
1.16919 ++ fnmac.s fr15, fr0, fr15
1.16920 ++ fnmac.s fr15, fr15, fr0
1.16921 ++ fnmac.s fr7, fr8, fr8
1.16922 ++ fnmac.s fr8, fr7, fr8
1.16923 ++ fnmac.s fr8, fr8, fr7
1.16924 ++ .global fmsc_s
1.16925 ++fmsc_s:
1.16926 ++ fmsc.s fr15, fr15, fr15
1.16927 ++ fmsc.s fr0, fr0, fr0
1.16928 ++ fmsc.s fr0, fr15, fr15
1.16929 ++ fmsc.s fr15, fr0, fr15
1.16930 ++ fmsc.s fr15, fr15, fr0
1.16931 ++ fmsc.s fr7, fr8, fr8
1.16932 ++ fmsc.s fr8, fr7, fr8
1.16933 ++ fmsc.s fr8, fr8, fr7
1.16934 ++ .global fnmsc_s
1.16935 ++fnmsc_s:
1.16936 ++ fnmsc.s fr15, fr15, fr15
1.16937 ++ fnmsc.s fr0, fr0, fr0
1.16938 ++ fnmsc.s fr0, fr15, fr15
1.16939 ++ fnmsc.s fr15, fr0, fr15
1.16940 ++ fnmsc.s fr15, fr15, fr0
1.16941 ++ fnmsc.s fr7, fr8, fr8
1.16942 ++ fnmsc.s fr8, fr7, fr8
1.16943 ++ fnmsc.s fr8, fr8, fr7
1.16944 ++ .global fmul_s
1.16945 ++fmul_s:
1.16946 ++ fmul.s fr15, fr15, fr15
1.16947 ++ fmul.s fr0, fr0, fr0
1.16948 ++ fmul.s fr0, fr15, fr15
1.16949 ++ fmul.s fr15, fr0, fr15
1.16950 ++ fmul.s fr15, fr15, fr0
1.16951 ++ fmul.s fr7, fr8, fr8
1.16952 ++ fmul.s fr8, fr7, fr8
1.16953 ++ fmul.s fr8, fr8, fr7
1.16954 ++ .global fnmul_s
1.16955 ++fnmul_s:
1.16956 ++ fnmul.s fr15, fr15, fr15
1.16957 ++ fnmul.s fr0, fr0, fr0
1.16958 ++ fnmul.s fr0, fr15, fr15
1.16959 ++ fnmul.s fr15, fr0, fr15
1.16960 ++ fnmul.s fr15, fr15, fr0
1.16961 ++ fnmul.s fr7, fr8, fr8
1.16962 ++ fnmul.s fr8, fr7, fr8
1.16963 ++ fnmul.s fr8, fr8, fr7
1.16964 ++ .global fneg_s
1.16965 ++fneg_s:
1.16966 ++ fneg.s fr15, fr15
1.16967 ++ fneg.s fr0, fr0
1.16968 ++ fneg.s fr0, fr15
1.16969 ++ fneg.s fr15, fr0
1.16970 ++ fneg.s fr7, fr8
1.16971 ++ fneg.s fr8, fr7
1.16972 ++ .global fabs_s
1.16973 ++fabs_s:
1.16974 ++ fabs.s fr15, fr15
1.16975 ++ fabs.s fr0, fr0
1.16976 ++ fabs.s fr0, fr15
1.16977 ++ fabs.s fr15, fr0
1.16978 ++ fabs.s fr7, fr8
1.16979 ++ fabs.s fr8, fr7
1.16980 ++ .global fcmp_s
1.16981 ++fcmp_s:
1.16982 ++ fcmp.s fr15, fr15
1.16983 ++ fcmp.s fr0, fr0
1.16984 ++ fcmp.s fr0, fr15
1.16985 ++ fcmp.s fr15, fr0
1.16986 ++ fcmp.s fr7, fr8
1.16987 ++ fcmp.s fr8, fr7
1.16988 ++ .global fadd_d
1.16989 ++fadd_d:
1.16990 ++ fadd.d fr14, fr14, fr14
1.16991 ++ fadd.d fr0, fr0, fr0
1.16992 ++ fadd.d fr0, fr14, fr14
1.16993 ++ fadd.d fr14, fr0, fr14
1.16994 ++ fadd.d fr14, fr14, fr0
1.16995 ++ fadd.d fr6, fr8, fr8
1.16996 ++ fadd.d fr8, fr6, fr8
1.16997 ++ fadd.d fr8, fr8, fr6
1.16998 ++ .global fsub_d
1.16999 ++fsub_d:
1.17000 ++ fsub.d fr14, fr14, fr14
1.17001 ++ fsub.d fr0, fr0, fr0
1.17002 ++ fsub.d fr0, fr14, fr14
1.17003 ++ fsub.d fr14, fr0, fr14
1.17004 ++ fsub.d fr14, fr14, fr0
1.17005 ++ fsub.d fr6, fr8, fr8
1.17006 ++ fsub.d fr8, fr6, fr8
1.17007 ++ fsub.d fr8, fr8, fr6
1.17008 ++ .global fmac_d
1.17009 ++fmac_d:
1.17010 ++ fmac.d fr14, fr14, fr14
1.17011 ++ fmac.d fr0, fr0, fr0
1.17012 ++ fmac.d fr0, fr14, fr14
1.17013 ++ fmac.d fr14, fr0, fr14
1.17014 ++ fmac.d fr14, fr14, fr0
1.17015 ++ fmac.d fr6, fr8, fr8
1.17016 ++ fmac.d fr8, fr6, fr8
1.17017 ++ fmac.d fr8, fr8, fr6
1.17018 ++ .global fnmac_d
1.17019 ++fnmac_d:
1.17020 ++ fnmac.d fr14, fr14, fr14
1.17021 ++ fnmac.d fr0, fr0, fr0
1.17022 ++ fnmac.d fr0, fr14, fr14
1.17023 ++ fnmac.d fr14, fr0, fr14
1.17024 ++ fnmac.d fr14, fr14, fr0
1.17025 ++ fnmac.d fr6, fr8, fr8
1.17026 ++ fnmac.d fr8, fr6, fr8
1.17027 ++ fnmac.d fr8, fr8, fr6
1.17028 ++ .global fmsc_d
1.17029 ++fmsc_d:
1.17030 ++ fmsc.d fr14, fr14, fr14
1.17031 ++ fmsc.d fr0, fr0, fr0
1.17032 ++ fmsc.d fr0, fr14, fr14
1.17033 ++ fmsc.d fr14, fr0, fr14
1.17034 ++ fmsc.d fr14, fr14, fr0
1.17035 ++ fmsc.d fr6, fr8, fr8
1.17036 ++ fmsc.d fr8, fr6, fr8
1.17037 ++ fmsc.d fr8, fr8, fr6
1.17038 ++ .global fnmsc_d
1.17039 ++fnmsc_d:
1.17040 ++ fnmsc.d fr14, fr14, fr14
1.17041 ++ fnmsc.d fr0, fr0, fr0
1.17042 ++ fnmsc.d fr0, fr14, fr14
1.17043 ++ fnmsc.d fr14, fr0, fr14
1.17044 ++ fnmsc.d fr14, fr14, fr0
1.17045 ++ fnmsc.d fr6, fr8, fr8
1.17046 ++ fnmsc.d fr8, fr6, fr8
1.17047 ++ fnmsc.d fr8, fr8, fr6
1.17048 ++ .global fmul_d
1.17049 ++fmul_d:
1.17050 ++ fmul.d fr14, fr14, fr14
1.17051 ++ fmul.d fr0, fr0, fr0
1.17052 ++ fmul.d fr0, fr14, fr14
1.17053 ++ fmul.d fr14, fr0, fr14
1.17054 ++ fmul.d fr14, fr14, fr0
1.17055 ++ fmul.d fr6, fr8, fr8
1.17056 ++ fmul.d fr8, fr6, fr8
1.17057 ++ fmul.d fr8, fr8, fr6
1.17058 ++ .global fnmul_d
1.17059 ++fnmul_d:
1.17060 ++ fnmul.d fr14, fr14, fr14
1.17061 ++ fnmul.d fr0, fr0, fr0
1.17062 ++ fnmul.d fr0, fr14, fr14
1.17063 ++ fnmul.d fr14, fr0, fr14
1.17064 ++ fnmul.d fr14, fr14, fr0
1.17065 ++ fnmul.d fr6, fr8, fr8
1.17066 ++ fnmul.d fr8, fr6, fr8
1.17067 ++ fnmul.d fr8, fr8, fr6
1.17068 ++ .global fneg_d
1.17069 ++fneg_d:
1.17070 ++ fneg.d fr14, fr14
1.17071 ++ fneg.d fr0, fr0
1.17072 ++ fneg.d fr0, fr14
1.17073 ++ fneg.d fr14, fr0
1.17074 ++ fneg.d fr6, fr8
1.17075 ++ fneg.d fr8, fr6
1.17076 ++ .global fabs_d
1.17077 ++fabs_d:
1.17078 ++ fabs.d fr14, fr14
1.17079 ++ fabs.d fr0, fr0
1.17080 ++ fabs.d fr0, fr14
1.17081 ++ fabs.d fr14, fr0
1.17082 ++ fabs.d fr6, fr8
1.17083 ++ fabs.d fr8, fr6
1.17084 ++ .global fcmp_d
1.17085 ++fcmp_d:
1.17086 ++ fcmp.d fr14, fr14
1.17087 ++ fcmp.d fr0, fr0
1.17088 ++ fcmp.d fr0, fr14
1.17089 ++ fcmp.d fr14, fr0
1.17090 ++ fcmp.d fr6, fr8
1.17091 ++ fcmp.d fr8, fr6
1.17092 ++ .global fmov_s
1.17093 ++fmov_s:
1.17094 ++ fmov.s fr15, fr15
1.17095 ++ fmov.s fr0, fr0
1.17096 ++ fmov.s fr15, fr0
1.17097 ++ fmov.s fr0, fr15
1.17098 ++ fmov.s fr8, fr7
1.17099 ++ fmov.s fr7, fr8
1.17100 ++ fmov.s pc, fr15
1.17101 ++ fmov.s r0, fr0
1.17102 ++ fmov.s pc, fr0
1.17103 ++ fmov.s r0, fr15
1.17104 ++ fmov.s r8, fr7
1.17105 ++ fmov.s r7, fr8
1.17106 ++ fmov.s fr15, pc
1.17107 ++ fmov.s fr0, r0
1.17108 ++ fmov.s fr15, r0
1.17109 ++ fmov.s fr0, pc
1.17110 ++ fmov.s fr8, r7
1.17111 ++ fmov.s fr7, r8
1.17112 ++ .global fmov_d
1.17113 ++fmov_d:
1.17114 ++ fmov.d fr14, fr14
1.17115 ++ fmov.d fr0, fr0
1.17116 ++ fmov.d fr14, fr0
1.17117 ++ fmov.d fr0, fr14
1.17118 ++ fmov.d fr8, fr6
1.17119 ++ fmov.d fr6, fr8
1.17120 ++ fmov.d lr, fr14
1.17121 ++ fmov.d r0, fr0
1.17122 ++ fmov.d lr, fr0
1.17123 ++ fmov.d r0, fr14
1.17124 ++ fmov.d r8, fr6
1.17125 ++ fmov.d r6, fr8
1.17126 ++ fmov.d fr14, lr
1.17127 ++ fmov.d fr0, r0
1.17128 ++ fmov.d fr14, r0
1.17129 ++ fmov.d fr0, lr
1.17130 ++ fmov.d fr8, r6
1.17131 ++ fmov.d fr6, r8
1.17132 ++ .global fcasts_d
1.17133 ++fcasts_d:
1.17134 ++ fcasts.d fr15, fr14
1.17135 ++ fcasts.d fr0, fr0
1.17136 ++ fcasts.d fr15, fr0
1.17137 ++ fcasts.d fr0, fr14
1.17138 ++ fcasts.d fr8, fr6
1.17139 ++ fcasts.d fr7, fr8
1.17140 ++ .global fcastd_s
1.17141 ++fcastd_s:
1.17142 ++ fcastd.s fr14, fr15
1.17143 ++ fcastd.s fr0, fr0
1.17144 ++ fcastd.s fr14, fr0
1.17145 ++ fcastd.s fr0, fr15
1.17146 ++ fcastd.s fr8, fr7
1.17147 ++ fcastd.s fr6, fr8
1.17148 +--- /dev/null
1.17149 ++++ b/gas/testsuite/gas/avr32/hwrd-lwrd.d
1.17150 +@@ -0,0 +1,47 @@
1.17151 ++#as:
1.17152 ++#objdump: -dr
1.17153 ++#name: hwrd-lwrd
1.17154 ++
1.17155 ++.*: +file format .*
1.17156 ++
1.17157 ++Disassembly of section \.text:
1.17158 ++
1.17159 ++00000000 <test_hwrd>:
1.17160 ++ 0: e0 60 87 65 mov r0,34661
1.17161 ++ 4: e0 60 12 34 mov r0,4660
1.17162 ++ 8: e0 60 00 00 mov r0,0
1.17163 ++ 8: R_AVR32_HI16 \.text\+0x60
1.17164 ++ c: e0 60 00 00 mov r0,0
1.17165 ++ c: R_AVR32_HI16 extsym1
1.17166 ++ 10: ea 10 87 65 orh r0,0x8765
1.17167 ++ 14: ea 10 12 34 orh r0,0x1234
1.17168 ++ 18: ea 10 00 00 orh r0,0x0
1.17169 ++ 18: R_AVR32_HI16 \.text\+0x60
1.17170 ++ 1c: ea 10 00 00 orh r0,0x0
1.17171 ++ 1c: R_AVR32_HI16 extsym1
1.17172 ++ 20: e4 10 87 65 andh r0,0x8765
1.17173 ++ 24: e4 10 12 34 andh r0,0x1234
1.17174 ++ 28: e4 10 00 00 andh r0,0x0
1.17175 ++ 28: R_AVR32_HI16 \.text\+0x60
1.17176 ++ 2c: e4 10 00 00 andh r0,0x0
1.17177 ++ 2c: R_AVR32_HI16 extsym1
1.17178 ++
1.17179 ++00000030 <test_lwrd>:
1.17180 ++ 30: e0 60 43 21 mov r0,17185
1.17181 ++ 34: e0 60 56 78 mov r0,22136
1.17182 ++ 38: e0 60 00 00 mov r0,0
1.17183 ++ 38: R_AVR32_LO16 \.text\+0x60
1.17184 ++ 3c: e0 60 00 00 mov r0,0
1.17185 ++ 3c: R_AVR32_LO16 extsym1
1.17186 ++ 40: e8 10 43 21 orl r0,0x4321
1.17187 ++ 44: e8 10 56 78 orl r0,0x5678
1.17188 ++ 48: e8 10 00 00 orl r0,0x0
1.17189 ++ 48: R_AVR32_LO16 \.text\+0x60
1.17190 ++ 4c: e8 10 00 00 orl r0,0x0
1.17191 ++ 4c: R_AVR32_LO16 extsym1
1.17192 ++ 50: e0 10 43 21 andl r0,0x4321
1.17193 ++ 54: e0 10 56 78 andl r0,0x5678
1.17194 ++ 58: e0 10 00 00 andl r0,0x0
1.17195 ++ 58: R_AVR32_LO16 \.text\+0x60
1.17196 ++ 5c: e0 10 00 00 andl r0,0x0
1.17197 ++ 5c: R_AVR32_LO16 extsym1
1.17198 +--- /dev/null
1.17199 ++++ b/gas/testsuite/gas/avr32/hwrd-lwrd.s
1.17200 +@@ -0,0 +1,39 @@
1.17201 ++
1.17202 ++ .equ sym1, 0x12345678
1.17203 ++
1.17204 ++ .text
1.17205 ++ .global test_hwrd
1.17206 ++test_hwrd:
1.17207 ++ mov r0, hi(0x87654321)
1.17208 ++ mov r0, hi(sym1)
1.17209 ++ mov r0, hi(sym2)
1.17210 ++ mov r0, hi(extsym1)
1.17211 ++
1.17212 ++ orh r0, hi(0x87654321)
1.17213 ++ orh r0, hi(sym1)
1.17214 ++ orh r0, hi(sym2)
1.17215 ++ orh r0, hi(extsym1)
1.17216 ++
1.17217 ++ andh r0, hi(0x87654321)
1.17218 ++ andh r0, hi(sym1)
1.17219 ++ andh r0, hi(sym2)
1.17220 ++ andh r0, hi(extsym1)
1.17221 ++
1.17222 ++ .global test_lwrd
1.17223 ++test_lwrd:
1.17224 ++ mov r0, lo(0x87654321)
1.17225 ++ mov r0, lo(sym1)
1.17226 ++ mov r0, lo(sym2)
1.17227 ++ mov r0, lo(extsym1)
1.17228 ++
1.17229 ++ orl r0, lo(0x87654321)
1.17230 ++ orl r0, lo(sym1)
1.17231 ++ orl r0, lo(sym2)
1.17232 ++ orl r0, lo(extsym1)
1.17233 ++
1.17234 ++ andl r0, lo(0x87654321)
1.17235 ++ andl r0, lo(sym1)
1.17236 ++ andl r0, lo(sym2)
1.17237 ++ andl r0, lo(extsym1)
1.17238 ++
1.17239 ++sym2:
1.17240 +--- /dev/null
1.17241 ++++ b/gas/testsuite/gas/avr32/jmptable.d
1.17242 +@@ -0,0 +1,20 @@
1.17243 ++#source: jmptable.s
1.17244 ++#as:
1.17245 ++#objdump: -dr
1.17246 ++#name: jmptable
1.17247 ++
1.17248 ++.*: +file format .*
1.17249 ++
1.17250 ++Disassembly of section \.text:
1.17251 ++
1.17252 ++00000000 <jmptable_test>:
1.17253 ++ 0: fe c8 ff f4 sub r8,pc,-12
1.17254 ++ 4: f0 00 00 2f add pc,r8,r0<<0x2
1.17255 ++ 8: d7 03 nop
1.17256 ++ a: 00 00 add r0,r0
1.17257 ++ c: c0 38 rjmp 12 <jmptable_test\+0x12>
1.17258 ++ e: c0 38 rjmp 14 <jmptable_test\+0x14>
1.17259 ++ 10: c0 38 rjmp 16 <jmptable_test\+0x16>
1.17260 ++ 12: d7 03 nop
1.17261 ++ 14: d7 03 nop
1.17262 ++ 16: d7 03 nop
1.17263 +--- /dev/null
1.17264 ++++ b/gas/testsuite/gas/avr32/jmptable_linkrelax.d
1.17265 +@@ -0,0 +1,25 @@
1.17266 ++#source: jmptable.s
1.17267 ++#as: --linkrelax
1.17268 ++#objdump: -dr
1.17269 ++#name: jmptable_linkrelax
1.17270 ++
1.17271 ++.*: +file format .*
1.17272 ++
1.17273 ++Disassembly of section \.text:
1.17274 ++
1.17275 ++00000000 <jmptable_test>:
1.17276 ++ 0: fe c8 00 00 sub r8,pc,0
1.17277 ++ 0: R_AVR32_16N_PCREL \.text\+0xc
1.17278 ++ 4: f0 00 00 2f add pc,r8,r0<<0x2
1.17279 ++ 8: d7 03 nop
1.17280 ++ a: 00 00 add r0,r0
1.17281 ++ a: R_AVR32_ALIGN \*ABS\*\+0x2
1.17282 ++ c: c0 08 rjmp c <jmptable_test\+0xc>
1.17283 ++ c: R_AVR32_11H_PCREL \.text\+0x12
1.17284 ++ e: c0 08 rjmp e <jmptable_test\+0xe>
1.17285 ++ e: R_AVR32_11H_PCREL \.text\+0x14
1.17286 ++ 10: c0 08 rjmp 10 <jmptable_test\+0x10>
1.17287 ++ 10: R_AVR32_11H_PCREL \.text\+0x16
1.17288 ++ 12: d7 03 nop
1.17289 ++ 14: d7 03 nop
1.17290 ++ 16: d7 03 nop
1.17291 +--- /dev/null
1.17292 ++++ b/gas/testsuite/gas/avr32/jmptable.s
1.17293 +@@ -0,0 +1,14 @@
1.17294 ++
1.17295 ++ .text
1.17296 ++ .global jmptable_test
1.17297 ++jmptable_test:
1.17298 ++ sub r8, pc, -(.L1 - .)
1.17299 ++ add pc, r8, r0 << 2
1.17300 ++ nop
1.17301 ++ .align 2
1.17302 ++.L1: rjmp 1f
1.17303 ++ rjmp 2f
1.17304 ++ rjmp 3f
1.17305 ++1: nop
1.17306 ++2: nop
1.17307 ++3: nop
1.17308 +--- /dev/null
1.17309 ++++ b/gas/testsuite/gas/avr32/lda_nopic.d
1.17310 +@@ -0,0 +1,32 @@
1.17311 ++#source: lda.s
1.17312 ++#as:
1.17313 ++#objdump: -dr
1.17314 ++#name: lda_nopic
1.17315 ++
1.17316 ++.*: +file format .*
1.17317 ++
1.17318 ++Disassembly of section \.text:
1.17319 ++
1.17320 ++00000000 <lda_test>:
1.17321 ++ 0: f2 c8 00 00 sub r8,r9,0
1.17322 ++
1.17323 ++00000004 <far_negative>:
1.17324 ++ 4: f6 ca 00 00 sub r10,r11,0
1.17325 ++ ...
1.17326 ++ 8000: fe c0 7f fc sub r0,pc,32764
1.17327 ++ 8004: 48 31 lddpc r1,8010 <far_negative\+0x800c>
1.17328 ++ 8006: 48 42 lddpc r2,8014 <far_negative\+0x8010>
1.17329 ++ 8008: 48 43 lddpc r3,8018 <far_negative\+0x8014>
1.17330 ++ 800a: 48 54 lddpc r4,801c <far_negative\+0x8018>
1.17331 ++ 800c: fe c5 80 04 sub r5,pc,-32764
1.17332 ++ ...
1.17333 ++ 8010: R_AVR32_32_CPENT \.text
1.17334 ++ 8014: R_AVR32_32_CPENT \.data
1.17335 ++ 8018: R_AVR32_32_CPENT undefined
1.17336 ++ 801c: R_AVR32_32_CPENT \.text\+0x1001c
1.17337 ++
1.17338 ++00010008 <far_positive>:
1.17339 ++ 10008: fa cc 00 00 sub r12,sp,0
1.17340 ++ ...
1.17341 ++0001001c <toofar_positive>:
1.17342 ++ 1001c: fe ce 00 00 sub lr,pc,0
1.17343 +--- /dev/null
1.17344 ++++ b/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d
1.17345 +@@ -0,0 +1,41 @@
1.17346 ++#source: lda.s
1.17347 ++#as: --linkrelax
1.17348 ++#objdump: -dr
1.17349 ++#name: lda_nopic_linkrelax
1.17350 ++
1.17351 ++.*: +file format .*
1.17352 ++
1.17353 ++Disassembly of section \.text:
1.17354 ++
1.17355 ++00000000 <lda_test>:
1.17356 ++ 0: f2 c8 00 00 sub r8,r9,0
1.17357 ++
1.17358 ++00000004 <far_negative>:
1.17359 ++ 4: f6 ca 00 00 sub r10,r11,0
1.17360 ++ \.\.\.
1.17361 ++ 8000: 48 00 lddpc r0,8000 <far_negative\+0x7ffc>
1.17362 ++ 8000: R_AVR32_9W_CP \.text\+0x800c
1.17363 ++ 8002: 48 01 lddpc r1,8000 <far_negative\+0x7ffc>
1.17364 ++ 8002: R_AVR32_9W_CP \.text\+0x8010
1.17365 ++ 8004: 48 02 lddpc r2,8004 <far_negative\+0x8000>
1.17366 ++ 8004: R_AVR32_9W_CP \.text\+0x8014
1.17367 ++ 8006: 48 03 lddpc r3,8004 <far_negative\+0x8000>
1.17368 ++ 8006: R_AVR32_9W_CP \.text\+0x8018
1.17369 ++ 8008: 48 04 lddpc r4,8008 <far_negative\+0x8004>
1.17370 ++ 8008: R_AVR32_9W_CP \.text\+0x801c
1.17371 ++ 800a: 48 05 lddpc r5,8008 <far_negative\+0x8004>
1.17372 ++ 800a: R_AVR32_9W_CP \.text\+0x8020
1.17373 ++ \.\.\.
1.17374 ++ 800c: R_AVR32_ALIGN \*ABS\*\+0x2
1.17375 ++ 800c: R_AVR32_32_CPENT \.text\+0x4
1.17376 ++ 8010: R_AVR32_32_CPENT \.text
1.17377 ++ 8014: R_AVR32_32_CPENT \.data
1.17378 ++ 8018: R_AVR32_32_CPENT undefined
1.17379 ++ 801c: R_AVR32_32_CPENT \.text\+0x10020
1.17380 ++ 8020: R_AVR32_32_CPENT \.text\+0x1000c
1.17381 ++
1.17382 ++0001000c <far_positive>:
1.17383 ++ 1000c: fa cc 00 00 sub r12,sp,0
1.17384 ++ \.\.\.
1.17385 ++00010020 <toofar_positive>:
1.17386 ++ 10020: fe ce 00 00 sub lr,pc,0
1.17387 +--- /dev/null
1.17388 ++++ b/gas/testsuite/gas/avr32/lda_pic.d
1.17389 +@@ -0,0 +1,32 @@
1.17390 ++#source: lda.s
1.17391 ++#as: --pic
1.17392 ++#objdump: -dr
1.17393 ++#name: lda_pic
1.17394 ++
1.17395 ++.*: +file format .*
1.17396 ++
1.17397 ++Disassembly of section \.text:
1.17398 ++
1.17399 ++00000000 <lda_test>:
1.17400 ++ 0: f2 c8 00 00 sub r8,r9,0
1.17401 ++
1.17402 ++00000004 <far_negative>:
1.17403 ++ 4: f6 ca 00 00 sub r10,r11,0
1.17404 ++ ...
1.17405 ++ 8000: fe c0 7f fc sub r0,pc,32764
1.17406 ++ 8004: ec f1 00 00 ld.w r1,r6\[0\]
1.17407 ++ 8004: R_AVR32_GOT16S toofar_negative
1.17408 ++ 8008: ec f2 00 00 ld.w r2,r6\[0\]
1.17409 ++ 8008: R_AVR32_GOT16S different_section
1.17410 ++ 800c: ec f3 00 00 ld.w r3,r6\[0\]
1.17411 ++ 800c: R_AVR32_GOT16S undefined
1.17412 ++ 8010: ec f4 00 00 ld.w r4,r6\[0\]
1.17413 ++ 8010: R_AVR32_GOT16S toofar_positive
1.17414 ++ 8014: fe c5 80 14 sub r5,pc,-32748
1.17415 ++ ...
1.17416 ++
1.17417 ++00010000 <far_positive>:
1.17418 ++ 10000: fa cc 00 00 sub r12,sp,0
1.17419 ++ ...
1.17420 ++00010014 <toofar_positive>:
1.17421 ++ 10014: fe ce 00 00 sub lr,pc,0
1.17422 +--- /dev/null
1.17423 ++++ b/gas/testsuite/gas/avr32/lda_pic_linkrelax.d
1.17424 +@@ -0,0 +1,40 @@
1.17425 ++#source: lda.s
1.17426 ++#as: --pic --linkrelax
1.17427 ++#objdump: -dr
1.17428 ++#name: lda_pic_linkrelax
1.17429 ++
1.17430 ++.*: +file format .*
1.17431 ++
1.17432 ++Disassembly of section \.text:
1.17433 ++
1.17434 ++00000000 <lda_test>:
1.17435 ++ 0: f2 c8 00 00 sub r8,r9,0
1.17436 ++
1.17437 ++00000004 <far_negative>:
1.17438 ++ 4: f6 ca 00 00 sub r10,r11,0
1.17439 ++ ...
1.17440 ++ 8000: e0 60 00 00 mov r0,0
1.17441 ++ 8000: R_AVR32_LDA_GOT far_negative
1.17442 ++ 8004: ec 00 03 20 ld\.w r0,r6\[r0<<0x2\]
1.17443 ++ 8008: e0 61 00 00 mov r1,0
1.17444 ++ 8008: R_AVR32_LDA_GOT toofar_negative
1.17445 ++ 800c: ec 01 03 21 ld\.w r1,r6\[r1<<0x2\]
1.17446 ++ 8010: e0 62 00 00 mov r2,0
1.17447 ++ 8010: R_AVR32_LDA_GOT different_section
1.17448 ++ 8014: ec 02 03 22 ld\.w r2,r6\[r2<<0x2\]
1.17449 ++ 8018: e0 63 00 00 mov r3,0
1.17450 ++ 8018: R_AVR32_LDA_GOT undefined
1.17451 ++ 801c: ec 03 03 23 ld\.w r3,r6\[r3<<0x2\]
1.17452 ++ 8020: e0 64 00 00 mov r4,0
1.17453 ++ 8020: R_AVR32_LDA_GOT toofar_positive
1.17454 ++ 8024: ec 04 03 24 ld\.w r4,r6\[r4<<0x2\]
1.17455 ++ 8028: e0 65 00 00 mov r5,0
1.17456 ++ 8028: R_AVR32_LDA_GOT far_positive
1.17457 ++ 802c: ec 05 03 25 ld\.w r5,r6\[r5<<0x2\]
1.17458 ++ ...
1.17459 ++
1.17460 ++00010018 <far_positive>:
1.17461 ++ 10018: fa cc 00 00 sub r12,sp,0
1.17462 ++ ...
1.17463 ++0001002c <toofar_positive>:
1.17464 ++ 1002c: fe ce 00 00 sub lr,pc,0
1.17465 +--- /dev/null
1.17466 ++++ b/gas/testsuite/gas/avr32/lda.s
1.17467 +@@ -0,0 +1,30 @@
1.17468 ++
1.17469 ++ .text
1.17470 ++ .global lda_test
1.17471 ++lda_test:
1.17472 ++toofar_negative:
1.17473 ++ sub r8, r9, 0
1.17474 ++far_negative:
1.17475 ++ sub r10, r11, 0
1.17476 ++
1.17477 ++ .fill 32760, 1, 0x00
1.17478 ++
1.17479 ++ lda.w r0, far_negative
1.17480 ++ lda.w r1, toofar_negative
1.17481 ++ lda.w r2, different_section
1.17482 ++ lda.w r3, undefined
1.17483 ++ lda.w r4, toofar_positive
1.17484 ++ lda.w r5, far_positive
1.17485 ++
1.17486 ++ .cpool
1.17487 ++
1.17488 ++ .fill 32744, 1, 0x00
1.17489 ++far_positive:
1.17490 ++ sub r12, sp, 0
1.17491 ++ .fill 16, 1, 0x00
1.17492 ++toofar_positive:
1.17493 ++ sub lr, pc, 0
1.17494 ++
1.17495 ++ .data
1.17496 ++different_section:
1.17497 ++ .long 0x12345678
1.17498 +--- /dev/null
1.17499 ++++ b/gas/testsuite/gas/avr32/pcrel.d
1.17500 +@@ -0,0 +1,64 @@
1.17501 ++#as:
1.17502 ++#objdump: -dr
1.17503 ++#name: pcrel
1.17504 ++
1.17505 ++.*: +file format .*
1.17506 ++
1.17507 ++Disassembly of section \.text:
1.17508 ++
1.17509 ++00000000 <test_rjmp>:
1.17510 ++ 0: d7 03 nop
1.17511 ++ 2: c0 28 rjmp 6 <test_rjmp\+0x6>
1.17512 ++ 4: d7 03 nop
1.17513 ++ 6: e0 8f 00 00 bral 6 <test_rjmp\+0x6>
1.17514 ++ 6: R_AVR32_22H_PCREL extsym10
1.17515 ++
1.17516 ++0000000a <test_rcall>:
1.17517 ++ a: d7 03 nop
1.17518 ++0000000c <test_rcall2>:
1.17519 ++ c: c0 2c rcall 10 <test_rcall2\+0x4>
1.17520 ++ e: d7 03 nop
1.17521 ++ 10: e0 a0 00 00 rcall 10 <test_rcall2\+0x4>
1.17522 ++ 10: R_AVR32_22H_PCREL extsym21
1.17523 ++
1.17524 ++00000014 <test_branch>:
1.17525 ++ 14: c0 31 brne 1a <test_branch\+0x6>
1.17526 ++ 16: e0 8f 00 00 bral 16 <test_branch\+0x2>
1.17527 ++ 16: R_AVR32_22H_PCREL test_branch
1.17528 ++ 1a: e0 80 00 00 breq 1a <test_branch\+0x6>
1.17529 ++ 1a: R_AVR32_22H_PCREL extsym21
1.17530 ++
1.17531 ++0000001e <test_lddpc>:
1.17532 ++ 1e: 48 30 lddpc r0,28 <sym1>
1.17533 ++ 20: 48 20 lddpc r0,28 <sym1>
1.17534 ++ 22: fe f0 00 00 ld.w r0,pc\[0\]
1.17535 ++ 22: R_AVR32_16B_PCREL extsym16
1.17536 ++ \.\.\.
1.17537 ++
1.17538 ++00000028 <sym1>:
1.17539 ++ 28: d7 03 nop
1.17540 ++ 2a: d7 03 nop
1.17541 ++
1.17542 ++0000002c <test_local>:
1.17543 ++ 2c: 48 20 lddpc r0,34 <test_local\+0x8>
1.17544 ++ 2e: 48 30 lddpc r0,38 <test_local\+0xc>
1.17545 ++ 30: 48 20 lddpc r0,38 <test_local\+0xc>
1.17546 ++ 32: 00 00 add r0,r0
1.17547 ++ 34: d7 03 nop
1.17548 ++ 36: d7 03 nop
1.17549 ++ 38: d7 03 nop
1.17550 ++ 3a: d7 03 nop
1.17551 ++
1.17552 ++Disassembly of section \.text\.init:
1.17553 ++
1.17554 ++00000000 <test_inter_section>:
1.17555 ++ 0: e0 a0 .. .. rcall [0-9a-f]+ <.*>
1.17556 ++ 0: R_AVR32_22H_PCREL test_rcall
1.17557 ++ 4: d7 03 nop
1.17558 ++ 6: e0 a0 .. .. rcall [0-9a-f]+ <.*>
1.17559 ++ 6: R_AVR32_22H_PCREL test_rcall
1.17560 ++ a: e0 a0 .. .. rcall [0-9a-z]+ <.*>
1.17561 ++ a: R_AVR32_22H_PCREL \.text\+0xc
1.17562 ++ e: d7 03 nop
1.17563 ++ 10: e0 a0 .. .. rcall [0-9a-f]+ <.*>
1.17564 ++ 10: R_AVR32_22H_PCREL \.text\+0xc
1.17565 +--- /dev/null
1.17566 ++++ b/gas/testsuite/gas/avr32/pcrel.s
1.17567 +@@ -0,0 +1,57 @@
1.17568 ++
1.17569 ++ .text
1.17570 ++ .global test_rjmp
1.17571 ++test_rjmp:
1.17572 ++ nop
1.17573 ++ rjmp 0f
1.17574 ++ nop
1.17575 ++0: rjmp extsym10
1.17576 ++
1.17577 ++ .global test_rcall
1.17578 ++test_rcall:
1.17579 ++ nop
1.17580 ++test_rcall2:
1.17581 ++ rcall 0f
1.17582 ++ nop
1.17583 ++0: rcall extsym21
1.17584 ++
1.17585 ++ .global test_branch
1.17586 ++test_branch:
1.17587 ++ brne 0f
1.17588 ++ /* This will generate a reloc since test_branch is global */
1.17589 ++ bral test_branch
1.17590 ++0: breq extsym21
1.17591 ++
1.17592 ++ .global test_lddpc
1.17593 ++test_lddpc:
1.17594 ++ lddpc r0,sym1
1.17595 ++ lddpc r0,sym1
1.17596 ++ lddpc r0,extsym16
1.17597 ++
1.17598 ++ .align 2
1.17599 ++sym1: nop
1.17600 ++ nop
1.17601 ++
1.17602 ++ .global test_local
1.17603 ++test_local:
1.17604 ++ lddpc r0, .LC1
1.17605 ++ lddpc r0, .LC2
1.17606 ++ lddpc r0, .LC1 + 0x4
1.17607 ++
1.17608 ++ .align 2
1.17609 ++.LC1:
1.17610 ++ nop
1.17611 ++ nop
1.17612 ++.LC2:
1.17613 ++ nop
1.17614 ++ nop
1.17615 ++
1.17616 ++ .section .text.init,"ax"
1.17617 ++ .global test_inter_section
1.17618 ++test_inter_section:
1.17619 ++ rcall test_rcall
1.17620 ++ nop
1.17621 ++ rcall test_rcall
1.17622 ++ rcall test_rcall2
1.17623 ++ nop
1.17624 ++ rcall test_rcall2
1.17625 +--- /dev/null
1.17626 ++++ b/gas/testsuite/gas/avr32/pico.d
1.17627 +@@ -0,0 +1,149 @@
1.17628 ++#as:
1.17629 ++#objdump: -dr
1.17630 ++#name: pico
1.17631 ++
1.17632 ++.*: +file format .*
1.17633 ++
1.17634 ++Disassembly of section \.text:
1.17635 ++
1.17636 ++[0-9a-f]* <picosvmac>:
1.17637 ++ *[0-9a-f]*: e1 a6 20 00 cop cp1,cr0,cr0,cr0,0xc
1.17638 ++ *[0-9a-f]*: e1 a7 2b bb cop cp1,cr11,cr11,cr11,0xe
1.17639 ++ *[0-9a-f]*: e1 a6 3a 05 cop cp1,cr10,cr0,cr5,0xd
1.17640 ++ *[0-9a-f]*: e1 a7 36 90 cop cp1,cr6,cr9,cr0,0xf
1.17641 ++
1.17642 ++[0-9a-f]* <picosvmul>:
1.17643 ++ *[0-9a-f]*: e1 a4 20 00 cop cp1,cr0,cr0,cr0,0x8
1.17644 ++ *[0-9a-f]*: e1 a5 2b bb cop cp1,cr11,cr11,cr11,0xa
1.17645 ++ *[0-9a-f]*: e1 a4 3a 05 cop cp1,cr10,cr0,cr5,0x9
1.17646 ++ *[0-9a-f]*: e1 a5 36 90 cop cp1,cr6,cr9,cr0,0xb
1.17647 ++
1.17648 ++[0-9a-f]* <picovmac>:
1.17649 ++ *[0-9a-f]*: e1 a2 20 00 cop cp1,cr0,cr0,cr0,0x4
1.17650 ++ *[0-9a-f]*: e1 a3 2b bb cop cp1,cr11,cr11,cr11,0x6
1.17651 ++ *[0-9a-f]*: e1 a2 3a 05 cop cp1,cr10,cr0,cr5,0x5
1.17652 ++ *[0-9a-f]*: e1 a3 36 90 cop cp1,cr6,cr9,cr0,0x7
1.17653 ++
1.17654 ++[0-9a-f]* <picovmul>:
1.17655 ++ *[0-9a-f]*: e1 a0 20 00 cop cp1,cr0,cr0,cr0,0x0
1.17656 ++ *[0-9a-f]*: e1 a1 2b bb cop cp1,cr11,cr11,cr11,0x2
1.17657 ++ *[0-9a-f]*: e1 a0 3a 05 cop cp1,cr10,cr0,cr5,0x1
1.17658 ++ *[0-9a-f]*: e1 a1 36 90 cop cp1,cr6,cr9,cr0,0x3
1.17659 ++
1.17660 ++[0-9a-f]* <picold_d>:
1.17661 ++ *[0-9a-f]*: e9 af 3e ff ldc\.d cp1,cr14,pc\[0x3fc\]
1.17662 ++ *[0-9a-f]*: e9 a0 30 ff ldc\.d cp1,cr0,r0\[0x3fc\]
1.17663 ++ *[0-9a-f]*: e9 a0 30 00 ldc\.d cp1,cr0,r0\[0x0\]
1.17664 ++ *[0-9a-f]*: ef a8 26 50 ldc\.d cp1,cr6,--r8
1.17665 ++ *[0-9a-f]*: ef a7 28 50 ldc\.d cp1,cr8,--r7
1.17666 ++ *[0-9a-f]*: ef aa 32 65 ldc\.d cp1,cr2,r10\[r5<<0x2\]
1.17667 ++ *[0-9a-f]*: ef a3 3c 46 ldc\.d cp1,cr12,r3\[r6\]
1.17668 ++
1.17669 ++[0-9a-f]* <picold_w>:
1.17670 ++ *[0-9a-f]*: e9 af 2f ff ldc\.w cp1,cr15,pc\[0x3fc\]
1.17671 ++ *[0-9a-f]*: e9 a0 20 ff ldc\.w cp1,cr0,r0\[0x3fc\]
1.17672 ++ *[0-9a-f]*: e9 a0 20 00 ldc\.w cp1,cr0,r0\[0x0\]
1.17673 ++ *[0-9a-f]*: ef a8 27 40 ldc\.w cp1,cr7,--r8
1.17674 ++ *[0-9a-f]*: ef a7 28 40 ldc\.w cp1,cr8,--r7
1.17675 ++ *[0-9a-f]*: ef aa 31 25 ldc\.w cp1,cr1,r10\[r5<<0x2\]
1.17676 ++ *[0-9a-f]*: ef a3 3d 06 ldc\.w cp1,cr13,r3\[r6\]
1.17677 ++
1.17678 ++[0-9a-f]* <picoldm_d>:
1.17679 ++ *[0-9a-f]*: ed af 24 ff ldcm\.d cp1,pc,cr0-cr15
1.17680 ++ *[0-9a-f]*: ed a0 24 01 ldcm\.d cp1,r0,cr0-cr1
1.17681 ++ *[0-9a-f]*: ed a7 24 80 ldcm\.d cp1,r7,cr14-cr15
1.17682 ++ *[0-9a-f]*: ed a8 24 7f ldcm\.d cp1,r8,cr0-cr13
1.17683 ++
1.17684 ++[0-9a-f]* <picoldm_d_pu>:
1.17685 ++ *[0-9a-f]*: ed af 34 ff ldcm\.d cp1,pc\+\+,cr0-cr15
1.17686 ++ *[0-9a-f]*: ed a0 34 01 ldcm\.d cp1,r0\+\+,cr0-cr1
1.17687 ++ *[0-9a-f]*: ed a7 34 80 ldcm\.d cp1,r7\+\+,cr14-cr15
1.17688 ++ *[0-9a-f]*: ed a8 34 7f ldcm\.d cp1,r8\+\+,cr0-cr13
1.17689 ++
1.17690 ++[0-9a-f]* <picoldm_w>:
1.17691 ++ *[0-9a-f]*: ed af 20 ff ldcm\.w cp1,pc,cr0-cr7
1.17692 ++ *[0-9a-f]*: ed a0 20 01 ldcm\.w cp1,r0,cr0
1.17693 ++ *[0-9a-f]*: ed a7 20 80 ldcm\.w cp1,r7,cr7
1.17694 ++ *[0-9a-f]*: ed a8 20 7f ldcm\.w cp1,r8,cr0-cr6
1.17695 ++ *[0-9a-f]*: ed af 21 ff ldcm\.w cp1,pc,cr8-cr15
1.17696 ++ *[0-9a-f]*: ed a0 21 01 ldcm\.w cp1,r0,cr8
1.17697 ++ *[0-9a-f]*: ed a7 21 80 ldcm\.w cp1,r7,cr15
1.17698 ++ *[0-9a-f]*: ed a8 21 7f ldcm\.w cp1,r8,cr8-cr14
1.17699 ++
1.17700 ++[0-9a-f]* <picoldm_w_pu>:
1.17701 ++ *[0-9a-f]*: ed af 30 ff ldcm\.w cp1,pc\+\+,cr0-cr7
1.17702 ++ *[0-9a-f]*: ed a0 30 01 ldcm\.w cp1,r0\+\+,cr0
1.17703 ++ *[0-9a-f]*: ed a7 30 80 ldcm\.w cp1,r7\+\+,cr7
1.17704 ++ *[0-9a-f]*: ed a8 30 7f ldcm\.w cp1,r8\+\+,cr0-cr6
1.17705 ++ *[0-9a-f]*: ed af 31 ff ldcm\.w cp1,pc\+\+,cr8-cr15
1.17706 ++ *[0-9a-f]*: ed a0 31 01 ldcm\.w cp1,r0\+\+,cr8
1.17707 ++ *[0-9a-f]*: ed a7 31 80 ldcm\.w cp1,r7\+\+,cr15
1.17708 ++ *[0-9a-f]*: ed a8 31 7f ldcm\.w cp1,r8\+\+,cr8-cr14
1.17709 ++
1.17710 ++[0-9a-f]* <picomv_d>:
1.17711 ++ *[0-9a-f]*: ef ae 2e 30 mvrc\.d cp1,cr14,lr
1.17712 ++ *[0-9a-f]*: ef a0 20 30 mvrc\.d cp1,cr0,r0
1.17713 ++ *[0-9a-f]*: ef a8 26 30 mvrc\.d cp1,cr6,r8
1.17714 ++ *[0-9a-f]*: ef a6 28 30 mvrc\.d cp1,cr8,r6
1.17715 ++ *[0-9a-f]*: ef ae 2e 10 mvcr\.d cp1,lr,cr14
1.17716 ++ *[0-9a-f]*: ef a0 20 10 mvcr\.d cp1,r0,cr0
1.17717 ++ *[0-9a-f]*: ef a8 26 10 mvcr\.d cp1,r8,cr6
1.17718 ++ *[0-9a-f]*: ef a6 28 10 mvcr\.d cp1,r6,cr8
1.17719 ++
1.17720 ++[0-9a-f]* <picomv_w>:
1.17721 ++ *[0-9a-f]*: ef af 2f 20 mvrc\.w cp1,cr15,pc
1.17722 ++ *[0-9a-f]*: ef a0 20 20 mvrc\.w cp1,cr0,r0
1.17723 ++ *[0-9a-f]*: ef a8 27 20 mvrc\.w cp1,cr7,r8
1.17724 ++ *[0-9a-f]*: ef a7 28 20 mvrc\.w cp1,cr8,r7
1.17725 ++ *[0-9a-f]*: ef af 2f 00 mvcr\.w cp1,pc,cr15
1.17726 ++ *[0-9a-f]*: ef a0 20 00 mvcr\.w cp1,r0,cr0
1.17727 ++ *[0-9a-f]*: ef a8 27 00 mvcr\.w cp1,r8,cr7
1.17728 ++ *[0-9a-f]*: ef a7 28 00 mvcr\.w cp1,r7,cr8
1.17729 ++
1.17730 ++[0-9a-f]* <picost_d>:
1.17731 ++ *[0-9a-f]*: eb af 3e ff stc\.d cp1,pc\[0x3fc\],cr14
1.17732 ++ *[0-9a-f]*: eb a0 30 00 stc\.d cp1,r0\[0x0\],cr0
1.17733 ++ *[0-9a-f]*: ef a8 26 70 stc\.d cp1,r8\+\+,cr6
1.17734 ++ *[0-9a-f]*: ef a7 28 70 stc\.d cp1,r7\+\+,cr8
1.17735 ++ *[0-9a-f]*: ef aa 32 e5 stc\.d cp1,r10\[r5<<0x2\],cr2
1.17736 ++ *[0-9a-f]*: ef a3 3c c6 stc\.d cp1,r3\[r6\],cr12
1.17737 ++
1.17738 ++[0-9a-f]* <picost_w>:
1.17739 ++ *[0-9a-f]*: eb af 2f ff stc\.w cp1,pc\[0x3fc\],cr15
1.17740 ++ *[0-9a-f]*: eb a0 20 00 stc\.w cp1,r0\[0x0\],cr0
1.17741 ++ *[0-9a-f]*: ef a8 27 60 stc\.w cp1,r8\+\+,cr7
1.17742 ++ *[0-9a-f]*: ef a7 28 60 stc\.w cp1,r7\+\+,cr8
1.17743 ++ *[0-9a-f]*: ef aa 31 a5 stc\.w cp1,r10\[r5<<0x2\],cr1
1.17744 ++ *[0-9a-f]*: ef a3 3d 86 stc\.w cp1,r3\[r6\],cr13
1.17745 ++
1.17746 ++[0-9a-f]* <picostm_d>:
1.17747 ++ *[0-9a-f]*: ed af 25 ff stcm\.d cp1,pc,cr0-cr15
1.17748 ++ *[0-9a-f]*: ed a0 25 01 stcm\.d cp1,r0,cr0-cr1
1.17749 ++ *[0-9a-f]*: ed a7 25 80 stcm\.d cp1,r7,cr14-cr15
1.17750 ++ *[0-9a-f]*: ed a8 25 7f stcm\.d cp1,r8,cr0-cr13
1.17751 ++
1.17752 ++[0-9a-f]* <picostm_d_pu>:
1.17753 ++ *[0-9a-f]*: ed af 35 ff stcm\.d cp1,--pc,cr0-cr15
1.17754 ++ *[0-9a-f]*: ed a0 35 01 stcm\.d cp1,--r0,cr0-cr1
1.17755 ++ *[0-9a-f]*: ed a7 35 80 stcm\.d cp1,--r7,cr14-cr15
1.17756 ++ *[0-9a-f]*: ed a8 35 7f stcm\.d cp1,--r8,cr0-cr13
1.17757 ++
1.17758 ++[0-9a-f]* <picostm_w>:
1.17759 ++ *[0-9a-f]*: ed af 22 ff stcm\.w cp1,pc,cr0-cr7
1.17760 ++ *[0-9a-f]*: ed a0 22 01 stcm\.w cp1,r0,cr0
1.17761 ++ *[0-9a-f]*: ed a7 22 80 stcm\.w cp1,r7,cr7
1.17762 ++ *[0-9a-f]*: ed a8 22 7f stcm\.w cp1,r8,cr0-cr6
1.17763 ++ *[0-9a-f]*: ed af 23 ff stcm\.w cp1,pc,cr8-cr15
1.17764 ++ *[0-9a-f]*: ed a0 23 01 stcm\.w cp1,r0,cr8
1.17765 ++ *[0-9a-f]*: ed a7 23 80 stcm\.w cp1,r7,cr15
1.17766 ++ *[0-9a-f]*: ed a8 23 7f stcm\.w cp1,r8,cr8-cr14
1.17767 ++
1.17768 ++[0-9a-f]* <picostm_w_pu>:
1.17769 ++ *[0-9a-f]*: ed af 32 ff stcm\.w cp1,--pc,cr0-cr7
1.17770 ++ *[0-9a-f]*: ed a0 32 01 stcm\.w cp1,--r0,cr0
1.17771 ++ *[0-9a-f]*: ed a7 32 80 stcm\.w cp1,--r7,cr7
1.17772 ++ *[0-9a-f]*: ed a8 32 7f stcm\.w cp1,--r8,cr0-cr6
1.17773 ++ *[0-9a-f]*: ed af 33 ff stcm\.w cp1,--pc,cr8-cr15
1.17774 ++ *[0-9a-f]*: ed a0 33 01 stcm\.w cp1,--r0,cr8
1.17775 ++ *[0-9a-f]*: ed a7 33 80 stcm\.w cp1,--r7,cr15
1.17776 ++ *[0-9a-f]*: ed a8 33 7f stcm\.w cp1,--r8,cr8-cr14
1.17777 +--- /dev/null
1.17778 ++++ b/gas/testsuite/gas/avr32/pico.s
1.17779 +@@ -0,0 +1,144 @@
1.17780 ++
1.17781 ++ .text
1.17782 ++ .global picosvmac
1.17783 ++picosvmac:
1.17784 ++ picosvmac out0, in0, in0, in0
1.17785 ++ picosvmac out2, in11, in11, in11
1.17786 ++ picosvmac out1, in10, in0, in5
1.17787 ++ picosvmac out3, in6, in9, in0
1.17788 ++ .global picosvmul
1.17789 ++picosvmul:
1.17790 ++ picosvmul out0, in0, in0, in0
1.17791 ++ picosvmul out2, in11, in11, in11
1.17792 ++ picosvmul out1, in10, in0, in5
1.17793 ++ picosvmul out3, in6, in9, in0
1.17794 ++ .global picovmac
1.17795 ++picovmac:
1.17796 ++ picovmac out0, in0, in0, in0
1.17797 ++ picovmac out2, in11, in11, in11
1.17798 ++ picovmac out1, in10, in0, in5
1.17799 ++ picovmac out3, in6, in9, in0
1.17800 ++ .global picovmul
1.17801 ++picovmul:
1.17802 ++ picovmul out0, in0, in0, in0
1.17803 ++ picovmul out2, in11, in11, in11
1.17804 ++ picovmul out1, in10, in0, in5
1.17805 ++ picovmul out3, in6, in9, in0
1.17806 ++ .global picold_d
1.17807 ++picold_d:
1.17808 ++ picold.d vmu2_out, pc[1020]
1.17809 ++ picold.d inpix2, r0[1020]
1.17810 ++ picold.d inpix2, r0[0]
1.17811 ++ picold.d coeff0_a, --r8
1.17812 ++ picold.d coeff1_a, --r7
1.17813 ++ picold.d inpix0, r10[r5 << 2]
1.17814 ++ picold.d vmu0_out, r3[r6 << 0]
1.17815 ++ .global picold_w
1.17816 ++picold_w:
1.17817 ++ picold.w config, pc[1020]
1.17818 ++ picold.w inpix2, r0[1020]
1.17819 ++ picold.w inpix2, r0[0]
1.17820 ++ picold.w coeff0_b, --r8
1.17821 ++ picold.w coeff1_a, --r7
1.17822 ++ picold.w inpix1, r10[r5 << 2]
1.17823 ++ picold.w vmu1_out, r3[r6 << 0]
1.17824 ++ .global picoldm_d
1.17825 ++picoldm_d:
1.17826 ++ picoldm.d pc, inpix2-config
1.17827 ++ picoldm.d r0, inpix2, inpix1
1.17828 ++ picoldm.d r7, vmu2_out, config
1.17829 ++ picoldm.d r8, inpix2-vmu1_out
1.17830 ++ .global picoldm_d_pu
1.17831 ++picoldm_d_pu:
1.17832 ++ picoldm.d pc++, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out, vmu2_out, config
1.17833 ++ picoldm.d r0++, inpix2, inpix1
1.17834 ++ picoldm.d r7++, vmu2_out, config
1.17835 ++ picoldm.d r8++, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out
1.17836 ++ .global picoldm_w
1.17837 ++picoldm_w:
1.17838 ++ picoldm.w pc, inpix2-coeff0_b
1.17839 ++ picoldm.w r0, inpix2
1.17840 ++ picoldm.w r7, coeff0_b
1.17841 ++ picoldm.w r8, inpix2-coeff0_a
1.17842 ++ picoldm.w pc, coeff1_a-config
1.17843 ++ picoldm.w r0, coeff1_a
1.17844 ++ picoldm.w r7, config
1.17845 ++ picoldm.w r8, coeff1_a-vmu2_out
1.17846 ++ .global picoldm_w_pu
1.17847 ++picoldm_w_pu:
1.17848 ++ picoldm.w pc++, inpix2-coeff0_b
1.17849 ++ picoldm.w r0++, inpix2
1.17850 ++ picoldm.w r7++, coeff0_b
1.17851 ++ picoldm.w r8++, inpix2-coeff0_a
1.17852 ++ picoldm.w pc++, coeff1_a-config
1.17853 ++ picoldm.w r0++, coeff1_a
1.17854 ++ picoldm.w r7++, config
1.17855 ++ picoldm.w r8++, coeff1_a-vmu2_out
1.17856 ++ .global picomv_d
1.17857 ++picomv_d:
1.17858 ++ picomv.d vmu2_out, lr
1.17859 ++ picomv.d inpix2, r0
1.17860 ++ picomv.d coeff0_a, r8
1.17861 ++ picomv.d coeff1_a, r6
1.17862 ++ picomv.d pc, vmu2_out
1.17863 ++ picomv.d r0, inpix2
1.17864 ++ picomv.d r8, coeff0_a
1.17865 ++ picomv.d r6, coeff1_a
1.17866 ++ .global picomv_w
1.17867 ++picomv_w:
1.17868 ++ picomv.w config, pc
1.17869 ++ picomv.w inpix2, r0
1.17870 ++ picomv.w coeff0_b, r8
1.17871 ++ picomv.w coeff1_a, r7
1.17872 ++ picomv.w pc, config
1.17873 ++ picomv.w r0, inpix2
1.17874 ++ picomv.w r8, coeff0_b
1.17875 ++ picomv.w r7, coeff1_a
1.17876 ++ .global picost_d
1.17877 ++picost_d:
1.17878 ++ picost.d pc[1020], vmu2_out
1.17879 ++ picost.d r0[0], inpix2
1.17880 ++ picost.d r8++, coeff0_a
1.17881 ++ picost.d r7++, coeff1_a
1.17882 ++ picost.d r10[r5 << 2], inpix0
1.17883 ++ picost.d r3[r6 << 0], vmu0_out
1.17884 ++ .global picost_w
1.17885 ++picost_w:
1.17886 ++ picost.w pc[1020], config
1.17887 ++ picost.w r0[0], inpix2
1.17888 ++ picost.w r8++, coeff0_b
1.17889 ++ picost.w r7++, coeff1_a
1.17890 ++ picost.w r10[r5 << 2], inpix1
1.17891 ++ picost.w r3[r6 << 0], vmu1_out
1.17892 ++ .global picostm_d
1.17893 ++picostm_d:
1.17894 ++ picostm.d pc, inpix2-config
1.17895 ++ picostm.d r0, inpix2, inpix1
1.17896 ++ picostm.d r7, vmu2_out, config
1.17897 ++ picostm.d r8, inpix2-vmu1_out
1.17898 ++ .global picostm_d_pu
1.17899 ++picostm_d_pu:
1.17900 ++ picostm.d --pc, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out, vmu2_out, config
1.17901 ++ picostm.d --r0, inpix2, inpix1
1.17902 ++ picostm.d --r7, vmu2_out, config
1.17903 ++ picostm.d --r8, inpix2, inpix1, inpix0, outpix2, outpix1, outpix0, coeff0_a, coeff0_b, coeff1_a, coeff1_b, coeff2_a, coeff2_b, vmu0_out, vmu1_out
1.17904 ++ .global picostm_w
1.17905 ++picostm_w:
1.17906 ++ picostm.w pc, inpix2-coeff0_b
1.17907 ++ picostm.w r0, inpix2
1.17908 ++ picostm.w r7, coeff0_b
1.17909 ++ picostm.w r8, inpix2-coeff0_a
1.17910 ++ picostm.w pc, coeff1_a-config
1.17911 ++ picostm.w r0, coeff1_a
1.17912 ++ picostm.w r7, config
1.17913 ++ picostm.w r8, coeff1_a-vmu2_out
1.17914 ++ .global picostm_w_pu
1.17915 ++picostm_w_pu:
1.17916 ++ picostm.w --pc, inpix2-coeff0_b
1.17917 ++ picostm.w --r0, inpix2
1.17918 ++ picostm.w --r7, coeff0_b
1.17919 ++ picostm.w --r8, inpix2-coeff0_a
1.17920 ++ picostm.w --pc, coeff1_a-config
1.17921 ++ picostm.w --r0, coeff1_a
1.17922 ++ picostm.w --r7, config
1.17923 ++ picostm.w --r8, coeff1_a-vmu2_out
1.17924 +--- /dev/null
1.17925 ++++ b/gas/testsuite/gas/avr32/pic_reloc.d
1.17926 +@@ -0,0 +1,27 @@
1.17927 ++#as:
1.17928 ++#objdump: -dr
1.17929 ++#name: pic_reloc
1.17930 ++
1.17931 ++.*: +file format .*
1.17932 ++
1.17933 ++Disassembly of section \.text:
1.17934 ++
1.17935 ++00000000 <mcall_got>:
1.17936 ++ 0: f0 16 00 00 mcall r6\[0\]
1.17937 ++ 0: R_AVR32_GOT18SW extfunc
1.17938 ++ 4: f0 16 00 00 mcall r6\[0\]
1.17939 ++ 4: R_AVR32_GOT18SW \.L1
1.17940 ++ 8: f0 16 00 00 mcall r6\[0\]
1.17941 ++ 8: R_AVR32_GOT18SW \.L2
1.17942 ++ c: f0 16 00 00 mcall r6\[0\]
1.17943 ++ c: R_AVR32_GOT18SW mcall_got
1.17944 ++
1.17945 ++00000010 <ldw_got>:
1.17946 ++ 10: ec f0 00 00 ld.w r0,r6\[0\]
1.17947 ++ 10: R_AVR32_GOT16S extvar
1.17948 ++ 14: ec f0 00 00 ld.w r0,r6\[0\]
1.17949 ++ 14: R_AVR32_GOT16S \.L3
1.17950 ++ 18: ec f0 00 00 ld.w r0,r6\[0\]
1.17951 ++ 18: R_AVR32_GOT16S \.L4
1.17952 ++ 1c: ec f0 00 00 ld.w r0,r6\[0\]
1.17953 ++ 1c: R_AVR32_GOT16S ldw_got
1.17954 +--- /dev/null
1.17955 ++++ b/gas/testsuite/gas/avr32/pic_reloc.s
1.17956 +@@ -0,0 +1,18 @@
1.17957 ++
1.17958 ++ .text
1.17959 ++ .global mcall_got
1.17960 ++mcall_got:
1.17961 ++.L1:
1.17962 ++ mcall r6[extfunc@got]
1.17963 ++ mcall r6[.L1@got]
1.17964 ++ mcall r6[.L2@got]
1.17965 ++ mcall r6[mcall_got@got]
1.17966 ++.L2:
1.17967 ++
1.17968 ++ .global ldw_got
1.17969 ++ldw_got:
1.17970 ++.L3: ld.w r0,r6[extvar@got]
1.17971 ++ ld.w r0,r6[.L3@got]
1.17972 ++ ld.w r0,r6[.L4@got]
1.17973 ++ ld.w r0,r6[ldw_got@got]
1.17974 ++.L4:
1.17975 +--- /dev/null
1.17976 ++++ b/gas/testsuite/gas/avr32/symdiff.d
1.17977 +@@ -0,0 +1,24 @@
1.17978 ++#source: symdiff.s
1.17979 ++#as:
1.17980 ++#objdump: -dr
1.17981 ++#name: symdiff
1.17982 ++
1.17983 ++.*: +file format .*
1.17984 ++
1.17985 ++Disassembly of section \.text:
1.17986 ++
1.17987 ++00000000 <diff32>:
1.17988 ++ 0: 00 00 add r0,r0
1.17989 ++ 2: 00 04 add r4,r0
1.17990 ++
1.17991 ++00000004 <diff16>:
1.17992 ++ 4: 00 04 add r4,r0
1.17993 ++
1.17994 ++00000006 <diff8>:
1.17995 ++ 6: 04 00 add r0,r2
1.17996 ++
1.17997 ++00000008 <symdiff_test>:
1.17998 ++ 8: d7 03 nop
1.17999 ++ a: d7 03 nop
1.18000 ++ c: d7 03 nop
1.18001 ++ e: d7 03 nop
1.18002 +--- /dev/null
1.18003 ++++ b/gas/testsuite/gas/avr32/symdiff_linkrelax.d
1.18004 +@@ -0,0 +1,28 @@
1.18005 ++#source: symdiff.s
1.18006 ++#as: --linkrelax
1.18007 ++#objdump: -dr
1.18008 ++#name: symdiff_linkrelax
1.18009 ++
1.18010 ++.*: +file format .*
1.18011 ++
1.18012 ++Disassembly of section \.text:
1.18013 ++
1.18014 ++00000000 <diff32>:
1.18015 ++ 0: 00 00 add r0,r0
1.18016 ++ 0: R_AVR32_DIFF32 \.text\+0xa
1.18017 ++ 2: 00 04 add r4,r0
1.18018 ++
1.18019 ++00000004 <diff16>:
1.18020 ++ 4: 00 04 add r4,r0
1.18021 ++ 4: R_AVR32_DIFF16 \.text\+0xa
1.18022 ++
1.18023 ++00000006 <diff8>:
1.18024 ++ 6: 04 00 add r0,r2
1.18025 ++ 6: R_AVR32_DIFF8 \.text\+0xa
1.18026 ++ 7: R_AVR32_ALIGN \*ABS\*\+0x1
1.18027 ++
1.18028 ++00000008 <symdiff_test>:
1.18029 ++ 8: d7 03 nop
1.18030 ++ a: d7 03 nop
1.18031 ++ c: d7 03 nop
1.18032 ++ e: d7 03 nop
1.18033 +--- /dev/null
1.18034 ++++ b/gas/testsuite/gas/avr32/symdiff.s
1.18035 +@@ -0,0 +1,19 @@
1.18036 ++
1.18037 ++ .text
1.18038 ++ .global diff32
1.18039 ++diff32:
1.18040 ++ .long .L2 - .L1
1.18041 ++ .global diff16
1.18042 ++diff16:
1.18043 ++ .short .L2 - .L1
1.18044 ++ .global diff8
1.18045 ++diff8:
1.18046 ++ .byte .L2 - .L1
1.18047 ++
1.18048 ++ .global symdiff_test
1.18049 ++ .align 1
1.18050 ++symdiff_test:
1.18051 ++ nop
1.18052 ++.L1: nop
1.18053 ++ nop
1.18054 ++.L2: nop
1.18055 +--- a/gas/write.c
1.18056 ++++ b/gas/write.c
1.18057 +@@ -1955,6 +1955,10 @@ relax_frag (segT segment, fragS *fragP,
1.18058 +
1.18059 + #endif /* defined (TC_GENERIC_RELAX_TABLE) */
1.18060 +
1.18061 ++#ifdef TC_RELAX_ALIGN
1.18062 ++#define RELAX_ALIGN(SEG, FRAG, ADDR) TC_RELAX_ALIGN(SEG, FRAG, ADDR)
1.18063 ++#else
1.18064 ++#define RELAX_ALIGN(SEG, FRAG, ADDR) relax_align(ADDR, (FRAG)->fr_offset)
1.18065 + /* Relax_align. Advance location counter to next address that has 'alignment'
1.18066 + lowest order bits all 0s, return size of adjustment made. */
1.18067 + static relax_addressT
1.18068 +@@ -1974,6 +1978,7 @@ relax_align (register relax_addressT add
1.18069 + #endif
1.18070 + return (new_address - address);
1.18071 + }
1.18072 ++#endif
1.18073 +
1.18074 + /* Now we have a segment, not a crowd of sub-segments, we can make
1.18075 + fr_address values.
1.18076 +@@ -2017,7 +2022,7 @@ relax_segment (struct frag *segment_frag
1.18077 + case rs_align_code:
1.18078 + case rs_align_test:
1.18079 + {
1.18080 +- addressT offset = relax_align (address, (int) fragP->fr_offset);
1.18081 ++ addressT offset = RELAX_ALIGN(segment, fragP, address);
1.18082 +
1.18083 + if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype)
1.18084 + offset = 0;
1.18085 +@@ -2218,10 +2223,10 @@ relax_segment (struct frag *segment_frag
1.18086 + {
1.18087 + addressT oldoff, newoff;
1.18088 +
1.18089 +- oldoff = relax_align (was_address + fragP->fr_fix,
1.18090 +- (int) offset);
1.18091 +- newoff = relax_align (address + fragP->fr_fix,
1.18092 +- (int) offset);
1.18093 ++ oldoff = RELAX_ALIGN (segment, fragP,
1.18094 ++ was_address + fragP->fr_fix);
1.18095 ++ newoff = RELAX_ALIGN (segment, fragP,
1.18096 ++ address + fragP->fr_fix);
1.18097 +
1.18098 + if (fragP->fr_subtype != 0)
1.18099 + {
1.18100 +--- a/include/dis-asm.h
1.18101 ++++ b/include/dis-asm.h
1.18102 +@@ -204,13 +204,14 @@ typedef struct disassemble_info
1.18103 +
1.18104 + } disassemble_info;
1.18105 +
1.18106 +-
1.18107 ++
1.18108 + /* Standard disassemblers. Disassemble one instruction at the given
1.18109 + target address. Return number of octets processed. */
1.18110 + typedef int (*disassembler_ftype) (bfd_vma, disassemble_info *);
1.18111 +
1.18112 + extern int print_insn_alpha (bfd_vma, disassemble_info *);
1.18113 + extern int print_insn_avr (bfd_vma, disassemble_info *);
1.18114 ++extern int print_insn_avr32 (bfd_vma, disassemble_info *);
1.18115 + extern int print_insn_bfin (bfd_vma, disassemble_info *);
1.18116 + extern int print_insn_big_arm (bfd_vma, disassemble_info *);
1.18117 + extern int print_insn_big_mips (bfd_vma, disassemble_info *);
1.18118 +@@ -242,7 +243,7 @@ extern int print_insn_little_arm (bfd_vm
1.18119 + extern int print_insn_little_mips (bfd_vma, disassemble_info *);
1.18120 + extern int print_insn_little_or32 (bfd_vma, disassemble_info *);
1.18121 + extern int print_insn_little_powerpc (bfd_vma, disassemble_info *);
1.18122 +-extern int print_insn_little_score (bfd_vma, disassemble_info *);
1.18123 ++extern int print_insn_little_score (bfd_vma, disassemble_info *);
1.18124 + extern int print_insn_m32c (bfd_vma, disassemble_info *);
1.18125 + extern int print_insn_m32r (bfd_vma, disassemble_info *);
1.18126 + extern int print_insn_m68hc11 (bfd_vma, disassemble_info *);
1.18127 +@@ -290,7 +291,9 @@ extern void print_i386_disassembler_opti
1.18128 + extern void print_mips_disassembler_options (FILE *);
1.18129 + extern void print_ppc_disassembler_options (FILE *);
1.18130 + extern void print_arm_disassembler_options (FILE *);
1.18131 ++extern void print_avr32_disassembler_options (FILE *);
1.18132 + extern void parse_arm_disassembler_option (char *);
1.18133 ++extern void parse_avr32_disassembler_option (char *);
1.18134 + extern int get_arm_regname_num_options (void);
1.18135 + extern int set_arm_regname_option (int);
1.18136 + extern int get_arm_regnames (int, const char **, const char **, const char *const **);
1.18137 +@@ -306,7 +309,7 @@ extern void disassemble_init_for_target
1.18138 + /* Document any target specific options available from the disassembler. */
1.18139 + extern void disassembler_usage (FILE *);
1.18140 +
1.18141 +-
1.18142 ++
1.18143 + /* This block of definitions is for particular callers who read instructions
1.18144 + into a buffer before calling the instruction decoder. */
1.18145 +
1.18146 +--- /dev/null
1.18147 ++++ b/include/elf/avr32.h
1.18148 +@@ -0,0 +1,98 @@
1.18149 ++/* AVR32 ELF support for BFD.
1.18150 ++ Copyright 2003-2006 Atmel Corporation.
1.18151 ++
1.18152 ++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
1.18153 ++
1.18154 ++ This file is part of BFD, the Binary File Descriptor library.
1.18155 ++
1.18156 ++ This program is free software; you can redistribute it and/or
1.18157 ++ modify it under the terms of the GNU General Public License as
1.18158 ++ published by the Free Software Foundation; either version 2 of the
1.18159 ++ License, or (at your option) any later version.
1.18160 ++
1.18161 ++ This program is distributed in the hope that it will be useful, but
1.18162 ++ WITHOUT ANY WARRANTY; without even the implied warranty of
1.18163 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1.18164 ++ General Public License for more details.
1.18165 ++
1.18166 ++ You should have received a copy of the GNU General Public License
1.18167 ++ along with this program; if not, write to the Free Software
1.18168 ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1.18169 ++ 02111-1307, USA. */
1.18170 ++
1.18171 ++#include "elf/reloc-macros.h"
1.18172 ++
1.18173 ++/* CPU-specific flags for the ELF header e_flags field */
1.18174 ++#define EF_AVR32_LINKRELAX 0x01
1.18175 ++#define EF_AVR32_PIC 0x02
1.18176 ++
1.18177 ++START_RELOC_NUMBERS (elf_avr32_reloc_type)
1.18178 ++ RELOC_NUMBER (R_AVR32_NONE, 0)
1.18179 ++
1.18180 ++ /* Data Relocations */
1.18181 ++ RELOC_NUMBER (R_AVR32_32, 1)
1.18182 ++ RELOC_NUMBER (R_AVR32_16, 2)
1.18183 ++ RELOC_NUMBER (R_AVR32_8, 3)
1.18184 ++ RELOC_NUMBER (R_AVR32_32_PCREL, 4)
1.18185 ++ RELOC_NUMBER (R_AVR32_16_PCREL, 5)
1.18186 ++ RELOC_NUMBER (R_AVR32_8_PCREL, 6)
1.18187 ++ RELOC_NUMBER (R_AVR32_DIFF32, 7)
1.18188 ++ RELOC_NUMBER (R_AVR32_DIFF16, 8)
1.18189 ++ RELOC_NUMBER (R_AVR32_DIFF8, 9)
1.18190 ++ RELOC_NUMBER (R_AVR32_GOT32, 10)
1.18191 ++ RELOC_NUMBER (R_AVR32_GOT16, 11)
1.18192 ++ RELOC_NUMBER (R_AVR32_GOT8, 12)
1.18193 ++
1.18194 ++ /* Normal Code Relocations */
1.18195 ++ RELOC_NUMBER (R_AVR32_21S, 13)
1.18196 ++ RELOC_NUMBER (R_AVR32_16U, 14)
1.18197 ++ RELOC_NUMBER (R_AVR32_16S, 15)
1.18198 ++ RELOC_NUMBER (R_AVR32_8S, 16)
1.18199 ++ RELOC_NUMBER (R_AVR32_8S_EXT, 17)
1.18200 ++
1.18201 ++ /* PC-Relative Code Relocations */
1.18202 ++ RELOC_NUMBER (R_AVR32_22H_PCREL, 18)
1.18203 ++ RELOC_NUMBER (R_AVR32_18W_PCREL, 19)
1.18204 ++ RELOC_NUMBER (R_AVR32_16B_PCREL, 20)
1.18205 ++ RELOC_NUMBER (R_AVR32_16N_PCREL, 21)
1.18206 ++ RELOC_NUMBER (R_AVR32_14UW_PCREL, 22)
1.18207 ++ RELOC_NUMBER (R_AVR32_11H_PCREL, 23)
1.18208 ++ RELOC_NUMBER (R_AVR32_10UW_PCREL, 24)
1.18209 ++ RELOC_NUMBER (R_AVR32_9H_PCREL, 25)
1.18210 ++ RELOC_NUMBER (R_AVR32_9UW_PCREL, 26)
1.18211 ++
1.18212 ++ /* Special Code Relocations */
1.18213 ++ RELOC_NUMBER (R_AVR32_HI16, 27)
1.18214 ++ RELOC_NUMBER (R_AVR32_LO16, 28)
1.18215 ++
1.18216 ++ /* PIC Relocations */
1.18217 ++ RELOC_NUMBER (R_AVR32_GOTPC, 29)
1.18218 ++ RELOC_NUMBER (R_AVR32_GOTCALL, 30)
1.18219 ++ RELOC_NUMBER (R_AVR32_LDA_GOT, 31)
1.18220 ++ RELOC_NUMBER (R_AVR32_GOT21S, 32)
1.18221 ++ RELOC_NUMBER (R_AVR32_GOT18SW, 33)
1.18222 ++ RELOC_NUMBER (R_AVR32_GOT16S, 34)
1.18223 ++ RELOC_NUMBER (R_AVR32_GOT7UW, 35)
1.18224 ++
1.18225 ++ /* Constant Pool Relocations */
1.18226 ++ RELOC_NUMBER (R_AVR32_32_CPENT, 36)
1.18227 ++ RELOC_NUMBER (R_AVR32_CPCALL, 37)
1.18228 ++ RELOC_NUMBER (R_AVR32_16_CP, 38)
1.18229 ++ RELOC_NUMBER (R_AVR32_9W_CP, 39)
1.18230 ++
1.18231 ++ /* Dynamic Relocations */
1.18232 ++ RELOC_NUMBER (R_AVR32_RELATIVE, 40)
1.18233 ++ RELOC_NUMBER (R_AVR32_GLOB_DAT, 41)
1.18234 ++ RELOC_NUMBER (R_AVR32_JMP_SLOT, 42)
1.18235 ++
1.18236 ++ /* Linkrelax Information */
1.18237 ++ RELOC_NUMBER (R_AVR32_ALIGN, 43)
1.18238 ++
1.18239 ++ RELOC_NUMBER (R_AVR32_15S, 44)
1.18240 ++
1.18241 ++END_RELOC_NUMBERS (R_AVR32_max)
1.18242 ++
1.18243 ++/* Processor specific dynamic array tags. */
1.18244 ++
1.18245 ++/* The total size in bytes of the Global Offset Table */
1.18246 ++#define DT_AVR32_GOTSZ 0x70000001
1.18247 +--- a/include/elf/common.h
1.18248 ++++ b/include/elf/common.h
1.18249 +@@ -259,6 +259,9 @@
1.18250 + /* V850 backend magic number. Written in the absense of an ABI. */
1.18251 + #define EM_CYGNUS_V850 0x9080
1.18252 +
1.18253 ++/* AVR32 magic number, picked by IAR Systems. */
1.18254 ++#define EM_AVR32 0x18ad
1.18255 ++
1.18256 + /* old S/390 backend magic number. Written in the absence of an ABI. */
1.18257 + #define EM_S390_OLD 0xa390
1.18258 +
1.18259 +--- a/ld/configdoc.texi
1.18260 ++++ b/ld/configdoc.texi
1.18261 +@@ -7,6 +7,7 @@
1.18262 + @set H8300
1.18263 + @set HPPA
1.18264 + @set I960
1.18265 ++@set AVR32
1.18266 + @set M68HC11
1.18267 + @set MMIX
1.18268 + @set MSP430
1.18269 +--- a/ld/configure.tgt
1.18270 ++++ b/ld/configure.tgt
1.18271 +@@ -109,6 +109,9 @@ xscale-*-elf) targ_emul=armelf
1.18272 + avr-*-*) targ_emul=avr2
1.18273 + targ_extra_emuls="avr1 avr3 avr4 avr5 avr6"
1.18274 + ;;
1.18275 ++avr32-*-none) targ_emul=avr32elf_ap7000
1.18276 ++ targ_extra_emuls="avr32elf_ap7001 avr32elf_ap7002 avr32elf_ap7200 avr32elf_uc3a0128 avr32elf_uc3a0256 avr32elf_uc3a0512 avr32elf_uc3a0512es avr32elf_uc3a1128 avr32elf_uc3a1256 avr32elf_uc3a1512es avr32elf_uc3a1512 avr32elf_uc3a364 avr32elf_uc3a364s avr32elf_uc3a3128 avr32elf_uc3a3128s avr32elf_uc3a3256 avr32elf_uc3a3256s avr32elf_uc3b064 avr32elf_uc3b0128 avr32elf_uc3b0256es avr32elf_uc3b0256 avr32elf_uc3b164 avr32elf_uc3b1128 avr32elf_uc3b1256es avr32elf_uc3b1256" ;;
1.18277 ++avr32-*-linux*) targ_emul=avr32linux ;;
1.18278 + bfin-*-elf) targ_emul=elf32bfin;
1.18279 + targ_extra_emuls="elf32bfinfd"
1.18280 + targ_extra_libpath=$targ_extra_emuls
1.18281 +--- /dev/null
1.18282 ++++ b/ld/emulparams/avr32elf.sh
1.18283 +@@ -0,0 +1,163 @@
1.18284 ++# This script is called from ld/genscript.sh
1.18285 ++# There is a difference on how 'bash' and POSIX handles
1.18286 ++# the '.' (source) command in a script.
1.18287 ++# genscript.sh calls this script with argument ${EMULATION_NAME}
1.18288 ++# but that will fail on POSIX compilant shells like 'sh' or 'dash'
1.18289 ++# therefor I use the variable directly instead of $1
1.18290 ++EMULATION=${EMULATION_NAME}
1.18291 ++SCRIPT_NAME=elf_xip
1.18292 ++TEMPLATE_NAME=elf32
1.18293 ++EXTRA_EM_FILE=avr32elf
1.18294 ++OUTPUT_FORMAT="elf32-avr32"
1.18295 ++ARCH=avr32
1.18296 ++MAXPAGESIZE=4096
1.18297 ++ENTRY=_start
1.18298 ++EMBEDDED=yes
1.18299 ++NO_SMALL_DATA=yes
1.18300 ++NOP=0xd703d703
1.18301 ++
1.18302 ++DATA_SEGMENT_ALIGN=8
1.18303 ++BSS_ALIGNMENT=8
1.18304 ++
1.18305 ++RO_LMA_REGION="FLASH"
1.18306 ++RO_VMA_REGION="FLASH"
1.18307 ++RW_LMA_REGION="FLASH"
1.18308 ++RW_VMA_REGION="CPUSRAM"
1.18309 ++
1.18310 ++STACK_SIZE=0x1000
1.18311 ++STACK_ADDR="ORIGIN(CPUSRAM) + LENGTH(CPUSRAM) - ${STACK_SIZE}"
1.18312 ++
1.18313 ++DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
1.18314 ++ . = ${STACK_ADDR};
1.18315 ++ __heap_end__ = .;"
1.18316 ++
1.18317 ++case "$EMULATION" in
1.18318 ++avr32elf_ap*)
1.18319 ++ MACHINE=ap
1.18320 ++ INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH
1.18321 ++ . = . & 0x9fffffff;"
1.18322 ++ TEXT_START_ADDR=0xa0000000
1.18323 ++ case "$EMULATION" in
1.18324 ++ avr32elf_ap700[0-2])
1.18325 ++ MEMORY="MEMORY
1.18326 ++ {
1.18327 ++ FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
1.18328 ++ CPUSRAM (rwxa) : ORIGIN = 0x24000000, LENGTH = 32K
1.18329 ++ }"
1.18330 ++ ;;
1.18331 ++ avr32elf_ap7200)
1.18332 ++ MEMORY="MEMORY
1.18333 ++ {
1.18334 ++ FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
1.18335 ++ CPUSRAM (rwxa) : ORIGIN = 0x08000000, LENGTH = 64K
1.18336 ++ }"
1.18337 ++ ;;
1.18338 ++ esac
1.18339 ++ ;;
1.18340 ++
1.18341 ++avr32elf_uc3*)
1.18342 ++ MACHINE=uc
1.18343 ++ INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
1.18344 ++ TEXT_START_ADDR=0x80000000
1.18345 ++ OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
1.18346 ++ .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
1.18347 ++
1.18348 ++ case "$EMULATION" in
1.18349 ++ avr32elf_uc3a[01]512*)
1.18350 ++ MEMORY="MEMORY
1.18351 ++ {
1.18352 ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 512K
1.18353 ++ CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
1.18354 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
1.18355 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
1.18356 ++ }"
1.18357 ++ ;;
1.18358 ++
1.18359 ++ avr32elf_uc3a[01]256)
1.18360 ++ MEMORY="MEMORY
1.18361 ++ {
1.18362 ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
1.18363 ++ CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
1.18364 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
1.18365 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
1.18366 ++ }"
1.18367 ++ ;;
1.18368 ++
1.18369 ++ avr32elf_uc3b[01]256*)
1.18370 ++ MEMORY="MEMORY
1.18371 ++ {
1.18372 ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
1.18373 ++ CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
1.18374 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
1.18375 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
1.18376 ++ }"
1.18377 ++ ;;
1.18378 ++
1.18379 ++ avr32elf_uc3[ab][01]128)
1.18380 ++ MEMORY="MEMORY
1.18381 ++ {
1.18382 ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
1.18383 ++ CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
1.18384 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
1.18385 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
1.18386 ++ }"
1.18387 ++ ;;
1.18388 ++
1.18389 ++ avr32elf_uc3b[01]64)
1.18390 ++ MEMORY="MEMORY
1.18391 ++ {
1.18392 ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
1.18393 ++ CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 16K
1.18394 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
1.18395 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
1.18396 ++ }"
1.18397 ++ ;;
1.18398 ++
1.18399 ++ avr32elf_uc3a3256*)
1.18400 ++ MEMORY="MEMORY
1.18401 ++ {
1.18402 ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
1.18403 ++ CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
1.18404 ++ HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
1.18405 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
1.18406 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
1.18407 ++ }"
1.18408 ++ OTHER_SECTIONS ="${OTHER_SECTIONS}
1.18409 ++ .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
1.18410 ++"
1.18411 ++
1.18412 ++ ;;
1.18413 ++
1.18414 ++ avr32elf_uc3a3128*)
1.18415 ++ MEMORY="MEMORY
1.18416 ++ {
1.18417 ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
1.18418 ++ CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
1.18419 ++ HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
1.18420 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
1.18421 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
1.18422 ++ }"
1.18423 ++ OTHER_SECTIONS ="${OTHER_SECTIONS}
1.18424 ++ .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
1.18425 ++"
1.18426 ++ ;;
1.18427 ++
1.18428 ++ avr32elf_uc3a364*)
1.18429 ++ MEMORY="MEMORY
1.18430 ++ {
1.18431 ++ FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
1.18432 ++ CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
1.18433 ++ HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
1.18434 ++ USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
1.18435 ++ FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
1.18436 ++ }"
1.18437 ++ OTHER_SECTIONS ="${OTHER_SECTIONS}
1.18438 ++ .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
1.18439 ++"
1.18440 ++ ;;
1.18441 ++
1.18442 ++
1.18443 ++ esac
1.18444 ++ ;;
1.18445 ++
1.18446 ++esac
1.18447 +--- /dev/null
1.18448 ++++ b/ld/emulparams/avr32linux.sh
1.18449 +@@ -0,0 +1,14 @@
1.18450 ++ARCH=avr32
1.18451 ++SCRIPT_NAME=elf
1.18452 ++TEMPLATE_NAME=elf32
1.18453 ++EXTRA_EM_FILE=avr32elf
1.18454 ++OUTPUT_FORMAT="elf32-avr32"
1.18455 ++GENERATE_SHLIB_SCRIPT=yes
1.18456 ++MAXPAGESIZE=0x1000
1.18457 ++TEXT_START_ADDR=0x00001000
1.18458 ++NOP=0xd703d703
1.18459 ++
1.18460 ++# This appears to place the GOT before the data section, which is
1.18461 ++# essential for uClinux. We don't use those .s* sections on AVR32
1.18462 ++# anyway, so it shouldn't hurt for regular Linux either...
1.18463 ++NO_SMALL_DATA=yes
1.18464 +--- /dev/null
1.18465 ++++ b/ld/emultempl/avr32elf.em
1.18466 +@@ -0,0 +1,133 @@
1.18467 ++# This shell script emits a C file. -*- C -*-
1.18468 ++# Copyright (C) 2007 Atmel Corporation
1.18469 ++#
1.18470 ++# This file is part of GLD, the Gnu Linker.
1.18471 ++#
1.18472 ++# This program is free software; you can redistribute it and/or modify
1.18473 ++# it under the terms of the GNU General Public License as published by
1.18474 ++# the Free Software Foundation; either version 2 of the License, or
1.18475 ++# (at your option) any later version.
1.18476 ++#
1.18477 ++# This program is distributed in the hope that it will be useful,
1.18478 ++# but WITHOUT ANY WARRANTY; without even the implied warranty of
1.18479 ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.18480 ++# GNU General Public License for more details.
1.18481 ++#
1.18482 ++# You should have received a copy of the GNU General Public License
1.18483 ++# along with this program; if not, write to the Free Software
1.18484 ++# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
1.18485 ++#
1.18486 ++
1.18487 ++# This file is sourced from elf32.em, and defines extra avr32-elf
1.18488 ++# specific routines.
1.18489 ++#
1.18490 ++
1.18491 ++# Generate linker script for writable rodata
1.18492 ++LD_FLAG=rodata-writable
1.18493 ++DATA_ALIGNMENT=${DATA_ALIGNMENT_}
1.18494 ++RELOCATING=" "
1.18495 ++WRITABLE_RODATA=" "
1.18496 ++( echo "/* Linker script for writable rodata */"
1.18497 ++ . ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
1.18498 ++ . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
1.18499 ++) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xwr
1.18500 ++
1.18501 ++
1.18502 ++cat >> e${EMULATION_NAME}.c <<EOF
1.18503 ++
1.18504 ++#include "libbfd.h"
1.18505 ++#include "elf32-avr32.h"
1.18506 ++
1.18507 ++/* Whether to allow direct references (sub or mov) to SEC_DATA and
1.18508 ++ !SEC_CONTENTS sections when optimizing. Not enabled by default
1.18509 ++ since it might cause link errors. */
1.18510 ++static int direct_data_refs = 0;
1.18511 ++
1.18512 ++static void avr32_elf_after_open (void)
1.18513 ++{
1.18514 ++ bfd_elf32_avr32_set_options (&link_info, direct_data_refs);
1.18515 ++ gld${EMULATION_NAME}_after_open ();
1.18516 ++}
1.18517 ++
1.18518 ++static int rodata_writable = 0;
1.18519 ++
1.18520 ++static char * gld${EMULATION_NAME}_get_script (int *isfile);
1.18521 ++
1.18522 ++static char * avr32_elf_get_script (int *isfile)
1.18523 ++{
1.18524 ++ if ( rodata_writable )
1.18525 ++ {
1.18526 ++EOF
1.18527 ++if test -n "$COMPILE_IN"
1.18528 ++then
1.18529 ++# Scripts compiled in.
1.18530 ++
1.18531 ++# sed commands to quote an ld script as a C string.
1.18532 ++sc="-f stringify.sed"
1.18533 ++
1.18534 ++cat >>e${EMULATION_NAME}.c <<EOF
1.18535 ++ *isfile = 0;
1.18536 ++ return
1.18537 ++EOF
1.18538 ++sed $sc ldscripts/${EMULATION_NAME}.xwr >> e${EMULATION_NAME}.c
1.18539 ++echo ';' >> e${EMULATION_NAME}.c
1.18540 ++else
1.18541 ++# Scripts read from the filesystem.
1.18542 ++
1.18543 ++cat >>e${EMULATION_NAME}.c <<EOF
1.18544 ++ *isfile = 1;
1.18545 ++ return "ldscripts/${EMULATION_NAME}.xwr";
1.18546 ++EOF
1.18547 ++fi
1.18548 ++
1.18549 ++cat >>e${EMULATION_NAME}.c <<EOF
1.18550 ++ }
1.18551 ++ return gld${EMULATION_NAME}_get_script (isfile);
1.18552 ++}
1.18553 ++
1.18554 ++
1.18555 ++EOF
1.18556 ++
1.18557 ++# Define some shell vars to insert bits of code into the standard elf
1.18558 ++# parse_args and list_options functions.
1.18559 ++#
1.18560 ++PARSE_AND_LIST_PROLOGUE='
1.18561 ++#define OPTION_DIRECT_DATA 300
1.18562 ++#define OPTION_NO_DIRECT_DATA 301
1.18563 ++#define OPTION_RODATA_WRITABLE 302
1.18564 ++#define OPTION_NO_RODATA_WRITABLE 303
1.18565 ++'
1.18566 ++
1.18567 ++PARSE_AND_LIST_LONGOPTS='
1.18568 ++ { "direct-data", no_argument, NULL, OPTION_DIRECT_DATA },
1.18569 ++ { "no-direct-data", no_argument, NULL, OPTION_NO_DIRECT_DATA },
1.18570 ++ { "rodata-writable", no_argument, NULL, OPTION_RODATA_WRITABLE },
1.18571 ++ { "no-rodata-writable", no_argument, NULL, OPTION_NO_RODATA_WRITABLE },
1.18572 ++'
1.18573 ++
1.18574 ++PARSE_AND_LIST_OPTIONS='
1.18575 ++ fprintf (file, _(" --direct-data\t\tAllow direct data references when optimizing\n"));
1.18576 ++ fprintf (file, _(" --no-direct-data\tDo not allow direct data references when optimizing\n"));
1.18577 ++ fprintf (file, _(" --rodata-writable\tPut read-only data in writable data section\n"));
1.18578 ++ fprintf (file, _(" --no-rodata-writable\tDo not put read-only data in writable data section\n"));
1.18579 ++'
1.18580 ++
1.18581 ++PARSE_AND_LIST_ARGS_CASES='
1.18582 ++ case OPTION_DIRECT_DATA:
1.18583 ++ direct_data_refs = 1;
1.18584 ++ break;
1.18585 ++ case OPTION_NO_DIRECT_DATA:
1.18586 ++ direct_data_refs = 0;
1.18587 ++ break;
1.18588 ++ case OPTION_RODATA_WRITABLE:
1.18589 ++ rodata_writable = 1;
1.18590 ++ break;
1.18591 ++ case OPTION_NO_RODATA_WRITABLE:
1.18592 ++ rodata_writable = 0;
1.18593 ++ break;
1.18594 ++'
1.18595 ++
1.18596 ++# Replace some of the standard ELF functions with our own versions.
1.18597 ++#
1.18598 ++LDEMUL_AFTER_OPEN=avr32_elf_after_open
1.18599 ++LDEMUL_GET_SCRIPT=avr32_elf_get_script
1.18600 +--- a/ld/ld.info
1.18601 ++++ b/ld/ld.info
1.18602 +@@ -4347,6 +4347,8 @@ not listed.
1.18603 +
1.18604 + * ARM:: `ld' and the ARM family
1.18605 +
1.18606 ++* AVR32:: `ld' and AVR32 processors
1.18607 ++
1.18608 + * HPPA ELF32:: `ld' and HPPA 32-bit ELF
1.18609 +
1.18610 + * MMIX:: `ld' and MMIX
1.18611 +@@ -4487,7 +4489,7 @@ PIC. This avoids problems on uClinux ta
1.18612 + used to generate relocatable binaries.
1.18613 +
1.18614 +
1.18615 +-File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: i960, Up: Machine Dependent
1.18616 ++File: ld.info, Node: ARM, Next: AV32, Prev: i960, Up: Machine Dependent
1.18617 +
1.18618 + 4.4 `ld' and the ARM family
1.18619 + ===========================
1.18620 +@@ -4588,7 +4590,31 @@ enumeration values fitted into the small
1.18621 + diagnosed.
1.18622 +
1.18623 +
1.18624 +-File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: ARM, Up: Machine Dependent
1.18625 ++File: ld.info, Node: AVR32, Next: HPPA ELF32, Prev: ARM, Up: Machine Dependent
1.18626 ++
1.18627 ++4.4 `ld' and AVR32 processors
1.18628 ++=============================
1.18629 ++
1.18630 ++`--direct-data'
1.18631 ++
1.18632 ++`--no-direct-data'
1.18633 ++ Taking the address of a symbol can often be done by using a direct
1.18634 ++ `mov' or pc-relative `sub' instruction, which is faster than using
1.18635 ++ a PC- or GOT-relative load, especially on the uC3 processors.
1.18636 ++ However, this does not always work when dealing with symbols in
1.18637 ++ the `.data' section so this optimization is disabled by default.
1.18638 ++
1.18639 ++ Specifying `--direct-data' will enable this optimization. Note
1.18640 ++ that this may cause `relocation truncated to fit' errors for
1.18641 ++ certain large programs. If this happens, the optimization can be
1.18642 ++ turned off by specifying `--no-direct-data'.
1.18643 ++
1.18644 ++ All known issues with direct data optimizations are detected at
1.18645 ++ link time, so if the linker doesn't complain, the result should
1.18646 ++ run just fine.
1.18647 ++
1.18648 ++
1.18649 ++File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: AVR32, Up: Machine Dependent
1.18650 +
1.18651 + 4.5 `ld' and HPPA 32-bit ELF Support
1.18652 + ====================================
1.18653 +@@ -6336,6 +6362,7 @@ LD Index
1.18654 + * --no-check-sections: Options. (line 765)
1.18655 + * --no-define-common: Options. (line 787)
1.18656 + * --no-demangle: Options. (line 816)
1.18657 ++* --no-direct-data: AVR32. (line 6)
1.18658 + * --no-dotsyms: PowerPC64 ELF64. (line 33)
1.18659 + * --no-enum-size-warning: ARM. (line 94)
1.18660 + * --no-gc-sections: Options. (line 848)
1.18661 +@@ -6534,6 +6561,7 @@ LD Index
1.18662 + * AT(LMA): Output Section LMA. (line 6)
1.18663 + * AT>LMA_REGION: Output Section LMA. (line 6)
1.18664 + * automatic data imports: WIN32. (line 170)
1.18665 ++* AVR32 options: AVR32. (line 6)
1.18666 + * back end: BFD. (line 6)
1.18667 + * BASE (MRI): MRI. (line 54)
1.18668 + * BE8: ARM. (line 23)
1.18669 +@@ -7018,6 +7046,7 @@ Node: H8/300183897
1.18670 + Node: i960185522
1.18671 + Node: M68HC11/68HC12187207
1.18672 + Node: ARM188910
1.18673 ++Node: AVR32182578
1.18674 + Node: HPPA ELF32193760
1.18675 + Node: MMIX195383
1.18676 + Node: MSP430196600
1.18677 +--- a/ld/ld.texinfo
1.18678 ++++ b/ld/ld.texinfo
1.18679 +@@ -21,6 +21,7 @@
1.18680 + @set UsesEnvVars
1.18681 + @set GENERIC
1.18682 + @set ARM
1.18683 ++@set AVR32
1.18684 + @set H8300
1.18685 + @set HPPA
1.18686 + @set I960
1.18687 +@@ -139,6 +140,9 @@ section entitled ``GNU Free Documentatio
1.18688 + @ifset ARM
1.18689 + * ARM:: ld and the ARM family
1.18690 + @end ifset
1.18691 ++@ifset AVR32
1.18692 ++* AVR32:: ld and AVR32 processors
1.18693 ++@end ifset
1.18694 + @ifset HPPA
1.18695 + * HPPA ELF32:: ld and HPPA 32-bit ELF
1.18696 + @end ifset
1.18697 +@@ -5248,6 +5252,9 @@ functionality are not listed.
1.18698 + @ifset ARM
1.18699 + * ARM:: @command{ld} and the ARM family
1.18700 + @end ifset
1.18701 ++@ifset AVR32
1.18702 ++* AVR32:: @command{ld} and AVR32 processors
1.18703 ++@end ifset
1.18704 + @ifset HPPA
1.18705 + * HPPA ELF32:: @command{ld} and HPPA 32-bit ELF
1.18706 + @end ifset
1.18707 +@@ -5589,6 +5596,52 @@ not be diagnosed.
1.18708 + @end ifclear
1.18709 + @end ifset
1.18710 +
1.18711 ++@ifset AVR32
1.18712 ++@ifclear GENERIC
1.18713 ++@raisesections
1.18714 ++@end ifclear
1.18715 ++
1.18716 ++@node AVR32
1.18717 ++@section @command{ld} and AVR32 processors
1.18718 ++@cindex AVR32 options
1.18719 ++@table @option
1.18720 ++@kindex --direct-data
1.18721 ++@kindex --no-direct-data
1.18722 ++@item --direct-data
1.18723 ++@item --no-direct-data
1.18724 ++Taking the address of a symbol can often be done by using a direct
1.18725 ++@code{mov} or pc-relative @code{sub} instruction, which is faster than
1.18726 ++using a PC- or GOT-relative load, especially on the uC3
1.18727 ++processors. However, this does not always work when dealing with
1.18728 ++symbols in the @code{.data} section so this optimization is disabled
1.18729 ++by default.
1.18730 ++
1.18731 ++Specifying @option{--direct-data} will enable this optimization. Note
1.18732 ++that this may cause @samp{relocation truncated to fit} errors for
1.18733 ++certain large programs. If this happens, the optimization can be
1.18734 ++turned off by specifying @option{--no-direct-data}.
1.18735 ++
1.18736 ++All known issues with direct data optimizations are detected at link
1.18737 ++time, so if the linker doesn't complain, the result should run just
1.18738 ++fine.
1.18739 ++
1.18740 ++@kindex --rodata-writable
1.18741 ++@kindex --no-rodata-writable
1.18742 ++@item --rodata-writable
1.18743 ++@item --no-rodata-writable
1.18744 ++Using the @option{--rodata-writable} options will cause the linker
1.18745 ++to try and use a linker script where read-only data will be placed
1.18746 ++in the same section as writable data. This can give great performance
1.18747 ++gain on cacheless processors where read-only data normally is placed in
1.18748 ++flash, and writable data is placed in internal sram. This will however
1.18749 ++come at the expence of a larger memory footprint.
1.18750 ++@end table
1.18751 ++
1.18752 ++@ifclear GENERIC
1.18753 ++@lowersections
1.18754 ++@end ifclear
1.18755 ++@end ifset
1.18756 ++
1.18757 + @ifset HPPA
1.18758 + @ifclear GENERIC
1.18759 + @raisesections
1.18760 +--- a/ld/Makefile.am
1.18761 ++++ b/ld/Makefile.am
1.18762 +@@ -137,7 +137,34 @@ ALL_EMULATIONS = \
1.18763 + eavr3.o \
1.18764 + eavr4.o \
1.18765 + eavr5.o \
1.18766 +- eavr6.o \
1.18767 ++ eavr6.o \
1.18768 ++ eavr32elf_ap7000.o \
1.18769 ++ eavr32elf_ap7001.o \
1.18770 ++ eavr32elf_ap7002.o \
1.18771 ++ eavr32elf_ap7200.o \
1.18772 ++ eavr32elf_uc3a0128.o \
1.18773 ++ eavr32elf_uc3a0256.o \
1.18774 ++ eavr32elf_uc3a0512.o \
1.18775 ++ eavr32elf_uc3a0512es.o \
1.18776 ++ eavr32elf_uc3a1128.o \
1.18777 ++ eavr32elf_uc3a1256.o \
1.18778 ++ eavr32elf_uc3a1512es.o \
1.18779 ++ eavr32elf_uc3a1512.o \
1.18780 ++ eavr32elf_uc3a364.o \
1.18781 ++ eavr32elf_uc3a364s.o \
1.18782 ++ eavr32elf_uc3a3128.o \
1.18783 ++ eavr32elf_uc3a3128s.o \
1.18784 ++ eavr32elf_uc3a3256.o \
1.18785 ++ eavr32elf_uc3a3256s.o \
1.18786 ++ eavr32elf_uc3b064.o \
1.18787 ++ eavr32elf_uc3b0128.o \
1.18788 ++ eavr32elf_uc3b0256es.o \
1.18789 ++ eavr32elf_uc3b0256.o \
1.18790 ++ eavr32elf_uc3b164.o \
1.18791 ++ eavr32elf_uc3b1128.o \
1.18792 ++ eavr32elf_uc3b1256es.o \
1.18793 ++ eavr32elf_uc3b1256.o \
1.18794 ++ eavr32linux.o \
1.18795 + ecoff_i860.o \
1.18796 + ecoff_sparc.o \
1.18797 + eelf32_spu.o \
1.18798 +@@ -622,6 +649,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
1.18799 + $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
1.18800 + ${GEN_DEPENDS}
1.18801 + ${GENSCRIPTS} avr6 "$(tdir_avr2)"
1.18802 ++eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
1.18803 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18804 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18805 ++ ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
1.18806 ++eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
1.18807 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18808 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18809 ++ ${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
1.18810 ++eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
1.18811 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18812 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18813 ++ ${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
1.18814 ++eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
1.18815 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18816 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18817 ++ ${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
1.18818 ++eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
1.18819 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18820 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18821 ++ ${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
1.18822 ++eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
1.18823 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18824 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18825 ++ ${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
1.18826 ++eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
1.18827 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18828 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18829 ++ ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
1.18830 ++eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
1.18831 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18832 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18833 ++ ${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
1.18834 ++eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
1.18835 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18836 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18837 ++ ${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
1.18838 ++eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
1.18839 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18840 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18841 ++ ${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
1.18842 ++eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
1.18843 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18844 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18845 ++ ${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
1.18846 ++eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
1.18847 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18848 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18849 ++ ${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
1.18850 ++eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
1.18851 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18852 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18853 ++ ${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
1.18854 ++eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
1.18855 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18856 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18857 ++ ${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
1.18858 ++eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
1.18859 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18860 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18861 ++ ${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
1.18862 ++eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
1.18863 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18864 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18865 ++ ${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
1.18866 ++eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
1.18867 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18868 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18869 ++ ${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
1.18870 ++eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
1.18871 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18872 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18873 ++ ${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
1.18874 ++eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
1.18875 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18876 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18877 ++ ${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
1.18878 ++eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
1.18879 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18880 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18881 ++ ${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
1.18882 ++eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
1.18883 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18884 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18885 ++ ${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
1.18886 ++eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
1.18887 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18888 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18889 ++ ${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
1.18890 ++eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
1.18891 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18892 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18893 ++ ${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
1.18894 ++eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
1.18895 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18896 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18897 ++ ${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
1.18898 ++eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
1.18899 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18900 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18901 ++ ${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
1.18902 ++eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
1.18903 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18904 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.18905 ++ ${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
1.18906 ++eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
1.18907 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.18908 ++ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
1.18909 ++ ${GENSCRIPTS} avr32linux "$(tdir_avr32)"
1.18910 + ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
1.18911 + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
1.18912 + ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
1.18913 +@@ -1877,7 +2012,9 @@ install-exec-local: ld-new$(EXEEXT)
1.18914 + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
1.18915 + fi
1.18916 +
1.18917 +-install-data-local:
1.18918 ++# We want install to imply install-info as per GNU standards, despite the
1.18919 ++# cygnus option.
1.18920 ++install-data-local: install-info
1.18921 + $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
1.18922 + for f in ldscripts/*; do \
1.18923 + $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
1.18924 +--- /dev/null
1.18925 ++++ b/ld/scripttempl/elf_xip.sc
1.18926 +@@ -0,0 +1,456 @@
1.18927 ++#
1.18928 ++# Unusual variables checked by this code:
1.18929 ++# NOP - four byte opcode for no-op (defaults to 0)
1.18930 ++# NO_SMALL_DATA - no .sbss/.sbss2/.sdata/.sdata2 sections if not
1.18931 ++# empty.
1.18932 ++# SMALL_DATA_CTOR - .ctors contains small data.
1.18933 ++# SMALL_DATA_DTOR - .dtors contains small data.
1.18934 ++# DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
1.18935 ++# INITIAL_READONLY_SECTIONS - at start of text segment
1.18936 ++# OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
1.18937 ++# (e.g., .PARISC.milli)
1.18938 ++# OTHER_TEXT_SECTIONS - these get put in .text when relocating
1.18939 ++# OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
1.18940 ++# (e.g., .PARISC.global)
1.18941 ++# OTHER_RELRO_SECTIONS - other than .data.rel.ro ...
1.18942 ++# (e.g. PPC32 .fixup, .got[12])
1.18943 ++# OTHER_BSS_SECTIONS - other than .bss .sbss ...
1.18944 ++# OTHER_SECTIONS - at the end
1.18945 ++# EXECUTABLE_SYMBOLS - symbols that must be defined for an
1.18946 ++# executable (e.g., _DYNAMIC_LINK)
1.18947 ++# TEXT_START_ADDR - the first byte of the text segment, after any
1.18948 ++# headers.
1.18949 ++# TEXT_BASE_ADDRESS - the first byte of the text segment.
1.18950 ++# TEXT_START_SYMBOLS - symbols that appear at the start of the
1.18951 ++# .text section.
1.18952 ++# DATA_START_SYMBOLS - symbols that appear at the start of the
1.18953 ++# .data section.
1.18954 ++# OTHER_GOT_SYMBOLS - symbols defined just before .got.
1.18955 ++# OTHER_GOT_SECTIONS - sections just after .got.
1.18956 ++# OTHER_SDATA_SECTIONS - sections just after .sdata.
1.18957 ++# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
1.18958 ++# .bss section besides __bss_start.
1.18959 ++# DATA_PLT - .plt should be in data segment, not text segment.
1.18960 ++# PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement.
1.18961 ++# BSS_PLT - .plt should be in bss segment
1.18962 ++# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
1.18963 ++# EMBEDDED - whether this is for an embedded system.
1.18964 ++# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
1.18965 ++# start address of shared library.
1.18966 ++# INPUT_FILES - INPUT command of files to always include
1.18967 ++# WRITABLE_RODATA - if set, the .rodata section should be writable
1.18968 ++# INIT_START, INIT_END - statements just before and just after
1.18969 ++# combination of .init sections.
1.18970 ++# FINI_START, FINI_END - statements just before and just after
1.18971 ++# combination of .fini sections.
1.18972 ++# STACK_ADDR - start of a .stack section.
1.18973 ++# OTHER_END_SYMBOLS - symbols to place right at the end of the script.
1.18974 ++# SEPARATE_GOTPLT - if set, .got.plt should be separate output section,
1.18975 ++# so that .got can be in the RELRO area. It should be set to
1.18976 ++# the number of bytes in the beginning of .got.plt which can be
1.18977 ++# in the RELRO area as well.
1.18978 ++#
1.18979 ++# When adding sections, do note that the names of some sections are used
1.18980 ++# when specifying the start address of the next.
1.18981 ++#
1.18982 ++
1.18983 ++# Many sections come in three flavours. There is the 'real' section,
1.18984 ++# like ".data". Then there are the per-procedure or per-variable
1.18985 ++# sections, generated by -ffunction-sections and -fdata-sections in GCC,
1.18986 ++# and useful for --gc-sections, which for a variable "foo" might be
1.18987 ++# ".data.foo". Then there are the linkonce sections, for which the linker
1.18988 ++# eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
1.18989 ++# The exact correspondences are:
1.18990 ++#
1.18991 ++# Section Linkonce section
1.18992 ++# .text .gnu.linkonce.t.foo
1.18993 ++# .rodata .gnu.linkonce.r.foo
1.18994 ++# .data .gnu.linkonce.d.foo
1.18995 ++# .bss .gnu.linkonce.b.foo
1.18996 ++# .sdata .gnu.linkonce.s.foo
1.18997 ++# .sbss .gnu.linkonce.sb.foo
1.18998 ++# .sdata2 .gnu.linkonce.s2.foo
1.18999 ++# .sbss2 .gnu.linkonce.sb2.foo
1.19000 ++# .debug_info .gnu.linkonce.wi.foo
1.19001 ++# .tdata .gnu.linkonce.td.foo
1.19002 ++# .tbss .gnu.linkonce.tb.foo
1.19003 ++#
1.19004 ++# Each of these can also have corresponding .rel.* and .rela.* sections.
1.19005 ++
1.19006 ++test -z "$ENTRY" && ENTRY=_start
1.19007 ++test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
1.19008 ++test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
1.19009 ++if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
1.19010 ++test -z "${ELFSIZE}" && ELFSIZE=32
1.19011 ++test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
1.19012 ++test "$LD_FLAG" = "N" && DATA_ADDR=.
1.19013 ++test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
1.19014 ++test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
1.19015 ++test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
1.19016 ++if test -n "$RELOCATING"; then
1.19017 ++ RO_REGION="${RO_VMA_REGION+ >}${RO_VMA_REGION}${RO_LMA_REGION+ AT>}${RO_LMA_REGION}"
1.19018 ++ RW_REGION="${RW_VMA_REGION+ >}${RW_VMA_REGION}${RW_LMA_REGION+ AT>}${RW_LMA_REGION}"
1.19019 ++else
1.19020 ++ RO_REGION=""
1.19021 ++ RW_REGION=""
1.19022 ++fi
1.19023 ++INTERP=".interp ${RELOCATING-0} : { *(.interp) }${RO_REGION}"
1.19024 ++PLT=".plt ${RELOCATING-0} : { *(.plt) }"
1.19025 ++if test -z "$GOT"; then
1.19026 ++ if test -z "$SEPARATE_GOTPLT"; then
1.19027 ++ GOT=".got ${RELOCATING-0} : { *(.got.plt) *(.got) }"
1.19028 ++ else
1.19029 ++ GOT=".got ${RELOCATING-0} : { *(.got) }"
1.19030 ++ GOTPLT="${RELOCATING+${DATA_SEGMENT_RELRO_GOTPLT_END}}
1.19031 ++ .got.plt ${RELOCATING-0} : { *(.got.plt) }"
1.19032 ++ fi
1.19033 ++fi
1.19034 ++DALIGN=".dalign : { . = ALIGN(${DATA_SEGMENT_ALIGN}); PROVIDE(_data_lma = .); }${RO_REGION}"
1.19035 ++BALIGN=".balign : { . = ALIGN(${BSS_ALIGNMENT}); _edata = .; }${RW_REGION}"
1.19036 ++DYNAMIC=".dynamic ${RELOCATING-0} : { *(.dynamic) }"
1.19037 ++RODATA=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
1.19038 ++DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }${RW_REGION}"
1.19039 ++STACKNOTE="/DISCARD/ : { *(.note.GNU-stack) }"
1.19040 ++if test -z "${NO_SMALL_DATA}"; then
1.19041 ++ SBSS=".sbss ${RELOCATING-0} :
1.19042 ++ {
1.19043 ++ ${RELOCATING+PROVIDE (__sbss_start = .);}
1.19044 ++ ${RELOCATING+PROVIDE (___sbss_start = .);}
1.19045 ++ ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)}
1.19046 ++ *(.dynsbss)
1.19047 ++ *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
1.19048 ++ *(.scommon)
1.19049 ++ ${RELOCATING+PROVIDE (__sbss_end = .);}
1.19050 ++ ${RELOCATING+PROVIDE (___sbss_end = .);}
1.19051 ++ }${RW_REGION}"
1.19052 ++ SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }${RW_REGION}"
1.19053 ++ SDATA="/* We want the small data sections together, so single-instruction offsets
1.19054 ++ can access them all, and initialized data all before uninitialized, so
1.19055 ++ we can shorten the on-disk segment size. */
1.19056 ++ .sdata ${RELOCATING-0} :
1.19057 ++ {
1.19058 ++ ${RELOCATING+${SDATA_START_SYMBOLS}}
1.19059 ++ ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
1.19060 ++ *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
1.19061 ++ }${RW_REGION}"
1.19062 ++ SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }${RW_REGION}"
1.19063 ++ REL_SDATA=".rel.sdata ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }${RO_REGION}
1.19064 ++ .rela.sdata ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
1.19065 ++ REL_SBSS=".rel.sbss ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }${RO_REGION}
1.19066 ++ .rela.sbss ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }${RO_REGION}"
1.19067 ++ REL_SDATA2=".rel.sdata2 ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }${RO_REGION}
1.19068 ++ .rela.sdata2 ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }${RO_REGION}"
1.19069 ++ REL_SBSS2=".rel.sbss2 ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }${RO_REGION}
1.19070 ++ .rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }${RO_REGION}"
1.19071 ++else
1.19072 ++ NO_SMALL_DATA=" "
1.19073 ++fi
1.19074 ++test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
1.19075 ++CTOR=".ctors ${CONSTRUCTING-0} :
1.19076 ++ {
1.19077 ++ ${CONSTRUCTING+${CTOR_START}}
1.19078 ++ /* gcc uses crtbegin.o to find the start of
1.19079 ++ the constructors, so we make sure it is
1.19080 ++ first. Because this is a wildcard, it
1.19081 ++ doesn't matter if the user does not
1.19082 ++ actually link against crtbegin.o; the
1.19083 ++ linker won't look for a file to match a
1.19084 ++ wildcard. The wildcard also means that it
1.19085 ++ doesn't matter which directory crtbegin.o
1.19086 ++ is in. */
1.19087 ++
1.19088 ++ KEEP (*crtbegin*.o(.ctors))
1.19089 ++
1.19090 ++ /* We don't want to include the .ctor section from
1.19091 ++ from the crtend.o file until after the sorted ctors.
1.19092 ++ The .ctor section from the crtend file contains the
1.19093 ++ end of ctors marker and it must be last */
1.19094 ++
1.19095 ++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
1.19096 ++ KEEP (*(SORT(.ctors.*)))
1.19097 ++ KEEP (*(.ctors))
1.19098 ++ ${CONSTRUCTING+${CTOR_END}}
1.19099 ++ }"
1.19100 ++DTOR=".dtors ${CONSTRUCTING-0} :
1.19101 ++ {
1.19102 ++ ${CONSTRUCTING+${DTOR_START}}
1.19103 ++ KEEP (*crtbegin*.o(.dtors))
1.19104 ++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
1.19105 ++ KEEP (*(SORT(.dtors.*)))
1.19106 ++ KEEP (*(.dtors))
1.19107 ++ ${CONSTRUCTING+${DTOR_END}}
1.19108 ++ }"
1.19109 ++STACK=".stack ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
1.19110 ++ {
1.19111 ++ ${RELOCATING+_stack = .;}
1.19112 ++ *(.stack)
1.19113 ++ ${RELOCATING+${STACK_SIZE+. = ${STACK_SIZE};}}
1.19114 ++ ${RELOCATING+_estack = .;}
1.19115 ++ }${RW_REGION}"
1.19116 ++
1.19117 ++# if this is for an embedded system, don't add SIZEOF_HEADERS.
1.19118 ++if [ -z "$EMBEDDED" ]; then
1.19119 ++ test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
1.19120 ++else
1.19121 ++ test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
1.19122 ++fi
1.19123 ++
1.19124 ++cat <<EOF
1.19125 ++OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
1.19126 ++ "${LITTLE_OUTPUT_FORMAT}")
1.19127 ++OUTPUT_ARCH(${OUTPUT_ARCH})
1.19128 ++ENTRY(${ENTRY})
1.19129 ++
1.19130 ++${RELOCATING+${LIB_SEARCH_DIRS}}
1.19131 ++${RELOCATING+/* Do we need any of these for elf?
1.19132 ++ __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */}
1.19133 ++${RELOCATING+${EXECUTABLE_SYMBOLS}}
1.19134 ++${RELOCATING+${INPUT_FILES}}
1.19135 ++${RELOCATING- /* For some reason, the Solaris linker makes bad executables
1.19136 ++ if gld -r is used and the intermediate file has sections starting
1.19137 ++ at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld
1.19138 ++ bug. But for now assigning the zero vmas works. */}
1.19139 ++
1.19140 ++${RELOCATING+${MEMORY}}
1.19141 ++
1.19142 ++SECTIONS
1.19143 ++{
1.19144 ++ /* Read-only sections, merged into text segment: */
1.19145 ++ ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}
1.19146 ++ ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
1.19147 ++ ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
1.19148 ++ ${CREATE_SHLIB-${INTERP}}
1.19149 ++ ${INITIAL_READONLY_SECTIONS}
1.19150 ++ ${TEXT_DYNAMIC+${DYNAMIC}${RO_REGION}}
1.19151 ++ .hash ${RELOCATING-0} : { *(.hash) }${RO_REGION}
1.19152 ++ .dynsym ${RELOCATING-0} : { *(.dynsym) }${RO_REGION}
1.19153 ++ .dynstr ${RELOCATING-0} : { *(.dynstr) }${RO_REGION}
1.19154 ++ .gnu.version ${RELOCATING-0} : { *(.gnu.version) }${RO_REGION}
1.19155 ++ .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }${RO_REGION}
1.19156 ++ .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }${RO_REGION}
1.19157 ++
1.19158 ++EOF
1.19159 ++if [ "x$COMBRELOC" = x ]; then
1.19160 ++ COMBRELOCCAT=cat
1.19161 ++else
1.19162 ++ COMBRELOCCAT="cat > $COMBRELOC"
1.19163 ++fi
1.19164 ++eval $COMBRELOCCAT <<EOF
1.19165 ++ .rel.init ${RELOCATING-0} : { *(.rel.init) }${RO_REGION}
1.19166 ++ .rela.init ${RELOCATING-0} : { *(.rela.init) }${RO_REGION}
1.19167 ++ .rel.text ${RELOCATING-0} : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }${RO_REGION}
1.19168 ++ .rela.text ${RELOCATING-0} : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }${RO_REGION}
1.19169 ++ .rel.fini ${RELOCATING-0} : { *(.rel.fini) }${RO_REGION}
1.19170 ++ .rela.fini ${RELOCATING-0} : { *(.rela.fini) }${RO_REGION}
1.19171 ++ .rel.rodata ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }${RO_REGION}
1.19172 ++ .rela.rodata ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }${RO_REGION}
1.19173 ++ ${OTHER_READONLY_RELOC_SECTIONS}
1.19174 ++ .rel.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
1.19175 ++ .rela.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
1.19176 ++ .rel.data ${RELOCATING-0} : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }${RO_REGION}
1.19177 ++ .rela.data ${RELOCATING-0} : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }${RO_REGION}
1.19178 ++ .rel.tdata ${RELOCATING-0} : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }${RO_REGION}
1.19179 ++ .rela.tdata ${RELOCATING-0} : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }${RO_REGION}
1.19180 ++ .rel.tbss ${RELOCATING-0} : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }${RO_REGION}
1.19181 ++ .rela.tbss ${RELOCATING-0} : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }${RO_REGION}
1.19182 ++ .rel.ctors ${RELOCATING-0} : { *(.rel.ctors) }${RO_REGION}
1.19183 ++ .rela.ctors ${RELOCATING-0} : { *(.rela.ctors) }${RO_REGION}
1.19184 ++ .rel.dtors ${RELOCATING-0} : { *(.rel.dtors) }${RO_REGION}
1.19185 ++ .rela.dtors ${RELOCATING-0} : { *(.rela.dtors) }${RO_REGION}
1.19186 ++ .rel.got ${RELOCATING-0} : { *(.rel.got) }${RO_REGION}
1.19187 ++ .rela.got ${RELOCATING-0} : { *(.rela.got) }${RO_REGION}
1.19188 ++ ${OTHER_GOT_RELOC_SECTIONS}
1.19189 ++ ${REL_SDATA}
1.19190 ++ ${REL_SBSS}
1.19191 ++ ${REL_SDATA2}
1.19192 ++ ${REL_SBSS2}
1.19193 ++ .rel.bss ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }${RO_REGION}
1.19194 ++ .rela.bss ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }${RO_REGION}
1.19195 ++EOF
1.19196 ++if [ -n "$COMBRELOC" ]; then
1.19197 ++cat <<EOF
1.19198 ++ .rel.dyn ${RELOCATING-0} :
1.19199 ++ {
1.19200 ++EOF
1.19201 ++sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
1.19202 ++cat <<EOF
1.19203 ++ }${RO_REGION}
1.19204 ++ .rela.dyn ${RELOCATING-0} :
1.19205 ++ {
1.19206 ++EOF
1.19207 ++sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
1.19208 ++cat <<EOF
1.19209 ++ }${RO_REGION}
1.19210 ++EOF
1.19211 ++fi
1.19212 ++cat <<EOF
1.19213 ++ .rel.plt ${RELOCATING-0} : { *(.rel.plt) }${RO_REGION}
1.19214 ++ .rela.plt ${RELOCATING-0} : { *(.rela.plt) }${RO_REGION}
1.19215 ++ ${OTHER_PLT_RELOC_SECTIONS}
1.19216 ++
1.19217 ++ .init ${RELOCATING-0} :
1.19218 ++ {
1.19219 ++ ${RELOCATING+${INIT_START}}
1.19220 ++ KEEP (*(.init))
1.19221 ++ ${RELOCATING+${INIT_END}}
1.19222 ++ }${RO_REGION} =${NOP-0}
1.19223 ++
1.19224 ++ ${DATA_PLT-${BSS_PLT-${PLT}${RO_REGION}}}
1.19225 ++ .text ${RELOCATING-0} :
1.19226 ++ {
1.19227 ++ ${RELOCATING+${TEXT_START_SYMBOLS}}
1.19228 ++ *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
1.19229 ++ KEEP (*(.text.*personality*))
1.19230 ++ /* .gnu.warning sections are handled specially by elf32.em. */
1.19231 ++ *(.gnu.warning)
1.19232 ++ ${RELOCATING+${OTHER_TEXT_SECTIONS}}
1.19233 ++ }${RO_REGION} =${NOP-0}
1.19234 ++ .fini ${RELOCATING-0} :
1.19235 ++ {
1.19236 ++ ${RELOCATING+${FINI_START}}
1.19237 ++ KEEP (*(.fini))
1.19238 ++ ${RELOCATING+${FINI_END}}
1.19239 ++ }${RO_REGION} =${NOP-0}
1.19240 ++ ${RELOCATING+PROVIDE (__etext = .);}
1.19241 ++ ${RELOCATING+PROVIDE (_etext = .);}
1.19242 ++ ${RELOCATING+PROVIDE (etext = .);}
1.19243 ++ ${WRITABLE_RODATA-${RODATA}${RO_REGION}}
1.19244 ++ .rodata1 ${RELOCATING-0} : { *(.rodata1) }${RO_REGION}
1.19245 ++ ${CREATE_SHLIB-${SDATA2}}
1.19246 ++ ${CREATE_SHLIB-${SBSS2}}
1.19247 ++ ${OTHER_READONLY_SECTIONS}
1.19248 ++ .eh_frame_hdr : { *(.eh_frame_hdr) }${RO_REGION}
1.19249 ++ .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }${RO_REGION}
1.19250 ++ .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RO_REGION}
1.19251 ++
1.19252 ++ ${RELOCATING+${DALIGN}}
1.19253 ++ ${RELOCATING+PROVIDE (_data = ORIGIN(${RW_VMA_REGION}));}
1.19254 ++ . = ORIGIN(${RW_VMA_REGION});
1.19255 ++ /* Exception handling */
1.19256 ++ .eh_frame ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }${RW_REGION}
1.19257 ++ .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RW_REGION}
1.19258 ++
1.19259 ++ /* Thread Local Storage sections */
1.19260 ++ .tdata ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }${RW_REGION}
1.19261 ++ .tbss ${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }${RW_REGION}
1.19262 ++
1.19263 ++ /* Ensure the __preinit_array_start label is properly aligned. We
1.19264 ++ could instead move the label definition inside the section, but
1.19265 ++ the linker would then create the section even if it turns out to
1.19266 ++ be empty, which isn't pretty. */
1.19267 ++ ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_start = ALIGN(${ALIGNMENT}));}}
1.19268 ++ .preinit_array ${RELOCATING-0} : { KEEP (*(.preinit_array)) }${RW_REGION}
1.19269 ++ ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_end = .);}}
1.19270 ++
1.19271 ++ ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_start = .);}}
1.19272 ++ .init_array ${RELOCATING-0} : { KEEP (*(.init_array)) }${RW_REGION}
1.19273 ++ ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_end = .);}}
1.19274 ++
1.19275 ++ ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_start = .);}}
1.19276 ++ .fini_array ${RELOCATING-0} : { KEEP (*(.fini_array)) }${RW_REGION}
1.19277 ++ ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_end = .);}}
1.19278 ++
1.19279 ++ ${SMALL_DATA_CTOR-${RELOCATING+${CTOR}${RW_REGION}}}
1.19280 ++ ${SMALL_DATA_DTOR-${RELOCATING+${DTOR}${RW_REGION}}}
1.19281 ++ .jcr ${RELOCATING-0} : { KEEP (*(.jcr)) }${RW_REGION}
1.19282 ++
1.19283 ++ ${RELOCATING+${DATARELRO}}
1.19284 ++ ${OTHER_RELRO_SECTIONS}
1.19285 ++ ${TEXT_DYNAMIC-${DYNAMIC}${RW_REGION}}
1.19286 ++ ${NO_SMALL_DATA+${RELRO_NOW+${GOT}${RW_REGION}}}
1.19287 ++ ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOT}${RW_REGION}}}}
1.19288 ++ ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOTPLT}${RW_REGION}}}}
1.19289 ++ ${RELOCATING+${DATA_SEGMENT_RELRO_END}}
1.19290 ++ ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT-${GOT}${RW_REGION}}}}
1.19291 ++
1.19292 ++ ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}${RW_REGION}}}
1.19293 ++
1.19294 ++ .data ${RELOCATING-0} :
1.19295 ++ {
1.19296 ++ ${RELOCATING+${DATA_START_SYMBOLS}}
1.19297 ++ *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
1.19298 ++ KEEP (*(.gnu.linkonce.d.*personality*))
1.19299 ++ ${CONSTRUCTING+SORT(CONSTRUCTORS)}
1.19300 ++ }${RW_REGION}
1.19301 ++ .data1 ${RELOCATING-0} : { *(.data1) }${RW_REGION}
1.19302 ++ ${WRITABLE_RODATA+${RODATA}${RW_REGION}}
1.19303 ++ ${OTHER_READWRITE_SECTIONS}
1.19304 ++ ${SMALL_DATA_CTOR+${RELOCATING+${CTOR}${RW_REGION}}}
1.19305 ++ ${SMALL_DATA_DTOR+${RELOCATING+${DTOR}${RW_REGION}}}
1.19306 ++ ${DATA_PLT+${PLT_BEFORE_GOT+${PLT}${RW_REGION}}}
1.19307 ++ ${RELOCATING+${OTHER_GOT_SYMBOLS}}
1.19308 ++ ${NO_SMALL_DATA-${GOT}${RW_REGION}}
1.19309 ++ ${OTHER_GOT_SECTIONS}
1.19310 ++ ${SDATA}
1.19311 ++ ${OTHER_SDATA_SECTIONS}
1.19312 ++ ${RELOCATING+${BALIGN}}
1.19313 ++ ${RELOCATING+_edata = .;}
1.19314 ++ ${RELOCATING+PROVIDE (edata = .);}
1.19315 ++ ${RELOCATING+__bss_start = .;}
1.19316 ++ ${RELOCATING+${OTHER_BSS_SYMBOLS}}
1.19317 ++ ${SBSS}
1.19318 ++ ${BSS_PLT+${PLT}${RW_REGION}}
1.19319 ++ .bss ${RELOCATING-0} :
1.19320 ++ {
1.19321 ++ *(.dynbss)
1.19322 ++ *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
1.19323 ++ *(COMMON)
1.19324 ++ /* Align here to ensure that the .bss section occupies space up to
1.19325 ++ _end. Align after .bss to ensure correct alignment even if the
1.19326 ++ .bss section disappears because there are no input sections. */
1.19327 ++ ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
1.19328 ++ }${RW_REGION}
1.19329 ++ ${OTHER_BSS_SECTIONS}
1.19330 ++ ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
1.19331 ++ ${RELOCATING+_end = .;}
1.19332 ++ ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
1.19333 ++ ${RELOCATING+PROVIDE (end = .);}
1.19334 ++ ${RELOCATING+${DATA_SEGMENT_END}}
1.19335 ++
1.19336 ++ /* Stabs debugging sections. */
1.19337 ++ .stab 0 : { *(.stab) }
1.19338 ++ .stabstr 0 : { *(.stabstr) }
1.19339 ++ .stab.excl 0 : { *(.stab.excl) }
1.19340 ++ .stab.exclstr 0 : { *(.stab.exclstr) }
1.19341 ++ .stab.index 0 : { *(.stab.index) }
1.19342 ++ .stab.indexstr 0 : { *(.stab.indexstr) }
1.19343 ++
1.19344 ++ .comment 0 : { *(.comment) }
1.19345 ++
1.19346 ++ /* DWARF debug sections.
1.19347 ++ Symbols in the DWARF debugging sections are relative to the beginning
1.19348 ++ of the section so we begin them at 0. */
1.19349 ++
1.19350 ++ /* DWARF 1 */
1.19351 ++ .debug 0 : { *(.debug) }
1.19352 ++ .line 0 : { *(.line) }
1.19353 ++
1.19354 ++ /* GNU DWARF 1 extensions */
1.19355 ++ .debug_srcinfo 0 : { *(.debug_srcinfo) }
1.19356 ++ .debug_sfnames 0 : { *(.debug_sfnames) }
1.19357 ++
1.19358 ++ /* DWARF 1.1 and DWARF 2 */
1.19359 ++ .debug_aranges 0 : { *(.debug_aranges) }
1.19360 ++ .debug_pubnames 0 : { *(.debug_pubnames) }
1.19361 ++
1.19362 ++ /* DWARF 2 */
1.19363 ++ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
1.19364 ++ .debug_abbrev 0 : { *(.debug_abbrev) }
1.19365 ++ .debug_line 0 : { *(.debug_line) }
1.19366 ++ .debug_frame 0 : { *(.debug_frame) }
1.19367 ++ .debug_str 0 : { *(.debug_str) }
1.19368 ++ .debug_loc 0 : { *(.debug_loc) }
1.19369 ++ .debug_macinfo 0 : { *(.debug_macinfo) }
1.19370 ++
1.19371 ++ /* SGI/MIPS DWARF 2 extensions */
1.19372 ++ .debug_weaknames 0 : { *(.debug_weaknames) }
1.19373 ++ .debug_funcnames 0 : { *(.debug_funcnames) }
1.19374 ++ .debug_typenames 0 : { *(.debug_typenames) }
1.19375 ++ .debug_varnames 0 : { *(.debug_varnames) }
1.19376 ++
1.19377 ++ ${STACK_ADDR+${STACK}}
1.19378 ++ ${OTHER_SECTIONS}
1.19379 ++ ${RELOCATING+${OTHER_END_SYMBOLS}}
1.19380 ++ ${RELOCATING+${STACKNOTE}}
1.19381 ++}
1.19382 ++EOF
1.19383 +--- /dev/null
1.19384 ++++ b/ld/testsuite/ld-avr32/avr32.exp
1.19385 +@@ -0,0 +1,25 @@
1.19386 ++# Expect script for AVR32 ELF linker tests.
1.19387 ++# Copyright 2004-2006 Atmel Corporation.
1.19388 ++#
1.19389 ++# This file is free software; you can redistribute it and/or modify
1.19390 ++# it under the terms of the GNU General Public License as published by
1.19391 ++# the Free Software Foundation; either version 2 of the License, or
1.19392 ++# (at your option) any later version.
1.19393 ++#
1.19394 ++# This program is distributed in the hope that it will be useful,
1.19395 ++# but WITHOUT ANY WARRANTY; without even the implied warranty of
1.19396 ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.19397 ++# GNU General Public License for more details.
1.19398 ++#
1.19399 ++# You should have received a copy of the GNU General Public License
1.19400 ++# along with this program; if not, write to the Free Software
1.19401 ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1.19402 ++#
1.19403 ++# Written by Haavard Skinnemoen (hskinnemoen@atmel.com)
1.19404 ++#
1.19405 ++
1.19406 ++if ![istarget avr32-*-*] {
1.19407 ++ return
1.19408 ++}
1.19409 ++
1.19410 ++run_dump_test "pcrel"
1.19411 +--- /dev/null
1.19412 ++++ b/ld/testsuite/ld-avr32/pcrel.d
1.19413 +@@ -0,0 +1,74 @@
1.19414 ++#name: AVR32 ELF PC-relative external relocs
1.19415 ++#source: symbols.s
1.19416 ++#source: ../../../gas/testsuite/gas/avr32/pcrel.s
1.19417 ++#ld: -T $srcdir/$subdir/pcrel.ld
1.19418 ++#objdump: -d
1.19419 ++
1.19420 ++.*: file format elf.*avr32.*
1.19421 ++
1.19422 ++Disassembly of section .text:
1.19423 ++
1.19424 ++a0000000 <_start>:
1.19425 ++a0000000: d7 03 nop
1.19426 ++a0000002: d7 03 nop
1.19427 ++
1.19428 ++a0000004 <test_rjmp>:
1.19429 ++a0000004: d7 03 nop
1.19430 ++a0000006: c0 28 rjmp a000000a <test_rjmp\+0x6>
1.19431 ++a0000008: d7 03 nop
1.19432 ++a000000a: e0 8f 01 fb bral a0000400 <extsym10>
1.19433 ++
1.19434 ++a000000e <test_rcall>:
1.19435 ++a000000e: d7 03 nop
1.19436 ++a0000010 <test_rcall2>:
1.19437 ++a0000010: c0 2c rcall a0000014 <test_rcall2\+0x4>
1.19438 ++a0000012: d7 03 nop
1.19439 ++a0000014: ee b0 ff f6 rcall a0200000 <extsym21>
1.19440 ++
1.19441 ++a0000018 <test_branch>:
1.19442 ++a0000018: c0 31 brne a000001e <test_branch\+0x6>
1.19443 ++a000001a: fe 9f ff ff bral a0000018 <test_branch>
1.19444 ++a000001e: ee 90 ff f1 breq a0200000 <extsym21>
1.19445 ++
1.19446 ++a0000022 <test_lddpc>:
1.19447 ++a0000022: 48 30 lddpc r0,a000002c <sym1>
1.19448 ++a0000024: 48 20 lddpc r0,a000002c <sym1>
1.19449 ++a0000026: fe f0 7f da ld.w r0,pc\[32730\]
1.19450 ++ ...
1.19451 ++
1.19452 ++a000002c <sym1>:
1.19453 ++a000002c: d7 03 nop
1.19454 ++a000002e: d7 03 nop
1.19455 ++
1.19456 ++a0000030 <test_local>:
1.19457 ++a0000030: 48 20 lddpc r0,a0000038 <test_local\+0x8>
1.19458 ++a0000032: 48 30 lddpc r0,a000003c <test_local\+0xc>
1.19459 ++a0000034: 48 20 lddpc r0,a000003c <test_local\+0xc>
1.19460 ++a0000036: 00 00 add r0,r0
1.19461 ++a0000038: d7 03 nop
1.19462 ++a000003a: d7 03 nop
1.19463 ++a000003c: d7 03 nop
1.19464 ++a000003e: d7 03 nop
1.19465 ++
1.19466 ++Disassembly of section \.text\.init:
1.19467 ++a0000040 <test_inter_section>:
1.19468 ++a0000040: fe b0 ff e7 rcall a000000e <test_rcall>
1.19469 ++a0000044: d7 03 nop
1.19470 ++a0000046: fe b0 ff e4 rcall a000000e <test_rcall>
1.19471 ++a000004a: fe b0 ff e3 rcall a0000010 <test_rcall2>
1.19472 ++a000004e: d7 03 nop
1.19473 ++a0000050: fe b0 ff e0 rcall a0000010 <test_rcall2>
1.19474 ++
1.19475 ++Disassembly of section \.text\.pcrel10:
1.19476 ++
1.19477 ++a0000400 <extsym10>:
1.19478 ++a0000400: d7 03 nop
1.19479 ++
1.19480 ++Disassembly of section \.text\.pcrel16:
1.19481 ++
1.19482 ++a0008000 <extsym16>:
1.19483 ++a0008000: d7 03 nop
1.19484 ++
1.19485 ++Disassembly of section \.text\.pcrel21:
1.19486 ++a0200000 <extsym21>:
1.19487 ++a0200000: d7 03 nop
1.19488 +--- /dev/null
1.19489 ++++ b/ld/testsuite/ld-avr32/pcrel.ld
1.19490 +@@ -0,0 +1,23 @@
1.19491 ++ENTRY(_start)
1.19492 ++SECTIONS
1.19493 ++{
1.19494 ++ .text 0xa0000000:
1.19495 ++ {
1.19496 ++ *(.text)
1.19497 ++ }
1.19498 ++
1.19499 ++ .text.pcrel10 0xa0000400:
1.19500 ++ {
1.19501 ++ *(.text.pcrel10)
1.19502 ++ }
1.19503 ++
1.19504 ++ .text.pcrel16 0xa0008000:
1.19505 ++ {
1.19506 ++ *(.text.pcrel16)
1.19507 ++ }
1.19508 ++
1.19509 ++ .text.pcrel21 0xa0200000:
1.19510 ++ {
1.19511 ++ *(.text.pcrel21)
1.19512 ++ }
1.19513 ++}
1.19514 +--- /dev/null
1.19515 ++++ b/ld/testsuite/ld-avr32/symbols.s
1.19516 +@@ -0,0 +1,20 @@
1.19517 ++ .text
1.19518 ++ .global _start
1.19519 ++_start:
1.19520 ++ nop
1.19521 ++ nop
1.19522 ++
1.19523 ++ .section .text.pcrel10,"ax"
1.19524 ++ .global extsym10
1.19525 ++extsym10:
1.19526 ++ nop
1.19527 ++
1.19528 ++ .section .text.pcrel16,"ax"
1.19529 ++ .global extsym16
1.19530 ++extsym16:
1.19531 ++ nop
1.19532 ++
1.19533 ++ .section .text.pcrel21,"ax"
1.19534 ++ .global extsym21
1.19535 ++extsym21:
1.19536 ++ nop
1.19537 +--- /dev/null
1.19538 ++++ b/opcodes/avr32-asm.c
1.19539 +@@ -0,0 +1,264 @@
1.19540 ++/* Assembler interface for AVR32.
1.19541 ++ Copyright 2005, 2006 Atmel Corporation.
1.19542 ++
1.19543 ++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
1.19544 ++
1.19545 ++ This file is part of libopcodes.
1.19546 ++
1.19547 ++ This program is free software; you can redistribute it and/or
1.19548 ++ modify it under the terms of the GNU General Public License as
1.19549 ++ published by the Free Software Foundation; either version 2 of the
1.19550 ++ License, or (at your option) any later version.
1.19551 ++
1.19552 ++ This program is distributed in the hope that it will be useful, but
1.19553 ++ WITHOUT ANY WARRANTY; without even the implied warranty of
1.19554 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1.19555 ++ General Public License for more details.
1.19556 ++
1.19557 ++ You should have received a copy of the GNU General Public License
1.19558 ++ along with this program; if not, write to the Free Software
1.19559 ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1.19560 ++ 02111-1307, USA. */
1.19561 ++
1.19562 ++#include <string.h>
1.19563 ++
1.19564 ++#include "avr32-opc.h"
1.19565 ++#include "avr32-asm.h"
1.19566 ++
1.19567 ++/* Structure for a register hash table entry. */
1.19568 ++struct reg_entry
1.19569 ++{
1.19570 ++ const char *name;
1.19571 ++ int number;
1.19572 ++};
1.19573 ++
1.19574 ++/* Integer Registers. */
1.19575 ++static const struct reg_entry reg_table[] =
1.19576 ++ {
1.19577 ++ /* Primary names (used by the disassembler) */
1.19578 ++ { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 },
1.19579 ++ { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 },
1.19580 ++ { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 },
1.19581 ++ { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 },
1.19582 ++ /* Alternatives to sp, lr and pc. */
1.19583 ++ { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
1.19584 ++ };
1.19585 ++#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
1.19586 ++
1.19587 ++/* Coprocessor Registers. */
1.19588 ++static const struct reg_entry cr_table[] =
1.19589 ++ {
1.19590 ++ { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 },
1.19591 ++ { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 },
1.19592 ++ { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 },
1.19593 ++ { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
1.19594 ++ };
1.19595 ++#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
1.19596 ++
1.19597 ++/* Floating-point Registers. */
1.19598 ++static const struct reg_entry fr_table[] =
1.19599 ++ {
1.19600 ++ { "fr0", 0 }, { "fr1", 1 }, { "fr2", 2 }, { "fr3", 3 },
1.19601 ++ { "fr4", 4 }, { "fr5", 5 }, { "fr6", 6 }, { "fr7", 7 },
1.19602 ++ { "fr8", 8 }, { "fr9", 9 }, { "fr10", 10 }, { "fr11", 11 },
1.19603 ++ { "fr12", 12 }, { "fr13", 13 }, { "fr14", 14 }, { "fr15", 15 },
1.19604 ++ };
1.19605 ++#define AVR32_NR_FPREGS (sizeof(fr_table)/sizeof(fr_table[0]))
1.19606 ++
1.19607 ++/* PiCo Registers. */
1.19608 ++static const struct reg_entry pico_table[] =
1.19609 ++ {
1.19610 ++ { "inpix2", 0 }, { "inpix1", 1 }, { "inpix0", 2 },
1.19611 ++ { "outpix2", 3 }, { "outpix1", 4 }, { "outpix0", 5 },
1.19612 ++ { "coeff0_a", 6 }, { "coeff0_b", 7 }, { "coeff1_a", 8 },
1.19613 ++ { "coeff1_b", 9 }, { "coeff2_a", 10 }, { "coeff2_b", 11 },
1.19614 ++ { "vmu0_out", 12 }, { "vmu1_out", 13 }, { "vmu2_out", 14 },
1.19615 ++ { "config", 15 },
1.19616 ++ };
1.19617 ++#define AVR32_NR_PICOREGS (sizeof(pico_table)/sizeof(pico_table[0]))
1.19618 ++
1.19619 ++int
1.19620 ++avr32_parse_intreg(const char *str)
1.19621 ++{
1.19622 ++ unsigned int i;
1.19623 ++
1.19624 ++ for (i = 0; i < AVR32_NR_INTREGS; i++)
1.19625 ++ {
1.19626 ++ if (strcasecmp(reg_table[i].name, str) == 0)
1.19627 ++ return reg_table[i].number;
1.19628 ++ }
1.19629 ++
1.19630 ++ return -1;
1.19631 ++}
1.19632 ++
1.19633 ++int
1.19634 ++avr32_parse_cpreg(const char *str)
1.19635 ++{
1.19636 ++ unsigned int i;
1.19637 ++
1.19638 ++ for (i = 0; i < AVR32_NR_CPREGS; i++)
1.19639 ++ {
1.19640 ++ if (strcasecmp(cr_table[i].name, str) == 0)
1.19641 ++ return cr_table[i].number;
1.19642 ++ }
1.19643 ++
1.19644 ++ return -1;
1.19645 ++}
1.19646 ++
1.19647 ++int avr32_parse_fpreg(const char *str)
1.19648 ++{
1.19649 ++ unsigned int i;
1.19650 ++
1.19651 ++ for (i = 0; i < AVR32_NR_FPREGS; i++)
1.19652 ++ {
1.19653 ++ if (strcasecmp(fr_table[i].name, str) == 0)
1.19654 ++ return fr_table[i].number;
1.19655 ++ }
1.19656 ++
1.19657 ++ return -1;
1.19658 ++}
1.19659 ++
1.19660 ++int avr32_parse_picoreg(const char *str)
1.19661 ++{
1.19662 ++ unsigned int i;
1.19663 ++
1.19664 ++ for (i = 0; i < AVR32_NR_PICOREGS; i++)
1.19665 ++ {
1.19666 ++ if (strcasecmp(pico_table[i].name, str) == 0)
1.19667 ++ return pico_table[i].number;
1.19668 ++ }
1.19669 ++
1.19670 ++ return -1;
1.19671 ++}
1.19672 ++
1.19673 ++static unsigned long
1.19674 ++parse_reglist(char *str, char **endptr, int (*parse_reg)(const char *))
1.19675 ++{
1.19676 ++ int reg_from, reg_to;
1.19677 ++ unsigned long result = 0;
1.19678 ++ char *p1, *p2, c;
1.19679 ++
1.19680 ++ while (*str)
1.19681 ++ {
1.19682 ++ for (p1 = str; *p1; p1++)
1.19683 ++ if (*p1 == ',' || *p1 == '-')
1.19684 ++ break;
1.19685 ++
1.19686 ++ c = *p1, *p1 = 0;
1.19687 ++ reg_from = parse_reg(str);
1.19688 ++ *p1 = c;
1.19689 ++
1.19690 ++ if (reg_from < 0)
1.19691 ++ break;
1.19692 ++
1.19693 ++ if (*p1 == '-')
1.19694 ++ {
1.19695 ++ for (p2 = ++p1; *p2; p2++)
1.19696 ++ if (*p2 == ',')
1.19697 ++ break;
1.19698 ++
1.19699 ++ c = *p2, *p2 = 0;
1.19700 ++ /* printf("going to parse reg_to from `%s'\n", p1); */
1.19701 ++ reg_to = parse_reg(p1);
1.19702 ++ *p2 = c;
1.19703 ++
1.19704 ++ if (reg_to < 0)
1.19705 ++ break;
1.19706 ++
1.19707 ++ while (reg_from <= reg_to)
1.19708 ++ result |= (1 << reg_from++);
1.19709 ++ p1 = p2;
1.19710 ++ }
1.19711 ++ else
1.19712 ++ result |= (1 << reg_from);
1.19713 ++
1.19714 ++ str = p1;
1.19715 ++ if (*str) ++str;
1.19716 ++ }
1.19717 ++
1.19718 ++ if (endptr)
1.19719 ++ *endptr = str;
1.19720 ++
1.19721 ++ return result;
1.19722 ++}
1.19723 ++
1.19724 ++unsigned long
1.19725 ++avr32_parse_reglist(char *str, char **endptr)
1.19726 ++{
1.19727 ++ return parse_reglist(str, endptr, avr32_parse_intreg);
1.19728 ++}
1.19729 ++
1.19730 ++unsigned long
1.19731 ++avr32_parse_cpreglist(char *str, char **endptr)
1.19732 ++{
1.19733 ++ return parse_reglist(str, endptr, avr32_parse_cpreg);
1.19734 ++}
1.19735 ++
1.19736 ++unsigned long
1.19737 ++avr32_parse_pico_reglist(char *str, char **endptr)
1.19738 ++{
1.19739 ++ return parse_reglist(str, endptr, avr32_parse_picoreg);
1.19740 ++}
1.19741 ++
1.19742 ++int
1.19743 ++avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8)
1.19744 ++{
1.19745 ++ unsigned long result = 0;
1.19746 ++
1.19747 ++ /* printf("convert regmask16 0x%04lx\n", regmask16); */
1.19748 ++
1.19749 ++ if (regmask16 & 0xf)
1.19750 ++ {
1.19751 ++ if ((regmask16 & 0xf) == 0xf)
1.19752 ++ result |= 1 << 0;
1.19753 ++ else
1.19754 ++ return -1;
1.19755 ++ }
1.19756 ++ if (regmask16 & 0xf0)
1.19757 ++ {
1.19758 ++ if ((regmask16 & 0xf0) == 0xf0)
1.19759 ++ result |= 1 << 1;
1.19760 ++ else
1.19761 ++ return -1;
1.19762 ++ }
1.19763 ++ if (regmask16 & 0x300)
1.19764 ++ {
1.19765 ++ if ((regmask16 & 0x300) == 0x300)
1.19766 ++ result |= 1 << 2;
1.19767 ++ else
1.19768 ++ return -1;
1.19769 ++ }
1.19770 ++ if (regmask16 & (1 << 13))
1.19771 ++ return -1;
1.19772 ++
1.19773 ++ if (regmask16 & (1 << 10))
1.19774 ++ result |= 1 << 3;
1.19775 ++ if (regmask16 & (1 << 11))
1.19776 ++ result |= 1 << 4;
1.19777 ++ if (regmask16 & (1 << 12))
1.19778 ++ result |= 1 << 5;
1.19779 ++ if (regmask16 & (1 << 14))
1.19780 ++ result |= 1 << 6;
1.19781 ++ if (regmask16 & (1 << 15))
1.19782 ++ result |= 1 << 7;
1.19783 ++
1.19784 ++ *regmask8 = result;
1.19785 ++
1.19786 ++ return 0;
1.19787 ++}
1.19788 ++
1.19789 ++#if 0
1.19790 ++struct reg_map
1.19791 ++{
1.19792 ++ const struct reg_entry *names;
1.19793 ++ int nr_regs;
1.19794 ++ struct hash_control *htab;
1.19795 ++ const char *errmsg;
1.19796 ++};
1.19797 ++
1.19798 ++struct reg_map all_reg_maps[] =
1.19799 ++ {
1.19800 ++ { reg_table, AVR32_NR_INTREGS, NULL, N_("integral register expected") },
1.19801 ++ { cr_table, AVR32_NR_CPREGS, NULL, N_("coprocessor register expected") },
1.19802 ++ };
1.19803 ++#endif
1.19804 +--- /dev/null
1.19805 ++++ b/opcodes/avr32-asm.h
1.19806 +@@ -0,0 +1,42 @@
1.19807 ++/* Assembler interface for AVR32.
1.19808 ++ Copyright 2005, 2006 Atmel Corporation.
1.19809 ++
1.19810 ++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
1.19811 ++
1.19812 ++ This file is part of libopcodes.
1.19813 ++
1.19814 ++ This program is free software; you can redistribute it and/or
1.19815 ++ modify it under the terms of the GNU General Public License as
1.19816 ++ published by the Free Software Foundation; either version 2 of the
1.19817 ++ License, or (at your option) any later version.
1.19818 ++
1.19819 ++ This program is distributed in the hope that it will be useful, but
1.19820 ++ WITHOUT ANY WARRANTY; without even the implied warranty of
1.19821 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1.19822 ++ General Public License for more details.
1.19823 ++
1.19824 ++ You should have received a copy of the GNU General Public License
1.19825 ++ along with this program; if not, write to the Free Software
1.19826 ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1.19827 ++ 02111-1307, USA. */
1.19828 ++#ifndef __OPCODES_AVR32_ASM_H
1.19829 ++#define __OPCODES_AVR32_ASM_H
1.19830 ++
1.19831 ++extern int
1.19832 ++avr32_parse_intreg(const char *str);
1.19833 ++extern int
1.19834 ++avr32_parse_cpreg(const char *str);
1.19835 ++extern int
1.19836 ++avr32_parse_fpreg(const char *str);
1.19837 ++extern int
1.19838 ++avr32_parse_picoreg(const char *str);
1.19839 ++extern unsigned long
1.19840 ++avr32_parse_reglist(char *str, char **endptr);
1.19841 ++extern unsigned long
1.19842 ++avr32_parse_cpreglist(char *str, char **endptr);
1.19843 ++extern unsigned long
1.19844 ++avr32_parse_pico_reglist(char *str, char **endptr);
1.19845 ++extern int
1.19846 ++avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8);
1.19847 ++
1.19848 ++#endif /* __OPCODES_AVR32_ASM_H */
1.19849 +--- /dev/null
1.19850 ++++ b/opcodes/avr32-dis.c
1.19851 +@@ -0,0 +1,891 @@
1.19852 ++/* Print AVR32 instructions for GDB and objdump.
1.19853 ++ Copyright 2005, 2006 Atmel Corporation.
1.19854 ++
1.19855 ++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
1.19856 ++
1.19857 ++ This file is part of libopcodes.
1.19858 ++
1.19859 ++ This program is free software; you can redistribute it and/or
1.19860 ++ modify it under the terms of the GNU General Public License as
1.19861 ++ published by the Free Software Foundation; either version 2 of the
1.19862 ++ License, or (at your option) any later version.
1.19863 ++
1.19864 ++ This program is distributed in the hope that it will be useful, but
1.19865 ++ WITHOUT ANY WARRANTY; without even the implied warranty of
1.19866 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1.19867 ++ General Public License for more details.
1.19868 ++
1.19869 ++ You should have received a copy of the GNU General Public License
1.19870 ++ along with this program; if not, write to the Free Software
1.19871 ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1.19872 ++ 02111-1307, USA. */
1.19873 ++
1.19874 ++#include "sysdep.h"
1.19875 ++#include "dis-asm.h"
1.19876 ++#include "avr32-opc.h"
1.19877 ++#include "opintl.h"
1.19878 ++#include "safe-ctype.h"
1.19879 ++
1.19880 ++/* TODO: Share this with -asm */
1.19881 ++
1.19882 ++/* Structure for a register hash table entry. */
1.19883 ++struct reg_entry
1.19884 ++{
1.19885 ++ const char *name;
1.19886 ++ int number;
1.19887 ++};
1.19888 ++
1.19889 ++#ifndef strneq
1.19890 ++#define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
1.19891 ++#endif
1.19892 ++
1.19893 ++
1.19894 ++static const struct reg_entry reg_table[] =
1.19895 ++ {
1.19896 ++ /* Primary names (used by the disassembler) */
1.19897 ++ { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 },
1.19898 ++ { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 },
1.19899 ++ { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 },
1.19900 ++ { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 },
1.19901 ++ /* Alternatives to sp, lr and pc. */
1.19902 ++ { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
1.19903 ++ };
1.19904 ++#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
1.19905 ++
1.19906 ++/* Coprocessor Registers. */
1.19907 ++static const struct reg_entry cr_table[] =
1.19908 ++ {
1.19909 ++ { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 },
1.19910 ++ { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 },
1.19911 ++ { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 },
1.19912 ++ { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
1.19913 ++ };
1.19914 ++#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
1.19915 ++
1.19916 ++static const char bparts[4] = { 'b', 'l', 'u', 't' };
1.19917 ++static bfd_vma current_pc;
1.19918 ++
1.19919 ++struct avr32_field_value
1.19920 ++{
1.19921 ++ const struct avr32_ifield *ifield;
1.19922 ++ unsigned long value;
1.19923 ++};
1.19924 ++
1.19925 ++struct avr32_operand
1.19926 ++{
1.19927 ++ int id;
1.19928 ++ int is_pcrel;
1.19929 ++ int align_order;
1.19930 ++ int (*print)(struct avr32_operand *op, struct disassemble_info *info,
1.19931 ++ struct avr32_field_value *ifields);
1.19932 ++};
1.19933 ++
1.19934 ++static signed long
1.19935 ++get_signed_value(const struct avr32_field_value *fv)
1.19936 ++{
1.19937 ++ signed long value = fv->value;
1.19938 ++
1.19939 ++ if (fv->value & (1 << (fv->ifield->bitsize - 1)))
1.19940 ++ value |= (~0UL << fv->ifield->bitsize);
1.19941 ++
1.19942 ++ return value;
1.19943 ++}
1.19944 ++
1.19945 ++static void
1.19946 ++print_reglist_range(unsigned int first, unsigned int last,
1.19947 ++ const struct reg_entry *reg_names,
1.19948 ++ int need_comma,
1.19949 ++ struct disassemble_info *info)
1.19950 ++{
1.19951 ++ if (need_comma)
1.19952 ++ info->fprintf_func(info->stream, ",");
1.19953 ++
1.19954 ++ if (first == last)
1.19955 ++ info->fprintf_func(info->stream, "%s",
1.19956 ++ reg_names[first].name);
1.19957 ++ else
1.19958 ++ info->fprintf_func(info->stream, "%s-%s",
1.19959 ++ reg_names[first].name, reg_names[last].name);
1.19960 ++}
1.19961 ++
1.19962 ++static int
1.19963 ++print_intreg(struct avr32_operand *op,
1.19964 ++ struct disassemble_info *info,
1.19965 ++ struct avr32_field_value *ifields)
1.19966 ++{
1.19967 ++ unsigned long regid = ifields[0].value << op->align_order;
1.19968 ++
1.19969 ++ info->fprintf_func(info->stream, "%s",
1.19970 ++ reg_table[regid].name);
1.19971 ++ return 1;
1.19972 ++}
1.19973 ++
1.19974 ++static int
1.19975 ++print_intreg_predec(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.19976 ++ struct disassemble_info *info,
1.19977 ++ struct avr32_field_value *ifields)
1.19978 ++{
1.19979 ++ info->fprintf_func(info->stream, "--%s",
1.19980 ++ reg_table[ifields[0].value].name);
1.19981 ++ return 1;
1.19982 ++}
1.19983 ++
1.19984 ++static int
1.19985 ++print_intreg_postinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.19986 ++ struct disassemble_info *info,
1.19987 ++ struct avr32_field_value *ifields)
1.19988 ++{
1.19989 ++ info->fprintf_func(info->stream, "%s++",
1.19990 ++ reg_table[ifields[0].value].name);
1.19991 ++ return 1;
1.19992 ++}
1.19993 ++
1.19994 ++static int
1.19995 ++print_intreg_lsl(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.19996 ++ struct disassemble_info *info,
1.19997 ++ struct avr32_field_value *ifields)
1.19998 ++{
1.19999 ++ const char *rp = reg_table[ifields[0].value].name;
1.20000 ++ unsigned long sa = ifields[1].value;
1.20001 ++
1.20002 ++ if (sa)
1.20003 ++ info->fprintf_func(info->stream, "%s<<0x%lx", rp, sa);
1.20004 ++ else
1.20005 ++ info->fprintf_func(info->stream, "%s", rp);
1.20006 ++
1.20007 ++ return 2;
1.20008 ++}
1.20009 ++
1.20010 ++static int
1.20011 ++print_intreg_lsr(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20012 ++ struct disassemble_info *info,
1.20013 ++ struct avr32_field_value *ifields)
1.20014 ++{
1.20015 ++ const char *rp = reg_table[ifields[0].value].name;
1.20016 ++ unsigned long sa = ifields[1].value;
1.20017 ++
1.20018 ++ if (sa)
1.20019 ++ info->fprintf_func(info->stream, "%s>>0x%lx", rp, sa);
1.20020 ++ else
1.20021 ++ info->fprintf_func(info->stream, "%s", rp);
1.20022 ++
1.20023 ++ return 2;
1.20024 ++}
1.20025 ++
1.20026 ++static int
1.20027 ++print_intreg_bpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20028 ++ struct disassemble_info *info,
1.20029 ++ struct avr32_field_value *ifields)
1.20030 ++{
1.20031 ++ info->fprintf_func(info->stream, "%s:%c",
1.20032 ++ reg_table[ifields[0].value].name,
1.20033 ++ bparts[ifields[1].value]);
1.20034 ++ return 2;
1.20035 ++}
1.20036 ++
1.20037 ++static int
1.20038 ++print_intreg_hpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20039 ++ struct disassemble_info *info,
1.20040 ++ struct avr32_field_value *ifields)
1.20041 ++{
1.20042 ++ info->fprintf_func(info->stream, "%s:%c",
1.20043 ++ reg_table[ifields[0].value].name,
1.20044 ++ ifields[1].value ? 't' : 'b');
1.20045 ++ return 2;
1.20046 ++}
1.20047 ++
1.20048 ++static int
1.20049 ++print_intreg_sdisp(struct avr32_operand *op,
1.20050 ++ struct disassemble_info *info,
1.20051 ++ struct avr32_field_value *ifields)
1.20052 ++{
1.20053 ++ signed long disp;
1.20054 ++
1.20055 ++ disp = get_signed_value(&ifields[1]) << op->align_order;
1.20056 ++
1.20057 ++ info->fprintf_func(info->stream, "%s[%ld]",
1.20058 ++ reg_table[ifields[0].value].name, disp);
1.20059 ++ return 2;
1.20060 ++}
1.20061 ++
1.20062 ++static int
1.20063 ++print_intreg_udisp(struct avr32_operand *op,
1.20064 ++ struct disassemble_info *info,
1.20065 ++ struct avr32_field_value *ifields)
1.20066 ++{
1.20067 ++ info->fprintf_func(info->stream, "%s[0x%lx]",
1.20068 ++ reg_table[ifields[0].value].name,
1.20069 ++ ifields[1].value << op->align_order);
1.20070 ++ return 2;
1.20071 ++}
1.20072 ++
1.20073 ++static int
1.20074 ++print_intreg_index(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20075 ++ struct disassemble_info *info,
1.20076 ++ struct avr32_field_value *ifields)
1.20077 ++{
1.20078 ++ const char *rb, *ri;
1.20079 ++ unsigned long sa = ifields[2].value;
1.20080 ++
1.20081 ++ rb = reg_table[ifields[0].value].name;
1.20082 ++ ri = reg_table[ifields[1].value].name;
1.20083 ++
1.20084 ++ if (sa)
1.20085 ++ info->fprintf_func(info->stream, "%s[%s<<0x%lx]", rb, ri, sa);
1.20086 ++ else
1.20087 ++ info->fprintf_func(info->stream, "%s[%s]", rb, ri);
1.20088 ++
1.20089 ++ return 3;
1.20090 ++}
1.20091 ++
1.20092 ++static int
1.20093 ++print_intreg_xindex(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20094 ++ struct disassemble_info *info,
1.20095 ++ struct avr32_field_value *ifields)
1.20096 ++{
1.20097 ++ info->fprintf_func(info->stream, "%s[%s:%c<<2]",
1.20098 ++ reg_table[ifields[0].value].name,
1.20099 ++ reg_table[ifields[1].value].name,
1.20100 ++ bparts[ifields[2].value]);
1.20101 ++ return 3;
1.20102 ++}
1.20103 ++
1.20104 ++static int
1.20105 ++print_jmplabel(struct avr32_operand *op,
1.20106 ++ struct disassemble_info *info,
1.20107 ++ struct avr32_field_value *ifields)
1.20108 ++{
1.20109 ++ bfd_vma address, offset;
1.20110 ++
1.20111 ++ offset = get_signed_value(ifields) << op->align_order;
1.20112 ++ address = (current_pc & (~0UL << op->align_order)) + offset;
1.20113 ++
1.20114 ++ info->print_address_func(address, info);
1.20115 ++
1.20116 ++ return 1;
1.20117 ++}
1.20118 ++
1.20119 ++static int
1.20120 ++print_pc_disp(struct avr32_operand *op,
1.20121 ++ struct disassemble_info *info,
1.20122 ++ struct avr32_field_value *ifields)
1.20123 ++{
1.20124 ++ bfd_vma address, offset;
1.20125 ++
1.20126 ++ offset = ifields[0].value << op->align_order;
1.20127 ++ address = (current_pc & (~0UL << op->align_order)) + offset;
1.20128 ++
1.20129 ++ info->print_address_func(address, info);
1.20130 ++
1.20131 ++ return 1;
1.20132 ++}
1.20133 ++
1.20134 ++static int
1.20135 ++print_sp(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20136 ++ struct disassemble_info *info,
1.20137 ++ struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
1.20138 ++{
1.20139 ++ info->fprintf_func(info->stream, "sp");
1.20140 ++ return 1;
1.20141 ++}
1.20142 ++
1.20143 ++static int
1.20144 ++print_sp_disp(struct avr32_operand *op,
1.20145 ++ struct disassemble_info *info,
1.20146 ++ struct avr32_field_value *ifields)
1.20147 ++{
1.20148 ++ info->fprintf_func(info->stream, "sp[0x%lx]",
1.20149 ++ ifields[0].value << op->align_order);
1.20150 ++ return 1;
1.20151 ++}
1.20152 ++
1.20153 ++static int
1.20154 ++print_cpno(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20155 ++ struct disassemble_info *info,
1.20156 ++ struct avr32_field_value *ifields)
1.20157 ++{
1.20158 ++ info->fprintf_func(info->stream, "cp%lu", ifields[0].value);
1.20159 ++ return 1;
1.20160 ++}
1.20161 ++
1.20162 ++static int
1.20163 ++print_cpreg(struct avr32_operand *op,
1.20164 ++ struct disassemble_info *info,
1.20165 ++ struct avr32_field_value *ifields)
1.20166 ++{
1.20167 ++ info->fprintf_func(info->stream, "cr%lu",
1.20168 ++ ifields[0].value << op->align_order);
1.20169 ++ return 1;
1.20170 ++}
1.20171 ++
1.20172 ++static int
1.20173 ++print_uconst(struct avr32_operand *op,
1.20174 ++ struct disassemble_info *info,
1.20175 ++ struct avr32_field_value *ifields)
1.20176 ++{
1.20177 ++ info->fprintf_func(info->stream, "0x%lx",
1.20178 ++ ifields[0].value << op->align_order);
1.20179 ++ return 1;
1.20180 ++}
1.20181 ++
1.20182 ++static int
1.20183 ++print_sconst(struct avr32_operand *op,
1.20184 ++ struct disassemble_info *info,
1.20185 ++ struct avr32_field_value *ifields)
1.20186 ++{
1.20187 ++ info->fprintf_func(info->stream, "%ld",
1.20188 ++ get_signed_value(ifields) << op->align_order);
1.20189 ++ return 1;
1.20190 ++}
1.20191 ++
1.20192 ++static int
1.20193 ++print_reglist8_head(unsigned long regmask, int *commap,
1.20194 ++ struct disassemble_info *info)
1.20195 ++{
1.20196 ++ int first = -1, last, i = 0;
1.20197 ++ int need_comma = 0;
1.20198 ++
1.20199 ++ while (i < 12)
1.20200 ++ {
1.20201 ++ if (first == -1 && (regmask & 1))
1.20202 ++ {
1.20203 ++ first = i;
1.20204 ++ }
1.20205 ++ else if (first != -1 && !(regmask & 1))
1.20206 ++ {
1.20207 ++ last = i - 1;
1.20208 ++
1.20209 ++ print_reglist_range(first, last, reg_table, need_comma, info);
1.20210 ++ need_comma = 1;
1.20211 ++ first = -1;
1.20212 ++ }
1.20213 ++
1.20214 ++ if (i < 8)
1.20215 ++ i += 4;
1.20216 ++ else if (i < 10)
1.20217 ++ i += 2;
1.20218 ++ else
1.20219 ++ i++;
1.20220 ++ regmask >>= 1;
1.20221 ++ }
1.20222 ++
1.20223 ++ *commap = need_comma;
1.20224 ++ return first;
1.20225 ++}
1.20226 ++
1.20227 ++static void
1.20228 ++print_reglist8_tail(unsigned long regmask, int first, int need_comma,
1.20229 ++ struct disassemble_info *info)
1.20230 ++{
1.20231 ++ int last = 11;
1.20232 ++
1.20233 ++ if (regmask & 0x20)
1.20234 ++ {
1.20235 ++ if (first == -1)
1.20236 ++ first = 12;
1.20237 ++ last = 12;
1.20238 ++ }
1.20239 ++
1.20240 ++ if (first != -1)
1.20241 ++ {
1.20242 ++ print_reglist_range(first, last, reg_table, need_comma, info);
1.20243 ++ need_comma = 1;
1.20244 ++ first = -1;
1.20245 ++ }
1.20246 ++
1.20247 ++ if (regmask & 0x40)
1.20248 ++ {
1.20249 ++ if (first == -1)
1.20250 ++ first = 14;
1.20251 ++ last = 14;
1.20252 ++ }
1.20253 ++
1.20254 ++ if (regmask & 0x80)
1.20255 ++ {
1.20256 ++ if (first == -1)
1.20257 ++ first = 15;
1.20258 ++ last = 15;
1.20259 ++ }
1.20260 ++
1.20261 ++ if (first != -1)
1.20262 ++ print_reglist_range(first, last, reg_table, need_comma, info);
1.20263 ++}
1.20264 ++
1.20265 ++static int
1.20266 ++print_reglist8(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20267 ++ struct disassemble_info *info,
1.20268 ++ struct avr32_field_value *ifields)
1.20269 ++{
1.20270 ++ unsigned long regmask = ifields[0].value;
1.20271 ++ int first, need_comma;
1.20272 ++
1.20273 ++ first = print_reglist8_head(regmask, &need_comma, info);
1.20274 ++ print_reglist8_tail(regmask, first, need_comma, info);
1.20275 ++
1.20276 ++ return 1;
1.20277 ++}
1.20278 ++
1.20279 ++static int
1.20280 ++print_reglist9(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20281 ++ struct disassemble_info *info,
1.20282 ++ struct avr32_field_value *ifields)
1.20283 ++{
1.20284 ++ unsigned long regmask = ifields[0].value >> 1;
1.20285 ++ int first, last, need_comma;
1.20286 ++
1.20287 ++ first = print_reglist8_head(regmask, &need_comma, info);
1.20288 ++
1.20289 ++ if ((ifields[0].value & 0x101) == 0x101)
1.20290 ++ {
1.20291 ++ if (first != -1)
1.20292 ++ {
1.20293 ++ last = 11;
1.20294 ++
1.20295 ++ print_reglist_range(first, last, reg_table, need_comma, info);
1.20296 ++ need_comma = 1;
1.20297 ++ first = -1;
1.20298 ++ }
1.20299 ++
1.20300 ++ print_reglist_range(15, 15, reg_table, need_comma, info);
1.20301 ++
1.20302 ++ regmask >>= 5;
1.20303 ++
1.20304 ++ if ((regmask & 3) == 0)
1.20305 ++ info->fprintf_func(info->stream, ",r12=0");
1.20306 ++ else if ((regmask & 3) == 1)
1.20307 ++ info->fprintf_func(info->stream, ",r12=1");
1.20308 ++ else
1.20309 ++ info->fprintf_func(info->stream, ",r12=-1");
1.20310 ++ }
1.20311 ++ else
1.20312 ++ print_reglist8_tail(regmask, first, need_comma, info);
1.20313 ++
1.20314 ++ return 1;
1.20315 ++}
1.20316 ++
1.20317 ++static int
1.20318 ++print_reglist16(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20319 ++ struct disassemble_info *info,
1.20320 ++ struct avr32_field_value *ifields)
1.20321 ++{
1.20322 ++ unsigned long regmask = ifields[0].value;
1.20323 ++ unsigned int i = 0, first, last;
1.20324 ++ int need_comma = 0;
1.20325 ++
1.20326 ++ while (i < 16)
1.20327 ++ {
1.20328 ++ if (regmask & 1)
1.20329 ++ {
1.20330 ++ first = i;
1.20331 ++ while (i < 16)
1.20332 ++ {
1.20333 ++ i++;
1.20334 ++ regmask >>= 1;
1.20335 ++ if (!(regmask & 1))
1.20336 ++ break;
1.20337 ++ }
1.20338 ++ last = i - 1;
1.20339 ++ print_reglist_range(first, last, reg_table, need_comma, info);
1.20340 ++ need_comma = 1;
1.20341 ++ }
1.20342 ++ else
1.20343 ++ {
1.20344 ++ i++;
1.20345 ++ regmask >>= 1;
1.20346 ++ }
1.20347 ++ }
1.20348 ++
1.20349 ++ return 1;
1.20350 ++}
1.20351 ++
1.20352 ++static int
1.20353 ++print_reglist_ldm(struct avr32_operand *op,
1.20354 ++ struct disassemble_info *info,
1.20355 ++ struct avr32_field_value *ifields)
1.20356 ++{
1.20357 ++ int rp, w_bit;
1.20358 ++ int i, first, last;
1.20359 ++ unsigned long regmask;
1.20360 ++
1.20361 ++ rp = ifields[0].value;
1.20362 ++ w_bit = ifields[1].value;
1.20363 ++ regmask = ifields[2].value;
1.20364 ++
1.20365 ++ if (regmask & (1 << AVR32_REG_PC) && rp == AVR32_REG_PC)
1.20366 ++ {
1.20367 ++ if (w_bit)
1.20368 ++ info->fprintf_func(info->stream, "sp++");
1.20369 ++ else
1.20370 ++ info->fprintf_func(info->stream, "sp");
1.20371 ++
1.20372 ++ for (i = 0; i < 12; )
1.20373 ++ {
1.20374 ++ if (regmask & (1 << i))
1.20375 ++ {
1.20376 ++ first = i;
1.20377 ++ while (i < 12)
1.20378 ++ {
1.20379 ++ i++;
1.20380 ++ if (!(regmask & (1 << i)))
1.20381 ++ break;
1.20382 ++ }
1.20383 ++ last = i - 1;
1.20384 ++ print_reglist_range(first, last, reg_table, 1, info);
1.20385 ++ }
1.20386 ++ else
1.20387 ++ i++;
1.20388 ++ }
1.20389 ++
1.20390 ++ info->fprintf_func(info->stream, ",pc");
1.20391 ++ if (regmask & (1 << AVR32_REG_LR))
1.20392 ++ info->fprintf_func(info->stream, ",r12=-1");
1.20393 ++ else if (regmask & (1 << AVR32_REG_R12))
1.20394 ++ info->fprintf_func(info->stream, ",r12=1");
1.20395 ++ else
1.20396 ++ info->fprintf_func(info->stream, ",r12=0");
1.20397 ++ }
1.20398 ++ else
1.20399 ++ {
1.20400 ++ if (w_bit)
1.20401 ++ info->fprintf_func(info->stream, "%s++,", reg_table[rp].name);
1.20402 ++ else
1.20403 ++ info->fprintf_func(info->stream, "%s,", reg_table[rp].name);
1.20404 ++
1.20405 ++ print_reglist16(op, info, ifields + 2);
1.20406 ++ }
1.20407 ++
1.20408 ++ return 3;
1.20409 ++}
1.20410 ++
1.20411 ++static int
1.20412 ++print_reglist_cp8(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20413 ++ struct disassemble_info *info,
1.20414 ++ struct avr32_field_value *ifields)
1.20415 ++{
1.20416 ++ unsigned long regmask = ifields[0].value;
1.20417 ++ unsigned int i = 0, first, last, offset = 0;
1.20418 ++ int need_comma = 0;
1.20419 ++
1.20420 ++ if (ifields[1].value)
1.20421 ++ offset = 8;
1.20422 ++
1.20423 ++ while (i < 8)
1.20424 ++ {
1.20425 ++ if (regmask & 1)
1.20426 ++ {
1.20427 ++ first = i;
1.20428 ++ while (i < 8)
1.20429 ++ {
1.20430 ++ i++;
1.20431 ++ regmask >>= 1;
1.20432 ++ if (!(regmask & 1))
1.20433 ++ break;
1.20434 ++ }
1.20435 ++ last = i - 1;
1.20436 ++ print_reglist_range(offset + first, offset + last,
1.20437 ++ cr_table, need_comma, info);
1.20438 ++ need_comma = 1;
1.20439 ++ }
1.20440 ++ else
1.20441 ++ {
1.20442 ++ i++;
1.20443 ++ regmask >>= 1;
1.20444 ++ }
1.20445 ++ }
1.20446 ++
1.20447 ++ return 2;
1.20448 ++}
1.20449 ++
1.20450 ++static int
1.20451 ++print_reglist_cpd8(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20452 ++ struct disassemble_info *info,
1.20453 ++ struct avr32_field_value *ifields)
1.20454 ++{
1.20455 ++ unsigned long regmask = ifields[0].value;
1.20456 ++ unsigned int i = 0, first, last;
1.20457 ++ int need_comma = 0;
1.20458 ++
1.20459 ++ while (i < 8)
1.20460 ++ {
1.20461 ++ if (regmask & 1)
1.20462 ++ {
1.20463 ++ first = 2 * i;
1.20464 ++ while (i < 8)
1.20465 ++ {
1.20466 ++ i++;
1.20467 ++ regmask >>= 1;
1.20468 ++ if (!(regmask & 1))
1.20469 ++ break;
1.20470 ++ }
1.20471 ++ last = 2 * (i - 1) + 1;
1.20472 ++ print_reglist_range(first, last, cr_table, need_comma, info);
1.20473 ++ need_comma = 1;
1.20474 ++ }
1.20475 ++ else
1.20476 ++ {
1.20477 ++ i++;
1.20478 ++ regmask >>= 1;
1.20479 ++ }
1.20480 ++ }
1.20481 ++
1.20482 ++ return 1;
1.20483 ++}
1.20484 ++
1.20485 ++static int
1.20486 ++print_retval(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20487 ++ struct disassemble_info *info,
1.20488 ++ struct avr32_field_value *ifields)
1.20489 ++{
1.20490 ++ unsigned long regid = ifields[0].value;
1.20491 ++ const char *retval;
1.20492 ++
1.20493 ++ if (regid < AVR32_REG_SP)
1.20494 ++ retval = reg_table[regid].name;
1.20495 ++ else if (regid == AVR32_REG_SP)
1.20496 ++ retval = "0";
1.20497 ++ else if (regid == AVR32_REG_LR)
1.20498 ++ retval = "-1";
1.20499 ++ else
1.20500 ++ retval = "1";
1.20501 ++
1.20502 ++ info->fprintf_func(info->stream, "%s", retval);
1.20503 ++
1.20504 ++ return 1;
1.20505 ++}
1.20506 ++
1.20507 ++static int
1.20508 ++print_mcall(struct avr32_operand *op,
1.20509 ++ struct disassemble_info *info,
1.20510 ++ struct avr32_field_value *ifields)
1.20511 ++{
1.20512 ++ unsigned long regid = ifields[0].value;
1.20513 ++
1.20514 ++ if (regid == AVR32_REG_PC)
1.20515 ++ print_jmplabel(op, info, ifields + 1);
1.20516 ++ else
1.20517 ++ print_intreg_sdisp(op, info, ifields);
1.20518 ++
1.20519 ++ return 2;
1.20520 ++}
1.20521 ++
1.20522 ++static int
1.20523 ++print_jospinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20524 ++ struct disassemble_info *info,
1.20525 ++ struct avr32_field_value *ifields)
1.20526 ++{
1.20527 ++ signed long value = ifields[0].value;
1.20528 ++
1.20529 ++ if (value >= 4)
1.20530 ++ value -= 8;
1.20531 ++ else
1.20532 ++ value += 1;
1.20533 ++
1.20534 ++ info->fprintf_func(info->stream, "%ld", value);
1.20535 ++
1.20536 ++ return 1;
1.20537 ++}
1.20538 ++
1.20539 ++static int
1.20540 ++print_coh(struct avr32_operand *op ATTRIBUTE_UNUSED,
1.20541 ++ struct disassemble_info *info,
1.20542 ++ struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
1.20543 ++{
1.20544 ++ info->fprintf_func(info->stream, "COH");
1.20545 ++ return 0;
1.20546 ++}
1.20547 ++
1.20548 ++#define OP(name, sgn, pcrel, align, func) \
1.20549 ++ { AVR32_OPERAND_##name, pcrel, align, print_##func }
1.20550 ++
1.20551 ++struct avr32_operand operand[AVR32_NR_OPERANDS] =
1.20552 ++ {
1.20553 ++ OP(INTREG, 0, 0, 0, intreg),
1.20554 ++ OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
1.20555 ++ OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
1.20556 ++ OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
1.20557 ++ OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
1.20558 ++ OP(INTREG_BSEL, 0, 0, 0, intreg_bpart),
1.20559 ++ OP(INTREG_HSEL, 0, 0, 1, intreg_hpart),
1.20560 ++ OP(INTREG_SDISP, 1, 0, 0, intreg_sdisp),
1.20561 ++ OP(INTREG_SDISP_H, 1, 0, 1, intreg_sdisp),
1.20562 ++ OP(INTREG_SDISP_W, 1, 0, 2, intreg_sdisp),
1.20563 ++ OP(INTREG_UDISP, 0, 0, 0, intreg_udisp),
1.20564 ++ OP(INTREG_UDISP_H, 0, 0, 1, intreg_udisp),
1.20565 ++ OP(INTREG_UDISP_W, 0, 0, 2, intreg_udisp),
1.20566 ++ OP(INTREG_INDEX, 0, 0, 0, intreg_index),
1.20567 ++ OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
1.20568 ++ OP(DWREG, 0, 0, 1, intreg),
1.20569 ++ OP(PC_UDISP_W, 0, 1, 2, pc_disp),
1.20570 ++ OP(SP, 0, 0, 0, sp),
1.20571 ++ OP(SP_UDISP_W, 0, 0, 2, sp_disp),
1.20572 ++ OP(CPNO, 0, 0, 0, cpno),
1.20573 ++ OP(CPREG, 0, 0, 0, cpreg),
1.20574 ++ OP(CPREG_D, 0, 0, 1, cpreg),
1.20575 ++ OP(UNSIGNED_CONST, 0, 0, 0, uconst),
1.20576 ++ OP(UNSIGNED_CONST_W, 0, 0, 2, uconst),
1.20577 ++ OP(SIGNED_CONST, 1, 0, 0, sconst),
1.20578 ++ OP(SIGNED_CONST_W, 1, 0, 2, sconst),
1.20579 ++ OP(JMPLABEL, 1, 1, 1, jmplabel),
1.20580 ++ OP(UNSIGNED_NUMBER, 0, 0, 0, uconst),
1.20581 ++ OP(UNSIGNED_NUMBER_W, 0, 0, 2, uconst),
1.20582 ++ OP(REGLIST8, 0, 0, 0, reglist8),
1.20583 ++ OP(REGLIST9, 0, 0, 0, reglist9),
1.20584 ++ OP(REGLIST16, 0, 0, 0, reglist16),
1.20585 ++ OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
1.20586 ++ OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
1.20587 ++ OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
1.20588 ++ OP(RETVAL, 0, 0, 0, retval),
1.20589 ++ OP(MCALL, 1, 0, 2, mcall),
1.20590 ++ OP(JOSPINC, 0, 0, 0, jospinc),
1.20591 ++ OP(COH, 0, 0, 0, coh),
1.20592 ++ };
1.20593 ++
1.20594 ++static void
1.20595 ++print_opcode(bfd_vma insn_word, const struct avr32_opcode *opc,
1.20596 ++ bfd_vma pc, struct disassemble_info *info)
1.20597 ++{
1.20598 ++ const struct avr32_syntax *syntax = opc->syntax;
1.20599 ++ struct avr32_field_value fields[AVR32_MAX_FIELDS];
1.20600 ++ unsigned int i, next_field = 0, nr_operands;
1.20601 ++
1.20602 ++ for (i = 0; i < opc->nr_fields; i++)
1.20603 ++ {
1.20604 ++ opc->fields[i]->extract(opc->fields[i], &insn_word, &fields[i].value);
1.20605 ++ fields[i].ifield = opc->fields[i];
1.20606 ++ }
1.20607 ++
1.20608 ++ current_pc = pc;
1.20609 ++ info->fprintf_func(info->stream, "%s", syntax->mnemonic->name);
1.20610 ++
1.20611 ++ if (syntax->nr_operands < 0)
1.20612 ++ nr_operands = (unsigned int) -syntax->nr_operands;
1.20613 ++ else
1.20614 ++ nr_operands = (unsigned int) syntax->nr_operands;
1.20615 ++
1.20616 ++ for (i = 0; i < nr_operands; i++)
1.20617 ++ {
1.20618 ++ struct avr32_operand *op = &operand[syntax->operand[i]];
1.20619 ++
1.20620 ++ if (i)
1.20621 ++ info->fprintf_func(info->stream, ",");
1.20622 ++ else
1.20623 ++ info->fprintf_func(info->stream, "\t");
1.20624 ++ next_field += op->print(op, info, &fields[next_field]);
1.20625 ++ }
1.20626 ++}
1.20627 ++
1.20628 ++static const struct avr32_opcode *
1.20629 ++find_opcode(bfd_vma insn_word)
1.20630 ++{
1.20631 ++ int i;
1.20632 ++
1.20633 ++ for (i = 0; i < AVR32_NR_OPCODES; i++)
1.20634 ++ {
1.20635 ++ const struct avr32_opcode *opc = &avr32_opc_table[i];
1.20636 ++
1.20637 ++ if ((insn_word & opc->mask) == opc->value)
1.20638 ++ return opc;
1.20639 ++ }
1.20640 ++
1.20641 ++ return NULL;
1.20642 ++}
1.20643 ++
1.20644 ++static int
1.20645 ++read_insn_word(bfd_vma pc, bfd_vma *valuep,
1.20646 ++ struct disassemble_info *info)
1.20647 ++{
1.20648 ++ bfd_byte b[4];
1.20649 ++ int status;
1.20650 ++
1.20651 ++ status = info->read_memory_func(pc, b, 4, info);
1.20652 ++ if (status)
1.20653 ++ {
1.20654 ++ status = info->read_memory_func(pc, b, 2, info);
1.20655 ++ if (status)
1.20656 ++ {
1.20657 ++ info->memory_error_func(status, pc, info);
1.20658 ++ return -1;
1.20659 ++ }
1.20660 ++ b[3] = b[2] = 0;
1.20661 ++ }
1.20662 ++
1.20663 ++ *valuep = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
1.20664 ++ return 0;
1.20665 ++}
1.20666 ++
1.20667 ++/* Parse an individual disassembler option. */
1.20668 ++
1.20669 ++void
1.20670 ++parse_avr32_disassembler_option (option)
1.20671 ++ char * option;
1.20672 ++{
1.20673 ++ if (option == NULL)
1.20674 ++ return;
1.20675 ++
1.20676 ++ /* XXX - should break 'option' at following delimiter. */
1.20677 ++ fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option);
1.20678 ++
1.20679 ++ return;
1.20680 ++}
1.20681 ++
1.20682 ++/* Parse the string of disassembler options, spliting it at whitespaces
1.20683 ++ or commas. (Whitespace separators supported for backwards compatibility). */
1.20684 ++
1.20685 ++static void
1.20686 ++parse_disassembler_options (char *options)
1.20687 ++{
1.20688 ++ if (options == NULL)
1.20689 ++ return;
1.20690 ++
1.20691 ++ while (*options)
1.20692 ++ {
1.20693 ++ parse_avr32_disassembler_option (options);
1.20694 ++
1.20695 ++ /* Skip forward to next seperator. */
1.20696 ++ while ((*options) && (! ISSPACE (*options)) && (*options != ','))
1.20697 ++ ++ options;
1.20698 ++ /* Skip forward past seperators. */
1.20699 ++ while (ISSPACE (*options) || (*options == ','))
1.20700 ++ ++ options;
1.20701 ++ }
1.20702 ++}
1.20703 ++
1.20704 ++int
1.20705 ++print_insn_avr32(bfd_vma pc, struct disassemble_info *info)
1.20706 ++{
1.20707 ++ bfd_vma insn_word;
1.20708 ++ const struct avr32_opcode *opc;
1.20709 ++
1.20710 ++ if (info->disassembler_options)
1.20711 ++ {
1.20712 ++ parse_disassembler_options (info->disassembler_options);
1.20713 ++
1.20714 ++ /* To avoid repeated parsing of these options, we remove them here. */
1.20715 ++ info->disassembler_options = NULL;
1.20716 ++ }
1.20717 ++
1.20718 ++ info->bytes_per_chunk = 1;
1.20719 ++ info->display_endian = BFD_ENDIAN_BIG;
1.20720 ++
1.20721 ++ if (read_insn_word(pc, &insn_word, info))
1.20722 ++ return -1;
1.20723 ++
1.20724 ++ opc = find_opcode(insn_word);
1.20725 ++ if (opc)
1.20726 ++ {
1.20727 ++ print_opcode(insn_word, opc, pc, info);
1.20728 ++ return opc->size;
1.20729 ++ }
1.20730 ++ else
1.20731 ++ {
1.20732 ++ info->fprintf_func(info->stream, _("*unknown*"));
1.20733 ++ return 2;
1.20734 ++ }
1.20735 ++
1.20736 ++}
1.20737 ++
1.20738 ++void
1.20739 ++print_avr32_disassembler_options (FILE *stream ATTRIBUTE_UNUSED)
1.20740 ++{
1.20741 ++
1.20742 ++}
1.20743 +--- /dev/null
1.20744 ++++ b/opcodes/avr32-opc.c
1.20745 +@@ -0,0 +1,6932 @@
1.20746 ++/* Opcode tables for AVR32.
1.20747 ++ Copyright 2005, 2006 Atmel Corporation.
1.20748 ++
1.20749 ++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
1.20750 ++
1.20751 ++ This file is part of libopcodes.
1.20752 ++
1.20753 ++ This program is free software; you can redistribute it and/or
1.20754 ++ modify it under the terms of the GNU General Public License as
1.20755 ++ published by the Free Software Foundation; either version 2 of the
1.20756 ++ License, or (at your option) any later version.
1.20757 ++
1.20758 ++ This program is distributed in the hope that it will be useful, but
1.20759 ++ WITHOUT ANY WARRANTY; without even the implied warranty of
1.20760 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1.20761 ++ General Public License for more details.
1.20762 ++
1.20763 ++ You should have received a copy of the GNU General Public License
1.20764 ++ along with this program; if not, write to the Free Software
1.20765 ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1.20766 ++ 02111-1307, USA. */
1.20767 ++
1.20768 ++#include <stdlib.h>
1.20769 ++#include <assert.h>
1.20770 ++
1.20771 ++#include "avr32-opc.h"
1.20772 ++
1.20773 ++#define PICO_CPNO 1
1.20774 ++
1.20775 ++void
1.20776 ++avr32_insert_simple(const struct avr32_ifield *field,
1.20777 ++ void *buf, unsigned long value)
1.20778 ++{
1.20779 ++ bfd_vma word;
1.20780 ++
1.20781 ++ word = bfd_getb32(buf);
1.20782 ++ word &= ~field->mask;
1.20783 ++ word |= (value << field->shift) & field->mask;
1.20784 ++ bfd_putb32(word, buf);
1.20785 ++}
1.20786 ++
1.20787 ++void
1.20788 ++avr32_insert_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
1.20789 ++ void *buf, unsigned long value)
1.20790 ++{
1.20791 ++ char *opcode = buf;
1.20792 ++
1.20793 ++ opcode[0] = (opcode[0] & 0xe1) | (value & 0x1e);
1.20794 ++ opcode[1] = (opcode[1] & 0xef) | ((value & 1) << 4);
1.20795 ++}
1.20796 ++
1.20797 ++void
1.20798 ++avr32_insert_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
1.20799 ++ void *buf, unsigned long value)
1.20800 ++{
1.20801 ++ char *opcode = buf;
1.20802 ++
1.20803 ++ opcode[0] = (opcode[0] & 0xf0) | ((value & 0xf0) >> 4);
1.20804 ++ opcode[1] = ((opcode[1] & 0x0c) | ((value & 0x0f) << 4)
1.20805 ++ | ((value & 0x300) >> 8));
1.20806 ++}
1.20807 ++
1.20808 ++
1.20809 ++void
1.20810 ++avr32_insert_k21(const struct avr32_ifield *field,
1.20811 ++ void *buf, unsigned long value)
1.20812 ++{
1.20813 ++ bfd_vma word;
1.20814 ++ bfd_vma k21;
1.20815 ++
1.20816 ++ word = bfd_getb32(buf);
1.20817 ++ word &= ~field->mask;
1.20818 ++ k21 = ((value & 0xffff) | ((value & 0x10000) << 4)
1.20819 ++ | ((value & 0x1e0000) << 8));
1.20820 ++ assert(!(k21 & ~field->mask));
1.20821 ++ word |= k21;
1.20822 ++ bfd_putb32(word, buf);
1.20823 ++}
1.20824 ++
1.20825 ++void
1.20826 ++avr32_insert_cpop(const struct avr32_ifield *field,
1.20827 ++ void *buf, unsigned long value)
1.20828 ++{
1.20829 ++ bfd_vma word;
1.20830 ++
1.20831 ++ word = bfd_getb32(buf);
1.20832 ++ word &= ~field->mask;
1.20833 ++ word |= (((value & 0x1e) << 15) | ((value & 0x60) << 20)
1.20834 ++ | ((value & 0x01) << 12));
1.20835 ++ bfd_putb32(word, buf);
1.20836 ++}
1.20837 ++
1.20838 ++void
1.20839 ++avr32_insert_k12cp(const struct avr32_ifield *field,
1.20840 ++ void *buf, unsigned long value)
1.20841 ++{
1.20842 ++ bfd_vma word;
1.20843 ++
1.20844 ++ word = bfd_getb32(buf);
1.20845 ++ word &= ~field->mask;
1.20846 ++ word |= ((value & 0xf00) << 4) | (value & 0xff);
1.20847 ++ bfd_putb32(word, buf);
1.20848 ++}
1.20849 ++
1.20850 ++void avr32_extract_simple(const struct avr32_ifield *field,
1.20851 ++ void *buf, unsigned long *value)
1.20852 ++{
1.20853 ++ /* XXX: The disassembler has done any necessary byteswapping already */
1.20854 ++ bfd_vma word = *(bfd_vma *)buf;
1.20855 ++
1.20856 ++ *value = (word & field->mask) >> field->shift;
1.20857 ++}
1.20858 ++
1.20859 ++void avr32_extract_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
1.20860 ++ void *buf, unsigned long *value)
1.20861 ++{
1.20862 ++ bfd_vma word = *(bfd_vma *)buf;
1.20863 ++
1.20864 ++ *value = ((word >> 20) & 1) | ((word >> 24) & 0x1e);
1.20865 ++}
1.20866 ++
1.20867 ++void avr32_extract_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
1.20868 ++ void *buf, unsigned long *value)
1.20869 ++{
1.20870 ++ bfd_vma word = *(bfd_vma *)buf;
1.20871 ++
1.20872 ++ *value = ((word >> 8) & 0x300) | ((word >> 20) & 0xff);
1.20873 ++}
1.20874 ++
1.20875 ++void avr32_extract_k21(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
1.20876 ++ void *buf, unsigned long *value)
1.20877 ++{
1.20878 ++ bfd_vma word = *(bfd_vma *)buf;
1.20879 ++
1.20880 ++ *value = ((word & 0xffff) | ((word >> 4) & 0x10000)
1.20881 ++ | ((word >> 8) & 0x1e0000));
1.20882 ++}
1.20883 ++
1.20884 ++void avr32_extract_cpop(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
1.20885 ++ void *buf, unsigned long *value)
1.20886 ++{
1.20887 ++ bfd_vma word = *(bfd_vma *)buf;
1.20888 ++
1.20889 ++ *value = (((word >> 12) & 1) | ((word >> 15) & 0x1e)
1.20890 ++ | ((word >> 20) & 0x60));
1.20891 ++}
1.20892 ++
1.20893 ++void avr32_extract_k12cp(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
1.20894 ++ void *buf, unsigned long *value)
1.20895 ++{
1.20896 ++ bfd_vma word = *(bfd_vma *)buf;
1.20897 ++
1.20898 ++ *value = ((word >> 4) & 0xf00) | (word & 0xff);
1.20899 ++}
1.20900 ++
1.20901 ++
1.20902 ++#define IFLD(id, bitsz, shift, mask, func) \
1.20903 ++ { AVR32_IFIELD_##id, bitsz, shift, mask, \
1.20904 ++ avr32_insert_##func, avr32_extract_##func }
1.20905 ++
1.20906 ++const struct avr32_ifield avr32_ifield_table[] =
1.20907 ++ {
1.20908 ++ IFLD(RX, 4, 25, 0x1e000000, simple),
1.20909 ++ IFLD(RY, 4, 16, 0x000f0000, simple),
1.20910 ++ IFLD(COND4C, 4, 20, 0x00f00000, simple),
1.20911 ++ IFLD(K8C, 8, 20, 0x0ff00000, simple),
1.20912 ++ IFLD(K7C, 7, 20, 0x07f00000, simple),
1.20913 ++ IFLD(K5C, 5, 20, 0x01f00000, simple),
1.20914 ++ IFLD(K3, 3, 20, 0x00700000, simple),
1.20915 ++ IFLD(RY_DW, 3, 17, 0x000e0000, simple),
1.20916 ++ IFLD(COND4E, 4, 8, 0x00000f00, simple),
1.20917 ++ IFLD(K8E, 8, 0, 0x000000ff, simple),
1.20918 ++ IFLD(BIT5C, 5, 20, 0x1e100000, bit5c),
1.20919 ++ IFLD(COND3, 3, 16, 0x00070000, simple),
1.20920 ++ IFLD(K10, 10, 16, 0x0ff30000, k10),
1.20921 ++ IFLD(POPM, 9, 19, 0x0ff80000, simple),
1.20922 ++ IFLD(K2, 2, 4, 0x00000030, simple),
1.20923 ++ IFLD(RD_E, 4, 0, 0x0000000f, simple),
1.20924 ++ IFLD(RD_DW, 3, 1, 0x0000000e, simple),
1.20925 ++ IFLD(X, 1, 5, 0x00000020, simple),
1.20926 ++ IFLD(Y, 1, 4, 0x00000010, simple),
1.20927 ++ IFLD(X2, 1, 13, 0x00002000, simple),
1.20928 ++ IFLD(Y2, 1, 12, 0x00001000, simple),
1.20929 ++ IFLD(K5E, 5, 0, 0x0000001f, simple),
1.20930 ++ IFLD(PART2, 2, 0, 0x00000003, simple),
1.20931 ++ IFLD(PART1, 1, 0, 0x00000001, simple),
1.20932 ++ IFLD(K16, 16, 0, 0x0000ffff, simple),
1.20933 ++ IFLD(CACHEOP, 5, 11, 0x0000f800, simple),
1.20934 ++ IFLD(K11, 11, 0, 0x000007ff, simple),
1.20935 ++ IFLD(K21, 21, 0, 0x1e10ffff, k21),
1.20936 ++ IFLD(CPOP, 7, 12, 0x060f1000, cpop),
1.20937 ++ IFLD(CPNO, 3, 13, 0x0000e000, simple),
1.20938 ++ IFLD(CRD_RI, 4, 8, 0x00000f00, simple),
1.20939 ++ IFLD(CRX, 4, 4, 0x000000f0, simple),
1.20940 ++ IFLD(CRY, 4, 0, 0x0000000f, simple),
1.20941 ++ IFLD(K7E, 7, 0, 0x0000007f, simple),
1.20942 ++ IFLD(CRD_DW, 3, 9, 0x00000e00, simple),
1.20943 ++ IFLD(PART1_K12, 1, 12, 0x00001000, simple),
1.20944 ++ IFLD(PART2_K12, 2, 12, 0x00003000, simple),
1.20945 ++ IFLD(K12, 12, 0, 0x00000fff, simple),
1.20946 ++ IFLD(S5, 5, 5, 0x000003e0, simple),
1.20947 ++ IFLD(K5E2, 5, 4, 0x000001f0, simple),
1.20948 ++ IFLD(K4, 4, 20, 0x00f00000, simple),
1.20949 ++ IFLD(COND4E2, 4, 4, 0x000000f0, simple),
1.20950 ++ IFLD(K8E2, 8, 4, 0x00000ff0, simple),
1.20951 ++ IFLD(K6, 6, 20, 0x03f00000, simple),
1.20952 ++ IFLD(MEM15, 15, 0, 0x00007fff, simple),
1.20953 ++ IFLD(MEMB5, 5, 15, 0x000f8000, simple),
1.20954 ++ IFLD(W, 1, 25, 0x02000000, simple),
1.20955 ++ /* Coprocessor Multiple High/Low */
1.20956 ++ IFLD(CM_HL, 1, 8, 0x00000100, simple),
1.20957 ++ IFLD(K12CP, 12 ,0, 0x0000f0ff, k12cp),
1.20958 ++ IFLD(K9E, 9 ,0, 0x000001ff, simple),
1.20959 ++ };
1.20960 ++#undef IFLD
1.20961 ++
1.20962 ++
1.20963 ++struct avr32_opcode avr32_opc_table[] =
1.20964 ++ {
1.20965 ++ {
1.20966 ++ AVR32_OPC_ABS, 2, 0x5c400000, 0xfff00000,
1.20967 ++ &avr32_syntax_table[AVR32_SYNTAX_ABS],
1.20968 ++ BFD_RELOC_UNUSED, 1, -1,
1.20969 ++ {
1.20970 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.20971 ++ }
1.20972 ++ },
1.20973 ++ {
1.20974 ++ AVR32_OPC_ACALL, 2, 0xd0000000, 0xf00f0000,
1.20975 ++ &avr32_syntax_table[AVR32_SYNTAX_ACALL],
1.20976 ++ BFD_RELOC_UNUSED, 1, -1,
1.20977 ++ {
1.20978 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.20979 ++ },
1.20980 ++ },
1.20981 ++ {
1.20982 ++ AVR32_OPC_ACR, 2, 0x5c000000, 0xfff00000,
1.20983 ++ &avr32_syntax_table[AVR32_SYNTAX_ACR],
1.20984 ++ BFD_RELOC_UNUSED, 1, -1,
1.20985 ++ {
1.20986 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.20987 ++ },
1.20988 ++ },
1.20989 ++ {
1.20990 ++ AVR32_OPC_ADC, 4, 0xe0000040, 0xe1f0fff0,
1.20991 ++ &avr32_syntax_table[AVR32_SYNTAX_ADC],
1.20992 ++ BFD_RELOC_UNUSED, 3, -1,
1.20993 ++ {
1.20994 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.20995 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.20996 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.20997 ++ },
1.20998 ++ },
1.20999 ++ {
1.21000 ++ AVR32_OPC_ADD1, 2, 0x00000000, 0xe1f00000,
1.21001 ++ &avr32_syntax_table[AVR32_SYNTAX_ADD1],
1.21002 ++ BFD_RELOC_UNUSED, 2, -1,
1.21003 ++ {
1.21004 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21005 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21006 ++ },
1.21007 ++ },
1.21008 ++ {
1.21009 ++ AVR32_OPC_ADD2, 4, 0xe0000000, 0xe1f0ffc0,
1.21010 ++ &avr32_syntax_table[AVR32_SYNTAX_ADD2],
1.21011 ++ BFD_RELOC_UNUSED, 4, -1,
1.21012 ++ {
1.21013 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21014 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21015 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21016 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.21017 ++ },
1.21018 ++ },
1.21019 ++ {
1.21020 ++ AVR32_OPC_ADDABS, 4, 0xe0000e40, 0xe1f0fff0,
1.21021 ++ &avr32_syntax_table[AVR32_SYNTAX_ADDABS],
1.21022 ++ BFD_RELOC_UNUSED, 3, -1,
1.21023 ++ {
1.21024 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21025 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21026 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21027 ++ },
1.21028 ++ },
1.21029 ++ {
1.21030 ++ AVR32_OPC_ADDHH_W, 4, 0xe0000e00, 0xe1f0ffc0,
1.21031 ++ &avr32_syntax_table[AVR32_SYNTAX_ADDHH_W],
1.21032 ++ BFD_RELOC_UNUSED, 5, -1,
1.21033 ++ {
1.21034 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21035 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21036 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.21037 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21038 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.21039 ++ },
1.21040 ++ },
1.21041 ++ {
1.21042 ++ AVR32_OPC_AND1, 2, 0x00600000, 0xe1f00000,
1.21043 ++ &avr32_syntax_table[AVR32_SYNTAX_AND1],
1.21044 ++ BFD_RELOC_UNUSED, 2, -1,
1.21045 ++ {
1.21046 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21047 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21048 ++ },
1.21049 ++ },
1.21050 ++ {
1.21051 ++ AVR32_OPC_AND2, 4, 0xe1e00000, 0xe1f0fe00,
1.21052 ++ &avr32_syntax_table[AVR32_SYNTAX_AND2],
1.21053 ++ BFD_RELOC_UNUSED, 4, -1,
1.21054 ++ {
1.21055 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21056 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21057 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21058 ++ &avr32_ifield_table[AVR32_IFIELD_K5E2],
1.21059 ++ },
1.21060 ++ },
1.21061 ++ {
1.21062 ++ AVR32_OPC_AND3, 4, 0xe1e00200, 0xe1f0fe00,
1.21063 ++ &avr32_syntax_table[AVR32_SYNTAX_AND3],
1.21064 ++ BFD_RELOC_UNUSED, 4, -1,
1.21065 ++ {
1.21066 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21067 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21068 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21069 ++ &avr32_ifield_table[AVR32_IFIELD_K5E2],
1.21070 ++ },
1.21071 ++ },
1.21072 ++ {
1.21073 ++ AVR32_OPC_ANDH, 4, 0xe4100000, 0xfff00000,
1.21074 ++ &avr32_syntax_table[AVR32_SYNTAX_ANDH],
1.21075 ++ BFD_RELOC_AVR32_16U, 2, 1,
1.21076 ++ {
1.21077 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21078 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.21079 ++ },
1.21080 ++ },
1.21081 ++ {
1.21082 ++ AVR32_OPC_ANDH_COH, 4, 0xe6100000, 0xfff00000,
1.21083 ++ &avr32_syntax_table[AVR32_SYNTAX_ANDH_COH],
1.21084 ++ BFD_RELOC_AVR32_16U, 2, 1,
1.21085 ++ {
1.21086 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21087 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.21088 ++ },
1.21089 ++ },
1.21090 ++ {
1.21091 ++ AVR32_OPC_ANDL, 4, 0xe0100000, 0xfff00000,
1.21092 ++ &avr32_syntax_table[AVR32_SYNTAX_ANDL],
1.21093 ++ BFD_RELOC_AVR32_16U, 2, 1,
1.21094 ++ {
1.21095 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21096 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.21097 ++ },
1.21098 ++ },
1.21099 ++ {
1.21100 ++ AVR32_OPC_ANDL_COH, 4, 0xe2100000, 0xfff00000,
1.21101 ++ &avr32_syntax_table[AVR32_SYNTAX_ANDL_COH],
1.21102 ++ BFD_RELOC_AVR32_16U, 2, 1,
1.21103 ++ {
1.21104 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21105 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.21106 ++ },
1.21107 ++ },
1.21108 ++ {
1.21109 ++ AVR32_OPC_ANDN, 2, 0x00800000, 0xe1f00000,
1.21110 ++ &avr32_syntax_table[AVR32_SYNTAX_ANDN],
1.21111 ++ BFD_RELOC_UNUSED, 2, -1,
1.21112 ++ {
1.21113 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21114 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21115 ++ },
1.21116 ++ },
1.21117 ++ {
1.21118 ++ AVR32_OPC_ASR1, 4, 0xe0000840, 0xe1f0fff0,
1.21119 ++ &avr32_syntax_table[AVR32_SYNTAX_ASR1],
1.21120 ++ BFD_RELOC_UNUSED, 3, -1,
1.21121 ++ {
1.21122 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21123 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21124 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21125 ++ },
1.21126 ++ },
1.21127 ++ {
1.21128 ++ AVR32_OPC_ASR3, 4, 0xe0001400, 0xe1f0ffe0,
1.21129 ++ &avr32_syntax_table[AVR32_SYNTAX_ASR3],
1.21130 ++ BFD_RELOC_UNUSED, 3, -1,
1.21131 ++ {
1.21132 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21133 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21134 ++ &avr32_ifield_table[AVR32_IFIELD_K5E],
1.21135 ++ },
1.21136 ++ },
1.21137 ++ {
1.21138 ++ AVR32_OPC_ASR2, 2, 0xa1400000, 0xe1e00000,
1.21139 ++ &avr32_syntax_table[AVR32_SYNTAX_ASR2],
1.21140 ++ BFD_RELOC_UNUSED, 2, -1,
1.21141 ++ {
1.21142 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21143 ++ &avr32_ifield_table[AVR32_IFIELD_BIT5C],
1.21144 ++ },
1.21145 ++ },
1.21146 ++ {
1.21147 ++ AVR32_OPC_BLD, 4, 0xedb00000, 0xfff0ffe0,
1.21148 ++ &avr32_syntax_table[AVR32_SYNTAX_BLD],
1.21149 ++ BFD_RELOC_UNUSED, 2, -1,
1.21150 ++ {
1.21151 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21152 ++ &avr32_ifield_table[AVR32_IFIELD_K5E],
1.21153 ++ },
1.21154 ++ },
1.21155 ++ {
1.21156 ++ AVR32_OPC_BREQ1, 2, 0xc0000000, 0xf00f0000,
1.21157 ++ &avr32_syntax_table[AVR32_SYNTAX_BREQ1],
1.21158 ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
1.21159 ++ {
1.21160 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.21161 ++ },
1.21162 ++ },
1.21163 ++ {
1.21164 ++ AVR32_OPC_BRNE1, 2, 0xc0010000, 0xf00f0000,
1.21165 ++ &avr32_syntax_table[AVR32_SYNTAX_BRNE1],
1.21166 ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
1.21167 ++ {
1.21168 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.21169 ++ },
1.21170 ++ },
1.21171 ++ {
1.21172 ++ AVR32_OPC_BRCC1, 2, 0xc0020000, 0xf00f0000,
1.21173 ++ &avr32_syntax_table[AVR32_SYNTAX_BRCC1],
1.21174 ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
1.21175 ++ {
1.21176 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.21177 ++ },
1.21178 ++ },
1.21179 ++ {
1.21180 ++ AVR32_OPC_BRCS1, 2, 0xc0030000, 0xf00f0000,
1.21181 ++ &avr32_syntax_table[AVR32_SYNTAX_BRCS1],
1.21182 ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
1.21183 ++ {
1.21184 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.21185 ++ },
1.21186 ++ },
1.21187 ++ {
1.21188 ++ AVR32_OPC_BRGE1, 2, 0xc0040000, 0xf00f0000,
1.21189 ++ &avr32_syntax_table[AVR32_SYNTAX_BRGE1],
1.21190 ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
1.21191 ++ {
1.21192 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.21193 ++ },
1.21194 ++ },
1.21195 ++ {
1.21196 ++ AVR32_OPC_BRLT1, 2, 0xc0050000, 0xf00f0000,
1.21197 ++ &avr32_syntax_table[AVR32_SYNTAX_BRLT1],
1.21198 ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
1.21199 ++ {
1.21200 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.21201 ++ },
1.21202 ++ },
1.21203 ++ {
1.21204 ++ AVR32_OPC_BRMI1, 2, 0xc0060000, 0xf00f0000,
1.21205 ++ &avr32_syntax_table[AVR32_SYNTAX_BRMI1],
1.21206 ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
1.21207 ++ {
1.21208 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.21209 ++ },
1.21210 ++ },
1.21211 ++ {
1.21212 ++ AVR32_OPC_BRPL1, 2, 0xc0070000, 0xf00f0000,
1.21213 ++ &avr32_syntax_table[AVR32_SYNTAX_BRPL1],
1.21214 ++ BFD_RELOC_AVR32_9H_PCREL, 1, 0,
1.21215 ++ {
1.21216 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.21217 ++ },
1.21218 ++ },
1.21219 ++ {
1.21220 ++ AVR32_OPC_BREQ2, 4, 0xe0800000, 0xe1ef0000,
1.21221 ++ &avr32_syntax_table[AVR32_SYNTAX_BREQ2],
1.21222 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21223 ++ {
1.21224 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21225 ++ },
1.21226 ++ },
1.21227 ++ {
1.21228 ++ AVR32_OPC_BRNE2, 4, 0xe0810000, 0xe1ef0000,
1.21229 ++ &avr32_syntax_table[AVR32_SYNTAX_BRNE2],
1.21230 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21231 ++ {
1.21232 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21233 ++ },
1.21234 ++ },
1.21235 ++ {
1.21236 ++ AVR32_OPC_BRCC2, 4, 0xe0820000, 0xe1ef0000,
1.21237 ++ &avr32_syntax_table[AVR32_SYNTAX_BRHS2],
1.21238 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21239 ++ {
1.21240 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21241 ++ },
1.21242 ++ },
1.21243 ++ {
1.21244 ++ AVR32_OPC_BRCS2, 4, 0xe0830000, 0xe1ef0000,
1.21245 ++ &avr32_syntax_table[AVR32_SYNTAX_BRLO2],
1.21246 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21247 ++ {
1.21248 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21249 ++ },
1.21250 ++ },
1.21251 ++ {
1.21252 ++ AVR32_OPC_BRGE2, 4, 0xe0840000, 0xe1ef0000,
1.21253 ++ &avr32_syntax_table[AVR32_SYNTAX_BRGE2],
1.21254 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21255 ++ {
1.21256 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21257 ++ },
1.21258 ++ },
1.21259 ++ {
1.21260 ++ AVR32_OPC_BRLT2, 4, 0xe0850000, 0xe1ef0000,
1.21261 ++ &avr32_syntax_table[AVR32_SYNTAX_BRLT2],
1.21262 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21263 ++ {
1.21264 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21265 ++ },
1.21266 ++ },
1.21267 ++ {
1.21268 ++ AVR32_OPC_BRMI2, 4, 0xe0860000, 0xe1ef0000,
1.21269 ++ &avr32_syntax_table[AVR32_SYNTAX_BRMI2],
1.21270 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21271 ++ {
1.21272 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21273 ++ },
1.21274 ++ },
1.21275 ++ {
1.21276 ++ AVR32_OPC_BRPL2, 4, 0xe0870000, 0xe1ef0000,
1.21277 ++ &avr32_syntax_table[AVR32_SYNTAX_BRPL2],
1.21278 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21279 ++ {
1.21280 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21281 ++ },
1.21282 ++ },
1.21283 ++ {
1.21284 ++ AVR32_OPC_BRLS, 4, 0xe0880000, 0xe1ef0000,
1.21285 ++ &avr32_syntax_table[AVR32_SYNTAX_BRLS],
1.21286 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21287 ++ {
1.21288 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21289 ++ },
1.21290 ++ },
1.21291 ++ {
1.21292 ++ AVR32_OPC_BRGT, 4, 0xe0890000, 0xe1ef0000,
1.21293 ++ &avr32_syntax_table[AVR32_SYNTAX_BRGT],
1.21294 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21295 ++ {
1.21296 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21297 ++ },
1.21298 ++ },
1.21299 ++ {
1.21300 ++ AVR32_OPC_BRLE, 4, 0xe08a0000, 0xe1ef0000,
1.21301 ++ &avr32_syntax_table[AVR32_SYNTAX_BRLE],
1.21302 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21303 ++ {
1.21304 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21305 ++ },
1.21306 ++ },
1.21307 ++ {
1.21308 ++ AVR32_OPC_BRHI, 4, 0xe08b0000, 0xe1ef0000,
1.21309 ++ &avr32_syntax_table[AVR32_SYNTAX_BRHI],
1.21310 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21311 ++ {
1.21312 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21313 ++ },
1.21314 ++ },
1.21315 ++ {
1.21316 ++ AVR32_OPC_BRVS, 4, 0xe08c0000, 0xe1ef0000,
1.21317 ++ &avr32_syntax_table[AVR32_SYNTAX_BRVS],
1.21318 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21319 ++ {
1.21320 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21321 ++ },
1.21322 ++ },
1.21323 ++ {
1.21324 ++ AVR32_OPC_BRVC, 4, 0xe08d0000, 0xe1ef0000,
1.21325 ++ &avr32_syntax_table[AVR32_SYNTAX_BRVC],
1.21326 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21327 ++ {
1.21328 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21329 ++ },
1.21330 ++ },
1.21331 ++ {
1.21332 ++ AVR32_OPC_BRQS, 4, 0xe08e0000, 0xe1ef0000,
1.21333 ++ &avr32_syntax_table[AVR32_SYNTAX_BRQS],
1.21334 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21335 ++ {
1.21336 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21337 ++ },
1.21338 ++ },
1.21339 ++ {
1.21340 ++ AVR32_OPC_BRAL, 4, 0xe08f0000, 0xe1ef0000,
1.21341 ++ &avr32_syntax_table[AVR32_SYNTAX_BRAL],
1.21342 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.21343 ++ {
1.21344 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21345 ++ },
1.21346 ++ },
1.21347 ++ {
1.21348 ++ AVR32_OPC_BREAKPOINT, 2, 0xd6730000, 0xffff0000,
1.21349 ++ &avr32_syntax_table[AVR32_SYNTAX_BREAKPOINT],
1.21350 ++ BFD_RELOC_UNUSED, 0, -1, { NULL },
1.21351 ++ },
1.21352 ++ {
1.21353 ++ AVR32_OPC_BREV, 2, 0x5c900000, 0xfff00000,
1.21354 ++ &avr32_syntax_table[AVR32_SYNTAX_BREV],
1.21355 ++ BFD_RELOC_UNUSED, 1, -1,
1.21356 ++ {
1.21357 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21358 ++ },
1.21359 ++ },
1.21360 ++ {
1.21361 ++ AVR32_OPC_BST, 4, 0xefb00000, 0xfff0ffe0,
1.21362 ++ &avr32_syntax_table[AVR32_SYNTAX_BST],
1.21363 ++ BFD_RELOC_UNUSED, 2, -1,
1.21364 ++ {
1.21365 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21366 ++ &avr32_ifield_table[AVR32_IFIELD_K5E],
1.21367 ++ },
1.21368 ++ },
1.21369 ++ {
1.21370 ++ AVR32_OPC_CACHE, 4, 0xf4100000, 0xfff00000,
1.21371 ++ &avr32_syntax_table[AVR32_SYNTAX_CACHE],
1.21372 ++ BFD_RELOC_UNUSED, 3, -1,
1.21373 ++ {
1.21374 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21375 ++ &avr32_ifield_table[AVR32_IFIELD_K11],
1.21376 ++ &avr32_ifield_table[AVR32_IFIELD_CACHEOP],
1.21377 ++ },
1.21378 ++ },
1.21379 ++ {
1.21380 ++ AVR32_OPC_CASTS_B, 2, 0x5c600000, 0xfff00000,
1.21381 ++ &avr32_syntax_table[AVR32_SYNTAX_CASTS_B],
1.21382 ++ BFD_RELOC_UNUSED, 1, -1,
1.21383 ++ {
1.21384 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21385 ++ },
1.21386 ++ },
1.21387 ++ {
1.21388 ++ AVR32_OPC_CASTS_H, 2, 0x5c800000, 0xfff00000,
1.21389 ++ &avr32_syntax_table[AVR32_SYNTAX_CASTS_H],
1.21390 ++ BFD_RELOC_UNUSED, 1, -1,
1.21391 ++ {
1.21392 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21393 ++ },
1.21394 ++ },
1.21395 ++ {
1.21396 ++ AVR32_OPC_CASTU_B, 2, 0x5c500000, 0xfff00000,
1.21397 ++ &avr32_syntax_table[AVR32_SYNTAX_CASTU_B],
1.21398 ++ BFD_RELOC_UNUSED, 1, -1,
1.21399 ++ {
1.21400 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21401 ++ },
1.21402 ++ },
1.21403 ++ {
1.21404 ++ AVR32_OPC_CASTU_H, 2, 0x5c700000, 0xfff00000,
1.21405 ++ &avr32_syntax_table[AVR32_SYNTAX_CASTU_H],
1.21406 ++ BFD_RELOC_UNUSED, 1, -1,
1.21407 ++ {
1.21408 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21409 ++ },
1.21410 ++ },
1.21411 ++ {
1.21412 ++ AVR32_OPC_CBR, 2, 0xa1c00000, 0xe1e00000,
1.21413 ++ &avr32_syntax_table[AVR32_SYNTAX_CBR],
1.21414 ++ BFD_RELOC_UNUSED, 2, -1,
1.21415 ++ {
1.21416 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21417 ++ &avr32_ifield_table[AVR32_IFIELD_BIT5C],
1.21418 ++ },
1.21419 ++ },
1.21420 ++ {
1.21421 ++ AVR32_OPC_CLZ, 4, 0xe0001200, 0xe1f0ffff,
1.21422 ++ &avr32_syntax_table[AVR32_SYNTAX_CLZ],
1.21423 ++ BFD_RELOC_UNUSED, 2, -1,
1.21424 ++ {
1.21425 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21426 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21427 ++ },
1.21428 ++ },
1.21429 ++ {
1.21430 ++ AVR32_OPC_COM, 2, 0x5cd00000, 0xfff00000,
1.21431 ++ &avr32_syntax_table[AVR32_SYNTAX_COM],
1.21432 ++ BFD_RELOC_UNUSED, 1, -1,
1.21433 ++ {
1.21434 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21435 ++ },
1.21436 ++ },
1.21437 ++ {
1.21438 ++ AVR32_OPC_COP, 4, 0xe1a00000, 0xf9f00000,
1.21439 ++ &avr32_syntax_table[AVR32_SYNTAX_COP],
1.21440 ++ BFD_RELOC_UNUSED, 5, -1,
1.21441 ++ {
1.21442 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.21443 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
1.21444 ++ &avr32_ifield_table[AVR32_IFIELD_CRX],
1.21445 ++ &avr32_ifield_table[AVR32_IFIELD_CRY],
1.21446 ++ &avr32_ifield_table[AVR32_IFIELD_CPOP],
1.21447 ++ },
1.21448 ++ },
1.21449 ++ {
1.21450 ++ AVR32_OPC_CP_B, 4, 0xe0001800, 0xe1f0ffff,
1.21451 ++ &avr32_syntax_table[AVR32_SYNTAX_CP_B],
1.21452 ++ BFD_RELOC_UNUSED, 2, -1,
1.21453 ++ {
1.21454 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21455 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21456 ++ },
1.21457 ++ },
1.21458 ++ {
1.21459 ++ AVR32_OPC_CP_H, 4, 0xe0001900, 0xe1f0ffff,
1.21460 ++ &avr32_syntax_table[AVR32_SYNTAX_CP_H],
1.21461 ++ BFD_RELOC_UNUSED, 2, -1,
1.21462 ++ {
1.21463 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21464 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21465 ++ },
1.21466 ++ },
1.21467 ++ {
1.21468 ++ AVR32_OPC_CP_W1, 2, 0x00300000, 0xe1f00000,
1.21469 ++ &avr32_syntax_table[AVR32_SYNTAX_CP_W1],
1.21470 ++ BFD_RELOC_UNUSED, 2, -1,
1.21471 ++ {
1.21472 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21473 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21474 ++ },
1.21475 ++ },
1.21476 ++ {
1.21477 ++ AVR32_OPC_CP_W2, 2, 0x58000000, 0xfc000000,
1.21478 ++ &avr32_syntax_table[AVR32_SYNTAX_CP_W2],
1.21479 ++ BFD_RELOC_AVR32_6S, 2, 1,
1.21480 ++ {
1.21481 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21482 ++ &avr32_ifield_table[AVR32_IFIELD_K6],
1.21483 ++ },
1.21484 ++ },
1.21485 ++ {
1.21486 ++ AVR32_OPC_CP_W3, 4, 0xe0400000, 0xe1e00000,
1.21487 ++ &avr32_syntax_table[AVR32_SYNTAX_CP_W3],
1.21488 ++ BFD_RELOC_AVR32_21S, 2, 1,
1.21489 ++ {
1.21490 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21491 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.21492 ++ },
1.21493 ++ },
1.21494 ++ {
1.21495 ++ AVR32_OPC_CPC1, 4, 0xe0001300, 0xe1f0ffff,
1.21496 ++ &avr32_syntax_table[AVR32_SYNTAX_CPC1],
1.21497 ++ BFD_RELOC_UNUSED, 2, -1,
1.21498 ++ {
1.21499 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21500 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21501 ++ },
1.21502 ++ },
1.21503 ++ {
1.21504 ++ AVR32_OPC_CPC2, 2, 0x5c200000, 0xfff00000,
1.21505 ++ &avr32_syntax_table[AVR32_SYNTAX_CPC2],
1.21506 ++ BFD_RELOC_UNUSED, 1, -1,
1.21507 ++ {
1.21508 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21509 ++ },
1.21510 ++ },
1.21511 ++ {
1.21512 ++ AVR32_OPC_CSRF, 2, 0xd4030000, 0xfe0f0000,
1.21513 ++ &avr32_syntax_table[AVR32_SYNTAX_CSRF],
1.21514 ++ BFD_RELOC_UNUSED, 1, -1,
1.21515 ++ {
1.21516 ++ &avr32_ifield_table[AVR32_IFIELD_K5C],
1.21517 ++ },
1.21518 ++ },
1.21519 ++ {
1.21520 ++ AVR32_OPC_CSRFCZ, 2, 0xd0030000, 0xfe0f0000,
1.21521 ++ &avr32_syntax_table[AVR32_SYNTAX_CSRFCZ],
1.21522 ++ BFD_RELOC_UNUSED, 1, -1,
1.21523 ++ {
1.21524 ++ &avr32_ifield_table[AVR32_IFIELD_K5C],
1.21525 ++ },
1.21526 ++ },
1.21527 ++ {
1.21528 ++ AVR32_OPC_DIVS, 4, 0xe0000c00, 0xe1f0ffc0,
1.21529 ++ &avr32_syntax_table[AVR32_SYNTAX_DIVS],
1.21530 ++ BFD_RELOC_UNUSED, 3, -1,
1.21531 ++ {
1.21532 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21533 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21534 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21535 ++ },
1.21536 ++ },
1.21537 ++ {
1.21538 ++ AVR32_OPC_DIVU, 4, 0xe0000d00, 0xe1f0ffc0,
1.21539 ++ &avr32_syntax_table[AVR32_SYNTAX_DIVU],
1.21540 ++ BFD_RELOC_UNUSED, 3, -1,
1.21541 ++ {
1.21542 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21543 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21544 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21545 ++ },
1.21546 ++ },
1.21547 ++ {
1.21548 ++ AVR32_OPC_EOR1, 2, 0x00500000, 0xe1f00000,
1.21549 ++ &avr32_syntax_table[AVR32_SYNTAX_EOR1],
1.21550 ++ BFD_RELOC_UNUSED, 2, -1,
1.21551 ++ {
1.21552 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21553 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21554 ++ },
1.21555 ++ },
1.21556 ++ {
1.21557 ++ AVR32_OPC_EOR2, 4, 0xe1e02000, 0xe1f0fe00,
1.21558 ++ &avr32_syntax_table[AVR32_SYNTAX_EOR2],
1.21559 ++ BFD_RELOC_UNUSED, 4, -1,
1.21560 ++ {
1.21561 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21562 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21563 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21564 ++ &avr32_ifield_table[AVR32_IFIELD_K5E2],
1.21565 ++ }
1.21566 ++ },
1.21567 ++ {
1.21568 ++ AVR32_OPC_EOR3, 4, 0xe1e02200, 0xe1f0fe00,
1.21569 ++ &avr32_syntax_table[AVR32_SYNTAX_EOR3],
1.21570 ++ BFD_RELOC_UNUSED, 4, -1,
1.21571 ++ {
1.21572 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21573 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21574 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21575 ++ &avr32_ifield_table[AVR32_IFIELD_K5E2],
1.21576 ++ }
1.21577 ++ },
1.21578 ++ {
1.21579 ++ AVR32_OPC_EORL, 4, 0xec100000, 0xfff00000,
1.21580 ++ &avr32_syntax_table[AVR32_SYNTAX_EORL],
1.21581 ++ BFD_RELOC_AVR32_16U, 2, 1,
1.21582 ++ {
1.21583 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21584 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.21585 ++ },
1.21586 ++ },
1.21587 ++ {
1.21588 ++ AVR32_OPC_EORH, 4, 0xee100000, 0xfff00000,
1.21589 ++ &avr32_syntax_table[AVR32_SYNTAX_EORH],
1.21590 ++ BFD_RELOC_AVR32_16U, 2, 1,
1.21591 ++ {
1.21592 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21593 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.21594 ++ },
1.21595 ++ },
1.21596 ++ {
1.21597 ++ AVR32_OPC_FRS, 2, 0xd7430000, 0xffff0000,
1.21598 ++ &avr32_syntax_table[AVR32_SYNTAX_FRS],
1.21599 ++ BFD_RELOC_UNUSED, 0, -1, { NULL },
1.21600 ++ },
1.21601 ++ {
1.21602 ++ AVR32_OPC_ICALL, 2, 0x5d100000, 0xfff00000,
1.21603 ++ &avr32_syntax_table[AVR32_SYNTAX_ICALL],
1.21604 ++ BFD_RELOC_UNUSED, 1, -1,
1.21605 ++ {
1.21606 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21607 ++ },
1.21608 ++ },
1.21609 ++ {
1.21610 ++ AVR32_OPC_INCJOSP, 2, 0xd6830000, 0xff8f0000,
1.21611 ++ &avr32_syntax_table[AVR32_SYNTAX_INCJOSP],
1.21612 ++ BFD_RELOC_UNUSED, 1, -1,
1.21613 ++ {
1.21614 ++ &avr32_ifield_table[AVR32_IFIELD_K3],
1.21615 ++ },
1.21616 ++ },
1.21617 ++ {
1.21618 ++ AVR32_OPC_LD_D1, 2, 0xa1010000, 0xe1f10000,
1.21619 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_D1],
1.21620 ++ BFD_RELOC_UNUSED, 2, -1,
1.21621 ++ {
1.21622 ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
1.21623 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21624 ++ },
1.21625 ++ },
1.21626 ++ {
1.21627 ++ AVR32_OPC_LD_D2, 2, 0xa1100000, 0xe1f10000,
1.21628 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_D2],
1.21629 ++ BFD_RELOC_UNUSED, 2, -1,
1.21630 ++ {
1.21631 ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
1.21632 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21633 ++ },
1.21634 ++ },
1.21635 ++ {
1.21636 ++ AVR32_OPC_LD_D3, 2, 0xa1000000, 0xe1f10000,
1.21637 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_D3],
1.21638 ++ BFD_RELOC_UNUSED, 2, -1,
1.21639 ++ {
1.21640 ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
1.21641 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21642 ++ },
1.21643 ++ },
1.21644 ++ {
1.21645 ++ AVR32_OPC_LD_D5, 4, 0xe0000200, 0xe1f0ffc1,
1.21646 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_D5],
1.21647 ++ BFD_RELOC_UNUSED, 4, -1,
1.21648 ++ {
1.21649 ++ &avr32_ifield_table[AVR32_IFIELD_RD_DW],
1.21650 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21651 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21652 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.21653 ++ },
1.21654 ++ },
1.21655 ++ {
1.21656 ++ AVR32_OPC_LD_D4, 4, 0xe0e00000, 0xe1f10000,
1.21657 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_D4],
1.21658 ++ BFD_RELOC_AVR32_16S, 3, 2,
1.21659 ++ {
1.21660 ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
1.21661 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21662 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.21663 ++ },
1.21664 ++ },
1.21665 ++ {
1.21666 ++ AVR32_OPC_LD_SB2, 4, 0xe0000600, 0xe1f0ffc0,
1.21667 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SB2],
1.21668 ++ BFD_RELOC_UNUSED, 4, -1,
1.21669 ++ {
1.21670 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21671 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21672 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21673 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.21674 ++ },
1.21675 ++ },
1.21676 ++ {
1.21677 ++ AVR32_OPC_LD_SB1, 4, 0xe1200000, 0xe1f00000,
1.21678 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SB1],
1.21679 ++ BFD_RELOC_AVR32_16S, 3, -1,
1.21680 ++ {
1.21681 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21682 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21683 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.21684 ++ },
1.21685 ++ },
1.21686 ++ {
1.21687 ++ AVR32_OPC_LD_UB1, 2, 0x01300000, 0xe1f00000,
1.21688 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB1],
1.21689 ++ BFD_RELOC_UNUSED, 2, -1,
1.21690 ++ {
1.21691 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21692 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21693 ++ },
1.21694 ++ },
1.21695 ++ {
1.21696 ++ AVR32_OPC_LD_UB2, 2, 0x01700000, 0xe1f00000,
1.21697 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB2],
1.21698 ++ BFD_RELOC_UNUSED, 2, -1,
1.21699 ++ {
1.21700 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21701 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21702 ++ },
1.21703 ++ },
1.21704 ++ {
1.21705 ++ AVR32_OPC_LD_UB5, 4, 0xe0000700, 0xe1f0ffc0,
1.21706 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB5],
1.21707 ++ BFD_RELOC_UNUSED, 4, -1,
1.21708 ++ {
1.21709 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21710 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21711 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21712 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.21713 ++ },
1.21714 ++ },
1.21715 ++ {
1.21716 ++ AVR32_OPC_LD_UB3, 2, 0x01800000, 0xe1800000,
1.21717 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB3],
1.21718 ++ BFD_RELOC_AVR32_3U, 3, 2,
1.21719 ++ {
1.21720 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21721 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21722 ++ &avr32_ifield_table[AVR32_IFIELD_K3],
1.21723 ++ },
1.21724 ++ },
1.21725 ++ {
1.21726 ++ AVR32_OPC_LD_UB4, 4, 0xe1300000, 0xe1f00000,
1.21727 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UB4],
1.21728 ++ BFD_RELOC_AVR32_16S, 3, 2,
1.21729 ++ {
1.21730 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21731 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21732 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.21733 ++ },
1.21734 ++ },
1.21735 ++ {
1.21736 ++ AVR32_OPC_LD_SH1, 2, 0x01100000, 0xe1f00000,
1.21737 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH1],
1.21738 ++ BFD_RELOC_UNUSED, 2, -1,
1.21739 ++ {
1.21740 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21741 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21742 ++ },
1.21743 ++ },
1.21744 ++ {
1.21745 ++ AVR32_OPC_LD_SH2, 2, 0x01500000, 0xe1f00000,
1.21746 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH2],
1.21747 ++ BFD_RELOC_UNUSED, 2, -1,
1.21748 ++ {
1.21749 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21750 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21751 ++ },
1.21752 ++ },
1.21753 ++ {
1.21754 ++ AVR32_OPC_LD_SH5, 4, 0xe0000400, 0xe1f0ffc0,
1.21755 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH5],
1.21756 ++ BFD_RELOC_UNUSED, 4, -1,
1.21757 ++ {
1.21758 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21759 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21760 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21761 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.21762 ++ },
1.21763 ++ },
1.21764 ++ {
1.21765 ++ AVR32_OPC_LD_SH3, 2, 0x80000000, 0xe1800000,
1.21766 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH3],
1.21767 ++ BFD_RELOC_AVR32_4UH, 3, 2,
1.21768 ++ {
1.21769 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21770 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21771 ++ &avr32_ifield_table[AVR32_IFIELD_K3],
1.21772 ++ },
1.21773 ++ },
1.21774 ++ {
1.21775 ++ AVR32_OPC_LD_SH4, 4, 0xe1000000, 0xe1f00000,
1.21776 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_SH4],
1.21777 ++ BFD_RELOC_AVR32_16S, 3, 2,
1.21778 ++ {
1.21779 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21780 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21781 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.21782 ++ },
1.21783 ++ },
1.21784 ++ {
1.21785 ++ AVR32_OPC_LD_UH1, 2, 0x01200000, 0xe1f00000,
1.21786 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH1],
1.21787 ++ BFD_RELOC_UNUSED, 2, -1,
1.21788 ++ {
1.21789 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21790 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21791 ++ },
1.21792 ++ },
1.21793 ++ {
1.21794 ++ AVR32_OPC_LD_UH2, 2, 0x01600000, 0xe1f00000,
1.21795 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH2],
1.21796 ++ BFD_RELOC_UNUSED, 2, -1,
1.21797 ++ {
1.21798 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21799 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21800 ++ },
1.21801 ++ },
1.21802 ++ {
1.21803 ++ AVR32_OPC_LD_UH5, 4, 0xe0000500, 0xe1f0ffc0,
1.21804 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH5],
1.21805 ++ BFD_RELOC_UNUSED, 4, -1,
1.21806 ++ {
1.21807 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21808 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21809 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21810 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.21811 ++ },
1.21812 ++ },
1.21813 ++ {
1.21814 ++ AVR32_OPC_LD_UH3, 2, 0x80800000, 0xe1800000,
1.21815 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH3],
1.21816 ++ BFD_RELOC_AVR32_4UH, 3, 2,
1.21817 ++ {
1.21818 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21819 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21820 ++ &avr32_ifield_table[AVR32_IFIELD_K3],
1.21821 ++ },
1.21822 ++ },
1.21823 ++ {
1.21824 ++ AVR32_OPC_LD_UH4, 4, 0xe1100000, 0xe1f00000,
1.21825 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_UH4],
1.21826 ++ BFD_RELOC_AVR32_16S, 3, 2,
1.21827 ++ {
1.21828 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21829 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21830 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.21831 ++ },
1.21832 ++ },
1.21833 ++ {
1.21834 ++ AVR32_OPC_LD_W1, 2, 0x01000000, 0xe1f00000,
1.21835 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_W1],
1.21836 ++ BFD_RELOC_UNUSED, 2, -1,
1.21837 ++ {
1.21838 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21839 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21840 ++ },
1.21841 ++ },
1.21842 ++ {
1.21843 ++ AVR32_OPC_LD_W2, 2, 0x01400000, 0xe1f00000,
1.21844 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_W2],
1.21845 ++ BFD_RELOC_UNUSED, 2, -1,
1.21846 ++ {
1.21847 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21848 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21849 ++ },
1.21850 ++ },
1.21851 ++ {
1.21852 ++ AVR32_OPC_LD_W5, 4, 0xe0000300, 0xe1f0ffc0,
1.21853 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_W5],
1.21854 ++ BFD_RELOC_UNUSED, 4, -1,
1.21855 ++ {
1.21856 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21857 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21858 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21859 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.21860 ++ },
1.21861 ++ },
1.21862 ++ {
1.21863 ++ AVR32_OPC_LD_W6, 4, 0xe0000f80, 0xe1f0ffc0,
1.21864 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_W6],
1.21865 ++ BFD_RELOC_UNUSED, 4, -1,
1.21866 ++ {
1.21867 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21868 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21869 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21870 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.21871 ++ },
1.21872 ++ },
1.21873 ++ {
1.21874 ++ AVR32_OPC_LD_W3, 2, 0x60000000, 0xe0000000,
1.21875 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_W3],
1.21876 ++ BFD_RELOC_AVR32_7UW, 3, 2,
1.21877 ++ {
1.21878 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21879 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21880 ++ &avr32_ifield_table[AVR32_IFIELD_K5C],
1.21881 ++ },
1.21882 ++ },
1.21883 ++ {
1.21884 ++ AVR32_OPC_LD_W4, 4, 0xe0f00000, 0xe1f00000,
1.21885 ++ &avr32_syntax_table[AVR32_SYNTAX_LD_W4],
1.21886 ++ BFD_RELOC_AVR32_16S, 3, 2,
1.21887 ++ {
1.21888 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21889 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.21890 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.21891 ++ },
1.21892 ++ },
1.21893 ++ {
1.21894 ++ AVR32_OPC_LDC_D1, 4, 0xe9a01000, 0xfff01100,
1.21895 ++ &avr32_syntax_table[AVR32_SYNTAX_LDC_D1],
1.21896 ++ BFD_RELOC_AVR32_10UW, 4, 3,
1.21897 ++ {
1.21898 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.21899 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
1.21900 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21901 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.21902 ++ },
1.21903 ++ },
1.21904 ++ {
1.21905 ++ AVR32_OPC_LDC_D2, 4, 0xefa00050, 0xfff011ff,
1.21906 ++ &avr32_syntax_table[AVR32_SYNTAX_LDC_D2],
1.21907 ++ BFD_RELOC_UNUSED, 3, -1,
1.21908 ++ {
1.21909 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.21910 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
1.21911 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21912 ++ },
1.21913 ++ },
1.21914 ++ {
1.21915 ++ AVR32_OPC_LDC_D3, 4, 0xefa01040, 0xfff011c0,
1.21916 ++ &avr32_syntax_table[AVR32_SYNTAX_LDC_D3],
1.21917 ++ BFD_RELOC_UNUSED, 5, -1,
1.21918 ++ {
1.21919 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.21920 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
1.21921 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21922 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21923 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.21924 ++ },
1.21925 ++ },
1.21926 ++ {
1.21927 ++ AVR32_OPC_LDC_W1, 4, 0xe9a00000, 0xfff01000,
1.21928 ++ &avr32_syntax_table[AVR32_SYNTAX_LDC_W1],
1.21929 ++ BFD_RELOC_AVR32_10UW, 4, 3,
1.21930 ++ {
1.21931 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.21932 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
1.21933 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21934 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.21935 ++ },
1.21936 ++ },
1.21937 ++ {
1.21938 ++ AVR32_OPC_LDC_W2, 4, 0xefa00040, 0xfff010ff,
1.21939 ++ &avr32_syntax_table[AVR32_SYNTAX_LDC_W2],
1.21940 ++ BFD_RELOC_UNUSED, 3, -1,
1.21941 ++ {
1.21942 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.21943 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
1.21944 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21945 ++ },
1.21946 ++ },
1.21947 ++ {
1.21948 ++ AVR32_OPC_LDC_W3, 4, 0xefa01000, 0xfff010c0,
1.21949 ++ &avr32_syntax_table[AVR32_SYNTAX_LDC_W3],
1.21950 ++ BFD_RELOC_UNUSED, 5, -1,
1.21951 ++ {
1.21952 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.21953 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
1.21954 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21955 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.21956 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.21957 ++ },
1.21958 ++ },
1.21959 ++ {
1.21960 ++ AVR32_OPC_LDC0_D, 4, 0xf3a00000, 0xfff00100,
1.21961 ++ &avr32_syntax_table[AVR32_SYNTAX_LDC0_D],
1.21962 ++ BFD_RELOC_AVR32_14UW, 3, 2,
1.21963 ++ {
1.21964 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
1.21965 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21966 ++ &avr32_ifield_table[AVR32_IFIELD_K12CP],
1.21967 ++ },
1.21968 ++ },
1.21969 ++ {
1.21970 ++ AVR32_OPC_LDC0_W, 4, 0xf1a00000, 0xfff00000,
1.21971 ++ &avr32_syntax_table[AVR32_SYNTAX_LDC0_W],
1.21972 ++ BFD_RELOC_AVR32_14UW, 3, 2,
1.21973 ++ {
1.21974 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
1.21975 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21976 ++ &avr32_ifield_table[AVR32_IFIELD_K12CP],
1.21977 ++ },
1.21978 ++ },
1.21979 ++ {
1.21980 ++ AVR32_OPC_LDCM_D, 4, 0xeda00400, 0xfff01f00,
1.21981 ++ &avr32_syntax_table[AVR32_SYNTAX_LDCM_D],
1.21982 ++ BFD_RELOC_UNUSED, 3, -1,
1.21983 ++ {
1.21984 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.21985 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21986 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.21987 ++ },
1.21988 ++ },
1.21989 ++ {
1.21990 ++ AVR32_OPC_LDCM_D_PU, 4, 0xeda01400, 0xfff01f00,
1.21991 ++ &avr32_syntax_table[AVR32_SYNTAX_LDCM_D_PU],
1.21992 ++ BFD_RELOC_UNUSED, 3, -1,
1.21993 ++ {
1.21994 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.21995 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.21996 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.21997 ++ },
1.21998 ++ },
1.21999 ++ {
1.22000 ++ AVR32_OPC_LDCM_W, 4, 0xeda00000, 0xfff01e00,
1.22001 ++ &avr32_syntax_table[AVR32_SYNTAX_LDCM_W],
1.22002 ++ BFD_RELOC_UNUSED, 4, -1,
1.22003 ++ {
1.22004 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.22005 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22006 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22007 ++ &avr32_ifield_table[AVR32_IFIELD_CM_HL],
1.22008 ++ },
1.22009 ++ },
1.22010 ++ {
1.22011 ++ AVR32_OPC_LDCM_W_PU, 4, 0xeda01000, 0xfff01e00,
1.22012 ++ &avr32_syntax_table[AVR32_SYNTAX_LDCM_W_PU],
1.22013 ++ BFD_RELOC_UNUSED, 4, -1,
1.22014 ++ {
1.22015 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.22016 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22017 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22018 ++ &avr32_ifield_table[AVR32_IFIELD_CM_HL],
1.22019 ++ },
1.22020 ++ },
1.22021 ++ {
1.22022 ++ AVR32_OPC_LDDPC, 2, 0x48000000, 0xf8000000,
1.22023 ++ &avr32_syntax_table[AVR32_SYNTAX_LDDPC],
1.22024 ++ BFD_RELOC_AVR32_9UW_PCREL, 2, 1,
1.22025 ++ {
1.22026 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22027 ++ &avr32_ifield_table[AVR32_IFIELD_K7C],
1.22028 ++ },
1.22029 ++ },
1.22030 ++ {
1.22031 ++ AVR32_OPC_LDDPC_EXT, 4, 0xfef00000, 0xfff00000,
1.22032 ++ &avr32_syntax_table[AVR32_SYNTAX_LDDPC_EXT],
1.22033 ++ BFD_RELOC_AVR32_16B_PCREL, 2, 1,
1.22034 ++ {
1.22035 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22036 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.22037 ++ },
1.22038 ++ },
1.22039 ++ {
1.22040 ++ AVR32_OPC_LDDSP, 2, 0x40000000, 0xf8000000,
1.22041 ++ &avr32_syntax_table[AVR32_SYNTAX_LDDSP],
1.22042 ++ BFD_RELOC_UNUSED, 2, -1,
1.22043 ++ {
1.22044 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22045 ++ &avr32_ifield_table[AVR32_IFIELD_K7C],
1.22046 ++ },
1.22047 ++ },
1.22048 ++ {
1.22049 ++ AVR32_OPC_LDINS_B, 4, 0xe1d04000, 0xe1f0c000,
1.22050 ++ &avr32_syntax_table[AVR32_SYNTAX_LDINS_B],
1.22051 ++ BFD_RELOC_UNUSED, 4, -1,
1.22052 ++ {
1.22053 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22054 ++ &avr32_ifield_table[AVR32_IFIELD_PART2_K12],
1.22055 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22056 ++ &avr32_ifield_table[AVR32_IFIELD_K12],
1.22057 ++ },
1.22058 ++ },
1.22059 ++ {
1.22060 ++ AVR32_OPC_LDINS_H, 4, 0xe1d00000, 0xe1f0e000,
1.22061 ++ &avr32_syntax_table[AVR32_SYNTAX_LDINS_H],
1.22062 ++ BFD_RELOC_UNUSED, 4, -1,
1.22063 ++ {
1.22064 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22065 ++ &avr32_ifield_table[AVR32_IFIELD_PART1_K12],
1.22066 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22067 ++ &avr32_ifield_table[AVR32_IFIELD_K12],
1.22068 ++ },
1.22069 ++ },
1.22070 ++ {
1.22071 ++ AVR32_OPC_LDM, 4, 0xe1c00000, 0xfdf00000,
1.22072 ++ &avr32_syntax_table[AVR32_SYNTAX_LDM],
1.22073 ++ BFD_RELOC_UNUSED, 3, -1,
1.22074 ++ {
1.22075 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22076 ++ &avr32_ifield_table[AVR32_IFIELD_W],
1.22077 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.22078 ++ },
1.22079 ++ },
1.22080 ++ {
1.22081 ++ AVR32_OPC_LDMTS, 4, 0xe5c00000, 0xfff00000,
1.22082 ++ &avr32_syntax_table[AVR32_SYNTAX_LDMTS],
1.22083 ++ BFD_RELOC_UNUSED, 2, -1,
1.22084 ++ {
1.22085 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22086 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.22087 ++ },
1.22088 ++ },
1.22089 ++ {
1.22090 ++ AVR32_OPC_LDMTS_PU, 4, 0xe7c00000, 0xfff00000,
1.22091 ++ &avr32_syntax_table[AVR32_SYNTAX_LDMTS_PU],
1.22092 ++ BFD_RELOC_UNUSED, 2, -1,
1.22093 ++ {
1.22094 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22095 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.22096 ++ },
1.22097 ++ },
1.22098 ++ {
1.22099 ++ AVR32_OPC_LDSWP_SH, 4, 0xe1d02000, 0xe1f0f000,
1.22100 ++ &avr32_syntax_table[AVR32_SYNTAX_LDSWP_SH],
1.22101 ++ BFD_RELOC_UNUSED, 3, -1,
1.22102 ++ {
1.22103 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22104 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22105 ++ &avr32_ifield_table[AVR32_IFIELD_K12],
1.22106 ++ },
1.22107 ++ },
1.22108 ++ {
1.22109 ++ AVR32_OPC_LDSWP_UH, 4, 0xe1d03000, 0xe1f0f000,
1.22110 ++ &avr32_syntax_table[AVR32_SYNTAX_LDSWP_UH],
1.22111 ++ BFD_RELOC_UNUSED, 3, -1,
1.22112 ++ {
1.22113 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22114 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22115 ++ &avr32_ifield_table[AVR32_IFIELD_K12],
1.22116 ++ },
1.22117 ++ },
1.22118 ++ {
1.22119 ++ AVR32_OPC_LDSWP_W, 4, 0xe1d08000, 0xe1f0f000,
1.22120 ++ &avr32_syntax_table[AVR32_SYNTAX_LDSWP_W],
1.22121 ++ BFD_RELOC_UNUSED, 3, -1,
1.22122 ++ {
1.22123 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22124 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22125 ++ &avr32_ifield_table[AVR32_IFIELD_K12],
1.22126 ++ },
1.22127 ++ },
1.22128 ++ {
1.22129 ++ AVR32_OPC_LSL1, 4, 0xe0000940, 0xe1f0fff0,
1.22130 ++ &avr32_syntax_table[AVR32_SYNTAX_LSL1],
1.22131 ++ BFD_RELOC_UNUSED, 3, -1,
1.22132 ++ {
1.22133 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22134 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22135 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22136 ++ },
1.22137 ++ },
1.22138 ++ {
1.22139 ++ AVR32_OPC_LSL3, 4, 0xe0001500, 0xe1f0ffe0,
1.22140 ++ &avr32_syntax_table[AVR32_SYNTAX_LSL3],
1.22141 ++ BFD_RELOC_UNUSED, 3, -1,
1.22142 ++ {
1.22143 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22144 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22145 ++ &avr32_ifield_table[AVR32_IFIELD_K5E],
1.22146 ++ },
1.22147 ++ },
1.22148 ++ {
1.22149 ++ AVR32_OPC_LSL2, 2, 0xa1600000, 0xe1e00000,
1.22150 ++ &avr32_syntax_table[AVR32_SYNTAX_LSL2],
1.22151 ++ BFD_RELOC_UNUSED, 2, -1,
1.22152 ++ {
1.22153 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22154 ++ &avr32_ifield_table[AVR32_IFIELD_BIT5C],
1.22155 ++ },
1.22156 ++ },
1.22157 ++ {
1.22158 ++ AVR32_OPC_LSR1, 4, 0xe0000a40, 0xe1f0fff0,
1.22159 ++ &avr32_syntax_table[AVR32_SYNTAX_LSR1],
1.22160 ++ BFD_RELOC_UNUSED, 3, -1,
1.22161 ++ {
1.22162 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22163 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22164 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22165 ++ },
1.22166 ++ },
1.22167 ++ {
1.22168 ++ AVR32_OPC_LSR3, 4, 0xe0001600, 0xe1f0ffe0,
1.22169 ++ &avr32_syntax_table[AVR32_SYNTAX_LSR3],
1.22170 ++ BFD_RELOC_UNUSED, 3, -1,
1.22171 ++ {
1.22172 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22173 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22174 ++ &avr32_ifield_table[AVR32_IFIELD_K5E],
1.22175 ++ },
1.22176 ++ },
1.22177 ++ {
1.22178 ++ AVR32_OPC_LSR2, 2, 0xa1800000, 0xe1e00000,
1.22179 ++ &avr32_syntax_table[AVR32_SYNTAX_LSR2],
1.22180 ++ BFD_RELOC_UNUSED, 2, -1,
1.22181 ++ {
1.22182 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22183 ++ &avr32_ifield_table[AVR32_IFIELD_BIT5C],
1.22184 ++ },
1.22185 ++ },
1.22186 ++ {
1.22187 ++ AVR32_OPC_MAC, 4, 0xe0000340, 0xe1f0fff0,
1.22188 ++ &avr32_syntax_table[AVR32_SYNTAX_MAC],
1.22189 ++ BFD_RELOC_UNUSED, 3, -1,
1.22190 ++ {
1.22191 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22192 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22193 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22194 ++ },
1.22195 ++ },
1.22196 ++ {
1.22197 ++ AVR32_OPC_MACHH_D, 4, 0xe0000580, 0xe1f0ffc1,
1.22198 ++ &avr32_syntax_table[AVR32_SYNTAX_MACHH_D],
1.22199 ++ BFD_RELOC_UNUSED, 5, -1,
1.22200 ++ {
1.22201 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22202 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22203 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.22204 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22205 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22206 ++ },
1.22207 ++ },
1.22208 ++ {
1.22209 ++ AVR32_OPC_MACHH_W, 4, 0xe0000480, 0xe1f0ffc0,
1.22210 ++ &avr32_syntax_table[AVR32_SYNTAX_MACHH_W],
1.22211 ++ BFD_RELOC_UNUSED, 5, -1,
1.22212 ++ {
1.22213 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22214 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22215 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.22216 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22217 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22218 ++ },
1.22219 ++ },
1.22220 ++ {
1.22221 ++ AVR32_OPC_MACS_D, 4, 0xe0000540, 0xe1f0fff1,
1.22222 ++ &avr32_syntax_table[AVR32_SYNTAX_MACS_D],
1.22223 ++ BFD_RELOC_UNUSED, 3, -1,
1.22224 ++ {
1.22225 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22226 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22227 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22228 ++ },
1.22229 ++ },
1.22230 ++ {
1.22231 ++ AVR32_OPC_MACSATHH_W, 4, 0xe0000680, 0xe1f0ffc0,
1.22232 ++ &avr32_syntax_table[AVR32_SYNTAX_MACSATHH_W],
1.22233 ++ BFD_RELOC_UNUSED, 5, -1,
1.22234 ++ {
1.22235 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22236 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22237 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.22238 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22239 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22240 ++ },
1.22241 ++ },
1.22242 ++ {
1.22243 ++ AVR32_OPC_MACUD, 4, 0xe0000740, 0xe1f0fff1,
1.22244 ++ &avr32_syntax_table[AVR32_SYNTAX_MACUD],
1.22245 ++ BFD_RELOC_UNUSED, 3, -1,
1.22246 ++ {
1.22247 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22248 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22249 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22250 ++ },
1.22251 ++ },
1.22252 ++ {
1.22253 ++ AVR32_OPC_MACWH_D, 4, 0xe0000c80, 0xe1f0ffe1,
1.22254 ++ &avr32_syntax_table[AVR32_SYNTAX_MACWH_D],
1.22255 ++ BFD_RELOC_UNUSED, 4, -1,
1.22256 ++ {
1.22257 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22258 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22259 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22260 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22261 ++ },
1.22262 ++ },
1.22263 ++ {
1.22264 ++ AVR32_OPC_MAX, 4, 0xe0000c40, 0xe1f0fff0,
1.22265 ++ &avr32_syntax_table[AVR32_SYNTAX_MAX],
1.22266 ++ BFD_RELOC_UNUSED, 3, -1,
1.22267 ++ {
1.22268 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22269 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22270 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22271 ++ },
1.22272 ++ },
1.22273 ++ {
1.22274 ++ AVR32_OPC_MCALL, 4, 0xf0100000, 0xfff00000,
1.22275 ++ &avr32_syntax_table[AVR32_SYNTAX_MCALL],
1.22276 ++ BFD_RELOC_AVR32_18W_PCREL, 2, 1,
1.22277 ++ {
1.22278 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22279 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.22280 ++ },
1.22281 ++ },
1.22282 ++ {
1.22283 ++ AVR32_OPC_MFDR, 4, 0xe5b00000, 0xfff0ff00,
1.22284 ++ &avr32_syntax_table[AVR32_SYNTAX_MFDR],
1.22285 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22286 ++ {
1.22287 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22288 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22289 ++ },
1.22290 ++ },
1.22291 ++ {
1.22292 ++ AVR32_OPC_MFSR, 4, 0xe1b00000, 0xfff0ff00,
1.22293 ++ &avr32_syntax_table[AVR32_SYNTAX_MFSR],
1.22294 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22295 ++ {
1.22296 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22297 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22298 ++ },
1.22299 ++ },
1.22300 ++ {
1.22301 ++ AVR32_OPC_MIN, 4, 0xe0000d40, 0xe1f0fff0,
1.22302 ++ &avr32_syntax_table[AVR32_SYNTAX_MIN],
1.22303 ++ BFD_RELOC_UNUSED, 3, -1,
1.22304 ++ {
1.22305 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22306 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22307 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22308 ++ },
1.22309 ++ },
1.22310 ++ {
1.22311 ++ AVR32_OPC_MOV3, 2, 0x00900000, 0xe1f00000,
1.22312 ++ &avr32_syntax_table[AVR32_SYNTAX_MOV3],
1.22313 ++ BFD_RELOC_NONE, 2, -1,
1.22314 ++ {
1.22315 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22316 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22317 ++ },
1.22318 ++ },
1.22319 ++ {
1.22320 ++ AVR32_OPC_MOV1, 2, 0x30000000, 0xf0000000,
1.22321 ++ &avr32_syntax_table[AVR32_SYNTAX_MOV1],
1.22322 ++ BFD_RELOC_AVR32_8S, 2, 1,
1.22323 ++ {
1.22324 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22325 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.22326 ++ },
1.22327 ++ },
1.22328 ++ {
1.22329 ++ AVR32_OPC_MOV2, 4, 0xe0600000, 0xe1e00000,
1.22330 ++ &avr32_syntax_table[AVR32_SYNTAX_MOV2],
1.22331 ++ BFD_RELOC_AVR32_21S, 2, 1,
1.22332 ++ {
1.22333 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22334 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.22335 ++ },
1.22336 ++ },
1.22337 ++ {
1.22338 ++ AVR32_OPC_MOVEQ1, 4, 0xe0001700, 0xe1f0ffff,
1.22339 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVEQ1],
1.22340 ++ BFD_RELOC_UNUSED, 2, -1,
1.22341 ++ {
1.22342 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22343 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22344 ++ },
1.22345 ++ },
1.22346 ++ {
1.22347 ++ AVR32_OPC_MOVNE1, 4, 0xe0001710, 0xe1f0ffff,
1.22348 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVNE1],
1.22349 ++ BFD_RELOC_UNUSED, 2, -1,
1.22350 ++ {
1.22351 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22352 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22353 ++ },
1.22354 ++ },
1.22355 ++ {
1.22356 ++ AVR32_OPC_MOVCC1, 4, 0xe0001720, 0xe1f0ffff,
1.22357 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVHS1],
1.22358 ++ BFD_RELOC_UNUSED, 2, -1,
1.22359 ++ {
1.22360 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22361 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22362 ++ },
1.22363 ++ },
1.22364 ++ {
1.22365 ++ AVR32_OPC_MOVCS1, 4, 0xe0001730, 0xe1f0ffff,
1.22366 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLO1],
1.22367 ++ BFD_RELOC_UNUSED, 2, -1,
1.22368 ++ {
1.22369 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22370 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22371 ++ },
1.22372 ++ },
1.22373 ++ {
1.22374 ++ AVR32_OPC_MOVGE1, 4, 0xe0001740, 0xe1f0ffff,
1.22375 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVGE1],
1.22376 ++ BFD_RELOC_UNUSED, 2, -1,
1.22377 ++ {
1.22378 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22379 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22380 ++ },
1.22381 ++ },
1.22382 ++ {
1.22383 ++ AVR32_OPC_MOVLT1, 4, 0xe0001750, 0xe1f0ffff,
1.22384 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLT1],
1.22385 ++ BFD_RELOC_UNUSED, 2, -1,
1.22386 ++ {
1.22387 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22388 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22389 ++ },
1.22390 ++ },
1.22391 ++ {
1.22392 ++ AVR32_OPC_MOVMI1, 4, 0xe0001760, 0xe1f0ffff,
1.22393 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVMI1],
1.22394 ++ BFD_RELOC_UNUSED, 2, -1,
1.22395 ++ {
1.22396 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22397 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22398 ++ },
1.22399 ++ },
1.22400 ++ {
1.22401 ++ AVR32_OPC_MOVPL1, 4, 0xe0001770, 0xe1f0ffff,
1.22402 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVPL1],
1.22403 ++ BFD_RELOC_UNUSED, 2, -1,
1.22404 ++ {
1.22405 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22406 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22407 ++ },
1.22408 ++ },
1.22409 ++ {
1.22410 ++ AVR32_OPC_MOVLS1, 4, 0xe0001780, 0xe1f0ffff,
1.22411 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLS1],
1.22412 ++ BFD_RELOC_UNUSED, 2, -1,
1.22413 ++ {
1.22414 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22415 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22416 ++ },
1.22417 ++ },
1.22418 ++ {
1.22419 ++ AVR32_OPC_MOVGT1, 4, 0xe0001790, 0xe1f0ffff,
1.22420 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVGT1],
1.22421 ++ BFD_RELOC_UNUSED, 2, -1,
1.22422 ++ {
1.22423 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22424 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22425 ++ },
1.22426 ++ },
1.22427 ++ {
1.22428 ++ AVR32_OPC_MOVLE1, 4, 0xe00017a0, 0xe1f0ffff,
1.22429 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLE1],
1.22430 ++ BFD_RELOC_UNUSED, 2, -1,
1.22431 ++ {
1.22432 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22433 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22434 ++ },
1.22435 ++ },
1.22436 ++ {
1.22437 ++ AVR32_OPC_MOVHI1, 4, 0xe00017b0, 0xe1f0ffff,
1.22438 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVHI1],
1.22439 ++ BFD_RELOC_UNUSED, 2, -1,
1.22440 ++ {
1.22441 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22442 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22443 ++ },
1.22444 ++ },
1.22445 ++ {
1.22446 ++ AVR32_OPC_MOVVS1, 4, 0xe00017c0, 0xe1f0ffff,
1.22447 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVVS1],
1.22448 ++ BFD_RELOC_UNUSED, 2, -1,
1.22449 ++ {
1.22450 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22451 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22452 ++ },
1.22453 ++ },
1.22454 ++ {
1.22455 ++ AVR32_OPC_MOVVC1, 4, 0xe00017d0, 0xe1f0ffff,
1.22456 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVVC1],
1.22457 ++ BFD_RELOC_UNUSED, 2, -1,
1.22458 ++ {
1.22459 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22460 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22461 ++ },
1.22462 ++ },
1.22463 ++ {
1.22464 ++ AVR32_OPC_MOVQS1, 4, 0xe00017e0, 0xe1f0ffff,
1.22465 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVQS1],
1.22466 ++ BFD_RELOC_UNUSED, 2, -1,
1.22467 ++ {
1.22468 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22469 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22470 ++ },
1.22471 ++ },
1.22472 ++ {
1.22473 ++ AVR32_OPC_MOVAL1, 4, 0xe00017f0, 0xe1f0ffff,
1.22474 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVAL1],
1.22475 ++ BFD_RELOC_UNUSED, 2, -1,
1.22476 ++ {
1.22477 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22478 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22479 ++ },
1.22480 ++ },
1.22481 ++ {
1.22482 ++ AVR32_OPC_MOVEQ2, 4, 0xf9b00000, 0xfff0ff00,
1.22483 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVEQ2],
1.22484 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22485 ++ {
1.22486 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22487 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22488 ++ },
1.22489 ++ },
1.22490 ++ {
1.22491 ++ AVR32_OPC_MOVNE2, 4, 0xf9b00100, 0xfff0ff00,
1.22492 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVNE2],
1.22493 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22494 ++ {
1.22495 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22496 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22497 ++ },
1.22498 ++ },
1.22499 ++ {
1.22500 ++ AVR32_OPC_MOVCC2, 4, 0xf9b00200, 0xfff0ff00,
1.22501 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVHS2],
1.22502 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22503 ++ {
1.22504 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22505 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22506 ++ },
1.22507 ++ },
1.22508 ++ {
1.22509 ++ AVR32_OPC_MOVCS2, 4, 0xf9b00300, 0xfff0ff00,
1.22510 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLO2],
1.22511 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22512 ++ {
1.22513 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22514 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22515 ++ },
1.22516 ++ },
1.22517 ++ {
1.22518 ++ AVR32_OPC_MOVGE2, 4, 0xf9b00400, 0xfff0ff00,
1.22519 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVGE2],
1.22520 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22521 ++ {
1.22522 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22523 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22524 ++ },
1.22525 ++ },
1.22526 ++ {
1.22527 ++ AVR32_OPC_MOVLT2, 4, 0xf9b00500, 0xfff0ff00,
1.22528 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLT2],
1.22529 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22530 ++ {
1.22531 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22532 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22533 ++ },
1.22534 ++ },
1.22535 ++ {
1.22536 ++ AVR32_OPC_MOVMI2, 4, 0xf9b00600, 0xfff0ff00,
1.22537 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVMI2],
1.22538 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22539 ++ {
1.22540 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22541 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22542 ++ },
1.22543 ++ },
1.22544 ++ {
1.22545 ++ AVR32_OPC_MOVPL2, 4, 0xf9b00700, 0xfff0ff00,
1.22546 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVPL2],
1.22547 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22548 ++ {
1.22549 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22550 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22551 ++ },
1.22552 ++ },
1.22553 ++ {
1.22554 ++ AVR32_OPC_MOVLS2, 4, 0xf9b00800, 0xfff0ff00,
1.22555 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLS2],
1.22556 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22557 ++ {
1.22558 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22559 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22560 ++ },
1.22561 ++ },
1.22562 ++ {
1.22563 ++ AVR32_OPC_MOVGT2, 4, 0xf9b00900, 0xfff0ff00,
1.22564 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVGT2],
1.22565 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22566 ++ {
1.22567 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22568 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22569 ++ },
1.22570 ++ },
1.22571 ++ {
1.22572 ++ AVR32_OPC_MOVLE2, 4, 0xf9b00a00, 0xfff0ff00,
1.22573 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVLE2],
1.22574 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22575 ++ {
1.22576 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22577 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22578 ++ },
1.22579 ++ },
1.22580 ++ {
1.22581 ++ AVR32_OPC_MOVHI2, 4, 0xf9b00b00, 0xfff0ff00,
1.22582 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVHI2],
1.22583 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22584 ++ {
1.22585 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22586 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22587 ++ },
1.22588 ++ },
1.22589 ++ {
1.22590 ++ AVR32_OPC_MOVVS2, 4, 0xf9b00c00, 0xfff0ff00,
1.22591 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVVS2],
1.22592 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22593 ++ {
1.22594 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22595 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22596 ++ },
1.22597 ++ },
1.22598 ++ {
1.22599 ++ AVR32_OPC_MOVVC2, 4, 0xf9b00d00, 0xfff0ff00,
1.22600 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVVC2],
1.22601 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22602 ++ {
1.22603 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22604 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22605 ++ },
1.22606 ++ },
1.22607 ++ {
1.22608 ++ AVR32_OPC_MOVQS2, 4, 0xf9b00e00, 0xfff0ff00,
1.22609 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVQS2],
1.22610 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22611 ++ {
1.22612 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22613 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22614 ++ },
1.22615 ++ },
1.22616 ++ {
1.22617 ++ AVR32_OPC_MOVAL2, 4, 0xf9b00f00, 0xfff0ff00,
1.22618 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVAL2],
1.22619 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.22620 ++ {
1.22621 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22622 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22623 ++ },
1.22624 ++ },
1.22625 ++ {
1.22626 ++ AVR32_OPC_MTDR, 4, 0xe7b00000, 0xfff0ff00,
1.22627 ++ &avr32_syntax_table[AVR32_SYNTAX_MTDR],
1.22628 ++ BFD_RELOC_AVR32_8S_EXT, 2, 0,
1.22629 ++ {
1.22630 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22631 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22632 ++ },
1.22633 ++ },
1.22634 ++ {
1.22635 ++ AVR32_OPC_MTSR, 4, 0xe3b00000, 0xfff0ff00,
1.22636 ++ &avr32_syntax_table[AVR32_SYNTAX_MTSR],
1.22637 ++ BFD_RELOC_AVR32_8S_EXT, 2, 0,
1.22638 ++ {
1.22639 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22640 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22641 ++ },
1.22642 ++ },
1.22643 ++ {
1.22644 ++ AVR32_OPC_MUL1, 2, 0xa1300000, 0xe1f00000,
1.22645 ++ &avr32_syntax_table[AVR32_SYNTAX_MUL1],
1.22646 ++ BFD_RELOC_UNUSED, 2, -1,
1.22647 ++ {
1.22648 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22649 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22650 ++ },
1.22651 ++ },
1.22652 ++ {
1.22653 ++ AVR32_OPC_MUL2, 4, 0xe0000240, 0xe1f0fff0,
1.22654 ++ &avr32_syntax_table[AVR32_SYNTAX_MUL2],
1.22655 ++ BFD_RELOC_UNUSED, 3, -1,
1.22656 ++ {
1.22657 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22658 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22659 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22660 ++ },
1.22661 ++ },
1.22662 ++ {
1.22663 ++ AVR32_OPC_MUL3, 4, 0xe0001000, 0xe1f0ff00,
1.22664 ++ &avr32_syntax_table[AVR32_SYNTAX_MUL3],
1.22665 ++ BFD_RELOC_AVR32_8S_EXT, 3, 2,
1.22666 ++ {
1.22667 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22668 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22669 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.22670 ++ },
1.22671 ++ },
1.22672 ++ {
1.22673 ++ AVR32_OPC_MULHH_W, 4, 0xe0000780, 0xe1f0ffc0,
1.22674 ++ &avr32_syntax_table[AVR32_SYNTAX_MULHH_W],
1.22675 ++ BFD_RELOC_UNUSED, 5, -1,
1.22676 ++ {
1.22677 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22678 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22679 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.22680 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22681 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22682 ++ },
1.22683 ++ },
1.22684 ++ {
1.22685 ++ AVR32_OPC_MULNHH_W, 4, 0xe0000180, 0xe1f0ffc0,
1.22686 ++ &avr32_syntax_table[AVR32_SYNTAX_MULNHH_W],
1.22687 ++ BFD_RELOC_UNUSED, 5, -1,
1.22688 ++ {
1.22689 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22690 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22691 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.22692 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22693 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22694 ++ },
1.22695 ++ },
1.22696 ++ {
1.22697 ++ AVR32_OPC_MULNWH_D, 4, 0xe0000280, 0xe1f0ffe1,
1.22698 ++ &avr32_syntax_table[AVR32_SYNTAX_MULNWH_D],
1.22699 ++ BFD_RELOC_UNUSED, 4, -1,
1.22700 ++ {
1.22701 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22702 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22703 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22704 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22705 ++ },
1.22706 ++ },
1.22707 ++ {
1.22708 ++ AVR32_OPC_MULSD, 4, 0xe0000440, 0xe1f0fff0,
1.22709 ++ &avr32_syntax_table[AVR32_SYNTAX_MULSD],
1.22710 ++ BFD_RELOC_UNUSED, 3, -1,
1.22711 ++ {
1.22712 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22713 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22714 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22715 ++ },
1.22716 ++ },
1.22717 ++ {
1.22718 ++ AVR32_OPC_MULSATHH_H, 4, 0xe0000880, 0xe1f0ffc0,
1.22719 ++ &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_H],
1.22720 ++ BFD_RELOC_UNUSED, 5, -1,
1.22721 ++ {
1.22722 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22723 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22724 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.22725 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22726 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22727 ++ },
1.22728 ++ },
1.22729 ++ {
1.22730 ++ AVR32_OPC_MULSATHH_W, 4, 0xe0000980, 0xe1f0ffc0,
1.22731 ++ &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_W],
1.22732 ++ BFD_RELOC_UNUSED, 5, -1,
1.22733 ++ {
1.22734 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22735 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22736 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.22737 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22738 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22739 ++ },
1.22740 ++ },
1.22741 ++ {
1.22742 ++ AVR32_OPC_MULSATRNDHH_H, 4, 0xe0000a80, 0xe1f0ffc0,
1.22743 ++ &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDHH_H],
1.22744 ++ BFD_RELOC_UNUSED, 5, -1,
1.22745 ++ {
1.22746 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22747 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22748 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.22749 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22750 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22751 ++ },
1.22752 ++ },
1.22753 ++ {
1.22754 ++ AVR32_OPC_MULSATRNDWH_W, 4, 0xe0000b80, 0xe1f0ffe0,
1.22755 ++ &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDWH_W],
1.22756 ++ BFD_RELOC_UNUSED, 4, -1,
1.22757 ++ {
1.22758 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22759 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22760 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22761 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22762 ++ },
1.22763 ++ },
1.22764 ++ {
1.22765 ++ AVR32_OPC_MULSATWH_W, 4, 0xe0000e80, 0xe1f0ffe0,
1.22766 ++ &avr32_syntax_table[AVR32_SYNTAX_MULSATWH_W],
1.22767 ++ BFD_RELOC_UNUSED, 4, -1,
1.22768 ++ {
1.22769 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22770 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22771 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22772 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22773 ++ },
1.22774 ++ },
1.22775 ++ {
1.22776 ++ AVR32_OPC_MULU_D, 4, 0xe0000640, 0xe1f0fff1,
1.22777 ++ &avr32_syntax_table[AVR32_SYNTAX_MULU_D],
1.22778 ++ BFD_RELOC_UNUSED, 3, -1,
1.22779 ++ {
1.22780 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22781 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22782 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22783 ++ },
1.22784 ++ },
1.22785 ++ {
1.22786 ++ AVR32_OPC_MULWH_D, 4, 0xe0000d80, 0xe1f0ffe1,
1.22787 ++ &avr32_syntax_table[AVR32_SYNTAX_MULWH_D],
1.22788 ++ BFD_RELOC_UNUSED, 4, -1,
1.22789 ++ {
1.22790 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22791 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22792 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22793 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.22794 ++ },
1.22795 ++ },
1.22796 ++ {
1.22797 ++ AVR32_OPC_MUSFR, 2, 0x5d300000, 0xfff00000,
1.22798 ++ &avr32_syntax_table[AVR32_SYNTAX_MUSFR],
1.22799 ++ BFD_RELOC_UNUSED, 1, -1,
1.22800 ++ {
1.22801 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22802 ++ }
1.22803 ++ },
1.22804 ++ {
1.22805 ++ AVR32_OPC_MUSTR, 2, 0x5d200000, 0xfff00000,
1.22806 ++ &avr32_syntax_table[AVR32_SYNTAX_MUSTR],
1.22807 ++ BFD_RELOC_UNUSED, 1, -1,
1.22808 ++ {
1.22809 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22810 ++ }
1.22811 ++ },
1.22812 ++ {
1.22813 ++ AVR32_OPC_MVCR_D, 4, 0xefa00010, 0xfff111ff,
1.22814 ++ &avr32_syntax_table[AVR32_SYNTAX_MVCR_D],
1.22815 ++ BFD_RELOC_UNUSED, 3, -1,
1.22816 ++ {
1.22817 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.22818 ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
1.22819 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
1.22820 ++ },
1.22821 ++ },
1.22822 ++ {
1.22823 ++ AVR32_OPC_MVCR_W, 4, 0xefa00000, 0xfff010ff,
1.22824 ++ &avr32_syntax_table[AVR32_SYNTAX_MVCR_W],
1.22825 ++ BFD_RELOC_UNUSED, 3, -1,
1.22826 ++ {
1.22827 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.22828 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22829 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
1.22830 ++ },
1.22831 ++ },
1.22832 ++ {
1.22833 ++ AVR32_OPC_MVRC_D, 4, 0xefa00030, 0xfff111ff,
1.22834 ++ &avr32_syntax_table[AVR32_SYNTAX_MVRC_D],
1.22835 ++ BFD_RELOC_UNUSED, 3, -1,
1.22836 ++ {
1.22837 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.22838 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
1.22839 ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
1.22840 ++ },
1.22841 ++ },
1.22842 ++ {
1.22843 ++ AVR32_OPC_MVRC_W, 4, 0xefa00020, 0xfff010ff,
1.22844 ++ &avr32_syntax_table[AVR32_SYNTAX_MVRC_W],
1.22845 ++ BFD_RELOC_UNUSED, 3, -1,
1.22846 ++ {
1.22847 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.22848 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
1.22849 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22850 ++ },
1.22851 ++ },
1.22852 ++ {
1.22853 ++ AVR32_OPC_NEG, 2, 0x5c300000, 0xfff00000,
1.22854 ++ &avr32_syntax_table[AVR32_SYNTAX_NEG],
1.22855 ++ BFD_RELOC_UNUSED, 1, -1,
1.22856 ++ {
1.22857 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22858 ++ }
1.22859 ++ },
1.22860 ++ {
1.22861 ++ AVR32_OPC_NOP, 2, 0xd7030000, 0xffff0000,
1.22862 ++ &avr32_syntax_table[AVR32_SYNTAX_NOP],
1.22863 ++ BFD_RELOC_UNUSED, 0, -1, { NULL },
1.22864 ++ },
1.22865 ++ {
1.22866 ++ AVR32_OPC_OR1, 2, 0x00400000, 0xe1f00000,
1.22867 ++ &avr32_syntax_table[AVR32_SYNTAX_OR1],
1.22868 ++ BFD_RELOC_UNUSED, 2, -1,
1.22869 ++ {
1.22870 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22871 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22872 ++ },
1.22873 ++ },
1.22874 ++ {
1.22875 ++ AVR32_OPC_OR2, 4, 0xe1e01000, 0xe1f0fe00,
1.22876 ++ &avr32_syntax_table[AVR32_SYNTAX_OR2],
1.22877 ++ BFD_RELOC_UNUSED, 4, -1,
1.22878 ++ {
1.22879 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22880 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22881 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22882 ++ &avr32_ifield_table[AVR32_IFIELD_K5E2],
1.22883 ++ },
1.22884 ++ },
1.22885 ++ {
1.22886 ++ AVR32_OPC_OR3, 4, 0xe1e01200, 0xe1f0fe00,
1.22887 ++ &avr32_syntax_table[AVR32_SYNTAX_OR3],
1.22888 ++ BFD_RELOC_UNUSED, 4, -1,
1.22889 ++ {
1.22890 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22891 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22892 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22893 ++ &avr32_ifield_table[AVR32_IFIELD_K5E2],
1.22894 ++ },
1.22895 ++ },
1.22896 ++ {
1.22897 ++ AVR32_OPC_ORH, 4, 0xea100000, 0xfff00000,
1.22898 ++ &avr32_syntax_table[AVR32_SYNTAX_ORH],
1.22899 ++ BFD_RELOC_AVR32_16U, 2, 1,
1.22900 ++ {
1.22901 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22902 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.22903 ++ },
1.22904 ++ },
1.22905 ++ {
1.22906 ++ AVR32_OPC_ORL, 4, 0xe8100000, 0xfff00000,
1.22907 ++ &avr32_syntax_table[AVR32_SYNTAX_ORL],
1.22908 ++ BFD_RELOC_AVR32_16U, 2, 1,
1.22909 ++ {
1.22910 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22911 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.22912 ++ },
1.22913 ++ },
1.22914 ++ {
1.22915 ++ AVR32_OPC_PABS_SB, 4, 0xe00023e0, 0xfff0fff0,
1.22916 ++ &avr32_syntax_table[AVR32_SYNTAX_PABS_SB],
1.22917 ++ BFD_RELOC_UNUSED, 2, -1,
1.22918 ++ {
1.22919 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22920 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22921 ++ },
1.22922 ++ },
1.22923 ++ {
1.22924 ++ AVR32_OPC_PABS_SH, 4, 0xe00023f0, 0xfff0fff0,
1.22925 ++ &avr32_syntax_table[AVR32_SYNTAX_PABS_SH],
1.22926 ++ BFD_RELOC_UNUSED, 2, -1,
1.22927 ++ {
1.22928 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22929 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22930 ++ },
1.22931 ++ },
1.22932 ++ {
1.22933 ++ AVR32_OPC_PACKSH_SB, 4, 0xe00024d0, 0xe1f0fff0,
1.22934 ++ &avr32_syntax_table[AVR32_SYNTAX_PACKSH_SB],
1.22935 ++ BFD_RELOC_UNUSED, 3, -1,
1.22936 ++ {
1.22937 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22938 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22939 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22940 ++ },
1.22941 ++ },
1.22942 ++ {
1.22943 ++ AVR32_OPC_PACKSH_UB, 4, 0xe00024c0, 0xe1f0fff0,
1.22944 ++ &avr32_syntax_table[AVR32_SYNTAX_PACKSH_UB],
1.22945 ++ BFD_RELOC_UNUSED, 3, -1,
1.22946 ++ {
1.22947 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22948 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22949 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22950 ++ },
1.22951 ++ },
1.22952 ++ {
1.22953 ++ AVR32_OPC_PACKW_SH, 4, 0xe0002470, 0xe1f0fff0,
1.22954 ++ &avr32_syntax_table[AVR32_SYNTAX_PACKW_SH],
1.22955 ++ BFD_RELOC_UNUSED, 3, -1,
1.22956 ++ {
1.22957 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22958 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22959 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22960 ++ },
1.22961 ++ },
1.22962 ++ {
1.22963 ++ AVR32_OPC_PADD_B, 4, 0xe0002300, 0xe1f0fff0,
1.22964 ++ &avr32_syntax_table[AVR32_SYNTAX_PADD_B],
1.22965 ++ BFD_RELOC_UNUSED, 3, -1,
1.22966 ++ {
1.22967 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22968 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22969 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22970 ++ },
1.22971 ++ },
1.22972 ++ {
1.22973 ++ AVR32_OPC_PADD_H, 4, 0xe0002000, 0xe1f0fff0,
1.22974 ++ &avr32_syntax_table[AVR32_SYNTAX_PADD_H],
1.22975 ++ BFD_RELOC_UNUSED, 3, -1,
1.22976 ++ {
1.22977 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22978 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22979 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22980 ++ },
1.22981 ++ },
1.22982 ++ {
1.22983 ++ AVR32_OPC_PADDH_SH, 4, 0xe00020c0, 0xe1f0fff0,
1.22984 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDH_SH],
1.22985 ++ BFD_RELOC_UNUSED, 3, -1,
1.22986 ++ {
1.22987 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22988 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22989 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.22990 ++ },
1.22991 ++ },
1.22992 ++ {
1.22993 ++ AVR32_OPC_PADDH_UB, 4, 0xe0002360, 0xe1f0fff0,
1.22994 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDH_UB],
1.22995 ++ BFD_RELOC_UNUSED, 3, -1,
1.22996 ++ {
1.22997 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.22998 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.22999 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23000 ++ },
1.23001 ++ },
1.23002 ++ {
1.23003 ++ AVR32_OPC_PADDS_SB, 4, 0xe0002320, 0xe1f0fff0,
1.23004 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDS_SB],
1.23005 ++ BFD_RELOC_UNUSED, 3, -1,
1.23006 ++ {
1.23007 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23008 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23009 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23010 ++ },
1.23011 ++ },
1.23012 ++ {
1.23013 ++ AVR32_OPC_PADDS_SH, 4, 0xe0002040, 0xe1f0fff0,
1.23014 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDS_SH],
1.23015 ++ BFD_RELOC_UNUSED, 3, -1,
1.23016 ++ {
1.23017 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23018 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23019 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23020 ++ },
1.23021 ++ },
1.23022 ++ {
1.23023 ++ AVR32_OPC_PADDS_UB, 4, 0xe0002340, 0xe1f0fff0,
1.23024 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDS_UB],
1.23025 ++ BFD_RELOC_UNUSED, 3, -1,
1.23026 ++ {
1.23027 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23028 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23029 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23030 ++ },
1.23031 ++ },
1.23032 ++ {
1.23033 ++ AVR32_OPC_PADDS_UH, 4, 0xe0002080, 0xe1f0fff0,
1.23034 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDS_UH],
1.23035 ++ BFD_RELOC_UNUSED, 3, -1,
1.23036 ++ {
1.23037 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23038 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23039 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23040 ++ },
1.23041 ++ },
1.23042 ++ {
1.23043 ++ AVR32_OPC_PADDSUB_H, 4, 0xe0002100, 0xe1f0ffc0,
1.23044 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDSUB_H],
1.23045 ++ BFD_RELOC_UNUSED, 5, -1,
1.23046 ++ {
1.23047 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23048 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23049 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.23050 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23051 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.23052 ++ },
1.23053 ++ },
1.23054 ++ {
1.23055 ++ AVR32_OPC_PADDSUBH_SH, 4, 0xe0002280, 0xe1f0ffc0,
1.23056 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDSUBH_SH],
1.23057 ++ BFD_RELOC_UNUSED, 5, -1,
1.23058 ++ {
1.23059 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23060 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23061 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.23062 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23063 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.23064 ++ },
1.23065 ++ },
1.23066 ++ {
1.23067 ++ AVR32_OPC_PADDSUBS_SH, 4, 0xe0002180, 0xe1f0ffc0,
1.23068 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_SH],
1.23069 ++ BFD_RELOC_UNUSED, 5, -1,
1.23070 ++ {
1.23071 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23072 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23073 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.23074 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23075 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.23076 ++ },
1.23077 ++ },
1.23078 ++ {
1.23079 ++ AVR32_OPC_PADDSUBS_UH, 4, 0xe0002200, 0xe1f0ffc0,
1.23080 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_UH],
1.23081 ++ BFD_RELOC_UNUSED, 5, -1,
1.23082 ++ {
1.23083 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23084 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23085 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.23086 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23087 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.23088 ++ },
1.23089 ++ },
1.23090 ++ {
1.23091 ++ AVR32_OPC_PADDX_H, 4, 0xe0002020, 0xe1f0fff0,
1.23092 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDX_H],
1.23093 ++ BFD_RELOC_UNUSED, 3, -1,
1.23094 ++ {
1.23095 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23096 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23097 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23098 ++ },
1.23099 ++ },
1.23100 ++ {
1.23101 ++ AVR32_OPC_PADDXH_SH, 4, 0xe00020e0, 0xe1f0fff0,
1.23102 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDXH_SH],
1.23103 ++ BFD_RELOC_UNUSED, 3, -1,
1.23104 ++ {
1.23105 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23106 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23107 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23108 ++ },
1.23109 ++ },
1.23110 ++ {
1.23111 ++ AVR32_OPC_PADDXS_SH, 4, 0xe0002060, 0xe1f0fff0,
1.23112 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDXS_SH],
1.23113 ++ BFD_RELOC_UNUSED, 3, -1,
1.23114 ++ {
1.23115 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23116 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23117 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23118 ++ },
1.23119 ++ },
1.23120 ++ {
1.23121 ++ AVR32_OPC_PADDXS_UH, 4, 0xe00020a0, 0xe1f0fff0,
1.23122 ++ &avr32_syntax_table[AVR32_SYNTAX_PADDXS_UH],
1.23123 ++ BFD_RELOC_UNUSED, 3, -1,
1.23124 ++ {
1.23125 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23126 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23127 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23128 ++ },
1.23129 ++ },
1.23130 ++ {
1.23131 ++ AVR32_OPC_PASR_B, 4, 0xe0002410, 0xe1f8fff0,
1.23132 ++ &avr32_syntax_table[AVR32_SYNTAX_PASR_B],
1.23133 ++ BFD_RELOC_UNUSED, 3, -1,
1.23134 ++ {
1.23135 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23136 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23137 ++ &avr32_ifield_table[AVR32_IFIELD_COND3],
1.23138 ++ },
1.23139 ++ },
1.23140 ++ {
1.23141 ++ AVR32_OPC_PASR_H, 4, 0xe0002440, 0xe1f0fff0,
1.23142 ++ &avr32_syntax_table[AVR32_SYNTAX_PASR_H],
1.23143 ++ BFD_RELOC_UNUSED, 3, -1,
1.23144 ++ {
1.23145 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23146 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23147 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23148 ++ },
1.23149 ++ },
1.23150 ++ {
1.23151 ++ AVR32_OPC_PAVG_SH, 4, 0xe00023d0, 0xe1f0fff0,
1.23152 ++ &avr32_syntax_table[AVR32_SYNTAX_PAVG_SH],
1.23153 ++ BFD_RELOC_UNUSED, 3, -1,
1.23154 ++ {
1.23155 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23156 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23157 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23158 ++ },
1.23159 ++ },
1.23160 ++ {
1.23161 ++ AVR32_OPC_PAVG_UB, 4, 0xe00023c0, 0xe1f0fff0,
1.23162 ++ &avr32_syntax_table[AVR32_SYNTAX_PAVG_UB],
1.23163 ++ BFD_RELOC_UNUSED, 3, -1,
1.23164 ++ {
1.23165 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23166 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23167 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23168 ++ },
1.23169 ++ },
1.23170 ++ {
1.23171 ++ AVR32_OPC_PLSL_B, 4, 0xe0002420, 0xe1f8fff0,
1.23172 ++ &avr32_syntax_table[AVR32_SYNTAX_PLSL_B],
1.23173 ++ BFD_RELOC_UNUSED, 3, -1,
1.23174 ++ {
1.23175 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23176 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23177 ++ &avr32_ifield_table[AVR32_IFIELD_COND3],
1.23178 ++ },
1.23179 ++ },
1.23180 ++ {
1.23181 ++ AVR32_OPC_PLSL_H, 4, 0xe0002450, 0xe1f0fff0,
1.23182 ++ &avr32_syntax_table[AVR32_SYNTAX_PLSL_H],
1.23183 ++ BFD_RELOC_UNUSED, 3, -1,
1.23184 ++ {
1.23185 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23186 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23187 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23188 ++ },
1.23189 ++ },
1.23190 ++ {
1.23191 ++ AVR32_OPC_PLSR_B, 4, 0xe0002430, 0xe1f8fff0,
1.23192 ++ &avr32_syntax_table[AVR32_SYNTAX_PLSR_B],
1.23193 ++ BFD_RELOC_UNUSED, 3, -1,
1.23194 ++ {
1.23195 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23196 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23197 ++ &avr32_ifield_table[AVR32_IFIELD_COND3],
1.23198 ++ },
1.23199 ++ },
1.23200 ++ {
1.23201 ++ AVR32_OPC_PLSR_H, 4, 0xe0002460, 0xe1f0fff0,
1.23202 ++ &avr32_syntax_table[AVR32_SYNTAX_PLSR_H],
1.23203 ++ BFD_RELOC_UNUSED, 3, -1,
1.23204 ++ {
1.23205 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23206 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23207 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23208 ++ },
1.23209 ++ },
1.23210 ++ {
1.23211 ++ AVR32_OPC_PMAX_SH, 4, 0xe0002390, 0xe1f0fff0,
1.23212 ++ &avr32_syntax_table[AVR32_SYNTAX_PMAX_SH],
1.23213 ++ BFD_RELOC_UNUSED, 3, -1,
1.23214 ++ {
1.23215 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23216 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23217 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23218 ++ },
1.23219 ++ },
1.23220 ++ {
1.23221 ++ AVR32_OPC_PMAX_UB, 4, 0xe0002380, 0xe1f0fff0,
1.23222 ++ &avr32_syntax_table[AVR32_SYNTAX_PMAX_UB],
1.23223 ++ BFD_RELOC_UNUSED, 3, -1,
1.23224 ++ {
1.23225 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23226 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23227 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23228 ++ },
1.23229 ++ },
1.23230 ++ {
1.23231 ++ AVR32_OPC_PMIN_SH, 4, 0xe00023b0, 0xe1f0fff0,
1.23232 ++ &avr32_syntax_table[AVR32_SYNTAX_PMIN_SH],
1.23233 ++ BFD_RELOC_UNUSED, 3, -1,
1.23234 ++ {
1.23235 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23236 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23237 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23238 ++ },
1.23239 ++ },
1.23240 ++ {
1.23241 ++ AVR32_OPC_PMIN_UB, 4, 0xe00023a0, 0xe1f0fff0,
1.23242 ++ &avr32_syntax_table[AVR32_SYNTAX_PMIN_UB],
1.23243 ++ BFD_RELOC_UNUSED, 3, -1,
1.23244 ++ {
1.23245 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23246 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23247 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23248 ++ },
1.23249 ++ },
1.23250 ++ {
1.23251 ++ AVR32_OPC_POPJC, 2, 0xd7130000, 0xffff0000,
1.23252 ++ &avr32_syntax_table[AVR32_SYNTAX_POPJC],
1.23253 ++ BFD_RELOC_UNUSED, 0, -1, { NULL },
1.23254 ++ },
1.23255 ++ {
1.23256 ++ AVR32_OPC_POPM, 2, 0xd0020000, 0xf0070000,
1.23257 ++ &avr32_syntax_table[AVR32_SYNTAX_POPM],
1.23258 ++ BFD_RELOC_UNUSED, 1, -1,
1.23259 ++ {
1.23260 ++ &avr32_ifield_table[AVR32_IFIELD_POPM],
1.23261 ++ },
1.23262 ++ },
1.23263 ++ {
1.23264 ++ AVR32_OPC_POPM_E, 4, 0xe3cd0000, 0xffff0000,
1.23265 ++ &avr32_syntax_table[AVR32_SYNTAX_POPM_E],
1.23266 ++ BFD_RELOC_UNUSED, 1, -1,
1.23267 ++ {
1.23268 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.23269 ++ },
1.23270 ++ },
1.23271 ++ {
1.23272 ++ AVR32_OPC_PREF, 4, 0xf2100000, 0xfff00000,
1.23273 ++ &avr32_syntax_table[AVR32_SYNTAX_PREF],
1.23274 ++ BFD_RELOC_AVR32_16S, 2, -1,
1.23275 ++ {
1.23276 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23277 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.23278 ++ },
1.23279 ++ },
1.23280 ++ {
1.23281 ++ AVR32_OPC_PSAD, 4, 0xe0002400, 0xe1f0fff0,
1.23282 ++ &avr32_syntax_table[AVR32_SYNTAX_PSAD],
1.23283 ++ BFD_RELOC_UNUSED, 3, -1,
1.23284 ++ {
1.23285 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23286 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23287 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23288 ++ },
1.23289 ++ },
1.23290 ++ {
1.23291 ++ AVR32_OPC_PSUB_B, 4, 0xe0002310, 0xe1f0fff0,
1.23292 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUB_B],
1.23293 ++ BFD_RELOC_UNUSED, 3, -1,
1.23294 ++ {
1.23295 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23296 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23297 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23298 ++ },
1.23299 ++ },
1.23300 ++ {
1.23301 ++ AVR32_OPC_PSUB_H, 4, 0xe0002010, 0xe1f0fff0,
1.23302 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUB_H],
1.23303 ++ BFD_RELOC_UNUSED, 3, -1,
1.23304 ++ {
1.23305 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23306 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23307 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23308 ++ },
1.23309 ++ },
1.23310 ++ {
1.23311 ++ AVR32_OPC_PSUBADD_H, 4, 0xe0002140, 0xe1f0ffc0,
1.23312 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBADD_H],
1.23313 ++ BFD_RELOC_UNUSED, 5, -1,
1.23314 ++ {
1.23315 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23316 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23317 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.23318 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23319 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.23320 ++ },
1.23321 ++ },
1.23322 ++ {
1.23323 ++ AVR32_OPC_PSUBADDH_SH, 4, 0xe00022c0, 0xe1f0ffc0,
1.23324 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBADDH_SH],
1.23325 ++ BFD_RELOC_UNUSED, 5, -1,
1.23326 ++ {
1.23327 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23328 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23329 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.23330 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23331 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.23332 ++ },
1.23333 ++ },
1.23334 ++ {
1.23335 ++ AVR32_OPC_PSUBADDS_SH, 4, 0xe00021c0, 0xe1f0ffc0,
1.23336 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_SH],
1.23337 ++ BFD_RELOC_UNUSED, 5, -1,
1.23338 ++ {
1.23339 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23340 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23341 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.23342 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23343 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.23344 ++ },
1.23345 ++ },
1.23346 ++ {
1.23347 ++ AVR32_OPC_PSUBADDS_UH, 4, 0xe0002240, 0xe1f0ffc0,
1.23348 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_UH],
1.23349 ++ BFD_RELOC_UNUSED, 5, -1,
1.23350 ++ {
1.23351 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23352 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23353 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.23354 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23355 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.23356 ++ },
1.23357 ++ },
1.23358 ++ {
1.23359 ++ AVR32_OPC_PSUBH_SH, 4, 0xe00020d0, 0xe1f0fff0,
1.23360 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBH_SH],
1.23361 ++ BFD_RELOC_UNUSED, 3, -1,
1.23362 ++ {
1.23363 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23364 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23365 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23366 ++ },
1.23367 ++ },
1.23368 ++ {
1.23369 ++ AVR32_OPC_PSUBH_UB, 4, 0xe0002370, 0xe1f0fff0,
1.23370 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBH_UB],
1.23371 ++ BFD_RELOC_UNUSED, 3, -1,
1.23372 ++ {
1.23373 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23374 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23375 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23376 ++ },
1.23377 ++ },
1.23378 ++ {
1.23379 ++ AVR32_OPC_PSUBS_SB, 4, 0xe0002330, 0xe1f0fff0,
1.23380 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SB],
1.23381 ++ BFD_RELOC_UNUSED, 3, -1,
1.23382 ++ {
1.23383 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23384 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23385 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23386 ++ },
1.23387 ++ },
1.23388 ++ {
1.23389 ++ AVR32_OPC_PSUBS_SH, 4, 0xe0002050, 0xe1f0fff0,
1.23390 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SH],
1.23391 ++ BFD_RELOC_UNUSED, 3, -1,
1.23392 ++ {
1.23393 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23394 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23395 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23396 ++ },
1.23397 ++ },
1.23398 ++ {
1.23399 ++ AVR32_OPC_PSUBS_UB, 4, 0xe0002350, 0xe1f0fff0,
1.23400 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UB],
1.23401 ++ BFD_RELOC_UNUSED, 3, -1,
1.23402 ++ {
1.23403 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23404 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23405 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23406 ++ },
1.23407 ++ },
1.23408 ++ {
1.23409 ++ AVR32_OPC_PSUBS_UH, 4, 0xe0002090, 0xe1f0fff0,
1.23410 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UH],
1.23411 ++ BFD_RELOC_UNUSED, 3, -1,
1.23412 ++ {
1.23413 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23414 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23415 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23416 ++ },
1.23417 ++ },
1.23418 ++ {
1.23419 ++ AVR32_OPC_PSUBX_H, 4, 0xe0002030, 0xe1f0fff0,
1.23420 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBX_H],
1.23421 ++ BFD_RELOC_UNUSED, 3, -1,
1.23422 ++ {
1.23423 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23424 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23425 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23426 ++ },
1.23427 ++ },
1.23428 ++ {
1.23429 ++ AVR32_OPC_PSUBXH_SH, 4, 0xe00020f0, 0xe1f0fff0,
1.23430 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBXH_SH],
1.23431 ++ BFD_RELOC_UNUSED, 3, -1,
1.23432 ++ {
1.23433 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23434 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23435 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23436 ++ },
1.23437 ++ },
1.23438 ++ {
1.23439 ++ AVR32_OPC_PSUBXS_SH, 4, 0xe0002070, 0xe1f0fff0,
1.23440 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_SH],
1.23441 ++ BFD_RELOC_UNUSED, 3, -1,
1.23442 ++ {
1.23443 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23444 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23445 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23446 ++ },
1.23447 ++ },
1.23448 ++ {
1.23449 ++ AVR32_OPC_PSUBXS_UH, 4, 0xe00020b0, 0xe1f0fff0,
1.23450 ++ &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_UH],
1.23451 ++ BFD_RELOC_UNUSED, 3, -1,
1.23452 ++ {
1.23453 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23454 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23455 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23456 ++ },
1.23457 ++ },
1.23458 ++ {
1.23459 ++ AVR32_OPC_PUNPCKSB_H, 4, 0xe00024a0, 0xe1ffffe0,
1.23460 ++ &avr32_syntax_table[AVR32_SYNTAX_PUNPCKSB_H],
1.23461 ++ BFD_RELOC_UNUSED, 3, -1,
1.23462 ++ {
1.23463 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23464 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23465 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.23466 ++ },
1.23467 ++ },
1.23468 ++ {
1.23469 ++ AVR32_OPC_PUNPCKUB_H, 4, 0xe0002480, 0xe1ffffe0,
1.23470 ++ &avr32_syntax_table[AVR32_SYNTAX_PUNPCKUB_H],
1.23471 ++ BFD_RELOC_UNUSED, 3, -1,
1.23472 ++ {
1.23473 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23474 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23475 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.23476 ++ },
1.23477 ++ },
1.23478 ++ {
1.23479 ++ AVR32_OPC_PUSHJC, 2, 0xd7230000, 0xffff0000,
1.23480 ++ &avr32_syntax_table[AVR32_SYNTAX_PUSHJC],
1.23481 ++ BFD_RELOC_UNUSED, 0, -1, { NULL },
1.23482 ++ },
1.23483 ++ {
1.23484 ++ AVR32_OPC_PUSHM, 2, 0xd0010000, 0xf00f0000,
1.23485 ++ &avr32_syntax_table[AVR32_SYNTAX_PUSHM],
1.23486 ++ BFD_RELOC_UNUSED, 1, -1,
1.23487 ++ {
1.23488 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.23489 ++ },
1.23490 ++ },
1.23491 ++ {
1.23492 ++ AVR32_OPC_PUSHM_E, 4, 0xebcd0000, 0xffff0000,
1.23493 ++ &avr32_syntax_table[AVR32_SYNTAX_PUSHM_E],
1.23494 ++ BFD_RELOC_UNUSED, 1, -1,
1.23495 ++ {
1.23496 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.23497 ++ },
1.23498 ++ },
1.23499 ++ {
1.23500 ++ AVR32_OPC_RCALL1, 2, 0xc00c0000, 0xf00c0000,
1.23501 ++ &avr32_syntax_table[AVR32_SYNTAX_RCALL1],
1.23502 ++ BFD_RELOC_AVR32_11H_PCREL, 1, 0,
1.23503 ++ {
1.23504 ++ &avr32_ifield_table[AVR32_IFIELD_K10],
1.23505 ++ },
1.23506 ++ },
1.23507 ++ {
1.23508 ++ AVR32_OPC_RCALL2, 4, 0xe0a00000, 0xe1ef0000,
1.23509 ++ &avr32_syntax_table[AVR32_SYNTAX_RCALL2],
1.23510 ++ BFD_RELOC_AVR32_22H_PCREL, 1, 0,
1.23511 ++ {
1.23512 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.23513 ++ },
1.23514 ++ },
1.23515 ++ {
1.23516 ++ AVR32_OPC_RETEQ, 2, 0x5e000000, 0xfff00000,
1.23517 ++ &avr32_syntax_table[AVR32_SYNTAX_RETEQ],
1.23518 ++ BFD_RELOC_NONE, 1, -1,
1.23519 ++ {
1.23520 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23521 ++ },
1.23522 ++ },
1.23523 ++ {
1.23524 ++ AVR32_OPC_RETNE, 2, 0x5e100000, 0xfff00000,
1.23525 ++ &avr32_syntax_table[AVR32_SYNTAX_RETNE],
1.23526 ++ BFD_RELOC_NONE, 1, -1,
1.23527 ++ {
1.23528 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23529 ++ },
1.23530 ++ },
1.23531 ++ {
1.23532 ++ AVR32_OPC_RETCC, 2, 0x5e200000, 0xfff00000,
1.23533 ++ &avr32_syntax_table[AVR32_SYNTAX_RETHS],
1.23534 ++ BFD_RELOC_NONE, 1, -1,
1.23535 ++ {
1.23536 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23537 ++ },
1.23538 ++ },
1.23539 ++ {
1.23540 ++ AVR32_OPC_RETCS, 2, 0x5e300000, 0xfff00000,
1.23541 ++ &avr32_syntax_table[AVR32_SYNTAX_RETLO],
1.23542 ++ BFD_RELOC_NONE, 1, -1,
1.23543 ++ {
1.23544 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23545 ++ },
1.23546 ++ },
1.23547 ++ {
1.23548 ++ AVR32_OPC_RETGE, 2, 0x5e400000, 0xfff00000,
1.23549 ++ &avr32_syntax_table[AVR32_SYNTAX_RETGE],
1.23550 ++ BFD_RELOC_NONE, 1, -1,
1.23551 ++ {
1.23552 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23553 ++ },
1.23554 ++ },
1.23555 ++ {
1.23556 ++ AVR32_OPC_RETLT, 2, 0x5e500000, 0xfff00000,
1.23557 ++ &avr32_syntax_table[AVR32_SYNTAX_RETLT],
1.23558 ++ BFD_RELOC_NONE, 1, -1,
1.23559 ++ {
1.23560 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23561 ++ },
1.23562 ++ },
1.23563 ++ {
1.23564 ++ AVR32_OPC_RETMI, 2, 0x5e600000, 0xfff00000,
1.23565 ++ &avr32_syntax_table[AVR32_SYNTAX_RETMI],
1.23566 ++ BFD_RELOC_NONE, 1, -1,
1.23567 ++ {
1.23568 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23569 ++ },
1.23570 ++ },
1.23571 ++ {
1.23572 ++ AVR32_OPC_RETPL, 2, 0x5e700000, 0xfff00000,
1.23573 ++ &avr32_syntax_table[AVR32_SYNTAX_RETPL],
1.23574 ++ BFD_RELOC_NONE, 1, -1,
1.23575 ++ {
1.23576 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23577 ++ },
1.23578 ++ },
1.23579 ++ {
1.23580 ++ AVR32_OPC_RETLS, 2, 0x5e800000, 0xfff00000,
1.23581 ++ &avr32_syntax_table[AVR32_SYNTAX_RETLS],
1.23582 ++ BFD_RELOC_NONE, 1, -1,
1.23583 ++ {
1.23584 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23585 ++ },
1.23586 ++ },
1.23587 ++ {
1.23588 ++ AVR32_OPC_RETGT, 2, 0x5e900000, 0xfff00000,
1.23589 ++ &avr32_syntax_table[AVR32_SYNTAX_RETGT],
1.23590 ++ BFD_RELOC_NONE, 1, -1,
1.23591 ++ {
1.23592 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23593 ++ },
1.23594 ++ },
1.23595 ++ {
1.23596 ++ AVR32_OPC_RETLE, 2, 0x5ea00000, 0xfff00000,
1.23597 ++ &avr32_syntax_table[AVR32_SYNTAX_RETLE],
1.23598 ++ BFD_RELOC_NONE, 1, -1,
1.23599 ++ {
1.23600 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23601 ++ },
1.23602 ++ },
1.23603 ++ {
1.23604 ++ AVR32_OPC_RETHI, 2, 0x5eb00000, 0xfff00000,
1.23605 ++ &avr32_syntax_table[AVR32_SYNTAX_RETHI],
1.23606 ++ BFD_RELOC_NONE, 1, -1,
1.23607 ++ {
1.23608 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23609 ++ },
1.23610 ++ },
1.23611 ++ {
1.23612 ++ AVR32_OPC_RETVS, 2, 0x5ec00000, 0xfff00000,
1.23613 ++ &avr32_syntax_table[AVR32_SYNTAX_RETVS],
1.23614 ++ BFD_RELOC_NONE, 1, -1,
1.23615 ++ {
1.23616 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23617 ++ },
1.23618 ++ },
1.23619 ++ {
1.23620 ++ AVR32_OPC_RETVC, 2, 0x5ed00000, 0xfff00000,
1.23621 ++ &avr32_syntax_table[AVR32_SYNTAX_RETVC],
1.23622 ++ BFD_RELOC_NONE, 1, -1,
1.23623 ++ {
1.23624 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23625 ++ },
1.23626 ++ },
1.23627 ++ {
1.23628 ++ AVR32_OPC_RETQS, 2, 0x5ee00000, 0xfff00000,
1.23629 ++ &avr32_syntax_table[AVR32_SYNTAX_RETQS],
1.23630 ++ BFD_RELOC_NONE, 1, -1,
1.23631 ++ {
1.23632 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23633 ++ },
1.23634 ++ },
1.23635 ++ {
1.23636 ++ AVR32_OPC_RETAL, 2, 0x5ef00000, 0xfff00000,
1.23637 ++ &avr32_syntax_table[AVR32_SYNTAX_RETAL],
1.23638 ++ BFD_RELOC_NONE, 1, -1,
1.23639 ++ {
1.23640 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23641 ++ },
1.23642 ++ },
1.23643 ++ {
1.23644 ++ AVR32_OPC_RETD, 2, 0xd6230000, 0xffff0000,
1.23645 ++ &avr32_syntax_table[AVR32_SYNTAX_RETD],
1.23646 ++ BFD_RELOC_NONE, 0, -1, { NULL },
1.23647 ++ },
1.23648 ++ {
1.23649 ++ AVR32_OPC_RETE, 2, 0xd6030000, 0xffff0000,
1.23650 ++ &avr32_syntax_table[AVR32_SYNTAX_RETE],
1.23651 ++ BFD_RELOC_NONE, 0, -1, { NULL },
1.23652 ++ },
1.23653 ++ {
1.23654 ++ AVR32_OPC_RETJ, 2, 0xd6330000, 0xffff0000,
1.23655 ++ &avr32_syntax_table[AVR32_SYNTAX_RETJ],
1.23656 ++ BFD_RELOC_NONE, 0, -1, { NULL },
1.23657 ++ },
1.23658 ++ {
1.23659 ++ AVR32_OPC_RETS, 2, 0xd6130000, 0xffff0000,
1.23660 ++ &avr32_syntax_table[AVR32_SYNTAX_RETS],
1.23661 ++ BFD_RELOC_NONE, 0, -1, { NULL },
1.23662 ++ },
1.23663 ++ {
1.23664 ++ AVR32_OPC_RJMP, 2, 0xc0080000, 0xf00c0000,
1.23665 ++ &avr32_syntax_table[AVR32_SYNTAX_RJMP],
1.23666 ++ BFD_RELOC_AVR32_11H_PCREL, 1, 0,
1.23667 ++ {
1.23668 ++ &avr32_ifield_table[AVR32_IFIELD_K10],
1.23669 ++ },
1.23670 ++ },
1.23671 ++ {
1.23672 ++ AVR32_OPC_ROL, 2, 0x5cf00000, 0xfff00000,
1.23673 ++ &avr32_syntax_table[AVR32_SYNTAX_ROL],
1.23674 ++ BFD_RELOC_UNUSED, 1, -1,
1.23675 ++ {
1.23676 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23677 ++ }
1.23678 ++ },
1.23679 ++ {
1.23680 ++ AVR32_OPC_ROR, 2, 0x5d000000, 0xfff00000,
1.23681 ++ &avr32_syntax_table[AVR32_SYNTAX_ROR],
1.23682 ++ BFD_RELOC_UNUSED, 1, -1,
1.23683 ++ {
1.23684 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23685 ++ }
1.23686 ++ },
1.23687 ++ {
1.23688 ++ AVR32_OPC_RSUB1, 2, 0x00200000, 0xe1f00000,
1.23689 ++ &avr32_syntax_table[AVR32_SYNTAX_RSUB1],
1.23690 ++ BFD_RELOC_UNUSED, 2, -1,
1.23691 ++ {
1.23692 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23693 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23694 ++ },
1.23695 ++ },
1.23696 ++ {
1.23697 ++ AVR32_OPC_RSUB2, 4, 0xe0001100, 0xe1f0ff00,
1.23698 ++ &avr32_syntax_table[AVR32_SYNTAX_RSUB2],
1.23699 ++ BFD_RELOC_AVR32_8S_EXT, 3, 2,
1.23700 ++ {
1.23701 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23702 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23703 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.23704 ++ },
1.23705 ++ },
1.23706 ++ {
1.23707 ++ AVR32_OPC_SATADD_H, 4, 0xe00002c0, 0xe1f0fff0,
1.23708 ++ &avr32_syntax_table[AVR32_SYNTAX_SATADD_H],
1.23709 ++ BFD_RELOC_UNUSED, 3, -1,
1.23710 ++ {
1.23711 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23712 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23713 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23714 ++ },
1.23715 ++ },
1.23716 ++ {
1.23717 ++ AVR32_OPC_SATADD_W, 4, 0xe00000c0, 0xe1f0fff0,
1.23718 ++ &avr32_syntax_table[AVR32_SYNTAX_SATADD_W],
1.23719 ++ BFD_RELOC_UNUSED, 3, -1,
1.23720 ++ {
1.23721 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23722 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23723 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23724 ++ },
1.23725 ++ },
1.23726 ++ {
1.23727 ++ AVR32_OPC_SATRNDS, 4, 0xf3b00000, 0xfff0fc00,
1.23728 ++ &avr32_syntax_table[AVR32_SYNTAX_SATRNDS],
1.23729 ++ BFD_RELOC_UNUSED, 3, -1,
1.23730 ++ {
1.23731 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23732 ++ &avr32_ifield_table[AVR32_IFIELD_K5E],
1.23733 ++ &avr32_ifield_table[AVR32_IFIELD_S5],
1.23734 ++ },
1.23735 ++ },
1.23736 ++ {
1.23737 ++ AVR32_OPC_SATRNDU, 4, 0xf3b00400, 0xfff0fc00,
1.23738 ++ &avr32_syntax_table[AVR32_SYNTAX_SATRNDU],
1.23739 ++ BFD_RELOC_UNUSED, 3, -1,
1.23740 ++ {
1.23741 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23742 ++ &avr32_ifield_table[AVR32_IFIELD_K5E],
1.23743 ++ &avr32_ifield_table[AVR32_IFIELD_S5],
1.23744 ++ },
1.23745 ++ },
1.23746 ++ {
1.23747 ++ AVR32_OPC_SATS, 4, 0xf1b00000, 0xfff0fc00,
1.23748 ++ &avr32_syntax_table[AVR32_SYNTAX_SATS],
1.23749 ++ BFD_RELOC_UNUSED, 3, -1,
1.23750 ++ {
1.23751 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23752 ++ &avr32_ifield_table[AVR32_IFIELD_K5E],
1.23753 ++ &avr32_ifield_table[AVR32_IFIELD_S5],
1.23754 ++ },
1.23755 ++ },
1.23756 ++ {
1.23757 ++ AVR32_OPC_SATSUB_H, 4, 0xe00003c0, 0xe1f0fff0,
1.23758 ++ &avr32_syntax_table[AVR32_SYNTAX_SATSUB_H],
1.23759 ++ BFD_RELOC_UNUSED, 3, -1,
1.23760 ++ {
1.23761 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23762 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23763 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23764 ++ },
1.23765 ++ },
1.23766 ++ {
1.23767 ++ AVR32_OPC_SATSUB_W1, 4, 0xe00001c0, 0xe1f0fff0,
1.23768 ++ &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W1],
1.23769 ++ BFD_RELOC_UNUSED, 3, -1,
1.23770 ++ {
1.23771 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23772 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23773 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23774 ++ },
1.23775 ++ },
1.23776 ++ {
1.23777 ++ AVR32_OPC_SATSUB_W2, 4, 0xe0d00000, 0xe1f00000,
1.23778 ++ &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W2],
1.23779 ++ BFD_RELOC_UNUSED, 3, -1,
1.23780 ++ {
1.23781 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23782 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23783 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.23784 ++ },
1.23785 ++ },
1.23786 ++ {
1.23787 ++ AVR32_OPC_SATU, 4, 0xf1b00400, 0xfff0fc00,
1.23788 ++ &avr32_syntax_table[AVR32_SYNTAX_SATU],
1.23789 ++ BFD_RELOC_UNUSED, 3, -1,
1.23790 ++ {
1.23791 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23792 ++ &avr32_ifield_table[AVR32_IFIELD_K5E],
1.23793 ++ &avr32_ifield_table[AVR32_IFIELD_S5],
1.23794 ++ },
1.23795 ++ },
1.23796 ++ {
1.23797 ++ AVR32_OPC_SBC, 4, 0xe0000140, 0xe1f0fff0,
1.23798 ++ &avr32_syntax_table[AVR32_SYNTAX_SBC],
1.23799 ++ BFD_RELOC_UNUSED, 3, -1,
1.23800 ++ {
1.23801 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23802 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23803 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23804 ++ },
1.23805 ++ },
1.23806 ++ {
1.23807 ++ AVR32_OPC_SBR, 2, 0xa1a00000, 0xe1e00000,
1.23808 ++ &avr32_syntax_table[AVR32_SYNTAX_SBR],
1.23809 ++ BFD_RELOC_UNUSED, 2, -1,
1.23810 ++ {
1.23811 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23812 ++ &avr32_ifield_table[AVR32_IFIELD_BIT5C],
1.23813 ++ },
1.23814 ++ },
1.23815 ++ {
1.23816 ++ AVR32_OPC_SCALL, 2, 0xd7330000, 0xffff0000,
1.23817 ++ &avr32_syntax_table[AVR32_SYNTAX_SCALL],
1.23818 ++ BFD_RELOC_UNUSED, 0, -1, { NULL },
1.23819 ++ },
1.23820 ++ {
1.23821 ++ AVR32_OPC_SCR, 2, 0x5c100000, 0xfff00000,
1.23822 ++ &avr32_syntax_table[AVR32_SYNTAX_SCR],
1.23823 ++ BFD_RELOC_UNUSED, 1, -1,
1.23824 ++ {
1.23825 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23826 ++ },
1.23827 ++ },
1.23828 ++ {
1.23829 ++ AVR32_OPC_SLEEP, 4, 0xe9b00000, 0xffffff00,
1.23830 ++ &avr32_syntax_table[AVR32_SYNTAX_SLEEP],
1.23831 ++ BFD_RELOC_AVR32_8S_EXT, 1, 0,
1.23832 ++ {
1.23833 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.23834 ++ },
1.23835 ++ },
1.23836 ++ {
1.23837 ++ AVR32_OPC_SREQ, 2, 0x5f000000, 0xfff00000,
1.23838 ++ &avr32_syntax_table[AVR32_SYNTAX_SREQ],
1.23839 ++ BFD_RELOC_UNUSED, 1, -1,
1.23840 ++ {
1.23841 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23842 ++ },
1.23843 ++ },
1.23844 ++ {
1.23845 ++ AVR32_OPC_SRNE, 2, 0x5f100000, 0xfff00000,
1.23846 ++ &avr32_syntax_table[AVR32_SYNTAX_SRNE],
1.23847 ++ BFD_RELOC_UNUSED, 1, -1,
1.23848 ++ {
1.23849 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23850 ++ },
1.23851 ++ },
1.23852 ++ {
1.23853 ++ AVR32_OPC_SRCC, 2, 0x5f200000, 0xfff00000,
1.23854 ++ &avr32_syntax_table[AVR32_SYNTAX_SRHS],
1.23855 ++ BFD_RELOC_UNUSED, 1, -1,
1.23856 ++ {
1.23857 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23858 ++ },
1.23859 ++ },
1.23860 ++ {
1.23861 ++ AVR32_OPC_SRCS, 2, 0x5f300000, 0xfff00000,
1.23862 ++ &avr32_syntax_table[AVR32_SYNTAX_SRLO],
1.23863 ++ BFD_RELOC_UNUSED, 1, -1,
1.23864 ++ {
1.23865 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23866 ++ },
1.23867 ++ },
1.23868 ++ {
1.23869 ++ AVR32_OPC_SRGE, 2, 0x5f400000, 0xfff00000,
1.23870 ++ &avr32_syntax_table[AVR32_SYNTAX_SRGE],
1.23871 ++ BFD_RELOC_UNUSED, 1, -1,
1.23872 ++ {
1.23873 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23874 ++ },
1.23875 ++ },
1.23876 ++ {
1.23877 ++ AVR32_OPC_SRLT, 2, 0x5f500000, 0xfff00000,
1.23878 ++ &avr32_syntax_table[AVR32_SYNTAX_SRLT],
1.23879 ++ BFD_RELOC_UNUSED, 1, -1,
1.23880 ++ {
1.23881 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23882 ++ },
1.23883 ++ },
1.23884 ++ {
1.23885 ++ AVR32_OPC_SRMI, 2, 0x5f600000, 0xfff00000,
1.23886 ++ &avr32_syntax_table[AVR32_SYNTAX_SRMI],
1.23887 ++ BFD_RELOC_UNUSED, 1, -1,
1.23888 ++ {
1.23889 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23890 ++ },
1.23891 ++ },
1.23892 ++ {
1.23893 ++ AVR32_OPC_SRPL, 2, 0x5f700000, 0xfff00000,
1.23894 ++ &avr32_syntax_table[AVR32_SYNTAX_SRPL],
1.23895 ++ BFD_RELOC_UNUSED, 1, -1,
1.23896 ++ {
1.23897 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23898 ++ },
1.23899 ++ },
1.23900 ++ {
1.23901 ++ AVR32_OPC_SRLS, 2, 0x5f800000, 0xfff00000,
1.23902 ++ &avr32_syntax_table[AVR32_SYNTAX_SRLS],
1.23903 ++ BFD_RELOC_UNUSED, 1, -1,
1.23904 ++ {
1.23905 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23906 ++ },
1.23907 ++ },
1.23908 ++ {
1.23909 ++ AVR32_OPC_SRGT, 2, 0x5f900000, 0xfff00000,
1.23910 ++ &avr32_syntax_table[AVR32_SYNTAX_SRGT],
1.23911 ++ BFD_RELOC_UNUSED, 1, -1,
1.23912 ++ {
1.23913 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23914 ++ },
1.23915 ++ },
1.23916 ++ {
1.23917 ++ AVR32_OPC_SRLE, 2, 0x5fa00000, 0xfff00000,
1.23918 ++ &avr32_syntax_table[AVR32_SYNTAX_SRLE],
1.23919 ++ BFD_RELOC_UNUSED, 1, -1,
1.23920 ++ {
1.23921 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23922 ++ },
1.23923 ++ },
1.23924 ++ {
1.23925 ++ AVR32_OPC_SRHI, 2, 0x5fb00000, 0xfff00000,
1.23926 ++ &avr32_syntax_table[AVR32_SYNTAX_SRHI],
1.23927 ++ BFD_RELOC_UNUSED, 1, -1,
1.23928 ++ {
1.23929 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23930 ++ },
1.23931 ++ },
1.23932 ++ {
1.23933 ++ AVR32_OPC_SRVS, 2, 0x5fc00000, 0xfff00000,
1.23934 ++ &avr32_syntax_table[AVR32_SYNTAX_SRVS],
1.23935 ++ BFD_RELOC_UNUSED, 1, -1,
1.23936 ++ {
1.23937 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23938 ++ },
1.23939 ++ },
1.23940 ++ {
1.23941 ++ AVR32_OPC_SRVC, 2, 0x5fd00000, 0xfff00000,
1.23942 ++ &avr32_syntax_table[AVR32_SYNTAX_SRVC],
1.23943 ++ BFD_RELOC_UNUSED, 1, -1,
1.23944 ++ {
1.23945 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23946 ++ },
1.23947 ++ },
1.23948 ++ {
1.23949 ++ AVR32_OPC_SRQS, 2, 0x5fe00000, 0xfff00000,
1.23950 ++ &avr32_syntax_table[AVR32_SYNTAX_SRQS],
1.23951 ++ BFD_RELOC_UNUSED, 1, -1,
1.23952 ++ {
1.23953 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23954 ++ },
1.23955 ++ },
1.23956 ++ {
1.23957 ++ AVR32_OPC_SRAL, 2, 0x5ff00000, 0xfff00000,
1.23958 ++ &avr32_syntax_table[AVR32_SYNTAX_SRAL],
1.23959 ++ BFD_RELOC_UNUSED, 1, -1,
1.23960 ++ {
1.23961 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23962 ++ },
1.23963 ++ },
1.23964 ++ {
1.23965 ++ AVR32_OPC_SSRF, 2, 0xd2030000, 0xfe0f0000,
1.23966 ++ &avr32_syntax_table[AVR32_SYNTAX_SSRF],
1.23967 ++ BFD_RELOC_UNUSED, 1, -1,
1.23968 ++ {
1.23969 ++ &avr32_ifield_table[AVR32_IFIELD_K5C],
1.23970 ++ },
1.23971 ++ },
1.23972 ++ {
1.23973 ++ AVR32_OPC_ST_B1, 2, 0x00c00000, 0xe1f00000,
1.23974 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_B1],
1.23975 ++ BFD_RELOC_UNUSED, 2, -1,
1.23976 ++ {
1.23977 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23978 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23979 ++ },
1.23980 ++ },
1.23981 ++ {
1.23982 ++ AVR32_OPC_ST_B2, 2, 0x00f00000, 0xe1f00000,
1.23983 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_B2],
1.23984 ++ BFD_RELOC_UNUSED, 2, -1,
1.23985 ++ {
1.23986 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23987 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23988 ++ },
1.23989 ++ },
1.23990 ++ {
1.23991 ++ AVR32_OPC_ST_B5, 4, 0xe0000b00, 0xe1f0ffc0,
1.23992 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_B5],
1.23993 ++ BFD_RELOC_UNUSED, 4, -1,
1.23994 ++ {
1.23995 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.23996 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.23997 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.23998 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.23999 ++ },
1.24000 ++ },
1.24001 ++ {
1.24002 ++ AVR32_OPC_ST_B3, 2, 0xa0800000, 0xe1800000,
1.24003 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_B3],
1.24004 ++ BFD_RELOC_AVR32_3U, 3, 1,
1.24005 ++ {
1.24006 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24007 ++ &avr32_ifield_table[AVR32_IFIELD_K3],
1.24008 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24009 ++ },
1.24010 ++ },
1.24011 ++ {
1.24012 ++ AVR32_OPC_ST_B4, 4, 0xe1600000, 0xe1f00000,
1.24013 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_B4],
1.24014 ++ BFD_RELOC_AVR32_16S, 3, 1,
1.24015 ++ {
1.24016 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24017 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.24018 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24019 ++ },
1.24020 ++ },
1.24021 ++ {
1.24022 ++ AVR32_OPC_ST_D1, 2, 0xa1200000, 0xe1f10000,
1.24023 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_D1],
1.24024 ++ BFD_RELOC_UNUSED, 2, -1,
1.24025 ++ {
1.24026 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24027 ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
1.24028 ++ },
1.24029 ++ },
1.24030 ++ {
1.24031 ++ AVR32_OPC_ST_D2, 2, 0xa1210000, 0xe1f10000,
1.24032 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_D2],
1.24033 ++ BFD_RELOC_UNUSED, 2, -1,
1.24034 ++ {
1.24035 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24036 ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
1.24037 ++ },
1.24038 ++ },
1.24039 ++ {
1.24040 ++ AVR32_OPC_ST_D3, 2, 0xa1110000, 0xe1f10000,
1.24041 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_D3],
1.24042 ++ BFD_RELOC_UNUSED, 2, -1,
1.24043 ++ {
1.24044 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24045 ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
1.24046 ++ },
1.24047 ++ },
1.24048 ++ {
1.24049 ++ AVR32_OPC_ST_D5, 4, 0xe0000800, 0xe1f0ffc1,
1.24050 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_D5],
1.24051 ++ BFD_RELOC_UNUSED, 4, -1,
1.24052 ++ {
1.24053 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24054 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24055 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.24056 ++ &avr32_ifield_table[AVR32_IFIELD_RD_DW],
1.24057 ++ },
1.24058 ++ },
1.24059 ++ {
1.24060 ++ AVR32_OPC_ST_D4, 4, 0xe0e10000, 0xe1f10000,
1.24061 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_D4],
1.24062 ++ BFD_RELOC_AVR32_16S, 3, 1,
1.24063 ++ {
1.24064 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24065 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.24066 ++ &avr32_ifield_table[AVR32_IFIELD_RY_DW],
1.24067 ++ },
1.24068 ++ },
1.24069 ++ {
1.24070 ++ AVR32_OPC_ST_H1, 2, 0x00b00000, 0xe1f00000,
1.24071 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_H1],
1.24072 ++ BFD_RELOC_UNUSED, 2, -1,
1.24073 ++ {
1.24074 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24075 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24076 ++ },
1.24077 ++ },
1.24078 ++ {
1.24079 ++ AVR32_OPC_ST_H2, 2, 0x00e00000, 0xe1f00000,
1.24080 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_H2],
1.24081 ++ BFD_RELOC_UNUSED, 2, -1,
1.24082 ++ {
1.24083 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24084 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24085 ++ },
1.24086 ++ },
1.24087 ++ {
1.24088 ++ AVR32_OPC_ST_H5, 4, 0xe0000a00, 0xe1f0ffc0,
1.24089 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_H5],
1.24090 ++ BFD_RELOC_UNUSED, 4, -1,
1.24091 ++ {
1.24092 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24093 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24094 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.24095 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.24096 ++ },
1.24097 ++ },
1.24098 ++ {
1.24099 ++ AVR32_OPC_ST_H3, 2, 0xa0000000, 0xe1800000,
1.24100 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_H3],
1.24101 ++ BFD_RELOC_AVR32_4UH, 3, 1,
1.24102 ++ {
1.24103 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24104 ++ &avr32_ifield_table[AVR32_IFIELD_K3],
1.24105 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24106 ++ },
1.24107 ++ },
1.24108 ++ {
1.24109 ++ AVR32_OPC_ST_H4, 4, 0xe1500000, 0xe1f00000,
1.24110 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_H4],
1.24111 ++ BFD_RELOC_AVR32_16S, 3, 1,
1.24112 ++ {
1.24113 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24114 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.24115 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24116 ++ },
1.24117 ++ },
1.24118 ++ {
1.24119 ++ AVR32_OPC_ST_W1, 2, 0x00a00000, 0xe1f00000,
1.24120 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_W1],
1.24121 ++ BFD_RELOC_UNUSED, 2, -1,
1.24122 ++ {
1.24123 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24124 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24125 ++ },
1.24126 ++ },
1.24127 ++ {
1.24128 ++ AVR32_OPC_ST_W2, 2, 0x00d00000, 0xe1f00000,
1.24129 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_W2],
1.24130 ++ BFD_RELOC_UNUSED, 2, -1,
1.24131 ++ {
1.24132 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24133 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24134 ++ },
1.24135 ++ },
1.24136 ++ {
1.24137 ++ AVR32_OPC_ST_W5, 4, 0xe0000900, 0xe1f0ffc0,
1.24138 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_W5],
1.24139 ++ BFD_RELOC_UNUSED, 4, -1,
1.24140 ++ {
1.24141 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24142 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24143 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.24144 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.24145 ++ },
1.24146 ++ },
1.24147 ++ {
1.24148 ++ AVR32_OPC_ST_W3, 2, 0x81000000, 0xe1000000,
1.24149 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_W3],
1.24150 ++ BFD_RELOC_AVR32_6UW, 3, 1,
1.24151 ++ {
1.24152 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24153 ++ &avr32_ifield_table[AVR32_IFIELD_K4],
1.24154 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24155 ++ },
1.24156 ++ },
1.24157 ++ {
1.24158 ++ AVR32_OPC_ST_W4, 4, 0xe1400000, 0xe1f00000,
1.24159 ++ &avr32_syntax_table[AVR32_SYNTAX_ST_W4],
1.24160 ++ BFD_RELOC_AVR32_16S, 3, 1,
1.24161 ++ {
1.24162 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24163 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.24164 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24165 ++ },
1.24166 ++ },
1.24167 ++ {
1.24168 ++ AVR32_OPC_STC_D1, 4, 0xeba01000, 0xfff01100,
1.24169 ++ &avr32_syntax_table[AVR32_SYNTAX_STC_D1],
1.24170 ++ BFD_RELOC_AVR32_10UW, 4, 2,
1.24171 ++ {
1.24172 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.24173 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24174 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24175 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
1.24176 ++ },
1.24177 ++ },
1.24178 ++ {
1.24179 ++ AVR32_OPC_STC_D2, 4, 0xefa00070, 0xfff011f0,
1.24180 ++ &avr32_syntax_table[AVR32_SYNTAX_STC_D2],
1.24181 ++ BFD_RELOC_UNUSED, 3, -1,
1.24182 ++ {
1.24183 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.24184 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24185 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
1.24186 ++ },
1.24187 ++ },
1.24188 ++ {
1.24189 ++ AVR32_OPC_STC_D3, 4, 0xefa010c0, 0xfff011c0,
1.24190 ++ &avr32_syntax_table[AVR32_SYNTAX_STC_D3],
1.24191 ++ BFD_RELOC_UNUSED, 5, -1,
1.24192 ++ {
1.24193 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.24194 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24195 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.24196 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.24197 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
1.24198 ++ },
1.24199 ++ },
1.24200 ++ {
1.24201 ++ AVR32_OPC_STC_W1, 4, 0xeba00000, 0xfff01000,
1.24202 ++ &avr32_syntax_table[AVR32_SYNTAX_STC_W1],
1.24203 ++ BFD_RELOC_AVR32_10UW, 4, 2,
1.24204 ++ {
1.24205 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.24206 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24207 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24208 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
1.24209 ++ },
1.24210 ++ },
1.24211 ++ {
1.24212 ++ AVR32_OPC_STC_W2, 4, 0xefa00060, 0xfff010ff,
1.24213 ++ &avr32_syntax_table[AVR32_SYNTAX_STC_W2],
1.24214 ++ BFD_RELOC_UNUSED, 3, -1,
1.24215 ++ {
1.24216 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.24217 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24218 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
1.24219 ++ },
1.24220 ++ },
1.24221 ++ {
1.24222 ++ AVR32_OPC_STC_W3, 4, 0xefa01080, 0xfff010c0,
1.24223 ++ &avr32_syntax_table[AVR32_SYNTAX_STC_W3],
1.24224 ++ BFD_RELOC_UNUSED, 5, -1,
1.24225 ++ {
1.24226 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.24227 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24228 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.24229 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.24230 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
1.24231 ++ },
1.24232 ++ },
1.24233 ++ {
1.24234 ++ AVR32_OPC_STC0_D, 4, 0xf7a00000, 0xfff00100,
1.24235 ++ &avr32_syntax_table[AVR32_SYNTAX_STC0_D],
1.24236 ++ BFD_RELOC_AVR32_14UW, 3, 1,
1.24237 ++ {
1.24238 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24239 ++ &avr32_ifield_table[AVR32_IFIELD_K12CP],
1.24240 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
1.24241 ++ },
1.24242 ++ },
1.24243 ++ {
1.24244 ++ AVR32_OPC_STC0_W, 4, 0xf5a00000, 0xfff00000,
1.24245 ++ &avr32_syntax_table[AVR32_SYNTAX_STC0_W],
1.24246 ++ BFD_RELOC_AVR32_14UW, 3, 1,
1.24247 ++ {
1.24248 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24249 ++ &avr32_ifield_table[AVR32_IFIELD_K12CP],
1.24250 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
1.24251 ++ },
1.24252 ++ },
1.24253 ++ {
1.24254 ++ AVR32_OPC_STCM_D, 4, 0xeda00500, 0xfff01f00,
1.24255 ++ &avr32_syntax_table[AVR32_SYNTAX_STCM_D],
1.24256 ++ BFD_RELOC_UNUSED, 3, -1,
1.24257 ++ {
1.24258 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.24259 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24260 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24261 ++ },
1.24262 ++ },
1.24263 ++ {
1.24264 ++ AVR32_OPC_STCM_D_PU, 4, 0xeda01500, 0xfff01f00,
1.24265 ++ &avr32_syntax_table[AVR32_SYNTAX_STCM_D_PU],
1.24266 ++ BFD_RELOC_UNUSED, 3, -1,
1.24267 ++ {
1.24268 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.24269 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24270 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24271 ++ },
1.24272 ++ },
1.24273 ++ {
1.24274 ++ AVR32_OPC_STCM_W, 4, 0xeda00200, 0xfff01e00,
1.24275 ++ &avr32_syntax_table[AVR32_SYNTAX_STCM_W],
1.24276 ++ BFD_RELOC_UNUSED, 4, -1,
1.24277 ++ {
1.24278 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.24279 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24280 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24281 ++ &avr32_ifield_table[AVR32_IFIELD_CM_HL],
1.24282 ++ },
1.24283 ++ },
1.24284 ++ {
1.24285 ++ AVR32_OPC_STCM_W_PU, 4, 0xeda01200, 0xfff01e00,
1.24286 ++ &avr32_syntax_table[AVR32_SYNTAX_STCM_W_PU],
1.24287 ++ BFD_RELOC_UNUSED, 4, -1,
1.24288 ++ {
1.24289 ++ &avr32_ifield_table[AVR32_IFIELD_CPNO],
1.24290 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24291 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24292 ++ &avr32_ifield_table[AVR32_IFIELD_CM_HL],
1.24293 ++ },
1.24294 ++ },
1.24295 ++ {
1.24296 ++ AVR32_OPC_STCOND, 4, 0xe1700000, 0xe1f00000,
1.24297 ++ &avr32_syntax_table[AVR32_SYNTAX_STCOND],
1.24298 ++ BFD_RELOC_UNUSED, 3, -1,
1.24299 ++ {
1.24300 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24301 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.24302 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24303 ++ },
1.24304 ++ },
1.24305 ++ {
1.24306 ++ AVR32_OPC_STDSP, 2, 0x50000000, 0xf8000000,
1.24307 ++ &avr32_syntax_table[AVR32_SYNTAX_STDSP],
1.24308 ++ BFD_RELOC_UNUSED, 2, -1,
1.24309 ++ {
1.24310 ++ &avr32_ifield_table[AVR32_IFIELD_K7C],
1.24311 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24312 ++ },
1.24313 ++ },
1.24314 ++ {
1.24315 ++ AVR32_OPC_STHH_W2, 4, 0xe1e08000, 0xe1f0c0c0,
1.24316 ++ &avr32_syntax_table[AVR32_SYNTAX_STHH_W2],
1.24317 ++ BFD_RELOC_UNUSED, 7, -1,
1.24318 ++ {
1.24319 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.24320 ++ &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
1.24321 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.24322 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24323 ++ &avr32_ifield_table[AVR32_IFIELD_X2],
1.24324 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24325 ++ &avr32_ifield_table[AVR32_IFIELD_Y2],
1.24326 ++ },
1.24327 ++ },
1.24328 ++ {
1.24329 ++ AVR32_OPC_STHH_W1, 4, 0xe1e0c000, 0xe1f0c000,
1.24330 ++ &avr32_syntax_table[AVR32_SYNTAX_STHH_W1],
1.24331 ++ BFD_RELOC_AVR32_STHH_W, 6, 1,
1.24332 ++ {
1.24333 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.24334 ++ &avr32_ifield_table[AVR32_IFIELD_K8E2],
1.24335 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24336 ++ &avr32_ifield_table[AVR32_IFIELD_X2],
1.24337 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24338 ++ &avr32_ifield_table[AVR32_IFIELD_Y2],
1.24339 ++ },
1.24340 ++ },
1.24341 ++ {
1.24342 ++ AVR32_OPC_STM, 4, 0xe9c00000, 0xfff00000,
1.24343 ++ &avr32_syntax_table[AVR32_SYNTAX_STM],
1.24344 ++ BFD_RELOC_UNUSED, 2, -1,
1.24345 ++ {
1.24346 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24347 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.24348 ++ },
1.24349 ++ },
1.24350 ++ {
1.24351 ++ AVR32_OPC_STM_PU, 4, 0xebc00000, 0xfff00000,
1.24352 ++ &avr32_syntax_table[AVR32_SYNTAX_STM_PU],
1.24353 ++ BFD_RELOC_UNUSED, 2, -1,
1.24354 ++ {
1.24355 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24356 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.24357 ++ },
1.24358 ++ },
1.24359 ++ {
1.24360 ++ AVR32_OPC_STMTS, 4, 0xedc00000, 0xfff00000,
1.24361 ++ &avr32_syntax_table[AVR32_SYNTAX_STMTS],
1.24362 ++ BFD_RELOC_UNUSED, 2, -1,
1.24363 ++ {
1.24364 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24365 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.24366 ++ },
1.24367 ++ },
1.24368 ++ {
1.24369 ++ AVR32_OPC_STMTS_PU, 4, 0xefc00000, 0xfff00000,
1.24370 ++ &avr32_syntax_table[AVR32_SYNTAX_STMTS_PU],
1.24371 ++ BFD_RELOC_UNUSED, 2, -1,
1.24372 ++ {
1.24373 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24374 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.24375 ++ },
1.24376 ++ },
1.24377 ++ {
1.24378 ++ AVR32_OPC_STSWP_H, 4, 0xe1d09000, 0xe1f0f000,
1.24379 ++ &avr32_syntax_table[AVR32_SYNTAX_STSWP_H],
1.24380 ++ BFD_RELOC_UNUSED, 3, -1,
1.24381 ++ {
1.24382 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24383 ++ &avr32_ifield_table[AVR32_IFIELD_K12],
1.24384 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24385 ++ },
1.24386 ++ },
1.24387 ++ {
1.24388 ++ AVR32_OPC_STSWP_W, 4, 0xe1d0a000, 0xe1f0f000,
1.24389 ++ &avr32_syntax_table[AVR32_SYNTAX_STSWP_W],
1.24390 ++ BFD_RELOC_UNUSED, 3, -1,
1.24391 ++ {
1.24392 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24393 ++ &avr32_ifield_table[AVR32_IFIELD_K12],
1.24394 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24395 ++ },
1.24396 ++ },
1.24397 ++ {
1.24398 ++ AVR32_OPC_SUB1, 2, 0x00100000, 0xe1f00000,
1.24399 ++ &avr32_syntax_table[AVR32_SYNTAX_SUB1],
1.24400 ++ BFD_RELOC_UNUSED, 2, -1,
1.24401 ++ {
1.24402 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24403 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24404 ++ },
1.24405 ++ },
1.24406 ++ {
1.24407 ++ AVR32_OPC_SUB2, 4, 0xe0000100, 0xe1f0ffc0,
1.24408 ++ &avr32_syntax_table[AVR32_SYNTAX_SUB2],
1.24409 ++ BFD_RELOC_UNUSED, 4, -1,
1.24410 ++ {
1.24411 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.24412 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24413 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24414 ++ &avr32_ifield_table[AVR32_IFIELD_K2],
1.24415 ++ },
1.24416 ++ },
1.24417 ++ {
1.24418 ++ AVR32_OPC_SUB5, 4, 0xe0c00000, 0xe1f00000,
1.24419 ++ &avr32_syntax_table[AVR32_SYNTAX_SUB5],
1.24420 ++ BFD_RELOC_AVR32_SUB5, 3, 2,
1.24421 ++ {
1.24422 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24423 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24424 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.24425 ++ },
1.24426 ++ },
1.24427 ++ {
1.24428 ++ AVR32_OPC_SUB3_SP, 2, 0x200d0000, 0xf00f0000,
1.24429 ++ &avr32_syntax_table[AVR32_SYNTAX_SUB3_SP],
1.24430 ++ BFD_RELOC_AVR32_10SW, 2, 1,
1.24431 ++ {
1.24432 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24433 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.24434 ++ },
1.24435 ++ },
1.24436 ++ {
1.24437 ++ AVR32_OPC_SUB3, 2, 0x20000000, 0xf0000000,
1.24438 ++ &avr32_syntax_table[AVR32_SYNTAX_SUB3],
1.24439 ++ BFD_RELOC_AVR32_8S, 2, 1,
1.24440 ++ {
1.24441 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24442 ++ &avr32_ifield_table[AVR32_IFIELD_K8C],
1.24443 ++ },
1.24444 ++ },
1.24445 ++ {
1.24446 ++ AVR32_OPC_SUB4, 4, 0xe0200000, 0xe1e00000,
1.24447 ++ &avr32_syntax_table[AVR32_SYNTAX_SUB4],
1.24448 ++ BFD_RELOC_AVR32_21S, 2, 1,
1.24449 ++ {
1.24450 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24451 ++ &avr32_ifield_table[AVR32_IFIELD_K21],
1.24452 ++ },
1.24453 ++ },
1.24454 ++ {
1.24455 ++ AVR32_OPC_SUBEQ, 4, 0xf7b00000, 0xfff0ff00,
1.24456 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBEQ],
1.24457 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24458 ++ {
1.24459 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24460 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24461 ++ },
1.24462 ++ },
1.24463 ++ {
1.24464 ++ AVR32_OPC_SUBNE, 4, 0xf7b00100, 0xfff0ff00,
1.24465 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBNE],
1.24466 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24467 ++ {
1.24468 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24469 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24470 ++ },
1.24471 ++ },
1.24472 ++ {
1.24473 ++ AVR32_OPC_SUBCC, 4, 0xf7b00200, 0xfff0ff00,
1.24474 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBHS],
1.24475 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24476 ++ {
1.24477 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24478 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24479 ++ },
1.24480 ++ },
1.24481 ++ {
1.24482 ++ AVR32_OPC_SUBCS, 4, 0xf7b00300, 0xfff0ff00,
1.24483 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBLO],
1.24484 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24485 ++ {
1.24486 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24487 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24488 ++ },
1.24489 ++ },
1.24490 ++ {
1.24491 ++ AVR32_OPC_SUBGE, 4, 0xf7b00400, 0xfff0ff00,
1.24492 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBGE],
1.24493 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24494 ++ {
1.24495 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24496 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24497 ++ },
1.24498 ++ },
1.24499 ++ {
1.24500 ++ AVR32_OPC_SUBLT, 4, 0xf7b00500, 0xfff0ff00,
1.24501 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBLT],
1.24502 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24503 ++ {
1.24504 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24505 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24506 ++ },
1.24507 ++ },
1.24508 ++ {
1.24509 ++ AVR32_OPC_SUBMI, 4, 0xf7b00600, 0xfff0ff00,
1.24510 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBMI],
1.24511 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24512 ++ {
1.24513 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24514 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24515 ++ },
1.24516 ++ },
1.24517 ++ {
1.24518 ++ AVR32_OPC_SUBPL, 4, 0xf7b00700, 0xfff0ff00,
1.24519 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBPL],
1.24520 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24521 ++ {
1.24522 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24523 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24524 ++ },
1.24525 ++ },
1.24526 ++ {
1.24527 ++ AVR32_OPC_SUBLS, 4, 0xf7b00800, 0xfff0ff00,
1.24528 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBLS],
1.24529 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24530 ++ {
1.24531 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24532 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24533 ++ },
1.24534 ++ },
1.24535 ++ {
1.24536 ++ AVR32_OPC_SUBGT, 4, 0xf7b00900, 0xfff0ff00,
1.24537 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBGT],
1.24538 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24539 ++ {
1.24540 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24541 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24542 ++ },
1.24543 ++ },
1.24544 ++ {
1.24545 ++ AVR32_OPC_SUBLE, 4, 0xf7b00a00, 0xfff0ff00,
1.24546 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBLE],
1.24547 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24548 ++ {
1.24549 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24550 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24551 ++ },
1.24552 ++ },
1.24553 ++ {
1.24554 ++ AVR32_OPC_SUBHI, 4, 0xf7b00b00, 0xfff0ff00,
1.24555 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBHI],
1.24556 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24557 ++ {
1.24558 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24559 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24560 ++ },
1.24561 ++ },
1.24562 ++ {
1.24563 ++ AVR32_OPC_SUBVS, 4, 0xf7b00c00, 0xfff0ff00,
1.24564 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBVS],
1.24565 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24566 ++ {
1.24567 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24568 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24569 ++ },
1.24570 ++ },
1.24571 ++ {
1.24572 ++ AVR32_OPC_SUBVC, 4, 0xf7b00d00, 0xfff0ff00,
1.24573 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBVC],
1.24574 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24575 ++ {
1.24576 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24577 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24578 ++ },
1.24579 ++ },
1.24580 ++ {
1.24581 ++ AVR32_OPC_SUBQS, 4, 0xf7b00e00, 0xfff0ff00,
1.24582 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBQS],
1.24583 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24584 ++ {
1.24585 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24586 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24587 ++ },
1.24588 ++ },
1.24589 ++ {
1.24590 ++ AVR32_OPC_SUBAL, 4, 0xf7b00f00, 0xfff0ff00,
1.24591 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBAL],
1.24592 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24593 ++ {
1.24594 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24595 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24596 ++ },
1.24597 ++ },
1.24598 ++ {
1.24599 ++ AVR32_OPC_SUBFEQ, 4, 0xf5b00000, 0xfff0ff00,
1.24600 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFEQ],
1.24601 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24602 ++ {
1.24603 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24604 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24605 ++ },
1.24606 ++ },
1.24607 ++ {
1.24608 ++ AVR32_OPC_SUBFNE, 4, 0xf5b00100, 0xfff0ff00,
1.24609 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFNE],
1.24610 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24611 ++ {
1.24612 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24613 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24614 ++ },
1.24615 ++ },
1.24616 ++ {
1.24617 ++ AVR32_OPC_SUBFCC, 4, 0xf5b00200, 0xfff0ff00,
1.24618 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFHS],
1.24619 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24620 ++ {
1.24621 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24622 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24623 ++ },
1.24624 ++ },
1.24625 ++ {
1.24626 ++ AVR32_OPC_SUBFCS, 4, 0xf5b00300, 0xfff0ff00,
1.24627 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFLO],
1.24628 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24629 ++ {
1.24630 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24631 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24632 ++ },
1.24633 ++ },
1.24634 ++ {
1.24635 ++ AVR32_OPC_SUBFGE, 4, 0xf5b00400, 0xfff0ff00,
1.24636 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFGE],
1.24637 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24638 ++ {
1.24639 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24640 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24641 ++ },
1.24642 ++ },
1.24643 ++ {
1.24644 ++ AVR32_OPC_SUBFLT, 4, 0xf5b00500, 0xfff0ff00,
1.24645 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFLT],
1.24646 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24647 ++ {
1.24648 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24649 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24650 ++ },
1.24651 ++ },
1.24652 ++ {
1.24653 ++ AVR32_OPC_SUBFMI, 4, 0xf5b00600, 0xfff0ff00,
1.24654 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFMI],
1.24655 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24656 ++ {
1.24657 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24658 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24659 ++ },
1.24660 ++ },
1.24661 ++ {
1.24662 ++ AVR32_OPC_SUBFPL, 4, 0xf5b00700, 0xfff0ff00,
1.24663 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFPL],
1.24664 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24665 ++ {
1.24666 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24667 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24668 ++ },
1.24669 ++ },
1.24670 ++ {
1.24671 ++ AVR32_OPC_SUBFLS, 4, 0xf5b00800, 0xfff0ff00,
1.24672 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFLS],
1.24673 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24674 ++ {
1.24675 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24676 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24677 ++ },
1.24678 ++ },
1.24679 ++ {
1.24680 ++ AVR32_OPC_SUBFGT, 4, 0xf5b00900, 0xfff0ff00,
1.24681 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFGT],
1.24682 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24683 ++ {
1.24684 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24685 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24686 ++ },
1.24687 ++ },
1.24688 ++ {
1.24689 ++ AVR32_OPC_SUBFLE, 4, 0xf5b00a00, 0xfff0ff00,
1.24690 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFLE],
1.24691 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24692 ++ {
1.24693 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24694 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24695 ++ },
1.24696 ++ },
1.24697 ++ {
1.24698 ++ AVR32_OPC_SUBFHI, 4, 0xf5b00b00, 0xfff0ff00,
1.24699 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFHI],
1.24700 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24701 ++ {
1.24702 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24703 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24704 ++ },
1.24705 ++ },
1.24706 ++ {
1.24707 ++ AVR32_OPC_SUBFVS, 4, 0xf5b00c00, 0xfff0ff00,
1.24708 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFVS],
1.24709 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24710 ++ {
1.24711 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24712 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24713 ++ },
1.24714 ++ },
1.24715 ++ {
1.24716 ++ AVR32_OPC_SUBFVC, 4, 0xf5b00d00, 0xfff0ff00,
1.24717 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFVC],
1.24718 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24719 ++ {
1.24720 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24721 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24722 ++ },
1.24723 ++ },
1.24724 ++ {
1.24725 ++ AVR32_OPC_SUBFQS, 4, 0xf5b00e00, 0xfff0ff00,
1.24726 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFQS],
1.24727 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24728 ++ {
1.24729 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24730 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24731 ++ },
1.24732 ++ },
1.24733 ++ {
1.24734 ++ AVR32_OPC_SUBFAL, 4, 0xf5b00f00, 0xfff0ff00,
1.24735 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBFAL],
1.24736 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1,
1.24737 ++ {
1.24738 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24739 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24740 ++ },
1.24741 ++ },
1.24742 ++ {
1.24743 ++ AVR32_OPC_SUBHH_W, 4, 0xe0000f00, 0xe1f0ffc0,
1.24744 ++ &avr32_syntax_table[AVR32_SYNTAX_SUBHH_W],
1.24745 ++ BFD_RELOC_UNUSED, 5, -1,
1.24746 ++ {
1.24747 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.24748 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24749 ++ &avr32_ifield_table[AVR32_IFIELD_X],
1.24750 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24751 ++ &avr32_ifield_table[AVR32_IFIELD_Y],
1.24752 ++ },
1.24753 ++ },
1.24754 ++ {
1.24755 ++ AVR32_OPC_SWAP_B, 2, 0x5cb00000, 0xfff00000,
1.24756 ++ &avr32_syntax_table[AVR32_SYNTAX_SWAP_B],
1.24757 ++ BFD_RELOC_UNUSED, 1, -1,
1.24758 ++ {
1.24759 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24760 ++ }
1.24761 ++ },
1.24762 ++ {
1.24763 ++ AVR32_OPC_SWAP_BH, 2, 0x5cc00000, 0xfff00000,
1.24764 ++ &avr32_syntax_table[AVR32_SYNTAX_SWAP_BH],
1.24765 ++ BFD_RELOC_UNUSED, 1, -1,
1.24766 ++ {
1.24767 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24768 ++ }
1.24769 ++ },
1.24770 ++ {
1.24771 ++ AVR32_OPC_SWAP_H, 2, 0x5ca00000, 0xfff00000,
1.24772 ++ &avr32_syntax_table[AVR32_SYNTAX_SWAP_H],
1.24773 ++ BFD_RELOC_UNUSED, 1, -1,
1.24774 ++ {
1.24775 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24776 ++ }
1.24777 ++ },
1.24778 ++ {
1.24779 ++ AVR32_OPC_SYNC, 4, 0xebb00000, 0xffffff00,
1.24780 ++ &avr32_syntax_table[AVR32_SYNTAX_SYNC],
1.24781 ++ BFD_RELOC_AVR32_8S_EXT, 1, 0,
1.24782 ++ {
1.24783 ++ &avr32_ifield_table[AVR32_IFIELD_K8E],
1.24784 ++ }
1.24785 ++ },
1.24786 ++ {
1.24787 ++ AVR32_OPC_TLBR, 2, 0xd6430000, 0xffff0000,
1.24788 ++ &avr32_syntax_table[AVR32_SYNTAX_TLBR],
1.24789 ++ BFD_RELOC_UNUSED, 0, -1, { NULL },
1.24790 ++ },
1.24791 ++ {
1.24792 ++ AVR32_OPC_TLBS, 2, 0xd6530000, 0xffff0000,
1.24793 ++ &avr32_syntax_table[AVR32_SYNTAX_TLBS],
1.24794 ++ BFD_RELOC_UNUSED, 0, -1, { NULL },
1.24795 ++ },
1.24796 ++ {
1.24797 ++ AVR32_OPC_TLBW, 2, 0xd6630000, 0xffff0000,
1.24798 ++ &avr32_syntax_table[AVR32_SYNTAX_TLBW],
1.24799 ++ BFD_RELOC_UNUSED, 0, -1, { NULL },
1.24800 ++ },
1.24801 ++ {
1.24802 ++ AVR32_OPC_TNBZ, 2, 0x5ce00000, 0xfff00000,
1.24803 ++ &avr32_syntax_table[AVR32_SYNTAX_TNBZ],
1.24804 ++ BFD_RELOC_UNUSED, 1, -1,
1.24805 ++ {
1.24806 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24807 ++ }
1.24808 ++ },
1.24809 ++ {
1.24810 ++ AVR32_OPC_TST, 2, 0x00700000, 0xe1f00000,
1.24811 ++ &avr32_syntax_table[AVR32_SYNTAX_TST],
1.24812 ++ BFD_RELOC_UNUSED, 2, -1,
1.24813 ++ {
1.24814 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24815 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24816 ++ },
1.24817 ++ },
1.24818 ++ {
1.24819 ++ AVR32_OPC_XCHG, 4, 0xe0000b40, 0xe1f0fff0,
1.24820 ++ &avr32_syntax_table[AVR32_SYNTAX_XCHG],
1.24821 ++ BFD_RELOC_UNUSED, 3, -1,
1.24822 ++ {
1.24823 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E],
1.24824 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24825 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24826 ++ },
1.24827 ++ },
1.24828 ++ {
1.24829 ++ AVR32_OPC_MEMC, 4, 0xf6100000, 0xfff00000,
1.24830 ++ &avr32_syntax_table[AVR32_SYNTAX_MEMC],
1.24831 ++ BFD_RELOC_AVR32_15S, 2, 0,
1.24832 ++ {
1.24833 ++ &avr32_ifield_table[AVR32_IFIELD_MEM15],
1.24834 ++ &avr32_ifield_table[AVR32_IFIELD_MEMB5],
1.24835 ++ },
1.24836 ++ },
1.24837 ++ {
1.24838 ++ AVR32_OPC_MEMS, 4, 0xf8100000, 0xfff00000,
1.24839 ++ &avr32_syntax_table[AVR32_SYNTAX_MEMS],
1.24840 ++ BFD_RELOC_AVR32_15S, 2, 0,
1.24841 ++ {
1.24842 ++ &avr32_ifield_table[AVR32_IFIELD_MEM15],
1.24843 ++ &avr32_ifield_table[AVR32_IFIELD_MEMB5],
1.24844 ++ },
1.24845 ++ },
1.24846 ++ {
1.24847 ++ AVR32_OPC_MEMT, 4, 0xfa100000, 0xfff00000,
1.24848 ++ &avr32_syntax_table[AVR32_SYNTAX_MEMT],
1.24849 ++ BFD_RELOC_AVR32_15S, 2, 0,
1.24850 ++ {
1.24851 ++ &avr32_ifield_table[AVR32_IFIELD_MEM15],
1.24852 ++ &avr32_ifield_table[AVR32_IFIELD_MEMB5],
1.24853 ++ },
1.24854 ++ },
1.24855 ++ {
1.24856 ++ AVR32_OPC_BFEXTS, 4, 0xe1d0b000, 0xe1f0fc00,
1.24857 ++ &avr32_syntax_table[AVR32_SYNTAX_BFEXTS],
1.24858 ++ BFD_RELOC_UNUSED, 4, -1,
1.24859 ++ {
1.24860 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24861 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24862 ++ &avr32_ifield_table[AVR32_IFIELD_S5],
1.24863 ++ &avr32_ifield_table[AVR32_IFIELD_K5E],
1.24864 ++ },
1.24865 ++ },
1.24866 ++ {
1.24867 ++ AVR32_OPC_BFEXTU, 4, 0xe1d0c000, 0xe1f0fc00,
1.24868 ++ &avr32_syntax_table[AVR32_SYNTAX_BFEXTU],
1.24869 ++ BFD_RELOC_UNUSED, 4, -1,
1.24870 ++ {
1.24871 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24872 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24873 ++ &avr32_ifield_table[AVR32_IFIELD_S5],
1.24874 ++ &avr32_ifield_table[AVR32_IFIELD_K5E],
1.24875 ++ },
1.24876 ++ },
1.24877 ++ {
1.24878 ++ AVR32_OPC_BFINS, 4, 0xe1d0d000, 0xe1f0fc00,
1.24879 ++ &avr32_syntax_table[AVR32_SYNTAX_BFINS],
1.24880 ++ BFD_RELOC_UNUSED, 4, -1,
1.24881 ++ {
1.24882 ++ &avr32_ifield_table[AVR32_IFIELD_RX],
1.24883 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.24884 ++ &avr32_ifield_table[AVR32_IFIELD_S5],
1.24885 ++ &avr32_ifield_table[AVR32_IFIELD_K5E],
1.24886 ++ },
1.24887 ++ },
1.24888 ++#define AVR32_OPCODE_RSUBCOND(cond_name, cond_field) \
1.24889 ++ { \
1.24890 ++ AVR32_OPC_RSUB ## cond_name , 4, \
1.24891 ++ 0xfbb00000 | (cond_field << 8), 0xfff0ff00, \
1.24892 ++ &avr32_syntax_table[AVR32_SYNTAX_RSUB ## cond_name ], \
1.24893 ++ BFD_RELOC_AVR32_8S_EXT, 2, 1, \
1.24894 ++ { \
1.24895 ++ &avr32_ifield_table[AVR32_IFIELD_RY], \
1.24896 ++ &avr32_ifield_table[AVR32_IFIELD_K8E], \
1.24897 ++ }, \
1.24898 ++ },
1.24899 ++
1.24900 ++ AVR32_OPCODE_RSUBCOND (EQ, 0)
1.24901 ++ AVR32_OPCODE_RSUBCOND (NE, 1)
1.24902 ++ AVR32_OPCODE_RSUBCOND (CC, 2)
1.24903 ++ AVR32_OPCODE_RSUBCOND (CS, 3)
1.24904 ++ AVR32_OPCODE_RSUBCOND (GE, 4)
1.24905 ++ AVR32_OPCODE_RSUBCOND (LT, 5)
1.24906 ++ AVR32_OPCODE_RSUBCOND (MI, 6)
1.24907 ++ AVR32_OPCODE_RSUBCOND (PL, 7)
1.24908 ++ AVR32_OPCODE_RSUBCOND (LS, 8)
1.24909 ++ AVR32_OPCODE_RSUBCOND (GT, 9)
1.24910 ++ AVR32_OPCODE_RSUBCOND (LE, 10)
1.24911 ++ AVR32_OPCODE_RSUBCOND (HI, 11)
1.24912 ++ AVR32_OPCODE_RSUBCOND (VS, 12)
1.24913 ++ AVR32_OPCODE_RSUBCOND (VC, 13)
1.24914 ++ AVR32_OPCODE_RSUBCOND (QS, 14)
1.24915 ++ AVR32_OPCODE_RSUBCOND (AL, 15)
1.24916 ++
1.24917 ++#define AVR32_OPCODE_OP3_COND(op_name, op_field, cond_name, cond_field) \
1.24918 ++ { \
1.24919 ++ AVR32_OPC_ ## op_name ## cond_name , 4, \
1.24920 ++ 0xe1d0e000 | (cond_field << 8) | (op_field << 4), 0xe1f0fff0, \
1.24921 ++ &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
1.24922 ++ BFD_RELOC_UNUSED, 3, -1, \
1.24923 ++ { \
1.24924 ++ &avr32_ifield_table[AVR32_IFIELD_RD_E], \
1.24925 ++ &avr32_ifield_table[AVR32_IFIELD_RX], \
1.24926 ++ &avr32_ifield_table[AVR32_IFIELD_RY], \
1.24927 ++ }, \
1.24928 ++ },
1.24929 ++
1.24930 ++ AVR32_OPCODE_OP3_COND (ADD, 0, EQ, 0)
1.24931 ++ AVR32_OPCODE_OP3_COND (ADD, 0, NE, 1)
1.24932 ++ AVR32_OPCODE_OP3_COND (ADD, 0, CC, 2)
1.24933 ++ AVR32_OPCODE_OP3_COND (ADD, 0, CS, 3)
1.24934 ++ AVR32_OPCODE_OP3_COND (ADD, 0, GE, 4)
1.24935 ++ AVR32_OPCODE_OP3_COND (ADD, 0, LT, 5)
1.24936 ++ AVR32_OPCODE_OP3_COND (ADD, 0, MI, 6)
1.24937 ++ AVR32_OPCODE_OP3_COND (ADD, 0, PL, 7)
1.24938 ++ AVR32_OPCODE_OP3_COND (ADD, 0, LS, 8)
1.24939 ++ AVR32_OPCODE_OP3_COND (ADD, 0, GT, 9)
1.24940 ++ AVR32_OPCODE_OP3_COND (ADD, 0, LE, 10)
1.24941 ++ AVR32_OPCODE_OP3_COND (ADD, 0, HI, 11)
1.24942 ++ AVR32_OPCODE_OP3_COND (ADD, 0, VS, 12)
1.24943 ++ AVR32_OPCODE_OP3_COND (ADD, 0, VC, 13)
1.24944 ++ AVR32_OPCODE_OP3_COND (ADD, 0, QS, 14)
1.24945 ++ AVR32_OPCODE_OP3_COND (ADD, 0, AL, 15)
1.24946 ++
1.24947 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, EQ, 0)
1.24948 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, NE, 1)
1.24949 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, CC, 2)
1.24950 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, CS, 3)
1.24951 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, GE, 4)
1.24952 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, LT, 5)
1.24953 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, MI, 6)
1.24954 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, PL, 7)
1.24955 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, LS, 8)
1.24956 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, GT, 9)
1.24957 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, LE, 10)
1.24958 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, HI, 11)
1.24959 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, VS, 12)
1.24960 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, VC, 13)
1.24961 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, QS, 14)
1.24962 ++ AVR32_OPCODE_OP3_COND (SUB2, 1, AL, 15)
1.24963 ++
1.24964 ++ AVR32_OPCODE_OP3_COND (AND, 2, EQ, 0)
1.24965 ++ AVR32_OPCODE_OP3_COND (AND, 2, NE, 1)
1.24966 ++ AVR32_OPCODE_OP3_COND (AND, 2, CC, 2)
1.24967 ++ AVR32_OPCODE_OP3_COND (AND, 2, CS, 3)
1.24968 ++ AVR32_OPCODE_OP3_COND (AND, 2, GE, 4)
1.24969 ++ AVR32_OPCODE_OP3_COND (AND, 2, LT, 5)
1.24970 ++ AVR32_OPCODE_OP3_COND (AND, 2, MI, 6)
1.24971 ++ AVR32_OPCODE_OP3_COND (AND, 2, PL, 7)
1.24972 ++ AVR32_OPCODE_OP3_COND (AND, 2, LS, 8)
1.24973 ++ AVR32_OPCODE_OP3_COND (AND, 2, GT, 9)
1.24974 ++ AVR32_OPCODE_OP3_COND (AND, 2, LE, 10)
1.24975 ++ AVR32_OPCODE_OP3_COND (AND, 2, HI, 11)
1.24976 ++ AVR32_OPCODE_OP3_COND (AND, 2, VS, 12)
1.24977 ++ AVR32_OPCODE_OP3_COND (AND, 2, VC, 13)
1.24978 ++ AVR32_OPCODE_OP3_COND (AND, 2, QS, 14)
1.24979 ++ AVR32_OPCODE_OP3_COND (AND, 2, AL, 15)
1.24980 ++
1.24981 ++ AVR32_OPCODE_OP3_COND (OR, 3, EQ, 0)
1.24982 ++ AVR32_OPCODE_OP3_COND (OR, 3, NE, 1)
1.24983 ++ AVR32_OPCODE_OP3_COND (OR, 3, CC, 2)
1.24984 ++ AVR32_OPCODE_OP3_COND (OR, 3, CS, 3)
1.24985 ++ AVR32_OPCODE_OP3_COND (OR, 3, GE, 4)
1.24986 ++ AVR32_OPCODE_OP3_COND (OR, 3, LT, 5)
1.24987 ++ AVR32_OPCODE_OP3_COND (OR, 3, MI, 6)
1.24988 ++ AVR32_OPCODE_OP3_COND (OR, 3, PL, 7)
1.24989 ++ AVR32_OPCODE_OP3_COND (OR, 3, LS, 8)
1.24990 ++ AVR32_OPCODE_OP3_COND (OR, 3, GT, 9)
1.24991 ++ AVR32_OPCODE_OP3_COND (OR, 3, LE, 10)
1.24992 ++ AVR32_OPCODE_OP3_COND (OR, 3, HI, 11)
1.24993 ++ AVR32_OPCODE_OP3_COND (OR, 3, VS, 12)
1.24994 ++ AVR32_OPCODE_OP3_COND (OR, 3, VC, 13)
1.24995 ++ AVR32_OPCODE_OP3_COND (OR, 3, QS, 14)
1.24996 ++ AVR32_OPCODE_OP3_COND (OR, 3, AL, 15)
1.24997 ++
1.24998 ++ AVR32_OPCODE_OP3_COND (EOR, 4, EQ, 0)
1.24999 ++ AVR32_OPCODE_OP3_COND (EOR, 4, NE, 1)
1.25000 ++ AVR32_OPCODE_OP3_COND (EOR, 4, CC, 2)
1.25001 ++ AVR32_OPCODE_OP3_COND (EOR, 4, CS, 3)
1.25002 ++ AVR32_OPCODE_OP3_COND (EOR, 4, GE, 4)
1.25003 ++ AVR32_OPCODE_OP3_COND (EOR, 4, LT, 5)
1.25004 ++ AVR32_OPCODE_OP3_COND (EOR, 4, MI, 6)
1.25005 ++ AVR32_OPCODE_OP3_COND (EOR, 4, PL, 7)
1.25006 ++ AVR32_OPCODE_OP3_COND (EOR, 4, LS, 8)
1.25007 ++ AVR32_OPCODE_OP3_COND (EOR, 4, GT, 9)
1.25008 ++ AVR32_OPCODE_OP3_COND (EOR, 4, LE, 10)
1.25009 ++ AVR32_OPCODE_OP3_COND (EOR, 4, HI, 11)
1.25010 ++ AVR32_OPCODE_OP3_COND (EOR, 4, VS, 12)
1.25011 ++ AVR32_OPCODE_OP3_COND (EOR, 4, VC, 13)
1.25012 ++ AVR32_OPCODE_OP3_COND (EOR, 4, QS, 14)
1.25013 ++ AVR32_OPCODE_OP3_COND (EOR, 4, AL, 15)
1.25014 ++
1.25015 ++#define AVR32_OPCODE_LD_COND(op_name, op_field, cond_name, cond_field) \
1.25016 ++ { \
1.25017 ++ AVR32_OPC_ ## op_name ## cond_name , 4, \
1.25018 ++ 0xe1f00000 | (cond_field << 12) | (op_field << 9), 0xe1f0fe00, \
1.25019 ++ &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
1.25020 ++ BFD_RELOC_UNUSED, 3, -1, \
1.25021 ++ { \
1.25022 ++ &avr32_ifield_table[AVR32_IFIELD_RY], \
1.25023 ++ &avr32_ifield_table[AVR32_IFIELD_RX], \
1.25024 ++ &avr32_ifield_table[AVR32_IFIELD_K9E], \
1.25025 ++ }, \
1.25026 ++ },
1.25027 ++
1.25028 ++#define AVR32_OPCODE_ST_COND(op_name, op_field, cond_name, cond_field) \
1.25029 ++ { \
1.25030 ++ AVR32_OPC_ ## op_name ## cond_name , 4, \
1.25031 ++ 0xe1f00000 | (cond_field << 12) | (op_field << 9), 0xe1f0fe00, \
1.25032 ++ &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
1.25033 ++ BFD_RELOC_UNUSED, 3, -1, \
1.25034 ++ { \
1.25035 ++ &avr32_ifield_table[AVR32_IFIELD_RX], \
1.25036 ++ &avr32_ifield_table[AVR32_IFIELD_K9E], \
1.25037 ++ &avr32_ifield_table[AVR32_IFIELD_RY], \
1.25038 ++ }, \
1.25039 ++ },
1.25040 ++
1.25041 ++ AVR32_OPCODE_LD_COND (LD_W, 0, EQ, 0)
1.25042 ++ AVR32_OPCODE_LD_COND (LD_W, 0, NE, 1)
1.25043 ++ AVR32_OPCODE_LD_COND (LD_W, 0, CC, 2)
1.25044 ++ AVR32_OPCODE_LD_COND (LD_W, 0, CS, 3)
1.25045 ++ AVR32_OPCODE_LD_COND (LD_W, 0, GE, 4)
1.25046 ++ AVR32_OPCODE_LD_COND (LD_W, 0, LT, 5)
1.25047 ++ AVR32_OPCODE_LD_COND (LD_W, 0, MI, 6)
1.25048 ++ AVR32_OPCODE_LD_COND (LD_W, 0, PL, 7)
1.25049 ++ AVR32_OPCODE_LD_COND (LD_W, 0, LS, 8)
1.25050 ++ AVR32_OPCODE_LD_COND (LD_W, 0, GT, 9)
1.25051 ++ AVR32_OPCODE_LD_COND (LD_W, 0, LE, 10)
1.25052 ++ AVR32_OPCODE_LD_COND (LD_W, 0, HI, 11)
1.25053 ++ AVR32_OPCODE_LD_COND (LD_W, 0, VS, 12)
1.25054 ++ AVR32_OPCODE_LD_COND (LD_W, 0, VC, 13)
1.25055 ++ AVR32_OPCODE_LD_COND (LD_W, 0, QS, 14)
1.25056 ++ AVR32_OPCODE_LD_COND (LD_W, 0, AL, 15)
1.25057 ++
1.25058 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, EQ, 0)
1.25059 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, NE, 1)
1.25060 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, CC, 2)
1.25061 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, CS, 3)
1.25062 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, GE, 4)
1.25063 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, LT, 5)
1.25064 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, MI, 6)
1.25065 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, PL, 7)
1.25066 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, LS, 8)
1.25067 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, GT, 9)
1.25068 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, LE, 10)
1.25069 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, HI, 11)
1.25070 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, VS, 12)
1.25071 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, VC, 13)
1.25072 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, QS, 14)
1.25073 ++ AVR32_OPCODE_LD_COND (LD_SH, 1, AL, 15)
1.25074 ++
1.25075 ++ AVR32_OPCODE_LD_COND (LD_UH, 2, EQ, 0)
1.25076 ++ AVR32_OPCODE_LD_COND (LD_UH, 2, NE, 1)
1.25077 ++ AVR32_OPCODE_LD_COND (LD_UH, 2, CC, 2)
1.25078 ++ AVR32_OPCODE_LD_COND (LD_UH, 2, CS, 3)
1.25079 ++ AVR32_OPCODE_LD_COND (LD_UH, 2, GE, 4)
1.25080 ++ AVR32_OPCODE_LD_COND (LD_UH, 2, LT, 5)
1.25081 ++ AVR32_OPCODE_LD_COND (LD_UH, 2, MI, 6)
1.25082 ++ AVR32_OPCODE_LD_COND (LD_UH, 2, PL, 7)
1.25083 ++ AVR32_OPCODE_LD_COND (LD_SH, 2, LS, 8)
1.25084 ++ AVR32_OPCODE_LD_COND (LD_SH, 2, GT, 9)
1.25085 ++ AVR32_OPCODE_LD_COND (LD_SH, 2, LE, 10)
1.25086 ++ AVR32_OPCODE_LD_COND (LD_SH, 2, HI, 11)
1.25087 ++ AVR32_OPCODE_LD_COND (LD_SH, 2, VS, 12)
1.25088 ++ AVR32_OPCODE_LD_COND (LD_SH, 2, VC, 13)
1.25089 ++ AVR32_OPCODE_LD_COND (LD_SH, 2, QS, 14)
1.25090 ++ AVR32_OPCODE_LD_COND (LD_SH, 2, AL, 15)
1.25091 ++
1.25092 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, EQ, 0)
1.25093 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, NE, 1)
1.25094 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, CC, 2)
1.25095 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, CS, 3)
1.25096 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, GE, 4)
1.25097 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, LT, 5)
1.25098 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, MI, 6)
1.25099 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, PL, 7)
1.25100 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, LS, 8)
1.25101 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, GT, 9)
1.25102 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, LE, 10)
1.25103 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, HI, 11)
1.25104 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, VS, 12)
1.25105 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, VC, 13)
1.25106 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, QS, 14)
1.25107 ++ AVR32_OPCODE_LD_COND (LD_SB, 3, AL, 15)
1.25108 ++
1.25109 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, EQ, 0)
1.25110 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, NE, 1)
1.25111 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, CC, 2)
1.25112 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, CS, 3)
1.25113 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, GE, 4)
1.25114 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, LT, 5)
1.25115 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, MI, 6)
1.25116 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, PL, 7)
1.25117 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, LS, 8)
1.25118 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, GT, 9)
1.25119 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, LE, 10)
1.25120 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, HI, 11)
1.25121 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, VS, 12)
1.25122 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, VC, 13)
1.25123 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, QS, 14)
1.25124 ++ AVR32_OPCODE_LD_COND (LD_UB, 4, AL, 15)
1.25125 ++
1.25126 ++ AVR32_OPCODE_ST_COND (ST_W, 5, EQ, 0)
1.25127 ++ AVR32_OPCODE_ST_COND (ST_W, 5, NE, 1)
1.25128 ++ AVR32_OPCODE_ST_COND (ST_W, 5, CC, 2)
1.25129 ++ AVR32_OPCODE_ST_COND (ST_W, 5, CS, 3)
1.25130 ++ AVR32_OPCODE_ST_COND (ST_W, 5, GE, 4)
1.25131 ++ AVR32_OPCODE_ST_COND (ST_W, 5, LT, 5)
1.25132 ++ AVR32_OPCODE_ST_COND (ST_W, 5, MI, 6)
1.25133 ++ AVR32_OPCODE_ST_COND (ST_W, 5, PL, 7)
1.25134 ++ AVR32_OPCODE_ST_COND (ST_W, 5, LS, 8)
1.25135 ++ AVR32_OPCODE_ST_COND (ST_W, 5, GT, 9)
1.25136 ++ AVR32_OPCODE_ST_COND (ST_W, 5, LE, 10)
1.25137 ++ AVR32_OPCODE_ST_COND (ST_W, 5, HI, 11)
1.25138 ++ AVR32_OPCODE_ST_COND (ST_W, 5, VS, 12)
1.25139 ++ AVR32_OPCODE_ST_COND (ST_W, 5, VC, 13)
1.25140 ++ AVR32_OPCODE_ST_COND (ST_W, 5, QS, 14)
1.25141 ++ AVR32_OPCODE_ST_COND (ST_W, 5, AL, 15)
1.25142 ++
1.25143 ++ AVR32_OPCODE_ST_COND (ST_H, 6, EQ, 0)
1.25144 ++ AVR32_OPCODE_ST_COND (ST_H, 6, NE, 1)
1.25145 ++ AVR32_OPCODE_ST_COND (ST_H, 6, CC, 2)
1.25146 ++ AVR32_OPCODE_ST_COND (ST_H, 6, CS, 3)
1.25147 ++ AVR32_OPCODE_ST_COND (ST_H, 6, GE, 4)
1.25148 ++ AVR32_OPCODE_ST_COND (ST_H, 6, LT, 5)
1.25149 ++ AVR32_OPCODE_ST_COND (ST_H, 6, MI, 6)
1.25150 ++ AVR32_OPCODE_ST_COND (ST_H, 6, PL, 7)
1.25151 ++ AVR32_OPCODE_ST_COND (ST_H, 6, LS, 8)
1.25152 ++ AVR32_OPCODE_ST_COND (ST_H, 6, GT, 9)
1.25153 ++ AVR32_OPCODE_ST_COND (ST_H, 6, LE, 10)
1.25154 ++ AVR32_OPCODE_ST_COND (ST_H, 6, HI, 11)
1.25155 ++ AVR32_OPCODE_ST_COND (ST_H, 6, VS, 12)
1.25156 ++ AVR32_OPCODE_ST_COND (ST_H, 6, VC, 13)
1.25157 ++ AVR32_OPCODE_ST_COND (ST_H, 6, QS, 14)
1.25158 ++ AVR32_OPCODE_ST_COND (ST_H, 6, AL, 15)
1.25159 ++
1.25160 ++ AVR32_OPCODE_ST_COND (ST_B, 7, EQ, 0)
1.25161 ++ AVR32_OPCODE_ST_COND (ST_B, 7, NE, 1)
1.25162 ++ AVR32_OPCODE_ST_COND (ST_B, 7, CC, 2)
1.25163 ++ AVR32_OPCODE_ST_COND (ST_B, 7, CS, 3)
1.25164 ++ AVR32_OPCODE_ST_COND (ST_B, 7, GE, 4)
1.25165 ++ AVR32_OPCODE_ST_COND (ST_B, 7, LT, 5)
1.25166 ++ AVR32_OPCODE_ST_COND (ST_B, 7, MI, 6)
1.25167 ++ AVR32_OPCODE_ST_COND (ST_B, 7, PL, 7)
1.25168 ++ AVR32_OPCODE_ST_COND (ST_B, 7, LS, 8)
1.25169 ++ AVR32_OPCODE_ST_COND (ST_B, 7, GT, 9)
1.25170 ++ AVR32_OPCODE_ST_COND (ST_B, 7, LE, 10)
1.25171 ++ AVR32_OPCODE_ST_COND (ST_B, 7, HI, 11)
1.25172 ++ AVR32_OPCODE_ST_COND (ST_B, 7, VS, 12)
1.25173 ++ AVR32_OPCODE_ST_COND (ST_B, 7, VC, 13)
1.25174 ++ AVR32_OPCODE_ST_COND (ST_B, 7, QS, 14)
1.25175 ++ AVR32_OPCODE_ST_COND (ST_B, 7, AL, 15)
1.25176 ++
1.25177 ++ {
1.25178 ++ AVR32_OPC_MOVH, 4, 0xfc100000, 0xfff00000,
1.25179 ++ &avr32_syntax_table[AVR32_SYNTAX_MOVH],
1.25180 ++ BFD_RELOC_AVR32_16U, 2, 1,
1.25181 ++ {
1.25182 ++ &avr32_ifield_table[AVR32_IFIELD_RY],
1.25183 ++ &avr32_ifield_table[AVR32_IFIELD_K16],
1.25184 ++ },
1.25185 ++ },
1.25186 ++
1.25187 ++ };
1.25188 ++
1.25189 ++#define FPALIAS_DXY(name, opcode) \
1.25190 ++ { \
1.25191 ++ AVR32_ALIAS_##name##_S, \
1.25192 ++ &avr32_opc_table[AVR32_OPC_COP], \
1.25193 ++ { \
1.25194 ++ { 0, 0 }, \
1.25195 ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, \
1.25196 ++ { 0, opcode }, \
1.25197 ++ }, \
1.25198 ++ }, { \
1.25199 ++ AVR32_ALIAS_##name##_D, \
1.25200 ++ &avr32_opc_table[AVR32_OPC_COP], \
1.25201 ++ { \
1.25202 ++ { 0, 0 }, \
1.25203 ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, \
1.25204 ++ { 0, (opcode) | 0x40 }, \
1.25205 ++ }, \
1.25206 ++ }
1.25207 ++#define FPALIAS_DX(name, opcode) \
1.25208 ++ { \
1.25209 ++ AVR32_ALIAS_##name##_S, \
1.25210 ++ &avr32_opc_table[AVR32_OPC_COP], \
1.25211 ++ { \
1.25212 ++ { 0, 0 }, \
1.25213 ++ { 1, 0 }, { 1, 1 }, { 0, 0 }, \
1.25214 ++ { 0, opcode }, \
1.25215 ++ }, \
1.25216 ++ }, { \
1.25217 ++ AVR32_ALIAS_##name##_D, \
1.25218 ++ &avr32_opc_table[AVR32_OPC_COP], \
1.25219 ++ { \
1.25220 ++ { 0, 0 }, \
1.25221 ++ { 1, 0 }, { 1, 1 }, { 0, 0 }, \
1.25222 ++ { 0, (opcode) | 0x40 }, \
1.25223 ++ }, \
1.25224 ++ }
1.25225 ++#define FPALIAS_XY(name, opcode) \
1.25226 ++ { \
1.25227 ++ AVR32_ALIAS_##name##_S, \
1.25228 ++ &avr32_opc_table[AVR32_OPC_COP], \
1.25229 ++ { \
1.25230 ++ { 0, 0 }, \
1.25231 ++ { 0, 0 }, { 1, 0 }, { 1, 1 }, \
1.25232 ++ { 0, opcode }, \
1.25233 ++ }, \
1.25234 ++ }, { \
1.25235 ++ AVR32_ALIAS_##name##_D, \
1.25236 ++ &avr32_opc_table[AVR32_OPC_COP], \
1.25237 ++ { \
1.25238 ++ { 0, 0 }, \
1.25239 ++ { 0, 0 }, { 1, 0 }, { 1, 1 }, \
1.25240 ++ { 0, (opcode) | 0x40 }, \
1.25241 ++ }, \
1.25242 ++ }
1.25243 ++
1.25244 ++const struct avr32_alias avr32_alias_table[] =
1.25245 ++ {
1.25246 ++ FPALIAS_DXY(FMAC, 0x00),
1.25247 ++ FPALIAS_DXY(FNMAC, 0x01),
1.25248 ++ FPALIAS_DXY(FMSC, 0x02),
1.25249 ++ FPALIAS_DXY(FNMSC, 0x03),
1.25250 ++ FPALIAS_DXY(FADD, 0x04),
1.25251 ++ FPALIAS_DXY(FSUB, 0x05),
1.25252 ++ FPALIAS_DXY(FMUL, 0x06),
1.25253 ++ FPALIAS_DXY(FNMUL, 0x07),
1.25254 ++ FPALIAS_DX(FNEG, 0x08),
1.25255 ++ FPALIAS_DX(FABS, 0x09),
1.25256 ++ FPALIAS_XY(FCMP, 0x0d),
1.25257 ++ FPALIAS_DX(FMOV1, 0x0a),
1.25258 ++ {
1.25259 ++ AVR32_ALIAS_FMOV2_S,
1.25260 ++ &avr32_opc_table[AVR32_OPC_MVCR_W],
1.25261 ++ { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
1.25262 ++ },
1.25263 ++ {
1.25264 ++ AVR32_ALIAS_FMOV2_D,
1.25265 ++ &avr32_opc_table[AVR32_OPC_MVCR_D],
1.25266 ++ { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
1.25267 ++ },
1.25268 ++ {
1.25269 ++ AVR32_ALIAS_FMOV3_S,
1.25270 ++ &avr32_opc_table[AVR32_OPC_MVRC_W],
1.25271 ++ { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
1.25272 ++ },
1.25273 ++ {
1.25274 ++ AVR32_ALIAS_FMOV3_D,
1.25275 ++ &avr32_opc_table[AVR32_OPC_MVRC_D],
1.25276 ++ { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
1.25277 ++ },
1.25278 ++ {
1.25279 ++ AVR32_ALIAS_FCASTS_D,
1.25280 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25281 ++ {
1.25282 ++ { 0, 0 },
1.25283 ++ { 1, 0 }, { 1, 1 }, { 0, 0 },
1.25284 ++ { 0, 0x0f },
1.25285 ++ },
1.25286 ++ },
1.25287 ++ {
1.25288 ++ AVR32_ALIAS_FCASTD_S,
1.25289 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25290 ++ {
1.25291 ++ { 0, 0 },
1.25292 ++ { 1, 0 }, { 1, 1 }, { 0, 0 },
1.25293 ++ { 0, 0x10 },
1.25294 ++ },
1.25295 ++ },
1.25296 ++ {
1.25297 ++ AVR32_ALIAS_PICOSVMAC0,
1.25298 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25299 ++ {
1.25300 ++ { 0, PICO_CPNO },
1.25301 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25302 ++ { 0, 0x0c },
1.25303 ++ },
1.25304 ++ },
1.25305 ++ {
1.25306 ++ AVR32_ALIAS_PICOSVMAC1,
1.25307 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25308 ++ {
1.25309 ++ { 0, PICO_CPNO },
1.25310 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25311 ++ { 0, 0x0d },
1.25312 ++ },
1.25313 ++ },
1.25314 ++ {
1.25315 ++ AVR32_ALIAS_PICOSVMAC2,
1.25316 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25317 ++ {
1.25318 ++ { 0, PICO_CPNO },
1.25319 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25320 ++ { 0, 0x0e },
1.25321 ++ },
1.25322 ++ },
1.25323 ++ {
1.25324 ++ AVR32_ALIAS_PICOSVMAC3,
1.25325 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25326 ++ {
1.25327 ++ { 0, PICO_CPNO },
1.25328 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25329 ++ { 0, 0x0f },
1.25330 ++ },
1.25331 ++ },
1.25332 ++ {
1.25333 ++ AVR32_ALIAS_PICOSVMUL0,
1.25334 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25335 ++ {
1.25336 ++ { 0, PICO_CPNO },
1.25337 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25338 ++ { 0, 0x08 },
1.25339 ++ },
1.25340 ++ },
1.25341 ++ {
1.25342 ++ AVR32_ALIAS_PICOSVMUL1,
1.25343 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25344 ++ {
1.25345 ++ { 0, PICO_CPNO },
1.25346 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25347 ++ { 0, 0x09 },
1.25348 ++ },
1.25349 ++ },
1.25350 ++ {
1.25351 ++ AVR32_ALIAS_PICOSVMUL2,
1.25352 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25353 ++ {
1.25354 ++ { 0, PICO_CPNO },
1.25355 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25356 ++ { 0, 0x0a },
1.25357 ++ },
1.25358 ++ },
1.25359 ++ {
1.25360 ++ AVR32_ALIAS_PICOSVMUL3,
1.25361 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25362 ++ {
1.25363 ++ { 0, PICO_CPNO },
1.25364 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25365 ++ { 0, 0x0b },
1.25366 ++ },
1.25367 ++ },
1.25368 ++ {
1.25369 ++ AVR32_ALIAS_PICOVMAC0,
1.25370 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25371 ++ {
1.25372 ++ { 0, PICO_CPNO },
1.25373 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25374 ++ { 0, 0x04 },
1.25375 ++ },
1.25376 ++ },
1.25377 ++ {
1.25378 ++ AVR32_ALIAS_PICOVMAC1,
1.25379 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25380 ++ {
1.25381 ++ { 0, PICO_CPNO },
1.25382 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25383 ++ { 0, 0x05 },
1.25384 ++ },
1.25385 ++ },
1.25386 ++ {
1.25387 ++ AVR32_ALIAS_PICOVMAC2,
1.25388 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25389 ++ {
1.25390 ++ { 0, PICO_CPNO },
1.25391 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25392 ++ { 0, 0x06 },
1.25393 ++ },
1.25394 ++ },
1.25395 ++ {
1.25396 ++ AVR32_ALIAS_PICOVMAC3,
1.25397 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25398 ++ {
1.25399 ++ { 0, PICO_CPNO },
1.25400 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25401 ++ { 0, 0x07 },
1.25402 ++ },
1.25403 ++ },
1.25404 ++ {
1.25405 ++ AVR32_ALIAS_PICOVMUL0,
1.25406 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25407 ++ {
1.25408 ++ { 0, PICO_CPNO },
1.25409 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25410 ++ { 0, 0x00 },
1.25411 ++ },
1.25412 ++ },
1.25413 ++ {
1.25414 ++ AVR32_ALIAS_PICOVMUL1,
1.25415 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25416 ++ {
1.25417 ++ { 0, PICO_CPNO },
1.25418 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25419 ++ { 0, 0x01 },
1.25420 ++ },
1.25421 ++ },
1.25422 ++ {
1.25423 ++ AVR32_ALIAS_PICOVMUL2,
1.25424 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25425 ++ {
1.25426 ++ { 0, PICO_CPNO },
1.25427 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25428 ++ { 0, 0x02 },
1.25429 ++ },
1.25430 ++ },
1.25431 ++ {
1.25432 ++ AVR32_ALIAS_PICOVMUL3,
1.25433 ++ &avr32_opc_table[AVR32_OPC_COP],
1.25434 ++ {
1.25435 ++ { 0, PICO_CPNO },
1.25436 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25437 ++ { 0, 0x03 },
1.25438 ++ },
1.25439 ++ },
1.25440 ++ {
1.25441 ++ AVR32_ALIAS_PICOLD_D1,
1.25442 ++ &avr32_opc_table[AVR32_OPC_LDC_D1],
1.25443 ++ {
1.25444 ++ { 0, PICO_CPNO },
1.25445 ++ { 1, 0 }, { 1, 1 },
1.25446 ++ },
1.25447 ++ },
1.25448 ++ {
1.25449 ++ AVR32_ALIAS_PICOLD_D2,
1.25450 ++ &avr32_opc_table[AVR32_OPC_LDC_D2],
1.25451 ++ {
1.25452 ++ { 0, PICO_CPNO },
1.25453 ++ { 1, 0 }, { 1, 1 },
1.25454 ++ },
1.25455 ++ },
1.25456 ++ {
1.25457 ++ AVR32_ALIAS_PICOLD_D3,
1.25458 ++ &avr32_opc_table[AVR32_OPC_LDC_D3],
1.25459 ++ {
1.25460 ++ { 0, PICO_CPNO },
1.25461 ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
1.25462 ++ },
1.25463 ++ },
1.25464 ++ {
1.25465 ++ AVR32_ALIAS_PICOLD_W1,
1.25466 ++ &avr32_opc_table[AVR32_OPC_LDC_W1],
1.25467 ++ {
1.25468 ++ { 0, PICO_CPNO },
1.25469 ++ { 1, 0 }, { 1, 1 },
1.25470 ++ },
1.25471 ++ },
1.25472 ++ {
1.25473 ++ AVR32_ALIAS_PICOLD_W2,
1.25474 ++ &avr32_opc_table[AVR32_OPC_LDC_W2],
1.25475 ++ {
1.25476 ++ { 0, PICO_CPNO },
1.25477 ++ { 1, 0 }, { 1, 1 },
1.25478 ++ },
1.25479 ++ },
1.25480 ++ {
1.25481 ++ AVR32_ALIAS_PICOLD_W3,
1.25482 ++ &avr32_opc_table[AVR32_OPC_LDC_W3],
1.25483 ++ {
1.25484 ++ { 0, PICO_CPNO },
1.25485 ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
1.25486 ++ },
1.25487 ++ },
1.25488 ++ {
1.25489 ++ AVR32_ALIAS_PICOLDM_D,
1.25490 ++ &avr32_opc_table[AVR32_OPC_LDCM_D],
1.25491 ++ {
1.25492 ++ { 0, PICO_CPNO },
1.25493 ++ { 1, 0 }, { 1, 1 },
1.25494 ++ },
1.25495 ++ },
1.25496 ++ {
1.25497 ++ AVR32_ALIAS_PICOLDM_D_PU,
1.25498 ++ &avr32_opc_table[AVR32_OPC_LDCM_D_PU],
1.25499 ++ {
1.25500 ++ { 0, PICO_CPNO },
1.25501 ++ { 1, 0 }, { 1, 1 },
1.25502 ++ },
1.25503 ++ },
1.25504 ++ {
1.25505 ++ AVR32_ALIAS_PICOLDM_W,
1.25506 ++ &avr32_opc_table[AVR32_OPC_LDCM_W],
1.25507 ++ {
1.25508 ++ { 0, PICO_CPNO },
1.25509 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25510 ++ },
1.25511 ++ },
1.25512 ++ {
1.25513 ++ AVR32_ALIAS_PICOLDM_W_PU,
1.25514 ++ &avr32_opc_table[AVR32_OPC_LDCM_W_PU],
1.25515 ++ {
1.25516 ++ { 0, PICO_CPNO },
1.25517 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25518 ++ },
1.25519 ++ },
1.25520 ++ {
1.25521 ++ AVR32_ALIAS_PICOMV_D1,
1.25522 ++ &avr32_opc_table[AVR32_OPC_MVCR_D],
1.25523 ++ {
1.25524 ++ { 0, PICO_CPNO },
1.25525 ++ { 1, 0 }, { 1, 1 },
1.25526 ++ },
1.25527 ++ },
1.25528 ++ {
1.25529 ++ AVR32_ALIAS_PICOMV_D2,
1.25530 ++ &avr32_opc_table[AVR32_OPC_MVRC_D],
1.25531 ++ {
1.25532 ++ { 0, PICO_CPNO },
1.25533 ++ { 1, 0 }, { 1, 1 },
1.25534 ++ },
1.25535 ++ },
1.25536 ++ {
1.25537 ++ AVR32_ALIAS_PICOMV_W1,
1.25538 ++ &avr32_opc_table[AVR32_OPC_MVCR_W],
1.25539 ++ {
1.25540 ++ { 0, PICO_CPNO },
1.25541 ++ { 1, 0 }, { 1, 1 },
1.25542 ++ },
1.25543 ++ },
1.25544 ++ {
1.25545 ++ AVR32_ALIAS_PICOMV_W2,
1.25546 ++ &avr32_opc_table[AVR32_OPC_MVRC_W],
1.25547 ++ {
1.25548 ++ { 0, PICO_CPNO },
1.25549 ++ { 1, 0 }, { 1, 1 },
1.25550 ++ },
1.25551 ++ },
1.25552 ++ {
1.25553 ++ AVR32_ALIAS_PICOST_D1,
1.25554 ++ &avr32_opc_table[AVR32_OPC_STC_D1],
1.25555 ++ {
1.25556 ++ { 0, PICO_CPNO },
1.25557 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25558 ++ },
1.25559 ++ },
1.25560 ++ {
1.25561 ++ AVR32_ALIAS_PICOST_D2,
1.25562 ++ &avr32_opc_table[AVR32_OPC_STC_D2],
1.25563 ++ {
1.25564 ++ { 0, PICO_CPNO },
1.25565 ++ { 1, 0 }, { 1, 1 },
1.25566 ++ },
1.25567 ++ },
1.25568 ++ {
1.25569 ++ AVR32_ALIAS_PICOST_D3,
1.25570 ++ &avr32_opc_table[AVR32_OPC_STC_D3],
1.25571 ++ {
1.25572 ++ { 0, PICO_CPNO },
1.25573 ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
1.25574 ++ },
1.25575 ++ },
1.25576 ++ {
1.25577 ++ AVR32_ALIAS_PICOST_W1,
1.25578 ++ &avr32_opc_table[AVR32_OPC_STC_W1],
1.25579 ++ {
1.25580 ++ { 0, PICO_CPNO },
1.25581 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25582 ++ },
1.25583 ++ },
1.25584 ++ {
1.25585 ++ AVR32_ALIAS_PICOST_W2,
1.25586 ++ &avr32_opc_table[AVR32_OPC_STC_W2],
1.25587 ++ {
1.25588 ++ { 0, PICO_CPNO },
1.25589 ++ { 1, 0 }, { 1, 1 },
1.25590 ++ },
1.25591 ++ },
1.25592 ++ {
1.25593 ++ AVR32_ALIAS_PICOST_W3,
1.25594 ++ &avr32_opc_table[AVR32_OPC_STC_W3],
1.25595 ++ {
1.25596 ++ { 0, PICO_CPNO },
1.25597 ++ { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
1.25598 ++ },
1.25599 ++ },
1.25600 ++ {
1.25601 ++ AVR32_ALIAS_PICOSTM_D,
1.25602 ++ &avr32_opc_table[AVR32_OPC_STCM_D],
1.25603 ++ {
1.25604 ++ { 0, PICO_CPNO },
1.25605 ++ { 1, 0 }, { 1, 1 },
1.25606 ++ },
1.25607 ++ },
1.25608 ++ {
1.25609 ++ AVR32_ALIAS_PICOSTM_D_PU,
1.25610 ++ &avr32_opc_table[AVR32_OPC_STCM_D_PU],
1.25611 ++ {
1.25612 ++ { 0, PICO_CPNO },
1.25613 ++ { 1, 0 }, { 1, 1 },
1.25614 ++ },
1.25615 ++ },
1.25616 ++ {
1.25617 ++ AVR32_ALIAS_PICOSTM_W,
1.25618 ++ &avr32_opc_table[AVR32_OPC_STCM_W],
1.25619 ++ {
1.25620 ++ { 0, PICO_CPNO },
1.25621 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25622 ++ },
1.25623 ++ },
1.25624 ++ {
1.25625 ++ AVR32_ALIAS_PICOSTM_W_PU,
1.25626 ++ &avr32_opc_table[AVR32_OPC_STCM_W_PU],
1.25627 ++ {
1.25628 ++ { 0, PICO_CPNO },
1.25629 ++ { 1, 0 }, { 1, 1 }, { 1, 2 },
1.25630 ++ },
1.25631 ++ },
1.25632 ++ };
1.25633 ++
1.25634 ++
1.25635 ++#define SYNTAX_NORMAL0(id, mne, opc, arch) \
1.25636 ++ { \
1.25637 ++ AVR32_SYNTAX_##id, arch, \
1.25638 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25639 ++ AVR32_PARSER_NORMAL, \
1.25640 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25641 ++ NULL, 0, { } \
1.25642 ++ }
1.25643 ++#define SYNTAX_NORMAL1(id, mne, opc, op0, arch) \
1.25644 ++ { \
1.25645 ++ AVR32_SYNTAX_##id, arch, \
1.25646 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25647 ++ AVR32_PARSER_NORMAL, \
1.25648 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25649 ++ NULL, 1, \
1.25650 ++ { \
1.25651 ++ AVR32_OPERAND_##op0, \
1.25652 ++ } \
1.25653 ++ }
1.25654 ++#define SYNTAX_NORMALM1(id, mne, opc, op0, arch) \
1.25655 ++ { \
1.25656 ++ AVR32_SYNTAX_##id, arch, \
1.25657 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25658 ++ AVR32_PARSER_NORMAL, \
1.25659 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25660 ++ NULL, -1, \
1.25661 ++ { \
1.25662 ++ AVR32_OPERAND_##op0, \
1.25663 ++ } \
1.25664 ++ }
1.25665 ++#define SYNTAX_NORMAL2(id, mne, opc, op0, op1, arch) \
1.25666 ++ { \
1.25667 ++ AVR32_SYNTAX_##id, arch, \
1.25668 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25669 ++ AVR32_PARSER_NORMAL, \
1.25670 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25671 ++ NULL, 2, \
1.25672 ++ { \
1.25673 ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
1.25674 ++ } \
1.25675 ++ }
1.25676 ++#define SYNTAX_NORMALM2(id, mne, opc, op0, op1, arch) \
1.25677 ++ { \
1.25678 ++ AVR32_SYNTAX_##id, arch, \
1.25679 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25680 ++ AVR32_PARSER_NORMAL, \
1.25681 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25682 ++ NULL, -2, \
1.25683 ++ { \
1.25684 ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
1.25685 ++ } \
1.25686 ++ }
1.25687 ++#define SYNTAX_NORMAL3(id, mne, opc, op0, op1, op2, arch) \
1.25688 ++ { \
1.25689 ++ AVR32_SYNTAX_##id, arch, \
1.25690 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25691 ++ AVR32_PARSER_NORMAL, \
1.25692 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25693 ++ NULL, 3, \
1.25694 ++ { \
1.25695 ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
1.25696 ++ AVR32_OPERAND_##op2, \
1.25697 ++ } \
1.25698 ++ }
1.25699 ++#define SYNTAX_NORMALM3(id, mne, opc, op0, op1, op2, arch) \
1.25700 ++ { \
1.25701 ++ AVR32_SYNTAX_##id, arch, \
1.25702 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25703 ++ AVR32_PARSER_NORMAL, \
1.25704 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25705 ++ NULL, -3, \
1.25706 ++ { \
1.25707 ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
1.25708 ++ AVR32_OPERAND_##op2, \
1.25709 ++ } \
1.25710 ++ }
1.25711 ++#define SYNTAX_NORMAL4(id, mne, opc, op0, op1, op2, op3, arch)\
1.25712 ++ { \
1.25713 ++ AVR32_SYNTAX_##id, arch, \
1.25714 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25715 ++ AVR32_PARSER_NORMAL, \
1.25716 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25717 ++ NULL, 4, \
1.25718 ++ { \
1.25719 ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
1.25720 ++ AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \
1.25721 ++ } \
1.25722 ++ }
1.25723 ++#define SYNTAX_NORMAL5(id, mne, opc, op0, op1, op2, op3, op4, arch) \
1.25724 ++ { \
1.25725 ++ AVR32_SYNTAX_##id, arch, \
1.25726 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25727 ++ AVR32_PARSER_NORMAL, \
1.25728 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25729 ++ NULL, 5, \
1.25730 ++ { \
1.25731 ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
1.25732 ++ AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \
1.25733 ++ AVR32_OPERAND_##op4, \
1.25734 ++ } \
1.25735 ++ }
1.25736 ++
1.25737 ++#define SYNTAX_NORMAL_C1(id, mne, opc, nxt, op0, arch) \
1.25738 ++ { \
1.25739 ++ AVR32_SYNTAX_##id, arch, \
1.25740 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25741 ++ AVR32_PARSER_NORMAL, \
1.25742 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25743 ++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], 1, \
1.25744 ++ { \
1.25745 ++ AVR32_OPERAND_##op0, \
1.25746 ++ } \
1.25747 ++ }
1.25748 ++#define SYNTAX_NORMAL_CM1(id, mne, opc, nxt, op0, arch) \
1.25749 ++ { \
1.25750 ++ AVR32_SYNTAX_##id, arch, \
1.25751 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25752 ++ AVR32_PARSER_NORMAL, \
1.25753 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25754 ++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], -1, \
1.25755 ++ { \
1.25756 ++ AVR32_OPERAND_##op0, \
1.25757 ++ } \
1.25758 ++ }
1.25759 ++#define SYNTAX_NORMAL_C2(id, mne, opc, nxt, op0, op1, arch) \
1.25760 ++ { \
1.25761 ++ AVR32_SYNTAX_##id, arch, \
1.25762 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25763 ++ AVR32_PARSER_NORMAL, \
1.25764 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25765 ++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], 2, \
1.25766 ++ { \
1.25767 ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
1.25768 ++ } \
1.25769 ++ }
1.25770 ++#define SYNTAX_NORMAL_CM2(id, mne, opc, nxt, op0, op1, arch) \
1.25771 ++ { \
1.25772 ++ AVR32_SYNTAX_##id, arch, \
1.25773 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25774 ++ AVR32_PARSER_NORMAL, \
1.25775 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25776 ++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], -2, \
1.25777 ++ { \
1.25778 ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
1.25779 ++ } \
1.25780 ++ }
1.25781 ++#define SYNTAX_NORMAL_C3(id, mne, opc, nxt, op0, op1, op2, arch) \
1.25782 ++ { \
1.25783 ++ AVR32_SYNTAX_##id, arch, \
1.25784 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25785 ++ AVR32_PARSER_NORMAL, \
1.25786 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25787 ++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], 3, \
1.25788 ++ { \
1.25789 ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
1.25790 ++ AVR32_OPERAND_##op2, \
1.25791 ++ } \
1.25792 ++ }
1.25793 ++#define SYNTAX_NORMAL_CM3(id, mne, opc, nxt, op0, op1, op2, arch) \
1.25794 ++ { \
1.25795 ++ AVR32_SYNTAX_##id, arch, \
1.25796 ++ &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
1.25797 ++ AVR32_PARSER_NORMAL, \
1.25798 ++ { &avr32_opc_table[AVR32_OPC_##opc], }, \
1.25799 ++ &avr32_syntax_table[AVR32_SYNTAX_##nxt], -3, \
1.25800 ++ { \
1.25801 ++ AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
1.25802 ++ AVR32_OPERAND_##op2, \
1.25803 ++ } \
1.25804 ++ }
1.25805 ++
1.25806 ++#define SYNTAX_FP(name, nr_ops) \
1.25807 ++ { \
1.25808 ++ AVR32_SYNTAX_##name##_S, \
1.25809 ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, \
1.25810 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_S] }, \
1.25811 ++ NULL, nr_ops, \
1.25812 ++ { \
1.25813 ++ AVR32_OPERAND_FPREG_S, \
1.25814 ++ AVR32_OPERAND_FPREG_S, \
1.25815 ++ AVR32_OPERAND_FPREG_S, \
1.25816 ++ }, \
1.25817 ++ }, \
1.25818 ++ { \
1.25819 ++ AVR32_SYNTAX_##name##_D, \
1.25820 ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS, \
1.25821 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_D] }, \
1.25822 ++ NULL, nr_ops, \
1.25823 ++ { \
1.25824 ++ AVR32_OPERAND_FPREG_D, \
1.25825 ++ AVR32_OPERAND_FPREG_D, \
1.25826 ++ AVR32_OPERAND_FPREG_D, \
1.25827 ++ }, \
1.25828 ++ }
1.25829 ++
1.25830 ++const struct avr32_syntax avr32_syntax_table[] =
1.25831 ++ {
1.25832 ++ SYNTAX_NORMAL1(ABS, ABS, ABS, INTREG, AVR32_V1),
1.25833 ++ SYNTAX_NORMAL1(ACALL, ACALL, ACALL, UNSIGNED_CONST_W, AVR32_V1),
1.25834 ++ SYNTAX_NORMAL1(ACR, ACR, ACR, INTREG,AVR32_V1),
1.25835 ++ SYNTAX_NORMAL3(ADC, ADC, ADC, INTREG, INTREG, INTREG, AVR32_V1),
1.25836 ++ SYNTAX_NORMAL_C2(ADD1, ADD, ADD1, ADD2, INTREG, INTREG, AVR32_V1),
1.25837 ++ SYNTAX_NORMAL3(ADD2, ADD, ADD2, INTREG, INTREG, INTREG_LSL, AVR32_V1),
1.25838 ++ SYNTAX_NORMAL3(ADDABS, ADDABS, ADDABS, INTREG, INTREG, INTREG, AVR32_V1),
1.25839 ++ SYNTAX_NORMAL3(ADDHH_W, ADDHH_W, ADDHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
1.25840 ++ SYNTAX_NORMAL_C2(AND1, AND, AND1, AND2, INTREG, INTREG, AVR32_V1),
1.25841 ++ SYNTAX_NORMAL_C3(AND2, AND, AND2, AND3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
1.25842 ++ SYNTAX_NORMAL3(AND3, AND, AND3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
1.25843 ++ SYNTAX_NORMAL_C2(ANDH, ANDH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
1.25844 ++ SYNTAX_NORMAL3(ANDH_COH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
1.25845 ++ SYNTAX_NORMAL_C2(ANDL, ANDL, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
1.25846 ++ SYNTAX_NORMAL3(ANDL_COH, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
1.25847 ++ SYNTAX_NORMAL2(ANDN, ANDN, ANDN, INTREG, INTREG, AVR32_V1),
1.25848 ++ SYNTAX_NORMAL_C3(ASR1, ASR, ASR1, ASR3, INTREG, INTREG, INTREG, AVR32_V1),
1.25849 ++ SYNTAX_NORMAL_C3(ASR3, ASR, ASR3, ASR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
1.25850 ++ SYNTAX_NORMAL2(ASR2, ASR, ASR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
1.25851 ++ SYNTAX_NORMAL4(BFEXTS, BFEXTS, BFEXTS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
1.25852 ++ SYNTAX_NORMAL4(BFEXTU, BFEXTU, BFEXTU, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
1.25853 ++ SYNTAX_NORMAL4(BFINS, BFINS, BFINS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
1.25854 ++ SYNTAX_NORMAL2(BLD, BLD, BLD, INTREG, UNSIGNED_NUMBER, AVR32_V1),
1.25855 ++ SYNTAX_NORMAL_C1(BREQ1, BREQ, BREQ1, BREQ2, JMPLABEL, AVR32_V1),
1.25856 ++ SYNTAX_NORMAL_C1(BRNE1, BRNE, BRNE1, BRNE2, JMPLABEL, AVR32_V1),
1.25857 ++ SYNTAX_NORMAL_C1(BRCC1, BRCC, BRCC1, BRCC2, JMPLABEL, AVR32_V1),
1.25858 ++ SYNTAX_NORMAL_C1(BRCS1, BRCS, BRCS1, BRCS2, JMPLABEL, AVR32_V1),
1.25859 ++ SYNTAX_NORMAL_C1(BRGE1, BRGE, BRGE1, BRGE2, JMPLABEL, AVR32_V1),
1.25860 ++ SYNTAX_NORMAL_C1(BRLT1, BRLT, BRLT1, BRLT2, JMPLABEL, AVR32_V1),
1.25861 ++ SYNTAX_NORMAL_C1(BRMI1, BRMI, BRMI1, BRMI2, JMPLABEL, AVR32_V1),
1.25862 ++ SYNTAX_NORMAL_C1(BRPL1, BRPL, BRPL1, BRPL2, JMPLABEL, AVR32_V1),
1.25863 ++ SYNTAX_NORMAL_C1(BRHS1, BRHS, BRCC1, BRHS2, JMPLABEL, AVR32_V1),
1.25864 ++ SYNTAX_NORMAL_C1(BRLO1, BRLO, BRCS1, BRLO2, JMPLABEL, AVR32_V1),
1.25865 ++ SYNTAX_NORMAL1(BREQ2, BREQ, BREQ2, JMPLABEL, AVR32_V1),
1.25866 ++ SYNTAX_NORMAL1(BRNE2, BRNE, BRNE2, JMPLABEL, AVR32_V1),
1.25867 ++ SYNTAX_NORMAL1(BRCC2, BRCC, BRCC2, JMPLABEL, AVR32_V1),
1.25868 ++ SYNTAX_NORMAL1(BRCS2, BRCS, BRCS2, JMPLABEL, AVR32_V1),
1.25869 ++ SYNTAX_NORMAL1(BRGE2, BRGE, BRGE2, JMPLABEL, AVR32_V1),
1.25870 ++ SYNTAX_NORMAL1(BRLT2, BRLT, BRLT2, JMPLABEL, AVR32_V1),
1.25871 ++ SYNTAX_NORMAL1(BRMI2, BRMI, BRMI2, JMPLABEL, AVR32_V1),
1.25872 ++ SYNTAX_NORMAL1(BRPL2, BRPL, BRPL2, JMPLABEL, AVR32_V1),
1.25873 ++ SYNTAX_NORMAL1(BRLS, BRLS, BRLS, JMPLABEL, AVR32_V1),
1.25874 ++ SYNTAX_NORMAL1(BRGT, BRGT, BRGT, JMPLABEL, AVR32_V1),
1.25875 ++ SYNTAX_NORMAL1(BRLE, BRLE, BRLE, JMPLABEL, AVR32_V1),
1.25876 ++ SYNTAX_NORMAL1(BRHI, BRHI, BRHI, JMPLABEL, AVR32_V1),
1.25877 ++ SYNTAX_NORMAL1(BRVS, BRVS, BRVS, JMPLABEL, AVR32_V1),
1.25878 ++ SYNTAX_NORMAL1(BRVC, BRVC, BRVC, JMPLABEL, AVR32_V1),
1.25879 ++ SYNTAX_NORMAL1(BRQS, BRQS, BRQS, JMPLABEL, AVR32_V1),
1.25880 ++ SYNTAX_NORMAL1(BRAL, BRAL, BRAL, JMPLABEL, AVR32_V1),
1.25881 ++ SYNTAX_NORMAL1(BRHS2, BRHS, BRCC2, JMPLABEL, AVR32_V1),
1.25882 ++ SYNTAX_NORMAL1(BRLO2, BRLO, BRCS2, JMPLABEL, AVR32_V1),
1.25883 ++ SYNTAX_NORMAL0(BREAKPOINT, BREAKPOINT, BREAKPOINT, AVR32_V1),
1.25884 ++ SYNTAX_NORMAL1(BREV, BREV, BREV, INTREG, AVR32_V1),
1.25885 ++ SYNTAX_NORMAL2(BST, BST, BST, INTREG, UNSIGNED_NUMBER, AVR32_V1),
1.25886 ++ SYNTAX_NORMAL2(CACHE, CACHE, CACHE, INTREG_SDISP, UNSIGNED_NUMBER, AVR32_V1),
1.25887 ++ SYNTAX_NORMAL1(CASTS_B, CASTS_B, CASTS_B, INTREG, AVR32_V1),
1.25888 ++ SYNTAX_NORMAL1(CASTS_H, CASTS_H, CASTS_H, INTREG, AVR32_V1),
1.25889 ++ SYNTAX_NORMAL1(CASTU_B, CASTU_B, CASTU_B, INTREG, AVR32_V1),
1.25890 ++ SYNTAX_NORMAL1(CASTU_H, CASTU_H, CASTU_H, INTREG, AVR32_V1),
1.25891 ++ SYNTAX_NORMAL2(CBR, CBR, CBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
1.25892 ++ SYNTAX_NORMAL2(CLZ, CLZ, CLZ, INTREG, INTREG, AVR32_V1),
1.25893 ++ SYNTAX_NORMAL1(COM, COM, COM, INTREG, AVR32_V1),
1.25894 ++ SYNTAX_NORMAL5(COP, COP, COP, CPNO, CPREG, CPREG, CPREG, UNSIGNED_NUMBER, AVR32_V1),
1.25895 ++ SYNTAX_NORMAL2(CP_B, CP_B, CP_B, INTREG, INTREG, AVR32_V1),
1.25896 ++ SYNTAX_NORMAL2(CP_H, CP_H, CP_H, INTREG, INTREG, AVR32_V1),
1.25897 ++ SYNTAX_NORMAL_C2(CP_W1, CP_W, CP_W1, CP_W2, INTREG, INTREG, AVR32_V1),
1.25898 ++ SYNTAX_NORMAL_C2(CP_W2, CP_W, CP_W2, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
1.25899 ++ SYNTAX_NORMAL2(CP_W3, CP_W, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
1.25900 ++ SYNTAX_NORMAL_C2(CPC1, CPC, CPC1, CPC2, INTREG, INTREG, AVR32_V1),
1.25901 ++ SYNTAX_NORMAL1(CPC2, CPC, CPC2, INTREG, AVR32_V1),
1.25902 ++ SYNTAX_NORMAL1(CSRF, CSRF, CSRF, UNSIGNED_NUMBER, AVR32_V1),
1.25903 ++ SYNTAX_NORMAL1(CSRFCZ, CSRFCZ, CSRFCZ, UNSIGNED_NUMBER, AVR32_V1),
1.25904 ++ SYNTAX_NORMAL3(DIVS, DIVS, DIVS, INTREG, INTREG, INTREG, AVR32_V1),
1.25905 ++ SYNTAX_NORMAL3(DIVU, DIVU, DIVU, INTREG, INTREG, INTREG, AVR32_V1),
1.25906 ++ SYNTAX_NORMAL_C2(EOR1, EOR, EOR1, EOR2, INTREG, INTREG, AVR32_V1),
1.25907 ++ SYNTAX_NORMAL_C3(EOR2, EOR, EOR2, EOR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
1.25908 ++ SYNTAX_NORMAL3(EOR3, EOR, EOR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
1.25909 ++ SYNTAX_NORMAL2(EORL, EORL, EORL, INTREG, UNSIGNED_CONST, AVR32_V1),
1.25910 ++ SYNTAX_NORMAL2(EORH, EORH, EORH, INTREG, UNSIGNED_CONST, AVR32_V1),
1.25911 ++ SYNTAX_NORMAL0(FRS, FRS, FRS, AVR32_V1),
1.25912 ++ SYNTAX_NORMAL1(ICALL, ICALL, ICALL, INTREG, AVR32_V1),
1.25913 ++ SYNTAX_NORMAL1(INCJOSP, INCJOSP, INCJOSP, JOSPINC, AVR32_V1),
1.25914 ++ SYNTAX_NORMAL_C2(LD_D1, LD_D, LD_D1, LD_D2, DWREG, INTREG_POSTINC, AVR32_V1),
1.25915 ++ SYNTAX_NORMAL_C2(LD_D2, LD_D, LD_D2, LD_D3, DWREG, INTREG_PREDEC, AVR32_V1),
1.25916 ++ SYNTAX_NORMAL_C2(LD_D3, LD_D, LD_D3, LD_D5, DWREG, INTREG, AVR32_V1),
1.25917 ++ SYNTAX_NORMAL_C2(LD_D5, LD_D, LD_D5, LD_D4, DWREG, INTREG_INDEX, AVR32_V1),
1.25918 ++ SYNTAX_NORMAL2(LD_D4, LD_D, LD_D4, DWREG, INTREG_SDISP, AVR32_V1),
1.25919 ++ SYNTAX_NORMAL_C2(LD_SB2, LD_SB, LD_SB2, LD_SB1, INTREG, INTREG_INDEX, AVR32_V1),
1.25920 ++ SYNTAX_NORMAL2(LD_SB1, LD_SB, LD_SB1, INTREG, INTREG_SDISP, AVR32_V1),
1.25921 ++ SYNTAX_NORMAL_C2(LD_UB1, LD_UB, LD_UB1, LD_UB2, INTREG, INTREG_POSTINC, AVR32_V1),
1.25922 ++ SYNTAX_NORMAL_C2(LD_UB2, LD_UB, LD_UB2, LD_UB5, INTREG, INTREG_PREDEC, AVR32_V1),
1.25923 ++ SYNTAX_NORMAL_C2(LD_UB5, LD_UB, LD_UB5, LD_UB3, INTREG, INTREG_INDEX, AVR32_V1),
1.25924 ++ SYNTAX_NORMAL_C2(LD_UB3, LD_UB, LD_UB3, LD_UB4, INTREG, INTREG_UDISP, AVR32_V1),
1.25925 ++ SYNTAX_NORMAL2(LD_UB4, LD_UB, LD_UB4, INTREG, INTREG_SDISP, AVR32_V1),
1.25926 ++ SYNTAX_NORMAL_C2(LD_SH1, LD_SH, LD_SH1, LD_SH2, INTREG, INTREG_POSTINC, AVR32_V1),
1.25927 ++ SYNTAX_NORMAL_C2(LD_SH2, LD_SH, LD_SH2, LD_SH5, INTREG, INTREG_PREDEC, AVR32_V1),
1.25928 ++ SYNTAX_NORMAL_C2(LD_SH5, LD_SH, LD_SH5, LD_SH3, INTREG, INTREG_INDEX, AVR32_V1),
1.25929 ++ SYNTAX_NORMAL_C2(LD_SH3, LD_SH, LD_SH3, LD_SH4, INTREG, INTREG_UDISP_H, AVR32_V1),
1.25930 ++ SYNTAX_NORMAL2(LD_SH4, LD_SH, LD_SH4, INTREG, INTREG_SDISP, AVR32_V1),
1.25931 ++ SYNTAX_NORMAL_C2(LD_UH1, LD_UH, LD_UH1, LD_UH2, INTREG, INTREG_POSTINC, AVR32_V1),
1.25932 ++ SYNTAX_NORMAL_C2(LD_UH2, LD_UH, LD_UH2, LD_UH5, INTREG, INTREG_PREDEC, AVR32_V1),
1.25933 ++ SYNTAX_NORMAL_C2(LD_UH5, LD_UH, LD_UH5, LD_UH3, INTREG, INTREG_INDEX, AVR32_V1),
1.25934 ++ SYNTAX_NORMAL_C2(LD_UH3, LD_UH, LD_UH3, LD_UH4, INTREG, INTREG_UDISP_H, AVR32_V1),
1.25935 ++ SYNTAX_NORMAL2(LD_UH4, LD_UH, LD_UH4, INTREG, INTREG_SDISP, AVR32_V1),
1.25936 ++ SYNTAX_NORMAL_C2(LD_W1, LD_W, LD_W1, LD_W2, INTREG, INTREG_POSTINC, AVR32_V1),
1.25937 ++ SYNTAX_NORMAL_C2(LD_W2, LD_W, LD_W2, LD_W5, INTREG, INTREG_PREDEC, AVR32_V1),
1.25938 ++ SYNTAX_NORMAL_C2(LD_W5, LD_W, LD_W5, LD_W6, INTREG, INTREG_INDEX, AVR32_V1),
1.25939 ++ SYNTAX_NORMAL_C2(LD_W6, LD_W, LD_W6, LD_W3, INTREG, INTREG_XINDEX, AVR32_V1),
1.25940 ++ SYNTAX_NORMAL_C2(LD_W3, LD_W, LD_W3, LD_W4, INTREG, INTREG_UDISP_W, AVR32_V1),
1.25941 ++ SYNTAX_NORMAL2(LD_W4, LD_W, LD_W4, INTREG, INTREG_SDISP, AVR32_V1),
1.25942 ++ SYNTAX_NORMAL3(LDC_D1, LDC_D, LDC_D1, CPNO, CPREG_D, INTREG_UDISP_W, AVR32_V1),
1.25943 ++ SYNTAX_NORMAL_C3(LDC_D2, LDC_D, LDC_D2, LDC_D1, CPNO, CPREG_D, INTREG_PREDEC, AVR32_V1),
1.25944 ++ SYNTAX_NORMAL_C3(LDC_D3, LDC_D, LDC_D3, LDC_D2, CPNO, CPREG_D, INTREG_INDEX, AVR32_V1),
1.25945 ++ SYNTAX_NORMAL3(LDC_W1, LDC_W, LDC_W1, CPNO, CPREG, INTREG_UDISP_W, AVR32_V1),
1.25946 ++ SYNTAX_NORMAL_C3(LDC_W2, LDC_W, LDC_W2, LDC_W1, CPNO, CPREG, INTREG_PREDEC, AVR32_V1),
1.25947 ++ SYNTAX_NORMAL_C3(LDC_W3, LDC_W, LDC_W3, LDC_W2, CPNO, CPREG, INTREG_INDEX, AVR32_V1),
1.25948 ++ SYNTAX_NORMAL2(LDC0_D, LDC0_D, LDC0_D, CPREG_D, INTREG_UDISP_W, AVR32_V1),
1.25949 ++ SYNTAX_NORMAL2(LDC0_W, LDC0_W, LDC0_W, CPREG, INTREG_UDISP_W, AVR32_V1),
1.25950 ++ SYNTAX_NORMAL_CM3(LDCM_D, LDCM_D, LDCM_D, LDCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
1.25951 ++ SYNTAX_NORMALM3(LDCM_D_PU, LDCM_D, LDCM_D_PU, CPNO, INTREG_POSTINC, REGLIST_CPD8, AVR32_V1),
1.25952 ++ SYNTAX_NORMAL_CM3(LDCM_W, LDCM_W, LDCM_W, LDCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
1.25953 ++ SYNTAX_NORMALM3(LDCM_W_PU, LDCM_W, LDCM_W_PU, CPNO, INTREG_POSTINC, REGLIST_CP8, AVR32_V1),
1.25954 ++ SYNTAX_NORMAL2(LDDPC, LDDPC, LDDPC, INTREG, PC_UDISP_W, AVR32_V1),
1.25955 ++ SYNTAX_NORMAL2(LDDPC_EXT, LDDPC, LDDPC_EXT, INTREG, SIGNED_CONST, AVR32_V1),
1.25956 ++ SYNTAX_NORMAL2(LDDSP, LDDSP, LDDSP, INTREG, SP_UDISP_W, AVR32_V1),
1.25957 ++ SYNTAX_NORMAL2(LDINS_B, LDINS_B, LDINS_B, INTREG_BSEL, INTREG_SDISP, AVR32_V1),
1.25958 ++ SYNTAX_NORMAL2(LDINS_H, LDINS_H, LDINS_H, INTREG_HSEL, INTREG_SDISP_H, AVR32_V1),
1.25959 ++ SYNTAX_NORMALM1(LDM, LDM, LDM, REGLIST_LDM, AVR32_V1),
1.25960 ++ SYNTAX_NORMAL_CM2(LDMTS, LDMTS, LDMTS, LDMTS_PU, INTREG, REGLIST16, AVR32_V1),
1.25961 ++ SYNTAX_NORMALM2(LDMTS_PU, LDMTS, LDMTS_PU, INTREG_POSTINC, REGLIST16, AVR32_V1),
1.25962 ++ SYNTAX_NORMAL2(LDSWP_SH, LDSWP_SH, LDSWP_SH, INTREG, INTREG_SDISP_H, AVR32_V1),
1.25963 ++ SYNTAX_NORMAL2(LDSWP_UH, LDSWP_UH, LDSWP_UH, INTREG, INTREG_SDISP_H, AVR32_V1),
1.25964 ++ SYNTAX_NORMAL2(LDSWP_W, LDSWP_W, LDSWP_W, INTREG, INTREG_SDISP_W, AVR32_V1),
1.25965 ++ SYNTAX_NORMAL_C3(LSL1, LSL, LSL1, LSL3, INTREG, INTREG, INTREG, AVR32_V1),
1.25966 ++ SYNTAX_NORMAL_C3(LSL3, LSL, LSL3, LSL2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
1.25967 ++ SYNTAX_NORMAL2(LSL2, LSL, LSL2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
1.25968 ++ SYNTAX_NORMAL_C3(LSR1, LSR, LSR1, LSR3, INTREG, INTREG, INTREG, AVR32_V1),
1.25969 ++ SYNTAX_NORMAL_C3(LSR3, LSR, LSR3, LSR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
1.25970 ++ SYNTAX_NORMAL2(LSR2, LSR, LSR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
1.25971 ++ SYNTAX_NORMAL3(MAC, MAC, MAC, INTREG, INTREG, INTREG, AVR32_V1),
1.25972 ++ SYNTAX_NORMAL3(MACHH_D, MACHH_D, MACHH_D, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
1.25973 ++ SYNTAX_NORMAL3(MACHH_W, MACHH_W, MACHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
1.25974 ++ SYNTAX_NORMAL3(MACS_D, MACS_D, MACS_D, INTREG, INTREG, INTREG, AVR32_V1),
1.25975 ++ SYNTAX_NORMAL3(MACSATHH_W, MACSATHH_W, MACSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
1.25976 ++ SYNTAX_NORMAL3(MACUD, MACU_D, MACUD, INTREG, INTREG, INTREG, AVR32_V1),
1.25977 ++ SYNTAX_NORMAL3(MACWH_D, MACWH_D, MACWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
1.25978 ++ SYNTAX_NORMAL3(MAX, MAX, MAX, INTREG, INTREG, INTREG, AVR32_V1),
1.25979 ++ SYNTAX_NORMAL1(MCALL, MCALL, MCALL, MCALL, AVR32_V1),
1.25980 ++ SYNTAX_NORMAL2(MFDR, MFDR, MFDR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
1.25981 ++ SYNTAX_NORMAL2(MFSR, MFSR, MFSR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
1.25982 ++ SYNTAX_NORMAL3(MIN, MIN, MIN, INTREG, INTREG, INTREG, AVR32_V1),
1.25983 ++ SYNTAX_NORMAL_C2(MOV3, MOV, MOV3, MOV1, INTREG, INTREG, AVR32_V1),
1.25984 ++ SYNTAX_NORMAL_C2(MOV1, MOV, MOV1, MOV2, INTREG, SIGNED_CONST, AVR32_V1),
1.25985 ++ SYNTAX_NORMAL2(MOV2, MOV, MOV2,INTREG, SIGNED_CONST, AVR32_V1),
1.25986 ++ SYNTAX_NORMAL_C2(MOVEQ1, MOVEQ, MOVEQ1, MOVEQ2, INTREG, INTREG, AVR32_V1),
1.25987 ++ SYNTAX_NORMAL_C2(MOVNE1, MOVNE, MOVNE1, MOVNE2, INTREG, INTREG, AVR32_V1),
1.25988 ++ SYNTAX_NORMAL_C2(MOVCC1, MOVCC, MOVCC1, MOVCC2, INTREG, INTREG, AVR32_V1),
1.25989 ++ SYNTAX_NORMAL_C2(MOVCS1, MOVCS, MOVCS1, MOVCS2, INTREG, INTREG, AVR32_V1),
1.25990 ++ SYNTAX_NORMAL_C2(MOVGE1, MOVGE, MOVGE1, MOVGE2, INTREG, INTREG, AVR32_V1),
1.25991 ++ SYNTAX_NORMAL_C2(MOVLT1, MOVLT, MOVLT1, MOVLT2, INTREG, INTREG, AVR32_V1),
1.25992 ++ SYNTAX_NORMAL_C2(MOVMI1, MOVMI, MOVMI1, MOVMI2, INTREG, INTREG, AVR32_V1),
1.25993 ++ SYNTAX_NORMAL_C2(MOVPL1, MOVPL, MOVPL1, MOVPL2, INTREG, INTREG, AVR32_V1),
1.25994 ++ SYNTAX_NORMAL_C2(MOVLS1, MOVLS, MOVLS1, MOVLS2, INTREG, INTREG, AVR32_V1),
1.25995 ++ SYNTAX_NORMAL_C2(MOVGT1, MOVGT, MOVGT1, MOVGT2, INTREG, INTREG, AVR32_V1),
1.25996 ++ SYNTAX_NORMAL_C2(MOVLE1, MOVLE, MOVLE1, MOVLE2, INTREG, INTREG, AVR32_V1),
1.25997 ++ SYNTAX_NORMAL_C2(MOVHI1, MOVHI, MOVHI1, MOVHI2, INTREG, INTREG, AVR32_V1),
1.25998 ++ SYNTAX_NORMAL_C2(MOVVS1, MOVVS, MOVVS1, MOVVS2, INTREG, INTREG, AVR32_V1),
1.25999 ++ SYNTAX_NORMAL_C2(MOVVC1, MOVVC, MOVVC1, MOVVC2, INTREG, INTREG, AVR32_V1),
1.26000 ++ SYNTAX_NORMAL_C2(MOVQS1, MOVQS, MOVQS1, MOVQS2, INTREG, INTREG, AVR32_V1),
1.26001 ++ SYNTAX_NORMAL_C2(MOVAL1, MOVAL, MOVAL1, MOVAL2, INTREG, INTREG, AVR32_V1),
1.26002 ++ SYNTAX_NORMAL_C2(MOVHS1, MOVHS, MOVCC1, MOVHS2, INTREG, INTREG, AVR32_V1),
1.26003 ++ SYNTAX_NORMAL_C2(MOVLO1, MOVLO, MOVCS1, MOVLO2, INTREG, INTREG, AVR32_V1),
1.26004 ++ SYNTAX_NORMAL2(MOVEQ2, MOVEQ, MOVEQ2, INTREG, SIGNED_CONST, AVR32_V1),
1.26005 ++ SYNTAX_NORMAL2(MOVNE2, MOVNE, MOVNE2, INTREG, SIGNED_CONST, AVR32_V1),
1.26006 ++ SYNTAX_NORMAL2(MOVCC2, MOVCC, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
1.26007 ++ SYNTAX_NORMAL2(MOVCS2, MOVCS, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
1.26008 ++ SYNTAX_NORMAL2(MOVGE2, MOVGE, MOVGE2, INTREG, SIGNED_CONST, AVR32_V1),
1.26009 ++ SYNTAX_NORMAL2(MOVLT2, MOVLT, MOVLT2, INTREG, SIGNED_CONST, AVR32_V1),
1.26010 ++ SYNTAX_NORMAL2(MOVMI2, MOVMI, MOVMI2, INTREG, SIGNED_CONST, AVR32_V1),
1.26011 ++ SYNTAX_NORMAL2(MOVPL2, MOVPL, MOVPL2, INTREG, SIGNED_CONST, AVR32_V1),
1.26012 ++ SYNTAX_NORMAL2(MOVLS2, MOVLS, MOVLS2, INTREG, SIGNED_CONST, AVR32_V1),
1.26013 ++ SYNTAX_NORMAL2(MOVGT2, MOVGT, MOVGT2, INTREG, SIGNED_CONST, AVR32_V1),
1.26014 ++ SYNTAX_NORMAL2(MOVLE2, MOVLE, MOVLE2, INTREG, SIGNED_CONST, AVR32_V1),
1.26015 ++ SYNTAX_NORMAL2(MOVHI2, MOVHI, MOVHI2, INTREG, SIGNED_CONST, AVR32_V1),
1.26016 ++ SYNTAX_NORMAL2(MOVVS2, MOVVS, MOVVS2, INTREG, SIGNED_CONST, AVR32_V1),
1.26017 ++ SYNTAX_NORMAL2(MOVVC2, MOVVC, MOVVC2, INTREG, SIGNED_CONST, AVR32_V1),
1.26018 ++ SYNTAX_NORMAL2(MOVQS2, MOVQS, MOVQS2, INTREG, SIGNED_CONST, AVR32_V1),
1.26019 ++ SYNTAX_NORMAL2(MOVAL2, MOVAL, MOVAL2, INTREG, SIGNED_CONST, AVR32_V1),
1.26020 ++ SYNTAX_NORMAL2(MOVHS2, MOVHS, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
1.26021 ++ SYNTAX_NORMAL2(MOVLO2, MOVLO, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
1.26022 ++ SYNTAX_NORMAL2(MTDR, MTDR, MTDR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
1.26023 ++ SYNTAX_NORMAL2(MTSR, MTSR, MTSR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
1.26024 ++ SYNTAX_NORMAL_C2(MUL1, MUL, MUL1, MUL2, INTREG, INTREG, AVR32_V1),
1.26025 ++ SYNTAX_NORMAL_C3(MUL2, MUL, MUL2, MUL3, INTREG, INTREG, INTREG, AVR32_V1),
1.26026 ++ SYNTAX_NORMAL3(MUL3, MUL, MUL3, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
1.26027 ++ SYNTAX_NORMAL3(MULHH_W, MULHH_W, MULHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
1.26028 ++ SYNTAX_NORMAL3(MULNHH_W, MULNHH_W, MULNHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
1.26029 ++ SYNTAX_NORMAL3(MULNWH_D, MULNWH_D, MULNWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
1.26030 ++ SYNTAX_NORMAL3(MULSD, MULS_D, MULSD, INTREG, INTREG, INTREG, AVR32_V1),
1.26031 ++ SYNTAX_NORMAL3(MULSATHH_H, MULSATHH_H, MULSATHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
1.26032 ++ SYNTAX_NORMAL3(MULSATHH_W, MULSATHH_W, MULSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
1.26033 ++ SYNTAX_NORMAL3(MULSATRNDHH_H, MULSATRNDHH_H, MULSATRNDHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
1.26034 ++ SYNTAX_NORMAL3(MULSATRNDWH_W, MULSATRNDWH_W, MULSATRNDWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
1.26035 ++ SYNTAX_NORMAL3(MULSATWH_W, MULSATWH_W, MULSATWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
1.26036 ++ SYNTAX_NORMAL3(MULU_D, MULU_D, MULU_D, INTREG, INTREG, INTREG, AVR32_V1),
1.26037 ++ SYNTAX_NORMAL3(MULWH_D, MULWH_D, MULWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
1.26038 ++ SYNTAX_NORMAL1(MUSFR, MUSFR, MUSFR, INTREG, AVR32_V1),
1.26039 ++ SYNTAX_NORMAL1(MUSTR, MUSTR, MUSTR, INTREG, AVR32_V1),
1.26040 ++ SYNTAX_NORMAL3(MVCR_D, MVCR_D, MVCR_D, CPNO, DWREG, CPREG_D, AVR32_V1),
1.26041 ++ SYNTAX_NORMAL3(MVCR_W, MVCR_W, MVCR_W, CPNO, INTREG, CPREG, AVR32_V1),
1.26042 ++ SYNTAX_NORMAL3(MVRC_D, MVRC_D, MVRC_D, CPNO, CPREG_D, DWREG, AVR32_V1),
1.26043 ++ SYNTAX_NORMAL3(MVRC_W, MVRC_W, MVRC_W, CPNO, CPREG, INTREG, AVR32_V1),
1.26044 ++ SYNTAX_NORMAL1(NEG, NEG, NEG, INTREG, AVR32_V1),
1.26045 ++ SYNTAX_NORMAL0(NOP, NOP, NOP, AVR32_V1),
1.26046 ++ SYNTAX_NORMAL_C2(OR1, OR, OR1, OR2, INTREG, INTREG, AVR32_V1),
1.26047 ++ SYNTAX_NORMAL_C3(OR2, OR, OR2, OR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
1.26048 ++ SYNTAX_NORMAL3(OR3, OR, OR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
1.26049 ++ SYNTAX_NORMAL2(ORH, ORH, ORH, INTREG, UNSIGNED_CONST, AVR32_V1),
1.26050 ++ SYNTAX_NORMAL2(ORL, ORL, ORL, INTREG, UNSIGNED_CONST, AVR32_V1),
1.26051 ++ SYNTAX_NORMAL2(PABS_SB, PABS_SB, PABS_SB, INTREG, INTREG, AVR32_SIMD),
1.26052 ++ SYNTAX_NORMAL2(PABS_SH, PABS_SH, PABS_SH, INTREG, INTREG, AVR32_SIMD),
1.26053 ++ SYNTAX_NORMAL3(PACKSH_SB, PACKSH_SB, PACKSH_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26054 ++ SYNTAX_NORMAL3(PACKSH_UB, PACKSH_UB, PACKSH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26055 ++ SYNTAX_NORMAL3(PACKW_SH, PACKW_SH, PACKW_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26056 ++ SYNTAX_NORMAL3(PADD_B, PADD_B, PADD_B, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26057 ++ SYNTAX_NORMAL3(PADD_H, PADD_H, PADD_H, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26058 ++ SYNTAX_NORMAL3(PADDH_SH, PADDH_SH, PADDH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26059 ++ SYNTAX_NORMAL3(PADDH_UB, PADDH_UB, PADDH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26060 ++ SYNTAX_NORMAL3(PADDS_SB, PADDS_SB, PADDS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26061 ++ SYNTAX_NORMAL3(PADDS_SH, PADDS_SH, PADDS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26062 ++ SYNTAX_NORMAL3(PADDS_UB, PADDS_UB, PADDS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26063 ++ SYNTAX_NORMAL3(PADDS_UH, PADDS_UH, PADDS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26064 ++ SYNTAX_NORMAL3(PADDSUB_H, PADDSUB_H, PADDSUB_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
1.26065 ++ SYNTAX_NORMAL3(PADDSUBH_SH, PADDSUBH_SH, PADDSUBH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
1.26066 ++ SYNTAX_NORMAL3(PADDSUBS_SH, PADDSUBS_SH, PADDSUBS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
1.26067 ++ SYNTAX_NORMAL3(PADDSUBS_UH, PADDSUBS_UH, PADDSUBS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
1.26068 ++ SYNTAX_NORMAL3(PADDX_H, PADDX_H, PADDX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26069 ++ SYNTAX_NORMAL3(PADDXH_SH, PADDXH_SH, PADDXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26070 ++ SYNTAX_NORMAL3(PADDXS_SH, PADDXS_SH, PADDXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26071 ++ SYNTAX_NORMAL3(PADDXS_UH, PADDXS_UH, PADDXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26072 ++ SYNTAX_NORMAL3(PASR_B, PASR_B, PASR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
1.26073 ++ SYNTAX_NORMAL3(PASR_H, PASR_H, PASR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
1.26074 ++ SYNTAX_NORMAL3(PAVG_SH, PAVG_SH, PAVG_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26075 ++ SYNTAX_NORMAL3(PAVG_UB, PAVG_UB, PAVG_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26076 ++ SYNTAX_NORMAL3(PLSL_B, PLSL_B, PLSL_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
1.26077 ++ SYNTAX_NORMAL3(PLSL_H, PLSL_H, PLSL_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
1.26078 ++ SYNTAX_NORMAL3(PLSR_B, PLSR_B, PLSR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
1.26079 ++ SYNTAX_NORMAL3(PLSR_H, PLSR_H, PLSR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
1.26080 ++ SYNTAX_NORMAL3(PMAX_SH, PMAX_SH, PMAX_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26081 ++ SYNTAX_NORMAL3(PMAX_UB, PMAX_UB, PMAX_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26082 ++ SYNTAX_NORMAL3(PMIN_SH, PMIN_SH, PMIN_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26083 ++ SYNTAX_NORMAL3(PMIN_UB, PMIN_UB, PMIN_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26084 ++ SYNTAX_NORMAL0(POPJC, POPJC, POPJC, AVR32_V1),
1.26085 ++ SYNTAX_NORMAL_CM1(POPM, POPM, POPM, POPM_E, REGLIST9, AVR32_V1),
1.26086 ++ SYNTAX_NORMALM1(POPM_E, POPM, POPM_E, REGLIST16, AVR32_V1),
1.26087 ++ SYNTAX_NORMAL1(PREF, PREF, PREF, INTREG_SDISP, AVR32_V1),
1.26088 ++ SYNTAX_NORMAL3(PSAD, PSAD, PSAD, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26089 ++ SYNTAX_NORMAL3(PSUB_B, PSUB_B, PSUB_B, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26090 ++ SYNTAX_NORMAL3(PSUB_H, PSUB_H, PSUB_H, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26091 ++ SYNTAX_NORMAL3(PSUBADD_H, PSUBADD_H, PSUBADD_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
1.26092 ++ SYNTAX_NORMAL3(PSUBADDH_SH, PSUBADDH_SH, PSUBADDH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
1.26093 ++ SYNTAX_NORMAL3(PSUBADDS_SH, PSUBADDS_SH, PSUBADDS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
1.26094 ++ SYNTAX_NORMAL3(PSUBADDS_UH, PSUBADDS_UH, PSUBADDS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
1.26095 ++ SYNTAX_NORMAL3(PSUBH_SH, PSUBH_SH, PSUBH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26096 ++ SYNTAX_NORMAL3(PSUBH_UB, PSUBH_UB, PSUBH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26097 ++ SYNTAX_NORMAL3(PSUBS_SB, PSUBS_SB, PSUBS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26098 ++ SYNTAX_NORMAL3(PSUBS_SH, PSUBS_SH, PSUBS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26099 ++ SYNTAX_NORMAL3(PSUBS_UB, PSUBS_UB, PSUBS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26100 ++ SYNTAX_NORMAL3(PSUBS_UH, PSUBS_UH, PSUBS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26101 ++ SYNTAX_NORMAL3(PSUBX_H, PSUBX_H, PSUBX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26102 ++ SYNTAX_NORMAL3(PSUBXH_SH, PSUBXH_SH, PSUBXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26103 ++ SYNTAX_NORMAL3(PSUBXS_SH, PSUBXS_SH, PSUBXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26104 ++ SYNTAX_NORMAL3(PSUBXS_UH, PSUBXS_UH, PSUBXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
1.26105 ++ SYNTAX_NORMAL2(PUNPCKSB_H, PUNPCKSB_H, PUNPCKSB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
1.26106 ++ SYNTAX_NORMAL2(PUNPCKUB_H, PUNPCKUB_H, PUNPCKUB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
1.26107 ++ SYNTAX_NORMAL0(PUSHJC, PUSHJC, PUSHJC, AVR32_V1),
1.26108 ++ SYNTAX_NORMAL_CM1(PUSHM, PUSHM, PUSHM, PUSHM_E, REGLIST8, AVR32_V1),
1.26109 ++ SYNTAX_NORMALM1(PUSHM_E, PUSHM, PUSHM_E, REGLIST16, AVR32_V1),
1.26110 ++ SYNTAX_NORMAL_C1(RCALL1, RCALL, RCALL1, RCALL2, JMPLABEL, AVR32_V1),
1.26111 ++ SYNTAX_NORMAL1(RCALL2, RCALL, RCALL2, JMPLABEL, AVR32_V1),
1.26112 ++ SYNTAX_NORMAL1(RETEQ, RETEQ, RETEQ, RETVAL, AVR32_V1),
1.26113 ++ SYNTAX_NORMAL1(RETNE, RETNE, RETNE, RETVAL, AVR32_V1),
1.26114 ++ SYNTAX_NORMAL1(RETCC, RETCC, RETCC, RETVAL, AVR32_V1),
1.26115 ++ SYNTAX_NORMAL1(RETCS, RETCS, RETCS, RETVAL, AVR32_V1),
1.26116 ++ SYNTAX_NORMAL1(RETGE, RETGE, RETGE, RETVAL, AVR32_V1),
1.26117 ++ SYNTAX_NORMAL1(RETLT, RETLT, RETLT, RETVAL, AVR32_V1),
1.26118 ++ SYNTAX_NORMAL1(RETMI, RETMI, RETMI, RETVAL, AVR32_V1),
1.26119 ++ SYNTAX_NORMAL1(RETPL, RETPL, RETPL, RETVAL, AVR32_V1),
1.26120 ++ SYNTAX_NORMAL1(RETLS, RETLS, RETLS, RETVAL, AVR32_V1),
1.26121 ++ SYNTAX_NORMAL1(RETGT, RETGT, RETGT, RETVAL, AVR32_V1),
1.26122 ++ SYNTAX_NORMAL1(RETLE, RETLE, RETLE, RETVAL, AVR32_V1),
1.26123 ++ SYNTAX_NORMAL1(RETHI, RETHI, RETHI, RETVAL, AVR32_V1),
1.26124 ++ SYNTAX_NORMAL1(RETVS, RETVS, RETVS, RETVAL, AVR32_V1),
1.26125 ++ SYNTAX_NORMAL1(RETVC, RETVC, RETVC, RETVAL, AVR32_V1),
1.26126 ++ SYNTAX_NORMAL1(RETQS, RETQS, RETQS, RETVAL, AVR32_V1),
1.26127 ++ SYNTAX_NORMAL1(RETAL, RETAL, RETAL, RETVAL, AVR32_V1),
1.26128 ++ SYNTAX_NORMAL1(RETHS, RETHS, RETCC, RETVAL, AVR32_V1),
1.26129 ++ SYNTAX_NORMAL1(RETLO, RETLO, RETCS, RETVAL, AVR32_V1),
1.26130 ++ SYNTAX_NORMAL0(RETD, RETD, RETD, AVR32_V1),
1.26131 ++ SYNTAX_NORMAL0(RETE, RETE, RETE, AVR32_V1),
1.26132 ++ SYNTAX_NORMAL0(RETJ, RETJ, RETJ, AVR32_V1),
1.26133 ++ SYNTAX_NORMAL0(RETS, RETS, RETS, AVR32_V1),
1.26134 ++ SYNTAX_NORMAL1(RJMP, RJMP, RJMP, JMPLABEL, AVR32_V1),
1.26135 ++ SYNTAX_NORMAL1(ROL, ROL, ROL, INTREG, AVR32_V1),
1.26136 ++ SYNTAX_NORMAL1(ROR, ROR, ROR, INTREG, AVR32_V1),
1.26137 ++ SYNTAX_NORMAL_C2(RSUB1, RSUB, RSUB1, RSUB2, INTREG, INTREG, AVR32_V1),
1.26138 ++ SYNTAX_NORMAL3(RSUB2, RSUB, RSUB2, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
1.26139 ++ SYNTAX_NORMAL3(SATADD_H, SATADD_H, SATADD_H, INTREG, INTREG, INTREG, AVR32_DSP),
1.26140 ++ SYNTAX_NORMAL3(SATADD_W, SATADD_W, SATADD_W, INTREG, INTREG, INTREG, AVR32_DSP),
1.26141 ++ SYNTAX_NORMAL2(SATRNDS, SATRNDS, SATRNDS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
1.26142 ++ SYNTAX_NORMAL2(SATRNDU, SATRNDU, SATRNDU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
1.26143 ++ SYNTAX_NORMAL2(SATS, SATS, SATS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
1.26144 ++ SYNTAX_NORMAL3(SATSUB_H, SATSUB_H, SATSUB_H, INTREG, INTREG, INTREG, AVR32_DSP),
1.26145 ++ SYNTAX_NORMAL_C3(SATSUB_W1, SATSUB_W, SATSUB_W1, SATSUB_W2, INTREG, INTREG, INTREG, AVR32_DSP),
1.26146 ++ SYNTAX_NORMAL3(SATSUB_W2, SATSUB_W, SATSUB_W2, INTREG, INTREG, SIGNED_CONST, AVR32_DSP),
1.26147 ++ SYNTAX_NORMAL2(SATU, SATU, SATU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_V1),
1.26148 ++ SYNTAX_NORMAL3(SBC, SBC, SBC, INTREG, INTREG, INTREG, AVR32_V1),
1.26149 ++ SYNTAX_NORMAL2(SBR, SBR, SBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
1.26150 ++ SYNTAX_NORMAL0(SCALL, SCALL, SCALL, AVR32_V1),
1.26151 ++ SYNTAX_NORMAL1(SCR, SCR, SCR, INTREG, AVR32_V1),
1.26152 ++ SYNTAX_NORMAL1(SLEEP, SLEEP, SLEEP, UNSIGNED_CONST, AVR32_V1),
1.26153 ++ SYNTAX_NORMAL1(SREQ, SREQ, SREQ, INTREG, AVR32_V1),
1.26154 ++ SYNTAX_NORMAL1(SRNE, SRNE, SRNE, INTREG, AVR32_V1),
1.26155 ++ SYNTAX_NORMAL1(SRCC, SRCC, SRCC, INTREG, AVR32_V1),
1.26156 ++ SYNTAX_NORMAL1(SRCS, SRCS, SRCS, INTREG, AVR32_V1),
1.26157 ++ SYNTAX_NORMAL1(SRGE, SRGE, SRGE, INTREG, AVR32_V1),
1.26158 ++ SYNTAX_NORMAL1(SRLT, SRLT, SRLT, INTREG, AVR32_V1),
1.26159 ++ SYNTAX_NORMAL1(SRMI, SRMI, SRMI, INTREG, AVR32_V1),
1.26160 ++ SYNTAX_NORMAL1(SRPL, SRPL, SRPL, INTREG, AVR32_V1),
1.26161 ++ SYNTAX_NORMAL1(SRLS, SRLS, SRLS, INTREG, AVR32_V1),
1.26162 ++ SYNTAX_NORMAL1(SRGT, SRGT, SRGT, INTREG, AVR32_V1),
1.26163 ++ SYNTAX_NORMAL1(SRLE, SRLE, SRLE, INTREG, AVR32_V1),
1.26164 ++ SYNTAX_NORMAL1(SRHI, SRHI, SRHI, INTREG, AVR32_V1),
1.26165 ++ SYNTAX_NORMAL1(SRVS, SRVS, SRVS, INTREG, AVR32_V1),
1.26166 ++ SYNTAX_NORMAL1(SRVC, SRVC, SRVC, INTREG, AVR32_V1),
1.26167 ++ SYNTAX_NORMAL1(SRQS, SRQS, SRQS, INTREG, AVR32_V1),
1.26168 ++ SYNTAX_NORMAL1(SRAL, SRAL, SRAL, INTREG, AVR32_V1),
1.26169 ++ SYNTAX_NORMAL1(SRHS, SRHS, SRCC, INTREG, AVR32_V1),
1.26170 ++ SYNTAX_NORMAL1(SRLO, SRLO, SRCS, INTREG, AVR32_V1),
1.26171 ++ SYNTAX_NORMAL1(SSRF, SSRF, SSRF, UNSIGNED_NUMBER, AVR32_V1),
1.26172 ++ SYNTAX_NORMAL_C2(ST_B1, ST_B, ST_B1, ST_B2, INTREG_POSTINC, INTREG, AVR32_V1),
1.26173 ++ SYNTAX_NORMAL_C2(ST_B2, ST_B, ST_B2, ST_B5, INTREG_PREDEC, INTREG, AVR32_V1),
1.26174 ++ SYNTAX_NORMAL_C2(ST_B5, ST_B, ST_B5, ST_B3, INTREG_INDEX, INTREG, AVR32_V1),
1.26175 ++ SYNTAX_NORMAL_C2(ST_B3, ST_B, ST_B3, ST_B4, INTREG_UDISP, INTREG, AVR32_V1),
1.26176 ++ SYNTAX_NORMAL2(ST_B4, ST_B, ST_B4, INTREG_SDISP, INTREG, AVR32_V1),
1.26177 ++ SYNTAX_NORMAL_C2(ST_D1, ST_D, ST_D1, ST_D2, INTREG_POSTINC, DWREG, AVR32_V1),
1.26178 ++ SYNTAX_NORMAL_C2(ST_D2, ST_D, ST_D2, ST_D3, INTREG_PREDEC, DWREG, AVR32_V1),
1.26179 ++ SYNTAX_NORMAL_C2(ST_D3, ST_D, ST_D3, ST_D5, INTREG, DWREG, AVR32_V1),
1.26180 ++ SYNTAX_NORMAL_C2(ST_D5, ST_D, ST_D5, ST_D4, INTREG_INDEX, DWREG, AVR32_V1),
1.26181 ++ SYNTAX_NORMAL2(ST_D4, ST_D, ST_D4, INTREG_SDISP, DWREG, AVR32_V1),
1.26182 ++ SYNTAX_NORMAL_C2(ST_H1, ST_H, ST_H1, ST_H2, INTREG_POSTINC, INTREG, AVR32_V1),
1.26183 ++ SYNTAX_NORMAL_C2(ST_H2, ST_H, ST_H2, ST_H5, INTREG_PREDEC, INTREG, AVR32_V1),
1.26184 ++ SYNTAX_NORMAL_C2(ST_H5, ST_H, ST_H5, ST_H3, INTREG_INDEX, INTREG, AVR32_V1),
1.26185 ++ SYNTAX_NORMAL_C2(ST_H3, ST_H, ST_H3, ST_H4, INTREG_UDISP_H, INTREG, AVR32_V1),
1.26186 ++ SYNTAX_NORMAL2(ST_H4, ST_H, ST_H4, INTREG_SDISP, INTREG, AVR32_V1),
1.26187 ++ SYNTAX_NORMAL_C2(ST_W1, ST_W, ST_W1, ST_W2, INTREG_POSTINC, INTREG, AVR32_V1),
1.26188 ++ SYNTAX_NORMAL_C2(ST_W2, ST_W, ST_W2, ST_W5, INTREG_PREDEC, INTREG, AVR32_V1),
1.26189 ++ SYNTAX_NORMAL_C2(ST_W5, ST_W, ST_W5, ST_W3, INTREG_INDEX, INTREG, AVR32_V1),
1.26190 ++ SYNTAX_NORMAL_C2(ST_W3, ST_W, ST_W3, ST_W4, INTREG_UDISP_W, INTREG, AVR32_V1),
1.26191 ++ SYNTAX_NORMAL2(ST_W4, ST_W, ST_W4, INTREG_SDISP, INTREG, AVR32_V1),
1.26192 ++ SYNTAX_NORMAL3(STC_D1, STC_D, STC_D1, CPNO, INTREG_UDISP_W, CPREG_D, AVR32_V1),
1.26193 ++ SYNTAX_NORMAL_C3(STC_D2, STC_D, STC_D2, STC_D1, CPNO, INTREG_POSTINC, CPREG_D, AVR32_V1),
1.26194 ++ SYNTAX_NORMAL_C3(STC_D3, STC_D, STC_D3, STC_D2, CPNO, INTREG_INDEX, CPREG_D, AVR32_V1),
1.26195 ++ SYNTAX_NORMAL3(STC_W1, STC_W, STC_W1, CPNO, INTREG_UDISP_W, CPREG, AVR32_V1),
1.26196 ++ SYNTAX_NORMAL_C3(STC_W2, STC_W, STC_W2, STC_W1, CPNO, INTREG_POSTINC, CPREG, AVR32_V1),
1.26197 ++ SYNTAX_NORMAL_C3(STC_W3, STC_W, STC_W3, STC_W2, CPNO, INTREG_INDEX, CPREG, AVR32_V1),
1.26198 ++ SYNTAX_NORMAL2(STC0_D, STC0_D, STC0_D, INTREG_UDISP_W, CPREG_D, AVR32_V1),
1.26199 ++ SYNTAX_NORMAL2(STC0_W, STC0_W, STC0_W, INTREG_UDISP_W, CPREG, AVR32_V1),
1.26200 ++ SYNTAX_NORMAL_CM3(STCM_D, STCM_D, STCM_D, STCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
1.26201 ++ SYNTAX_NORMALM3(STCM_D_PU, STCM_D, STCM_D_PU, CPNO, INTREG_PREDEC, REGLIST_CPD8, AVR32_V1),
1.26202 ++ SYNTAX_NORMAL_CM3(STCM_W, STCM_W, STCM_W, STCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
1.26203 ++ SYNTAX_NORMALM3(STCM_W_PU, STCM_W, STCM_W_PU, CPNO, INTREG_PREDEC, REGLIST_CP8, AVR32_V1),
1.26204 ++ SYNTAX_NORMAL2(STCOND, STCOND, STCOND, INTREG_SDISP, INTREG, AVR32_V1),
1.26205 ++ SYNTAX_NORMAL2(STDSP, STDSP, STDSP, SP_UDISP_W, INTREG, AVR32_V1),
1.26206 ++ SYNTAX_NORMAL_C3(STHH_W2, STHH_W, STHH_W2, STHH_W1, INTREG_INDEX, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
1.26207 ++ SYNTAX_NORMAL3(STHH_W1, STHH_W, STHH_W1, INTREG_UDISP_W, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
1.26208 ++ SYNTAX_NORMAL_CM2(STM, STM, STM, STM_PU, INTREG, REGLIST16, AVR32_V1),
1.26209 ++ SYNTAX_NORMALM2(STM_PU, STM, STM_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
1.26210 ++ SYNTAX_NORMAL_CM2(STMTS, STMTS, STMTS, STMTS_PU, INTREG, REGLIST16, AVR32_V1),
1.26211 ++ SYNTAX_NORMALM2(STMTS_PU, STMTS, STMTS_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
1.26212 ++ SYNTAX_NORMAL2(STSWP_H, STSWP_H, STSWP_H, INTREG_SDISP_H, INTREG, AVR32_V1),
1.26213 ++ SYNTAX_NORMAL2(STSWP_W, STSWP_W, STSWP_W, INTREG_SDISP_W, INTREG, AVR32_V1),
1.26214 ++ SYNTAX_NORMAL_C2(SUB1, SUB, SUB1, SUB2, INTREG, INTREG, AVR32_V1),
1.26215 ++ SYNTAX_NORMAL_C3(SUB2, SUB, SUB2, SUB5, INTREG, INTREG, INTREG_LSL, AVR32_V1),
1.26216 ++ SYNTAX_NORMAL_C3(SUB5, SUB, SUB5, SUB3_SP, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
1.26217 ++ SYNTAX_NORMAL_C2(SUB3_SP, SUB, SUB3_SP, SUB3, SP, SIGNED_CONST_W, AVR32_V1),
1.26218 ++ SYNTAX_NORMAL_C2(SUB3, SUB, SUB3, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
1.26219 ++ SYNTAX_NORMAL2(SUB4, SUB, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
1.26220 ++ SYNTAX_NORMAL_C2(SUBEQ, SUBEQ, SUBEQ, SUB2EQ, INTREG, SIGNED_CONST, AVR32_V1),
1.26221 ++ SYNTAX_NORMAL_C2(SUBNE, SUBNE, SUBNE, SUB2NE, INTREG, SIGNED_CONST, AVR32_V1),
1.26222 ++ SYNTAX_NORMAL_C2(SUBCC, SUBCC, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
1.26223 ++ SYNTAX_NORMAL_C2(SUBCS, SUBCS, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
1.26224 ++ SYNTAX_NORMAL_C2(SUBGE, SUBGE, SUBGE, SUB2GE, INTREG, SIGNED_CONST, AVR32_V1),
1.26225 ++ SYNTAX_NORMAL_C2(SUBLT, SUBLT, SUBLT, SUB2LT, INTREG, SIGNED_CONST, AVR32_V1),
1.26226 ++ SYNTAX_NORMAL_C2(SUBMI, SUBMI, SUBMI, SUB2MI, INTREG, SIGNED_CONST, AVR32_V1),
1.26227 ++ SYNTAX_NORMAL_C2(SUBPL, SUBPL, SUBPL, SUB2PL, INTREG, SIGNED_CONST, AVR32_V1),
1.26228 ++ SYNTAX_NORMAL_C2(SUBLS, SUBLS, SUBLS, SUB2LS, INTREG, SIGNED_CONST, AVR32_V1),
1.26229 ++ SYNTAX_NORMAL_C2(SUBGT, SUBGT, SUBGT, SUB2GT, INTREG, SIGNED_CONST, AVR32_V1),
1.26230 ++ SYNTAX_NORMAL_C2(SUBLE, SUBLE, SUBLE, SUB2LE, INTREG, SIGNED_CONST, AVR32_V1),
1.26231 ++ SYNTAX_NORMAL_C2(SUBHI, SUBHI, SUBHI, SUB2HI, INTREG, SIGNED_CONST, AVR32_V1),
1.26232 ++ SYNTAX_NORMAL_C2(SUBVS, SUBVS, SUBVS, SUB2VS, INTREG, SIGNED_CONST, AVR32_V1),
1.26233 ++ SYNTAX_NORMAL_C2(SUBVC, SUBVC, SUBVC, SUB2VC, INTREG, SIGNED_CONST, AVR32_V1),
1.26234 ++ SYNTAX_NORMAL_C2(SUBQS, SUBQS, SUBQS, SUB2QS, INTREG, SIGNED_CONST, AVR32_V1),
1.26235 ++ SYNTAX_NORMAL_C2(SUBAL, SUBAL, SUBAL, SUB2AL, INTREG, SIGNED_CONST, AVR32_V1),
1.26236 ++ SYNTAX_NORMAL_C2(SUBHS, SUBHS, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
1.26237 ++ SYNTAX_NORMAL_C2(SUBLO, SUBLO, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
1.26238 ++ SYNTAX_NORMAL2(SUBFEQ, SUBFEQ, SUBFEQ, INTREG, SIGNED_CONST, AVR32_V1),
1.26239 ++ SYNTAX_NORMAL2(SUBFNE, SUBFNE, SUBFNE, INTREG, SIGNED_CONST, AVR32_V1),
1.26240 ++ SYNTAX_NORMAL2(SUBFCC, SUBFCC, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
1.26241 ++ SYNTAX_NORMAL2(SUBFCS, SUBFCS, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
1.26242 ++ SYNTAX_NORMAL2(SUBFGE, SUBFGE, SUBFGE, INTREG, SIGNED_CONST, AVR32_V1),
1.26243 ++ SYNTAX_NORMAL2(SUBFLT, SUBFLT, SUBFLT, INTREG, SIGNED_CONST, AVR32_V1),
1.26244 ++ SYNTAX_NORMAL2(SUBFMI, SUBFMI, SUBFMI, INTREG, SIGNED_CONST, AVR32_V1),
1.26245 ++ SYNTAX_NORMAL2(SUBFPL, SUBFPL, SUBFPL, INTREG, SIGNED_CONST, AVR32_V1),
1.26246 ++ SYNTAX_NORMAL2(SUBFLS, SUBFLS, SUBFLS, INTREG, SIGNED_CONST, AVR32_V1),
1.26247 ++ SYNTAX_NORMAL2(SUBFGT, SUBFGT, SUBFGT, INTREG, SIGNED_CONST, AVR32_V1),
1.26248 ++ SYNTAX_NORMAL2(SUBFLE, SUBFLE, SUBFLE, INTREG, SIGNED_CONST, AVR32_V1),
1.26249 ++ SYNTAX_NORMAL2(SUBFHI, SUBFHI, SUBFHI, INTREG, SIGNED_CONST, AVR32_V1),
1.26250 ++ SYNTAX_NORMAL2(SUBFVS, SUBFVS, SUBFVS, INTREG, SIGNED_CONST, AVR32_V1),
1.26251 ++ SYNTAX_NORMAL2(SUBFVC, SUBFVC, SUBFVC, INTREG, SIGNED_CONST, AVR32_V1),
1.26252 ++ SYNTAX_NORMAL2(SUBFQS, SUBFQS, SUBFQS, INTREG, SIGNED_CONST, AVR32_V1),
1.26253 ++ SYNTAX_NORMAL2(SUBFAL, SUBFAL, SUBFAL, INTREG, SIGNED_CONST, AVR32_V1),
1.26254 ++ SYNTAX_NORMAL2(SUBFHS, SUBFHS, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
1.26255 ++ SYNTAX_NORMAL2(SUBFLO, SUBFLO, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
1.26256 ++ SYNTAX_NORMAL3(SUBHH_W, SUBHH_W, SUBHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
1.26257 ++ SYNTAX_NORMAL1(SWAP_B, SWAP_B, SWAP_B, INTREG, AVR32_V1),
1.26258 ++ SYNTAX_NORMAL1(SWAP_BH, SWAP_BH, SWAP_BH, INTREG, AVR32_V1),
1.26259 ++ SYNTAX_NORMAL1(SWAP_H, SWAP_H, SWAP_H, INTREG, AVR32_V1),
1.26260 ++ SYNTAX_NORMAL1(SYNC, SYNC, SYNC, UNSIGNED_CONST, AVR32_V1),
1.26261 ++ SYNTAX_NORMAL0(TLBR, TLBR, TLBR, AVR32_V1),
1.26262 ++ SYNTAX_NORMAL0(TLBS, TLBS, TLBS, AVR32_V1),
1.26263 ++ SYNTAX_NORMAL0(TLBW, TLBW, TLBW, AVR32_V1),
1.26264 ++ SYNTAX_NORMAL1(TNBZ, TNBZ, TNBZ, INTREG, AVR32_V1),
1.26265 ++ SYNTAX_NORMAL2(TST, TST, TST, INTREG, INTREG, AVR32_V1),
1.26266 ++ SYNTAX_NORMAL3(XCHG, XCHG, XCHG, INTREG, INTREG, INTREG, AVR32_V1),
1.26267 ++ SYNTAX_NORMAL2(MEMC, MEMC, MEMC, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
1.26268 ++ SYNTAX_NORMAL2(MEMS, MEMS, MEMS, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
1.26269 ++ SYNTAX_NORMAL2(MEMT, MEMT, MEMT, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
1.26270 ++ SYNTAX_FP(FADD, 3),
1.26271 ++ SYNTAX_FP(FSUB, 3),
1.26272 ++ SYNTAX_FP(FMAC, 3),
1.26273 ++ SYNTAX_FP(FNMAC, 3),
1.26274 ++ SYNTAX_FP(FMSC, 3),
1.26275 ++ SYNTAX_FP(FNMSC, 3),
1.26276 ++ SYNTAX_FP(FMUL, 3),
1.26277 ++ SYNTAX_FP(FNMUL, 3),
1.26278 ++ SYNTAX_FP(FNEG, 2),
1.26279 ++ SYNTAX_FP(FABS, 2),
1.26280 ++ SYNTAX_FP(FCMP, 2),
1.26281 ++ {
1.26282 ++ AVR32_SYNTAX_FMOV1_S,
1.26283 ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
1.26284 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_S] },
1.26285 ++ &avr32_syntax_table[AVR32_SYNTAX_FMOV2_S],
1.26286 ++ 2,
1.26287 ++ {
1.26288 ++ AVR32_OPERAND_FPREG_S,
1.26289 ++ AVR32_OPERAND_FPREG_S,
1.26290 ++ },
1.26291 ++ },
1.26292 ++ {
1.26293 ++ AVR32_SYNTAX_FMOV1_D,
1.26294 ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
1.26295 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_D] },
1.26296 ++ &avr32_syntax_table[AVR32_SYNTAX_FMOV2_D],
1.26297 ++ 2,
1.26298 ++ {
1.26299 ++ AVR32_OPERAND_FPREG_D,
1.26300 ++ AVR32_OPERAND_FPREG_D,
1.26301 ++ },
1.26302 ++ },
1.26303 ++ {
1.26304 ++ AVR32_SYNTAX_FMOV2_S,
1.26305 ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
1.26306 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_S] },
1.26307 ++ &avr32_syntax_table[AVR32_SYNTAX_FMOV3_S],
1.26308 ++ 2,
1.26309 ++ {
1.26310 ++ AVR32_OPERAND_INTREG,
1.26311 ++ AVR32_OPERAND_FPREG_S,
1.26312 ++ },
1.26313 ++ },
1.26314 ++ {
1.26315 ++ AVR32_SYNTAX_FMOV2_D,
1.26316 ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
1.26317 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_D] },
1.26318 ++ &avr32_syntax_table[AVR32_SYNTAX_FMOV3_D],
1.26319 ++ 2,
1.26320 ++ {
1.26321 ++ AVR32_OPERAND_DWREG,
1.26322 ++ AVR32_OPERAND_FPREG_D,
1.26323 ++ },
1.26324 ++ },
1.26325 ++ {
1.26326 ++ AVR32_SYNTAX_FMOV3_S,
1.26327 ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
1.26328 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_S] }, NULL,
1.26329 ++ 2,
1.26330 ++ {
1.26331 ++ AVR32_OPERAND_FPREG_S,
1.26332 ++ AVR32_OPERAND_INTREG,
1.26333 ++ },
1.26334 ++ },
1.26335 ++ {
1.26336 ++ AVR32_SYNTAX_FMOV3_D,
1.26337 ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
1.26338 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_D] }, NULL,
1.26339 ++ 2,
1.26340 ++ {
1.26341 ++ AVR32_OPERAND_FPREG_D,
1.26342 ++ AVR32_OPERAND_DWREG,
1.26343 ++ },
1.26344 ++ },
1.26345 ++ {
1.26346 ++ AVR32_SYNTAX_FCASTS_D,
1.26347 ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
1.26348 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTS_D] }, NULL,
1.26349 ++ 2,
1.26350 ++ {
1.26351 ++ AVR32_OPERAND_FPREG_S,
1.26352 ++ AVR32_OPERAND_FPREG_D,
1.26353 ++ },
1.26354 ++ },
1.26355 ++ {
1.26356 ++ AVR32_SYNTAX_FCASTD_S,
1.26357 ++ AVR32_FP, NULL, AVR32_PARSER_ALIAS,
1.26358 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTD_S] }, NULL,
1.26359 ++ 2,
1.26360 ++ {
1.26361 ++ AVR32_OPERAND_FPREG_D,
1.26362 ++ AVR32_OPERAND_FPREG_S,
1.26363 ++ },
1.26364 ++ },
1.26365 ++ {
1.26366 ++ AVR32_SYNTAX_LDA_W,
1.26367 ++ AVR32_V1, NULL, AVR32_PARSER_LDA,
1.26368 ++ { NULL }, NULL,
1.26369 ++ 2,
1.26370 ++ {
1.26371 ++ AVR32_OPERAND_INTREG,
1.26372 ++ AVR32_OPERAND_SIGNED_CONST,
1.26373 ++ },
1.26374 ++ },
1.26375 ++ {
1.26376 ++ AVR32_SYNTAX_CALL,
1.26377 ++ AVR32_V1, NULL, AVR32_PARSER_CALL,
1.26378 ++ { NULL }, NULL,
1.26379 ++ 1,
1.26380 ++ {
1.26381 ++ AVR32_OPERAND_JMPLABEL,
1.26382 ++ },
1.26383 ++ },
1.26384 ++ {
1.26385 ++ AVR32_SYNTAX_PICOSVMAC0,
1.26386 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
1.26387 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC0] },
1.26388 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC1], 4,
1.26389 ++ {
1.26390 ++ AVR32_OPERAND_PICO_OUT0,
1.26391 ++ AVR32_OPERAND_PICO_IN,
1.26392 ++ AVR32_OPERAND_PICO_IN,
1.26393 ++ AVR32_OPERAND_PICO_IN,
1.26394 ++ },
1.26395 ++ },
1.26396 ++ {
1.26397 ++ AVR32_SYNTAX_PICOSVMAC1,
1.26398 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
1.26399 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC1] },
1.26400 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC2], 4,
1.26401 ++ {
1.26402 ++ AVR32_OPERAND_PICO_OUT1,
1.26403 ++ AVR32_OPERAND_PICO_IN,
1.26404 ++ AVR32_OPERAND_PICO_IN,
1.26405 ++ AVR32_OPERAND_PICO_IN,
1.26406 ++ },
1.26407 ++ },
1.26408 ++ {
1.26409 ++ AVR32_SYNTAX_PICOSVMAC2,
1.26410 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
1.26411 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC2] },
1.26412 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC3], 4,
1.26413 ++ {
1.26414 ++ AVR32_OPERAND_PICO_OUT2,
1.26415 ++ AVR32_OPERAND_PICO_IN,
1.26416 ++ AVR32_OPERAND_PICO_IN,
1.26417 ++ AVR32_OPERAND_PICO_IN,
1.26418 ++ },
1.26419 ++ },
1.26420 ++ {
1.26421 ++ AVR32_SYNTAX_PICOSVMAC3,
1.26422 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
1.26423 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC3] },
1.26424 ++ NULL, 4,
1.26425 ++ {
1.26426 ++ AVR32_OPERAND_PICO_OUT3,
1.26427 ++ AVR32_OPERAND_PICO_IN,
1.26428 ++ AVR32_OPERAND_PICO_IN,
1.26429 ++ AVR32_OPERAND_PICO_IN,
1.26430 ++ },
1.26431 ++ },
1.26432 ++ {
1.26433 ++ AVR32_SYNTAX_PICOSVMUL0,
1.26434 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
1.26435 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL0] },
1.26436 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL1], 4,
1.26437 ++ {
1.26438 ++ AVR32_OPERAND_PICO_OUT0,
1.26439 ++ AVR32_OPERAND_PICO_IN,
1.26440 ++ AVR32_OPERAND_PICO_IN,
1.26441 ++ AVR32_OPERAND_PICO_IN,
1.26442 ++ },
1.26443 ++ },
1.26444 ++ {
1.26445 ++ AVR32_SYNTAX_PICOSVMUL1,
1.26446 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
1.26447 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL1] },
1.26448 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL2], 4,
1.26449 ++ {
1.26450 ++ AVR32_OPERAND_PICO_OUT1,
1.26451 ++ AVR32_OPERAND_PICO_IN,
1.26452 ++ AVR32_OPERAND_PICO_IN,
1.26453 ++ AVR32_OPERAND_PICO_IN,
1.26454 ++ },
1.26455 ++ },
1.26456 ++ {
1.26457 ++ AVR32_SYNTAX_PICOSVMUL2,
1.26458 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
1.26459 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL2] },
1.26460 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL3], 4,
1.26461 ++ {
1.26462 ++ AVR32_OPERAND_PICO_OUT2,
1.26463 ++ AVR32_OPERAND_PICO_IN,
1.26464 ++ AVR32_OPERAND_PICO_IN,
1.26465 ++ AVR32_OPERAND_PICO_IN,
1.26466 ++ },
1.26467 ++ },
1.26468 ++ {
1.26469 ++ AVR32_SYNTAX_PICOSVMUL3,
1.26470 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
1.26471 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL3] },
1.26472 ++ NULL, 4,
1.26473 ++ {
1.26474 ++ AVR32_OPERAND_PICO_OUT3,
1.26475 ++ AVR32_OPERAND_PICO_IN,
1.26476 ++ AVR32_OPERAND_PICO_IN,
1.26477 ++ AVR32_OPERAND_PICO_IN,
1.26478 ++ },
1.26479 ++ },
1.26480 ++ {
1.26481 ++ AVR32_SYNTAX_PICOVMAC0,
1.26482 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
1.26483 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC0] },
1.26484 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC1], 4,
1.26485 ++ {
1.26486 ++ AVR32_OPERAND_PICO_OUT0,
1.26487 ++ AVR32_OPERAND_PICO_IN,
1.26488 ++ AVR32_OPERAND_PICO_IN,
1.26489 ++ AVR32_OPERAND_PICO_IN,
1.26490 ++ },
1.26491 ++ },
1.26492 ++ {
1.26493 ++ AVR32_SYNTAX_PICOVMAC1,
1.26494 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
1.26495 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC1] },
1.26496 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC2], 4,
1.26497 ++ {
1.26498 ++ AVR32_OPERAND_PICO_OUT1,
1.26499 ++ AVR32_OPERAND_PICO_IN,
1.26500 ++ AVR32_OPERAND_PICO_IN,
1.26501 ++ AVR32_OPERAND_PICO_IN,
1.26502 ++ },
1.26503 ++ },
1.26504 ++ {
1.26505 ++ AVR32_SYNTAX_PICOVMAC2,
1.26506 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
1.26507 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC2] },
1.26508 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC3], 4,
1.26509 ++ {
1.26510 ++ AVR32_OPERAND_PICO_OUT2,
1.26511 ++ AVR32_OPERAND_PICO_IN,
1.26512 ++ AVR32_OPERAND_PICO_IN,
1.26513 ++ AVR32_OPERAND_PICO_IN,
1.26514 ++ },
1.26515 ++ },
1.26516 ++ {
1.26517 ++ AVR32_SYNTAX_PICOVMAC3,
1.26518 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
1.26519 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC3] },
1.26520 ++ NULL, 4,
1.26521 ++ {
1.26522 ++ AVR32_OPERAND_PICO_OUT3,
1.26523 ++ AVR32_OPERAND_PICO_IN,
1.26524 ++ AVR32_OPERAND_PICO_IN,
1.26525 ++ AVR32_OPERAND_PICO_IN,
1.26526 ++ },
1.26527 ++ },
1.26528 ++ {
1.26529 ++ AVR32_SYNTAX_PICOVMUL0,
1.26530 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
1.26531 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL0] },
1.26532 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL1], 4,
1.26533 ++ {
1.26534 ++ AVR32_OPERAND_PICO_OUT0,
1.26535 ++ AVR32_OPERAND_PICO_IN,
1.26536 ++ AVR32_OPERAND_PICO_IN,
1.26537 ++ AVR32_OPERAND_PICO_IN,
1.26538 ++ },
1.26539 ++ },
1.26540 ++ {
1.26541 ++ AVR32_SYNTAX_PICOVMUL1,
1.26542 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
1.26543 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL1] },
1.26544 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL2], 4,
1.26545 ++ {
1.26546 ++ AVR32_OPERAND_PICO_OUT1,
1.26547 ++ AVR32_OPERAND_PICO_IN,
1.26548 ++ AVR32_OPERAND_PICO_IN,
1.26549 ++ AVR32_OPERAND_PICO_IN,
1.26550 ++ },
1.26551 ++ },
1.26552 ++ {
1.26553 ++ AVR32_SYNTAX_PICOVMUL2,
1.26554 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
1.26555 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL2] },
1.26556 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL3], 4,
1.26557 ++ {
1.26558 ++ AVR32_OPERAND_PICO_OUT2,
1.26559 ++ AVR32_OPERAND_PICO_IN,
1.26560 ++ AVR32_OPERAND_PICO_IN,
1.26561 ++ AVR32_OPERAND_PICO_IN,
1.26562 ++ },
1.26563 ++ },
1.26564 ++ {
1.26565 ++ AVR32_SYNTAX_PICOVMUL3,
1.26566 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
1.26567 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL3] },
1.26568 ++ NULL, 4,
1.26569 ++ {
1.26570 ++ AVR32_OPERAND_PICO_OUT3,
1.26571 ++ AVR32_OPERAND_PICO_IN,
1.26572 ++ AVR32_OPERAND_PICO_IN,
1.26573 ++ AVR32_OPERAND_PICO_IN,
1.26574 ++ },
1.26575 ++ },
1.26576 ++ {
1.26577 ++ AVR32_SYNTAX_PICOLD_D2,
1.26578 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
1.26579 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D2] },
1.26580 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D3], 2,
1.26581 ++ {
1.26582 ++ AVR32_OPERAND_PICO_REG_D,
1.26583 ++ AVR32_OPERAND_INTREG_PREDEC,
1.26584 ++ },
1.26585 ++ },
1.26586 ++ {
1.26587 ++ AVR32_SYNTAX_PICOLD_D3,
1.26588 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
1.26589 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D3] },
1.26590 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D1], 2,
1.26591 ++ {
1.26592 ++ AVR32_OPERAND_PICO_REG_D,
1.26593 ++ AVR32_OPERAND_INTREG_INDEX,
1.26594 ++ },
1.26595 ++ },
1.26596 ++ {
1.26597 ++ AVR32_SYNTAX_PICOLD_D1,
1.26598 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
1.26599 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D1] },
1.26600 ++ NULL, 2,
1.26601 ++ {
1.26602 ++ AVR32_OPERAND_PICO_REG_D,
1.26603 ++ AVR32_OPERAND_INTREG_UDISP_W,
1.26604 ++ },
1.26605 ++ },
1.26606 ++ {
1.26607 ++ AVR32_SYNTAX_PICOLD_W2,
1.26608 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
1.26609 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W2] },
1.26610 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W3], 2,
1.26611 ++ {
1.26612 ++ AVR32_OPERAND_PICO_REG_W,
1.26613 ++ AVR32_OPERAND_INTREG_PREDEC,
1.26614 ++ },
1.26615 ++ },
1.26616 ++ {
1.26617 ++ AVR32_SYNTAX_PICOLD_W3,
1.26618 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
1.26619 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W3] },
1.26620 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W1], 2,
1.26621 ++ {
1.26622 ++ AVR32_OPERAND_PICO_REG_W,
1.26623 ++ AVR32_OPERAND_INTREG_INDEX,
1.26624 ++ },
1.26625 ++ },
1.26626 ++ {
1.26627 ++ AVR32_SYNTAX_PICOLD_W1,
1.26628 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
1.26629 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W1] },
1.26630 ++ NULL, 2,
1.26631 ++ {
1.26632 ++ AVR32_OPERAND_PICO_REG_W,
1.26633 ++ AVR32_OPERAND_INTREG_UDISP_W,
1.26634 ++ },
1.26635 ++ },
1.26636 ++ {
1.26637 ++ AVR32_SYNTAX_PICOLDM_D,
1.26638 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
1.26639 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D] },
1.26640 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_D_PU], -2,
1.26641 ++ {
1.26642 ++ AVR32_OPERAND_INTREG,
1.26643 ++ AVR32_OPERAND_PICO_REGLIST_D,
1.26644 ++ },
1.26645 ++ },
1.26646 ++ {
1.26647 ++ AVR32_SYNTAX_PICOLDM_D_PU,
1.26648 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
1.26649 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D_PU] },
1.26650 ++ NULL, -2,
1.26651 ++ {
1.26652 ++ AVR32_OPERAND_INTREG_POSTINC,
1.26653 ++ AVR32_OPERAND_PICO_REGLIST_D,
1.26654 ++ },
1.26655 ++ },
1.26656 ++ {
1.26657 ++ AVR32_SYNTAX_PICOLDM_W,
1.26658 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
1.26659 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W] },
1.26660 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_W_PU], -2,
1.26661 ++ {
1.26662 ++ AVR32_OPERAND_INTREG,
1.26663 ++ AVR32_OPERAND_PICO_REGLIST_W,
1.26664 ++ },
1.26665 ++ },
1.26666 ++ {
1.26667 ++ AVR32_SYNTAX_PICOLDM_W_PU,
1.26668 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
1.26669 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W_PU] },
1.26670 ++ NULL, -2,
1.26671 ++ {
1.26672 ++ AVR32_OPERAND_INTREG_POSTINC,
1.26673 ++ AVR32_OPERAND_PICO_REGLIST_W,
1.26674 ++ },
1.26675 ++ },
1.26676 ++ {
1.26677 ++ AVR32_SYNTAX_PICOMV_D1,
1.26678 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
1.26679 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D1] },
1.26680 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOMV_D2], 2,
1.26681 ++ {
1.26682 ++ AVR32_OPERAND_DWREG,
1.26683 ++ AVR32_OPERAND_PICO_REG_D,
1.26684 ++ },
1.26685 ++ },
1.26686 ++ {
1.26687 ++ AVR32_SYNTAX_PICOMV_D2,
1.26688 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
1.26689 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D2] },
1.26690 ++ NULL, 2,
1.26691 ++ {
1.26692 ++ AVR32_OPERAND_PICO_REG_D,
1.26693 ++ AVR32_OPERAND_DWREG,
1.26694 ++ },
1.26695 ++ },
1.26696 ++ {
1.26697 ++ AVR32_SYNTAX_PICOMV_W1,
1.26698 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
1.26699 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W1] },
1.26700 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOMV_W2], 2,
1.26701 ++ {
1.26702 ++ AVR32_OPERAND_INTREG,
1.26703 ++ AVR32_OPERAND_PICO_REG_W,
1.26704 ++ },
1.26705 ++ },
1.26706 ++ {
1.26707 ++ AVR32_SYNTAX_PICOMV_W2,
1.26708 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
1.26709 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W2] },
1.26710 ++ NULL, 2,
1.26711 ++ {
1.26712 ++ AVR32_OPERAND_PICO_REG_W,
1.26713 ++ AVR32_OPERAND_INTREG,
1.26714 ++ },
1.26715 ++ },
1.26716 ++ {
1.26717 ++ AVR32_SYNTAX_PICOST_D2,
1.26718 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
1.26719 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D2] },
1.26720 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOST_D3], 2,
1.26721 ++ {
1.26722 ++ AVR32_OPERAND_INTREG_POSTINC,
1.26723 ++ AVR32_OPERAND_PICO_REG_D,
1.26724 ++ },
1.26725 ++ },
1.26726 ++ {
1.26727 ++ AVR32_SYNTAX_PICOST_D3,
1.26728 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
1.26729 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D3] },
1.26730 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOST_D1], 2,
1.26731 ++ {
1.26732 ++ AVR32_OPERAND_INTREG_INDEX,
1.26733 ++ AVR32_OPERAND_PICO_REG_D,
1.26734 ++ },
1.26735 ++ },
1.26736 ++ {
1.26737 ++ AVR32_SYNTAX_PICOST_D1,
1.26738 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
1.26739 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D1] },
1.26740 ++ NULL, 2,
1.26741 ++ {
1.26742 ++ AVR32_OPERAND_INTREG_UDISP_W,
1.26743 ++ AVR32_OPERAND_PICO_REG_D,
1.26744 ++ },
1.26745 ++ },
1.26746 ++ {
1.26747 ++ AVR32_SYNTAX_PICOST_W2,
1.26748 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
1.26749 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W2] },
1.26750 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOST_W3], 2,
1.26751 ++ {
1.26752 ++ AVR32_OPERAND_INTREG_POSTINC,
1.26753 ++ AVR32_OPERAND_PICO_REG_W,
1.26754 ++ },
1.26755 ++ },
1.26756 ++ {
1.26757 ++ AVR32_SYNTAX_PICOST_W3,
1.26758 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
1.26759 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W3] },
1.26760 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOST_W1], 2,
1.26761 ++ {
1.26762 ++ AVR32_OPERAND_INTREG_INDEX,
1.26763 ++ AVR32_OPERAND_PICO_REG_W,
1.26764 ++ },
1.26765 ++ },
1.26766 ++ {
1.26767 ++ AVR32_SYNTAX_PICOST_W1,
1.26768 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
1.26769 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W1] },
1.26770 ++ NULL, 2,
1.26771 ++ {
1.26772 ++ AVR32_OPERAND_INTREG_UDISP_W,
1.26773 ++ AVR32_OPERAND_PICO_REG_W,
1.26774 ++ },
1.26775 ++ },
1.26776 ++ {
1.26777 ++ AVR32_SYNTAX_PICOSTM_D,
1.26778 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
1.26779 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D] },
1.26780 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_D_PU], -2,
1.26781 ++ {
1.26782 ++ AVR32_OPERAND_INTREG,
1.26783 ++ AVR32_OPERAND_PICO_REGLIST_D,
1.26784 ++ },
1.26785 ++ },
1.26786 ++ {
1.26787 ++ AVR32_SYNTAX_PICOSTM_D_PU,
1.26788 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
1.26789 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D_PU] },
1.26790 ++ NULL, -2,
1.26791 ++ {
1.26792 ++ AVR32_OPERAND_INTREG_PREDEC,
1.26793 ++ AVR32_OPERAND_PICO_REGLIST_D,
1.26794 ++ },
1.26795 ++ },
1.26796 ++ {
1.26797 ++ AVR32_SYNTAX_PICOSTM_W,
1.26798 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
1.26799 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W] },
1.26800 ++ &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_W_PU], -2,
1.26801 ++ {
1.26802 ++ AVR32_OPERAND_INTREG,
1.26803 ++ AVR32_OPERAND_PICO_REGLIST_W,
1.26804 ++ },
1.26805 ++ },
1.26806 ++ {
1.26807 ++ AVR32_SYNTAX_PICOSTM_W_PU,
1.26808 ++ AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
1.26809 ++ { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W_PU] },
1.26810 ++ NULL, -2,
1.26811 ++ {
1.26812 ++ AVR32_OPERAND_INTREG_PREDEC,
1.26813 ++ AVR32_OPERAND_PICO_REGLIST_W,
1.26814 ++ },
1.26815 ++ },
1.26816 ++ SYNTAX_NORMAL2(RSUBEQ, RSUBEQ, RSUBEQ, INTREG, SIGNED_CONST, AVR32_V1),
1.26817 ++ SYNTAX_NORMAL2(RSUBNE, RSUBNE, RSUBNE, INTREG, SIGNED_CONST, AVR32_V2),
1.26818 ++ SYNTAX_NORMAL2(RSUBCC, RSUBCC, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
1.26819 ++ SYNTAX_NORMAL2(RSUBCS, RSUBCS, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
1.26820 ++ SYNTAX_NORMAL2(RSUBGE, RSUBGE, RSUBGE, INTREG, SIGNED_CONST, AVR32_V2),
1.26821 ++ SYNTAX_NORMAL2(RSUBLT, RSUBLT, RSUBLT, INTREG, SIGNED_CONST, AVR32_V2),
1.26822 ++ SYNTAX_NORMAL2(RSUBMI, RSUBMI, RSUBMI, INTREG, SIGNED_CONST, AVR32_V2),
1.26823 ++ SYNTAX_NORMAL2(RSUBPL, RSUBPL, RSUBPL, INTREG, SIGNED_CONST, AVR32_V2),
1.26824 ++ SYNTAX_NORMAL2(RSUBLS, RSUBLS, RSUBLS, INTREG, SIGNED_CONST, AVR32_V2),
1.26825 ++ SYNTAX_NORMAL2(RSUBGT, RSUBGT, RSUBGT, INTREG, SIGNED_CONST, AVR32_V2),
1.26826 ++ SYNTAX_NORMAL2(RSUBLE, RSUBLE, RSUBLE, INTREG, SIGNED_CONST, AVR32_V2),
1.26827 ++ SYNTAX_NORMAL2(RSUBHI, RSUBHI, RSUBHI, INTREG, SIGNED_CONST, AVR32_V2),
1.26828 ++ SYNTAX_NORMAL2(RSUBVS, RSUBVS, RSUBVS, INTREG, SIGNED_CONST, AVR32_V2),
1.26829 ++ SYNTAX_NORMAL2(RSUBVC, RSUBVC, RSUBVC, INTREG, SIGNED_CONST, AVR32_V2),
1.26830 ++ SYNTAX_NORMAL2(RSUBQS, RSUBQS, RSUBQS, INTREG, SIGNED_CONST, AVR32_V2),
1.26831 ++ SYNTAX_NORMAL2(RSUBAL, RSUBAL, RSUBAL, INTREG, SIGNED_CONST, AVR32_V2),
1.26832 ++ SYNTAX_NORMAL2(RSUBHS, RSUBHS, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
1.26833 ++ SYNTAX_NORMAL2(RSUBLO, RSUBLO, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
1.26834 ++ SYNTAX_NORMAL3(ADDEQ, ADDEQ, ADDEQ, INTREG, INTREG, INTREG, AVR32_V2),
1.26835 ++ SYNTAX_NORMAL3(ADDNE, ADDNE, ADDNE, INTREG, INTREG, INTREG, AVR32_V2),
1.26836 ++ SYNTAX_NORMAL3(ADDCC, ADDCC, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
1.26837 ++ SYNTAX_NORMAL3(ADDCS, ADDCS, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
1.26838 ++ SYNTAX_NORMAL3(ADDGE, ADDGE, ADDGE, INTREG, INTREG, INTREG, AVR32_V2),
1.26839 ++ SYNTAX_NORMAL3(ADDLT, ADDLT, ADDLT, INTREG, INTREG, INTREG, AVR32_V2),
1.26840 ++ SYNTAX_NORMAL3(ADDMI, ADDMI, ADDMI, INTREG, INTREG, INTREG, AVR32_V2),
1.26841 ++ SYNTAX_NORMAL3(ADDPL, ADDPL, ADDPL, INTREG, INTREG, INTREG, AVR32_V2),
1.26842 ++ SYNTAX_NORMAL3(ADDLS, ADDLS, ADDLS, INTREG, INTREG, INTREG, AVR32_V2),
1.26843 ++ SYNTAX_NORMAL3(ADDGT, ADDGT, ADDGT, INTREG, INTREG, INTREG, AVR32_V2),
1.26844 ++ SYNTAX_NORMAL3(ADDLE, ADDLE, ADDLE, INTREG, INTREG, INTREG, AVR32_V2),
1.26845 ++ SYNTAX_NORMAL3(ADDHI, ADDHI, ADDHI, INTREG, INTREG, INTREG, AVR32_V2),
1.26846 ++ SYNTAX_NORMAL3(ADDVS, ADDVS, ADDVS, INTREG, INTREG, INTREG, AVR32_V2),
1.26847 ++ SYNTAX_NORMAL3(ADDVC, ADDVC, ADDVC, INTREG, INTREG, INTREG, AVR32_V2),
1.26848 ++ SYNTAX_NORMAL3(ADDQS, ADDQS, ADDQS, INTREG, INTREG, INTREG, AVR32_V2),
1.26849 ++ SYNTAX_NORMAL3(ADDAL, ADDAL, ADDAL, INTREG, INTREG, INTREG, AVR32_V2),
1.26850 ++ SYNTAX_NORMAL3(ADDHS, ADDHS, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
1.26851 ++ SYNTAX_NORMAL3(ADDLO, ADDLO, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
1.26852 ++ SYNTAX_NORMAL3(SUB2EQ, SUBEQ, SUB2EQ, INTREG, INTREG, INTREG, AVR32_V2),
1.26853 ++ SYNTAX_NORMAL3(SUB2NE, SUBNE, SUB2NE, INTREG, INTREG, INTREG, AVR32_V2),
1.26854 ++ SYNTAX_NORMAL3(SUB2CC, SUBCC, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
1.26855 ++ SYNTAX_NORMAL3(SUB2CS, SUBCS, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
1.26856 ++ SYNTAX_NORMAL3(SUB2GE, SUBGE, SUB2GE, INTREG, INTREG, INTREG, AVR32_V2),
1.26857 ++ SYNTAX_NORMAL3(SUB2LT, SUBLT, SUB2LT, INTREG, INTREG, INTREG, AVR32_V2),
1.26858 ++ SYNTAX_NORMAL3(SUB2MI, SUBMI, SUB2MI, INTREG, INTREG, INTREG, AVR32_V2),
1.26859 ++ SYNTAX_NORMAL3(SUB2PL, SUBPL, SUB2PL, INTREG, INTREG, INTREG, AVR32_V2),
1.26860 ++ SYNTAX_NORMAL3(SUB2LS, SUBLS, SUB2LS, INTREG, INTREG, INTREG, AVR32_V2),
1.26861 ++ SYNTAX_NORMAL3(SUB2GT, SUBGT, SUB2GT, INTREG, INTREG, INTREG, AVR32_V2),
1.26862 ++ SYNTAX_NORMAL3(SUB2LE, SUBLE, SUB2LE, INTREG, INTREG, INTREG, AVR32_V2),
1.26863 ++ SYNTAX_NORMAL3(SUB2HI, SUBHI, SUB2HI, INTREG, INTREG, INTREG, AVR32_V2),
1.26864 ++ SYNTAX_NORMAL3(SUB2VS, SUBVS, SUB2VS, INTREG, INTREG, INTREG, AVR32_V2),
1.26865 ++ SYNTAX_NORMAL3(SUB2VC, SUBVC, SUB2VC, INTREG, INTREG, INTREG, AVR32_V2),
1.26866 ++ SYNTAX_NORMAL3(SUB2QS, SUBQS, SUB2QS, INTREG, INTREG, INTREG, AVR32_V2),
1.26867 ++ SYNTAX_NORMAL3(SUB2AL, SUBAL, SUB2AL, INTREG, INTREG, INTREG, AVR32_V2),
1.26868 ++ SYNTAX_NORMAL3(SUB2HS, SUBHS, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
1.26869 ++ SYNTAX_NORMAL3(SUB2LO, SUBLO, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
1.26870 ++ SYNTAX_NORMAL3(ANDEQ, ANDEQ, ANDEQ, INTREG, INTREG, INTREG, AVR32_V2),
1.26871 ++ SYNTAX_NORMAL3(ANDNE, ANDNE, ANDNE, INTREG, INTREG, INTREG, AVR32_V2),
1.26872 ++ SYNTAX_NORMAL3(ANDCC, ANDCC, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
1.26873 ++ SYNTAX_NORMAL3(ANDCS, ANDCS, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
1.26874 ++ SYNTAX_NORMAL3(ANDGE, ANDGE, ANDGE, INTREG, INTREG, INTREG, AVR32_V2),
1.26875 ++ SYNTAX_NORMAL3(ANDLT, ANDLT, ANDLT, INTREG, INTREG, INTREG, AVR32_V2),
1.26876 ++ SYNTAX_NORMAL3(ANDMI, ANDMI, ANDMI, INTREG, INTREG, INTREG, AVR32_V2),
1.26877 ++ SYNTAX_NORMAL3(ANDPL, ANDPL, ANDPL, INTREG, INTREG, INTREG, AVR32_V2),
1.26878 ++ SYNTAX_NORMAL3(ANDLS, ANDLS, ANDLS, INTREG, INTREG, INTREG, AVR32_V2),
1.26879 ++ SYNTAX_NORMAL3(ANDGT, ANDGT, ANDGT, INTREG, INTREG, INTREG, AVR32_V2),
1.26880 ++ SYNTAX_NORMAL3(ANDLE, ANDLE, ANDLE, INTREG, INTREG, INTREG, AVR32_V2),
1.26881 ++ SYNTAX_NORMAL3(ANDHI, ANDHI, ANDHI, INTREG, INTREG, INTREG, AVR32_V2),
1.26882 ++ SYNTAX_NORMAL3(ANDVS, ANDVS, ANDVS, INTREG, INTREG, INTREG, AVR32_V2),
1.26883 ++ SYNTAX_NORMAL3(ANDVC, ANDVC, ANDVC, INTREG, INTREG, INTREG, AVR32_V2),
1.26884 ++ SYNTAX_NORMAL3(ANDQS, ANDQS, ANDQS, INTREG, INTREG, INTREG, AVR32_V2),
1.26885 ++ SYNTAX_NORMAL3(ANDAL, ANDAL, ANDAL, INTREG, INTREG, INTREG, AVR32_V2),
1.26886 ++ SYNTAX_NORMAL3(ANDHS, ANDHS, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
1.26887 ++ SYNTAX_NORMAL3(ANDLO, ANDLO, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
1.26888 ++ SYNTAX_NORMAL3(OREQ, OREQ, OREQ, INTREG, INTREG, INTREG, AVR32_V2),
1.26889 ++ SYNTAX_NORMAL3(ORNE, ORNE, ORNE, INTREG, INTREG, INTREG, AVR32_V2),
1.26890 ++ SYNTAX_NORMAL3(ORCC, ORCC, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
1.26891 ++ SYNTAX_NORMAL3(ORCS, ORCS, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
1.26892 ++ SYNTAX_NORMAL3(ORGE, ORGE, ORGE, INTREG, INTREG, INTREG, AVR32_V2),
1.26893 ++ SYNTAX_NORMAL3(ORLT, ORLT, ORLT, INTREG, INTREG, INTREG, AVR32_V2),
1.26894 ++ SYNTAX_NORMAL3(ORMI, ORMI, ORMI, INTREG, INTREG, INTREG, AVR32_V2),
1.26895 ++ SYNTAX_NORMAL3(ORPL, ORPL, ORPL, INTREG, INTREG, INTREG, AVR32_V2),
1.26896 ++ SYNTAX_NORMAL3(ORLS, ORLS, ORLS, INTREG, INTREG, INTREG, AVR32_V2),
1.26897 ++ SYNTAX_NORMAL3(ORGT, ORGT, ORGT, INTREG, INTREG, INTREG, AVR32_V2),
1.26898 ++ SYNTAX_NORMAL3(ORLE, ORLE, ORLE, INTREG, INTREG, INTREG, AVR32_V2),
1.26899 ++ SYNTAX_NORMAL3(ORHI, ORHI, ORHI, INTREG, INTREG, INTREG, AVR32_V2),
1.26900 ++ SYNTAX_NORMAL3(ORVS, ORVS, ORVS, INTREG, INTREG, INTREG, AVR32_V2),
1.26901 ++ SYNTAX_NORMAL3(ORVC, ORVC, ORVC, INTREG, INTREG, INTREG, AVR32_V2),
1.26902 ++ SYNTAX_NORMAL3(ORQS, ORQS, ORQS, INTREG, INTREG, INTREG, AVR32_V2),
1.26903 ++ SYNTAX_NORMAL3(ORAL, ORAL, ORAL, INTREG, INTREG, INTREG, AVR32_V2),
1.26904 ++ SYNTAX_NORMAL3(ORHS, ORHS, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
1.26905 ++ SYNTAX_NORMAL3(ORLO, ORLO, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
1.26906 ++ SYNTAX_NORMAL3(EOREQ, EOREQ, EOREQ, INTREG, INTREG, INTREG, AVR32_V2),
1.26907 ++ SYNTAX_NORMAL3(EORNE, EORNE, EORNE, INTREG, INTREG, INTREG, AVR32_V2),
1.26908 ++ SYNTAX_NORMAL3(EORCC, EORCC, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
1.26909 ++ SYNTAX_NORMAL3(EORCS, EORCS, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
1.26910 ++ SYNTAX_NORMAL3(EORGE, EORGE, EORGE, INTREG, INTREG, INTREG, AVR32_V2),
1.26911 ++ SYNTAX_NORMAL3(EORLT, EORLT, EORLT, INTREG, INTREG, INTREG, AVR32_V2),
1.26912 ++ SYNTAX_NORMAL3(EORMI, EORMI, EORMI, INTREG, INTREG, INTREG, AVR32_V2),
1.26913 ++ SYNTAX_NORMAL3(EORPL, EORPL, EORPL, INTREG, INTREG, INTREG, AVR32_V2),
1.26914 ++ SYNTAX_NORMAL3(EORLS, EORLS, EORLS, INTREG, INTREG, INTREG, AVR32_V2),
1.26915 ++ SYNTAX_NORMAL3(EORGT, EORGT, EORGT, INTREG, INTREG, INTREG, AVR32_V2),
1.26916 ++ SYNTAX_NORMAL3(EORLE, EORLE, EORLE, INTREG, INTREG, INTREG, AVR32_V2),
1.26917 ++ SYNTAX_NORMAL3(EORHI, EORHI, EORHI, INTREG, INTREG, INTREG, AVR32_V2),
1.26918 ++ SYNTAX_NORMAL3(EORVS, EORVS, EORVS, INTREG, INTREG, INTREG, AVR32_V2),
1.26919 ++ SYNTAX_NORMAL3(EORVC, EORVC, EORVC, INTREG, INTREG, INTREG, AVR32_V2),
1.26920 ++ SYNTAX_NORMAL3(EORQS, EORQS, EORQS, INTREG, INTREG, INTREG, AVR32_V2),
1.26921 ++ SYNTAX_NORMAL3(EORAL, EORAL, EORAL, INTREG, INTREG, INTREG, AVR32_V2),
1.26922 ++ SYNTAX_NORMAL3(EORHS, EORHS, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
1.26923 ++ SYNTAX_NORMAL3(EORLO, EORLO, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
1.26924 ++ SYNTAX_NORMAL2(LD_WEQ, LD_WEQ, LD_WEQ, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26925 ++ SYNTAX_NORMAL2(LD_WNE, LD_WNE, LD_WNE, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26926 ++ SYNTAX_NORMAL2(LD_WCC, LD_WCC, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26927 ++ SYNTAX_NORMAL2(LD_WCS, LD_WCS, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26928 ++ SYNTAX_NORMAL2(LD_WGE, LD_WGE, LD_WGE, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26929 ++ SYNTAX_NORMAL2(LD_WLT, LD_WLT, LD_WLT, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26930 ++ SYNTAX_NORMAL2(LD_WMI, LD_WMI, LD_WMI, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26931 ++ SYNTAX_NORMAL2(LD_WPL, LD_WPL, LD_WPL, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26932 ++ SYNTAX_NORMAL2(LD_WLS, LD_WLS, LD_WLS, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26933 ++ SYNTAX_NORMAL2(LD_WGT, LD_WGT, LD_WGT, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26934 ++ SYNTAX_NORMAL2(LD_WLE, LD_WLE, LD_WLE, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26935 ++ SYNTAX_NORMAL2(LD_WHI, LD_WHI, LD_WHI, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26936 ++ SYNTAX_NORMAL2(LD_WVS, LD_WVS, LD_WVS, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26937 ++ SYNTAX_NORMAL2(LD_WVC, LD_WVC, LD_WVC, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26938 ++ SYNTAX_NORMAL2(LD_WQS, LD_WQS, LD_WQS, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26939 ++ SYNTAX_NORMAL2(LD_WAL, LD_WAL, LD_WAL, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26940 ++ SYNTAX_NORMAL2(LD_WHS, LD_WHS, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26941 ++ SYNTAX_NORMAL2(LD_WLO, LD_WLO, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
1.26942 ++ SYNTAX_NORMAL2(LD_SHEQ, LD_SHEQ, LD_SHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26943 ++ SYNTAX_NORMAL2(LD_SHNE, LD_SHNE, LD_SHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26944 ++ SYNTAX_NORMAL2(LD_SHCC, LD_SHCC, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26945 ++ SYNTAX_NORMAL2(LD_SHCS, LD_SHCS, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26946 ++ SYNTAX_NORMAL2(LD_SHGE, LD_SHGE, LD_SHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26947 ++ SYNTAX_NORMAL2(LD_SHLT, LD_SHLT, LD_SHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26948 ++ SYNTAX_NORMAL2(LD_SHMI, LD_SHMI, LD_SHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26949 ++ SYNTAX_NORMAL2(LD_SHPL, LD_SHPL, LD_SHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26950 ++ SYNTAX_NORMAL2(LD_SHLS, LD_SHLS, LD_SHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26951 ++ SYNTAX_NORMAL2(LD_SHGT, LD_SHGT, LD_SHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26952 ++ SYNTAX_NORMAL2(LD_SHLE, LD_SHLE, LD_SHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26953 ++ SYNTAX_NORMAL2(LD_SHHI, LD_SHHI, LD_SHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26954 ++ SYNTAX_NORMAL2(LD_SHVS, LD_SHVS, LD_SHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26955 ++ SYNTAX_NORMAL2(LD_SHVC, LD_SHVC, LD_SHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26956 ++ SYNTAX_NORMAL2(LD_SHQS, LD_SHQS, LD_SHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26957 ++ SYNTAX_NORMAL2(LD_SHAL, LD_SHAL, LD_SHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26958 ++ SYNTAX_NORMAL2(LD_SHHS, LD_SHHS, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26959 ++ SYNTAX_NORMAL2(LD_SHLO, LD_SHLO, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26960 ++ SYNTAX_NORMAL2(LD_UHEQ, LD_UHEQ, LD_UHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26961 ++ SYNTAX_NORMAL2(LD_UHNE, LD_UHNE, LD_UHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26962 ++ SYNTAX_NORMAL2(LD_UHCC, LD_UHCC, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26963 ++ SYNTAX_NORMAL2(LD_UHCS, LD_UHCS, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26964 ++ SYNTAX_NORMAL2(LD_UHGE, LD_UHGE, LD_UHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26965 ++ SYNTAX_NORMAL2(LD_UHLT, LD_UHLT, LD_UHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26966 ++ SYNTAX_NORMAL2(LD_UHMI, LD_UHMI, LD_UHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26967 ++ SYNTAX_NORMAL2(LD_UHPL, LD_UHPL, LD_UHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26968 ++ SYNTAX_NORMAL2(LD_UHLS, LD_UHLS, LD_UHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26969 ++ SYNTAX_NORMAL2(LD_UHGT, LD_UHGT, LD_UHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26970 ++ SYNTAX_NORMAL2(LD_UHLE, LD_UHLE, LD_UHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26971 ++ SYNTAX_NORMAL2(LD_UHHI, LD_UHHI, LD_UHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26972 ++ SYNTAX_NORMAL2(LD_UHVS, LD_UHVS, LD_UHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26973 ++ SYNTAX_NORMAL2(LD_UHVC, LD_UHVC, LD_UHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26974 ++ SYNTAX_NORMAL2(LD_UHQS, LD_UHQS, LD_UHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26975 ++ SYNTAX_NORMAL2(LD_UHAL, LD_UHAL, LD_UHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26976 ++ SYNTAX_NORMAL2(LD_UHHS, LD_UHHS, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26977 ++ SYNTAX_NORMAL2(LD_UHLO, LD_UHLO, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
1.26978 ++ SYNTAX_NORMAL2(LD_SBEQ, LD_SBEQ, LD_SBEQ, INTREG, INTREG_UDISP, AVR32_V2),
1.26979 ++ SYNTAX_NORMAL2(LD_SBNE, LD_SBNE, LD_SBNE, INTREG, INTREG_UDISP, AVR32_V2),
1.26980 ++ SYNTAX_NORMAL2(LD_SBCC, LD_SBCC, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
1.26981 ++ SYNTAX_NORMAL2(LD_SBCS, LD_SBCS, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
1.26982 ++ SYNTAX_NORMAL2(LD_SBGE, LD_SBGE, LD_SBGE, INTREG, INTREG_UDISP, AVR32_V2),
1.26983 ++ SYNTAX_NORMAL2(LD_SBLT, LD_SBLT, LD_SBLT, INTREG, INTREG_UDISP, AVR32_V2),
1.26984 ++ SYNTAX_NORMAL2(LD_SBMI, LD_SBMI, LD_SBMI, INTREG, INTREG_UDISP, AVR32_V2),
1.26985 ++ SYNTAX_NORMAL2(LD_SBPL, LD_SBPL, LD_SBPL, INTREG, INTREG_UDISP, AVR32_V2),
1.26986 ++ SYNTAX_NORMAL2(LD_SBLS, LD_SBLS, LD_SBLS, INTREG, INTREG_UDISP, AVR32_V2),
1.26987 ++ SYNTAX_NORMAL2(LD_SBGT, LD_SBGT, LD_SBGT, INTREG, INTREG_UDISP, AVR32_V2),
1.26988 ++ SYNTAX_NORMAL2(LD_SBLE, LD_SBLE, LD_SBLE, INTREG, INTREG_UDISP, AVR32_V2),
1.26989 ++ SYNTAX_NORMAL2(LD_SBHI, LD_SBHI, LD_SBHI, INTREG, INTREG_UDISP, AVR32_V2),
1.26990 ++ SYNTAX_NORMAL2(LD_SBVS, LD_SBVS, LD_SBVS, INTREG, INTREG_UDISP, AVR32_V2),
1.26991 ++ SYNTAX_NORMAL2(LD_SBVC, LD_SBVC, LD_SBVC, INTREG, INTREG_UDISP, AVR32_V2),
1.26992 ++ SYNTAX_NORMAL2(LD_SBQS, LD_SBQS, LD_SBQS, INTREG, INTREG_UDISP, AVR32_V2),
1.26993 ++ SYNTAX_NORMAL2(LD_SBAL, LD_SBAL, LD_SBAL, INTREG, INTREG_UDISP, AVR32_V2),
1.26994 ++ SYNTAX_NORMAL2(LD_SBHS, LD_SBHS, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
1.26995 ++ SYNTAX_NORMAL2(LD_SBLO, LD_SBLO, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
1.26996 ++ SYNTAX_NORMAL2(LD_UBEQ, LD_UBEQ, LD_UBEQ, INTREG, INTREG_UDISP, AVR32_V2),
1.26997 ++ SYNTAX_NORMAL2(LD_UBNE, LD_UBNE, LD_UBNE, INTREG, INTREG_UDISP, AVR32_V2),
1.26998 ++ SYNTAX_NORMAL2(LD_UBCC, LD_UBCC, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
1.26999 ++ SYNTAX_NORMAL2(LD_UBCS, LD_UBCS, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
1.27000 ++ SYNTAX_NORMAL2(LD_UBGE, LD_UBGE, LD_UBGE, INTREG, INTREG_UDISP, AVR32_V2),
1.27001 ++ SYNTAX_NORMAL2(LD_UBLT, LD_UBLT, LD_UBLT, INTREG, INTREG_UDISP, AVR32_V2),
1.27002 ++ SYNTAX_NORMAL2(LD_UBMI, LD_UBMI, LD_UBMI, INTREG, INTREG_UDISP, AVR32_V2),
1.27003 ++ SYNTAX_NORMAL2(LD_UBPL, LD_UBPL, LD_UBPL, INTREG, INTREG_UDISP, AVR32_V2),
1.27004 ++ SYNTAX_NORMAL2(LD_UBLS, LD_UBLS, LD_UBLS, INTREG, INTREG_UDISP, AVR32_V2),
1.27005 ++ SYNTAX_NORMAL2(LD_UBGT, LD_UBGT, LD_UBGT, INTREG, INTREG_UDISP, AVR32_V2),
1.27006 ++ SYNTAX_NORMAL2(LD_UBLE, LD_UBLE, LD_UBLE, INTREG, INTREG_UDISP, AVR32_V2),
1.27007 ++ SYNTAX_NORMAL2(LD_UBHI, LD_UBHI, LD_UBHI, INTREG, INTREG_UDISP, AVR32_V2),
1.27008 ++ SYNTAX_NORMAL2(LD_UBVS, LD_UBVS, LD_UBVS, INTREG, INTREG_UDISP, AVR32_V2),
1.27009 ++ SYNTAX_NORMAL2(LD_UBVC, LD_UBVC, LD_UBVC, INTREG, INTREG_UDISP, AVR32_V2),
1.27010 ++ SYNTAX_NORMAL2(LD_UBQS, LD_UBQS, LD_UBQS, INTREG, INTREG_UDISP, AVR32_V2),
1.27011 ++ SYNTAX_NORMAL2(LD_UBAL, LD_UBAL, LD_UBAL, INTREG, INTREG_UDISP, AVR32_V2),
1.27012 ++ SYNTAX_NORMAL2(LD_UBHS, LD_UBHS, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
1.27013 ++ SYNTAX_NORMAL2(LD_UBLO, LD_UBLO, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
1.27014 ++ SYNTAX_NORMAL2(ST_WEQ, ST_WEQ, ST_WEQ, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27015 ++ SYNTAX_NORMAL2(ST_WNE, ST_WNE, ST_WNE, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27016 ++ SYNTAX_NORMAL2(ST_WCC, ST_WCC, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27017 ++ SYNTAX_NORMAL2(ST_WCS, ST_WCS, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27018 ++ SYNTAX_NORMAL2(ST_WGE, ST_WGE, ST_WGE, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27019 ++ SYNTAX_NORMAL2(ST_WLT, ST_WLT, ST_WLT, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27020 ++ SYNTAX_NORMAL2(ST_WMI, ST_WMI, ST_WMI, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27021 ++ SYNTAX_NORMAL2(ST_WPL, ST_WPL, ST_WPL, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27022 ++ SYNTAX_NORMAL2(ST_WLS, ST_WLS, ST_WLS, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27023 ++ SYNTAX_NORMAL2(ST_WGT, ST_WGT, ST_WGT, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27024 ++ SYNTAX_NORMAL2(ST_WLE, ST_WLE, ST_WLE, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27025 ++ SYNTAX_NORMAL2(ST_WHI, ST_WHI, ST_WHI, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27026 ++ SYNTAX_NORMAL2(ST_WVS, ST_WVS, ST_WVS, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27027 ++ SYNTAX_NORMAL2(ST_WVC, ST_WVC, ST_WVC, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27028 ++ SYNTAX_NORMAL2(ST_WQS, ST_WQS, ST_WQS, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27029 ++ SYNTAX_NORMAL2(ST_WAL, ST_WAL, ST_WAL, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27030 ++ SYNTAX_NORMAL2(ST_WHS, ST_WHS, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27031 ++ SYNTAX_NORMAL2(ST_WLO, ST_WLO, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
1.27032 ++ SYNTAX_NORMAL2(ST_HEQ, ST_HEQ, ST_HEQ, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27033 ++ SYNTAX_NORMAL2(ST_HNE, ST_HNE, ST_HNE, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27034 ++ SYNTAX_NORMAL2(ST_HCC, ST_HCC, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27035 ++ SYNTAX_NORMAL2(ST_HCS, ST_HCS, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27036 ++ SYNTAX_NORMAL2(ST_HGE, ST_HGE, ST_HGE, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27037 ++ SYNTAX_NORMAL2(ST_HLT, ST_HLT, ST_HLT, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27038 ++ SYNTAX_NORMAL2(ST_HMI, ST_HMI, ST_HMI, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27039 ++ SYNTAX_NORMAL2(ST_HPL, ST_HPL, ST_HPL, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27040 ++ SYNTAX_NORMAL2(ST_HLS, ST_HLS, ST_HLS, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27041 ++ SYNTAX_NORMAL2(ST_HGT, ST_HGT, ST_HGT, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27042 ++ SYNTAX_NORMAL2(ST_HLE, ST_HLE, ST_HLE, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27043 ++ SYNTAX_NORMAL2(ST_HHI, ST_HHI, ST_HHI, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27044 ++ SYNTAX_NORMAL2(ST_HVS, ST_HVS, ST_HVS, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27045 ++ SYNTAX_NORMAL2(ST_HVC, ST_HVC, ST_HVC, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27046 ++ SYNTAX_NORMAL2(ST_HQS, ST_HQS, ST_HQS, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27047 ++ SYNTAX_NORMAL2(ST_HAL, ST_HAL, ST_HAL, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27048 ++ SYNTAX_NORMAL2(ST_HHS, ST_HHS, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27049 ++ SYNTAX_NORMAL2(ST_HLO, ST_HLO, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
1.27050 ++ SYNTAX_NORMAL2(ST_BEQ, ST_BEQ, ST_BEQ, INTREG_UDISP, INTREG, AVR32_V2),
1.27051 ++ SYNTAX_NORMAL2(ST_BNE, ST_BNE, ST_BNE, INTREG_UDISP, INTREG, AVR32_V2),
1.27052 ++ SYNTAX_NORMAL2(ST_BCC, ST_BCC, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
1.27053 ++ SYNTAX_NORMAL2(ST_BCS, ST_BCS, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
1.27054 ++ SYNTAX_NORMAL2(ST_BGE, ST_BGE, ST_BGE, INTREG_UDISP, INTREG, AVR32_V2),
1.27055 ++ SYNTAX_NORMAL2(ST_BLT, ST_BLT, ST_BLT, INTREG_UDISP, INTREG, AVR32_V2),
1.27056 ++ SYNTAX_NORMAL2(ST_BMI, ST_BMI, ST_BMI, INTREG_UDISP, INTREG, AVR32_V2),
1.27057 ++ SYNTAX_NORMAL2(ST_BPL, ST_BPL, ST_BPL, INTREG_UDISP, INTREG, AVR32_V2),
1.27058 ++ SYNTAX_NORMAL2(ST_BLS, ST_BLS, ST_BLS, INTREG_UDISP, INTREG, AVR32_V2),
1.27059 ++ SYNTAX_NORMAL2(ST_BGT, ST_BGT, ST_BGT, INTREG_UDISP, INTREG, AVR32_V2),
1.27060 ++ SYNTAX_NORMAL2(ST_BLE, ST_BLE, ST_BLE, INTREG_UDISP, INTREG, AVR32_V2),
1.27061 ++ SYNTAX_NORMAL2(ST_BHI, ST_BHI, ST_BHI, INTREG_UDISP, INTREG, AVR32_V2),
1.27062 ++ SYNTAX_NORMAL2(ST_BVS, ST_BVS, ST_BVS, INTREG_UDISP, INTREG, AVR32_V2),
1.27063 ++ SYNTAX_NORMAL2(ST_BVC, ST_BVC, ST_BVC, INTREG_UDISP, INTREG, AVR32_V2),
1.27064 ++ SYNTAX_NORMAL2(ST_BQS, ST_BQS, ST_BQS, INTREG_UDISP, INTREG, AVR32_V2),
1.27065 ++ SYNTAX_NORMAL2(ST_BAL, ST_BAL, ST_BAL, INTREG_UDISP, INTREG, AVR32_V2),
1.27066 ++ SYNTAX_NORMAL2(ST_BHS, ST_BHS, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
1.27067 ++ SYNTAX_NORMAL2(ST_BLO, ST_BLO, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
1.27068 ++ SYNTAX_NORMAL2(MOVH, MOVH, MOVH, INTREG, UNSIGNED_CONST, AVR32_V2),
1.27069 ++
1.27070 ++ };
1.27071 ++
1.27072 ++#define NORMAL_MNEMONIC(name, syntax, str) \
1.27073 ++ { \
1.27074 ++ AVR32_MNEMONIC_##name, str, \
1.27075 ++ &avr32_syntax_table[AVR32_SYNTAX_##syntax], \
1.27076 ++ }
1.27077 ++#define FP_MNEMONIC(name, syntax, str) \
1.27078 ++ NORMAL_MNEMONIC(name##_S, syntax##_S, str ".s"), \
1.27079 ++ NORMAL_MNEMONIC(name##_D, syntax##_D, str ".d")
1.27080 ++
1.27081 ++const struct avr32_mnemonic avr32_mnemonic_table[] =
1.27082 ++ {
1.27083 ++ NORMAL_MNEMONIC(ABS, ABS, "abs"),
1.27084 ++ NORMAL_MNEMONIC(ACALL, ACALL, "acall"),
1.27085 ++ NORMAL_MNEMONIC(ACR, ACR, "acr"),
1.27086 ++ NORMAL_MNEMONIC(ADC, ADC, "adc"),
1.27087 ++ NORMAL_MNEMONIC(ADD, ADD1, "add"),
1.27088 ++ NORMAL_MNEMONIC(ADDABS, ADDABS, "addabs"),
1.27089 ++ NORMAL_MNEMONIC(ADDHH_W, ADDHH_W, "addhh.w"),
1.27090 ++ NORMAL_MNEMONIC(AND, AND1, "and"),
1.27091 ++ NORMAL_MNEMONIC(ANDH, ANDH, "andh"),
1.27092 ++ NORMAL_MNEMONIC(ANDL, ANDL, "andl"),
1.27093 ++ NORMAL_MNEMONIC(ANDN, ANDN, "andn"),
1.27094 ++ NORMAL_MNEMONIC(ASR, ASR1, "asr"),
1.27095 ++ NORMAL_MNEMONIC(BFEXTS, BFEXTS, "bfexts"),
1.27096 ++ NORMAL_MNEMONIC(BFEXTU, BFEXTU, "bfextu"),
1.27097 ++ NORMAL_MNEMONIC(BFINS, BFINS, "bfins"),
1.27098 ++ NORMAL_MNEMONIC(BLD, BLD, "bld"),
1.27099 ++ NORMAL_MNEMONIC(BREQ, BREQ1, "breq"),
1.27100 ++ NORMAL_MNEMONIC(BRNE, BRNE1, "brne"),
1.27101 ++ NORMAL_MNEMONIC(BRCC, BRCC1, "brcc"),
1.27102 ++ NORMAL_MNEMONIC(BRCS, BRCS1, "brcs"),
1.27103 ++ NORMAL_MNEMONIC(BRGE, BRGE1, "brge"),
1.27104 ++ NORMAL_MNEMONIC(BRLT, BRLT1, "brlt"),
1.27105 ++ NORMAL_MNEMONIC(BRMI, BRMI1, "brmi"),
1.27106 ++ NORMAL_MNEMONIC(BRPL, BRPL1, "brpl"),
1.27107 ++ NORMAL_MNEMONIC(BRHS, BRHS1, "brhs"),
1.27108 ++ NORMAL_MNEMONIC(BRLO, BRLO1, "brlo"),
1.27109 ++ NORMAL_MNEMONIC(BRLS, BRLS, "brls"),
1.27110 ++ NORMAL_MNEMONIC(BRGT, BRGT, "brgt"),
1.27111 ++ NORMAL_MNEMONIC(BRLE, BRLE, "brle"),
1.27112 ++ NORMAL_MNEMONIC(BRHI, BRHI, "brhi"),
1.27113 ++ NORMAL_MNEMONIC(BRVS, BRVS, "brvs"),
1.27114 ++ NORMAL_MNEMONIC(BRVC, BRVC, "brvc"),
1.27115 ++ NORMAL_MNEMONIC(BRQS, BRQS, "brqs"),
1.27116 ++ NORMAL_MNEMONIC(BRAL, BRAL, "bral"),
1.27117 ++ NORMAL_MNEMONIC(BREAKPOINT, BREAKPOINT, "breakpoint"),
1.27118 ++ NORMAL_MNEMONIC(BREV, BREV, "brev"),
1.27119 ++ NORMAL_MNEMONIC(BST, BST, "bst"),
1.27120 ++ NORMAL_MNEMONIC(CACHE, CACHE, "cache"),
1.27121 ++ NORMAL_MNEMONIC(CASTS_B, CASTS_B, "casts.b"),
1.27122 ++ NORMAL_MNEMONIC(CASTS_H, CASTS_H, "casts.h"),
1.27123 ++ NORMAL_MNEMONIC(CASTU_B, CASTU_B, "castu.b"),
1.27124 ++ NORMAL_MNEMONIC(CASTU_H, CASTU_H, "castu.h"),
1.27125 ++ NORMAL_MNEMONIC(CBR, CBR, "cbr"),
1.27126 ++ NORMAL_MNEMONIC(CLZ, CLZ, "clz"),
1.27127 ++ NORMAL_MNEMONIC(COM, COM, "com"),
1.27128 ++ NORMAL_MNEMONIC(COP, COP, "cop"),
1.27129 ++ NORMAL_MNEMONIC(CP_B, CP_B, "cp.b"),
1.27130 ++ NORMAL_MNEMONIC(CP_H, CP_H, "cp.h"),
1.27131 ++ NORMAL_MNEMONIC(CP_W, CP_W1, "cp.w"),
1.27132 ++ NORMAL_MNEMONIC(CP, CP_W1, "cp"),
1.27133 ++ NORMAL_MNEMONIC(CPC, CPC1, "cpc"),
1.27134 ++ NORMAL_MNEMONIC(CSRF, CSRF, "csrf"),
1.27135 ++ NORMAL_MNEMONIC(CSRFCZ, CSRFCZ, "csrfcz"),
1.27136 ++ NORMAL_MNEMONIC(DIVS, DIVS, "divs"),
1.27137 ++ NORMAL_MNEMONIC(DIVU, DIVU, "divu"),
1.27138 ++ NORMAL_MNEMONIC(EOR, EOR1, "eor"),
1.27139 ++ NORMAL_MNEMONIC(EORL, EORL, "eorl"),
1.27140 ++ NORMAL_MNEMONIC(EORH, EORH, "eorh"),
1.27141 ++ NORMAL_MNEMONIC(FRS, FRS, "frs"),
1.27142 ++ NORMAL_MNEMONIC(ICALL, ICALL, "icall"),
1.27143 ++ NORMAL_MNEMONIC(INCJOSP, INCJOSP, "incjosp"),
1.27144 ++ NORMAL_MNEMONIC(LD_D, LD_D1, "ld.d"),
1.27145 ++ NORMAL_MNEMONIC(LD_SB, LD_SB2, "ld.sb"),
1.27146 ++ NORMAL_MNEMONIC(LD_UB, LD_UB1, "ld.ub"),
1.27147 ++ NORMAL_MNEMONIC(LD_SH, LD_SH1, "ld.sh"),
1.27148 ++ NORMAL_MNEMONIC(LD_UH, LD_UH1, "ld.uh"),
1.27149 ++ NORMAL_MNEMONIC(LD_W, LD_W1, "ld.w"),
1.27150 ++ NORMAL_MNEMONIC(LDC_D, LDC_D3, "ldc.d"),
1.27151 ++ NORMAL_MNEMONIC(LDC_W, LDC_W3, "ldc.w"),
1.27152 ++ NORMAL_MNEMONIC(LDC0_D, LDC0_D, "ldc0.d"),
1.27153 ++ NORMAL_MNEMONIC(LDC0_W, LDC0_W, "ldc0.w"),
1.27154 ++ NORMAL_MNEMONIC(LDCM_D, LDCM_D, "ldcm.d"),
1.27155 ++ NORMAL_MNEMONIC(LDCM_W, LDCM_W, "ldcm.w"),
1.27156 ++ NORMAL_MNEMONIC(LDDPC, LDDPC, "lddpc"),
1.27157 ++ NORMAL_MNEMONIC(LDDSP, LDDSP, "lddsp"),
1.27158 ++ NORMAL_MNEMONIC(LDINS_B, LDINS_B, "ldins.b"),
1.27159 ++ NORMAL_MNEMONIC(LDINS_H, LDINS_H, "ldins.h"),
1.27160 ++ NORMAL_MNEMONIC(LDM, LDM, "ldm"),
1.27161 ++ NORMAL_MNEMONIC(LDMTS, LDMTS, "ldmts"),
1.27162 ++ NORMAL_MNEMONIC(LDSWP_SH, LDSWP_SH, "ldswp.sh"),
1.27163 ++ NORMAL_MNEMONIC(LDSWP_UH, LDSWP_UH, "ldswp.uh"),
1.27164 ++ NORMAL_MNEMONIC(LDSWP_W, LDSWP_W, "ldswp.w"),
1.27165 ++ NORMAL_MNEMONIC(LSL, LSL1, "lsl"),
1.27166 ++ NORMAL_MNEMONIC(LSR, LSR1, "lsr"),
1.27167 ++ NORMAL_MNEMONIC(MAC, MAC, "mac"),
1.27168 ++ NORMAL_MNEMONIC(MACHH_D, MACHH_D, "machh.d"),
1.27169 ++ NORMAL_MNEMONIC(MACHH_W, MACHH_W, "machh.w"),
1.27170 ++ NORMAL_MNEMONIC(MACS_D, MACS_D, "macs.d"),
1.27171 ++ NORMAL_MNEMONIC(MACSATHH_W, MACSATHH_W, "macsathh.w"),
1.27172 ++ NORMAL_MNEMONIC(MACU_D, MACUD, "macu.d"),
1.27173 ++ NORMAL_MNEMONIC(MACWH_D, MACWH_D, "macwh.d"),
1.27174 ++ NORMAL_MNEMONIC(MAX, MAX, "max"),
1.27175 ++ NORMAL_MNEMONIC(MCALL, MCALL, "mcall"),
1.27176 ++ NORMAL_MNEMONIC(MFDR, MFDR, "mfdr"),
1.27177 ++ NORMAL_MNEMONIC(MFSR, MFSR, "mfsr"),
1.27178 ++ NORMAL_MNEMONIC(MIN, MIN, "min"),
1.27179 ++ NORMAL_MNEMONIC(MOV, MOV3, "mov"),
1.27180 ++ NORMAL_MNEMONIC(MOVEQ, MOVEQ1, "moveq"),
1.27181 ++ NORMAL_MNEMONIC(MOVNE, MOVNE1, "movne"),
1.27182 ++ NORMAL_MNEMONIC(MOVCC, MOVCC1, "movcc"),
1.27183 ++ NORMAL_MNEMONIC(MOVCS, MOVCS1, "movcs"),
1.27184 ++ NORMAL_MNEMONIC(MOVGE, MOVGE1, "movge"),
1.27185 ++ NORMAL_MNEMONIC(MOVLT, MOVLT1, "movlt"),
1.27186 ++ NORMAL_MNEMONIC(MOVMI, MOVMI1, "movmi"),
1.27187 ++ NORMAL_MNEMONIC(MOVPL, MOVPL1, "movpl"),
1.27188 ++ NORMAL_MNEMONIC(MOVLS, MOVLS1, "movls"),
1.27189 ++ NORMAL_MNEMONIC(MOVGT, MOVGT1, "movgt"),
1.27190 ++ NORMAL_MNEMONIC(MOVLE, MOVLE1, "movle"),
1.27191 ++ NORMAL_MNEMONIC(MOVHI, MOVHI1, "movhi"),
1.27192 ++ NORMAL_MNEMONIC(MOVVS, MOVVS1, "movvs"),
1.27193 ++ NORMAL_MNEMONIC(MOVVC, MOVVC1, "movvc"),
1.27194 ++ NORMAL_MNEMONIC(MOVQS, MOVQS1, "movqs"),
1.27195 ++ NORMAL_MNEMONIC(MOVAL, MOVAL1, "moval"),
1.27196 ++ NORMAL_MNEMONIC(MOVHS, MOVHS1, "movhs"),
1.27197 ++ NORMAL_MNEMONIC(MOVLO, MOVLO1, "movlo"),
1.27198 ++ NORMAL_MNEMONIC(MTDR, MTDR, "mtdr"),
1.27199 ++ NORMAL_MNEMONIC(MTSR, MTSR, "mtsr"),
1.27200 ++ NORMAL_MNEMONIC(MUL, MUL1, "mul"),
1.27201 ++ NORMAL_MNEMONIC(MULHH_W, MULHH_W, "mulhh.w"),
1.27202 ++ NORMAL_MNEMONIC(MULNHH_W, MULNHH_W, "mulnhh.w"),
1.27203 ++ NORMAL_MNEMONIC(MULNWH_D, MULNWH_D, "mulnwh.d"),
1.27204 ++ NORMAL_MNEMONIC(MULS_D, MULSD, "muls.d"),
1.27205 ++ NORMAL_MNEMONIC(MULSATHH_H, MULSATHH_H, "mulsathh.h"),
1.27206 ++ NORMAL_MNEMONIC(MULSATHH_W, MULSATHH_W, "mulsathh.w"),
1.27207 ++ NORMAL_MNEMONIC(MULSATRNDHH_H, MULSATRNDHH_H, "mulsatrndhh.h"),
1.27208 ++ NORMAL_MNEMONIC(MULSATRNDWH_W, MULSATRNDWH_W, "mulsatrndwh.w"),
1.27209 ++ NORMAL_MNEMONIC(MULSATWH_W, MULSATWH_W, "mulsatwh.w"),
1.27210 ++ NORMAL_MNEMONIC(MULU_D, MULU_D, "mulu.d"),
1.27211 ++ NORMAL_MNEMONIC(MULWH_D, MULWH_D, "mulwh.d"),
1.27212 ++ NORMAL_MNEMONIC(MUSFR, MUSFR, "musfr"),
1.27213 ++ NORMAL_MNEMONIC(MUSTR, MUSTR, "mustr"),
1.27214 ++ NORMAL_MNEMONIC(MVCR_D, MVCR_D, "mvcr.d"),
1.27215 ++ NORMAL_MNEMONIC(MVCR_W, MVCR_W, "mvcr.w"),
1.27216 ++ NORMAL_MNEMONIC(MVRC_D, MVRC_D, "mvrc.d"),
1.27217 ++ NORMAL_MNEMONIC(MVRC_W, MVRC_W, "mvrc.w"),
1.27218 ++ NORMAL_MNEMONIC(NEG, NEG, "neg"),
1.27219 ++ NORMAL_MNEMONIC(NOP, NOP, "nop"),
1.27220 ++ NORMAL_MNEMONIC(OR, OR1, "or"),
1.27221 ++ NORMAL_MNEMONIC(ORH, ORH, "orh"),
1.27222 ++ NORMAL_MNEMONIC(ORL, ORL, "orl"),
1.27223 ++ NORMAL_MNEMONIC(PABS_SB, PABS_SB, "pabs.sb"),
1.27224 ++ NORMAL_MNEMONIC(PABS_SH, PABS_SH, "pabs.sh"),
1.27225 ++ NORMAL_MNEMONIC(PACKSH_SB, PACKSH_SB, "packsh.sb"),
1.27226 ++ NORMAL_MNEMONIC(PACKSH_UB, PACKSH_UB, "packsh.ub"),
1.27227 ++ NORMAL_MNEMONIC(PACKW_SH, PACKW_SH, "packw.sh"),
1.27228 ++ NORMAL_MNEMONIC(PADD_B, PADD_B, "padd.b"),
1.27229 ++ NORMAL_MNEMONIC(PADD_H, PADD_H, "padd.h"),
1.27230 ++ NORMAL_MNEMONIC(PADDH_SH, PADDH_SH, "paddh.sh"),
1.27231 ++ NORMAL_MNEMONIC(PADDH_UB, PADDH_UB, "paddh.ub"),
1.27232 ++ NORMAL_MNEMONIC(PADDS_SB, PADDS_SB, "padds.sb"),
1.27233 ++ NORMAL_MNEMONIC(PADDS_SH, PADDS_SH, "padds.sh"),
1.27234 ++ NORMAL_MNEMONIC(PADDS_UB, PADDS_UB, "padds.ub"),
1.27235 ++ NORMAL_MNEMONIC(PADDS_UH, PADDS_UH, "padds.uh"),
1.27236 ++ NORMAL_MNEMONIC(PADDSUB_H, PADDSUB_H, "paddsub.h"),
1.27237 ++ NORMAL_MNEMONIC(PADDSUBH_SH, PADDSUBH_SH, "paddsubh.sh"),
1.27238 ++ NORMAL_MNEMONIC(PADDSUBS_SH, PADDSUBS_SH, "paddsubs.sh"),
1.27239 ++ NORMAL_MNEMONIC(PADDSUBS_UH, PADDSUBS_UH, "paddsubs.uh"),
1.27240 ++ NORMAL_MNEMONIC(PADDX_H, PADDX_H, "paddx.h"),
1.27241 ++ NORMAL_MNEMONIC(PADDXH_SH, PADDXH_SH, "paddxh.sh"),
1.27242 ++ NORMAL_MNEMONIC(PADDXS_SH, PADDXS_SH, "paddxs.sh"),
1.27243 ++ NORMAL_MNEMONIC(PADDXS_UH, PADDXS_UH, "paddxs.uh"),
1.27244 ++ NORMAL_MNEMONIC(PASR_B, PASR_B, "pasr.b"),
1.27245 ++ NORMAL_MNEMONIC(PASR_H, PASR_H, "pasr.h"),
1.27246 ++ NORMAL_MNEMONIC(PAVG_SH, PAVG_SH, "pavg.sh"),
1.27247 ++ NORMAL_MNEMONIC(PAVG_UB, PAVG_UB, "pavg.ub"),
1.27248 ++ NORMAL_MNEMONIC(PLSL_B, PLSL_B, "plsl.b"),
1.27249 ++ NORMAL_MNEMONIC(PLSL_H, PLSL_H, "plsl.h"),
1.27250 ++ NORMAL_MNEMONIC(PLSR_B, PLSR_B, "plsr.b"),
1.27251 ++ NORMAL_MNEMONIC(PLSR_H, PLSR_H, "plsr.h"),
1.27252 ++ NORMAL_MNEMONIC(PMAX_SH, PMAX_SH, "pmax.sh"),
1.27253 ++ NORMAL_MNEMONIC(PMAX_UB, PMAX_UB, "pmax.ub"),
1.27254 ++ NORMAL_MNEMONIC(PMIN_SH, PMIN_SH, "pmin.sh"),
1.27255 ++ NORMAL_MNEMONIC(PMIN_UB, PMIN_UB, "pmin.ub"),
1.27256 ++ NORMAL_MNEMONIC(POPJC, POPJC, "popjc"),
1.27257 ++ NORMAL_MNEMONIC(POPM, POPM, "popm"),
1.27258 ++ NORMAL_MNEMONIC(PREF, PREF, "pref"),
1.27259 ++ NORMAL_MNEMONIC(PSAD, PSAD, "psad"),
1.27260 ++ NORMAL_MNEMONIC(PSUB_B, PSUB_B, "psub.b"),
1.27261 ++ NORMAL_MNEMONIC(PSUB_H, PSUB_H, "psub.h"),
1.27262 ++ NORMAL_MNEMONIC(PSUBADD_H, PSUBADD_H, "psubadd.h"),
1.27263 ++ NORMAL_MNEMONIC(PSUBADDH_SH, PSUBADDH_SH, "psubaddh.sh"),
1.27264 ++ NORMAL_MNEMONIC(PSUBADDS_SH, PSUBADDS_SH, "psubadds.sh"),
1.27265 ++ NORMAL_MNEMONIC(PSUBADDS_UH, PSUBADDS_UH, "psubadds.uh"),
1.27266 ++ NORMAL_MNEMONIC(PSUBH_SH, PSUBH_SH, "psubh.sh"),
1.27267 ++ NORMAL_MNEMONIC(PSUBH_UB, PSUBH_UB, "psubh.ub"),
1.27268 ++ NORMAL_MNEMONIC(PSUBS_SB, PSUBS_SB, "psubs.sb"),
1.27269 ++ NORMAL_MNEMONIC(PSUBS_SH, PSUBS_SH, "psubs.sh"),
1.27270 ++ NORMAL_MNEMONIC(PSUBS_UB, PSUBS_UB, "psubs.ub"),
1.27271 ++ NORMAL_MNEMONIC(PSUBS_UH, PSUBS_UH, "psubs.uh"),
1.27272 ++ NORMAL_MNEMONIC(PSUBX_H, PSUBX_H, "psubx.h"),
1.27273 ++ NORMAL_MNEMONIC(PSUBXH_SH, PSUBXH_SH, "psubxh.sh"),
1.27274 ++ NORMAL_MNEMONIC(PSUBXS_SH, PSUBXS_SH, "psubxs.sh"),
1.27275 ++ NORMAL_MNEMONIC(PSUBXS_UH, PSUBXS_UH, "psubxs.uh"),
1.27276 ++ NORMAL_MNEMONIC(PUNPCKSB_H, PUNPCKSB_H, "punpcksb.h"),
1.27277 ++ NORMAL_MNEMONIC(PUNPCKUB_H, PUNPCKUB_H, "punpckub.h"),
1.27278 ++ NORMAL_MNEMONIC(PUSHJC, PUSHJC, "pushjc"),
1.27279 ++ NORMAL_MNEMONIC(PUSHM, PUSHM, "pushm"),
1.27280 ++ NORMAL_MNEMONIC(RCALL, RCALL1, "rcall"),
1.27281 ++ NORMAL_MNEMONIC(RETEQ, RETEQ, "reteq"),
1.27282 ++ NORMAL_MNEMONIC(RETNE, RETNE, "retne"),
1.27283 ++ NORMAL_MNEMONIC(RETCC, RETCC, "retcc"),
1.27284 ++ NORMAL_MNEMONIC(RETCS, RETCS, "retcs"),
1.27285 ++ NORMAL_MNEMONIC(RETGE, RETGE, "retge"),
1.27286 ++ NORMAL_MNEMONIC(RETLT, RETLT, "retlt"),
1.27287 ++ NORMAL_MNEMONIC(RETMI, RETMI, "retmi"),
1.27288 ++ NORMAL_MNEMONIC(RETPL, RETPL, "retpl"),
1.27289 ++ NORMAL_MNEMONIC(RETLS, RETLS, "retls"),
1.27290 ++ NORMAL_MNEMONIC(RETGT, RETGT, "retgt"),
1.27291 ++ NORMAL_MNEMONIC(RETLE, RETLE, "retle"),
1.27292 ++ NORMAL_MNEMONIC(RETHI, RETHI, "rethi"),
1.27293 ++ NORMAL_MNEMONIC(RETVS, RETVS, "retvs"),
1.27294 ++ NORMAL_MNEMONIC(RETVC, RETVC, "retvc"),
1.27295 ++ NORMAL_MNEMONIC(RETQS, RETQS, "retqs"),
1.27296 ++ NORMAL_MNEMONIC(RETAL, RETAL, "retal"),
1.27297 ++ NORMAL_MNEMONIC(RETHS, RETHS, "reths"),
1.27298 ++ NORMAL_MNEMONIC(RETLO, RETLO, "retlo"),
1.27299 ++ NORMAL_MNEMONIC(RET, RETAL, "ret"),
1.27300 ++ NORMAL_MNEMONIC(RETD, RETD, "retd"),
1.27301 ++ NORMAL_MNEMONIC(RETE, RETE, "rete"),
1.27302 ++ NORMAL_MNEMONIC(RETJ, RETJ, "retj"),
1.27303 ++ NORMAL_MNEMONIC(RETS, RETS, "rets"),
1.27304 ++ NORMAL_MNEMONIC(RJMP, RJMP, "rjmp"),
1.27305 ++ NORMAL_MNEMONIC(ROL, ROL, "rol"),
1.27306 ++ NORMAL_MNEMONIC(ROR, ROR, "ror"),
1.27307 ++ NORMAL_MNEMONIC(RSUB, RSUB1, "rsub"),
1.27308 ++ NORMAL_MNEMONIC(SATADD_H, SATADD_H, "satadd.h"),
1.27309 ++ NORMAL_MNEMONIC(SATADD_W, SATADD_W, "satadd.w"),
1.27310 ++ NORMAL_MNEMONIC(SATRNDS, SATRNDS, "satrnds"),
1.27311 ++ NORMAL_MNEMONIC(SATRNDU, SATRNDU, "satrndu"),
1.27312 ++ NORMAL_MNEMONIC(SATS, SATS, "sats"),
1.27313 ++ NORMAL_MNEMONIC(SATSUB_H, SATSUB_H, "satsub.h"),
1.27314 ++ NORMAL_MNEMONIC(SATSUB_W, SATSUB_W1, "satsub.w"),
1.27315 ++ NORMAL_MNEMONIC(SATU, SATU, "satu"),
1.27316 ++ NORMAL_MNEMONIC(SBC, SBC, "sbc"),
1.27317 ++ NORMAL_MNEMONIC(SBR, SBR, "sbr"),
1.27318 ++ NORMAL_MNEMONIC(SCALL, SCALL, "scall"),
1.27319 ++ NORMAL_MNEMONIC(SCR, SCR, "scr"),
1.27320 ++ NORMAL_MNEMONIC(SLEEP, SLEEP, "sleep"),
1.27321 ++ NORMAL_MNEMONIC(SREQ, SREQ, "sreq"),
1.27322 ++ NORMAL_MNEMONIC(SRNE, SRNE, "srne"),
1.27323 ++ NORMAL_MNEMONIC(SRCC, SRCC, "srcc"),
1.27324 ++ NORMAL_MNEMONIC(SRCS, SRCS, "srcs"),
1.27325 ++ NORMAL_MNEMONIC(SRGE, SRGE, "srge"),
1.27326 ++ NORMAL_MNEMONIC(SRLT, SRLT, "srlt"),
1.27327 ++ NORMAL_MNEMONIC(SRMI, SRMI, "srmi"),
1.27328 ++ NORMAL_MNEMONIC(SRPL, SRPL, "srpl"),
1.27329 ++ NORMAL_MNEMONIC(SRLS, SRLS, "srls"),
1.27330 ++ NORMAL_MNEMONIC(SRGT, SRGT, "srgt"),
1.27331 ++ NORMAL_MNEMONIC(SRLE, SRLE, "srle"),
1.27332 ++ NORMAL_MNEMONIC(SRHI, SRHI, "srhi"),
1.27333 ++ NORMAL_MNEMONIC(SRVS, SRVS, "srvs"),
1.27334 ++ NORMAL_MNEMONIC(SRVC, SRVC, "srvc"),
1.27335 ++ NORMAL_MNEMONIC(SRQS, SRQS, "srqs"),
1.27336 ++ NORMAL_MNEMONIC(SRAL, SRAL, "sral"),
1.27337 ++ NORMAL_MNEMONIC(SRHS, SRHS, "srhs"),
1.27338 ++ NORMAL_MNEMONIC(SRLO, SRLO, "srlo"),
1.27339 ++ NORMAL_MNEMONIC(SSRF, SSRF, "ssrf"),
1.27340 ++ NORMAL_MNEMONIC(ST_B, ST_B1, "st.b"),
1.27341 ++ NORMAL_MNEMONIC(ST_D, ST_D1, "st.d"),
1.27342 ++ NORMAL_MNEMONIC(ST_H, ST_H1, "st.h"),
1.27343 ++ NORMAL_MNEMONIC(ST_W, ST_W1, "st.w"),
1.27344 ++ NORMAL_MNEMONIC(STC_D, STC_D3, "stc.d"),
1.27345 ++ NORMAL_MNEMONIC(STC_W, STC_W3, "stc.w"),
1.27346 ++ NORMAL_MNEMONIC(STC0_D, STC0_D, "stc0.d"),
1.27347 ++ NORMAL_MNEMONIC(STC0_W, STC0_W, "stc0.w"),
1.27348 ++ NORMAL_MNEMONIC(STCM_D, STCM_D, "stcm.d"),
1.27349 ++ NORMAL_MNEMONIC(STCM_W, STCM_W, "stcm.w"),
1.27350 ++ NORMAL_MNEMONIC(STCOND, STCOND, "stcond"),
1.27351 ++ NORMAL_MNEMONIC(STDSP, STDSP, "stdsp"),
1.27352 ++ NORMAL_MNEMONIC(STHH_W, STHH_W2, "sthh.w"),
1.27353 ++ NORMAL_MNEMONIC(STM, STM, "stm"),
1.27354 ++ NORMAL_MNEMONIC(STMTS, STMTS, "stmts"),
1.27355 ++ NORMAL_MNEMONIC(STSWP_H, STSWP_H, "stswp.h"),
1.27356 ++ NORMAL_MNEMONIC(STSWP_W, STSWP_W, "stswp.w"),
1.27357 ++ NORMAL_MNEMONIC(SUB, SUB1, "sub"),
1.27358 ++ NORMAL_MNEMONIC(SUBEQ, SUBEQ, "subeq"),
1.27359 ++ NORMAL_MNEMONIC(SUBNE, SUBNE, "subne"),
1.27360 ++ NORMAL_MNEMONIC(SUBCC, SUBCC, "subcc"),
1.27361 ++ NORMAL_MNEMONIC(SUBCS, SUBCS, "subcs"),
1.27362 ++ NORMAL_MNEMONIC(SUBGE, SUBGE, "subge"),
1.27363 ++ NORMAL_MNEMONIC(SUBLT, SUBLT, "sublt"),
1.27364 ++ NORMAL_MNEMONIC(SUBMI, SUBMI, "submi"),
1.27365 ++ NORMAL_MNEMONIC(SUBPL, SUBPL, "subpl"),
1.27366 ++ NORMAL_MNEMONIC(SUBLS, SUBLS, "subls"),
1.27367 ++ NORMAL_MNEMONIC(SUBGT, SUBGT, "subgt"),
1.27368 ++ NORMAL_MNEMONIC(SUBLE, SUBLE, "suble"),
1.27369 ++ NORMAL_MNEMONIC(SUBHI, SUBHI, "subhi"),
1.27370 ++ NORMAL_MNEMONIC(SUBVS, SUBVS, "subvs"),
1.27371 ++ NORMAL_MNEMONIC(SUBVC, SUBVC, "subvc"),
1.27372 ++ NORMAL_MNEMONIC(SUBQS, SUBQS, "subqs"),
1.27373 ++ NORMAL_MNEMONIC(SUBAL, SUBAL, "subal"),
1.27374 ++ NORMAL_MNEMONIC(SUBHS, SUBHS, "subhs"),
1.27375 ++ NORMAL_MNEMONIC(SUBLO, SUBLO, "sublo"),
1.27376 ++ NORMAL_MNEMONIC(SUBFEQ, SUBFEQ, "subfeq"),
1.27377 ++ NORMAL_MNEMONIC(SUBFNE, SUBFNE, "subfne"),
1.27378 ++ NORMAL_MNEMONIC(SUBFCC, SUBFCC, "subfcc"),
1.27379 ++ NORMAL_MNEMONIC(SUBFCS, SUBFCS, "subfcs"),
1.27380 ++ NORMAL_MNEMONIC(SUBFGE, SUBFGE, "subfge"),
1.27381 ++ NORMAL_MNEMONIC(SUBFLT, SUBFLT, "subflt"),
1.27382 ++ NORMAL_MNEMONIC(SUBFMI, SUBFMI, "subfmi"),
1.27383 ++ NORMAL_MNEMONIC(SUBFPL, SUBFPL, "subfpl"),
1.27384 ++ NORMAL_MNEMONIC(SUBFLS, SUBFLS, "subfls"),
1.27385 ++ NORMAL_MNEMONIC(SUBFGT, SUBFGT, "subfgt"),
1.27386 ++ NORMAL_MNEMONIC(SUBFLE, SUBFLE, "subfle"),
1.27387 ++ NORMAL_MNEMONIC(SUBFHI, SUBFHI, "subfhi"),
1.27388 ++ NORMAL_MNEMONIC(SUBFVS, SUBFVS, "subfvs"),
1.27389 ++ NORMAL_MNEMONIC(SUBFVC, SUBFVC, "subfvc"),
1.27390 ++ NORMAL_MNEMONIC(SUBFQS, SUBFQS, "subfqs"),
1.27391 ++ NORMAL_MNEMONIC(SUBFAL, SUBFAL, "subfal"),
1.27392 ++ NORMAL_MNEMONIC(SUBFHS, SUBFHS, "subfhs"),
1.27393 ++ NORMAL_MNEMONIC(SUBFLO, SUBFLO, "subflo"),
1.27394 ++ NORMAL_MNEMONIC(SUBHH_W, SUBHH_W, "subhh.w"),
1.27395 ++ NORMAL_MNEMONIC(SWAP_B, SWAP_B, "swap.b"),
1.27396 ++ NORMAL_MNEMONIC(SWAP_BH, SWAP_BH, "swap.bh"),
1.27397 ++ NORMAL_MNEMONIC(SWAP_H, SWAP_H, "swap.h"),
1.27398 ++ NORMAL_MNEMONIC(SYNC, SYNC, "sync"),
1.27399 ++ NORMAL_MNEMONIC(TLBR, TLBR, "tlbr"),
1.27400 ++ NORMAL_MNEMONIC(TLBS, TLBS, "tlbs"),
1.27401 ++ NORMAL_MNEMONIC(TLBW, TLBW, "tlbw"),
1.27402 ++ NORMAL_MNEMONIC(TNBZ, TNBZ, "tnbz"),
1.27403 ++ NORMAL_MNEMONIC(TST, TST, "tst"),
1.27404 ++ NORMAL_MNEMONIC(XCHG, XCHG, "xchg"),
1.27405 ++ NORMAL_MNEMONIC(MEMC, MEMC, "memc"),
1.27406 ++ NORMAL_MNEMONIC(MEMS, MEMS, "mems"),
1.27407 ++ NORMAL_MNEMONIC(MEMT, MEMT, "memt"),
1.27408 ++ FP_MNEMONIC(FADD, FADD, "fadd"),
1.27409 ++ FP_MNEMONIC(FSUB, FSUB, "fsub"),
1.27410 ++ FP_MNEMONIC(FMAC, FMAC, "fmac"),
1.27411 ++ FP_MNEMONIC(FNMAC, FNMAC, "fnmac"),
1.27412 ++ FP_MNEMONIC(FMSC, FMSC, "fmsc"),
1.27413 ++ FP_MNEMONIC(FNMSC, FNMSC, "fnmsc"),
1.27414 ++ FP_MNEMONIC(FMUL, FMUL, "fmul"),
1.27415 ++ FP_MNEMONIC(FNMUL, FNMUL, "fnmul"),
1.27416 ++ FP_MNEMONIC(FNEG, FNEG, "fneg"),
1.27417 ++ FP_MNEMONIC(FABS, FABS, "fabs"),
1.27418 ++ FP_MNEMONIC(FCMP, FCMP, "fcmp"),
1.27419 ++ FP_MNEMONIC(FMOV, FMOV1, "fmov"),
1.27420 ++ NORMAL_MNEMONIC(FCASTS_D, FCASTS_D, "fcasts.d"),
1.27421 ++ NORMAL_MNEMONIC(FCASTD_S, FCASTD_S, "fcastd.s"),
1.27422 ++ NORMAL_MNEMONIC(LDA_W, LDA_W, "lda.w"),
1.27423 ++ NORMAL_MNEMONIC(CALL, CALL, "call"),
1.27424 ++ NORMAL_MNEMONIC(PICOSVMAC, PICOSVMAC0, "picosvmac"),
1.27425 ++ NORMAL_MNEMONIC(PICOSVMUL, PICOSVMUL0, "picosvmul"),
1.27426 ++ NORMAL_MNEMONIC(PICOVMAC, PICOVMAC0, "picovmac"),
1.27427 ++ NORMAL_MNEMONIC(PICOVMUL, PICOVMUL0, "picovmul"),
1.27428 ++ NORMAL_MNEMONIC(PICOLD_D, PICOLD_D2, "picold.d"),
1.27429 ++ NORMAL_MNEMONIC(PICOLD_W, PICOLD_W2, "picold.w"),
1.27430 ++ NORMAL_MNEMONIC(PICOLDM_D, PICOLDM_D, "picoldm.d"),
1.27431 ++ NORMAL_MNEMONIC(PICOLDM_W, PICOLDM_W, "picoldm.w"),
1.27432 ++ NORMAL_MNEMONIC(PICOMV_D, PICOMV_D1, "picomv.d"),
1.27433 ++ NORMAL_MNEMONIC(PICOMV_W, PICOMV_W1, "picomv.w"),
1.27434 ++ NORMAL_MNEMONIC(PICOST_D, PICOST_D2, "picost.d"),
1.27435 ++ NORMAL_MNEMONIC(PICOST_W, PICOST_W2, "picost.w"),
1.27436 ++ NORMAL_MNEMONIC(PICOSTM_D, PICOSTM_D, "picostm.d"),
1.27437 ++ NORMAL_MNEMONIC(PICOSTM_W, PICOSTM_W, "picostm.w"),
1.27438 ++ NORMAL_MNEMONIC(RSUBEQ, RSUBEQ, "rsubeq"),
1.27439 ++ NORMAL_MNEMONIC(RSUBNE, RSUBNE, "rsubne"),
1.27440 ++ NORMAL_MNEMONIC(RSUBCC, RSUBCC, "rsubcc"),
1.27441 ++ NORMAL_MNEMONIC(RSUBCS, RSUBCS, "rsubcs"),
1.27442 ++ NORMAL_MNEMONIC(RSUBGE, RSUBGE, "rsubge"),
1.27443 ++ NORMAL_MNEMONIC(RSUBLT, RSUBLT, "rsublt"),
1.27444 ++ NORMAL_MNEMONIC(RSUBMI, RSUBMI, "rsubmi"),
1.27445 ++ NORMAL_MNEMONIC(RSUBPL, RSUBPL, "rsubpl"),
1.27446 ++ NORMAL_MNEMONIC(RSUBLS, RSUBLS, "rsubls"),
1.27447 ++ NORMAL_MNEMONIC(RSUBGT, RSUBGT, "rsubgt"),
1.27448 ++ NORMAL_MNEMONIC(RSUBLE, RSUBLE, "rsuble"),
1.27449 ++ NORMAL_MNEMONIC(RSUBHI, RSUBHI, "rsubhi"),
1.27450 ++ NORMAL_MNEMONIC(RSUBVS, RSUBVS, "rsubvs"),
1.27451 ++ NORMAL_MNEMONIC(RSUBVC, RSUBVC, "rsubvc"),
1.27452 ++ NORMAL_MNEMONIC(RSUBQS, RSUBQS, "rsubqs"),
1.27453 ++ NORMAL_MNEMONIC(RSUBAL, RSUBAL, "rsubal"),
1.27454 ++ NORMAL_MNEMONIC(RSUBHS, RSUBHS, "rsubhs"),
1.27455 ++ NORMAL_MNEMONIC(RSUBLO, RSUBLO, "rsublo"),
1.27456 ++ NORMAL_MNEMONIC(ADDEQ, ADDEQ, "addeq"),
1.27457 ++ NORMAL_MNEMONIC(ADDNE, ADDNE, "addne"),
1.27458 ++ NORMAL_MNEMONIC(ADDCC, ADDCC, "addcc"),
1.27459 ++ NORMAL_MNEMONIC(ADDCS, ADDCS, "addcs"),
1.27460 ++ NORMAL_MNEMONIC(ADDGE, ADDGE, "addge"),
1.27461 ++ NORMAL_MNEMONIC(ADDLT, ADDLT, "addlt"),
1.27462 ++ NORMAL_MNEMONIC(ADDMI, ADDMI, "addmi"),
1.27463 ++ NORMAL_MNEMONIC(ADDPL, ADDPL, "addpl"),
1.27464 ++ NORMAL_MNEMONIC(ADDLS, ADDLS, "addls"),
1.27465 ++ NORMAL_MNEMONIC(ADDGT, ADDGT, "addgt"),
1.27466 ++ NORMAL_MNEMONIC(ADDLE, ADDLE, "addle"),
1.27467 ++ NORMAL_MNEMONIC(ADDHI, ADDHI, "addhi"),
1.27468 ++ NORMAL_MNEMONIC(ADDVS, ADDVS, "addvs"),
1.27469 ++ NORMAL_MNEMONIC(ADDVC, ADDVC, "addvc"),
1.27470 ++ NORMAL_MNEMONIC(ADDQS, ADDQS, "addqs"),
1.27471 ++ NORMAL_MNEMONIC(ADDAL, ADDAL, "addal"),
1.27472 ++ NORMAL_MNEMONIC(ADDHS, ADDHS, "addhs"),
1.27473 ++ NORMAL_MNEMONIC(ADDLO, ADDLO, "addlo"),
1.27474 ++ NORMAL_MNEMONIC(ANDEQ, ANDEQ, "andeq"),
1.27475 ++ NORMAL_MNEMONIC(ANDNE, ANDNE, "andne"),
1.27476 ++ NORMAL_MNEMONIC(ANDCC, ANDCC, "andcc"),
1.27477 ++ NORMAL_MNEMONIC(ANDCS, ANDCS, "andcs"),
1.27478 ++ NORMAL_MNEMONIC(ANDGE, ANDGE, "andge"),
1.27479 ++ NORMAL_MNEMONIC(ANDLT, ANDLT, "andlt"),
1.27480 ++ NORMAL_MNEMONIC(ANDMI, ANDMI, "andmi"),
1.27481 ++ NORMAL_MNEMONIC(ANDPL, ANDPL, "andpl"),
1.27482 ++ NORMAL_MNEMONIC(ANDLS, ANDLS, "andls"),
1.27483 ++ NORMAL_MNEMONIC(ANDGT, ANDGT, "andgt"),
1.27484 ++ NORMAL_MNEMONIC(ANDLE, ANDLE, "andle"),
1.27485 ++ NORMAL_MNEMONIC(ANDHI, ANDHI, "andhi"),
1.27486 ++ NORMAL_MNEMONIC(ANDVS, ANDVS, "andvs"),
1.27487 ++ NORMAL_MNEMONIC(ANDVC, ANDVC, "andvc"),
1.27488 ++ NORMAL_MNEMONIC(ANDQS, ANDQS, "andqs"),
1.27489 ++ NORMAL_MNEMONIC(ANDAL, ANDAL, "andal"),
1.27490 ++ NORMAL_MNEMONIC(ANDHS, ANDHS, "andhs"),
1.27491 ++ NORMAL_MNEMONIC(ANDLO, ANDLO, "andlo"),
1.27492 ++ NORMAL_MNEMONIC(OREQ, OREQ, "oreq"),
1.27493 ++ NORMAL_MNEMONIC(ORNE, ORNE, "orne"),
1.27494 ++ NORMAL_MNEMONIC(ORCC, ORCC, "orcc"),
1.27495 ++ NORMAL_MNEMONIC(ORCS, ORCS, "orcs"),
1.27496 ++ NORMAL_MNEMONIC(ORGE, ORGE, "orge"),
1.27497 ++ NORMAL_MNEMONIC(ORLT, ORLT, "orlt"),
1.27498 ++ NORMAL_MNEMONIC(ORMI, ORMI, "ormi"),
1.27499 ++ NORMAL_MNEMONIC(ORPL, ORPL, "orpl"),
1.27500 ++ NORMAL_MNEMONIC(ORLS, ORLS, "orls"),
1.27501 ++ NORMAL_MNEMONIC(ORGT, ORGT, "orgt"),
1.27502 ++ NORMAL_MNEMONIC(ORLE, ORLE, "orle"),
1.27503 ++ NORMAL_MNEMONIC(ORHI, ORHI, "orhi"),
1.27504 ++ NORMAL_MNEMONIC(ORVS, ORVS, "orvs"),
1.27505 ++ NORMAL_MNEMONIC(ORVC, ORVC, "orvc"),
1.27506 ++ NORMAL_MNEMONIC(ORQS, ORQS, "orqs"),
1.27507 ++ NORMAL_MNEMONIC(ORAL, ORAL, "oral"),
1.27508 ++ NORMAL_MNEMONIC(ORHS, ORHS, "orhs"),
1.27509 ++ NORMAL_MNEMONIC(ORLO, ORLO, "orlo"),
1.27510 ++ NORMAL_MNEMONIC(EOREQ, EOREQ, "eoreq"),
1.27511 ++ NORMAL_MNEMONIC(EORNE, EORNE, "eorne"),
1.27512 ++ NORMAL_MNEMONIC(EORCC, EORCC, "eorcc"),
1.27513 ++ NORMAL_MNEMONIC(EORCS, EORCS, "eorcs"),
1.27514 ++ NORMAL_MNEMONIC(EORGE, EORGE, "eorge"),
1.27515 ++ NORMAL_MNEMONIC(EORLT, EORLT, "eorlt"),
1.27516 ++ NORMAL_MNEMONIC(EORMI, EORMI, "eormi"),
1.27517 ++ NORMAL_MNEMONIC(EORPL, EORPL, "eorpl"),
1.27518 ++ NORMAL_MNEMONIC(EORLS, EORLS, "eorls"),
1.27519 ++ NORMAL_MNEMONIC(EORGT, EORGT, "eorgt"),
1.27520 ++ NORMAL_MNEMONIC(EORLE, EORLE, "eorle"),
1.27521 ++ NORMAL_MNEMONIC(EORHI, EORHI, "eorhi"),
1.27522 ++ NORMAL_MNEMONIC(EORVS, EORVS, "eorvs"),
1.27523 ++ NORMAL_MNEMONIC(EORVC, EORVC, "eorvc"),
1.27524 ++ NORMAL_MNEMONIC(EORQS, EORQS, "eorqs"),
1.27525 ++ NORMAL_MNEMONIC(EORAL, EORAL, "eoral"),
1.27526 ++ NORMAL_MNEMONIC(EORHS, EORHS, "eorhs"),
1.27527 ++ NORMAL_MNEMONIC(EORLO, EORLO, "eorlo"),
1.27528 ++ NORMAL_MNEMONIC(LD_WEQ, LD_WEQ, "ld.weq"),
1.27529 ++ NORMAL_MNEMONIC(LD_WNE, LD_WNE, "ld.wne"),
1.27530 ++ NORMAL_MNEMONIC(LD_WCC, LD_WCC, "ld.wcc"),
1.27531 ++ NORMAL_MNEMONIC(LD_WCS, LD_WCS, "ld.wcs"),
1.27532 ++ NORMAL_MNEMONIC(LD_WGE, LD_WGE, "ld.wge"),
1.27533 ++ NORMAL_MNEMONIC(LD_WLT, LD_WLT, "ld.wlt"),
1.27534 ++ NORMAL_MNEMONIC(LD_WMI, LD_WMI, "ld.wmi"),
1.27535 ++ NORMAL_MNEMONIC(LD_WPL, LD_WPL, "ld.wpl"),
1.27536 ++ NORMAL_MNEMONIC(LD_WLS, LD_WLS, "ld.wls"),
1.27537 ++ NORMAL_MNEMONIC(LD_WGT, LD_WGT, "ld.wgt"),
1.27538 ++ NORMAL_MNEMONIC(LD_WLE, LD_WLE, "ld.wle"),
1.27539 ++ NORMAL_MNEMONIC(LD_WHI, LD_WHI, "ld.whi"),
1.27540 ++ NORMAL_MNEMONIC(LD_WVS, LD_WVS, "ld.wvs"),
1.27541 ++ NORMAL_MNEMONIC(LD_WVC, LD_WVC, "ld.wvc"),
1.27542 ++ NORMAL_MNEMONIC(LD_WQS, LD_WQS, "ld.wqs"),
1.27543 ++ NORMAL_MNEMONIC(LD_WAL, LD_WAL, "ld.wal"),
1.27544 ++ NORMAL_MNEMONIC(LD_WHS, LD_WHS, "ld.whs"),
1.27545 ++ NORMAL_MNEMONIC(LD_WLO, LD_WLO, "ld.wlo"),
1.27546 ++ NORMAL_MNEMONIC(LD_SHEQ, LD_SHEQ, "ld.sheq"),
1.27547 ++ NORMAL_MNEMONIC(LD_SHNE, LD_SHNE, "ld.shne"),
1.27548 ++ NORMAL_MNEMONIC(LD_SHCC, LD_SHCC, "ld.shcc"),
1.27549 ++ NORMAL_MNEMONIC(LD_SHCS, LD_SHCS, "ld.shcs"),
1.27550 ++ NORMAL_MNEMONIC(LD_SHGE, LD_SHGE, "ld.shge"),
1.27551 ++ NORMAL_MNEMONIC(LD_SHLT, LD_SHLT, "ld.shlt"),
1.27552 ++ NORMAL_MNEMONIC(LD_SHMI, LD_SHMI, "ld.shmi"),
1.27553 ++ NORMAL_MNEMONIC(LD_SHPL, LD_SHPL, "ld.shpl"),
1.27554 ++ NORMAL_MNEMONIC(LD_SHLS, LD_SHLS, "ld.shls"),
1.27555 ++ NORMAL_MNEMONIC(LD_SHGT, LD_SHGT, "ld.shgt"),
1.27556 ++ NORMAL_MNEMONIC(LD_SHLE, LD_SHLE, "ld.shle"),
1.27557 ++ NORMAL_MNEMONIC(LD_SHHI, LD_SHHI, "ld.shhi"),
1.27558 ++ NORMAL_MNEMONIC(LD_SHVS, LD_SHVS, "ld.shvs"),
1.27559 ++ NORMAL_MNEMONIC(LD_SHVC, LD_SHVC, "ld.shvc"),
1.27560 ++ NORMAL_MNEMONIC(LD_SHQS, LD_SHQS, "ld.shqs"),
1.27561 ++ NORMAL_MNEMONIC(LD_SHAL, LD_SHAL, "ld.shal"),
1.27562 ++ NORMAL_MNEMONIC(LD_SHHS, LD_SHHS, "ld.shhs"),
1.27563 ++ NORMAL_MNEMONIC(LD_SHLO, LD_SHLO, "ld.shlo"),
1.27564 ++ NORMAL_MNEMONIC(LD_UHEQ, LD_UHEQ, "ld.uheq"),
1.27565 ++ NORMAL_MNEMONIC(LD_UHNE, LD_UHNE, "ld.uhne"),
1.27566 ++ NORMAL_MNEMONIC(LD_UHCC, LD_UHCC, "ld.uhcc"),
1.27567 ++ NORMAL_MNEMONIC(LD_UHCS, LD_UHCS, "ld.uhcs"),
1.27568 ++ NORMAL_MNEMONIC(LD_UHGE, LD_UHGE, "ld.uhge"),
1.27569 ++ NORMAL_MNEMONIC(LD_UHLT, LD_UHLT, "ld.uhlt"),
1.27570 ++ NORMAL_MNEMONIC(LD_UHMI, LD_UHMI, "ld.uhmi"),
1.27571 ++ NORMAL_MNEMONIC(LD_UHPL, LD_UHPL, "ld.uhpl"),
1.27572 ++ NORMAL_MNEMONIC(LD_UHLS, LD_UHLS, "ld.uhls"),
1.27573 ++ NORMAL_MNEMONIC(LD_UHGT, LD_UHGT, "ld.uhgt"),
1.27574 ++ NORMAL_MNEMONIC(LD_UHLE, LD_UHLE, "ld.uhle"),
1.27575 ++ NORMAL_MNEMONIC(LD_UHHI, LD_UHHI, "ld.uhhi"),
1.27576 ++ NORMAL_MNEMONIC(LD_UHVS, LD_UHVS, "ld.uhvs"),
1.27577 ++ NORMAL_MNEMONIC(LD_UHVC, LD_UHVC, "ld.uhvc"),
1.27578 ++ NORMAL_MNEMONIC(LD_UHQS, LD_UHQS, "ld.uhqs"),
1.27579 ++ NORMAL_MNEMONIC(LD_UHAL, LD_UHAL, "ld.uhal"),
1.27580 ++ NORMAL_MNEMONIC(LD_UHHS, LD_UHHS, "ld.uhhs"),
1.27581 ++ NORMAL_MNEMONIC(LD_UHLO, LD_UHLO, "ld.uhlo"),
1.27582 ++ NORMAL_MNEMONIC(LD_SBEQ, LD_SBEQ, "ld.sbeq"),
1.27583 ++ NORMAL_MNEMONIC(LD_SBNE, LD_SBNE, "ld.sbne"),
1.27584 ++ NORMAL_MNEMONIC(LD_SBCC, LD_SBCC, "ld.sbcc"),
1.27585 ++ NORMAL_MNEMONIC(LD_SBCS, LD_SBCS, "ld.sbcs"),
1.27586 ++ NORMAL_MNEMONIC(LD_SBGE, LD_SBGE, "ld.sbge"),
1.27587 ++ NORMAL_MNEMONIC(LD_SBLT, LD_SBLT, "ld.sblt"),
1.27588 ++ NORMAL_MNEMONIC(LD_SBMI, LD_SBMI, "ld.sbmi"),
1.27589 ++ NORMAL_MNEMONIC(LD_SBPL, LD_SBPL, "ld.sbpl"),
1.27590 ++ NORMAL_MNEMONIC(LD_SBLS, LD_SBLS, "ld.sbls"),
1.27591 ++ NORMAL_MNEMONIC(LD_SBGT, LD_SBGT, "ld.sbgt"),
1.27592 ++ NORMAL_MNEMONIC(LD_SBLE, LD_SBLE, "ld.sble"),
1.27593 ++ NORMAL_MNEMONIC(LD_SBHI, LD_SBHI, "ld.sbhi"),
1.27594 ++ NORMAL_MNEMONIC(LD_SBVS, LD_SBVS, "ld.sbvs"),
1.27595 ++ NORMAL_MNEMONIC(LD_SBVC, LD_SBVC, "ld.sbvc"),
1.27596 ++ NORMAL_MNEMONIC(LD_SBQS, LD_SBQS, "ld.sbqs"),
1.27597 ++ NORMAL_MNEMONIC(LD_SBAL, LD_SBAL, "ld.sbal"),
1.27598 ++ NORMAL_MNEMONIC(LD_SBHS, LD_SBHS, "ld.sbhs"),
1.27599 ++ NORMAL_MNEMONIC(LD_SBLO, LD_SBLO, "ld.sblo"),
1.27600 ++ NORMAL_MNEMONIC(LD_UBEQ, LD_UBEQ, "ld.ubeq"),
1.27601 ++ NORMAL_MNEMONIC(LD_UBNE, LD_UBNE, "ld.ubne"),
1.27602 ++ NORMAL_MNEMONIC(LD_UBCC, LD_UBCC, "ld.ubcc"),
1.27603 ++ NORMAL_MNEMONIC(LD_UBCS, LD_UBCS, "ld.ubcs"),
1.27604 ++ NORMAL_MNEMONIC(LD_UBGE, LD_UBGE, "ld.ubge"),
1.27605 ++ NORMAL_MNEMONIC(LD_UBLT, LD_UBLT, "ld.ublt"),
1.27606 ++ NORMAL_MNEMONIC(LD_UBMI, LD_UBMI, "ld.ubmi"),
1.27607 ++ NORMAL_MNEMONIC(LD_UBPL, LD_UBPL, "ld.ubpl"),
1.27608 ++ NORMAL_MNEMONIC(LD_UBLS, LD_UBLS, "ld.ubls"),
1.27609 ++ NORMAL_MNEMONIC(LD_UBGT, LD_UBGT, "ld.ubgt"),
1.27610 ++ NORMAL_MNEMONIC(LD_UBLE, LD_UBLE, "ld.uble"),
1.27611 ++ NORMAL_MNEMONIC(LD_UBHI, LD_UBHI, "ld.ubhi"),
1.27612 ++ NORMAL_MNEMONIC(LD_UBVS, LD_UBVS, "ld.ubvs"),
1.27613 ++ NORMAL_MNEMONIC(LD_UBVC, LD_UBVC, "ld.ubvc"),
1.27614 ++ NORMAL_MNEMONIC(LD_UBQS, LD_UBQS, "ld.ubqs"),
1.27615 ++ NORMAL_MNEMONIC(LD_UBAL, LD_UBAL, "ld.ubal"),
1.27616 ++ NORMAL_MNEMONIC(LD_UBHS, LD_UBHS, "ld.ubhs"),
1.27617 ++ NORMAL_MNEMONIC(LD_UBLO, LD_UBLO, "ld.ublo"),
1.27618 ++ NORMAL_MNEMONIC(ST_WEQ, ST_WEQ, "st.weq"),
1.27619 ++ NORMAL_MNEMONIC(ST_WNE, ST_WNE, "st.wne"),
1.27620 ++ NORMAL_MNEMONIC(ST_WCC, ST_WCC, "st.wcc"),
1.27621 ++ NORMAL_MNEMONIC(ST_WCS, ST_WCS, "st.wcs"),
1.27622 ++ NORMAL_MNEMONIC(ST_WGE, ST_WGE, "st.wge"),
1.27623 ++ NORMAL_MNEMONIC(ST_WLT, ST_WLT, "st.wlt"),
1.27624 ++ NORMAL_MNEMONIC(ST_WMI, ST_WMI, "st.wmi"),
1.27625 ++ NORMAL_MNEMONIC(ST_WPL, ST_WPL, "st.wpl"),
1.27626 ++ NORMAL_MNEMONIC(ST_WLS, ST_WLS, "st.wls"),
1.27627 ++ NORMAL_MNEMONIC(ST_WGT, ST_WGT, "st.wgt"),
1.27628 ++ NORMAL_MNEMONIC(ST_WLE, ST_WLE, "st.wle"),
1.27629 ++ NORMAL_MNEMONIC(ST_WHI, ST_WHI, "st.whi"),
1.27630 ++ NORMAL_MNEMONIC(ST_WVS, ST_WVS, "st.wvs"),
1.27631 ++ NORMAL_MNEMONIC(ST_WVC, ST_WVC, "st.wvc"),
1.27632 ++ NORMAL_MNEMONIC(ST_WQS, ST_WQS, "st.wqs"),
1.27633 ++ NORMAL_MNEMONIC(ST_WAL, ST_WAL, "st.wal"),
1.27634 ++ NORMAL_MNEMONIC(ST_WHS, ST_WHS, "st.whs"),
1.27635 ++ NORMAL_MNEMONIC(ST_WLO, ST_WLO, "st.wlo"),
1.27636 ++ NORMAL_MNEMONIC(ST_HEQ, ST_HEQ, "st.heq"),
1.27637 ++ NORMAL_MNEMONIC(ST_HNE, ST_HNE, "st.hne"),
1.27638 ++ NORMAL_MNEMONIC(ST_HCC, ST_HCC, "st.hcc"),
1.27639 ++ NORMAL_MNEMONIC(ST_HCS, ST_HCS, "st.hcs"),
1.27640 ++ NORMAL_MNEMONIC(ST_HGE, ST_HGE, "st.hge"),
1.27641 ++ NORMAL_MNEMONIC(ST_HLT, ST_HLT, "st.hlt"),
1.27642 ++ NORMAL_MNEMONIC(ST_HMI, ST_HMI, "st.hmi"),
1.27643 ++ NORMAL_MNEMONIC(ST_HPL, ST_HPL, "st.hpl"),
1.27644 ++ NORMAL_MNEMONIC(ST_HLS, ST_HLS, "st.hls"),
1.27645 ++ NORMAL_MNEMONIC(ST_HGT, ST_HGT, "st.hgt"),
1.27646 ++ NORMAL_MNEMONIC(ST_HLE, ST_HLE, "st.hle"),
1.27647 ++ NORMAL_MNEMONIC(ST_HHI, ST_HHI, "st.hhi"),
1.27648 ++ NORMAL_MNEMONIC(ST_HVS, ST_HVS, "st.hvs"),
1.27649 ++ NORMAL_MNEMONIC(ST_HVC, ST_HVC, "st.hvc"),
1.27650 ++ NORMAL_MNEMONIC(ST_HQS, ST_HQS, "st.hqs"),
1.27651 ++ NORMAL_MNEMONIC(ST_HAL, ST_HAL, "st.hal"),
1.27652 ++ NORMAL_MNEMONIC(ST_HHS, ST_HHS, "st.hhs"),
1.27653 ++ NORMAL_MNEMONIC(ST_HLO, ST_HLO, "st.hlo"),
1.27654 ++ NORMAL_MNEMONIC(ST_BEQ, ST_BEQ, "st.beq"),
1.27655 ++ NORMAL_MNEMONIC(ST_BNE, ST_BNE, "st.bne"),
1.27656 ++ NORMAL_MNEMONIC(ST_BCC, ST_BCC, "st.bcc"),
1.27657 ++ NORMAL_MNEMONIC(ST_BCS, ST_BCS, "st.bcs"),
1.27658 ++ NORMAL_MNEMONIC(ST_BGE, ST_BGE, "st.bge"),
1.27659 ++ NORMAL_MNEMONIC(ST_BLT, ST_BLT, "st.blt"),
1.27660 ++ NORMAL_MNEMONIC(ST_BMI, ST_BMI, "st.bmi"),
1.27661 ++ NORMAL_MNEMONIC(ST_BPL, ST_BPL, "st.bpl"),
1.27662 ++ NORMAL_MNEMONIC(ST_BLS, ST_BLS, "st.bls"),
1.27663 ++ NORMAL_MNEMONIC(ST_BGT, ST_BGT, "st.bgt"),
1.27664 ++ NORMAL_MNEMONIC(ST_BLE, ST_BLE, "st.ble"),
1.27665 ++ NORMAL_MNEMONIC(ST_BHI, ST_BHI, "st.bhi"),
1.27666 ++ NORMAL_MNEMONIC(ST_BVS, ST_BVS, "st.bvs"),
1.27667 ++ NORMAL_MNEMONIC(ST_BVC, ST_BVC, "st.bvc"),
1.27668 ++ NORMAL_MNEMONIC(ST_BQS, ST_BQS, "st.bqs"),
1.27669 ++ NORMAL_MNEMONIC(ST_BAL, ST_BAL, "st.bal"),
1.27670 ++ NORMAL_MNEMONIC(ST_BHS, ST_BHS, "st.bhs"),
1.27671 ++ NORMAL_MNEMONIC(ST_BLO, ST_BLO, "st.blo"),
1.27672 ++ NORMAL_MNEMONIC(MOVH, MOVH, "movh"),
1.27673 ++
1.27674 ++ };
1.27675 ++#undef NORMAL_MNEMONIC
1.27676 ++#undef ALIAS_MNEMONIC
1.27677 ++#undef FP_MNEMONIC
1.27678 +--- /dev/null
1.27679 ++++ b/opcodes/avr32-opc.h
1.27680 +@@ -0,0 +1,2370 @@
1.27681 ++/* Opcode tables for AVR32.
1.27682 ++ Copyright 2005, 2006 Atmel Corporation.
1.27683 ++
1.27684 ++ Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
1.27685 ++
1.27686 ++ This file is part of libopcodes.
1.27687 ++
1.27688 ++ This program is free software; you can redistribute it and/or
1.27689 ++ modify it under the terms of the GNU General Public License as
1.27690 ++ published by the Free Software Foundation; either version 2 of the
1.27691 ++ License, or (at your option) any later version.
1.27692 ++
1.27693 ++ This program is distributed in the hope that it will be useful, but
1.27694 ++ WITHOUT ANY WARRANTY; without even the implied warranty of
1.27695 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1.27696 ++ General Public License for more details.
1.27697 ++
1.27698 ++ You should have received a copy of the GNU General Public License
1.27699 ++ along with this program; if not, write to the Free Software
1.27700 ++ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1.27701 ++ 02111-1307, USA. */
1.27702 ++
1.27703 ++#include "bfd.h"
1.27704 ++
1.27705 ++#define AVR32_MAX_OPERANDS 8
1.27706 ++#define AVR32_MAX_FIELDS 8
1.27707 ++
1.27708 ++#define AVR32_V1 (1 << 1)
1.27709 ++#define AVR32_SIMD (1 << 2)
1.27710 ++#define AVR32_DSP (1 << 3)
1.27711 ++#define AVR32_RMW (1 << 4)
1.27712 ++#define AVR32_V2 (1 << 5)
1.27713 ++#define AVR32_FP (1 << 16)
1.27714 ++#define AVR32_PICO (1 << 17)
1.27715 ++
1.27716 ++/* Registers we commonly refer to */
1.27717 ++#define AVR32_REG_R12 12
1.27718 ++#define AVR32_REG_SP 13
1.27719 ++#define AVR32_REG_LR 14
1.27720 ++#define AVR32_REG_PC 15
1.27721 ++
1.27722 ++struct avr32_ifield
1.27723 ++{
1.27724 ++ int id;
1.27725 ++ unsigned short bitsize;
1.27726 ++ unsigned short shift;
1.27727 ++ unsigned long mask;
1.27728 ++
1.27729 ++ /* If the value doesn't fit, it will be truncated with no warning */
1.27730 ++ void (*insert)(const struct avr32_ifield *, void *, unsigned long);
1.27731 ++ void (*extract)(const struct avr32_ifield *, void *, unsigned long *);
1.27732 ++};
1.27733 ++
1.27734 ++struct avr32_opcode
1.27735 ++{
1.27736 ++ int id;
1.27737 ++ int size;
1.27738 ++ unsigned long value;
1.27739 ++ unsigned long mask;
1.27740 ++ const struct avr32_syntax *syntax;
1.27741 ++ bfd_reloc_code_real_type reloc_type;
1.27742 ++ unsigned int nr_fields;
1.27743 ++ /* if relaxable, which field is variable, otherwise -1 */
1.27744 ++ int var_field;
1.27745 ++ const struct avr32_ifield *fields[AVR32_MAX_FIELDS];
1.27746 ++};
1.27747 ++
1.27748 ++struct avr32_alias
1.27749 ++{
1.27750 ++ int id;
1.27751 ++ const struct avr32_opcode *opc;
1.27752 ++ struct {
1.27753 ++ int is_opindex;
1.27754 ++ unsigned long value;
1.27755 ++ } operand_map[AVR32_MAX_OPERANDS];
1.27756 ++};
1.27757 ++
1.27758 ++struct avr32_syntax
1.27759 ++{
1.27760 ++ int id;
1.27761 ++ unsigned long isa_flags;
1.27762 ++ const struct avr32_mnemonic *mnemonic;
1.27763 ++ int type;
1.27764 ++ union {
1.27765 ++ const struct avr32_opcode *opc;
1.27766 ++ const struct avr32_alias *alias;
1.27767 ++ } u;
1.27768 ++ const struct avr32_syntax *next;
1.27769 ++ /* negative means "vararg" */
1.27770 ++ int nr_operands;
1.27771 ++ int operand[AVR32_MAX_OPERANDS];
1.27772 ++};
1.27773 ++
1.27774 ++#if 0
1.27775 ++#define AVR32_ALIAS_MAKE_CONST(val) ((val) | 0x80000000UL)
1.27776 ++#define AVR32_ALIAS_IS_CONST(mapval) (((mapval) & 0x80000000UL) != 0)
1.27777 ++#define AVR32_ALIAS_GET_CONST(mapval) ((mapval) & ~0x80000000UL)
1.27778 ++#endif
1.27779 ++
1.27780 ++struct avr32_mnemonic
1.27781 ++{
1.27782 ++ int id;
1.27783 ++ const char *name;
1.27784 ++ const struct avr32_syntax *syntax;
1.27785 ++};
1.27786 ++
1.27787 ++extern const struct avr32_ifield avr32_ifield_table[];
1.27788 ++extern struct avr32_opcode avr32_opc_table[];
1.27789 ++extern const struct avr32_syntax avr32_syntax_table[];
1.27790 ++extern const struct avr32_alias avr32_alias_table[];
1.27791 ++extern const struct avr32_mnemonic avr32_mnemonic_table[];
1.27792 ++
1.27793 ++extern void avr32_insert_simple(const struct avr32_ifield *field,
1.27794 ++ void *buf, unsigned long value);
1.27795 ++extern void avr32_insert_bit5c(const struct avr32_ifield *field,
1.27796 ++ void *buf, unsigned long value);
1.27797 ++extern void avr32_insert_k10(const struct avr32_ifield *field,
1.27798 ++ void *buf, unsigned long value);
1.27799 ++extern void avr32_insert_k21(const struct avr32_ifield *field,
1.27800 ++ void *buf, unsigned long value);
1.27801 ++extern void avr32_insert_cpop(const struct avr32_ifield *field,
1.27802 ++ void *buf, unsigned long value);
1.27803 ++extern void avr32_insert_k12cp(const struct avr32_ifield *field,
1.27804 ++ void *buf, unsigned long value);
1.27805 ++
1.27806 ++extern void avr32_extract_simple(const struct avr32_ifield *field,
1.27807 ++ void *buf, unsigned long *value);
1.27808 ++extern void avr32_extract_bit5c(const struct avr32_ifield *field,
1.27809 ++ void *buf, unsigned long *value);
1.27810 ++extern void avr32_extract_k10(const struct avr32_ifield *field,
1.27811 ++ void *buf, unsigned long *value);
1.27812 ++extern void avr32_extract_k21(const struct avr32_ifield *field,
1.27813 ++ void *buf, unsigned long *value);
1.27814 ++extern void avr32_extract_cpop(const struct avr32_ifield *field,
1.27815 ++ void *buf, unsigned long *value);
1.27816 ++extern void avr32_extract_k12cp(const struct avr32_ifield *field,
1.27817 ++ void *buf, unsigned long *value);
1.27818 ++
1.27819 ++enum avr32_operand_type
1.27820 ++{
1.27821 ++ AVR32_OPERAND_INTREG, /* just a register */
1.27822 ++ AVR32_OPERAND_INTREG_PREDEC, /* register with pre-decrement */
1.27823 ++ AVR32_OPERAND_INTREG_POSTINC, /* register with post-increment */
1.27824 ++ AVR32_OPERAND_INTREG_LSL, /* register with left shift */
1.27825 ++ AVR32_OPERAND_INTREG_LSR, /* register with right shift */
1.27826 ++ AVR32_OPERAND_INTREG_BSEL, /* register with byte selector */
1.27827 ++ AVR32_OPERAND_INTREG_HSEL, /* register with halfword selector */
1.27828 ++ AVR32_OPERAND_INTREG_SDISP, /* Rp[signed disp] */
1.27829 ++ AVR32_OPERAND_INTREG_SDISP_H, /* Rp[signed hword-aligned disp] */
1.27830 ++ AVR32_OPERAND_INTREG_SDISP_W, /* Rp[signed word-aligned disp] */
1.27831 ++ AVR32_OPERAND_INTREG_UDISP, /* Rp[unsigned disp] */
1.27832 ++ AVR32_OPERAND_INTREG_UDISP_H, /* Rp[unsigned hword-aligned disp] */
1.27833 ++ AVR32_OPERAND_INTREG_UDISP_W, /* Rp[unsigned word-aligned disp] */
1.27834 ++ AVR32_OPERAND_INTREG_INDEX, /* Rp[Ri << sa] */
1.27835 ++ AVR32_OPERAND_INTREG_XINDEX, /* Rp[Ri:bytesel << 2] */
1.27836 ++ AVR32_OPERAND_DWREG, /* Even-numbered register */
1.27837 ++ AVR32_OPERAND_PC_UDISP_W, /* PC[unsigned word-aligned disp] or label */
1.27838 ++ AVR32_OPERAND_SP, /* Just SP */
1.27839 ++ AVR32_OPERAND_SP_UDISP_W, /* SP[unsigned word-aligned disp] */
1.27840 ++ AVR32_OPERAND_CPNO,
1.27841 ++ AVR32_OPERAND_CPREG,
1.27842 ++ AVR32_OPERAND_CPREG_D,
1.27843 ++ AVR32_OPERAND_UNSIGNED_CONST,
1.27844 ++ AVR32_OPERAND_UNSIGNED_CONST_W,
1.27845 ++ AVR32_OPERAND_SIGNED_CONST,
1.27846 ++ AVR32_OPERAND_SIGNED_CONST_W,
1.27847 ++ AVR32_OPERAND_JMPLABEL,
1.27848 ++ AVR32_OPERAND_UNSIGNED_NUMBER,
1.27849 ++ AVR32_OPERAND_UNSIGNED_NUMBER_W,
1.27850 ++ AVR32_OPERAND_REGLIST8,
1.27851 ++ AVR32_OPERAND_REGLIST9,
1.27852 ++ AVR32_OPERAND_REGLIST16,
1.27853 ++ AVR32_OPERAND_REGLIST_LDM,
1.27854 ++ AVR32_OPERAND_REGLIST_CP8,
1.27855 ++ AVR32_OPERAND_REGLIST_CPD8,
1.27856 ++ AVR32_OPERAND_RETVAL,
1.27857 ++ AVR32_OPERAND_MCALL,
1.27858 ++ AVR32_OPERAND_JOSPINC,
1.27859 ++ AVR32_OPERAND_COH,
1.27860 ++ AVR32_OPERAND_FPREG_S,
1.27861 ++ AVR32_OPERAND_FPREG_D,
1.27862 ++ AVR32_OPERAND_PICO_REG_W,
1.27863 ++ AVR32_OPERAND_PICO_REG_D,
1.27864 ++ AVR32_OPERAND_PICO_REGLIST_W,
1.27865 ++ AVR32_OPERAND_PICO_REGLIST_D,
1.27866 ++ AVR32_OPERAND_PICO_IN,
1.27867 ++ AVR32_OPERAND_PICO_OUT0,
1.27868 ++ AVR32_OPERAND_PICO_OUT1,
1.27869 ++ AVR32_OPERAND_PICO_OUT2,
1.27870 ++ AVR32_OPERAND_PICO_OUT3,
1.27871 ++ AVR32_OPERAND__END_
1.27872 ++};
1.27873 ++#define AVR32_OPERAND_UNKNOWN AVR32_OPERAND__END_
1.27874 ++#define AVR32_NR_OPERANDS AVR32_OPERAND__END_
1.27875 ++
1.27876 ++enum avr32_ifield_type
1.27877 ++{
1.27878 ++ AVR32_IFIELD_RX,
1.27879 ++ AVR32_IFIELD_RY,
1.27880 ++ AVR32_IFIELD_COND4C,
1.27881 ++ AVR32_IFIELD_K8C,
1.27882 ++ AVR32_IFIELD_K7C,
1.27883 ++ AVR32_IFIELD_K5C,
1.27884 ++ AVR32_IFIELD_K3,
1.27885 ++ AVR32_IFIELD_RY_DW,
1.27886 ++ AVR32_IFIELD_COND4E,
1.27887 ++ AVR32_IFIELD_K8E,
1.27888 ++ AVR32_IFIELD_BIT5C,
1.27889 ++ AVR32_IFIELD_COND3,
1.27890 ++ AVR32_IFIELD_K10,
1.27891 ++ AVR32_IFIELD_POPM,
1.27892 ++ AVR32_IFIELD_K2,
1.27893 ++ AVR32_IFIELD_RD_E,
1.27894 ++ AVR32_IFIELD_RD_DW,
1.27895 ++ AVR32_IFIELD_X,
1.27896 ++ AVR32_IFIELD_Y,
1.27897 ++ AVR32_IFIELD_X2,
1.27898 ++ AVR32_IFIELD_Y2,
1.27899 ++ AVR32_IFIELD_K5E,
1.27900 ++ AVR32_IFIELD_PART2,
1.27901 ++ AVR32_IFIELD_PART1,
1.27902 ++ AVR32_IFIELD_K16,
1.27903 ++ AVR32_IFIELD_CACHEOP,
1.27904 ++ AVR32_IFIELD_K11,
1.27905 ++ AVR32_IFIELD_K21,
1.27906 ++ AVR32_IFIELD_CPOP,
1.27907 ++ AVR32_IFIELD_CPNO,
1.27908 ++ AVR32_IFIELD_CRD_RI,
1.27909 ++ AVR32_IFIELD_CRX,
1.27910 ++ AVR32_IFIELD_CRY,
1.27911 ++ AVR32_IFIELD_K7E,
1.27912 ++ AVR32_IFIELD_CRD_DW,
1.27913 ++ AVR32_IFIELD_PART1_K12,
1.27914 ++ AVR32_IFIELD_PART2_K12,
1.27915 ++ AVR32_IFIELD_K12,
1.27916 ++ AVR32_IFIELD_S5,
1.27917 ++ AVR32_IFIELD_K5E2,
1.27918 ++ AVR32_IFIELD_K4,
1.27919 ++ AVR32_IFIELD_COND4E2,
1.27920 ++ AVR32_IFIELD_K8E2,
1.27921 ++ AVR32_IFIELD_K6,
1.27922 ++ AVR32_IFIELD_MEM15,
1.27923 ++ AVR32_IFIELD_MEMB5,
1.27924 ++ AVR32_IFIELD_W,
1.27925 ++ AVR32_IFIELD_CM_HL,
1.27926 ++ AVR32_IFIELD_K12CP,
1.27927 ++ AVR32_IFIELD_K9E,
1.27928 ++ AVR32_IFIELD__END_,
1.27929 ++};
1.27930 ++#define AVR32_NR_IFIELDS AVR32_IFIELD__END_
1.27931 ++
1.27932 ++enum avr32_opc_type
1.27933 ++{
1.27934 ++ AVR32_OPC_ABS,
1.27935 ++ AVR32_OPC_ACALL,
1.27936 ++ AVR32_OPC_ACR,
1.27937 ++ AVR32_OPC_ADC,
1.27938 ++ AVR32_OPC_ADD1,
1.27939 ++ AVR32_OPC_ADD2,
1.27940 ++ AVR32_OPC_ADDABS,
1.27941 ++ AVR32_OPC_ADDHH_W,
1.27942 ++ AVR32_OPC_AND1,
1.27943 ++ AVR32_OPC_AND2,
1.27944 ++ AVR32_OPC_AND3,
1.27945 ++ AVR32_OPC_ANDH,
1.27946 ++ AVR32_OPC_ANDH_COH,
1.27947 ++ AVR32_OPC_ANDL,
1.27948 ++ AVR32_OPC_ANDL_COH,
1.27949 ++ AVR32_OPC_ANDN,
1.27950 ++ AVR32_OPC_ASR1,
1.27951 ++ AVR32_OPC_ASR3,
1.27952 ++ AVR32_OPC_ASR2,
1.27953 ++ AVR32_OPC_BLD,
1.27954 ++ AVR32_OPC_BREQ1,
1.27955 ++ AVR32_OPC_BRNE1,
1.27956 ++ AVR32_OPC_BRCC1,
1.27957 ++ AVR32_OPC_BRCS1,
1.27958 ++ AVR32_OPC_BRGE1,
1.27959 ++ AVR32_OPC_BRLT1,
1.27960 ++ AVR32_OPC_BRMI1,
1.27961 ++ AVR32_OPC_BRPL1,
1.27962 ++ AVR32_OPC_BREQ2,
1.27963 ++ AVR32_OPC_BRNE2,
1.27964 ++ AVR32_OPC_BRCC2,
1.27965 ++ AVR32_OPC_BRCS2,
1.27966 ++ AVR32_OPC_BRGE2,
1.27967 ++ AVR32_OPC_BRLT2,
1.27968 ++ AVR32_OPC_BRMI2,
1.27969 ++ AVR32_OPC_BRPL2,
1.27970 ++ AVR32_OPC_BRLS,
1.27971 ++ AVR32_OPC_BRGT,
1.27972 ++ AVR32_OPC_BRLE,
1.27973 ++ AVR32_OPC_BRHI,
1.27974 ++ AVR32_OPC_BRVS,
1.27975 ++ AVR32_OPC_BRVC,
1.27976 ++ AVR32_OPC_BRQS,
1.27977 ++ AVR32_OPC_BRAL,
1.27978 ++ AVR32_OPC_BREAKPOINT,
1.27979 ++ AVR32_OPC_BREV,
1.27980 ++ AVR32_OPC_BST,
1.27981 ++ AVR32_OPC_CACHE,
1.27982 ++ AVR32_OPC_CASTS_B,
1.27983 ++ AVR32_OPC_CASTS_H,
1.27984 ++ AVR32_OPC_CASTU_B,
1.27985 ++ AVR32_OPC_CASTU_H,
1.27986 ++ AVR32_OPC_CBR,
1.27987 ++ AVR32_OPC_CLZ,
1.27988 ++ AVR32_OPC_COM,
1.27989 ++ AVR32_OPC_COP,
1.27990 ++ AVR32_OPC_CP_B,
1.27991 ++ AVR32_OPC_CP_H,
1.27992 ++ AVR32_OPC_CP_W1,
1.27993 ++ AVR32_OPC_CP_W2,
1.27994 ++ AVR32_OPC_CP_W3,
1.27995 ++ AVR32_OPC_CPC1,
1.27996 ++ AVR32_OPC_CPC2,
1.27997 ++ AVR32_OPC_CSRF,
1.27998 ++ AVR32_OPC_CSRFCZ,
1.27999 ++ AVR32_OPC_DIVS,
1.28000 ++ AVR32_OPC_DIVU,
1.28001 ++ AVR32_OPC_EOR1,
1.28002 ++ AVR32_OPC_EOR2,
1.28003 ++ AVR32_OPC_EOR3,
1.28004 ++ AVR32_OPC_EORL,
1.28005 ++ AVR32_OPC_EORH,
1.28006 ++ AVR32_OPC_FRS,
1.28007 ++ AVR32_OPC_ICALL,
1.28008 ++ AVR32_OPC_INCJOSP,
1.28009 ++ AVR32_OPC_LD_D1,
1.28010 ++ AVR32_OPC_LD_D2,
1.28011 ++ AVR32_OPC_LD_D3,
1.28012 ++ AVR32_OPC_LD_D5,
1.28013 ++ AVR32_OPC_LD_D4,
1.28014 ++ AVR32_OPC_LD_SB2,
1.28015 ++ AVR32_OPC_LD_SB1,
1.28016 ++ AVR32_OPC_LD_UB1,
1.28017 ++ AVR32_OPC_LD_UB2,
1.28018 ++ AVR32_OPC_LD_UB5,
1.28019 ++ AVR32_OPC_LD_UB3,
1.28020 ++ AVR32_OPC_LD_UB4,
1.28021 ++ AVR32_OPC_LD_SH1,
1.28022 ++ AVR32_OPC_LD_SH2,
1.28023 ++ AVR32_OPC_LD_SH5,
1.28024 ++ AVR32_OPC_LD_SH3,
1.28025 ++ AVR32_OPC_LD_SH4,
1.28026 ++ AVR32_OPC_LD_UH1,
1.28027 ++ AVR32_OPC_LD_UH2,
1.28028 ++ AVR32_OPC_LD_UH5,
1.28029 ++ AVR32_OPC_LD_UH3,
1.28030 ++ AVR32_OPC_LD_UH4,
1.28031 ++ AVR32_OPC_LD_W1,
1.28032 ++ AVR32_OPC_LD_W2,
1.28033 ++ AVR32_OPC_LD_W5,
1.28034 ++ AVR32_OPC_LD_W6,
1.28035 ++ AVR32_OPC_LD_W3,
1.28036 ++ AVR32_OPC_LD_W4,
1.28037 ++ AVR32_OPC_LDC_D1,
1.28038 ++ AVR32_OPC_LDC_D2,
1.28039 ++ AVR32_OPC_LDC_D3,
1.28040 ++ AVR32_OPC_LDC_W1,
1.28041 ++ AVR32_OPC_LDC_W2,
1.28042 ++ AVR32_OPC_LDC_W3,
1.28043 ++ AVR32_OPC_LDC0_D,
1.28044 ++ AVR32_OPC_LDC0_W,
1.28045 ++ AVR32_OPC_LDCM_D,
1.28046 ++ AVR32_OPC_LDCM_D_PU,
1.28047 ++ AVR32_OPC_LDCM_W,
1.28048 ++ AVR32_OPC_LDCM_W_PU,
1.28049 ++ AVR32_OPC_LDDPC,
1.28050 ++ AVR32_OPC_LDDPC_EXT,
1.28051 ++ AVR32_OPC_LDDSP,
1.28052 ++ AVR32_OPC_LDINS_B,
1.28053 ++ AVR32_OPC_LDINS_H,
1.28054 ++ AVR32_OPC_LDM,
1.28055 ++ AVR32_OPC_LDMTS,
1.28056 ++ AVR32_OPC_LDMTS_PU,
1.28057 ++ AVR32_OPC_LDSWP_SH,
1.28058 ++ AVR32_OPC_LDSWP_UH,
1.28059 ++ AVR32_OPC_LDSWP_W,
1.28060 ++ AVR32_OPC_LSL1,
1.28061 ++ AVR32_OPC_LSL3,
1.28062 ++ AVR32_OPC_LSL2,
1.28063 ++ AVR32_OPC_LSR1,
1.28064 ++ AVR32_OPC_LSR3,
1.28065 ++ AVR32_OPC_LSR2,
1.28066 ++ AVR32_OPC_MAC,
1.28067 ++ AVR32_OPC_MACHH_D,
1.28068 ++ AVR32_OPC_MACHH_W,
1.28069 ++ AVR32_OPC_MACS_D,
1.28070 ++ AVR32_OPC_MACSATHH_W,
1.28071 ++ AVR32_OPC_MACUD,
1.28072 ++ AVR32_OPC_MACWH_D,
1.28073 ++ AVR32_OPC_MAX,
1.28074 ++ AVR32_OPC_MCALL,
1.28075 ++ AVR32_OPC_MFDR,
1.28076 ++ AVR32_OPC_MFSR,
1.28077 ++ AVR32_OPC_MIN,
1.28078 ++ AVR32_OPC_MOV3,
1.28079 ++ AVR32_OPC_MOV1,
1.28080 ++ AVR32_OPC_MOV2,
1.28081 ++ AVR32_OPC_MOVEQ1,
1.28082 ++ AVR32_OPC_MOVNE1,
1.28083 ++ AVR32_OPC_MOVCC1,
1.28084 ++ AVR32_OPC_MOVCS1,
1.28085 ++ AVR32_OPC_MOVGE1,
1.28086 ++ AVR32_OPC_MOVLT1,
1.28087 ++ AVR32_OPC_MOVMI1,
1.28088 ++ AVR32_OPC_MOVPL1,
1.28089 ++ AVR32_OPC_MOVLS1,
1.28090 ++ AVR32_OPC_MOVGT1,
1.28091 ++ AVR32_OPC_MOVLE1,
1.28092 ++ AVR32_OPC_MOVHI1,
1.28093 ++ AVR32_OPC_MOVVS1,
1.28094 ++ AVR32_OPC_MOVVC1,
1.28095 ++ AVR32_OPC_MOVQS1,
1.28096 ++ AVR32_OPC_MOVAL1,
1.28097 ++ AVR32_OPC_MOVEQ2,
1.28098 ++ AVR32_OPC_MOVNE2,
1.28099 ++ AVR32_OPC_MOVCC2,
1.28100 ++ AVR32_OPC_MOVCS2,
1.28101 ++ AVR32_OPC_MOVGE2,
1.28102 ++ AVR32_OPC_MOVLT2,
1.28103 ++ AVR32_OPC_MOVMI2,
1.28104 ++ AVR32_OPC_MOVPL2,
1.28105 ++ AVR32_OPC_MOVLS2,
1.28106 ++ AVR32_OPC_MOVGT2,
1.28107 ++ AVR32_OPC_MOVLE2,
1.28108 ++ AVR32_OPC_MOVHI2,
1.28109 ++ AVR32_OPC_MOVVS2,
1.28110 ++ AVR32_OPC_MOVVC2,
1.28111 ++ AVR32_OPC_MOVQS2,
1.28112 ++ AVR32_OPC_MOVAL2,
1.28113 ++ AVR32_OPC_MTDR,
1.28114 ++ AVR32_OPC_MTSR,
1.28115 ++ AVR32_OPC_MUL1,
1.28116 ++ AVR32_OPC_MUL2,
1.28117 ++ AVR32_OPC_MUL3,
1.28118 ++ AVR32_OPC_MULHH_W,
1.28119 ++ AVR32_OPC_MULNHH_W,
1.28120 ++ AVR32_OPC_MULNWH_D,
1.28121 ++ AVR32_OPC_MULSD,
1.28122 ++ AVR32_OPC_MULSATHH_H,
1.28123 ++ AVR32_OPC_MULSATHH_W,
1.28124 ++ AVR32_OPC_MULSATRNDHH_H,
1.28125 ++ AVR32_OPC_MULSATRNDWH_W,
1.28126 ++ AVR32_OPC_MULSATWH_W,
1.28127 ++ AVR32_OPC_MULU_D,
1.28128 ++ AVR32_OPC_MULWH_D,
1.28129 ++ AVR32_OPC_MUSFR,
1.28130 ++ AVR32_OPC_MUSTR,
1.28131 ++ AVR32_OPC_MVCR_D,
1.28132 ++ AVR32_OPC_MVCR_W,
1.28133 ++ AVR32_OPC_MVRC_D,
1.28134 ++ AVR32_OPC_MVRC_W,
1.28135 ++ AVR32_OPC_NEG,
1.28136 ++ AVR32_OPC_NOP,
1.28137 ++ AVR32_OPC_OR1,
1.28138 ++ AVR32_OPC_OR2,
1.28139 ++ AVR32_OPC_OR3,
1.28140 ++ AVR32_OPC_ORH,
1.28141 ++ AVR32_OPC_ORL,
1.28142 ++ AVR32_OPC_PABS_SB,
1.28143 ++ AVR32_OPC_PABS_SH,
1.28144 ++ AVR32_OPC_PACKSH_SB,
1.28145 ++ AVR32_OPC_PACKSH_UB,
1.28146 ++ AVR32_OPC_PACKW_SH,
1.28147 ++ AVR32_OPC_PADD_B,
1.28148 ++ AVR32_OPC_PADD_H,
1.28149 ++ AVR32_OPC_PADDH_SH,
1.28150 ++ AVR32_OPC_PADDH_UB,
1.28151 ++ AVR32_OPC_PADDS_SB,
1.28152 ++ AVR32_OPC_PADDS_SH,
1.28153 ++ AVR32_OPC_PADDS_UB,
1.28154 ++ AVR32_OPC_PADDS_UH,
1.28155 ++ AVR32_OPC_PADDSUB_H,
1.28156 ++ AVR32_OPC_PADDSUBH_SH,
1.28157 ++ AVR32_OPC_PADDSUBS_SH,
1.28158 ++ AVR32_OPC_PADDSUBS_UH,
1.28159 ++ AVR32_OPC_PADDX_H,
1.28160 ++ AVR32_OPC_PADDXH_SH,
1.28161 ++ AVR32_OPC_PADDXS_SH,
1.28162 ++ AVR32_OPC_PADDXS_UH,
1.28163 ++ AVR32_OPC_PASR_B,
1.28164 ++ AVR32_OPC_PASR_H,
1.28165 ++ AVR32_OPC_PAVG_SH,
1.28166 ++ AVR32_OPC_PAVG_UB,
1.28167 ++ AVR32_OPC_PLSL_B,
1.28168 ++ AVR32_OPC_PLSL_H,
1.28169 ++ AVR32_OPC_PLSR_B,
1.28170 ++ AVR32_OPC_PLSR_H,
1.28171 ++ AVR32_OPC_PMAX_SH,
1.28172 ++ AVR32_OPC_PMAX_UB,
1.28173 ++ AVR32_OPC_PMIN_SH,
1.28174 ++ AVR32_OPC_PMIN_UB,
1.28175 ++ AVR32_OPC_POPJC,
1.28176 ++ AVR32_OPC_POPM,
1.28177 ++ AVR32_OPC_POPM_E,
1.28178 ++ AVR32_OPC_PREF,
1.28179 ++ AVR32_OPC_PSAD,
1.28180 ++ AVR32_OPC_PSUB_B,
1.28181 ++ AVR32_OPC_PSUB_H,
1.28182 ++ AVR32_OPC_PSUBADD_H,
1.28183 ++ AVR32_OPC_PSUBADDH_SH,
1.28184 ++ AVR32_OPC_PSUBADDS_SH,
1.28185 ++ AVR32_OPC_PSUBADDS_UH,
1.28186 ++ AVR32_OPC_PSUBH_SH,
1.28187 ++ AVR32_OPC_PSUBH_UB,
1.28188 ++ AVR32_OPC_PSUBS_SB,
1.28189 ++ AVR32_OPC_PSUBS_SH,
1.28190 ++ AVR32_OPC_PSUBS_UB,
1.28191 ++ AVR32_OPC_PSUBS_UH,
1.28192 ++ AVR32_OPC_PSUBX_H,
1.28193 ++ AVR32_OPC_PSUBXH_SH,
1.28194 ++ AVR32_OPC_PSUBXS_SH,
1.28195 ++ AVR32_OPC_PSUBXS_UH,
1.28196 ++ AVR32_OPC_PUNPCKSB_H,
1.28197 ++ AVR32_OPC_PUNPCKUB_H,
1.28198 ++ AVR32_OPC_PUSHJC,
1.28199 ++ AVR32_OPC_PUSHM,
1.28200 ++ AVR32_OPC_PUSHM_E,
1.28201 ++ AVR32_OPC_RCALL1,
1.28202 ++ AVR32_OPC_RCALL2,
1.28203 ++ AVR32_OPC_RETEQ,
1.28204 ++ AVR32_OPC_RETNE,
1.28205 ++ AVR32_OPC_RETCC,
1.28206 ++ AVR32_OPC_RETCS,
1.28207 ++ AVR32_OPC_RETGE,
1.28208 ++ AVR32_OPC_RETLT,
1.28209 ++ AVR32_OPC_RETMI,
1.28210 ++ AVR32_OPC_RETPL,
1.28211 ++ AVR32_OPC_RETLS,
1.28212 ++ AVR32_OPC_RETGT,
1.28213 ++ AVR32_OPC_RETLE,
1.28214 ++ AVR32_OPC_RETHI,
1.28215 ++ AVR32_OPC_RETVS,
1.28216 ++ AVR32_OPC_RETVC,
1.28217 ++ AVR32_OPC_RETQS,
1.28218 ++ AVR32_OPC_RETAL,
1.28219 ++ AVR32_OPC_RETD,
1.28220 ++ AVR32_OPC_RETE,
1.28221 ++ AVR32_OPC_RETJ,
1.28222 ++ AVR32_OPC_RETS,
1.28223 ++ AVR32_OPC_RJMP,
1.28224 ++ AVR32_OPC_ROL,
1.28225 ++ AVR32_OPC_ROR,
1.28226 ++ AVR32_OPC_RSUB1,
1.28227 ++ AVR32_OPC_RSUB2,
1.28228 ++ AVR32_OPC_SATADD_H,
1.28229 ++ AVR32_OPC_SATADD_W,
1.28230 ++ AVR32_OPC_SATRNDS,
1.28231 ++ AVR32_OPC_SATRNDU,
1.28232 ++ AVR32_OPC_SATS,
1.28233 ++ AVR32_OPC_SATSUB_H,
1.28234 ++ AVR32_OPC_SATSUB_W1,
1.28235 ++ AVR32_OPC_SATSUB_W2,
1.28236 ++ AVR32_OPC_SATU,
1.28237 ++ AVR32_OPC_SBC,
1.28238 ++ AVR32_OPC_SBR,
1.28239 ++ AVR32_OPC_SCALL,
1.28240 ++ AVR32_OPC_SCR,
1.28241 ++ AVR32_OPC_SLEEP,
1.28242 ++ AVR32_OPC_SREQ,
1.28243 ++ AVR32_OPC_SRNE,
1.28244 ++ AVR32_OPC_SRCC,
1.28245 ++ AVR32_OPC_SRCS,
1.28246 ++ AVR32_OPC_SRGE,
1.28247 ++ AVR32_OPC_SRLT,
1.28248 ++ AVR32_OPC_SRMI,
1.28249 ++ AVR32_OPC_SRPL,
1.28250 ++ AVR32_OPC_SRLS,
1.28251 ++ AVR32_OPC_SRGT,
1.28252 ++ AVR32_OPC_SRLE,
1.28253 ++ AVR32_OPC_SRHI,
1.28254 ++ AVR32_OPC_SRVS,
1.28255 ++ AVR32_OPC_SRVC,
1.28256 ++ AVR32_OPC_SRQS,
1.28257 ++ AVR32_OPC_SRAL,
1.28258 ++ AVR32_OPC_SSRF,
1.28259 ++ AVR32_OPC_ST_B1,
1.28260 ++ AVR32_OPC_ST_B2,
1.28261 ++ AVR32_OPC_ST_B5,
1.28262 ++ AVR32_OPC_ST_B3,
1.28263 ++ AVR32_OPC_ST_B4,
1.28264 ++ AVR32_OPC_ST_D1,
1.28265 ++ AVR32_OPC_ST_D2,
1.28266 ++ AVR32_OPC_ST_D3,
1.28267 ++ AVR32_OPC_ST_D5,
1.28268 ++ AVR32_OPC_ST_D4,
1.28269 ++ AVR32_OPC_ST_H1,
1.28270 ++ AVR32_OPC_ST_H2,
1.28271 ++ AVR32_OPC_ST_H5,
1.28272 ++ AVR32_OPC_ST_H3,
1.28273 ++ AVR32_OPC_ST_H4,
1.28274 ++ AVR32_OPC_ST_W1,
1.28275 ++ AVR32_OPC_ST_W2,
1.28276 ++ AVR32_OPC_ST_W5,
1.28277 ++ AVR32_OPC_ST_W3,
1.28278 ++ AVR32_OPC_ST_W4,
1.28279 ++ AVR32_OPC_STC_D1,
1.28280 ++ AVR32_OPC_STC_D2,
1.28281 ++ AVR32_OPC_STC_D3,
1.28282 ++ AVR32_OPC_STC_W1,
1.28283 ++ AVR32_OPC_STC_W2,
1.28284 ++ AVR32_OPC_STC_W3,
1.28285 ++ AVR32_OPC_STC0_D,
1.28286 ++ AVR32_OPC_STC0_W,
1.28287 ++ AVR32_OPC_STCM_D,
1.28288 ++ AVR32_OPC_STCM_D_PU,
1.28289 ++ AVR32_OPC_STCM_W,
1.28290 ++ AVR32_OPC_STCM_W_PU,
1.28291 ++ AVR32_OPC_STCOND,
1.28292 ++ AVR32_OPC_STDSP,
1.28293 ++ AVR32_OPC_STHH_W2,
1.28294 ++ AVR32_OPC_STHH_W1,
1.28295 ++ AVR32_OPC_STM,
1.28296 ++ AVR32_OPC_STM_PU,
1.28297 ++ AVR32_OPC_STMTS,
1.28298 ++ AVR32_OPC_STMTS_PU,
1.28299 ++ AVR32_OPC_STSWP_H,
1.28300 ++ AVR32_OPC_STSWP_W,
1.28301 ++ AVR32_OPC_SUB1,
1.28302 ++ AVR32_OPC_SUB2,
1.28303 ++ AVR32_OPC_SUB5,
1.28304 ++ AVR32_OPC_SUB3_SP,
1.28305 ++ AVR32_OPC_SUB3,
1.28306 ++ AVR32_OPC_SUB4,
1.28307 ++ AVR32_OPC_SUBEQ,
1.28308 ++ AVR32_OPC_SUBNE,
1.28309 ++ AVR32_OPC_SUBCC,
1.28310 ++ AVR32_OPC_SUBCS,
1.28311 ++ AVR32_OPC_SUBGE,
1.28312 ++ AVR32_OPC_SUBLT,
1.28313 ++ AVR32_OPC_SUBMI,
1.28314 ++ AVR32_OPC_SUBPL,
1.28315 ++ AVR32_OPC_SUBLS,
1.28316 ++ AVR32_OPC_SUBGT,
1.28317 ++ AVR32_OPC_SUBLE,
1.28318 ++ AVR32_OPC_SUBHI,
1.28319 ++ AVR32_OPC_SUBVS,
1.28320 ++ AVR32_OPC_SUBVC,
1.28321 ++ AVR32_OPC_SUBQS,
1.28322 ++ AVR32_OPC_SUBAL,
1.28323 ++ AVR32_OPC_SUBFEQ,
1.28324 ++ AVR32_OPC_SUBFNE,
1.28325 ++ AVR32_OPC_SUBFCC,
1.28326 ++ AVR32_OPC_SUBFCS,
1.28327 ++ AVR32_OPC_SUBFGE,
1.28328 ++ AVR32_OPC_SUBFLT,
1.28329 ++ AVR32_OPC_SUBFMI,
1.28330 ++ AVR32_OPC_SUBFPL,
1.28331 ++ AVR32_OPC_SUBFLS,
1.28332 ++ AVR32_OPC_SUBFGT,
1.28333 ++ AVR32_OPC_SUBFLE,
1.28334 ++ AVR32_OPC_SUBFHI,
1.28335 ++ AVR32_OPC_SUBFVS,
1.28336 ++ AVR32_OPC_SUBFVC,
1.28337 ++ AVR32_OPC_SUBFQS,
1.28338 ++ AVR32_OPC_SUBFAL,
1.28339 ++ AVR32_OPC_SUBHH_W,
1.28340 ++ AVR32_OPC_SWAP_B,
1.28341 ++ AVR32_OPC_SWAP_BH,
1.28342 ++ AVR32_OPC_SWAP_H,
1.28343 ++ AVR32_OPC_SYNC,
1.28344 ++ AVR32_OPC_TLBR,
1.28345 ++ AVR32_OPC_TLBS,
1.28346 ++ AVR32_OPC_TLBW,
1.28347 ++ AVR32_OPC_TNBZ,
1.28348 ++ AVR32_OPC_TST,
1.28349 ++ AVR32_OPC_XCHG,
1.28350 ++ AVR32_OPC_MEMC,
1.28351 ++ AVR32_OPC_MEMS,
1.28352 ++ AVR32_OPC_MEMT,
1.28353 ++ AVR32_OPC_BFEXTS,
1.28354 ++ AVR32_OPC_BFEXTU,
1.28355 ++ AVR32_OPC_BFINS,
1.28356 ++ AVR32_OPC_RSUBEQ,
1.28357 ++ AVR32_OPC_RSUBNE,
1.28358 ++ AVR32_OPC_RSUBCC,
1.28359 ++ AVR32_OPC_RSUBCS,
1.28360 ++ AVR32_OPC_RSUBGE,
1.28361 ++ AVR32_OPC_RSUBLT,
1.28362 ++ AVR32_OPC_RSUBMI,
1.28363 ++ AVR32_OPC_RSUBPL,
1.28364 ++ AVR32_OPC_RSUBLS,
1.28365 ++ AVR32_OPC_RSUBGT,
1.28366 ++ AVR32_OPC_RSUBLE,
1.28367 ++ AVR32_OPC_RSUBHI,
1.28368 ++ AVR32_OPC_RSUBVS,
1.28369 ++ AVR32_OPC_RSUBVC,
1.28370 ++ AVR32_OPC_RSUBQS,
1.28371 ++ AVR32_OPC_RSUBAL,
1.28372 ++ AVR32_OPC_ADDEQ,
1.28373 ++ AVR32_OPC_ADDNE,
1.28374 ++ AVR32_OPC_ADDCC,
1.28375 ++ AVR32_OPC_ADDCS,
1.28376 ++ AVR32_OPC_ADDGE,
1.28377 ++ AVR32_OPC_ADDLT,
1.28378 ++ AVR32_OPC_ADDMI,
1.28379 ++ AVR32_OPC_ADDPL,
1.28380 ++ AVR32_OPC_ADDLS,
1.28381 ++ AVR32_OPC_ADDGT,
1.28382 ++ AVR32_OPC_ADDLE,
1.28383 ++ AVR32_OPC_ADDHI,
1.28384 ++ AVR32_OPC_ADDVS,
1.28385 ++ AVR32_OPC_ADDVC,
1.28386 ++ AVR32_OPC_ADDQS,
1.28387 ++ AVR32_OPC_ADDAL,
1.28388 ++ AVR32_OPC_SUB2EQ,
1.28389 ++ AVR32_OPC_SUB2NE,
1.28390 ++ AVR32_OPC_SUB2CC,
1.28391 ++ AVR32_OPC_SUB2CS,
1.28392 ++ AVR32_OPC_SUB2GE,
1.28393 ++ AVR32_OPC_SUB2LT,
1.28394 ++ AVR32_OPC_SUB2MI,
1.28395 ++ AVR32_OPC_SUB2PL,
1.28396 ++ AVR32_OPC_SUB2LS,
1.28397 ++ AVR32_OPC_SUB2GT,
1.28398 ++ AVR32_OPC_SUB2LE,
1.28399 ++ AVR32_OPC_SUB2HI,
1.28400 ++ AVR32_OPC_SUB2VS,
1.28401 ++ AVR32_OPC_SUB2VC,
1.28402 ++ AVR32_OPC_SUB2QS,
1.28403 ++ AVR32_OPC_SUB2AL,
1.28404 ++ AVR32_OPC_ANDEQ,
1.28405 ++ AVR32_OPC_ANDNE,
1.28406 ++ AVR32_OPC_ANDCC,
1.28407 ++ AVR32_OPC_ANDCS,
1.28408 ++ AVR32_OPC_ANDGE,
1.28409 ++ AVR32_OPC_ANDLT,
1.28410 ++ AVR32_OPC_ANDMI,
1.28411 ++ AVR32_OPC_ANDPL,
1.28412 ++ AVR32_OPC_ANDLS,
1.28413 ++ AVR32_OPC_ANDGT,
1.28414 ++ AVR32_OPC_ANDLE,
1.28415 ++ AVR32_OPC_ANDHI,
1.28416 ++ AVR32_OPC_ANDVS,
1.28417 ++ AVR32_OPC_ANDVC,
1.28418 ++ AVR32_OPC_ANDQS,
1.28419 ++ AVR32_OPC_ANDAL,
1.28420 ++ AVR32_OPC_OREQ,
1.28421 ++ AVR32_OPC_ORNE,
1.28422 ++ AVR32_OPC_ORCC,
1.28423 ++ AVR32_OPC_ORCS,
1.28424 ++ AVR32_OPC_ORGE,
1.28425 ++ AVR32_OPC_ORLT,
1.28426 ++ AVR32_OPC_ORMI,
1.28427 ++ AVR32_OPC_ORPL,
1.28428 ++ AVR32_OPC_ORLS,
1.28429 ++ AVR32_OPC_ORGT,
1.28430 ++ AVR32_OPC_ORLE,
1.28431 ++ AVR32_OPC_ORHI,
1.28432 ++ AVR32_OPC_ORVS,
1.28433 ++ AVR32_OPC_ORVC,
1.28434 ++ AVR32_OPC_ORQS,
1.28435 ++ AVR32_OPC_ORAL,
1.28436 ++ AVR32_OPC_EOREQ,
1.28437 ++ AVR32_OPC_EORNE,
1.28438 ++ AVR32_OPC_EORCC,
1.28439 ++ AVR32_OPC_EORCS,
1.28440 ++ AVR32_OPC_EORGE,
1.28441 ++ AVR32_OPC_EORLT,
1.28442 ++ AVR32_OPC_EORMI,
1.28443 ++ AVR32_OPC_EORPL,
1.28444 ++ AVR32_OPC_EORLS,
1.28445 ++ AVR32_OPC_EORGT,
1.28446 ++ AVR32_OPC_EORLE,
1.28447 ++ AVR32_OPC_EORHI,
1.28448 ++ AVR32_OPC_EORVS,
1.28449 ++ AVR32_OPC_EORVC,
1.28450 ++ AVR32_OPC_EORQS,
1.28451 ++ AVR32_OPC_EORAL,
1.28452 ++ AVR32_OPC_LD_WEQ,
1.28453 ++ AVR32_OPC_LD_WNE,
1.28454 ++ AVR32_OPC_LD_WCC,
1.28455 ++ AVR32_OPC_LD_WCS,
1.28456 ++ AVR32_OPC_LD_WGE,
1.28457 ++ AVR32_OPC_LD_WLT,
1.28458 ++ AVR32_OPC_LD_WMI,
1.28459 ++ AVR32_OPC_LD_WPL,
1.28460 ++ AVR32_OPC_LD_WLS,
1.28461 ++ AVR32_OPC_LD_WGT,
1.28462 ++ AVR32_OPC_LD_WLE,
1.28463 ++ AVR32_OPC_LD_WHI,
1.28464 ++ AVR32_OPC_LD_WVS,
1.28465 ++ AVR32_OPC_LD_WVC,
1.28466 ++ AVR32_OPC_LD_WQS,
1.28467 ++ AVR32_OPC_LD_WAL,
1.28468 ++ AVR32_OPC_LD_SHEQ,
1.28469 ++ AVR32_OPC_LD_SHNE,
1.28470 ++ AVR32_OPC_LD_SHCC,
1.28471 ++ AVR32_OPC_LD_SHCS,
1.28472 ++ AVR32_OPC_LD_SHGE,
1.28473 ++ AVR32_OPC_LD_SHLT,
1.28474 ++ AVR32_OPC_LD_SHMI,
1.28475 ++ AVR32_OPC_LD_SHPL,
1.28476 ++ AVR32_OPC_LD_SHLS,
1.28477 ++ AVR32_OPC_LD_SHGT,
1.28478 ++ AVR32_OPC_LD_SHLE,
1.28479 ++ AVR32_OPC_LD_SHHI,
1.28480 ++ AVR32_OPC_LD_SHVS,
1.28481 ++ AVR32_OPC_LD_SHVC,
1.28482 ++ AVR32_OPC_LD_SHQS,
1.28483 ++ AVR32_OPC_LD_SHAL,
1.28484 ++ AVR32_OPC_LD_UHEQ,
1.28485 ++ AVR32_OPC_LD_UHNE,
1.28486 ++ AVR32_OPC_LD_UHCC,
1.28487 ++ AVR32_OPC_LD_UHCS,
1.28488 ++ AVR32_OPC_LD_UHGE,
1.28489 ++ AVR32_OPC_LD_UHLT,
1.28490 ++ AVR32_OPC_LD_UHMI,
1.28491 ++ AVR32_OPC_LD_UHPL,
1.28492 ++ AVR32_OPC_LD_UHLS,
1.28493 ++ AVR32_OPC_LD_UHGT,
1.28494 ++ AVR32_OPC_LD_UHLE,
1.28495 ++ AVR32_OPC_LD_UHHI,
1.28496 ++ AVR32_OPC_LD_UHVS,
1.28497 ++ AVR32_OPC_LD_UHVC,
1.28498 ++ AVR32_OPC_LD_UHQS,
1.28499 ++ AVR32_OPC_LD_UHAL,
1.28500 ++ AVR32_OPC_LD_SBEQ,
1.28501 ++ AVR32_OPC_LD_SBNE,
1.28502 ++ AVR32_OPC_LD_SBCC,
1.28503 ++ AVR32_OPC_LD_SBCS,
1.28504 ++ AVR32_OPC_LD_SBGE,
1.28505 ++ AVR32_OPC_LD_SBLT,
1.28506 ++ AVR32_OPC_LD_SBMI,
1.28507 ++ AVR32_OPC_LD_SBPL,
1.28508 ++ AVR32_OPC_LD_SBLS,
1.28509 ++ AVR32_OPC_LD_SBGT,
1.28510 ++ AVR32_OPC_LD_SBLE,
1.28511 ++ AVR32_OPC_LD_SBHI,
1.28512 ++ AVR32_OPC_LD_SBVS,
1.28513 ++ AVR32_OPC_LD_SBVC,
1.28514 ++ AVR32_OPC_LD_SBQS,
1.28515 ++ AVR32_OPC_LD_SBAL,
1.28516 ++ AVR32_OPC_LD_UBEQ,
1.28517 ++ AVR32_OPC_LD_UBNE,
1.28518 ++ AVR32_OPC_LD_UBCC,
1.28519 ++ AVR32_OPC_LD_UBCS,
1.28520 ++ AVR32_OPC_LD_UBGE,
1.28521 ++ AVR32_OPC_LD_UBLT,
1.28522 ++ AVR32_OPC_LD_UBMI,
1.28523 ++ AVR32_OPC_LD_UBPL,
1.28524 ++ AVR32_OPC_LD_UBLS,
1.28525 ++ AVR32_OPC_LD_UBGT,
1.28526 ++ AVR32_OPC_LD_UBLE,
1.28527 ++ AVR32_OPC_LD_UBHI,
1.28528 ++ AVR32_OPC_LD_UBVS,
1.28529 ++ AVR32_OPC_LD_UBVC,
1.28530 ++ AVR32_OPC_LD_UBQS,
1.28531 ++ AVR32_OPC_LD_UBAL,
1.28532 ++ AVR32_OPC_ST_WEQ,
1.28533 ++ AVR32_OPC_ST_WNE,
1.28534 ++ AVR32_OPC_ST_WCC,
1.28535 ++ AVR32_OPC_ST_WCS,
1.28536 ++ AVR32_OPC_ST_WGE,
1.28537 ++ AVR32_OPC_ST_WLT,
1.28538 ++ AVR32_OPC_ST_WMI,
1.28539 ++ AVR32_OPC_ST_WPL,
1.28540 ++ AVR32_OPC_ST_WLS,
1.28541 ++ AVR32_OPC_ST_WGT,
1.28542 ++ AVR32_OPC_ST_WLE,
1.28543 ++ AVR32_OPC_ST_WHI,
1.28544 ++ AVR32_OPC_ST_WVS,
1.28545 ++ AVR32_OPC_ST_WVC,
1.28546 ++ AVR32_OPC_ST_WQS,
1.28547 ++ AVR32_OPC_ST_WAL,
1.28548 ++ AVR32_OPC_ST_HEQ,
1.28549 ++ AVR32_OPC_ST_HNE,
1.28550 ++ AVR32_OPC_ST_HCC,
1.28551 ++ AVR32_OPC_ST_HCS,
1.28552 ++ AVR32_OPC_ST_HGE,
1.28553 ++ AVR32_OPC_ST_HLT,
1.28554 ++ AVR32_OPC_ST_HMI,
1.28555 ++ AVR32_OPC_ST_HPL,
1.28556 ++ AVR32_OPC_ST_HLS,
1.28557 ++ AVR32_OPC_ST_HGT,
1.28558 ++ AVR32_OPC_ST_HLE,
1.28559 ++ AVR32_OPC_ST_HHI,
1.28560 ++ AVR32_OPC_ST_HVS,
1.28561 ++ AVR32_OPC_ST_HVC,
1.28562 ++ AVR32_OPC_ST_HQS,
1.28563 ++ AVR32_OPC_ST_HAL,
1.28564 ++ AVR32_OPC_ST_BEQ,
1.28565 ++ AVR32_OPC_ST_BNE,
1.28566 ++ AVR32_OPC_ST_BCC,
1.28567 ++ AVR32_OPC_ST_BCS,
1.28568 ++ AVR32_OPC_ST_BGE,
1.28569 ++ AVR32_OPC_ST_BLT,
1.28570 ++ AVR32_OPC_ST_BMI,
1.28571 ++ AVR32_OPC_ST_BPL,
1.28572 ++ AVR32_OPC_ST_BLS,
1.28573 ++ AVR32_OPC_ST_BGT,
1.28574 ++ AVR32_OPC_ST_BLE,
1.28575 ++ AVR32_OPC_ST_BHI,
1.28576 ++ AVR32_OPC_ST_BVS,
1.28577 ++ AVR32_OPC_ST_BVC,
1.28578 ++ AVR32_OPC_ST_BQS,
1.28579 ++ AVR32_OPC_ST_BAL,
1.28580 ++ AVR32_OPC_MOVH,
1.28581 ++ AVR32_OPC__END_
1.28582 ++};
1.28583 ++#define AVR32_NR_OPCODES AVR32_OPC__END_
1.28584 ++
1.28585 ++enum avr32_syntax_type
1.28586 ++{
1.28587 ++ AVR32_SYNTAX_ABS,
1.28588 ++ AVR32_SYNTAX_ACALL,
1.28589 ++ AVR32_SYNTAX_ACR,
1.28590 ++ AVR32_SYNTAX_ADC,
1.28591 ++ AVR32_SYNTAX_ADD1,
1.28592 ++ AVR32_SYNTAX_ADD2,
1.28593 ++ AVR32_SYNTAX_ADDABS,
1.28594 ++ AVR32_SYNTAX_ADDHH_W,
1.28595 ++ AVR32_SYNTAX_AND1,
1.28596 ++ AVR32_SYNTAX_AND2,
1.28597 ++ AVR32_SYNTAX_AND3,
1.28598 ++ AVR32_SYNTAX_ANDH,
1.28599 ++ AVR32_SYNTAX_ANDH_COH,
1.28600 ++ AVR32_SYNTAX_ANDL,
1.28601 ++ AVR32_SYNTAX_ANDL_COH,
1.28602 ++ AVR32_SYNTAX_ANDN,
1.28603 ++ AVR32_SYNTAX_ASR1,
1.28604 ++ AVR32_SYNTAX_ASR3,
1.28605 ++ AVR32_SYNTAX_ASR2,
1.28606 ++ AVR32_SYNTAX_BFEXTS,
1.28607 ++ AVR32_SYNTAX_BFEXTU,
1.28608 ++ AVR32_SYNTAX_BFINS,
1.28609 ++ AVR32_SYNTAX_BLD,
1.28610 ++ AVR32_SYNTAX_BREQ1,
1.28611 ++ AVR32_SYNTAX_BRNE1,
1.28612 ++ AVR32_SYNTAX_BRCC1,
1.28613 ++ AVR32_SYNTAX_BRCS1,
1.28614 ++ AVR32_SYNTAX_BRGE1,
1.28615 ++ AVR32_SYNTAX_BRLT1,
1.28616 ++ AVR32_SYNTAX_BRMI1,
1.28617 ++ AVR32_SYNTAX_BRPL1,
1.28618 ++ AVR32_SYNTAX_BRHS1,
1.28619 ++ AVR32_SYNTAX_BRLO1,
1.28620 ++ AVR32_SYNTAX_BREQ2,
1.28621 ++ AVR32_SYNTAX_BRNE2,
1.28622 ++ AVR32_SYNTAX_BRCC2,
1.28623 ++ AVR32_SYNTAX_BRCS2,
1.28624 ++ AVR32_SYNTAX_BRGE2,
1.28625 ++ AVR32_SYNTAX_BRLT2,
1.28626 ++ AVR32_SYNTAX_BRMI2,
1.28627 ++ AVR32_SYNTAX_BRPL2,
1.28628 ++ AVR32_SYNTAX_BRLS,
1.28629 ++ AVR32_SYNTAX_BRGT,
1.28630 ++ AVR32_SYNTAX_BRLE,
1.28631 ++ AVR32_SYNTAX_BRHI,
1.28632 ++ AVR32_SYNTAX_BRVS,
1.28633 ++ AVR32_SYNTAX_BRVC,
1.28634 ++ AVR32_SYNTAX_BRQS,
1.28635 ++ AVR32_SYNTAX_BRAL,
1.28636 ++ AVR32_SYNTAX_BRHS2,
1.28637 ++ AVR32_SYNTAX_BRLO2,
1.28638 ++ AVR32_SYNTAX_BREAKPOINT,
1.28639 ++ AVR32_SYNTAX_BREV,
1.28640 ++ AVR32_SYNTAX_BST,
1.28641 ++ AVR32_SYNTAX_CACHE,
1.28642 ++ AVR32_SYNTAX_CASTS_B,
1.28643 ++ AVR32_SYNTAX_CASTS_H,
1.28644 ++ AVR32_SYNTAX_CASTU_B,
1.28645 ++ AVR32_SYNTAX_CASTU_H,
1.28646 ++ AVR32_SYNTAX_CBR,
1.28647 ++ AVR32_SYNTAX_CLZ,
1.28648 ++ AVR32_SYNTAX_COM,
1.28649 ++ AVR32_SYNTAX_COP,
1.28650 ++ AVR32_SYNTAX_CP_B,
1.28651 ++ AVR32_SYNTAX_CP_H,
1.28652 ++ AVR32_SYNTAX_CP_W1,
1.28653 ++ AVR32_SYNTAX_CP_W2,
1.28654 ++ AVR32_SYNTAX_CP_W3,
1.28655 ++ AVR32_SYNTAX_CPC1,
1.28656 ++ AVR32_SYNTAX_CPC2,
1.28657 ++ AVR32_SYNTAX_CSRF,
1.28658 ++ AVR32_SYNTAX_CSRFCZ,
1.28659 ++ AVR32_SYNTAX_DIVS,
1.28660 ++ AVR32_SYNTAX_DIVU,
1.28661 ++ AVR32_SYNTAX_EOR1,
1.28662 ++ AVR32_SYNTAX_EOR2,
1.28663 ++ AVR32_SYNTAX_EOR3,
1.28664 ++ AVR32_SYNTAX_EORL,
1.28665 ++ AVR32_SYNTAX_EORH,
1.28666 ++ AVR32_SYNTAX_FRS,
1.28667 ++ AVR32_SYNTAX_ICALL,
1.28668 ++ AVR32_SYNTAX_INCJOSP,
1.28669 ++ AVR32_SYNTAX_LD_D1,
1.28670 ++ AVR32_SYNTAX_LD_D2,
1.28671 ++ AVR32_SYNTAX_LD_D3,
1.28672 ++ AVR32_SYNTAX_LD_D5,
1.28673 ++ AVR32_SYNTAX_LD_D4,
1.28674 ++ AVR32_SYNTAX_LD_SB2,
1.28675 ++ AVR32_SYNTAX_LD_SB1,
1.28676 ++ AVR32_SYNTAX_LD_UB1,
1.28677 ++ AVR32_SYNTAX_LD_UB2,
1.28678 ++ AVR32_SYNTAX_LD_UB5,
1.28679 ++ AVR32_SYNTAX_LD_UB3,
1.28680 ++ AVR32_SYNTAX_LD_UB4,
1.28681 ++ AVR32_SYNTAX_LD_SH1,
1.28682 ++ AVR32_SYNTAX_LD_SH2,
1.28683 ++ AVR32_SYNTAX_LD_SH5,
1.28684 ++ AVR32_SYNTAX_LD_SH3,
1.28685 ++ AVR32_SYNTAX_LD_SH4,
1.28686 ++ AVR32_SYNTAX_LD_UH1,
1.28687 ++ AVR32_SYNTAX_LD_UH2,
1.28688 ++ AVR32_SYNTAX_LD_UH5,
1.28689 ++ AVR32_SYNTAX_LD_UH3,
1.28690 ++ AVR32_SYNTAX_LD_UH4,
1.28691 ++ AVR32_SYNTAX_LD_W1,
1.28692 ++ AVR32_SYNTAX_LD_W2,
1.28693 ++ AVR32_SYNTAX_LD_W5,
1.28694 ++ AVR32_SYNTAX_LD_W6,
1.28695 ++ AVR32_SYNTAX_LD_W3,
1.28696 ++ AVR32_SYNTAX_LD_W4,
1.28697 ++ AVR32_SYNTAX_LDC_D1,
1.28698 ++ AVR32_SYNTAX_LDC_D2,
1.28699 ++ AVR32_SYNTAX_LDC_D3,
1.28700 ++ AVR32_SYNTAX_LDC_W1,
1.28701 ++ AVR32_SYNTAX_LDC_W2,
1.28702 ++ AVR32_SYNTAX_LDC_W3,
1.28703 ++ AVR32_SYNTAX_LDC0_D,
1.28704 ++ AVR32_SYNTAX_LDC0_W,
1.28705 ++ AVR32_SYNTAX_LDCM_D,
1.28706 ++ AVR32_SYNTAX_LDCM_D_PU,
1.28707 ++ AVR32_SYNTAX_LDCM_W,
1.28708 ++ AVR32_SYNTAX_LDCM_W_PU,
1.28709 ++ AVR32_SYNTAX_LDDPC,
1.28710 ++ AVR32_SYNTAX_LDDPC_EXT,
1.28711 ++ AVR32_SYNTAX_LDDSP,
1.28712 ++ AVR32_SYNTAX_LDINS_B,
1.28713 ++ AVR32_SYNTAX_LDINS_H,
1.28714 ++ AVR32_SYNTAX_LDM,
1.28715 ++ AVR32_SYNTAX_LDMTS,
1.28716 ++ AVR32_SYNTAX_LDMTS_PU,
1.28717 ++ AVR32_SYNTAX_LDSWP_SH,
1.28718 ++ AVR32_SYNTAX_LDSWP_UH,
1.28719 ++ AVR32_SYNTAX_LDSWP_W,
1.28720 ++ AVR32_SYNTAX_LSL1,
1.28721 ++ AVR32_SYNTAX_LSL3,
1.28722 ++ AVR32_SYNTAX_LSL2,
1.28723 ++ AVR32_SYNTAX_LSR1,
1.28724 ++ AVR32_SYNTAX_LSR3,
1.28725 ++ AVR32_SYNTAX_LSR2,
1.28726 ++ AVR32_SYNTAX_MAC,
1.28727 ++ AVR32_SYNTAX_MACHH_D,
1.28728 ++ AVR32_SYNTAX_MACHH_W,
1.28729 ++ AVR32_SYNTAX_MACS_D,
1.28730 ++ AVR32_SYNTAX_MACSATHH_W,
1.28731 ++ AVR32_SYNTAX_MACUD,
1.28732 ++ AVR32_SYNTAX_MACWH_D,
1.28733 ++ AVR32_SYNTAX_MAX,
1.28734 ++ AVR32_SYNTAX_MCALL,
1.28735 ++ AVR32_SYNTAX_MFDR,
1.28736 ++ AVR32_SYNTAX_MFSR,
1.28737 ++ AVR32_SYNTAX_MIN,
1.28738 ++ AVR32_SYNTAX_MOV3,
1.28739 ++ AVR32_SYNTAX_MOV1,
1.28740 ++ AVR32_SYNTAX_MOV2,
1.28741 ++ AVR32_SYNTAX_MOVEQ1,
1.28742 ++ AVR32_SYNTAX_MOVNE1,
1.28743 ++ AVR32_SYNTAX_MOVCC1,
1.28744 ++ AVR32_SYNTAX_MOVCS1,
1.28745 ++ AVR32_SYNTAX_MOVGE1,
1.28746 ++ AVR32_SYNTAX_MOVLT1,
1.28747 ++ AVR32_SYNTAX_MOVMI1,
1.28748 ++ AVR32_SYNTAX_MOVPL1,
1.28749 ++ AVR32_SYNTAX_MOVLS1,
1.28750 ++ AVR32_SYNTAX_MOVGT1,
1.28751 ++ AVR32_SYNTAX_MOVLE1,
1.28752 ++ AVR32_SYNTAX_MOVHI1,
1.28753 ++ AVR32_SYNTAX_MOVVS1,
1.28754 ++ AVR32_SYNTAX_MOVVC1,
1.28755 ++ AVR32_SYNTAX_MOVQS1,
1.28756 ++ AVR32_SYNTAX_MOVAL1,
1.28757 ++ AVR32_SYNTAX_MOVHS1,
1.28758 ++ AVR32_SYNTAX_MOVLO1,
1.28759 ++ AVR32_SYNTAX_MOVEQ2,
1.28760 ++ AVR32_SYNTAX_MOVNE2,
1.28761 ++ AVR32_SYNTAX_MOVCC2,
1.28762 ++ AVR32_SYNTAX_MOVCS2,
1.28763 ++ AVR32_SYNTAX_MOVGE2,
1.28764 ++ AVR32_SYNTAX_MOVLT2,
1.28765 ++ AVR32_SYNTAX_MOVMI2,
1.28766 ++ AVR32_SYNTAX_MOVPL2,
1.28767 ++ AVR32_SYNTAX_MOVLS2,
1.28768 ++ AVR32_SYNTAX_MOVGT2,
1.28769 ++ AVR32_SYNTAX_MOVLE2,
1.28770 ++ AVR32_SYNTAX_MOVHI2,
1.28771 ++ AVR32_SYNTAX_MOVVS2,
1.28772 ++ AVR32_SYNTAX_MOVVC2,
1.28773 ++ AVR32_SYNTAX_MOVQS2,
1.28774 ++ AVR32_SYNTAX_MOVAL2,
1.28775 ++ AVR32_SYNTAX_MOVHS2,
1.28776 ++ AVR32_SYNTAX_MOVLO2,
1.28777 ++ AVR32_SYNTAX_MTDR,
1.28778 ++ AVR32_SYNTAX_MTSR,
1.28779 ++ AVR32_SYNTAX_MUL1,
1.28780 ++ AVR32_SYNTAX_MUL2,
1.28781 ++ AVR32_SYNTAX_MUL3,
1.28782 ++ AVR32_SYNTAX_MULHH_W,
1.28783 ++ AVR32_SYNTAX_MULNHH_W,
1.28784 ++ AVR32_SYNTAX_MULNWH_D,
1.28785 ++ AVR32_SYNTAX_MULSD,
1.28786 ++ AVR32_SYNTAX_MULSATHH_H,
1.28787 ++ AVR32_SYNTAX_MULSATHH_W,
1.28788 ++ AVR32_SYNTAX_MULSATRNDHH_H,
1.28789 ++ AVR32_SYNTAX_MULSATRNDWH_W,
1.28790 ++ AVR32_SYNTAX_MULSATWH_W,
1.28791 ++ AVR32_SYNTAX_MULU_D,
1.28792 ++ AVR32_SYNTAX_MULWH_D,
1.28793 ++ AVR32_SYNTAX_MUSFR,
1.28794 ++ AVR32_SYNTAX_MUSTR,
1.28795 ++ AVR32_SYNTAX_MVCR_D,
1.28796 ++ AVR32_SYNTAX_MVCR_W,
1.28797 ++ AVR32_SYNTAX_MVRC_D,
1.28798 ++ AVR32_SYNTAX_MVRC_W,
1.28799 ++ AVR32_SYNTAX_NEG,
1.28800 ++ AVR32_SYNTAX_NOP,
1.28801 ++ AVR32_SYNTAX_OR1,
1.28802 ++ AVR32_SYNTAX_OR2,
1.28803 ++ AVR32_SYNTAX_OR3,
1.28804 ++ AVR32_SYNTAX_ORH,
1.28805 ++ AVR32_SYNTAX_ORL,
1.28806 ++ AVR32_SYNTAX_PABS_SB,
1.28807 ++ AVR32_SYNTAX_PABS_SH,
1.28808 ++ AVR32_SYNTAX_PACKSH_SB,
1.28809 ++ AVR32_SYNTAX_PACKSH_UB,
1.28810 ++ AVR32_SYNTAX_PACKW_SH,
1.28811 ++ AVR32_SYNTAX_PADD_B,
1.28812 ++ AVR32_SYNTAX_PADD_H,
1.28813 ++ AVR32_SYNTAX_PADDH_SH,
1.28814 ++ AVR32_SYNTAX_PADDH_UB,
1.28815 ++ AVR32_SYNTAX_PADDS_SB,
1.28816 ++ AVR32_SYNTAX_PADDS_SH,
1.28817 ++ AVR32_SYNTAX_PADDS_UB,
1.28818 ++ AVR32_SYNTAX_PADDS_UH,
1.28819 ++ AVR32_SYNTAX_PADDSUB_H,
1.28820 ++ AVR32_SYNTAX_PADDSUBH_SH,
1.28821 ++ AVR32_SYNTAX_PADDSUBS_SH,
1.28822 ++ AVR32_SYNTAX_PADDSUBS_UH,
1.28823 ++ AVR32_SYNTAX_PADDX_H,
1.28824 ++ AVR32_SYNTAX_PADDXH_SH,
1.28825 ++ AVR32_SYNTAX_PADDXS_SH,
1.28826 ++ AVR32_SYNTAX_PADDXS_UH,
1.28827 ++ AVR32_SYNTAX_PASR_B,
1.28828 ++ AVR32_SYNTAX_PASR_H,
1.28829 ++ AVR32_SYNTAX_PAVG_SH,
1.28830 ++ AVR32_SYNTAX_PAVG_UB,
1.28831 ++ AVR32_SYNTAX_PLSL_B,
1.28832 ++ AVR32_SYNTAX_PLSL_H,
1.28833 ++ AVR32_SYNTAX_PLSR_B,
1.28834 ++ AVR32_SYNTAX_PLSR_H,
1.28835 ++ AVR32_SYNTAX_PMAX_SH,
1.28836 ++ AVR32_SYNTAX_PMAX_UB,
1.28837 ++ AVR32_SYNTAX_PMIN_SH,
1.28838 ++ AVR32_SYNTAX_PMIN_UB,
1.28839 ++ AVR32_SYNTAX_POPJC,
1.28840 ++ AVR32_SYNTAX_POPM,
1.28841 ++ AVR32_SYNTAX_POPM_E,
1.28842 ++ AVR32_SYNTAX_PREF,
1.28843 ++ AVR32_SYNTAX_PSAD,
1.28844 ++ AVR32_SYNTAX_PSUB_B,
1.28845 ++ AVR32_SYNTAX_PSUB_H,
1.28846 ++ AVR32_SYNTAX_PSUBADD_H,
1.28847 ++ AVR32_SYNTAX_PSUBADDH_SH,
1.28848 ++ AVR32_SYNTAX_PSUBADDS_SH,
1.28849 ++ AVR32_SYNTAX_PSUBADDS_UH,
1.28850 ++ AVR32_SYNTAX_PSUBH_SH,
1.28851 ++ AVR32_SYNTAX_PSUBH_UB,
1.28852 ++ AVR32_SYNTAX_PSUBS_SB,
1.28853 ++ AVR32_SYNTAX_PSUBS_SH,
1.28854 ++ AVR32_SYNTAX_PSUBS_UB,
1.28855 ++ AVR32_SYNTAX_PSUBS_UH,
1.28856 ++ AVR32_SYNTAX_PSUBX_H,
1.28857 ++ AVR32_SYNTAX_PSUBXH_SH,
1.28858 ++ AVR32_SYNTAX_PSUBXS_SH,
1.28859 ++ AVR32_SYNTAX_PSUBXS_UH,
1.28860 ++ AVR32_SYNTAX_PUNPCKSB_H,
1.28861 ++ AVR32_SYNTAX_PUNPCKUB_H,
1.28862 ++ AVR32_SYNTAX_PUSHJC,
1.28863 ++ AVR32_SYNTAX_PUSHM,
1.28864 ++ AVR32_SYNTAX_PUSHM_E,
1.28865 ++ AVR32_SYNTAX_RCALL1,
1.28866 ++ AVR32_SYNTAX_RCALL2,
1.28867 ++ AVR32_SYNTAX_RETEQ,
1.28868 ++ AVR32_SYNTAX_RETNE,
1.28869 ++ AVR32_SYNTAX_RETCC,
1.28870 ++ AVR32_SYNTAX_RETCS,
1.28871 ++ AVR32_SYNTAX_RETGE,
1.28872 ++ AVR32_SYNTAX_RETLT,
1.28873 ++ AVR32_SYNTAX_RETMI,
1.28874 ++ AVR32_SYNTAX_RETPL,
1.28875 ++ AVR32_SYNTAX_RETLS,
1.28876 ++ AVR32_SYNTAX_RETGT,
1.28877 ++ AVR32_SYNTAX_RETLE,
1.28878 ++ AVR32_SYNTAX_RETHI,
1.28879 ++ AVR32_SYNTAX_RETVS,
1.28880 ++ AVR32_SYNTAX_RETVC,
1.28881 ++ AVR32_SYNTAX_RETQS,
1.28882 ++ AVR32_SYNTAX_RETAL,
1.28883 ++ AVR32_SYNTAX_RETHS,
1.28884 ++ AVR32_SYNTAX_RETLO,
1.28885 ++ AVR32_SYNTAX_RETD,
1.28886 ++ AVR32_SYNTAX_RETE,
1.28887 ++ AVR32_SYNTAX_RETJ,
1.28888 ++ AVR32_SYNTAX_RETS,
1.28889 ++ AVR32_SYNTAX_RJMP,
1.28890 ++ AVR32_SYNTAX_ROL,
1.28891 ++ AVR32_SYNTAX_ROR,
1.28892 ++ AVR32_SYNTAX_RSUB1,
1.28893 ++ AVR32_SYNTAX_RSUB2,
1.28894 ++ AVR32_SYNTAX_SATADD_H,
1.28895 ++ AVR32_SYNTAX_SATADD_W,
1.28896 ++ AVR32_SYNTAX_SATRNDS,
1.28897 ++ AVR32_SYNTAX_SATRNDU,
1.28898 ++ AVR32_SYNTAX_SATS,
1.28899 ++ AVR32_SYNTAX_SATSUB_H,
1.28900 ++ AVR32_SYNTAX_SATSUB_W1,
1.28901 ++ AVR32_SYNTAX_SATSUB_W2,
1.28902 ++ AVR32_SYNTAX_SATU,
1.28903 ++ AVR32_SYNTAX_SBC,
1.28904 ++ AVR32_SYNTAX_SBR,
1.28905 ++ AVR32_SYNTAX_SCALL,
1.28906 ++ AVR32_SYNTAX_SCR,
1.28907 ++ AVR32_SYNTAX_SLEEP,
1.28908 ++ AVR32_SYNTAX_SREQ,
1.28909 ++ AVR32_SYNTAX_SRNE,
1.28910 ++ AVR32_SYNTAX_SRCC,
1.28911 ++ AVR32_SYNTAX_SRCS,
1.28912 ++ AVR32_SYNTAX_SRGE,
1.28913 ++ AVR32_SYNTAX_SRLT,
1.28914 ++ AVR32_SYNTAX_SRMI,
1.28915 ++ AVR32_SYNTAX_SRPL,
1.28916 ++ AVR32_SYNTAX_SRLS,
1.28917 ++ AVR32_SYNTAX_SRGT,
1.28918 ++ AVR32_SYNTAX_SRLE,
1.28919 ++ AVR32_SYNTAX_SRHI,
1.28920 ++ AVR32_SYNTAX_SRVS,
1.28921 ++ AVR32_SYNTAX_SRVC,
1.28922 ++ AVR32_SYNTAX_SRQS,
1.28923 ++ AVR32_SYNTAX_SRAL,
1.28924 ++ AVR32_SYNTAX_SRHS,
1.28925 ++ AVR32_SYNTAX_SRLO,
1.28926 ++ AVR32_SYNTAX_SSRF,
1.28927 ++ AVR32_SYNTAX_ST_B1,
1.28928 ++ AVR32_SYNTAX_ST_B2,
1.28929 ++ AVR32_SYNTAX_ST_B5,
1.28930 ++ AVR32_SYNTAX_ST_B3,
1.28931 ++ AVR32_SYNTAX_ST_B4,
1.28932 ++ AVR32_SYNTAX_ST_D1,
1.28933 ++ AVR32_SYNTAX_ST_D2,
1.28934 ++ AVR32_SYNTAX_ST_D3,
1.28935 ++ AVR32_SYNTAX_ST_D5,
1.28936 ++ AVR32_SYNTAX_ST_D4,
1.28937 ++ AVR32_SYNTAX_ST_H1,
1.28938 ++ AVR32_SYNTAX_ST_H2,
1.28939 ++ AVR32_SYNTAX_ST_H5,
1.28940 ++ AVR32_SYNTAX_ST_H3,
1.28941 ++ AVR32_SYNTAX_ST_H4,
1.28942 ++ AVR32_SYNTAX_ST_W1,
1.28943 ++ AVR32_SYNTAX_ST_W2,
1.28944 ++ AVR32_SYNTAX_ST_W5,
1.28945 ++ AVR32_SYNTAX_ST_W3,
1.28946 ++ AVR32_SYNTAX_ST_W4,
1.28947 ++ AVR32_SYNTAX_STC_D1,
1.28948 ++ AVR32_SYNTAX_STC_D2,
1.28949 ++ AVR32_SYNTAX_STC_D3,
1.28950 ++ AVR32_SYNTAX_STC_W1,
1.28951 ++ AVR32_SYNTAX_STC_W2,
1.28952 ++ AVR32_SYNTAX_STC_W3,
1.28953 ++ AVR32_SYNTAX_STC0_D,
1.28954 ++ AVR32_SYNTAX_STC0_W,
1.28955 ++ AVR32_SYNTAX_STCM_D,
1.28956 ++ AVR32_SYNTAX_STCM_D_PU,
1.28957 ++ AVR32_SYNTAX_STCM_W,
1.28958 ++ AVR32_SYNTAX_STCM_W_PU,
1.28959 ++ AVR32_SYNTAX_STCOND,
1.28960 ++ AVR32_SYNTAX_STDSP,
1.28961 ++ AVR32_SYNTAX_STHH_W2,
1.28962 ++ AVR32_SYNTAX_STHH_W1,
1.28963 ++ AVR32_SYNTAX_STM,
1.28964 ++ AVR32_SYNTAX_STM_PU,
1.28965 ++ AVR32_SYNTAX_STMTS,
1.28966 ++ AVR32_SYNTAX_STMTS_PU,
1.28967 ++ AVR32_SYNTAX_STSWP_H,
1.28968 ++ AVR32_SYNTAX_STSWP_W,
1.28969 ++ AVR32_SYNTAX_SUB1,
1.28970 ++ AVR32_SYNTAX_SUB2,
1.28971 ++ AVR32_SYNTAX_SUB5,
1.28972 ++ AVR32_SYNTAX_SUB3_SP,
1.28973 ++ AVR32_SYNTAX_SUB3,
1.28974 ++ AVR32_SYNTAX_SUB4,
1.28975 ++ AVR32_SYNTAX_SUBEQ,
1.28976 ++ AVR32_SYNTAX_SUBNE,
1.28977 ++ AVR32_SYNTAX_SUBCC,
1.28978 ++ AVR32_SYNTAX_SUBCS,
1.28979 ++ AVR32_SYNTAX_SUBGE,
1.28980 ++ AVR32_SYNTAX_SUBLT,
1.28981 ++ AVR32_SYNTAX_SUBMI,
1.28982 ++ AVR32_SYNTAX_SUBPL,
1.28983 ++ AVR32_SYNTAX_SUBLS,
1.28984 ++ AVR32_SYNTAX_SUBGT,
1.28985 ++ AVR32_SYNTAX_SUBLE,
1.28986 ++ AVR32_SYNTAX_SUBHI,
1.28987 ++ AVR32_SYNTAX_SUBVS,
1.28988 ++ AVR32_SYNTAX_SUBVC,
1.28989 ++ AVR32_SYNTAX_SUBQS,
1.28990 ++ AVR32_SYNTAX_SUBAL,
1.28991 ++ AVR32_SYNTAX_SUBHS,
1.28992 ++ AVR32_SYNTAX_SUBLO,
1.28993 ++ AVR32_SYNTAX_SUBFEQ,
1.28994 ++ AVR32_SYNTAX_SUBFNE,
1.28995 ++ AVR32_SYNTAX_SUBFCC,
1.28996 ++ AVR32_SYNTAX_SUBFCS,
1.28997 ++ AVR32_SYNTAX_SUBFGE,
1.28998 ++ AVR32_SYNTAX_SUBFLT,
1.28999 ++ AVR32_SYNTAX_SUBFMI,
1.29000 ++ AVR32_SYNTAX_SUBFPL,
1.29001 ++ AVR32_SYNTAX_SUBFLS,
1.29002 ++ AVR32_SYNTAX_SUBFGT,
1.29003 ++ AVR32_SYNTAX_SUBFLE,
1.29004 ++ AVR32_SYNTAX_SUBFHI,
1.29005 ++ AVR32_SYNTAX_SUBFVS,
1.29006 ++ AVR32_SYNTAX_SUBFVC,
1.29007 ++ AVR32_SYNTAX_SUBFQS,
1.29008 ++ AVR32_SYNTAX_SUBFAL,
1.29009 ++ AVR32_SYNTAX_SUBFHS,
1.29010 ++ AVR32_SYNTAX_SUBFLO,
1.29011 ++ AVR32_SYNTAX_SUBHH_W,
1.29012 ++ AVR32_SYNTAX_SWAP_B,
1.29013 ++ AVR32_SYNTAX_SWAP_BH,
1.29014 ++ AVR32_SYNTAX_SWAP_H,
1.29015 ++ AVR32_SYNTAX_SYNC,
1.29016 ++ AVR32_SYNTAX_TLBR,
1.29017 ++ AVR32_SYNTAX_TLBS,
1.29018 ++ AVR32_SYNTAX_TLBW,
1.29019 ++ AVR32_SYNTAX_TNBZ,
1.29020 ++ AVR32_SYNTAX_TST,
1.29021 ++ AVR32_SYNTAX_XCHG,
1.29022 ++ AVR32_SYNTAX_MEMC,
1.29023 ++ AVR32_SYNTAX_MEMS,
1.29024 ++ AVR32_SYNTAX_MEMT,
1.29025 ++ AVR32_SYNTAX_FADD_S,
1.29026 ++ AVR32_SYNTAX_FADD_D,
1.29027 ++ AVR32_SYNTAX_FSUB_S,
1.29028 ++ AVR32_SYNTAX_FSUB_D,
1.29029 ++ AVR32_SYNTAX_FMAC_S,
1.29030 ++ AVR32_SYNTAX_FMAC_D,
1.29031 ++ AVR32_SYNTAX_FNMAC_S,
1.29032 ++ AVR32_SYNTAX_FNMAC_D,
1.29033 ++ AVR32_SYNTAX_FMSC_S,
1.29034 ++ AVR32_SYNTAX_FMSC_D,
1.29035 ++ AVR32_SYNTAX_FNMSC_S,
1.29036 ++ AVR32_SYNTAX_FNMSC_D,
1.29037 ++ AVR32_SYNTAX_FMUL_S,
1.29038 ++ AVR32_SYNTAX_FMUL_D,
1.29039 ++ AVR32_SYNTAX_FNMUL_S,
1.29040 ++ AVR32_SYNTAX_FNMUL_D,
1.29041 ++ AVR32_SYNTAX_FNEG_S,
1.29042 ++ AVR32_SYNTAX_FNEG_D,
1.29043 ++ AVR32_SYNTAX_FABS_S,
1.29044 ++ AVR32_SYNTAX_FABS_D,
1.29045 ++ AVR32_SYNTAX_FCMP_S,
1.29046 ++ AVR32_SYNTAX_FCMP_D,
1.29047 ++ AVR32_SYNTAX_FMOV1_S,
1.29048 ++ AVR32_SYNTAX_FMOV1_D,
1.29049 ++ AVR32_SYNTAX_FMOV2_S,
1.29050 ++ AVR32_SYNTAX_FMOV2_D,
1.29051 ++ AVR32_SYNTAX_FMOV3_S,
1.29052 ++ AVR32_SYNTAX_FMOV3_D,
1.29053 ++ AVR32_SYNTAX_FCASTS_D,
1.29054 ++ AVR32_SYNTAX_FCASTD_S,
1.29055 ++ AVR32_SYNTAX_LDA_W,
1.29056 ++ AVR32_SYNTAX_CALL,
1.29057 ++ AVR32_SYNTAX_PICOSVMAC0,
1.29058 ++ AVR32_SYNTAX_PICOSVMAC1,
1.29059 ++ AVR32_SYNTAX_PICOSVMAC2,
1.29060 ++ AVR32_SYNTAX_PICOSVMAC3,
1.29061 ++ AVR32_SYNTAX_PICOSVMUL0,
1.29062 ++ AVR32_SYNTAX_PICOSVMUL1,
1.29063 ++ AVR32_SYNTAX_PICOSVMUL2,
1.29064 ++ AVR32_SYNTAX_PICOSVMUL3,
1.29065 ++ AVR32_SYNTAX_PICOVMAC0,
1.29066 ++ AVR32_SYNTAX_PICOVMAC1,
1.29067 ++ AVR32_SYNTAX_PICOVMAC2,
1.29068 ++ AVR32_SYNTAX_PICOVMAC3,
1.29069 ++ AVR32_SYNTAX_PICOVMUL0,
1.29070 ++ AVR32_SYNTAX_PICOVMUL1,
1.29071 ++ AVR32_SYNTAX_PICOVMUL2,
1.29072 ++ AVR32_SYNTAX_PICOVMUL3,
1.29073 ++ AVR32_SYNTAX_PICOLD_D2,
1.29074 ++ AVR32_SYNTAX_PICOLD_D3,
1.29075 ++ AVR32_SYNTAX_PICOLD_D1,
1.29076 ++ AVR32_SYNTAX_PICOLD_W2,
1.29077 ++ AVR32_SYNTAX_PICOLD_W3,
1.29078 ++ AVR32_SYNTAX_PICOLD_W1,
1.29079 ++ AVR32_SYNTAX_PICOLDM_D,
1.29080 ++ AVR32_SYNTAX_PICOLDM_D_PU,
1.29081 ++ AVR32_SYNTAX_PICOLDM_W,
1.29082 ++ AVR32_SYNTAX_PICOLDM_W_PU,
1.29083 ++ AVR32_SYNTAX_PICOMV_D1,
1.29084 ++ AVR32_SYNTAX_PICOMV_D2,
1.29085 ++ AVR32_SYNTAX_PICOMV_W1,
1.29086 ++ AVR32_SYNTAX_PICOMV_W2,
1.29087 ++ AVR32_SYNTAX_PICOST_D2,
1.29088 ++ AVR32_SYNTAX_PICOST_D3,
1.29089 ++ AVR32_SYNTAX_PICOST_D1,
1.29090 ++ AVR32_SYNTAX_PICOST_W2,
1.29091 ++ AVR32_SYNTAX_PICOST_W3,
1.29092 ++ AVR32_SYNTAX_PICOST_W1,
1.29093 ++ AVR32_SYNTAX_PICOSTM_D,
1.29094 ++ AVR32_SYNTAX_PICOSTM_D_PU,
1.29095 ++ AVR32_SYNTAX_PICOSTM_W,
1.29096 ++ AVR32_SYNTAX_PICOSTM_W_PU,
1.29097 ++ AVR32_SYNTAX_RSUBEQ,
1.29098 ++ AVR32_SYNTAX_RSUBNE,
1.29099 ++ AVR32_SYNTAX_RSUBCC,
1.29100 ++ AVR32_SYNTAX_RSUBCS,
1.29101 ++ AVR32_SYNTAX_RSUBGE,
1.29102 ++ AVR32_SYNTAX_RSUBLT,
1.29103 ++ AVR32_SYNTAX_RSUBMI,
1.29104 ++ AVR32_SYNTAX_RSUBPL,
1.29105 ++ AVR32_SYNTAX_RSUBLS,
1.29106 ++ AVR32_SYNTAX_RSUBGT,
1.29107 ++ AVR32_SYNTAX_RSUBLE,
1.29108 ++ AVR32_SYNTAX_RSUBHI,
1.29109 ++ AVR32_SYNTAX_RSUBVS,
1.29110 ++ AVR32_SYNTAX_RSUBVC,
1.29111 ++ AVR32_SYNTAX_RSUBQS,
1.29112 ++ AVR32_SYNTAX_RSUBAL,
1.29113 ++ AVR32_SYNTAX_RSUBHS,
1.29114 ++ AVR32_SYNTAX_RSUBLO,
1.29115 ++ AVR32_SYNTAX_ADDEQ,
1.29116 ++ AVR32_SYNTAX_ADDNE,
1.29117 ++ AVR32_SYNTAX_ADDCC,
1.29118 ++ AVR32_SYNTAX_ADDCS,
1.29119 ++ AVR32_SYNTAX_ADDGE,
1.29120 ++ AVR32_SYNTAX_ADDLT,
1.29121 ++ AVR32_SYNTAX_ADDMI,
1.29122 ++ AVR32_SYNTAX_ADDPL,
1.29123 ++ AVR32_SYNTAX_ADDLS,
1.29124 ++ AVR32_SYNTAX_ADDGT,
1.29125 ++ AVR32_SYNTAX_ADDLE,
1.29126 ++ AVR32_SYNTAX_ADDHI,
1.29127 ++ AVR32_SYNTAX_ADDVS,
1.29128 ++ AVR32_SYNTAX_ADDVC,
1.29129 ++ AVR32_SYNTAX_ADDQS,
1.29130 ++ AVR32_SYNTAX_ADDAL,
1.29131 ++ AVR32_SYNTAX_ADDHS,
1.29132 ++ AVR32_SYNTAX_ADDLO,
1.29133 ++ AVR32_SYNTAX_SUB2EQ,
1.29134 ++ AVR32_SYNTAX_SUB2NE,
1.29135 ++ AVR32_SYNTAX_SUB2CC,
1.29136 ++ AVR32_SYNTAX_SUB2CS,
1.29137 ++ AVR32_SYNTAX_SUB2GE,
1.29138 ++ AVR32_SYNTAX_SUB2LT,
1.29139 ++ AVR32_SYNTAX_SUB2MI,
1.29140 ++ AVR32_SYNTAX_SUB2PL,
1.29141 ++ AVR32_SYNTAX_SUB2LS,
1.29142 ++ AVR32_SYNTAX_SUB2GT,
1.29143 ++ AVR32_SYNTAX_SUB2LE,
1.29144 ++ AVR32_SYNTAX_SUB2HI,
1.29145 ++ AVR32_SYNTAX_SUB2VS,
1.29146 ++ AVR32_SYNTAX_SUB2VC,
1.29147 ++ AVR32_SYNTAX_SUB2QS,
1.29148 ++ AVR32_SYNTAX_SUB2AL,
1.29149 ++ AVR32_SYNTAX_SUB2HS,
1.29150 ++ AVR32_SYNTAX_SUB2LO,
1.29151 ++ AVR32_SYNTAX_ANDEQ,
1.29152 ++ AVR32_SYNTAX_ANDNE,
1.29153 ++ AVR32_SYNTAX_ANDCC,
1.29154 ++ AVR32_SYNTAX_ANDCS,
1.29155 ++ AVR32_SYNTAX_ANDGE,
1.29156 ++ AVR32_SYNTAX_ANDLT,
1.29157 ++ AVR32_SYNTAX_ANDMI,
1.29158 ++ AVR32_SYNTAX_ANDPL,
1.29159 ++ AVR32_SYNTAX_ANDLS,
1.29160 ++ AVR32_SYNTAX_ANDGT,
1.29161 ++ AVR32_SYNTAX_ANDLE,
1.29162 ++ AVR32_SYNTAX_ANDHI,
1.29163 ++ AVR32_SYNTAX_ANDVS,
1.29164 ++ AVR32_SYNTAX_ANDVC,
1.29165 ++ AVR32_SYNTAX_ANDQS,
1.29166 ++ AVR32_SYNTAX_ANDAL,
1.29167 ++ AVR32_SYNTAX_ANDHS,
1.29168 ++ AVR32_SYNTAX_ANDLO,
1.29169 ++ AVR32_SYNTAX_OREQ,
1.29170 ++ AVR32_SYNTAX_ORNE,
1.29171 ++ AVR32_SYNTAX_ORCC,
1.29172 ++ AVR32_SYNTAX_ORCS,
1.29173 ++ AVR32_SYNTAX_ORGE,
1.29174 ++ AVR32_SYNTAX_ORLT,
1.29175 ++ AVR32_SYNTAX_ORMI,
1.29176 ++ AVR32_SYNTAX_ORPL,
1.29177 ++ AVR32_SYNTAX_ORLS,
1.29178 ++ AVR32_SYNTAX_ORGT,
1.29179 ++ AVR32_SYNTAX_ORLE,
1.29180 ++ AVR32_SYNTAX_ORHI,
1.29181 ++ AVR32_SYNTAX_ORVS,
1.29182 ++ AVR32_SYNTAX_ORVC,
1.29183 ++ AVR32_SYNTAX_ORQS,
1.29184 ++ AVR32_SYNTAX_ORAL,
1.29185 ++ AVR32_SYNTAX_ORHS,
1.29186 ++ AVR32_SYNTAX_ORLO,
1.29187 ++ AVR32_SYNTAX_EOREQ,
1.29188 ++ AVR32_SYNTAX_EORNE,
1.29189 ++ AVR32_SYNTAX_EORCC,
1.29190 ++ AVR32_SYNTAX_EORCS,
1.29191 ++ AVR32_SYNTAX_EORGE,
1.29192 ++ AVR32_SYNTAX_EORLT,
1.29193 ++ AVR32_SYNTAX_EORMI,
1.29194 ++ AVR32_SYNTAX_EORPL,
1.29195 ++ AVR32_SYNTAX_EORLS,
1.29196 ++ AVR32_SYNTAX_EORGT,
1.29197 ++ AVR32_SYNTAX_EORLE,
1.29198 ++ AVR32_SYNTAX_EORHI,
1.29199 ++ AVR32_SYNTAX_EORVS,
1.29200 ++ AVR32_SYNTAX_EORVC,
1.29201 ++ AVR32_SYNTAX_EORQS,
1.29202 ++ AVR32_SYNTAX_EORAL,
1.29203 ++ AVR32_SYNTAX_EORHS,
1.29204 ++ AVR32_SYNTAX_EORLO,
1.29205 ++ AVR32_SYNTAX_LD_WEQ,
1.29206 ++ AVR32_SYNTAX_LD_WNE,
1.29207 ++ AVR32_SYNTAX_LD_WCC,
1.29208 ++ AVR32_SYNTAX_LD_WCS,
1.29209 ++ AVR32_SYNTAX_LD_WGE,
1.29210 ++ AVR32_SYNTAX_LD_WLT,
1.29211 ++ AVR32_SYNTAX_LD_WMI,
1.29212 ++ AVR32_SYNTAX_LD_WPL,
1.29213 ++ AVR32_SYNTAX_LD_WLS,
1.29214 ++ AVR32_SYNTAX_LD_WGT,
1.29215 ++ AVR32_SYNTAX_LD_WLE,
1.29216 ++ AVR32_SYNTAX_LD_WHI,
1.29217 ++ AVR32_SYNTAX_LD_WVS,
1.29218 ++ AVR32_SYNTAX_LD_WVC,
1.29219 ++ AVR32_SYNTAX_LD_WQS,
1.29220 ++ AVR32_SYNTAX_LD_WAL,
1.29221 ++ AVR32_SYNTAX_LD_WHS,
1.29222 ++ AVR32_SYNTAX_LD_WLO,
1.29223 ++ AVR32_SYNTAX_LD_SHEQ,
1.29224 ++ AVR32_SYNTAX_LD_SHNE,
1.29225 ++ AVR32_SYNTAX_LD_SHCC,
1.29226 ++ AVR32_SYNTAX_LD_SHCS,
1.29227 ++ AVR32_SYNTAX_LD_SHGE,
1.29228 ++ AVR32_SYNTAX_LD_SHLT,
1.29229 ++ AVR32_SYNTAX_LD_SHMI,
1.29230 ++ AVR32_SYNTAX_LD_SHPL,
1.29231 ++ AVR32_SYNTAX_LD_SHLS,
1.29232 ++ AVR32_SYNTAX_LD_SHGT,
1.29233 ++ AVR32_SYNTAX_LD_SHLE,
1.29234 ++ AVR32_SYNTAX_LD_SHHI,
1.29235 ++ AVR32_SYNTAX_LD_SHVS,
1.29236 ++ AVR32_SYNTAX_LD_SHVC,
1.29237 ++ AVR32_SYNTAX_LD_SHQS,
1.29238 ++ AVR32_SYNTAX_LD_SHAL,
1.29239 ++ AVR32_SYNTAX_LD_SHHS,
1.29240 ++ AVR32_SYNTAX_LD_SHLO,
1.29241 ++ AVR32_SYNTAX_LD_UHEQ,
1.29242 ++ AVR32_SYNTAX_LD_UHNE,
1.29243 ++ AVR32_SYNTAX_LD_UHCC,
1.29244 ++ AVR32_SYNTAX_LD_UHCS,
1.29245 ++ AVR32_SYNTAX_LD_UHGE,
1.29246 ++ AVR32_SYNTAX_LD_UHLT,
1.29247 ++ AVR32_SYNTAX_LD_UHMI,
1.29248 ++ AVR32_SYNTAX_LD_UHPL,
1.29249 ++ AVR32_SYNTAX_LD_UHLS,
1.29250 ++ AVR32_SYNTAX_LD_UHGT,
1.29251 ++ AVR32_SYNTAX_LD_UHLE,
1.29252 ++ AVR32_SYNTAX_LD_UHHI,
1.29253 ++ AVR32_SYNTAX_LD_UHVS,
1.29254 ++ AVR32_SYNTAX_LD_UHVC,
1.29255 ++ AVR32_SYNTAX_LD_UHQS,
1.29256 ++ AVR32_SYNTAX_LD_UHAL,
1.29257 ++ AVR32_SYNTAX_LD_UHHS,
1.29258 ++ AVR32_SYNTAX_LD_UHLO,
1.29259 ++ AVR32_SYNTAX_LD_SBEQ,
1.29260 ++ AVR32_SYNTAX_LD_SBNE,
1.29261 ++ AVR32_SYNTAX_LD_SBCC,
1.29262 ++ AVR32_SYNTAX_LD_SBCS,
1.29263 ++ AVR32_SYNTAX_LD_SBGE,
1.29264 ++ AVR32_SYNTAX_LD_SBLT,
1.29265 ++ AVR32_SYNTAX_LD_SBMI,
1.29266 ++ AVR32_SYNTAX_LD_SBPL,
1.29267 ++ AVR32_SYNTAX_LD_SBLS,
1.29268 ++ AVR32_SYNTAX_LD_SBGT,
1.29269 ++ AVR32_SYNTAX_LD_SBLE,
1.29270 ++ AVR32_SYNTAX_LD_SBHI,
1.29271 ++ AVR32_SYNTAX_LD_SBVS,
1.29272 ++ AVR32_SYNTAX_LD_SBVC,
1.29273 ++ AVR32_SYNTAX_LD_SBQS,
1.29274 ++ AVR32_SYNTAX_LD_SBAL,
1.29275 ++ AVR32_SYNTAX_LD_SBHS,
1.29276 ++ AVR32_SYNTAX_LD_SBLO,
1.29277 ++ AVR32_SYNTAX_LD_UBEQ,
1.29278 ++ AVR32_SYNTAX_LD_UBNE,
1.29279 ++ AVR32_SYNTAX_LD_UBCC,
1.29280 ++ AVR32_SYNTAX_LD_UBCS,
1.29281 ++ AVR32_SYNTAX_LD_UBGE,
1.29282 ++ AVR32_SYNTAX_LD_UBLT,
1.29283 ++ AVR32_SYNTAX_LD_UBMI,
1.29284 ++ AVR32_SYNTAX_LD_UBPL,
1.29285 ++ AVR32_SYNTAX_LD_UBLS,
1.29286 ++ AVR32_SYNTAX_LD_UBGT,
1.29287 ++ AVR32_SYNTAX_LD_UBLE,
1.29288 ++ AVR32_SYNTAX_LD_UBHI,
1.29289 ++ AVR32_SYNTAX_LD_UBVS,
1.29290 ++ AVR32_SYNTAX_LD_UBVC,
1.29291 ++ AVR32_SYNTAX_LD_UBQS,
1.29292 ++ AVR32_SYNTAX_LD_UBAL,
1.29293 ++ AVR32_SYNTAX_LD_UBHS,
1.29294 ++ AVR32_SYNTAX_LD_UBLO,
1.29295 ++ AVR32_SYNTAX_ST_WEQ,
1.29296 ++ AVR32_SYNTAX_ST_WNE,
1.29297 ++ AVR32_SYNTAX_ST_WCC,
1.29298 ++ AVR32_SYNTAX_ST_WCS,
1.29299 ++ AVR32_SYNTAX_ST_WGE,
1.29300 ++ AVR32_SYNTAX_ST_WLT,
1.29301 ++ AVR32_SYNTAX_ST_WMI,
1.29302 ++ AVR32_SYNTAX_ST_WPL,
1.29303 ++ AVR32_SYNTAX_ST_WLS,
1.29304 ++ AVR32_SYNTAX_ST_WGT,
1.29305 ++ AVR32_SYNTAX_ST_WLE,
1.29306 ++ AVR32_SYNTAX_ST_WHI,
1.29307 ++ AVR32_SYNTAX_ST_WVS,
1.29308 ++ AVR32_SYNTAX_ST_WVC,
1.29309 ++ AVR32_SYNTAX_ST_WQS,
1.29310 ++ AVR32_SYNTAX_ST_WAL,
1.29311 ++ AVR32_SYNTAX_ST_WHS,
1.29312 ++ AVR32_SYNTAX_ST_WLO,
1.29313 ++ AVR32_SYNTAX_ST_HEQ,
1.29314 ++ AVR32_SYNTAX_ST_HNE,
1.29315 ++ AVR32_SYNTAX_ST_HCC,
1.29316 ++ AVR32_SYNTAX_ST_HCS,
1.29317 ++ AVR32_SYNTAX_ST_HGE,
1.29318 ++ AVR32_SYNTAX_ST_HLT,
1.29319 ++ AVR32_SYNTAX_ST_HMI,
1.29320 ++ AVR32_SYNTAX_ST_HPL,
1.29321 ++ AVR32_SYNTAX_ST_HLS,
1.29322 ++ AVR32_SYNTAX_ST_HGT,
1.29323 ++ AVR32_SYNTAX_ST_HLE,
1.29324 ++ AVR32_SYNTAX_ST_HHI,
1.29325 ++ AVR32_SYNTAX_ST_HVS,
1.29326 ++ AVR32_SYNTAX_ST_HVC,
1.29327 ++ AVR32_SYNTAX_ST_HQS,
1.29328 ++ AVR32_SYNTAX_ST_HAL,
1.29329 ++ AVR32_SYNTAX_ST_HHS,
1.29330 ++ AVR32_SYNTAX_ST_HLO,
1.29331 ++ AVR32_SYNTAX_ST_BEQ,
1.29332 ++ AVR32_SYNTAX_ST_BNE,
1.29333 ++ AVR32_SYNTAX_ST_BCC,
1.29334 ++ AVR32_SYNTAX_ST_BCS,
1.29335 ++ AVR32_SYNTAX_ST_BGE,
1.29336 ++ AVR32_SYNTAX_ST_BLT,
1.29337 ++ AVR32_SYNTAX_ST_BMI,
1.29338 ++ AVR32_SYNTAX_ST_BPL,
1.29339 ++ AVR32_SYNTAX_ST_BLS,
1.29340 ++ AVR32_SYNTAX_ST_BGT,
1.29341 ++ AVR32_SYNTAX_ST_BLE,
1.29342 ++ AVR32_SYNTAX_ST_BHI,
1.29343 ++ AVR32_SYNTAX_ST_BVS,
1.29344 ++ AVR32_SYNTAX_ST_BVC,
1.29345 ++ AVR32_SYNTAX_ST_BQS,
1.29346 ++ AVR32_SYNTAX_ST_BAL,
1.29347 ++ AVR32_SYNTAX_ST_BHS,
1.29348 ++ AVR32_SYNTAX_ST_BLO,
1.29349 ++ AVR32_SYNTAX_MOVH,
1.29350 ++ AVR32_SYNTAX__END_
1.29351 ++};
1.29352 ++#define AVR32_NR_SYNTAX AVR32_SYNTAX__END_
1.29353 ++
1.29354 ++enum avr32_alias_type
1.29355 ++ {
1.29356 ++ AVR32_ALIAS_FMAC_S,
1.29357 ++ AVR32_ALIAS_FMAC_D,
1.29358 ++ AVR32_ALIAS_FNMAC_S,
1.29359 ++ AVR32_ALIAS_FNMAC_D,
1.29360 ++ AVR32_ALIAS_FMSC_S,
1.29361 ++ AVR32_ALIAS_FMSC_D,
1.29362 ++ AVR32_ALIAS_FNMSC_S,
1.29363 ++ AVR32_ALIAS_FNMSC_D,
1.29364 ++ AVR32_ALIAS_FADD_S,
1.29365 ++ AVR32_ALIAS_FADD_D,
1.29366 ++ AVR32_ALIAS_FSUB_S,
1.29367 ++ AVR32_ALIAS_FSUB_D,
1.29368 ++ AVR32_ALIAS_FMUL_S,
1.29369 ++ AVR32_ALIAS_FMUL_D,
1.29370 ++ AVR32_ALIAS_FNMUL_S,
1.29371 ++ AVR32_ALIAS_FNMUL_D,
1.29372 ++ AVR32_ALIAS_FNEG_S,
1.29373 ++ AVR32_ALIAS_FNEG_D,
1.29374 ++ AVR32_ALIAS_FABS_S,
1.29375 ++ AVR32_ALIAS_FABS_D,
1.29376 ++ AVR32_ALIAS_FCMP_S,
1.29377 ++ AVR32_ALIAS_FCMP_D,
1.29378 ++ AVR32_ALIAS_FMOV1_S,
1.29379 ++ AVR32_ALIAS_FMOV1_D,
1.29380 ++ AVR32_ALIAS_FMOV2_S,
1.29381 ++ AVR32_ALIAS_FMOV2_D,
1.29382 ++ AVR32_ALIAS_FMOV3_S,
1.29383 ++ AVR32_ALIAS_FMOV3_D,
1.29384 ++ AVR32_ALIAS_FCASTS_D,
1.29385 ++ AVR32_ALIAS_FCASTD_S,
1.29386 ++ AVR32_ALIAS_PICOSVMAC0,
1.29387 ++ AVR32_ALIAS_PICOSVMAC1,
1.29388 ++ AVR32_ALIAS_PICOSVMAC2,
1.29389 ++ AVR32_ALIAS_PICOSVMAC3,
1.29390 ++ AVR32_ALIAS_PICOSVMUL0,
1.29391 ++ AVR32_ALIAS_PICOSVMUL1,
1.29392 ++ AVR32_ALIAS_PICOSVMUL2,
1.29393 ++ AVR32_ALIAS_PICOSVMUL3,
1.29394 ++ AVR32_ALIAS_PICOVMAC0,
1.29395 ++ AVR32_ALIAS_PICOVMAC1,
1.29396 ++ AVR32_ALIAS_PICOVMAC2,
1.29397 ++ AVR32_ALIAS_PICOVMAC3,
1.29398 ++ AVR32_ALIAS_PICOVMUL0,
1.29399 ++ AVR32_ALIAS_PICOVMUL1,
1.29400 ++ AVR32_ALIAS_PICOVMUL2,
1.29401 ++ AVR32_ALIAS_PICOVMUL3,
1.29402 ++ AVR32_ALIAS_PICOLD_D1,
1.29403 ++ AVR32_ALIAS_PICOLD_D2,
1.29404 ++ AVR32_ALIAS_PICOLD_D3,
1.29405 ++ AVR32_ALIAS_PICOLD_W1,
1.29406 ++ AVR32_ALIAS_PICOLD_W2,
1.29407 ++ AVR32_ALIAS_PICOLD_W3,
1.29408 ++ AVR32_ALIAS_PICOLDM_D,
1.29409 ++ AVR32_ALIAS_PICOLDM_D_PU,
1.29410 ++ AVR32_ALIAS_PICOLDM_W,
1.29411 ++ AVR32_ALIAS_PICOLDM_W_PU,
1.29412 ++ AVR32_ALIAS_PICOMV_D1,
1.29413 ++ AVR32_ALIAS_PICOMV_D2,
1.29414 ++ AVR32_ALIAS_PICOMV_W1,
1.29415 ++ AVR32_ALIAS_PICOMV_W2,
1.29416 ++ AVR32_ALIAS_PICOST_D1,
1.29417 ++ AVR32_ALIAS_PICOST_D2,
1.29418 ++ AVR32_ALIAS_PICOST_D3,
1.29419 ++ AVR32_ALIAS_PICOST_W1,
1.29420 ++ AVR32_ALIAS_PICOST_W2,
1.29421 ++ AVR32_ALIAS_PICOST_W3,
1.29422 ++ AVR32_ALIAS_PICOSTM_D,
1.29423 ++ AVR32_ALIAS_PICOSTM_D_PU,
1.29424 ++ AVR32_ALIAS_PICOSTM_W,
1.29425 ++ AVR32_ALIAS_PICOSTM_W_PU,
1.29426 ++ AVR32_ALIAS__END_
1.29427 ++ };
1.29428 ++#define AVR32_NR_ALIAS AVR32_ALIAS__END_
1.29429 ++
1.29430 ++enum avr32_mnemonic_type
1.29431 ++{
1.29432 ++ AVR32_MNEMONIC_ABS,
1.29433 ++ AVR32_MNEMONIC_ACALL,
1.29434 ++ AVR32_MNEMONIC_ACR,
1.29435 ++ AVR32_MNEMONIC_ADC,
1.29436 ++ AVR32_MNEMONIC_ADD,
1.29437 ++ AVR32_MNEMONIC_ADDABS,
1.29438 ++ AVR32_MNEMONIC_ADDHH_W,
1.29439 ++ AVR32_MNEMONIC_AND,
1.29440 ++ AVR32_MNEMONIC_ANDH,
1.29441 ++ AVR32_MNEMONIC_ANDL,
1.29442 ++ AVR32_MNEMONIC_ANDN,
1.29443 ++ AVR32_MNEMONIC_ASR,
1.29444 ++ AVR32_MNEMONIC_BFEXTS,
1.29445 ++ AVR32_MNEMONIC_BFEXTU,
1.29446 ++ AVR32_MNEMONIC_BFINS,
1.29447 ++ AVR32_MNEMONIC_BLD,
1.29448 ++ AVR32_MNEMONIC_BREQ,
1.29449 ++ AVR32_MNEMONIC_BRNE,
1.29450 ++ AVR32_MNEMONIC_BRCC,
1.29451 ++ AVR32_MNEMONIC_BRCS,
1.29452 ++ AVR32_MNEMONIC_BRGE,
1.29453 ++ AVR32_MNEMONIC_BRLT,
1.29454 ++ AVR32_MNEMONIC_BRMI,
1.29455 ++ AVR32_MNEMONIC_BRPL,
1.29456 ++ AVR32_MNEMONIC_BRHS,
1.29457 ++ AVR32_MNEMONIC_BRLO,
1.29458 ++ AVR32_MNEMONIC_BRLS,
1.29459 ++ AVR32_MNEMONIC_BRGT,
1.29460 ++ AVR32_MNEMONIC_BRLE,
1.29461 ++ AVR32_MNEMONIC_BRHI,
1.29462 ++ AVR32_MNEMONIC_BRVS,
1.29463 ++ AVR32_MNEMONIC_BRVC,
1.29464 ++ AVR32_MNEMONIC_BRQS,
1.29465 ++ AVR32_MNEMONIC_BRAL,
1.29466 ++ AVR32_MNEMONIC_BREAKPOINT,
1.29467 ++ AVR32_MNEMONIC_BREV,
1.29468 ++ AVR32_MNEMONIC_BST,
1.29469 ++ AVR32_MNEMONIC_CACHE,
1.29470 ++ AVR32_MNEMONIC_CASTS_B,
1.29471 ++ AVR32_MNEMONIC_CASTS_H,
1.29472 ++ AVR32_MNEMONIC_CASTU_B,
1.29473 ++ AVR32_MNEMONIC_CASTU_H,
1.29474 ++ AVR32_MNEMONIC_CBR,
1.29475 ++ AVR32_MNEMONIC_CLZ,
1.29476 ++ AVR32_MNEMONIC_COM,
1.29477 ++ AVR32_MNEMONIC_COP,
1.29478 ++ AVR32_MNEMONIC_CP_B,
1.29479 ++ AVR32_MNEMONIC_CP_H,
1.29480 ++ AVR32_MNEMONIC_CP_W,
1.29481 ++ AVR32_MNEMONIC_CP,
1.29482 ++ AVR32_MNEMONIC_CPC,
1.29483 ++ AVR32_MNEMONIC_CSRF,
1.29484 ++ AVR32_MNEMONIC_CSRFCZ,
1.29485 ++ AVR32_MNEMONIC_DIVS,
1.29486 ++ AVR32_MNEMONIC_DIVU,
1.29487 ++ AVR32_MNEMONIC_EOR,
1.29488 ++ AVR32_MNEMONIC_EORL,
1.29489 ++ AVR32_MNEMONIC_EORH,
1.29490 ++ AVR32_MNEMONIC_FRS,
1.29491 ++ AVR32_MNEMONIC_ICALL,
1.29492 ++ AVR32_MNEMONIC_INCJOSP,
1.29493 ++ AVR32_MNEMONIC_LD_D,
1.29494 ++ AVR32_MNEMONIC_LD_SB,
1.29495 ++ AVR32_MNEMONIC_LD_UB,
1.29496 ++ AVR32_MNEMONIC_LD_SH,
1.29497 ++ AVR32_MNEMONIC_LD_UH,
1.29498 ++ AVR32_MNEMONIC_LD_W,
1.29499 ++ AVR32_MNEMONIC_LDC_D,
1.29500 ++ AVR32_MNEMONIC_LDC_W,
1.29501 ++ AVR32_MNEMONIC_LDC0_D,
1.29502 ++ AVR32_MNEMONIC_LDC0_W,
1.29503 ++ AVR32_MNEMONIC_LDCM_D,
1.29504 ++ AVR32_MNEMONIC_LDCM_W,
1.29505 ++ AVR32_MNEMONIC_LDDPC,
1.29506 ++ AVR32_MNEMONIC_LDDSP,
1.29507 ++ AVR32_MNEMONIC_LDINS_B,
1.29508 ++ AVR32_MNEMONIC_LDINS_H,
1.29509 ++ AVR32_MNEMONIC_LDM,
1.29510 ++ AVR32_MNEMONIC_LDMTS,
1.29511 ++ AVR32_MNEMONIC_LDSWP_SH,
1.29512 ++ AVR32_MNEMONIC_LDSWP_UH,
1.29513 ++ AVR32_MNEMONIC_LDSWP_W,
1.29514 ++ AVR32_MNEMONIC_LSL,
1.29515 ++ AVR32_MNEMONIC_LSR,
1.29516 ++ AVR32_MNEMONIC_MAC,
1.29517 ++ AVR32_MNEMONIC_MACHH_D,
1.29518 ++ AVR32_MNEMONIC_MACHH_W,
1.29519 ++ AVR32_MNEMONIC_MACS_D,
1.29520 ++ AVR32_MNEMONIC_MACSATHH_W,
1.29521 ++ AVR32_MNEMONIC_MACU_D,
1.29522 ++ AVR32_MNEMONIC_MACWH_D,
1.29523 ++ AVR32_MNEMONIC_MAX,
1.29524 ++ AVR32_MNEMONIC_MCALL,
1.29525 ++ AVR32_MNEMONIC_MFDR,
1.29526 ++ AVR32_MNEMONIC_MFSR,
1.29527 ++ AVR32_MNEMONIC_MIN,
1.29528 ++ AVR32_MNEMONIC_MOV,
1.29529 ++ AVR32_MNEMONIC_MOVEQ,
1.29530 ++ AVR32_MNEMONIC_MOVNE,
1.29531 ++ AVR32_MNEMONIC_MOVCC,
1.29532 ++ AVR32_MNEMONIC_MOVCS,
1.29533 ++ AVR32_MNEMONIC_MOVGE,
1.29534 ++ AVR32_MNEMONIC_MOVLT,
1.29535 ++ AVR32_MNEMONIC_MOVMI,
1.29536 ++ AVR32_MNEMONIC_MOVPL,
1.29537 ++ AVR32_MNEMONIC_MOVLS,
1.29538 ++ AVR32_MNEMONIC_MOVGT,
1.29539 ++ AVR32_MNEMONIC_MOVLE,
1.29540 ++ AVR32_MNEMONIC_MOVHI,
1.29541 ++ AVR32_MNEMONIC_MOVVS,
1.29542 ++ AVR32_MNEMONIC_MOVVC,
1.29543 ++ AVR32_MNEMONIC_MOVQS,
1.29544 ++ AVR32_MNEMONIC_MOVAL,
1.29545 ++ AVR32_MNEMONIC_MOVHS,
1.29546 ++ AVR32_MNEMONIC_MOVLO,
1.29547 ++ AVR32_MNEMONIC_MTDR,
1.29548 ++ AVR32_MNEMONIC_MTSR,
1.29549 ++ AVR32_MNEMONIC_MUL,
1.29550 ++ AVR32_MNEMONIC_MULHH_W,
1.29551 ++ AVR32_MNEMONIC_MULNHH_W,
1.29552 ++ AVR32_MNEMONIC_MULNWH_D,
1.29553 ++ AVR32_MNEMONIC_MULS_D,
1.29554 ++ AVR32_MNEMONIC_MULSATHH_H,
1.29555 ++ AVR32_MNEMONIC_MULSATHH_W,
1.29556 ++ AVR32_MNEMONIC_MULSATRNDHH_H,
1.29557 ++ AVR32_MNEMONIC_MULSATRNDWH_W,
1.29558 ++ AVR32_MNEMONIC_MULSATWH_W,
1.29559 ++ AVR32_MNEMONIC_MULU_D,
1.29560 ++ AVR32_MNEMONIC_MULWH_D,
1.29561 ++ AVR32_MNEMONIC_MUSFR,
1.29562 ++ AVR32_MNEMONIC_MUSTR,
1.29563 ++ AVR32_MNEMONIC_MVCR_D,
1.29564 ++ AVR32_MNEMONIC_MVCR_W,
1.29565 ++ AVR32_MNEMONIC_MVRC_D,
1.29566 ++ AVR32_MNEMONIC_MVRC_W,
1.29567 ++ AVR32_MNEMONIC_NEG,
1.29568 ++ AVR32_MNEMONIC_NOP,
1.29569 ++ AVR32_MNEMONIC_OR,
1.29570 ++ AVR32_MNEMONIC_ORH,
1.29571 ++ AVR32_MNEMONIC_ORL,
1.29572 ++ AVR32_MNEMONIC_PABS_SB,
1.29573 ++ AVR32_MNEMONIC_PABS_SH,
1.29574 ++ AVR32_MNEMONIC_PACKSH_SB,
1.29575 ++ AVR32_MNEMONIC_PACKSH_UB,
1.29576 ++ AVR32_MNEMONIC_PACKW_SH,
1.29577 ++ AVR32_MNEMONIC_PADD_B,
1.29578 ++ AVR32_MNEMONIC_PADD_H,
1.29579 ++ AVR32_MNEMONIC_PADDH_SH,
1.29580 ++ AVR32_MNEMONIC_PADDH_UB,
1.29581 ++ AVR32_MNEMONIC_PADDS_SB,
1.29582 ++ AVR32_MNEMONIC_PADDS_SH,
1.29583 ++ AVR32_MNEMONIC_PADDS_UB,
1.29584 ++ AVR32_MNEMONIC_PADDS_UH,
1.29585 ++ AVR32_MNEMONIC_PADDSUB_H,
1.29586 ++ AVR32_MNEMONIC_PADDSUBH_SH,
1.29587 ++ AVR32_MNEMONIC_PADDSUBS_SH,
1.29588 ++ AVR32_MNEMONIC_PADDSUBS_UH,
1.29589 ++ AVR32_MNEMONIC_PADDX_H,
1.29590 ++ AVR32_MNEMONIC_PADDXH_SH,
1.29591 ++ AVR32_MNEMONIC_PADDXS_SH,
1.29592 ++ AVR32_MNEMONIC_PADDXS_UH,
1.29593 ++ AVR32_MNEMONIC_PASR_B,
1.29594 ++ AVR32_MNEMONIC_PASR_H,
1.29595 ++ AVR32_MNEMONIC_PAVG_SH,
1.29596 ++ AVR32_MNEMONIC_PAVG_UB,
1.29597 ++ AVR32_MNEMONIC_PLSL_B,
1.29598 ++ AVR32_MNEMONIC_PLSL_H,
1.29599 ++ AVR32_MNEMONIC_PLSR_B,
1.29600 ++ AVR32_MNEMONIC_PLSR_H,
1.29601 ++ AVR32_MNEMONIC_PMAX_SH,
1.29602 ++ AVR32_MNEMONIC_PMAX_UB,
1.29603 ++ AVR32_MNEMONIC_PMIN_SH,
1.29604 ++ AVR32_MNEMONIC_PMIN_UB,
1.29605 ++ AVR32_MNEMONIC_POPJC,
1.29606 ++ AVR32_MNEMONIC_POPM,
1.29607 ++ AVR32_MNEMONIC_PREF,
1.29608 ++ AVR32_MNEMONIC_PSAD,
1.29609 ++ AVR32_MNEMONIC_PSUB_B,
1.29610 ++ AVR32_MNEMONIC_PSUB_H,
1.29611 ++ AVR32_MNEMONIC_PSUBADD_H,
1.29612 ++ AVR32_MNEMONIC_PSUBADDH_SH,
1.29613 ++ AVR32_MNEMONIC_PSUBADDS_SH,
1.29614 ++ AVR32_MNEMONIC_PSUBADDS_UH,
1.29615 ++ AVR32_MNEMONIC_PSUBH_SH,
1.29616 ++ AVR32_MNEMONIC_PSUBH_UB,
1.29617 ++ AVR32_MNEMONIC_PSUBS_SB,
1.29618 ++ AVR32_MNEMONIC_PSUBS_SH,
1.29619 ++ AVR32_MNEMONIC_PSUBS_UB,
1.29620 ++ AVR32_MNEMONIC_PSUBS_UH,
1.29621 ++ AVR32_MNEMONIC_PSUBX_H,
1.29622 ++ AVR32_MNEMONIC_PSUBXH_SH,
1.29623 ++ AVR32_MNEMONIC_PSUBXS_SH,
1.29624 ++ AVR32_MNEMONIC_PSUBXS_UH,
1.29625 ++ AVR32_MNEMONIC_PUNPCKSB_H,
1.29626 ++ AVR32_MNEMONIC_PUNPCKUB_H,
1.29627 ++ AVR32_MNEMONIC_PUSHJC,
1.29628 ++ AVR32_MNEMONIC_PUSHM,
1.29629 ++ AVR32_MNEMONIC_RCALL,
1.29630 ++ AVR32_MNEMONIC_RETEQ,
1.29631 ++ AVR32_MNEMONIC_RETNE,
1.29632 ++ AVR32_MNEMONIC_RETCC,
1.29633 ++ AVR32_MNEMONIC_RETCS,
1.29634 ++ AVR32_MNEMONIC_RETGE,
1.29635 ++ AVR32_MNEMONIC_RETLT,
1.29636 ++ AVR32_MNEMONIC_RETMI,
1.29637 ++ AVR32_MNEMONIC_RETPL,
1.29638 ++ AVR32_MNEMONIC_RETLS,
1.29639 ++ AVR32_MNEMONIC_RETGT,
1.29640 ++ AVR32_MNEMONIC_RETLE,
1.29641 ++ AVR32_MNEMONIC_RETHI,
1.29642 ++ AVR32_MNEMONIC_RETVS,
1.29643 ++ AVR32_MNEMONIC_RETVC,
1.29644 ++ AVR32_MNEMONIC_RETQS,
1.29645 ++ AVR32_MNEMONIC_RETAL,
1.29646 ++ AVR32_MNEMONIC_RETHS,
1.29647 ++ AVR32_MNEMONIC_RETLO,
1.29648 ++ AVR32_MNEMONIC_RET,
1.29649 ++ AVR32_MNEMONIC_RETD,
1.29650 ++ AVR32_MNEMONIC_RETE,
1.29651 ++ AVR32_MNEMONIC_RETJ,
1.29652 ++ AVR32_MNEMONIC_RETS,
1.29653 ++ AVR32_MNEMONIC_RJMP,
1.29654 ++ AVR32_MNEMONIC_ROL,
1.29655 ++ AVR32_MNEMONIC_ROR,
1.29656 ++ AVR32_MNEMONIC_RSUB,
1.29657 ++ AVR32_MNEMONIC_SATADD_H,
1.29658 ++ AVR32_MNEMONIC_SATADD_W,
1.29659 ++ AVR32_MNEMONIC_SATRNDS,
1.29660 ++ AVR32_MNEMONIC_SATRNDU,
1.29661 ++ AVR32_MNEMONIC_SATS,
1.29662 ++ AVR32_MNEMONIC_SATSUB_H,
1.29663 ++ AVR32_MNEMONIC_SATSUB_W,
1.29664 ++ AVR32_MNEMONIC_SATU,
1.29665 ++ AVR32_MNEMONIC_SBC,
1.29666 ++ AVR32_MNEMONIC_SBR,
1.29667 ++ AVR32_MNEMONIC_SCALL,
1.29668 ++ AVR32_MNEMONIC_SCR,
1.29669 ++ AVR32_MNEMONIC_SLEEP,
1.29670 ++ AVR32_MNEMONIC_SREQ,
1.29671 ++ AVR32_MNEMONIC_SRNE,
1.29672 ++ AVR32_MNEMONIC_SRCC,
1.29673 ++ AVR32_MNEMONIC_SRCS,
1.29674 ++ AVR32_MNEMONIC_SRGE,
1.29675 ++ AVR32_MNEMONIC_SRLT,
1.29676 ++ AVR32_MNEMONIC_SRMI,
1.29677 ++ AVR32_MNEMONIC_SRPL,
1.29678 ++ AVR32_MNEMONIC_SRLS,
1.29679 ++ AVR32_MNEMONIC_SRGT,
1.29680 ++ AVR32_MNEMONIC_SRLE,
1.29681 ++ AVR32_MNEMONIC_SRHI,
1.29682 ++ AVR32_MNEMONIC_SRVS,
1.29683 ++ AVR32_MNEMONIC_SRVC,
1.29684 ++ AVR32_MNEMONIC_SRQS,
1.29685 ++ AVR32_MNEMONIC_SRAL,
1.29686 ++ AVR32_MNEMONIC_SRHS,
1.29687 ++ AVR32_MNEMONIC_SRLO,
1.29688 ++ AVR32_MNEMONIC_SSRF,
1.29689 ++ AVR32_MNEMONIC_ST_B,
1.29690 ++ AVR32_MNEMONIC_ST_D,
1.29691 ++ AVR32_MNEMONIC_ST_H,
1.29692 ++ AVR32_MNEMONIC_ST_W,
1.29693 ++ AVR32_MNEMONIC_STC_D,
1.29694 ++ AVR32_MNEMONIC_STC_W,
1.29695 ++ AVR32_MNEMONIC_STC0_D,
1.29696 ++ AVR32_MNEMONIC_STC0_W,
1.29697 ++ AVR32_MNEMONIC_STCM_D,
1.29698 ++ AVR32_MNEMONIC_STCM_W,
1.29699 ++ AVR32_MNEMONIC_STCOND,
1.29700 ++ AVR32_MNEMONIC_STDSP,
1.29701 ++ AVR32_MNEMONIC_STHH_W,
1.29702 ++ AVR32_MNEMONIC_STM,
1.29703 ++ AVR32_MNEMONIC_STMTS,
1.29704 ++ AVR32_MNEMONIC_STSWP_H,
1.29705 ++ AVR32_MNEMONIC_STSWP_W,
1.29706 ++ AVR32_MNEMONIC_SUB,
1.29707 ++ AVR32_MNEMONIC_SUBEQ,
1.29708 ++ AVR32_MNEMONIC_SUBNE,
1.29709 ++ AVR32_MNEMONIC_SUBCC,
1.29710 ++ AVR32_MNEMONIC_SUBCS,
1.29711 ++ AVR32_MNEMONIC_SUBGE,
1.29712 ++ AVR32_MNEMONIC_SUBLT,
1.29713 ++ AVR32_MNEMONIC_SUBMI,
1.29714 ++ AVR32_MNEMONIC_SUBPL,
1.29715 ++ AVR32_MNEMONIC_SUBLS,
1.29716 ++ AVR32_MNEMONIC_SUBGT,
1.29717 ++ AVR32_MNEMONIC_SUBLE,
1.29718 ++ AVR32_MNEMONIC_SUBHI,
1.29719 ++ AVR32_MNEMONIC_SUBVS,
1.29720 ++ AVR32_MNEMONIC_SUBVC,
1.29721 ++ AVR32_MNEMONIC_SUBQS,
1.29722 ++ AVR32_MNEMONIC_SUBAL,
1.29723 ++ AVR32_MNEMONIC_SUBHS,
1.29724 ++ AVR32_MNEMONIC_SUBLO,
1.29725 ++ AVR32_MNEMONIC_SUBFEQ,
1.29726 ++ AVR32_MNEMONIC_SUBFNE,
1.29727 ++ AVR32_MNEMONIC_SUBFCC,
1.29728 ++ AVR32_MNEMONIC_SUBFCS,
1.29729 ++ AVR32_MNEMONIC_SUBFGE,
1.29730 ++ AVR32_MNEMONIC_SUBFLT,
1.29731 ++ AVR32_MNEMONIC_SUBFMI,
1.29732 ++ AVR32_MNEMONIC_SUBFPL,
1.29733 ++ AVR32_MNEMONIC_SUBFLS,
1.29734 ++ AVR32_MNEMONIC_SUBFGT,
1.29735 ++ AVR32_MNEMONIC_SUBFLE,
1.29736 ++ AVR32_MNEMONIC_SUBFHI,
1.29737 ++ AVR32_MNEMONIC_SUBFVS,
1.29738 ++ AVR32_MNEMONIC_SUBFVC,
1.29739 ++ AVR32_MNEMONIC_SUBFQS,
1.29740 ++ AVR32_MNEMONIC_SUBFAL,
1.29741 ++ AVR32_MNEMONIC_SUBFHS,
1.29742 ++ AVR32_MNEMONIC_SUBFLO,
1.29743 ++ AVR32_MNEMONIC_SUBHH_W,
1.29744 ++ AVR32_MNEMONIC_SWAP_B,
1.29745 ++ AVR32_MNEMONIC_SWAP_BH,
1.29746 ++ AVR32_MNEMONIC_SWAP_H,
1.29747 ++ AVR32_MNEMONIC_SYNC,
1.29748 ++ AVR32_MNEMONIC_TLBR,
1.29749 ++ AVR32_MNEMONIC_TLBS,
1.29750 ++ AVR32_MNEMONIC_TLBW,
1.29751 ++ AVR32_MNEMONIC_TNBZ,
1.29752 ++ AVR32_MNEMONIC_TST,
1.29753 ++ AVR32_MNEMONIC_XCHG,
1.29754 ++ AVR32_MNEMONIC_MEMC,
1.29755 ++ AVR32_MNEMONIC_MEMS,
1.29756 ++ AVR32_MNEMONIC_MEMT,
1.29757 ++ AVR32_MNEMONIC_FADD_S,
1.29758 ++ AVR32_MNEMONIC_FADD_D,
1.29759 ++ AVR32_MNEMONIC_FSUB_S,
1.29760 ++ AVR32_MNEMONIC_FSUB_D,
1.29761 ++ AVR32_MNEMONIC_FMAC_S,
1.29762 ++ AVR32_MNEMONIC_FMAC_D,
1.29763 ++ AVR32_MNEMONIC_FNMAC_S,
1.29764 ++ AVR32_MNEMONIC_FNMAC_D,
1.29765 ++ AVR32_MNEMONIC_FMSC_S,
1.29766 ++ AVR32_MNEMONIC_FMSC_D,
1.29767 ++ AVR32_MNEMONIC_FNMSC_S,
1.29768 ++ AVR32_MNEMONIC_FNMSC_D,
1.29769 ++ AVR32_MNEMONIC_FMUL_S,
1.29770 ++ AVR32_MNEMONIC_FMUL_D,
1.29771 ++ AVR32_MNEMONIC_FNMUL_S,
1.29772 ++ AVR32_MNEMONIC_FNMUL_D,
1.29773 ++ AVR32_MNEMONIC_FNEG_S,
1.29774 ++ AVR32_MNEMONIC_FNEG_D,
1.29775 ++ AVR32_MNEMONIC_FABS_S,
1.29776 ++ AVR32_MNEMONIC_FABS_D,
1.29777 ++ AVR32_MNEMONIC_FCMP_S,
1.29778 ++ AVR32_MNEMONIC_FCMP_D,
1.29779 ++ AVR32_MNEMONIC_FMOV_S,
1.29780 ++ AVR32_MNEMONIC_FMOV_D,
1.29781 ++ AVR32_MNEMONIC_FCASTS_D,
1.29782 ++ AVR32_MNEMONIC_FCASTD_S,
1.29783 ++ /* AVR32_MNEMONIC_FLD_S,
1.29784 ++ AVR32_MNEMONIC_FLD_D,
1.29785 ++ AVR32_MNEMONIC_FST_S,
1.29786 ++ AVR32_MNEMONIC_FST_D, */
1.29787 ++ AVR32_MNEMONIC_LDA_W,
1.29788 ++ AVR32_MNEMONIC_CALL,
1.29789 ++ AVR32_MNEMONIC_PICOSVMAC,
1.29790 ++ AVR32_MNEMONIC_PICOSVMUL,
1.29791 ++ AVR32_MNEMONIC_PICOVMAC,
1.29792 ++ AVR32_MNEMONIC_PICOVMUL,
1.29793 ++ AVR32_MNEMONIC_PICOLD_D,
1.29794 ++ AVR32_MNEMONIC_PICOLD_W,
1.29795 ++ AVR32_MNEMONIC_PICOLDM_D,
1.29796 ++ AVR32_MNEMONIC_PICOLDM_W,
1.29797 ++ AVR32_MNEMONIC_PICOMV_D,
1.29798 ++ AVR32_MNEMONIC_PICOMV_W,
1.29799 ++ AVR32_MNEMONIC_PICOST_D,
1.29800 ++ AVR32_MNEMONIC_PICOST_W,
1.29801 ++ AVR32_MNEMONIC_PICOSTM_D,
1.29802 ++ AVR32_MNEMONIC_PICOSTM_W,
1.29803 ++ AVR32_MNEMONIC_RSUBEQ,
1.29804 ++ AVR32_MNEMONIC_RSUBNE,
1.29805 ++ AVR32_MNEMONIC_RSUBCC,
1.29806 ++ AVR32_MNEMONIC_RSUBCS,
1.29807 ++ AVR32_MNEMONIC_RSUBGE,
1.29808 ++ AVR32_MNEMONIC_RSUBLT,
1.29809 ++ AVR32_MNEMONIC_RSUBMI,
1.29810 ++ AVR32_MNEMONIC_RSUBPL,
1.29811 ++ AVR32_MNEMONIC_RSUBLS,
1.29812 ++ AVR32_MNEMONIC_RSUBGT,
1.29813 ++ AVR32_MNEMONIC_RSUBLE,
1.29814 ++ AVR32_MNEMONIC_RSUBHI,
1.29815 ++ AVR32_MNEMONIC_RSUBVS,
1.29816 ++ AVR32_MNEMONIC_RSUBVC,
1.29817 ++ AVR32_MNEMONIC_RSUBQS,
1.29818 ++ AVR32_MNEMONIC_RSUBAL,
1.29819 ++ AVR32_MNEMONIC_RSUBHS,
1.29820 ++ AVR32_MNEMONIC_RSUBLO,
1.29821 ++ AVR32_MNEMONIC_ADDEQ,
1.29822 ++ AVR32_MNEMONIC_ADDNE,
1.29823 ++ AVR32_MNEMONIC_ADDCC,
1.29824 ++ AVR32_MNEMONIC_ADDCS,
1.29825 ++ AVR32_MNEMONIC_ADDGE,
1.29826 ++ AVR32_MNEMONIC_ADDLT,
1.29827 ++ AVR32_MNEMONIC_ADDMI,
1.29828 ++ AVR32_MNEMONIC_ADDPL,
1.29829 ++ AVR32_MNEMONIC_ADDLS,
1.29830 ++ AVR32_MNEMONIC_ADDGT,
1.29831 ++ AVR32_MNEMONIC_ADDLE,
1.29832 ++ AVR32_MNEMONIC_ADDHI,
1.29833 ++ AVR32_MNEMONIC_ADDVS,
1.29834 ++ AVR32_MNEMONIC_ADDVC,
1.29835 ++ AVR32_MNEMONIC_ADDQS,
1.29836 ++ AVR32_MNEMONIC_ADDAL,
1.29837 ++ AVR32_MNEMONIC_ADDHS,
1.29838 ++ AVR32_MNEMONIC_ADDLO,
1.29839 ++ AVR32_MNEMONIC_ANDEQ,
1.29840 ++ AVR32_MNEMONIC_ANDNE,
1.29841 ++ AVR32_MNEMONIC_ANDCC,
1.29842 ++ AVR32_MNEMONIC_ANDCS,
1.29843 ++ AVR32_MNEMONIC_ANDGE,
1.29844 ++ AVR32_MNEMONIC_ANDLT,
1.29845 ++ AVR32_MNEMONIC_ANDMI,
1.29846 ++ AVR32_MNEMONIC_ANDPL,
1.29847 ++ AVR32_MNEMONIC_ANDLS,
1.29848 ++ AVR32_MNEMONIC_ANDGT,
1.29849 ++ AVR32_MNEMONIC_ANDLE,
1.29850 ++ AVR32_MNEMONIC_ANDHI,
1.29851 ++ AVR32_MNEMONIC_ANDVS,
1.29852 ++ AVR32_MNEMONIC_ANDVC,
1.29853 ++ AVR32_MNEMONIC_ANDQS,
1.29854 ++ AVR32_MNEMONIC_ANDAL,
1.29855 ++ AVR32_MNEMONIC_ANDHS,
1.29856 ++ AVR32_MNEMONIC_ANDLO,
1.29857 ++ AVR32_MNEMONIC_OREQ,
1.29858 ++ AVR32_MNEMONIC_ORNE,
1.29859 ++ AVR32_MNEMONIC_ORCC,
1.29860 ++ AVR32_MNEMONIC_ORCS,
1.29861 ++ AVR32_MNEMONIC_ORGE,
1.29862 ++ AVR32_MNEMONIC_ORLT,
1.29863 ++ AVR32_MNEMONIC_ORMI,
1.29864 ++ AVR32_MNEMONIC_ORPL,
1.29865 ++ AVR32_MNEMONIC_ORLS,
1.29866 ++ AVR32_MNEMONIC_ORGT,
1.29867 ++ AVR32_MNEMONIC_ORLE,
1.29868 ++ AVR32_MNEMONIC_ORHI,
1.29869 ++ AVR32_MNEMONIC_ORVS,
1.29870 ++ AVR32_MNEMONIC_ORVC,
1.29871 ++ AVR32_MNEMONIC_ORQS,
1.29872 ++ AVR32_MNEMONIC_ORAL,
1.29873 ++ AVR32_MNEMONIC_ORHS,
1.29874 ++ AVR32_MNEMONIC_ORLO,
1.29875 ++ AVR32_MNEMONIC_EOREQ,
1.29876 ++ AVR32_MNEMONIC_EORNE,
1.29877 ++ AVR32_MNEMONIC_EORCC,
1.29878 ++ AVR32_MNEMONIC_EORCS,
1.29879 ++ AVR32_MNEMONIC_EORGE,
1.29880 ++ AVR32_MNEMONIC_EORLT,
1.29881 ++ AVR32_MNEMONIC_EORMI,
1.29882 ++ AVR32_MNEMONIC_EORPL,
1.29883 ++ AVR32_MNEMONIC_EORLS,
1.29884 ++ AVR32_MNEMONIC_EORGT,
1.29885 ++ AVR32_MNEMONIC_EORLE,
1.29886 ++ AVR32_MNEMONIC_EORHI,
1.29887 ++ AVR32_MNEMONIC_EORVS,
1.29888 ++ AVR32_MNEMONIC_EORVC,
1.29889 ++ AVR32_MNEMONIC_EORQS,
1.29890 ++ AVR32_MNEMONIC_EORAL,
1.29891 ++ AVR32_MNEMONIC_EORHS,
1.29892 ++ AVR32_MNEMONIC_EORLO,
1.29893 ++ AVR32_MNEMONIC_LD_WEQ,
1.29894 ++ AVR32_MNEMONIC_LD_WNE,
1.29895 ++ AVR32_MNEMONIC_LD_WCC,
1.29896 ++ AVR32_MNEMONIC_LD_WCS,
1.29897 ++ AVR32_MNEMONIC_LD_WGE,
1.29898 ++ AVR32_MNEMONIC_LD_WLT,
1.29899 ++ AVR32_MNEMONIC_LD_WMI,
1.29900 ++ AVR32_MNEMONIC_LD_WPL,
1.29901 ++ AVR32_MNEMONIC_LD_WLS,
1.29902 ++ AVR32_MNEMONIC_LD_WGT,
1.29903 ++ AVR32_MNEMONIC_LD_WLE,
1.29904 ++ AVR32_MNEMONIC_LD_WHI,
1.29905 ++ AVR32_MNEMONIC_LD_WVS,
1.29906 ++ AVR32_MNEMONIC_LD_WVC,
1.29907 ++ AVR32_MNEMONIC_LD_WQS,
1.29908 ++ AVR32_MNEMONIC_LD_WAL,
1.29909 ++ AVR32_MNEMONIC_LD_WHS,
1.29910 ++ AVR32_MNEMONIC_LD_WLO,
1.29911 ++ AVR32_MNEMONIC_LD_SHEQ,
1.29912 ++ AVR32_MNEMONIC_LD_SHNE,
1.29913 ++ AVR32_MNEMONIC_LD_SHCC,
1.29914 ++ AVR32_MNEMONIC_LD_SHCS,
1.29915 ++ AVR32_MNEMONIC_LD_SHGE,
1.29916 ++ AVR32_MNEMONIC_LD_SHLT,
1.29917 ++ AVR32_MNEMONIC_LD_SHMI,
1.29918 ++ AVR32_MNEMONIC_LD_SHPL,
1.29919 ++ AVR32_MNEMONIC_LD_SHLS,
1.29920 ++ AVR32_MNEMONIC_LD_SHGT,
1.29921 ++ AVR32_MNEMONIC_LD_SHLE,
1.29922 ++ AVR32_MNEMONIC_LD_SHHI,
1.29923 ++ AVR32_MNEMONIC_LD_SHVS,
1.29924 ++ AVR32_MNEMONIC_LD_SHVC,
1.29925 ++ AVR32_MNEMONIC_LD_SHQS,
1.29926 ++ AVR32_MNEMONIC_LD_SHAL,
1.29927 ++ AVR32_MNEMONIC_LD_SHHS,
1.29928 ++ AVR32_MNEMONIC_LD_SHLO,
1.29929 ++ AVR32_MNEMONIC_LD_UHEQ,
1.29930 ++ AVR32_MNEMONIC_LD_UHNE,
1.29931 ++ AVR32_MNEMONIC_LD_UHCC,
1.29932 ++ AVR32_MNEMONIC_LD_UHCS,
1.29933 ++ AVR32_MNEMONIC_LD_UHGE,
1.29934 ++ AVR32_MNEMONIC_LD_UHLT,
1.29935 ++ AVR32_MNEMONIC_LD_UHMI,
1.29936 ++ AVR32_MNEMONIC_LD_UHPL,
1.29937 ++ AVR32_MNEMONIC_LD_UHLS,
1.29938 ++ AVR32_MNEMONIC_LD_UHGT,
1.29939 ++ AVR32_MNEMONIC_LD_UHLE,
1.29940 ++ AVR32_MNEMONIC_LD_UHHI,
1.29941 ++ AVR32_MNEMONIC_LD_UHVS,
1.29942 ++ AVR32_MNEMONIC_LD_UHVC,
1.29943 ++ AVR32_MNEMONIC_LD_UHQS,
1.29944 ++ AVR32_MNEMONIC_LD_UHAL,
1.29945 ++ AVR32_MNEMONIC_LD_UHHS,
1.29946 ++ AVR32_MNEMONIC_LD_UHLO,
1.29947 ++ AVR32_MNEMONIC_LD_SBEQ,
1.29948 ++ AVR32_MNEMONIC_LD_SBNE,
1.29949 ++ AVR32_MNEMONIC_LD_SBCC,
1.29950 ++ AVR32_MNEMONIC_LD_SBCS,
1.29951 ++ AVR32_MNEMONIC_LD_SBGE,
1.29952 ++ AVR32_MNEMONIC_LD_SBLT,
1.29953 ++ AVR32_MNEMONIC_LD_SBMI,
1.29954 ++ AVR32_MNEMONIC_LD_SBPL,
1.29955 ++ AVR32_MNEMONIC_LD_SBLS,
1.29956 ++ AVR32_MNEMONIC_LD_SBGT,
1.29957 ++ AVR32_MNEMONIC_LD_SBLE,
1.29958 ++ AVR32_MNEMONIC_LD_SBHI,
1.29959 ++ AVR32_MNEMONIC_LD_SBVS,
1.29960 ++ AVR32_MNEMONIC_LD_SBVC,
1.29961 ++ AVR32_MNEMONIC_LD_SBQS,
1.29962 ++ AVR32_MNEMONIC_LD_SBAL,
1.29963 ++ AVR32_MNEMONIC_LD_SBHS,
1.29964 ++ AVR32_MNEMONIC_LD_SBLO,
1.29965 ++ AVR32_MNEMONIC_LD_UBEQ,
1.29966 ++ AVR32_MNEMONIC_LD_UBNE,
1.29967 ++ AVR32_MNEMONIC_LD_UBCC,
1.29968 ++ AVR32_MNEMONIC_LD_UBCS,
1.29969 ++ AVR32_MNEMONIC_LD_UBGE,
1.29970 ++ AVR32_MNEMONIC_LD_UBLT,
1.29971 ++ AVR32_MNEMONIC_LD_UBMI,
1.29972 ++ AVR32_MNEMONIC_LD_UBPL,
1.29973 ++ AVR32_MNEMONIC_LD_UBLS,
1.29974 ++ AVR32_MNEMONIC_LD_UBGT,
1.29975 ++ AVR32_MNEMONIC_LD_UBLE,
1.29976 ++ AVR32_MNEMONIC_LD_UBHI,
1.29977 ++ AVR32_MNEMONIC_LD_UBVS,
1.29978 ++ AVR32_MNEMONIC_LD_UBVC,
1.29979 ++ AVR32_MNEMONIC_LD_UBQS,
1.29980 ++ AVR32_MNEMONIC_LD_UBAL,
1.29981 ++ AVR32_MNEMONIC_LD_UBHS,
1.29982 ++ AVR32_MNEMONIC_LD_UBLO,
1.29983 ++ AVR32_MNEMONIC_ST_WEQ,
1.29984 ++ AVR32_MNEMONIC_ST_WNE,
1.29985 ++ AVR32_MNEMONIC_ST_WCC,
1.29986 ++ AVR32_MNEMONIC_ST_WCS,
1.29987 ++ AVR32_MNEMONIC_ST_WGE,
1.29988 ++ AVR32_MNEMONIC_ST_WLT,
1.29989 ++ AVR32_MNEMONIC_ST_WMI,
1.29990 ++ AVR32_MNEMONIC_ST_WPL,
1.29991 ++ AVR32_MNEMONIC_ST_WLS,
1.29992 ++ AVR32_MNEMONIC_ST_WGT,
1.29993 ++ AVR32_MNEMONIC_ST_WLE,
1.29994 ++ AVR32_MNEMONIC_ST_WHI,
1.29995 ++ AVR32_MNEMONIC_ST_WVS,
1.29996 ++ AVR32_MNEMONIC_ST_WVC,
1.29997 ++ AVR32_MNEMONIC_ST_WQS,
1.29998 ++ AVR32_MNEMONIC_ST_WAL,
1.29999 ++ AVR32_MNEMONIC_ST_WHS,
1.30000 ++ AVR32_MNEMONIC_ST_WLO,
1.30001 ++ AVR32_MNEMONIC_ST_HEQ,
1.30002 ++ AVR32_MNEMONIC_ST_HNE,
1.30003 ++ AVR32_MNEMONIC_ST_HCC,
1.30004 ++ AVR32_MNEMONIC_ST_HCS,
1.30005 ++ AVR32_MNEMONIC_ST_HGE,
1.30006 ++ AVR32_MNEMONIC_ST_HLT,
1.30007 ++ AVR32_MNEMONIC_ST_HMI,
1.30008 ++ AVR32_MNEMONIC_ST_HPL,
1.30009 ++ AVR32_MNEMONIC_ST_HLS,
1.30010 ++ AVR32_MNEMONIC_ST_HGT,
1.30011 ++ AVR32_MNEMONIC_ST_HLE,
1.30012 ++ AVR32_MNEMONIC_ST_HHI,
1.30013 ++ AVR32_MNEMONIC_ST_HVS,
1.30014 ++ AVR32_MNEMONIC_ST_HVC,
1.30015 ++ AVR32_MNEMONIC_ST_HQS,
1.30016 ++ AVR32_MNEMONIC_ST_HAL,
1.30017 ++ AVR32_MNEMONIC_ST_HHS,
1.30018 ++ AVR32_MNEMONIC_ST_HLO,
1.30019 ++ AVR32_MNEMONIC_ST_BEQ,
1.30020 ++ AVR32_MNEMONIC_ST_BNE,
1.30021 ++ AVR32_MNEMONIC_ST_BCC,
1.30022 ++ AVR32_MNEMONIC_ST_BCS,
1.30023 ++ AVR32_MNEMONIC_ST_BGE,
1.30024 ++ AVR32_MNEMONIC_ST_BLT,
1.30025 ++ AVR32_MNEMONIC_ST_BMI,
1.30026 ++ AVR32_MNEMONIC_ST_BPL,
1.30027 ++ AVR32_MNEMONIC_ST_BLS,
1.30028 ++ AVR32_MNEMONIC_ST_BGT,
1.30029 ++ AVR32_MNEMONIC_ST_BLE,
1.30030 ++ AVR32_MNEMONIC_ST_BHI,
1.30031 ++ AVR32_MNEMONIC_ST_BVS,
1.30032 ++ AVR32_MNEMONIC_ST_BVC,
1.30033 ++ AVR32_MNEMONIC_ST_BQS,
1.30034 ++ AVR32_MNEMONIC_ST_BAL,
1.30035 ++ AVR32_MNEMONIC_ST_BHS,
1.30036 ++ AVR32_MNEMONIC_ST_BLO,
1.30037 ++ AVR32_MNEMONIC_MOVH,
1.30038 ++ AVR32_MNEMONIC__END_
1.30039 ++};
1.30040 ++#define AVR32_NR_MNEMONICS AVR32_MNEMONIC__END_
1.30041 ++
1.30042 ++enum avr32_syntax_parser
1.30043 ++ {
1.30044 ++ AVR32_PARSER_NORMAL,
1.30045 ++ AVR32_PARSER_ALIAS,
1.30046 ++ AVR32_PARSER_LDA,
1.30047 ++ AVR32_PARSER_CALL,
1.30048 ++ AVR32_PARSER__END_
1.30049 ++ };
1.30050 ++#define AVR32_NR_PARSERS AVR32_PARSER__END_
1.30051 +--- a/opcodes/configure.in
1.30052 ++++ b/opcodes/configure.in
1.30053 +@@ -158,6 +158,7 @@ if test x${all_targets} = xfalse ; then
1.30054 + bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
1.30055 + bfd_arm_arch) ta="$ta arm-dis.lo" ;;
1.30056 + bfd_avr_arch) ta="$ta avr-dis.lo" ;;
1.30057 ++ bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
1.30058 + bfd_bfin_arch) ta="$ta bfin-dis.lo" ;;
1.30059 + bfd_cr16_arch) ta="$ta cr16-dis.lo cr16-opc.lo" ;;
1.30060 + bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
1.30061 +@@ -216,7 +217,7 @@ if test x${all_targets} = xfalse ; then
1.30062 + ta="$ta sh64-dis.lo sh64-opc.lo"
1.30063 + archdefs="$archdefs -DINCLUDE_SHMEDIA"
1.30064 + break;;
1.30065 +- esac;
1.30066 ++ esac
1.30067 + done
1.30068 + ta="$ta sh-dis.lo cgen-bitset.lo" ;;
1.30069 + bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
1.30070 +--- a/opcodes/disassemble.c
1.30071 ++++ b/opcodes/disassemble.c
1.30072 +@@ -27,6 +27,7 @@
1.30073 + #define ARCH_arc
1.30074 + #define ARCH_arm
1.30075 + #define ARCH_avr
1.30076 ++#define ARCH_avr32
1.30077 + #define ARCH_bfin
1.30078 + #define ARCH_cr16
1.30079 + #define ARCH_cris
1.30080 +@@ -128,6 +129,11 @@ disassembler (abfd)
1.30081 + disassemble = print_insn_avr;
1.30082 + break;
1.30083 + #endif
1.30084 ++#ifdef ARCH_avr32
1.30085 ++ case bfd_arch_avr32:
1.30086 ++ disassemble = print_insn_avr32;
1.30087 ++ break;
1.30088 ++#endif
1.30089 + #ifdef ARCH_bfin
1.30090 + case bfd_arch_bfin:
1.30091 + disassemble = print_insn_bfin;
1.30092 +@@ -346,9 +352,9 @@ disassembler (abfd)
1.30093 + #ifdef ARCH_score
1.30094 + case bfd_arch_score:
1.30095 + if (bfd_big_endian (abfd))
1.30096 +- disassemble = print_insn_big_score;
1.30097 ++ disassemble = print_insn_big_score;
1.30098 + else
1.30099 +- disassemble = print_insn_little_score;
1.30100 ++ disassemble = print_insn_little_score;
1.30101 + break;
1.30102 + #endif
1.30103 + #ifdef ARCH_sh
1.30104 +@@ -466,6 +472,9 @@ disassembler_usage (stream)
1.30105 + #ifdef ARCH_i386
1.30106 + print_i386_disassembler_options (stream);
1.30107 + #endif
1.30108 ++#ifdef ARCH_avr32
1.30109 ++ print_avr32_disassembler_options (stream);
1.30110 ++#endif
1.30111 +
1.30112 + return;
1.30113 + }
1.30114 +--- a/opcodes/Makefile.am
1.30115 ++++ b/opcodes/Makefile.am
1.30116 +@@ -30,6 +30,7 @@ LIBIBERTY = ../libiberty/libiberty.a
1.30117 + # Header files.
1.30118 + HFILES = \
1.30119 + cgen-ops.h cgen-types.h \
1.30120 ++ avr32-asm.h avr32-opc.h \
1.30121 + fr30-desc.h fr30-opc.h \
1.30122 + frv-desc.h frv-opc.h \
1.30123 + h8500-opc.h \
1.30124 +@@ -63,6 +64,9 @@ CFILES = \
1.30125 + arc-ext.c \
1.30126 + arm-dis.c \
1.30127 + avr-dis.c \
1.30128 ++ avr32-asm.c \
1.30129 ++ avr32-dis.c \
1.30130 ++ avr32-opc.c \
1.30131 + bfin-dis.c \
1.30132 + cgen-asm.c \
1.30133 + cgen-bitset.c \
1.30134 +@@ -217,6 +221,9 @@ ALL_MACHINES = \
1.30135 + arc-ext.lo \
1.30136 + arm-dis.lo \
1.30137 + avr-dis.lo \
1.30138 ++ avr32-asm.lo \
1.30139 ++ avr32-dis.lo \
1.30140 ++ avr32-opc.lo \
1.30141 + bfin-dis.lo \
1.30142 + cgen-asm.lo \
1.30143 + cgen-bitset.lo \
1.30144 +@@ -674,6 +681,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h
1.30145 + $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
1.30146 + opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
1.30147 + $(INCDIR)/opcode/avr.h
1.30148 ++avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
1.30149 ++ $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
1.30150 ++ $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
1.30151 ++ $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
1.30152 ++avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
1.30153 ++ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
1.30154 ++ avr32-opc.h opintl.h
1.30155 ++avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
1.30156 ++ $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
1.30157 + bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
1.30158 + $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
1.30159 + cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
1.30160 +--- a/bfd/bfd-in2.h
1.30161 ++++ b/bfd/bfd-in2.h
1.30162 +@@ -2017,6 +2017,11 @@ enum bfd_architecture
1.30163 + #define bfd_mach_avr4 4
1.30164 + #define bfd_mach_avr5 5
1.30165 + #define bfd_mach_avr6 6
1.30166 ++ bfd_arch_avr32, /* Atmel AVR32 */
1.30167 ++#define bfd_mach_avr32_ap 7000
1.30168 ++#define bfd_mach_avr32_uc 3000
1.30169 ++#define bfd_mach_avr32_ucr1 3001
1.30170 ++#define bfd_mach_avr32_ucr2 3002
1.30171 + bfd_arch_bfin, /* ADI Blackfin */
1.30172 + #define bfd_mach_bfin 1
1.30173 + bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
1.30174 +@@ -3758,6 +3763,88 @@ instructions */
1.30175 + instructions */
1.30176 + BFD_RELOC_AVR_6_ADIW,
1.30177 +
1.30178 ++/* Difference between two labels: L2 - L1. The value of L1 is encoded
1.30179 ++as sym + addend, while the initial difference after assembly is
1.30180 ++inserted into the object file by the assembler. */
1.30181 ++ BFD_RELOC_AVR32_DIFF32,
1.30182 ++ BFD_RELOC_AVR32_DIFF16,
1.30183 ++ BFD_RELOC_AVR32_DIFF8,
1.30184 ++
1.30185 ++/* Reference to a symbol through the Global Offset Table. The linker
1.30186 ++will allocate an entry for symbol in the GOT and insert the offset
1.30187 ++of this entry as the relocation value. */
1.30188 ++ BFD_RELOC_AVR32_GOT32,
1.30189 ++ BFD_RELOC_AVR32_GOT16,
1.30190 ++ BFD_RELOC_AVR32_GOT8,
1.30191 ++
1.30192 ++/* Normal (non-pc-relative) code relocations. Alignment and signedness
1.30193 ++is indicated by the suffixes. S means signed, U means unsigned. W
1.30194 ++means word-aligned, H means halfword-aligned, neither means
1.30195 ++byte-aligned (no alignment.) SUB5 is the same relocation as 16S. */
1.30196 ++ BFD_RELOC_AVR32_21S,
1.30197 ++ BFD_RELOC_AVR32_16U,
1.30198 ++ BFD_RELOC_AVR32_16S,
1.30199 ++ BFD_RELOC_AVR32_SUB5,
1.30200 ++ BFD_RELOC_AVR32_8S_EXT,
1.30201 ++ BFD_RELOC_AVR32_8S,
1.30202 ++ BFD_RELOC_AVR32_15S,
1.30203 ++
1.30204 ++/* PC-relative relocations are signed if neither 'U' nor 'S' is
1.30205 ++specified. However, we explicitly tack on a 'B' to indicate no
1.30206 ++alignment, to avoid confusion with data relocs. All of these resolve
1.30207 ++to sym + addend - offset, except the one with 'N' (negated) suffix.
1.30208 ++This particular one resolves to offset - sym - addend. */
1.30209 ++ BFD_RELOC_AVR32_22H_PCREL,
1.30210 ++ BFD_RELOC_AVR32_18W_PCREL,
1.30211 ++ BFD_RELOC_AVR32_16B_PCREL,
1.30212 ++ BFD_RELOC_AVR32_16N_PCREL,
1.30213 ++ BFD_RELOC_AVR32_14UW_PCREL,
1.30214 ++ BFD_RELOC_AVR32_11H_PCREL,
1.30215 ++ BFD_RELOC_AVR32_10UW_PCREL,
1.30216 ++ BFD_RELOC_AVR32_9H_PCREL,
1.30217 ++ BFD_RELOC_AVR32_9UW_PCREL,
1.30218 ++
1.30219 ++/* Subtract the link-time address of the GOT from (symbol + addend)
1.30220 ++and insert the result. */
1.30221 ++ BFD_RELOC_AVR32_GOTPC,
1.30222 ++
1.30223 ++/* Reference to a symbol through the GOT. The linker will allocate an
1.30224 ++entry for symbol in the GOT and insert the offset of this entry as
1.30225 ++the relocation value. addend must be zero. As usual, 'S' means
1.30226 ++signed, 'W' means word-aligned, etc. */
1.30227 ++ BFD_RELOC_AVR32_GOTCALL,
1.30228 ++ BFD_RELOC_AVR32_LDA_GOT,
1.30229 ++ BFD_RELOC_AVR32_GOT21S,
1.30230 ++ BFD_RELOC_AVR32_GOT18SW,
1.30231 ++ BFD_RELOC_AVR32_GOT16S,
1.30232 ++
1.30233 ++/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
1.30234 ++a whole lot of sense. */
1.30235 ++ BFD_RELOC_AVR32_32_CPENT,
1.30236 ++
1.30237 ++/* Constant pool references. Some of these relocations are signed,
1.30238 ++others are unsigned. It doesn't really matter, since the constant
1.30239 ++pool always comes after the code that references it. */
1.30240 ++ BFD_RELOC_AVR32_CPCALL,
1.30241 ++ BFD_RELOC_AVR32_16_CP,
1.30242 ++ BFD_RELOC_AVR32_9W_CP,
1.30243 ++
1.30244 ++/* sym must be the absolute symbol. The addend specifies the alignment
1.30245 ++order, e.g. if addend is 2, the linker must add padding so that the
1.30246 ++next address is aligned to a 4-byte boundary. */
1.30247 ++ BFD_RELOC_AVR32_ALIGN,
1.30248 ++
1.30249 ++/* Code relocations that will never make it to the output file. */
1.30250 ++ BFD_RELOC_AVR32_14UW,
1.30251 ++ BFD_RELOC_AVR32_10UW,
1.30252 ++ BFD_RELOC_AVR32_10SW,
1.30253 ++ BFD_RELOC_AVR32_STHH_W,
1.30254 ++ BFD_RELOC_AVR32_7UW,
1.30255 ++ BFD_RELOC_AVR32_6S,
1.30256 ++ BFD_RELOC_AVR32_6UW,
1.30257 ++ BFD_RELOC_AVR32_4UH,
1.30258 ++ BFD_RELOC_AVR32_3U,
1.30259 ++
1.30260 + /* Direct 12 bit. */
1.30261 + BFD_RELOC_390_12,
1.30262 +
1.30263 +--- /dev/null
1.30264 ++++ b/bfd/bfd-in3.h
1.30265 +@@ -0,0 +1,5406 @@
1.30266 ++/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
1.30267 ++ generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
1.30268 ++ "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
1.30269 ++ "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
1.30270 ++ "linker.c" and "simple.c".
1.30271 ++ Run "make headers" in your build bfd/ to regenerate. */
1.30272 ++
1.30273 ++/* Main header file for the bfd library -- portable access to object files.
1.30274 ++
1.30275 ++ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1.30276 ++ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
1.30277 ++ Free Software Foundation, Inc.
1.30278 ++
1.30279 ++ Contributed by Cygnus Support.
1.30280 ++
1.30281 ++ This file is part of BFD, the Binary File Descriptor library.
1.30282 ++
1.30283 ++ This program is free software; you can redistribute it and/or modify
1.30284 ++ it under the terms of the GNU General Public License as published by
1.30285 ++ the Free Software Foundation; either version 3 of the License, or
1.30286 ++ (at your option) any later version.
1.30287 ++
1.30288 ++ This program is distributed in the hope that it will be useful,
1.30289 ++ but WITHOUT ANY WARRANTY; without even the implied warranty of
1.30290 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.30291 ++ GNU General Public License for more details.
1.30292 ++
1.30293 ++ You should have received a copy of the GNU General Public License
1.30294 ++ along with this program; if not, write to the Free Software
1.30295 ++ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
1.30296 ++
1.30297 ++#ifndef __BFD_H_SEEN__
1.30298 ++#define __BFD_H_SEEN__
1.30299 ++
1.30300 ++#ifdef __cplusplus
1.30301 ++extern "C" {
1.30302 ++#endif
1.30303 ++
1.30304 ++#include "ansidecl.h"
1.30305 ++#include "symcat.h"
1.30306 ++#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
1.30307 ++#ifndef SABER
1.30308 ++/* This hack is to avoid a problem with some strict ANSI C preprocessors.
1.30309 ++ The problem is, "32_" is not a valid preprocessing token, and we don't
1.30310 ++ want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will
1.30311 ++ cause the inner CONCAT2 macros to be evaluated first, producing
1.30312 ++ still-valid pp-tokens. Then the final concatenation can be done. */
1.30313 ++#undef CONCAT4
1.30314 ++#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
1.30315 ++#endif
1.30316 ++#endif
1.30317 ++
1.30318 ++/* This is a utility macro to handle the situation where the code
1.30319 ++ wants to place a constant string into the code, followed by a
1.30320 ++ comma and then the length of the string. Doing this by hand
1.30321 ++ is error prone, so using this macro is safer. The macro will
1.30322 ++ also safely handle the case where a NULL is passed as the arg. */
1.30323 ++#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
1.30324 ++/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
1.30325 ++ to create the arguments to another macro, since the preprocessor
1.30326 ++ will mis-count the number of arguments to the outer macro (by not
1.30327 ++ evaluating STRING_COMMA_LEN and so missing the comma). This is a
1.30328 ++ problem for example when trying to use STRING_COMMA_LEN to build
1.30329 ++ the arguments to the strncmp() macro. Hence this alternative
1.30330 ++ definition of strncmp is provided here.
1.30331 ++
1.30332 ++ Note - these macros do NOT work if STR2 is not a constant string. */
1.30333 ++#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
1.30334 ++ /* strcpy() can have a similar problem, but since we know we are
1.30335 ++ copying a constant string, we can use memcpy which will be faster
1.30336 ++ since there is no need to check for a NUL byte inside STR. We
1.30337 ++ can also save time if we do not need to copy the terminating NUL. */
1.30338 ++#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
1.30339 ++#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
1.30340 ++
1.30341 ++
1.30342 ++/* The word size used by BFD on the host. This may be 64 with a 32
1.30343 ++ bit target if the host is 64 bit, or if other 64 bit targets have
1.30344 ++ been selected with --enable-targets, or if --enable-64-bit-bfd. */
1.30345 ++#define BFD_ARCH_SIZE 32
1.30346 ++
1.30347 ++/* The word size of the default bfd target. */
1.30348 ++#define BFD_DEFAULT_TARGET_SIZE 32
1.30349 ++
1.30350 ++#define BFD_HOST_64BIT_LONG 0
1.30351 ++#define BFD_HOST_64BIT_LONG_LONG 0
1.30352 ++#define BFD_HOST_LONG_LONG 1
1.30353 ++#if 1
1.30354 ++#define BFD_HOST_64_BIT long long
1.30355 ++#define BFD_HOST_U_64_BIT unsigned long long
1.30356 ++typedef BFD_HOST_64_BIT bfd_int64_t;
1.30357 ++typedef BFD_HOST_U_64_BIT bfd_uint64_t;
1.30358 ++#endif
1.30359 ++
1.30360 ++#if BFD_ARCH_SIZE >= 64
1.30361 ++#define BFD64
1.30362 ++#endif
1.30363 ++
1.30364 ++#ifndef INLINE
1.30365 ++#if __GNUC__ >= 2
1.30366 ++#define INLINE __inline__
1.30367 ++#else
1.30368 ++#define INLINE
1.30369 ++#endif
1.30370 ++#endif
1.30371 ++
1.30372 ++/* Declaring a type wide enough to hold a host long and a host pointer. */
1.30373 ++#define BFD_HOSTPTR_T unsigned long
1.30374 ++typedef BFD_HOSTPTR_T bfd_hostptr_t;
1.30375 ++
1.30376 ++/* Forward declaration. */
1.30377 ++typedef struct bfd bfd;
1.30378 ++
1.30379 ++/* Boolean type used in bfd. Too many systems define their own
1.30380 ++ versions of "boolean" for us to safely typedef a "boolean" of
1.30381 ++ our own. Using an enum for "bfd_boolean" has its own set of
1.30382 ++ problems, with strange looking casts required to avoid warnings
1.30383 ++ on some older compilers. Thus we just use an int.
1.30384 ++
1.30385 ++ General rule: Functions which are bfd_boolean return TRUE on
1.30386 ++ success and FALSE on failure (unless they're a predicate). */
1.30387 ++
1.30388 ++typedef int bfd_boolean;
1.30389 ++#undef FALSE
1.30390 ++#undef TRUE
1.30391 ++#define FALSE 0
1.30392 ++#define TRUE 1
1.30393 ++
1.30394 ++#ifdef BFD64
1.30395 ++
1.30396 ++#ifndef BFD_HOST_64_BIT
1.30397 ++ #error No 64 bit integer type available
1.30398 ++#endif /* ! defined (BFD_HOST_64_BIT) */
1.30399 ++
1.30400 ++typedef BFD_HOST_U_64_BIT bfd_vma;
1.30401 ++typedef BFD_HOST_64_BIT bfd_signed_vma;
1.30402 ++typedef BFD_HOST_U_64_BIT bfd_size_type;
1.30403 ++typedef BFD_HOST_U_64_BIT symvalue;
1.30404 ++
1.30405 ++#ifndef fprintf_vma
1.30406 ++#if BFD_HOST_64BIT_LONG
1.30407 ++#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
1.30408 ++#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
1.30409 ++#elif BFD_HOST_64BIT_LONG_LONG
1.30410 ++#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
1.30411 ++#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
1.30412 ++#else
1.30413 ++#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
1.30414 ++#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
1.30415 ++#define fprintf_vma(s,x) \
1.30416 ++ fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
1.30417 ++#define sprintf_vma(s,x) \
1.30418 ++ sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
1.30419 ++#endif
1.30420 ++#endif
1.30421 ++
1.30422 ++#else /* not BFD64 */
1.30423 ++
1.30424 ++/* Represent a target address. Also used as a generic unsigned type
1.30425 ++ which is guaranteed to be big enough to hold any arithmetic types
1.30426 ++ we need to deal with. */
1.30427 ++typedef unsigned long bfd_vma;
1.30428 ++
1.30429 ++/* A generic signed type which is guaranteed to be big enough to hold any
1.30430 ++ arithmetic types we need to deal with. Can be assumed to be compatible
1.30431 ++ with bfd_vma in the same way that signed and unsigned ints are compatible
1.30432 ++ (as parameters, in assignment, etc). */
1.30433 ++typedef long bfd_signed_vma;
1.30434 ++
1.30435 ++typedef unsigned long symvalue;
1.30436 ++typedef unsigned long bfd_size_type;
1.30437 ++
1.30438 ++/* Print a bfd_vma x on stream s. */
1.30439 ++#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
1.30440 ++#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
1.30441 ++
1.30442 ++#endif /* not BFD64 */
1.30443 ++
1.30444 ++#define HALF_BFD_SIZE_TYPE \
1.30445 ++ (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
1.30446 ++
1.30447 ++#ifndef BFD_HOST_64_BIT
1.30448 ++/* Fall back on a 32 bit type. The idea is to make these types always
1.30449 ++ available for function return types, but in the case that
1.30450 ++ BFD_HOST_64_BIT is undefined such a function should abort or
1.30451 ++ otherwise signal an error. */
1.30452 ++typedef bfd_signed_vma bfd_int64_t;
1.30453 ++typedef bfd_vma bfd_uint64_t;
1.30454 ++#endif
1.30455 ++
1.30456 ++/* An offset into a file. BFD always uses the largest possible offset
1.30457 ++ based on the build time availability of fseek, fseeko, or fseeko64. */
1.30458 ++typedef BFD_HOST_64_BIT file_ptr;
1.30459 ++typedef unsigned BFD_HOST_64_BIT ufile_ptr;
1.30460 ++
1.30461 ++extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
1.30462 ++extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
1.30463 ++
1.30464 ++#define printf_vma(x) fprintf_vma(stdout,x)
1.30465 ++#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
1.30466 ++
1.30467 ++typedef unsigned int flagword; /* 32 bits of flags */
1.30468 ++typedef unsigned char bfd_byte;
1.30469 ++
1.30470 ++/* File formats. */
1.30471 ++
1.30472 ++typedef enum bfd_format
1.30473 ++{
1.30474 ++ bfd_unknown = 0, /* File format is unknown. */
1.30475 ++ bfd_object, /* Linker/assembler/compiler output. */
1.30476 ++ bfd_archive, /* Object archive file. */
1.30477 ++ bfd_core, /* Core dump. */
1.30478 ++ bfd_type_end /* Marks the end; don't use it! */
1.30479 ++}
1.30480 ++bfd_format;
1.30481 ++
1.30482 ++/* Values that may appear in the flags field of a BFD. These also
1.30483 ++ appear in the object_flags field of the bfd_target structure, where
1.30484 ++ they indicate the set of flags used by that backend (not all flags
1.30485 ++ are meaningful for all object file formats) (FIXME: at the moment,
1.30486 ++ the object_flags values have mostly just been copied from backend
1.30487 ++ to another, and are not necessarily correct). */
1.30488 ++
1.30489 ++/* No flags. */
1.30490 ++#define BFD_NO_FLAGS 0x00
1.30491 ++
1.30492 ++/* BFD contains relocation entries. */
1.30493 ++#define HAS_RELOC 0x01
1.30494 ++
1.30495 ++/* BFD is directly executable. */
1.30496 ++#define EXEC_P 0x02
1.30497 ++
1.30498 ++/* BFD has line number information (basically used for F_LNNO in a
1.30499 ++ COFF header). */
1.30500 ++#define HAS_LINENO 0x04
1.30501 ++
1.30502 ++/* BFD has debugging information. */
1.30503 ++#define HAS_DEBUG 0x08
1.30504 ++
1.30505 ++/* BFD has symbols. */
1.30506 ++#define HAS_SYMS 0x10
1.30507 ++
1.30508 ++/* BFD has local symbols (basically used for F_LSYMS in a COFF
1.30509 ++ header). */
1.30510 ++#define HAS_LOCALS 0x20
1.30511 ++
1.30512 ++/* BFD is a dynamic object. */
1.30513 ++#define DYNAMIC 0x40
1.30514 ++
1.30515 ++/* Text section is write protected (if D_PAGED is not set, this is
1.30516 ++ like an a.out NMAGIC file) (the linker sets this by default, but
1.30517 ++ clears it for -r or -N). */
1.30518 ++#define WP_TEXT 0x80
1.30519 ++
1.30520 ++/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
1.30521 ++ linker sets this by default, but clears it for -r or -n or -N). */
1.30522 ++#define D_PAGED 0x100
1.30523 ++
1.30524 ++/* BFD is relaxable (this means that bfd_relax_section may be able to
1.30525 ++ do something) (sometimes bfd_relax_section can do something even if
1.30526 ++ this is not set). */
1.30527 ++#define BFD_IS_RELAXABLE 0x200
1.30528 ++
1.30529 ++/* This may be set before writing out a BFD to request using a
1.30530 ++ traditional format. For example, this is used to request that when
1.30531 ++ writing out an a.out object the symbols not be hashed to eliminate
1.30532 ++ duplicates. */
1.30533 ++#define BFD_TRADITIONAL_FORMAT 0x400
1.30534 ++
1.30535 ++/* This flag indicates that the BFD contents are actually cached in
1.30536 ++ memory. If this is set, iostream points to a bfd_in_memory struct. */
1.30537 ++#define BFD_IN_MEMORY 0x800
1.30538 ++
1.30539 ++/* The sections in this BFD specify a memory page. */
1.30540 ++#define HAS_LOAD_PAGE 0x1000
1.30541 ++
1.30542 ++/* This BFD has been created by the linker and doesn't correspond
1.30543 ++ to any input file. */
1.30544 ++#define BFD_LINKER_CREATED 0x2000
1.30545 ++
1.30546 ++/* Symbols and relocation. */
1.30547 ++
1.30548 ++/* A count of carsyms (canonical archive symbols). */
1.30549 ++typedef unsigned long symindex;
1.30550 ++
1.30551 ++/* How to perform a relocation. */
1.30552 ++typedef const struct reloc_howto_struct reloc_howto_type;
1.30553 ++
1.30554 ++#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
1.30555 ++
1.30556 ++/* General purpose part of a symbol X;
1.30557 ++ target specific parts are in libcoff.h, libaout.h, etc. */
1.30558 ++
1.30559 ++#define bfd_get_section(x) ((x)->section)
1.30560 ++#define bfd_get_output_section(x) ((x)->section->output_section)
1.30561 ++#define bfd_set_section(x,y) ((x)->section) = (y)
1.30562 ++#define bfd_asymbol_base(x) ((x)->section->vma)
1.30563 ++#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
1.30564 ++#define bfd_asymbol_name(x) ((x)->name)
1.30565 ++/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
1.30566 ++#define bfd_asymbol_bfd(x) ((x)->the_bfd)
1.30567 ++#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
1.30568 ++
1.30569 ++/* A canonical archive symbol. */
1.30570 ++/* This is a type pun with struct ranlib on purpose! */
1.30571 ++typedef struct carsym
1.30572 ++{
1.30573 ++ char *name;
1.30574 ++ file_ptr file_offset; /* Look here to find the file. */
1.30575 ++}
1.30576 ++carsym; /* To make these you call a carsymogen. */
1.30577 ++
1.30578 ++/* Used in generating armaps (archive tables of contents).
1.30579 ++ Perhaps just a forward definition would do? */
1.30580 ++struct orl /* Output ranlib. */
1.30581 ++{
1.30582 ++ char **name; /* Symbol name. */
1.30583 ++ union
1.30584 ++ {
1.30585 ++ file_ptr pos;
1.30586 ++ bfd *abfd;
1.30587 ++ } u; /* bfd* or file position. */
1.30588 ++ int namidx; /* Index into string table. */
1.30589 ++};
1.30590 ++
1.30591 ++/* Linenumber stuff. */
1.30592 ++typedef struct lineno_cache_entry
1.30593 ++{
1.30594 ++ unsigned int line_number; /* Linenumber from start of function. */
1.30595 ++ union
1.30596 ++ {
1.30597 ++ struct bfd_symbol *sym; /* Function name. */
1.30598 ++ bfd_vma offset; /* Offset into section. */
1.30599 ++ } u;
1.30600 ++}
1.30601 ++alent;
1.30602 ++
1.30603 ++/* Object and core file sections. */
1.30604 ++
1.30605 ++#define align_power(addr, align) \
1.30606 ++ (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
1.30607 ++
1.30608 ++typedef struct bfd_section *sec_ptr;
1.30609 ++
1.30610 ++#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
1.30611 ++#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
1.30612 ++#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
1.30613 ++#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
1.30614 ++#define bfd_section_name(bfd, ptr) ((ptr)->name)
1.30615 ++#define bfd_section_size(bfd, ptr) ((ptr)->size)
1.30616 ++#define bfd_get_section_size(ptr) ((ptr)->size)
1.30617 ++#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
1.30618 ++#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
1.30619 ++#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
1.30620 ++#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
1.30621 ++#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
1.30622 ++
1.30623 ++#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
1.30624 ++
1.30625 ++#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
1.30626 ++#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
1.30627 ++#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
1.30628 ++/* Find the address one past the end of SEC. */
1.30629 ++#define bfd_get_section_limit(bfd, sec) \
1.30630 ++ (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
1.30631 ++ / bfd_octets_per_byte (bfd))
1.30632 ++
1.30633 ++/* Return TRUE if section has been discarded. */
1.30634 ++#define elf_discarded_section(sec) \
1.30635 ++ (!bfd_is_abs_section (sec) \
1.30636 ++ && bfd_is_abs_section ((sec)->output_section) \
1.30637 ++ && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \
1.30638 ++ && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
1.30639 ++
1.30640 ++/* Forward define. */
1.30641 ++struct stat;
1.30642 ++
1.30643 ++typedef enum bfd_print_symbol
1.30644 ++{
1.30645 ++ bfd_print_symbol_name,
1.30646 ++ bfd_print_symbol_more,
1.30647 ++ bfd_print_symbol_all
1.30648 ++} bfd_print_symbol_type;
1.30649 ++
1.30650 ++/* Information about a symbol that nm needs. */
1.30651 ++
1.30652 ++typedef struct _symbol_info
1.30653 ++{
1.30654 ++ symvalue value;
1.30655 ++ char type;
1.30656 ++ const char *name; /* Symbol name. */
1.30657 ++ unsigned char stab_type; /* Stab type. */
1.30658 ++ char stab_other; /* Stab other. */
1.30659 ++ short stab_desc; /* Stab desc. */
1.30660 ++ const char *stab_name; /* String for stab type. */
1.30661 ++} symbol_info;
1.30662 ++
1.30663 ++/* Get the name of a stabs type code. */
1.30664 ++
1.30665 ++extern const char *bfd_get_stab_name (int);
1.30666 ++
1.30667 ++/* Hash table routines. There is no way to free up a hash table. */
1.30668 ++
1.30669 ++/* An element in the hash table. Most uses will actually use a larger
1.30670 ++ structure, and an instance of this will be the first field. */
1.30671 ++
1.30672 ++struct bfd_hash_entry
1.30673 ++{
1.30674 ++ /* Next entry for this hash code. */
1.30675 ++ struct bfd_hash_entry *next;
1.30676 ++ /* String being hashed. */
1.30677 ++ const char *string;
1.30678 ++ /* Hash code. This is the full hash code, not the index into the
1.30679 ++ table. */
1.30680 ++ unsigned long hash;
1.30681 ++};
1.30682 ++
1.30683 ++/* A hash table. */
1.30684 ++
1.30685 ++struct bfd_hash_table
1.30686 ++{
1.30687 ++ /* The hash array. */
1.30688 ++ struct bfd_hash_entry **table;
1.30689 ++ /* A function used to create new elements in the hash table. The
1.30690 ++ first entry is itself a pointer to an element. When this
1.30691 ++ function is first invoked, this pointer will be NULL. However,
1.30692 ++ having the pointer permits a hierarchy of method functions to be
1.30693 ++ built each of which calls the function in the superclass. Thus
1.30694 ++ each function should be written to allocate a new block of memory
1.30695 ++ only if the argument is NULL. */
1.30696 ++ struct bfd_hash_entry *(*newfunc)
1.30697 ++ (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
1.30698 ++ /* An objalloc for this hash table. This is a struct objalloc *,
1.30699 ++ but we use void * to avoid requiring the inclusion of objalloc.h. */
1.30700 ++ void *memory;
1.30701 ++ /* The number of slots in the hash table. */
1.30702 ++ unsigned int size;
1.30703 ++ /* The number of entries in the hash table. */
1.30704 ++ unsigned int count;
1.30705 ++ /* The size of elements. */
1.30706 ++ unsigned int entsize;
1.30707 ++ /* If non-zero, don't grow the hash table. */
1.30708 ++ unsigned int frozen:1;
1.30709 ++};
1.30710 ++
1.30711 ++/* Initialize a hash table. */
1.30712 ++extern bfd_boolean bfd_hash_table_init
1.30713 ++ (struct bfd_hash_table *,
1.30714 ++ struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
1.30715 ++ struct bfd_hash_table *,
1.30716 ++ const char *),
1.30717 ++ unsigned int);
1.30718 ++
1.30719 ++/* Initialize a hash table specifying a size. */
1.30720 ++extern bfd_boolean bfd_hash_table_init_n
1.30721 ++ (struct bfd_hash_table *,
1.30722 ++ struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
1.30723 ++ struct bfd_hash_table *,
1.30724 ++ const char *),
1.30725 ++ unsigned int, unsigned int);
1.30726 ++
1.30727 ++/* Free up a hash table. */
1.30728 ++extern void bfd_hash_table_free
1.30729 ++ (struct bfd_hash_table *);
1.30730 ++
1.30731 ++/* Look up a string in a hash table. If CREATE is TRUE, a new entry
1.30732 ++ will be created for this string if one does not already exist. The
1.30733 ++ COPY argument must be TRUE if this routine should copy the string
1.30734 ++ into newly allocated memory when adding an entry. */
1.30735 ++extern struct bfd_hash_entry *bfd_hash_lookup
1.30736 ++ (struct bfd_hash_table *, const char *, bfd_boolean create,
1.30737 ++ bfd_boolean copy);
1.30738 ++
1.30739 ++/* Replace an entry in a hash table. */
1.30740 ++extern void bfd_hash_replace
1.30741 ++ (struct bfd_hash_table *, struct bfd_hash_entry *old,
1.30742 ++ struct bfd_hash_entry *nw);
1.30743 ++
1.30744 ++/* Base method for creating a hash table entry. */
1.30745 ++extern struct bfd_hash_entry *bfd_hash_newfunc
1.30746 ++ (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
1.30747 ++
1.30748 ++/* Grab some space for a hash table entry. */
1.30749 ++extern void *bfd_hash_allocate
1.30750 ++ (struct bfd_hash_table *, unsigned int);
1.30751 ++
1.30752 ++/* Traverse a hash table in a random order, calling a function on each
1.30753 ++ element. If the function returns FALSE, the traversal stops. The
1.30754 ++ INFO argument is passed to the function. */
1.30755 ++extern void bfd_hash_traverse
1.30756 ++ (struct bfd_hash_table *,
1.30757 ++ bfd_boolean (*) (struct bfd_hash_entry *, void *),
1.30758 ++ void *info);
1.30759 ++
1.30760 ++/* Allows the default size of a hash table to be configured. New hash
1.30761 ++ tables allocated using bfd_hash_table_init will be created with
1.30762 ++ this size. */
1.30763 ++extern void bfd_hash_set_default_size (bfd_size_type);
1.30764 ++
1.30765 ++/* This structure is used to keep track of stabs in sections
1.30766 ++ information while linking. */
1.30767 ++
1.30768 ++struct stab_info
1.30769 ++{
1.30770 ++ /* A hash table used to hold stabs strings. */
1.30771 ++ struct bfd_strtab_hash *strings;
1.30772 ++ /* The header file hash table. */
1.30773 ++ struct bfd_hash_table includes;
1.30774 ++ /* The first .stabstr section. */
1.30775 ++ struct bfd_section *stabstr;
1.30776 ++};
1.30777 ++
1.30778 ++#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
1.30779 ++
1.30780 ++/* User program access to BFD facilities. */
1.30781 ++
1.30782 ++/* Direct I/O routines, for programs which know more about the object
1.30783 ++ file than BFD does. Use higher level routines if possible. */
1.30784 ++
1.30785 ++extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
1.30786 ++extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
1.30787 ++extern int bfd_seek (bfd *, file_ptr, int);
1.30788 ++extern file_ptr bfd_tell (bfd *);
1.30789 ++extern int bfd_flush (bfd *);
1.30790 ++extern int bfd_stat (bfd *, struct stat *);
1.30791 ++
1.30792 ++/* Deprecated old routines. */
1.30793 ++#if __GNUC__
1.30794 ++#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
1.30795 ++ (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
1.30796 ++ bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
1.30797 ++#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
1.30798 ++ (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
1.30799 ++ bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
1.30800 ++#else
1.30801 ++#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
1.30802 ++ (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
1.30803 ++ bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
1.30804 ++#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
1.30805 ++ (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
1.30806 ++ bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
1.30807 ++#endif
1.30808 ++extern void warn_deprecated (const char *, const char *, int, const char *);
1.30809 ++
1.30810 ++/* Cast from const char * to char * so that caller can assign to
1.30811 ++ a char * without a warning. */
1.30812 ++#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
1.30813 ++#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
1.30814 ++#define bfd_get_format(abfd) ((abfd)->format)
1.30815 ++#define bfd_get_target(abfd) ((abfd)->xvec->name)
1.30816 ++#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
1.30817 ++#define bfd_family_coff(abfd) \
1.30818 ++ (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
1.30819 ++ bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
1.30820 ++#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
1.30821 ++#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
1.30822 ++#define bfd_header_big_endian(abfd) \
1.30823 ++ ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
1.30824 ++#define bfd_header_little_endian(abfd) \
1.30825 ++ ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
1.30826 ++#define bfd_get_file_flags(abfd) ((abfd)->flags)
1.30827 ++#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
1.30828 ++#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
1.30829 ++#define bfd_my_archive(abfd) ((abfd)->my_archive)
1.30830 ++#define bfd_has_map(abfd) ((abfd)->has_armap)
1.30831 ++
1.30832 ++#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
1.30833 ++#define bfd_usrdata(abfd) ((abfd)->usrdata)
1.30834 ++
1.30835 ++#define bfd_get_start_address(abfd) ((abfd)->start_address)
1.30836 ++#define bfd_get_symcount(abfd) ((abfd)->symcount)
1.30837 ++#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
1.30838 ++#define bfd_count_sections(abfd) ((abfd)->section_count)
1.30839 ++
1.30840 ++#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
1.30841 ++
1.30842 ++#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
1.30843 ++
1.30844 ++#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
1.30845 ++
1.30846 ++extern bfd_boolean bfd_cache_close
1.30847 ++ (bfd *abfd);
1.30848 ++/* NB: This declaration should match the autogenerated one in libbfd.h. */
1.30849 ++
1.30850 ++extern bfd_boolean bfd_cache_close_all (void);
1.30851 ++
1.30852 ++extern bfd_boolean bfd_record_phdr
1.30853 ++ (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
1.30854 ++ bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
1.30855 ++
1.30856 ++/* Byte swapping routines. */
1.30857 ++
1.30858 ++bfd_uint64_t bfd_getb64 (const void *);
1.30859 ++bfd_uint64_t bfd_getl64 (const void *);
1.30860 ++bfd_int64_t bfd_getb_signed_64 (const void *);
1.30861 ++bfd_int64_t bfd_getl_signed_64 (const void *);
1.30862 ++bfd_vma bfd_getb32 (const void *);
1.30863 ++bfd_vma bfd_getl32 (const void *);
1.30864 ++bfd_signed_vma bfd_getb_signed_32 (const void *);
1.30865 ++bfd_signed_vma bfd_getl_signed_32 (const void *);
1.30866 ++bfd_vma bfd_getb16 (const void *);
1.30867 ++bfd_vma bfd_getl16 (const void *);
1.30868 ++bfd_signed_vma bfd_getb_signed_16 (const void *);
1.30869 ++bfd_signed_vma bfd_getl_signed_16 (const void *);
1.30870 ++void bfd_putb64 (bfd_uint64_t, void *);
1.30871 ++void bfd_putl64 (bfd_uint64_t, void *);
1.30872 ++void bfd_putb32 (bfd_vma, void *);
1.30873 ++void bfd_putl32 (bfd_vma, void *);
1.30874 ++void bfd_putb16 (bfd_vma, void *);
1.30875 ++void bfd_putl16 (bfd_vma, void *);
1.30876 ++
1.30877 ++/* Byte swapping routines which take size and endiannes as arguments. */
1.30878 ++
1.30879 ++bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
1.30880 ++void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
1.30881 ++
1.30882 ++extern bfd_boolean bfd_section_already_linked_table_init (void);
1.30883 ++extern void bfd_section_already_linked_table_free (void);
1.30884 ++
1.30885 ++/* Externally visible ECOFF routines. */
1.30886 ++
1.30887 ++#if defined(__STDC__) || defined(ALMOST_STDC)
1.30888 ++struct ecoff_debug_info;
1.30889 ++struct ecoff_debug_swap;
1.30890 ++struct ecoff_extr;
1.30891 ++struct bfd_symbol;
1.30892 ++struct bfd_link_info;
1.30893 ++struct bfd_link_hash_entry;
1.30894 ++struct bfd_elf_version_tree;
1.30895 ++#endif
1.30896 ++extern bfd_vma bfd_ecoff_get_gp_value
1.30897 ++ (bfd * abfd);
1.30898 ++extern bfd_boolean bfd_ecoff_set_gp_value
1.30899 ++ (bfd *abfd, bfd_vma gp_value);
1.30900 ++extern bfd_boolean bfd_ecoff_set_regmasks
1.30901 ++ (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
1.30902 ++ unsigned long *cprmask);
1.30903 ++extern void *bfd_ecoff_debug_init
1.30904 ++ (bfd *output_bfd, struct ecoff_debug_info *output_debug,
1.30905 ++ const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
1.30906 ++extern void bfd_ecoff_debug_free
1.30907 ++ (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
1.30908 ++ const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
1.30909 ++extern bfd_boolean bfd_ecoff_debug_accumulate
1.30910 ++ (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
1.30911 ++ const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
1.30912 ++ struct ecoff_debug_info *input_debug,
1.30913 ++ const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
1.30914 ++extern bfd_boolean bfd_ecoff_debug_accumulate_other
1.30915 ++ (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
1.30916 ++ const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
1.30917 ++ struct bfd_link_info *);
1.30918 ++extern bfd_boolean bfd_ecoff_debug_externals
1.30919 ++ (bfd *abfd, struct ecoff_debug_info *debug,
1.30920 ++ const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
1.30921 ++ bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
1.30922 ++ void (*set_index) (struct bfd_symbol *, bfd_size_type));
1.30923 ++extern bfd_boolean bfd_ecoff_debug_one_external
1.30924 ++ (bfd *abfd, struct ecoff_debug_info *debug,
1.30925 ++ const struct ecoff_debug_swap *swap, const char *name,
1.30926 ++ struct ecoff_extr *esym);
1.30927 ++extern bfd_size_type bfd_ecoff_debug_size
1.30928 ++ (bfd *abfd, struct ecoff_debug_info *debug,
1.30929 ++ const struct ecoff_debug_swap *swap);
1.30930 ++extern bfd_boolean bfd_ecoff_write_debug
1.30931 ++ (bfd *abfd, struct ecoff_debug_info *debug,
1.30932 ++ const struct ecoff_debug_swap *swap, file_ptr where);
1.30933 ++extern bfd_boolean bfd_ecoff_write_accumulated_debug
1.30934 ++ (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
1.30935 ++ const struct ecoff_debug_swap *swap,
1.30936 ++ struct bfd_link_info *info, file_ptr where);
1.30937 ++
1.30938 ++/* Externally visible ELF routines. */
1.30939 ++
1.30940 ++struct bfd_link_needed_list
1.30941 ++{
1.30942 ++ struct bfd_link_needed_list *next;
1.30943 ++ bfd *by;
1.30944 ++ const char *name;
1.30945 ++};
1.30946 ++
1.30947 ++enum dynamic_lib_link_class {
1.30948 ++ DYN_NORMAL = 0,
1.30949 ++ DYN_AS_NEEDED = 1,
1.30950 ++ DYN_DT_NEEDED = 2,
1.30951 ++ DYN_NO_ADD_NEEDED = 4,
1.30952 ++ DYN_NO_NEEDED = 8
1.30953 ++};
1.30954 ++
1.30955 ++enum notice_asneeded_action {
1.30956 ++ notice_as_needed,
1.30957 ++ notice_not_needed,
1.30958 ++ notice_needed
1.30959 ++};
1.30960 ++
1.30961 ++extern bfd_boolean bfd_elf_record_link_assignment
1.30962 ++ (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
1.30963 ++ bfd_boolean);
1.30964 ++extern struct bfd_link_needed_list *bfd_elf_get_needed_list
1.30965 ++ (bfd *, struct bfd_link_info *);
1.30966 ++extern bfd_boolean bfd_elf_get_bfd_needed_list
1.30967 ++ (bfd *, struct bfd_link_needed_list **);
1.30968 ++extern bfd_boolean bfd_elf_size_dynamic_sections
1.30969 ++ (bfd *, const char *, const char *, const char *, const char * const *,
1.30970 ++ struct bfd_link_info *, struct bfd_section **,
1.30971 ++ struct bfd_elf_version_tree *);
1.30972 ++extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
1.30973 ++ (bfd *, struct bfd_link_info *);
1.30974 ++extern void bfd_elf_set_dt_needed_name
1.30975 ++ (bfd *, const char *);
1.30976 ++extern const char *bfd_elf_get_dt_soname
1.30977 ++ (bfd *);
1.30978 ++extern void bfd_elf_set_dyn_lib_class
1.30979 ++ (bfd *, enum dynamic_lib_link_class);
1.30980 ++extern int bfd_elf_get_dyn_lib_class
1.30981 ++ (bfd *);
1.30982 ++extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
1.30983 ++ (bfd *, struct bfd_link_info *);
1.30984 ++extern bfd_boolean bfd_elf_discard_info
1.30985 ++ (bfd *, struct bfd_link_info *);
1.30986 ++extern unsigned int _bfd_elf_default_action_discarded
1.30987 ++ (struct bfd_section *);
1.30988 ++
1.30989 ++/* Return an upper bound on the number of bytes required to store a
1.30990 ++ copy of ABFD's program header table entries. Return -1 if an error
1.30991 ++ occurs; bfd_get_error will return an appropriate code. */
1.30992 ++extern long bfd_get_elf_phdr_upper_bound
1.30993 ++ (bfd *abfd);
1.30994 ++
1.30995 ++/* Copy ABFD's program header table entries to *PHDRS. The entries
1.30996 ++ will be stored as an array of Elf_Internal_Phdr structures, as
1.30997 ++ defined in include/elf/internal.h. To find out how large the
1.30998 ++ buffer needs to be, call bfd_get_elf_phdr_upper_bound.
1.30999 ++
1.31000 ++ Return the number of program header table entries read, or -1 if an
1.31001 ++ error occurs; bfd_get_error will return an appropriate code. */
1.31002 ++extern int bfd_get_elf_phdrs
1.31003 ++ (bfd *abfd, void *phdrs);
1.31004 ++
1.31005 ++/* Create a new BFD as if by bfd_openr. Rather than opening a file,
1.31006 ++ reconstruct an ELF file by reading the segments out of remote memory
1.31007 ++ based on the ELF file header at EHDR_VMA and the ELF program headers it
1.31008 ++ points to. If not null, *LOADBASEP is filled in with the difference
1.31009 ++ between the VMAs from which the segments were read, and the VMAs the
1.31010 ++ file headers (and hence BFD's idea of each section's VMA) put them at.
1.31011 ++
1.31012 ++ The function TARGET_READ_MEMORY is called to copy LEN bytes from the
1.31013 ++ remote memory at target address VMA into the local buffer at MYADDR; it
1.31014 ++ should return zero on success or an `errno' code on failure. TEMPL must
1.31015 ++ be a BFD for an ELF target with the word size and byte order found in
1.31016 ++ the remote memory. */
1.31017 ++extern bfd *bfd_elf_bfd_from_remote_memory
1.31018 ++ (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
1.31019 ++ int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
1.31020 ++
1.31021 ++/* Return the arch_size field of an elf bfd, or -1 if not elf. */
1.31022 ++extern int bfd_get_arch_size
1.31023 ++ (bfd *);
1.31024 ++
1.31025 ++/* Return TRUE if address "naturally" sign extends, or -1 if not elf. */
1.31026 ++extern int bfd_get_sign_extend_vma
1.31027 ++ (bfd *);
1.31028 ++
1.31029 ++extern struct bfd_section *_bfd_elf_tls_setup
1.31030 ++ (bfd *, struct bfd_link_info *);
1.31031 ++
1.31032 ++extern void _bfd_fix_excluded_sec_syms
1.31033 ++ (bfd *, struct bfd_link_info *);
1.31034 ++
1.31035 ++extern unsigned bfd_m68k_mach_to_features (int);
1.31036 ++
1.31037 ++extern int bfd_m68k_features_to_mach (unsigned);
1.31038 ++
1.31039 ++extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
1.31040 ++ (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
1.31041 ++ char **);
1.31042 ++
1.31043 ++extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
1.31044 ++ (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
1.31045 ++ char **);
1.31046 ++
1.31047 ++/* SunOS shared library support routines for the linker. */
1.31048 ++
1.31049 ++extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
1.31050 ++ (bfd *, struct bfd_link_info *);
1.31051 ++extern bfd_boolean bfd_sunos_record_link_assignment
1.31052 ++ (bfd *, struct bfd_link_info *, const char *);
1.31053 ++extern bfd_boolean bfd_sunos_size_dynamic_sections
1.31054 ++ (bfd *, struct bfd_link_info *, struct bfd_section **,
1.31055 ++ struct bfd_section **, struct bfd_section **);
1.31056 ++
1.31057 ++/* Linux shared library support routines for the linker. */
1.31058 ++
1.31059 ++extern bfd_boolean bfd_i386linux_size_dynamic_sections
1.31060 ++ (bfd *, struct bfd_link_info *);
1.31061 ++extern bfd_boolean bfd_m68klinux_size_dynamic_sections
1.31062 ++ (bfd *, struct bfd_link_info *);
1.31063 ++extern bfd_boolean bfd_sparclinux_size_dynamic_sections
1.31064 ++ (bfd *, struct bfd_link_info *);
1.31065 ++
1.31066 ++/* mmap hacks */
1.31067 ++
1.31068 ++struct _bfd_window_internal;
1.31069 ++typedef struct _bfd_window_internal bfd_window_internal;
1.31070 ++
1.31071 ++typedef struct _bfd_window
1.31072 ++{
1.31073 ++ /* What the user asked for. */
1.31074 ++ void *data;
1.31075 ++ bfd_size_type size;
1.31076 ++ /* The actual window used by BFD. Small user-requested read-only
1.31077 ++ regions sharing a page may share a single window into the object
1.31078 ++ file. Read-write versions shouldn't until I've fixed things to
1.31079 ++ keep track of which portions have been claimed by the
1.31080 ++ application; don't want to give the same region back when the
1.31081 ++ application wants two writable copies! */
1.31082 ++ struct _bfd_window_internal *i;
1.31083 ++}
1.31084 ++bfd_window;
1.31085 ++
1.31086 ++extern void bfd_init_window
1.31087 ++ (bfd_window *);
1.31088 ++extern void bfd_free_window
1.31089 ++ (bfd_window *);
1.31090 ++extern bfd_boolean bfd_get_file_window
1.31091 ++ (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
1.31092 ++
1.31093 ++/* XCOFF support routines for the linker. */
1.31094 ++
1.31095 ++extern bfd_boolean bfd_xcoff_link_record_set
1.31096 ++ (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
1.31097 ++extern bfd_boolean bfd_xcoff_import_symbol
1.31098 ++ (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
1.31099 ++ const char *, const char *, const char *, unsigned int);
1.31100 ++extern bfd_boolean bfd_xcoff_export_symbol
1.31101 ++ (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
1.31102 ++extern bfd_boolean bfd_xcoff_link_count_reloc
1.31103 ++ (bfd *, struct bfd_link_info *, const char *);
1.31104 ++extern bfd_boolean bfd_xcoff_record_link_assignment
1.31105 ++ (bfd *, struct bfd_link_info *, const char *);
1.31106 ++extern bfd_boolean bfd_xcoff_size_dynamic_sections
1.31107 ++ (bfd *, struct bfd_link_info *, const char *, const char *,
1.31108 ++ unsigned long, unsigned long, unsigned long, bfd_boolean,
1.31109 ++ int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
1.31110 ++extern bfd_boolean bfd_xcoff_link_generate_rtinit
1.31111 ++ (bfd *, const char *, const char *, bfd_boolean);
1.31112 ++
1.31113 ++/* XCOFF support routines for ar. */
1.31114 ++extern bfd_boolean bfd_xcoff_ar_archive_set_magic
1.31115 ++ (bfd *, char *);
1.31116 ++
1.31117 ++/* Externally visible COFF routines. */
1.31118 ++
1.31119 ++#if defined(__STDC__) || defined(ALMOST_STDC)
1.31120 ++struct internal_syment;
1.31121 ++union internal_auxent;
1.31122 ++#endif
1.31123 ++
1.31124 ++extern bfd_boolean bfd_coff_get_syment
1.31125 ++ (bfd *, struct bfd_symbol *, struct internal_syment *);
1.31126 ++
1.31127 ++extern bfd_boolean bfd_coff_get_auxent
1.31128 ++ (bfd *, struct bfd_symbol *, int, union internal_auxent *);
1.31129 ++
1.31130 ++extern bfd_boolean bfd_coff_set_symbol_class
1.31131 ++ (bfd *, struct bfd_symbol *, unsigned int);
1.31132 ++
1.31133 ++extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
1.31134 ++ (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
1.31135 ++
1.31136 ++/* ARM VFP11 erratum workaround support. */
1.31137 ++typedef enum
1.31138 ++{
1.31139 ++ BFD_ARM_VFP11_FIX_DEFAULT,
1.31140 ++ BFD_ARM_VFP11_FIX_NONE,
1.31141 ++ BFD_ARM_VFP11_FIX_SCALAR,
1.31142 ++ BFD_ARM_VFP11_FIX_VECTOR
1.31143 ++} bfd_arm_vfp11_fix;
1.31144 ++
1.31145 ++extern void bfd_elf32_arm_init_maps
1.31146 ++ (bfd *);
1.31147 ++
1.31148 ++extern void bfd_elf32_arm_set_vfp11_fix
1.31149 ++ (bfd *, struct bfd_link_info *);
1.31150 ++
1.31151 ++extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
1.31152 ++ (bfd *, struct bfd_link_info *);
1.31153 ++
1.31154 ++extern void bfd_elf32_arm_vfp11_fix_veneer_locations
1.31155 ++ (bfd *, struct bfd_link_info *);
1.31156 ++
1.31157 ++/* ARM Interworking support. Called from linker. */
1.31158 ++extern bfd_boolean bfd_arm_allocate_interworking_sections
1.31159 ++ (struct bfd_link_info *);
1.31160 ++
1.31161 ++extern bfd_boolean bfd_arm_process_before_allocation
1.31162 ++ (bfd *, struct bfd_link_info *, int);
1.31163 ++
1.31164 ++extern bfd_boolean bfd_arm_get_bfd_for_interworking
1.31165 ++ (bfd *, struct bfd_link_info *);
1.31166 ++
1.31167 ++/* PE ARM Interworking support. Called from linker. */
1.31168 ++extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
1.31169 ++ (struct bfd_link_info *);
1.31170 ++
1.31171 ++extern bfd_boolean bfd_arm_pe_process_before_allocation
1.31172 ++ (bfd *, struct bfd_link_info *, int);
1.31173 ++
1.31174 ++extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
1.31175 ++ (bfd *, struct bfd_link_info *);
1.31176 ++
1.31177 ++/* ELF ARM Interworking support. Called from linker. */
1.31178 ++extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
1.31179 ++ (struct bfd_link_info *);
1.31180 ++
1.31181 ++extern bfd_boolean bfd_elf32_arm_process_before_allocation
1.31182 ++ (bfd *, struct bfd_link_info *);
1.31183 ++
1.31184 ++void bfd_elf32_arm_set_target_relocs
1.31185 ++ (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
1.31186 ++ int, int);
1.31187 ++
1.31188 ++extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
1.31189 ++ (bfd *, struct bfd_link_info *);
1.31190 ++
1.31191 ++extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
1.31192 ++ (bfd *, struct bfd_link_info *);
1.31193 ++
1.31194 ++/* ELF ARM mapping symbol support */
1.31195 ++#define BFD_ARM_SPECIAL_SYM_TYPE_MAP (1 << 0)
1.31196 ++#define BFD_ARM_SPECIAL_SYM_TYPE_TAG (1 << 1)
1.31197 ++#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER (1 << 2)
1.31198 ++#define BFD_ARM_SPECIAL_SYM_TYPE_ANY (~0)
1.31199 ++extern bfd_boolean bfd_is_arm_special_symbol_name
1.31200 ++ (const char * name, int type);
1.31201 ++
1.31202 ++extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
1.31203 ++
1.31204 ++/* ARM Note section processing. */
1.31205 ++extern bfd_boolean bfd_arm_merge_machines
1.31206 ++ (bfd *, bfd *);
1.31207 ++
1.31208 ++extern bfd_boolean bfd_arm_update_notes
1.31209 ++ (bfd *, const char *);
1.31210 ++
1.31211 ++extern unsigned int bfd_arm_get_mach_from_notes
1.31212 ++ (bfd *, const char *);
1.31213 ++
1.31214 ++/* TI COFF load page support. */
1.31215 ++extern void bfd_ticoff_set_section_load_page
1.31216 ++ (struct bfd_section *, int);
1.31217 ++
1.31218 ++extern int bfd_ticoff_get_section_load_page
1.31219 ++ (struct bfd_section *);
1.31220 ++
1.31221 ++/* H8/300 functions. */
1.31222 ++extern bfd_vma bfd_h8300_pad_address
1.31223 ++ (bfd *, bfd_vma);
1.31224 ++
1.31225 ++/* IA64 Itanium code generation. Called from linker. */
1.31226 ++extern void bfd_elf32_ia64_after_parse
1.31227 ++ (int);
1.31228 ++
1.31229 ++extern void bfd_elf64_ia64_after_parse
1.31230 ++ (int);
1.31231 ++
1.31232 ++/* This structure is used for a comdat section, as in PE. A comdat
1.31233 ++ section is associated with a particular symbol. When the linker
1.31234 ++ sees a comdat section, it keeps only one of the sections with a
1.31235 ++ given name and associated with a given symbol. */
1.31236 ++
1.31237 ++struct coff_comdat_info
1.31238 ++{
1.31239 ++ /* The name of the symbol associated with a comdat section. */
1.31240 ++ const char *name;
1.31241 ++
1.31242 ++ /* The local symbol table index of the symbol associated with a
1.31243 ++ comdat section. This is only meaningful to the object file format
1.31244 ++ specific code; it is not an index into the list returned by
1.31245 ++ bfd_canonicalize_symtab. */
1.31246 ++ long symbol;
1.31247 ++};
1.31248 ++
1.31249 ++extern struct coff_comdat_info *bfd_coff_get_comdat_section
1.31250 ++ (bfd *, struct bfd_section *);
1.31251 ++
1.31252 ++/* Extracted from init.c. */
1.31253 ++void bfd_init (void);
1.31254 ++
1.31255 ++/* Extracted from opncls.c. */
1.31256 ++bfd *bfd_fopen (const char *filename, const char *target,
1.31257 ++ const char *mode, int fd);
1.31258 ++
1.31259 ++bfd *bfd_openr (const char *filename, const char *target);
1.31260 ++
1.31261 ++bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
1.31262 ++
1.31263 ++bfd *bfd_openstreamr (const char *, const char *, void *);
1.31264 ++
1.31265 ++bfd *bfd_openr_iovec (const char *filename, const char *target,
1.31266 ++ void *(*open) (struct bfd *nbfd,
1.31267 ++ void *open_closure),
1.31268 ++ void *open_closure,
1.31269 ++ file_ptr (*pread) (struct bfd *nbfd,
1.31270 ++ void *stream,
1.31271 ++ void *buf,
1.31272 ++ file_ptr nbytes,
1.31273 ++ file_ptr offset),
1.31274 ++ int (*close) (struct bfd *nbfd,
1.31275 ++ void *stream),
1.31276 ++ int (*stat) (struct bfd *abfd,
1.31277 ++ void *stream,
1.31278 ++ struct stat *sb));
1.31279 ++
1.31280 ++bfd *bfd_openw (const char *filename, const char *target);
1.31281 ++
1.31282 ++bfd_boolean bfd_close (bfd *abfd);
1.31283 ++
1.31284 ++bfd_boolean bfd_close_all_done (bfd *);
1.31285 ++
1.31286 ++bfd *bfd_create (const char *filename, bfd *templ);
1.31287 ++
1.31288 ++bfd_boolean bfd_make_writable (bfd *abfd);
1.31289 ++
1.31290 ++bfd_boolean bfd_make_readable (bfd *abfd);
1.31291 ++
1.31292 ++unsigned long bfd_calc_gnu_debuglink_crc32
1.31293 ++ (unsigned long crc, const unsigned char *buf, bfd_size_type len);
1.31294 ++
1.31295 ++char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
1.31296 ++
1.31297 ++struct bfd_section *bfd_create_gnu_debuglink_section
1.31298 ++ (bfd *abfd, const char *filename);
1.31299 ++
1.31300 ++bfd_boolean bfd_fill_in_gnu_debuglink_section
1.31301 ++ (bfd *abfd, struct bfd_section *sect, const char *filename);
1.31302 ++
1.31303 ++/* Extracted from libbfd.c. */
1.31304 ++
1.31305 ++/* Byte swapping macros for user section data. */
1.31306 ++
1.31307 ++#define bfd_put_8(abfd, val, ptr) \
1.31308 ++ ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
1.31309 ++#define bfd_put_signed_8 \
1.31310 ++ bfd_put_8
1.31311 ++#define bfd_get_8(abfd, ptr) \
1.31312 ++ (*(unsigned char *) (ptr) & 0xff)
1.31313 ++#define bfd_get_signed_8(abfd, ptr) \
1.31314 ++ (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
1.31315 ++
1.31316 ++#define bfd_put_16(abfd, val, ptr) \
1.31317 ++ BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
1.31318 ++#define bfd_put_signed_16 \
1.31319 ++ bfd_put_16
1.31320 ++#define bfd_get_16(abfd, ptr) \
1.31321 ++ BFD_SEND (abfd, bfd_getx16, (ptr))
1.31322 ++#define bfd_get_signed_16(abfd, ptr) \
1.31323 ++ BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
1.31324 ++
1.31325 ++#define bfd_put_32(abfd, val, ptr) \
1.31326 ++ BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
1.31327 ++#define bfd_put_signed_32 \
1.31328 ++ bfd_put_32
1.31329 ++#define bfd_get_32(abfd, ptr) \
1.31330 ++ BFD_SEND (abfd, bfd_getx32, (ptr))
1.31331 ++#define bfd_get_signed_32(abfd, ptr) \
1.31332 ++ BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
1.31333 ++
1.31334 ++#define bfd_put_64(abfd, val, ptr) \
1.31335 ++ BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
1.31336 ++#define bfd_put_signed_64 \
1.31337 ++ bfd_put_64
1.31338 ++#define bfd_get_64(abfd, ptr) \
1.31339 ++ BFD_SEND (abfd, bfd_getx64, (ptr))
1.31340 ++#define bfd_get_signed_64(abfd, ptr) \
1.31341 ++ BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
1.31342 ++
1.31343 ++#define bfd_get(bits, abfd, ptr) \
1.31344 ++ ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
1.31345 ++ : (bits) == 16 ? bfd_get_16 (abfd, ptr) \
1.31346 ++ : (bits) == 32 ? bfd_get_32 (abfd, ptr) \
1.31347 ++ : (bits) == 64 ? bfd_get_64 (abfd, ptr) \
1.31348 ++ : (abort (), (bfd_vma) - 1))
1.31349 ++
1.31350 ++#define bfd_put(bits, abfd, val, ptr) \
1.31351 ++ ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
1.31352 ++ : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
1.31353 ++ : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
1.31354 ++ : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
1.31355 ++ : (abort (), (void) 0))
1.31356 ++
1.31357 ++
1.31358 ++/* Byte swapping macros for file header data. */
1.31359 ++
1.31360 ++#define bfd_h_put_8(abfd, val, ptr) \
1.31361 ++ bfd_put_8 (abfd, val, ptr)
1.31362 ++#define bfd_h_put_signed_8(abfd, val, ptr) \
1.31363 ++ bfd_put_8 (abfd, val, ptr)
1.31364 ++#define bfd_h_get_8(abfd, ptr) \
1.31365 ++ bfd_get_8 (abfd, ptr)
1.31366 ++#define bfd_h_get_signed_8(abfd, ptr) \
1.31367 ++ bfd_get_signed_8 (abfd, ptr)
1.31368 ++
1.31369 ++#define bfd_h_put_16(abfd, val, ptr) \
1.31370 ++ BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
1.31371 ++#define bfd_h_put_signed_16 \
1.31372 ++ bfd_h_put_16
1.31373 ++#define bfd_h_get_16(abfd, ptr) \
1.31374 ++ BFD_SEND (abfd, bfd_h_getx16, (ptr))
1.31375 ++#define bfd_h_get_signed_16(abfd, ptr) \
1.31376 ++ BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
1.31377 ++
1.31378 ++#define bfd_h_put_32(abfd, val, ptr) \
1.31379 ++ BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
1.31380 ++#define bfd_h_put_signed_32 \
1.31381 ++ bfd_h_put_32
1.31382 ++#define bfd_h_get_32(abfd, ptr) \
1.31383 ++ BFD_SEND (abfd, bfd_h_getx32, (ptr))
1.31384 ++#define bfd_h_get_signed_32(abfd, ptr) \
1.31385 ++ BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
1.31386 ++
1.31387 ++#define bfd_h_put_64(abfd, val, ptr) \
1.31388 ++ BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
1.31389 ++#define bfd_h_put_signed_64 \
1.31390 ++ bfd_h_put_64
1.31391 ++#define bfd_h_get_64(abfd, ptr) \
1.31392 ++ BFD_SEND (abfd, bfd_h_getx64, (ptr))
1.31393 ++#define bfd_h_get_signed_64(abfd, ptr) \
1.31394 ++ BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
1.31395 ++
1.31396 ++/* Aliases for the above, which should eventually go away. */
1.31397 ++
1.31398 ++#define H_PUT_64 bfd_h_put_64
1.31399 ++#define H_PUT_32 bfd_h_put_32
1.31400 ++#define H_PUT_16 bfd_h_put_16
1.31401 ++#define H_PUT_8 bfd_h_put_8
1.31402 ++#define H_PUT_S64 bfd_h_put_signed_64
1.31403 ++#define H_PUT_S32 bfd_h_put_signed_32
1.31404 ++#define H_PUT_S16 bfd_h_put_signed_16
1.31405 ++#define H_PUT_S8 bfd_h_put_signed_8
1.31406 ++#define H_GET_64 bfd_h_get_64
1.31407 ++#define H_GET_32 bfd_h_get_32
1.31408 ++#define H_GET_16 bfd_h_get_16
1.31409 ++#define H_GET_8 bfd_h_get_8
1.31410 ++#define H_GET_S64 bfd_h_get_signed_64
1.31411 ++#define H_GET_S32 bfd_h_get_signed_32
1.31412 ++#define H_GET_S16 bfd_h_get_signed_16
1.31413 ++#define H_GET_S8 bfd_h_get_signed_8
1.31414 ++
1.31415 ++
1.31416 ++/* Extracted from bfdio.c. */
1.31417 ++long bfd_get_mtime (bfd *abfd);
1.31418 ++
1.31419 ++file_ptr bfd_get_size (bfd *abfd);
1.31420 ++
1.31421 ++/* Extracted from bfdwin.c. */
1.31422 ++/* Extracted from section.c. */
1.31423 ++typedef struct bfd_section
1.31424 ++{
1.31425 ++ /* The name of the section; the name isn't a copy, the pointer is
1.31426 ++ the same as that passed to bfd_make_section. */
1.31427 ++ const char *name;
1.31428 ++
1.31429 ++ /* A unique sequence number. */
1.31430 ++ int id;
1.31431 ++
1.31432 ++ /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
1.31433 ++ int index;
1.31434 ++
1.31435 ++ /* The next section in the list belonging to the BFD, or NULL. */
1.31436 ++ struct bfd_section *next;
1.31437 ++
1.31438 ++ /* The previous section in the list belonging to the BFD, or NULL. */
1.31439 ++ struct bfd_section *prev;
1.31440 ++
1.31441 ++ /* The field flags contains attributes of the section. Some
1.31442 ++ flags are read in from the object file, and some are
1.31443 ++ synthesized from other information. */
1.31444 ++ flagword flags;
1.31445 ++
1.31446 ++#define SEC_NO_FLAGS 0x000
1.31447 ++
1.31448 ++ /* Tells the OS to allocate space for this section when loading.
1.31449 ++ This is clear for a section containing debug information only. */
1.31450 ++#define SEC_ALLOC 0x001
1.31451 ++
1.31452 ++ /* Tells the OS to load the section from the file when loading.
1.31453 ++ This is clear for a .bss section. */
1.31454 ++#define SEC_LOAD 0x002
1.31455 ++
1.31456 ++ /* The section contains data still to be relocated, so there is
1.31457 ++ some relocation information too. */
1.31458 ++#define SEC_RELOC 0x004
1.31459 ++
1.31460 ++ /* A signal to the OS that the section contains read only data. */
1.31461 ++#define SEC_READONLY 0x008
1.31462 ++
1.31463 ++ /* The section contains code only. */
1.31464 ++#define SEC_CODE 0x010
1.31465 ++
1.31466 ++ /* The section contains data only. */
1.31467 ++#define SEC_DATA 0x020
1.31468 ++
1.31469 ++ /* The section will reside in ROM. */
1.31470 ++#define SEC_ROM 0x040
1.31471 ++
1.31472 ++ /* The section contains constructor information. This section
1.31473 ++ type is used by the linker to create lists of constructors and
1.31474 ++ destructors used by <<g++>>. When a back end sees a symbol
1.31475 ++ which should be used in a constructor list, it creates a new
1.31476 ++ section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
1.31477 ++ the symbol to it, and builds a relocation. To build the lists
1.31478 ++ of constructors, all the linker has to do is catenate all the
1.31479 ++ sections called <<__CTOR_LIST__>> and relocate the data
1.31480 ++ contained within - exactly the operations it would peform on
1.31481 ++ standard data. */
1.31482 ++#define SEC_CONSTRUCTOR 0x080
1.31483 ++
1.31484 ++ /* The section has contents - a data section could be
1.31485 ++ <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
1.31486 ++ <<SEC_HAS_CONTENTS>> */
1.31487 ++#define SEC_HAS_CONTENTS 0x100
1.31488 ++
1.31489 ++ /* An instruction to the linker to not output the section
1.31490 ++ even if it has information which would normally be written. */
1.31491 ++#define SEC_NEVER_LOAD 0x200
1.31492 ++
1.31493 ++ /* The section contains thread local data. */
1.31494 ++#define SEC_THREAD_LOCAL 0x400
1.31495 ++
1.31496 ++ /* The section has GOT references. This flag is only for the
1.31497 ++ linker, and is currently only used by the elf32-hppa back end.
1.31498 ++ It will be set if global offset table references were detected
1.31499 ++ in this section, which indicate to the linker that the section
1.31500 ++ contains PIC code, and must be handled specially when doing a
1.31501 ++ static link. */
1.31502 ++#define SEC_HAS_GOT_REF 0x800
1.31503 ++
1.31504 ++ /* The section contains common symbols (symbols may be defined
1.31505 ++ multiple times, the value of a symbol is the amount of
1.31506 ++ space it requires, and the largest symbol value is the one
1.31507 ++ used). Most targets have exactly one of these (which we
1.31508 ++ translate to bfd_com_section_ptr), but ECOFF has two. */
1.31509 ++#define SEC_IS_COMMON 0x1000
1.31510 ++
1.31511 ++ /* The section contains only debugging information. For
1.31512 ++ example, this is set for ELF .debug and .stab sections.
1.31513 ++ strip tests this flag to see if a section can be
1.31514 ++ discarded. */
1.31515 ++#define SEC_DEBUGGING 0x2000
1.31516 ++
1.31517 ++ /* The contents of this section are held in memory pointed to
1.31518 ++ by the contents field. This is checked by bfd_get_section_contents,
1.31519 ++ and the data is retrieved from memory if appropriate. */
1.31520 ++#define SEC_IN_MEMORY 0x4000
1.31521 ++
1.31522 ++ /* The contents of this section are to be excluded by the
1.31523 ++ linker for executable and shared objects unless those
1.31524 ++ objects are to be further relocated. */
1.31525 ++#define SEC_EXCLUDE 0x8000
1.31526 ++
1.31527 ++ /* The contents of this section are to be sorted based on the sum of
1.31528 ++ the symbol and addend values specified by the associated relocation
1.31529 ++ entries. Entries without associated relocation entries will be
1.31530 ++ appended to the end of the section in an unspecified order. */
1.31531 ++#define SEC_SORT_ENTRIES 0x10000
1.31532 ++
1.31533 ++ /* When linking, duplicate sections of the same name should be
1.31534 ++ discarded, rather than being combined into a single section as
1.31535 ++ is usually done. This is similar to how common symbols are
1.31536 ++ handled. See SEC_LINK_DUPLICATES below. */
1.31537 ++#define SEC_LINK_ONCE 0x20000
1.31538 ++
1.31539 ++ /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
1.31540 ++ should handle duplicate sections. */
1.31541 ++#define SEC_LINK_DUPLICATES 0x40000
1.31542 ++
1.31543 ++ /* This value for SEC_LINK_DUPLICATES means that duplicate
1.31544 ++ sections with the same name should simply be discarded. */
1.31545 ++#define SEC_LINK_DUPLICATES_DISCARD 0x0
1.31546 ++
1.31547 ++ /* This value for SEC_LINK_DUPLICATES means that the linker
1.31548 ++ should warn if there are any duplicate sections, although
1.31549 ++ it should still only link one copy. */
1.31550 ++#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
1.31551 ++
1.31552 ++ /* This value for SEC_LINK_DUPLICATES means that the linker
1.31553 ++ should warn if any duplicate sections are a different size. */
1.31554 ++#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
1.31555 ++
1.31556 ++ /* This value for SEC_LINK_DUPLICATES means that the linker
1.31557 ++ should warn if any duplicate sections contain different
1.31558 ++ contents. */
1.31559 ++#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
1.31560 ++ (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
1.31561 ++
1.31562 ++ /* This section was created by the linker as part of dynamic
1.31563 ++ relocation or other arcane processing. It is skipped when
1.31564 ++ going through the first-pass output, trusting that someone
1.31565 ++ else up the line will take care of it later. */
1.31566 ++#define SEC_LINKER_CREATED 0x200000
1.31567 ++
1.31568 ++ /* This section should not be subject to garbage collection.
1.31569 ++ Also set to inform the linker that this section should not be
1.31570 ++ listed in the link map as discarded. */
1.31571 ++#define SEC_KEEP 0x400000
1.31572 ++
1.31573 ++ /* This section contains "short" data, and should be placed
1.31574 ++ "near" the GP. */
1.31575 ++#define SEC_SMALL_DATA 0x800000
1.31576 ++
1.31577 ++ /* Attempt to merge identical entities in the section.
1.31578 ++ Entity size is given in the entsize field. */
1.31579 ++#define SEC_MERGE 0x1000000
1.31580 ++
1.31581 ++ /* If given with SEC_MERGE, entities to merge are zero terminated
1.31582 ++ strings where entsize specifies character size instead of fixed
1.31583 ++ size entries. */
1.31584 ++#define SEC_STRINGS 0x2000000
1.31585 ++
1.31586 ++ /* This section contains data about section groups. */
1.31587 ++#define SEC_GROUP 0x4000000
1.31588 ++
1.31589 ++ /* The section is a COFF shared library section. This flag is
1.31590 ++ only for the linker. If this type of section appears in
1.31591 ++ the input file, the linker must copy it to the output file
1.31592 ++ without changing the vma or size. FIXME: Although this
1.31593 ++ was originally intended to be general, it really is COFF
1.31594 ++ specific (and the flag was renamed to indicate this). It
1.31595 ++ might be cleaner to have some more general mechanism to
1.31596 ++ allow the back end to control what the linker does with
1.31597 ++ sections. */
1.31598 ++#define SEC_COFF_SHARED_LIBRARY 0x10000000
1.31599 ++
1.31600 ++ /* This section contains data which may be shared with other
1.31601 ++ executables or shared objects. This is for COFF only. */
1.31602 ++#define SEC_COFF_SHARED 0x20000000
1.31603 ++
1.31604 ++ /* When a section with this flag is being linked, then if the size of
1.31605 ++ the input section is less than a page, it should not cross a page
1.31606 ++ boundary. If the size of the input section is one page or more,
1.31607 ++ it should be aligned on a page boundary. This is for TI
1.31608 ++ TMS320C54X only. */
1.31609 ++#define SEC_TIC54X_BLOCK 0x40000000
1.31610 ++
1.31611 ++ /* Conditionally link this section; do not link if there are no
1.31612 ++ references found to any symbol in the section. This is for TI
1.31613 ++ TMS320C54X only. */
1.31614 ++#define SEC_TIC54X_CLINK 0x80000000
1.31615 ++
1.31616 ++ /* End of section flags. */
1.31617 ++
1.31618 ++ /* Some internal packed boolean fields. */
1.31619 ++
1.31620 ++ /* See the vma field. */
1.31621 ++ unsigned int user_set_vma : 1;
1.31622 ++
1.31623 ++ /* A mark flag used by some of the linker backends. */
1.31624 ++ unsigned int linker_mark : 1;
1.31625 ++
1.31626 ++ /* Another mark flag used by some of the linker backends. Set for
1.31627 ++ output sections that have an input section. */
1.31628 ++ unsigned int linker_has_input : 1;
1.31629 ++
1.31630 ++ /* Mark flags used by some linker backends for garbage collection. */
1.31631 ++ unsigned int gc_mark : 1;
1.31632 ++ unsigned int gc_mark_from_eh : 1;
1.31633 ++
1.31634 ++ /* The following flags are used by the ELF linker. */
1.31635 ++
1.31636 ++ /* Mark sections which have been allocated to segments. */
1.31637 ++ unsigned int segment_mark : 1;
1.31638 ++
1.31639 ++ /* Type of sec_info information. */
1.31640 ++ unsigned int sec_info_type:3;
1.31641 ++#define ELF_INFO_TYPE_NONE 0
1.31642 ++#define ELF_INFO_TYPE_STABS 1
1.31643 ++#define ELF_INFO_TYPE_MERGE 2
1.31644 ++#define ELF_INFO_TYPE_EH_FRAME 3
1.31645 ++#define ELF_INFO_TYPE_JUST_SYMS 4
1.31646 ++
1.31647 ++ /* Nonzero if this section uses RELA relocations, rather than REL. */
1.31648 ++ unsigned int use_rela_p:1;
1.31649 ++
1.31650 ++ /* Bits used by various backends. The generic code doesn't touch
1.31651 ++ these fields. */
1.31652 ++
1.31653 ++ /* Nonzero if this section has TLS related relocations. */
1.31654 ++ unsigned int has_tls_reloc:1;
1.31655 ++
1.31656 ++ /* Nonzero if this section has a gp reloc. */
1.31657 ++ unsigned int has_gp_reloc:1;
1.31658 ++
1.31659 ++ /* Nonzero if this section needs the relax finalize pass. */
1.31660 ++ unsigned int need_finalize_relax:1;
1.31661 ++
1.31662 ++ /* Whether relocations have been processed. */
1.31663 ++ unsigned int reloc_done : 1;
1.31664 ++
1.31665 ++ /* End of internal packed boolean fields. */
1.31666 ++
1.31667 ++ /* The virtual memory address of the section - where it will be
1.31668 ++ at run time. The symbols are relocated against this. The
1.31669 ++ user_set_vma flag is maintained by bfd; if it's not set, the
1.31670 ++ backend can assign addresses (for example, in <<a.out>>, where
1.31671 ++ the default address for <<.data>> is dependent on the specific
1.31672 ++ target and various flags). */
1.31673 ++ bfd_vma vma;
1.31674 ++
1.31675 ++ /* The load address of the section - where it would be in a
1.31676 ++ rom image; really only used for writing section header
1.31677 ++ information. */
1.31678 ++ bfd_vma lma;
1.31679 ++
1.31680 ++ /* The size of the section in octets, as it will be output.
1.31681 ++ Contains a value even if the section has no contents (e.g., the
1.31682 ++ size of <<.bss>>). */
1.31683 ++ bfd_size_type size;
1.31684 ++
1.31685 ++ /* For input sections, the original size on disk of the section, in
1.31686 ++ octets. This field is used by the linker relaxation code. It is
1.31687 ++ currently only set for sections where the linker relaxation scheme
1.31688 ++ doesn't cache altered section and reloc contents (stabs, eh_frame,
1.31689 ++ SEC_MERGE, some coff relaxing targets), and thus the original size
1.31690 ++ needs to be kept to read the section multiple times.
1.31691 ++ For output sections, rawsize holds the section size calculated on
1.31692 ++ a previous linker relaxation pass. */
1.31693 ++ bfd_size_type rawsize;
1.31694 ++
1.31695 ++ /* If this section is going to be output, then this value is the
1.31696 ++ offset in *bytes* into the output section of the first byte in the
1.31697 ++ input section (byte ==> smallest addressable unit on the
1.31698 ++ target). In most cases, if this was going to start at the
1.31699 ++ 100th octet (8-bit quantity) in the output section, this value
1.31700 ++ would be 100. However, if the target byte size is 16 bits
1.31701 ++ (bfd_octets_per_byte is "2"), this value would be 50. */
1.31702 ++ bfd_vma output_offset;
1.31703 ++
1.31704 ++ /* The output section through which to map on output. */
1.31705 ++ struct bfd_section *output_section;
1.31706 ++
1.31707 ++ /* The alignment requirement of the section, as an exponent of 2 -
1.31708 ++ e.g., 3 aligns to 2^3 (or 8). */
1.31709 ++ unsigned int alignment_power;
1.31710 ++
1.31711 ++ /* If an input section, a pointer to a vector of relocation
1.31712 ++ records for the data in this section. */
1.31713 ++ struct reloc_cache_entry *relocation;
1.31714 ++
1.31715 ++ /* If an output section, a pointer to a vector of pointers to
1.31716 ++ relocation records for the data in this section. */
1.31717 ++ struct reloc_cache_entry **orelocation;
1.31718 ++
1.31719 ++ /* The number of relocation records in one of the above. */
1.31720 ++ unsigned reloc_count;
1.31721 ++
1.31722 ++ /* Information below is back end specific - and not always used
1.31723 ++ or updated. */
1.31724 ++
1.31725 ++ /* File position of section data. */
1.31726 ++ file_ptr filepos;
1.31727 ++
1.31728 ++ /* File position of relocation info. */
1.31729 ++ file_ptr rel_filepos;
1.31730 ++
1.31731 ++ /* File position of line data. */
1.31732 ++ file_ptr line_filepos;
1.31733 ++
1.31734 ++ /* Pointer to data for applications. */
1.31735 ++ void *userdata;
1.31736 ++
1.31737 ++ /* If the SEC_IN_MEMORY flag is set, this points to the actual
1.31738 ++ contents. */
1.31739 ++ unsigned char *contents;
1.31740 ++
1.31741 ++ /* Attached line number information. */
1.31742 ++ alent *lineno;
1.31743 ++
1.31744 ++ /* Number of line number records. */
1.31745 ++ unsigned int lineno_count;
1.31746 ++
1.31747 ++ /* Entity size for merging purposes. */
1.31748 ++ unsigned int entsize;
1.31749 ++
1.31750 ++ /* Points to the kept section if this section is a link-once section,
1.31751 ++ and is discarded. */
1.31752 ++ struct bfd_section *kept_section;
1.31753 ++
1.31754 ++ /* When a section is being output, this value changes as more
1.31755 ++ linenumbers are written out. */
1.31756 ++ file_ptr moving_line_filepos;
1.31757 ++
1.31758 ++ /* What the section number is in the target world. */
1.31759 ++ int target_index;
1.31760 ++
1.31761 ++ void *used_by_bfd;
1.31762 ++
1.31763 ++ /* If this is a constructor section then here is a list of the
1.31764 ++ relocations created to relocate items within it. */
1.31765 ++ struct relent_chain *constructor_chain;
1.31766 ++
1.31767 ++ /* The BFD which owns the section. */
1.31768 ++ bfd *owner;
1.31769 ++
1.31770 ++ /* A symbol which points at this section only. */
1.31771 ++ struct bfd_symbol *symbol;
1.31772 ++ struct bfd_symbol **symbol_ptr_ptr;
1.31773 ++
1.31774 ++ /* Early in the link process, map_head and map_tail are used to build
1.31775 ++ a list of input sections attached to an output section. Later,
1.31776 ++ output sections use these fields for a list of bfd_link_order
1.31777 ++ structs. */
1.31778 ++ union {
1.31779 ++ struct bfd_link_order *link_order;
1.31780 ++ struct bfd_section *s;
1.31781 ++ } map_head, map_tail;
1.31782 ++} asection;
1.31783 ++
1.31784 ++/* These sections are global, and are managed by BFD. The application
1.31785 ++ and target back end are not permitted to change the values in
1.31786 ++ these sections. New code should use the section_ptr macros rather
1.31787 ++ than referring directly to the const sections. The const sections
1.31788 ++ may eventually vanish. */
1.31789 ++#define BFD_ABS_SECTION_NAME "*ABS*"
1.31790 ++#define BFD_UND_SECTION_NAME "*UND*"
1.31791 ++#define BFD_COM_SECTION_NAME "*COM*"
1.31792 ++#define BFD_IND_SECTION_NAME "*IND*"
1.31793 ++
1.31794 ++/* The absolute section. */
1.31795 ++extern asection bfd_abs_section;
1.31796 ++#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
1.31797 ++#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
1.31798 ++/* Pointer to the undefined section. */
1.31799 ++extern asection bfd_und_section;
1.31800 ++#define bfd_und_section_ptr ((asection *) &bfd_und_section)
1.31801 ++#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
1.31802 ++/* Pointer to the common section. */
1.31803 ++extern asection bfd_com_section;
1.31804 ++#define bfd_com_section_ptr ((asection *) &bfd_com_section)
1.31805 ++/* Pointer to the indirect section. */
1.31806 ++extern asection bfd_ind_section;
1.31807 ++#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
1.31808 ++#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
1.31809 ++
1.31810 ++#define bfd_is_const_section(SEC) \
1.31811 ++ ( ((SEC) == bfd_abs_section_ptr) \
1.31812 ++ || ((SEC) == bfd_und_section_ptr) \
1.31813 ++ || ((SEC) == bfd_com_section_ptr) \
1.31814 ++ || ((SEC) == bfd_ind_section_ptr))
1.31815 ++
1.31816 ++/* Macros to handle insertion and deletion of a bfd's sections. These
1.31817 ++ only handle the list pointers, ie. do not adjust section_count,
1.31818 ++ target_index etc. */
1.31819 ++#define bfd_section_list_remove(ABFD, S) \
1.31820 ++ do \
1.31821 ++ { \
1.31822 ++ asection *_s = S; \
1.31823 ++ asection *_next = _s->next; \
1.31824 ++ asection *_prev = _s->prev; \
1.31825 ++ if (_prev) \
1.31826 ++ _prev->next = _next; \
1.31827 ++ else \
1.31828 ++ (ABFD)->sections = _next; \
1.31829 ++ if (_next) \
1.31830 ++ _next->prev = _prev; \
1.31831 ++ else \
1.31832 ++ (ABFD)->section_last = _prev; \
1.31833 ++ } \
1.31834 ++ while (0)
1.31835 ++#define bfd_section_list_append(ABFD, S) \
1.31836 ++ do \
1.31837 ++ { \
1.31838 ++ asection *_s = S; \
1.31839 ++ bfd *_abfd = ABFD; \
1.31840 ++ _s->next = NULL; \
1.31841 ++ if (_abfd->section_last) \
1.31842 ++ { \
1.31843 ++ _s->prev = _abfd->section_last; \
1.31844 ++ _abfd->section_last->next = _s; \
1.31845 ++ } \
1.31846 ++ else \
1.31847 ++ { \
1.31848 ++ _s->prev = NULL; \
1.31849 ++ _abfd->sections = _s; \
1.31850 ++ } \
1.31851 ++ _abfd->section_last = _s; \
1.31852 ++ } \
1.31853 ++ while (0)
1.31854 ++#define bfd_section_list_prepend(ABFD, S) \
1.31855 ++ do \
1.31856 ++ { \
1.31857 ++ asection *_s = S; \
1.31858 ++ bfd *_abfd = ABFD; \
1.31859 ++ _s->prev = NULL; \
1.31860 ++ if (_abfd->sections) \
1.31861 ++ { \
1.31862 ++ _s->next = _abfd->sections; \
1.31863 ++ _abfd->sections->prev = _s; \
1.31864 ++ } \
1.31865 ++ else \
1.31866 ++ { \
1.31867 ++ _s->next = NULL; \
1.31868 ++ _abfd->section_last = _s; \
1.31869 ++ } \
1.31870 ++ _abfd->sections = _s; \
1.31871 ++ } \
1.31872 ++ while (0)
1.31873 ++#define bfd_section_list_insert_after(ABFD, A, S) \
1.31874 ++ do \
1.31875 ++ { \
1.31876 ++ asection *_a = A; \
1.31877 ++ asection *_s = S; \
1.31878 ++ asection *_next = _a->next; \
1.31879 ++ _s->next = _next; \
1.31880 ++ _s->prev = _a; \
1.31881 ++ _a->next = _s; \
1.31882 ++ if (_next) \
1.31883 ++ _next->prev = _s; \
1.31884 ++ else \
1.31885 ++ (ABFD)->section_last = _s; \
1.31886 ++ } \
1.31887 ++ while (0)
1.31888 ++#define bfd_section_list_insert_before(ABFD, B, S) \
1.31889 ++ do \
1.31890 ++ { \
1.31891 ++ asection *_b = B; \
1.31892 ++ asection *_s = S; \
1.31893 ++ asection *_prev = _b->prev; \
1.31894 ++ _s->prev = _prev; \
1.31895 ++ _s->next = _b; \
1.31896 ++ _b->prev = _s; \
1.31897 ++ if (_prev) \
1.31898 ++ _prev->next = _s; \
1.31899 ++ else \
1.31900 ++ (ABFD)->sections = _s; \
1.31901 ++ } \
1.31902 ++ while (0)
1.31903 ++#define bfd_section_removed_from_list(ABFD, S) \
1.31904 ++ ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
1.31905 ++
1.31906 ++#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
1.31907 ++ /* name, id, index, next, prev, flags, user_set_vma, */ \
1.31908 ++ { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
1.31909 ++ \
1.31910 ++ /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \
1.31911 ++ 0, 0, 1, 0, \
1.31912 ++ \
1.31913 ++ /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \
1.31914 ++ 0, 0, 0, 0, \
1.31915 ++ \
1.31916 ++ /* has_gp_reloc, need_finalize_relax, reloc_done, */ \
1.31917 ++ 0, 0, 0, \
1.31918 ++ \
1.31919 ++ /* vma, lma, size, rawsize */ \
1.31920 ++ 0, 0, 0, 0, \
1.31921 ++ \
1.31922 ++ /* output_offset, output_section, alignment_power, */ \
1.31923 ++ 0, (struct bfd_section *) &SEC, 0, \
1.31924 ++ \
1.31925 ++ /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
1.31926 ++ NULL, NULL, 0, 0, 0, \
1.31927 ++ \
1.31928 ++ /* line_filepos, userdata, contents, lineno, lineno_count, */ \
1.31929 ++ 0, NULL, NULL, NULL, 0, \
1.31930 ++ \
1.31931 ++ /* entsize, kept_section, moving_line_filepos, */ \
1.31932 ++ 0, NULL, 0, \
1.31933 ++ \
1.31934 ++ /* target_index, used_by_bfd, constructor_chain, owner, */ \
1.31935 ++ 0, NULL, NULL, NULL, \
1.31936 ++ \
1.31937 ++ /* symbol, symbol_ptr_ptr, */ \
1.31938 ++ (struct bfd_symbol *) SYM, &SEC.symbol, \
1.31939 ++ \
1.31940 ++ /* map_head, map_tail */ \
1.31941 ++ { NULL }, { NULL } \
1.31942 ++ }
1.31943 ++
1.31944 ++void bfd_section_list_clear (bfd *);
1.31945 ++
1.31946 ++asection *bfd_get_section_by_name (bfd *abfd, const char *name);
1.31947 ++
1.31948 ++asection *bfd_get_section_by_name_if
1.31949 ++ (bfd *abfd,
1.31950 ++ const char *name,
1.31951 ++ bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
1.31952 ++ void *obj);
1.31953 ++
1.31954 ++char *bfd_get_unique_section_name
1.31955 ++ (bfd *abfd, const char *templat, int *count);
1.31956 ++
1.31957 ++asection *bfd_make_section_old_way (bfd *abfd, const char *name);
1.31958 ++
1.31959 ++asection *bfd_make_section_anyway_with_flags
1.31960 ++ (bfd *abfd, const char *name, flagword flags);
1.31961 ++
1.31962 ++asection *bfd_make_section_anyway (bfd *abfd, const char *name);
1.31963 ++
1.31964 ++asection *bfd_make_section_with_flags
1.31965 ++ (bfd *, const char *name, flagword flags);
1.31966 ++
1.31967 ++asection *bfd_make_section (bfd *, const char *name);
1.31968 ++
1.31969 ++bfd_boolean bfd_set_section_flags
1.31970 ++ (bfd *abfd, asection *sec, flagword flags);
1.31971 ++
1.31972 ++void bfd_map_over_sections
1.31973 ++ (bfd *abfd,
1.31974 ++ void (*func) (bfd *abfd, asection *sect, void *obj),
1.31975 ++ void *obj);
1.31976 ++
1.31977 ++asection *bfd_sections_find_if
1.31978 ++ (bfd *abfd,
1.31979 ++ bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
1.31980 ++ void *obj);
1.31981 ++
1.31982 ++bfd_boolean bfd_set_section_size
1.31983 ++ (bfd *abfd, asection *sec, bfd_size_type val);
1.31984 ++
1.31985 ++bfd_boolean bfd_set_section_contents
1.31986 ++ (bfd *abfd, asection *section, const void *data,
1.31987 ++ file_ptr offset, bfd_size_type count);
1.31988 ++
1.31989 ++bfd_boolean bfd_get_section_contents
1.31990 ++ (bfd *abfd, asection *section, void *location, file_ptr offset,
1.31991 ++ bfd_size_type count);
1.31992 ++
1.31993 ++bfd_boolean bfd_malloc_and_get_section
1.31994 ++ (bfd *abfd, asection *section, bfd_byte **buf);
1.31995 ++
1.31996 ++bfd_boolean bfd_copy_private_section_data
1.31997 ++ (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
1.31998 ++
1.31999 ++#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
1.32000 ++ BFD_SEND (obfd, _bfd_copy_private_section_data, \
1.32001 ++ (ibfd, isection, obfd, osection))
1.32002 ++bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
1.32003 ++
1.32004 ++bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
1.32005 ++
1.32006 ++/* Extracted from archures.c. */
1.32007 ++enum bfd_architecture
1.32008 ++{
1.32009 ++ bfd_arch_unknown, /* File arch not known. */
1.32010 ++ bfd_arch_obscure, /* Arch known, not one of these. */
1.32011 ++ bfd_arch_m68k, /* Motorola 68xxx */
1.32012 ++#define bfd_mach_m68000 1
1.32013 ++#define bfd_mach_m68008 2
1.32014 ++#define bfd_mach_m68010 3
1.32015 ++#define bfd_mach_m68020 4
1.32016 ++#define bfd_mach_m68030 5
1.32017 ++#define bfd_mach_m68040 6
1.32018 ++#define bfd_mach_m68060 7
1.32019 ++#define bfd_mach_cpu32 8
1.32020 ++#define bfd_mach_fido 9
1.32021 ++#define bfd_mach_mcf_isa_a_nodiv 10
1.32022 ++#define bfd_mach_mcf_isa_a 11
1.32023 ++#define bfd_mach_mcf_isa_a_mac 12
1.32024 ++#define bfd_mach_mcf_isa_a_emac 13
1.32025 ++#define bfd_mach_mcf_isa_aplus 14
1.32026 ++#define bfd_mach_mcf_isa_aplus_mac 15
1.32027 ++#define bfd_mach_mcf_isa_aplus_emac 16
1.32028 ++#define bfd_mach_mcf_isa_b_nousp 17
1.32029 ++#define bfd_mach_mcf_isa_b_nousp_mac 18
1.32030 ++#define bfd_mach_mcf_isa_b_nousp_emac 19
1.32031 ++#define bfd_mach_mcf_isa_b 20
1.32032 ++#define bfd_mach_mcf_isa_b_mac 21
1.32033 ++#define bfd_mach_mcf_isa_b_emac 22
1.32034 ++#define bfd_mach_mcf_isa_b_float 23
1.32035 ++#define bfd_mach_mcf_isa_b_float_mac 24
1.32036 ++#define bfd_mach_mcf_isa_b_float_emac 25
1.32037 ++#define bfd_mach_mcf_isa_c 26
1.32038 ++#define bfd_mach_mcf_isa_c_mac 27
1.32039 ++#define bfd_mach_mcf_isa_c_emac 28
1.32040 ++ bfd_arch_vax, /* DEC Vax */
1.32041 ++ bfd_arch_i960, /* Intel 960 */
1.32042 ++ /* The order of the following is important.
1.32043 ++ lower number indicates a machine type that
1.32044 ++ only accepts a subset of the instructions
1.32045 ++ available to machines with higher numbers.
1.32046 ++ The exception is the "ca", which is
1.32047 ++ incompatible with all other machines except
1.32048 ++ "core". */
1.32049 ++
1.32050 ++#define bfd_mach_i960_core 1
1.32051 ++#define bfd_mach_i960_ka_sa 2
1.32052 ++#define bfd_mach_i960_kb_sb 3
1.32053 ++#define bfd_mach_i960_mc 4
1.32054 ++#define bfd_mach_i960_xa 5
1.32055 ++#define bfd_mach_i960_ca 6
1.32056 ++#define bfd_mach_i960_jx 7
1.32057 ++#define bfd_mach_i960_hx 8
1.32058 ++
1.32059 ++ bfd_arch_or32, /* OpenRISC 32 */
1.32060 ++
1.32061 ++ bfd_arch_sparc, /* SPARC */
1.32062 ++#define bfd_mach_sparc 1
1.32063 ++/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
1.32064 ++#define bfd_mach_sparc_sparclet 2
1.32065 ++#define bfd_mach_sparc_sparclite 3
1.32066 ++#define bfd_mach_sparc_v8plus 4
1.32067 ++#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
1.32068 ++#define bfd_mach_sparc_sparclite_le 6
1.32069 ++#define bfd_mach_sparc_v9 7
1.32070 ++#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
1.32071 ++#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
1.32072 ++#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
1.32073 ++/* Nonzero if MACH has the v9 instruction set. */
1.32074 ++#define bfd_mach_sparc_v9_p(mach) \
1.32075 ++ ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
1.32076 ++ && (mach) != bfd_mach_sparc_sparclite_le)
1.32077 ++/* Nonzero if MACH is a 64 bit sparc architecture. */
1.32078 ++#define bfd_mach_sparc_64bit_p(mach) \
1.32079 ++ ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
1.32080 ++ bfd_arch_spu, /* PowerPC SPU */
1.32081 ++#define bfd_mach_spu 256
1.32082 ++ bfd_arch_mips, /* MIPS Rxxxx */
1.32083 ++#define bfd_mach_mips3000 3000
1.32084 ++#define bfd_mach_mips3900 3900
1.32085 ++#define bfd_mach_mips4000 4000
1.32086 ++#define bfd_mach_mips4010 4010
1.32087 ++#define bfd_mach_mips4100 4100
1.32088 ++#define bfd_mach_mips4111 4111
1.32089 ++#define bfd_mach_mips4120 4120
1.32090 ++#define bfd_mach_mips4300 4300
1.32091 ++#define bfd_mach_mips4400 4400
1.32092 ++#define bfd_mach_mips4600 4600
1.32093 ++#define bfd_mach_mips4650 4650
1.32094 ++#define bfd_mach_mips5000 5000
1.32095 ++#define bfd_mach_mips5400 5400
1.32096 ++#define bfd_mach_mips5500 5500
1.32097 ++#define bfd_mach_mips6000 6000
1.32098 ++#define bfd_mach_mips7000 7000
1.32099 ++#define bfd_mach_mips8000 8000
1.32100 ++#define bfd_mach_mips9000 9000
1.32101 ++#define bfd_mach_mips10000 10000
1.32102 ++#define bfd_mach_mips12000 12000
1.32103 ++#define bfd_mach_mips16 16
1.32104 ++#define bfd_mach_mips5 5
1.32105 ++#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
1.32106 ++#define bfd_mach_mipsisa32 32
1.32107 ++#define bfd_mach_mipsisa32r2 33
1.32108 ++#define bfd_mach_mipsisa64 64
1.32109 ++#define bfd_mach_mipsisa64r2 65
1.32110 ++ bfd_arch_i386, /* Intel 386 */
1.32111 ++#define bfd_mach_i386_i386 1
1.32112 ++#define bfd_mach_i386_i8086 2
1.32113 ++#define bfd_mach_i386_i386_intel_syntax 3
1.32114 ++#define bfd_mach_x86_64 64
1.32115 ++#define bfd_mach_x86_64_intel_syntax 65
1.32116 ++ bfd_arch_we32k, /* AT&T WE32xxx */
1.32117 ++ bfd_arch_tahoe, /* CCI/Harris Tahoe */
1.32118 ++ bfd_arch_i860, /* Intel 860 */
1.32119 ++ bfd_arch_i370, /* IBM 360/370 Mainframes */
1.32120 ++ bfd_arch_romp, /* IBM ROMP PC/RT */
1.32121 ++ bfd_arch_convex, /* Convex */
1.32122 ++ bfd_arch_m88k, /* Motorola 88xxx */
1.32123 ++ bfd_arch_m98k, /* Motorola 98xxx */
1.32124 ++ bfd_arch_pyramid, /* Pyramid Technology */
1.32125 ++ bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
1.32126 ++#define bfd_mach_h8300 1
1.32127 ++#define bfd_mach_h8300h 2
1.32128 ++#define bfd_mach_h8300s 3
1.32129 ++#define bfd_mach_h8300hn 4
1.32130 ++#define bfd_mach_h8300sn 5
1.32131 ++#define bfd_mach_h8300sx 6
1.32132 ++#define bfd_mach_h8300sxn 7
1.32133 ++ bfd_arch_pdp11, /* DEC PDP-11 */
1.32134 ++ bfd_arch_powerpc, /* PowerPC */
1.32135 ++#define bfd_mach_ppc 32
1.32136 ++#define bfd_mach_ppc64 64
1.32137 ++#define bfd_mach_ppc_403 403
1.32138 ++#define bfd_mach_ppc_403gc 4030
1.32139 ++#define bfd_mach_ppc_505 505
1.32140 ++#define bfd_mach_ppc_601 601
1.32141 ++#define bfd_mach_ppc_602 602
1.32142 ++#define bfd_mach_ppc_603 603
1.32143 ++#define bfd_mach_ppc_ec603e 6031
1.32144 ++#define bfd_mach_ppc_604 604
1.32145 ++#define bfd_mach_ppc_620 620
1.32146 ++#define bfd_mach_ppc_630 630
1.32147 ++#define bfd_mach_ppc_750 750
1.32148 ++#define bfd_mach_ppc_860 860
1.32149 ++#define bfd_mach_ppc_a35 35
1.32150 ++#define bfd_mach_ppc_rs64ii 642
1.32151 ++#define bfd_mach_ppc_rs64iii 643
1.32152 ++#define bfd_mach_ppc_7400 7400
1.32153 ++#define bfd_mach_ppc_e500 500
1.32154 ++ bfd_arch_rs6000, /* IBM RS/6000 */
1.32155 ++#define bfd_mach_rs6k 6000
1.32156 ++#define bfd_mach_rs6k_rs1 6001
1.32157 ++#define bfd_mach_rs6k_rsc 6003
1.32158 ++#define bfd_mach_rs6k_rs2 6002
1.32159 ++ bfd_arch_hppa, /* HP PA RISC */
1.32160 ++#define bfd_mach_hppa10 10
1.32161 ++#define bfd_mach_hppa11 11
1.32162 ++#define bfd_mach_hppa20 20
1.32163 ++#define bfd_mach_hppa20w 25
1.32164 ++ bfd_arch_d10v, /* Mitsubishi D10V */
1.32165 ++#define bfd_mach_d10v 1
1.32166 ++#define bfd_mach_d10v_ts2 2
1.32167 ++#define bfd_mach_d10v_ts3 3
1.32168 ++ bfd_arch_d30v, /* Mitsubishi D30V */
1.32169 ++ bfd_arch_dlx, /* DLX */
1.32170 ++ bfd_arch_m68hc11, /* Motorola 68HC11 */
1.32171 ++ bfd_arch_m68hc12, /* Motorola 68HC12 */
1.32172 ++#define bfd_mach_m6812_default 0
1.32173 ++#define bfd_mach_m6812 1
1.32174 ++#define bfd_mach_m6812s 2
1.32175 ++ bfd_arch_z8k, /* Zilog Z8000 */
1.32176 ++#define bfd_mach_z8001 1
1.32177 ++#define bfd_mach_z8002 2
1.32178 ++ bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
1.32179 ++ bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
1.32180 ++#define bfd_mach_sh 1
1.32181 ++#define bfd_mach_sh2 0x20
1.32182 ++#define bfd_mach_sh_dsp 0x2d
1.32183 ++#define bfd_mach_sh2a 0x2a
1.32184 ++#define bfd_mach_sh2a_nofpu 0x2b
1.32185 ++#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
1.32186 ++#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
1.32187 ++#define bfd_mach_sh2a_or_sh4 0x2a3
1.32188 ++#define bfd_mach_sh2a_or_sh3e 0x2a4
1.32189 ++#define bfd_mach_sh2e 0x2e
1.32190 ++#define bfd_mach_sh3 0x30
1.32191 ++#define bfd_mach_sh3_nommu 0x31
1.32192 ++#define bfd_mach_sh3_dsp 0x3d
1.32193 ++#define bfd_mach_sh3e 0x3e
1.32194 ++#define bfd_mach_sh4 0x40
1.32195 ++#define bfd_mach_sh4_nofpu 0x41
1.32196 ++#define bfd_mach_sh4_nommu_nofpu 0x42
1.32197 ++#define bfd_mach_sh4a 0x4a
1.32198 ++#define bfd_mach_sh4a_nofpu 0x4b
1.32199 ++#define bfd_mach_sh4al_dsp 0x4d
1.32200 ++#define bfd_mach_sh5 0x50
1.32201 ++ bfd_arch_alpha, /* Dec Alpha */
1.32202 ++#define bfd_mach_alpha_ev4 0x10
1.32203 ++#define bfd_mach_alpha_ev5 0x20
1.32204 ++#define bfd_mach_alpha_ev6 0x30
1.32205 ++ bfd_arch_arm, /* Advanced Risc Machines ARM. */
1.32206 ++#define bfd_mach_arm_unknown 0
1.32207 ++#define bfd_mach_arm_2 1
1.32208 ++#define bfd_mach_arm_2a 2
1.32209 ++#define bfd_mach_arm_3 3
1.32210 ++#define bfd_mach_arm_3M 4
1.32211 ++#define bfd_mach_arm_4 5
1.32212 ++#define bfd_mach_arm_4T 6
1.32213 ++#define bfd_mach_arm_5 7
1.32214 ++#define bfd_mach_arm_5T 8
1.32215 ++#define bfd_mach_arm_5TE 9
1.32216 ++#define bfd_mach_arm_XScale 10
1.32217 ++#define bfd_mach_arm_ep9312 11
1.32218 ++#define bfd_mach_arm_iWMMXt 12
1.32219 ++#define bfd_mach_arm_iWMMXt2 13
1.32220 ++ bfd_arch_ns32k, /* National Semiconductors ns32000 */
1.32221 ++ bfd_arch_w65, /* WDC 65816 */
1.32222 ++ bfd_arch_tic30, /* Texas Instruments TMS320C30 */
1.32223 ++ bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
1.32224 ++#define bfd_mach_tic3x 30
1.32225 ++#define bfd_mach_tic4x 40
1.32226 ++ bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
1.32227 ++ bfd_arch_tic80, /* TI TMS320c80 (MVP) */
1.32228 ++ bfd_arch_v850, /* NEC V850 */
1.32229 ++#define bfd_mach_v850 1
1.32230 ++#define bfd_mach_v850e 'E'
1.32231 ++#define bfd_mach_v850e1 '1'
1.32232 ++ bfd_arch_arc, /* ARC Cores */
1.32233 ++#define bfd_mach_arc_5 5
1.32234 ++#define bfd_mach_arc_6 6
1.32235 ++#define bfd_mach_arc_7 7
1.32236 ++#define bfd_mach_arc_8 8
1.32237 ++ bfd_arch_m32c, /* Renesas M16C/M32C. */
1.32238 ++#define bfd_mach_m16c 0x75
1.32239 ++#define bfd_mach_m32c 0x78
1.32240 ++ bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
1.32241 ++#define bfd_mach_m32r 1 /* For backwards compatibility. */
1.32242 ++#define bfd_mach_m32rx 'x'
1.32243 ++#define bfd_mach_m32r2 '2'
1.32244 ++ bfd_arch_mn10200, /* Matsushita MN10200 */
1.32245 ++ bfd_arch_mn10300, /* Matsushita MN10300 */
1.32246 ++#define bfd_mach_mn10300 300
1.32247 ++#define bfd_mach_am33 330
1.32248 ++#define bfd_mach_am33_2 332
1.32249 ++ bfd_arch_fr30,
1.32250 ++#define bfd_mach_fr30 0x46523330
1.32251 ++ bfd_arch_frv,
1.32252 ++#define bfd_mach_frv 1
1.32253 ++#define bfd_mach_frvsimple 2
1.32254 ++#define bfd_mach_fr300 300
1.32255 ++#define bfd_mach_fr400 400
1.32256 ++#define bfd_mach_fr450 450
1.32257 ++#define bfd_mach_frvtomcat 499 /* fr500 prototype */
1.32258 ++#define bfd_mach_fr500 500
1.32259 ++#define bfd_mach_fr550 550
1.32260 ++ bfd_arch_mcore,
1.32261 ++ bfd_arch_mep,
1.32262 ++#define bfd_mach_mep 1
1.32263 ++#define bfd_mach_mep_h1 0x6831
1.32264 ++ bfd_arch_ia64, /* HP/Intel ia64 */
1.32265 ++#define bfd_mach_ia64_elf64 64
1.32266 ++#define bfd_mach_ia64_elf32 32
1.32267 ++ bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
1.32268 ++#define bfd_mach_ip2022 1
1.32269 ++#define bfd_mach_ip2022ext 2
1.32270 ++ bfd_arch_iq2000, /* Vitesse IQ2000. */
1.32271 ++#define bfd_mach_iq2000 1
1.32272 ++#define bfd_mach_iq10 2
1.32273 ++ bfd_arch_mt,
1.32274 ++#define bfd_mach_ms1 1
1.32275 ++#define bfd_mach_mrisc2 2
1.32276 ++#define bfd_mach_ms2 3
1.32277 ++ bfd_arch_pj,
1.32278 ++ bfd_arch_avr, /* Atmel AVR microcontrollers. */
1.32279 ++#define bfd_mach_avr1 1
1.32280 ++#define bfd_mach_avr2 2
1.32281 ++#define bfd_mach_avr3 3
1.32282 ++#define bfd_mach_avr4 4
1.32283 ++#define bfd_mach_avr5 5
1.32284 ++#define bfd_mach_avr6 6
1.32285 ++ bfd_arch_bfin, /* ADI Blackfin */
1.32286 ++#define bfd_mach_bfin 1
1.32287 ++ bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
1.32288 ++#define bfd_mach_cr16 1
1.32289 ++ bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
1.32290 ++#define bfd_mach_cr16c 1
1.32291 ++ bfd_arch_crx, /* National Semiconductor CRX. */
1.32292 ++#define bfd_mach_crx 1
1.32293 ++ bfd_arch_cris, /* Axis CRIS */
1.32294 ++#define bfd_mach_cris_v0_v10 255
1.32295 ++#define bfd_mach_cris_v32 32
1.32296 ++#define bfd_mach_cris_v10_v32 1032
1.32297 ++ bfd_arch_s390, /* IBM s390 */
1.32298 ++#define bfd_mach_s390_31 31
1.32299 ++#define bfd_mach_s390_64 64
1.32300 ++ bfd_arch_score, /* Sunplus score */
1.32301 ++ bfd_arch_openrisc, /* OpenRISC */
1.32302 ++ bfd_arch_mmix, /* Donald Knuth's educational processor. */
1.32303 ++ bfd_arch_xstormy16,
1.32304 ++#define bfd_mach_xstormy16 1
1.32305 ++ bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
1.32306 ++#define bfd_mach_msp11 11
1.32307 ++#define bfd_mach_msp110 110
1.32308 ++#define bfd_mach_msp12 12
1.32309 ++#define bfd_mach_msp13 13
1.32310 ++#define bfd_mach_msp14 14
1.32311 ++#define bfd_mach_msp15 15
1.32312 ++#define bfd_mach_msp16 16
1.32313 ++#define bfd_mach_msp21 21
1.32314 ++#define bfd_mach_msp31 31
1.32315 ++#define bfd_mach_msp32 32
1.32316 ++#define bfd_mach_msp33 33
1.32317 ++#define bfd_mach_msp41 41
1.32318 ++#define bfd_mach_msp42 42
1.32319 ++#define bfd_mach_msp43 43
1.32320 ++#define bfd_mach_msp44 44
1.32321 ++ bfd_arch_xc16x, /* Infineon's XC16X Series. */
1.32322 ++#define bfd_mach_xc16x 1
1.32323 ++#define bfd_mach_xc16xl 2
1.32324 ++#define bfd_mach_xc16xs 3
1.32325 ++ bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
1.32326 ++#define bfd_mach_xtensa 1
1.32327 ++ bfd_arch_maxq, /* Dallas MAXQ 10/20 */
1.32328 ++#define bfd_mach_maxq10 10
1.32329 ++#define bfd_mach_maxq20 20
1.32330 ++ bfd_arch_z80,
1.32331 ++#define bfd_mach_z80strict 1 /* No undocumented opcodes. */
1.32332 ++#define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
1.32333 ++#define bfd_mach_z80full 7 /* All undocumented instructions. */
1.32334 ++#define bfd_mach_r800 11 /* R800: successor with multiplication. */
1.32335 ++ bfd_arch_last
1.32336 ++ };
1.32337 ++
1.32338 ++typedef struct bfd_arch_info
1.32339 ++{
1.32340 ++ int bits_per_word;
1.32341 ++ int bits_per_address;
1.32342 ++ int bits_per_byte;
1.32343 ++ enum bfd_architecture arch;
1.32344 ++ unsigned long mach;
1.32345 ++ const char *arch_name;
1.32346 ++ const char *printable_name;
1.32347 ++ unsigned int section_align_power;
1.32348 ++ /* TRUE if this is the default machine for the architecture.
1.32349 ++ The default arch should be the first entry for an arch so that
1.32350 ++ all the entries for that arch can be accessed via <<next>>. */
1.32351 ++ bfd_boolean the_default;
1.32352 ++ const struct bfd_arch_info * (*compatible)
1.32353 ++ (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
1.32354 ++
1.32355 ++ bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
1.32356 ++
1.32357 ++ const struct bfd_arch_info *next;
1.32358 ++}
1.32359 ++bfd_arch_info_type;
1.32360 ++
1.32361 ++const char *bfd_printable_name (bfd *abfd);
1.32362 ++
1.32363 ++const bfd_arch_info_type *bfd_scan_arch (const char *string);
1.32364 ++
1.32365 ++const char **bfd_arch_list (void);
1.32366 ++
1.32367 ++const bfd_arch_info_type *bfd_arch_get_compatible
1.32368 ++ (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
1.32369 ++
1.32370 ++void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
1.32371 ++
1.32372 ++enum bfd_architecture bfd_get_arch (bfd *abfd);
1.32373 ++
1.32374 ++unsigned long bfd_get_mach (bfd *abfd);
1.32375 ++
1.32376 ++unsigned int bfd_arch_bits_per_byte (bfd *abfd);
1.32377 ++
1.32378 ++unsigned int bfd_arch_bits_per_address (bfd *abfd);
1.32379 ++
1.32380 ++const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
1.32381 ++
1.32382 ++const bfd_arch_info_type *bfd_lookup_arch
1.32383 ++ (enum bfd_architecture arch, unsigned long machine);
1.32384 ++
1.32385 ++const char *bfd_printable_arch_mach
1.32386 ++ (enum bfd_architecture arch, unsigned long machine);
1.32387 ++
1.32388 ++unsigned int bfd_octets_per_byte (bfd *abfd);
1.32389 ++
1.32390 ++unsigned int bfd_arch_mach_octets_per_byte
1.32391 ++ (enum bfd_architecture arch, unsigned long machine);
1.32392 ++
1.32393 ++/* Extracted from reloc.c. */
1.32394 ++typedef enum bfd_reloc_status
1.32395 ++{
1.32396 ++ /* No errors detected. */
1.32397 ++ bfd_reloc_ok,
1.32398 ++
1.32399 ++ /* The relocation was performed, but there was an overflow. */
1.32400 ++ bfd_reloc_overflow,
1.32401 ++
1.32402 ++ /* The address to relocate was not within the section supplied. */
1.32403 ++ bfd_reloc_outofrange,
1.32404 ++
1.32405 ++ /* Used by special functions. */
1.32406 ++ bfd_reloc_continue,
1.32407 ++
1.32408 ++ /* Unsupported relocation size requested. */
1.32409 ++ bfd_reloc_notsupported,
1.32410 ++
1.32411 ++ /* Unused. */
1.32412 ++ bfd_reloc_other,
1.32413 ++
1.32414 ++ /* The symbol to relocate against was undefined. */
1.32415 ++ bfd_reloc_undefined,
1.32416 ++
1.32417 ++ /* The relocation was performed, but may not be ok - presently
1.32418 ++ generated only when linking i960 coff files with i960 b.out
1.32419 ++ symbols. If this type is returned, the error_message argument
1.32420 ++ to bfd_perform_relocation will be set. */
1.32421 ++ bfd_reloc_dangerous
1.32422 ++ }
1.32423 ++ bfd_reloc_status_type;
1.32424 ++
1.32425 ++
1.32426 ++typedef struct reloc_cache_entry
1.32427 ++{
1.32428 ++ /* A pointer into the canonical table of pointers. */
1.32429 ++ struct bfd_symbol **sym_ptr_ptr;
1.32430 ++
1.32431 ++ /* offset in section. */
1.32432 ++ bfd_size_type address;
1.32433 ++
1.32434 ++ /* addend for relocation value. */
1.32435 ++ bfd_vma addend;
1.32436 ++
1.32437 ++ /* Pointer to how to perform the required relocation. */
1.32438 ++ reloc_howto_type *howto;
1.32439 ++
1.32440 ++}
1.32441 ++arelent;
1.32442 ++
1.32443 ++enum complain_overflow
1.32444 ++{
1.32445 ++ /* Do not complain on overflow. */
1.32446 ++ complain_overflow_dont,
1.32447 ++
1.32448 ++ /* Complain if the value overflows when considered as a signed
1.32449 ++ number one bit larger than the field. ie. A bitfield of N bits
1.32450 ++ is allowed to represent -2**n to 2**n-1. */
1.32451 ++ complain_overflow_bitfield,
1.32452 ++
1.32453 ++ /* Complain if the value overflows when considered as a signed
1.32454 ++ number. */
1.32455 ++ complain_overflow_signed,
1.32456 ++
1.32457 ++ /* Complain if the value overflows when considered as an
1.32458 ++ unsigned number. */
1.32459 ++ complain_overflow_unsigned
1.32460 ++};
1.32461 ++
1.32462 ++struct reloc_howto_struct
1.32463 ++{
1.32464 ++ /* The type field has mainly a documentary use - the back end can
1.32465 ++ do what it wants with it, though normally the back end's
1.32466 ++ external idea of what a reloc number is stored
1.32467 ++ in this field. For example, a PC relative word relocation
1.32468 ++ in a coff environment has the type 023 - because that's
1.32469 ++ what the outside world calls a R_PCRWORD reloc. */
1.32470 ++ unsigned int type;
1.32471 ++
1.32472 ++ /* The value the final relocation is shifted right by. This drops
1.32473 ++ unwanted data from the relocation. */
1.32474 ++ unsigned int rightshift;
1.32475 ++
1.32476 ++ /* The size of the item to be relocated. This is *not* a
1.32477 ++ power-of-two measure. To get the number of bytes operated
1.32478 ++ on by a type of relocation, use bfd_get_reloc_size. */
1.32479 ++ int size;
1.32480 ++
1.32481 ++ /* The number of bits in the item to be relocated. This is used
1.32482 ++ when doing overflow checking. */
1.32483 ++ unsigned int bitsize;
1.32484 ++
1.32485 ++ /* Notes that the relocation is relative to the location in the
1.32486 ++ data section of the addend. The relocation function will
1.32487 ++ subtract from the relocation value the address of the location
1.32488 ++ being relocated. */
1.32489 ++ bfd_boolean pc_relative;
1.32490 ++
1.32491 ++ /* The bit position of the reloc value in the destination.
1.32492 ++ The relocated value is left shifted by this amount. */
1.32493 ++ unsigned int bitpos;
1.32494 ++
1.32495 ++ /* What type of overflow error should be checked for when
1.32496 ++ relocating. */
1.32497 ++ enum complain_overflow complain_on_overflow;
1.32498 ++
1.32499 ++ /* If this field is non null, then the supplied function is
1.32500 ++ called rather than the normal function. This allows really
1.32501 ++ strange relocation methods to be accommodated (e.g., i960 callj
1.32502 ++ instructions). */
1.32503 ++ bfd_reloc_status_type (*special_function)
1.32504 ++ (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
1.32505 ++ bfd *, char **);
1.32506 ++
1.32507 ++ /* The textual name of the relocation type. */
1.32508 ++ char *name;
1.32509 ++
1.32510 ++ /* Some formats record a relocation addend in the section contents
1.32511 ++ rather than with the relocation. For ELF formats this is the
1.32512 ++ distinction between USE_REL and USE_RELA (though the code checks
1.32513 ++ for USE_REL == 1/0). The value of this field is TRUE if the
1.32514 ++ addend is recorded with the section contents; when performing a
1.32515 ++ partial link (ld -r) the section contents (the data) will be
1.32516 ++ modified. The value of this field is FALSE if addends are
1.32517 ++ recorded with the relocation (in arelent.addend); when performing
1.32518 ++ a partial link the relocation will be modified.
1.32519 ++ All relocations for all ELF USE_RELA targets should set this field
1.32520 ++ to FALSE (values of TRUE should be looked on with suspicion).
1.32521 ++ However, the converse is not true: not all relocations of all ELF
1.32522 ++ USE_REL targets set this field to TRUE. Why this is so is peculiar
1.32523 ++ to each particular target. For relocs that aren't used in partial
1.32524 ++ links (e.g. GOT stuff) it doesn't matter what this is set to. */
1.32525 ++ bfd_boolean partial_inplace;
1.32526 ++
1.32527 ++ /* src_mask selects the part of the instruction (or data) to be used
1.32528 ++ in the relocation sum. If the target relocations don't have an
1.32529 ++ addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
1.32530 ++ dst_mask to extract the addend from the section contents. If
1.32531 ++ relocations do have an addend in the reloc, eg. ELF USE_RELA, this
1.32532 ++ field should be zero. Non-zero values for ELF USE_RELA targets are
1.32533 ++ bogus as in those cases the value in the dst_mask part of the
1.32534 ++ section contents should be treated as garbage. */
1.32535 ++ bfd_vma src_mask;
1.32536 ++
1.32537 ++ /* dst_mask selects which parts of the instruction (or data) are
1.32538 ++ replaced with a relocated value. */
1.32539 ++ bfd_vma dst_mask;
1.32540 ++
1.32541 ++ /* When some formats create PC relative instructions, they leave
1.32542 ++ the value of the pc of the place being relocated in the offset
1.32543 ++ slot of the instruction, so that a PC relative relocation can
1.32544 ++ be made just by adding in an ordinary offset (e.g., sun3 a.out).
1.32545 ++ Some formats leave the displacement part of an instruction
1.32546 ++ empty (e.g., m88k bcs); this flag signals the fact. */
1.32547 ++ bfd_boolean pcrel_offset;
1.32548 ++};
1.32549 ++
1.32550 ++#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
1.32551 ++ { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
1.32552 ++#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
1.32553 ++ HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
1.32554 ++ NAME, FALSE, 0, 0, IN)
1.32555 ++
1.32556 ++#define EMPTY_HOWTO(C) \
1.32557 ++ HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
1.32558 ++ NULL, FALSE, 0, 0, FALSE)
1.32559 ++
1.32560 ++#define HOWTO_PREPARE(relocation, symbol) \
1.32561 ++ { \
1.32562 ++ if (symbol != NULL) \
1.32563 ++ { \
1.32564 ++ if (bfd_is_com_section (symbol->section)) \
1.32565 ++ { \
1.32566 ++ relocation = 0; \
1.32567 ++ } \
1.32568 ++ else \
1.32569 ++ { \
1.32570 ++ relocation = symbol->value; \
1.32571 ++ } \
1.32572 ++ } \
1.32573 ++ }
1.32574 ++
1.32575 ++unsigned int bfd_get_reloc_size (reloc_howto_type *);
1.32576 ++
1.32577 ++typedef struct relent_chain
1.32578 ++{
1.32579 ++ arelent relent;
1.32580 ++ struct relent_chain *next;
1.32581 ++}
1.32582 ++arelent_chain;
1.32583 ++
1.32584 ++bfd_reloc_status_type bfd_check_overflow
1.32585 ++ (enum complain_overflow how,
1.32586 ++ unsigned int bitsize,
1.32587 ++ unsigned int rightshift,
1.32588 ++ unsigned int addrsize,
1.32589 ++ bfd_vma relocation);
1.32590 ++
1.32591 ++bfd_reloc_status_type bfd_perform_relocation
1.32592 ++ (bfd *abfd,
1.32593 ++ arelent *reloc_entry,
1.32594 ++ void *data,
1.32595 ++ asection *input_section,
1.32596 ++ bfd *output_bfd,
1.32597 ++ char **error_message);
1.32598 ++
1.32599 ++bfd_reloc_status_type bfd_install_relocation
1.32600 ++ (bfd *abfd,
1.32601 ++ arelent *reloc_entry,
1.32602 ++ void *data, bfd_vma data_start,
1.32603 ++ asection *input_section,
1.32604 ++ char **error_message);
1.32605 ++
1.32606 ++enum bfd_reloc_code_real {
1.32607 ++ _dummy_first_bfd_reloc_code_real,
1.32608 ++
1.32609 ++
1.32610 ++/* Basic absolute relocations of N bits. */
1.32611 ++ BFD_RELOC_64,
1.32612 ++ BFD_RELOC_32,
1.32613 ++ BFD_RELOC_26,
1.32614 ++ BFD_RELOC_24,
1.32615 ++ BFD_RELOC_16,
1.32616 ++ BFD_RELOC_14,
1.32617 ++ BFD_RELOC_8,
1.32618 ++
1.32619 ++/* PC-relative relocations. Sometimes these are relative to the address
1.32620 ++of the relocation itself; sometimes they are relative to the start of
1.32621 ++the section containing the relocation. It depends on the specific target.
1.32622 ++
1.32623 ++The 24-bit relocation is used in some Intel 960 configurations. */
1.32624 ++ BFD_RELOC_64_PCREL,
1.32625 ++ BFD_RELOC_32_PCREL,
1.32626 ++ BFD_RELOC_24_PCREL,
1.32627 ++ BFD_RELOC_16_PCREL,
1.32628 ++ BFD_RELOC_12_PCREL,
1.32629 ++ BFD_RELOC_8_PCREL,
1.32630 ++
1.32631 ++/* Section relative relocations. Some targets need this for DWARF2. */
1.32632 ++ BFD_RELOC_32_SECREL,
1.32633 ++
1.32634 ++/* For ELF. */
1.32635 ++ BFD_RELOC_32_GOT_PCREL,
1.32636 ++ BFD_RELOC_16_GOT_PCREL,
1.32637 ++ BFD_RELOC_8_GOT_PCREL,
1.32638 ++ BFD_RELOC_32_GOTOFF,
1.32639 ++ BFD_RELOC_16_GOTOFF,
1.32640 ++ BFD_RELOC_LO16_GOTOFF,
1.32641 ++ BFD_RELOC_HI16_GOTOFF,
1.32642 ++ BFD_RELOC_HI16_S_GOTOFF,
1.32643 ++ BFD_RELOC_8_GOTOFF,
1.32644 ++ BFD_RELOC_64_PLT_PCREL,
1.32645 ++ BFD_RELOC_32_PLT_PCREL,
1.32646 ++ BFD_RELOC_24_PLT_PCREL,
1.32647 ++ BFD_RELOC_16_PLT_PCREL,
1.32648 ++ BFD_RELOC_8_PLT_PCREL,
1.32649 ++ BFD_RELOC_64_PLTOFF,
1.32650 ++ BFD_RELOC_32_PLTOFF,
1.32651 ++ BFD_RELOC_16_PLTOFF,
1.32652 ++ BFD_RELOC_LO16_PLTOFF,
1.32653 ++ BFD_RELOC_HI16_PLTOFF,
1.32654 ++ BFD_RELOC_HI16_S_PLTOFF,
1.32655 ++ BFD_RELOC_8_PLTOFF,
1.32656 ++
1.32657 ++/* Relocations used by 68K ELF. */
1.32658 ++ BFD_RELOC_68K_GLOB_DAT,
1.32659 ++ BFD_RELOC_68K_JMP_SLOT,
1.32660 ++ BFD_RELOC_68K_RELATIVE,
1.32661 ++
1.32662 ++/* Linkage-table relative. */
1.32663 ++ BFD_RELOC_32_BASEREL,
1.32664 ++ BFD_RELOC_16_BASEREL,
1.32665 ++ BFD_RELOC_LO16_BASEREL,
1.32666 ++ BFD_RELOC_HI16_BASEREL,
1.32667 ++ BFD_RELOC_HI16_S_BASEREL,
1.32668 ++ BFD_RELOC_8_BASEREL,
1.32669 ++ BFD_RELOC_RVA,
1.32670 ++
1.32671 ++/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */
1.32672 ++ BFD_RELOC_8_FFnn,
1.32673 ++
1.32674 ++/* These PC-relative relocations are stored as word displacements --
1.32675 ++i.e., byte displacements shifted right two bits. The 30-bit word
1.32676 ++displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
1.32677 ++SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
1.32678 ++signed 16-bit displacement is used on the MIPS, and the 23-bit
1.32679 ++displacement is used on the Alpha. */
1.32680 ++ BFD_RELOC_32_PCREL_S2,
1.32681 ++ BFD_RELOC_16_PCREL_S2,
1.32682 ++ BFD_RELOC_23_PCREL_S2,
1.32683 ++
1.32684 ++/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
1.32685 ++the target word. These are used on the SPARC. */
1.32686 ++ BFD_RELOC_HI22,
1.32687 ++ BFD_RELOC_LO10,
1.32688 ++
1.32689 ++/* For systems that allocate a Global Pointer register, these are
1.32690 ++displacements off that register. These relocation types are
1.32691 ++handled specially, because the value the register will have is
1.32692 ++decided relatively late. */
1.32693 ++ BFD_RELOC_GPREL16,
1.32694 ++ BFD_RELOC_GPREL32,
1.32695 ++
1.32696 ++/* Reloc types used for i960/b.out. */
1.32697 ++ BFD_RELOC_I960_CALLJ,
1.32698 ++
1.32699 ++/* SPARC ELF relocations. There is probably some overlap with other
1.32700 ++relocation types already defined. */
1.32701 ++ BFD_RELOC_NONE,
1.32702 ++ BFD_RELOC_SPARC_WDISP22,
1.32703 ++ BFD_RELOC_SPARC22,
1.32704 ++ BFD_RELOC_SPARC13,
1.32705 ++ BFD_RELOC_SPARC_GOT10,
1.32706 ++ BFD_RELOC_SPARC_GOT13,
1.32707 ++ BFD_RELOC_SPARC_GOT22,
1.32708 ++ BFD_RELOC_SPARC_PC10,
1.32709 ++ BFD_RELOC_SPARC_PC22,
1.32710 ++ BFD_RELOC_SPARC_WPLT30,
1.32711 ++ BFD_RELOC_SPARC_COPY,
1.32712 ++ BFD_RELOC_SPARC_GLOB_DAT,
1.32713 ++ BFD_RELOC_SPARC_JMP_SLOT,
1.32714 ++ BFD_RELOC_SPARC_RELATIVE,
1.32715 ++ BFD_RELOC_SPARC_UA16,
1.32716 ++ BFD_RELOC_SPARC_UA32,
1.32717 ++ BFD_RELOC_SPARC_UA64,
1.32718 ++
1.32719 ++/* I think these are specific to SPARC a.out (e.g., Sun 4). */
1.32720 ++ BFD_RELOC_SPARC_BASE13,
1.32721 ++ BFD_RELOC_SPARC_BASE22,
1.32722 ++
1.32723 ++/* SPARC64 relocations */
1.32724 ++#define BFD_RELOC_SPARC_64 BFD_RELOC_64
1.32725 ++ BFD_RELOC_SPARC_10,
1.32726 ++ BFD_RELOC_SPARC_11,
1.32727 ++ BFD_RELOC_SPARC_OLO10,
1.32728 ++ BFD_RELOC_SPARC_HH22,
1.32729 ++ BFD_RELOC_SPARC_HM10,
1.32730 ++ BFD_RELOC_SPARC_LM22,
1.32731 ++ BFD_RELOC_SPARC_PC_HH22,
1.32732 ++ BFD_RELOC_SPARC_PC_HM10,
1.32733 ++ BFD_RELOC_SPARC_PC_LM22,
1.32734 ++ BFD_RELOC_SPARC_WDISP16,
1.32735 ++ BFD_RELOC_SPARC_WDISP19,
1.32736 ++ BFD_RELOC_SPARC_7,
1.32737 ++ BFD_RELOC_SPARC_6,
1.32738 ++ BFD_RELOC_SPARC_5,
1.32739 ++#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
1.32740 ++ BFD_RELOC_SPARC_PLT32,
1.32741 ++ BFD_RELOC_SPARC_PLT64,
1.32742 ++ BFD_RELOC_SPARC_HIX22,
1.32743 ++ BFD_RELOC_SPARC_LOX10,
1.32744 ++ BFD_RELOC_SPARC_H44,
1.32745 ++ BFD_RELOC_SPARC_M44,
1.32746 ++ BFD_RELOC_SPARC_L44,
1.32747 ++ BFD_RELOC_SPARC_REGISTER,
1.32748 ++
1.32749 ++/* SPARC little endian relocation */
1.32750 ++ BFD_RELOC_SPARC_REV32,
1.32751 ++
1.32752 ++/* SPARC TLS relocations */
1.32753 ++ BFD_RELOC_SPARC_TLS_GD_HI22,
1.32754 ++ BFD_RELOC_SPARC_TLS_GD_LO10,
1.32755 ++ BFD_RELOC_SPARC_TLS_GD_ADD,
1.32756 ++ BFD_RELOC_SPARC_TLS_GD_CALL,
1.32757 ++ BFD_RELOC_SPARC_TLS_LDM_HI22,
1.32758 ++ BFD_RELOC_SPARC_TLS_LDM_LO10,
1.32759 ++ BFD_RELOC_SPARC_TLS_LDM_ADD,
1.32760 ++ BFD_RELOC_SPARC_TLS_LDM_CALL,
1.32761 ++ BFD_RELOC_SPARC_TLS_LDO_HIX22,
1.32762 ++ BFD_RELOC_SPARC_TLS_LDO_LOX10,
1.32763 ++ BFD_RELOC_SPARC_TLS_LDO_ADD,
1.32764 ++ BFD_RELOC_SPARC_TLS_IE_HI22,
1.32765 ++ BFD_RELOC_SPARC_TLS_IE_LO10,
1.32766 ++ BFD_RELOC_SPARC_TLS_IE_LD,
1.32767 ++ BFD_RELOC_SPARC_TLS_IE_LDX,
1.32768 ++ BFD_RELOC_SPARC_TLS_IE_ADD,
1.32769 ++ BFD_RELOC_SPARC_TLS_LE_HIX22,
1.32770 ++ BFD_RELOC_SPARC_TLS_LE_LOX10,
1.32771 ++ BFD_RELOC_SPARC_TLS_DTPMOD32,
1.32772 ++ BFD_RELOC_SPARC_TLS_DTPMOD64,
1.32773 ++ BFD_RELOC_SPARC_TLS_DTPOFF32,
1.32774 ++ BFD_RELOC_SPARC_TLS_DTPOFF64,
1.32775 ++ BFD_RELOC_SPARC_TLS_TPOFF32,
1.32776 ++ BFD_RELOC_SPARC_TLS_TPOFF64,
1.32777 ++
1.32778 ++/* SPU Relocations. */
1.32779 ++ BFD_RELOC_SPU_IMM7,
1.32780 ++ BFD_RELOC_SPU_IMM8,
1.32781 ++ BFD_RELOC_SPU_IMM10,
1.32782 ++ BFD_RELOC_SPU_IMM10W,
1.32783 ++ BFD_RELOC_SPU_IMM16,
1.32784 ++ BFD_RELOC_SPU_IMM16W,
1.32785 ++ BFD_RELOC_SPU_IMM18,
1.32786 ++ BFD_RELOC_SPU_PCREL9a,
1.32787 ++ BFD_RELOC_SPU_PCREL9b,
1.32788 ++ BFD_RELOC_SPU_PCREL16,
1.32789 ++ BFD_RELOC_SPU_LO16,
1.32790 ++ BFD_RELOC_SPU_HI16,
1.32791 ++ BFD_RELOC_SPU_PPU32,
1.32792 ++ BFD_RELOC_SPU_PPU64,
1.32793 ++
1.32794 ++/* Alpha ECOFF and ELF relocations. Some of these treat the symbol or
1.32795 ++"addend" in some special way.
1.32796 ++For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
1.32797 ++writing; when reading, it will be the absolute section symbol. The
1.32798 ++addend is the displacement in bytes of the "lda" instruction from
1.32799 ++the "ldah" instruction (which is at the address of this reloc). */
1.32800 ++ BFD_RELOC_ALPHA_GPDISP_HI16,
1.32801 ++
1.32802 ++/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
1.32803 ++with GPDISP_HI16 relocs. The addend is ignored when writing the
1.32804 ++relocations out, and is filled in with the file's GP value on
1.32805 ++reading, for convenience. */
1.32806 ++ BFD_RELOC_ALPHA_GPDISP_LO16,
1.32807 ++
1.32808 ++/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
1.32809 ++relocation except that there is no accompanying GPDISP_LO16
1.32810 ++relocation. */
1.32811 ++ BFD_RELOC_ALPHA_GPDISP,
1.32812 ++
1.32813 ++/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
1.32814 ++the assembler turns it into a LDQ instruction to load the address of
1.32815 ++the symbol, and then fills in a register in the real instruction.
1.32816 ++
1.32817 ++The LITERAL reloc, at the LDQ instruction, refers to the .lita
1.32818 ++section symbol. The addend is ignored when writing, but is filled
1.32819 ++in with the file's GP value on reading, for convenience, as with the
1.32820 ++GPDISP_LO16 reloc.
1.32821 ++
1.32822 ++The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
1.32823 ++It should refer to the symbol to be referenced, as with 16_GOTOFF,
1.32824 ++but it generates output not based on the position within the .got
1.32825 ++section, but relative to the GP value chosen for the file during the
1.32826 ++final link stage.
1.32827 ++
1.32828 ++The LITUSE reloc, on the instruction using the loaded address, gives
1.32829 ++information to the linker that it might be able to use to optimize
1.32830 ++away some literal section references. The symbol is ignored (read
1.32831 ++as the absolute section symbol), and the "addend" indicates the type
1.32832 ++of instruction using the register:
1.32833 ++1 - "memory" fmt insn
1.32834 ++2 - byte-manipulation (byte offset reg)
1.32835 ++3 - jsr (target of branch) */
1.32836 ++ BFD_RELOC_ALPHA_LITERAL,
1.32837 ++ BFD_RELOC_ALPHA_ELF_LITERAL,
1.32838 ++ BFD_RELOC_ALPHA_LITUSE,
1.32839 ++
1.32840 ++/* The HINT relocation indicates a value that should be filled into the
1.32841 ++"hint" field of a jmp/jsr/ret instruction, for possible branch-
1.32842 ++prediction logic which may be provided on some processors. */
1.32843 ++ BFD_RELOC_ALPHA_HINT,
1.32844 ++
1.32845 ++/* The LINKAGE relocation outputs a linkage pair in the object file,
1.32846 ++which is filled by the linker. */
1.32847 ++ BFD_RELOC_ALPHA_LINKAGE,
1.32848 ++
1.32849 ++/* The CODEADDR relocation outputs a STO_CA in the object file,
1.32850 ++which is filled by the linker. */
1.32851 ++ BFD_RELOC_ALPHA_CODEADDR,
1.32852 ++
1.32853 ++/* The GPREL_HI/LO relocations together form a 32-bit offset from the
1.32854 ++GP register. */
1.32855 ++ BFD_RELOC_ALPHA_GPREL_HI16,
1.32856 ++ BFD_RELOC_ALPHA_GPREL_LO16,
1.32857 ++
1.32858 ++/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
1.32859 ++share a common GP, and the target address is adjusted for
1.32860 ++STO_ALPHA_STD_GPLOAD. */
1.32861 ++ BFD_RELOC_ALPHA_BRSGP,
1.32862 ++
1.32863 ++/* Alpha thread-local storage relocations. */
1.32864 ++ BFD_RELOC_ALPHA_TLSGD,
1.32865 ++ BFD_RELOC_ALPHA_TLSLDM,
1.32866 ++ BFD_RELOC_ALPHA_DTPMOD64,
1.32867 ++ BFD_RELOC_ALPHA_GOTDTPREL16,
1.32868 ++ BFD_RELOC_ALPHA_DTPREL64,
1.32869 ++ BFD_RELOC_ALPHA_DTPREL_HI16,
1.32870 ++ BFD_RELOC_ALPHA_DTPREL_LO16,
1.32871 ++ BFD_RELOC_ALPHA_DTPREL16,
1.32872 ++ BFD_RELOC_ALPHA_GOTTPREL16,
1.32873 ++ BFD_RELOC_ALPHA_TPREL64,
1.32874 ++ BFD_RELOC_ALPHA_TPREL_HI16,
1.32875 ++ BFD_RELOC_ALPHA_TPREL_LO16,
1.32876 ++ BFD_RELOC_ALPHA_TPREL16,
1.32877 ++
1.32878 ++/* Bits 27..2 of the relocation address shifted right 2 bits;
1.32879 ++simple reloc otherwise. */
1.32880 ++ BFD_RELOC_MIPS_JMP,
1.32881 ++
1.32882 ++/* The MIPS16 jump instruction. */
1.32883 ++ BFD_RELOC_MIPS16_JMP,
1.32884 ++
1.32885 ++/* MIPS16 GP relative reloc. */
1.32886 ++ BFD_RELOC_MIPS16_GPREL,
1.32887 ++
1.32888 ++/* High 16 bits of 32-bit value; simple reloc. */
1.32889 ++ BFD_RELOC_HI16,
1.32890 ++
1.32891 ++/* High 16 bits of 32-bit value but the low 16 bits will be sign
1.32892 ++extended and added to form the final result. If the low 16
1.32893 ++bits form a negative number, we need to add one to the high value
1.32894 ++to compensate for the borrow when the low bits are added. */
1.32895 ++ BFD_RELOC_HI16_S,
1.32896 ++
1.32897 ++/* Low 16 bits. */
1.32898 ++ BFD_RELOC_LO16,
1.32899 ++
1.32900 ++/* High 16 bits of 32-bit pc-relative value */
1.32901 ++ BFD_RELOC_HI16_PCREL,
1.32902 ++
1.32903 ++/* High 16 bits of 32-bit pc-relative value, adjusted */
1.32904 ++ BFD_RELOC_HI16_S_PCREL,
1.32905 ++
1.32906 ++/* Low 16 bits of pc-relative value */
1.32907 ++ BFD_RELOC_LO16_PCREL,
1.32908 ++
1.32909 ++/* MIPS16 high 16 bits of 32-bit value. */
1.32910 ++ BFD_RELOC_MIPS16_HI16,
1.32911 ++
1.32912 ++/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
1.32913 ++extended and added to form the final result. If the low 16
1.32914 ++bits form a negative number, we need to add one to the high value
1.32915 ++to compensate for the borrow when the low bits are added. */
1.32916 ++ BFD_RELOC_MIPS16_HI16_S,
1.32917 ++
1.32918 ++/* MIPS16 low 16 bits. */
1.32919 ++ BFD_RELOC_MIPS16_LO16,
1.32920 ++
1.32921 ++/* Relocation against a MIPS literal section. */
1.32922 ++ BFD_RELOC_MIPS_LITERAL,
1.32923 ++
1.32924 ++/* MIPS ELF relocations. */
1.32925 ++ BFD_RELOC_MIPS_GOT16,
1.32926 ++ BFD_RELOC_MIPS_CALL16,
1.32927 ++ BFD_RELOC_MIPS_GOT_HI16,
1.32928 ++ BFD_RELOC_MIPS_GOT_LO16,
1.32929 ++ BFD_RELOC_MIPS_CALL_HI16,
1.32930 ++ BFD_RELOC_MIPS_CALL_LO16,
1.32931 ++ BFD_RELOC_MIPS_SUB,
1.32932 ++ BFD_RELOC_MIPS_GOT_PAGE,
1.32933 ++ BFD_RELOC_MIPS_GOT_OFST,
1.32934 ++ BFD_RELOC_MIPS_GOT_DISP,
1.32935 ++ BFD_RELOC_MIPS_SHIFT5,
1.32936 ++ BFD_RELOC_MIPS_SHIFT6,
1.32937 ++ BFD_RELOC_MIPS_INSERT_A,
1.32938 ++ BFD_RELOC_MIPS_INSERT_B,
1.32939 ++ BFD_RELOC_MIPS_DELETE,
1.32940 ++ BFD_RELOC_MIPS_HIGHEST,
1.32941 ++ BFD_RELOC_MIPS_HIGHER,
1.32942 ++ BFD_RELOC_MIPS_SCN_DISP,
1.32943 ++ BFD_RELOC_MIPS_REL16,
1.32944 ++ BFD_RELOC_MIPS_RELGOT,
1.32945 ++ BFD_RELOC_MIPS_JALR,
1.32946 ++ BFD_RELOC_MIPS_TLS_DTPMOD32,
1.32947 ++ BFD_RELOC_MIPS_TLS_DTPREL32,
1.32948 ++ BFD_RELOC_MIPS_TLS_DTPMOD64,
1.32949 ++ BFD_RELOC_MIPS_TLS_DTPREL64,
1.32950 ++ BFD_RELOC_MIPS_TLS_GD,
1.32951 ++ BFD_RELOC_MIPS_TLS_LDM,
1.32952 ++ BFD_RELOC_MIPS_TLS_DTPREL_HI16,
1.32953 ++ BFD_RELOC_MIPS_TLS_DTPREL_LO16,
1.32954 ++ BFD_RELOC_MIPS_TLS_GOTTPREL,
1.32955 ++ BFD_RELOC_MIPS_TLS_TPREL32,
1.32956 ++ BFD_RELOC_MIPS_TLS_TPREL64,
1.32957 ++ BFD_RELOC_MIPS_TLS_TPREL_HI16,
1.32958 ++ BFD_RELOC_MIPS_TLS_TPREL_LO16,
1.32959 ++
1.32960 ++
1.32961 ++/* MIPS ELF relocations (VxWorks extensions). */
1.32962 ++ BFD_RELOC_MIPS_COPY,
1.32963 ++ BFD_RELOC_MIPS_JUMP_SLOT,
1.32964 ++
1.32965 ++
1.32966 ++/* Fujitsu Frv Relocations. */
1.32967 ++ BFD_RELOC_FRV_LABEL16,
1.32968 ++ BFD_RELOC_FRV_LABEL24,
1.32969 ++ BFD_RELOC_FRV_LO16,
1.32970 ++ BFD_RELOC_FRV_HI16,
1.32971 ++ BFD_RELOC_FRV_GPREL12,
1.32972 ++ BFD_RELOC_FRV_GPRELU12,
1.32973 ++ BFD_RELOC_FRV_GPREL32,
1.32974 ++ BFD_RELOC_FRV_GPRELHI,
1.32975 ++ BFD_RELOC_FRV_GPRELLO,
1.32976 ++ BFD_RELOC_FRV_GOT12,
1.32977 ++ BFD_RELOC_FRV_GOTHI,
1.32978 ++ BFD_RELOC_FRV_GOTLO,
1.32979 ++ BFD_RELOC_FRV_FUNCDESC,
1.32980 ++ BFD_RELOC_FRV_FUNCDESC_GOT12,
1.32981 ++ BFD_RELOC_FRV_FUNCDESC_GOTHI,
1.32982 ++ BFD_RELOC_FRV_FUNCDESC_GOTLO,
1.32983 ++ BFD_RELOC_FRV_FUNCDESC_VALUE,
1.32984 ++ BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
1.32985 ++ BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
1.32986 ++ BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
1.32987 ++ BFD_RELOC_FRV_GOTOFF12,
1.32988 ++ BFD_RELOC_FRV_GOTOFFHI,
1.32989 ++ BFD_RELOC_FRV_GOTOFFLO,
1.32990 ++ BFD_RELOC_FRV_GETTLSOFF,
1.32991 ++ BFD_RELOC_FRV_TLSDESC_VALUE,
1.32992 ++ BFD_RELOC_FRV_GOTTLSDESC12,
1.32993 ++ BFD_RELOC_FRV_GOTTLSDESCHI,
1.32994 ++ BFD_RELOC_FRV_GOTTLSDESCLO,
1.32995 ++ BFD_RELOC_FRV_TLSMOFF12,
1.32996 ++ BFD_RELOC_FRV_TLSMOFFHI,
1.32997 ++ BFD_RELOC_FRV_TLSMOFFLO,
1.32998 ++ BFD_RELOC_FRV_GOTTLSOFF12,
1.32999 ++ BFD_RELOC_FRV_GOTTLSOFFHI,
1.33000 ++ BFD_RELOC_FRV_GOTTLSOFFLO,
1.33001 ++ BFD_RELOC_FRV_TLSOFF,
1.33002 ++ BFD_RELOC_FRV_TLSDESC_RELAX,
1.33003 ++ BFD_RELOC_FRV_GETTLSOFF_RELAX,
1.33004 ++ BFD_RELOC_FRV_TLSOFF_RELAX,
1.33005 ++ BFD_RELOC_FRV_TLSMOFF,
1.33006 ++
1.33007 ++
1.33008 ++/* This is a 24bit GOT-relative reloc for the mn10300. */
1.33009 ++ BFD_RELOC_MN10300_GOTOFF24,
1.33010 ++
1.33011 ++/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
1.33012 ++in the instruction. */
1.33013 ++ BFD_RELOC_MN10300_GOT32,
1.33014 ++
1.33015 ++/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
1.33016 ++in the instruction. */
1.33017 ++ BFD_RELOC_MN10300_GOT24,
1.33018 ++
1.33019 ++/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
1.33020 ++in the instruction. */
1.33021 ++ BFD_RELOC_MN10300_GOT16,
1.33022 ++
1.33023 ++/* Copy symbol at runtime. */
1.33024 ++ BFD_RELOC_MN10300_COPY,
1.33025 ++
1.33026 ++/* Create GOT entry. */
1.33027 ++ BFD_RELOC_MN10300_GLOB_DAT,
1.33028 ++
1.33029 ++/* Create PLT entry. */
1.33030 ++ BFD_RELOC_MN10300_JMP_SLOT,
1.33031 ++
1.33032 ++/* Adjust by program base. */
1.33033 ++ BFD_RELOC_MN10300_RELATIVE,
1.33034 ++
1.33035 ++
1.33036 ++/* i386/elf relocations */
1.33037 ++ BFD_RELOC_386_GOT32,
1.33038 ++ BFD_RELOC_386_PLT32,
1.33039 ++ BFD_RELOC_386_COPY,
1.33040 ++ BFD_RELOC_386_GLOB_DAT,
1.33041 ++ BFD_RELOC_386_JUMP_SLOT,
1.33042 ++ BFD_RELOC_386_RELATIVE,
1.33043 ++ BFD_RELOC_386_GOTOFF,
1.33044 ++ BFD_RELOC_386_GOTPC,
1.33045 ++ BFD_RELOC_386_TLS_TPOFF,
1.33046 ++ BFD_RELOC_386_TLS_IE,
1.33047 ++ BFD_RELOC_386_TLS_GOTIE,
1.33048 ++ BFD_RELOC_386_TLS_LE,
1.33049 ++ BFD_RELOC_386_TLS_GD,
1.33050 ++ BFD_RELOC_386_TLS_LDM,
1.33051 ++ BFD_RELOC_386_TLS_LDO_32,
1.33052 ++ BFD_RELOC_386_TLS_IE_32,
1.33053 ++ BFD_RELOC_386_TLS_LE_32,
1.33054 ++ BFD_RELOC_386_TLS_DTPMOD32,
1.33055 ++ BFD_RELOC_386_TLS_DTPOFF32,
1.33056 ++ BFD_RELOC_386_TLS_TPOFF32,
1.33057 ++ BFD_RELOC_386_TLS_GOTDESC,
1.33058 ++ BFD_RELOC_386_TLS_DESC_CALL,
1.33059 ++ BFD_RELOC_386_TLS_DESC,
1.33060 ++
1.33061 ++/* x86-64/elf relocations */
1.33062 ++ BFD_RELOC_X86_64_GOT32,
1.33063 ++ BFD_RELOC_X86_64_PLT32,
1.33064 ++ BFD_RELOC_X86_64_COPY,
1.33065 ++ BFD_RELOC_X86_64_GLOB_DAT,
1.33066 ++ BFD_RELOC_X86_64_JUMP_SLOT,
1.33067 ++ BFD_RELOC_X86_64_RELATIVE,
1.33068 ++ BFD_RELOC_X86_64_GOTPCREL,
1.33069 ++ BFD_RELOC_X86_64_32S,
1.33070 ++ BFD_RELOC_X86_64_DTPMOD64,
1.33071 ++ BFD_RELOC_X86_64_DTPOFF64,
1.33072 ++ BFD_RELOC_X86_64_TPOFF64,
1.33073 ++ BFD_RELOC_X86_64_TLSGD,
1.33074 ++ BFD_RELOC_X86_64_TLSLD,
1.33075 ++ BFD_RELOC_X86_64_DTPOFF32,
1.33076 ++ BFD_RELOC_X86_64_GOTTPOFF,
1.33077 ++ BFD_RELOC_X86_64_TPOFF32,
1.33078 ++ BFD_RELOC_X86_64_GOTOFF64,
1.33079 ++ BFD_RELOC_X86_64_GOTPC32,
1.33080 ++ BFD_RELOC_X86_64_GOT64,
1.33081 ++ BFD_RELOC_X86_64_GOTPCREL64,
1.33082 ++ BFD_RELOC_X86_64_GOTPC64,
1.33083 ++ BFD_RELOC_X86_64_GOTPLT64,
1.33084 ++ BFD_RELOC_X86_64_PLTOFF64,
1.33085 ++ BFD_RELOC_X86_64_GOTPC32_TLSDESC,
1.33086 ++ BFD_RELOC_X86_64_TLSDESC_CALL,
1.33087 ++ BFD_RELOC_X86_64_TLSDESC,
1.33088 ++
1.33089 ++/* ns32k relocations */
1.33090 ++ BFD_RELOC_NS32K_IMM_8,
1.33091 ++ BFD_RELOC_NS32K_IMM_16,
1.33092 ++ BFD_RELOC_NS32K_IMM_32,
1.33093 ++ BFD_RELOC_NS32K_IMM_8_PCREL,
1.33094 ++ BFD_RELOC_NS32K_IMM_16_PCREL,
1.33095 ++ BFD_RELOC_NS32K_IMM_32_PCREL,
1.33096 ++ BFD_RELOC_NS32K_DISP_8,
1.33097 ++ BFD_RELOC_NS32K_DISP_16,
1.33098 ++ BFD_RELOC_NS32K_DISP_32,
1.33099 ++ BFD_RELOC_NS32K_DISP_8_PCREL,
1.33100 ++ BFD_RELOC_NS32K_DISP_16_PCREL,
1.33101 ++ BFD_RELOC_NS32K_DISP_32_PCREL,
1.33102 ++
1.33103 ++/* PDP11 relocations */
1.33104 ++ BFD_RELOC_PDP11_DISP_8_PCREL,
1.33105 ++ BFD_RELOC_PDP11_DISP_6_PCREL,
1.33106 ++
1.33107 ++/* Picojava relocs. Not all of these appear in object files. */
1.33108 ++ BFD_RELOC_PJ_CODE_HI16,
1.33109 ++ BFD_RELOC_PJ_CODE_LO16,
1.33110 ++ BFD_RELOC_PJ_CODE_DIR16,
1.33111 ++ BFD_RELOC_PJ_CODE_DIR32,
1.33112 ++ BFD_RELOC_PJ_CODE_REL16,
1.33113 ++ BFD_RELOC_PJ_CODE_REL32,
1.33114 ++
1.33115 ++/* Power(rs6000) and PowerPC relocations. */
1.33116 ++ BFD_RELOC_PPC_B26,
1.33117 ++ BFD_RELOC_PPC_BA26,
1.33118 ++ BFD_RELOC_PPC_TOC16,
1.33119 ++ BFD_RELOC_PPC_B16,
1.33120 ++ BFD_RELOC_PPC_B16_BRTAKEN,
1.33121 ++ BFD_RELOC_PPC_B16_BRNTAKEN,
1.33122 ++ BFD_RELOC_PPC_BA16,
1.33123 ++ BFD_RELOC_PPC_BA16_BRTAKEN,
1.33124 ++ BFD_RELOC_PPC_BA16_BRNTAKEN,
1.33125 ++ BFD_RELOC_PPC_COPY,
1.33126 ++ BFD_RELOC_PPC_GLOB_DAT,
1.33127 ++ BFD_RELOC_PPC_JMP_SLOT,
1.33128 ++ BFD_RELOC_PPC_RELATIVE,
1.33129 ++ BFD_RELOC_PPC_LOCAL24PC,
1.33130 ++ BFD_RELOC_PPC_EMB_NADDR32,
1.33131 ++ BFD_RELOC_PPC_EMB_NADDR16,
1.33132 ++ BFD_RELOC_PPC_EMB_NADDR16_LO,
1.33133 ++ BFD_RELOC_PPC_EMB_NADDR16_HI,
1.33134 ++ BFD_RELOC_PPC_EMB_NADDR16_HA,
1.33135 ++ BFD_RELOC_PPC_EMB_SDAI16,
1.33136 ++ BFD_RELOC_PPC_EMB_SDA2I16,
1.33137 ++ BFD_RELOC_PPC_EMB_SDA2REL,
1.33138 ++ BFD_RELOC_PPC_EMB_SDA21,
1.33139 ++ BFD_RELOC_PPC_EMB_MRKREF,
1.33140 ++ BFD_RELOC_PPC_EMB_RELSEC16,
1.33141 ++ BFD_RELOC_PPC_EMB_RELST_LO,
1.33142 ++ BFD_RELOC_PPC_EMB_RELST_HI,
1.33143 ++ BFD_RELOC_PPC_EMB_RELST_HA,
1.33144 ++ BFD_RELOC_PPC_EMB_BIT_FLD,
1.33145 ++ BFD_RELOC_PPC_EMB_RELSDA,
1.33146 ++ BFD_RELOC_PPC64_HIGHER,
1.33147 ++ BFD_RELOC_PPC64_HIGHER_S,
1.33148 ++ BFD_RELOC_PPC64_HIGHEST,
1.33149 ++ BFD_RELOC_PPC64_HIGHEST_S,
1.33150 ++ BFD_RELOC_PPC64_TOC16_LO,
1.33151 ++ BFD_RELOC_PPC64_TOC16_HI,
1.33152 ++ BFD_RELOC_PPC64_TOC16_HA,
1.33153 ++ BFD_RELOC_PPC64_TOC,
1.33154 ++ BFD_RELOC_PPC64_PLTGOT16,
1.33155 ++ BFD_RELOC_PPC64_PLTGOT16_LO,
1.33156 ++ BFD_RELOC_PPC64_PLTGOT16_HI,
1.33157 ++ BFD_RELOC_PPC64_PLTGOT16_HA,
1.33158 ++ BFD_RELOC_PPC64_ADDR16_DS,
1.33159 ++ BFD_RELOC_PPC64_ADDR16_LO_DS,
1.33160 ++ BFD_RELOC_PPC64_GOT16_DS,
1.33161 ++ BFD_RELOC_PPC64_GOT16_LO_DS,
1.33162 ++ BFD_RELOC_PPC64_PLT16_LO_DS,
1.33163 ++ BFD_RELOC_PPC64_SECTOFF_DS,
1.33164 ++ BFD_RELOC_PPC64_SECTOFF_LO_DS,
1.33165 ++ BFD_RELOC_PPC64_TOC16_DS,
1.33166 ++ BFD_RELOC_PPC64_TOC16_LO_DS,
1.33167 ++ BFD_RELOC_PPC64_PLTGOT16_DS,
1.33168 ++ BFD_RELOC_PPC64_PLTGOT16_LO_DS,
1.33169 ++
1.33170 ++/* PowerPC and PowerPC64 thread-local storage relocations. */
1.33171 ++ BFD_RELOC_PPC_TLS,
1.33172 ++ BFD_RELOC_PPC_DTPMOD,
1.33173 ++ BFD_RELOC_PPC_TPREL16,
1.33174 ++ BFD_RELOC_PPC_TPREL16_LO,
1.33175 ++ BFD_RELOC_PPC_TPREL16_HI,
1.33176 ++ BFD_RELOC_PPC_TPREL16_HA,
1.33177 ++ BFD_RELOC_PPC_TPREL,
1.33178 ++ BFD_RELOC_PPC_DTPREL16,
1.33179 ++ BFD_RELOC_PPC_DTPREL16_LO,
1.33180 ++ BFD_RELOC_PPC_DTPREL16_HI,
1.33181 ++ BFD_RELOC_PPC_DTPREL16_HA,
1.33182 ++ BFD_RELOC_PPC_DTPREL,
1.33183 ++ BFD_RELOC_PPC_GOT_TLSGD16,
1.33184 ++ BFD_RELOC_PPC_GOT_TLSGD16_LO,
1.33185 ++ BFD_RELOC_PPC_GOT_TLSGD16_HI,
1.33186 ++ BFD_RELOC_PPC_GOT_TLSGD16_HA,
1.33187 ++ BFD_RELOC_PPC_GOT_TLSLD16,
1.33188 ++ BFD_RELOC_PPC_GOT_TLSLD16_LO,
1.33189 ++ BFD_RELOC_PPC_GOT_TLSLD16_HI,
1.33190 ++ BFD_RELOC_PPC_GOT_TLSLD16_HA,
1.33191 ++ BFD_RELOC_PPC_GOT_TPREL16,
1.33192 ++ BFD_RELOC_PPC_GOT_TPREL16_LO,
1.33193 ++ BFD_RELOC_PPC_GOT_TPREL16_HI,
1.33194 ++ BFD_RELOC_PPC_GOT_TPREL16_HA,
1.33195 ++ BFD_RELOC_PPC_GOT_DTPREL16,
1.33196 ++ BFD_RELOC_PPC_GOT_DTPREL16_LO,
1.33197 ++ BFD_RELOC_PPC_GOT_DTPREL16_HI,
1.33198 ++ BFD_RELOC_PPC_GOT_DTPREL16_HA,
1.33199 ++ BFD_RELOC_PPC64_TPREL16_DS,
1.33200 ++ BFD_RELOC_PPC64_TPREL16_LO_DS,
1.33201 ++ BFD_RELOC_PPC64_TPREL16_HIGHER,
1.33202 ++ BFD_RELOC_PPC64_TPREL16_HIGHERA,
1.33203 ++ BFD_RELOC_PPC64_TPREL16_HIGHEST,
1.33204 ++ BFD_RELOC_PPC64_TPREL16_HIGHESTA,
1.33205 ++ BFD_RELOC_PPC64_DTPREL16_DS,
1.33206 ++ BFD_RELOC_PPC64_DTPREL16_LO_DS,
1.33207 ++ BFD_RELOC_PPC64_DTPREL16_HIGHER,
1.33208 ++ BFD_RELOC_PPC64_DTPREL16_HIGHERA,
1.33209 ++ BFD_RELOC_PPC64_DTPREL16_HIGHEST,
1.33210 ++ BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
1.33211 ++
1.33212 ++/* IBM 370/390 relocations */
1.33213 ++ BFD_RELOC_I370_D12,
1.33214 ++
1.33215 ++/* The type of reloc used to build a constructor table - at the moment
1.33216 ++probably a 32 bit wide absolute relocation, but the target can choose.
1.33217 ++It generally does map to one of the other relocation types. */
1.33218 ++ BFD_RELOC_CTOR,
1.33219 ++
1.33220 ++/* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
1.33221 ++not stored in the instruction. */
1.33222 ++ BFD_RELOC_ARM_PCREL_BRANCH,
1.33223 ++
1.33224 ++/* ARM 26 bit pc-relative branch. The lowest bit must be zero and is
1.33225 ++not stored in the instruction. The 2nd lowest bit comes from a 1 bit
1.33226 ++field in the instruction. */
1.33227 ++ BFD_RELOC_ARM_PCREL_BLX,
1.33228 ++
1.33229 ++/* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
1.33230 ++not stored in the instruction. The 2nd lowest bit comes from a 1 bit
1.33231 ++field in the instruction. */
1.33232 ++ BFD_RELOC_THUMB_PCREL_BLX,
1.33233 ++
1.33234 ++/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */
1.33235 ++ BFD_RELOC_ARM_PCREL_CALL,
1.33236 ++
1.33237 ++/* ARM 26-bit pc-relative branch for B or conditional BL instruction. */
1.33238 ++ BFD_RELOC_ARM_PCREL_JUMP,
1.33239 ++
1.33240 ++/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
1.33241 ++The lowest bit must be zero and is not stored in the instruction.
1.33242 ++Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
1.33243 ++"nn" one smaller in all cases. Note further that BRANCH23
1.33244 ++corresponds to R_ARM_THM_CALL. */
1.33245 ++ BFD_RELOC_THUMB_PCREL_BRANCH7,
1.33246 ++ BFD_RELOC_THUMB_PCREL_BRANCH9,
1.33247 ++ BFD_RELOC_THUMB_PCREL_BRANCH12,
1.33248 ++ BFD_RELOC_THUMB_PCREL_BRANCH20,
1.33249 ++ BFD_RELOC_THUMB_PCREL_BRANCH23,
1.33250 ++ BFD_RELOC_THUMB_PCREL_BRANCH25,
1.33251 ++
1.33252 ++/* 12-bit immediate offset, used in ARM-format ldr and str instructions. */
1.33253 ++ BFD_RELOC_ARM_OFFSET_IMM,
1.33254 ++
1.33255 ++/* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */
1.33256 ++ BFD_RELOC_ARM_THUMB_OFFSET,
1.33257 ++
1.33258 ++/* Pc-relative or absolute relocation depending on target. Used for
1.33259 ++entries in .init_array sections. */
1.33260 ++ BFD_RELOC_ARM_TARGET1,
1.33261 ++
1.33262 ++/* Read-only segment base relative address. */
1.33263 ++ BFD_RELOC_ARM_ROSEGREL32,
1.33264 ++
1.33265 ++/* Data segment base relative address. */
1.33266 ++ BFD_RELOC_ARM_SBREL32,
1.33267 ++
1.33268 ++/* This reloc is used for references to RTTI data from exception handling
1.33269 ++tables. The actual definition depends on the target. It may be a
1.33270 ++pc-relative or some form of GOT-indirect relocation. */
1.33271 ++ BFD_RELOC_ARM_TARGET2,
1.33272 ++
1.33273 ++/* 31-bit PC relative address. */
1.33274 ++ BFD_RELOC_ARM_PREL31,
1.33275 ++
1.33276 ++/* Low and High halfword relocations for MOVW and MOVT instructions. */
1.33277 ++ BFD_RELOC_ARM_MOVW,
1.33278 ++ BFD_RELOC_ARM_MOVT,
1.33279 ++ BFD_RELOC_ARM_MOVW_PCREL,
1.33280 ++ BFD_RELOC_ARM_MOVT_PCREL,
1.33281 ++ BFD_RELOC_ARM_THUMB_MOVW,
1.33282 ++ BFD_RELOC_ARM_THUMB_MOVT,
1.33283 ++ BFD_RELOC_ARM_THUMB_MOVW_PCREL,
1.33284 ++ BFD_RELOC_ARM_THUMB_MOVT_PCREL,
1.33285 ++
1.33286 ++/* Relocations for setting up GOTs and PLTs for shared libraries. */
1.33287 ++ BFD_RELOC_ARM_JUMP_SLOT,
1.33288 ++ BFD_RELOC_ARM_GLOB_DAT,
1.33289 ++ BFD_RELOC_ARM_GOT32,
1.33290 ++ BFD_RELOC_ARM_PLT32,
1.33291 ++ BFD_RELOC_ARM_RELATIVE,
1.33292 ++ BFD_RELOC_ARM_GOTOFF,
1.33293 ++ BFD_RELOC_ARM_GOTPC,
1.33294 ++
1.33295 ++/* ARM thread-local storage relocations. */
1.33296 ++ BFD_RELOC_ARM_TLS_GD32,
1.33297 ++ BFD_RELOC_ARM_TLS_LDO32,
1.33298 ++ BFD_RELOC_ARM_TLS_LDM32,
1.33299 ++ BFD_RELOC_ARM_TLS_DTPOFF32,
1.33300 ++ BFD_RELOC_ARM_TLS_DTPMOD32,
1.33301 ++ BFD_RELOC_ARM_TLS_TPOFF32,
1.33302 ++ BFD_RELOC_ARM_TLS_IE32,
1.33303 ++ BFD_RELOC_ARM_TLS_LE32,
1.33304 ++
1.33305 ++/* ARM group relocations. */
1.33306 ++ BFD_RELOC_ARM_ALU_PC_G0_NC,
1.33307 ++ BFD_RELOC_ARM_ALU_PC_G0,
1.33308 ++ BFD_RELOC_ARM_ALU_PC_G1_NC,
1.33309 ++ BFD_RELOC_ARM_ALU_PC_G1,
1.33310 ++ BFD_RELOC_ARM_ALU_PC_G2,
1.33311 ++ BFD_RELOC_ARM_LDR_PC_G0,
1.33312 ++ BFD_RELOC_ARM_LDR_PC_G1,
1.33313 ++ BFD_RELOC_ARM_LDR_PC_G2,
1.33314 ++ BFD_RELOC_ARM_LDRS_PC_G0,
1.33315 ++ BFD_RELOC_ARM_LDRS_PC_G1,
1.33316 ++ BFD_RELOC_ARM_LDRS_PC_G2,
1.33317 ++ BFD_RELOC_ARM_LDC_PC_G0,
1.33318 ++ BFD_RELOC_ARM_LDC_PC_G1,
1.33319 ++ BFD_RELOC_ARM_LDC_PC_G2,
1.33320 ++ BFD_RELOC_ARM_ALU_SB_G0_NC,
1.33321 ++ BFD_RELOC_ARM_ALU_SB_G0,
1.33322 ++ BFD_RELOC_ARM_ALU_SB_G1_NC,
1.33323 ++ BFD_RELOC_ARM_ALU_SB_G1,
1.33324 ++ BFD_RELOC_ARM_ALU_SB_G2,
1.33325 ++ BFD_RELOC_ARM_LDR_SB_G0,
1.33326 ++ BFD_RELOC_ARM_LDR_SB_G1,
1.33327 ++ BFD_RELOC_ARM_LDR_SB_G2,
1.33328 ++ BFD_RELOC_ARM_LDRS_SB_G0,
1.33329 ++ BFD_RELOC_ARM_LDRS_SB_G1,
1.33330 ++ BFD_RELOC_ARM_LDRS_SB_G2,
1.33331 ++ BFD_RELOC_ARM_LDC_SB_G0,
1.33332 ++ BFD_RELOC_ARM_LDC_SB_G1,
1.33333 ++ BFD_RELOC_ARM_LDC_SB_G2,
1.33334 ++
1.33335 ++/* These relocs are only used within the ARM assembler. They are not
1.33336 ++(at present) written to any object files. */
1.33337 ++ BFD_RELOC_ARM_IMMEDIATE,
1.33338 ++ BFD_RELOC_ARM_ADRL_IMMEDIATE,
1.33339 ++ BFD_RELOC_ARM_T32_IMMEDIATE,
1.33340 ++ BFD_RELOC_ARM_T32_ADD_IMM,
1.33341 ++ BFD_RELOC_ARM_T32_IMM12,
1.33342 ++ BFD_RELOC_ARM_T32_ADD_PC12,
1.33343 ++ BFD_RELOC_ARM_SHIFT_IMM,
1.33344 ++ BFD_RELOC_ARM_SMC,
1.33345 ++ BFD_RELOC_ARM_SWI,
1.33346 ++ BFD_RELOC_ARM_MULTI,
1.33347 ++ BFD_RELOC_ARM_CP_OFF_IMM,
1.33348 ++ BFD_RELOC_ARM_CP_OFF_IMM_S2,
1.33349 ++ BFD_RELOC_ARM_T32_CP_OFF_IMM,
1.33350 ++ BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
1.33351 ++ BFD_RELOC_ARM_ADR_IMM,
1.33352 ++ BFD_RELOC_ARM_LDR_IMM,
1.33353 ++ BFD_RELOC_ARM_LITERAL,
1.33354 ++ BFD_RELOC_ARM_IN_POOL,
1.33355 ++ BFD_RELOC_ARM_OFFSET_IMM8,
1.33356 ++ BFD_RELOC_ARM_T32_OFFSET_U8,
1.33357 ++ BFD_RELOC_ARM_T32_OFFSET_IMM,
1.33358 ++ BFD_RELOC_ARM_HWLITERAL,
1.33359 ++ BFD_RELOC_ARM_THUMB_ADD,
1.33360 ++ BFD_RELOC_ARM_THUMB_IMM,
1.33361 ++ BFD_RELOC_ARM_THUMB_SHIFT,
1.33362 ++
1.33363 ++/* Renesas / SuperH SH relocs. Not all of these appear in object files. */
1.33364 ++ BFD_RELOC_SH_PCDISP8BY2,
1.33365 ++ BFD_RELOC_SH_PCDISP12BY2,
1.33366 ++ BFD_RELOC_SH_IMM3,
1.33367 ++ BFD_RELOC_SH_IMM3U,
1.33368 ++ BFD_RELOC_SH_DISP12,
1.33369 ++ BFD_RELOC_SH_DISP12BY2,
1.33370 ++ BFD_RELOC_SH_DISP12BY4,
1.33371 ++ BFD_RELOC_SH_DISP12BY8,
1.33372 ++ BFD_RELOC_SH_DISP20,
1.33373 ++ BFD_RELOC_SH_DISP20BY8,
1.33374 ++ BFD_RELOC_SH_IMM4,
1.33375 ++ BFD_RELOC_SH_IMM4BY2,
1.33376 ++ BFD_RELOC_SH_IMM4BY4,
1.33377 ++ BFD_RELOC_SH_IMM8,
1.33378 ++ BFD_RELOC_SH_IMM8BY2,
1.33379 ++ BFD_RELOC_SH_IMM8BY4,
1.33380 ++ BFD_RELOC_SH_PCRELIMM8BY2,
1.33381 ++ BFD_RELOC_SH_PCRELIMM8BY4,
1.33382 ++ BFD_RELOC_SH_SWITCH16,
1.33383 ++ BFD_RELOC_SH_SWITCH32,
1.33384 ++ BFD_RELOC_SH_USES,
1.33385 ++ BFD_RELOC_SH_COUNT,
1.33386 ++ BFD_RELOC_SH_ALIGN,
1.33387 ++ BFD_RELOC_SH_CODE,
1.33388 ++ BFD_RELOC_SH_DATA,
1.33389 ++ BFD_RELOC_SH_LABEL,
1.33390 ++ BFD_RELOC_SH_LOOP_START,
1.33391 ++ BFD_RELOC_SH_LOOP_END,
1.33392 ++ BFD_RELOC_SH_COPY,
1.33393 ++ BFD_RELOC_SH_GLOB_DAT,
1.33394 ++ BFD_RELOC_SH_JMP_SLOT,
1.33395 ++ BFD_RELOC_SH_RELATIVE,
1.33396 ++ BFD_RELOC_SH_GOTPC,
1.33397 ++ BFD_RELOC_SH_GOT_LOW16,
1.33398 ++ BFD_RELOC_SH_GOT_MEDLOW16,
1.33399 ++ BFD_RELOC_SH_GOT_MEDHI16,
1.33400 ++ BFD_RELOC_SH_GOT_HI16,
1.33401 ++ BFD_RELOC_SH_GOTPLT_LOW16,
1.33402 ++ BFD_RELOC_SH_GOTPLT_MEDLOW16,
1.33403 ++ BFD_RELOC_SH_GOTPLT_MEDHI16,
1.33404 ++ BFD_RELOC_SH_GOTPLT_HI16,
1.33405 ++ BFD_RELOC_SH_PLT_LOW16,
1.33406 ++ BFD_RELOC_SH_PLT_MEDLOW16,
1.33407 ++ BFD_RELOC_SH_PLT_MEDHI16,
1.33408 ++ BFD_RELOC_SH_PLT_HI16,
1.33409 ++ BFD_RELOC_SH_GOTOFF_LOW16,
1.33410 ++ BFD_RELOC_SH_GOTOFF_MEDLOW16,
1.33411 ++ BFD_RELOC_SH_GOTOFF_MEDHI16,
1.33412 ++ BFD_RELOC_SH_GOTOFF_HI16,
1.33413 ++ BFD_RELOC_SH_GOTPC_LOW16,
1.33414 ++ BFD_RELOC_SH_GOTPC_MEDLOW16,
1.33415 ++ BFD_RELOC_SH_GOTPC_MEDHI16,
1.33416 ++ BFD_RELOC_SH_GOTPC_HI16,
1.33417 ++ BFD_RELOC_SH_COPY64,
1.33418 ++ BFD_RELOC_SH_GLOB_DAT64,
1.33419 ++ BFD_RELOC_SH_JMP_SLOT64,
1.33420 ++ BFD_RELOC_SH_RELATIVE64,
1.33421 ++ BFD_RELOC_SH_GOT10BY4,
1.33422 ++ BFD_RELOC_SH_GOT10BY8,
1.33423 ++ BFD_RELOC_SH_GOTPLT10BY4,
1.33424 ++ BFD_RELOC_SH_GOTPLT10BY8,
1.33425 ++ BFD_RELOC_SH_GOTPLT32,
1.33426 ++ BFD_RELOC_SH_SHMEDIA_CODE,
1.33427 ++ BFD_RELOC_SH_IMMU5,
1.33428 ++ BFD_RELOC_SH_IMMS6,
1.33429 ++ BFD_RELOC_SH_IMMS6BY32,
1.33430 ++ BFD_RELOC_SH_IMMU6,
1.33431 ++ BFD_RELOC_SH_IMMS10,
1.33432 ++ BFD_RELOC_SH_IMMS10BY2,
1.33433 ++ BFD_RELOC_SH_IMMS10BY4,
1.33434 ++ BFD_RELOC_SH_IMMS10BY8,
1.33435 ++ BFD_RELOC_SH_IMMS16,
1.33436 ++ BFD_RELOC_SH_IMMU16,
1.33437 ++ BFD_RELOC_SH_IMM_LOW16,
1.33438 ++ BFD_RELOC_SH_IMM_LOW16_PCREL,
1.33439 ++ BFD_RELOC_SH_IMM_MEDLOW16,
1.33440 ++ BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
1.33441 ++ BFD_RELOC_SH_IMM_MEDHI16,
1.33442 ++ BFD_RELOC_SH_IMM_MEDHI16_PCREL,
1.33443 ++ BFD_RELOC_SH_IMM_HI16,
1.33444 ++ BFD_RELOC_SH_IMM_HI16_PCREL,
1.33445 ++ BFD_RELOC_SH_PT_16,
1.33446 ++ BFD_RELOC_SH_TLS_GD_32,
1.33447 ++ BFD_RELOC_SH_TLS_LD_32,
1.33448 ++ BFD_RELOC_SH_TLS_LDO_32,
1.33449 ++ BFD_RELOC_SH_TLS_IE_32,
1.33450 ++ BFD_RELOC_SH_TLS_LE_32,
1.33451 ++ BFD_RELOC_SH_TLS_DTPMOD32,
1.33452 ++ BFD_RELOC_SH_TLS_DTPOFF32,
1.33453 ++ BFD_RELOC_SH_TLS_TPOFF32,
1.33454 ++
1.33455 ++/* ARC Cores relocs.
1.33456 ++ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
1.33457 ++not stored in the instruction. The high 20 bits are installed in bits 26
1.33458 ++through 7 of the instruction. */
1.33459 ++ BFD_RELOC_ARC_B22_PCREL,
1.33460 ++
1.33461 ++/* ARC 26 bit absolute branch. The lowest two bits must be zero and are not
1.33462 ++stored in the instruction. The high 24 bits are installed in bits 23
1.33463 ++through 0. */
1.33464 ++ BFD_RELOC_ARC_B26,
1.33465 ++
1.33466 ++/* ADI Blackfin 16 bit immediate absolute reloc. */
1.33467 ++ BFD_RELOC_BFIN_16_IMM,
1.33468 ++
1.33469 ++/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */
1.33470 ++ BFD_RELOC_BFIN_16_HIGH,
1.33471 ++
1.33472 ++/* ADI Blackfin 'a' part of LSETUP. */
1.33473 ++ BFD_RELOC_BFIN_4_PCREL,
1.33474 ++
1.33475 ++/* ADI Blackfin. */
1.33476 ++ BFD_RELOC_BFIN_5_PCREL,
1.33477 ++
1.33478 ++/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */
1.33479 ++ BFD_RELOC_BFIN_16_LOW,
1.33480 ++
1.33481 ++/* ADI Blackfin. */
1.33482 ++ BFD_RELOC_BFIN_10_PCREL,
1.33483 ++
1.33484 ++/* ADI Blackfin 'b' part of LSETUP. */
1.33485 ++ BFD_RELOC_BFIN_11_PCREL,
1.33486 ++
1.33487 ++/* ADI Blackfin. */
1.33488 ++ BFD_RELOC_BFIN_12_PCREL_JUMP,
1.33489 ++
1.33490 ++/* ADI Blackfin Short jump, pcrel. */
1.33491 ++ BFD_RELOC_BFIN_12_PCREL_JUMP_S,
1.33492 ++
1.33493 ++/* ADI Blackfin Call.x not implemented. */
1.33494 ++ BFD_RELOC_BFIN_24_PCREL_CALL_X,
1.33495 ++
1.33496 ++/* ADI Blackfin Long Jump pcrel. */
1.33497 ++ BFD_RELOC_BFIN_24_PCREL_JUMP_L,
1.33498 ++
1.33499 ++/* ADI Blackfin FD-PIC relocations. */
1.33500 ++ BFD_RELOC_BFIN_GOT17M4,
1.33501 ++ BFD_RELOC_BFIN_GOTHI,
1.33502 ++ BFD_RELOC_BFIN_GOTLO,
1.33503 ++ BFD_RELOC_BFIN_FUNCDESC,
1.33504 ++ BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
1.33505 ++ BFD_RELOC_BFIN_FUNCDESC_GOTHI,
1.33506 ++ BFD_RELOC_BFIN_FUNCDESC_GOTLO,
1.33507 ++ BFD_RELOC_BFIN_FUNCDESC_VALUE,
1.33508 ++ BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
1.33509 ++ BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
1.33510 ++ BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
1.33511 ++ BFD_RELOC_BFIN_GOTOFF17M4,
1.33512 ++ BFD_RELOC_BFIN_GOTOFFHI,
1.33513 ++ BFD_RELOC_BFIN_GOTOFFLO,
1.33514 ++
1.33515 ++/* ADI Blackfin GOT relocation. */
1.33516 ++ BFD_RELOC_BFIN_GOT,
1.33517 ++
1.33518 ++/* ADI Blackfin PLTPC relocation. */
1.33519 ++ BFD_RELOC_BFIN_PLTPC,
1.33520 ++
1.33521 ++/* ADI Blackfin arithmetic relocation. */
1.33522 ++ BFD_ARELOC_BFIN_PUSH,
1.33523 ++
1.33524 ++/* ADI Blackfin arithmetic relocation. */
1.33525 ++ BFD_ARELOC_BFIN_CONST,
1.33526 ++
1.33527 ++/* ADI Blackfin arithmetic relocation. */
1.33528 ++ BFD_ARELOC_BFIN_ADD,
1.33529 ++
1.33530 ++/* ADI Blackfin arithmetic relocation. */
1.33531 ++ BFD_ARELOC_BFIN_SUB,
1.33532 ++
1.33533 ++/* ADI Blackfin arithmetic relocation. */
1.33534 ++ BFD_ARELOC_BFIN_MULT,
1.33535 ++
1.33536 ++/* ADI Blackfin arithmetic relocation. */
1.33537 ++ BFD_ARELOC_BFIN_DIV,
1.33538 ++
1.33539 ++/* ADI Blackfin arithmetic relocation. */
1.33540 ++ BFD_ARELOC_BFIN_MOD,
1.33541 ++
1.33542 ++/* ADI Blackfin arithmetic relocation. */
1.33543 ++ BFD_ARELOC_BFIN_LSHIFT,
1.33544 ++
1.33545 ++/* ADI Blackfin arithmetic relocation. */
1.33546 ++ BFD_ARELOC_BFIN_RSHIFT,
1.33547 ++
1.33548 ++/* ADI Blackfin arithmetic relocation. */
1.33549 ++ BFD_ARELOC_BFIN_AND,
1.33550 ++
1.33551 ++/* ADI Blackfin arithmetic relocation. */
1.33552 ++ BFD_ARELOC_BFIN_OR,
1.33553 ++
1.33554 ++/* ADI Blackfin arithmetic relocation. */
1.33555 ++ BFD_ARELOC_BFIN_XOR,
1.33556 ++
1.33557 ++/* ADI Blackfin arithmetic relocation. */
1.33558 ++ BFD_ARELOC_BFIN_LAND,
1.33559 ++
1.33560 ++/* ADI Blackfin arithmetic relocation. */
1.33561 ++ BFD_ARELOC_BFIN_LOR,
1.33562 ++
1.33563 ++/* ADI Blackfin arithmetic relocation. */
1.33564 ++ BFD_ARELOC_BFIN_LEN,
1.33565 ++
1.33566 ++/* ADI Blackfin arithmetic relocation. */
1.33567 ++ BFD_ARELOC_BFIN_NEG,
1.33568 ++
1.33569 ++/* ADI Blackfin arithmetic relocation. */
1.33570 ++ BFD_ARELOC_BFIN_COMP,
1.33571 ++
1.33572 ++/* ADI Blackfin arithmetic relocation. */
1.33573 ++ BFD_ARELOC_BFIN_PAGE,
1.33574 ++
1.33575 ++/* ADI Blackfin arithmetic relocation. */
1.33576 ++ BFD_ARELOC_BFIN_HWPAGE,
1.33577 ++
1.33578 ++/* ADI Blackfin arithmetic relocation. */
1.33579 ++ BFD_ARELOC_BFIN_ADDR,
1.33580 ++
1.33581 ++/* Mitsubishi D10V relocs.
1.33582 ++This is a 10-bit reloc with the right 2 bits
1.33583 ++assumed to be 0. */
1.33584 ++ BFD_RELOC_D10V_10_PCREL_R,
1.33585 ++
1.33586 ++/* Mitsubishi D10V relocs.
1.33587 ++This is a 10-bit reloc with the right 2 bits
1.33588 ++assumed to be 0. This is the same as the previous reloc
1.33589 ++except it is in the left container, i.e.,
1.33590 ++shifted left 15 bits. */
1.33591 ++ BFD_RELOC_D10V_10_PCREL_L,
1.33592 ++
1.33593 ++/* This is an 18-bit reloc with the right 2 bits
1.33594 ++assumed to be 0. */
1.33595 ++ BFD_RELOC_D10V_18,
1.33596 ++
1.33597 ++/* This is an 18-bit reloc with the right 2 bits
1.33598 ++assumed to be 0. */
1.33599 ++ BFD_RELOC_D10V_18_PCREL,
1.33600 ++
1.33601 ++/* Mitsubishi D30V relocs.
1.33602 ++This is a 6-bit absolute reloc. */
1.33603 ++ BFD_RELOC_D30V_6,
1.33604 ++
1.33605 ++/* This is a 6-bit pc-relative reloc with
1.33606 ++the right 3 bits assumed to be 0. */
1.33607 ++ BFD_RELOC_D30V_9_PCREL,
1.33608 ++
1.33609 ++/* This is a 6-bit pc-relative reloc with
1.33610 ++the right 3 bits assumed to be 0. Same
1.33611 ++as the previous reloc but on the right side
1.33612 ++of the container. */
1.33613 ++ BFD_RELOC_D30V_9_PCREL_R,
1.33614 ++
1.33615 ++/* This is a 12-bit absolute reloc with the
1.33616 ++right 3 bitsassumed to be 0. */
1.33617 ++ BFD_RELOC_D30V_15,
1.33618 ++
1.33619 ++/* This is a 12-bit pc-relative reloc with
1.33620 ++the right 3 bits assumed to be 0. */
1.33621 ++ BFD_RELOC_D30V_15_PCREL,
1.33622 ++
1.33623 ++/* This is a 12-bit pc-relative reloc with
1.33624 ++the right 3 bits assumed to be 0. Same
1.33625 ++as the previous reloc but on the right side
1.33626 ++of the container. */
1.33627 ++ BFD_RELOC_D30V_15_PCREL_R,
1.33628 ++
1.33629 ++/* This is an 18-bit absolute reloc with
1.33630 ++the right 3 bits assumed to be 0. */
1.33631 ++ BFD_RELOC_D30V_21,
1.33632 ++
1.33633 ++/* This is an 18-bit pc-relative reloc with
1.33634 ++the right 3 bits assumed to be 0. */
1.33635 ++ BFD_RELOC_D30V_21_PCREL,
1.33636 ++
1.33637 ++/* This is an 18-bit pc-relative reloc with
1.33638 ++the right 3 bits assumed to be 0. Same
1.33639 ++as the previous reloc but on the right side
1.33640 ++of the container. */
1.33641 ++ BFD_RELOC_D30V_21_PCREL_R,
1.33642 ++
1.33643 ++/* This is a 32-bit absolute reloc. */
1.33644 ++ BFD_RELOC_D30V_32,
1.33645 ++
1.33646 ++/* This is a 32-bit pc-relative reloc. */
1.33647 ++ BFD_RELOC_D30V_32_PCREL,
1.33648 ++
1.33649 ++/* DLX relocs */
1.33650 ++ BFD_RELOC_DLX_HI16_S,
1.33651 ++
1.33652 ++/* DLX relocs */
1.33653 ++ BFD_RELOC_DLX_LO16,
1.33654 ++
1.33655 ++/* DLX relocs */
1.33656 ++ BFD_RELOC_DLX_JMP26,
1.33657 ++
1.33658 ++/* Renesas M16C/M32C Relocations. */
1.33659 ++ BFD_RELOC_M32C_HI8,
1.33660 ++ BFD_RELOC_M32C_RL_JUMP,
1.33661 ++ BFD_RELOC_M32C_RL_1ADDR,
1.33662 ++ BFD_RELOC_M32C_RL_2ADDR,
1.33663 ++
1.33664 ++/* Renesas M32R (formerly Mitsubishi M32R) relocs.
1.33665 ++This is a 24 bit absolute address. */
1.33666 ++ BFD_RELOC_M32R_24,
1.33667 ++
1.33668 ++/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */
1.33669 ++ BFD_RELOC_M32R_10_PCREL,
1.33670 ++
1.33671 ++/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */
1.33672 ++ BFD_RELOC_M32R_18_PCREL,
1.33673 ++
1.33674 ++/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */
1.33675 ++ BFD_RELOC_M32R_26_PCREL,
1.33676 ++
1.33677 ++/* This is a 16-bit reloc containing the high 16 bits of an address
1.33678 ++used when the lower 16 bits are treated as unsigned. */
1.33679 ++ BFD_RELOC_M32R_HI16_ULO,
1.33680 ++
1.33681 ++/* This is a 16-bit reloc containing the high 16 bits of an address
1.33682 ++used when the lower 16 bits are treated as signed. */
1.33683 ++ BFD_RELOC_M32R_HI16_SLO,
1.33684 ++
1.33685 ++/* This is a 16-bit reloc containing the lower 16 bits of an address. */
1.33686 ++ BFD_RELOC_M32R_LO16,
1.33687 ++
1.33688 ++/* This is a 16-bit reloc containing the small data area offset for use in
1.33689 ++add3, load, and store instructions. */
1.33690 ++ BFD_RELOC_M32R_SDA16,
1.33691 ++
1.33692 ++/* For PIC. */
1.33693 ++ BFD_RELOC_M32R_GOT24,
1.33694 ++ BFD_RELOC_M32R_26_PLTREL,
1.33695 ++ BFD_RELOC_M32R_COPY,
1.33696 ++ BFD_RELOC_M32R_GLOB_DAT,
1.33697 ++ BFD_RELOC_M32R_JMP_SLOT,
1.33698 ++ BFD_RELOC_M32R_RELATIVE,
1.33699 ++ BFD_RELOC_M32R_GOTOFF,
1.33700 ++ BFD_RELOC_M32R_GOTOFF_HI_ULO,
1.33701 ++ BFD_RELOC_M32R_GOTOFF_HI_SLO,
1.33702 ++ BFD_RELOC_M32R_GOTOFF_LO,
1.33703 ++ BFD_RELOC_M32R_GOTPC24,
1.33704 ++ BFD_RELOC_M32R_GOT16_HI_ULO,
1.33705 ++ BFD_RELOC_M32R_GOT16_HI_SLO,
1.33706 ++ BFD_RELOC_M32R_GOT16_LO,
1.33707 ++ BFD_RELOC_M32R_GOTPC_HI_ULO,
1.33708 ++ BFD_RELOC_M32R_GOTPC_HI_SLO,
1.33709 ++ BFD_RELOC_M32R_GOTPC_LO,
1.33710 ++
1.33711 ++/* This is a 9-bit reloc */
1.33712 ++ BFD_RELOC_V850_9_PCREL,
1.33713 ++
1.33714 ++/* This is a 22-bit reloc */
1.33715 ++ BFD_RELOC_V850_22_PCREL,
1.33716 ++
1.33717 ++/* This is a 16 bit offset from the short data area pointer. */
1.33718 ++ BFD_RELOC_V850_SDA_16_16_OFFSET,
1.33719 ++
1.33720 ++/* This is a 16 bit offset (of which only 15 bits are used) from the
1.33721 ++short data area pointer. */
1.33722 ++ BFD_RELOC_V850_SDA_15_16_OFFSET,
1.33723 ++
1.33724 ++/* This is a 16 bit offset from the zero data area pointer. */
1.33725 ++ BFD_RELOC_V850_ZDA_16_16_OFFSET,
1.33726 ++
1.33727 ++/* This is a 16 bit offset (of which only 15 bits are used) from the
1.33728 ++zero data area pointer. */
1.33729 ++ BFD_RELOC_V850_ZDA_15_16_OFFSET,
1.33730 ++
1.33731 ++/* This is an 8 bit offset (of which only 6 bits are used) from the
1.33732 ++tiny data area pointer. */
1.33733 ++ BFD_RELOC_V850_TDA_6_8_OFFSET,
1.33734 ++
1.33735 ++/* This is an 8bit offset (of which only 7 bits are used) from the tiny
1.33736 ++data area pointer. */
1.33737 ++ BFD_RELOC_V850_TDA_7_8_OFFSET,
1.33738 ++
1.33739 ++/* This is a 7 bit offset from the tiny data area pointer. */
1.33740 ++ BFD_RELOC_V850_TDA_7_7_OFFSET,
1.33741 ++
1.33742 ++/* This is a 16 bit offset from the tiny data area pointer. */
1.33743 ++ BFD_RELOC_V850_TDA_16_16_OFFSET,
1.33744 ++
1.33745 ++/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
1.33746 ++data area pointer. */
1.33747 ++ BFD_RELOC_V850_TDA_4_5_OFFSET,
1.33748 ++
1.33749 ++/* This is a 4 bit offset from the tiny data area pointer. */
1.33750 ++ BFD_RELOC_V850_TDA_4_4_OFFSET,
1.33751 ++
1.33752 ++/* This is a 16 bit offset from the short data area pointer, with the
1.33753 ++bits placed non-contiguously in the instruction. */
1.33754 ++ BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
1.33755 ++
1.33756 ++/* This is a 16 bit offset from the zero data area pointer, with the
1.33757 ++bits placed non-contiguously in the instruction. */
1.33758 ++ BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
1.33759 ++
1.33760 ++/* This is a 6 bit offset from the call table base pointer. */
1.33761 ++ BFD_RELOC_V850_CALLT_6_7_OFFSET,
1.33762 ++
1.33763 ++/* This is a 16 bit offset from the call table base pointer. */
1.33764 ++ BFD_RELOC_V850_CALLT_16_16_OFFSET,
1.33765 ++
1.33766 ++/* Used for relaxing indirect function calls. */
1.33767 ++ BFD_RELOC_V850_LONGCALL,
1.33768 ++
1.33769 ++/* Used for relaxing indirect jumps. */
1.33770 ++ BFD_RELOC_V850_LONGJUMP,
1.33771 ++
1.33772 ++/* Used to maintain alignment whilst relaxing. */
1.33773 ++ BFD_RELOC_V850_ALIGN,
1.33774 ++
1.33775 ++/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
1.33776 ++instructions. */
1.33777 ++ BFD_RELOC_V850_LO16_SPLIT_OFFSET,
1.33778 ++
1.33779 ++/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
1.33780 ++instruction. */
1.33781 ++ BFD_RELOC_MN10300_32_PCREL,
1.33782 ++
1.33783 ++/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
1.33784 ++instruction. */
1.33785 ++ BFD_RELOC_MN10300_16_PCREL,
1.33786 ++
1.33787 ++/* This is a 8bit DP reloc for the tms320c30, where the most
1.33788 ++significant 8 bits of a 24 bit word are placed into the least
1.33789 ++significant 8 bits of the opcode. */
1.33790 ++ BFD_RELOC_TIC30_LDP,
1.33791 ++
1.33792 ++/* This is a 7bit reloc for the tms320c54x, where the least
1.33793 ++significant 7 bits of a 16 bit word are placed into the least
1.33794 ++significant 7 bits of the opcode. */
1.33795 ++ BFD_RELOC_TIC54X_PARTLS7,
1.33796 ++
1.33797 ++/* This is a 9bit DP reloc for the tms320c54x, where the most
1.33798 ++significant 9 bits of a 16 bit word are placed into the least
1.33799 ++significant 9 bits of the opcode. */
1.33800 ++ BFD_RELOC_TIC54X_PARTMS9,
1.33801 ++
1.33802 ++/* This is an extended address 23-bit reloc for the tms320c54x. */
1.33803 ++ BFD_RELOC_TIC54X_23,
1.33804 ++
1.33805 ++/* This is a 16-bit reloc for the tms320c54x, where the least
1.33806 ++significant 16 bits of a 23-bit extended address are placed into
1.33807 ++the opcode. */
1.33808 ++ BFD_RELOC_TIC54X_16_OF_23,
1.33809 ++
1.33810 ++/* This is a reloc for the tms320c54x, where the most
1.33811 ++significant 7 bits of a 23-bit extended address are placed into
1.33812 ++the opcode. */
1.33813 ++ BFD_RELOC_TIC54X_MS7_OF_23,
1.33814 ++
1.33815 ++/* This is a 48 bit reloc for the FR30 that stores 32 bits. */
1.33816 ++ BFD_RELOC_FR30_48,
1.33817 ++
1.33818 ++/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
1.33819 ++two sections. */
1.33820 ++ BFD_RELOC_FR30_20,
1.33821 ++
1.33822 ++/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
1.33823 ++4 bits. */
1.33824 ++ BFD_RELOC_FR30_6_IN_4,
1.33825 ++
1.33826 ++/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
1.33827 ++into 8 bits. */
1.33828 ++ BFD_RELOC_FR30_8_IN_8,
1.33829 ++
1.33830 ++/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
1.33831 ++into 8 bits. */
1.33832 ++ BFD_RELOC_FR30_9_IN_8,
1.33833 ++
1.33834 ++/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
1.33835 ++into 8 bits. */
1.33836 ++ BFD_RELOC_FR30_10_IN_8,
1.33837 ++
1.33838 ++/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
1.33839 ++short offset into 8 bits. */
1.33840 ++ BFD_RELOC_FR30_9_PCREL,
1.33841 ++
1.33842 ++/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
1.33843 ++short offset into 11 bits. */
1.33844 ++ BFD_RELOC_FR30_12_PCREL,
1.33845 ++
1.33846 ++/* Motorola Mcore relocations. */
1.33847 ++ BFD_RELOC_MCORE_PCREL_IMM8BY4,
1.33848 ++ BFD_RELOC_MCORE_PCREL_IMM11BY2,
1.33849 ++ BFD_RELOC_MCORE_PCREL_IMM4BY2,
1.33850 ++ BFD_RELOC_MCORE_PCREL_32,
1.33851 ++ BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
1.33852 ++ BFD_RELOC_MCORE_RVA,
1.33853 ++
1.33854 ++/* Toshiba Media Processor Relocations. */
1.33855 ++ BFD_RELOC_MEP_8,
1.33856 ++ BFD_RELOC_MEP_16,
1.33857 ++ BFD_RELOC_MEP_32,
1.33858 ++ BFD_RELOC_MEP_PCREL8A2,
1.33859 ++ BFD_RELOC_MEP_PCREL12A2,
1.33860 ++ BFD_RELOC_MEP_PCREL17A2,
1.33861 ++ BFD_RELOC_MEP_PCREL24A2,
1.33862 ++ BFD_RELOC_MEP_PCABS24A2,
1.33863 ++ BFD_RELOC_MEP_LOW16,
1.33864 ++ BFD_RELOC_MEP_HI16U,
1.33865 ++ BFD_RELOC_MEP_HI16S,
1.33866 ++ BFD_RELOC_MEP_GPREL,
1.33867 ++ BFD_RELOC_MEP_TPREL,
1.33868 ++ BFD_RELOC_MEP_TPREL7,
1.33869 ++ BFD_RELOC_MEP_TPREL7A2,
1.33870 ++ BFD_RELOC_MEP_TPREL7A4,
1.33871 ++ BFD_RELOC_MEP_UIMM24,
1.33872 ++ BFD_RELOC_MEP_ADDR24A4,
1.33873 ++ BFD_RELOC_MEP_GNU_VTINHERIT,
1.33874 ++ BFD_RELOC_MEP_GNU_VTENTRY,
1.33875 ++
1.33876 ++
1.33877 ++/* These are relocations for the GETA instruction. */
1.33878 ++ BFD_RELOC_MMIX_GETA,
1.33879 ++ BFD_RELOC_MMIX_GETA_1,
1.33880 ++ BFD_RELOC_MMIX_GETA_2,
1.33881 ++ BFD_RELOC_MMIX_GETA_3,
1.33882 ++
1.33883 ++/* These are relocations for a conditional branch instruction. */
1.33884 ++ BFD_RELOC_MMIX_CBRANCH,
1.33885 ++ BFD_RELOC_MMIX_CBRANCH_J,
1.33886 ++ BFD_RELOC_MMIX_CBRANCH_1,
1.33887 ++ BFD_RELOC_MMIX_CBRANCH_2,
1.33888 ++ BFD_RELOC_MMIX_CBRANCH_3,
1.33889 ++
1.33890 ++/* These are relocations for the PUSHJ instruction. */
1.33891 ++ BFD_RELOC_MMIX_PUSHJ,
1.33892 ++ BFD_RELOC_MMIX_PUSHJ_1,
1.33893 ++ BFD_RELOC_MMIX_PUSHJ_2,
1.33894 ++ BFD_RELOC_MMIX_PUSHJ_3,
1.33895 ++ BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
1.33896 ++
1.33897 ++/* These are relocations for the JMP instruction. */
1.33898 ++ BFD_RELOC_MMIX_JMP,
1.33899 ++ BFD_RELOC_MMIX_JMP_1,
1.33900 ++ BFD_RELOC_MMIX_JMP_2,
1.33901 ++ BFD_RELOC_MMIX_JMP_3,
1.33902 ++
1.33903 ++/* This is a relocation for a relative address as in a GETA instruction or
1.33904 ++a branch. */
1.33905 ++ BFD_RELOC_MMIX_ADDR19,
1.33906 ++
1.33907 ++/* This is a relocation for a relative address as in a JMP instruction. */
1.33908 ++ BFD_RELOC_MMIX_ADDR27,
1.33909 ++
1.33910 ++/* This is a relocation for an instruction field that may be a general
1.33911 ++register or a value 0..255. */
1.33912 ++ BFD_RELOC_MMIX_REG_OR_BYTE,
1.33913 ++
1.33914 ++/* This is a relocation for an instruction field that may be a general
1.33915 ++register. */
1.33916 ++ BFD_RELOC_MMIX_REG,
1.33917 ++
1.33918 ++/* This is a relocation for two instruction fields holding a register and
1.33919 ++an offset, the equivalent of the relocation. */
1.33920 ++ BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
1.33921 ++
1.33922 ++/* This relocation is an assertion that the expression is not allocated as
1.33923 ++a global register. It does not modify contents. */
1.33924 ++ BFD_RELOC_MMIX_LOCAL,
1.33925 ++
1.33926 ++/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
1.33927 ++short offset into 7 bits. */
1.33928 ++ BFD_RELOC_AVR_7_PCREL,
1.33929 ++
1.33930 ++/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
1.33931 ++short offset into 12 bits. */
1.33932 ++ BFD_RELOC_AVR_13_PCREL,
1.33933 ++
1.33934 ++/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
1.33935 ++program memory address) into 16 bits. */
1.33936 ++ BFD_RELOC_AVR_16_PM,
1.33937 ++
1.33938 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
1.33939 ++data memory address) into 8 bit immediate value of LDI insn. */
1.33940 ++ BFD_RELOC_AVR_LO8_LDI,
1.33941 ++
1.33942 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
1.33943 ++of data memory address) into 8 bit immediate value of LDI insn. */
1.33944 ++ BFD_RELOC_AVR_HI8_LDI,
1.33945 ++
1.33946 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
1.33947 ++of program memory address) into 8 bit immediate value of LDI insn. */
1.33948 ++ BFD_RELOC_AVR_HH8_LDI,
1.33949 ++
1.33950 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
1.33951 ++of 32 bit value) into 8 bit immediate value of LDI insn. */
1.33952 ++ BFD_RELOC_AVR_MS8_LDI,
1.33953 ++
1.33954 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
1.33955 ++(usually data memory address) into 8 bit immediate value of SUBI insn. */
1.33956 ++ BFD_RELOC_AVR_LO8_LDI_NEG,
1.33957 ++
1.33958 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
1.33959 ++(high 8 bit of data memory address) into 8 bit immediate value of
1.33960 ++SUBI insn. */
1.33961 ++ BFD_RELOC_AVR_HI8_LDI_NEG,
1.33962 ++
1.33963 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
1.33964 ++(most high 8 bit of program memory address) into 8 bit immediate value
1.33965 ++of LDI or SUBI insn. */
1.33966 ++ BFD_RELOC_AVR_HH8_LDI_NEG,
1.33967 ++
1.33968 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
1.33969 ++of 32 bit value) into 8 bit immediate value of LDI insn. */
1.33970 ++ BFD_RELOC_AVR_MS8_LDI_NEG,
1.33971 ++
1.33972 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
1.33973 ++command address) into 8 bit immediate value of LDI insn. */
1.33974 ++ BFD_RELOC_AVR_LO8_LDI_PM,
1.33975 ++
1.33976 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value
1.33977 ++(command address) into 8 bit immediate value of LDI insn. If the address
1.33978 ++is beyond the 128k boundary, the linker inserts a jump stub for this reloc
1.33979 ++in the lower 128k. */
1.33980 ++ BFD_RELOC_AVR_LO8_LDI_GS,
1.33981 ++
1.33982 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
1.33983 ++of command address) into 8 bit immediate value of LDI insn. */
1.33984 ++ BFD_RELOC_AVR_HI8_LDI_PM,
1.33985 ++
1.33986 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
1.33987 ++of command address) into 8 bit immediate value of LDI insn. If the address
1.33988 ++is beyond the 128k boundary, the linker inserts a jump stub for this reloc
1.33989 ++below 128k. */
1.33990 ++ BFD_RELOC_AVR_HI8_LDI_GS,
1.33991 ++
1.33992 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
1.33993 ++of command address) into 8 bit immediate value of LDI insn. */
1.33994 ++ BFD_RELOC_AVR_HH8_LDI_PM,
1.33995 ++
1.33996 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
1.33997 ++(usually command address) into 8 bit immediate value of SUBI insn. */
1.33998 ++ BFD_RELOC_AVR_LO8_LDI_PM_NEG,
1.33999 ++
1.34000 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
1.34001 ++(high 8 bit of 16 bit command address) into 8 bit immediate value
1.34002 ++of SUBI insn. */
1.34003 ++ BFD_RELOC_AVR_HI8_LDI_PM_NEG,
1.34004 ++
1.34005 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
1.34006 ++(high 6 bit of 22 bit command address) into 8 bit immediate
1.34007 ++value of SUBI insn. */
1.34008 ++ BFD_RELOC_AVR_HH8_LDI_PM_NEG,
1.34009 ++
1.34010 ++/* This is a 32 bit reloc for the AVR that stores 23 bit value
1.34011 ++into 22 bits. */
1.34012 ++ BFD_RELOC_AVR_CALL,
1.34013 ++
1.34014 ++/* This is a 16 bit reloc for the AVR that stores all needed bits
1.34015 ++for absolute addressing with ldi with overflow check to linktime */
1.34016 ++ BFD_RELOC_AVR_LDI,
1.34017 ++
1.34018 ++/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
1.34019 ++instructions */
1.34020 ++ BFD_RELOC_AVR_6,
1.34021 ++
1.34022 ++/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
1.34023 ++instructions */
1.34024 ++ BFD_RELOC_AVR_6_ADIW,
1.34025 ++
1.34026 ++/* Direct 12 bit. */
1.34027 ++ BFD_RELOC_390_12,
1.34028 ++
1.34029 ++/* 12 bit GOT offset. */
1.34030 ++ BFD_RELOC_390_GOT12,
1.34031 ++
1.34032 ++/* 32 bit PC relative PLT address. */
1.34033 ++ BFD_RELOC_390_PLT32,
1.34034 ++
1.34035 ++/* Copy symbol at runtime. */
1.34036 ++ BFD_RELOC_390_COPY,
1.34037 ++
1.34038 ++/* Create GOT entry. */
1.34039 ++ BFD_RELOC_390_GLOB_DAT,
1.34040 ++
1.34041 ++/* Create PLT entry. */
1.34042 ++ BFD_RELOC_390_JMP_SLOT,
1.34043 ++
1.34044 ++/* Adjust by program base. */
1.34045 ++ BFD_RELOC_390_RELATIVE,
1.34046 ++
1.34047 ++/* 32 bit PC relative offset to GOT. */
1.34048 ++ BFD_RELOC_390_GOTPC,
1.34049 ++
1.34050 ++/* 16 bit GOT offset. */
1.34051 ++ BFD_RELOC_390_GOT16,
1.34052 ++
1.34053 ++/* PC relative 16 bit shifted by 1. */
1.34054 ++ BFD_RELOC_390_PC16DBL,
1.34055 ++
1.34056 ++/* 16 bit PC rel. PLT shifted by 1. */
1.34057 ++ BFD_RELOC_390_PLT16DBL,
1.34058 ++
1.34059 ++/* PC relative 32 bit shifted by 1. */
1.34060 ++ BFD_RELOC_390_PC32DBL,
1.34061 ++
1.34062 ++/* 32 bit PC rel. PLT shifted by 1. */
1.34063 ++ BFD_RELOC_390_PLT32DBL,
1.34064 ++
1.34065 ++/* 32 bit PC rel. GOT shifted by 1. */
1.34066 ++ BFD_RELOC_390_GOTPCDBL,
1.34067 ++
1.34068 ++/* 64 bit GOT offset. */
1.34069 ++ BFD_RELOC_390_GOT64,
1.34070 ++
1.34071 ++/* 64 bit PC relative PLT address. */
1.34072 ++ BFD_RELOC_390_PLT64,
1.34073 ++
1.34074 ++/* 32 bit rel. offset to GOT entry. */
1.34075 ++ BFD_RELOC_390_GOTENT,
1.34076 ++
1.34077 ++/* 64 bit offset to GOT. */
1.34078 ++ BFD_RELOC_390_GOTOFF64,
1.34079 ++
1.34080 ++/* 12-bit offset to symbol-entry within GOT, with PLT handling. */
1.34081 ++ BFD_RELOC_390_GOTPLT12,
1.34082 ++
1.34083 ++/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
1.34084 ++ BFD_RELOC_390_GOTPLT16,
1.34085 ++
1.34086 ++/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
1.34087 ++ BFD_RELOC_390_GOTPLT32,
1.34088 ++
1.34089 ++/* 64-bit offset to symbol-entry within GOT, with PLT handling. */
1.34090 ++ BFD_RELOC_390_GOTPLT64,
1.34091 ++
1.34092 ++/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */
1.34093 ++ BFD_RELOC_390_GOTPLTENT,
1.34094 ++
1.34095 ++/* 16-bit rel. offset from the GOT to a PLT entry. */
1.34096 ++ BFD_RELOC_390_PLTOFF16,
1.34097 ++
1.34098 ++/* 32-bit rel. offset from the GOT to a PLT entry. */
1.34099 ++ BFD_RELOC_390_PLTOFF32,
1.34100 ++
1.34101 ++/* 64-bit rel. offset from the GOT to a PLT entry. */
1.34102 ++ BFD_RELOC_390_PLTOFF64,
1.34103 ++
1.34104 ++/* s390 tls relocations. */
1.34105 ++ BFD_RELOC_390_TLS_LOAD,
1.34106 ++ BFD_RELOC_390_TLS_GDCALL,
1.34107 ++ BFD_RELOC_390_TLS_LDCALL,
1.34108 ++ BFD_RELOC_390_TLS_GD32,
1.34109 ++ BFD_RELOC_390_TLS_GD64,
1.34110 ++ BFD_RELOC_390_TLS_GOTIE12,
1.34111 ++ BFD_RELOC_390_TLS_GOTIE32,
1.34112 ++ BFD_RELOC_390_TLS_GOTIE64,
1.34113 ++ BFD_RELOC_390_TLS_LDM32,
1.34114 ++ BFD_RELOC_390_TLS_LDM64,
1.34115 ++ BFD_RELOC_390_TLS_IE32,
1.34116 ++ BFD_RELOC_390_TLS_IE64,
1.34117 ++ BFD_RELOC_390_TLS_IEENT,
1.34118 ++ BFD_RELOC_390_TLS_LE32,
1.34119 ++ BFD_RELOC_390_TLS_LE64,
1.34120 ++ BFD_RELOC_390_TLS_LDO32,
1.34121 ++ BFD_RELOC_390_TLS_LDO64,
1.34122 ++ BFD_RELOC_390_TLS_DTPMOD,
1.34123 ++ BFD_RELOC_390_TLS_DTPOFF,
1.34124 ++ BFD_RELOC_390_TLS_TPOFF,
1.34125 ++
1.34126 ++/* Long displacement extension. */
1.34127 ++ BFD_RELOC_390_20,
1.34128 ++ BFD_RELOC_390_GOT20,
1.34129 ++ BFD_RELOC_390_GOTPLT20,
1.34130 ++ BFD_RELOC_390_TLS_GOTIE20,
1.34131 ++
1.34132 ++/* Score relocations */
1.34133 ++ BFD_RELOC_SCORE_DUMMY1,
1.34134 ++
1.34135 ++/* Low 16 bit for load/store */
1.34136 ++ BFD_RELOC_SCORE_GPREL15,
1.34137 ++
1.34138 ++/* This is a 24-bit reloc with the right 1 bit assumed to be 0 */
1.34139 ++ BFD_RELOC_SCORE_DUMMY2,
1.34140 ++ BFD_RELOC_SCORE_JMP,
1.34141 ++
1.34142 ++/* This is a 19-bit reloc with the right 1 bit assumed to be 0 */
1.34143 ++ BFD_RELOC_SCORE_BRANCH,
1.34144 ++
1.34145 ++/* This is a 11-bit reloc with the right 1 bit assumed to be 0 */
1.34146 ++ BFD_RELOC_SCORE16_JMP,
1.34147 ++
1.34148 ++/* This is a 8-bit reloc with the right 1 bit assumed to be 0 */
1.34149 ++ BFD_RELOC_SCORE16_BRANCH,
1.34150 ++
1.34151 ++/* Undocumented Score relocs */
1.34152 ++ BFD_RELOC_SCORE_GOT15,
1.34153 ++ BFD_RELOC_SCORE_GOT_LO16,
1.34154 ++ BFD_RELOC_SCORE_CALL15,
1.34155 ++ BFD_RELOC_SCORE_DUMMY_HI16,
1.34156 ++
1.34157 ++/* Scenix IP2K - 9-bit register number / data address */
1.34158 ++ BFD_RELOC_IP2K_FR9,
1.34159 ++
1.34160 ++/* Scenix IP2K - 4-bit register/data bank number */
1.34161 ++ BFD_RELOC_IP2K_BANK,
1.34162 ++
1.34163 ++/* Scenix IP2K - low 13 bits of instruction word address */
1.34164 ++ BFD_RELOC_IP2K_ADDR16CJP,
1.34165 ++
1.34166 ++/* Scenix IP2K - high 3 bits of instruction word address */
1.34167 ++ BFD_RELOC_IP2K_PAGE3,
1.34168 ++
1.34169 ++/* Scenix IP2K - ext/low/high 8 bits of data address */
1.34170 ++ BFD_RELOC_IP2K_LO8DATA,
1.34171 ++ BFD_RELOC_IP2K_HI8DATA,
1.34172 ++ BFD_RELOC_IP2K_EX8DATA,
1.34173 ++
1.34174 ++/* Scenix IP2K - low/high 8 bits of instruction word address */
1.34175 ++ BFD_RELOC_IP2K_LO8INSN,
1.34176 ++ BFD_RELOC_IP2K_HI8INSN,
1.34177 ++
1.34178 ++/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */
1.34179 ++ BFD_RELOC_IP2K_PC_SKIP,
1.34180 ++
1.34181 ++/* Scenix IP2K - 16 bit word address in text section. */
1.34182 ++ BFD_RELOC_IP2K_TEXT,
1.34183 ++
1.34184 ++/* Scenix IP2K - 7-bit sp or dp offset */
1.34185 ++ BFD_RELOC_IP2K_FR_OFFSET,
1.34186 ++
1.34187 ++/* Scenix VPE4K coprocessor - data/insn-space addressing */
1.34188 ++ BFD_RELOC_VPE4KMATH_DATA,
1.34189 ++ BFD_RELOC_VPE4KMATH_INSN,
1.34190 ++
1.34191 ++/* These two relocations are used by the linker to determine which of
1.34192 ++the entries in a C++ virtual function table are actually used. When
1.34193 ++the --gc-sections option is given, the linker will zero out the entries
1.34194 ++that are not used, so that the code for those functions need not be
1.34195 ++included in the output.
1.34196 ++
1.34197 ++VTABLE_INHERIT is a zero-space relocation used to describe to the
1.34198 ++linker the inheritance tree of a C++ virtual function table. The
1.34199 ++relocation's symbol should be the parent class' vtable, and the
1.34200 ++relocation should be located at the child vtable.
1.34201 ++
1.34202 ++VTABLE_ENTRY is a zero-space relocation that describes the use of a
1.34203 ++virtual function table entry. The reloc's symbol should refer to the
1.34204 ++table of the class mentioned in the code. Off of that base, an offset
1.34205 ++describes the entry that is being used. For Rela hosts, this offset
1.34206 ++is stored in the reloc's addend. For Rel hosts, we are forced to put
1.34207 ++this offset in the reloc's section offset. */
1.34208 ++ BFD_RELOC_VTABLE_INHERIT,
1.34209 ++ BFD_RELOC_VTABLE_ENTRY,
1.34210 ++
1.34211 ++/* Intel IA64 Relocations. */
1.34212 ++ BFD_RELOC_IA64_IMM14,
1.34213 ++ BFD_RELOC_IA64_IMM22,
1.34214 ++ BFD_RELOC_IA64_IMM64,
1.34215 ++ BFD_RELOC_IA64_DIR32MSB,
1.34216 ++ BFD_RELOC_IA64_DIR32LSB,
1.34217 ++ BFD_RELOC_IA64_DIR64MSB,
1.34218 ++ BFD_RELOC_IA64_DIR64LSB,
1.34219 ++ BFD_RELOC_IA64_GPREL22,
1.34220 ++ BFD_RELOC_IA64_GPREL64I,
1.34221 ++ BFD_RELOC_IA64_GPREL32MSB,
1.34222 ++ BFD_RELOC_IA64_GPREL32LSB,
1.34223 ++ BFD_RELOC_IA64_GPREL64MSB,
1.34224 ++ BFD_RELOC_IA64_GPREL64LSB,
1.34225 ++ BFD_RELOC_IA64_LTOFF22,
1.34226 ++ BFD_RELOC_IA64_LTOFF64I,
1.34227 ++ BFD_RELOC_IA64_PLTOFF22,
1.34228 ++ BFD_RELOC_IA64_PLTOFF64I,
1.34229 ++ BFD_RELOC_IA64_PLTOFF64MSB,
1.34230 ++ BFD_RELOC_IA64_PLTOFF64LSB,
1.34231 ++ BFD_RELOC_IA64_FPTR64I,
1.34232 ++ BFD_RELOC_IA64_FPTR32MSB,
1.34233 ++ BFD_RELOC_IA64_FPTR32LSB,
1.34234 ++ BFD_RELOC_IA64_FPTR64MSB,
1.34235 ++ BFD_RELOC_IA64_FPTR64LSB,
1.34236 ++ BFD_RELOC_IA64_PCREL21B,
1.34237 ++ BFD_RELOC_IA64_PCREL21BI,
1.34238 ++ BFD_RELOC_IA64_PCREL21M,
1.34239 ++ BFD_RELOC_IA64_PCREL21F,
1.34240 ++ BFD_RELOC_IA64_PCREL22,
1.34241 ++ BFD_RELOC_IA64_PCREL60B,
1.34242 ++ BFD_RELOC_IA64_PCREL64I,
1.34243 ++ BFD_RELOC_IA64_PCREL32MSB,
1.34244 ++ BFD_RELOC_IA64_PCREL32LSB,
1.34245 ++ BFD_RELOC_IA64_PCREL64MSB,
1.34246 ++ BFD_RELOC_IA64_PCREL64LSB,
1.34247 ++ BFD_RELOC_IA64_LTOFF_FPTR22,
1.34248 ++ BFD_RELOC_IA64_LTOFF_FPTR64I,
1.34249 ++ BFD_RELOC_IA64_LTOFF_FPTR32MSB,
1.34250 ++ BFD_RELOC_IA64_LTOFF_FPTR32LSB,
1.34251 ++ BFD_RELOC_IA64_LTOFF_FPTR64MSB,
1.34252 ++ BFD_RELOC_IA64_LTOFF_FPTR64LSB,
1.34253 ++ BFD_RELOC_IA64_SEGREL32MSB,
1.34254 ++ BFD_RELOC_IA64_SEGREL32LSB,
1.34255 ++ BFD_RELOC_IA64_SEGREL64MSB,
1.34256 ++ BFD_RELOC_IA64_SEGREL64LSB,
1.34257 ++ BFD_RELOC_IA64_SECREL32MSB,
1.34258 ++ BFD_RELOC_IA64_SECREL32LSB,
1.34259 ++ BFD_RELOC_IA64_SECREL64MSB,
1.34260 ++ BFD_RELOC_IA64_SECREL64LSB,
1.34261 ++ BFD_RELOC_IA64_REL32MSB,
1.34262 ++ BFD_RELOC_IA64_REL32LSB,
1.34263 ++ BFD_RELOC_IA64_REL64MSB,
1.34264 ++ BFD_RELOC_IA64_REL64LSB,
1.34265 ++ BFD_RELOC_IA64_LTV32MSB,
1.34266 ++ BFD_RELOC_IA64_LTV32LSB,
1.34267 ++ BFD_RELOC_IA64_LTV64MSB,
1.34268 ++ BFD_RELOC_IA64_LTV64LSB,
1.34269 ++ BFD_RELOC_IA64_IPLTMSB,
1.34270 ++ BFD_RELOC_IA64_IPLTLSB,
1.34271 ++ BFD_RELOC_IA64_COPY,
1.34272 ++ BFD_RELOC_IA64_LTOFF22X,
1.34273 ++ BFD_RELOC_IA64_LDXMOV,
1.34274 ++ BFD_RELOC_IA64_TPREL14,
1.34275 ++ BFD_RELOC_IA64_TPREL22,
1.34276 ++ BFD_RELOC_IA64_TPREL64I,
1.34277 ++ BFD_RELOC_IA64_TPREL64MSB,
1.34278 ++ BFD_RELOC_IA64_TPREL64LSB,
1.34279 ++ BFD_RELOC_IA64_LTOFF_TPREL22,
1.34280 ++ BFD_RELOC_IA64_DTPMOD64MSB,
1.34281 ++ BFD_RELOC_IA64_DTPMOD64LSB,
1.34282 ++ BFD_RELOC_IA64_LTOFF_DTPMOD22,
1.34283 ++ BFD_RELOC_IA64_DTPREL14,
1.34284 ++ BFD_RELOC_IA64_DTPREL22,
1.34285 ++ BFD_RELOC_IA64_DTPREL64I,
1.34286 ++ BFD_RELOC_IA64_DTPREL32MSB,
1.34287 ++ BFD_RELOC_IA64_DTPREL32LSB,
1.34288 ++ BFD_RELOC_IA64_DTPREL64MSB,
1.34289 ++ BFD_RELOC_IA64_DTPREL64LSB,
1.34290 ++ BFD_RELOC_IA64_LTOFF_DTPREL22,
1.34291 ++
1.34292 ++/* Motorola 68HC11 reloc.
1.34293 ++This is the 8 bit high part of an absolute address. */
1.34294 ++ BFD_RELOC_M68HC11_HI8,
1.34295 ++
1.34296 ++/* Motorola 68HC11 reloc.
1.34297 ++This is the 8 bit low part of an absolute address. */
1.34298 ++ BFD_RELOC_M68HC11_LO8,
1.34299 ++
1.34300 ++/* Motorola 68HC11 reloc.
1.34301 ++This is the 3 bit of a value. */
1.34302 ++ BFD_RELOC_M68HC11_3B,
1.34303 ++
1.34304 ++/* Motorola 68HC11 reloc.
1.34305 ++This reloc marks the beginning of a jump/call instruction.
1.34306 ++It is used for linker relaxation to correctly identify beginning
1.34307 ++of instruction and change some branches to use PC-relative
1.34308 ++addressing mode. */
1.34309 ++ BFD_RELOC_M68HC11_RL_JUMP,
1.34310 ++
1.34311 ++/* Motorola 68HC11 reloc.
1.34312 ++This reloc marks a group of several instructions that gcc generates
1.34313 ++and for which the linker relaxation pass can modify and/or remove
1.34314 ++some of them. */
1.34315 ++ BFD_RELOC_M68HC11_RL_GROUP,
1.34316 ++
1.34317 ++/* Motorola 68HC11 reloc.
1.34318 ++This is the 16-bit lower part of an address. It is used for 'call'
1.34319 ++instruction to specify the symbol address without any special
1.34320 ++transformation (due to memory bank window). */
1.34321 ++ BFD_RELOC_M68HC11_LO16,
1.34322 ++
1.34323 ++/* Motorola 68HC11 reloc.
1.34324 ++This is a 8-bit reloc that specifies the page number of an address.
1.34325 ++It is used by 'call' instruction to specify the page number of
1.34326 ++the symbol. */
1.34327 ++ BFD_RELOC_M68HC11_PAGE,
1.34328 ++
1.34329 ++/* Motorola 68HC11 reloc.
1.34330 ++This is a 24-bit reloc that represents the address with a 16-bit
1.34331 ++value and a 8-bit page number. The symbol address is transformed
1.34332 ++to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */
1.34333 ++ BFD_RELOC_M68HC11_24,
1.34334 ++
1.34335 ++/* Motorola 68HC12 reloc.
1.34336 ++This is the 5 bits of a value. */
1.34337 ++ BFD_RELOC_M68HC12_5B,
1.34338 ++
1.34339 ++/* NS CR16C Relocations. */
1.34340 ++ BFD_RELOC_16C_NUM08,
1.34341 ++ BFD_RELOC_16C_NUM08_C,
1.34342 ++ BFD_RELOC_16C_NUM16,
1.34343 ++ BFD_RELOC_16C_NUM16_C,
1.34344 ++ BFD_RELOC_16C_NUM32,
1.34345 ++ BFD_RELOC_16C_NUM32_C,
1.34346 ++ BFD_RELOC_16C_DISP04,
1.34347 ++ BFD_RELOC_16C_DISP04_C,
1.34348 ++ BFD_RELOC_16C_DISP08,
1.34349 ++ BFD_RELOC_16C_DISP08_C,
1.34350 ++ BFD_RELOC_16C_DISP16,
1.34351 ++ BFD_RELOC_16C_DISP16_C,
1.34352 ++ BFD_RELOC_16C_DISP24,
1.34353 ++ BFD_RELOC_16C_DISP24_C,
1.34354 ++ BFD_RELOC_16C_DISP24a,
1.34355 ++ BFD_RELOC_16C_DISP24a_C,
1.34356 ++ BFD_RELOC_16C_REG04,
1.34357 ++ BFD_RELOC_16C_REG04_C,
1.34358 ++ BFD_RELOC_16C_REG04a,
1.34359 ++ BFD_RELOC_16C_REG04a_C,
1.34360 ++ BFD_RELOC_16C_REG14,
1.34361 ++ BFD_RELOC_16C_REG14_C,
1.34362 ++ BFD_RELOC_16C_REG16,
1.34363 ++ BFD_RELOC_16C_REG16_C,
1.34364 ++ BFD_RELOC_16C_REG20,
1.34365 ++ BFD_RELOC_16C_REG20_C,
1.34366 ++ BFD_RELOC_16C_ABS20,
1.34367 ++ BFD_RELOC_16C_ABS20_C,
1.34368 ++ BFD_RELOC_16C_ABS24,
1.34369 ++ BFD_RELOC_16C_ABS24_C,
1.34370 ++ BFD_RELOC_16C_IMM04,
1.34371 ++ BFD_RELOC_16C_IMM04_C,
1.34372 ++ BFD_RELOC_16C_IMM16,
1.34373 ++ BFD_RELOC_16C_IMM16_C,
1.34374 ++ BFD_RELOC_16C_IMM20,
1.34375 ++ BFD_RELOC_16C_IMM20_C,
1.34376 ++ BFD_RELOC_16C_IMM24,
1.34377 ++ BFD_RELOC_16C_IMM24_C,
1.34378 ++ BFD_RELOC_16C_IMM32,
1.34379 ++ BFD_RELOC_16C_IMM32_C,
1.34380 ++
1.34381 ++/* NS CR16 Relocations. */
1.34382 ++ BFD_RELOC_CR16_NUM8,
1.34383 ++ BFD_RELOC_CR16_NUM16,
1.34384 ++ BFD_RELOC_CR16_NUM32,
1.34385 ++ BFD_RELOC_CR16_NUM32a,
1.34386 ++ BFD_RELOC_CR16_REGREL0,
1.34387 ++ BFD_RELOC_CR16_REGREL4,
1.34388 ++ BFD_RELOC_CR16_REGREL4a,
1.34389 ++ BFD_RELOC_CR16_REGREL14,
1.34390 ++ BFD_RELOC_CR16_REGREL14a,
1.34391 ++ BFD_RELOC_CR16_REGREL16,
1.34392 ++ BFD_RELOC_CR16_REGREL20,
1.34393 ++ BFD_RELOC_CR16_REGREL20a,
1.34394 ++ BFD_RELOC_CR16_ABS20,
1.34395 ++ BFD_RELOC_CR16_ABS24,
1.34396 ++ BFD_RELOC_CR16_IMM4,
1.34397 ++ BFD_RELOC_CR16_IMM8,
1.34398 ++ BFD_RELOC_CR16_IMM16,
1.34399 ++ BFD_RELOC_CR16_IMM20,
1.34400 ++ BFD_RELOC_CR16_IMM24,
1.34401 ++ BFD_RELOC_CR16_IMM32,
1.34402 ++ BFD_RELOC_CR16_IMM32a,
1.34403 ++ BFD_RELOC_CR16_DISP4,
1.34404 ++ BFD_RELOC_CR16_DISP8,
1.34405 ++ BFD_RELOC_CR16_DISP16,
1.34406 ++ BFD_RELOC_CR16_DISP20,
1.34407 ++ BFD_RELOC_CR16_DISP24,
1.34408 ++ BFD_RELOC_CR16_DISP24a,
1.34409 ++
1.34410 ++/* NS CRX Relocations. */
1.34411 ++ BFD_RELOC_CRX_REL4,
1.34412 ++ BFD_RELOC_CRX_REL8,
1.34413 ++ BFD_RELOC_CRX_REL8_CMP,
1.34414 ++ BFD_RELOC_CRX_REL16,
1.34415 ++ BFD_RELOC_CRX_REL24,
1.34416 ++ BFD_RELOC_CRX_REL32,
1.34417 ++ BFD_RELOC_CRX_REGREL12,
1.34418 ++ BFD_RELOC_CRX_REGREL22,
1.34419 ++ BFD_RELOC_CRX_REGREL28,
1.34420 ++ BFD_RELOC_CRX_REGREL32,
1.34421 ++ BFD_RELOC_CRX_ABS16,
1.34422 ++ BFD_RELOC_CRX_ABS32,
1.34423 ++ BFD_RELOC_CRX_NUM8,
1.34424 ++ BFD_RELOC_CRX_NUM16,
1.34425 ++ BFD_RELOC_CRX_NUM32,
1.34426 ++ BFD_RELOC_CRX_IMM16,
1.34427 ++ BFD_RELOC_CRX_IMM32,
1.34428 ++ BFD_RELOC_CRX_SWITCH8,
1.34429 ++ BFD_RELOC_CRX_SWITCH16,
1.34430 ++ BFD_RELOC_CRX_SWITCH32,
1.34431 ++
1.34432 ++/* These relocs are only used within the CRIS assembler. They are not
1.34433 ++(at present) written to any object files. */
1.34434 ++ BFD_RELOC_CRIS_BDISP8,
1.34435 ++ BFD_RELOC_CRIS_UNSIGNED_5,
1.34436 ++ BFD_RELOC_CRIS_SIGNED_6,
1.34437 ++ BFD_RELOC_CRIS_UNSIGNED_6,
1.34438 ++ BFD_RELOC_CRIS_SIGNED_8,
1.34439 ++ BFD_RELOC_CRIS_UNSIGNED_8,
1.34440 ++ BFD_RELOC_CRIS_SIGNED_16,
1.34441 ++ BFD_RELOC_CRIS_UNSIGNED_16,
1.34442 ++ BFD_RELOC_CRIS_LAPCQ_OFFSET,
1.34443 ++ BFD_RELOC_CRIS_UNSIGNED_4,
1.34444 ++
1.34445 ++/* Relocs used in ELF shared libraries for CRIS. */
1.34446 ++ BFD_RELOC_CRIS_COPY,
1.34447 ++ BFD_RELOC_CRIS_GLOB_DAT,
1.34448 ++ BFD_RELOC_CRIS_JUMP_SLOT,
1.34449 ++ BFD_RELOC_CRIS_RELATIVE,
1.34450 ++
1.34451 ++/* 32-bit offset to symbol-entry within GOT. */
1.34452 ++ BFD_RELOC_CRIS_32_GOT,
1.34453 ++
1.34454 ++/* 16-bit offset to symbol-entry within GOT. */
1.34455 ++ BFD_RELOC_CRIS_16_GOT,
1.34456 ++
1.34457 ++/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
1.34458 ++ BFD_RELOC_CRIS_32_GOTPLT,
1.34459 ++
1.34460 ++/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
1.34461 ++ BFD_RELOC_CRIS_16_GOTPLT,
1.34462 ++
1.34463 ++/* 32-bit offset to symbol, relative to GOT. */
1.34464 ++ BFD_RELOC_CRIS_32_GOTREL,
1.34465 ++
1.34466 ++/* 32-bit offset to symbol with PLT entry, relative to GOT. */
1.34467 ++ BFD_RELOC_CRIS_32_PLT_GOTREL,
1.34468 ++
1.34469 ++/* 32-bit offset to symbol with PLT entry, relative to this relocation. */
1.34470 ++ BFD_RELOC_CRIS_32_PLT_PCREL,
1.34471 ++
1.34472 ++/* Intel i860 Relocations. */
1.34473 ++ BFD_RELOC_860_COPY,
1.34474 ++ BFD_RELOC_860_GLOB_DAT,
1.34475 ++ BFD_RELOC_860_JUMP_SLOT,
1.34476 ++ BFD_RELOC_860_RELATIVE,
1.34477 ++ BFD_RELOC_860_PC26,
1.34478 ++ BFD_RELOC_860_PLT26,
1.34479 ++ BFD_RELOC_860_PC16,
1.34480 ++ BFD_RELOC_860_LOW0,
1.34481 ++ BFD_RELOC_860_SPLIT0,
1.34482 ++ BFD_RELOC_860_LOW1,
1.34483 ++ BFD_RELOC_860_SPLIT1,
1.34484 ++ BFD_RELOC_860_LOW2,
1.34485 ++ BFD_RELOC_860_SPLIT2,
1.34486 ++ BFD_RELOC_860_LOW3,
1.34487 ++ BFD_RELOC_860_LOGOT0,
1.34488 ++ BFD_RELOC_860_SPGOT0,
1.34489 ++ BFD_RELOC_860_LOGOT1,
1.34490 ++ BFD_RELOC_860_SPGOT1,
1.34491 ++ BFD_RELOC_860_LOGOTOFF0,
1.34492 ++ BFD_RELOC_860_SPGOTOFF0,
1.34493 ++ BFD_RELOC_860_LOGOTOFF1,
1.34494 ++ BFD_RELOC_860_SPGOTOFF1,
1.34495 ++ BFD_RELOC_860_LOGOTOFF2,
1.34496 ++ BFD_RELOC_860_LOGOTOFF3,
1.34497 ++ BFD_RELOC_860_LOPC,
1.34498 ++ BFD_RELOC_860_HIGHADJ,
1.34499 ++ BFD_RELOC_860_HAGOT,
1.34500 ++ BFD_RELOC_860_HAGOTOFF,
1.34501 ++ BFD_RELOC_860_HAPC,
1.34502 ++ BFD_RELOC_860_HIGH,
1.34503 ++ BFD_RELOC_860_HIGOT,
1.34504 ++ BFD_RELOC_860_HIGOTOFF,
1.34505 ++
1.34506 ++/* OpenRISC Relocations. */
1.34507 ++ BFD_RELOC_OPENRISC_ABS_26,
1.34508 ++ BFD_RELOC_OPENRISC_REL_26,
1.34509 ++
1.34510 ++/* H8 elf Relocations. */
1.34511 ++ BFD_RELOC_H8_DIR16A8,
1.34512 ++ BFD_RELOC_H8_DIR16R8,
1.34513 ++ BFD_RELOC_H8_DIR24A8,
1.34514 ++ BFD_RELOC_H8_DIR24R8,
1.34515 ++ BFD_RELOC_H8_DIR32A16,
1.34516 ++
1.34517 ++/* Sony Xstormy16 Relocations. */
1.34518 ++ BFD_RELOC_XSTORMY16_REL_12,
1.34519 ++ BFD_RELOC_XSTORMY16_12,
1.34520 ++ BFD_RELOC_XSTORMY16_24,
1.34521 ++ BFD_RELOC_XSTORMY16_FPTR16,
1.34522 ++
1.34523 ++/* Self-describing complex relocations. */
1.34524 ++ BFD_RELOC_RELC,
1.34525 ++
1.34526 ++
1.34527 ++/* Infineon Relocations. */
1.34528 ++ BFD_RELOC_XC16X_PAG,
1.34529 ++ BFD_RELOC_XC16X_POF,
1.34530 ++ BFD_RELOC_XC16X_SEG,
1.34531 ++ BFD_RELOC_XC16X_SOF,
1.34532 ++
1.34533 ++/* Relocations used by VAX ELF. */
1.34534 ++ BFD_RELOC_VAX_GLOB_DAT,
1.34535 ++ BFD_RELOC_VAX_JMP_SLOT,
1.34536 ++ BFD_RELOC_VAX_RELATIVE,
1.34537 ++
1.34538 ++/* Morpho MT - 16 bit immediate relocation. */
1.34539 ++ BFD_RELOC_MT_PC16,
1.34540 ++
1.34541 ++/* Morpho MT - Hi 16 bits of an address. */
1.34542 ++ BFD_RELOC_MT_HI16,
1.34543 ++
1.34544 ++/* Morpho MT - Low 16 bits of an address. */
1.34545 ++ BFD_RELOC_MT_LO16,
1.34546 ++
1.34547 ++/* Morpho MT - Used to tell the linker which vtable entries are used. */
1.34548 ++ BFD_RELOC_MT_GNU_VTINHERIT,
1.34549 ++
1.34550 ++/* Morpho MT - Used to tell the linker which vtable entries are used. */
1.34551 ++ BFD_RELOC_MT_GNU_VTENTRY,
1.34552 ++
1.34553 ++/* Morpho MT - 8 bit immediate relocation. */
1.34554 ++ BFD_RELOC_MT_PCINSN8,
1.34555 ++
1.34556 ++/* msp430 specific relocation codes */
1.34557 ++ BFD_RELOC_MSP430_10_PCREL,
1.34558 ++ BFD_RELOC_MSP430_16_PCREL,
1.34559 ++ BFD_RELOC_MSP430_16,
1.34560 ++ BFD_RELOC_MSP430_16_PCREL_BYTE,
1.34561 ++ BFD_RELOC_MSP430_16_BYTE,
1.34562 ++ BFD_RELOC_MSP430_2X_PCREL,
1.34563 ++ BFD_RELOC_MSP430_RL_PCREL,
1.34564 ++
1.34565 ++/* IQ2000 Relocations. */
1.34566 ++ BFD_RELOC_IQ2000_OFFSET_16,
1.34567 ++ BFD_RELOC_IQ2000_OFFSET_21,
1.34568 ++ BFD_RELOC_IQ2000_UHI16,
1.34569 ++
1.34570 ++/* Special Xtensa relocation used only by PLT entries in ELF shared
1.34571 ++objects to indicate that the runtime linker should set the value
1.34572 ++to one of its own internal functions or data structures. */
1.34573 ++ BFD_RELOC_XTENSA_RTLD,
1.34574 ++
1.34575 ++/* Xtensa relocations for ELF shared objects. */
1.34576 ++ BFD_RELOC_XTENSA_GLOB_DAT,
1.34577 ++ BFD_RELOC_XTENSA_JMP_SLOT,
1.34578 ++ BFD_RELOC_XTENSA_RELATIVE,
1.34579 ++
1.34580 ++/* Xtensa relocation used in ELF object files for symbols that may require
1.34581 ++PLT entries. Otherwise, this is just a generic 32-bit relocation. */
1.34582 ++ BFD_RELOC_XTENSA_PLT,
1.34583 ++
1.34584 ++/* Xtensa relocations to mark the difference of two local symbols.
1.34585 ++These are only needed to support linker relaxation and can be ignored
1.34586 ++when not relaxing. The field is set to the value of the difference
1.34587 ++assuming no relaxation. The relocation encodes the position of the
1.34588 ++first symbol so the linker can determine whether to adjust the field
1.34589 ++value. */
1.34590 ++ BFD_RELOC_XTENSA_DIFF8,
1.34591 ++ BFD_RELOC_XTENSA_DIFF16,
1.34592 ++ BFD_RELOC_XTENSA_DIFF32,
1.34593 ++
1.34594 ++/* Generic Xtensa relocations for instruction operands. Only the slot
1.34595 ++number is encoded in the relocation. The relocation applies to the
1.34596 ++last PC-relative immediate operand, or if there are no PC-relative
1.34597 ++immediates, to the last immediate operand. */
1.34598 ++ BFD_RELOC_XTENSA_SLOT0_OP,
1.34599 ++ BFD_RELOC_XTENSA_SLOT1_OP,
1.34600 ++ BFD_RELOC_XTENSA_SLOT2_OP,
1.34601 ++ BFD_RELOC_XTENSA_SLOT3_OP,
1.34602 ++ BFD_RELOC_XTENSA_SLOT4_OP,
1.34603 ++ BFD_RELOC_XTENSA_SLOT5_OP,
1.34604 ++ BFD_RELOC_XTENSA_SLOT6_OP,
1.34605 ++ BFD_RELOC_XTENSA_SLOT7_OP,
1.34606 ++ BFD_RELOC_XTENSA_SLOT8_OP,
1.34607 ++ BFD_RELOC_XTENSA_SLOT9_OP,
1.34608 ++ BFD_RELOC_XTENSA_SLOT10_OP,
1.34609 ++ BFD_RELOC_XTENSA_SLOT11_OP,
1.34610 ++ BFD_RELOC_XTENSA_SLOT12_OP,
1.34611 ++ BFD_RELOC_XTENSA_SLOT13_OP,
1.34612 ++ BFD_RELOC_XTENSA_SLOT14_OP,
1.34613 ++
1.34614 ++/* Alternate Xtensa relocations. Only the slot is encoded in the
1.34615 ++relocation. The meaning of these relocations is opcode-specific. */
1.34616 ++ BFD_RELOC_XTENSA_SLOT0_ALT,
1.34617 ++ BFD_RELOC_XTENSA_SLOT1_ALT,
1.34618 ++ BFD_RELOC_XTENSA_SLOT2_ALT,
1.34619 ++ BFD_RELOC_XTENSA_SLOT3_ALT,
1.34620 ++ BFD_RELOC_XTENSA_SLOT4_ALT,
1.34621 ++ BFD_RELOC_XTENSA_SLOT5_ALT,
1.34622 ++ BFD_RELOC_XTENSA_SLOT6_ALT,
1.34623 ++ BFD_RELOC_XTENSA_SLOT7_ALT,
1.34624 ++ BFD_RELOC_XTENSA_SLOT8_ALT,
1.34625 ++ BFD_RELOC_XTENSA_SLOT9_ALT,
1.34626 ++ BFD_RELOC_XTENSA_SLOT10_ALT,
1.34627 ++ BFD_RELOC_XTENSA_SLOT11_ALT,
1.34628 ++ BFD_RELOC_XTENSA_SLOT12_ALT,
1.34629 ++ BFD_RELOC_XTENSA_SLOT13_ALT,
1.34630 ++ BFD_RELOC_XTENSA_SLOT14_ALT,
1.34631 ++
1.34632 ++/* Xtensa relocations for backward compatibility. These have all been
1.34633 ++replaced by BFD_RELOC_XTENSA_SLOT0_OP. */
1.34634 ++ BFD_RELOC_XTENSA_OP0,
1.34635 ++ BFD_RELOC_XTENSA_OP1,
1.34636 ++ BFD_RELOC_XTENSA_OP2,
1.34637 ++
1.34638 ++/* Xtensa relocation to mark that the assembler expanded the
1.34639 ++instructions from an original target. The expansion size is
1.34640 ++encoded in the reloc size. */
1.34641 ++ BFD_RELOC_XTENSA_ASM_EXPAND,
1.34642 ++
1.34643 ++/* Xtensa relocation to mark that the linker should simplify
1.34644 ++assembler-expanded instructions. This is commonly used
1.34645 ++internally by the linker after analysis of a
1.34646 ++BFD_RELOC_XTENSA_ASM_EXPAND. */
1.34647 ++ BFD_RELOC_XTENSA_ASM_SIMPLIFY,
1.34648 ++
1.34649 ++/* 8 bit signed offset in (ix+d) or (iy+d). */
1.34650 ++ BFD_RELOC_Z80_DISP8,
1.34651 ++
1.34652 ++/* DJNZ offset. */
1.34653 ++ BFD_RELOC_Z8K_DISP7,
1.34654 ++
1.34655 ++/* CALR offset. */
1.34656 ++ BFD_RELOC_Z8K_CALLR,
1.34657 ++
1.34658 ++/* 4 bit value. */
1.34659 ++ BFD_RELOC_Z8K_IMM4L,
1.34660 ++ BFD_RELOC_UNUSED };
1.34661 ++typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
1.34662 ++reloc_howto_type *bfd_reloc_type_lookup
1.34663 ++ (bfd *abfd, bfd_reloc_code_real_type code);
1.34664 ++reloc_howto_type *bfd_reloc_name_lookup
1.34665 ++ (bfd *abfd, const char *reloc_name);
1.34666 ++
1.34667 ++const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
1.34668 ++
1.34669 ++/* Extracted from syms.c. */
1.34670 ++
1.34671 ++typedef struct bfd_symbol
1.34672 ++{
1.34673 ++ /* A pointer to the BFD which owns the symbol. This information
1.34674 ++ is necessary so that a back end can work out what additional
1.34675 ++ information (invisible to the application writer) is carried
1.34676 ++ with the symbol.
1.34677 ++
1.34678 ++ This field is *almost* redundant, since you can use section->owner
1.34679 ++ instead, except that some symbols point to the global sections
1.34680 ++ bfd_{abs,com,und}_section. This could be fixed by making
1.34681 ++ these globals be per-bfd (or per-target-flavor). FIXME. */
1.34682 ++ struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
1.34683 ++
1.34684 ++ /* The text of the symbol. The name is left alone, and not copied; the
1.34685 ++ application may not alter it. */
1.34686 ++ const char *name;
1.34687 ++
1.34688 ++ /* The value of the symbol. This really should be a union of a
1.34689 ++ numeric value with a pointer, since some flags indicate that
1.34690 ++ a pointer to another symbol is stored here. */
1.34691 ++ symvalue value;
1.34692 ++
1.34693 ++ /* Attributes of a symbol. */
1.34694 ++#define BSF_NO_FLAGS 0x00
1.34695 ++
1.34696 ++ /* The symbol has local scope; <<static>> in <<C>>. The value
1.34697 ++ is the offset into the section of the data. */
1.34698 ++#define BSF_LOCAL 0x01
1.34699 ++
1.34700 ++ /* The symbol has global scope; initialized data in <<C>>. The
1.34701 ++ value is the offset into the section of the data. */
1.34702 ++#define BSF_GLOBAL 0x02
1.34703 ++
1.34704 ++ /* The symbol has global scope and is exported. The value is
1.34705 ++ the offset into the section of the data. */
1.34706 ++#define BSF_EXPORT BSF_GLOBAL /* No real difference. */
1.34707 ++
1.34708 ++ /* A normal C symbol would be one of:
1.34709 ++ <<BSF_LOCAL>>, <<BSF_FORT_COMM>>, <<BSF_UNDEFINED>> or
1.34710 ++ <<BSF_GLOBAL>>. */
1.34711 ++
1.34712 ++ /* The symbol is a debugging record. The value has an arbitrary
1.34713 ++ meaning, unless BSF_DEBUGGING_RELOC is also set. */
1.34714 ++#define BSF_DEBUGGING 0x08
1.34715 ++
1.34716 ++ /* The symbol denotes a function entry point. Used in ELF,
1.34717 ++ perhaps others someday. */
1.34718 ++#define BSF_FUNCTION 0x10
1.34719 ++
1.34720 ++ /* Used by the linker. */
1.34721 ++#define BSF_KEEP 0x20
1.34722 ++#define BSF_KEEP_G 0x40
1.34723 ++
1.34724 ++ /* A weak global symbol, overridable without warnings by
1.34725 ++ a regular global symbol of the same name. */
1.34726 ++#define BSF_WEAK 0x80
1.34727 ++
1.34728 ++ /* This symbol was created to point to a section, e.g. ELF's
1.34729 ++ STT_SECTION symbols. */
1.34730 ++#define BSF_SECTION_SYM 0x100
1.34731 ++
1.34732 ++ /* The symbol used to be a common symbol, but now it is
1.34733 ++ allocated. */
1.34734 ++#define BSF_OLD_COMMON 0x200
1.34735 ++
1.34736 ++ /* The default value for common data. */
1.34737 ++#define BFD_FORT_COMM_DEFAULT_VALUE 0
1.34738 ++
1.34739 ++ /* In some files the type of a symbol sometimes alters its
1.34740 ++ location in an output file - ie in coff a <<ISFCN>> symbol
1.34741 ++ which is also <<C_EXT>> symbol appears where it was
1.34742 ++ declared and not at the end of a section. This bit is set
1.34743 ++ by the target BFD part to convey this information. */
1.34744 ++#define BSF_NOT_AT_END 0x400
1.34745 ++
1.34746 ++ /* Signal that the symbol is the label of constructor section. */
1.34747 ++#define BSF_CONSTRUCTOR 0x800
1.34748 ++
1.34749 ++ /* Signal that the symbol is a warning symbol. The name is a
1.34750 ++ warning. The name of the next symbol is the one to warn about;
1.34751 ++ if a reference is made to a symbol with the same name as the next
1.34752 ++ symbol, a warning is issued by the linker. */
1.34753 ++#define BSF_WARNING 0x1000
1.34754 ++
1.34755 ++ /* Signal that the symbol is indirect. This symbol is an indirect
1.34756 ++ pointer to the symbol with the same name as the next symbol. */
1.34757 ++#define BSF_INDIRECT 0x2000
1.34758 ++
1.34759 ++ /* BSF_FILE marks symbols that contain a file name. This is used
1.34760 ++ for ELF STT_FILE symbols. */
1.34761 ++#define BSF_FILE 0x4000
1.34762 ++
1.34763 ++ /* Symbol is from dynamic linking information. */
1.34764 ++#define BSF_DYNAMIC 0x8000
1.34765 ++
1.34766 ++ /* The symbol denotes a data object. Used in ELF, and perhaps
1.34767 ++ others someday. */
1.34768 ++#define BSF_OBJECT 0x10000
1.34769 ++
1.34770 ++ /* This symbol is a debugging symbol. The value is the offset
1.34771 ++ into the section of the data. BSF_DEBUGGING should be set
1.34772 ++ as well. */
1.34773 ++#define BSF_DEBUGGING_RELOC 0x20000
1.34774 ++
1.34775 ++ /* This symbol is thread local. Used in ELF. */
1.34776 ++#define BSF_THREAD_LOCAL 0x40000
1.34777 ++
1.34778 ++ /* This symbol represents a complex relocation expression,
1.34779 ++ with the expression tree serialized in the symbol name. */
1.34780 ++#define BSF_RELC 0x80000
1.34781 ++
1.34782 ++ /* This symbol represents a signed complex relocation expression,
1.34783 ++ with the expression tree serialized in the symbol name. */
1.34784 ++#define BSF_SRELC 0x100000
1.34785 ++
1.34786 ++ flagword flags;
1.34787 ++
1.34788 ++ /* A pointer to the section to which this symbol is
1.34789 ++ relative. This will always be non NULL, there are special
1.34790 ++ sections for undefined and absolute symbols. */
1.34791 ++ struct bfd_section *section;
1.34792 ++
1.34793 ++ /* Back end special data. */
1.34794 ++ union
1.34795 ++ {
1.34796 ++ void *p;
1.34797 ++ bfd_vma i;
1.34798 ++ }
1.34799 ++ udata;
1.34800 ++}
1.34801 ++asymbol;
1.34802 ++
1.34803 ++#define bfd_get_symtab_upper_bound(abfd) \
1.34804 ++ BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
1.34805 ++
1.34806 ++bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
1.34807 ++
1.34808 ++bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
1.34809 ++
1.34810 ++#define bfd_is_local_label_name(abfd, name) \
1.34811 ++ BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
1.34812 ++
1.34813 ++bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
1.34814 ++
1.34815 ++#define bfd_is_target_special_symbol(abfd, sym) \
1.34816 ++ BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
1.34817 ++
1.34818 ++#define bfd_canonicalize_symtab(abfd, location) \
1.34819 ++ BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
1.34820 ++
1.34821 ++bfd_boolean bfd_set_symtab
1.34822 ++ (bfd *abfd, asymbol **location, unsigned int count);
1.34823 ++
1.34824 ++void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
1.34825 ++
1.34826 ++#define bfd_make_empty_symbol(abfd) \
1.34827 ++ BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
1.34828 ++
1.34829 ++asymbol *_bfd_generic_make_empty_symbol (bfd *);
1.34830 ++
1.34831 ++#define bfd_make_debug_symbol(abfd,ptr,size) \
1.34832 ++ BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
1.34833 ++
1.34834 ++int bfd_decode_symclass (asymbol *symbol);
1.34835 ++
1.34836 ++bfd_boolean bfd_is_undefined_symclass (int symclass);
1.34837 ++
1.34838 ++void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
1.34839 ++
1.34840 ++bfd_boolean bfd_copy_private_symbol_data
1.34841 ++ (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
1.34842 ++
1.34843 ++#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
1.34844 ++ BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
1.34845 ++ (ibfd, isymbol, obfd, osymbol))
1.34846 ++
1.34847 ++/* Extracted from bfd.c. */
1.34848 ++struct bfd
1.34849 ++{
1.34850 ++ /* A unique identifier of the BFD */
1.34851 ++ unsigned int id;
1.34852 ++
1.34853 ++ /* The filename the application opened the BFD with. */
1.34854 ++ const char *filename;
1.34855 ++
1.34856 ++ /* A pointer to the target jump table. */
1.34857 ++ const struct bfd_target *xvec;
1.34858 ++
1.34859 ++ /* The IOSTREAM, and corresponding IO vector that provide access
1.34860 ++ to the file backing the BFD. */
1.34861 ++ void *iostream;
1.34862 ++ const struct bfd_iovec *iovec;
1.34863 ++
1.34864 ++ /* Is the file descriptor being cached? That is, can it be closed as
1.34865 ++ needed, and re-opened when accessed later? */
1.34866 ++ bfd_boolean cacheable;
1.34867 ++
1.34868 ++ /* Marks whether there was a default target specified when the
1.34869 ++ BFD was opened. This is used to select which matching algorithm
1.34870 ++ to use to choose the back end. */
1.34871 ++ bfd_boolean target_defaulted;
1.34872 ++
1.34873 ++ /* The caching routines use these to maintain a
1.34874 ++ least-recently-used list of BFDs. */
1.34875 ++ struct bfd *lru_prev, *lru_next;
1.34876 ++
1.34877 ++ /* When a file is closed by the caching routines, BFD retains
1.34878 ++ state information on the file here... */
1.34879 ++ ufile_ptr where;
1.34880 ++
1.34881 ++ /* ... and here: (``once'' means at least once). */
1.34882 ++ bfd_boolean opened_once;
1.34883 ++
1.34884 ++ /* Set if we have a locally maintained mtime value, rather than
1.34885 ++ getting it from the file each time. */
1.34886 ++ bfd_boolean mtime_set;
1.34887 ++
1.34888 ++ /* File modified time, if mtime_set is TRUE. */
1.34889 ++ long mtime;
1.34890 ++
1.34891 ++ /* Reserved for an unimplemented file locking extension. */
1.34892 ++ int ifd;
1.34893 ++
1.34894 ++ /* The format which belongs to the BFD. (object, core, etc.) */
1.34895 ++ bfd_format format;
1.34896 ++
1.34897 ++ /* The direction with which the BFD was opened. */
1.34898 ++ enum bfd_direction
1.34899 ++ {
1.34900 ++ no_direction = 0,
1.34901 ++ read_direction = 1,
1.34902 ++ write_direction = 2,
1.34903 ++ both_direction = 3
1.34904 ++ }
1.34905 ++ direction;
1.34906 ++
1.34907 ++ /* Format_specific flags. */
1.34908 ++ flagword flags;
1.34909 ++
1.34910 ++ /* Currently my_archive is tested before adding origin to
1.34911 ++ anything. I believe that this can become always an add of
1.34912 ++ origin, with origin set to 0 for non archive files. */
1.34913 ++ ufile_ptr origin;
1.34914 ++
1.34915 ++ /* Remember when output has begun, to stop strange things
1.34916 ++ from happening. */
1.34917 ++ bfd_boolean output_has_begun;
1.34918 ++
1.34919 ++ /* A hash table for section names. */
1.34920 ++ struct bfd_hash_table section_htab;
1.34921 ++
1.34922 ++ /* Pointer to linked list of sections. */
1.34923 ++ struct bfd_section *sections;
1.34924 ++
1.34925 ++ /* The last section on the section list. */
1.34926 ++ struct bfd_section *section_last;
1.34927 ++
1.34928 ++ /* The number of sections. */
1.34929 ++ unsigned int section_count;
1.34930 ++
1.34931 ++ /* Stuff only useful for object files:
1.34932 ++ The start address. */
1.34933 ++ bfd_vma start_address;
1.34934 ++
1.34935 ++ /* Used for input and output. */
1.34936 ++ unsigned int symcount;
1.34937 ++
1.34938 ++ /* Symbol table for output BFD (with symcount entries). */
1.34939 ++ struct bfd_symbol **outsymbols;
1.34940 ++
1.34941 ++ /* Used for slurped dynamic symbol tables. */
1.34942 ++ unsigned int dynsymcount;
1.34943 ++
1.34944 ++ /* Pointer to structure which contains architecture information. */
1.34945 ++ const struct bfd_arch_info *arch_info;
1.34946 ++
1.34947 ++ /* Flag set if symbols from this BFD should not be exported. */
1.34948 ++ bfd_boolean no_export;
1.34949 ++
1.34950 ++ /* Stuff only useful for archives. */
1.34951 ++ void *arelt_data;
1.34952 ++ struct bfd *my_archive; /* The containing archive BFD. */
1.34953 ++ struct bfd *archive_next; /* The next BFD in the archive. */
1.34954 ++ struct bfd *archive_head; /* The first BFD in the archive. */
1.34955 ++ bfd_boolean has_armap;
1.34956 ++
1.34957 ++ /* A chain of BFD structures involved in a link. */
1.34958 ++ struct bfd *link_next;
1.34959 ++
1.34960 ++ /* A field used by _bfd_generic_link_add_archive_symbols. This will
1.34961 ++ be used only for archive elements. */
1.34962 ++ int archive_pass;
1.34963 ++
1.34964 ++ /* Used by the back end to hold private data. */
1.34965 ++ union
1.34966 ++ {
1.34967 ++ struct aout_data_struct *aout_data;
1.34968 ++ struct artdata *aout_ar_data;
1.34969 ++ struct _oasys_data *oasys_obj_data;
1.34970 ++ struct _oasys_ar_data *oasys_ar_data;
1.34971 ++ struct coff_tdata *coff_obj_data;
1.34972 ++ struct pe_tdata *pe_obj_data;
1.34973 ++ struct xcoff_tdata *xcoff_obj_data;
1.34974 ++ struct ecoff_tdata *ecoff_obj_data;
1.34975 ++ struct ieee_data_struct *ieee_data;
1.34976 ++ struct ieee_ar_data_struct *ieee_ar_data;
1.34977 ++ struct srec_data_struct *srec_data;
1.34978 ++ struct ihex_data_struct *ihex_data;
1.34979 ++ struct tekhex_data_struct *tekhex_data;
1.34980 ++ struct elf_obj_tdata *elf_obj_data;
1.34981 ++ struct nlm_obj_tdata *nlm_obj_data;
1.34982 ++ struct bout_data_struct *bout_data;
1.34983 ++ struct mmo_data_struct *mmo_data;
1.34984 ++ struct sun_core_struct *sun_core_data;
1.34985 ++ struct sco5_core_struct *sco5_core_data;
1.34986 ++ struct trad_core_struct *trad_core_data;
1.34987 ++ struct som_data_struct *som_data;
1.34988 ++ struct hpux_core_struct *hpux_core_data;
1.34989 ++ struct hppabsd_core_struct *hppabsd_core_data;
1.34990 ++ struct sgi_core_struct *sgi_core_data;
1.34991 ++ struct lynx_core_struct *lynx_core_data;
1.34992 ++ struct osf_core_struct *osf_core_data;
1.34993 ++ struct cisco_core_struct *cisco_core_data;
1.34994 ++ struct versados_data_struct *versados_data;
1.34995 ++ struct netbsd_core_struct *netbsd_core_data;
1.34996 ++ struct mach_o_data_struct *mach_o_data;
1.34997 ++ struct mach_o_fat_data_struct *mach_o_fat_data;
1.34998 ++ struct bfd_pef_data_struct *pef_data;
1.34999 ++ struct bfd_pef_xlib_data_struct *pef_xlib_data;
1.35000 ++ struct bfd_sym_data_struct *sym_data;
1.35001 ++ void *any;
1.35002 ++ }
1.35003 ++ tdata;
1.35004 ++
1.35005 ++ /* Used by the application to hold private data. */
1.35006 ++ void *usrdata;
1.35007 ++
1.35008 ++ /* Where all the allocated stuff under this BFD goes. This is a
1.35009 ++ struct objalloc *, but we use void * to avoid requiring the inclusion
1.35010 ++ of objalloc.h. */
1.35011 ++ void *memory;
1.35012 ++};
1.35013 ++
1.35014 ++typedef enum bfd_error
1.35015 ++{
1.35016 ++ bfd_error_no_error = 0,
1.35017 ++ bfd_error_system_call,
1.35018 ++ bfd_error_invalid_target,
1.35019 ++ bfd_error_wrong_format,
1.35020 ++ bfd_error_wrong_object_format,
1.35021 ++ bfd_error_invalid_operation,
1.35022 ++ bfd_error_no_memory,
1.35023 ++ bfd_error_no_symbols,
1.35024 ++ bfd_error_no_armap,
1.35025 ++ bfd_error_no_more_archived_files,
1.35026 ++ bfd_error_malformed_archive,
1.35027 ++ bfd_error_file_not_recognized,
1.35028 ++ bfd_error_file_ambiguously_recognized,
1.35029 ++ bfd_error_no_contents,
1.35030 ++ bfd_error_nonrepresentable_section,
1.35031 ++ bfd_error_no_debug_section,
1.35032 ++ bfd_error_bad_value,
1.35033 ++ bfd_error_file_truncated,
1.35034 ++ bfd_error_file_too_big,
1.35035 ++ bfd_error_on_input,
1.35036 ++ bfd_error_invalid_error_code
1.35037 ++}
1.35038 ++bfd_error_type;
1.35039 ++
1.35040 ++bfd_error_type bfd_get_error (void);
1.35041 ++
1.35042 ++void bfd_set_error (bfd_error_type error_tag, ...);
1.35043 ++
1.35044 ++const char *bfd_errmsg (bfd_error_type error_tag);
1.35045 ++
1.35046 ++void bfd_perror (const char *message);
1.35047 ++
1.35048 ++typedef void (*bfd_error_handler_type) (const char *, ...);
1.35049 ++
1.35050 ++bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
1.35051 ++
1.35052 ++void bfd_set_error_program_name (const char *);
1.35053 ++
1.35054 ++bfd_error_handler_type bfd_get_error_handler (void);
1.35055 ++
1.35056 ++long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
1.35057 ++
1.35058 ++long bfd_canonicalize_reloc
1.35059 ++ (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
1.35060 ++
1.35061 ++void bfd_set_reloc
1.35062 ++ (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
1.35063 ++
1.35064 ++bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
1.35065 ++
1.35066 ++int bfd_get_arch_size (bfd *abfd);
1.35067 ++
1.35068 ++int bfd_get_sign_extend_vma (bfd *abfd);
1.35069 ++
1.35070 ++bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
1.35071 ++
1.35072 ++unsigned int bfd_get_gp_size (bfd *abfd);
1.35073 ++
1.35074 ++void bfd_set_gp_size (bfd *abfd, unsigned int i);
1.35075 ++
1.35076 ++bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
1.35077 ++
1.35078 ++bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
1.35079 ++
1.35080 ++#define bfd_copy_private_header_data(ibfd, obfd) \
1.35081 ++ BFD_SEND (obfd, _bfd_copy_private_header_data, \
1.35082 ++ (ibfd, obfd))
1.35083 ++bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
1.35084 ++
1.35085 ++#define bfd_copy_private_bfd_data(ibfd, obfd) \
1.35086 ++ BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
1.35087 ++ (ibfd, obfd))
1.35088 ++bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
1.35089 ++
1.35090 ++#define bfd_merge_private_bfd_data(ibfd, obfd) \
1.35091 ++ BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
1.35092 ++ (ibfd, obfd))
1.35093 ++bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
1.35094 ++
1.35095 ++#define bfd_set_private_flags(abfd, flags) \
1.35096 ++ BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
1.35097 ++#define bfd_sizeof_headers(abfd, info) \
1.35098 ++ BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
1.35099 ++
1.35100 ++#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
1.35101 ++ BFD_SEND (abfd, _bfd_find_nearest_line, \
1.35102 ++ (abfd, sec, syms, off, file, func, line))
1.35103 ++
1.35104 ++#define bfd_find_line(abfd, syms, sym, file, line) \
1.35105 ++ BFD_SEND (abfd, _bfd_find_line, \
1.35106 ++ (abfd, syms, sym, file, line))
1.35107 ++
1.35108 ++#define bfd_find_inliner_info(abfd, file, func, line) \
1.35109 ++ BFD_SEND (abfd, _bfd_find_inliner_info, \
1.35110 ++ (abfd, file, func, line))
1.35111 ++
1.35112 ++#define bfd_debug_info_start(abfd) \
1.35113 ++ BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
1.35114 ++
1.35115 ++#define bfd_debug_info_end(abfd) \
1.35116 ++ BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
1.35117 ++
1.35118 ++#define bfd_debug_info_accumulate(abfd, section) \
1.35119 ++ BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
1.35120 ++
1.35121 ++#define bfd_stat_arch_elt(abfd, stat) \
1.35122 ++ BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
1.35123 ++
1.35124 ++#define bfd_update_armap_timestamp(abfd) \
1.35125 ++ BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
1.35126 ++
1.35127 ++#define bfd_set_arch_mach(abfd, arch, mach)\
1.35128 ++ BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
1.35129 ++
1.35130 ++#define bfd_relax_section(abfd, section, link_info, again) \
1.35131 ++ BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
1.35132 ++
1.35133 ++#define bfd_gc_sections(abfd, link_info) \
1.35134 ++ BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
1.35135 ++
1.35136 ++#define bfd_merge_sections(abfd, link_info) \
1.35137 ++ BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
1.35138 ++
1.35139 ++#define bfd_is_group_section(abfd, sec) \
1.35140 ++ BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
1.35141 ++
1.35142 ++#define bfd_discard_group(abfd, sec) \
1.35143 ++ BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
1.35144 ++
1.35145 ++#define bfd_link_hash_table_create(abfd) \
1.35146 ++ BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
1.35147 ++
1.35148 ++#define bfd_link_hash_table_free(abfd, hash) \
1.35149 ++ BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
1.35150 ++
1.35151 ++#define bfd_link_add_symbols(abfd, info) \
1.35152 ++ BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
1.35153 ++
1.35154 ++#define bfd_link_just_syms(abfd, sec, info) \
1.35155 ++ BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
1.35156 ++
1.35157 ++#define bfd_final_link(abfd, info) \
1.35158 ++ BFD_SEND (abfd, _bfd_final_link, (abfd, info))
1.35159 ++
1.35160 ++#define bfd_free_cached_info(abfd) \
1.35161 ++ BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
1.35162 ++
1.35163 ++#define bfd_get_dynamic_symtab_upper_bound(abfd) \
1.35164 ++ BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
1.35165 ++
1.35166 ++#define bfd_print_private_bfd_data(abfd, file)\
1.35167 ++ BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
1.35168 ++
1.35169 ++#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
1.35170 ++ BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
1.35171 ++
1.35172 ++#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
1.35173 ++ BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
1.35174 ++ dyncount, dynsyms, ret))
1.35175 ++
1.35176 ++#define bfd_get_dynamic_reloc_upper_bound(abfd) \
1.35177 ++ BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
1.35178 ++
1.35179 ++#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
1.35180 ++ BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
1.35181 ++
1.35182 ++extern bfd_byte *bfd_get_relocated_section_contents
1.35183 ++ (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
1.35184 ++ bfd_boolean, asymbol **);
1.35185 ++
1.35186 ++bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
1.35187 ++
1.35188 ++struct bfd_preserve
1.35189 ++{
1.35190 ++ void *marker;
1.35191 ++ void *tdata;
1.35192 ++ flagword flags;
1.35193 ++ const struct bfd_arch_info *arch_info;
1.35194 ++ struct bfd_section *sections;
1.35195 ++ struct bfd_section *section_last;
1.35196 ++ unsigned int section_count;
1.35197 ++ struct bfd_hash_table section_htab;
1.35198 ++};
1.35199 ++
1.35200 ++bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
1.35201 ++
1.35202 ++void bfd_preserve_restore (bfd *, struct bfd_preserve *);
1.35203 ++
1.35204 ++void bfd_preserve_finish (bfd *, struct bfd_preserve *);
1.35205 ++
1.35206 ++bfd_vma bfd_emul_get_maxpagesize (const char *);
1.35207 ++
1.35208 ++void bfd_emul_set_maxpagesize (const char *, bfd_vma);
1.35209 ++
1.35210 ++bfd_vma bfd_emul_get_commonpagesize (const char *);
1.35211 ++
1.35212 ++void bfd_emul_set_commonpagesize (const char *, bfd_vma);
1.35213 ++
1.35214 ++char *bfd_demangle (bfd *, const char *, int);
1.35215 ++
1.35216 ++/* Extracted from archive.c. */
1.35217 ++symindex bfd_get_next_mapent
1.35218 ++ (bfd *abfd, symindex previous, carsym **sym);
1.35219 ++
1.35220 ++bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
1.35221 ++
1.35222 ++bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
1.35223 ++
1.35224 ++/* Extracted from corefile.c. */
1.35225 ++const char *bfd_core_file_failing_command (bfd *abfd);
1.35226 ++
1.35227 ++int bfd_core_file_failing_signal (bfd *abfd);
1.35228 ++
1.35229 ++bfd_boolean core_file_matches_executable_p
1.35230 ++ (bfd *core_bfd, bfd *exec_bfd);
1.35231 ++
1.35232 ++bfd_boolean generic_core_file_matches_executable_p
1.35233 ++ (bfd *core_bfd, bfd *exec_bfd);
1.35234 ++
1.35235 ++/* Extracted from targets.c. */
1.35236 ++#define BFD_SEND(bfd, message, arglist) \
1.35237 ++ ((*((bfd)->xvec->message)) arglist)
1.35238 ++
1.35239 ++#ifdef DEBUG_BFD_SEND
1.35240 ++#undef BFD_SEND
1.35241 ++#define BFD_SEND(bfd, message, arglist) \
1.35242 ++ (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
1.35243 ++ ((*((bfd)->xvec->message)) arglist) : \
1.35244 ++ (bfd_assert (__FILE__,__LINE__), NULL))
1.35245 ++#endif
1.35246 ++#define BFD_SEND_FMT(bfd, message, arglist) \
1.35247 ++ (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
1.35248 ++
1.35249 ++#ifdef DEBUG_BFD_SEND
1.35250 ++#undef BFD_SEND_FMT
1.35251 ++#define BFD_SEND_FMT(bfd, message, arglist) \
1.35252 ++ (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
1.35253 ++ (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
1.35254 ++ (bfd_assert (__FILE__,__LINE__), NULL))
1.35255 ++#endif
1.35256 ++
1.35257 ++enum bfd_flavour
1.35258 ++{
1.35259 ++ bfd_target_unknown_flavour,
1.35260 ++ bfd_target_aout_flavour,
1.35261 ++ bfd_target_coff_flavour,
1.35262 ++ bfd_target_ecoff_flavour,
1.35263 ++ bfd_target_xcoff_flavour,
1.35264 ++ bfd_target_elf_flavour,
1.35265 ++ bfd_target_ieee_flavour,
1.35266 ++ bfd_target_nlm_flavour,
1.35267 ++ bfd_target_oasys_flavour,
1.35268 ++ bfd_target_tekhex_flavour,
1.35269 ++ bfd_target_srec_flavour,
1.35270 ++ bfd_target_ihex_flavour,
1.35271 ++ bfd_target_som_flavour,
1.35272 ++ bfd_target_os9k_flavour,
1.35273 ++ bfd_target_versados_flavour,
1.35274 ++ bfd_target_msdos_flavour,
1.35275 ++ bfd_target_ovax_flavour,
1.35276 ++ bfd_target_evax_flavour,
1.35277 ++ bfd_target_mmo_flavour,
1.35278 ++ bfd_target_mach_o_flavour,
1.35279 ++ bfd_target_pef_flavour,
1.35280 ++ bfd_target_pef_xlib_flavour,
1.35281 ++ bfd_target_sym_flavour
1.35282 ++};
1.35283 ++
1.35284 ++enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
1.35285 ++
1.35286 ++/* Forward declaration. */
1.35287 ++typedef struct bfd_link_info _bfd_link_info;
1.35288 ++
1.35289 ++typedef struct bfd_target
1.35290 ++{
1.35291 ++ /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
1.35292 ++ char *name;
1.35293 ++
1.35294 ++ /* The "flavour" of a back end is a general indication about
1.35295 ++ the contents of a file. */
1.35296 ++ enum bfd_flavour flavour;
1.35297 ++
1.35298 ++ /* The order of bytes within the data area of a file. */
1.35299 ++ enum bfd_endian byteorder;
1.35300 ++
1.35301 ++ /* The order of bytes within the header parts of a file. */
1.35302 ++ enum bfd_endian header_byteorder;
1.35303 ++
1.35304 ++ /* A mask of all the flags which an executable may have set -
1.35305 ++ from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>. */
1.35306 ++ flagword object_flags;
1.35307 ++
1.35308 ++ /* A mask of all the flags which a section may have set - from
1.35309 ++ the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>. */
1.35310 ++ flagword section_flags;
1.35311 ++
1.35312 ++ /* The character normally found at the front of a symbol.
1.35313 ++ (if any), perhaps `_'. */
1.35314 ++ char symbol_leading_char;
1.35315 ++
1.35316 ++ /* The pad character for file names within an archive header. */
1.35317 ++ char ar_pad_char;
1.35318 ++
1.35319 ++ /* The maximum number of characters in an archive header. */
1.35320 ++ unsigned short ar_max_namelen;
1.35321 ++
1.35322 ++ /* Entries for byte swapping for data. These are different from the
1.35323 ++ other entry points, since they don't take a BFD as the first argument.
1.35324 ++ Certain other handlers could do the same. */
1.35325 ++ bfd_uint64_t (*bfd_getx64) (const void *);
1.35326 ++ bfd_int64_t (*bfd_getx_signed_64) (const void *);
1.35327 ++ void (*bfd_putx64) (bfd_uint64_t, void *);
1.35328 ++ bfd_vma (*bfd_getx32) (const void *);
1.35329 ++ bfd_signed_vma (*bfd_getx_signed_32) (const void *);
1.35330 ++ void (*bfd_putx32) (bfd_vma, void *);
1.35331 ++ bfd_vma (*bfd_getx16) (const void *);
1.35332 ++ bfd_signed_vma (*bfd_getx_signed_16) (const void *);
1.35333 ++ void (*bfd_putx16) (bfd_vma, void *);
1.35334 ++
1.35335 ++ /* Byte swapping for the headers. */
1.35336 ++ bfd_uint64_t (*bfd_h_getx64) (const void *);
1.35337 ++ bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
1.35338 ++ void (*bfd_h_putx64) (bfd_uint64_t, void *);
1.35339 ++ bfd_vma (*bfd_h_getx32) (const void *);
1.35340 ++ bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
1.35341 ++ void (*bfd_h_putx32) (bfd_vma, void *);
1.35342 ++ bfd_vma (*bfd_h_getx16) (const void *);
1.35343 ++ bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
1.35344 ++ void (*bfd_h_putx16) (bfd_vma, void *);
1.35345 ++
1.35346 ++ /* Format dependent routines: these are vectors of entry points
1.35347 ++ within the target vector structure, one for each format to check. */
1.35348 ++
1.35349 ++ /* Check the format of a file being read. Return a <<bfd_target *>> or zero. */
1.35350 ++ const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
1.35351 ++
1.35352 ++ /* Set the format of a file being written. */
1.35353 ++ bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
1.35354 ++
1.35355 ++ /* Write cached information into a file being written, at <<bfd_close>>. */
1.35356 ++ bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
1.35357 ++
1.35358 ++
1.35359 ++ /* Generic entry points. */
1.35360 ++#define BFD_JUMP_TABLE_GENERIC(NAME) \
1.35361 ++ NAME##_close_and_cleanup, \
1.35362 ++ NAME##_bfd_free_cached_info, \
1.35363 ++ NAME##_new_section_hook, \
1.35364 ++ NAME##_get_section_contents, \
1.35365 ++ NAME##_get_section_contents_in_window
1.35366 ++
1.35367 ++ /* Called when the BFD is being closed to do any necessary cleanup. */
1.35368 ++ bfd_boolean (*_close_and_cleanup) (bfd *);
1.35369 ++ /* Ask the BFD to free all cached information. */
1.35370 ++ bfd_boolean (*_bfd_free_cached_info) (bfd *);
1.35371 ++ /* Called when a new section is created. */
1.35372 ++ bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
1.35373 ++ /* Read the contents of a section. */
1.35374 ++ bfd_boolean (*_bfd_get_section_contents)
1.35375 ++ (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
1.35376 ++ bfd_boolean (*_bfd_get_section_contents_in_window)
1.35377 ++ (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
1.35378 ++
1.35379 ++ /* Entry points to copy private data. */
1.35380 ++#define BFD_JUMP_TABLE_COPY(NAME) \
1.35381 ++ NAME##_bfd_copy_private_bfd_data, \
1.35382 ++ NAME##_bfd_merge_private_bfd_data, \
1.35383 ++ _bfd_generic_init_private_section_data, \
1.35384 ++ NAME##_bfd_copy_private_section_data, \
1.35385 ++ NAME##_bfd_copy_private_symbol_data, \
1.35386 ++ NAME##_bfd_copy_private_header_data, \
1.35387 ++ NAME##_bfd_set_private_flags, \
1.35388 ++ NAME##_bfd_print_private_bfd_data
1.35389 ++
1.35390 ++ /* Called to copy BFD general private data from one object file
1.35391 ++ to another. */
1.35392 ++ bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
1.35393 ++ /* Called to merge BFD general private data from one object file
1.35394 ++ to a common output file when linking. */
1.35395 ++ bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
1.35396 ++ /* Called to initialize BFD private section data from one object file
1.35397 ++ to another. */
1.35398 ++#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
1.35399 ++ BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
1.35400 ++ bfd_boolean (*_bfd_init_private_section_data)
1.35401 ++ (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
1.35402 ++ /* Called to copy BFD private section data from one object file
1.35403 ++ to another. */
1.35404 ++ bfd_boolean (*_bfd_copy_private_section_data)
1.35405 ++ (bfd *, sec_ptr, bfd *, sec_ptr);
1.35406 ++ /* Called to copy BFD private symbol data from one symbol
1.35407 ++ to another. */
1.35408 ++ bfd_boolean (*_bfd_copy_private_symbol_data)
1.35409 ++ (bfd *, asymbol *, bfd *, asymbol *);
1.35410 ++ /* Called to copy BFD private header data from one object file
1.35411 ++ to another. */
1.35412 ++ bfd_boolean (*_bfd_copy_private_header_data)
1.35413 ++ (bfd *, bfd *);
1.35414 ++ /* Called to set private backend flags. */
1.35415 ++ bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
1.35416 ++
1.35417 ++ /* Called to print private BFD data. */
1.35418 ++ bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
1.35419 ++
1.35420 ++ /* Core file entry points. */
1.35421 ++#define BFD_JUMP_TABLE_CORE(NAME) \
1.35422 ++ NAME##_core_file_failing_command, \
1.35423 ++ NAME##_core_file_failing_signal, \
1.35424 ++ NAME##_core_file_matches_executable_p
1.35425 ++
1.35426 ++ char * (*_core_file_failing_command) (bfd *);
1.35427 ++ int (*_core_file_failing_signal) (bfd *);
1.35428 ++ bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
1.35429 ++
1.35430 ++ /* Archive entry points. */
1.35431 ++#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
1.35432 ++ NAME##_slurp_armap, \
1.35433 ++ NAME##_slurp_extended_name_table, \
1.35434 ++ NAME##_construct_extended_name_table, \
1.35435 ++ NAME##_truncate_arname, \
1.35436 ++ NAME##_write_armap, \
1.35437 ++ NAME##_read_ar_hdr, \
1.35438 ++ NAME##_openr_next_archived_file, \
1.35439 ++ NAME##_get_elt_at_index, \
1.35440 ++ NAME##_generic_stat_arch_elt, \
1.35441 ++ NAME##_update_armap_timestamp
1.35442 ++
1.35443 ++ bfd_boolean (*_bfd_slurp_armap) (bfd *);
1.35444 ++ bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
1.35445 ++ bfd_boolean (*_bfd_construct_extended_name_table)
1.35446 ++ (bfd *, char **, bfd_size_type *, const char **);
1.35447 ++ void (*_bfd_truncate_arname) (bfd *, const char *, char *);
1.35448 ++ bfd_boolean (*write_armap)
1.35449 ++ (bfd *, unsigned int, struct orl *, unsigned int, int);
1.35450 ++ void * (*_bfd_read_ar_hdr_fn) (bfd *);
1.35451 ++ bfd * (*openr_next_archived_file) (bfd *, bfd *);
1.35452 ++#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
1.35453 ++ bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
1.35454 ++ int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
1.35455 ++ bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
1.35456 ++
1.35457 ++ /* Entry points used for symbols. */
1.35458 ++#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
1.35459 ++ NAME##_get_symtab_upper_bound, \
1.35460 ++ NAME##_canonicalize_symtab, \
1.35461 ++ NAME##_make_empty_symbol, \
1.35462 ++ NAME##_print_symbol, \
1.35463 ++ NAME##_get_symbol_info, \
1.35464 ++ NAME##_bfd_is_local_label_name, \
1.35465 ++ NAME##_bfd_is_target_special_symbol, \
1.35466 ++ NAME##_get_lineno, \
1.35467 ++ NAME##_find_nearest_line, \
1.35468 ++ _bfd_generic_find_line, \
1.35469 ++ NAME##_find_inliner_info, \
1.35470 ++ NAME##_bfd_make_debug_symbol, \
1.35471 ++ NAME##_read_minisymbols, \
1.35472 ++ NAME##_minisymbol_to_symbol
1.35473 ++
1.35474 ++ long (*_bfd_get_symtab_upper_bound) (bfd *);
1.35475 ++ long (*_bfd_canonicalize_symtab)
1.35476 ++ (bfd *, struct bfd_symbol **);
1.35477 ++ struct bfd_symbol *
1.35478 ++ (*_bfd_make_empty_symbol) (bfd *);
1.35479 ++ void (*_bfd_print_symbol)
1.35480 ++ (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
1.35481 ++#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
1.35482 ++ void (*_bfd_get_symbol_info)
1.35483 ++ (bfd *, struct bfd_symbol *, symbol_info *);
1.35484 ++#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
1.35485 ++ bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
1.35486 ++ bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
1.35487 ++ alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
1.35488 ++ bfd_boolean (*_bfd_find_nearest_line)
1.35489 ++ (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
1.35490 ++ const char **, const char **, unsigned int *);
1.35491 ++ bfd_boolean (*_bfd_find_line)
1.35492 ++ (bfd *, struct bfd_symbol **, struct bfd_symbol *,
1.35493 ++ const char **, unsigned int *);
1.35494 ++ bfd_boolean (*_bfd_find_inliner_info)
1.35495 ++ (bfd *, const char **, const char **, unsigned int *);
1.35496 ++ /* Back-door to allow format-aware applications to create debug symbols
1.35497 ++ while using BFD for everything else. Currently used by the assembler
1.35498 ++ when creating COFF files. */
1.35499 ++ asymbol * (*_bfd_make_debug_symbol)
1.35500 ++ (bfd *, void *, unsigned long size);
1.35501 ++#define bfd_read_minisymbols(b, d, m, s) \
1.35502 ++ BFD_SEND (b, _read_minisymbols, (b, d, m, s))
1.35503 ++ long (*_read_minisymbols)
1.35504 ++ (bfd *, bfd_boolean, void **, unsigned int *);
1.35505 ++#define bfd_minisymbol_to_symbol(b, d, m, f) \
1.35506 ++ BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
1.35507 ++ asymbol * (*_minisymbol_to_symbol)
1.35508 ++ (bfd *, bfd_boolean, const void *, asymbol *);
1.35509 ++
1.35510 ++ /* Routines for relocs. */
1.35511 ++#define BFD_JUMP_TABLE_RELOCS(NAME) \
1.35512 ++ NAME##_get_reloc_upper_bound, \
1.35513 ++ NAME##_canonicalize_reloc, \
1.35514 ++ NAME##_bfd_reloc_type_lookup, \
1.35515 ++ NAME##_bfd_reloc_name_lookup
1.35516 ++
1.35517 ++ long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
1.35518 ++ long (*_bfd_canonicalize_reloc)
1.35519 ++ (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
1.35520 ++ /* See documentation on reloc types. */
1.35521 ++ reloc_howto_type *
1.35522 ++ (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
1.35523 ++ reloc_howto_type *
1.35524 ++ (*reloc_name_lookup) (bfd *, const char *);
1.35525 ++
1.35526 ++
1.35527 ++ /* Routines used when writing an object file. */
1.35528 ++#define BFD_JUMP_TABLE_WRITE(NAME) \
1.35529 ++ NAME##_set_arch_mach, \
1.35530 ++ NAME##_set_section_contents
1.35531 ++
1.35532 ++ bfd_boolean (*_bfd_set_arch_mach)
1.35533 ++ (bfd *, enum bfd_architecture, unsigned long);
1.35534 ++ bfd_boolean (*_bfd_set_section_contents)
1.35535 ++ (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
1.35536 ++
1.35537 ++ /* Routines used by the linker. */
1.35538 ++#define BFD_JUMP_TABLE_LINK(NAME) \
1.35539 ++ NAME##_sizeof_headers, \
1.35540 ++ NAME##_bfd_get_relocated_section_contents, \
1.35541 ++ NAME##_bfd_relax_section, \
1.35542 ++ NAME##_bfd_link_hash_table_create, \
1.35543 ++ NAME##_bfd_link_hash_table_free, \
1.35544 ++ NAME##_bfd_link_add_symbols, \
1.35545 ++ NAME##_bfd_link_just_syms, \
1.35546 ++ NAME##_bfd_final_link, \
1.35547 ++ NAME##_bfd_link_split_section, \
1.35548 ++ NAME##_bfd_gc_sections, \
1.35549 ++ NAME##_bfd_merge_sections, \
1.35550 ++ NAME##_bfd_is_group_section, \
1.35551 ++ NAME##_bfd_discard_group, \
1.35552 ++ NAME##_section_already_linked \
1.35553 ++
1.35554 ++ int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
1.35555 ++ bfd_byte * (*_bfd_get_relocated_section_contents)
1.35556 ++ (bfd *, struct bfd_link_info *, struct bfd_link_order *,
1.35557 ++ bfd_byte *, bfd_boolean, struct bfd_symbol **);
1.35558 ++
1.35559 ++ bfd_boolean (*_bfd_relax_section)
1.35560 ++ (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
1.35561 ++
1.35562 ++ /* Create a hash table for the linker. Different backends store
1.35563 ++ different information in this table. */
1.35564 ++ struct bfd_link_hash_table *
1.35565 ++ (*_bfd_link_hash_table_create) (bfd *);
1.35566 ++
1.35567 ++ /* Release the memory associated with the linker hash table. */
1.35568 ++ void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
1.35569 ++
1.35570 ++ /* Add symbols from this object file into the hash table. */
1.35571 ++ bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
1.35572 ++
1.35573 ++ /* Indicate that we are only retrieving symbol values from this section. */
1.35574 ++ void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
1.35575 ++
1.35576 ++ /* Do a link based on the link_order structures attached to each
1.35577 ++ section of the BFD. */
1.35578 ++ bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
1.35579 ++
1.35580 ++ /* Should this section be split up into smaller pieces during linking. */
1.35581 ++ bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
1.35582 ++
1.35583 ++ /* Remove sections that are not referenced from the output. */
1.35584 ++ bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
1.35585 ++
1.35586 ++ /* Attempt to merge SEC_MERGE sections. */
1.35587 ++ bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
1.35588 ++
1.35589 ++ /* Is this section a member of a group? */
1.35590 ++ bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
1.35591 ++
1.35592 ++ /* Discard members of a group. */
1.35593 ++ bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
1.35594 ++
1.35595 ++ /* Check if SEC has been already linked during a reloceatable or
1.35596 ++ final link. */
1.35597 ++ void (*_section_already_linked) (bfd *, struct bfd_section *,
1.35598 ++ struct bfd_link_info *);
1.35599 ++
1.35600 ++ /* Routines to handle dynamic symbols and relocs. */
1.35601 ++#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
1.35602 ++ NAME##_get_dynamic_symtab_upper_bound, \
1.35603 ++ NAME##_canonicalize_dynamic_symtab, \
1.35604 ++ NAME##_get_synthetic_symtab, \
1.35605 ++ NAME##_get_dynamic_reloc_upper_bound, \
1.35606 ++ NAME##_canonicalize_dynamic_reloc
1.35607 ++
1.35608 ++ /* Get the amount of memory required to hold the dynamic symbols. */
1.35609 ++ long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
1.35610 ++ /* Read in the dynamic symbols. */
1.35611 ++ long (*_bfd_canonicalize_dynamic_symtab)
1.35612 ++ (bfd *, struct bfd_symbol **);
1.35613 ++ /* Create synthetized symbols. */
1.35614 ++ long (*_bfd_get_synthetic_symtab)
1.35615 ++ (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
1.35616 ++ struct bfd_symbol **);
1.35617 ++ /* Get the amount of memory required to hold the dynamic relocs. */
1.35618 ++ long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
1.35619 ++ /* Read in the dynamic relocs. */
1.35620 ++ long (*_bfd_canonicalize_dynamic_reloc)
1.35621 ++ (bfd *, arelent **, struct bfd_symbol **);
1.35622 ++
1.35623 ++ /* Opposite endian version of this target. */
1.35624 ++ const struct bfd_target * alternative_target;
1.35625 ++
1.35626 ++ /* Data for use by back-end routines, which isn't
1.35627 ++ generic enough to belong in this structure. */
1.35628 ++ const void *backend_data;
1.35629 ++
1.35630 ++} bfd_target;
1.35631 ++
1.35632 ++bfd_boolean bfd_set_default_target (const char *name);
1.35633 ++
1.35634 ++const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
1.35635 ++
1.35636 ++const char ** bfd_target_list (void);
1.35637 ++
1.35638 ++const bfd_target *bfd_search_for_target
1.35639 ++ (int (*search_func) (const bfd_target *, void *),
1.35640 ++ void *);
1.35641 ++
1.35642 ++/* Extracted from format.c. */
1.35643 ++bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
1.35644 ++
1.35645 ++bfd_boolean bfd_check_format_matches
1.35646 ++ (bfd *abfd, bfd_format format, char ***matching);
1.35647 ++
1.35648 ++bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
1.35649 ++
1.35650 ++const char *bfd_format_string (bfd_format format);
1.35651 ++
1.35652 ++/* Extracted from linker.c. */
1.35653 ++bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
1.35654 ++
1.35655 ++#define bfd_link_split_section(abfd, sec) \
1.35656 ++ BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
1.35657 ++
1.35658 ++void bfd_section_already_linked (bfd *abfd, asection *sec,
1.35659 ++ struct bfd_link_info *info);
1.35660 ++
1.35661 ++#define bfd_section_already_linked(abfd, sec, info) \
1.35662 ++ BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
1.35663 ++
1.35664 ++/* Extracted from simple.c. */
1.35665 ++bfd_byte *bfd_simple_get_relocated_section_contents
1.35666 ++ (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
1.35667 ++
1.35668 ++#ifdef __cplusplus
1.35669 ++}
1.35670 ++#endif
1.35671 ++#endif
1.35672 +--- /dev/null
1.35673 ++++ b/bfd/bfd_stdint.h
1.35674 +@@ -0,0 +1,47 @@
1.35675 ++/* generated for gcc (GCC) 4.2.4 (Ubuntu 4.2.4-3ubuntu4) */
1.35676 ++
1.35677 ++#ifndef GCC_GENERATED_STDINT_H
1.35678 ++#define GCC_GENERATED_STDINT_H 1
1.35679 ++
1.35680 ++#include <sys/types.h>
1.35681 ++#include <stdint.h>
1.35682 ++/* glibc uses these symbols as guards to prevent redefinitions. */
1.35683 ++#ifdef __int8_t_defined
1.35684 ++#define _INT8_T
1.35685 ++#define _INT16_T
1.35686 ++#define _INT32_T
1.35687 ++#endif
1.35688 ++#ifdef __uint32_t_defined
1.35689 ++#define _UINT32_T
1.35690 ++#endif
1.35691 ++
1.35692 ++
1.35693 ++/* Some systems have guard macros to prevent redefinitions, define them. */
1.35694 ++#ifndef _INT8_T
1.35695 ++#define _INT8_T
1.35696 ++#endif
1.35697 ++#ifndef _INT16_T
1.35698 ++#define _INT16_T
1.35699 ++#endif
1.35700 ++#ifndef _INT32_T
1.35701 ++#define _INT32_T
1.35702 ++#endif
1.35703 ++#ifndef _UINT8_T
1.35704 ++#define _UINT8_T
1.35705 ++#endif
1.35706 ++#ifndef _UINT16_T
1.35707 ++#define _UINT16_T
1.35708 ++#endif
1.35709 ++#ifndef _UINT32_T
1.35710 ++#define _UINT32_T
1.35711 ++#endif
1.35712 ++
1.35713 ++/* system headers have good uint64_t and int64_t */
1.35714 ++#ifndef _INT64_T
1.35715 ++#define _INT64_T
1.35716 ++#endif
1.35717 ++#ifndef _UINT64_T
1.35718 ++#define _UINT64_T
1.35719 ++#endif
1.35720 ++
1.35721 ++#endif /* GCC_GENERATED_STDINT_H */
1.35722 +--- a/bfd/configure
1.35723 ++++ b/bfd/configure
1.35724 +@@ -2994,7 +2994,7 @@ fi
1.35725 +
1.35726 + # Define the identity of the package.
1.35727 + PACKAGE=bfd
1.35728 +- VERSION=2.18
1.35729 ++ VERSION=2.18.atmel.1.0.1.avr32linux.1
1.35730 +
1.35731 +
1.35732 + cat >>confdefs.h <<_ACEOF
1.35733 +@@ -19041,6 +19041,7 @@ do
1.35734 + bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
1.35735 + bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
1.35736 + bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
1.35737 ++ bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
1.35738 + bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
1.35739 + bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
1.35740 + bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
1.35741 +--- /dev/null
1.35742 ++++ b/bfd/doc/bfd.h
1.35743 +@@ -0,0 +1,5493 @@
1.35744 ++/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
1.35745 ++ generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
1.35746 ++ "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
1.35747 ++ "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
1.35748 ++ "linker.c" and "simple.c".
1.35749 ++ Run "make headers" in your build bfd/ to regenerate. */
1.35750 ++
1.35751 ++/* Main header file for the bfd library -- portable access to object files.
1.35752 ++
1.35753 ++ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1.35754 ++ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
1.35755 ++ Free Software Foundation, Inc.
1.35756 ++
1.35757 ++ Contributed by Cygnus Support.
1.35758 ++
1.35759 ++ This file is part of BFD, the Binary File Descriptor library.
1.35760 ++
1.35761 ++ This program is free software; you can redistribute it and/or modify
1.35762 ++ it under the terms of the GNU General Public License as published by
1.35763 ++ the Free Software Foundation; either version 3 of the License, or
1.35764 ++ (at your option) any later version.
1.35765 ++
1.35766 ++ This program is distributed in the hope that it will be useful,
1.35767 ++ but WITHOUT ANY WARRANTY; without even the implied warranty of
1.35768 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.35769 ++ GNU General Public License for more details.
1.35770 ++
1.35771 ++ You should have received a copy of the GNU General Public License
1.35772 ++ along with this program; if not, write to the Free Software
1.35773 ++ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
1.35774 ++
1.35775 ++#ifndef __BFD_H_SEEN__
1.35776 ++#define __BFD_H_SEEN__
1.35777 ++
1.35778 ++#ifdef __cplusplus
1.35779 ++extern "C" {
1.35780 ++#endif
1.35781 ++
1.35782 ++#include "ansidecl.h"
1.35783 ++#include "symcat.h"
1.35784 ++#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
1.35785 ++#ifndef SABER
1.35786 ++/* This hack is to avoid a problem with some strict ANSI C preprocessors.
1.35787 ++ The problem is, "32_" is not a valid preprocessing token, and we don't
1.35788 ++ want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will
1.35789 ++ cause the inner CONCAT2 macros to be evaluated first, producing
1.35790 ++ still-valid pp-tokens. Then the final concatenation can be done. */
1.35791 ++#undef CONCAT4
1.35792 ++#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
1.35793 ++#endif
1.35794 ++#endif
1.35795 ++
1.35796 ++/* This is a utility macro to handle the situation where the code
1.35797 ++ wants to place a constant string into the code, followed by a
1.35798 ++ comma and then the length of the string. Doing this by hand
1.35799 ++ is error prone, so using this macro is safer. The macro will
1.35800 ++ also safely handle the case where a NULL is passed as the arg. */
1.35801 ++#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
1.35802 ++/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
1.35803 ++ to create the arguments to another macro, since the preprocessor
1.35804 ++ will mis-count the number of arguments to the outer macro (by not
1.35805 ++ evaluating STRING_COMMA_LEN and so missing the comma). This is a
1.35806 ++ problem for example when trying to use STRING_COMMA_LEN to build
1.35807 ++ the arguments to the strncmp() macro. Hence this alternative
1.35808 ++ definition of strncmp is provided here.
1.35809 ++
1.35810 ++ Note - these macros do NOT work if STR2 is not a constant string. */
1.35811 ++#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
1.35812 ++ /* strcpy() can have a similar problem, but since we know we are
1.35813 ++ copying a constant string, we can use memcpy which will be faster
1.35814 ++ since there is no need to check for a NUL byte inside STR. We
1.35815 ++ can also save time if we do not need to copy the terminating NUL. */
1.35816 ++#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
1.35817 ++#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
1.35818 ++
1.35819 ++
1.35820 ++/* The word size used by BFD on the host. This may be 64 with a 32
1.35821 ++ bit target if the host is 64 bit, or if other 64 bit targets have
1.35822 ++ been selected with --enable-targets, or if --enable-64-bit-bfd. */
1.35823 ++#define BFD_ARCH_SIZE @wordsize@
1.35824 ++
1.35825 ++/* The word size of the default bfd target. */
1.35826 ++#define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
1.35827 ++
1.35828 ++#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
1.35829 ++#define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@
1.35830 ++#define BFD_HOST_LONG_LONG @BFD_HOST_LONG_LONG@
1.35831 ++#if @BFD_HOST_64_BIT_DEFINED@
1.35832 ++#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
1.35833 ++#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
1.35834 ++typedef BFD_HOST_64_BIT bfd_int64_t;
1.35835 ++typedef BFD_HOST_U_64_BIT bfd_uint64_t;
1.35836 ++#endif
1.35837 ++
1.35838 ++#if BFD_ARCH_SIZE >= 64
1.35839 ++#define BFD64
1.35840 ++#endif
1.35841 ++
1.35842 ++#ifndef INLINE
1.35843 ++#if __GNUC__ >= 2
1.35844 ++#define INLINE __inline__
1.35845 ++#else
1.35846 ++#define INLINE
1.35847 ++#endif
1.35848 ++#endif
1.35849 ++
1.35850 ++/* Declaring a type wide enough to hold a host long and a host pointer. */
1.35851 ++#define BFD_HOSTPTR_T @BFD_HOSTPTR_T@
1.35852 ++typedef BFD_HOSTPTR_T bfd_hostptr_t;
1.35853 ++
1.35854 ++/* Forward declaration. */
1.35855 ++typedef struct bfd bfd;
1.35856 ++
1.35857 ++/* Boolean type used in bfd. Too many systems define their own
1.35858 ++ versions of "boolean" for us to safely typedef a "boolean" of
1.35859 ++ our own. Using an enum for "bfd_boolean" has its own set of
1.35860 ++ problems, with strange looking casts required to avoid warnings
1.35861 ++ on some older compilers. Thus we just use an int.
1.35862 ++
1.35863 ++ General rule: Functions which are bfd_boolean return TRUE on
1.35864 ++ success and FALSE on failure (unless they're a predicate). */
1.35865 ++
1.35866 ++typedef int bfd_boolean;
1.35867 ++#undef FALSE
1.35868 ++#undef TRUE
1.35869 ++#define FALSE 0
1.35870 ++#define TRUE 1
1.35871 ++
1.35872 ++#ifdef BFD64
1.35873 ++
1.35874 ++#ifndef BFD_HOST_64_BIT
1.35875 ++ #error No 64 bit integer type available
1.35876 ++#endif /* ! defined (BFD_HOST_64_BIT) */
1.35877 ++
1.35878 ++typedef BFD_HOST_U_64_BIT bfd_vma;
1.35879 ++typedef BFD_HOST_64_BIT bfd_signed_vma;
1.35880 ++typedef BFD_HOST_U_64_BIT bfd_size_type;
1.35881 ++typedef BFD_HOST_U_64_BIT symvalue;
1.35882 ++
1.35883 ++#ifndef fprintf_vma
1.35884 ++#if BFD_HOST_64BIT_LONG
1.35885 ++#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
1.35886 ++#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
1.35887 ++#elif BFD_HOST_64BIT_LONG_LONG
1.35888 ++#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
1.35889 ++#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
1.35890 ++#else
1.35891 ++#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
1.35892 ++#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
1.35893 ++#define fprintf_vma(s,x) \
1.35894 ++ fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
1.35895 ++#define sprintf_vma(s,x) \
1.35896 ++ sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
1.35897 ++#endif
1.35898 ++#endif
1.35899 ++
1.35900 ++#else /* not BFD64 */
1.35901 ++
1.35902 ++/* Represent a target address. Also used as a generic unsigned type
1.35903 ++ which is guaranteed to be big enough to hold any arithmetic types
1.35904 ++ we need to deal with. */
1.35905 ++typedef unsigned long bfd_vma;
1.35906 ++
1.35907 ++/* A generic signed type which is guaranteed to be big enough to hold any
1.35908 ++ arithmetic types we need to deal with. Can be assumed to be compatible
1.35909 ++ with bfd_vma in the same way that signed and unsigned ints are compatible
1.35910 ++ (as parameters, in assignment, etc). */
1.35911 ++typedef long bfd_signed_vma;
1.35912 ++
1.35913 ++typedef unsigned long symvalue;
1.35914 ++typedef unsigned long bfd_size_type;
1.35915 ++
1.35916 ++/* Print a bfd_vma x on stream s. */
1.35917 ++#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
1.35918 ++#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
1.35919 ++
1.35920 ++#endif /* not BFD64 */
1.35921 ++
1.35922 ++#define HALF_BFD_SIZE_TYPE \
1.35923 ++ (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
1.35924 ++
1.35925 ++#ifndef BFD_HOST_64_BIT
1.35926 ++/* Fall back on a 32 bit type. The idea is to make these types always
1.35927 ++ available for function return types, but in the case that
1.35928 ++ BFD_HOST_64_BIT is undefined such a function should abort or
1.35929 ++ otherwise signal an error. */
1.35930 ++typedef bfd_signed_vma bfd_int64_t;
1.35931 ++typedef bfd_vma bfd_uint64_t;
1.35932 ++#endif
1.35933 ++
1.35934 ++/* An offset into a file. BFD always uses the largest possible offset
1.35935 ++ based on the build time availability of fseek, fseeko, or fseeko64. */
1.35936 ++typedef @bfd_file_ptr@ file_ptr;
1.35937 ++typedef unsigned @bfd_file_ptr@ ufile_ptr;
1.35938 ++
1.35939 ++extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
1.35940 ++extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
1.35941 ++
1.35942 ++#define printf_vma(x) fprintf_vma(stdout,x)
1.35943 ++#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
1.35944 ++
1.35945 ++typedef unsigned int flagword; /* 32 bits of flags */
1.35946 ++typedef unsigned char bfd_byte;
1.35947 ++
1.35948 ++/* File formats. */
1.35949 ++
1.35950 ++typedef enum bfd_format
1.35951 ++{
1.35952 ++ bfd_unknown = 0, /* File format is unknown. */
1.35953 ++ bfd_object, /* Linker/assembler/compiler output. */
1.35954 ++ bfd_archive, /* Object archive file. */
1.35955 ++ bfd_core, /* Core dump. */
1.35956 ++ bfd_type_end /* Marks the end; don't use it! */
1.35957 ++}
1.35958 ++bfd_format;
1.35959 ++
1.35960 ++/* Values that may appear in the flags field of a BFD. These also
1.35961 ++ appear in the object_flags field of the bfd_target structure, where
1.35962 ++ they indicate the set of flags used by that backend (not all flags
1.35963 ++ are meaningful for all object file formats) (FIXME: at the moment,
1.35964 ++ the object_flags values have mostly just been copied from backend
1.35965 ++ to another, and are not necessarily correct). */
1.35966 ++
1.35967 ++/* No flags. */
1.35968 ++#define BFD_NO_FLAGS 0x00
1.35969 ++
1.35970 ++/* BFD contains relocation entries. */
1.35971 ++#define HAS_RELOC 0x01
1.35972 ++
1.35973 ++/* BFD is directly executable. */
1.35974 ++#define EXEC_P 0x02
1.35975 ++
1.35976 ++/* BFD has line number information (basically used for F_LNNO in a
1.35977 ++ COFF header). */
1.35978 ++#define HAS_LINENO 0x04
1.35979 ++
1.35980 ++/* BFD has debugging information. */
1.35981 ++#define HAS_DEBUG 0x08
1.35982 ++
1.35983 ++/* BFD has symbols. */
1.35984 ++#define HAS_SYMS 0x10
1.35985 ++
1.35986 ++/* BFD has local symbols (basically used for F_LSYMS in a COFF
1.35987 ++ header). */
1.35988 ++#define HAS_LOCALS 0x20
1.35989 ++
1.35990 ++/* BFD is a dynamic object. */
1.35991 ++#define DYNAMIC 0x40
1.35992 ++
1.35993 ++/* Text section is write protected (if D_PAGED is not set, this is
1.35994 ++ like an a.out NMAGIC file) (the linker sets this by default, but
1.35995 ++ clears it for -r or -N). */
1.35996 ++#define WP_TEXT 0x80
1.35997 ++
1.35998 ++/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
1.35999 ++ linker sets this by default, but clears it for -r or -n or -N). */
1.36000 ++#define D_PAGED 0x100
1.36001 ++
1.36002 ++/* BFD is relaxable (this means that bfd_relax_section may be able to
1.36003 ++ do something) (sometimes bfd_relax_section can do something even if
1.36004 ++ this is not set). */
1.36005 ++#define BFD_IS_RELAXABLE 0x200
1.36006 ++
1.36007 ++/* This may be set before writing out a BFD to request using a
1.36008 ++ traditional format. For example, this is used to request that when
1.36009 ++ writing out an a.out object the symbols not be hashed to eliminate
1.36010 ++ duplicates. */
1.36011 ++#define BFD_TRADITIONAL_FORMAT 0x400
1.36012 ++
1.36013 ++/* This flag indicates that the BFD contents are actually cached in
1.36014 ++ memory. If this is set, iostream points to a bfd_in_memory struct. */
1.36015 ++#define BFD_IN_MEMORY 0x800
1.36016 ++
1.36017 ++/* The sections in this BFD specify a memory page. */
1.36018 ++#define HAS_LOAD_PAGE 0x1000
1.36019 ++
1.36020 ++/* This BFD has been created by the linker and doesn't correspond
1.36021 ++ to any input file. */
1.36022 ++#define BFD_LINKER_CREATED 0x2000
1.36023 ++
1.36024 ++/* Symbols and relocation. */
1.36025 ++
1.36026 ++/* A count of carsyms (canonical archive symbols). */
1.36027 ++typedef unsigned long symindex;
1.36028 ++
1.36029 ++/* How to perform a relocation. */
1.36030 ++typedef const struct reloc_howto_struct reloc_howto_type;
1.36031 ++
1.36032 ++#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
1.36033 ++
1.36034 ++/* General purpose part of a symbol X;
1.36035 ++ target specific parts are in libcoff.h, libaout.h, etc. */
1.36036 ++
1.36037 ++#define bfd_get_section(x) ((x)->section)
1.36038 ++#define bfd_get_output_section(x) ((x)->section->output_section)
1.36039 ++#define bfd_set_section(x,y) ((x)->section) = (y)
1.36040 ++#define bfd_asymbol_base(x) ((x)->section->vma)
1.36041 ++#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
1.36042 ++#define bfd_asymbol_name(x) ((x)->name)
1.36043 ++/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
1.36044 ++#define bfd_asymbol_bfd(x) ((x)->the_bfd)
1.36045 ++#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
1.36046 ++
1.36047 ++/* A canonical archive symbol. */
1.36048 ++/* This is a type pun with struct ranlib on purpose! */
1.36049 ++typedef struct carsym
1.36050 ++{
1.36051 ++ char *name;
1.36052 ++ file_ptr file_offset; /* Look here to find the file. */
1.36053 ++}
1.36054 ++carsym; /* To make these you call a carsymogen. */
1.36055 ++
1.36056 ++/* Used in generating armaps (archive tables of contents).
1.36057 ++ Perhaps just a forward definition would do? */
1.36058 ++struct orl /* Output ranlib. */
1.36059 ++{
1.36060 ++ char **name; /* Symbol name. */
1.36061 ++ union
1.36062 ++ {
1.36063 ++ file_ptr pos;
1.36064 ++ bfd *abfd;
1.36065 ++ } u; /* bfd* or file position. */
1.36066 ++ int namidx; /* Index into string table. */
1.36067 ++};
1.36068 ++
1.36069 ++/* Linenumber stuff. */
1.36070 ++typedef struct lineno_cache_entry
1.36071 ++{
1.36072 ++ unsigned int line_number; /* Linenumber from start of function. */
1.36073 ++ union
1.36074 ++ {
1.36075 ++ struct bfd_symbol *sym; /* Function name. */
1.36076 ++ bfd_vma offset; /* Offset into section. */
1.36077 ++ } u;
1.36078 ++}
1.36079 ++alent;
1.36080 ++
1.36081 ++/* Object and core file sections. */
1.36082 ++
1.36083 ++#define align_power(addr, align) \
1.36084 ++ (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
1.36085 ++
1.36086 ++typedef struct bfd_section *sec_ptr;
1.36087 ++
1.36088 ++#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
1.36089 ++#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
1.36090 ++#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
1.36091 ++#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
1.36092 ++#define bfd_section_name(bfd, ptr) ((ptr)->name)
1.36093 ++#define bfd_section_size(bfd, ptr) ((ptr)->size)
1.36094 ++#define bfd_get_section_size(ptr) ((ptr)->size)
1.36095 ++#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
1.36096 ++#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
1.36097 ++#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
1.36098 ++#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
1.36099 ++#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
1.36100 ++
1.36101 ++#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
1.36102 ++
1.36103 ++#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
1.36104 ++#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
1.36105 ++#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
1.36106 ++/* Find the address one past the end of SEC. */
1.36107 ++#define bfd_get_section_limit(bfd, sec) \
1.36108 ++ (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
1.36109 ++ / bfd_octets_per_byte (bfd))
1.36110 ++
1.36111 ++/* Return TRUE if section has been discarded. */
1.36112 ++#define elf_discarded_section(sec) \
1.36113 ++ (!bfd_is_abs_section (sec) \
1.36114 ++ && bfd_is_abs_section ((sec)->output_section) \
1.36115 ++ && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \
1.36116 ++ && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
1.36117 ++
1.36118 ++/* Forward define. */
1.36119 ++struct stat;
1.36120 ++
1.36121 ++typedef enum bfd_print_symbol
1.36122 ++{
1.36123 ++ bfd_print_symbol_name,
1.36124 ++ bfd_print_symbol_more,
1.36125 ++ bfd_print_symbol_all
1.36126 ++} bfd_print_symbol_type;
1.36127 ++
1.36128 ++/* Information about a symbol that nm needs. */
1.36129 ++
1.36130 ++typedef struct _symbol_info
1.36131 ++{
1.36132 ++ symvalue value;
1.36133 ++ char type;
1.36134 ++ const char *name; /* Symbol name. */
1.36135 ++ unsigned char stab_type; /* Stab type. */
1.36136 ++ char stab_other; /* Stab other. */
1.36137 ++ short stab_desc; /* Stab desc. */
1.36138 ++ const char *stab_name; /* String for stab type. */
1.36139 ++} symbol_info;
1.36140 ++
1.36141 ++/* Get the name of a stabs type code. */
1.36142 ++
1.36143 ++extern const char *bfd_get_stab_name (int);
1.36144 ++
1.36145 ++/* Hash table routines. There is no way to free up a hash table. */
1.36146 ++
1.36147 ++/* An element in the hash table. Most uses will actually use a larger
1.36148 ++ structure, and an instance of this will be the first field. */
1.36149 ++
1.36150 ++struct bfd_hash_entry
1.36151 ++{
1.36152 ++ /* Next entry for this hash code. */
1.36153 ++ struct bfd_hash_entry *next;
1.36154 ++ /* String being hashed. */
1.36155 ++ const char *string;
1.36156 ++ /* Hash code. This is the full hash code, not the index into the
1.36157 ++ table. */
1.36158 ++ unsigned long hash;
1.36159 ++};
1.36160 ++
1.36161 ++/* A hash table. */
1.36162 ++
1.36163 ++struct bfd_hash_table
1.36164 ++{
1.36165 ++ /* The hash array. */
1.36166 ++ struct bfd_hash_entry **table;
1.36167 ++ /* A function used to create new elements in the hash table. The
1.36168 ++ first entry is itself a pointer to an element. When this
1.36169 ++ function is first invoked, this pointer will be NULL. However,
1.36170 ++ having the pointer permits a hierarchy of method functions to be
1.36171 ++ built each of which calls the function in the superclass. Thus
1.36172 ++ each function should be written to allocate a new block of memory
1.36173 ++ only if the argument is NULL. */
1.36174 ++ struct bfd_hash_entry *(*newfunc)
1.36175 ++ (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
1.36176 ++ /* An objalloc for this hash table. This is a struct objalloc *,
1.36177 ++ but we use void * to avoid requiring the inclusion of objalloc.h. */
1.36178 ++ void *memory;
1.36179 ++ /* The number of slots in the hash table. */
1.36180 ++ unsigned int size;
1.36181 ++ /* The number of entries in the hash table. */
1.36182 ++ unsigned int count;
1.36183 ++ /* The size of elements. */
1.36184 ++ unsigned int entsize;
1.36185 ++ /* If non-zero, don't grow the hash table. */
1.36186 ++ unsigned int frozen:1;
1.36187 ++};
1.36188 ++
1.36189 ++/* Initialize a hash table. */
1.36190 ++extern bfd_boolean bfd_hash_table_init
1.36191 ++ (struct bfd_hash_table *,
1.36192 ++ struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
1.36193 ++ struct bfd_hash_table *,
1.36194 ++ const char *),
1.36195 ++ unsigned int);
1.36196 ++
1.36197 ++/* Initialize a hash table specifying a size. */
1.36198 ++extern bfd_boolean bfd_hash_table_init_n
1.36199 ++ (struct bfd_hash_table *,
1.36200 ++ struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
1.36201 ++ struct bfd_hash_table *,
1.36202 ++ const char *),
1.36203 ++ unsigned int, unsigned int);
1.36204 ++
1.36205 ++/* Free up a hash table. */
1.36206 ++extern void bfd_hash_table_free
1.36207 ++ (struct bfd_hash_table *);
1.36208 ++
1.36209 ++/* Look up a string in a hash table. If CREATE is TRUE, a new entry
1.36210 ++ will be created for this string if one does not already exist. The
1.36211 ++ COPY argument must be TRUE if this routine should copy the string
1.36212 ++ into newly allocated memory when adding an entry. */
1.36213 ++extern struct bfd_hash_entry *bfd_hash_lookup
1.36214 ++ (struct bfd_hash_table *, const char *, bfd_boolean create,
1.36215 ++ bfd_boolean copy);
1.36216 ++
1.36217 ++/* Replace an entry in a hash table. */
1.36218 ++extern void bfd_hash_replace
1.36219 ++ (struct bfd_hash_table *, struct bfd_hash_entry *old,
1.36220 ++ struct bfd_hash_entry *nw);
1.36221 ++
1.36222 ++/* Base method for creating a hash table entry. */
1.36223 ++extern struct bfd_hash_entry *bfd_hash_newfunc
1.36224 ++ (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
1.36225 ++
1.36226 ++/* Grab some space for a hash table entry. */
1.36227 ++extern void *bfd_hash_allocate
1.36228 ++ (struct bfd_hash_table *, unsigned int);
1.36229 ++
1.36230 ++/* Traverse a hash table in a random order, calling a function on each
1.36231 ++ element. If the function returns FALSE, the traversal stops. The
1.36232 ++ INFO argument is passed to the function. */
1.36233 ++extern void bfd_hash_traverse
1.36234 ++ (struct bfd_hash_table *,
1.36235 ++ bfd_boolean (*) (struct bfd_hash_entry *, void *),
1.36236 ++ void *info);
1.36237 ++
1.36238 ++/* Allows the default size of a hash table to be configured. New hash
1.36239 ++ tables allocated using bfd_hash_table_init will be created with
1.36240 ++ this size. */
1.36241 ++extern void bfd_hash_set_default_size (bfd_size_type);
1.36242 ++
1.36243 ++/* This structure is used to keep track of stabs in sections
1.36244 ++ information while linking. */
1.36245 ++
1.36246 ++struct stab_info
1.36247 ++{
1.36248 ++ /* A hash table used to hold stabs strings. */
1.36249 ++ struct bfd_strtab_hash *strings;
1.36250 ++ /* The header file hash table. */
1.36251 ++ struct bfd_hash_table includes;
1.36252 ++ /* The first .stabstr section. */
1.36253 ++ struct bfd_section *stabstr;
1.36254 ++};
1.36255 ++
1.36256 ++#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
1.36257 ++
1.36258 ++/* User program access to BFD facilities. */
1.36259 ++
1.36260 ++/* Direct I/O routines, for programs which know more about the object
1.36261 ++ file than BFD does. Use higher level routines if possible. */
1.36262 ++
1.36263 ++extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
1.36264 ++extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
1.36265 ++extern int bfd_seek (bfd *, file_ptr, int);
1.36266 ++extern file_ptr bfd_tell (bfd *);
1.36267 ++extern int bfd_flush (bfd *);
1.36268 ++extern int bfd_stat (bfd *, struct stat *);
1.36269 ++
1.36270 ++/* Deprecated old routines. */
1.36271 ++#if __GNUC__
1.36272 ++#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
1.36273 ++ (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
1.36274 ++ bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
1.36275 ++#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
1.36276 ++ (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
1.36277 ++ bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
1.36278 ++#else
1.36279 ++#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
1.36280 ++ (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
1.36281 ++ bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
1.36282 ++#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
1.36283 ++ (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
1.36284 ++ bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
1.36285 ++#endif
1.36286 ++extern void warn_deprecated (const char *, const char *, int, const char *);
1.36287 ++
1.36288 ++/* Cast from const char * to char * so that caller can assign to
1.36289 ++ a char * without a warning. */
1.36290 ++#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
1.36291 ++#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
1.36292 ++#define bfd_get_format(abfd) ((abfd)->format)
1.36293 ++#define bfd_get_target(abfd) ((abfd)->xvec->name)
1.36294 ++#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
1.36295 ++#define bfd_family_coff(abfd) \
1.36296 ++ (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
1.36297 ++ bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
1.36298 ++#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
1.36299 ++#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
1.36300 ++#define bfd_header_big_endian(abfd) \
1.36301 ++ ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
1.36302 ++#define bfd_header_little_endian(abfd) \
1.36303 ++ ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
1.36304 ++#define bfd_get_file_flags(abfd) ((abfd)->flags)
1.36305 ++#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
1.36306 ++#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
1.36307 ++#define bfd_my_archive(abfd) ((abfd)->my_archive)
1.36308 ++#define bfd_has_map(abfd) ((abfd)->has_armap)
1.36309 ++
1.36310 ++#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
1.36311 ++#define bfd_usrdata(abfd) ((abfd)->usrdata)
1.36312 ++
1.36313 ++#define bfd_get_start_address(abfd) ((abfd)->start_address)
1.36314 ++#define bfd_get_symcount(abfd) ((abfd)->symcount)
1.36315 ++#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
1.36316 ++#define bfd_count_sections(abfd) ((abfd)->section_count)
1.36317 ++
1.36318 ++#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
1.36319 ++
1.36320 ++#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
1.36321 ++
1.36322 ++#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
1.36323 ++
1.36324 ++extern bfd_boolean bfd_cache_close
1.36325 ++ (bfd *abfd);
1.36326 ++/* NB: This declaration should match the autogenerated one in libbfd.h. */
1.36327 ++
1.36328 ++extern bfd_boolean bfd_cache_close_all (void);
1.36329 ++
1.36330 ++extern bfd_boolean bfd_record_phdr
1.36331 ++ (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
1.36332 ++ bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
1.36333 ++
1.36334 ++/* Byte swapping routines. */
1.36335 ++
1.36336 ++bfd_uint64_t bfd_getb64 (const void *);
1.36337 ++bfd_uint64_t bfd_getl64 (const void *);
1.36338 ++bfd_int64_t bfd_getb_signed_64 (const void *);
1.36339 ++bfd_int64_t bfd_getl_signed_64 (const void *);
1.36340 ++bfd_vma bfd_getb32 (const void *);
1.36341 ++bfd_vma bfd_getl32 (const void *);
1.36342 ++bfd_signed_vma bfd_getb_signed_32 (const void *);
1.36343 ++bfd_signed_vma bfd_getl_signed_32 (const void *);
1.36344 ++bfd_vma bfd_getb16 (const void *);
1.36345 ++bfd_vma bfd_getl16 (const void *);
1.36346 ++bfd_signed_vma bfd_getb_signed_16 (const void *);
1.36347 ++bfd_signed_vma bfd_getl_signed_16 (const void *);
1.36348 ++void bfd_putb64 (bfd_uint64_t, void *);
1.36349 ++void bfd_putl64 (bfd_uint64_t, void *);
1.36350 ++void bfd_putb32 (bfd_vma, void *);
1.36351 ++void bfd_putl32 (bfd_vma, void *);
1.36352 ++void bfd_putb16 (bfd_vma, void *);
1.36353 ++void bfd_putl16 (bfd_vma, void *);
1.36354 ++
1.36355 ++/* Byte swapping routines which take size and endiannes as arguments. */
1.36356 ++
1.36357 ++bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
1.36358 ++void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
1.36359 ++
1.36360 ++extern bfd_boolean bfd_section_already_linked_table_init (void);
1.36361 ++extern void bfd_section_already_linked_table_free (void);
1.36362 ++
1.36363 ++/* Externally visible ECOFF routines. */
1.36364 ++
1.36365 ++#if defined(__STDC__) || defined(ALMOST_STDC)
1.36366 ++struct ecoff_debug_info;
1.36367 ++struct ecoff_debug_swap;
1.36368 ++struct ecoff_extr;
1.36369 ++struct bfd_symbol;
1.36370 ++struct bfd_link_info;
1.36371 ++struct bfd_link_hash_entry;
1.36372 ++struct bfd_elf_version_tree;
1.36373 ++#endif
1.36374 ++extern bfd_vma bfd_ecoff_get_gp_value
1.36375 ++ (bfd * abfd);
1.36376 ++extern bfd_boolean bfd_ecoff_set_gp_value
1.36377 ++ (bfd *abfd, bfd_vma gp_value);
1.36378 ++extern bfd_boolean bfd_ecoff_set_regmasks
1.36379 ++ (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
1.36380 ++ unsigned long *cprmask);
1.36381 ++extern void *bfd_ecoff_debug_init
1.36382 ++ (bfd *output_bfd, struct ecoff_debug_info *output_debug,
1.36383 ++ const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
1.36384 ++extern void bfd_ecoff_debug_free
1.36385 ++ (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
1.36386 ++ const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
1.36387 ++extern bfd_boolean bfd_ecoff_debug_accumulate
1.36388 ++ (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
1.36389 ++ const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
1.36390 ++ struct ecoff_debug_info *input_debug,
1.36391 ++ const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
1.36392 ++extern bfd_boolean bfd_ecoff_debug_accumulate_other
1.36393 ++ (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
1.36394 ++ const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
1.36395 ++ struct bfd_link_info *);
1.36396 ++extern bfd_boolean bfd_ecoff_debug_externals
1.36397 ++ (bfd *abfd, struct ecoff_debug_info *debug,
1.36398 ++ const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
1.36399 ++ bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
1.36400 ++ void (*set_index) (struct bfd_symbol *, bfd_size_type));
1.36401 ++extern bfd_boolean bfd_ecoff_debug_one_external
1.36402 ++ (bfd *abfd, struct ecoff_debug_info *debug,
1.36403 ++ const struct ecoff_debug_swap *swap, const char *name,
1.36404 ++ struct ecoff_extr *esym);
1.36405 ++extern bfd_size_type bfd_ecoff_debug_size
1.36406 ++ (bfd *abfd, struct ecoff_debug_info *debug,
1.36407 ++ const struct ecoff_debug_swap *swap);
1.36408 ++extern bfd_boolean bfd_ecoff_write_debug
1.36409 ++ (bfd *abfd, struct ecoff_debug_info *debug,
1.36410 ++ const struct ecoff_debug_swap *swap, file_ptr where);
1.36411 ++extern bfd_boolean bfd_ecoff_write_accumulated_debug
1.36412 ++ (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
1.36413 ++ const struct ecoff_debug_swap *swap,
1.36414 ++ struct bfd_link_info *info, file_ptr where);
1.36415 ++
1.36416 ++/* Externally visible ELF routines. */
1.36417 ++
1.36418 ++struct bfd_link_needed_list
1.36419 ++{
1.36420 ++ struct bfd_link_needed_list *next;
1.36421 ++ bfd *by;
1.36422 ++ const char *name;
1.36423 ++};
1.36424 ++
1.36425 ++enum dynamic_lib_link_class {
1.36426 ++ DYN_NORMAL = 0,
1.36427 ++ DYN_AS_NEEDED = 1,
1.36428 ++ DYN_DT_NEEDED = 2,
1.36429 ++ DYN_NO_ADD_NEEDED = 4,
1.36430 ++ DYN_NO_NEEDED = 8
1.36431 ++};
1.36432 ++
1.36433 ++enum notice_asneeded_action {
1.36434 ++ notice_as_needed,
1.36435 ++ notice_not_needed,
1.36436 ++ notice_needed
1.36437 ++};
1.36438 ++
1.36439 ++extern bfd_boolean bfd_elf_record_link_assignment
1.36440 ++ (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
1.36441 ++ bfd_boolean);
1.36442 ++extern struct bfd_link_needed_list *bfd_elf_get_needed_list
1.36443 ++ (bfd *, struct bfd_link_info *);
1.36444 ++extern bfd_boolean bfd_elf_get_bfd_needed_list
1.36445 ++ (bfd *, struct bfd_link_needed_list **);
1.36446 ++extern bfd_boolean bfd_elf_size_dynamic_sections
1.36447 ++ (bfd *, const char *, const char *, const char *, const char * const *,
1.36448 ++ struct bfd_link_info *, struct bfd_section **,
1.36449 ++ struct bfd_elf_version_tree *);
1.36450 ++extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
1.36451 ++ (bfd *, struct bfd_link_info *);
1.36452 ++extern void bfd_elf_set_dt_needed_name
1.36453 ++ (bfd *, const char *);
1.36454 ++extern const char *bfd_elf_get_dt_soname
1.36455 ++ (bfd *);
1.36456 ++extern void bfd_elf_set_dyn_lib_class
1.36457 ++ (bfd *, enum dynamic_lib_link_class);
1.36458 ++extern int bfd_elf_get_dyn_lib_class
1.36459 ++ (bfd *);
1.36460 ++extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
1.36461 ++ (bfd *, struct bfd_link_info *);
1.36462 ++extern bfd_boolean bfd_elf_discard_info
1.36463 ++ (bfd *, struct bfd_link_info *);
1.36464 ++extern unsigned int _bfd_elf_default_action_discarded
1.36465 ++ (struct bfd_section *);
1.36466 ++
1.36467 ++/* Return an upper bound on the number of bytes required to store a
1.36468 ++ copy of ABFD's program header table entries. Return -1 if an error
1.36469 ++ occurs; bfd_get_error will return an appropriate code. */
1.36470 ++extern long bfd_get_elf_phdr_upper_bound
1.36471 ++ (bfd *abfd);
1.36472 ++
1.36473 ++/* Copy ABFD's program header table entries to *PHDRS. The entries
1.36474 ++ will be stored as an array of Elf_Internal_Phdr structures, as
1.36475 ++ defined in include/elf/internal.h. To find out how large the
1.36476 ++ buffer needs to be, call bfd_get_elf_phdr_upper_bound.
1.36477 ++
1.36478 ++ Return the number of program header table entries read, or -1 if an
1.36479 ++ error occurs; bfd_get_error will return an appropriate code. */
1.36480 ++extern int bfd_get_elf_phdrs
1.36481 ++ (bfd *abfd, void *phdrs);
1.36482 ++
1.36483 ++/* Create a new BFD as if by bfd_openr. Rather than opening a file,
1.36484 ++ reconstruct an ELF file by reading the segments out of remote memory
1.36485 ++ based on the ELF file header at EHDR_VMA and the ELF program headers it
1.36486 ++ points to. If not null, *LOADBASEP is filled in with the difference
1.36487 ++ between the VMAs from which the segments were read, and the VMAs the
1.36488 ++ file headers (and hence BFD's idea of each section's VMA) put them at.
1.36489 ++
1.36490 ++ The function TARGET_READ_MEMORY is called to copy LEN bytes from the
1.36491 ++ remote memory at target address VMA into the local buffer at MYADDR; it
1.36492 ++ should return zero on success or an `errno' code on failure. TEMPL must
1.36493 ++ be a BFD for an ELF target with the word size and byte order found in
1.36494 ++ the remote memory. */
1.36495 ++extern bfd *bfd_elf_bfd_from_remote_memory
1.36496 ++ (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
1.36497 ++ int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
1.36498 ++
1.36499 ++/* Return the arch_size field of an elf bfd, or -1 if not elf. */
1.36500 ++extern int bfd_get_arch_size
1.36501 ++ (bfd *);
1.36502 ++
1.36503 ++/* Return TRUE if address "naturally" sign extends, or -1 if not elf. */
1.36504 ++extern int bfd_get_sign_extend_vma
1.36505 ++ (bfd *);
1.36506 ++
1.36507 ++extern struct bfd_section *_bfd_elf_tls_setup
1.36508 ++ (bfd *, struct bfd_link_info *);
1.36509 ++
1.36510 ++extern void _bfd_fix_excluded_sec_syms
1.36511 ++ (bfd *, struct bfd_link_info *);
1.36512 ++
1.36513 ++extern unsigned bfd_m68k_mach_to_features (int);
1.36514 ++
1.36515 ++extern int bfd_m68k_features_to_mach (unsigned);
1.36516 ++
1.36517 ++extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
1.36518 ++ (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
1.36519 ++ char **);
1.36520 ++
1.36521 ++extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
1.36522 ++ (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
1.36523 ++ char **);
1.36524 ++
1.36525 ++/* SunOS shared library support routines for the linker. */
1.36526 ++
1.36527 ++extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
1.36528 ++ (bfd *, struct bfd_link_info *);
1.36529 ++extern bfd_boolean bfd_sunos_record_link_assignment
1.36530 ++ (bfd *, struct bfd_link_info *, const char *);
1.36531 ++extern bfd_boolean bfd_sunos_size_dynamic_sections
1.36532 ++ (bfd *, struct bfd_link_info *, struct bfd_section **,
1.36533 ++ struct bfd_section **, struct bfd_section **);
1.36534 ++
1.36535 ++/* Linux shared library support routines for the linker. */
1.36536 ++
1.36537 ++extern bfd_boolean bfd_i386linux_size_dynamic_sections
1.36538 ++ (bfd *, struct bfd_link_info *);
1.36539 ++extern bfd_boolean bfd_m68klinux_size_dynamic_sections
1.36540 ++ (bfd *, struct bfd_link_info *);
1.36541 ++extern bfd_boolean bfd_sparclinux_size_dynamic_sections
1.36542 ++ (bfd *, struct bfd_link_info *);
1.36543 ++
1.36544 ++/* mmap hacks */
1.36545 ++
1.36546 ++struct _bfd_window_internal;
1.36547 ++typedef struct _bfd_window_internal bfd_window_internal;
1.36548 ++
1.36549 ++typedef struct _bfd_window
1.36550 ++{
1.36551 ++ /* What the user asked for. */
1.36552 ++ void *data;
1.36553 ++ bfd_size_type size;
1.36554 ++ /* The actual window used by BFD. Small user-requested read-only
1.36555 ++ regions sharing a page may share a single window into the object
1.36556 ++ file. Read-write versions shouldn't until I've fixed things to
1.36557 ++ keep track of which portions have been claimed by the
1.36558 ++ application; don't want to give the same region back when the
1.36559 ++ application wants two writable copies! */
1.36560 ++ struct _bfd_window_internal *i;
1.36561 ++}
1.36562 ++bfd_window;
1.36563 ++
1.36564 ++extern void bfd_init_window
1.36565 ++ (bfd_window *);
1.36566 ++extern void bfd_free_window
1.36567 ++ (bfd_window *);
1.36568 ++extern bfd_boolean bfd_get_file_window
1.36569 ++ (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
1.36570 ++
1.36571 ++/* XCOFF support routines for the linker. */
1.36572 ++
1.36573 ++extern bfd_boolean bfd_xcoff_link_record_set
1.36574 ++ (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
1.36575 ++extern bfd_boolean bfd_xcoff_import_symbol
1.36576 ++ (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
1.36577 ++ const char *, const char *, const char *, unsigned int);
1.36578 ++extern bfd_boolean bfd_xcoff_export_symbol
1.36579 ++ (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
1.36580 ++extern bfd_boolean bfd_xcoff_link_count_reloc
1.36581 ++ (bfd *, struct bfd_link_info *, const char *);
1.36582 ++extern bfd_boolean bfd_xcoff_record_link_assignment
1.36583 ++ (bfd *, struct bfd_link_info *, const char *);
1.36584 ++extern bfd_boolean bfd_xcoff_size_dynamic_sections
1.36585 ++ (bfd *, struct bfd_link_info *, const char *, const char *,
1.36586 ++ unsigned long, unsigned long, unsigned long, bfd_boolean,
1.36587 ++ int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
1.36588 ++extern bfd_boolean bfd_xcoff_link_generate_rtinit
1.36589 ++ (bfd *, const char *, const char *, bfd_boolean);
1.36590 ++
1.36591 ++/* XCOFF support routines for ar. */
1.36592 ++extern bfd_boolean bfd_xcoff_ar_archive_set_magic
1.36593 ++ (bfd *, char *);
1.36594 ++
1.36595 ++/* Externally visible COFF routines. */
1.36596 ++
1.36597 ++#if defined(__STDC__) || defined(ALMOST_STDC)
1.36598 ++struct internal_syment;
1.36599 ++union internal_auxent;
1.36600 ++#endif
1.36601 ++
1.36602 ++extern bfd_boolean bfd_coff_get_syment
1.36603 ++ (bfd *, struct bfd_symbol *, struct internal_syment *);
1.36604 ++
1.36605 ++extern bfd_boolean bfd_coff_get_auxent
1.36606 ++ (bfd *, struct bfd_symbol *, int, union internal_auxent *);
1.36607 ++
1.36608 ++extern bfd_boolean bfd_coff_set_symbol_class
1.36609 ++ (bfd *, struct bfd_symbol *, unsigned int);
1.36610 ++
1.36611 ++extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
1.36612 ++ (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
1.36613 ++
1.36614 ++/* ARM VFP11 erratum workaround support. */
1.36615 ++typedef enum
1.36616 ++{
1.36617 ++ BFD_ARM_VFP11_FIX_DEFAULT,
1.36618 ++ BFD_ARM_VFP11_FIX_NONE,
1.36619 ++ BFD_ARM_VFP11_FIX_SCALAR,
1.36620 ++ BFD_ARM_VFP11_FIX_VECTOR
1.36621 ++} bfd_arm_vfp11_fix;
1.36622 ++
1.36623 ++extern void bfd_elf32_arm_init_maps
1.36624 ++ (bfd *);
1.36625 ++
1.36626 ++extern void bfd_elf32_arm_set_vfp11_fix
1.36627 ++ (bfd *, struct bfd_link_info *);
1.36628 ++
1.36629 ++extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
1.36630 ++ (bfd *, struct bfd_link_info *);
1.36631 ++
1.36632 ++extern void bfd_elf32_arm_vfp11_fix_veneer_locations
1.36633 ++ (bfd *, struct bfd_link_info *);
1.36634 ++
1.36635 ++/* ARM Interworking support. Called from linker. */
1.36636 ++extern bfd_boolean bfd_arm_allocate_interworking_sections
1.36637 ++ (struct bfd_link_info *);
1.36638 ++
1.36639 ++extern bfd_boolean bfd_arm_process_before_allocation
1.36640 ++ (bfd *, struct bfd_link_info *, int);
1.36641 ++
1.36642 ++extern bfd_boolean bfd_arm_get_bfd_for_interworking
1.36643 ++ (bfd *, struct bfd_link_info *);
1.36644 ++
1.36645 ++/* PE ARM Interworking support. Called from linker. */
1.36646 ++extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
1.36647 ++ (struct bfd_link_info *);
1.36648 ++
1.36649 ++extern bfd_boolean bfd_arm_pe_process_before_allocation
1.36650 ++ (bfd *, struct bfd_link_info *, int);
1.36651 ++
1.36652 ++extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
1.36653 ++ (bfd *, struct bfd_link_info *);
1.36654 ++
1.36655 ++/* ELF ARM Interworking support. Called from linker. */
1.36656 ++extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
1.36657 ++ (struct bfd_link_info *);
1.36658 ++
1.36659 ++extern bfd_boolean bfd_elf32_arm_process_before_allocation
1.36660 ++ (bfd *, struct bfd_link_info *);
1.36661 ++
1.36662 ++void bfd_elf32_arm_set_target_relocs
1.36663 ++ (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
1.36664 ++ int, int);
1.36665 ++
1.36666 ++extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
1.36667 ++ (bfd *, struct bfd_link_info *);
1.36668 ++
1.36669 ++extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
1.36670 ++ (bfd *, struct bfd_link_info *);
1.36671 ++
1.36672 ++/* ELF ARM mapping symbol support */
1.36673 ++#define BFD_ARM_SPECIAL_SYM_TYPE_MAP (1 << 0)
1.36674 ++#define BFD_ARM_SPECIAL_SYM_TYPE_TAG (1 << 1)
1.36675 ++#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER (1 << 2)
1.36676 ++#define BFD_ARM_SPECIAL_SYM_TYPE_ANY (~0)
1.36677 ++extern bfd_boolean bfd_is_arm_special_symbol_name
1.36678 ++ (const char * name, int type);
1.36679 ++
1.36680 ++extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
1.36681 ++
1.36682 ++/* ARM Note section processing. */
1.36683 ++extern bfd_boolean bfd_arm_merge_machines
1.36684 ++ (bfd *, bfd *);
1.36685 ++
1.36686 ++extern bfd_boolean bfd_arm_update_notes
1.36687 ++ (bfd *, const char *);
1.36688 ++
1.36689 ++extern unsigned int bfd_arm_get_mach_from_notes
1.36690 ++ (bfd *, const char *);
1.36691 ++
1.36692 ++/* TI COFF load page support. */
1.36693 ++extern void bfd_ticoff_set_section_load_page
1.36694 ++ (struct bfd_section *, int);
1.36695 ++
1.36696 ++extern int bfd_ticoff_get_section_load_page
1.36697 ++ (struct bfd_section *);
1.36698 ++
1.36699 ++/* H8/300 functions. */
1.36700 ++extern bfd_vma bfd_h8300_pad_address
1.36701 ++ (bfd *, bfd_vma);
1.36702 ++
1.36703 ++/* IA64 Itanium code generation. Called from linker. */
1.36704 ++extern void bfd_elf32_ia64_after_parse
1.36705 ++ (int);
1.36706 ++
1.36707 ++extern void bfd_elf64_ia64_after_parse
1.36708 ++ (int);
1.36709 ++
1.36710 ++/* This structure is used for a comdat section, as in PE. A comdat
1.36711 ++ section is associated with a particular symbol. When the linker
1.36712 ++ sees a comdat section, it keeps only one of the sections with a
1.36713 ++ given name and associated with a given symbol. */
1.36714 ++
1.36715 ++struct coff_comdat_info
1.36716 ++{
1.36717 ++ /* The name of the symbol associated with a comdat section. */
1.36718 ++ const char *name;
1.36719 ++
1.36720 ++ /* The local symbol table index of the symbol associated with a
1.36721 ++ comdat section. This is only meaningful to the object file format
1.36722 ++ specific code; it is not an index into the list returned by
1.36723 ++ bfd_canonicalize_symtab. */
1.36724 ++ long symbol;
1.36725 ++};
1.36726 ++
1.36727 ++extern struct coff_comdat_info *bfd_coff_get_comdat_section
1.36728 ++ (bfd *, struct bfd_section *);
1.36729 ++
1.36730 ++/* Extracted from init.c. */
1.36731 ++void bfd_init (void);
1.36732 ++
1.36733 ++/* Extracted from opncls.c. */
1.36734 ++bfd *bfd_fopen (const char *filename, const char *target,
1.36735 ++ const char *mode, int fd);
1.36736 ++
1.36737 ++bfd *bfd_openr (const char *filename, const char *target);
1.36738 ++
1.36739 ++bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
1.36740 ++
1.36741 ++bfd *bfd_openstreamr (const char *, const char *, void *);
1.36742 ++
1.36743 ++bfd *bfd_openr_iovec (const char *filename, const char *target,
1.36744 ++ void *(*open) (struct bfd *nbfd,
1.36745 ++ void *open_closure),
1.36746 ++ void *open_closure,
1.36747 ++ file_ptr (*pread) (struct bfd *nbfd,
1.36748 ++ void *stream,
1.36749 ++ void *buf,
1.36750 ++ file_ptr nbytes,
1.36751 ++ file_ptr offset),
1.36752 ++ int (*close) (struct bfd *nbfd,
1.36753 ++ void *stream),
1.36754 ++ int (*stat) (struct bfd *abfd,
1.36755 ++ void *stream,
1.36756 ++ struct stat *sb));
1.36757 ++
1.36758 ++bfd *bfd_openw (const char *filename, const char *target);
1.36759 ++
1.36760 ++bfd_boolean bfd_close (bfd *abfd);
1.36761 ++
1.36762 ++bfd_boolean bfd_close_all_done (bfd *);
1.36763 ++
1.36764 ++bfd *bfd_create (const char *filename, bfd *templ);
1.36765 ++
1.36766 ++bfd_boolean bfd_make_writable (bfd *abfd);
1.36767 ++
1.36768 ++bfd_boolean bfd_make_readable (bfd *abfd);
1.36769 ++
1.36770 ++unsigned long bfd_calc_gnu_debuglink_crc32
1.36771 ++ (unsigned long crc, const unsigned char *buf, bfd_size_type len);
1.36772 ++
1.36773 ++char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
1.36774 ++
1.36775 ++struct bfd_section *bfd_create_gnu_debuglink_section
1.36776 ++ (bfd *abfd, const char *filename);
1.36777 ++
1.36778 ++bfd_boolean bfd_fill_in_gnu_debuglink_section
1.36779 ++ (bfd *abfd, struct bfd_section *sect, const char *filename);
1.36780 ++
1.36781 ++/* Extracted from libbfd.c. */
1.36782 ++
1.36783 ++/* Byte swapping macros for user section data. */
1.36784 ++
1.36785 ++#define bfd_put_8(abfd, val, ptr) \
1.36786 ++ ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
1.36787 ++#define bfd_put_signed_8 \
1.36788 ++ bfd_put_8
1.36789 ++#define bfd_get_8(abfd, ptr) \
1.36790 ++ (*(unsigned char *) (ptr) & 0xff)
1.36791 ++#define bfd_get_signed_8(abfd, ptr) \
1.36792 ++ (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
1.36793 ++
1.36794 ++#define bfd_put_16(abfd, val, ptr) \
1.36795 ++ BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
1.36796 ++#define bfd_put_signed_16 \
1.36797 ++ bfd_put_16
1.36798 ++#define bfd_get_16(abfd, ptr) \
1.36799 ++ BFD_SEND (abfd, bfd_getx16, (ptr))
1.36800 ++#define bfd_get_signed_16(abfd, ptr) \
1.36801 ++ BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
1.36802 ++
1.36803 ++#define bfd_put_32(abfd, val, ptr) \
1.36804 ++ BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
1.36805 ++#define bfd_put_signed_32 \
1.36806 ++ bfd_put_32
1.36807 ++#define bfd_get_32(abfd, ptr) \
1.36808 ++ BFD_SEND (abfd, bfd_getx32, (ptr))
1.36809 ++#define bfd_get_signed_32(abfd, ptr) \
1.36810 ++ BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
1.36811 ++
1.36812 ++#define bfd_put_64(abfd, val, ptr) \
1.36813 ++ BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
1.36814 ++#define bfd_put_signed_64 \
1.36815 ++ bfd_put_64
1.36816 ++#define bfd_get_64(abfd, ptr) \
1.36817 ++ BFD_SEND (abfd, bfd_getx64, (ptr))
1.36818 ++#define bfd_get_signed_64(abfd, ptr) \
1.36819 ++ BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
1.36820 ++
1.36821 ++#define bfd_get(bits, abfd, ptr) \
1.36822 ++ ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
1.36823 ++ : (bits) == 16 ? bfd_get_16 (abfd, ptr) \
1.36824 ++ : (bits) == 32 ? bfd_get_32 (abfd, ptr) \
1.36825 ++ : (bits) == 64 ? bfd_get_64 (abfd, ptr) \
1.36826 ++ : (abort (), (bfd_vma) - 1))
1.36827 ++
1.36828 ++#define bfd_put(bits, abfd, val, ptr) \
1.36829 ++ ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
1.36830 ++ : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
1.36831 ++ : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
1.36832 ++ : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
1.36833 ++ : (abort (), (void) 0))
1.36834 ++
1.36835 ++
1.36836 ++/* Byte swapping macros for file header data. */
1.36837 ++
1.36838 ++#define bfd_h_put_8(abfd, val, ptr) \
1.36839 ++ bfd_put_8 (abfd, val, ptr)
1.36840 ++#define bfd_h_put_signed_8(abfd, val, ptr) \
1.36841 ++ bfd_put_8 (abfd, val, ptr)
1.36842 ++#define bfd_h_get_8(abfd, ptr) \
1.36843 ++ bfd_get_8 (abfd, ptr)
1.36844 ++#define bfd_h_get_signed_8(abfd, ptr) \
1.36845 ++ bfd_get_signed_8 (abfd, ptr)
1.36846 ++
1.36847 ++#define bfd_h_put_16(abfd, val, ptr) \
1.36848 ++ BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
1.36849 ++#define bfd_h_put_signed_16 \
1.36850 ++ bfd_h_put_16
1.36851 ++#define bfd_h_get_16(abfd, ptr) \
1.36852 ++ BFD_SEND (abfd, bfd_h_getx16, (ptr))
1.36853 ++#define bfd_h_get_signed_16(abfd, ptr) \
1.36854 ++ BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
1.36855 ++
1.36856 ++#define bfd_h_put_32(abfd, val, ptr) \
1.36857 ++ BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
1.36858 ++#define bfd_h_put_signed_32 \
1.36859 ++ bfd_h_put_32
1.36860 ++#define bfd_h_get_32(abfd, ptr) \
1.36861 ++ BFD_SEND (abfd, bfd_h_getx32, (ptr))
1.36862 ++#define bfd_h_get_signed_32(abfd, ptr) \
1.36863 ++ BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
1.36864 ++
1.36865 ++#define bfd_h_put_64(abfd, val, ptr) \
1.36866 ++ BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
1.36867 ++#define bfd_h_put_signed_64 \
1.36868 ++ bfd_h_put_64
1.36869 ++#define bfd_h_get_64(abfd, ptr) \
1.36870 ++ BFD_SEND (abfd, bfd_h_getx64, (ptr))
1.36871 ++#define bfd_h_get_signed_64(abfd, ptr) \
1.36872 ++ BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
1.36873 ++
1.36874 ++/* Aliases for the above, which should eventually go away. */
1.36875 ++
1.36876 ++#define H_PUT_64 bfd_h_put_64
1.36877 ++#define H_PUT_32 bfd_h_put_32
1.36878 ++#define H_PUT_16 bfd_h_put_16
1.36879 ++#define H_PUT_8 bfd_h_put_8
1.36880 ++#define H_PUT_S64 bfd_h_put_signed_64
1.36881 ++#define H_PUT_S32 bfd_h_put_signed_32
1.36882 ++#define H_PUT_S16 bfd_h_put_signed_16
1.36883 ++#define H_PUT_S8 bfd_h_put_signed_8
1.36884 ++#define H_GET_64 bfd_h_get_64
1.36885 ++#define H_GET_32 bfd_h_get_32
1.36886 ++#define H_GET_16 bfd_h_get_16
1.36887 ++#define H_GET_8 bfd_h_get_8
1.36888 ++#define H_GET_S64 bfd_h_get_signed_64
1.36889 ++#define H_GET_S32 bfd_h_get_signed_32
1.36890 ++#define H_GET_S16 bfd_h_get_signed_16
1.36891 ++#define H_GET_S8 bfd_h_get_signed_8
1.36892 ++
1.36893 ++
1.36894 ++/* Extracted from bfdio.c. */
1.36895 ++long bfd_get_mtime (bfd *abfd);
1.36896 ++
1.36897 ++file_ptr bfd_get_size (bfd *abfd);
1.36898 ++
1.36899 ++/* Extracted from bfdwin.c. */
1.36900 ++/* Extracted from section.c. */
1.36901 ++typedef struct bfd_section
1.36902 ++{
1.36903 ++ /* The name of the section; the name isn't a copy, the pointer is
1.36904 ++ the same as that passed to bfd_make_section. */
1.36905 ++ const char *name;
1.36906 ++
1.36907 ++ /* A unique sequence number. */
1.36908 ++ int id;
1.36909 ++
1.36910 ++ /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
1.36911 ++ int index;
1.36912 ++
1.36913 ++ /* The next section in the list belonging to the BFD, or NULL. */
1.36914 ++ struct bfd_section *next;
1.36915 ++
1.36916 ++ /* The previous section in the list belonging to the BFD, or NULL. */
1.36917 ++ struct bfd_section *prev;
1.36918 ++
1.36919 ++ /* The field flags contains attributes of the section. Some
1.36920 ++ flags are read in from the object file, and some are
1.36921 ++ synthesized from other information. */
1.36922 ++ flagword flags;
1.36923 ++
1.36924 ++#define SEC_NO_FLAGS 0x000
1.36925 ++
1.36926 ++ /* Tells the OS to allocate space for this section when loading.
1.36927 ++ This is clear for a section containing debug information only. */
1.36928 ++#define SEC_ALLOC 0x001
1.36929 ++
1.36930 ++ /* Tells the OS to load the section from the file when loading.
1.36931 ++ This is clear for a .bss section. */
1.36932 ++#define SEC_LOAD 0x002
1.36933 ++
1.36934 ++ /* The section contains data still to be relocated, so there is
1.36935 ++ some relocation information too. */
1.36936 ++#define SEC_RELOC 0x004
1.36937 ++
1.36938 ++ /* A signal to the OS that the section contains read only data. */
1.36939 ++#define SEC_READONLY 0x008
1.36940 ++
1.36941 ++ /* The section contains code only. */
1.36942 ++#define SEC_CODE 0x010
1.36943 ++
1.36944 ++ /* The section contains data only. */
1.36945 ++#define SEC_DATA 0x020
1.36946 ++
1.36947 ++ /* The section will reside in ROM. */
1.36948 ++#define SEC_ROM 0x040
1.36949 ++
1.36950 ++ /* The section contains constructor information. This section
1.36951 ++ type is used by the linker to create lists of constructors and
1.36952 ++ destructors used by <<g++>>. When a back end sees a symbol
1.36953 ++ which should be used in a constructor list, it creates a new
1.36954 ++ section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
1.36955 ++ the symbol to it, and builds a relocation. To build the lists
1.36956 ++ of constructors, all the linker has to do is catenate all the
1.36957 ++ sections called <<__CTOR_LIST__>> and relocate the data
1.36958 ++ contained within - exactly the operations it would peform on
1.36959 ++ standard data. */
1.36960 ++#define SEC_CONSTRUCTOR 0x080
1.36961 ++
1.36962 ++ /* The section has contents - a data section could be
1.36963 ++ <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
1.36964 ++ <<SEC_HAS_CONTENTS>> */
1.36965 ++#define SEC_HAS_CONTENTS 0x100
1.36966 ++
1.36967 ++ /* An instruction to the linker to not output the section
1.36968 ++ even if it has information which would normally be written. */
1.36969 ++#define SEC_NEVER_LOAD 0x200
1.36970 ++
1.36971 ++ /* The section contains thread local data. */
1.36972 ++#define SEC_THREAD_LOCAL 0x400
1.36973 ++
1.36974 ++ /* The section has GOT references. This flag is only for the
1.36975 ++ linker, and is currently only used by the elf32-hppa back end.
1.36976 ++ It will be set if global offset table references were detected
1.36977 ++ in this section, which indicate to the linker that the section
1.36978 ++ contains PIC code, and must be handled specially when doing a
1.36979 ++ static link. */
1.36980 ++#define SEC_HAS_GOT_REF 0x800
1.36981 ++
1.36982 ++ /* The section contains common symbols (symbols may be defined
1.36983 ++ multiple times, the value of a symbol is the amount of
1.36984 ++ space it requires, and the largest symbol value is the one
1.36985 ++ used). Most targets have exactly one of these (which we
1.36986 ++ translate to bfd_com_section_ptr), but ECOFF has two. */
1.36987 ++#define SEC_IS_COMMON 0x1000
1.36988 ++
1.36989 ++ /* The section contains only debugging information. For
1.36990 ++ example, this is set for ELF .debug and .stab sections.
1.36991 ++ strip tests this flag to see if a section can be
1.36992 ++ discarded. */
1.36993 ++#define SEC_DEBUGGING 0x2000
1.36994 ++
1.36995 ++ /* The contents of this section are held in memory pointed to
1.36996 ++ by the contents field. This is checked by bfd_get_section_contents,
1.36997 ++ and the data is retrieved from memory if appropriate. */
1.36998 ++#define SEC_IN_MEMORY 0x4000
1.36999 ++
1.37000 ++ /* The contents of this section are to be excluded by the
1.37001 ++ linker for executable and shared objects unless those
1.37002 ++ objects are to be further relocated. */
1.37003 ++#define SEC_EXCLUDE 0x8000
1.37004 ++
1.37005 ++ /* The contents of this section are to be sorted based on the sum of
1.37006 ++ the symbol and addend values specified by the associated relocation
1.37007 ++ entries. Entries without associated relocation entries will be
1.37008 ++ appended to the end of the section in an unspecified order. */
1.37009 ++#define SEC_SORT_ENTRIES 0x10000
1.37010 ++
1.37011 ++ /* When linking, duplicate sections of the same name should be
1.37012 ++ discarded, rather than being combined into a single section as
1.37013 ++ is usually done. This is similar to how common symbols are
1.37014 ++ handled. See SEC_LINK_DUPLICATES below. */
1.37015 ++#define SEC_LINK_ONCE 0x20000
1.37016 ++
1.37017 ++ /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
1.37018 ++ should handle duplicate sections. */
1.37019 ++#define SEC_LINK_DUPLICATES 0x40000
1.37020 ++
1.37021 ++ /* This value for SEC_LINK_DUPLICATES means that duplicate
1.37022 ++ sections with the same name should simply be discarded. */
1.37023 ++#define SEC_LINK_DUPLICATES_DISCARD 0x0
1.37024 ++
1.37025 ++ /* This value for SEC_LINK_DUPLICATES means that the linker
1.37026 ++ should warn if there are any duplicate sections, although
1.37027 ++ it should still only link one copy. */
1.37028 ++#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
1.37029 ++
1.37030 ++ /* This value for SEC_LINK_DUPLICATES means that the linker
1.37031 ++ should warn if any duplicate sections are a different size. */
1.37032 ++#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
1.37033 ++
1.37034 ++ /* This value for SEC_LINK_DUPLICATES means that the linker
1.37035 ++ should warn if any duplicate sections contain different
1.37036 ++ contents. */
1.37037 ++#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
1.37038 ++ (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
1.37039 ++
1.37040 ++ /* This section was created by the linker as part of dynamic
1.37041 ++ relocation or other arcane processing. It is skipped when
1.37042 ++ going through the first-pass output, trusting that someone
1.37043 ++ else up the line will take care of it later. */
1.37044 ++#define SEC_LINKER_CREATED 0x200000
1.37045 ++
1.37046 ++ /* This section should not be subject to garbage collection.
1.37047 ++ Also set to inform the linker that this section should not be
1.37048 ++ listed in the link map as discarded. */
1.37049 ++#define SEC_KEEP 0x400000
1.37050 ++
1.37051 ++ /* This section contains "short" data, and should be placed
1.37052 ++ "near" the GP. */
1.37053 ++#define SEC_SMALL_DATA 0x800000
1.37054 ++
1.37055 ++ /* Attempt to merge identical entities in the section.
1.37056 ++ Entity size is given in the entsize field. */
1.37057 ++#define SEC_MERGE 0x1000000
1.37058 ++
1.37059 ++ /* If given with SEC_MERGE, entities to merge are zero terminated
1.37060 ++ strings where entsize specifies character size instead of fixed
1.37061 ++ size entries. */
1.37062 ++#define SEC_STRINGS 0x2000000
1.37063 ++
1.37064 ++ /* This section contains data about section groups. */
1.37065 ++#define SEC_GROUP 0x4000000
1.37066 ++
1.37067 ++ /* The section is a COFF shared library section. This flag is
1.37068 ++ only for the linker. If this type of section appears in
1.37069 ++ the input file, the linker must copy it to the output file
1.37070 ++ without changing the vma or size. FIXME: Although this
1.37071 ++ was originally intended to be general, it really is COFF
1.37072 ++ specific (and the flag was renamed to indicate this). It
1.37073 ++ might be cleaner to have some more general mechanism to
1.37074 ++ allow the back end to control what the linker does with
1.37075 ++ sections. */
1.37076 ++#define SEC_COFF_SHARED_LIBRARY 0x10000000
1.37077 ++
1.37078 ++ /* This section contains data which may be shared with other
1.37079 ++ executables or shared objects. This is for COFF only. */
1.37080 ++#define SEC_COFF_SHARED 0x20000000
1.37081 ++
1.37082 ++ /* When a section with this flag is being linked, then if the size of
1.37083 ++ the input section is less than a page, it should not cross a page
1.37084 ++ boundary. If the size of the input section is one page or more,
1.37085 ++ it should be aligned on a page boundary. This is for TI
1.37086 ++ TMS320C54X only. */
1.37087 ++#define SEC_TIC54X_BLOCK 0x40000000
1.37088 ++
1.37089 ++ /* Conditionally link this section; do not link if there are no
1.37090 ++ references found to any symbol in the section. This is for TI
1.37091 ++ TMS320C54X only. */
1.37092 ++#define SEC_TIC54X_CLINK 0x80000000
1.37093 ++
1.37094 ++ /* End of section flags. */
1.37095 ++
1.37096 ++ /* Some internal packed boolean fields. */
1.37097 ++
1.37098 ++ /* See the vma field. */
1.37099 ++ unsigned int user_set_vma : 1;
1.37100 ++
1.37101 ++ /* A mark flag used by some of the linker backends. */
1.37102 ++ unsigned int linker_mark : 1;
1.37103 ++
1.37104 ++ /* Another mark flag used by some of the linker backends. Set for
1.37105 ++ output sections that have an input section. */
1.37106 ++ unsigned int linker_has_input : 1;
1.37107 ++
1.37108 ++ /* Mark flags used by some linker backends for garbage collection. */
1.37109 ++ unsigned int gc_mark : 1;
1.37110 ++ unsigned int gc_mark_from_eh : 1;
1.37111 ++
1.37112 ++ /* The following flags are used by the ELF linker. */
1.37113 ++
1.37114 ++ /* Mark sections which have been allocated to segments. */
1.37115 ++ unsigned int segment_mark : 1;
1.37116 ++
1.37117 ++ /* Type of sec_info information. */
1.37118 ++ unsigned int sec_info_type:3;
1.37119 ++#define ELF_INFO_TYPE_NONE 0
1.37120 ++#define ELF_INFO_TYPE_STABS 1
1.37121 ++#define ELF_INFO_TYPE_MERGE 2
1.37122 ++#define ELF_INFO_TYPE_EH_FRAME 3
1.37123 ++#define ELF_INFO_TYPE_JUST_SYMS 4
1.37124 ++
1.37125 ++ /* Nonzero if this section uses RELA relocations, rather than REL. */
1.37126 ++ unsigned int use_rela_p:1;
1.37127 ++
1.37128 ++ /* Bits used by various backends. The generic code doesn't touch
1.37129 ++ these fields. */
1.37130 ++
1.37131 ++ /* Nonzero if this section has TLS related relocations. */
1.37132 ++ unsigned int has_tls_reloc:1;
1.37133 ++
1.37134 ++ /* Nonzero if this section has a gp reloc. */
1.37135 ++ unsigned int has_gp_reloc:1;
1.37136 ++
1.37137 ++ /* Nonzero if this section needs the relax finalize pass. */
1.37138 ++ unsigned int need_finalize_relax:1;
1.37139 ++
1.37140 ++ /* Whether relocations have been processed. */
1.37141 ++ unsigned int reloc_done : 1;
1.37142 ++
1.37143 ++ /* End of internal packed boolean fields. */
1.37144 ++
1.37145 ++ /* The virtual memory address of the section - where it will be
1.37146 ++ at run time. The symbols are relocated against this. The
1.37147 ++ user_set_vma flag is maintained by bfd; if it's not set, the
1.37148 ++ backend can assign addresses (for example, in <<a.out>>, where
1.37149 ++ the default address for <<.data>> is dependent on the specific
1.37150 ++ target and various flags). */
1.37151 ++ bfd_vma vma;
1.37152 ++
1.37153 ++ /* The load address of the section - where it would be in a
1.37154 ++ rom image; really only used for writing section header
1.37155 ++ information. */
1.37156 ++ bfd_vma lma;
1.37157 ++
1.37158 ++ /* The size of the section in octets, as it will be output.
1.37159 ++ Contains a value even if the section has no contents (e.g., the
1.37160 ++ size of <<.bss>>). */
1.37161 ++ bfd_size_type size;
1.37162 ++
1.37163 ++ /* For input sections, the original size on disk of the section, in
1.37164 ++ octets. This field is used by the linker relaxation code. It is
1.37165 ++ currently only set for sections where the linker relaxation scheme
1.37166 ++ doesn't cache altered section and reloc contents (stabs, eh_frame,
1.37167 ++ SEC_MERGE, some coff relaxing targets), and thus the original size
1.37168 ++ needs to be kept to read the section multiple times.
1.37169 ++ For output sections, rawsize holds the section size calculated on
1.37170 ++ a previous linker relaxation pass. */
1.37171 ++ bfd_size_type rawsize;
1.37172 ++
1.37173 ++ /* If this section is going to be output, then this value is the
1.37174 ++ offset in *bytes* into the output section of the first byte in the
1.37175 ++ input section (byte ==> smallest addressable unit on the
1.37176 ++ target). In most cases, if this was going to start at the
1.37177 ++ 100th octet (8-bit quantity) in the output section, this value
1.37178 ++ would be 100. However, if the target byte size is 16 bits
1.37179 ++ (bfd_octets_per_byte is "2"), this value would be 50. */
1.37180 ++ bfd_vma output_offset;
1.37181 ++
1.37182 ++ /* The output section through which to map on output. */
1.37183 ++ struct bfd_section *output_section;
1.37184 ++
1.37185 ++ /* The alignment requirement of the section, as an exponent of 2 -
1.37186 ++ e.g., 3 aligns to 2^3 (or 8). */
1.37187 ++ unsigned int alignment_power;
1.37188 ++
1.37189 ++ /* If an input section, a pointer to a vector of relocation
1.37190 ++ records for the data in this section. */
1.37191 ++ struct reloc_cache_entry *relocation;
1.37192 ++
1.37193 ++ /* If an output section, a pointer to a vector of pointers to
1.37194 ++ relocation records for the data in this section. */
1.37195 ++ struct reloc_cache_entry **orelocation;
1.37196 ++
1.37197 ++ /* The number of relocation records in one of the above. */
1.37198 ++ unsigned reloc_count;
1.37199 ++
1.37200 ++ /* Information below is back end specific - and not always used
1.37201 ++ or updated. */
1.37202 ++
1.37203 ++ /* File position of section data. */
1.37204 ++ file_ptr filepos;
1.37205 ++
1.37206 ++ /* File position of relocation info. */
1.37207 ++ file_ptr rel_filepos;
1.37208 ++
1.37209 ++ /* File position of line data. */
1.37210 ++ file_ptr line_filepos;
1.37211 ++
1.37212 ++ /* Pointer to data for applications. */
1.37213 ++ void *userdata;
1.37214 ++
1.37215 ++ /* If the SEC_IN_MEMORY flag is set, this points to the actual
1.37216 ++ contents. */
1.37217 ++ unsigned char *contents;
1.37218 ++
1.37219 ++ /* Attached line number information. */
1.37220 ++ alent *lineno;
1.37221 ++
1.37222 ++ /* Number of line number records. */
1.37223 ++ unsigned int lineno_count;
1.37224 ++
1.37225 ++ /* Entity size for merging purposes. */
1.37226 ++ unsigned int entsize;
1.37227 ++
1.37228 ++ /* Points to the kept section if this section is a link-once section,
1.37229 ++ and is discarded. */
1.37230 ++ struct bfd_section *kept_section;
1.37231 ++
1.37232 ++ /* When a section is being output, this value changes as more
1.37233 ++ linenumbers are written out. */
1.37234 ++ file_ptr moving_line_filepos;
1.37235 ++
1.37236 ++ /* What the section number is in the target world. */
1.37237 ++ int target_index;
1.37238 ++
1.37239 ++ void *used_by_bfd;
1.37240 ++
1.37241 ++ /* If this is a constructor section then here is a list of the
1.37242 ++ relocations created to relocate items within it. */
1.37243 ++ struct relent_chain *constructor_chain;
1.37244 ++
1.37245 ++ /* The BFD which owns the section. */
1.37246 ++ bfd *owner;
1.37247 ++
1.37248 ++ /* A symbol which points at this section only. */
1.37249 ++ struct bfd_symbol *symbol;
1.37250 ++ struct bfd_symbol **symbol_ptr_ptr;
1.37251 ++
1.37252 ++ /* Early in the link process, map_head and map_tail are used to build
1.37253 ++ a list of input sections attached to an output section. Later,
1.37254 ++ output sections use these fields for a list of bfd_link_order
1.37255 ++ structs. */
1.37256 ++ union {
1.37257 ++ struct bfd_link_order *link_order;
1.37258 ++ struct bfd_section *s;
1.37259 ++ } map_head, map_tail;
1.37260 ++} asection;
1.37261 ++
1.37262 ++/* These sections are global, and are managed by BFD. The application
1.37263 ++ and target back end are not permitted to change the values in
1.37264 ++ these sections. New code should use the section_ptr macros rather
1.37265 ++ than referring directly to the const sections. The const sections
1.37266 ++ may eventually vanish. */
1.37267 ++#define BFD_ABS_SECTION_NAME "*ABS*"
1.37268 ++#define BFD_UND_SECTION_NAME "*UND*"
1.37269 ++#define BFD_COM_SECTION_NAME "*COM*"
1.37270 ++#define BFD_IND_SECTION_NAME "*IND*"
1.37271 ++
1.37272 ++/* The absolute section. */
1.37273 ++extern asection bfd_abs_section;
1.37274 ++#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
1.37275 ++#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
1.37276 ++/* Pointer to the undefined section. */
1.37277 ++extern asection bfd_und_section;
1.37278 ++#define bfd_und_section_ptr ((asection *) &bfd_und_section)
1.37279 ++#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
1.37280 ++/* Pointer to the common section. */
1.37281 ++extern asection bfd_com_section;
1.37282 ++#define bfd_com_section_ptr ((asection *) &bfd_com_section)
1.37283 ++/* Pointer to the indirect section. */
1.37284 ++extern asection bfd_ind_section;
1.37285 ++#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
1.37286 ++#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
1.37287 ++
1.37288 ++#define bfd_is_const_section(SEC) \
1.37289 ++ ( ((SEC) == bfd_abs_section_ptr) \
1.37290 ++ || ((SEC) == bfd_und_section_ptr) \
1.37291 ++ || ((SEC) == bfd_com_section_ptr) \
1.37292 ++ || ((SEC) == bfd_ind_section_ptr))
1.37293 ++
1.37294 ++/* Macros to handle insertion and deletion of a bfd's sections. These
1.37295 ++ only handle the list pointers, ie. do not adjust section_count,
1.37296 ++ target_index etc. */
1.37297 ++#define bfd_section_list_remove(ABFD, S) \
1.37298 ++ do \
1.37299 ++ { \
1.37300 ++ asection *_s = S; \
1.37301 ++ asection *_next = _s->next; \
1.37302 ++ asection *_prev = _s->prev; \
1.37303 ++ if (_prev) \
1.37304 ++ _prev->next = _next; \
1.37305 ++ else \
1.37306 ++ (ABFD)->sections = _next; \
1.37307 ++ if (_next) \
1.37308 ++ _next->prev = _prev; \
1.37309 ++ else \
1.37310 ++ (ABFD)->section_last = _prev; \
1.37311 ++ } \
1.37312 ++ while (0)
1.37313 ++#define bfd_section_list_append(ABFD, S) \
1.37314 ++ do \
1.37315 ++ { \
1.37316 ++ asection *_s = S; \
1.37317 ++ bfd *_abfd = ABFD; \
1.37318 ++ _s->next = NULL; \
1.37319 ++ if (_abfd->section_last) \
1.37320 ++ { \
1.37321 ++ _s->prev = _abfd->section_last; \
1.37322 ++ _abfd->section_last->next = _s; \
1.37323 ++ } \
1.37324 ++ else \
1.37325 ++ { \
1.37326 ++ _s->prev = NULL; \
1.37327 ++ _abfd->sections = _s; \
1.37328 ++ } \
1.37329 ++ _abfd->section_last = _s; \
1.37330 ++ } \
1.37331 ++ while (0)
1.37332 ++#define bfd_section_list_prepend(ABFD, S) \
1.37333 ++ do \
1.37334 ++ { \
1.37335 ++ asection *_s = S; \
1.37336 ++ bfd *_abfd = ABFD; \
1.37337 ++ _s->prev = NULL; \
1.37338 ++ if (_abfd->sections) \
1.37339 ++ { \
1.37340 ++ _s->next = _abfd->sections; \
1.37341 ++ _abfd->sections->prev = _s; \
1.37342 ++ } \
1.37343 ++ else \
1.37344 ++ { \
1.37345 ++ _s->next = NULL; \
1.37346 ++ _abfd->section_last = _s; \
1.37347 ++ } \
1.37348 ++ _abfd->sections = _s; \
1.37349 ++ } \
1.37350 ++ while (0)
1.37351 ++#define bfd_section_list_insert_after(ABFD, A, S) \
1.37352 ++ do \
1.37353 ++ { \
1.37354 ++ asection *_a = A; \
1.37355 ++ asection *_s = S; \
1.37356 ++ asection *_next = _a->next; \
1.37357 ++ _s->next = _next; \
1.37358 ++ _s->prev = _a; \
1.37359 ++ _a->next = _s; \
1.37360 ++ if (_next) \
1.37361 ++ _next->prev = _s; \
1.37362 ++ else \
1.37363 ++ (ABFD)->section_last = _s; \
1.37364 ++ } \
1.37365 ++ while (0)
1.37366 ++#define bfd_section_list_insert_before(ABFD, B, S) \
1.37367 ++ do \
1.37368 ++ { \
1.37369 ++ asection *_b = B; \
1.37370 ++ asection *_s = S; \
1.37371 ++ asection *_prev = _b->prev; \
1.37372 ++ _s->prev = _prev; \
1.37373 ++ _s->next = _b; \
1.37374 ++ _b->prev = _s; \
1.37375 ++ if (_prev) \
1.37376 ++ _prev->next = _s; \
1.37377 ++ else \
1.37378 ++ (ABFD)->sections = _s; \
1.37379 ++ } \
1.37380 ++ while (0)
1.37381 ++#define bfd_section_removed_from_list(ABFD, S) \
1.37382 ++ ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
1.37383 ++
1.37384 ++#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
1.37385 ++ /* name, id, index, next, prev, flags, user_set_vma, */ \
1.37386 ++ { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
1.37387 ++ \
1.37388 ++ /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \
1.37389 ++ 0, 0, 1, 0, \
1.37390 ++ \
1.37391 ++ /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \
1.37392 ++ 0, 0, 0, 0, \
1.37393 ++ \
1.37394 ++ /* has_gp_reloc, need_finalize_relax, reloc_done, */ \
1.37395 ++ 0, 0, 0, \
1.37396 ++ \
1.37397 ++ /* vma, lma, size, rawsize */ \
1.37398 ++ 0, 0, 0, 0, \
1.37399 ++ \
1.37400 ++ /* output_offset, output_section, alignment_power, */ \
1.37401 ++ 0, (struct bfd_section *) &SEC, 0, \
1.37402 ++ \
1.37403 ++ /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
1.37404 ++ NULL, NULL, 0, 0, 0, \
1.37405 ++ \
1.37406 ++ /* line_filepos, userdata, contents, lineno, lineno_count, */ \
1.37407 ++ 0, NULL, NULL, NULL, 0, \
1.37408 ++ \
1.37409 ++ /* entsize, kept_section, moving_line_filepos, */ \
1.37410 ++ 0, NULL, 0, \
1.37411 ++ \
1.37412 ++ /* target_index, used_by_bfd, constructor_chain, owner, */ \
1.37413 ++ 0, NULL, NULL, NULL, \
1.37414 ++ \
1.37415 ++ /* symbol, symbol_ptr_ptr, */ \
1.37416 ++ (struct bfd_symbol *) SYM, &SEC.symbol, \
1.37417 ++ \
1.37418 ++ /* map_head, map_tail */ \
1.37419 ++ { NULL }, { NULL } \
1.37420 ++ }
1.37421 ++
1.37422 ++void bfd_section_list_clear (bfd *);
1.37423 ++
1.37424 ++asection *bfd_get_section_by_name (bfd *abfd, const char *name);
1.37425 ++
1.37426 ++asection *bfd_get_section_by_name_if
1.37427 ++ (bfd *abfd,
1.37428 ++ const char *name,
1.37429 ++ bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
1.37430 ++ void *obj);
1.37431 ++
1.37432 ++char *bfd_get_unique_section_name
1.37433 ++ (bfd *abfd, const char *templat, int *count);
1.37434 ++
1.37435 ++asection *bfd_make_section_old_way (bfd *abfd, const char *name);
1.37436 ++
1.37437 ++asection *bfd_make_section_anyway_with_flags
1.37438 ++ (bfd *abfd, const char *name, flagword flags);
1.37439 ++
1.37440 ++asection *bfd_make_section_anyway (bfd *abfd, const char *name);
1.37441 ++
1.37442 ++asection *bfd_make_section_with_flags
1.37443 ++ (bfd *, const char *name, flagword flags);
1.37444 ++
1.37445 ++asection *bfd_make_section (bfd *, const char *name);
1.37446 ++
1.37447 ++bfd_boolean bfd_set_section_flags
1.37448 ++ (bfd *abfd, asection *sec, flagword flags);
1.37449 ++
1.37450 ++void bfd_map_over_sections
1.37451 ++ (bfd *abfd,
1.37452 ++ void (*func) (bfd *abfd, asection *sect, void *obj),
1.37453 ++ void *obj);
1.37454 ++
1.37455 ++asection *bfd_sections_find_if
1.37456 ++ (bfd *abfd,
1.37457 ++ bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
1.37458 ++ void *obj);
1.37459 ++
1.37460 ++bfd_boolean bfd_set_section_size
1.37461 ++ (bfd *abfd, asection *sec, bfd_size_type val);
1.37462 ++
1.37463 ++bfd_boolean bfd_set_section_contents
1.37464 ++ (bfd *abfd, asection *section, const void *data,
1.37465 ++ file_ptr offset, bfd_size_type count);
1.37466 ++
1.37467 ++bfd_boolean bfd_get_section_contents
1.37468 ++ (bfd *abfd, asection *section, void *location, file_ptr offset,
1.37469 ++ bfd_size_type count);
1.37470 ++
1.37471 ++bfd_boolean bfd_malloc_and_get_section
1.37472 ++ (bfd *abfd, asection *section, bfd_byte **buf);
1.37473 ++
1.37474 ++bfd_boolean bfd_copy_private_section_data
1.37475 ++ (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
1.37476 ++
1.37477 ++#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
1.37478 ++ BFD_SEND (obfd, _bfd_copy_private_section_data, \
1.37479 ++ (ibfd, isection, obfd, osection))
1.37480 ++bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
1.37481 ++
1.37482 ++bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
1.37483 ++
1.37484 ++/* Extracted from archures.c. */
1.37485 ++enum bfd_architecture
1.37486 ++{
1.37487 ++ bfd_arch_unknown, /* File arch not known. */
1.37488 ++ bfd_arch_obscure, /* Arch known, not one of these. */
1.37489 ++ bfd_arch_m68k, /* Motorola 68xxx */
1.37490 ++#define bfd_mach_m68000 1
1.37491 ++#define bfd_mach_m68008 2
1.37492 ++#define bfd_mach_m68010 3
1.37493 ++#define bfd_mach_m68020 4
1.37494 ++#define bfd_mach_m68030 5
1.37495 ++#define bfd_mach_m68040 6
1.37496 ++#define bfd_mach_m68060 7
1.37497 ++#define bfd_mach_cpu32 8
1.37498 ++#define bfd_mach_fido 9
1.37499 ++#define bfd_mach_mcf_isa_a_nodiv 10
1.37500 ++#define bfd_mach_mcf_isa_a 11
1.37501 ++#define bfd_mach_mcf_isa_a_mac 12
1.37502 ++#define bfd_mach_mcf_isa_a_emac 13
1.37503 ++#define bfd_mach_mcf_isa_aplus 14
1.37504 ++#define bfd_mach_mcf_isa_aplus_mac 15
1.37505 ++#define bfd_mach_mcf_isa_aplus_emac 16
1.37506 ++#define bfd_mach_mcf_isa_b_nousp 17
1.37507 ++#define bfd_mach_mcf_isa_b_nousp_mac 18
1.37508 ++#define bfd_mach_mcf_isa_b_nousp_emac 19
1.37509 ++#define bfd_mach_mcf_isa_b 20
1.37510 ++#define bfd_mach_mcf_isa_b_mac 21
1.37511 ++#define bfd_mach_mcf_isa_b_emac 22
1.37512 ++#define bfd_mach_mcf_isa_b_float 23
1.37513 ++#define bfd_mach_mcf_isa_b_float_mac 24
1.37514 ++#define bfd_mach_mcf_isa_b_float_emac 25
1.37515 ++#define bfd_mach_mcf_isa_c 26
1.37516 ++#define bfd_mach_mcf_isa_c_mac 27
1.37517 ++#define bfd_mach_mcf_isa_c_emac 28
1.37518 ++ bfd_arch_vax, /* DEC Vax */
1.37519 ++ bfd_arch_i960, /* Intel 960 */
1.37520 ++ /* The order of the following is important.
1.37521 ++ lower number indicates a machine type that
1.37522 ++ only accepts a subset of the instructions
1.37523 ++ available to machines with higher numbers.
1.37524 ++ The exception is the "ca", which is
1.37525 ++ incompatible with all other machines except
1.37526 ++ "core". */
1.37527 ++
1.37528 ++#define bfd_mach_i960_core 1
1.37529 ++#define bfd_mach_i960_ka_sa 2
1.37530 ++#define bfd_mach_i960_kb_sb 3
1.37531 ++#define bfd_mach_i960_mc 4
1.37532 ++#define bfd_mach_i960_xa 5
1.37533 ++#define bfd_mach_i960_ca 6
1.37534 ++#define bfd_mach_i960_jx 7
1.37535 ++#define bfd_mach_i960_hx 8
1.37536 ++
1.37537 ++ bfd_arch_or32, /* OpenRISC 32 */
1.37538 ++
1.37539 ++ bfd_arch_sparc, /* SPARC */
1.37540 ++#define bfd_mach_sparc 1
1.37541 ++/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
1.37542 ++#define bfd_mach_sparc_sparclet 2
1.37543 ++#define bfd_mach_sparc_sparclite 3
1.37544 ++#define bfd_mach_sparc_v8plus 4
1.37545 ++#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
1.37546 ++#define bfd_mach_sparc_sparclite_le 6
1.37547 ++#define bfd_mach_sparc_v9 7
1.37548 ++#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
1.37549 ++#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
1.37550 ++#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
1.37551 ++/* Nonzero if MACH has the v9 instruction set. */
1.37552 ++#define bfd_mach_sparc_v9_p(mach) \
1.37553 ++ ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
1.37554 ++ && (mach) != bfd_mach_sparc_sparclite_le)
1.37555 ++/* Nonzero if MACH is a 64 bit sparc architecture. */
1.37556 ++#define bfd_mach_sparc_64bit_p(mach) \
1.37557 ++ ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
1.37558 ++ bfd_arch_spu, /* PowerPC SPU */
1.37559 ++#define bfd_mach_spu 256
1.37560 ++ bfd_arch_mips, /* MIPS Rxxxx */
1.37561 ++#define bfd_mach_mips3000 3000
1.37562 ++#define bfd_mach_mips3900 3900
1.37563 ++#define bfd_mach_mips4000 4000
1.37564 ++#define bfd_mach_mips4010 4010
1.37565 ++#define bfd_mach_mips4100 4100
1.37566 ++#define bfd_mach_mips4111 4111
1.37567 ++#define bfd_mach_mips4120 4120
1.37568 ++#define bfd_mach_mips4300 4300
1.37569 ++#define bfd_mach_mips4400 4400
1.37570 ++#define bfd_mach_mips4600 4600
1.37571 ++#define bfd_mach_mips4650 4650
1.37572 ++#define bfd_mach_mips5000 5000
1.37573 ++#define bfd_mach_mips5400 5400
1.37574 ++#define bfd_mach_mips5500 5500
1.37575 ++#define bfd_mach_mips6000 6000
1.37576 ++#define bfd_mach_mips7000 7000
1.37577 ++#define bfd_mach_mips8000 8000
1.37578 ++#define bfd_mach_mips9000 9000
1.37579 ++#define bfd_mach_mips10000 10000
1.37580 ++#define bfd_mach_mips12000 12000
1.37581 ++#define bfd_mach_mips16 16
1.37582 ++#define bfd_mach_mips5 5
1.37583 ++#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
1.37584 ++#define bfd_mach_mipsisa32 32
1.37585 ++#define bfd_mach_mipsisa32r2 33
1.37586 ++#define bfd_mach_mipsisa64 64
1.37587 ++#define bfd_mach_mipsisa64r2 65
1.37588 ++ bfd_arch_i386, /* Intel 386 */
1.37589 ++#define bfd_mach_i386_i386 1
1.37590 ++#define bfd_mach_i386_i8086 2
1.37591 ++#define bfd_mach_i386_i386_intel_syntax 3
1.37592 ++#define bfd_mach_x86_64 64
1.37593 ++#define bfd_mach_x86_64_intel_syntax 65
1.37594 ++ bfd_arch_we32k, /* AT&T WE32xxx */
1.37595 ++ bfd_arch_tahoe, /* CCI/Harris Tahoe */
1.37596 ++ bfd_arch_i860, /* Intel 860 */
1.37597 ++ bfd_arch_i370, /* IBM 360/370 Mainframes */
1.37598 ++ bfd_arch_romp, /* IBM ROMP PC/RT */
1.37599 ++ bfd_arch_convex, /* Convex */
1.37600 ++ bfd_arch_m88k, /* Motorola 88xxx */
1.37601 ++ bfd_arch_m98k, /* Motorola 98xxx */
1.37602 ++ bfd_arch_pyramid, /* Pyramid Technology */
1.37603 ++ bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
1.37604 ++#define bfd_mach_h8300 1
1.37605 ++#define bfd_mach_h8300h 2
1.37606 ++#define bfd_mach_h8300s 3
1.37607 ++#define bfd_mach_h8300hn 4
1.37608 ++#define bfd_mach_h8300sn 5
1.37609 ++#define bfd_mach_h8300sx 6
1.37610 ++#define bfd_mach_h8300sxn 7
1.37611 ++ bfd_arch_pdp11, /* DEC PDP-11 */
1.37612 ++ bfd_arch_powerpc, /* PowerPC */
1.37613 ++#define bfd_mach_ppc 32
1.37614 ++#define bfd_mach_ppc64 64
1.37615 ++#define bfd_mach_ppc_403 403
1.37616 ++#define bfd_mach_ppc_403gc 4030
1.37617 ++#define bfd_mach_ppc_505 505
1.37618 ++#define bfd_mach_ppc_601 601
1.37619 ++#define bfd_mach_ppc_602 602
1.37620 ++#define bfd_mach_ppc_603 603
1.37621 ++#define bfd_mach_ppc_ec603e 6031
1.37622 ++#define bfd_mach_ppc_604 604
1.37623 ++#define bfd_mach_ppc_620 620
1.37624 ++#define bfd_mach_ppc_630 630
1.37625 ++#define bfd_mach_ppc_750 750
1.37626 ++#define bfd_mach_ppc_860 860
1.37627 ++#define bfd_mach_ppc_a35 35
1.37628 ++#define bfd_mach_ppc_rs64ii 642
1.37629 ++#define bfd_mach_ppc_rs64iii 643
1.37630 ++#define bfd_mach_ppc_7400 7400
1.37631 ++#define bfd_mach_ppc_e500 500
1.37632 ++ bfd_arch_rs6000, /* IBM RS/6000 */
1.37633 ++#define bfd_mach_rs6k 6000
1.37634 ++#define bfd_mach_rs6k_rs1 6001
1.37635 ++#define bfd_mach_rs6k_rsc 6003
1.37636 ++#define bfd_mach_rs6k_rs2 6002
1.37637 ++ bfd_arch_hppa, /* HP PA RISC */
1.37638 ++#define bfd_mach_hppa10 10
1.37639 ++#define bfd_mach_hppa11 11
1.37640 ++#define bfd_mach_hppa20 20
1.37641 ++#define bfd_mach_hppa20w 25
1.37642 ++ bfd_arch_d10v, /* Mitsubishi D10V */
1.37643 ++#define bfd_mach_d10v 1
1.37644 ++#define bfd_mach_d10v_ts2 2
1.37645 ++#define bfd_mach_d10v_ts3 3
1.37646 ++ bfd_arch_d30v, /* Mitsubishi D30V */
1.37647 ++ bfd_arch_dlx, /* DLX */
1.37648 ++ bfd_arch_m68hc11, /* Motorola 68HC11 */
1.37649 ++ bfd_arch_m68hc12, /* Motorola 68HC12 */
1.37650 ++#define bfd_mach_m6812_default 0
1.37651 ++#define bfd_mach_m6812 1
1.37652 ++#define bfd_mach_m6812s 2
1.37653 ++ bfd_arch_z8k, /* Zilog Z8000 */
1.37654 ++#define bfd_mach_z8001 1
1.37655 ++#define bfd_mach_z8002 2
1.37656 ++ bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
1.37657 ++ bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
1.37658 ++#define bfd_mach_sh 1
1.37659 ++#define bfd_mach_sh2 0x20
1.37660 ++#define bfd_mach_sh_dsp 0x2d
1.37661 ++#define bfd_mach_sh2a 0x2a
1.37662 ++#define bfd_mach_sh2a_nofpu 0x2b
1.37663 ++#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
1.37664 ++#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
1.37665 ++#define bfd_mach_sh2a_or_sh4 0x2a3
1.37666 ++#define bfd_mach_sh2a_or_sh3e 0x2a4
1.37667 ++#define bfd_mach_sh2e 0x2e
1.37668 ++#define bfd_mach_sh3 0x30
1.37669 ++#define bfd_mach_sh3_nommu 0x31
1.37670 ++#define bfd_mach_sh3_dsp 0x3d
1.37671 ++#define bfd_mach_sh3e 0x3e
1.37672 ++#define bfd_mach_sh4 0x40
1.37673 ++#define bfd_mach_sh4_nofpu 0x41
1.37674 ++#define bfd_mach_sh4_nommu_nofpu 0x42
1.37675 ++#define bfd_mach_sh4a 0x4a
1.37676 ++#define bfd_mach_sh4a_nofpu 0x4b
1.37677 ++#define bfd_mach_sh4al_dsp 0x4d
1.37678 ++#define bfd_mach_sh5 0x50
1.37679 ++ bfd_arch_alpha, /* Dec Alpha */
1.37680 ++#define bfd_mach_alpha_ev4 0x10
1.37681 ++#define bfd_mach_alpha_ev5 0x20
1.37682 ++#define bfd_mach_alpha_ev6 0x30
1.37683 ++ bfd_arch_arm, /* Advanced Risc Machines ARM. */
1.37684 ++#define bfd_mach_arm_unknown 0
1.37685 ++#define bfd_mach_arm_2 1
1.37686 ++#define bfd_mach_arm_2a 2
1.37687 ++#define bfd_mach_arm_3 3
1.37688 ++#define bfd_mach_arm_3M 4
1.37689 ++#define bfd_mach_arm_4 5
1.37690 ++#define bfd_mach_arm_4T 6
1.37691 ++#define bfd_mach_arm_5 7
1.37692 ++#define bfd_mach_arm_5T 8
1.37693 ++#define bfd_mach_arm_5TE 9
1.37694 ++#define bfd_mach_arm_XScale 10
1.37695 ++#define bfd_mach_arm_ep9312 11
1.37696 ++#define bfd_mach_arm_iWMMXt 12
1.37697 ++#define bfd_mach_arm_iWMMXt2 13
1.37698 ++ bfd_arch_ns32k, /* National Semiconductors ns32000 */
1.37699 ++ bfd_arch_w65, /* WDC 65816 */
1.37700 ++ bfd_arch_tic30, /* Texas Instruments TMS320C30 */
1.37701 ++ bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
1.37702 ++#define bfd_mach_tic3x 30
1.37703 ++#define bfd_mach_tic4x 40
1.37704 ++ bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
1.37705 ++ bfd_arch_tic80, /* TI TMS320c80 (MVP) */
1.37706 ++ bfd_arch_v850, /* NEC V850 */
1.37707 ++#define bfd_mach_v850 1
1.37708 ++#define bfd_mach_v850e 'E'
1.37709 ++#define bfd_mach_v850e1 '1'
1.37710 ++ bfd_arch_arc, /* ARC Cores */
1.37711 ++#define bfd_mach_arc_5 5
1.37712 ++#define bfd_mach_arc_6 6
1.37713 ++#define bfd_mach_arc_7 7
1.37714 ++#define bfd_mach_arc_8 8
1.37715 ++ bfd_arch_m32c, /* Renesas M16C/M32C. */
1.37716 ++#define bfd_mach_m16c 0x75
1.37717 ++#define bfd_mach_m32c 0x78
1.37718 ++ bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
1.37719 ++#define bfd_mach_m32r 1 /* For backwards compatibility. */
1.37720 ++#define bfd_mach_m32rx 'x'
1.37721 ++#define bfd_mach_m32r2 '2'
1.37722 ++ bfd_arch_mn10200, /* Matsushita MN10200 */
1.37723 ++ bfd_arch_mn10300, /* Matsushita MN10300 */
1.37724 ++#define bfd_mach_mn10300 300
1.37725 ++#define bfd_mach_am33 330
1.37726 ++#define bfd_mach_am33_2 332
1.37727 ++ bfd_arch_fr30,
1.37728 ++#define bfd_mach_fr30 0x46523330
1.37729 ++ bfd_arch_frv,
1.37730 ++#define bfd_mach_frv 1
1.37731 ++#define bfd_mach_frvsimple 2
1.37732 ++#define bfd_mach_fr300 300
1.37733 ++#define bfd_mach_fr400 400
1.37734 ++#define bfd_mach_fr450 450
1.37735 ++#define bfd_mach_frvtomcat 499 /* fr500 prototype */
1.37736 ++#define bfd_mach_fr500 500
1.37737 ++#define bfd_mach_fr550 550
1.37738 ++ bfd_arch_mcore,
1.37739 ++ bfd_arch_mep,
1.37740 ++#define bfd_mach_mep 1
1.37741 ++#define bfd_mach_mep_h1 0x6831
1.37742 ++ bfd_arch_ia64, /* HP/Intel ia64 */
1.37743 ++#define bfd_mach_ia64_elf64 64
1.37744 ++#define bfd_mach_ia64_elf32 32
1.37745 ++ bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
1.37746 ++#define bfd_mach_ip2022 1
1.37747 ++#define bfd_mach_ip2022ext 2
1.37748 ++ bfd_arch_iq2000, /* Vitesse IQ2000. */
1.37749 ++#define bfd_mach_iq2000 1
1.37750 ++#define bfd_mach_iq10 2
1.37751 ++ bfd_arch_mt,
1.37752 ++#define bfd_mach_ms1 1
1.37753 ++#define bfd_mach_mrisc2 2
1.37754 ++#define bfd_mach_ms2 3
1.37755 ++ bfd_arch_pj,
1.37756 ++ bfd_arch_avr, /* Atmel AVR microcontrollers. */
1.37757 ++#define bfd_mach_avr1 1
1.37758 ++#define bfd_mach_avr2 2
1.37759 ++#define bfd_mach_avr3 3
1.37760 ++#define bfd_mach_avr4 4
1.37761 ++#define bfd_mach_avr5 5
1.37762 ++#define bfd_mach_avr6 6
1.37763 ++ bfd_arch_avr32, /* Atmel AVR32 */
1.37764 ++#define bfd_mach_avr32_ap 7000
1.37765 ++#define bfd_mach_avr32_uc 3000
1.37766 ++#define bfd_mach_avr32_ucr1 3001
1.37767 ++#define bfd_mach_avr32_ucr2 3002
1.37768 ++ bfd_arch_bfin, /* ADI Blackfin */
1.37769 ++#define bfd_mach_bfin 1
1.37770 ++ bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
1.37771 ++#define bfd_mach_cr16 1
1.37772 ++ bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
1.37773 ++#define bfd_mach_cr16c 1
1.37774 ++ bfd_arch_crx, /* National Semiconductor CRX. */
1.37775 ++#define bfd_mach_crx 1
1.37776 ++ bfd_arch_cris, /* Axis CRIS */
1.37777 ++#define bfd_mach_cris_v0_v10 255
1.37778 ++#define bfd_mach_cris_v32 32
1.37779 ++#define bfd_mach_cris_v10_v32 1032
1.37780 ++ bfd_arch_s390, /* IBM s390 */
1.37781 ++#define bfd_mach_s390_31 31
1.37782 ++#define bfd_mach_s390_64 64
1.37783 ++ bfd_arch_score, /* Sunplus score */
1.37784 ++ bfd_arch_openrisc, /* OpenRISC */
1.37785 ++ bfd_arch_mmix, /* Donald Knuth's educational processor. */
1.37786 ++ bfd_arch_xstormy16,
1.37787 ++#define bfd_mach_xstormy16 1
1.37788 ++ bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
1.37789 ++#define bfd_mach_msp11 11
1.37790 ++#define bfd_mach_msp110 110
1.37791 ++#define bfd_mach_msp12 12
1.37792 ++#define bfd_mach_msp13 13
1.37793 ++#define bfd_mach_msp14 14
1.37794 ++#define bfd_mach_msp15 15
1.37795 ++#define bfd_mach_msp16 16
1.37796 ++#define bfd_mach_msp21 21
1.37797 ++#define bfd_mach_msp31 31
1.37798 ++#define bfd_mach_msp32 32
1.37799 ++#define bfd_mach_msp33 33
1.37800 ++#define bfd_mach_msp41 41
1.37801 ++#define bfd_mach_msp42 42
1.37802 ++#define bfd_mach_msp43 43
1.37803 ++#define bfd_mach_msp44 44
1.37804 ++ bfd_arch_xc16x, /* Infineon's XC16X Series. */
1.37805 ++#define bfd_mach_xc16x 1
1.37806 ++#define bfd_mach_xc16xl 2
1.37807 ++#define bfd_mach_xc16xs 3
1.37808 ++ bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
1.37809 ++#define bfd_mach_xtensa 1
1.37810 ++ bfd_arch_maxq, /* Dallas MAXQ 10/20 */
1.37811 ++#define bfd_mach_maxq10 10
1.37812 ++#define bfd_mach_maxq20 20
1.37813 ++ bfd_arch_z80,
1.37814 ++#define bfd_mach_z80strict 1 /* No undocumented opcodes. */
1.37815 ++#define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
1.37816 ++#define bfd_mach_z80full 7 /* All undocumented instructions. */
1.37817 ++#define bfd_mach_r800 11 /* R800: successor with multiplication. */
1.37818 ++ bfd_arch_last
1.37819 ++ };
1.37820 ++
1.37821 ++typedef struct bfd_arch_info
1.37822 ++{
1.37823 ++ int bits_per_word;
1.37824 ++ int bits_per_address;
1.37825 ++ int bits_per_byte;
1.37826 ++ enum bfd_architecture arch;
1.37827 ++ unsigned long mach;
1.37828 ++ const char *arch_name;
1.37829 ++ const char *printable_name;
1.37830 ++ unsigned int section_align_power;
1.37831 ++ /* TRUE if this is the default machine for the architecture.
1.37832 ++ The default arch should be the first entry for an arch so that
1.37833 ++ all the entries for that arch can be accessed via <<next>>. */
1.37834 ++ bfd_boolean the_default;
1.37835 ++ const struct bfd_arch_info * (*compatible)
1.37836 ++ (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
1.37837 ++
1.37838 ++ bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
1.37839 ++
1.37840 ++ const struct bfd_arch_info *next;
1.37841 ++}
1.37842 ++bfd_arch_info_type;
1.37843 ++
1.37844 ++const char *bfd_printable_name (bfd *abfd);
1.37845 ++
1.37846 ++const bfd_arch_info_type *bfd_scan_arch (const char *string);
1.37847 ++
1.37848 ++const char **bfd_arch_list (void);
1.37849 ++
1.37850 ++const bfd_arch_info_type *bfd_arch_get_compatible
1.37851 ++ (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
1.37852 ++
1.37853 ++void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
1.37854 ++
1.37855 ++enum bfd_architecture bfd_get_arch (bfd *abfd);
1.37856 ++
1.37857 ++unsigned long bfd_get_mach (bfd *abfd);
1.37858 ++
1.37859 ++unsigned int bfd_arch_bits_per_byte (bfd *abfd);
1.37860 ++
1.37861 ++unsigned int bfd_arch_bits_per_address (bfd *abfd);
1.37862 ++
1.37863 ++const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
1.37864 ++
1.37865 ++const bfd_arch_info_type *bfd_lookup_arch
1.37866 ++ (enum bfd_architecture arch, unsigned long machine);
1.37867 ++
1.37868 ++const char *bfd_printable_arch_mach
1.37869 ++ (enum bfd_architecture arch, unsigned long machine);
1.37870 ++
1.37871 ++unsigned int bfd_octets_per_byte (bfd *abfd);
1.37872 ++
1.37873 ++unsigned int bfd_arch_mach_octets_per_byte
1.37874 ++ (enum bfd_architecture arch, unsigned long machine);
1.37875 ++
1.37876 ++/* Extracted from reloc.c. */
1.37877 ++typedef enum bfd_reloc_status
1.37878 ++{
1.37879 ++ /* No errors detected. */
1.37880 ++ bfd_reloc_ok,
1.37881 ++
1.37882 ++ /* The relocation was performed, but there was an overflow. */
1.37883 ++ bfd_reloc_overflow,
1.37884 ++
1.37885 ++ /* The address to relocate was not within the section supplied. */
1.37886 ++ bfd_reloc_outofrange,
1.37887 ++
1.37888 ++ /* Used by special functions. */
1.37889 ++ bfd_reloc_continue,
1.37890 ++
1.37891 ++ /* Unsupported relocation size requested. */
1.37892 ++ bfd_reloc_notsupported,
1.37893 ++
1.37894 ++ /* Unused. */
1.37895 ++ bfd_reloc_other,
1.37896 ++
1.37897 ++ /* The symbol to relocate against was undefined. */
1.37898 ++ bfd_reloc_undefined,
1.37899 ++
1.37900 ++ /* The relocation was performed, but may not be ok - presently
1.37901 ++ generated only when linking i960 coff files with i960 b.out
1.37902 ++ symbols. If this type is returned, the error_message argument
1.37903 ++ to bfd_perform_relocation will be set. */
1.37904 ++ bfd_reloc_dangerous
1.37905 ++ }
1.37906 ++ bfd_reloc_status_type;
1.37907 ++
1.37908 ++
1.37909 ++typedef struct reloc_cache_entry
1.37910 ++{
1.37911 ++ /* A pointer into the canonical table of pointers. */
1.37912 ++ struct bfd_symbol **sym_ptr_ptr;
1.37913 ++
1.37914 ++ /* offset in section. */
1.37915 ++ bfd_size_type address;
1.37916 ++
1.37917 ++ /* addend for relocation value. */
1.37918 ++ bfd_vma addend;
1.37919 ++
1.37920 ++ /* Pointer to how to perform the required relocation. */
1.37921 ++ reloc_howto_type *howto;
1.37922 ++
1.37923 ++}
1.37924 ++arelent;
1.37925 ++
1.37926 ++enum complain_overflow
1.37927 ++{
1.37928 ++ /* Do not complain on overflow. */
1.37929 ++ complain_overflow_dont,
1.37930 ++
1.37931 ++ /* Complain if the value overflows when considered as a signed
1.37932 ++ number one bit larger than the field. ie. A bitfield of N bits
1.37933 ++ is allowed to represent -2**n to 2**n-1. */
1.37934 ++ complain_overflow_bitfield,
1.37935 ++
1.37936 ++ /* Complain if the value overflows when considered as a signed
1.37937 ++ number. */
1.37938 ++ complain_overflow_signed,
1.37939 ++
1.37940 ++ /* Complain if the value overflows when considered as an
1.37941 ++ unsigned number. */
1.37942 ++ complain_overflow_unsigned
1.37943 ++};
1.37944 ++
1.37945 ++struct reloc_howto_struct
1.37946 ++{
1.37947 ++ /* The type field has mainly a documentary use - the back end can
1.37948 ++ do what it wants with it, though normally the back end's
1.37949 ++ external idea of what a reloc number is stored
1.37950 ++ in this field. For example, a PC relative word relocation
1.37951 ++ in a coff environment has the type 023 - because that's
1.37952 ++ what the outside world calls a R_PCRWORD reloc. */
1.37953 ++ unsigned int type;
1.37954 ++
1.37955 ++ /* The value the final relocation is shifted right by. This drops
1.37956 ++ unwanted data from the relocation. */
1.37957 ++ unsigned int rightshift;
1.37958 ++
1.37959 ++ /* The size of the item to be relocated. This is *not* a
1.37960 ++ power-of-two measure. To get the number of bytes operated
1.37961 ++ on by a type of relocation, use bfd_get_reloc_size. */
1.37962 ++ int size;
1.37963 ++
1.37964 ++ /* The number of bits in the item to be relocated. This is used
1.37965 ++ when doing overflow checking. */
1.37966 ++ unsigned int bitsize;
1.37967 ++
1.37968 ++ /* Notes that the relocation is relative to the location in the
1.37969 ++ data section of the addend. The relocation function will
1.37970 ++ subtract from the relocation value the address of the location
1.37971 ++ being relocated. */
1.37972 ++ bfd_boolean pc_relative;
1.37973 ++
1.37974 ++ /* The bit position of the reloc value in the destination.
1.37975 ++ The relocated value is left shifted by this amount. */
1.37976 ++ unsigned int bitpos;
1.37977 ++
1.37978 ++ /* What type of overflow error should be checked for when
1.37979 ++ relocating. */
1.37980 ++ enum complain_overflow complain_on_overflow;
1.37981 ++
1.37982 ++ /* If this field is non null, then the supplied function is
1.37983 ++ called rather than the normal function. This allows really
1.37984 ++ strange relocation methods to be accommodated (e.g., i960 callj
1.37985 ++ instructions). */
1.37986 ++ bfd_reloc_status_type (*special_function)
1.37987 ++ (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
1.37988 ++ bfd *, char **);
1.37989 ++
1.37990 ++ /* The textual name of the relocation type. */
1.37991 ++ char *name;
1.37992 ++
1.37993 ++ /* Some formats record a relocation addend in the section contents
1.37994 ++ rather than with the relocation. For ELF formats this is the
1.37995 ++ distinction between USE_REL and USE_RELA (though the code checks
1.37996 ++ for USE_REL == 1/0). The value of this field is TRUE if the
1.37997 ++ addend is recorded with the section contents; when performing a
1.37998 ++ partial link (ld -r) the section contents (the data) will be
1.37999 ++ modified. The value of this field is FALSE if addends are
1.38000 ++ recorded with the relocation (in arelent.addend); when performing
1.38001 ++ a partial link the relocation will be modified.
1.38002 ++ All relocations for all ELF USE_RELA targets should set this field
1.38003 ++ to FALSE (values of TRUE should be looked on with suspicion).
1.38004 ++ However, the converse is not true: not all relocations of all ELF
1.38005 ++ USE_REL targets set this field to TRUE. Why this is so is peculiar
1.38006 ++ to each particular target. For relocs that aren't used in partial
1.38007 ++ links (e.g. GOT stuff) it doesn't matter what this is set to. */
1.38008 ++ bfd_boolean partial_inplace;
1.38009 ++
1.38010 ++ /* src_mask selects the part of the instruction (or data) to be used
1.38011 ++ in the relocation sum. If the target relocations don't have an
1.38012 ++ addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
1.38013 ++ dst_mask to extract the addend from the section contents. If
1.38014 ++ relocations do have an addend in the reloc, eg. ELF USE_RELA, this
1.38015 ++ field should be zero. Non-zero values for ELF USE_RELA targets are
1.38016 ++ bogus as in those cases the value in the dst_mask part of the
1.38017 ++ section contents should be treated as garbage. */
1.38018 ++ bfd_vma src_mask;
1.38019 ++
1.38020 ++ /* dst_mask selects which parts of the instruction (or data) are
1.38021 ++ replaced with a relocated value. */
1.38022 ++ bfd_vma dst_mask;
1.38023 ++
1.38024 ++ /* When some formats create PC relative instructions, they leave
1.38025 ++ the value of the pc of the place being relocated in the offset
1.38026 ++ slot of the instruction, so that a PC relative relocation can
1.38027 ++ be made just by adding in an ordinary offset (e.g., sun3 a.out).
1.38028 ++ Some formats leave the displacement part of an instruction
1.38029 ++ empty (e.g., m88k bcs); this flag signals the fact. */
1.38030 ++ bfd_boolean pcrel_offset;
1.38031 ++};
1.38032 ++
1.38033 ++#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
1.38034 ++ { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
1.38035 ++#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
1.38036 ++ HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
1.38037 ++ NAME, FALSE, 0, 0, IN)
1.38038 ++
1.38039 ++#define EMPTY_HOWTO(C) \
1.38040 ++ HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
1.38041 ++ NULL, FALSE, 0, 0, FALSE)
1.38042 ++
1.38043 ++#define HOWTO_PREPARE(relocation, symbol) \
1.38044 ++ { \
1.38045 ++ if (symbol != NULL) \
1.38046 ++ { \
1.38047 ++ if (bfd_is_com_section (symbol->section)) \
1.38048 ++ { \
1.38049 ++ relocation = 0; \
1.38050 ++ } \
1.38051 ++ else \
1.38052 ++ { \
1.38053 ++ relocation = symbol->value; \
1.38054 ++ } \
1.38055 ++ } \
1.38056 ++ }
1.38057 ++
1.38058 ++unsigned int bfd_get_reloc_size (reloc_howto_type *);
1.38059 ++
1.38060 ++typedef struct relent_chain
1.38061 ++{
1.38062 ++ arelent relent;
1.38063 ++ struct relent_chain *next;
1.38064 ++}
1.38065 ++arelent_chain;
1.38066 ++
1.38067 ++bfd_reloc_status_type bfd_check_overflow
1.38068 ++ (enum complain_overflow how,
1.38069 ++ unsigned int bitsize,
1.38070 ++ unsigned int rightshift,
1.38071 ++ unsigned int addrsize,
1.38072 ++ bfd_vma relocation);
1.38073 ++
1.38074 ++bfd_reloc_status_type bfd_perform_relocation
1.38075 ++ (bfd *abfd,
1.38076 ++ arelent *reloc_entry,
1.38077 ++ void *data,
1.38078 ++ asection *input_section,
1.38079 ++ bfd *output_bfd,
1.38080 ++ char **error_message);
1.38081 ++
1.38082 ++bfd_reloc_status_type bfd_install_relocation
1.38083 ++ (bfd *abfd,
1.38084 ++ arelent *reloc_entry,
1.38085 ++ void *data, bfd_vma data_start,
1.38086 ++ asection *input_section,
1.38087 ++ char **error_message);
1.38088 ++
1.38089 ++enum bfd_reloc_code_real {
1.38090 ++ _dummy_first_bfd_reloc_code_real,
1.38091 ++
1.38092 ++
1.38093 ++/* Basic absolute relocations of N bits. */
1.38094 ++ BFD_RELOC_64,
1.38095 ++ BFD_RELOC_32,
1.38096 ++ BFD_RELOC_26,
1.38097 ++ BFD_RELOC_24,
1.38098 ++ BFD_RELOC_16,
1.38099 ++ BFD_RELOC_14,
1.38100 ++ BFD_RELOC_8,
1.38101 ++
1.38102 ++/* PC-relative relocations. Sometimes these are relative to the address
1.38103 ++of the relocation itself; sometimes they are relative to the start of
1.38104 ++the section containing the relocation. It depends on the specific target.
1.38105 ++
1.38106 ++The 24-bit relocation is used in some Intel 960 configurations. */
1.38107 ++ BFD_RELOC_64_PCREL,
1.38108 ++ BFD_RELOC_32_PCREL,
1.38109 ++ BFD_RELOC_24_PCREL,
1.38110 ++ BFD_RELOC_16_PCREL,
1.38111 ++ BFD_RELOC_12_PCREL,
1.38112 ++ BFD_RELOC_8_PCREL,
1.38113 ++
1.38114 ++/* Section relative relocations. Some targets need this for DWARF2. */
1.38115 ++ BFD_RELOC_32_SECREL,
1.38116 ++
1.38117 ++/* For ELF. */
1.38118 ++ BFD_RELOC_32_GOT_PCREL,
1.38119 ++ BFD_RELOC_16_GOT_PCREL,
1.38120 ++ BFD_RELOC_8_GOT_PCREL,
1.38121 ++ BFD_RELOC_32_GOTOFF,
1.38122 ++ BFD_RELOC_16_GOTOFF,
1.38123 ++ BFD_RELOC_LO16_GOTOFF,
1.38124 ++ BFD_RELOC_HI16_GOTOFF,
1.38125 ++ BFD_RELOC_HI16_S_GOTOFF,
1.38126 ++ BFD_RELOC_8_GOTOFF,
1.38127 ++ BFD_RELOC_64_PLT_PCREL,
1.38128 ++ BFD_RELOC_32_PLT_PCREL,
1.38129 ++ BFD_RELOC_24_PLT_PCREL,
1.38130 ++ BFD_RELOC_16_PLT_PCREL,
1.38131 ++ BFD_RELOC_8_PLT_PCREL,
1.38132 ++ BFD_RELOC_64_PLTOFF,
1.38133 ++ BFD_RELOC_32_PLTOFF,
1.38134 ++ BFD_RELOC_16_PLTOFF,
1.38135 ++ BFD_RELOC_LO16_PLTOFF,
1.38136 ++ BFD_RELOC_HI16_PLTOFF,
1.38137 ++ BFD_RELOC_HI16_S_PLTOFF,
1.38138 ++ BFD_RELOC_8_PLTOFF,
1.38139 ++
1.38140 ++/* Relocations used by 68K ELF. */
1.38141 ++ BFD_RELOC_68K_GLOB_DAT,
1.38142 ++ BFD_RELOC_68K_JMP_SLOT,
1.38143 ++ BFD_RELOC_68K_RELATIVE,
1.38144 ++
1.38145 ++/* Linkage-table relative. */
1.38146 ++ BFD_RELOC_32_BASEREL,
1.38147 ++ BFD_RELOC_16_BASEREL,
1.38148 ++ BFD_RELOC_LO16_BASEREL,
1.38149 ++ BFD_RELOC_HI16_BASEREL,
1.38150 ++ BFD_RELOC_HI16_S_BASEREL,
1.38151 ++ BFD_RELOC_8_BASEREL,
1.38152 ++ BFD_RELOC_RVA,
1.38153 ++
1.38154 ++/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */
1.38155 ++ BFD_RELOC_8_FFnn,
1.38156 ++
1.38157 ++/* These PC-relative relocations are stored as word displacements --
1.38158 ++i.e., byte displacements shifted right two bits. The 30-bit word
1.38159 ++displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
1.38160 ++SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
1.38161 ++signed 16-bit displacement is used on the MIPS, and the 23-bit
1.38162 ++displacement is used on the Alpha. */
1.38163 ++ BFD_RELOC_32_PCREL_S2,
1.38164 ++ BFD_RELOC_16_PCREL_S2,
1.38165 ++ BFD_RELOC_23_PCREL_S2,
1.38166 ++
1.38167 ++/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
1.38168 ++the target word. These are used on the SPARC. */
1.38169 ++ BFD_RELOC_HI22,
1.38170 ++ BFD_RELOC_LO10,
1.38171 ++
1.38172 ++/* For systems that allocate a Global Pointer register, these are
1.38173 ++displacements off that register. These relocation types are
1.38174 ++handled specially, because the value the register will have is
1.38175 ++decided relatively late. */
1.38176 ++ BFD_RELOC_GPREL16,
1.38177 ++ BFD_RELOC_GPREL32,
1.38178 ++
1.38179 ++/* Reloc types used for i960/b.out. */
1.38180 ++ BFD_RELOC_I960_CALLJ,
1.38181 ++
1.38182 ++/* SPARC ELF relocations. There is probably some overlap with other
1.38183 ++relocation types already defined. */
1.38184 ++ BFD_RELOC_NONE,
1.38185 ++ BFD_RELOC_SPARC_WDISP22,
1.38186 ++ BFD_RELOC_SPARC22,
1.38187 ++ BFD_RELOC_SPARC13,
1.38188 ++ BFD_RELOC_SPARC_GOT10,
1.38189 ++ BFD_RELOC_SPARC_GOT13,
1.38190 ++ BFD_RELOC_SPARC_GOT22,
1.38191 ++ BFD_RELOC_SPARC_PC10,
1.38192 ++ BFD_RELOC_SPARC_PC22,
1.38193 ++ BFD_RELOC_SPARC_WPLT30,
1.38194 ++ BFD_RELOC_SPARC_COPY,
1.38195 ++ BFD_RELOC_SPARC_GLOB_DAT,
1.38196 ++ BFD_RELOC_SPARC_JMP_SLOT,
1.38197 ++ BFD_RELOC_SPARC_RELATIVE,
1.38198 ++ BFD_RELOC_SPARC_UA16,
1.38199 ++ BFD_RELOC_SPARC_UA32,
1.38200 ++ BFD_RELOC_SPARC_UA64,
1.38201 ++
1.38202 ++/* I think these are specific to SPARC a.out (e.g., Sun 4). */
1.38203 ++ BFD_RELOC_SPARC_BASE13,
1.38204 ++ BFD_RELOC_SPARC_BASE22,
1.38205 ++
1.38206 ++/* SPARC64 relocations */
1.38207 ++#define BFD_RELOC_SPARC_64 BFD_RELOC_64
1.38208 ++ BFD_RELOC_SPARC_10,
1.38209 ++ BFD_RELOC_SPARC_11,
1.38210 ++ BFD_RELOC_SPARC_OLO10,
1.38211 ++ BFD_RELOC_SPARC_HH22,
1.38212 ++ BFD_RELOC_SPARC_HM10,
1.38213 ++ BFD_RELOC_SPARC_LM22,
1.38214 ++ BFD_RELOC_SPARC_PC_HH22,
1.38215 ++ BFD_RELOC_SPARC_PC_HM10,
1.38216 ++ BFD_RELOC_SPARC_PC_LM22,
1.38217 ++ BFD_RELOC_SPARC_WDISP16,
1.38218 ++ BFD_RELOC_SPARC_WDISP19,
1.38219 ++ BFD_RELOC_SPARC_7,
1.38220 ++ BFD_RELOC_SPARC_6,
1.38221 ++ BFD_RELOC_SPARC_5,
1.38222 ++#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
1.38223 ++ BFD_RELOC_SPARC_PLT32,
1.38224 ++ BFD_RELOC_SPARC_PLT64,
1.38225 ++ BFD_RELOC_SPARC_HIX22,
1.38226 ++ BFD_RELOC_SPARC_LOX10,
1.38227 ++ BFD_RELOC_SPARC_H44,
1.38228 ++ BFD_RELOC_SPARC_M44,
1.38229 ++ BFD_RELOC_SPARC_L44,
1.38230 ++ BFD_RELOC_SPARC_REGISTER,
1.38231 ++
1.38232 ++/* SPARC little endian relocation */
1.38233 ++ BFD_RELOC_SPARC_REV32,
1.38234 ++
1.38235 ++/* SPARC TLS relocations */
1.38236 ++ BFD_RELOC_SPARC_TLS_GD_HI22,
1.38237 ++ BFD_RELOC_SPARC_TLS_GD_LO10,
1.38238 ++ BFD_RELOC_SPARC_TLS_GD_ADD,
1.38239 ++ BFD_RELOC_SPARC_TLS_GD_CALL,
1.38240 ++ BFD_RELOC_SPARC_TLS_LDM_HI22,
1.38241 ++ BFD_RELOC_SPARC_TLS_LDM_LO10,
1.38242 ++ BFD_RELOC_SPARC_TLS_LDM_ADD,
1.38243 ++ BFD_RELOC_SPARC_TLS_LDM_CALL,
1.38244 ++ BFD_RELOC_SPARC_TLS_LDO_HIX22,
1.38245 ++ BFD_RELOC_SPARC_TLS_LDO_LOX10,
1.38246 ++ BFD_RELOC_SPARC_TLS_LDO_ADD,
1.38247 ++ BFD_RELOC_SPARC_TLS_IE_HI22,
1.38248 ++ BFD_RELOC_SPARC_TLS_IE_LO10,
1.38249 ++ BFD_RELOC_SPARC_TLS_IE_LD,
1.38250 ++ BFD_RELOC_SPARC_TLS_IE_LDX,
1.38251 ++ BFD_RELOC_SPARC_TLS_IE_ADD,
1.38252 ++ BFD_RELOC_SPARC_TLS_LE_HIX22,
1.38253 ++ BFD_RELOC_SPARC_TLS_LE_LOX10,
1.38254 ++ BFD_RELOC_SPARC_TLS_DTPMOD32,
1.38255 ++ BFD_RELOC_SPARC_TLS_DTPMOD64,
1.38256 ++ BFD_RELOC_SPARC_TLS_DTPOFF32,
1.38257 ++ BFD_RELOC_SPARC_TLS_DTPOFF64,
1.38258 ++ BFD_RELOC_SPARC_TLS_TPOFF32,
1.38259 ++ BFD_RELOC_SPARC_TLS_TPOFF64,
1.38260 ++
1.38261 ++/* SPU Relocations. */
1.38262 ++ BFD_RELOC_SPU_IMM7,
1.38263 ++ BFD_RELOC_SPU_IMM8,
1.38264 ++ BFD_RELOC_SPU_IMM10,
1.38265 ++ BFD_RELOC_SPU_IMM10W,
1.38266 ++ BFD_RELOC_SPU_IMM16,
1.38267 ++ BFD_RELOC_SPU_IMM16W,
1.38268 ++ BFD_RELOC_SPU_IMM18,
1.38269 ++ BFD_RELOC_SPU_PCREL9a,
1.38270 ++ BFD_RELOC_SPU_PCREL9b,
1.38271 ++ BFD_RELOC_SPU_PCREL16,
1.38272 ++ BFD_RELOC_SPU_LO16,
1.38273 ++ BFD_RELOC_SPU_HI16,
1.38274 ++ BFD_RELOC_SPU_PPU32,
1.38275 ++ BFD_RELOC_SPU_PPU64,
1.38276 ++
1.38277 ++/* Alpha ECOFF and ELF relocations. Some of these treat the symbol or
1.38278 ++"addend" in some special way.
1.38279 ++For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
1.38280 ++writing; when reading, it will be the absolute section symbol. The
1.38281 ++addend is the displacement in bytes of the "lda" instruction from
1.38282 ++the "ldah" instruction (which is at the address of this reloc). */
1.38283 ++ BFD_RELOC_ALPHA_GPDISP_HI16,
1.38284 ++
1.38285 ++/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
1.38286 ++with GPDISP_HI16 relocs. The addend is ignored when writing the
1.38287 ++relocations out, and is filled in with the file's GP value on
1.38288 ++reading, for convenience. */
1.38289 ++ BFD_RELOC_ALPHA_GPDISP_LO16,
1.38290 ++
1.38291 ++/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
1.38292 ++relocation except that there is no accompanying GPDISP_LO16
1.38293 ++relocation. */
1.38294 ++ BFD_RELOC_ALPHA_GPDISP,
1.38295 ++
1.38296 ++/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
1.38297 ++the assembler turns it into a LDQ instruction to load the address of
1.38298 ++the symbol, and then fills in a register in the real instruction.
1.38299 ++
1.38300 ++The LITERAL reloc, at the LDQ instruction, refers to the .lita
1.38301 ++section symbol. The addend is ignored when writing, but is filled
1.38302 ++in with the file's GP value on reading, for convenience, as with the
1.38303 ++GPDISP_LO16 reloc.
1.38304 ++
1.38305 ++The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
1.38306 ++It should refer to the symbol to be referenced, as with 16_GOTOFF,
1.38307 ++but it generates output not based on the position within the .got
1.38308 ++section, but relative to the GP value chosen for the file during the
1.38309 ++final link stage.
1.38310 ++
1.38311 ++The LITUSE reloc, on the instruction using the loaded address, gives
1.38312 ++information to the linker that it might be able to use to optimize
1.38313 ++away some literal section references. The symbol is ignored (read
1.38314 ++as the absolute section symbol), and the "addend" indicates the type
1.38315 ++of instruction using the register:
1.38316 ++1 - "memory" fmt insn
1.38317 ++2 - byte-manipulation (byte offset reg)
1.38318 ++3 - jsr (target of branch) */
1.38319 ++ BFD_RELOC_ALPHA_LITERAL,
1.38320 ++ BFD_RELOC_ALPHA_ELF_LITERAL,
1.38321 ++ BFD_RELOC_ALPHA_LITUSE,
1.38322 ++
1.38323 ++/* The HINT relocation indicates a value that should be filled into the
1.38324 ++"hint" field of a jmp/jsr/ret instruction, for possible branch-
1.38325 ++prediction logic which may be provided on some processors. */
1.38326 ++ BFD_RELOC_ALPHA_HINT,
1.38327 ++
1.38328 ++/* The LINKAGE relocation outputs a linkage pair in the object file,
1.38329 ++which is filled by the linker. */
1.38330 ++ BFD_RELOC_ALPHA_LINKAGE,
1.38331 ++
1.38332 ++/* The CODEADDR relocation outputs a STO_CA in the object file,
1.38333 ++which is filled by the linker. */
1.38334 ++ BFD_RELOC_ALPHA_CODEADDR,
1.38335 ++
1.38336 ++/* The GPREL_HI/LO relocations together form a 32-bit offset from the
1.38337 ++GP register. */
1.38338 ++ BFD_RELOC_ALPHA_GPREL_HI16,
1.38339 ++ BFD_RELOC_ALPHA_GPREL_LO16,
1.38340 ++
1.38341 ++/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
1.38342 ++share a common GP, and the target address is adjusted for
1.38343 ++STO_ALPHA_STD_GPLOAD. */
1.38344 ++ BFD_RELOC_ALPHA_BRSGP,
1.38345 ++
1.38346 ++/* Alpha thread-local storage relocations. */
1.38347 ++ BFD_RELOC_ALPHA_TLSGD,
1.38348 ++ BFD_RELOC_ALPHA_TLSLDM,
1.38349 ++ BFD_RELOC_ALPHA_DTPMOD64,
1.38350 ++ BFD_RELOC_ALPHA_GOTDTPREL16,
1.38351 ++ BFD_RELOC_ALPHA_DTPREL64,
1.38352 ++ BFD_RELOC_ALPHA_DTPREL_HI16,
1.38353 ++ BFD_RELOC_ALPHA_DTPREL_LO16,
1.38354 ++ BFD_RELOC_ALPHA_DTPREL16,
1.38355 ++ BFD_RELOC_ALPHA_GOTTPREL16,
1.38356 ++ BFD_RELOC_ALPHA_TPREL64,
1.38357 ++ BFD_RELOC_ALPHA_TPREL_HI16,
1.38358 ++ BFD_RELOC_ALPHA_TPREL_LO16,
1.38359 ++ BFD_RELOC_ALPHA_TPREL16,
1.38360 ++
1.38361 ++/* Bits 27..2 of the relocation address shifted right 2 bits;
1.38362 ++simple reloc otherwise. */
1.38363 ++ BFD_RELOC_MIPS_JMP,
1.38364 ++
1.38365 ++/* The MIPS16 jump instruction. */
1.38366 ++ BFD_RELOC_MIPS16_JMP,
1.38367 ++
1.38368 ++/* MIPS16 GP relative reloc. */
1.38369 ++ BFD_RELOC_MIPS16_GPREL,
1.38370 ++
1.38371 ++/* High 16 bits of 32-bit value; simple reloc. */
1.38372 ++ BFD_RELOC_HI16,
1.38373 ++
1.38374 ++/* High 16 bits of 32-bit value but the low 16 bits will be sign
1.38375 ++extended and added to form the final result. If the low 16
1.38376 ++bits form a negative number, we need to add one to the high value
1.38377 ++to compensate for the borrow when the low bits are added. */
1.38378 ++ BFD_RELOC_HI16_S,
1.38379 ++
1.38380 ++/* Low 16 bits. */
1.38381 ++ BFD_RELOC_LO16,
1.38382 ++
1.38383 ++/* High 16 bits of 32-bit pc-relative value */
1.38384 ++ BFD_RELOC_HI16_PCREL,
1.38385 ++
1.38386 ++/* High 16 bits of 32-bit pc-relative value, adjusted */
1.38387 ++ BFD_RELOC_HI16_S_PCREL,
1.38388 ++
1.38389 ++/* Low 16 bits of pc-relative value */
1.38390 ++ BFD_RELOC_LO16_PCREL,
1.38391 ++
1.38392 ++/* MIPS16 high 16 bits of 32-bit value. */
1.38393 ++ BFD_RELOC_MIPS16_HI16,
1.38394 ++
1.38395 ++/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
1.38396 ++extended and added to form the final result. If the low 16
1.38397 ++bits form a negative number, we need to add one to the high value
1.38398 ++to compensate for the borrow when the low bits are added. */
1.38399 ++ BFD_RELOC_MIPS16_HI16_S,
1.38400 ++
1.38401 ++/* MIPS16 low 16 bits. */
1.38402 ++ BFD_RELOC_MIPS16_LO16,
1.38403 ++
1.38404 ++/* Relocation against a MIPS literal section. */
1.38405 ++ BFD_RELOC_MIPS_LITERAL,
1.38406 ++
1.38407 ++/* MIPS ELF relocations. */
1.38408 ++ BFD_RELOC_MIPS_GOT16,
1.38409 ++ BFD_RELOC_MIPS_CALL16,
1.38410 ++ BFD_RELOC_MIPS_GOT_HI16,
1.38411 ++ BFD_RELOC_MIPS_GOT_LO16,
1.38412 ++ BFD_RELOC_MIPS_CALL_HI16,
1.38413 ++ BFD_RELOC_MIPS_CALL_LO16,
1.38414 ++ BFD_RELOC_MIPS_SUB,
1.38415 ++ BFD_RELOC_MIPS_GOT_PAGE,
1.38416 ++ BFD_RELOC_MIPS_GOT_OFST,
1.38417 ++ BFD_RELOC_MIPS_GOT_DISP,
1.38418 ++ BFD_RELOC_MIPS_SHIFT5,
1.38419 ++ BFD_RELOC_MIPS_SHIFT6,
1.38420 ++ BFD_RELOC_MIPS_INSERT_A,
1.38421 ++ BFD_RELOC_MIPS_INSERT_B,
1.38422 ++ BFD_RELOC_MIPS_DELETE,
1.38423 ++ BFD_RELOC_MIPS_HIGHEST,
1.38424 ++ BFD_RELOC_MIPS_HIGHER,
1.38425 ++ BFD_RELOC_MIPS_SCN_DISP,
1.38426 ++ BFD_RELOC_MIPS_REL16,
1.38427 ++ BFD_RELOC_MIPS_RELGOT,
1.38428 ++ BFD_RELOC_MIPS_JALR,
1.38429 ++ BFD_RELOC_MIPS_TLS_DTPMOD32,
1.38430 ++ BFD_RELOC_MIPS_TLS_DTPREL32,
1.38431 ++ BFD_RELOC_MIPS_TLS_DTPMOD64,
1.38432 ++ BFD_RELOC_MIPS_TLS_DTPREL64,
1.38433 ++ BFD_RELOC_MIPS_TLS_GD,
1.38434 ++ BFD_RELOC_MIPS_TLS_LDM,
1.38435 ++ BFD_RELOC_MIPS_TLS_DTPREL_HI16,
1.38436 ++ BFD_RELOC_MIPS_TLS_DTPREL_LO16,
1.38437 ++ BFD_RELOC_MIPS_TLS_GOTTPREL,
1.38438 ++ BFD_RELOC_MIPS_TLS_TPREL32,
1.38439 ++ BFD_RELOC_MIPS_TLS_TPREL64,
1.38440 ++ BFD_RELOC_MIPS_TLS_TPREL_HI16,
1.38441 ++ BFD_RELOC_MIPS_TLS_TPREL_LO16,
1.38442 ++
1.38443 ++
1.38444 ++/* MIPS ELF relocations (VxWorks extensions). */
1.38445 ++ BFD_RELOC_MIPS_COPY,
1.38446 ++ BFD_RELOC_MIPS_JUMP_SLOT,
1.38447 ++
1.38448 ++
1.38449 ++/* Fujitsu Frv Relocations. */
1.38450 ++ BFD_RELOC_FRV_LABEL16,
1.38451 ++ BFD_RELOC_FRV_LABEL24,
1.38452 ++ BFD_RELOC_FRV_LO16,
1.38453 ++ BFD_RELOC_FRV_HI16,
1.38454 ++ BFD_RELOC_FRV_GPREL12,
1.38455 ++ BFD_RELOC_FRV_GPRELU12,
1.38456 ++ BFD_RELOC_FRV_GPREL32,
1.38457 ++ BFD_RELOC_FRV_GPRELHI,
1.38458 ++ BFD_RELOC_FRV_GPRELLO,
1.38459 ++ BFD_RELOC_FRV_GOT12,
1.38460 ++ BFD_RELOC_FRV_GOTHI,
1.38461 ++ BFD_RELOC_FRV_GOTLO,
1.38462 ++ BFD_RELOC_FRV_FUNCDESC,
1.38463 ++ BFD_RELOC_FRV_FUNCDESC_GOT12,
1.38464 ++ BFD_RELOC_FRV_FUNCDESC_GOTHI,
1.38465 ++ BFD_RELOC_FRV_FUNCDESC_GOTLO,
1.38466 ++ BFD_RELOC_FRV_FUNCDESC_VALUE,
1.38467 ++ BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
1.38468 ++ BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
1.38469 ++ BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
1.38470 ++ BFD_RELOC_FRV_GOTOFF12,
1.38471 ++ BFD_RELOC_FRV_GOTOFFHI,
1.38472 ++ BFD_RELOC_FRV_GOTOFFLO,
1.38473 ++ BFD_RELOC_FRV_GETTLSOFF,
1.38474 ++ BFD_RELOC_FRV_TLSDESC_VALUE,
1.38475 ++ BFD_RELOC_FRV_GOTTLSDESC12,
1.38476 ++ BFD_RELOC_FRV_GOTTLSDESCHI,
1.38477 ++ BFD_RELOC_FRV_GOTTLSDESCLO,
1.38478 ++ BFD_RELOC_FRV_TLSMOFF12,
1.38479 ++ BFD_RELOC_FRV_TLSMOFFHI,
1.38480 ++ BFD_RELOC_FRV_TLSMOFFLO,
1.38481 ++ BFD_RELOC_FRV_GOTTLSOFF12,
1.38482 ++ BFD_RELOC_FRV_GOTTLSOFFHI,
1.38483 ++ BFD_RELOC_FRV_GOTTLSOFFLO,
1.38484 ++ BFD_RELOC_FRV_TLSOFF,
1.38485 ++ BFD_RELOC_FRV_TLSDESC_RELAX,
1.38486 ++ BFD_RELOC_FRV_GETTLSOFF_RELAX,
1.38487 ++ BFD_RELOC_FRV_TLSOFF_RELAX,
1.38488 ++ BFD_RELOC_FRV_TLSMOFF,
1.38489 ++
1.38490 ++
1.38491 ++/* This is a 24bit GOT-relative reloc for the mn10300. */
1.38492 ++ BFD_RELOC_MN10300_GOTOFF24,
1.38493 ++
1.38494 ++/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
1.38495 ++in the instruction. */
1.38496 ++ BFD_RELOC_MN10300_GOT32,
1.38497 ++
1.38498 ++/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
1.38499 ++in the instruction. */
1.38500 ++ BFD_RELOC_MN10300_GOT24,
1.38501 ++
1.38502 ++/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
1.38503 ++in the instruction. */
1.38504 ++ BFD_RELOC_MN10300_GOT16,
1.38505 ++
1.38506 ++/* Copy symbol at runtime. */
1.38507 ++ BFD_RELOC_MN10300_COPY,
1.38508 ++
1.38509 ++/* Create GOT entry. */
1.38510 ++ BFD_RELOC_MN10300_GLOB_DAT,
1.38511 ++
1.38512 ++/* Create PLT entry. */
1.38513 ++ BFD_RELOC_MN10300_JMP_SLOT,
1.38514 ++
1.38515 ++/* Adjust by program base. */
1.38516 ++ BFD_RELOC_MN10300_RELATIVE,
1.38517 ++
1.38518 ++
1.38519 ++/* i386/elf relocations */
1.38520 ++ BFD_RELOC_386_GOT32,
1.38521 ++ BFD_RELOC_386_PLT32,
1.38522 ++ BFD_RELOC_386_COPY,
1.38523 ++ BFD_RELOC_386_GLOB_DAT,
1.38524 ++ BFD_RELOC_386_JUMP_SLOT,
1.38525 ++ BFD_RELOC_386_RELATIVE,
1.38526 ++ BFD_RELOC_386_GOTOFF,
1.38527 ++ BFD_RELOC_386_GOTPC,
1.38528 ++ BFD_RELOC_386_TLS_TPOFF,
1.38529 ++ BFD_RELOC_386_TLS_IE,
1.38530 ++ BFD_RELOC_386_TLS_GOTIE,
1.38531 ++ BFD_RELOC_386_TLS_LE,
1.38532 ++ BFD_RELOC_386_TLS_GD,
1.38533 ++ BFD_RELOC_386_TLS_LDM,
1.38534 ++ BFD_RELOC_386_TLS_LDO_32,
1.38535 ++ BFD_RELOC_386_TLS_IE_32,
1.38536 ++ BFD_RELOC_386_TLS_LE_32,
1.38537 ++ BFD_RELOC_386_TLS_DTPMOD32,
1.38538 ++ BFD_RELOC_386_TLS_DTPOFF32,
1.38539 ++ BFD_RELOC_386_TLS_TPOFF32,
1.38540 ++ BFD_RELOC_386_TLS_GOTDESC,
1.38541 ++ BFD_RELOC_386_TLS_DESC_CALL,
1.38542 ++ BFD_RELOC_386_TLS_DESC,
1.38543 ++
1.38544 ++/* x86-64/elf relocations */
1.38545 ++ BFD_RELOC_X86_64_GOT32,
1.38546 ++ BFD_RELOC_X86_64_PLT32,
1.38547 ++ BFD_RELOC_X86_64_COPY,
1.38548 ++ BFD_RELOC_X86_64_GLOB_DAT,
1.38549 ++ BFD_RELOC_X86_64_JUMP_SLOT,
1.38550 ++ BFD_RELOC_X86_64_RELATIVE,
1.38551 ++ BFD_RELOC_X86_64_GOTPCREL,
1.38552 ++ BFD_RELOC_X86_64_32S,
1.38553 ++ BFD_RELOC_X86_64_DTPMOD64,
1.38554 ++ BFD_RELOC_X86_64_DTPOFF64,
1.38555 ++ BFD_RELOC_X86_64_TPOFF64,
1.38556 ++ BFD_RELOC_X86_64_TLSGD,
1.38557 ++ BFD_RELOC_X86_64_TLSLD,
1.38558 ++ BFD_RELOC_X86_64_DTPOFF32,
1.38559 ++ BFD_RELOC_X86_64_GOTTPOFF,
1.38560 ++ BFD_RELOC_X86_64_TPOFF32,
1.38561 ++ BFD_RELOC_X86_64_GOTOFF64,
1.38562 ++ BFD_RELOC_X86_64_GOTPC32,
1.38563 ++ BFD_RELOC_X86_64_GOT64,
1.38564 ++ BFD_RELOC_X86_64_GOTPCREL64,
1.38565 ++ BFD_RELOC_X86_64_GOTPC64,
1.38566 ++ BFD_RELOC_X86_64_GOTPLT64,
1.38567 ++ BFD_RELOC_X86_64_PLTOFF64,
1.38568 ++ BFD_RELOC_X86_64_GOTPC32_TLSDESC,
1.38569 ++ BFD_RELOC_X86_64_TLSDESC_CALL,
1.38570 ++ BFD_RELOC_X86_64_TLSDESC,
1.38571 ++
1.38572 ++/* ns32k relocations */
1.38573 ++ BFD_RELOC_NS32K_IMM_8,
1.38574 ++ BFD_RELOC_NS32K_IMM_16,
1.38575 ++ BFD_RELOC_NS32K_IMM_32,
1.38576 ++ BFD_RELOC_NS32K_IMM_8_PCREL,
1.38577 ++ BFD_RELOC_NS32K_IMM_16_PCREL,
1.38578 ++ BFD_RELOC_NS32K_IMM_32_PCREL,
1.38579 ++ BFD_RELOC_NS32K_DISP_8,
1.38580 ++ BFD_RELOC_NS32K_DISP_16,
1.38581 ++ BFD_RELOC_NS32K_DISP_32,
1.38582 ++ BFD_RELOC_NS32K_DISP_8_PCREL,
1.38583 ++ BFD_RELOC_NS32K_DISP_16_PCREL,
1.38584 ++ BFD_RELOC_NS32K_DISP_32_PCREL,
1.38585 ++
1.38586 ++/* PDP11 relocations */
1.38587 ++ BFD_RELOC_PDP11_DISP_8_PCREL,
1.38588 ++ BFD_RELOC_PDP11_DISP_6_PCREL,
1.38589 ++
1.38590 ++/* Picojava relocs. Not all of these appear in object files. */
1.38591 ++ BFD_RELOC_PJ_CODE_HI16,
1.38592 ++ BFD_RELOC_PJ_CODE_LO16,
1.38593 ++ BFD_RELOC_PJ_CODE_DIR16,
1.38594 ++ BFD_RELOC_PJ_CODE_DIR32,
1.38595 ++ BFD_RELOC_PJ_CODE_REL16,
1.38596 ++ BFD_RELOC_PJ_CODE_REL32,
1.38597 ++
1.38598 ++/* Power(rs6000) and PowerPC relocations. */
1.38599 ++ BFD_RELOC_PPC_B26,
1.38600 ++ BFD_RELOC_PPC_BA26,
1.38601 ++ BFD_RELOC_PPC_TOC16,
1.38602 ++ BFD_RELOC_PPC_B16,
1.38603 ++ BFD_RELOC_PPC_B16_BRTAKEN,
1.38604 ++ BFD_RELOC_PPC_B16_BRNTAKEN,
1.38605 ++ BFD_RELOC_PPC_BA16,
1.38606 ++ BFD_RELOC_PPC_BA16_BRTAKEN,
1.38607 ++ BFD_RELOC_PPC_BA16_BRNTAKEN,
1.38608 ++ BFD_RELOC_PPC_COPY,
1.38609 ++ BFD_RELOC_PPC_GLOB_DAT,
1.38610 ++ BFD_RELOC_PPC_JMP_SLOT,
1.38611 ++ BFD_RELOC_PPC_RELATIVE,
1.38612 ++ BFD_RELOC_PPC_LOCAL24PC,
1.38613 ++ BFD_RELOC_PPC_EMB_NADDR32,
1.38614 ++ BFD_RELOC_PPC_EMB_NADDR16,
1.38615 ++ BFD_RELOC_PPC_EMB_NADDR16_LO,
1.38616 ++ BFD_RELOC_PPC_EMB_NADDR16_HI,
1.38617 ++ BFD_RELOC_PPC_EMB_NADDR16_HA,
1.38618 ++ BFD_RELOC_PPC_EMB_SDAI16,
1.38619 ++ BFD_RELOC_PPC_EMB_SDA2I16,
1.38620 ++ BFD_RELOC_PPC_EMB_SDA2REL,
1.38621 ++ BFD_RELOC_PPC_EMB_SDA21,
1.38622 ++ BFD_RELOC_PPC_EMB_MRKREF,
1.38623 ++ BFD_RELOC_PPC_EMB_RELSEC16,
1.38624 ++ BFD_RELOC_PPC_EMB_RELST_LO,
1.38625 ++ BFD_RELOC_PPC_EMB_RELST_HI,
1.38626 ++ BFD_RELOC_PPC_EMB_RELST_HA,
1.38627 ++ BFD_RELOC_PPC_EMB_BIT_FLD,
1.38628 ++ BFD_RELOC_PPC_EMB_RELSDA,
1.38629 ++ BFD_RELOC_PPC64_HIGHER,
1.38630 ++ BFD_RELOC_PPC64_HIGHER_S,
1.38631 ++ BFD_RELOC_PPC64_HIGHEST,
1.38632 ++ BFD_RELOC_PPC64_HIGHEST_S,
1.38633 ++ BFD_RELOC_PPC64_TOC16_LO,
1.38634 ++ BFD_RELOC_PPC64_TOC16_HI,
1.38635 ++ BFD_RELOC_PPC64_TOC16_HA,
1.38636 ++ BFD_RELOC_PPC64_TOC,
1.38637 ++ BFD_RELOC_PPC64_PLTGOT16,
1.38638 ++ BFD_RELOC_PPC64_PLTGOT16_LO,
1.38639 ++ BFD_RELOC_PPC64_PLTGOT16_HI,
1.38640 ++ BFD_RELOC_PPC64_PLTGOT16_HA,
1.38641 ++ BFD_RELOC_PPC64_ADDR16_DS,
1.38642 ++ BFD_RELOC_PPC64_ADDR16_LO_DS,
1.38643 ++ BFD_RELOC_PPC64_GOT16_DS,
1.38644 ++ BFD_RELOC_PPC64_GOT16_LO_DS,
1.38645 ++ BFD_RELOC_PPC64_PLT16_LO_DS,
1.38646 ++ BFD_RELOC_PPC64_SECTOFF_DS,
1.38647 ++ BFD_RELOC_PPC64_SECTOFF_LO_DS,
1.38648 ++ BFD_RELOC_PPC64_TOC16_DS,
1.38649 ++ BFD_RELOC_PPC64_TOC16_LO_DS,
1.38650 ++ BFD_RELOC_PPC64_PLTGOT16_DS,
1.38651 ++ BFD_RELOC_PPC64_PLTGOT16_LO_DS,
1.38652 ++
1.38653 ++/* PowerPC and PowerPC64 thread-local storage relocations. */
1.38654 ++ BFD_RELOC_PPC_TLS,
1.38655 ++ BFD_RELOC_PPC_DTPMOD,
1.38656 ++ BFD_RELOC_PPC_TPREL16,
1.38657 ++ BFD_RELOC_PPC_TPREL16_LO,
1.38658 ++ BFD_RELOC_PPC_TPREL16_HI,
1.38659 ++ BFD_RELOC_PPC_TPREL16_HA,
1.38660 ++ BFD_RELOC_PPC_TPREL,
1.38661 ++ BFD_RELOC_PPC_DTPREL16,
1.38662 ++ BFD_RELOC_PPC_DTPREL16_LO,
1.38663 ++ BFD_RELOC_PPC_DTPREL16_HI,
1.38664 ++ BFD_RELOC_PPC_DTPREL16_HA,
1.38665 ++ BFD_RELOC_PPC_DTPREL,
1.38666 ++ BFD_RELOC_PPC_GOT_TLSGD16,
1.38667 ++ BFD_RELOC_PPC_GOT_TLSGD16_LO,
1.38668 ++ BFD_RELOC_PPC_GOT_TLSGD16_HI,
1.38669 ++ BFD_RELOC_PPC_GOT_TLSGD16_HA,
1.38670 ++ BFD_RELOC_PPC_GOT_TLSLD16,
1.38671 ++ BFD_RELOC_PPC_GOT_TLSLD16_LO,
1.38672 ++ BFD_RELOC_PPC_GOT_TLSLD16_HI,
1.38673 ++ BFD_RELOC_PPC_GOT_TLSLD16_HA,
1.38674 ++ BFD_RELOC_PPC_GOT_TPREL16,
1.38675 ++ BFD_RELOC_PPC_GOT_TPREL16_LO,
1.38676 ++ BFD_RELOC_PPC_GOT_TPREL16_HI,
1.38677 ++ BFD_RELOC_PPC_GOT_TPREL16_HA,
1.38678 ++ BFD_RELOC_PPC_GOT_DTPREL16,
1.38679 ++ BFD_RELOC_PPC_GOT_DTPREL16_LO,
1.38680 ++ BFD_RELOC_PPC_GOT_DTPREL16_HI,
1.38681 ++ BFD_RELOC_PPC_GOT_DTPREL16_HA,
1.38682 ++ BFD_RELOC_PPC64_TPREL16_DS,
1.38683 ++ BFD_RELOC_PPC64_TPREL16_LO_DS,
1.38684 ++ BFD_RELOC_PPC64_TPREL16_HIGHER,
1.38685 ++ BFD_RELOC_PPC64_TPREL16_HIGHERA,
1.38686 ++ BFD_RELOC_PPC64_TPREL16_HIGHEST,
1.38687 ++ BFD_RELOC_PPC64_TPREL16_HIGHESTA,
1.38688 ++ BFD_RELOC_PPC64_DTPREL16_DS,
1.38689 ++ BFD_RELOC_PPC64_DTPREL16_LO_DS,
1.38690 ++ BFD_RELOC_PPC64_DTPREL16_HIGHER,
1.38691 ++ BFD_RELOC_PPC64_DTPREL16_HIGHERA,
1.38692 ++ BFD_RELOC_PPC64_DTPREL16_HIGHEST,
1.38693 ++ BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
1.38694 ++
1.38695 ++/* IBM 370/390 relocations */
1.38696 ++ BFD_RELOC_I370_D12,
1.38697 ++
1.38698 ++/* The type of reloc used to build a constructor table - at the moment
1.38699 ++probably a 32 bit wide absolute relocation, but the target can choose.
1.38700 ++It generally does map to one of the other relocation types. */
1.38701 ++ BFD_RELOC_CTOR,
1.38702 ++
1.38703 ++/* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
1.38704 ++not stored in the instruction. */
1.38705 ++ BFD_RELOC_ARM_PCREL_BRANCH,
1.38706 ++
1.38707 ++/* ARM 26 bit pc-relative branch. The lowest bit must be zero and is
1.38708 ++not stored in the instruction. The 2nd lowest bit comes from a 1 bit
1.38709 ++field in the instruction. */
1.38710 ++ BFD_RELOC_ARM_PCREL_BLX,
1.38711 ++
1.38712 ++/* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
1.38713 ++not stored in the instruction. The 2nd lowest bit comes from a 1 bit
1.38714 ++field in the instruction. */
1.38715 ++ BFD_RELOC_THUMB_PCREL_BLX,
1.38716 ++
1.38717 ++/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */
1.38718 ++ BFD_RELOC_ARM_PCREL_CALL,
1.38719 ++
1.38720 ++/* ARM 26-bit pc-relative branch for B or conditional BL instruction. */
1.38721 ++ BFD_RELOC_ARM_PCREL_JUMP,
1.38722 ++
1.38723 ++/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
1.38724 ++The lowest bit must be zero and is not stored in the instruction.
1.38725 ++Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
1.38726 ++"nn" one smaller in all cases. Note further that BRANCH23
1.38727 ++corresponds to R_ARM_THM_CALL. */
1.38728 ++ BFD_RELOC_THUMB_PCREL_BRANCH7,
1.38729 ++ BFD_RELOC_THUMB_PCREL_BRANCH9,
1.38730 ++ BFD_RELOC_THUMB_PCREL_BRANCH12,
1.38731 ++ BFD_RELOC_THUMB_PCREL_BRANCH20,
1.38732 ++ BFD_RELOC_THUMB_PCREL_BRANCH23,
1.38733 ++ BFD_RELOC_THUMB_PCREL_BRANCH25,
1.38734 ++
1.38735 ++/* 12-bit immediate offset, used in ARM-format ldr and str instructions. */
1.38736 ++ BFD_RELOC_ARM_OFFSET_IMM,
1.38737 ++
1.38738 ++/* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */
1.38739 ++ BFD_RELOC_ARM_THUMB_OFFSET,
1.38740 ++
1.38741 ++/* Pc-relative or absolute relocation depending on target. Used for
1.38742 ++entries in .init_array sections. */
1.38743 ++ BFD_RELOC_ARM_TARGET1,
1.38744 ++
1.38745 ++/* Read-only segment base relative address. */
1.38746 ++ BFD_RELOC_ARM_ROSEGREL32,
1.38747 ++
1.38748 ++/* Data segment base relative address. */
1.38749 ++ BFD_RELOC_ARM_SBREL32,
1.38750 ++
1.38751 ++/* This reloc is used for references to RTTI data from exception handling
1.38752 ++tables. The actual definition depends on the target. It may be a
1.38753 ++pc-relative or some form of GOT-indirect relocation. */
1.38754 ++ BFD_RELOC_ARM_TARGET2,
1.38755 ++
1.38756 ++/* 31-bit PC relative address. */
1.38757 ++ BFD_RELOC_ARM_PREL31,
1.38758 ++
1.38759 ++/* Low and High halfword relocations for MOVW and MOVT instructions. */
1.38760 ++ BFD_RELOC_ARM_MOVW,
1.38761 ++ BFD_RELOC_ARM_MOVT,
1.38762 ++ BFD_RELOC_ARM_MOVW_PCREL,
1.38763 ++ BFD_RELOC_ARM_MOVT_PCREL,
1.38764 ++ BFD_RELOC_ARM_THUMB_MOVW,
1.38765 ++ BFD_RELOC_ARM_THUMB_MOVT,
1.38766 ++ BFD_RELOC_ARM_THUMB_MOVW_PCREL,
1.38767 ++ BFD_RELOC_ARM_THUMB_MOVT_PCREL,
1.38768 ++
1.38769 ++/* Relocations for setting up GOTs and PLTs for shared libraries. */
1.38770 ++ BFD_RELOC_ARM_JUMP_SLOT,
1.38771 ++ BFD_RELOC_ARM_GLOB_DAT,
1.38772 ++ BFD_RELOC_ARM_GOT32,
1.38773 ++ BFD_RELOC_ARM_PLT32,
1.38774 ++ BFD_RELOC_ARM_RELATIVE,
1.38775 ++ BFD_RELOC_ARM_GOTOFF,
1.38776 ++ BFD_RELOC_ARM_GOTPC,
1.38777 ++
1.38778 ++/* ARM thread-local storage relocations. */
1.38779 ++ BFD_RELOC_ARM_TLS_GD32,
1.38780 ++ BFD_RELOC_ARM_TLS_LDO32,
1.38781 ++ BFD_RELOC_ARM_TLS_LDM32,
1.38782 ++ BFD_RELOC_ARM_TLS_DTPOFF32,
1.38783 ++ BFD_RELOC_ARM_TLS_DTPMOD32,
1.38784 ++ BFD_RELOC_ARM_TLS_TPOFF32,
1.38785 ++ BFD_RELOC_ARM_TLS_IE32,
1.38786 ++ BFD_RELOC_ARM_TLS_LE32,
1.38787 ++
1.38788 ++/* ARM group relocations. */
1.38789 ++ BFD_RELOC_ARM_ALU_PC_G0_NC,
1.38790 ++ BFD_RELOC_ARM_ALU_PC_G0,
1.38791 ++ BFD_RELOC_ARM_ALU_PC_G1_NC,
1.38792 ++ BFD_RELOC_ARM_ALU_PC_G1,
1.38793 ++ BFD_RELOC_ARM_ALU_PC_G2,
1.38794 ++ BFD_RELOC_ARM_LDR_PC_G0,
1.38795 ++ BFD_RELOC_ARM_LDR_PC_G1,
1.38796 ++ BFD_RELOC_ARM_LDR_PC_G2,
1.38797 ++ BFD_RELOC_ARM_LDRS_PC_G0,
1.38798 ++ BFD_RELOC_ARM_LDRS_PC_G1,
1.38799 ++ BFD_RELOC_ARM_LDRS_PC_G2,
1.38800 ++ BFD_RELOC_ARM_LDC_PC_G0,
1.38801 ++ BFD_RELOC_ARM_LDC_PC_G1,
1.38802 ++ BFD_RELOC_ARM_LDC_PC_G2,
1.38803 ++ BFD_RELOC_ARM_ALU_SB_G0_NC,
1.38804 ++ BFD_RELOC_ARM_ALU_SB_G0,
1.38805 ++ BFD_RELOC_ARM_ALU_SB_G1_NC,
1.38806 ++ BFD_RELOC_ARM_ALU_SB_G1,
1.38807 ++ BFD_RELOC_ARM_ALU_SB_G2,
1.38808 ++ BFD_RELOC_ARM_LDR_SB_G0,
1.38809 ++ BFD_RELOC_ARM_LDR_SB_G1,
1.38810 ++ BFD_RELOC_ARM_LDR_SB_G2,
1.38811 ++ BFD_RELOC_ARM_LDRS_SB_G0,
1.38812 ++ BFD_RELOC_ARM_LDRS_SB_G1,
1.38813 ++ BFD_RELOC_ARM_LDRS_SB_G2,
1.38814 ++ BFD_RELOC_ARM_LDC_SB_G0,
1.38815 ++ BFD_RELOC_ARM_LDC_SB_G1,
1.38816 ++ BFD_RELOC_ARM_LDC_SB_G2,
1.38817 ++
1.38818 ++/* These relocs are only used within the ARM assembler. They are not
1.38819 ++(at present) written to any object files. */
1.38820 ++ BFD_RELOC_ARM_IMMEDIATE,
1.38821 ++ BFD_RELOC_ARM_ADRL_IMMEDIATE,
1.38822 ++ BFD_RELOC_ARM_T32_IMMEDIATE,
1.38823 ++ BFD_RELOC_ARM_T32_ADD_IMM,
1.38824 ++ BFD_RELOC_ARM_T32_IMM12,
1.38825 ++ BFD_RELOC_ARM_T32_ADD_PC12,
1.38826 ++ BFD_RELOC_ARM_SHIFT_IMM,
1.38827 ++ BFD_RELOC_ARM_SMC,
1.38828 ++ BFD_RELOC_ARM_SWI,
1.38829 ++ BFD_RELOC_ARM_MULTI,
1.38830 ++ BFD_RELOC_ARM_CP_OFF_IMM,
1.38831 ++ BFD_RELOC_ARM_CP_OFF_IMM_S2,
1.38832 ++ BFD_RELOC_ARM_T32_CP_OFF_IMM,
1.38833 ++ BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
1.38834 ++ BFD_RELOC_ARM_ADR_IMM,
1.38835 ++ BFD_RELOC_ARM_LDR_IMM,
1.38836 ++ BFD_RELOC_ARM_LITERAL,
1.38837 ++ BFD_RELOC_ARM_IN_POOL,
1.38838 ++ BFD_RELOC_ARM_OFFSET_IMM8,
1.38839 ++ BFD_RELOC_ARM_T32_OFFSET_U8,
1.38840 ++ BFD_RELOC_ARM_T32_OFFSET_IMM,
1.38841 ++ BFD_RELOC_ARM_HWLITERAL,
1.38842 ++ BFD_RELOC_ARM_THUMB_ADD,
1.38843 ++ BFD_RELOC_ARM_THUMB_IMM,
1.38844 ++ BFD_RELOC_ARM_THUMB_SHIFT,
1.38845 ++
1.38846 ++/* Renesas / SuperH SH relocs. Not all of these appear in object files. */
1.38847 ++ BFD_RELOC_SH_PCDISP8BY2,
1.38848 ++ BFD_RELOC_SH_PCDISP12BY2,
1.38849 ++ BFD_RELOC_SH_IMM3,
1.38850 ++ BFD_RELOC_SH_IMM3U,
1.38851 ++ BFD_RELOC_SH_DISP12,
1.38852 ++ BFD_RELOC_SH_DISP12BY2,
1.38853 ++ BFD_RELOC_SH_DISP12BY4,
1.38854 ++ BFD_RELOC_SH_DISP12BY8,
1.38855 ++ BFD_RELOC_SH_DISP20,
1.38856 ++ BFD_RELOC_SH_DISP20BY8,
1.38857 ++ BFD_RELOC_SH_IMM4,
1.38858 ++ BFD_RELOC_SH_IMM4BY2,
1.38859 ++ BFD_RELOC_SH_IMM4BY4,
1.38860 ++ BFD_RELOC_SH_IMM8,
1.38861 ++ BFD_RELOC_SH_IMM8BY2,
1.38862 ++ BFD_RELOC_SH_IMM8BY4,
1.38863 ++ BFD_RELOC_SH_PCRELIMM8BY2,
1.38864 ++ BFD_RELOC_SH_PCRELIMM8BY4,
1.38865 ++ BFD_RELOC_SH_SWITCH16,
1.38866 ++ BFD_RELOC_SH_SWITCH32,
1.38867 ++ BFD_RELOC_SH_USES,
1.38868 ++ BFD_RELOC_SH_COUNT,
1.38869 ++ BFD_RELOC_SH_ALIGN,
1.38870 ++ BFD_RELOC_SH_CODE,
1.38871 ++ BFD_RELOC_SH_DATA,
1.38872 ++ BFD_RELOC_SH_LABEL,
1.38873 ++ BFD_RELOC_SH_LOOP_START,
1.38874 ++ BFD_RELOC_SH_LOOP_END,
1.38875 ++ BFD_RELOC_SH_COPY,
1.38876 ++ BFD_RELOC_SH_GLOB_DAT,
1.38877 ++ BFD_RELOC_SH_JMP_SLOT,
1.38878 ++ BFD_RELOC_SH_RELATIVE,
1.38879 ++ BFD_RELOC_SH_GOTPC,
1.38880 ++ BFD_RELOC_SH_GOT_LOW16,
1.38881 ++ BFD_RELOC_SH_GOT_MEDLOW16,
1.38882 ++ BFD_RELOC_SH_GOT_MEDHI16,
1.38883 ++ BFD_RELOC_SH_GOT_HI16,
1.38884 ++ BFD_RELOC_SH_GOTPLT_LOW16,
1.38885 ++ BFD_RELOC_SH_GOTPLT_MEDLOW16,
1.38886 ++ BFD_RELOC_SH_GOTPLT_MEDHI16,
1.38887 ++ BFD_RELOC_SH_GOTPLT_HI16,
1.38888 ++ BFD_RELOC_SH_PLT_LOW16,
1.38889 ++ BFD_RELOC_SH_PLT_MEDLOW16,
1.38890 ++ BFD_RELOC_SH_PLT_MEDHI16,
1.38891 ++ BFD_RELOC_SH_PLT_HI16,
1.38892 ++ BFD_RELOC_SH_GOTOFF_LOW16,
1.38893 ++ BFD_RELOC_SH_GOTOFF_MEDLOW16,
1.38894 ++ BFD_RELOC_SH_GOTOFF_MEDHI16,
1.38895 ++ BFD_RELOC_SH_GOTOFF_HI16,
1.38896 ++ BFD_RELOC_SH_GOTPC_LOW16,
1.38897 ++ BFD_RELOC_SH_GOTPC_MEDLOW16,
1.38898 ++ BFD_RELOC_SH_GOTPC_MEDHI16,
1.38899 ++ BFD_RELOC_SH_GOTPC_HI16,
1.38900 ++ BFD_RELOC_SH_COPY64,
1.38901 ++ BFD_RELOC_SH_GLOB_DAT64,
1.38902 ++ BFD_RELOC_SH_JMP_SLOT64,
1.38903 ++ BFD_RELOC_SH_RELATIVE64,
1.38904 ++ BFD_RELOC_SH_GOT10BY4,
1.38905 ++ BFD_RELOC_SH_GOT10BY8,
1.38906 ++ BFD_RELOC_SH_GOTPLT10BY4,
1.38907 ++ BFD_RELOC_SH_GOTPLT10BY8,
1.38908 ++ BFD_RELOC_SH_GOTPLT32,
1.38909 ++ BFD_RELOC_SH_SHMEDIA_CODE,
1.38910 ++ BFD_RELOC_SH_IMMU5,
1.38911 ++ BFD_RELOC_SH_IMMS6,
1.38912 ++ BFD_RELOC_SH_IMMS6BY32,
1.38913 ++ BFD_RELOC_SH_IMMU6,
1.38914 ++ BFD_RELOC_SH_IMMS10,
1.38915 ++ BFD_RELOC_SH_IMMS10BY2,
1.38916 ++ BFD_RELOC_SH_IMMS10BY4,
1.38917 ++ BFD_RELOC_SH_IMMS10BY8,
1.38918 ++ BFD_RELOC_SH_IMMS16,
1.38919 ++ BFD_RELOC_SH_IMMU16,
1.38920 ++ BFD_RELOC_SH_IMM_LOW16,
1.38921 ++ BFD_RELOC_SH_IMM_LOW16_PCREL,
1.38922 ++ BFD_RELOC_SH_IMM_MEDLOW16,
1.38923 ++ BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
1.38924 ++ BFD_RELOC_SH_IMM_MEDHI16,
1.38925 ++ BFD_RELOC_SH_IMM_MEDHI16_PCREL,
1.38926 ++ BFD_RELOC_SH_IMM_HI16,
1.38927 ++ BFD_RELOC_SH_IMM_HI16_PCREL,
1.38928 ++ BFD_RELOC_SH_PT_16,
1.38929 ++ BFD_RELOC_SH_TLS_GD_32,
1.38930 ++ BFD_RELOC_SH_TLS_LD_32,
1.38931 ++ BFD_RELOC_SH_TLS_LDO_32,
1.38932 ++ BFD_RELOC_SH_TLS_IE_32,
1.38933 ++ BFD_RELOC_SH_TLS_LE_32,
1.38934 ++ BFD_RELOC_SH_TLS_DTPMOD32,
1.38935 ++ BFD_RELOC_SH_TLS_DTPOFF32,
1.38936 ++ BFD_RELOC_SH_TLS_TPOFF32,
1.38937 ++
1.38938 ++/* ARC Cores relocs.
1.38939 ++ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
1.38940 ++not stored in the instruction. The high 20 bits are installed in bits 26
1.38941 ++through 7 of the instruction. */
1.38942 ++ BFD_RELOC_ARC_B22_PCREL,
1.38943 ++
1.38944 ++/* ARC 26 bit absolute branch. The lowest two bits must be zero and are not
1.38945 ++stored in the instruction. The high 24 bits are installed in bits 23
1.38946 ++through 0. */
1.38947 ++ BFD_RELOC_ARC_B26,
1.38948 ++
1.38949 ++/* ADI Blackfin 16 bit immediate absolute reloc. */
1.38950 ++ BFD_RELOC_BFIN_16_IMM,
1.38951 ++
1.38952 ++/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */
1.38953 ++ BFD_RELOC_BFIN_16_HIGH,
1.38954 ++
1.38955 ++/* ADI Blackfin 'a' part of LSETUP. */
1.38956 ++ BFD_RELOC_BFIN_4_PCREL,
1.38957 ++
1.38958 ++/* ADI Blackfin. */
1.38959 ++ BFD_RELOC_BFIN_5_PCREL,
1.38960 ++
1.38961 ++/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */
1.38962 ++ BFD_RELOC_BFIN_16_LOW,
1.38963 ++
1.38964 ++/* ADI Blackfin. */
1.38965 ++ BFD_RELOC_BFIN_10_PCREL,
1.38966 ++
1.38967 ++/* ADI Blackfin 'b' part of LSETUP. */
1.38968 ++ BFD_RELOC_BFIN_11_PCREL,
1.38969 ++
1.38970 ++/* ADI Blackfin. */
1.38971 ++ BFD_RELOC_BFIN_12_PCREL_JUMP,
1.38972 ++
1.38973 ++/* ADI Blackfin Short jump, pcrel. */
1.38974 ++ BFD_RELOC_BFIN_12_PCREL_JUMP_S,
1.38975 ++
1.38976 ++/* ADI Blackfin Call.x not implemented. */
1.38977 ++ BFD_RELOC_BFIN_24_PCREL_CALL_X,
1.38978 ++
1.38979 ++/* ADI Blackfin Long Jump pcrel. */
1.38980 ++ BFD_RELOC_BFIN_24_PCREL_JUMP_L,
1.38981 ++
1.38982 ++/* ADI Blackfin FD-PIC relocations. */
1.38983 ++ BFD_RELOC_BFIN_GOT17M4,
1.38984 ++ BFD_RELOC_BFIN_GOTHI,
1.38985 ++ BFD_RELOC_BFIN_GOTLO,
1.38986 ++ BFD_RELOC_BFIN_FUNCDESC,
1.38987 ++ BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
1.38988 ++ BFD_RELOC_BFIN_FUNCDESC_GOTHI,
1.38989 ++ BFD_RELOC_BFIN_FUNCDESC_GOTLO,
1.38990 ++ BFD_RELOC_BFIN_FUNCDESC_VALUE,
1.38991 ++ BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
1.38992 ++ BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
1.38993 ++ BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
1.38994 ++ BFD_RELOC_BFIN_GOTOFF17M4,
1.38995 ++ BFD_RELOC_BFIN_GOTOFFHI,
1.38996 ++ BFD_RELOC_BFIN_GOTOFFLO,
1.38997 ++
1.38998 ++/* ADI Blackfin GOT relocation. */
1.38999 ++ BFD_RELOC_BFIN_GOT,
1.39000 ++
1.39001 ++/* ADI Blackfin PLTPC relocation. */
1.39002 ++ BFD_RELOC_BFIN_PLTPC,
1.39003 ++
1.39004 ++/* ADI Blackfin arithmetic relocation. */
1.39005 ++ BFD_ARELOC_BFIN_PUSH,
1.39006 ++
1.39007 ++/* ADI Blackfin arithmetic relocation. */
1.39008 ++ BFD_ARELOC_BFIN_CONST,
1.39009 ++
1.39010 ++/* ADI Blackfin arithmetic relocation. */
1.39011 ++ BFD_ARELOC_BFIN_ADD,
1.39012 ++
1.39013 ++/* ADI Blackfin arithmetic relocation. */
1.39014 ++ BFD_ARELOC_BFIN_SUB,
1.39015 ++
1.39016 ++/* ADI Blackfin arithmetic relocation. */
1.39017 ++ BFD_ARELOC_BFIN_MULT,
1.39018 ++
1.39019 ++/* ADI Blackfin arithmetic relocation. */
1.39020 ++ BFD_ARELOC_BFIN_DIV,
1.39021 ++
1.39022 ++/* ADI Blackfin arithmetic relocation. */
1.39023 ++ BFD_ARELOC_BFIN_MOD,
1.39024 ++
1.39025 ++/* ADI Blackfin arithmetic relocation. */
1.39026 ++ BFD_ARELOC_BFIN_LSHIFT,
1.39027 ++
1.39028 ++/* ADI Blackfin arithmetic relocation. */
1.39029 ++ BFD_ARELOC_BFIN_RSHIFT,
1.39030 ++
1.39031 ++/* ADI Blackfin arithmetic relocation. */
1.39032 ++ BFD_ARELOC_BFIN_AND,
1.39033 ++
1.39034 ++/* ADI Blackfin arithmetic relocation. */
1.39035 ++ BFD_ARELOC_BFIN_OR,
1.39036 ++
1.39037 ++/* ADI Blackfin arithmetic relocation. */
1.39038 ++ BFD_ARELOC_BFIN_XOR,
1.39039 ++
1.39040 ++/* ADI Blackfin arithmetic relocation. */
1.39041 ++ BFD_ARELOC_BFIN_LAND,
1.39042 ++
1.39043 ++/* ADI Blackfin arithmetic relocation. */
1.39044 ++ BFD_ARELOC_BFIN_LOR,
1.39045 ++
1.39046 ++/* ADI Blackfin arithmetic relocation. */
1.39047 ++ BFD_ARELOC_BFIN_LEN,
1.39048 ++
1.39049 ++/* ADI Blackfin arithmetic relocation. */
1.39050 ++ BFD_ARELOC_BFIN_NEG,
1.39051 ++
1.39052 ++/* ADI Blackfin arithmetic relocation. */
1.39053 ++ BFD_ARELOC_BFIN_COMP,
1.39054 ++
1.39055 ++/* ADI Blackfin arithmetic relocation. */
1.39056 ++ BFD_ARELOC_BFIN_PAGE,
1.39057 ++
1.39058 ++/* ADI Blackfin arithmetic relocation. */
1.39059 ++ BFD_ARELOC_BFIN_HWPAGE,
1.39060 ++
1.39061 ++/* ADI Blackfin arithmetic relocation. */
1.39062 ++ BFD_ARELOC_BFIN_ADDR,
1.39063 ++
1.39064 ++/* Mitsubishi D10V relocs.
1.39065 ++This is a 10-bit reloc with the right 2 bits
1.39066 ++assumed to be 0. */
1.39067 ++ BFD_RELOC_D10V_10_PCREL_R,
1.39068 ++
1.39069 ++/* Mitsubishi D10V relocs.
1.39070 ++This is a 10-bit reloc with the right 2 bits
1.39071 ++assumed to be 0. This is the same as the previous reloc
1.39072 ++except it is in the left container, i.e.,
1.39073 ++shifted left 15 bits. */
1.39074 ++ BFD_RELOC_D10V_10_PCREL_L,
1.39075 ++
1.39076 ++/* This is an 18-bit reloc with the right 2 bits
1.39077 ++assumed to be 0. */
1.39078 ++ BFD_RELOC_D10V_18,
1.39079 ++
1.39080 ++/* This is an 18-bit reloc with the right 2 bits
1.39081 ++assumed to be 0. */
1.39082 ++ BFD_RELOC_D10V_18_PCREL,
1.39083 ++
1.39084 ++/* Mitsubishi D30V relocs.
1.39085 ++This is a 6-bit absolute reloc. */
1.39086 ++ BFD_RELOC_D30V_6,
1.39087 ++
1.39088 ++/* This is a 6-bit pc-relative reloc with
1.39089 ++the right 3 bits assumed to be 0. */
1.39090 ++ BFD_RELOC_D30V_9_PCREL,
1.39091 ++
1.39092 ++/* This is a 6-bit pc-relative reloc with
1.39093 ++the right 3 bits assumed to be 0. Same
1.39094 ++as the previous reloc but on the right side
1.39095 ++of the container. */
1.39096 ++ BFD_RELOC_D30V_9_PCREL_R,
1.39097 ++
1.39098 ++/* This is a 12-bit absolute reloc with the
1.39099 ++right 3 bitsassumed to be 0. */
1.39100 ++ BFD_RELOC_D30V_15,
1.39101 ++
1.39102 ++/* This is a 12-bit pc-relative reloc with
1.39103 ++the right 3 bits assumed to be 0. */
1.39104 ++ BFD_RELOC_D30V_15_PCREL,
1.39105 ++
1.39106 ++/* This is a 12-bit pc-relative reloc with
1.39107 ++the right 3 bits assumed to be 0. Same
1.39108 ++as the previous reloc but on the right side
1.39109 ++of the container. */
1.39110 ++ BFD_RELOC_D30V_15_PCREL_R,
1.39111 ++
1.39112 ++/* This is an 18-bit absolute reloc with
1.39113 ++the right 3 bits assumed to be 0. */
1.39114 ++ BFD_RELOC_D30V_21,
1.39115 ++
1.39116 ++/* This is an 18-bit pc-relative reloc with
1.39117 ++the right 3 bits assumed to be 0. */
1.39118 ++ BFD_RELOC_D30V_21_PCREL,
1.39119 ++
1.39120 ++/* This is an 18-bit pc-relative reloc with
1.39121 ++the right 3 bits assumed to be 0. Same
1.39122 ++as the previous reloc but on the right side
1.39123 ++of the container. */
1.39124 ++ BFD_RELOC_D30V_21_PCREL_R,
1.39125 ++
1.39126 ++/* This is a 32-bit absolute reloc. */
1.39127 ++ BFD_RELOC_D30V_32,
1.39128 ++
1.39129 ++/* This is a 32-bit pc-relative reloc. */
1.39130 ++ BFD_RELOC_D30V_32_PCREL,
1.39131 ++
1.39132 ++/* DLX relocs */
1.39133 ++ BFD_RELOC_DLX_HI16_S,
1.39134 ++
1.39135 ++/* DLX relocs */
1.39136 ++ BFD_RELOC_DLX_LO16,
1.39137 ++
1.39138 ++/* DLX relocs */
1.39139 ++ BFD_RELOC_DLX_JMP26,
1.39140 ++
1.39141 ++/* Renesas M16C/M32C Relocations. */
1.39142 ++ BFD_RELOC_M32C_HI8,
1.39143 ++ BFD_RELOC_M32C_RL_JUMP,
1.39144 ++ BFD_RELOC_M32C_RL_1ADDR,
1.39145 ++ BFD_RELOC_M32C_RL_2ADDR,
1.39146 ++
1.39147 ++/* Renesas M32R (formerly Mitsubishi M32R) relocs.
1.39148 ++This is a 24 bit absolute address. */
1.39149 ++ BFD_RELOC_M32R_24,
1.39150 ++
1.39151 ++/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */
1.39152 ++ BFD_RELOC_M32R_10_PCREL,
1.39153 ++
1.39154 ++/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */
1.39155 ++ BFD_RELOC_M32R_18_PCREL,
1.39156 ++
1.39157 ++/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */
1.39158 ++ BFD_RELOC_M32R_26_PCREL,
1.39159 ++
1.39160 ++/* This is a 16-bit reloc containing the high 16 bits of an address
1.39161 ++used when the lower 16 bits are treated as unsigned. */
1.39162 ++ BFD_RELOC_M32R_HI16_ULO,
1.39163 ++
1.39164 ++/* This is a 16-bit reloc containing the high 16 bits of an address
1.39165 ++used when the lower 16 bits are treated as signed. */
1.39166 ++ BFD_RELOC_M32R_HI16_SLO,
1.39167 ++
1.39168 ++/* This is a 16-bit reloc containing the lower 16 bits of an address. */
1.39169 ++ BFD_RELOC_M32R_LO16,
1.39170 ++
1.39171 ++/* This is a 16-bit reloc containing the small data area offset for use in
1.39172 ++add3, load, and store instructions. */
1.39173 ++ BFD_RELOC_M32R_SDA16,
1.39174 ++
1.39175 ++/* For PIC. */
1.39176 ++ BFD_RELOC_M32R_GOT24,
1.39177 ++ BFD_RELOC_M32R_26_PLTREL,
1.39178 ++ BFD_RELOC_M32R_COPY,
1.39179 ++ BFD_RELOC_M32R_GLOB_DAT,
1.39180 ++ BFD_RELOC_M32R_JMP_SLOT,
1.39181 ++ BFD_RELOC_M32R_RELATIVE,
1.39182 ++ BFD_RELOC_M32R_GOTOFF,
1.39183 ++ BFD_RELOC_M32R_GOTOFF_HI_ULO,
1.39184 ++ BFD_RELOC_M32R_GOTOFF_HI_SLO,
1.39185 ++ BFD_RELOC_M32R_GOTOFF_LO,
1.39186 ++ BFD_RELOC_M32R_GOTPC24,
1.39187 ++ BFD_RELOC_M32R_GOT16_HI_ULO,
1.39188 ++ BFD_RELOC_M32R_GOT16_HI_SLO,
1.39189 ++ BFD_RELOC_M32R_GOT16_LO,
1.39190 ++ BFD_RELOC_M32R_GOTPC_HI_ULO,
1.39191 ++ BFD_RELOC_M32R_GOTPC_HI_SLO,
1.39192 ++ BFD_RELOC_M32R_GOTPC_LO,
1.39193 ++
1.39194 ++/* This is a 9-bit reloc */
1.39195 ++ BFD_RELOC_V850_9_PCREL,
1.39196 ++
1.39197 ++/* This is a 22-bit reloc */
1.39198 ++ BFD_RELOC_V850_22_PCREL,
1.39199 ++
1.39200 ++/* This is a 16 bit offset from the short data area pointer. */
1.39201 ++ BFD_RELOC_V850_SDA_16_16_OFFSET,
1.39202 ++
1.39203 ++/* This is a 16 bit offset (of which only 15 bits are used) from the
1.39204 ++short data area pointer. */
1.39205 ++ BFD_RELOC_V850_SDA_15_16_OFFSET,
1.39206 ++
1.39207 ++/* This is a 16 bit offset from the zero data area pointer. */
1.39208 ++ BFD_RELOC_V850_ZDA_16_16_OFFSET,
1.39209 ++
1.39210 ++/* This is a 16 bit offset (of which only 15 bits are used) from the
1.39211 ++zero data area pointer. */
1.39212 ++ BFD_RELOC_V850_ZDA_15_16_OFFSET,
1.39213 ++
1.39214 ++/* This is an 8 bit offset (of which only 6 bits are used) from the
1.39215 ++tiny data area pointer. */
1.39216 ++ BFD_RELOC_V850_TDA_6_8_OFFSET,
1.39217 ++
1.39218 ++/* This is an 8bit offset (of which only 7 bits are used) from the tiny
1.39219 ++data area pointer. */
1.39220 ++ BFD_RELOC_V850_TDA_7_8_OFFSET,
1.39221 ++
1.39222 ++/* This is a 7 bit offset from the tiny data area pointer. */
1.39223 ++ BFD_RELOC_V850_TDA_7_7_OFFSET,
1.39224 ++
1.39225 ++/* This is a 16 bit offset from the tiny data area pointer. */
1.39226 ++ BFD_RELOC_V850_TDA_16_16_OFFSET,
1.39227 ++
1.39228 ++/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
1.39229 ++data area pointer. */
1.39230 ++ BFD_RELOC_V850_TDA_4_5_OFFSET,
1.39231 ++
1.39232 ++/* This is a 4 bit offset from the tiny data area pointer. */
1.39233 ++ BFD_RELOC_V850_TDA_4_4_OFFSET,
1.39234 ++
1.39235 ++/* This is a 16 bit offset from the short data area pointer, with the
1.39236 ++bits placed non-contiguously in the instruction. */
1.39237 ++ BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
1.39238 ++
1.39239 ++/* This is a 16 bit offset from the zero data area pointer, with the
1.39240 ++bits placed non-contiguously in the instruction. */
1.39241 ++ BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
1.39242 ++
1.39243 ++/* This is a 6 bit offset from the call table base pointer. */
1.39244 ++ BFD_RELOC_V850_CALLT_6_7_OFFSET,
1.39245 ++
1.39246 ++/* This is a 16 bit offset from the call table base pointer. */
1.39247 ++ BFD_RELOC_V850_CALLT_16_16_OFFSET,
1.39248 ++
1.39249 ++/* Used for relaxing indirect function calls. */
1.39250 ++ BFD_RELOC_V850_LONGCALL,
1.39251 ++
1.39252 ++/* Used for relaxing indirect jumps. */
1.39253 ++ BFD_RELOC_V850_LONGJUMP,
1.39254 ++
1.39255 ++/* Used to maintain alignment whilst relaxing. */
1.39256 ++ BFD_RELOC_V850_ALIGN,
1.39257 ++
1.39258 ++/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
1.39259 ++instructions. */
1.39260 ++ BFD_RELOC_V850_LO16_SPLIT_OFFSET,
1.39261 ++
1.39262 ++/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
1.39263 ++instruction. */
1.39264 ++ BFD_RELOC_MN10300_32_PCREL,
1.39265 ++
1.39266 ++/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
1.39267 ++instruction. */
1.39268 ++ BFD_RELOC_MN10300_16_PCREL,
1.39269 ++
1.39270 ++/* This is a 8bit DP reloc for the tms320c30, where the most
1.39271 ++significant 8 bits of a 24 bit word are placed into the least
1.39272 ++significant 8 bits of the opcode. */
1.39273 ++ BFD_RELOC_TIC30_LDP,
1.39274 ++
1.39275 ++/* This is a 7bit reloc for the tms320c54x, where the least
1.39276 ++significant 7 bits of a 16 bit word are placed into the least
1.39277 ++significant 7 bits of the opcode. */
1.39278 ++ BFD_RELOC_TIC54X_PARTLS7,
1.39279 ++
1.39280 ++/* This is a 9bit DP reloc for the tms320c54x, where the most
1.39281 ++significant 9 bits of a 16 bit word are placed into the least
1.39282 ++significant 9 bits of the opcode. */
1.39283 ++ BFD_RELOC_TIC54X_PARTMS9,
1.39284 ++
1.39285 ++/* This is an extended address 23-bit reloc for the tms320c54x. */
1.39286 ++ BFD_RELOC_TIC54X_23,
1.39287 ++
1.39288 ++/* This is a 16-bit reloc for the tms320c54x, where the least
1.39289 ++significant 16 bits of a 23-bit extended address are placed into
1.39290 ++the opcode. */
1.39291 ++ BFD_RELOC_TIC54X_16_OF_23,
1.39292 ++
1.39293 ++/* This is a reloc for the tms320c54x, where the most
1.39294 ++significant 7 bits of a 23-bit extended address are placed into
1.39295 ++the opcode. */
1.39296 ++ BFD_RELOC_TIC54X_MS7_OF_23,
1.39297 ++
1.39298 ++/* This is a 48 bit reloc for the FR30 that stores 32 bits. */
1.39299 ++ BFD_RELOC_FR30_48,
1.39300 ++
1.39301 ++/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
1.39302 ++two sections. */
1.39303 ++ BFD_RELOC_FR30_20,
1.39304 ++
1.39305 ++/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
1.39306 ++4 bits. */
1.39307 ++ BFD_RELOC_FR30_6_IN_4,
1.39308 ++
1.39309 ++/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
1.39310 ++into 8 bits. */
1.39311 ++ BFD_RELOC_FR30_8_IN_8,
1.39312 ++
1.39313 ++/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
1.39314 ++into 8 bits. */
1.39315 ++ BFD_RELOC_FR30_9_IN_8,
1.39316 ++
1.39317 ++/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
1.39318 ++into 8 bits. */
1.39319 ++ BFD_RELOC_FR30_10_IN_8,
1.39320 ++
1.39321 ++/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
1.39322 ++short offset into 8 bits. */
1.39323 ++ BFD_RELOC_FR30_9_PCREL,
1.39324 ++
1.39325 ++/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
1.39326 ++short offset into 11 bits. */
1.39327 ++ BFD_RELOC_FR30_12_PCREL,
1.39328 ++
1.39329 ++/* Motorola Mcore relocations. */
1.39330 ++ BFD_RELOC_MCORE_PCREL_IMM8BY4,
1.39331 ++ BFD_RELOC_MCORE_PCREL_IMM11BY2,
1.39332 ++ BFD_RELOC_MCORE_PCREL_IMM4BY2,
1.39333 ++ BFD_RELOC_MCORE_PCREL_32,
1.39334 ++ BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
1.39335 ++ BFD_RELOC_MCORE_RVA,
1.39336 ++
1.39337 ++/* Toshiba Media Processor Relocations. */
1.39338 ++ BFD_RELOC_MEP_8,
1.39339 ++ BFD_RELOC_MEP_16,
1.39340 ++ BFD_RELOC_MEP_32,
1.39341 ++ BFD_RELOC_MEP_PCREL8A2,
1.39342 ++ BFD_RELOC_MEP_PCREL12A2,
1.39343 ++ BFD_RELOC_MEP_PCREL17A2,
1.39344 ++ BFD_RELOC_MEP_PCREL24A2,
1.39345 ++ BFD_RELOC_MEP_PCABS24A2,
1.39346 ++ BFD_RELOC_MEP_LOW16,
1.39347 ++ BFD_RELOC_MEP_HI16U,
1.39348 ++ BFD_RELOC_MEP_HI16S,
1.39349 ++ BFD_RELOC_MEP_GPREL,
1.39350 ++ BFD_RELOC_MEP_TPREL,
1.39351 ++ BFD_RELOC_MEP_TPREL7,
1.39352 ++ BFD_RELOC_MEP_TPREL7A2,
1.39353 ++ BFD_RELOC_MEP_TPREL7A4,
1.39354 ++ BFD_RELOC_MEP_UIMM24,
1.39355 ++ BFD_RELOC_MEP_ADDR24A4,
1.39356 ++ BFD_RELOC_MEP_GNU_VTINHERIT,
1.39357 ++ BFD_RELOC_MEP_GNU_VTENTRY,
1.39358 ++
1.39359 ++
1.39360 ++/* These are relocations for the GETA instruction. */
1.39361 ++ BFD_RELOC_MMIX_GETA,
1.39362 ++ BFD_RELOC_MMIX_GETA_1,
1.39363 ++ BFD_RELOC_MMIX_GETA_2,
1.39364 ++ BFD_RELOC_MMIX_GETA_3,
1.39365 ++
1.39366 ++/* These are relocations for a conditional branch instruction. */
1.39367 ++ BFD_RELOC_MMIX_CBRANCH,
1.39368 ++ BFD_RELOC_MMIX_CBRANCH_J,
1.39369 ++ BFD_RELOC_MMIX_CBRANCH_1,
1.39370 ++ BFD_RELOC_MMIX_CBRANCH_2,
1.39371 ++ BFD_RELOC_MMIX_CBRANCH_3,
1.39372 ++
1.39373 ++/* These are relocations for the PUSHJ instruction. */
1.39374 ++ BFD_RELOC_MMIX_PUSHJ,
1.39375 ++ BFD_RELOC_MMIX_PUSHJ_1,
1.39376 ++ BFD_RELOC_MMIX_PUSHJ_2,
1.39377 ++ BFD_RELOC_MMIX_PUSHJ_3,
1.39378 ++ BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
1.39379 ++
1.39380 ++/* These are relocations for the JMP instruction. */
1.39381 ++ BFD_RELOC_MMIX_JMP,
1.39382 ++ BFD_RELOC_MMIX_JMP_1,
1.39383 ++ BFD_RELOC_MMIX_JMP_2,
1.39384 ++ BFD_RELOC_MMIX_JMP_3,
1.39385 ++
1.39386 ++/* This is a relocation for a relative address as in a GETA instruction or
1.39387 ++a branch. */
1.39388 ++ BFD_RELOC_MMIX_ADDR19,
1.39389 ++
1.39390 ++/* This is a relocation for a relative address as in a JMP instruction. */
1.39391 ++ BFD_RELOC_MMIX_ADDR27,
1.39392 ++
1.39393 ++/* This is a relocation for an instruction field that may be a general
1.39394 ++register or a value 0..255. */
1.39395 ++ BFD_RELOC_MMIX_REG_OR_BYTE,
1.39396 ++
1.39397 ++/* This is a relocation for an instruction field that may be a general
1.39398 ++register. */
1.39399 ++ BFD_RELOC_MMIX_REG,
1.39400 ++
1.39401 ++/* This is a relocation for two instruction fields holding a register and
1.39402 ++an offset, the equivalent of the relocation. */
1.39403 ++ BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
1.39404 ++
1.39405 ++/* This relocation is an assertion that the expression is not allocated as
1.39406 ++a global register. It does not modify contents. */
1.39407 ++ BFD_RELOC_MMIX_LOCAL,
1.39408 ++
1.39409 ++/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
1.39410 ++short offset into 7 bits. */
1.39411 ++ BFD_RELOC_AVR_7_PCREL,
1.39412 ++
1.39413 ++/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
1.39414 ++short offset into 12 bits. */
1.39415 ++ BFD_RELOC_AVR_13_PCREL,
1.39416 ++
1.39417 ++/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
1.39418 ++program memory address) into 16 bits. */
1.39419 ++ BFD_RELOC_AVR_16_PM,
1.39420 ++
1.39421 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
1.39422 ++data memory address) into 8 bit immediate value of LDI insn. */
1.39423 ++ BFD_RELOC_AVR_LO8_LDI,
1.39424 ++
1.39425 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
1.39426 ++of data memory address) into 8 bit immediate value of LDI insn. */
1.39427 ++ BFD_RELOC_AVR_HI8_LDI,
1.39428 ++
1.39429 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
1.39430 ++of program memory address) into 8 bit immediate value of LDI insn. */
1.39431 ++ BFD_RELOC_AVR_HH8_LDI,
1.39432 ++
1.39433 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
1.39434 ++of 32 bit value) into 8 bit immediate value of LDI insn. */
1.39435 ++ BFD_RELOC_AVR_MS8_LDI,
1.39436 ++
1.39437 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
1.39438 ++(usually data memory address) into 8 bit immediate value of SUBI insn. */
1.39439 ++ BFD_RELOC_AVR_LO8_LDI_NEG,
1.39440 ++
1.39441 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
1.39442 ++(high 8 bit of data memory address) into 8 bit immediate value of
1.39443 ++SUBI insn. */
1.39444 ++ BFD_RELOC_AVR_HI8_LDI_NEG,
1.39445 ++
1.39446 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
1.39447 ++(most high 8 bit of program memory address) into 8 bit immediate value
1.39448 ++of LDI or SUBI insn. */
1.39449 ++ BFD_RELOC_AVR_HH8_LDI_NEG,
1.39450 ++
1.39451 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
1.39452 ++of 32 bit value) into 8 bit immediate value of LDI insn. */
1.39453 ++ BFD_RELOC_AVR_MS8_LDI_NEG,
1.39454 ++
1.39455 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
1.39456 ++command address) into 8 bit immediate value of LDI insn. */
1.39457 ++ BFD_RELOC_AVR_LO8_LDI_PM,
1.39458 ++
1.39459 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value
1.39460 ++(command address) into 8 bit immediate value of LDI insn. If the address
1.39461 ++is beyond the 128k boundary, the linker inserts a jump stub for this reloc
1.39462 ++in the lower 128k. */
1.39463 ++ BFD_RELOC_AVR_LO8_LDI_GS,
1.39464 ++
1.39465 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
1.39466 ++of command address) into 8 bit immediate value of LDI insn. */
1.39467 ++ BFD_RELOC_AVR_HI8_LDI_PM,
1.39468 ++
1.39469 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
1.39470 ++of command address) into 8 bit immediate value of LDI insn. If the address
1.39471 ++is beyond the 128k boundary, the linker inserts a jump stub for this reloc
1.39472 ++below 128k. */
1.39473 ++ BFD_RELOC_AVR_HI8_LDI_GS,
1.39474 ++
1.39475 ++/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
1.39476 ++of command address) into 8 bit immediate value of LDI insn. */
1.39477 ++ BFD_RELOC_AVR_HH8_LDI_PM,
1.39478 ++
1.39479 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
1.39480 ++(usually command address) into 8 bit immediate value of SUBI insn. */
1.39481 ++ BFD_RELOC_AVR_LO8_LDI_PM_NEG,
1.39482 ++
1.39483 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
1.39484 ++(high 8 bit of 16 bit command address) into 8 bit immediate value
1.39485 ++of SUBI insn. */
1.39486 ++ BFD_RELOC_AVR_HI8_LDI_PM_NEG,
1.39487 ++
1.39488 ++/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
1.39489 ++(high 6 bit of 22 bit command address) into 8 bit immediate
1.39490 ++value of SUBI insn. */
1.39491 ++ BFD_RELOC_AVR_HH8_LDI_PM_NEG,
1.39492 ++
1.39493 ++/* This is a 32 bit reloc for the AVR that stores 23 bit value
1.39494 ++into 22 bits. */
1.39495 ++ BFD_RELOC_AVR_CALL,
1.39496 ++
1.39497 ++/* This is a 16 bit reloc for the AVR that stores all needed bits
1.39498 ++for absolute addressing with ldi with overflow check to linktime */
1.39499 ++ BFD_RELOC_AVR_LDI,
1.39500 ++
1.39501 ++/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
1.39502 ++instructions */
1.39503 ++ BFD_RELOC_AVR_6,
1.39504 ++
1.39505 ++/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
1.39506 ++instructions */
1.39507 ++ BFD_RELOC_AVR_6_ADIW,
1.39508 ++
1.39509 ++/* Difference between two labels: L2 - L1. The value of L1 is encoded
1.39510 ++as sym + addend, while the initial difference after assembly is
1.39511 ++inserted into the object file by the assembler. */
1.39512 ++ BFD_RELOC_AVR32_DIFF32,
1.39513 ++ BFD_RELOC_AVR32_DIFF16,
1.39514 ++ BFD_RELOC_AVR32_DIFF8,
1.39515 ++
1.39516 ++/* Reference to a symbol through the Global Offset Table. The linker
1.39517 ++will allocate an entry for symbol in the GOT and insert the offset
1.39518 ++of this entry as the relocation value. */
1.39519 ++ BFD_RELOC_AVR32_GOT32,
1.39520 ++ BFD_RELOC_AVR32_GOT16,
1.39521 ++ BFD_RELOC_AVR32_GOT8,
1.39522 ++
1.39523 ++/* Normal (non-pc-relative) code relocations. Alignment and signedness
1.39524 ++is indicated by the suffixes. S means signed, U means unsigned. W
1.39525 ++means word-aligned, H means halfword-aligned, neither means
1.39526 ++byte-aligned (no alignment.) SUB5 is the same relocation as 16S. */
1.39527 ++ BFD_RELOC_AVR32_21S,
1.39528 ++ BFD_RELOC_AVR32_16U,
1.39529 ++ BFD_RELOC_AVR32_16S,
1.39530 ++ BFD_RELOC_AVR32_SUB5,
1.39531 ++ BFD_RELOC_AVR32_8S_EXT,
1.39532 ++ BFD_RELOC_AVR32_8S,
1.39533 ++ BFD_RELOC_AVR32_15S,
1.39534 ++
1.39535 ++/* PC-relative relocations are signed if neither 'U' nor 'S' is
1.39536 ++specified. However, we explicitly tack on a 'B' to indicate no
1.39537 ++alignment, to avoid confusion with data relocs. All of these resolve
1.39538 ++to sym + addend - offset, except the one with 'N' (negated) suffix.
1.39539 ++This particular one resolves to offset - sym - addend. */
1.39540 ++ BFD_RELOC_AVR32_22H_PCREL,
1.39541 ++ BFD_RELOC_AVR32_18W_PCREL,
1.39542 ++ BFD_RELOC_AVR32_16B_PCREL,
1.39543 ++ BFD_RELOC_AVR32_16N_PCREL,
1.39544 ++ BFD_RELOC_AVR32_14UW_PCREL,
1.39545 ++ BFD_RELOC_AVR32_11H_PCREL,
1.39546 ++ BFD_RELOC_AVR32_10UW_PCREL,
1.39547 ++ BFD_RELOC_AVR32_9H_PCREL,
1.39548 ++ BFD_RELOC_AVR32_9UW_PCREL,
1.39549 ++
1.39550 ++/* Subtract the link-time address of the GOT from (symbol + addend)
1.39551 ++and insert the result. */
1.39552 ++ BFD_RELOC_AVR32_GOTPC,
1.39553 ++
1.39554 ++/* Reference to a symbol through the GOT. The linker will allocate an
1.39555 ++entry for symbol in the GOT and insert the offset of this entry as
1.39556 ++the relocation value. addend must be zero. As usual, 'S' means
1.39557 ++signed, 'W' means word-aligned, etc. */
1.39558 ++ BFD_RELOC_AVR32_GOTCALL,
1.39559 ++ BFD_RELOC_AVR32_LDA_GOT,
1.39560 ++ BFD_RELOC_AVR32_GOT21S,
1.39561 ++ BFD_RELOC_AVR32_GOT18SW,
1.39562 ++ BFD_RELOC_AVR32_GOT16S,
1.39563 ++
1.39564 ++/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
1.39565 ++a whole lot of sense. */
1.39566 ++ BFD_RELOC_AVR32_32_CPENT,
1.39567 ++
1.39568 ++/* Constant pool references. Some of these relocations are signed,
1.39569 ++others are unsigned. It doesn't really matter, since the constant
1.39570 ++pool always comes after the code that references it. */
1.39571 ++ BFD_RELOC_AVR32_CPCALL,
1.39572 ++ BFD_RELOC_AVR32_16_CP,
1.39573 ++ BFD_RELOC_AVR32_9W_CP,
1.39574 ++
1.39575 ++/* sym must be the absolute symbol. The addend specifies the alignment
1.39576 ++order, e.g. if addend is 2, the linker must add padding so that the
1.39577 ++next address is aligned to a 4-byte boundary. */
1.39578 ++ BFD_RELOC_AVR32_ALIGN,
1.39579 ++
1.39580 ++/* Code relocations that will never make it to the output file. */
1.39581 ++ BFD_RELOC_AVR32_14UW,
1.39582 ++ BFD_RELOC_AVR32_10UW,
1.39583 ++ BFD_RELOC_AVR32_10SW,
1.39584 ++ BFD_RELOC_AVR32_STHH_W,
1.39585 ++ BFD_RELOC_AVR32_7UW,
1.39586 ++ BFD_RELOC_AVR32_6S,
1.39587 ++ BFD_RELOC_AVR32_6UW,
1.39588 ++ BFD_RELOC_AVR32_4UH,
1.39589 ++ BFD_RELOC_AVR32_3U,
1.39590 ++
1.39591 ++/* Direct 12 bit. */
1.39592 ++ BFD_RELOC_390_12,
1.39593 ++
1.39594 ++/* 12 bit GOT offset. */
1.39595 ++ BFD_RELOC_390_GOT12,
1.39596 ++
1.39597 ++/* 32 bit PC relative PLT address. */
1.39598 ++ BFD_RELOC_390_PLT32,
1.39599 ++
1.39600 ++/* Copy symbol at runtime. */
1.39601 ++ BFD_RELOC_390_COPY,
1.39602 ++
1.39603 ++/* Create GOT entry. */
1.39604 ++ BFD_RELOC_390_GLOB_DAT,
1.39605 ++
1.39606 ++/* Create PLT entry. */
1.39607 ++ BFD_RELOC_390_JMP_SLOT,
1.39608 ++
1.39609 ++/* Adjust by program base. */
1.39610 ++ BFD_RELOC_390_RELATIVE,
1.39611 ++
1.39612 ++/* 32 bit PC relative offset to GOT. */
1.39613 ++ BFD_RELOC_390_GOTPC,
1.39614 ++
1.39615 ++/* 16 bit GOT offset. */
1.39616 ++ BFD_RELOC_390_GOT16,
1.39617 ++
1.39618 ++/* PC relative 16 bit shifted by 1. */
1.39619 ++ BFD_RELOC_390_PC16DBL,
1.39620 ++
1.39621 ++/* 16 bit PC rel. PLT shifted by 1. */
1.39622 ++ BFD_RELOC_390_PLT16DBL,
1.39623 ++
1.39624 ++/* PC relative 32 bit shifted by 1. */
1.39625 ++ BFD_RELOC_390_PC32DBL,
1.39626 ++
1.39627 ++/* 32 bit PC rel. PLT shifted by 1. */
1.39628 ++ BFD_RELOC_390_PLT32DBL,
1.39629 ++
1.39630 ++/* 32 bit PC rel. GOT shifted by 1. */
1.39631 ++ BFD_RELOC_390_GOTPCDBL,
1.39632 ++
1.39633 ++/* 64 bit GOT offset. */
1.39634 ++ BFD_RELOC_390_GOT64,
1.39635 ++
1.39636 ++/* 64 bit PC relative PLT address. */
1.39637 ++ BFD_RELOC_390_PLT64,
1.39638 ++
1.39639 ++/* 32 bit rel. offset to GOT entry. */
1.39640 ++ BFD_RELOC_390_GOTENT,
1.39641 ++
1.39642 ++/* 64 bit offset to GOT. */
1.39643 ++ BFD_RELOC_390_GOTOFF64,
1.39644 ++
1.39645 ++/* 12-bit offset to symbol-entry within GOT, with PLT handling. */
1.39646 ++ BFD_RELOC_390_GOTPLT12,
1.39647 ++
1.39648 ++/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
1.39649 ++ BFD_RELOC_390_GOTPLT16,
1.39650 ++
1.39651 ++/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
1.39652 ++ BFD_RELOC_390_GOTPLT32,
1.39653 ++
1.39654 ++/* 64-bit offset to symbol-entry within GOT, with PLT handling. */
1.39655 ++ BFD_RELOC_390_GOTPLT64,
1.39656 ++
1.39657 ++/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */
1.39658 ++ BFD_RELOC_390_GOTPLTENT,
1.39659 ++
1.39660 ++/* 16-bit rel. offset from the GOT to a PLT entry. */
1.39661 ++ BFD_RELOC_390_PLTOFF16,
1.39662 ++
1.39663 ++/* 32-bit rel. offset from the GOT to a PLT entry. */
1.39664 ++ BFD_RELOC_390_PLTOFF32,
1.39665 ++
1.39666 ++/* 64-bit rel. offset from the GOT to a PLT entry. */
1.39667 ++ BFD_RELOC_390_PLTOFF64,
1.39668 ++
1.39669 ++/* s390 tls relocations. */
1.39670 ++ BFD_RELOC_390_TLS_LOAD,
1.39671 ++ BFD_RELOC_390_TLS_GDCALL,
1.39672 ++ BFD_RELOC_390_TLS_LDCALL,
1.39673 ++ BFD_RELOC_390_TLS_GD32,
1.39674 ++ BFD_RELOC_390_TLS_GD64,
1.39675 ++ BFD_RELOC_390_TLS_GOTIE12,
1.39676 ++ BFD_RELOC_390_TLS_GOTIE32,
1.39677 ++ BFD_RELOC_390_TLS_GOTIE64,
1.39678 ++ BFD_RELOC_390_TLS_LDM32,
1.39679 ++ BFD_RELOC_390_TLS_LDM64,
1.39680 ++ BFD_RELOC_390_TLS_IE32,
1.39681 ++ BFD_RELOC_390_TLS_IE64,
1.39682 ++ BFD_RELOC_390_TLS_IEENT,
1.39683 ++ BFD_RELOC_390_TLS_LE32,
1.39684 ++ BFD_RELOC_390_TLS_LE64,
1.39685 ++ BFD_RELOC_390_TLS_LDO32,
1.39686 ++ BFD_RELOC_390_TLS_LDO64,
1.39687 ++ BFD_RELOC_390_TLS_DTPMOD,
1.39688 ++ BFD_RELOC_390_TLS_DTPOFF,
1.39689 ++ BFD_RELOC_390_TLS_TPOFF,
1.39690 ++
1.39691 ++/* Long displacement extension. */
1.39692 ++ BFD_RELOC_390_20,
1.39693 ++ BFD_RELOC_390_GOT20,
1.39694 ++ BFD_RELOC_390_GOTPLT20,
1.39695 ++ BFD_RELOC_390_TLS_GOTIE20,
1.39696 ++
1.39697 ++/* Score relocations */
1.39698 ++ BFD_RELOC_SCORE_DUMMY1,
1.39699 ++
1.39700 ++/* Low 16 bit for load/store */
1.39701 ++ BFD_RELOC_SCORE_GPREL15,
1.39702 ++
1.39703 ++/* This is a 24-bit reloc with the right 1 bit assumed to be 0 */
1.39704 ++ BFD_RELOC_SCORE_DUMMY2,
1.39705 ++ BFD_RELOC_SCORE_JMP,
1.39706 ++
1.39707 ++/* This is a 19-bit reloc with the right 1 bit assumed to be 0 */
1.39708 ++ BFD_RELOC_SCORE_BRANCH,
1.39709 ++
1.39710 ++/* This is a 11-bit reloc with the right 1 bit assumed to be 0 */
1.39711 ++ BFD_RELOC_SCORE16_JMP,
1.39712 ++
1.39713 ++/* This is a 8-bit reloc with the right 1 bit assumed to be 0 */
1.39714 ++ BFD_RELOC_SCORE16_BRANCH,
1.39715 ++
1.39716 ++/* Undocumented Score relocs */
1.39717 ++ BFD_RELOC_SCORE_GOT15,
1.39718 ++ BFD_RELOC_SCORE_GOT_LO16,
1.39719 ++ BFD_RELOC_SCORE_CALL15,
1.39720 ++ BFD_RELOC_SCORE_DUMMY_HI16,
1.39721 ++
1.39722 ++/* Scenix IP2K - 9-bit register number / data address */
1.39723 ++ BFD_RELOC_IP2K_FR9,
1.39724 ++
1.39725 ++/* Scenix IP2K - 4-bit register/data bank number */
1.39726 ++ BFD_RELOC_IP2K_BANK,
1.39727 ++
1.39728 ++/* Scenix IP2K - low 13 bits of instruction word address */
1.39729 ++ BFD_RELOC_IP2K_ADDR16CJP,
1.39730 ++
1.39731 ++/* Scenix IP2K - high 3 bits of instruction word address */
1.39732 ++ BFD_RELOC_IP2K_PAGE3,
1.39733 ++
1.39734 ++/* Scenix IP2K - ext/low/high 8 bits of data address */
1.39735 ++ BFD_RELOC_IP2K_LO8DATA,
1.39736 ++ BFD_RELOC_IP2K_HI8DATA,
1.39737 ++ BFD_RELOC_IP2K_EX8DATA,
1.39738 ++
1.39739 ++/* Scenix IP2K - low/high 8 bits of instruction word address */
1.39740 ++ BFD_RELOC_IP2K_LO8INSN,
1.39741 ++ BFD_RELOC_IP2K_HI8INSN,
1.39742 ++
1.39743 ++/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */
1.39744 ++ BFD_RELOC_IP2K_PC_SKIP,
1.39745 ++
1.39746 ++/* Scenix IP2K - 16 bit word address in text section. */
1.39747 ++ BFD_RELOC_IP2K_TEXT,
1.39748 ++
1.39749 ++/* Scenix IP2K - 7-bit sp or dp offset */
1.39750 ++ BFD_RELOC_IP2K_FR_OFFSET,
1.39751 ++
1.39752 ++/* Scenix VPE4K coprocessor - data/insn-space addressing */
1.39753 ++ BFD_RELOC_VPE4KMATH_DATA,
1.39754 ++ BFD_RELOC_VPE4KMATH_INSN,
1.39755 ++
1.39756 ++/* These two relocations are used by the linker to determine which of
1.39757 ++the entries in a C++ virtual function table are actually used. When
1.39758 ++the --gc-sections option is given, the linker will zero out the entries
1.39759 ++that are not used, so that the code for those functions need not be
1.39760 ++included in the output.
1.39761 ++
1.39762 ++VTABLE_INHERIT is a zero-space relocation used to describe to the
1.39763 ++linker the inheritance tree of a C++ virtual function table. The
1.39764 ++relocation's symbol should be the parent class' vtable, and the
1.39765 ++relocation should be located at the child vtable.
1.39766 ++
1.39767 ++VTABLE_ENTRY is a zero-space relocation that describes the use of a
1.39768 ++virtual function table entry. The reloc's symbol should refer to the
1.39769 ++table of the class mentioned in the code. Off of that base, an offset
1.39770 ++describes the entry that is being used. For Rela hosts, this offset
1.39771 ++is stored in the reloc's addend. For Rel hosts, we are forced to put
1.39772 ++this offset in the reloc's section offset. */
1.39773 ++ BFD_RELOC_VTABLE_INHERIT,
1.39774 ++ BFD_RELOC_VTABLE_ENTRY,
1.39775 ++
1.39776 ++/* Intel IA64 Relocations. */
1.39777 ++ BFD_RELOC_IA64_IMM14,
1.39778 ++ BFD_RELOC_IA64_IMM22,
1.39779 ++ BFD_RELOC_IA64_IMM64,
1.39780 ++ BFD_RELOC_IA64_DIR32MSB,
1.39781 ++ BFD_RELOC_IA64_DIR32LSB,
1.39782 ++ BFD_RELOC_IA64_DIR64MSB,
1.39783 ++ BFD_RELOC_IA64_DIR64LSB,
1.39784 ++ BFD_RELOC_IA64_GPREL22,
1.39785 ++ BFD_RELOC_IA64_GPREL64I,
1.39786 ++ BFD_RELOC_IA64_GPREL32MSB,
1.39787 ++ BFD_RELOC_IA64_GPREL32LSB,
1.39788 ++ BFD_RELOC_IA64_GPREL64MSB,
1.39789 ++ BFD_RELOC_IA64_GPREL64LSB,
1.39790 ++ BFD_RELOC_IA64_LTOFF22,
1.39791 ++ BFD_RELOC_IA64_LTOFF64I,
1.39792 ++ BFD_RELOC_IA64_PLTOFF22,
1.39793 ++ BFD_RELOC_IA64_PLTOFF64I,
1.39794 ++ BFD_RELOC_IA64_PLTOFF64MSB,
1.39795 ++ BFD_RELOC_IA64_PLTOFF64LSB,
1.39796 ++ BFD_RELOC_IA64_FPTR64I,
1.39797 ++ BFD_RELOC_IA64_FPTR32MSB,
1.39798 ++ BFD_RELOC_IA64_FPTR32LSB,
1.39799 ++ BFD_RELOC_IA64_FPTR64MSB,
1.39800 ++ BFD_RELOC_IA64_FPTR64LSB,
1.39801 ++ BFD_RELOC_IA64_PCREL21B,
1.39802 ++ BFD_RELOC_IA64_PCREL21BI,
1.39803 ++ BFD_RELOC_IA64_PCREL21M,
1.39804 ++ BFD_RELOC_IA64_PCREL21F,
1.39805 ++ BFD_RELOC_IA64_PCREL22,
1.39806 ++ BFD_RELOC_IA64_PCREL60B,
1.39807 ++ BFD_RELOC_IA64_PCREL64I,
1.39808 ++ BFD_RELOC_IA64_PCREL32MSB,
1.39809 ++ BFD_RELOC_IA64_PCREL32LSB,
1.39810 ++ BFD_RELOC_IA64_PCREL64MSB,
1.39811 ++ BFD_RELOC_IA64_PCREL64LSB,
1.39812 ++ BFD_RELOC_IA64_LTOFF_FPTR22,
1.39813 ++ BFD_RELOC_IA64_LTOFF_FPTR64I,
1.39814 ++ BFD_RELOC_IA64_LTOFF_FPTR32MSB,
1.39815 ++ BFD_RELOC_IA64_LTOFF_FPTR32LSB,
1.39816 ++ BFD_RELOC_IA64_LTOFF_FPTR64MSB,
1.39817 ++ BFD_RELOC_IA64_LTOFF_FPTR64LSB,
1.39818 ++ BFD_RELOC_IA64_SEGREL32MSB,
1.39819 ++ BFD_RELOC_IA64_SEGREL32LSB,
1.39820 ++ BFD_RELOC_IA64_SEGREL64MSB,
1.39821 ++ BFD_RELOC_IA64_SEGREL64LSB,
1.39822 ++ BFD_RELOC_IA64_SECREL32MSB,
1.39823 ++ BFD_RELOC_IA64_SECREL32LSB,
1.39824 ++ BFD_RELOC_IA64_SECREL64MSB,
1.39825 ++ BFD_RELOC_IA64_SECREL64LSB,
1.39826 ++ BFD_RELOC_IA64_REL32MSB,
1.39827 ++ BFD_RELOC_IA64_REL32LSB,
1.39828 ++ BFD_RELOC_IA64_REL64MSB,
1.39829 ++ BFD_RELOC_IA64_REL64LSB,
1.39830 ++ BFD_RELOC_IA64_LTV32MSB,
1.39831 ++ BFD_RELOC_IA64_LTV32LSB,
1.39832 ++ BFD_RELOC_IA64_LTV64MSB,
1.39833 ++ BFD_RELOC_IA64_LTV64LSB,
1.39834 ++ BFD_RELOC_IA64_IPLTMSB,
1.39835 ++ BFD_RELOC_IA64_IPLTLSB,
1.39836 ++ BFD_RELOC_IA64_COPY,
1.39837 ++ BFD_RELOC_IA64_LTOFF22X,
1.39838 ++ BFD_RELOC_IA64_LDXMOV,
1.39839 ++ BFD_RELOC_IA64_TPREL14,
1.39840 ++ BFD_RELOC_IA64_TPREL22,
1.39841 ++ BFD_RELOC_IA64_TPREL64I,
1.39842 ++ BFD_RELOC_IA64_TPREL64MSB,
1.39843 ++ BFD_RELOC_IA64_TPREL64LSB,
1.39844 ++ BFD_RELOC_IA64_LTOFF_TPREL22,
1.39845 ++ BFD_RELOC_IA64_DTPMOD64MSB,
1.39846 ++ BFD_RELOC_IA64_DTPMOD64LSB,
1.39847 ++ BFD_RELOC_IA64_LTOFF_DTPMOD22,
1.39848 ++ BFD_RELOC_IA64_DTPREL14,
1.39849 ++ BFD_RELOC_IA64_DTPREL22,
1.39850 ++ BFD_RELOC_IA64_DTPREL64I,
1.39851 ++ BFD_RELOC_IA64_DTPREL32MSB,
1.39852 ++ BFD_RELOC_IA64_DTPREL32LSB,
1.39853 ++ BFD_RELOC_IA64_DTPREL64MSB,
1.39854 ++ BFD_RELOC_IA64_DTPREL64LSB,
1.39855 ++ BFD_RELOC_IA64_LTOFF_DTPREL22,
1.39856 ++
1.39857 ++/* Motorola 68HC11 reloc.
1.39858 ++This is the 8 bit high part of an absolute address. */
1.39859 ++ BFD_RELOC_M68HC11_HI8,
1.39860 ++
1.39861 ++/* Motorola 68HC11 reloc.
1.39862 ++This is the 8 bit low part of an absolute address. */
1.39863 ++ BFD_RELOC_M68HC11_LO8,
1.39864 ++
1.39865 ++/* Motorola 68HC11 reloc.
1.39866 ++This is the 3 bit of a value. */
1.39867 ++ BFD_RELOC_M68HC11_3B,
1.39868 ++
1.39869 ++/* Motorola 68HC11 reloc.
1.39870 ++This reloc marks the beginning of a jump/call instruction.
1.39871 ++It is used for linker relaxation to correctly identify beginning
1.39872 ++of instruction and change some branches to use PC-relative
1.39873 ++addressing mode. */
1.39874 ++ BFD_RELOC_M68HC11_RL_JUMP,
1.39875 ++
1.39876 ++/* Motorola 68HC11 reloc.
1.39877 ++This reloc marks a group of several instructions that gcc generates
1.39878 ++and for which the linker relaxation pass can modify and/or remove
1.39879 ++some of them. */
1.39880 ++ BFD_RELOC_M68HC11_RL_GROUP,
1.39881 ++
1.39882 ++/* Motorola 68HC11 reloc.
1.39883 ++This is the 16-bit lower part of an address. It is used for 'call'
1.39884 ++instruction to specify the symbol address without any special
1.39885 ++transformation (due to memory bank window). */
1.39886 ++ BFD_RELOC_M68HC11_LO16,
1.39887 ++
1.39888 ++/* Motorola 68HC11 reloc.
1.39889 ++This is a 8-bit reloc that specifies the page number of an address.
1.39890 ++It is used by 'call' instruction to specify the page number of
1.39891 ++the symbol. */
1.39892 ++ BFD_RELOC_M68HC11_PAGE,
1.39893 ++
1.39894 ++/* Motorola 68HC11 reloc.
1.39895 ++This is a 24-bit reloc that represents the address with a 16-bit
1.39896 ++value and a 8-bit page number. The symbol address is transformed
1.39897 ++to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */
1.39898 ++ BFD_RELOC_M68HC11_24,
1.39899 ++
1.39900 ++/* Motorola 68HC12 reloc.
1.39901 ++This is the 5 bits of a value. */
1.39902 ++ BFD_RELOC_M68HC12_5B,
1.39903 ++
1.39904 ++/* NS CR16C Relocations. */
1.39905 ++ BFD_RELOC_16C_NUM08,
1.39906 ++ BFD_RELOC_16C_NUM08_C,
1.39907 ++ BFD_RELOC_16C_NUM16,
1.39908 ++ BFD_RELOC_16C_NUM16_C,
1.39909 ++ BFD_RELOC_16C_NUM32,
1.39910 ++ BFD_RELOC_16C_NUM32_C,
1.39911 ++ BFD_RELOC_16C_DISP04,
1.39912 ++ BFD_RELOC_16C_DISP04_C,
1.39913 ++ BFD_RELOC_16C_DISP08,
1.39914 ++ BFD_RELOC_16C_DISP08_C,
1.39915 ++ BFD_RELOC_16C_DISP16,
1.39916 ++ BFD_RELOC_16C_DISP16_C,
1.39917 ++ BFD_RELOC_16C_DISP24,
1.39918 ++ BFD_RELOC_16C_DISP24_C,
1.39919 ++ BFD_RELOC_16C_DISP24a,
1.39920 ++ BFD_RELOC_16C_DISP24a_C,
1.39921 ++ BFD_RELOC_16C_REG04,
1.39922 ++ BFD_RELOC_16C_REG04_C,
1.39923 ++ BFD_RELOC_16C_REG04a,
1.39924 ++ BFD_RELOC_16C_REG04a_C,
1.39925 ++ BFD_RELOC_16C_REG14,
1.39926 ++ BFD_RELOC_16C_REG14_C,
1.39927 ++ BFD_RELOC_16C_REG16,
1.39928 ++ BFD_RELOC_16C_REG16_C,
1.39929 ++ BFD_RELOC_16C_REG20,
1.39930 ++ BFD_RELOC_16C_REG20_C,
1.39931 ++ BFD_RELOC_16C_ABS20,
1.39932 ++ BFD_RELOC_16C_ABS20_C,
1.39933 ++ BFD_RELOC_16C_ABS24,
1.39934 ++ BFD_RELOC_16C_ABS24_C,
1.39935 ++ BFD_RELOC_16C_IMM04,
1.39936 ++ BFD_RELOC_16C_IMM04_C,
1.39937 ++ BFD_RELOC_16C_IMM16,
1.39938 ++ BFD_RELOC_16C_IMM16_C,
1.39939 ++ BFD_RELOC_16C_IMM20,
1.39940 ++ BFD_RELOC_16C_IMM20_C,
1.39941 ++ BFD_RELOC_16C_IMM24,
1.39942 ++ BFD_RELOC_16C_IMM24_C,
1.39943 ++ BFD_RELOC_16C_IMM32,
1.39944 ++ BFD_RELOC_16C_IMM32_C,
1.39945 ++
1.39946 ++/* NS CR16 Relocations. */
1.39947 ++ BFD_RELOC_CR16_NUM8,
1.39948 ++ BFD_RELOC_CR16_NUM16,
1.39949 ++ BFD_RELOC_CR16_NUM32,
1.39950 ++ BFD_RELOC_CR16_NUM32a,
1.39951 ++ BFD_RELOC_CR16_REGREL0,
1.39952 ++ BFD_RELOC_CR16_REGREL4,
1.39953 ++ BFD_RELOC_CR16_REGREL4a,
1.39954 ++ BFD_RELOC_CR16_REGREL14,
1.39955 ++ BFD_RELOC_CR16_REGREL14a,
1.39956 ++ BFD_RELOC_CR16_REGREL16,
1.39957 ++ BFD_RELOC_CR16_REGREL20,
1.39958 ++ BFD_RELOC_CR16_REGREL20a,
1.39959 ++ BFD_RELOC_CR16_ABS20,
1.39960 ++ BFD_RELOC_CR16_ABS24,
1.39961 ++ BFD_RELOC_CR16_IMM4,
1.39962 ++ BFD_RELOC_CR16_IMM8,
1.39963 ++ BFD_RELOC_CR16_IMM16,
1.39964 ++ BFD_RELOC_CR16_IMM20,
1.39965 ++ BFD_RELOC_CR16_IMM24,
1.39966 ++ BFD_RELOC_CR16_IMM32,
1.39967 ++ BFD_RELOC_CR16_IMM32a,
1.39968 ++ BFD_RELOC_CR16_DISP4,
1.39969 ++ BFD_RELOC_CR16_DISP8,
1.39970 ++ BFD_RELOC_CR16_DISP16,
1.39971 ++ BFD_RELOC_CR16_DISP20,
1.39972 ++ BFD_RELOC_CR16_DISP24,
1.39973 ++ BFD_RELOC_CR16_DISP24a,
1.39974 ++
1.39975 ++/* NS CRX Relocations. */
1.39976 ++ BFD_RELOC_CRX_REL4,
1.39977 ++ BFD_RELOC_CRX_REL8,
1.39978 ++ BFD_RELOC_CRX_REL8_CMP,
1.39979 ++ BFD_RELOC_CRX_REL16,
1.39980 ++ BFD_RELOC_CRX_REL24,
1.39981 ++ BFD_RELOC_CRX_REL32,
1.39982 ++ BFD_RELOC_CRX_REGREL12,
1.39983 ++ BFD_RELOC_CRX_REGREL22,
1.39984 ++ BFD_RELOC_CRX_REGREL28,
1.39985 ++ BFD_RELOC_CRX_REGREL32,
1.39986 ++ BFD_RELOC_CRX_ABS16,
1.39987 ++ BFD_RELOC_CRX_ABS32,
1.39988 ++ BFD_RELOC_CRX_NUM8,
1.39989 ++ BFD_RELOC_CRX_NUM16,
1.39990 ++ BFD_RELOC_CRX_NUM32,
1.39991 ++ BFD_RELOC_CRX_IMM16,
1.39992 ++ BFD_RELOC_CRX_IMM32,
1.39993 ++ BFD_RELOC_CRX_SWITCH8,
1.39994 ++ BFD_RELOC_CRX_SWITCH16,
1.39995 ++ BFD_RELOC_CRX_SWITCH32,
1.39996 ++
1.39997 ++/* These relocs are only used within the CRIS assembler. They are not
1.39998 ++(at present) written to any object files. */
1.39999 ++ BFD_RELOC_CRIS_BDISP8,
1.40000 ++ BFD_RELOC_CRIS_UNSIGNED_5,
1.40001 ++ BFD_RELOC_CRIS_SIGNED_6,
1.40002 ++ BFD_RELOC_CRIS_UNSIGNED_6,
1.40003 ++ BFD_RELOC_CRIS_SIGNED_8,
1.40004 ++ BFD_RELOC_CRIS_UNSIGNED_8,
1.40005 ++ BFD_RELOC_CRIS_SIGNED_16,
1.40006 ++ BFD_RELOC_CRIS_UNSIGNED_16,
1.40007 ++ BFD_RELOC_CRIS_LAPCQ_OFFSET,
1.40008 ++ BFD_RELOC_CRIS_UNSIGNED_4,
1.40009 ++
1.40010 ++/* Relocs used in ELF shared libraries for CRIS. */
1.40011 ++ BFD_RELOC_CRIS_COPY,
1.40012 ++ BFD_RELOC_CRIS_GLOB_DAT,
1.40013 ++ BFD_RELOC_CRIS_JUMP_SLOT,
1.40014 ++ BFD_RELOC_CRIS_RELATIVE,
1.40015 ++
1.40016 ++/* 32-bit offset to symbol-entry within GOT. */
1.40017 ++ BFD_RELOC_CRIS_32_GOT,
1.40018 ++
1.40019 ++/* 16-bit offset to symbol-entry within GOT. */
1.40020 ++ BFD_RELOC_CRIS_16_GOT,
1.40021 ++
1.40022 ++/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
1.40023 ++ BFD_RELOC_CRIS_32_GOTPLT,
1.40024 ++
1.40025 ++/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
1.40026 ++ BFD_RELOC_CRIS_16_GOTPLT,
1.40027 ++
1.40028 ++/* 32-bit offset to symbol, relative to GOT. */
1.40029 ++ BFD_RELOC_CRIS_32_GOTREL,
1.40030 ++
1.40031 ++/* 32-bit offset to symbol with PLT entry, relative to GOT. */
1.40032 ++ BFD_RELOC_CRIS_32_PLT_GOTREL,
1.40033 ++
1.40034 ++/* 32-bit offset to symbol with PLT entry, relative to this relocation. */
1.40035 ++ BFD_RELOC_CRIS_32_PLT_PCREL,
1.40036 ++
1.40037 ++/* Intel i860 Relocations. */
1.40038 ++ BFD_RELOC_860_COPY,
1.40039 ++ BFD_RELOC_860_GLOB_DAT,
1.40040 ++ BFD_RELOC_860_JUMP_SLOT,
1.40041 ++ BFD_RELOC_860_RELATIVE,
1.40042 ++ BFD_RELOC_860_PC26,
1.40043 ++ BFD_RELOC_860_PLT26,
1.40044 ++ BFD_RELOC_860_PC16,
1.40045 ++ BFD_RELOC_860_LOW0,
1.40046 ++ BFD_RELOC_860_SPLIT0,
1.40047 ++ BFD_RELOC_860_LOW1,
1.40048 ++ BFD_RELOC_860_SPLIT1,
1.40049 ++ BFD_RELOC_860_LOW2,
1.40050 ++ BFD_RELOC_860_SPLIT2,
1.40051 ++ BFD_RELOC_860_LOW3,
1.40052 ++ BFD_RELOC_860_LOGOT0,
1.40053 ++ BFD_RELOC_860_SPGOT0,
1.40054 ++ BFD_RELOC_860_LOGOT1,
1.40055 ++ BFD_RELOC_860_SPGOT1,
1.40056 ++ BFD_RELOC_860_LOGOTOFF0,
1.40057 ++ BFD_RELOC_860_SPGOTOFF0,
1.40058 ++ BFD_RELOC_860_LOGOTOFF1,
1.40059 ++ BFD_RELOC_860_SPGOTOFF1,
1.40060 ++ BFD_RELOC_860_LOGOTOFF2,
1.40061 ++ BFD_RELOC_860_LOGOTOFF3,
1.40062 ++ BFD_RELOC_860_LOPC,
1.40063 ++ BFD_RELOC_860_HIGHADJ,
1.40064 ++ BFD_RELOC_860_HAGOT,
1.40065 ++ BFD_RELOC_860_HAGOTOFF,
1.40066 ++ BFD_RELOC_860_HAPC,
1.40067 ++ BFD_RELOC_860_HIGH,
1.40068 ++ BFD_RELOC_860_HIGOT,
1.40069 ++ BFD_RELOC_860_HIGOTOFF,
1.40070 ++
1.40071 ++/* OpenRISC Relocations. */
1.40072 ++ BFD_RELOC_OPENRISC_ABS_26,
1.40073 ++ BFD_RELOC_OPENRISC_REL_26,
1.40074 ++
1.40075 ++/* H8 elf Relocations. */
1.40076 ++ BFD_RELOC_H8_DIR16A8,
1.40077 ++ BFD_RELOC_H8_DIR16R8,
1.40078 ++ BFD_RELOC_H8_DIR24A8,
1.40079 ++ BFD_RELOC_H8_DIR24R8,
1.40080 ++ BFD_RELOC_H8_DIR32A16,
1.40081 ++
1.40082 ++/* Sony Xstormy16 Relocations. */
1.40083 ++ BFD_RELOC_XSTORMY16_REL_12,
1.40084 ++ BFD_RELOC_XSTORMY16_12,
1.40085 ++ BFD_RELOC_XSTORMY16_24,
1.40086 ++ BFD_RELOC_XSTORMY16_FPTR16,
1.40087 ++
1.40088 ++/* Self-describing complex relocations. */
1.40089 ++ BFD_RELOC_RELC,
1.40090 ++
1.40091 ++
1.40092 ++/* Infineon Relocations. */
1.40093 ++ BFD_RELOC_XC16X_PAG,
1.40094 ++ BFD_RELOC_XC16X_POF,
1.40095 ++ BFD_RELOC_XC16X_SEG,
1.40096 ++ BFD_RELOC_XC16X_SOF,
1.40097 ++
1.40098 ++/* Relocations used by VAX ELF. */
1.40099 ++ BFD_RELOC_VAX_GLOB_DAT,
1.40100 ++ BFD_RELOC_VAX_JMP_SLOT,
1.40101 ++ BFD_RELOC_VAX_RELATIVE,
1.40102 ++
1.40103 ++/* Morpho MT - 16 bit immediate relocation. */
1.40104 ++ BFD_RELOC_MT_PC16,
1.40105 ++
1.40106 ++/* Morpho MT - Hi 16 bits of an address. */
1.40107 ++ BFD_RELOC_MT_HI16,
1.40108 ++
1.40109 ++/* Morpho MT - Low 16 bits of an address. */
1.40110 ++ BFD_RELOC_MT_LO16,
1.40111 ++
1.40112 ++/* Morpho MT - Used to tell the linker which vtable entries are used. */
1.40113 ++ BFD_RELOC_MT_GNU_VTINHERIT,
1.40114 ++
1.40115 ++/* Morpho MT - Used to tell the linker which vtable entries are used. */
1.40116 ++ BFD_RELOC_MT_GNU_VTENTRY,
1.40117 ++
1.40118 ++/* Morpho MT - 8 bit immediate relocation. */
1.40119 ++ BFD_RELOC_MT_PCINSN8,
1.40120 ++
1.40121 ++/* msp430 specific relocation codes */
1.40122 ++ BFD_RELOC_MSP430_10_PCREL,
1.40123 ++ BFD_RELOC_MSP430_16_PCREL,
1.40124 ++ BFD_RELOC_MSP430_16,
1.40125 ++ BFD_RELOC_MSP430_16_PCREL_BYTE,
1.40126 ++ BFD_RELOC_MSP430_16_BYTE,
1.40127 ++ BFD_RELOC_MSP430_2X_PCREL,
1.40128 ++ BFD_RELOC_MSP430_RL_PCREL,
1.40129 ++
1.40130 ++/* IQ2000 Relocations. */
1.40131 ++ BFD_RELOC_IQ2000_OFFSET_16,
1.40132 ++ BFD_RELOC_IQ2000_OFFSET_21,
1.40133 ++ BFD_RELOC_IQ2000_UHI16,
1.40134 ++
1.40135 ++/* Special Xtensa relocation used only by PLT entries in ELF shared
1.40136 ++objects to indicate that the runtime linker should set the value
1.40137 ++to one of its own internal functions or data structures. */
1.40138 ++ BFD_RELOC_XTENSA_RTLD,
1.40139 ++
1.40140 ++/* Xtensa relocations for ELF shared objects. */
1.40141 ++ BFD_RELOC_XTENSA_GLOB_DAT,
1.40142 ++ BFD_RELOC_XTENSA_JMP_SLOT,
1.40143 ++ BFD_RELOC_XTENSA_RELATIVE,
1.40144 ++
1.40145 ++/* Xtensa relocation used in ELF object files for symbols that may require
1.40146 ++PLT entries. Otherwise, this is just a generic 32-bit relocation. */
1.40147 ++ BFD_RELOC_XTENSA_PLT,
1.40148 ++
1.40149 ++/* Xtensa relocations to mark the difference of two local symbols.
1.40150 ++These are only needed to support linker relaxation and can be ignored
1.40151 ++when not relaxing. The field is set to the value of the difference
1.40152 ++assuming no relaxation. The relocation encodes the position of the
1.40153 ++first symbol so the linker can determine whether to adjust the field
1.40154 ++value. */
1.40155 ++ BFD_RELOC_XTENSA_DIFF8,
1.40156 ++ BFD_RELOC_XTENSA_DIFF16,
1.40157 ++ BFD_RELOC_XTENSA_DIFF32,
1.40158 ++
1.40159 ++/* Generic Xtensa relocations for instruction operands. Only the slot
1.40160 ++number is encoded in the relocation. The relocation applies to the
1.40161 ++last PC-relative immediate operand, or if there are no PC-relative
1.40162 ++immediates, to the last immediate operand. */
1.40163 ++ BFD_RELOC_XTENSA_SLOT0_OP,
1.40164 ++ BFD_RELOC_XTENSA_SLOT1_OP,
1.40165 ++ BFD_RELOC_XTENSA_SLOT2_OP,
1.40166 ++ BFD_RELOC_XTENSA_SLOT3_OP,
1.40167 ++ BFD_RELOC_XTENSA_SLOT4_OP,
1.40168 ++ BFD_RELOC_XTENSA_SLOT5_OP,
1.40169 ++ BFD_RELOC_XTENSA_SLOT6_OP,
1.40170 ++ BFD_RELOC_XTENSA_SLOT7_OP,
1.40171 ++ BFD_RELOC_XTENSA_SLOT8_OP,
1.40172 ++ BFD_RELOC_XTENSA_SLOT9_OP,
1.40173 ++ BFD_RELOC_XTENSA_SLOT10_OP,
1.40174 ++ BFD_RELOC_XTENSA_SLOT11_OP,
1.40175 ++ BFD_RELOC_XTENSA_SLOT12_OP,
1.40176 ++ BFD_RELOC_XTENSA_SLOT13_OP,
1.40177 ++ BFD_RELOC_XTENSA_SLOT14_OP,
1.40178 ++
1.40179 ++/* Alternate Xtensa relocations. Only the slot is encoded in the
1.40180 ++relocation. The meaning of these relocations is opcode-specific. */
1.40181 ++ BFD_RELOC_XTENSA_SLOT0_ALT,
1.40182 ++ BFD_RELOC_XTENSA_SLOT1_ALT,
1.40183 ++ BFD_RELOC_XTENSA_SLOT2_ALT,
1.40184 ++ BFD_RELOC_XTENSA_SLOT3_ALT,
1.40185 ++ BFD_RELOC_XTENSA_SLOT4_ALT,
1.40186 ++ BFD_RELOC_XTENSA_SLOT5_ALT,
1.40187 ++ BFD_RELOC_XTENSA_SLOT6_ALT,
1.40188 ++ BFD_RELOC_XTENSA_SLOT7_ALT,
1.40189 ++ BFD_RELOC_XTENSA_SLOT8_ALT,
1.40190 ++ BFD_RELOC_XTENSA_SLOT9_ALT,
1.40191 ++ BFD_RELOC_XTENSA_SLOT10_ALT,
1.40192 ++ BFD_RELOC_XTENSA_SLOT11_ALT,
1.40193 ++ BFD_RELOC_XTENSA_SLOT12_ALT,
1.40194 ++ BFD_RELOC_XTENSA_SLOT13_ALT,
1.40195 ++ BFD_RELOC_XTENSA_SLOT14_ALT,
1.40196 ++
1.40197 ++/* Xtensa relocations for backward compatibility. These have all been
1.40198 ++replaced by BFD_RELOC_XTENSA_SLOT0_OP. */
1.40199 ++ BFD_RELOC_XTENSA_OP0,
1.40200 ++ BFD_RELOC_XTENSA_OP1,
1.40201 ++ BFD_RELOC_XTENSA_OP2,
1.40202 ++
1.40203 ++/* Xtensa relocation to mark that the assembler expanded the
1.40204 ++instructions from an original target. The expansion size is
1.40205 ++encoded in the reloc size. */
1.40206 ++ BFD_RELOC_XTENSA_ASM_EXPAND,
1.40207 ++
1.40208 ++/* Xtensa relocation to mark that the linker should simplify
1.40209 ++assembler-expanded instructions. This is commonly used
1.40210 ++internally by the linker after analysis of a
1.40211 ++BFD_RELOC_XTENSA_ASM_EXPAND. */
1.40212 ++ BFD_RELOC_XTENSA_ASM_SIMPLIFY,
1.40213 ++
1.40214 ++/* 8 bit signed offset in (ix+d) or (iy+d). */
1.40215 ++ BFD_RELOC_Z80_DISP8,
1.40216 ++
1.40217 ++/* DJNZ offset. */
1.40218 ++ BFD_RELOC_Z8K_DISP7,
1.40219 ++
1.40220 ++/* CALR offset. */
1.40221 ++ BFD_RELOC_Z8K_CALLR,
1.40222 ++
1.40223 ++/* 4 bit value. */
1.40224 ++ BFD_RELOC_Z8K_IMM4L,
1.40225 ++ BFD_RELOC_UNUSED };
1.40226 ++typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
1.40227 ++reloc_howto_type *bfd_reloc_type_lookup
1.40228 ++ (bfd *abfd, bfd_reloc_code_real_type code);
1.40229 ++reloc_howto_type *bfd_reloc_name_lookup
1.40230 ++ (bfd *abfd, const char *reloc_name);
1.40231 ++
1.40232 ++const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
1.40233 ++
1.40234 ++/* Extracted from syms.c. */
1.40235 ++
1.40236 ++typedef struct bfd_symbol
1.40237 ++{
1.40238 ++ /* A pointer to the BFD which owns the symbol. This information
1.40239 ++ is necessary so that a back end can work out what additional
1.40240 ++ information (invisible to the application writer) is carried
1.40241 ++ with the symbol.
1.40242 ++
1.40243 ++ This field is *almost* redundant, since you can use section->owner
1.40244 ++ instead, except that some symbols point to the global sections
1.40245 ++ bfd_{abs,com,und}_section. This could be fixed by making
1.40246 ++ these globals be per-bfd (or per-target-flavor). FIXME. */
1.40247 ++ struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
1.40248 ++
1.40249 ++ /* The text of the symbol. The name is left alone, and not copied; the
1.40250 ++ application may not alter it. */
1.40251 ++ const char *name;
1.40252 ++
1.40253 ++ /* The value of the symbol. This really should be a union of a
1.40254 ++ numeric value with a pointer, since some flags indicate that
1.40255 ++ a pointer to another symbol is stored here. */
1.40256 ++ symvalue value;
1.40257 ++
1.40258 ++ /* Attributes of a symbol. */
1.40259 ++#define BSF_NO_FLAGS 0x00
1.40260 ++
1.40261 ++ /* The symbol has local scope; <<static>> in <<C>>. The value
1.40262 ++ is the offset into the section of the data. */
1.40263 ++#define BSF_LOCAL 0x01
1.40264 ++
1.40265 ++ /* The symbol has global scope; initialized data in <<C>>. The
1.40266 ++ value is the offset into the section of the data. */
1.40267 ++#define BSF_GLOBAL 0x02
1.40268 ++
1.40269 ++ /* The symbol has global scope and is exported. The value is
1.40270 ++ the offset into the section of the data. */
1.40271 ++#define BSF_EXPORT BSF_GLOBAL /* No real difference. */
1.40272 ++
1.40273 ++ /* A normal C symbol would be one of:
1.40274 ++ <<BSF_LOCAL>>, <<BSF_FORT_COMM>>, <<BSF_UNDEFINED>> or
1.40275 ++ <<BSF_GLOBAL>>. */
1.40276 ++
1.40277 ++ /* The symbol is a debugging record. The value has an arbitrary
1.40278 ++ meaning, unless BSF_DEBUGGING_RELOC is also set. */
1.40279 ++#define BSF_DEBUGGING 0x08
1.40280 ++
1.40281 ++ /* The symbol denotes a function entry point. Used in ELF,
1.40282 ++ perhaps others someday. */
1.40283 ++#define BSF_FUNCTION 0x10
1.40284 ++
1.40285 ++ /* Used by the linker. */
1.40286 ++#define BSF_KEEP 0x20
1.40287 ++#define BSF_KEEP_G 0x40
1.40288 ++
1.40289 ++ /* A weak global symbol, overridable without warnings by
1.40290 ++ a regular global symbol of the same name. */
1.40291 ++#define BSF_WEAK 0x80
1.40292 ++
1.40293 ++ /* This symbol was created to point to a section, e.g. ELF's
1.40294 ++ STT_SECTION symbols. */
1.40295 ++#define BSF_SECTION_SYM 0x100
1.40296 ++
1.40297 ++ /* The symbol used to be a common symbol, but now it is
1.40298 ++ allocated. */
1.40299 ++#define BSF_OLD_COMMON 0x200
1.40300 ++
1.40301 ++ /* The default value for common data. */
1.40302 ++#define BFD_FORT_COMM_DEFAULT_VALUE 0
1.40303 ++
1.40304 ++ /* In some files the type of a symbol sometimes alters its
1.40305 ++ location in an output file - ie in coff a <<ISFCN>> symbol
1.40306 ++ which is also <<C_EXT>> symbol appears where it was
1.40307 ++ declared and not at the end of a section. This bit is set
1.40308 ++ by the target BFD part to convey this information. */
1.40309 ++#define BSF_NOT_AT_END 0x400
1.40310 ++
1.40311 ++ /* Signal that the symbol is the label of constructor section. */
1.40312 ++#define BSF_CONSTRUCTOR 0x800
1.40313 ++
1.40314 ++ /* Signal that the symbol is a warning symbol. The name is a
1.40315 ++ warning. The name of the next symbol is the one to warn about;
1.40316 ++ if a reference is made to a symbol with the same name as the next
1.40317 ++ symbol, a warning is issued by the linker. */
1.40318 ++#define BSF_WARNING 0x1000
1.40319 ++
1.40320 ++ /* Signal that the symbol is indirect. This symbol is an indirect
1.40321 ++ pointer to the symbol with the same name as the next symbol. */
1.40322 ++#define BSF_INDIRECT 0x2000
1.40323 ++
1.40324 ++ /* BSF_FILE marks symbols that contain a file name. This is used
1.40325 ++ for ELF STT_FILE symbols. */
1.40326 ++#define BSF_FILE 0x4000
1.40327 ++
1.40328 ++ /* Symbol is from dynamic linking information. */
1.40329 ++#define BSF_DYNAMIC 0x8000
1.40330 ++
1.40331 ++ /* The symbol denotes a data object. Used in ELF, and perhaps
1.40332 ++ others someday. */
1.40333 ++#define BSF_OBJECT 0x10000
1.40334 ++
1.40335 ++ /* This symbol is a debugging symbol. The value is the offset
1.40336 ++ into the section of the data. BSF_DEBUGGING should be set
1.40337 ++ as well. */
1.40338 ++#define BSF_DEBUGGING_RELOC 0x20000
1.40339 ++
1.40340 ++ /* This symbol is thread local. Used in ELF. */
1.40341 ++#define BSF_THREAD_LOCAL 0x40000
1.40342 ++
1.40343 ++ /* This symbol represents a complex relocation expression,
1.40344 ++ with the expression tree serialized in the symbol name. */
1.40345 ++#define BSF_RELC 0x80000
1.40346 ++
1.40347 ++ /* This symbol represents a signed complex relocation expression,
1.40348 ++ with the expression tree serialized in the symbol name. */
1.40349 ++#define BSF_SRELC 0x100000
1.40350 ++
1.40351 ++ flagword flags;
1.40352 ++
1.40353 ++ /* A pointer to the section to which this symbol is
1.40354 ++ relative. This will always be non NULL, there are special
1.40355 ++ sections for undefined and absolute symbols. */
1.40356 ++ struct bfd_section *section;
1.40357 ++
1.40358 ++ /* Back end special data. */
1.40359 ++ union
1.40360 ++ {
1.40361 ++ void *p;
1.40362 ++ bfd_vma i;
1.40363 ++ }
1.40364 ++ udata;
1.40365 ++}
1.40366 ++asymbol;
1.40367 ++
1.40368 ++#define bfd_get_symtab_upper_bound(abfd) \
1.40369 ++ BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
1.40370 ++
1.40371 ++bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
1.40372 ++
1.40373 ++bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
1.40374 ++
1.40375 ++#define bfd_is_local_label_name(abfd, name) \
1.40376 ++ BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
1.40377 ++
1.40378 ++bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
1.40379 ++
1.40380 ++#define bfd_is_target_special_symbol(abfd, sym) \
1.40381 ++ BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
1.40382 ++
1.40383 ++#define bfd_canonicalize_symtab(abfd, location) \
1.40384 ++ BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
1.40385 ++
1.40386 ++bfd_boolean bfd_set_symtab
1.40387 ++ (bfd *abfd, asymbol **location, unsigned int count);
1.40388 ++
1.40389 ++void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
1.40390 ++
1.40391 ++#define bfd_make_empty_symbol(abfd) \
1.40392 ++ BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
1.40393 ++
1.40394 ++asymbol *_bfd_generic_make_empty_symbol (bfd *);
1.40395 ++
1.40396 ++#define bfd_make_debug_symbol(abfd,ptr,size) \
1.40397 ++ BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
1.40398 ++
1.40399 ++int bfd_decode_symclass (asymbol *symbol);
1.40400 ++
1.40401 ++bfd_boolean bfd_is_undefined_symclass (int symclass);
1.40402 ++
1.40403 ++void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
1.40404 ++
1.40405 ++bfd_boolean bfd_copy_private_symbol_data
1.40406 ++ (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
1.40407 ++
1.40408 ++#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
1.40409 ++ BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
1.40410 ++ (ibfd, isymbol, obfd, osymbol))
1.40411 ++
1.40412 ++/* Extracted from bfd.c. */
1.40413 ++struct bfd
1.40414 ++{
1.40415 ++ /* A unique identifier of the BFD */
1.40416 ++ unsigned int id;
1.40417 ++
1.40418 ++ /* The filename the application opened the BFD with. */
1.40419 ++ const char *filename;
1.40420 ++
1.40421 ++ /* A pointer to the target jump table. */
1.40422 ++ const struct bfd_target *xvec;
1.40423 ++
1.40424 ++ /* The IOSTREAM, and corresponding IO vector that provide access
1.40425 ++ to the file backing the BFD. */
1.40426 ++ void *iostream;
1.40427 ++ const struct bfd_iovec *iovec;
1.40428 ++
1.40429 ++ /* Is the file descriptor being cached? That is, can it be closed as
1.40430 ++ needed, and re-opened when accessed later? */
1.40431 ++ bfd_boolean cacheable;
1.40432 ++
1.40433 ++ /* Marks whether there was a default target specified when the
1.40434 ++ BFD was opened. This is used to select which matching algorithm
1.40435 ++ to use to choose the back end. */
1.40436 ++ bfd_boolean target_defaulted;
1.40437 ++
1.40438 ++ /* The caching routines use these to maintain a
1.40439 ++ least-recently-used list of BFDs. */
1.40440 ++ struct bfd *lru_prev, *lru_next;
1.40441 ++
1.40442 ++ /* When a file is closed by the caching routines, BFD retains
1.40443 ++ state information on the file here... */
1.40444 ++ ufile_ptr where;
1.40445 ++
1.40446 ++ /* ... and here: (``once'' means at least once). */
1.40447 ++ bfd_boolean opened_once;
1.40448 ++
1.40449 ++ /* Set if we have a locally maintained mtime value, rather than
1.40450 ++ getting it from the file each time. */
1.40451 ++ bfd_boolean mtime_set;
1.40452 ++
1.40453 ++ /* File modified time, if mtime_set is TRUE. */
1.40454 ++ long mtime;
1.40455 ++
1.40456 ++ /* Reserved for an unimplemented file locking extension. */
1.40457 ++ int ifd;
1.40458 ++
1.40459 ++ /* The format which belongs to the BFD. (object, core, etc.) */
1.40460 ++ bfd_format format;
1.40461 ++
1.40462 ++ /* The direction with which the BFD was opened. */
1.40463 ++ enum bfd_direction
1.40464 ++ {
1.40465 ++ no_direction = 0,
1.40466 ++ read_direction = 1,
1.40467 ++ write_direction = 2,
1.40468 ++ both_direction = 3
1.40469 ++ }
1.40470 ++ direction;
1.40471 ++
1.40472 ++ /* Format_specific flags. */
1.40473 ++ flagword flags;
1.40474 ++
1.40475 ++ /* Currently my_archive is tested before adding origin to
1.40476 ++ anything. I believe that this can become always an add of
1.40477 ++ origin, with origin set to 0 for non archive files. */
1.40478 ++ ufile_ptr origin;
1.40479 ++
1.40480 ++ /* Remember when output has begun, to stop strange things
1.40481 ++ from happening. */
1.40482 ++ bfd_boolean output_has_begun;
1.40483 ++
1.40484 ++ /* A hash table for section names. */
1.40485 ++ struct bfd_hash_table section_htab;
1.40486 ++
1.40487 ++ /* Pointer to linked list of sections. */
1.40488 ++ struct bfd_section *sections;
1.40489 ++
1.40490 ++ /* The last section on the section list. */
1.40491 ++ struct bfd_section *section_last;
1.40492 ++
1.40493 ++ /* The number of sections. */
1.40494 ++ unsigned int section_count;
1.40495 ++
1.40496 ++ /* Stuff only useful for object files:
1.40497 ++ The start address. */
1.40498 ++ bfd_vma start_address;
1.40499 ++
1.40500 ++ /* Used for input and output. */
1.40501 ++ unsigned int symcount;
1.40502 ++
1.40503 ++ /* Symbol table for output BFD (with symcount entries). */
1.40504 ++ struct bfd_symbol **outsymbols;
1.40505 ++
1.40506 ++ /* Used for slurped dynamic symbol tables. */
1.40507 ++ unsigned int dynsymcount;
1.40508 ++
1.40509 ++ /* Pointer to structure which contains architecture information. */
1.40510 ++ const struct bfd_arch_info *arch_info;
1.40511 ++
1.40512 ++ /* Flag set if symbols from this BFD should not be exported. */
1.40513 ++ bfd_boolean no_export;
1.40514 ++
1.40515 ++ /* Stuff only useful for archives. */
1.40516 ++ void *arelt_data;
1.40517 ++ struct bfd *my_archive; /* The containing archive BFD. */
1.40518 ++ struct bfd *archive_next; /* The next BFD in the archive. */
1.40519 ++ struct bfd *archive_head; /* The first BFD in the archive. */
1.40520 ++ bfd_boolean has_armap;
1.40521 ++
1.40522 ++ /* A chain of BFD structures involved in a link. */
1.40523 ++ struct bfd *link_next;
1.40524 ++
1.40525 ++ /* A field used by _bfd_generic_link_add_archive_symbols. This will
1.40526 ++ be used only for archive elements. */
1.40527 ++ int archive_pass;
1.40528 ++
1.40529 ++ /* Used by the back end to hold private data. */
1.40530 ++ union
1.40531 ++ {
1.40532 ++ struct aout_data_struct *aout_data;
1.40533 ++ struct artdata *aout_ar_data;
1.40534 ++ struct _oasys_data *oasys_obj_data;
1.40535 ++ struct _oasys_ar_data *oasys_ar_data;
1.40536 ++ struct coff_tdata *coff_obj_data;
1.40537 ++ struct pe_tdata *pe_obj_data;
1.40538 ++ struct xcoff_tdata *xcoff_obj_data;
1.40539 ++ struct ecoff_tdata *ecoff_obj_data;
1.40540 ++ struct ieee_data_struct *ieee_data;
1.40541 ++ struct ieee_ar_data_struct *ieee_ar_data;
1.40542 ++ struct srec_data_struct *srec_data;
1.40543 ++ struct ihex_data_struct *ihex_data;
1.40544 ++ struct tekhex_data_struct *tekhex_data;
1.40545 ++ struct elf_obj_tdata *elf_obj_data;
1.40546 ++ struct nlm_obj_tdata *nlm_obj_data;
1.40547 ++ struct bout_data_struct *bout_data;
1.40548 ++ struct mmo_data_struct *mmo_data;
1.40549 ++ struct sun_core_struct *sun_core_data;
1.40550 ++ struct sco5_core_struct *sco5_core_data;
1.40551 ++ struct trad_core_struct *trad_core_data;
1.40552 ++ struct som_data_struct *som_data;
1.40553 ++ struct hpux_core_struct *hpux_core_data;
1.40554 ++ struct hppabsd_core_struct *hppabsd_core_data;
1.40555 ++ struct sgi_core_struct *sgi_core_data;
1.40556 ++ struct lynx_core_struct *lynx_core_data;
1.40557 ++ struct osf_core_struct *osf_core_data;
1.40558 ++ struct cisco_core_struct *cisco_core_data;
1.40559 ++ struct versados_data_struct *versados_data;
1.40560 ++ struct netbsd_core_struct *netbsd_core_data;
1.40561 ++ struct mach_o_data_struct *mach_o_data;
1.40562 ++ struct mach_o_fat_data_struct *mach_o_fat_data;
1.40563 ++ struct bfd_pef_data_struct *pef_data;
1.40564 ++ struct bfd_pef_xlib_data_struct *pef_xlib_data;
1.40565 ++ struct bfd_sym_data_struct *sym_data;
1.40566 ++ void *any;
1.40567 ++ }
1.40568 ++ tdata;
1.40569 ++
1.40570 ++ /* Used by the application to hold private data. */
1.40571 ++ void *usrdata;
1.40572 ++
1.40573 ++ /* Where all the allocated stuff under this BFD goes. This is a
1.40574 ++ struct objalloc *, but we use void * to avoid requiring the inclusion
1.40575 ++ of objalloc.h. */
1.40576 ++ void *memory;
1.40577 ++};
1.40578 ++
1.40579 ++typedef enum bfd_error
1.40580 ++{
1.40581 ++ bfd_error_no_error = 0,
1.40582 ++ bfd_error_system_call,
1.40583 ++ bfd_error_invalid_target,
1.40584 ++ bfd_error_wrong_format,
1.40585 ++ bfd_error_wrong_object_format,
1.40586 ++ bfd_error_invalid_operation,
1.40587 ++ bfd_error_no_memory,
1.40588 ++ bfd_error_no_symbols,
1.40589 ++ bfd_error_no_armap,
1.40590 ++ bfd_error_no_more_archived_files,
1.40591 ++ bfd_error_malformed_archive,
1.40592 ++ bfd_error_file_not_recognized,
1.40593 ++ bfd_error_file_ambiguously_recognized,
1.40594 ++ bfd_error_no_contents,
1.40595 ++ bfd_error_nonrepresentable_section,
1.40596 ++ bfd_error_no_debug_section,
1.40597 ++ bfd_error_bad_value,
1.40598 ++ bfd_error_file_truncated,
1.40599 ++ bfd_error_file_too_big,
1.40600 ++ bfd_error_on_input,
1.40601 ++ bfd_error_invalid_error_code
1.40602 ++}
1.40603 ++bfd_error_type;
1.40604 ++
1.40605 ++bfd_error_type bfd_get_error (void);
1.40606 ++
1.40607 ++void bfd_set_error (bfd_error_type error_tag, ...);
1.40608 ++
1.40609 ++const char *bfd_errmsg (bfd_error_type error_tag);
1.40610 ++
1.40611 ++void bfd_perror (const char *message);
1.40612 ++
1.40613 ++typedef void (*bfd_error_handler_type) (const char *, ...);
1.40614 ++
1.40615 ++bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
1.40616 ++
1.40617 ++void bfd_set_error_program_name (const char *);
1.40618 ++
1.40619 ++bfd_error_handler_type bfd_get_error_handler (void);
1.40620 ++
1.40621 ++long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
1.40622 ++
1.40623 ++long bfd_canonicalize_reloc
1.40624 ++ (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
1.40625 ++
1.40626 ++void bfd_set_reloc
1.40627 ++ (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
1.40628 ++
1.40629 ++bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
1.40630 ++
1.40631 ++int bfd_get_arch_size (bfd *abfd);
1.40632 ++
1.40633 ++int bfd_get_sign_extend_vma (bfd *abfd);
1.40634 ++
1.40635 ++bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
1.40636 ++
1.40637 ++unsigned int bfd_get_gp_size (bfd *abfd);
1.40638 ++
1.40639 ++void bfd_set_gp_size (bfd *abfd, unsigned int i);
1.40640 ++
1.40641 ++bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
1.40642 ++
1.40643 ++bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
1.40644 ++
1.40645 ++#define bfd_copy_private_header_data(ibfd, obfd) \
1.40646 ++ BFD_SEND (obfd, _bfd_copy_private_header_data, \
1.40647 ++ (ibfd, obfd))
1.40648 ++bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
1.40649 ++
1.40650 ++#define bfd_copy_private_bfd_data(ibfd, obfd) \
1.40651 ++ BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
1.40652 ++ (ibfd, obfd))
1.40653 ++bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
1.40654 ++
1.40655 ++#define bfd_merge_private_bfd_data(ibfd, obfd) \
1.40656 ++ BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
1.40657 ++ (ibfd, obfd))
1.40658 ++bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
1.40659 ++
1.40660 ++#define bfd_set_private_flags(abfd, flags) \
1.40661 ++ BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
1.40662 ++#define bfd_sizeof_headers(abfd, info) \
1.40663 ++ BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
1.40664 ++
1.40665 ++#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
1.40666 ++ BFD_SEND (abfd, _bfd_find_nearest_line, \
1.40667 ++ (abfd, sec, syms, off, file, func, line))
1.40668 ++
1.40669 ++#define bfd_find_line(abfd, syms, sym, file, line) \
1.40670 ++ BFD_SEND (abfd, _bfd_find_line, \
1.40671 ++ (abfd, syms, sym, file, line))
1.40672 ++
1.40673 ++#define bfd_find_inliner_info(abfd, file, func, line) \
1.40674 ++ BFD_SEND (abfd, _bfd_find_inliner_info, \
1.40675 ++ (abfd, file, func, line))
1.40676 ++
1.40677 ++#define bfd_debug_info_start(abfd) \
1.40678 ++ BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
1.40679 ++
1.40680 ++#define bfd_debug_info_end(abfd) \
1.40681 ++ BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
1.40682 ++
1.40683 ++#define bfd_debug_info_accumulate(abfd, section) \
1.40684 ++ BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
1.40685 ++
1.40686 ++#define bfd_stat_arch_elt(abfd, stat) \
1.40687 ++ BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
1.40688 ++
1.40689 ++#define bfd_update_armap_timestamp(abfd) \
1.40690 ++ BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
1.40691 ++
1.40692 ++#define bfd_set_arch_mach(abfd, arch, mach)\
1.40693 ++ BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
1.40694 ++
1.40695 ++#define bfd_relax_section(abfd, section, link_info, again) \
1.40696 ++ BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
1.40697 ++
1.40698 ++#define bfd_gc_sections(abfd, link_info) \
1.40699 ++ BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
1.40700 ++
1.40701 ++#define bfd_merge_sections(abfd, link_info) \
1.40702 ++ BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
1.40703 ++
1.40704 ++#define bfd_is_group_section(abfd, sec) \
1.40705 ++ BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
1.40706 ++
1.40707 ++#define bfd_discard_group(abfd, sec) \
1.40708 ++ BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
1.40709 ++
1.40710 ++#define bfd_link_hash_table_create(abfd) \
1.40711 ++ BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
1.40712 ++
1.40713 ++#define bfd_link_hash_table_free(abfd, hash) \
1.40714 ++ BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
1.40715 ++
1.40716 ++#define bfd_link_add_symbols(abfd, info) \
1.40717 ++ BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
1.40718 ++
1.40719 ++#define bfd_link_just_syms(abfd, sec, info) \
1.40720 ++ BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
1.40721 ++
1.40722 ++#define bfd_final_link(abfd, info) \
1.40723 ++ BFD_SEND (abfd, _bfd_final_link, (abfd, info))
1.40724 ++
1.40725 ++#define bfd_free_cached_info(abfd) \
1.40726 ++ BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
1.40727 ++
1.40728 ++#define bfd_get_dynamic_symtab_upper_bound(abfd) \
1.40729 ++ BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
1.40730 ++
1.40731 ++#define bfd_print_private_bfd_data(abfd, file)\
1.40732 ++ BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
1.40733 ++
1.40734 ++#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
1.40735 ++ BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
1.40736 ++
1.40737 ++#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
1.40738 ++ BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
1.40739 ++ dyncount, dynsyms, ret))
1.40740 ++
1.40741 ++#define bfd_get_dynamic_reloc_upper_bound(abfd) \
1.40742 ++ BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
1.40743 ++
1.40744 ++#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
1.40745 ++ BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
1.40746 ++
1.40747 ++extern bfd_byte *bfd_get_relocated_section_contents
1.40748 ++ (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
1.40749 ++ bfd_boolean, asymbol **);
1.40750 ++
1.40751 ++bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
1.40752 ++
1.40753 ++struct bfd_preserve
1.40754 ++{
1.40755 ++ void *marker;
1.40756 ++ void *tdata;
1.40757 ++ flagword flags;
1.40758 ++ const struct bfd_arch_info *arch_info;
1.40759 ++ struct bfd_section *sections;
1.40760 ++ struct bfd_section *section_last;
1.40761 ++ unsigned int section_count;
1.40762 ++ struct bfd_hash_table section_htab;
1.40763 ++};
1.40764 ++
1.40765 ++bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
1.40766 ++
1.40767 ++void bfd_preserve_restore (bfd *, struct bfd_preserve *);
1.40768 ++
1.40769 ++void bfd_preserve_finish (bfd *, struct bfd_preserve *);
1.40770 ++
1.40771 ++bfd_vma bfd_emul_get_maxpagesize (const char *);
1.40772 ++
1.40773 ++void bfd_emul_set_maxpagesize (const char *, bfd_vma);
1.40774 ++
1.40775 ++bfd_vma bfd_emul_get_commonpagesize (const char *);
1.40776 ++
1.40777 ++void bfd_emul_set_commonpagesize (const char *, bfd_vma);
1.40778 ++
1.40779 ++char *bfd_demangle (bfd *, const char *, int);
1.40780 ++
1.40781 ++/* Extracted from archive.c. */
1.40782 ++symindex bfd_get_next_mapent
1.40783 ++ (bfd *abfd, symindex previous, carsym **sym);
1.40784 ++
1.40785 ++bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
1.40786 ++
1.40787 ++bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
1.40788 ++
1.40789 ++/* Extracted from corefile.c. */
1.40790 ++const char *bfd_core_file_failing_command (bfd *abfd);
1.40791 ++
1.40792 ++int bfd_core_file_failing_signal (bfd *abfd);
1.40793 ++
1.40794 ++bfd_boolean core_file_matches_executable_p
1.40795 ++ (bfd *core_bfd, bfd *exec_bfd);
1.40796 ++
1.40797 ++bfd_boolean generic_core_file_matches_executable_p
1.40798 ++ (bfd *core_bfd, bfd *exec_bfd);
1.40799 ++
1.40800 ++/* Extracted from targets.c. */
1.40801 ++#define BFD_SEND(bfd, message, arglist) \
1.40802 ++ ((*((bfd)->xvec->message)) arglist)
1.40803 ++
1.40804 ++#ifdef DEBUG_BFD_SEND
1.40805 ++#undef BFD_SEND
1.40806 ++#define BFD_SEND(bfd, message, arglist) \
1.40807 ++ (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
1.40808 ++ ((*((bfd)->xvec->message)) arglist) : \
1.40809 ++ (bfd_assert (__FILE__,__LINE__), NULL))
1.40810 ++#endif
1.40811 ++#define BFD_SEND_FMT(bfd, message, arglist) \
1.40812 ++ (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
1.40813 ++
1.40814 ++#ifdef DEBUG_BFD_SEND
1.40815 ++#undef BFD_SEND_FMT
1.40816 ++#define BFD_SEND_FMT(bfd, message, arglist) \
1.40817 ++ (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
1.40818 ++ (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
1.40819 ++ (bfd_assert (__FILE__,__LINE__), NULL))
1.40820 ++#endif
1.40821 ++
1.40822 ++enum bfd_flavour
1.40823 ++{
1.40824 ++ bfd_target_unknown_flavour,
1.40825 ++ bfd_target_aout_flavour,
1.40826 ++ bfd_target_coff_flavour,
1.40827 ++ bfd_target_ecoff_flavour,
1.40828 ++ bfd_target_xcoff_flavour,
1.40829 ++ bfd_target_elf_flavour,
1.40830 ++ bfd_target_ieee_flavour,
1.40831 ++ bfd_target_nlm_flavour,
1.40832 ++ bfd_target_oasys_flavour,
1.40833 ++ bfd_target_tekhex_flavour,
1.40834 ++ bfd_target_srec_flavour,
1.40835 ++ bfd_target_ihex_flavour,
1.40836 ++ bfd_target_som_flavour,
1.40837 ++ bfd_target_os9k_flavour,
1.40838 ++ bfd_target_versados_flavour,
1.40839 ++ bfd_target_msdos_flavour,
1.40840 ++ bfd_target_ovax_flavour,
1.40841 ++ bfd_target_evax_flavour,
1.40842 ++ bfd_target_mmo_flavour,
1.40843 ++ bfd_target_mach_o_flavour,
1.40844 ++ bfd_target_pef_flavour,
1.40845 ++ bfd_target_pef_xlib_flavour,
1.40846 ++ bfd_target_sym_flavour
1.40847 ++};
1.40848 ++
1.40849 ++enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
1.40850 ++
1.40851 ++/* Forward declaration. */
1.40852 ++typedef struct bfd_link_info _bfd_link_info;
1.40853 ++
1.40854 ++typedef struct bfd_target
1.40855 ++{
1.40856 ++ /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
1.40857 ++ char *name;
1.40858 ++
1.40859 ++ /* The "flavour" of a back end is a general indication about
1.40860 ++ the contents of a file. */
1.40861 ++ enum bfd_flavour flavour;
1.40862 ++
1.40863 ++ /* The order of bytes within the data area of a file. */
1.40864 ++ enum bfd_endian byteorder;
1.40865 ++
1.40866 ++ /* The order of bytes within the header parts of a file. */
1.40867 ++ enum bfd_endian header_byteorder;
1.40868 ++
1.40869 ++ /* A mask of all the flags which an executable may have set -
1.40870 ++ from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>. */
1.40871 ++ flagword object_flags;
1.40872 ++
1.40873 ++ /* A mask of all the flags which a section may have set - from
1.40874 ++ the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>. */
1.40875 ++ flagword section_flags;
1.40876 ++
1.40877 ++ /* The character normally found at the front of a symbol.
1.40878 ++ (if any), perhaps `_'. */
1.40879 ++ char symbol_leading_char;
1.40880 ++
1.40881 ++ /* The pad character for file names within an archive header. */
1.40882 ++ char ar_pad_char;
1.40883 ++
1.40884 ++ /* The maximum number of characters in an archive header. */
1.40885 ++ unsigned short ar_max_namelen;
1.40886 ++
1.40887 ++ /* Entries for byte swapping for data. These are different from the
1.40888 ++ other entry points, since they don't take a BFD as the first argument.
1.40889 ++ Certain other handlers could do the same. */
1.40890 ++ bfd_uint64_t (*bfd_getx64) (const void *);
1.40891 ++ bfd_int64_t (*bfd_getx_signed_64) (const void *);
1.40892 ++ void (*bfd_putx64) (bfd_uint64_t, void *);
1.40893 ++ bfd_vma (*bfd_getx32) (const void *);
1.40894 ++ bfd_signed_vma (*bfd_getx_signed_32) (const void *);
1.40895 ++ void (*bfd_putx32) (bfd_vma, void *);
1.40896 ++ bfd_vma (*bfd_getx16) (const void *);
1.40897 ++ bfd_signed_vma (*bfd_getx_signed_16) (const void *);
1.40898 ++ void (*bfd_putx16) (bfd_vma, void *);
1.40899 ++
1.40900 ++ /* Byte swapping for the headers. */
1.40901 ++ bfd_uint64_t (*bfd_h_getx64) (const void *);
1.40902 ++ bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
1.40903 ++ void (*bfd_h_putx64) (bfd_uint64_t, void *);
1.40904 ++ bfd_vma (*bfd_h_getx32) (const void *);
1.40905 ++ bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
1.40906 ++ void (*bfd_h_putx32) (bfd_vma, void *);
1.40907 ++ bfd_vma (*bfd_h_getx16) (const void *);
1.40908 ++ bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
1.40909 ++ void (*bfd_h_putx16) (bfd_vma, void *);
1.40910 ++
1.40911 ++ /* Format dependent routines: these are vectors of entry points
1.40912 ++ within the target vector structure, one for each format to check. */
1.40913 ++
1.40914 ++ /* Check the format of a file being read. Return a <<bfd_target *>> or zero. */
1.40915 ++ const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
1.40916 ++
1.40917 ++ /* Set the format of a file being written. */
1.40918 ++ bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
1.40919 ++
1.40920 ++ /* Write cached information into a file being written, at <<bfd_close>>. */
1.40921 ++ bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
1.40922 ++
1.40923 ++
1.40924 ++ /* Generic entry points. */
1.40925 ++#define BFD_JUMP_TABLE_GENERIC(NAME) \
1.40926 ++ NAME##_close_and_cleanup, \
1.40927 ++ NAME##_bfd_free_cached_info, \
1.40928 ++ NAME##_new_section_hook, \
1.40929 ++ NAME##_get_section_contents, \
1.40930 ++ NAME##_get_section_contents_in_window
1.40931 ++
1.40932 ++ /* Called when the BFD is being closed to do any necessary cleanup. */
1.40933 ++ bfd_boolean (*_close_and_cleanup) (bfd *);
1.40934 ++ /* Ask the BFD to free all cached information. */
1.40935 ++ bfd_boolean (*_bfd_free_cached_info) (bfd *);
1.40936 ++ /* Called when a new section is created. */
1.40937 ++ bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
1.40938 ++ /* Read the contents of a section. */
1.40939 ++ bfd_boolean (*_bfd_get_section_contents)
1.40940 ++ (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
1.40941 ++ bfd_boolean (*_bfd_get_section_contents_in_window)
1.40942 ++ (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
1.40943 ++
1.40944 ++ /* Entry points to copy private data. */
1.40945 ++#define BFD_JUMP_TABLE_COPY(NAME) \
1.40946 ++ NAME##_bfd_copy_private_bfd_data, \
1.40947 ++ NAME##_bfd_merge_private_bfd_data, \
1.40948 ++ _bfd_generic_init_private_section_data, \
1.40949 ++ NAME##_bfd_copy_private_section_data, \
1.40950 ++ NAME##_bfd_copy_private_symbol_data, \
1.40951 ++ NAME##_bfd_copy_private_header_data, \
1.40952 ++ NAME##_bfd_set_private_flags, \
1.40953 ++ NAME##_bfd_print_private_bfd_data
1.40954 ++
1.40955 ++ /* Called to copy BFD general private data from one object file
1.40956 ++ to another. */
1.40957 ++ bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
1.40958 ++ /* Called to merge BFD general private data from one object file
1.40959 ++ to a common output file when linking. */
1.40960 ++ bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
1.40961 ++ /* Called to initialize BFD private section data from one object file
1.40962 ++ to another. */
1.40963 ++#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
1.40964 ++ BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
1.40965 ++ bfd_boolean (*_bfd_init_private_section_data)
1.40966 ++ (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
1.40967 ++ /* Called to copy BFD private section data from one object file
1.40968 ++ to another. */
1.40969 ++ bfd_boolean (*_bfd_copy_private_section_data)
1.40970 ++ (bfd *, sec_ptr, bfd *, sec_ptr);
1.40971 ++ /* Called to copy BFD private symbol data from one symbol
1.40972 ++ to another. */
1.40973 ++ bfd_boolean (*_bfd_copy_private_symbol_data)
1.40974 ++ (bfd *, asymbol *, bfd *, asymbol *);
1.40975 ++ /* Called to copy BFD private header data from one object file
1.40976 ++ to another. */
1.40977 ++ bfd_boolean (*_bfd_copy_private_header_data)
1.40978 ++ (bfd *, bfd *);
1.40979 ++ /* Called to set private backend flags. */
1.40980 ++ bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
1.40981 ++
1.40982 ++ /* Called to print private BFD data. */
1.40983 ++ bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
1.40984 ++
1.40985 ++ /* Core file entry points. */
1.40986 ++#define BFD_JUMP_TABLE_CORE(NAME) \
1.40987 ++ NAME##_core_file_failing_command, \
1.40988 ++ NAME##_core_file_failing_signal, \
1.40989 ++ NAME##_core_file_matches_executable_p
1.40990 ++
1.40991 ++ char * (*_core_file_failing_command) (bfd *);
1.40992 ++ int (*_core_file_failing_signal) (bfd *);
1.40993 ++ bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
1.40994 ++
1.40995 ++ /* Archive entry points. */
1.40996 ++#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
1.40997 ++ NAME##_slurp_armap, \
1.40998 ++ NAME##_slurp_extended_name_table, \
1.40999 ++ NAME##_construct_extended_name_table, \
1.41000 ++ NAME##_truncate_arname, \
1.41001 ++ NAME##_write_armap, \
1.41002 ++ NAME##_read_ar_hdr, \
1.41003 ++ NAME##_openr_next_archived_file, \
1.41004 ++ NAME##_get_elt_at_index, \
1.41005 ++ NAME##_generic_stat_arch_elt, \
1.41006 ++ NAME##_update_armap_timestamp
1.41007 ++
1.41008 ++ bfd_boolean (*_bfd_slurp_armap) (bfd *);
1.41009 ++ bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
1.41010 ++ bfd_boolean (*_bfd_construct_extended_name_table)
1.41011 ++ (bfd *, char **, bfd_size_type *, const char **);
1.41012 ++ void (*_bfd_truncate_arname) (bfd *, const char *, char *);
1.41013 ++ bfd_boolean (*write_armap)
1.41014 ++ (bfd *, unsigned int, struct orl *, unsigned int, int);
1.41015 ++ void * (*_bfd_read_ar_hdr_fn) (bfd *);
1.41016 ++ bfd * (*openr_next_archived_file) (bfd *, bfd *);
1.41017 ++#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
1.41018 ++ bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
1.41019 ++ int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
1.41020 ++ bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
1.41021 ++
1.41022 ++ /* Entry points used for symbols. */
1.41023 ++#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
1.41024 ++ NAME##_get_symtab_upper_bound, \
1.41025 ++ NAME##_canonicalize_symtab, \
1.41026 ++ NAME##_make_empty_symbol, \
1.41027 ++ NAME##_print_symbol, \
1.41028 ++ NAME##_get_symbol_info, \
1.41029 ++ NAME##_bfd_is_local_label_name, \
1.41030 ++ NAME##_bfd_is_target_special_symbol, \
1.41031 ++ NAME##_get_lineno, \
1.41032 ++ NAME##_find_nearest_line, \
1.41033 ++ _bfd_generic_find_line, \
1.41034 ++ NAME##_find_inliner_info, \
1.41035 ++ NAME##_bfd_make_debug_symbol, \
1.41036 ++ NAME##_read_minisymbols, \
1.41037 ++ NAME##_minisymbol_to_symbol
1.41038 ++
1.41039 ++ long (*_bfd_get_symtab_upper_bound) (bfd *);
1.41040 ++ long (*_bfd_canonicalize_symtab)
1.41041 ++ (bfd *, struct bfd_symbol **);
1.41042 ++ struct bfd_symbol *
1.41043 ++ (*_bfd_make_empty_symbol) (bfd *);
1.41044 ++ void (*_bfd_print_symbol)
1.41045 ++ (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
1.41046 ++#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
1.41047 ++ void (*_bfd_get_symbol_info)
1.41048 ++ (bfd *, struct bfd_symbol *, symbol_info *);
1.41049 ++#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
1.41050 ++ bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
1.41051 ++ bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
1.41052 ++ alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
1.41053 ++ bfd_boolean (*_bfd_find_nearest_line)
1.41054 ++ (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
1.41055 ++ const char **, const char **, unsigned int *);
1.41056 ++ bfd_boolean (*_bfd_find_line)
1.41057 ++ (bfd *, struct bfd_symbol **, struct bfd_symbol *,
1.41058 ++ const char **, unsigned int *);
1.41059 ++ bfd_boolean (*_bfd_find_inliner_info)
1.41060 ++ (bfd *, const char **, const char **, unsigned int *);
1.41061 ++ /* Back-door to allow format-aware applications to create debug symbols
1.41062 ++ while using BFD for everything else. Currently used by the assembler
1.41063 ++ when creating COFF files. */
1.41064 ++ asymbol * (*_bfd_make_debug_symbol)
1.41065 ++ (bfd *, void *, unsigned long size);
1.41066 ++#define bfd_read_minisymbols(b, d, m, s) \
1.41067 ++ BFD_SEND (b, _read_minisymbols, (b, d, m, s))
1.41068 ++ long (*_read_minisymbols)
1.41069 ++ (bfd *, bfd_boolean, void **, unsigned int *);
1.41070 ++#define bfd_minisymbol_to_symbol(b, d, m, f) \
1.41071 ++ BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
1.41072 ++ asymbol * (*_minisymbol_to_symbol)
1.41073 ++ (bfd *, bfd_boolean, const void *, asymbol *);
1.41074 ++
1.41075 ++ /* Routines for relocs. */
1.41076 ++#define BFD_JUMP_TABLE_RELOCS(NAME) \
1.41077 ++ NAME##_get_reloc_upper_bound, \
1.41078 ++ NAME##_canonicalize_reloc, \
1.41079 ++ NAME##_bfd_reloc_type_lookup, \
1.41080 ++ NAME##_bfd_reloc_name_lookup
1.41081 ++
1.41082 ++ long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
1.41083 ++ long (*_bfd_canonicalize_reloc)
1.41084 ++ (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
1.41085 ++ /* See documentation on reloc types. */
1.41086 ++ reloc_howto_type *
1.41087 ++ (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
1.41088 ++ reloc_howto_type *
1.41089 ++ (*reloc_name_lookup) (bfd *, const char *);
1.41090 ++
1.41091 ++
1.41092 ++ /* Routines used when writing an object file. */
1.41093 ++#define BFD_JUMP_TABLE_WRITE(NAME) \
1.41094 ++ NAME##_set_arch_mach, \
1.41095 ++ NAME##_set_section_contents
1.41096 ++
1.41097 ++ bfd_boolean (*_bfd_set_arch_mach)
1.41098 ++ (bfd *, enum bfd_architecture, unsigned long);
1.41099 ++ bfd_boolean (*_bfd_set_section_contents)
1.41100 ++ (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
1.41101 ++
1.41102 ++ /* Routines used by the linker. */
1.41103 ++#define BFD_JUMP_TABLE_LINK(NAME) \
1.41104 ++ NAME##_sizeof_headers, \
1.41105 ++ NAME##_bfd_get_relocated_section_contents, \
1.41106 ++ NAME##_bfd_relax_section, \
1.41107 ++ NAME##_bfd_link_hash_table_create, \
1.41108 ++ NAME##_bfd_link_hash_table_free, \
1.41109 ++ NAME##_bfd_link_add_symbols, \
1.41110 ++ NAME##_bfd_link_just_syms, \
1.41111 ++ NAME##_bfd_final_link, \
1.41112 ++ NAME##_bfd_link_split_section, \
1.41113 ++ NAME##_bfd_gc_sections, \
1.41114 ++ NAME##_bfd_merge_sections, \
1.41115 ++ NAME##_bfd_is_group_section, \
1.41116 ++ NAME##_bfd_discard_group, \
1.41117 ++ NAME##_section_already_linked \
1.41118 ++
1.41119 ++ int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
1.41120 ++ bfd_byte * (*_bfd_get_relocated_section_contents)
1.41121 ++ (bfd *, struct bfd_link_info *, struct bfd_link_order *,
1.41122 ++ bfd_byte *, bfd_boolean, struct bfd_symbol **);
1.41123 ++
1.41124 ++ bfd_boolean (*_bfd_relax_section)
1.41125 ++ (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
1.41126 ++
1.41127 ++ /* Create a hash table for the linker. Different backends store
1.41128 ++ different information in this table. */
1.41129 ++ struct bfd_link_hash_table *
1.41130 ++ (*_bfd_link_hash_table_create) (bfd *);
1.41131 ++
1.41132 ++ /* Release the memory associated with the linker hash table. */
1.41133 ++ void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
1.41134 ++
1.41135 ++ /* Add symbols from this object file into the hash table. */
1.41136 ++ bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
1.41137 ++
1.41138 ++ /* Indicate that we are only retrieving symbol values from this section. */
1.41139 ++ void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
1.41140 ++
1.41141 ++ /* Do a link based on the link_order structures attached to each
1.41142 ++ section of the BFD. */
1.41143 ++ bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
1.41144 ++
1.41145 ++ /* Should this section be split up into smaller pieces during linking. */
1.41146 ++ bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
1.41147 ++
1.41148 ++ /* Remove sections that are not referenced from the output. */
1.41149 ++ bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
1.41150 ++
1.41151 ++ /* Attempt to merge SEC_MERGE sections. */
1.41152 ++ bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
1.41153 ++
1.41154 ++ /* Is this section a member of a group? */
1.41155 ++ bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
1.41156 ++
1.41157 ++ /* Discard members of a group. */
1.41158 ++ bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
1.41159 ++
1.41160 ++ /* Check if SEC has been already linked during a reloceatable or
1.41161 ++ final link. */
1.41162 ++ void (*_section_already_linked) (bfd *, struct bfd_section *,
1.41163 ++ struct bfd_link_info *);
1.41164 ++
1.41165 ++ /* Routines to handle dynamic symbols and relocs. */
1.41166 ++#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
1.41167 ++ NAME##_get_dynamic_symtab_upper_bound, \
1.41168 ++ NAME##_canonicalize_dynamic_symtab, \
1.41169 ++ NAME##_get_synthetic_symtab, \
1.41170 ++ NAME##_get_dynamic_reloc_upper_bound, \
1.41171 ++ NAME##_canonicalize_dynamic_reloc
1.41172 ++
1.41173 ++ /* Get the amount of memory required to hold the dynamic symbols. */
1.41174 ++ long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
1.41175 ++ /* Read in the dynamic symbols. */
1.41176 ++ long (*_bfd_canonicalize_dynamic_symtab)
1.41177 ++ (bfd *, struct bfd_symbol **);
1.41178 ++ /* Create synthetized symbols. */
1.41179 ++ long (*_bfd_get_synthetic_symtab)
1.41180 ++ (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
1.41181 ++ struct bfd_symbol **);
1.41182 ++ /* Get the amount of memory required to hold the dynamic relocs. */
1.41183 ++ long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
1.41184 ++ /* Read in the dynamic relocs. */
1.41185 ++ long (*_bfd_canonicalize_dynamic_reloc)
1.41186 ++ (bfd *, arelent **, struct bfd_symbol **);
1.41187 ++
1.41188 ++ /* Opposite endian version of this target. */
1.41189 ++ const struct bfd_target * alternative_target;
1.41190 ++
1.41191 ++ /* Data for use by back-end routines, which isn't
1.41192 ++ generic enough to belong in this structure. */
1.41193 ++ const void *backend_data;
1.41194 ++
1.41195 ++} bfd_target;
1.41196 ++
1.41197 ++bfd_boolean bfd_set_default_target (const char *name);
1.41198 ++
1.41199 ++const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
1.41200 ++
1.41201 ++const char ** bfd_target_list (void);
1.41202 ++
1.41203 ++const bfd_target *bfd_search_for_target
1.41204 ++ (int (*search_func) (const bfd_target *, void *),
1.41205 ++ void *);
1.41206 ++
1.41207 ++/* Extracted from format.c. */
1.41208 ++bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
1.41209 ++
1.41210 ++bfd_boolean bfd_check_format_matches
1.41211 ++ (bfd *abfd, bfd_format format, char ***matching);
1.41212 ++
1.41213 ++bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
1.41214 ++
1.41215 ++const char *bfd_format_string (bfd_format format);
1.41216 ++
1.41217 ++/* Extracted from linker.c. */
1.41218 ++bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
1.41219 ++
1.41220 ++#define bfd_link_split_section(abfd, sec) \
1.41221 ++ BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
1.41222 ++
1.41223 ++void bfd_section_already_linked (bfd *abfd, asection *sec,
1.41224 ++ struct bfd_link_info *info);
1.41225 ++
1.41226 ++#define bfd_section_already_linked(abfd, sec, info) \
1.41227 ++ BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
1.41228 ++
1.41229 ++/* Extracted from simple.c. */
1.41230 ++bfd_byte *bfd_simple_get_relocated_section_contents
1.41231 ++ (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
1.41232 ++
1.41233 ++#ifdef __cplusplus
1.41234 ++}
1.41235 ++#endif
1.41236 ++#endif
1.41237 +--- /dev/null
1.41238 ++++ b/bfd/doc/libbfd.h
1.41239 +@@ -0,0 +1,2074 @@
1.41240 ++/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
1.41241 ++ generated from "libbfd-in.h", "init.c", "libbfd.c", "bfdio.c",
1.41242 ++ "bfdwin.c", "cache.c", "reloc.c", "archures.c" and "elf.c".
1.41243 ++ Run "make headers" in your build bfd/ to regenerate. */
1.41244 ++
1.41245 ++/* libbfd.h -- Declarations used by bfd library *implementation*.
1.41246 ++ (This include file is not for users of the library.)
1.41247 ++
1.41248 ++ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1.41249 ++ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
1.41250 ++ Free Software Foundation, Inc.
1.41251 ++
1.41252 ++ Written by Cygnus Support.
1.41253 ++
1.41254 ++ This file is part of BFD, the Binary File Descriptor library.
1.41255 ++
1.41256 ++ This program is free software; you can redistribute it and/or modify
1.41257 ++ it under the terms of the GNU General Public License as published by
1.41258 ++ the Free Software Foundation; either version 3 of the License, or
1.41259 ++ (at your option) any later version.
1.41260 ++
1.41261 ++ This program is distributed in the hope that it will be useful,
1.41262 ++ but WITHOUT ANY WARRANTY; without even the implied warranty of
1.41263 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.41264 ++ GNU General Public License for more details.
1.41265 ++
1.41266 ++ You should have received a copy of the GNU General Public License
1.41267 ++ along with this program; if not, write to the Free Software
1.41268 ++ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
1.41269 ++ MA 02110-1301, USA. */
1.41270 ++
1.41271 ++#include "hashtab.h"
1.41272 ++
1.41273 ++/* Align an address upward to a boundary, expressed as a number of bytes.
1.41274 ++ E.g. align to an 8-byte boundary with argument of 8. Take care never
1.41275 ++ to wrap around if the address is within boundary-1 of the end of the
1.41276 ++ address space. */
1.41277 ++#define BFD_ALIGN(this, boundary) \
1.41278 ++ ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this)) \
1.41279 ++ ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
1.41280 ++ : ~ (bfd_vma) 0)
1.41281 ++
1.41282 ++/* If you want to read and write large blocks, you might want to do it
1.41283 ++ in quanta of this amount */
1.41284 ++#define DEFAULT_BUFFERSIZE 8192
1.41285 ++
1.41286 ++/* Set a tdata field. Can't use the other macros for this, since they
1.41287 ++ do casts, and casting to the left of assignment isn't portable. */
1.41288 ++#define set_tdata(bfd, v) ((bfd)->tdata.any = (v))
1.41289 ++
1.41290 ++/* If BFD_IN_MEMORY is set for a BFD, then the iostream fields points
1.41291 ++ to an instance of this structure. */
1.41292 ++
1.41293 ++struct bfd_in_memory
1.41294 ++{
1.41295 ++ /* Size of buffer. */
1.41296 ++ bfd_size_type size;
1.41297 ++ /* Buffer holding contents of BFD. */
1.41298 ++ bfd_byte *buffer;
1.41299 ++};
1.41300 ++
1.41301 ++struct section_hash_entry
1.41302 ++{
1.41303 ++ struct bfd_hash_entry root;
1.41304 ++ asection section;
1.41305 ++};
1.41306 ++
1.41307 ++/* tdata for an archive. For an input archive, cache
1.41308 ++ needs to be free()'d. For an output archive, symdefs do. */
1.41309 ++
1.41310 ++struct artdata {
1.41311 ++ file_ptr first_file_filepos;
1.41312 ++ /* Speed up searching the armap */
1.41313 ++ htab_t cache;
1.41314 ++ bfd *archive_head; /* Only interesting in output routines */
1.41315 ++ carsym *symdefs; /* the symdef entries */
1.41316 ++ symindex symdef_count; /* how many there are */
1.41317 ++ char *extended_names; /* clever intel extension */
1.41318 ++ bfd_size_type extended_names_size; /* Size of extended names */
1.41319 ++ /* when more compilers are standard C, this can be a time_t */
1.41320 ++ long armap_timestamp; /* Timestamp value written into armap.
1.41321 ++ This is used for BSD archives to check
1.41322 ++ that the timestamp is recent enough
1.41323 ++ for the BSD linker to not complain,
1.41324 ++ just before we finish writing an
1.41325 ++ archive. */
1.41326 ++ file_ptr armap_datepos; /* Position within archive to seek to
1.41327 ++ rewrite the date field. */
1.41328 ++ void *tdata; /* Backend specific information. */
1.41329 ++};
1.41330 ++
1.41331 ++#define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
1.41332 ++
1.41333 ++/* Goes in bfd's arelt_data slot */
1.41334 ++struct areltdata {
1.41335 ++ char * arch_header; /* it's actually a string */
1.41336 ++ unsigned int parsed_size; /* octets of filesize not including ar_hdr */
1.41337 ++ char *filename; /* null-terminated */
1.41338 ++};
1.41339 ++
1.41340 ++#define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
1.41341 ++
1.41342 ++extern void *bfd_malloc
1.41343 ++ (bfd_size_type);
1.41344 ++extern void *bfd_realloc
1.41345 ++ (void *, bfd_size_type);
1.41346 ++extern void *bfd_zmalloc
1.41347 ++ (bfd_size_type);
1.41348 ++extern void *bfd_malloc2
1.41349 ++ (bfd_size_type, bfd_size_type);
1.41350 ++extern void *bfd_realloc2
1.41351 ++ (void *, bfd_size_type, bfd_size_type);
1.41352 ++extern void *bfd_zmalloc2
1.41353 ++ (bfd_size_type, bfd_size_type);
1.41354 ++
1.41355 ++extern void _bfd_default_error_handler (const char *s, ...);
1.41356 ++extern bfd_error_handler_type _bfd_error_handler;
1.41357 ++
1.41358 ++/* These routines allocate and free things on the BFD's objalloc. */
1.41359 ++
1.41360 ++extern void *bfd_alloc
1.41361 ++ (bfd *, bfd_size_type);
1.41362 ++extern void *bfd_zalloc
1.41363 ++ (bfd *, bfd_size_type);
1.41364 ++extern void *bfd_alloc2
1.41365 ++ (bfd *, bfd_size_type, bfd_size_type);
1.41366 ++extern void *bfd_zalloc2
1.41367 ++ (bfd *, bfd_size_type, bfd_size_type);
1.41368 ++extern void bfd_release
1.41369 ++ (bfd *, void *);
1.41370 ++
1.41371 ++bfd * _bfd_create_empty_archive_element_shell
1.41372 ++ (bfd *obfd);
1.41373 ++bfd * _bfd_look_for_bfd_in_cache
1.41374 ++ (bfd *, file_ptr);
1.41375 ++bfd_boolean _bfd_add_bfd_to_archive_cache
1.41376 ++ (bfd *, file_ptr, bfd *);
1.41377 ++bfd_boolean _bfd_generic_mkarchive
1.41378 ++ (bfd *abfd);
1.41379 ++const bfd_target *bfd_generic_archive_p
1.41380 ++ (bfd *abfd);
1.41381 ++bfd_boolean bfd_slurp_armap
1.41382 ++ (bfd *abfd);
1.41383 ++bfd_boolean bfd_slurp_bsd_armap_f2
1.41384 ++ (bfd *abfd);
1.41385 ++#define bfd_slurp_bsd_armap bfd_slurp_armap
1.41386 ++#define bfd_slurp_coff_armap bfd_slurp_armap
1.41387 ++bfd_boolean _bfd_slurp_extended_name_table
1.41388 ++ (bfd *abfd);
1.41389 ++extern bfd_boolean _bfd_construct_extended_name_table
1.41390 ++ (bfd *, bfd_boolean, char **, bfd_size_type *);
1.41391 ++bfd_boolean _bfd_write_archive_contents
1.41392 ++ (bfd *abfd);
1.41393 ++bfd_boolean _bfd_compute_and_write_armap
1.41394 ++ (bfd *, unsigned int elength);
1.41395 ++bfd *_bfd_get_elt_at_filepos
1.41396 ++ (bfd *archive, file_ptr filepos);
1.41397 ++extern bfd *_bfd_generic_get_elt_at_index
1.41398 ++ (bfd *, symindex);
1.41399 ++bfd * _bfd_new_bfd
1.41400 ++ (void);
1.41401 ++void _bfd_delete_bfd
1.41402 ++ (bfd *);
1.41403 ++bfd_boolean _bfd_free_cached_info
1.41404 ++ (bfd *);
1.41405 ++
1.41406 ++bfd_boolean bfd_false
1.41407 ++ (bfd *ignore);
1.41408 ++bfd_boolean bfd_true
1.41409 ++ (bfd *ignore);
1.41410 ++void *bfd_nullvoidptr
1.41411 ++ (bfd *ignore);
1.41412 ++int bfd_0
1.41413 ++ (bfd *ignore);
1.41414 ++unsigned int bfd_0u
1.41415 ++ (bfd *ignore);
1.41416 ++long bfd_0l
1.41417 ++ (bfd *ignore);
1.41418 ++long _bfd_n1
1.41419 ++ (bfd *ignore);
1.41420 ++void bfd_void
1.41421 ++ (bfd *ignore);
1.41422 ++
1.41423 ++bfd *_bfd_new_bfd_contained_in
1.41424 ++ (bfd *);
1.41425 ++const bfd_target *_bfd_dummy_target
1.41426 ++ (bfd *abfd);
1.41427 ++
1.41428 ++void bfd_dont_truncate_arname
1.41429 ++ (bfd *abfd, const char *filename, char *hdr);
1.41430 ++void bfd_bsd_truncate_arname
1.41431 ++ (bfd *abfd, const char *filename, char *hdr);
1.41432 ++void bfd_gnu_truncate_arname
1.41433 ++ (bfd *abfd, const char *filename, char *hdr);
1.41434 ++
1.41435 ++bfd_boolean bsd_write_armap
1.41436 ++ (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
1.41437 ++ int stridx);
1.41438 ++
1.41439 ++bfd_boolean coff_write_armap
1.41440 ++ (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
1.41441 ++ int stridx);
1.41442 ++
1.41443 ++extern void *_bfd_generic_read_ar_hdr
1.41444 ++ (bfd *);
1.41445 ++extern void _bfd_ar_spacepad
1.41446 ++ (char *, size_t, const char *, long);
1.41447 ++
1.41448 ++extern void *_bfd_generic_read_ar_hdr_mag
1.41449 ++ (bfd *, const char *);
1.41450 ++
1.41451 ++bfd * bfd_generic_openr_next_archived_file
1.41452 ++ (bfd *archive, bfd *last_file);
1.41453 ++
1.41454 ++int bfd_generic_stat_arch_elt
1.41455 ++ (bfd *, struct stat *);
1.41456 ++
1.41457 ++#define _bfd_read_ar_hdr(abfd) \
1.41458 ++ BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
1.41459 ++
1.41460 ++/* Generic routines to use for BFD_JUMP_TABLE_GENERIC. Use
1.41461 ++ BFD_JUMP_TABLE_GENERIC (_bfd_generic). */
1.41462 ++
1.41463 ++#define _bfd_generic_close_and_cleanup bfd_true
1.41464 ++#define _bfd_generic_bfd_free_cached_info bfd_true
1.41465 ++extern bfd_boolean _bfd_generic_new_section_hook
1.41466 ++ (bfd *, asection *);
1.41467 ++extern bfd_boolean _bfd_generic_get_section_contents
1.41468 ++ (bfd *, asection *, void *, file_ptr, bfd_size_type);
1.41469 ++extern bfd_boolean _bfd_generic_get_section_contents_in_window
1.41470 ++ (bfd *, asection *, bfd_window *, file_ptr, bfd_size_type);
1.41471 ++
1.41472 ++/* Generic routines to use for BFD_JUMP_TABLE_COPY. Use
1.41473 ++ BFD_JUMP_TABLE_COPY (_bfd_generic). */
1.41474 ++
1.41475 ++#define _bfd_generic_bfd_copy_private_bfd_data \
1.41476 ++ ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
1.41477 ++#define _bfd_generic_bfd_merge_private_bfd_data \
1.41478 ++ ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
1.41479 ++#define _bfd_generic_bfd_set_private_flags \
1.41480 ++ ((bfd_boolean (*) (bfd *, flagword)) bfd_true)
1.41481 ++#define _bfd_generic_bfd_copy_private_section_data \
1.41482 ++ ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true)
1.41483 ++#define _bfd_generic_bfd_copy_private_symbol_data \
1.41484 ++ ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true)
1.41485 ++#define _bfd_generic_bfd_copy_private_header_data \
1.41486 ++ ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
1.41487 ++#define _bfd_generic_bfd_print_private_bfd_data \
1.41488 ++ ((bfd_boolean (*) (bfd *, void *)) bfd_true)
1.41489 ++
1.41490 ++extern bfd_boolean _bfd_generic_init_private_section_data
1.41491 ++ (bfd *, asection *, bfd *, asection *, struct bfd_link_info *);
1.41492 ++
1.41493 ++/* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
1.41494 ++ support. Use BFD_JUMP_TABLE_CORE (_bfd_nocore). */
1.41495 ++
1.41496 ++extern char *_bfd_nocore_core_file_failing_command
1.41497 ++ (bfd *);
1.41498 ++extern int _bfd_nocore_core_file_failing_signal
1.41499 ++ (bfd *);
1.41500 ++extern bfd_boolean _bfd_nocore_core_file_matches_executable_p
1.41501 ++ (bfd *, bfd *);
1.41502 ++
1.41503 ++/* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive
1.41504 ++ file support. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive). */
1.41505 ++
1.41506 ++#define _bfd_noarchive_slurp_armap bfd_false
1.41507 ++#define _bfd_noarchive_slurp_extended_name_table bfd_false
1.41508 ++#define _bfd_noarchive_construct_extended_name_table \
1.41509 ++ ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) \
1.41510 ++ bfd_false)
1.41511 ++#define _bfd_noarchive_truncate_arname \
1.41512 ++ ((void (*) (bfd *, const char *, char *)) bfd_void)
1.41513 ++#define _bfd_noarchive_write_armap \
1.41514 ++ ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \
1.41515 ++ bfd_false)
1.41516 ++#define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr
1.41517 ++#define _bfd_noarchive_openr_next_archived_file \
1.41518 ++ ((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr)
1.41519 ++#define _bfd_noarchive_get_elt_at_index \
1.41520 ++ ((bfd *(*) (bfd *, symindex)) bfd_nullvoidptr)
1.41521 ++#define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
1.41522 ++#define _bfd_noarchive_update_armap_timestamp bfd_false
1.41523 ++
1.41524 ++/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
1.41525 ++ archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd). */
1.41526 ++
1.41527 ++#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
1.41528 ++#define _bfd_archive_bsd_slurp_extended_name_table \
1.41529 ++ _bfd_slurp_extended_name_table
1.41530 ++extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
1.41531 ++ (bfd *, char **, bfd_size_type *, const char **);
1.41532 ++#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
1.41533 ++#define _bfd_archive_bsd_write_armap bsd_write_armap
1.41534 ++#define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
1.41535 ++#define _bfd_archive_bsd_openr_next_archived_file \
1.41536 ++ bfd_generic_openr_next_archived_file
1.41537 ++#define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
1.41538 ++#define _bfd_archive_bsd_generic_stat_arch_elt \
1.41539 ++ bfd_generic_stat_arch_elt
1.41540 ++extern bfd_boolean _bfd_archive_bsd_update_armap_timestamp
1.41541 ++ (bfd *);
1.41542 ++
1.41543 ++/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
1.41544 ++ archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff). */
1.41545 ++
1.41546 ++#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
1.41547 ++#define _bfd_archive_coff_slurp_extended_name_table \
1.41548 ++ _bfd_slurp_extended_name_table
1.41549 ++extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
1.41550 ++ (bfd *, char **, bfd_size_type *, const char **);
1.41551 ++#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
1.41552 ++#define _bfd_archive_coff_write_armap coff_write_armap
1.41553 ++#define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
1.41554 ++#define _bfd_archive_coff_openr_next_archived_file \
1.41555 ++ bfd_generic_openr_next_archived_file
1.41556 ++#define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index
1.41557 ++#define _bfd_archive_coff_generic_stat_arch_elt \
1.41558 ++ bfd_generic_stat_arch_elt
1.41559 ++#define _bfd_archive_coff_update_armap_timestamp bfd_true
1.41560 ++
1.41561 ++/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
1.41562 ++ support. Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). */
1.41563 ++
1.41564 ++#define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1
1.41565 ++#define _bfd_nosymbols_canonicalize_symtab \
1.41566 ++ ((long (*) (bfd *, asymbol **)) _bfd_n1)
1.41567 ++#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
1.41568 ++#define _bfd_nosymbols_print_symbol \
1.41569 ++ ((void (*) (bfd *, void *, asymbol *, bfd_print_symbol_type)) bfd_void)
1.41570 ++#define _bfd_nosymbols_get_symbol_info \
1.41571 ++ ((void (*) (bfd *, asymbol *, symbol_info *)) bfd_void)
1.41572 ++#define _bfd_nosymbols_bfd_is_local_label_name \
1.41573 ++ ((bfd_boolean (*) (bfd *, const char *)) bfd_false)
1.41574 ++#define _bfd_nosymbols_bfd_is_target_special_symbol \
1.41575 ++ ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
1.41576 ++#define _bfd_nosymbols_get_lineno \
1.41577 ++ ((alent *(*) (bfd *, asymbol *)) bfd_nullvoidptr)
1.41578 ++#define _bfd_nosymbols_find_nearest_line \
1.41579 ++ ((bfd_boolean (*) (bfd *, asection *, asymbol **, bfd_vma, const char **, \
1.41580 ++ const char **, unsigned int *)) \
1.41581 ++ bfd_false)
1.41582 ++#define _bfd_nosymbols_find_inliner_info \
1.41583 ++ ((bfd_boolean (*) (bfd *, const char **, const char **, unsigned int *)) \
1.41584 ++ bfd_false)
1.41585 ++#define _bfd_nosymbols_bfd_make_debug_symbol \
1.41586 ++ ((asymbol *(*) (bfd *, void *, unsigned long)) bfd_nullvoidptr)
1.41587 ++#define _bfd_nosymbols_read_minisymbols \
1.41588 ++ ((long (*) (bfd *, bfd_boolean, void **, unsigned int *)) _bfd_n1)
1.41589 ++#define _bfd_nosymbols_minisymbol_to_symbol \
1.41590 ++ ((asymbol *(*) (bfd *, bfd_boolean, const void *, asymbol *)) \
1.41591 ++ bfd_nullvoidptr)
1.41592 ++
1.41593 ++/* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
1.41594 ++ support. Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs). */
1.41595 ++
1.41596 ++extern long _bfd_norelocs_get_reloc_upper_bound (bfd *, asection *);
1.41597 ++extern long _bfd_norelocs_canonicalize_reloc (bfd *, asection *,
1.41598 ++ arelent **, asymbol **);
1.41599 ++#define _bfd_norelocs_bfd_reloc_type_lookup \
1.41600 ++ ((reloc_howto_type *(*) (bfd *, bfd_reloc_code_real_type)) bfd_nullvoidptr)
1.41601 ++#define _bfd_norelocs_bfd_reloc_name_lookup \
1.41602 ++ ((reloc_howto_type *(*) (bfd *, const char *)) bfd_nullvoidptr)
1.41603 ++
1.41604 ++/* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
1.41605 ++ be written. Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite). */
1.41606 ++
1.41607 ++#define _bfd_nowrite_set_arch_mach \
1.41608 ++ ((bfd_boolean (*) (bfd *, enum bfd_architecture, unsigned long)) \
1.41609 ++ bfd_false)
1.41610 ++#define _bfd_nowrite_set_section_contents \
1.41611 ++ ((bfd_boolean (*) (bfd *, asection *, const void *, file_ptr, bfd_size_type)) \
1.41612 ++ bfd_false)
1.41613 ++
1.41614 ++/* Generic routines to use for BFD_JUMP_TABLE_WRITE. Use
1.41615 ++ BFD_JUMP_TABLE_WRITE (_bfd_generic). */
1.41616 ++
1.41617 ++#define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
1.41618 ++extern bfd_boolean _bfd_generic_set_section_contents
1.41619 ++ (bfd *, asection *, const void *, file_ptr, bfd_size_type);
1.41620 ++
1.41621 ++/* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
1.41622 ++ support linking. Use BFD_JUMP_TABLE_LINK (_bfd_nolink). */
1.41623 ++
1.41624 ++#define _bfd_nolink_sizeof_headers \
1.41625 ++ ((int (*) (bfd *, struct bfd_link_info *)) bfd_0)
1.41626 ++#define _bfd_nolink_bfd_get_relocated_section_contents \
1.41627 ++ ((bfd_byte *(*) (bfd *, struct bfd_link_info *, struct bfd_link_order *, \
1.41628 ++ bfd_byte *, bfd_boolean, asymbol **)) \
1.41629 ++ bfd_nullvoidptr)
1.41630 ++#define _bfd_nolink_bfd_relax_section \
1.41631 ++ ((bfd_boolean (*) \
1.41632 ++ (bfd *, asection *, struct bfd_link_info *, bfd_boolean *)) \
1.41633 ++ bfd_false)
1.41634 ++#define _bfd_nolink_bfd_gc_sections \
1.41635 ++ ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
1.41636 ++ bfd_false)
1.41637 ++#define _bfd_nolink_bfd_merge_sections \
1.41638 ++ ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
1.41639 ++ bfd_false)
1.41640 ++#define _bfd_nolink_bfd_is_group_section \
1.41641 ++ ((bfd_boolean (*) (bfd *, const struct bfd_section *)) \
1.41642 ++ bfd_false)
1.41643 ++#define _bfd_nolink_bfd_discard_group \
1.41644 ++ ((bfd_boolean (*) (bfd *, struct bfd_section *)) \
1.41645 ++ bfd_false)
1.41646 ++#define _bfd_nolink_bfd_link_hash_table_create \
1.41647 ++ ((struct bfd_link_hash_table *(*) (bfd *)) bfd_nullvoidptr)
1.41648 ++#define _bfd_nolink_bfd_link_hash_table_free \
1.41649 ++ ((void (*) (struct bfd_link_hash_table *)) bfd_void)
1.41650 ++#define _bfd_nolink_bfd_link_add_symbols \
1.41651 ++ ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
1.41652 ++#define _bfd_nolink_bfd_link_just_syms \
1.41653 ++ ((void (*) (asection *, struct bfd_link_info *)) bfd_void)
1.41654 ++#define _bfd_nolink_bfd_final_link \
1.41655 ++ ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
1.41656 ++#define _bfd_nolink_bfd_link_split_section \
1.41657 ++ ((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
1.41658 ++#define _bfd_nolink_section_already_linked \
1.41659 ++ ((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
1.41660 ++
1.41661 ++/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
1.41662 ++ have dynamic symbols or relocs. Use BFD_JUMP_TABLE_DYNAMIC
1.41663 ++ (_bfd_nodynamic). */
1.41664 ++
1.41665 ++#define _bfd_nodynamic_get_dynamic_symtab_upper_bound _bfd_n1
1.41666 ++#define _bfd_nodynamic_canonicalize_dynamic_symtab \
1.41667 ++ ((long (*) (bfd *, asymbol **)) _bfd_n1)
1.41668 ++#define _bfd_nodynamic_get_synthetic_symtab \
1.41669 ++ ((long (*) (bfd *, long, asymbol **, long, asymbol **, asymbol **)) _bfd_n1)
1.41670 ++#define _bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_n1
1.41671 ++#define _bfd_nodynamic_canonicalize_dynamic_reloc \
1.41672 ++ ((long (*) (bfd *, arelent **, asymbol **)) _bfd_n1)
1.41673 ++
1.41674 ++/* Generic routine to determine of the given symbol is a local
1.41675 ++ label. */
1.41676 ++extern bfd_boolean bfd_generic_is_local_label_name
1.41677 ++ (bfd *, const char *);
1.41678 ++
1.41679 ++/* Generic minisymbol routines. */
1.41680 ++extern long _bfd_generic_read_minisymbols
1.41681 ++ (bfd *, bfd_boolean, void **, unsigned int *);
1.41682 ++extern asymbol *_bfd_generic_minisymbol_to_symbol
1.41683 ++ (bfd *, bfd_boolean, const void *, asymbol *);
1.41684 ++
1.41685 ++/* Find the nearest line using .stab/.stabstr sections. */
1.41686 ++extern bfd_boolean _bfd_stab_section_find_nearest_line
1.41687 ++ (bfd *, asymbol **, asection *, bfd_vma, bfd_boolean *,
1.41688 ++ const char **, const char **, unsigned int *, void **);
1.41689 ++
1.41690 ++/* Find the nearest line using DWARF 1 debugging information. */
1.41691 ++extern bfd_boolean _bfd_dwarf1_find_nearest_line
1.41692 ++ (bfd *, asection *, asymbol **, bfd_vma, const char **,
1.41693 ++ const char **, unsigned int *);
1.41694 ++
1.41695 ++/* Find the nearest line using DWARF 2 debugging information. */
1.41696 ++extern bfd_boolean _bfd_dwarf2_find_nearest_line
1.41697 ++ (bfd *, asection *, asymbol **, bfd_vma, const char **, const char **,
1.41698 ++ unsigned int *, unsigned int, void **);
1.41699 ++
1.41700 ++/* Find the line using DWARF 2 debugging information. */
1.41701 ++extern bfd_boolean _bfd_dwarf2_find_line
1.41702 ++ (bfd *, asymbol **, asymbol *, const char **,
1.41703 ++ unsigned int *, unsigned int, void **);
1.41704 ++
1.41705 ++bfd_boolean _bfd_generic_find_line
1.41706 ++ (bfd *, asymbol **, asymbol *, const char **, unsigned int *);
1.41707 ++
1.41708 ++/* Find inliner info after calling bfd_find_nearest_line. */
1.41709 ++extern bfd_boolean _bfd_dwarf2_find_inliner_info
1.41710 ++ (bfd *, const char **, const char **, unsigned int *, void **);
1.41711 ++
1.41712 ++/* Create a new section entry. */
1.41713 ++extern struct bfd_hash_entry *bfd_section_hash_newfunc
1.41714 ++ (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
1.41715 ++
1.41716 ++/* A routine to create entries for a bfd_link_hash_table. */
1.41717 ++extern struct bfd_hash_entry *_bfd_link_hash_newfunc
1.41718 ++ (struct bfd_hash_entry *entry, struct bfd_hash_table *table,
1.41719 ++ const char *string);
1.41720 ++
1.41721 ++/* Initialize a bfd_link_hash_table. */
1.41722 ++extern bfd_boolean _bfd_link_hash_table_init
1.41723 ++ (struct bfd_link_hash_table *, bfd *,
1.41724 ++ struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
1.41725 ++ struct bfd_hash_table *,
1.41726 ++ const char *),
1.41727 ++ unsigned int);
1.41728 ++
1.41729 ++/* Generic link hash table creation routine. */
1.41730 ++extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
1.41731 ++ (bfd *);
1.41732 ++
1.41733 ++/* Generic link hash table destruction routine. */
1.41734 ++extern void _bfd_generic_link_hash_table_free
1.41735 ++ (struct bfd_link_hash_table *);
1.41736 ++
1.41737 ++/* Generic add symbol routine. */
1.41738 ++extern bfd_boolean _bfd_generic_link_add_symbols
1.41739 ++ (bfd *, struct bfd_link_info *);
1.41740 ++
1.41741 ++/* Generic add symbol routine. This version is used by targets for
1.41742 ++ which the linker must collect constructors and destructors by name,
1.41743 ++ as the collect2 program does. */
1.41744 ++extern bfd_boolean _bfd_generic_link_add_symbols_collect
1.41745 ++ (bfd *, struct bfd_link_info *);
1.41746 ++
1.41747 ++/* Generic archive add symbol routine. */
1.41748 ++extern bfd_boolean _bfd_generic_link_add_archive_symbols
1.41749 ++ (bfd *, struct bfd_link_info *,
1.41750 ++ bfd_boolean (*) (bfd *, struct bfd_link_info *, bfd_boolean *));
1.41751 ++
1.41752 ++/* Forward declaration to avoid prototype errors. */
1.41753 ++typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
1.41754 ++
1.41755 ++/* Generic routine to add a single symbol. */
1.41756 ++extern bfd_boolean _bfd_generic_link_add_one_symbol
1.41757 ++ (struct bfd_link_info *, bfd *, const char *name, flagword,
1.41758 ++ asection *, bfd_vma, const char *, bfd_boolean copy,
1.41759 ++ bfd_boolean constructor, struct bfd_link_hash_entry **);
1.41760 ++
1.41761 ++/* Generic routine to mark section as supplying symbols only. */
1.41762 ++extern void _bfd_generic_link_just_syms
1.41763 ++ (asection *, struct bfd_link_info *);
1.41764 ++
1.41765 ++/* Generic link routine. */
1.41766 ++extern bfd_boolean _bfd_generic_final_link
1.41767 ++ (bfd *, struct bfd_link_info *);
1.41768 ++
1.41769 ++extern bfd_boolean _bfd_generic_link_split_section
1.41770 ++ (bfd *, struct bfd_section *);
1.41771 ++
1.41772 ++extern void _bfd_generic_section_already_linked
1.41773 ++ (bfd *, struct bfd_section *, struct bfd_link_info *);
1.41774 ++
1.41775 ++/* Generic reloc_link_order processing routine. */
1.41776 ++extern bfd_boolean _bfd_generic_reloc_link_order
1.41777 ++ (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
1.41778 ++
1.41779 ++/* Default link order processing routine. */
1.41780 ++extern bfd_boolean _bfd_default_link_order
1.41781 ++ (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
1.41782 ++
1.41783 ++/* Count the number of reloc entries in a link order list. */
1.41784 ++extern unsigned int _bfd_count_link_order_relocs
1.41785 ++ (struct bfd_link_order *);
1.41786 ++
1.41787 ++/* Final link relocation routine. */
1.41788 ++extern bfd_reloc_status_type _bfd_final_link_relocate
1.41789 ++ (reloc_howto_type *, bfd *, asection *, bfd_byte *,
1.41790 ++ bfd_vma, bfd_vma, bfd_vma);
1.41791 ++
1.41792 ++/* Relocate a particular location by a howto and a value. */
1.41793 ++extern bfd_reloc_status_type _bfd_relocate_contents
1.41794 ++ (reloc_howto_type *, bfd *, bfd_vma, bfd_byte *);
1.41795 ++
1.41796 ++/* Clear a given location using a given howto. */
1.41797 ++extern void _bfd_clear_contents (reloc_howto_type *howto, bfd *input_bfd,
1.41798 ++ bfd_byte *location);
1.41799 ++
1.41800 ++/* Link stabs in sections in the first pass. */
1.41801 ++
1.41802 ++extern bfd_boolean _bfd_link_section_stabs
1.41803 ++ (bfd *, struct stab_info *, asection *, asection *, void **,
1.41804 ++ bfd_size_type *);
1.41805 ++
1.41806 ++/* Eliminate stabs for discarded functions and symbols. */
1.41807 ++extern bfd_boolean _bfd_discard_section_stabs
1.41808 ++ (bfd *, asection *, void *, bfd_boolean (*) (bfd_vma, void *), void *);
1.41809 ++
1.41810 ++/* Write out the .stab section when linking stabs in sections. */
1.41811 ++
1.41812 ++extern bfd_boolean _bfd_write_section_stabs
1.41813 ++ (bfd *, struct stab_info *, asection *, void **, bfd_byte *);
1.41814 ++
1.41815 ++/* Write out the .stabstr string table when linking stabs in sections. */
1.41816 ++
1.41817 ++extern bfd_boolean _bfd_write_stab_strings
1.41818 ++ (bfd *, struct stab_info *);
1.41819 ++
1.41820 ++/* Find an offset within a .stab section when linking stabs in
1.41821 ++ sections. */
1.41822 ++
1.41823 ++extern bfd_vma _bfd_stab_section_offset
1.41824 ++ (asection *, void *, bfd_vma);
1.41825 ++
1.41826 ++/* Register a SEC_MERGE section as a candidate for merging. */
1.41827 ++
1.41828 ++extern bfd_boolean _bfd_add_merge_section
1.41829 ++ (bfd *, void **, asection *, void **);
1.41830 ++
1.41831 ++/* Attempt to merge SEC_MERGE sections. */
1.41832 ++
1.41833 ++extern bfd_boolean _bfd_merge_sections
1.41834 ++ (bfd *, struct bfd_link_info *, void *, void (*) (bfd *, asection *));
1.41835 ++
1.41836 ++/* Write out a merged section. */
1.41837 ++
1.41838 ++extern bfd_boolean _bfd_write_merged_section
1.41839 ++ (bfd *, asection *, void *);
1.41840 ++
1.41841 ++/* Find an offset within a modified SEC_MERGE section. */
1.41842 ++
1.41843 ++extern bfd_vma _bfd_merged_section_offset
1.41844 ++ (bfd *, asection **, void *, bfd_vma);
1.41845 ++
1.41846 ++/* Create a string table. */
1.41847 ++extern struct bfd_strtab_hash *_bfd_stringtab_init
1.41848 ++ (void);
1.41849 ++
1.41850 ++/* Create an XCOFF .debug section style string table. */
1.41851 ++extern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
1.41852 ++ (void);
1.41853 ++
1.41854 ++/* Free a string table. */
1.41855 ++extern void _bfd_stringtab_free
1.41856 ++ (struct bfd_strtab_hash *);
1.41857 ++
1.41858 ++/* Get the size of a string table. */
1.41859 ++extern bfd_size_type _bfd_stringtab_size
1.41860 ++ (struct bfd_strtab_hash *);
1.41861 ++
1.41862 ++/* Add a string to a string table. */
1.41863 ++extern bfd_size_type _bfd_stringtab_add
1.41864 ++ (struct bfd_strtab_hash *, const char *, bfd_boolean hash, bfd_boolean copy);
1.41865 ++
1.41866 ++/* Write out a string table. */
1.41867 ++extern bfd_boolean _bfd_stringtab_emit
1.41868 ++ (bfd *, struct bfd_strtab_hash *);
1.41869 ++
1.41870 ++/* Check that endianness of input and output file match. */
1.41871 ++extern bfd_boolean _bfd_generic_verify_endian_match
1.41872 ++ (bfd *, bfd *);
1.41873 ++
1.41874 ++/* Macros to tell if bfds are read or write enabled.
1.41875 ++
1.41876 ++ Note that bfds open for read may be scribbled into if the fd passed
1.41877 ++ to bfd_fdopenr is actually open both for read and write
1.41878 ++ simultaneously. However an output bfd will never be open for
1.41879 ++ read. Therefore sometimes you want to check bfd_read_p or
1.41880 ++ !bfd_read_p, and only sometimes bfd_write_p.
1.41881 ++*/
1.41882 ++
1.41883 ++#define bfd_read_p(abfd) \
1.41884 ++ ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
1.41885 ++#define bfd_write_p(abfd) \
1.41886 ++ ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
1.41887 ++
1.41888 ++void bfd_assert
1.41889 ++ (const char*,int);
1.41890 ++
1.41891 ++#define BFD_ASSERT(x) \
1.41892 ++ do { if (!(x)) bfd_assert(__FILE__,__LINE__); } while (0)
1.41893 ++
1.41894 ++#define BFD_FAIL() \
1.41895 ++ do { bfd_assert(__FILE__,__LINE__); } while (0)
1.41896 ++
1.41897 ++extern void _bfd_abort
1.41898 ++ (const char *, int, const char *) ATTRIBUTE_NORETURN;
1.41899 ++
1.41900 ++/* if gcc >= 2.6, we can give a function name, too */
1.41901 ++#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
1.41902 ++#define __PRETTY_FUNCTION__ ((char *) NULL)
1.41903 ++#endif
1.41904 ++
1.41905 ++#undef abort
1.41906 ++#define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
1.41907 ++
1.41908 ++/* Manipulate a system FILE but using BFD's "file_ptr", rather than
1.41909 ++ the system "off_t" or "off64_t", as the offset. */
1.41910 ++extern file_ptr real_ftell (FILE *file);
1.41911 ++extern int real_fseek (FILE *file, file_ptr offset, int whence);
1.41912 ++extern FILE *real_fopen (const char *filename, const char *modes);
1.41913 ++
1.41914 ++/* List of supported target vectors, and the default vector (if
1.41915 ++ bfd_default_vector[0] is NULL, there is no default). */
1.41916 ++extern const bfd_target * const *bfd_target_vector;
1.41917 ++extern const bfd_target *bfd_default_vector[];
1.41918 ++
1.41919 ++/* List of associated target vectors. */
1.41920 ++extern const bfd_target * const *bfd_associated_vector;
1.41921 ++
1.41922 ++/* Functions shared by the ECOFF and MIPS ELF backends, which have no
1.41923 ++ other common header files. */
1.41924 ++
1.41925 ++#if defined(__STDC__) || defined(ALMOST_STDC)
1.41926 ++struct ecoff_find_line;
1.41927 ++#endif
1.41928 ++
1.41929 ++extern bfd_boolean _bfd_ecoff_locate_line
1.41930 ++ (bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
1.41931 ++ const struct ecoff_debug_swap * const, struct ecoff_find_line *,
1.41932 ++ const char **, const char **, unsigned int *);
1.41933 ++extern bfd_boolean _bfd_ecoff_get_accumulated_pdr
1.41934 ++ (void *, bfd_byte *);
1.41935 ++extern bfd_boolean _bfd_ecoff_get_accumulated_sym
1.41936 ++ (void *, bfd_byte *);
1.41937 ++extern bfd_boolean _bfd_ecoff_get_accumulated_ss
1.41938 ++ (void *, bfd_byte *);
1.41939 ++
1.41940 ++extern bfd_vma _bfd_get_gp_value
1.41941 ++ (bfd *);
1.41942 ++extern void _bfd_set_gp_value
1.41943 ++ (bfd *, bfd_vma);
1.41944 ++
1.41945 ++/* Function shared by the COFF and ELF SH backends, which have no
1.41946 ++ other common header files. */
1.41947 ++
1.41948 ++#ifndef _bfd_sh_align_load_span
1.41949 ++extern bfd_boolean _bfd_sh_align_load_span
1.41950 ++ (bfd *, asection *, bfd_byte *,
1.41951 ++ bfd_boolean (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
1.41952 ++ void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bfd_boolean *);
1.41953 ++#endif
1.41954 ++
1.41955 ++/* This is the shape of the elements inside the already_linked hash
1.41956 ++ table. It maps a name onto a list of already_linked elements with
1.41957 ++ the same name. */
1.41958 ++
1.41959 ++struct bfd_section_already_linked_hash_entry
1.41960 ++{
1.41961 ++ struct bfd_hash_entry root;
1.41962 ++ struct bfd_section_already_linked *entry;
1.41963 ++};
1.41964 ++
1.41965 ++struct bfd_section_already_linked
1.41966 ++{
1.41967 ++ struct bfd_section_already_linked *next;
1.41968 ++ asection *sec;
1.41969 ++};
1.41970 ++
1.41971 ++extern struct bfd_section_already_linked_hash_entry *
1.41972 ++ bfd_section_already_linked_table_lookup (const char *);
1.41973 ++extern bfd_boolean bfd_section_already_linked_table_insert
1.41974 ++ (struct bfd_section_already_linked_hash_entry *, asection *);
1.41975 ++extern void bfd_section_already_linked_table_traverse
1.41976 ++ (bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
1.41977 ++ void *), void *);
1.41978 ++
1.41979 ++extern bfd_vma read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *);
1.41980 ++extern bfd_signed_vma read_signed_leb128 (bfd *, bfd_byte *, unsigned int *);
1.41981 ++
1.41982 ++/* Extracted from init.c. */
1.41983 ++/* Extracted from libbfd.c. */
1.41984 ++bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
1.41985 ++
1.41986 ++unsigned int bfd_log2 (bfd_vma x);
1.41987 ++
1.41988 ++/* Extracted from bfdio.c. */
1.41989 ++struct bfd_iovec
1.41990 ++{
1.41991 ++ /* To avoid problems with macros, a "b" rather than "f"
1.41992 ++ prefix is prepended to each method name. */
1.41993 ++ /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
1.41994 ++ bytes starting at PTR. Return the number of bytes actually
1.41995 ++ transfered (a read past end-of-file returns less than NBYTES),
1.41996 ++ or -1 (setting <<bfd_error>>) if an error occurs. */
1.41997 ++ file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
1.41998 ++ file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
1.41999 ++ file_ptr nbytes);
1.42000 ++ /* Return the current IOSTREAM file offset, or -1 (setting <<bfd_error>>
1.42001 ++ if an error occurs. */
1.42002 ++ file_ptr (*btell) (struct bfd *abfd);
1.42003 ++ /* For the following, on successful completion a value of 0 is returned.
1.42004 ++ Otherwise, a value of -1 is returned (and <<bfd_error>> is set). */
1.42005 ++ int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
1.42006 ++ int (*bclose) (struct bfd *abfd);
1.42007 ++ int (*bflush) (struct bfd *abfd);
1.42008 ++ int (*bstat) (struct bfd *abfd, struct stat *sb);
1.42009 ++};
1.42010 ++/* Extracted from bfdwin.c. */
1.42011 ++struct _bfd_window_internal {
1.42012 ++ struct _bfd_window_internal *next;
1.42013 ++ void *data;
1.42014 ++ bfd_size_type size;
1.42015 ++ int refcount : 31; /* should be enough... */
1.42016 ++ unsigned mapped : 1; /* 1 = mmap, 0 = malloc */
1.42017 ++};
1.42018 ++/* Extracted from cache.c. */
1.42019 ++bfd_boolean bfd_cache_init (bfd *abfd);
1.42020 ++
1.42021 ++bfd_boolean bfd_cache_close (bfd *abfd);
1.42022 ++
1.42023 ++FILE* bfd_open_file (bfd *abfd);
1.42024 ++
1.42025 ++/* Extracted from reloc.c. */
1.42026 ++#ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
1.42027 ++
1.42028 ++static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
1.42029 ++
1.42030 ++ "BFD_RELOC_64",
1.42031 ++ "BFD_RELOC_32",
1.42032 ++ "BFD_RELOC_26",
1.42033 ++ "BFD_RELOC_24",
1.42034 ++ "BFD_RELOC_16",
1.42035 ++ "BFD_RELOC_14",
1.42036 ++ "BFD_RELOC_8",
1.42037 ++ "BFD_RELOC_64_PCREL",
1.42038 ++ "BFD_RELOC_32_PCREL",
1.42039 ++ "BFD_RELOC_24_PCREL",
1.42040 ++ "BFD_RELOC_16_PCREL",
1.42041 ++ "BFD_RELOC_12_PCREL",
1.42042 ++ "BFD_RELOC_8_PCREL",
1.42043 ++ "BFD_RELOC_32_SECREL",
1.42044 ++ "BFD_RELOC_32_GOT_PCREL",
1.42045 ++ "BFD_RELOC_16_GOT_PCREL",
1.42046 ++ "BFD_RELOC_8_GOT_PCREL",
1.42047 ++ "BFD_RELOC_32_GOTOFF",
1.42048 ++ "BFD_RELOC_16_GOTOFF",
1.42049 ++ "BFD_RELOC_LO16_GOTOFF",
1.42050 ++ "BFD_RELOC_HI16_GOTOFF",
1.42051 ++ "BFD_RELOC_HI16_S_GOTOFF",
1.42052 ++ "BFD_RELOC_8_GOTOFF",
1.42053 ++ "BFD_RELOC_64_PLT_PCREL",
1.42054 ++ "BFD_RELOC_32_PLT_PCREL",
1.42055 ++ "BFD_RELOC_24_PLT_PCREL",
1.42056 ++ "BFD_RELOC_16_PLT_PCREL",
1.42057 ++ "BFD_RELOC_8_PLT_PCREL",
1.42058 ++ "BFD_RELOC_64_PLTOFF",
1.42059 ++ "BFD_RELOC_32_PLTOFF",
1.42060 ++ "BFD_RELOC_16_PLTOFF",
1.42061 ++ "BFD_RELOC_LO16_PLTOFF",
1.42062 ++ "BFD_RELOC_HI16_PLTOFF",
1.42063 ++ "BFD_RELOC_HI16_S_PLTOFF",
1.42064 ++ "BFD_RELOC_8_PLTOFF",
1.42065 ++ "BFD_RELOC_68K_GLOB_DAT",
1.42066 ++ "BFD_RELOC_68K_JMP_SLOT",
1.42067 ++ "BFD_RELOC_68K_RELATIVE",
1.42068 ++ "BFD_RELOC_32_BASEREL",
1.42069 ++ "BFD_RELOC_16_BASEREL",
1.42070 ++ "BFD_RELOC_LO16_BASEREL",
1.42071 ++ "BFD_RELOC_HI16_BASEREL",
1.42072 ++ "BFD_RELOC_HI16_S_BASEREL",
1.42073 ++ "BFD_RELOC_8_BASEREL",
1.42074 ++ "BFD_RELOC_RVA",
1.42075 ++ "BFD_RELOC_8_FFnn",
1.42076 ++ "BFD_RELOC_32_PCREL_S2",
1.42077 ++ "BFD_RELOC_16_PCREL_S2",
1.42078 ++ "BFD_RELOC_23_PCREL_S2",
1.42079 ++ "BFD_RELOC_HI22",
1.42080 ++ "BFD_RELOC_LO10",
1.42081 ++ "BFD_RELOC_GPREL16",
1.42082 ++ "BFD_RELOC_GPREL32",
1.42083 ++ "BFD_RELOC_I960_CALLJ",
1.42084 ++ "BFD_RELOC_NONE",
1.42085 ++ "BFD_RELOC_SPARC_WDISP22",
1.42086 ++ "BFD_RELOC_SPARC22",
1.42087 ++ "BFD_RELOC_SPARC13",
1.42088 ++ "BFD_RELOC_SPARC_GOT10",
1.42089 ++ "BFD_RELOC_SPARC_GOT13",
1.42090 ++ "BFD_RELOC_SPARC_GOT22",
1.42091 ++ "BFD_RELOC_SPARC_PC10",
1.42092 ++ "BFD_RELOC_SPARC_PC22",
1.42093 ++ "BFD_RELOC_SPARC_WPLT30",
1.42094 ++ "BFD_RELOC_SPARC_COPY",
1.42095 ++ "BFD_RELOC_SPARC_GLOB_DAT",
1.42096 ++ "BFD_RELOC_SPARC_JMP_SLOT",
1.42097 ++ "BFD_RELOC_SPARC_RELATIVE",
1.42098 ++ "BFD_RELOC_SPARC_UA16",
1.42099 ++ "BFD_RELOC_SPARC_UA32",
1.42100 ++ "BFD_RELOC_SPARC_UA64",
1.42101 ++ "BFD_RELOC_SPARC_BASE13",
1.42102 ++ "BFD_RELOC_SPARC_BASE22",
1.42103 ++ "BFD_RELOC_SPARC_10",
1.42104 ++ "BFD_RELOC_SPARC_11",
1.42105 ++ "BFD_RELOC_SPARC_OLO10",
1.42106 ++ "BFD_RELOC_SPARC_HH22",
1.42107 ++ "BFD_RELOC_SPARC_HM10",
1.42108 ++ "BFD_RELOC_SPARC_LM22",
1.42109 ++ "BFD_RELOC_SPARC_PC_HH22",
1.42110 ++ "BFD_RELOC_SPARC_PC_HM10",
1.42111 ++ "BFD_RELOC_SPARC_PC_LM22",
1.42112 ++ "BFD_RELOC_SPARC_WDISP16",
1.42113 ++ "BFD_RELOC_SPARC_WDISP19",
1.42114 ++ "BFD_RELOC_SPARC_7",
1.42115 ++ "BFD_RELOC_SPARC_6",
1.42116 ++ "BFD_RELOC_SPARC_5",
1.42117 ++ "BFD_RELOC_SPARC_PLT32",
1.42118 ++ "BFD_RELOC_SPARC_PLT64",
1.42119 ++ "BFD_RELOC_SPARC_HIX22",
1.42120 ++ "BFD_RELOC_SPARC_LOX10",
1.42121 ++ "BFD_RELOC_SPARC_H44",
1.42122 ++ "BFD_RELOC_SPARC_M44",
1.42123 ++ "BFD_RELOC_SPARC_L44",
1.42124 ++ "BFD_RELOC_SPARC_REGISTER",
1.42125 ++ "BFD_RELOC_SPARC_REV32",
1.42126 ++ "BFD_RELOC_SPARC_TLS_GD_HI22",
1.42127 ++ "BFD_RELOC_SPARC_TLS_GD_LO10",
1.42128 ++ "BFD_RELOC_SPARC_TLS_GD_ADD",
1.42129 ++ "BFD_RELOC_SPARC_TLS_GD_CALL",
1.42130 ++ "BFD_RELOC_SPARC_TLS_LDM_HI22",
1.42131 ++ "BFD_RELOC_SPARC_TLS_LDM_LO10",
1.42132 ++ "BFD_RELOC_SPARC_TLS_LDM_ADD",
1.42133 ++ "BFD_RELOC_SPARC_TLS_LDM_CALL",
1.42134 ++ "BFD_RELOC_SPARC_TLS_LDO_HIX22",
1.42135 ++ "BFD_RELOC_SPARC_TLS_LDO_LOX10",
1.42136 ++ "BFD_RELOC_SPARC_TLS_LDO_ADD",
1.42137 ++ "BFD_RELOC_SPARC_TLS_IE_HI22",
1.42138 ++ "BFD_RELOC_SPARC_TLS_IE_LO10",
1.42139 ++ "BFD_RELOC_SPARC_TLS_IE_LD",
1.42140 ++ "BFD_RELOC_SPARC_TLS_IE_LDX",
1.42141 ++ "BFD_RELOC_SPARC_TLS_IE_ADD",
1.42142 ++ "BFD_RELOC_SPARC_TLS_LE_HIX22",
1.42143 ++ "BFD_RELOC_SPARC_TLS_LE_LOX10",
1.42144 ++ "BFD_RELOC_SPARC_TLS_DTPMOD32",
1.42145 ++ "BFD_RELOC_SPARC_TLS_DTPMOD64",
1.42146 ++ "BFD_RELOC_SPARC_TLS_DTPOFF32",
1.42147 ++ "BFD_RELOC_SPARC_TLS_DTPOFF64",
1.42148 ++ "BFD_RELOC_SPARC_TLS_TPOFF32",
1.42149 ++ "BFD_RELOC_SPARC_TLS_TPOFF64",
1.42150 ++ "BFD_RELOC_SPU_IMM7",
1.42151 ++ "BFD_RELOC_SPU_IMM8",
1.42152 ++ "BFD_RELOC_SPU_IMM10",
1.42153 ++ "BFD_RELOC_SPU_IMM10W",
1.42154 ++ "BFD_RELOC_SPU_IMM16",
1.42155 ++ "BFD_RELOC_SPU_IMM16W",
1.42156 ++ "BFD_RELOC_SPU_IMM18",
1.42157 ++ "BFD_RELOC_SPU_PCREL9a",
1.42158 ++ "BFD_RELOC_SPU_PCREL9b",
1.42159 ++ "BFD_RELOC_SPU_PCREL16",
1.42160 ++ "BFD_RELOC_SPU_LO16",
1.42161 ++ "BFD_RELOC_SPU_HI16",
1.42162 ++ "BFD_RELOC_SPU_PPU32",
1.42163 ++ "BFD_RELOC_SPU_PPU64",
1.42164 ++ "BFD_RELOC_ALPHA_GPDISP_HI16",
1.42165 ++ "BFD_RELOC_ALPHA_GPDISP_LO16",
1.42166 ++ "BFD_RELOC_ALPHA_GPDISP",
1.42167 ++ "BFD_RELOC_ALPHA_LITERAL",
1.42168 ++ "BFD_RELOC_ALPHA_ELF_LITERAL",
1.42169 ++ "BFD_RELOC_ALPHA_LITUSE",
1.42170 ++ "BFD_RELOC_ALPHA_HINT",
1.42171 ++ "BFD_RELOC_ALPHA_LINKAGE",
1.42172 ++ "BFD_RELOC_ALPHA_CODEADDR",
1.42173 ++ "BFD_RELOC_ALPHA_GPREL_HI16",
1.42174 ++ "BFD_RELOC_ALPHA_GPREL_LO16",
1.42175 ++ "BFD_RELOC_ALPHA_BRSGP",
1.42176 ++ "BFD_RELOC_ALPHA_TLSGD",
1.42177 ++ "BFD_RELOC_ALPHA_TLSLDM",
1.42178 ++ "BFD_RELOC_ALPHA_DTPMOD64",
1.42179 ++ "BFD_RELOC_ALPHA_GOTDTPREL16",
1.42180 ++ "BFD_RELOC_ALPHA_DTPREL64",
1.42181 ++ "BFD_RELOC_ALPHA_DTPREL_HI16",
1.42182 ++ "BFD_RELOC_ALPHA_DTPREL_LO16",
1.42183 ++ "BFD_RELOC_ALPHA_DTPREL16",
1.42184 ++ "BFD_RELOC_ALPHA_GOTTPREL16",
1.42185 ++ "BFD_RELOC_ALPHA_TPREL64",
1.42186 ++ "BFD_RELOC_ALPHA_TPREL_HI16",
1.42187 ++ "BFD_RELOC_ALPHA_TPREL_LO16",
1.42188 ++ "BFD_RELOC_ALPHA_TPREL16",
1.42189 ++ "BFD_RELOC_MIPS_JMP",
1.42190 ++ "BFD_RELOC_MIPS16_JMP",
1.42191 ++ "BFD_RELOC_MIPS16_GPREL",
1.42192 ++ "BFD_RELOC_HI16",
1.42193 ++ "BFD_RELOC_HI16_S",
1.42194 ++ "BFD_RELOC_LO16",
1.42195 ++ "BFD_RELOC_HI16_PCREL",
1.42196 ++ "BFD_RELOC_HI16_S_PCREL",
1.42197 ++ "BFD_RELOC_LO16_PCREL",
1.42198 ++ "BFD_RELOC_MIPS16_HI16",
1.42199 ++ "BFD_RELOC_MIPS16_HI16_S",
1.42200 ++ "BFD_RELOC_MIPS16_LO16",
1.42201 ++ "BFD_RELOC_MIPS_LITERAL",
1.42202 ++ "BFD_RELOC_MIPS_GOT16",
1.42203 ++ "BFD_RELOC_MIPS_CALL16",
1.42204 ++ "BFD_RELOC_MIPS_GOT_HI16",
1.42205 ++ "BFD_RELOC_MIPS_GOT_LO16",
1.42206 ++ "BFD_RELOC_MIPS_CALL_HI16",
1.42207 ++ "BFD_RELOC_MIPS_CALL_LO16",
1.42208 ++ "BFD_RELOC_MIPS_SUB",
1.42209 ++ "BFD_RELOC_MIPS_GOT_PAGE",
1.42210 ++ "BFD_RELOC_MIPS_GOT_OFST",
1.42211 ++ "BFD_RELOC_MIPS_GOT_DISP",
1.42212 ++ "BFD_RELOC_MIPS_SHIFT5",
1.42213 ++ "BFD_RELOC_MIPS_SHIFT6",
1.42214 ++ "BFD_RELOC_MIPS_INSERT_A",
1.42215 ++ "BFD_RELOC_MIPS_INSERT_B",
1.42216 ++ "BFD_RELOC_MIPS_DELETE",
1.42217 ++ "BFD_RELOC_MIPS_HIGHEST",
1.42218 ++ "BFD_RELOC_MIPS_HIGHER",
1.42219 ++ "BFD_RELOC_MIPS_SCN_DISP",
1.42220 ++ "BFD_RELOC_MIPS_REL16",
1.42221 ++ "BFD_RELOC_MIPS_RELGOT",
1.42222 ++ "BFD_RELOC_MIPS_JALR",
1.42223 ++ "BFD_RELOC_MIPS_TLS_DTPMOD32",
1.42224 ++ "BFD_RELOC_MIPS_TLS_DTPREL32",
1.42225 ++ "BFD_RELOC_MIPS_TLS_DTPMOD64",
1.42226 ++ "BFD_RELOC_MIPS_TLS_DTPREL64",
1.42227 ++ "BFD_RELOC_MIPS_TLS_GD",
1.42228 ++ "BFD_RELOC_MIPS_TLS_LDM",
1.42229 ++ "BFD_RELOC_MIPS_TLS_DTPREL_HI16",
1.42230 ++ "BFD_RELOC_MIPS_TLS_DTPREL_LO16",
1.42231 ++ "BFD_RELOC_MIPS_TLS_GOTTPREL",
1.42232 ++ "BFD_RELOC_MIPS_TLS_TPREL32",
1.42233 ++ "BFD_RELOC_MIPS_TLS_TPREL64",
1.42234 ++ "BFD_RELOC_MIPS_TLS_TPREL_HI16",
1.42235 ++ "BFD_RELOC_MIPS_TLS_TPREL_LO16",
1.42236 ++
1.42237 ++ "BFD_RELOC_MIPS_COPY",
1.42238 ++ "BFD_RELOC_MIPS_JUMP_SLOT",
1.42239 ++
1.42240 ++ "BFD_RELOC_FRV_LABEL16",
1.42241 ++ "BFD_RELOC_FRV_LABEL24",
1.42242 ++ "BFD_RELOC_FRV_LO16",
1.42243 ++ "BFD_RELOC_FRV_HI16",
1.42244 ++ "BFD_RELOC_FRV_GPREL12",
1.42245 ++ "BFD_RELOC_FRV_GPRELU12",
1.42246 ++ "BFD_RELOC_FRV_GPREL32",
1.42247 ++ "BFD_RELOC_FRV_GPRELHI",
1.42248 ++ "BFD_RELOC_FRV_GPRELLO",
1.42249 ++ "BFD_RELOC_FRV_GOT12",
1.42250 ++ "BFD_RELOC_FRV_GOTHI",
1.42251 ++ "BFD_RELOC_FRV_GOTLO",
1.42252 ++ "BFD_RELOC_FRV_FUNCDESC",
1.42253 ++ "BFD_RELOC_FRV_FUNCDESC_GOT12",
1.42254 ++ "BFD_RELOC_FRV_FUNCDESC_GOTHI",
1.42255 ++ "BFD_RELOC_FRV_FUNCDESC_GOTLO",
1.42256 ++ "BFD_RELOC_FRV_FUNCDESC_VALUE",
1.42257 ++ "BFD_RELOC_FRV_FUNCDESC_GOTOFF12",
1.42258 ++ "BFD_RELOC_FRV_FUNCDESC_GOTOFFHI",
1.42259 ++ "BFD_RELOC_FRV_FUNCDESC_GOTOFFLO",
1.42260 ++ "BFD_RELOC_FRV_GOTOFF12",
1.42261 ++ "BFD_RELOC_FRV_GOTOFFHI",
1.42262 ++ "BFD_RELOC_FRV_GOTOFFLO",
1.42263 ++ "BFD_RELOC_FRV_GETTLSOFF",
1.42264 ++ "BFD_RELOC_FRV_TLSDESC_VALUE",
1.42265 ++ "BFD_RELOC_FRV_GOTTLSDESC12",
1.42266 ++ "BFD_RELOC_FRV_GOTTLSDESCHI",
1.42267 ++ "BFD_RELOC_FRV_GOTTLSDESCLO",
1.42268 ++ "BFD_RELOC_FRV_TLSMOFF12",
1.42269 ++ "BFD_RELOC_FRV_TLSMOFFHI",
1.42270 ++ "BFD_RELOC_FRV_TLSMOFFLO",
1.42271 ++ "BFD_RELOC_FRV_GOTTLSOFF12",
1.42272 ++ "BFD_RELOC_FRV_GOTTLSOFFHI",
1.42273 ++ "BFD_RELOC_FRV_GOTTLSOFFLO",
1.42274 ++ "BFD_RELOC_FRV_TLSOFF",
1.42275 ++ "BFD_RELOC_FRV_TLSDESC_RELAX",
1.42276 ++ "BFD_RELOC_FRV_GETTLSOFF_RELAX",
1.42277 ++ "BFD_RELOC_FRV_TLSOFF_RELAX",
1.42278 ++ "BFD_RELOC_FRV_TLSMOFF",
1.42279 ++
1.42280 ++ "BFD_RELOC_MN10300_GOTOFF24",
1.42281 ++ "BFD_RELOC_MN10300_GOT32",
1.42282 ++ "BFD_RELOC_MN10300_GOT24",
1.42283 ++ "BFD_RELOC_MN10300_GOT16",
1.42284 ++ "BFD_RELOC_MN10300_COPY",
1.42285 ++ "BFD_RELOC_MN10300_GLOB_DAT",
1.42286 ++ "BFD_RELOC_MN10300_JMP_SLOT",
1.42287 ++ "BFD_RELOC_MN10300_RELATIVE",
1.42288 ++
1.42289 ++ "BFD_RELOC_386_GOT32",
1.42290 ++ "BFD_RELOC_386_PLT32",
1.42291 ++ "BFD_RELOC_386_COPY",
1.42292 ++ "BFD_RELOC_386_GLOB_DAT",
1.42293 ++ "BFD_RELOC_386_JUMP_SLOT",
1.42294 ++ "BFD_RELOC_386_RELATIVE",
1.42295 ++ "BFD_RELOC_386_GOTOFF",
1.42296 ++ "BFD_RELOC_386_GOTPC",
1.42297 ++ "BFD_RELOC_386_TLS_TPOFF",
1.42298 ++ "BFD_RELOC_386_TLS_IE",
1.42299 ++ "BFD_RELOC_386_TLS_GOTIE",
1.42300 ++ "BFD_RELOC_386_TLS_LE",
1.42301 ++ "BFD_RELOC_386_TLS_GD",
1.42302 ++ "BFD_RELOC_386_TLS_LDM",
1.42303 ++ "BFD_RELOC_386_TLS_LDO_32",
1.42304 ++ "BFD_RELOC_386_TLS_IE_32",
1.42305 ++ "BFD_RELOC_386_TLS_LE_32",
1.42306 ++ "BFD_RELOC_386_TLS_DTPMOD32",
1.42307 ++ "BFD_RELOC_386_TLS_DTPOFF32",
1.42308 ++ "BFD_RELOC_386_TLS_TPOFF32",
1.42309 ++ "BFD_RELOC_386_TLS_GOTDESC",
1.42310 ++ "BFD_RELOC_386_TLS_DESC_CALL",
1.42311 ++ "BFD_RELOC_386_TLS_DESC",
1.42312 ++ "BFD_RELOC_X86_64_GOT32",
1.42313 ++ "BFD_RELOC_X86_64_PLT32",
1.42314 ++ "BFD_RELOC_X86_64_COPY",
1.42315 ++ "BFD_RELOC_X86_64_GLOB_DAT",
1.42316 ++ "BFD_RELOC_X86_64_JUMP_SLOT",
1.42317 ++ "BFD_RELOC_X86_64_RELATIVE",
1.42318 ++ "BFD_RELOC_X86_64_GOTPCREL",
1.42319 ++ "BFD_RELOC_X86_64_32S",
1.42320 ++ "BFD_RELOC_X86_64_DTPMOD64",
1.42321 ++ "BFD_RELOC_X86_64_DTPOFF64",
1.42322 ++ "BFD_RELOC_X86_64_TPOFF64",
1.42323 ++ "BFD_RELOC_X86_64_TLSGD",
1.42324 ++ "BFD_RELOC_X86_64_TLSLD",
1.42325 ++ "BFD_RELOC_X86_64_DTPOFF32",
1.42326 ++ "BFD_RELOC_X86_64_GOTTPOFF",
1.42327 ++ "BFD_RELOC_X86_64_TPOFF32",
1.42328 ++ "BFD_RELOC_X86_64_GOTOFF64",
1.42329 ++ "BFD_RELOC_X86_64_GOTPC32",
1.42330 ++ "BFD_RELOC_X86_64_GOT64",
1.42331 ++ "BFD_RELOC_X86_64_GOTPCREL64",
1.42332 ++ "BFD_RELOC_X86_64_GOTPC64",
1.42333 ++ "BFD_RELOC_X86_64_GOTPLT64",
1.42334 ++ "BFD_RELOC_X86_64_PLTOFF64",
1.42335 ++ "BFD_RELOC_X86_64_GOTPC32_TLSDESC",
1.42336 ++ "BFD_RELOC_X86_64_TLSDESC_CALL",
1.42337 ++ "BFD_RELOC_X86_64_TLSDESC",
1.42338 ++ "BFD_RELOC_NS32K_IMM_8",
1.42339 ++ "BFD_RELOC_NS32K_IMM_16",
1.42340 ++ "BFD_RELOC_NS32K_IMM_32",
1.42341 ++ "BFD_RELOC_NS32K_IMM_8_PCREL",
1.42342 ++ "BFD_RELOC_NS32K_IMM_16_PCREL",
1.42343 ++ "BFD_RELOC_NS32K_IMM_32_PCREL",
1.42344 ++ "BFD_RELOC_NS32K_DISP_8",
1.42345 ++ "BFD_RELOC_NS32K_DISP_16",
1.42346 ++ "BFD_RELOC_NS32K_DISP_32",
1.42347 ++ "BFD_RELOC_NS32K_DISP_8_PCREL",
1.42348 ++ "BFD_RELOC_NS32K_DISP_16_PCREL",
1.42349 ++ "BFD_RELOC_NS32K_DISP_32_PCREL",
1.42350 ++ "BFD_RELOC_PDP11_DISP_8_PCREL",
1.42351 ++ "BFD_RELOC_PDP11_DISP_6_PCREL",
1.42352 ++ "BFD_RELOC_PJ_CODE_HI16",
1.42353 ++ "BFD_RELOC_PJ_CODE_LO16",
1.42354 ++ "BFD_RELOC_PJ_CODE_DIR16",
1.42355 ++ "BFD_RELOC_PJ_CODE_DIR32",
1.42356 ++ "BFD_RELOC_PJ_CODE_REL16",
1.42357 ++ "BFD_RELOC_PJ_CODE_REL32",
1.42358 ++ "BFD_RELOC_PPC_B26",
1.42359 ++ "BFD_RELOC_PPC_BA26",
1.42360 ++ "BFD_RELOC_PPC_TOC16",
1.42361 ++ "BFD_RELOC_PPC_B16",
1.42362 ++ "BFD_RELOC_PPC_B16_BRTAKEN",
1.42363 ++ "BFD_RELOC_PPC_B16_BRNTAKEN",
1.42364 ++ "BFD_RELOC_PPC_BA16",
1.42365 ++ "BFD_RELOC_PPC_BA16_BRTAKEN",
1.42366 ++ "BFD_RELOC_PPC_BA16_BRNTAKEN",
1.42367 ++ "BFD_RELOC_PPC_COPY",
1.42368 ++ "BFD_RELOC_PPC_GLOB_DAT",
1.42369 ++ "BFD_RELOC_PPC_JMP_SLOT",
1.42370 ++ "BFD_RELOC_PPC_RELATIVE",
1.42371 ++ "BFD_RELOC_PPC_LOCAL24PC",
1.42372 ++ "BFD_RELOC_PPC_EMB_NADDR32",
1.42373 ++ "BFD_RELOC_PPC_EMB_NADDR16",
1.42374 ++ "BFD_RELOC_PPC_EMB_NADDR16_LO",
1.42375 ++ "BFD_RELOC_PPC_EMB_NADDR16_HI",
1.42376 ++ "BFD_RELOC_PPC_EMB_NADDR16_HA",
1.42377 ++ "BFD_RELOC_PPC_EMB_SDAI16",
1.42378 ++ "BFD_RELOC_PPC_EMB_SDA2I16",
1.42379 ++ "BFD_RELOC_PPC_EMB_SDA2REL",
1.42380 ++ "BFD_RELOC_PPC_EMB_SDA21",
1.42381 ++ "BFD_RELOC_PPC_EMB_MRKREF",
1.42382 ++ "BFD_RELOC_PPC_EMB_RELSEC16",
1.42383 ++ "BFD_RELOC_PPC_EMB_RELST_LO",
1.42384 ++ "BFD_RELOC_PPC_EMB_RELST_HI",
1.42385 ++ "BFD_RELOC_PPC_EMB_RELST_HA",
1.42386 ++ "BFD_RELOC_PPC_EMB_BIT_FLD",
1.42387 ++ "BFD_RELOC_PPC_EMB_RELSDA",
1.42388 ++ "BFD_RELOC_PPC64_HIGHER",
1.42389 ++ "BFD_RELOC_PPC64_HIGHER_S",
1.42390 ++ "BFD_RELOC_PPC64_HIGHEST",
1.42391 ++ "BFD_RELOC_PPC64_HIGHEST_S",
1.42392 ++ "BFD_RELOC_PPC64_TOC16_LO",
1.42393 ++ "BFD_RELOC_PPC64_TOC16_HI",
1.42394 ++ "BFD_RELOC_PPC64_TOC16_HA",
1.42395 ++ "BFD_RELOC_PPC64_TOC",
1.42396 ++ "BFD_RELOC_PPC64_PLTGOT16",
1.42397 ++ "BFD_RELOC_PPC64_PLTGOT16_LO",
1.42398 ++ "BFD_RELOC_PPC64_PLTGOT16_HI",
1.42399 ++ "BFD_RELOC_PPC64_PLTGOT16_HA",
1.42400 ++ "BFD_RELOC_PPC64_ADDR16_DS",
1.42401 ++ "BFD_RELOC_PPC64_ADDR16_LO_DS",
1.42402 ++ "BFD_RELOC_PPC64_GOT16_DS",
1.42403 ++ "BFD_RELOC_PPC64_GOT16_LO_DS",
1.42404 ++ "BFD_RELOC_PPC64_PLT16_LO_DS",
1.42405 ++ "BFD_RELOC_PPC64_SECTOFF_DS",
1.42406 ++ "BFD_RELOC_PPC64_SECTOFF_LO_DS",
1.42407 ++ "BFD_RELOC_PPC64_TOC16_DS",
1.42408 ++ "BFD_RELOC_PPC64_TOC16_LO_DS",
1.42409 ++ "BFD_RELOC_PPC64_PLTGOT16_DS",
1.42410 ++ "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
1.42411 ++ "BFD_RELOC_PPC_TLS",
1.42412 ++ "BFD_RELOC_PPC_DTPMOD",
1.42413 ++ "BFD_RELOC_PPC_TPREL16",
1.42414 ++ "BFD_RELOC_PPC_TPREL16_LO",
1.42415 ++ "BFD_RELOC_PPC_TPREL16_HI",
1.42416 ++ "BFD_RELOC_PPC_TPREL16_HA",
1.42417 ++ "BFD_RELOC_PPC_TPREL",
1.42418 ++ "BFD_RELOC_PPC_DTPREL16",
1.42419 ++ "BFD_RELOC_PPC_DTPREL16_LO",
1.42420 ++ "BFD_RELOC_PPC_DTPREL16_HI",
1.42421 ++ "BFD_RELOC_PPC_DTPREL16_HA",
1.42422 ++ "BFD_RELOC_PPC_DTPREL",
1.42423 ++ "BFD_RELOC_PPC_GOT_TLSGD16",
1.42424 ++ "BFD_RELOC_PPC_GOT_TLSGD16_LO",
1.42425 ++ "BFD_RELOC_PPC_GOT_TLSGD16_HI",
1.42426 ++ "BFD_RELOC_PPC_GOT_TLSGD16_HA",
1.42427 ++ "BFD_RELOC_PPC_GOT_TLSLD16",
1.42428 ++ "BFD_RELOC_PPC_GOT_TLSLD16_LO",
1.42429 ++ "BFD_RELOC_PPC_GOT_TLSLD16_HI",
1.42430 ++ "BFD_RELOC_PPC_GOT_TLSLD16_HA",
1.42431 ++ "BFD_RELOC_PPC_GOT_TPREL16",
1.42432 ++ "BFD_RELOC_PPC_GOT_TPREL16_LO",
1.42433 ++ "BFD_RELOC_PPC_GOT_TPREL16_HI",
1.42434 ++ "BFD_RELOC_PPC_GOT_TPREL16_HA",
1.42435 ++ "BFD_RELOC_PPC_GOT_DTPREL16",
1.42436 ++ "BFD_RELOC_PPC_GOT_DTPREL16_LO",
1.42437 ++ "BFD_RELOC_PPC_GOT_DTPREL16_HI",
1.42438 ++ "BFD_RELOC_PPC_GOT_DTPREL16_HA",
1.42439 ++ "BFD_RELOC_PPC64_TPREL16_DS",
1.42440 ++ "BFD_RELOC_PPC64_TPREL16_LO_DS",
1.42441 ++ "BFD_RELOC_PPC64_TPREL16_HIGHER",
1.42442 ++ "BFD_RELOC_PPC64_TPREL16_HIGHERA",
1.42443 ++ "BFD_RELOC_PPC64_TPREL16_HIGHEST",
1.42444 ++ "BFD_RELOC_PPC64_TPREL16_HIGHESTA",
1.42445 ++ "BFD_RELOC_PPC64_DTPREL16_DS",
1.42446 ++ "BFD_RELOC_PPC64_DTPREL16_LO_DS",
1.42447 ++ "BFD_RELOC_PPC64_DTPREL16_HIGHER",
1.42448 ++ "BFD_RELOC_PPC64_DTPREL16_HIGHERA",
1.42449 ++ "BFD_RELOC_PPC64_DTPREL16_HIGHEST",
1.42450 ++ "BFD_RELOC_PPC64_DTPREL16_HIGHESTA",
1.42451 ++ "BFD_RELOC_I370_D12",
1.42452 ++ "BFD_RELOC_CTOR",
1.42453 ++ "BFD_RELOC_ARM_PCREL_BRANCH",
1.42454 ++ "BFD_RELOC_ARM_PCREL_BLX",
1.42455 ++ "BFD_RELOC_THUMB_PCREL_BLX",
1.42456 ++ "BFD_RELOC_ARM_PCREL_CALL",
1.42457 ++ "BFD_RELOC_ARM_PCREL_JUMP",
1.42458 ++ "BFD_RELOC_THUMB_PCREL_BRANCH7",
1.42459 ++ "BFD_RELOC_THUMB_PCREL_BRANCH9",
1.42460 ++ "BFD_RELOC_THUMB_PCREL_BRANCH12",
1.42461 ++ "BFD_RELOC_THUMB_PCREL_BRANCH20",
1.42462 ++ "BFD_RELOC_THUMB_PCREL_BRANCH23",
1.42463 ++ "BFD_RELOC_THUMB_PCREL_BRANCH25",
1.42464 ++ "BFD_RELOC_ARM_OFFSET_IMM",
1.42465 ++ "BFD_RELOC_ARM_THUMB_OFFSET",
1.42466 ++ "BFD_RELOC_ARM_TARGET1",
1.42467 ++ "BFD_RELOC_ARM_ROSEGREL32",
1.42468 ++ "BFD_RELOC_ARM_SBREL32",
1.42469 ++ "BFD_RELOC_ARM_TARGET2",
1.42470 ++ "BFD_RELOC_ARM_PREL31",
1.42471 ++ "BFD_RELOC_ARM_MOVW",
1.42472 ++ "BFD_RELOC_ARM_MOVT",
1.42473 ++ "BFD_RELOC_ARM_MOVW_PCREL",
1.42474 ++ "BFD_RELOC_ARM_MOVT_PCREL",
1.42475 ++ "BFD_RELOC_ARM_THUMB_MOVW",
1.42476 ++ "BFD_RELOC_ARM_THUMB_MOVT",
1.42477 ++ "BFD_RELOC_ARM_THUMB_MOVW_PCREL",
1.42478 ++ "BFD_RELOC_ARM_THUMB_MOVT_PCREL",
1.42479 ++ "BFD_RELOC_ARM_JUMP_SLOT",
1.42480 ++ "BFD_RELOC_ARM_GLOB_DAT",
1.42481 ++ "BFD_RELOC_ARM_GOT32",
1.42482 ++ "BFD_RELOC_ARM_PLT32",
1.42483 ++ "BFD_RELOC_ARM_RELATIVE",
1.42484 ++ "BFD_RELOC_ARM_GOTOFF",
1.42485 ++ "BFD_RELOC_ARM_GOTPC",
1.42486 ++ "BFD_RELOC_ARM_TLS_GD32",
1.42487 ++ "BFD_RELOC_ARM_TLS_LDO32",
1.42488 ++ "BFD_RELOC_ARM_TLS_LDM32",
1.42489 ++ "BFD_RELOC_ARM_TLS_DTPOFF32",
1.42490 ++ "BFD_RELOC_ARM_TLS_DTPMOD32",
1.42491 ++ "BFD_RELOC_ARM_TLS_TPOFF32",
1.42492 ++ "BFD_RELOC_ARM_TLS_IE32",
1.42493 ++ "BFD_RELOC_ARM_TLS_LE32",
1.42494 ++ "BFD_RELOC_ARM_ALU_PC_G0_NC",
1.42495 ++ "BFD_RELOC_ARM_ALU_PC_G0",
1.42496 ++ "BFD_RELOC_ARM_ALU_PC_G1_NC",
1.42497 ++ "BFD_RELOC_ARM_ALU_PC_G1",
1.42498 ++ "BFD_RELOC_ARM_ALU_PC_G2",
1.42499 ++ "BFD_RELOC_ARM_LDR_PC_G0",
1.42500 ++ "BFD_RELOC_ARM_LDR_PC_G1",
1.42501 ++ "BFD_RELOC_ARM_LDR_PC_G2",
1.42502 ++ "BFD_RELOC_ARM_LDRS_PC_G0",
1.42503 ++ "BFD_RELOC_ARM_LDRS_PC_G1",
1.42504 ++ "BFD_RELOC_ARM_LDRS_PC_G2",
1.42505 ++ "BFD_RELOC_ARM_LDC_PC_G0",
1.42506 ++ "BFD_RELOC_ARM_LDC_PC_G1",
1.42507 ++ "BFD_RELOC_ARM_LDC_PC_G2",
1.42508 ++ "BFD_RELOC_ARM_ALU_SB_G0_NC",
1.42509 ++ "BFD_RELOC_ARM_ALU_SB_G0",
1.42510 ++ "BFD_RELOC_ARM_ALU_SB_G1_NC",
1.42511 ++ "BFD_RELOC_ARM_ALU_SB_G1",
1.42512 ++ "BFD_RELOC_ARM_ALU_SB_G2",
1.42513 ++ "BFD_RELOC_ARM_LDR_SB_G0",
1.42514 ++ "BFD_RELOC_ARM_LDR_SB_G1",
1.42515 ++ "BFD_RELOC_ARM_LDR_SB_G2",
1.42516 ++ "BFD_RELOC_ARM_LDRS_SB_G0",
1.42517 ++ "BFD_RELOC_ARM_LDRS_SB_G1",
1.42518 ++ "BFD_RELOC_ARM_LDRS_SB_G2",
1.42519 ++ "BFD_RELOC_ARM_LDC_SB_G0",
1.42520 ++ "BFD_RELOC_ARM_LDC_SB_G1",
1.42521 ++ "BFD_RELOC_ARM_LDC_SB_G2",
1.42522 ++ "BFD_RELOC_ARM_IMMEDIATE",
1.42523 ++ "BFD_RELOC_ARM_ADRL_IMMEDIATE",
1.42524 ++ "BFD_RELOC_ARM_T32_IMMEDIATE",
1.42525 ++ "BFD_RELOC_ARM_T32_ADD_IMM",
1.42526 ++ "BFD_RELOC_ARM_T32_IMM12",
1.42527 ++ "BFD_RELOC_ARM_T32_ADD_PC12",
1.42528 ++ "BFD_RELOC_ARM_SHIFT_IMM",
1.42529 ++ "BFD_RELOC_ARM_SMC",
1.42530 ++ "BFD_RELOC_ARM_SWI",
1.42531 ++ "BFD_RELOC_ARM_MULTI",
1.42532 ++ "BFD_RELOC_ARM_CP_OFF_IMM",
1.42533 ++ "BFD_RELOC_ARM_CP_OFF_IMM_S2",
1.42534 ++ "BFD_RELOC_ARM_T32_CP_OFF_IMM",
1.42535 ++ "BFD_RELOC_ARM_T32_CP_OFF_IMM_S2",
1.42536 ++ "BFD_RELOC_ARM_ADR_IMM",
1.42537 ++ "BFD_RELOC_ARM_LDR_IMM",
1.42538 ++ "BFD_RELOC_ARM_LITERAL",
1.42539 ++ "BFD_RELOC_ARM_IN_POOL",
1.42540 ++ "BFD_RELOC_ARM_OFFSET_IMM8",
1.42541 ++ "BFD_RELOC_ARM_T32_OFFSET_U8",
1.42542 ++ "BFD_RELOC_ARM_T32_OFFSET_IMM",
1.42543 ++ "BFD_RELOC_ARM_HWLITERAL",
1.42544 ++ "BFD_RELOC_ARM_THUMB_ADD",
1.42545 ++ "BFD_RELOC_ARM_THUMB_IMM",
1.42546 ++ "BFD_RELOC_ARM_THUMB_SHIFT",
1.42547 ++ "BFD_RELOC_SH_PCDISP8BY2",
1.42548 ++ "BFD_RELOC_SH_PCDISP12BY2",
1.42549 ++ "BFD_RELOC_SH_IMM3",
1.42550 ++ "BFD_RELOC_SH_IMM3U",
1.42551 ++ "BFD_RELOC_SH_DISP12",
1.42552 ++ "BFD_RELOC_SH_DISP12BY2",
1.42553 ++ "BFD_RELOC_SH_DISP12BY4",
1.42554 ++ "BFD_RELOC_SH_DISP12BY8",
1.42555 ++ "BFD_RELOC_SH_DISP20",
1.42556 ++ "BFD_RELOC_SH_DISP20BY8",
1.42557 ++ "BFD_RELOC_SH_IMM4",
1.42558 ++ "BFD_RELOC_SH_IMM4BY2",
1.42559 ++ "BFD_RELOC_SH_IMM4BY4",
1.42560 ++ "BFD_RELOC_SH_IMM8",
1.42561 ++ "BFD_RELOC_SH_IMM8BY2",
1.42562 ++ "BFD_RELOC_SH_IMM8BY4",
1.42563 ++ "BFD_RELOC_SH_PCRELIMM8BY2",
1.42564 ++ "BFD_RELOC_SH_PCRELIMM8BY4",
1.42565 ++ "BFD_RELOC_SH_SWITCH16",
1.42566 ++ "BFD_RELOC_SH_SWITCH32",
1.42567 ++ "BFD_RELOC_SH_USES",
1.42568 ++ "BFD_RELOC_SH_COUNT",
1.42569 ++ "BFD_RELOC_SH_ALIGN",
1.42570 ++ "BFD_RELOC_SH_CODE",
1.42571 ++ "BFD_RELOC_SH_DATA",
1.42572 ++ "BFD_RELOC_SH_LABEL",
1.42573 ++ "BFD_RELOC_SH_LOOP_START",
1.42574 ++ "BFD_RELOC_SH_LOOP_END",
1.42575 ++ "BFD_RELOC_SH_COPY",
1.42576 ++ "BFD_RELOC_SH_GLOB_DAT",
1.42577 ++ "BFD_RELOC_SH_JMP_SLOT",
1.42578 ++ "BFD_RELOC_SH_RELATIVE",
1.42579 ++ "BFD_RELOC_SH_GOTPC",
1.42580 ++ "BFD_RELOC_SH_GOT_LOW16",
1.42581 ++ "BFD_RELOC_SH_GOT_MEDLOW16",
1.42582 ++ "BFD_RELOC_SH_GOT_MEDHI16",
1.42583 ++ "BFD_RELOC_SH_GOT_HI16",
1.42584 ++ "BFD_RELOC_SH_GOTPLT_LOW16",
1.42585 ++ "BFD_RELOC_SH_GOTPLT_MEDLOW16",
1.42586 ++ "BFD_RELOC_SH_GOTPLT_MEDHI16",
1.42587 ++ "BFD_RELOC_SH_GOTPLT_HI16",
1.42588 ++ "BFD_RELOC_SH_PLT_LOW16",
1.42589 ++ "BFD_RELOC_SH_PLT_MEDLOW16",
1.42590 ++ "BFD_RELOC_SH_PLT_MEDHI16",
1.42591 ++ "BFD_RELOC_SH_PLT_HI16",
1.42592 ++ "BFD_RELOC_SH_GOTOFF_LOW16",
1.42593 ++ "BFD_RELOC_SH_GOTOFF_MEDLOW16",
1.42594 ++ "BFD_RELOC_SH_GOTOFF_MEDHI16",
1.42595 ++ "BFD_RELOC_SH_GOTOFF_HI16",
1.42596 ++ "BFD_RELOC_SH_GOTPC_LOW16",
1.42597 ++ "BFD_RELOC_SH_GOTPC_MEDLOW16",
1.42598 ++ "BFD_RELOC_SH_GOTPC_MEDHI16",
1.42599 ++ "BFD_RELOC_SH_GOTPC_HI16",
1.42600 ++ "BFD_RELOC_SH_COPY64",
1.42601 ++ "BFD_RELOC_SH_GLOB_DAT64",
1.42602 ++ "BFD_RELOC_SH_JMP_SLOT64",
1.42603 ++ "BFD_RELOC_SH_RELATIVE64",
1.42604 ++ "BFD_RELOC_SH_GOT10BY4",
1.42605 ++ "BFD_RELOC_SH_GOT10BY8",
1.42606 ++ "BFD_RELOC_SH_GOTPLT10BY4",
1.42607 ++ "BFD_RELOC_SH_GOTPLT10BY8",
1.42608 ++ "BFD_RELOC_SH_GOTPLT32",
1.42609 ++ "BFD_RELOC_SH_SHMEDIA_CODE",
1.42610 ++ "BFD_RELOC_SH_IMMU5",
1.42611 ++ "BFD_RELOC_SH_IMMS6",
1.42612 ++ "BFD_RELOC_SH_IMMS6BY32",
1.42613 ++ "BFD_RELOC_SH_IMMU6",
1.42614 ++ "BFD_RELOC_SH_IMMS10",
1.42615 ++ "BFD_RELOC_SH_IMMS10BY2",
1.42616 ++ "BFD_RELOC_SH_IMMS10BY4",
1.42617 ++ "BFD_RELOC_SH_IMMS10BY8",
1.42618 ++ "BFD_RELOC_SH_IMMS16",
1.42619 ++ "BFD_RELOC_SH_IMMU16",
1.42620 ++ "BFD_RELOC_SH_IMM_LOW16",
1.42621 ++ "BFD_RELOC_SH_IMM_LOW16_PCREL",
1.42622 ++ "BFD_RELOC_SH_IMM_MEDLOW16",
1.42623 ++ "BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
1.42624 ++ "BFD_RELOC_SH_IMM_MEDHI16",
1.42625 ++ "BFD_RELOC_SH_IMM_MEDHI16_PCREL",
1.42626 ++ "BFD_RELOC_SH_IMM_HI16",
1.42627 ++ "BFD_RELOC_SH_IMM_HI16_PCREL",
1.42628 ++ "BFD_RELOC_SH_PT_16",
1.42629 ++ "BFD_RELOC_SH_TLS_GD_32",
1.42630 ++ "BFD_RELOC_SH_TLS_LD_32",
1.42631 ++ "BFD_RELOC_SH_TLS_LDO_32",
1.42632 ++ "BFD_RELOC_SH_TLS_IE_32",
1.42633 ++ "BFD_RELOC_SH_TLS_LE_32",
1.42634 ++ "BFD_RELOC_SH_TLS_DTPMOD32",
1.42635 ++ "BFD_RELOC_SH_TLS_DTPOFF32",
1.42636 ++ "BFD_RELOC_SH_TLS_TPOFF32",
1.42637 ++ "BFD_RELOC_ARC_B22_PCREL",
1.42638 ++ "BFD_RELOC_ARC_B26",
1.42639 ++ "BFD_RELOC_BFIN_16_IMM",
1.42640 ++ "BFD_RELOC_BFIN_16_HIGH",
1.42641 ++ "BFD_RELOC_BFIN_4_PCREL",
1.42642 ++ "BFD_RELOC_BFIN_5_PCREL",
1.42643 ++ "BFD_RELOC_BFIN_16_LOW",
1.42644 ++ "BFD_RELOC_BFIN_10_PCREL",
1.42645 ++ "BFD_RELOC_BFIN_11_PCREL",
1.42646 ++ "BFD_RELOC_BFIN_12_PCREL_JUMP",
1.42647 ++ "BFD_RELOC_BFIN_12_PCREL_JUMP_S",
1.42648 ++ "BFD_RELOC_BFIN_24_PCREL_CALL_X",
1.42649 ++ "BFD_RELOC_BFIN_24_PCREL_JUMP_L",
1.42650 ++ "BFD_RELOC_BFIN_GOT17M4",
1.42651 ++ "BFD_RELOC_BFIN_GOTHI",
1.42652 ++ "BFD_RELOC_BFIN_GOTLO",
1.42653 ++ "BFD_RELOC_BFIN_FUNCDESC",
1.42654 ++ "BFD_RELOC_BFIN_FUNCDESC_GOT17M4",
1.42655 ++ "BFD_RELOC_BFIN_FUNCDESC_GOTHI",
1.42656 ++ "BFD_RELOC_BFIN_FUNCDESC_GOTLO",
1.42657 ++ "BFD_RELOC_BFIN_FUNCDESC_VALUE",
1.42658 ++ "BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4",
1.42659 ++ "BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI",
1.42660 ++ "BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO",
1.42661 ++ "BFD_RELOC_BFIN_GOTOFF17M4",
1.42662 ++ "BFD_RELOC_BFIN_GOTOFFHI",
1.42663 ++ "BFD_RELOC_BFIN_GOTOFFLO",
1.42664 ++ "BFD_RELOC_BFIN_GOT",
1.42665 ++ "BFD_RELOC_BFIN_PLTPC",
1.42666 ++ "BFD_ARELOC_BFIN_PUSH",
1.42667 ++ "BFD_ARELOC_BFIN_CONST",
1.42668 ++ "BFD_ARELOC_BFIN_ADD",
1.42669 ++ "BFD_ARELOC_BFIN_SUB",
1.42670 ++ "BFD_ARELOC_BFIN_MULT",
1.42671 ++ "BFD_ARELOC_BFIN_DIV",
1.42672 ++ "BFD_ARELOC_BFIN_MOD",
1.42673 ++ "BFD_ARELOC_BFIN_LSHIFT",
1.42674 ++ "BFD_ARELOC_BFIN_RSHIFT",
1.42675 ++ "BFD_ARELOC_BFIN_AND",
1.42676 ++ "BFD_ARELOC_BFIN_OR",
1.42677 ++ "BFD_ARELOC_BFIN_XOR",
1.42678 ++ "BFD_ARELOC_BFIN_LAND",
1.42679 ++ "BFD_ARELOC_BFIN_LOR",
1.42680 ++ "BFD_ARELOC_BFIN_LEN",
1.42681 ++ "BFD_ARELOC_BFIN_NEG",
1.42682 ++ "BFD_ARELOC_BFIN_COMP",
1.42683 ++ "BFD_ARELOC_BFIN_PAGE",
1.42684 ++ "BFD_ARELOC_BFIN_HWPAGE",
1.42685 ++ "BFD_ARELOC_BFIN_ADDR",
1.42686 ++ "BFD_RELOC_D10V_10_PCREL_R",
1.42687 ++ "BFD_RELOC_D10V_10_PCREL_L",
1.42688 ++ "BFD_RELOC_D10V_18",
1.42689 ++ "BFD_RELOC_D10V_18_PCREL",
1.42690 ++ "BFD_RELOC_D30V_6",
1.42691 ++ "BFD_RELOC_D30V_9_PCREL",
1.42692 ++ "BFD_RELOC_D30V_9_PCREL_R",
1.42693 ++ "BFD_RELOC_D30V_15",
1.42694 ++ "BFD_RELOC_D30V_15_PCREL",
1.42695 ++ "BFD_RELOC_D30V_15_PCREL_R",
1.42696 ++ "BFD_RELOC_D30V_21",
1.42697 ++ "BFD_RELOC_D30V_21_PCREL",
1.42698 ++ "BFD_RELOC_D30V_21_PCREL_R",
1.42699 ++ "BFD_RELOC_D30V_32",
1.42700 ++ "BFD_RELOC_D30V_32_PCREL",
1.42701 ++ "BFD_RELOC_DLX_HI16_S",
1.42702 ++ "BFD_RELOC_DLX_LO16",
1.42703 ++ "BFD_RELOC_DLX_JMP26",
1.42704 ++ "BFD_RELOC_M32C_HI8",
1.42705 ++ "BFD_RELOC_M32C_RL_JUMP",
1.42706 ++ "BFD_RELOC_M32C_RL_1ADDR",
1.42707 ++ "BFD_RELOC_M32C_RL_2ADDR",
1.42708 ++ "BFD_RELOC_M32R_24",
1.42709 ++ "BFD_RELOC_M32R_10_PCREL",
1.42710 ++ "BFD_RELOC_M32R_18_PCREL",
1.42711 ++ "BFD_RELOC_M32R_26_PCREL",
1.42712 ++ "BFD_RELOC_M32R_HI16_ULO",
1.42713 ++ "BFD_RELOC_M32R_HI16_SLO",
1.42714 ++ "BFD_RELOC_M32R_LO16",
1.42715 ++ "BFD_RELOC_M32R_SDA16",
1.42716 ++ "BFD_RELOC_M32R_GOT24",
1.42717 ++ "BFD_RELOC_M32R_26_PLTREL",
1.42718 ++ "BFD_RELOC_M32R_COPY",
1.42719 ++ "BFD_RELOC_M32R_GLOB_DAT",
1.42720 ++ "BFD_RELOC_M32R_JMP_SLOT",
1.42721 ++ "BFD_RELOC_M32R_RELATIVE",
1.42722 ++ "BFD_RELOC_M32R_GOTOFF",
1.42723 ++ "BFD_RELOC_M32R_GOTOFF_HI_ULO",
1.42724 ++ "BFD_RELOC_M32R_GOTOFF_HI_SLO",
1.42725 ++ "BFD_RELOC_M32R_GOTOFF_LO",
1.42726 ++ "BFD_RELOC_M32R_GOTPC24",
1.42727 ++ "BFD_RELOC_M32R_GOT16_HI_ULO",
1.42728 ++ "BFD_RELOC_M32R_GOT16_HI_SLO",
1.42729 ++ "BFD_RELOC_M32R_GOT16_LO",
1.42730 ++ "BFD_RELOC_M32R_GOTPC_HI_ULO",
1.42731 ++ "BFD_RELOC_M32R_GOTPC_HI_SLO",
1.42732 ++ "BFD_RELOC_M32R_GOTPC_LO",
1.42733 ++ "BFD_RELOC_V850_9_PCREL",
1.42734 ++ "BFD_RELOC_V850_22_PCREL",
1.42735 ++ "BFD_RELOC_V850_SDA_16_16_OFFSET",
1.42736 ++ "BFD_RELOC_V850_SDA_15_16_OFFSET",
1.42737 ++ "BFD_RELOC_V850_ZDA_16_16_OFFSET",
1.42738 ++ "BFD_RELOC_V850_ZDA_15_16_OFFSET",
1.42739 ++ "BFD_RELOC_V850_TDA_6_8_OFFSET",
1.42740 ++ "BFD_RELOC_V850_TDA_7_8_OFFSET",
1.42741 ++ "BFD_RELOC_V850_TDA_7_7_OFFSET",
1.42742 ++ "BFD_RELOC_V850_TDA_16_16_OFFSET",
1.42743 ++ "BFD_RELOC_V850_TDA_4_5_OFFSET",
1.42744 ++ "BFD_RELOC_V850_TDA_4_4_OFFSET",
1.42745 ++ "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
1.42746 ++ "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
1.42747 ++ "BFD_RELOC_V850_CALLT_6_7_OFFSET",
1.42748 ++ "BFD_RELOC_V850_CALLT_16_16_OFFSET",
1.42749 ++ "BFD_RELOC_V850_LONGCALL",
1.42750 ++ "BFD_RELOC_V850_LONGJUMP",
1.42751 ++ "BFD_RELOC_V850_ALIGN",
1.42752 ++ "BFD_RELOC_V850_LO16_SPLIT_OFFSET",
1.42753 ++ "BFD_RELOC_MN10300_32_PCREL",
1.42754 ++ "BFD_RELOC_MN10300_16_PCREL",
1.42755 ++ "BFD_RELOC_TIC30_LDP",
1.42756 ++ "BFD_RELOC_TIC54X_PARTLS7",
1.42757 ++ "BFD_RELOC_TIC54X_PARTMS9",
1.42758 ++ "BFD_RELOC_TIC54X_23",
1.42759 ++ "BFD_RELOC_TIC54X_16_OF_23",
1.42760 ++ "BFD_RELOC_TIC54X_MS7_OF_23",
1.42761 ++ "BFD_RELOC_FR30_48",
1.42762 ++ "BFD_RELOC_FR30_20",
1.42763 ++ "BFD_RELOC_FR30_6_IN_4",
1.42764 ++ "BFD_RELOC_FR30_8_IN_8",
1.42765 ++ "BFD_RELOC_FR30_9_IN_8",
1.42766 ++ "BFD_RELOC_FR30_10_IN_8",
1.42767 ++ "BFD_RELOC_FR30_9_PCREL",
1.42768 ++ "BFD_RELOC_FR30_12_PCREL",
1.42769 ++ "BFD_RELOC_MCORE_PCREL_IMM8BY4",
1.42770 ++ "BFD_RELOC_MCORE_PCREL_IMM11BY2",
1.42771 ++ "BFD_RELOC_MCORE_PCREL_IMM4BY2",
1.42772 ++ "BFD_RELOC_MCORE_PCREL_32",
1.42773 ++ "BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2",
1.42774 ++ "BFD_RELOC_MCORE_RVA",
1.42775 ++ "BFD_RELOC_MEP_8",
1.42776 ++ "BFD_RELOC_MEP_16",
1.42777 ++ "BFD_RELOC_MEP_32",
1.42778 ++ "BFD_RELOC_MEP_PCREL8A2",
1.42779 ++ "BFD_RELOC_MEP_PCREL12A2",
1.42780 ++ "BFD_RELOC_MEP_PCREL17A2",
1.42781 ++ "BFD_RELOC_MEP_PCREL24A2",
1.42782 ++ "BFD_RELOC_MEP_PCABS24A2",
1.42783 ++ "BFD_RELOC_MEP_LOW16",
1.42784 ++ "BFD_RELOC_MEP_HI16U",
1.42785 ++ "BFD_RELOC_MEP_HI16S",
1.42786 ++ "BFD_RELOC_MEP_GPREL",
1.42787 ++ "BFD_RELOC_MEP_TPREL",
1.42788 ++ "BFD_RELOC_MEP_TPREL7",
1.42789 ++ "BFD_RELOC_MEP_TPREL7A2",
1.42790 ++ "BFD_RELOC_MEP_TPREL7A4",
1.42791 ++ "BFD_RELOC_MEP_UIMM24",
1.42792 ++ "BFD_RELOC_MEP_ADDR24A4",
1.42793 ++ "BFD_RELOC_MEP_GNU_VTINHERIT",
1.42794 ++ "BFD_RELOC_MEP_GNU_VTENTRY",
1.42795 ++
1.42796 ++ "BFD_RELOC_MMIX_GETA",
1.42797 ++ "BFD_RELOC_MMIX_GETA_1",
1.42798 ++ "BFD_RELOC_MMIX_GETA_2",
1.42799 ++ "BFD_RELOC_MMIX_GETA_3",
1.42800 ++ "BFD_RELOC_MMIX_CBRANCH",
1.42801 ++ "BFD_RELOC_MMIX_CBRANCH_J",
1.42802 ++ "BFD_RELOC_MMIX_CBRANCH_1",
1.42803 ++ "BFD_RELOC_MMIX_CBRANCH_2",
1.42804 ++ "BFD_RELOC_MMIX_CBRANCH_3",
1.42805 ++ "BFD_RELOC_MMIX_PUSHJ",
1.42806 ++ "BFD_RELOC_MMIX_PUSHJ_1",
1.42807 ++ "BFD_RELOC_MMIX_PUSHJ_2",
1.42808 ++ "BFD_RELOC_MMIX_PUSHJ_3",
1.42809 ++ "BFD_RELOC_MMIX_PUSHJ_STUBBABLE",
1.42810 ++ "BFD_RELOC_MMIX_JMP",
1.42811 ++ "BFD_RELOC_MMIX_JMP_1",
1.42812 ++ "BFD_RELOC_MMIX_JMP_2",
1.42813 ++ "BFD_RELOC_MMIX_JMP_3",
1.42814 ++ "BFD_RELOC_MMIX_ADDR19",
1.42815 ++ "BFD_RELOC_MMIX_ADDR27",
1.42816 ++ "BFD_RELOC_MMIX_REG_OR_BYTE",
1.42817 ++ "BFD_RELOC_MMIX_REG",
1.42818 ++ "BFD_RELOC_MMIX_BASE_PLUS_OFFSET",
1.42819 ++ "BFD_RELOC_MMIX_LOCAL",
1.42820 ++ "BFD_RELOC_AVR_7_PCREL",
1.42821 ++ "BFD_RELOC_AVR_13_PCREL",
1.42822 ++ "BFD_RELOC_AVR_16_PM",
1.42823 ++ "BFD_RELOC_AVR_LO8_LDI",
1.42824 ++ "BFD_RELOC_AVR_HI8_LDI",
1.42825 ++ "BFD_RELOC_AVR_HH8_LDI",
1.42826 ++ "BFD_RELOC_AVR_MS8_LDI",
1.42827 ++ "BFD_RELOC_AVR_LO8_LDI_NEG",
1.42828 ++ "BFD_RELOC_AVR_HI8_LDI_NEG",
1.42829 ++ "BFD_RELOC_AVR_HH8_LDI_NEG",
1.42830 ++ "BFD_RELOC_AVR_MS8_LDI_NEG",
1.42831 ++ "BFD_RELOC_AVR_LO8_LDI_PM",
1.42832 ++ "BFD_RELOC_AVR_LO8_LDI_GS",
1.42833 ++ "BFD_RELOC_AVR_HI8_LDI_PM",
1.42834 ++ "BFD_RELOC_AVR_HI8_LDI_GS",
1.42835 ++ "BFD_RELOC_AVR_HH8_LDI_PM",
1.42836 ++ "BFD_RELOC_AVR_LO8_LDI_PM_NEG",
1.42837 ++ "BFD_RELOC_AVR_HI8_LDI_PM_NEG",
1.42838 ++ "BFD_RELOC_AVR_HH8_LDI_PM_NEG",
1.42839 ++ "BFD_RELOC_AVR_CALL",
1.42840 ++ "BFD_RELOC_AVR_LDI",
1.42841 ++ "BFD_RELOC_AVR_6",
1.42842 ++ "BFD_RELOC_AVR_6_ADIW",
1.42843 ++ "BFD_RELOC_AVR32_DIFF32",
1.42844 ++ "BFD_RELOC_AVR32_DIFF16",
1.42845 ++ "BFD_RELOC_AVR32_DIFF8",
1.42846 ++ "BFD_RELOC_AVR32_GOT32",
1.42847 ++ "BFD_RELOC_AVR32_GOT16",
1.42848 ++ "BFD_RELOC_AVR32_GOT8",
1.42849 ++ "BFD_RELOC_AVR32_21S",
1.42850 ++ "BFD_RELOC_AVR32_16U",
1.42851 ++ "BFD_RELOC_AVR32_16S",
1.42852 ++ "BFD_RELOC_AVR32_SUB5",
1.42853 ++ "BFD_RELOC_AVR32_8S_EXT",
1.42854 ++ "BFD_RELOC_AVR32_8S",
1.42855 ++ "BFD_RELOC_AVR32_15S",
1.42856 ++ "BFD_RELOC_AVR32_22H_PCREL",
1.42857 ++ "BFD_RELOC_AVR32_18W_PCREL",
1.42858 ++ "BFD_RELOC_AVR32_16B_PCREL",
1.42859 ++ "BFD_RELOC_AVR32_16N_PCREL",
1.42860 ++ "BFD_RELOC_AVR32_14UW_PCREL",
1.42861 ++ "BFD_RELOC_AVR32_11H_PCREL",
1.42862 ++ "BFD_RELOC_AVR32_10UW_PCREL",
1.42863 ++ "BFD_RELOC_AVR32_9H_PCREL",
1.42864 ++ "BFD_RELOC_AVR32_9UW_PCREL",
1.42865 ++ "BFD_RELOC_AVR32_GOTPC",
1.42866 ++ "BFD_RELOC_AVR32_GOTCALL",
1.42867 ++ "BFD_RELOC_AVR32_LDA_GOT",
1.42868 ++ "BFD_RELOC_AVR32_GOT21S",
1.42869 ++ "BFD_RELOC_AVR32_GOT18SW",
1.42870 ++ "BFD_RELOC_AVR32_GOT16S",
1.42871 ++ "BFD_RELOC_AVR32_32_CPENT",
1.42872 ++ "BFD_RELOC_AVR32_CPCALL",
1.42873 ++ "BFD_RELOC_AVR32_16_CP",
1.42874 ++ "BFD_RELOC_AVR32_9W_CP",
1.42875 ++ "BFD_RELOC_AVR32_ALIGN",
1.42876 ++ "BFD_RELOC_AVR32_14UW",
1.42877 ++ "BFD_RELOC_AVR32_10UW",
1.42878 ++ "BFD_RELOC_AVR32_10SW",
1.42879 ++ "BFD_RELOC_AVR32_STHH_W",
1.42880 ++ "BFD_RELOC_AVR32_7UW",
1.42881 ++ "BFD_RELOC_AVR32_6S",
1.42882 ++ "BFD_RELOC_AVR32_6UW",
1.42883 ++ "BFD_RELOC_AVR32_4UH",
1.42884 ++ "BFD_RELOC_AVR32_3U",
1.42885 ++ "BFD_RELOC_390_12",
1.42886 ++ "BFD_RELOC_390_GOT12",
1.42887 ++ "BFD_RELOC_390_PLT32",
1.42888 ++ "BFD_RELOC_390_COPY",
1.42889 ++ "BFD_RELOC_390_GLOB_DAT",
1.42890 ++ "BFD_RELOC_390_JMP_SLOT",
1.42891 ++ "BFD_RELOC_390_RELATIVE",
1.42892 ++ "BFD_RELOC_390_GOTPC",
1.42893 ++ "BFD_RELOC_390_GOT16",
1.42894 ++ "BFD_RELOC_390_PC16DBL",
1.42895 ++ "BFD_RELOC_390_PLT16DBL",
1.42896 ++ "BFD_RELOC_390_PC32DBL",
1.42897 ++ "BFD_RELOC_390_PLT32DBL",
1.42898 ++ "BFD_RELOC_390_GOTPCDBL",
1.42899 ++ "BFD_RELOC_390_GOT64",
1.42900 ++ "BFD_RELOC_390_PLT64",
1.42901 ++ "BFD_RELOC_390_GOTENT",
1.42902 ++ "BFD_RELOC_390_GOTOFF64",
1.42903 ++ "BFD_RELOC_390_GOTPLT12",
1.42904 ++ "BFD_RELOC_390_GOTPLT16",
1.42905 ++ "BFD_RELOC_390_GOTPLT32",
1.42906 ++ "BFD_RELOC_390_GOTPLT64",
1.42907 ++ "BFD_RELOC_390_GOTPLTENT",
1.42908 ++ "BFD_RELOC_390_PLTOFF16",
1.42909 ++ "BFD_RELOC_390_PLTOFF32",
1.42910 ++ "BFD_RELOC_390_PLTOFF64",
1.42911 ++ "BFD_RELOC_390_TLS_LOAD",
1.42912 ++ "BFD_RELOC_390_TLS_GDCALL",
1.42913 ++ "BFD_RELOC_390_TLS_LDCALL",
1.42914 ++ "BFD_RELOC_390_TLS_GD32",
1.42915 ++ "BFD_RELOC_390_TLS_GD64",
1.42916 ++ "BFD_RELOC_390_TLS_GOTIE12",
1.42917 ++ "BFD_RELOC_390_TLS_GOTIE32",
1.42918 ++ "BFD_RELOC_390_TLS_GOTIE64",
1.42919 ++ "BFD_RELOC_390_TLS_LDM32",
1.42920 ++ "BFD_RELOC_390_TLS_LDM64",
1.42921 ++ "BFD_RELOC_390_TLS_IE32",
1.42922 ++ "BFD_RELOC_390_TLS_IE64",
1.42923 ++ "BFD_RELOC_390_TLS_IEENT",
1.42924 ++ "BFD_RELOC_390_TLS_LE32",
1.42925 ++ "BFD_RELOC_390_TLS_LE64",
1.42926 ++ "BFD_RELOC_390_TLS_LDO32",
1.42927 ++ "BFD_RELOC_390_TLS_LDO64",
1.42928 ++ "BFD_RELOC_390_TLS_DTPMOD",
1.42929 ++ "BFD_RELOC_390_TLS_DTPOFF",
1.42930 ++ "BFD_RELOC_390_TLS_TPOFF",
1.42931 ++ "BFD_RELOC_390_20",
1.42932 ++ "BFD_RELOC_390_GOT20",
1.42933 ++ "BFD_RELOC_390_GOTPLT20",
1.42934 ++ "BFD_RELOC_390_TLS_GOTIE20",
1.42935 ++ "BFD_RELOC_SCORE_DUMMY1",
1.42936 ++ "BFD_RELOC_SCORE_GPREL15",
1.42937 ++ "BFD_RELOC_SCORE_DUMMY2",
1.42938 ++ "BFD_RELOC_SCORE_JMP",
1.42939 ++ "BFD_RELOC_SCORE_BRANCH",
1.42940 ++ "BFD_RELOC_SCORE16_JMP",
1.42941 ++ "BFD_RELOC_SCORE16_BRANCH",
1.42942 ++ "BFD_RELOC_SCORE_GOT15",
1.42943 ++ "BFD_RELOC_SCORE_GOT_LO16",
1.42944 ++ "BFD_RELOC_SCORE_CALL15",
1.42945 ++ "BFD_RELOC_SCORE_DUMMY_HI16",
1.42946 ++ "BFD_RELOC_IP2K_FR9",
1.42947 ++ "BFD_RELOC_IP2K_BANK",
1.42948 ++ "BFD_RELOC_IP2K_ADDR16CJP",
1.42949 ++ "BFD_RELOC_IP2K_PAGE3",
1.42950 ++ "BFD_RELOC_IP2K_LO8DATA",
1.42951 ++ "BFD_RELOC_IP2K_HI8DATA",
1.42952 ++ "BFD_RELOC_IP2K_EX8DATA",
1.42953 ++ "BFD_RELOC_IP2K_LO8INSN",
1.42954 ++ "BFD_RELOC_IP2K_HI8INSN",
1.42955 ++ "BFD_RELOC_IP2K_PC_SKIP",
1.42956 ++ "BFD_RELOC_IP2K_TEXT",
1.42957 ++ "BFD_RELOC_IP2K_FR_OFFSET",
1.42958 ++ "BFD_RELOC_VPE4KMATH_DATA",
1.42959 ++ "BFD_RELOC_VPE4KMATH_INSN",
1.42960 ++ "BFD_RELOC_VTABLE_INHERIT",
1.42961 ++ "BFD_RELOC_VTABLE_ENTRY",
1.42962 ++ "BFD_RELOC_IA64_IMM14",
1.42963 ++ "BFD_RELOC_IA64_IMM22",
1.42964 ++ "BFD_RELOC_IA64_IMM64",
1.42965 ++ "BFD_RELOC_IA64_DIR32MSB",
1.42966 ++ "BFD_RELOC_IA64_DIR32LSB",
1.42967 ++ "BFD_RELOC_IA64_DIR64MSB",
1.42968 ++ "BFD_RELOC_IA64_DIR64LSB",
1.42969 ++ "BFD_RELOC_IA64_GPREL22",
1.42970 ++ "BFD_RELOC_IA64_GPREL64I",
1.42971 ++ "BFD_RELOC_IA64_GPREL32MSB",
1.42972 ++ "BFD_RELOC_IA64_GPREL32LSB",
1.42973 ++ "BFD_RELOC_IA64_GPREL64MSB",
1.42974 ++ "BFD_RELOC_IA64_GPREL64LSB",
1.42975 ++ "BFD_RELOC_IA64_LTOFF22",
1.42976 ++ "BFD_RELOC_IA64_LTOFF64I",
1.42977 ++ "BFD_RELOC_IA64_PLTOFF22",
1.42978 ++ "BFD_RELOC_IA64_PLTOFF64I",
1.42979 ++ "BFD_RELOC_IA64_PLTOFF64MSB",
1.42980 ++ "BFD_RELOC_IA64_PLTOFF64LSB",
1.42981 ++ "BFD_RELOC_IA64_FPTR64I",
1.42982 ++ "BFD_RELOC_IA64_FPTR32MSB",
1.42983 ++ "BFD_RELOC_IA64_FPTR32LSB",
1.42984 ++ "BFD_RELOC_IA64_FPTR64MSB",
1.42985 ++ "BFD_RELOC_IA64_FPTR64LSB",
1.42986 ++ "BFD_RELOC_IA64_PCREL21B",
1.42987 ++ "BFD_RELOC_IA64_PCREL21BI",
1.42988 ++ "BFD_RELOC_IA64_PCREL21M",
1.42989 ++ "BFD_RELOC_IA64_PCREL21F",
1.42990 ++ "BFD_RELOC_IA64_PCREL22",
1.42991 ++ "BFD_RELOC_IA64_PCREL60B",
1.42992 ++ "BFD_RELOC_IA64_PCREL64I",
1.42993 ++ "BFD_RELOC_IA64_PCREL32MSB",
1.42994 ++ "BFD_RELOC_IA64_PCREL32LSB",
1.42995 ++ "BFD_RELOC_IA64_PCREL64MSB",
1.42996 ++ "BFD_RELOC_IA64_PCREL64LSB",
1.42997 ++ "BFD_RELOC_IA64_LTOFF_FPTR22",
1.42998 ++ "BFD_RELOC_IA64_LTOFF_FPTR64I",
1.42999 ++ "BFD_RELOC_IA64_LTOFF_FPTR32MSB",
1.43000 ++ "BFD_RELOC_IA64_LTOFF_FPTR32LSB",
1.43001 ++ "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
1.43002 ++ "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
1.43003 ++ "BFD_RELOC_IA64_SEGREL32MSB",
1.43004 ++ "BFD_RELOC_IA64_SEGREL32LSB",
1.43005 ++ "BFD_RELOC_IA64_SEGREL64MSB",
1.43006 ++ "BFD_RELOC_IA64_SEGREL64LSB",
1.43007 ++ "BFD_RELOC_IA64_SECREL32MSB",
1.43008 ++ "BFD_RELOC_IA64_SECREL32LSB",
1.43009 ++ "BFD_RELOC_IA64_SECREL64MSB",
1.43010 ++ "BFD_RELOC_IA64_SECREL64LSB",
1.43011 ++ "BFD_RELOC_IA64_REL32MSB",
1.43012 ++ "BFD_RELOC_IA64_REL32LSB",
1.43013 ++ "BFD_RELOC_IA64_REL64MSB",
1.43014 ++ "BFD_RELOC_IA64_REL64LSB",
1.43015 ++ "BFD_RELOC_IA64_LTV32MSB",
1.43016 ++ "BFD_RELOC_IA64_LTV32LSB",
1.43017 ++ "BFD_RELOC_IA64_LTV64MSB",
1.43018 ++ "BFD_RELOC_IA64_LTV64LSB",
1.43019 ++ "BFD_RELOC_IA64_IPLTMSB",
1.43020 ++ "BFD_RELOC_IA64_IPLTLSB",
1.43021 ++ "BFD_RELOC_IA64_COPY",
1.43022 ++ "BFD_RELOC_IA64_LTOFF22X",
1.43023 ++ "BFD_RELOC_IA64_LDXMOV",
1.43024 ++ "BFD_RELOC_IA64_TPREL14",
1.43025 ++ "BFD_RELOC_IA64_TPREL22",
1.43026 ++ "BFD_RELOC_IA64_TPREL64I",
1.43027 ++ "BFD_RELOC_IA64_TPREL64MSB",
1.43028 ++ "BFD_RELOC_IA64_TPREL64LSB",
1.43029 ++ "BFD_RELOC_IA64_LTOFF_TPREL22",
1.43030 ++ "BFD_RELOC_IA64_DTPMOD64MSB",
1.43031 ++ "BFD_RELOC_IA64_DTPMOD64LSB",
1.43032 ++ "BFD_RELOC_IA64_LTOFF_DTPMOD22",
1.43033 ++ "BFD_RELOC_IA64_DTPREL14",
1.43034 ++ "BFD_RELOC_IA64_DTPREL22",
1.43035 ++ "BFD_RELOC_IA64_DTPREL64I",
1.43036 ++ "BFD_RELOC_IA64_DTPREL32MSB",
1.43037 ++ "BFD_RELOC_IA64_DTPREL32LSB",
1.43038 ++ "BFD_RELOC_IA64_DTPREL64MSB",
1.43039 ++ "BFD_RELOC_IA64_DTPREL64LSB",
1.43040 ++ "BFD_RELOC_IA64_LTOFF_DTPREL22",
1.43041 ++ "BFD_RELOC_M68HC11_HI8",
1.43042 ++ "BFD_RELOC_M68HC11_LO8",
1.43043 ++ "BFD_RELOC_M68HC11_3B",
1.43044 ++ "BFD_RELOC_M68HC11_RL_JUMP",
1.43045 ++ "BFD_RELOC_M68HC11_RL_GROUP",
1.43046 ++ "BFD_RELOC_M68HC11_LO16",
1.43047 ++ "BFD_RELOC_M68HC11_PAGE",
1.43048 ++ "BFD_RELOC_M68HC11_24",
1.43049 ++ "BFD_RELOC_M68HC12_5B",
1.43050 ++ "BFD_RELOC_16C_NUM08",
1.43051 ++ "BFD_RELOC_16C_NUM08_C",
1.43052 ++ "BFD_RELOC_16C_NUM16",
1.43053 ++ "BFD_RELOC_16C_NUM16_C",
1.43054 ++ "BFD_RELOC_16C_NUM32",
1.43055 ++ "BFD_RELOC_16C_NUM32_C",
1.43056 ++ "BFD_RELOC_16C_DISP04",
1.43057 ++ "BFD_RELOC_16C_DISP04_C",
1.43058 ++ "BFD_RELOC_16C_DISP08",
1.43059 ++ "BFD_RELOC_16C_DISP08_C",
1.43060 ++ "BFD_RELOC_16C_DISP16",
1.43061 ++ "BFD_RELOC_16C_DISP16_C",
1.43062 ++ "BFD_RELOC_16C_DISP24",
1.43063 ++ "BFD_RELOC_16C_DISP24_C",
1.43064 ++ "BFD_RELOC_16C_DISP24a",
1.43065 ++ "BFD_RELOC_16C_DISP24a_C",
1.43066 ++ "BFD_RELOC_16C_REG04",
1.43067 ++ "BFD_RELOC_16C_REG04_C",
1.43068 ++ "BFD_RELOC_16C_REG04a",
1.43069 ++ "BFD_RELOC_16C_REG04a_C",
1.43070 ++ "BFD_RELOC_16C_REG14",
1.43071 ++ "BFD_RELOC_16C_REG14_C",
1.43072 ++ "BFD_RELOC_16C_REG16",
1.43073 ++ "BFD_RELOC_16C_REG16_C",
1.43074 ++ "BFD_RELOC_16C_REG20",
1.43075 ++ "BFD_RELOC_16C_REG20_C",
1.43076 ++ "BFD_RELOC_16C_ABS20",
1.43077 ++ "BFD_RELOC_16C_ABS20_C",
1.43078 ++ "BFD_RELOC_16C_ABS24",
1.43079 ++ "BFD_RELOC_16C_ABS24_C",
1.43080 ++ "BFD_RELOC_16C_IMM04",
1.43081 ++ "BFD_RELOC_16C_IMM04_C",
1.43082 ++ "BFD_RELOC_16C_IMM16",
1.43083 ++ "BFD_RELOC_16C_IMM16_C",
1.43084 ++ "BFD_RELOC_16C_IMM20",
1.43085 ++ "BFD_RELOC_16C_IMM20_C",
1.43086 ++ "BFD_RELOC_16C_IMM24",
1.43087 ++ "BFD_RELOC_16C_IMM24_C",
1.43088 ++ "BFD_RELOC_16C_IMM32",
1.43089 ++ "BFD_RELOC_16C_IMM32_C",
1.43090 ++ "BFD_RELOC_CR16_NUM8",
1.43091 ++ "BFD_RELOC_CR16_NUM16",
1.43092 ++ "BFD_RELOC_CR16_NUM32",
1.43093 ++ "BFD_RELOC_CR16_NUM32a",
1.43094 ++ "BFD_RELOC_CR16_REGREL0",
1.43095 ++ "BFD_RELOC_CR16_REGREL4",
1.43096 ++ "BFD_RELOC_CR16_REGREL4a",
1.43097 ++ "BFD_RELOC_CR16_REGREL14",
1.43098 ++ "BFD_RELOC_CR16_REGREL14a",
1.43099 ++ "BFD_RELOC_CR16_REGREL16",
1.43100 ++ "BFD_RELOC_CR16_REGREL20",
1.43101 ++ "BFD_RELOC_CR16_REGREL20a",
1.43102 ++ "BFD_RELOC_CR16_ABS20",
1.43103 ++ "BFD_RELOC_CR16_ABS24",
1.43104 ++ "BFD_RELOC_CR16_IMM4",
1.43105 ++ "BFD_RELOC_CR16_IMM8",
1.43106 ++ "BFD_RELOC_CR16_IMM16",
1.43107 ++ "BFD_RELOC_CR16_IMM20",
1.43108 ++ "BFD_RELOC_CR16_IMM24",
1.43109 ++ "BFD_RELOC_CR16_IMM32",
1.43110 ++ "BFD_RELOC_CR16_IMM32a",
1.43111 ++ "BFD_RELOC_CR16_DISP4",
1.43112 ++ "BFD_RELOC_CR16_DISP8",
1.43113 ++ "BFD_RELOC_CR16_DISP16",
1.43114 ++ "BFD_RELOC_CR16_DISP20",
1.43115 ++ "BFD_RELOC_CR16_DISP24",
1.43116 ++ "BFD_RELOC_CR16_DISP24a",
1.43117 ++ "BFD_RELOC_CRX_REL4",
1.43118 ++ "BFD_RELOC_CRX_REL8",
1.43119 ++ "BFD_RELOC_CRX_REL8_CMP",
1.43120 ++ "BFD_RELOC_CRX_REL16",
1.43121 ++ "BFD_RELOC_CRX_REL24",
1.43122 ++ "BFD_RELOC_CRX_REL32",
1.43123 ++ "BFD_RELOC_CRX_REGREL12",
1.43124 ++ "BFD_RELOC_CRX_REGREL22",
1.43125 ++ "BFD_RELOC_CRX_REGREL28",
1.43126 ++ "BFD_RELOC_CRX_REGREL32",
1.43127 ++ "BFD_RELOC_CRX_ABS16",
1.43128 ++ "BFD_RELOC_CRX_ABS32",
1.43129 ++ "BFD_RELOC_CRX_NUM8",
1.43130 ++ "BFD_RELOC_CRX_NUM16",
1.43131 ++ "BFD_RELOC_CRX_NUM32",
1.43132 ++ "BFD_RELOC_CRX_IMM16",
1.43133 ++ "BFD_RELOC_CRX_IMM32",
1.43134 ++ "BFD_RELOC_CRX_SWITCH8",
1.43135 ++ "BFD_RELOC_CRX_SWITCH16",
1.43136 ++ "BFD_RELOC_CRX_SWITCH32",
1.43137 ++ "BFD_RELOC_CRIS_BDISP8",
1.43138 ++ "BFD_RELOC_CRIS_UNSIGNED_5",
1.43139 ++ "BFD_RELOC_CRIS_SIGNED_6",
1.43140 ++ "BFD_RELOC_CRIS_UNSIGNED_6",
1.43141 ++ "BFD_RELOC_CRIS_SIGNED_8",
1.43142 ++ "BFD_RELOC_CRIS_UNSIGNED_8",
1.43143 ++ "BFD_RELOC_CRIS_SIGNED_16",
1.43144 ++ "BFD_RELOC_CRIS_UNSIGNED_16",
1.43145 ++ "BFD_RELOC_CRIS_LAPCQ_OFFSET",
1.43146 ++ "BFD_RELOC_CRIS_UNSIGNED_4",
1.43147 ++ "BFD_RELOC_CRIS_COPY",
1.43148 ++ "BFD_RELOC_CRIS_GLOB_DAT",
1.43149 ++ "BFD_RELOC_CRIS_JUMP_SLOT",
1.43150 ++ "BFD_RELOC_CRIS_RELATIVE",
1.43151 ++ "BFD_RELOC_CRIS_32_GOT",
1.43152 ++ "BFD_RELOC_CRIS_16_GOT",
1.43153 ++ "BFD_RELOC_CRIS_32_GOTPLT",
1.43154 ++ "BFD_RELOC_CRIS_16_GOTPLT",
1.43155 ++ "BFD_RELOC_CRIS_32_GOTREL",
1.43156 ++ "BFD_RELOC_CRIS_32_PLT_GOTREL",
1.43157 ++ "BFD_RELOC_CRIS_32_PLT_PCREL",
1.43158 ++ "BFD_RELOC_860_COPY",
1.43159 ++ "BFD_RELOC_860_GLOB_DAT",
1.43160 ++ "BFD_RELOC_860_JUMP_SLOT",
1.43161 ++ "BFD_RELOC_860_RELATIVE",
1.43162 ++ "BFD_RELOC_860_PC26",
1.43163 ++ "BFD_RELOC_860_PLT26",
1.43164 ++ "BFD_RELOC_860_PC16",
1.43165 ++ "BFD_RELOC_860_LOW0",
1.43166 ++ "BFD_RELOC_860_SPLIT0",
1.43167 ++ "BFD_RELOC_860_LOW1",
1.43168 ++ "BFD_RELOC_860_SPLIT1",
1.43169 ++ "BFD_RELOC_860_LOW2",
1.43170 ++ "BFD_RELOC_860_SPLIT2",
1.43171 ++ "BFD_RELOC_860_LOW3",
1.43172 ++ "BFD_RELOC_860_LOGOT0",
1.43173 ++ "BFD_RELOC_860_SPGOT0",
1.43174 ++ "BFD_RELOC_860_LOGOT1",
1.43175 ++ "BFD_RELOC_860_SPGOT1",
1.43176 ++ "BFD_RELOC_860_LOGOTOFF0",
1.43177 ++ "BFD_RELOC_860_SPGOTOFF0",
1.43178 ++ "BFD_RELOC_860_LOGOTOFF1",
1.43179 ++ "BFD_RELOC_860_SPGOTOFF1",
1.43180 ++ "BFD_RELOC_860_LOGOTOFF2",
1.43181 ++ "BFD_RELOC_860_LOGOTOFF3",
1.43182 ++ "BFD_RELOC_860_LOPC",
1.43183 ++ "BFD_RELOC_860_HIGHADJ",
1.43184 ++ "BFD_RELOC_860_HAGOT",
1.43185 ++ "BFD_RELOC_860_HAGOTOFF",
1.43186 ++ "BFD_RELOC_860_HAPC",
1.43187 ++ "BFD_RELOC_860_HIGH",
1.43188 ++ "BFD_RELOC_860_HIGOT",
1.43189 ++ "BFD_RELOC_860_HIGOTOFF",
1.43190 ++ "BFD_RELOC_OPENRISC_ABS_26",
1.43191 ++ "BFD_RELOC_OPENRISC_REL_26",
1.43192 ++ "BFD_RELOC_H8_DIR16A8",
1.43193 ++ "BFD_RELOC_H8_DIR16R8",
1.43194 ++ "BFD_RELOC_H8_DIR24A8",
1.43195 ++ "BFD_RELOC_H8_DIR24R8",
1.43196 ++ "BFD_RELOC_H8_DIR32A16",
1.43197 ++ "BFD_RELOC_XSTORMY16_REL_12",
1.43198 ++ "BFD_RELOC_XSTORMY16_12",
1.43199 ++ "BFD_RELOC_XSTORMY16_24",
1.43200 ++ "BFD_RELOC_XSTORMY16_FPTR16",
1.43201 ++ "BFD_RELOC_RELC",
1.43202 ++
1.43203 ++ "BFD_RELOC_XC16X_PAG",
1.43204 ++ "BFD_RELOC_XC16X_POF",
1.43205 ++ "BFD_RELOC_XC16X_SEG",
1.43206 ++ "BFD_RELOC_XC16X_SOF",
1.43207 ++ "BFD_RELOC_VAX_GLOB_DAT",
1.43208 ++ "BFD_RELOC_VAX_JMP_SLOT",
1.43209 ++ "BFD_RELOC_VAX_RELATIVE",
1.43210 ++ "BFD_RELOC_MT_PC16",
1.43211 ++ "BFD_RELOC_MT_HI16",
1.43212 ++ "BFD_RELOC_MT_LO16",
1.43213 ++ "BFD_RELOC_MT_GNU_VTINHERIT",
1.43214 ++ "BFD_RELOC_MT_GNU_VTENTRY",
1.43215 ++ "BFD_RELOC_MT_PCINSN8",
1.43216 ++ "BFD_RELOC_MSP430_10_PCREL",
1.43217 ++ "BFD_RELOC_MSP430_16_PCREL",
1.43218 ++ "BFD_RELOC_MSP430_16",
1.43219 ++ "BFD_RELOC_MSP430_16_PCREL_BYTE",
1.43220 ++ "BFD_RELOC_MSP430_16_BYTE",
1.43221 ++ "BFD_RELOC_MSP430_2X_PCREL",
1.43222 ++ "BFD_RELOC_MSP430_RL_PCREL",
1.43223 ++ "BFD_RELOC_IQ2000_OFFSET_16",
1.43224 ++ "BFD_RELOC_IQ2000_OFFSET_21",
1.43225 ++ "BFD_RELOC_IQ2000_UHI16",
1.43226 ++ "BFD_RELOC_XTENSA_RTLD",
1.43227 ++ "BFD_RELOC_XTENSA_GLOB_DAT",
1.43228 ++ "BFD_RELOC_XTENSA_JMP_SLOT",
1.43229 ++ "BFD_RELOC_XTENSA_RELATIVE",
1.43230 ++ "BFD_RELOC_XTENSA_PLT",
1.43231 ++ "BFD_RELOC_XTENSA_DIFF8",
1.43232 ++ "BFD_RELOC_XTENSA_DIFF16",
1.43233 ++ "BFD_RELOC_XTENSA_DIFF32",
1.43234 ++ "BFD_RELOC_XTENSA_SLOT0_OP",
1.43235 ++ "BFD_RELOC_XTENSA_SLOT1_OP",
1.43236 ++ "BFD_RELOC_XTENSA_SLOT2_OP",
1.43237 ++ "BFD_RELOC_XTENSA_SLOT3_OP",
1.43238 ++ "BFD_RELOC_XTENSA_SLOT4_OP",
1.43239 ++ "BFD_RELOC_XTENSA_SLOT5_OP",
1.43240 ++ "BFD_RELOC_XTENSA_SLOT6_OP",
1.43241 ++ "BFD_RELOC_XTENSA_SLOT7_OP",
1.43242 ++ "BFD_RELOC_XTENSA_SLOT8_OP",
1.43243 ++ "BFD_RELOC_XTENSA_SLOT9_OP",
1.43244 ++ "BFD_RELOC_XTENSA_SLOT10_OP",
1.43245 ++ "BFD_RELOC_XTENSA_SLOT11_OP",
1.43246 ++ "BFD_RELOC_XTENSA_SLOT12_OP",
1.43247 ++ "BFD_RELOC_XTENSA_SLOT13_OP",
1.43248 ++ "BFD_RELOC_XTENSA_SLOT14_OP",
1.43249 ++ "BFD_RELOC_XTENSA_SLOT0_ALT",
1.43250 ++ "BFD_RELOC_XTENSA_SLOT1_ALT",
1.43251 ++ "BFD_RELOC_XTENSA_SLOT2_ALT",
1.43252 ++ "BFD_RELOC_XTENSA_SLOT3_ALT",
1.43253 ++ "BFD_RELOC_XTENSA_SLOT4_ALT",
1.43254 ++ "BFD_RELOC_XTENSA_SLOT5_ALT",
1.43255 ++ "BFD_RELOC_XTENSA_SLOT6_ALT",
1.43256 ++ "BFD_RELOC_XTENSA_SLOT7_ALT",
1.43257 ++ "BFD_RELOC_XTENSA_SLOT8_ALT",
1.43258 ++ "BFD_RELOC_XTENSA_SLOT9_ALT",
1.43259 ++ "BFD_RELOC_XTENSA_SLOT10_ALT",
1.43260 ++ "BFD_RELOC_XTENSA_SLOT11_ALT",
1.43261 ++ "BFD_RELOC_XTENSA_SLOT12_ALT",
1.43262 ++ "BFD_RELOC_XTENSA_SLOT13_ALT",
1.43263 ++ "BFD_RELOC_XTENSA_SLOT14_ALT",
1.43264 ++ "BFD_RELOC_XTENSA_OP0",
1.43265 ++ "BFD_RELOC_XTENSA_OP1",
1.43266 ++ "BFD_RELOC_XTENSA_OP2",
1.43267 ++ "BFD_RELOC_XTENSA_ASM_EXPAND",
1.43268 ++ "BFD_RELOC_XTENSA_ASM_SIMPLIFY",
1.43269 ++ "BFD_RELOC_Z80_DISP8",
1.43270 ++ "BFD_RELOC_Z8K_DISP7",
1.43271 ++ "BFD_RELOC_Z8K_CALLR",
1.43272 ++ "BFD_RELOC_Z8K_IMM4L",
1.43273 ++ "@@overflow: BFD_RELOC_UNUSED@@",
1.43274 ++};
1.43275 ++#endif
1.43276 ++
1.43277 ++reloc_howto_type *bfd_default_reloc_type_lookup
1.43278 ++ (bfd *abfd, bfd_reloc_code_real_type code);
1.43279 ++
1.43280 ++bfd_boolean bfd_generic_relax_section
1.43281 ++ (bfd *abfd,
1.43282 ++ asection *section,
1.43283 ++ struct bfd_link_info *,
1.43284 ++ bfd_boolean *);
1.43285 ++
1.43286 ++bfd_boolean bfd_generic_gc_sections
1.43287 ++ (bfd *, struct bfd_link_info *);
1.43288 ++
1.43289 ++bfd_boolean bfd_generic_merge_sections
1.43290 ++ (bfd *, struct bfd_link_info *);
1.43291 ++
1.43292 ++bfd_byte *bfd_generic_get_relocated_section_contents
1.43293 ++ (bfd *abfd,
1.43294 ++ struct bfd_link_info *link_info,
1.43295 ++ struct bfd_link_order *link_order,
1.43296 ++ bfd_byte *data,
1.43297 ++ bfd_boolean relocatable,
1.43298 ++ asymbol **symbols);
1.43299 ++
1.43300 ++/* Extracted from archures.c. */
1.43301 ++extern const bfd_arch_info_type bfd_default_arch_struct;
1.43302 ++bfd_boolean bfd_default_set_arch_mach
1.43303 ++ (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
1.43304 ++
1.43305 ++const bfd_arch_info_type *bfd_default_compatible
1.43306 ++ (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
1.43307 ++
1.43308 ++bfd_boolean bfd_default_scan
1.43309 ++ (const struct bfd_arch_info *info, const char *string);
1.43310 ++
1.43311 ++/* Extracted from elf.c. */
1.43312 ++struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
1.43313 ++
1.43314 +--- /dev/null
1.43315 ++++ b/bfd/doc/libcoff.h
1.43316 +@@ -0,0 +1,936 @@
1.43317 ++/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
1.43318 ++ generated from "libcoff-in.h" and "coffcode.h".
1.43319 ++ Run "make headers" in your build bfd/ to regenerate. */
1.43320 ++
1.43321 ++/* BFD COFF object file private structure.
1.43322 ++ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
1.43323 ++ 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
1.43324 ++ Free Software Foundation, Inc.
1.43325 ++ Written by Cygnus Support.
1.43326 ++
1.43327 ++ This file is part of BFD, the Binary File Descriptor library.
1.43328 ++
1.43329 ++ This program is free software; you can redistribute it and/or modify
1.43330 ++ it under the terms of the GNU General Public License as published by
1.43331 ++ the Free Software Foundation; either version 3 of the License, or
1.43332 ++ (at your option) any later version.
1.43333 ++
1.43334 ++ This program is distributed in the hope that it will be useful,
1.43335 ++ but WITHOUT ANY WARRANTY; without even the implied warranty of
1.43336 ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.43337 ++ GNU General Public License for more details.
1.43338 ++
1.43339 ++ You should have received a copy of the GNU General Public License
1.43340 ++ along with this program; if not, write to the Free Software
1.43341 ++ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
1.43342 ++ MA 02110-1301, USA. */
1.43343 ++
1.43344 ++#include "bfdlink.h"
1.43345 ++
1.43346 ++/* Object file tdata; access macros. */
1.43347 ++
1.43348 ++#define coff_data(bfd) ((bfd)->tdata.coff_obj_data)
1.43349 ++#define exec_hdr(bfd) (coff_data (bfd)->hdr)
1.43350 ++#define obj_pe(bfd) (coff_data (bfd)->pe)
1.43351 ++#define obj_symbols(bfd) (coff_data (bfd)->symbols)
1.43352 ++#define obj_sym_filepos(bfd) (coff_data (bfd)->sym_filepos)
1.43353 ++#define obj_relocbase(bfd) (coff_data (bfd)->relocbase)
1.43354 ++#define obj_raw_syments(bfd) (coff_data (bfd)->raw_syments)
1.43355 ++#define obj_raw_syment_count(bfd) (coff_data (bfd)->raw_syment_count)
1.43356 ++#define obj_convert(bfd) (coff_data (bfd)->conversion_table)
1.43357 ++#define obj_conv_table_size(bfd) (coff_data (bfd)->conv_table_size)
1.43358 ++#define obj_coff_external_syms(bfd) (coff_data (bfd)->external_syms)
1.43359 ++#define obj_coff_keep_syms(bfd) (coff_data (bfd)->keep_syms)
1.43360 ++#define obj_coff_strings(bfd) (coff_data (bfd)->strings)
1.43361 ++#define obj_coff_keep_strings(bfd) (coff_data (bfd)->keep_strings)
1.43362 ++#define obj_coff_sym_hashes(bfd) (coff_data (bfd)->sym_hashes)
1.43363 ++#define obj_coff_strings_written(bfd) (coff_data (bfd)->strings_written)
1.43364 ++#define obj_coff_local_toc_table(bfd) (coff_data (bfd)->local_toc_sym_map)
1.43365 ++
1.43366 ++/* `Tdata' information kept for COFF files. */
1.43367 ++
1.43368 ++typedef struct coff_tdata
1.43369 ++{
1.43370 ++ struct coff_symbol_struct *symbols; /* Symtab for input bfd. */
1.43371 ++ unsigned int *conversion_table;
1.43372 ++ int conv_table_size;
1.43373 ++ file_ptr sym_filepos;
1.43374 ++
1.43375 ++ struct coff_ptr_struct *raw_syments;
1.43376 ++ unsigned long raw_syment_count;
1.43377 ++
1.43378 ++ /* These are only valid once writing has begun. */
1.43379 ++ long int relocbase;
1.43380 ++
1.43381 ++ /* These members communicate important constants about the symbol table
1.43382 ++ to GDB's symbol-reading code. These `constants' unfortunately vary
1.43383 ++ from coff implementation to implementation... */
1.43384 ++ unsigned local_n_btmask;
1.43385 ++ unsigned local_n_btshft;
1.43386 ++ unsigned local_n_tmask;
1.43387 ++ unsigned local_n_tshift;
1.43388 ++ unsigned local_symesz;
1.43389 ++ unsigned local_auxesz;
1.43390 ++ unsigned local_linesz;
1.43391 ++
1.43392 ++ /* The unswapped external symbols. May be NULL. Read by
1.43393 ++ _bfd_coff_get_external_symbols. */
1.43394 ++ void * external_syms;
1.43395 ++ /* If this is TRUE, the external_syms may not be freed. */
1.43396 ++ bfd_boolean keep_syms;
1.43397 ++
1.43398 ++ /* The string table. May be NULL. Read by
1.43399 ++ _bfd_coff_read_string_table. */
1.43400 ++ char *strings;
1.43401 ++ /* If this is TRUE, the strings may not be freed. */
1.43402 ++ bfd_boolean keep_strings;
1.43403 ++ /* If this is TRUE, the strings have been written out already. */
1.43404 ++ bfd_boolean strings_written;
1.43405 ++
1.43406 ++ /* Is this a PE format coff file? */
1.43407 ++ int pe;
1.43408 ++ /* Used by the COFF backend linker. */
1.43409 ++ struct coff_link_hash_entry **sym_hashes;
1.43410 ++
1.43411 ++ /* Used by the pe linker for PowerPC. */
1.43412 ++ int *local_toc_sym_map;
1.43413 ++
1.43414 ++ struct bfd_link_info *link_info;
1.43415 ++
1.43416 ++ /* Used by coff_find_nearest_line. */
1.43417 ++ void * line_info;
1.43418 ++
1.43419 ++ /* A place to stash dwarf2 info for this bfd. */
1.43420 ++ void * dwarf2_find_line_info;
1.43421 ++
1.43422 ++ /* The timestamp from the COFF file header. */
1.43423 ++ long timestamp;
1.43424 ++
1.43425 ++ /* Copy of some of the f_flags bits in the COFF filehdr structure,
1.43426 ++ used by ARM code. */
1.43427 ++ flagword flags;
1.43428 ++
1.43429 ++} coff_data_type;
1.43430 ++
1.43431 ++/* Tdata for pe image files. */
1.43432 ++typedef struct pe_tdata
1.43433 ++{
1.43434 ++ coff_data_type coff;
1.43435 ++ struct internal_extra_pe_aouthdr pe_opthdr;
1.43436 ++ int dll;
1.43437 ++ int has_reloc_section;
1.43438 ++ bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
1.43439 ++ flagword real_flags;
1.43440 ++ int target_subsystem;
1.43441 ++ bfd_boolean force_minimum_alignment;
1.43442 ++} pe_data_type;
1.43443 ++
1.43444 ++#define pe_data(bfd) ((bfd)->tdata.pe_obj_data)
1.43445 ++
1.43446 ++/* Tdata for XCOFF files. */
1.43447 ++
1.43448 ++struct xcoff_tdata
1.43449 ++{
1.43450 ++ /* Basic COFF information. */
1.43451 ++ coff_data_type coff;
1.43452 ++
1.43453 ++ /* TRUE if this is an XCOFF64 file. */
1.43454 ++ bfd_boolean xcoff64;
1.43455 ++
1.43456 ++ /* TRUE if a large a.out header should be generated. */
1.43457 ++ bfd_boolean full_aouthdr;
1.43458 ++
1.43459 ++ /* TOC value. */
1.43460 ++ bfd_vma toc;
1.43461 ++
1.43462 ++ /* Index of section holding TOC. */
1.43463 ++ int sntoc;
1.43464 ++
1.43465 ++ /* Index of section holding entry point. */
1.43466 ++ int snentry;
1.43467 ++
1.43468 ++ /* .text alignment from optional header. */
1.43469 ++ int text_align_power;
1.43470 ++
1.43471 ++ /* .data alignment from optional header. */
1.43472 ++ int data_align_power;
1.43473 ++
1.43474 ++ /* modtype from optional header. */
1.43475 ++ short modtype;
1.43476 ++
1.43477 ++ /* cputype from optional header. */
1.43478 ++ short cputype;
1.43479 ++
1.43480 ++ /* maxdata from optional header. */
1.43481 ++ bfd_vma maxdata;
1.43482 ++
1.43483 ++ /* maxstack from optional header. */
1.43484 ++ bfd_vma maxstack;
1.43485 ++
1.43486 ++ /* Used by the XCOFF backend linker. */
1.43487 ++ asection **csects;
1.43488 ++ unsigned long *debug_indices;
1.43489 ++ unsigned int import_file_id;
1.43490 ++};
1.43491 ++
1.43492 ++#define xcoff_data(abfd) ((abfd)->tdata.xcoff_obj_data)
1.43493 ++
1.43494 ++/* We take the address of the first element of an asymbol to ensure that the
1.43495 ++ macro is only ever applied to an asymbol. */
1.43496 ++#define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
1.43497 ++
1.43498 ++/* The used_by_bfd field of a section may be set to a pointer to this
1.43499 ++ structure. */
1.43500 ++
1.43501 ++struct coff_section_tdata
1.43502 ++{
1.43503 ++ /* The relocs, swapped into COFF internal form. This may be NULL. */
1.43504 ++ struct internal_reloc *relocs;
1.43505 ++ /* If this is TRUE, the relocs entry may not be freed. */
1.43506 ++ bfd_boolean keep_relocs;
1.43507 ++ /* The section contents. This may be NULL. */
1.43508 ++ bfd_byte *contents;
1.43509 ++ /* If this is TRUE, the contents entry may not be freed. */
1.43510 ++ bfd_boolean keep_contents;
1.43511 ++ /* Information cached by coff_find_nearest_line. */
1.43512 ++ bfd_vma offset;
1.43513 ++ unsigned int i;
1.43514 ++ const char *function;
1.43515 ++ /* Optional information about a COMDAT entry; NULL if not COMDAT. */
1.43516 ++ struct coff_comdat_info *comdat;
1.43517 ++ int line_base;
1.43518 ++ /* A pointer used for .stab linking optimizations. */
1.43519 ++ void * stab_info;
1.43520 ++ /* Available for individual backends. */
1.43521 ++ void * tdata;
1.43522 ++};
1.43523 ++
1.43524 ++/* An accessor macro for the coff_section_tdata structure. */
1.43525 ++#define coff_section_data(abfd, sec) \
1.43526 ++ ((struct coff_section_tdata *) (sec)->used_by_bfd)
1.43527 ++
1.43528 ++/* Tdata for sections in XCOFF files. This is used by the linker. */
1.43529 ++
1.43530 ++struct xcoff_section_tdata
1.43531 ++{
1.43532 ++ /* Used for XCOFF csects created by the linker; points to the real
1.43533 ++ XCOFF section which contains this csect. */
1.43534 ++ asection *enclosing;
1.43535 ++ /* The lineno_count field for the enclosing section, because we are
1.43536 ++ going to clobber it there. */
1.43537 ++ unsigned int lineno_count;
1.43538 ++ /* The first and one past the last symbol indices for symbols used
1.43539 ++ by this csect. */
1.43540 ++ unsigned long first_symndx;
1.43541 ++ unsigned long last_symndx;
1.43542 ++};
1.43543 ++
1.43544 ++/* An accessor macro the xcoff_section_tdata structure. */
1.43545 ++#define xcoff_section_data(abfd, sec) \
1.43546 ++ ((struct xcoff_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
1.43547 ++
1.43548 ++/* Tdata for sections in PE files. */
1.43549 ++
1.43550 ++struct pei_section_tdata
1.43551 ++{
1.43552 ++ /* The virtual size of the section. */
1.43553 ++ bfd_size_type virt_size;
1.43554 ++ /* The PE section flags. */
1.43555 ++ long pe_flags;
1.43556 ++};
1.43557 ++
1.43558 ++/* An accessor macro for the pei_section_tdata structure. */
1.43559 ++#define pei_section_data(abfd, sec) \
1.43560 ++ ((struct pei_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
1.43561 ++
1.43562 ++/* COFF linker hash table entries. */
1.43563 ++
1.43564 ++struct coff_link_hash_entry
1.43565 ++{
1.43566 ++ struct bfd_link_hash_entry root;
1.43567 ++
1.43568 ++ /* Symbol index in output file. Set to -1 initially. Set to -2 if
1.43569 ++ there is a reloc against this symbol. */
1.43570 ++ long indx;
1.43571 ++
1.43572 ++ /* Symbol type. */
1.43573 ++ unsigned short type;
1.43574 ++
1.43575 ++ /* Symbol class. */
1.43576 ++ unsigned char class;
1.43577 ++
1.43578 ++ /* Number of auxiliary entries. */
1.43579 ++ char numaux;
1.43580 ++
1.43581 ++ /* BFD to take auxiliary entries from. */
1.43582 ++ bfd *auxbfd;
1.43583 ++
1.43584 ++ /* Pointer to array of auxiliary entries, if any. */
1.43585 ++ union internal_auxent *aux;
1.43586 ++
1.43587 ++ /* Flag word; legal values follow. */
1.43588 ++ unsigned short coff_link_hash_flags;
1.43589 ++ /* Symbol is a PE section symbol. */
1.43590 ++#define COFF_LINK_HASH_PE_SECTION_SYMBOL (01)
1.43591 ++};
1.43592 ++
1.43593 ++/* COFF linker hash table. */
1.43594 ++
1.43595 ++struct coff_link_hash_table
1.43596 ++{
1.43597 ++ struct bfd_link_hash_table root;
1.43598 ++ /* A pointer to information used to link stabs in sections. */
1.43599 ++ struct stab_info stab_info;
1.43600 ++};
1.43601 ++
1.43602 ++/* Look up an entry in a COFF linker hash table. */
1.43603 ++
1.43604 ++#define coff_link_hash_lookup(table, string, create, copy, follow) \
1.43605 ++ ((struct coff_link_hash_entry *) \
1.43606 ++ bfd_link_hash_lookup (&(table)->root, (string), (create), \
1.43607 ++ (copy), (follow)))
1.43608 ++
1.43609 ++/* Traverse a COFF linker hash table. */
1.43610 ++
1.43611 ++#define coff_link_hash_traverse(table, func, info) \
1.43612 ++ (bfd_link_hash_traverse \
1.43613 ++ (&(table)->root, \
1.43614 ++ (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
1.43615 ++ (info)))
1.43616 ++
1.43617 ++/* Get the COFF linker hash table from a link_info structure. */
1.43618 ++
1.43619 ++#define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
1.43620 ++
1.43621 ++/* Functions in coffgen.c. */
1.43622 ++extern const bfd_target *coff_object_p
1.43623 ++ (bfd *);
1.43624 ++extern struct bfd_section *coff_section_from_bfd_index
1.43625 ++ (bfd *, int);
1.43626 ++extern long coff_get_symtab_upper_bound
1.43627 ++ (bfd *);
1.43628 ++extern long coff_canonicalize_symtab
1.43629 ++ (bfd *, asymbol **);
1.43630 ++extern int coff_count_linenumbers
1.43631 ++ (bfd *);
1.43632 ++extern struct coff_symbol_struct *coff_symbol_from
1.43633 ++ (bfd *, asymbol *);
1.43634 ++extern bfd_boolean coff_renumber_symbols
1.43635 ++ (bfd *, int *);
1.43636 ++extern void coff_mangle_symbols
1.43637 ++ (bfd *);
1.43638 ++extern bfd_boolean coff_write_symbols
1.43639 ++ (bfd *);
1.43640 ++extern bfd_boolean coff_write_linenumbers
1.43641 ++ (bfd *);
1.43642 ++extern alent *coff_get_lineno
1.43643 ++ (bfd *, asymbol *);
1.43644 ++extern asymbol *coff_section_symbol
1.43645 ++ (bfd *, char *);
1.43646 ++extern bfd_boolean _bfd_coff_get_external_symbols
1.43647 ++ (bfd *);
1.43648 ++extern const char *_bfd_coff_read_string_table
1.43649 ++ (bfd *);
1.43650 ++extern bfd_boolean _bfd_coff_free_symbols
1.43651 ++ (bfd *);
1.43652 ++extern struct coff_ptr_struct *coff_get_normalized_symtab
1.43653 ++ (bfd *);
1.43654 ++extern long coff_get_reloc_upper_bound
1.43655 ++ (bfd *, sec_ptr);
1.43656 ++extern asymbol *coff_make_empty_symbol
1.43657 ++ (bfd *);
1.43658 ++extern void coff_print_symbol
1.43659 ++ (bfd *, void * filep, asymbol *, bfd_print_symbol_type);
1.43660 ++extern void coff_get_symbol_info
1.43661 ++ (bfd *, asymbol *, symbol_info *ret);
1.43662 ++extern bfd_boolean _bfd_coff_is_local_label_name
1.43663 ++ (bfd *, const char *);
1.43664 ++extern asymbol *coff_bfd_make_debug_symbol
1.43665 ++ (bfd *, void *, unsigned long);
1.43666 ++extern bfd_boolean coff_find_nearest_line
1.43667 ++ (bfd *, asection *, asymbol **, bfd_vma, const char **,
1.43668 ++ const char **, unsigned int *);
1.43669 ++extern bfd_boolean coff_find_inliner_info
1.43670 ++ (bfd *, const char **, const char **, unsigned int *);
1.43671 ++extern int coff_sizeof_headers
1.43672 ++ (bfd *, struct bfd_link_info *);
1.43673 ++extern bfd_boolean bfd_coff_reloc16_relax_section
1.43674 ++ (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
1.43675 ++extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents
1.43676 ++ (bfd *, struct bfd_link_info *, struct bfd_link_order *,
1.43677 ++ bfd_byte *, bfd_boolean, asymbol **);
1.43678 ++extern bfd_vma bfd_coff_reloc16_get_value
1.43679 ++ (arelent *, struct bfd_link_info *, asection *);
1.43680 ++extern void bfd_perform_slip
1.43681 ++ (bfd *, unsigned int, asection *, bfd_vma);
1.43682 ++
1.43683 ++/* Functions and types in cofflink.c. */
1.43684 ++
1.43685 ++#define STRING_SIZE_SIZE 4
1.43686 ++
1.43687 ++/* We use a hash table to merge identical enum, struct, and union
1.43688 ++ definitions in the linker. */
1.43689 ++
1.43690 ++/* Information we keep for a single element (an enum value, a
1.43691 ++ structure or union field) in the debug merge hash table. */
1.43692 ++
1.43693 ++struct coff_debug_merge_element
1.43694 ++{
1.43695 ++ /* Next element. */
1.43696 ++ struct coff_debug_merge_element *next;
1.43697 ++
1.43698 ++ /* Name. */
1.43699 ++ const char *name;
1.43700 ++
1.43701 ++ /* Type. */
1.43702 ++ unsigned int type;
1.43703 ++
1.43704 ++ /* Symbol index for complex type. */
1.43705 ++ long tagndx;
1.43706 ++};
1.43707 ++
1.43708 ++/* A linked list of debug merge entries for a given name. */
1.43709 ++
1.43710 ++struct coff_debug_merge_type
1.43711 ++{
1.43712 ++ /* Next type with the same name. */
1.43713 ++ struct coff_debug_merge_type *next;
1.43714 ++
1.43715 ++ /* Class of type. */
1.43716 ++ int class;
1.43717 ++
1.43718 ++ /* Symbol index where this type is defined. */
1.43719 ++ long indx;
1.43720 ++
1.43721 ++ /* List of elements. */
1.43722 ++ struct coff_debug_merge_element *elements;
1.43723 ++};
1.43724 ++
1.43725 ++/* Information we store in the debug merge hash table. */
1.43726 ++
1.43727 ++struct coff_debug_merge_hash_entry
1.43728 ++{
1.43729 ++ struct bfd_hash_entry root;
1.43730 ++
1.43731 ++ /* A list of types with this name. */
1.43732 ++ struct coff_debug_merge_type *types;
1.43733 ++};
1.43734 ++
1.43735 ++/* The debug merge hash table. */
1.43736 ++
1.43737 ++struct coff_debug_merge_hash_table
1.43738 ++{
1.43739 ++ struct bfd_hash_table root;
1.43740 ++};
1.43741 ++
1.43742 ++/* Initialize a COFF debug merge hash table. */
1.43743 ++
1.43744 ++#define coff_debug_merge_hash_table_init(table) \
1.43745 ++ (bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \
1.43746 ++ sizeof (struct coff_debug_merge_hash_entry)))
1.43747 ++
1.43748 ++/* Free a COFF debug merge hash table. */
1.43749 ++
1.43750 ++#define coff_debug_merge_hash_table_free(table) \
1.43751 ++ (bfd_hash_table_free (&(table)->root))
1.43752 ++
1.43753 ++/* Look up an entry in a COFF debug merge hash table. */
1.43754 ++
1.43755 ++#define coff_debug_merge_hash_lookup(table, string, create, copy) \
1.43756 ++ ((struct coff_debug_merge_hash_entry *) \
1.43757 ++ bfd_hash_lookup (&(table)->root, (string), (create), (copy)))
1.43758 ++
1.43759 ++/* Information we keep for each section in the output file when doing
1.43760 ++ a relocatable link. */
1.43761 ++
1.43762 ++struct coff_link_section_info
1.43763 ++{
1.43764 ++ /* The relocs to be output. */
1.43765 ++ struct internal_reloc *relocs;
1.43766 ++ /* For each reloc against a global symbol whose index was not known
1.43767 ++ when the reloc was handled, the global hash table entry. */
1.43768 ++ struct coff_link_hash_entry **rel_hashes;
1.43769 ++};
1.43770 ++
1.43771 ++/* Information that we pass around while doing the final link step. */
1.43772 ++
1.43773 ++struct coff_final_link_info
1.43774 ++{
1.43775 ++ /* General link information. */
1.43776 ++ struct bfd_link_info *info;
1.43777 ++ /* Output BFD. */
1.43778 ++ bfd *output_bfd;
1.43779 ++ /* Used to indicate failure in traversal routine. */
1.43780 ++ bfd_boolean failed;
1.43781 ++ /* If doing "task linking" set only during the time when we want the
1.43782 ++ global symbol writer to convert the storage class of defined global
1.43783 ++ symbols from global to static. */
1.43784 ++ bfd_boolean global_to_static;
1.43785 ++ /* Hash table for long symbol names. */
1.43786 ++ struct bfd_strtab_hash *strtab;
1.43787 ++ /* When doing a relocatable link, an array of information kept for
1.43788 ++ each output section, indexed by the target_index field. */
1.43789 ++ struct coff_link_section_info *section_info;
1.43790 ++ /* Symbol index of last C_FILE symbol (-1 if none). */
1.43791 ++ long last_file_index;
1.43792 ++ /* Contents of last C_FILE symbol. */
1.43793 ++ struct internal_syment last_file;
1.43794 ++ /* Symbol index of first aux entry of last .bf symbol with an empty
1.43795 ++ endndx field (-1 if none). */
1.43796 ++ long last_bf_index;
1.43797 ++ /* Contents of last_bf_index aux entry. */
1.43798 ++ union internal_auxent last_bf;
1.43799 ++ /* Hash table used to merge debug information. */
1.43800 ++ struct coff_debug_merge_hash_table debug_merge;
1.43801 ++ /* Buffer large enough to hold swapped symbols of any input file. */
1.43802 ++ struct internal_syment *internal_syms;
1.43803 ++ /* Buffer large enough to hold sections of symbols of any input file. */
1.43804 ++ asection **sec_ptrs;
1.43805 ++ /* Buffer large enough to hold output indices of symbols of any
1.43806 ++ input file. */
1.43807 ++ long *sym_indices;
1.43808 ++ /* Buffer large enough to hold output symbols for any input file. */
1.43809 ++ bfd_byte *outsyms;
1.43810 ++ /* Buffer large enough to hold external line numbers for any input
1.43811 ++ section. */
1.43812 ++ bfd_byte *linenos;
1.43813 ++ /* Buffer large enough to hold any input section. */
1.43814 ++ bfd_byte *contents;
1.43815 ++ /* Buffer large enough to hold external relocs of any input section. */
1.43816 ++ bfd_byte *external_relocs;
1.43817 ++ /* Buffer large enough to hold swapped relocs of any input section. */
1.43818 ++ struct internal_reloc *internal_relocs;
1.43819 ++};
1.43820 ++
1.43821 ++/* Most COFF variants have no way to record the alignment of a
1.43822 ++ section. This struct is used to set a specific alignment based on
1.43823 ++ the name of the section. */
1.43824 ++
1.43825 ++struct coff_section_alignment_entry
1.43826 ++{
1.43827 ++ /* The section name. */
1.43828 ++ const char *name;
1.43829 ++
1.43830 ++ /* This is either (unsigned int) -1, indicating that the section
1.43831 ++ name must match exactly, or it is the number of letters which
1.43832 ++ must match at the start of the name. */
1.43833 ++ unsigned int comparison_length;
1.43834 ++
1.43835 ++ /* These macros may be used to fill in the first two fields in a
1.43836 ++ structure initialization. */
1.43837 ++#define COFF_SECTION_NAME_EXACT_MATCH(name) (name), ((unsigned int) -1)
1.43838 ++#define COFF_SECTION_NAME_PARTIAL_MATCH(name) (name), (sizeof (name) - 1)
1.43839 ++
1.43840 ++ /* Only use this entry if the default section alignment for this
1.43841 ++ target is at least that much (as a power of two). If this field
1.43842 ++ is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
1.43843 ++ unsigned int default_alignment_min;
1.43844 ++
1.43845 ++ /* Only use this entry if the default section alignment for this
1.43846 ++ target is no greater than this (as a power of two). If this
1.43847 ++ field is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
1.43848 ++ unsigned int default_alignment_max;
1.43849 ++
1.43850 ++#define COFF_ALIGNMENT_FIELD_EMPTY ((unsigned int) -1)
1.43851 ++
1.43852 ++ /* The desired alignment for this section (as a power of two). */
1.43853 ++ unsigned int alignment_power;
1.43854 ++};
1.43855 ++
1.43856 ++extern struct bfd_hash_entry *_bfd_coff_link_hash_newfunc
1.43857 ++ (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
1.43858 ++extern bfd_boolean _bfd_coff_link_hash_table_init
1.43859 ++ (struct coff_link_hash_table *, bfd *,
1.43860 ++ struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
1.43861 ++ struct bfd_hash_table *,
1.43862 ++ const char *),
1.43863 ++ unsigned int);
1.43864 ++extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
1.43865 ++ (bfd *);
1.43866 ++extern const char *_bfd_coff_internal_syment_name
1.43867 ++ (bfd *, const struct internal_syment *, char *);
1.43868 ++extern bfd_boolean _bfd_coff_link_add_symbols
1.43869 ++ (bfd *, struct bfd_link_info *);
1.43870 ++extern bfd_boolean _bfd_coff_final_link
1.43871 ++ (bfd *, struct bfd_link_info *);
1.43872 ++extern struct internal_reloc *_bfd_coff_read_internal_relocs
1.43873 ++ (bfd *, asection *, bfd_boolean, bfd_byte *, bfd_boolean,
1.43874 ++ struct internal_reloc *);
1.43875 ++extern bfd_boolean _bfd_coff_generic_relocate_section
1.43876 ++ (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
1.43877 ++ struct internal_reloc *, struct internal_syment *, asection **);
1.43878 ++extern struct bfd_hash_entry *_bfd_coff_debug_merge_hash_newfunc
1.43879 ++ (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
1.43880 ++extern bfd_boolean _bfd_coff_write_global_sym
1.43881 ++ (struct coff_link_hash_entry *, void *);
1.43882 ++extern bfd_boolean _bfd_coff_write_task_globals
1.43883 ++ (struct coff_link_hash_entry *, void *);
1.43884 ++extern bfd_boolean _bfd_coff_link_input_bfd
1.43885 ++ (struct coff_final_link_info *, bfd *);
1.43886 ++extern bfd_boolean _bfd_coff_reloc_link_order
1.43887 ++ (bfd *, struct coff_final_link_info *, asection *,
1.43888 ++ struct bfd_link_order *);
1.43889 ++
1.43890 ++
1.43891 ++#define coff_get_section_contents_in_window \
1.43892 ++ _bfd_generic_get_section_contents_in_window
1.43893 ++
1.43894 ++/* Functions in xcofflink.c. */
1.43895 ++
1.43896 ++extern long _bfd_xcoff_get_dynamic_symtab_upper_bound
1.43897 ++ (bfd *);
1.43898 ++extern long _bfd_xcoff_canonicalize_dynamic_symtab
1.43899 ++ (bfd *, asymbol **);
1.43900 ++extern long _bfd_xcoff_get_dynamic_reloc_upper_bound
1.43901 ++ (bfd *);
1.43902 ++extern long _bfd_xcoff_canonicalize_dynamic_reloc
1.43903 ++ (bfd *, arelent **, asymbol **);
1.43904 ++extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create
1.43905 ++ (bfd *);
1.43906 ++extern void _bfd_xcoff_bfd_link_hash_table_free
1.43907 ++ (struct bfd_link_hash_table *);
1.43908 ++extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
1.43909 ++ (bfd *, struct bfd_link_info *);
1.43910 ++extern bfd_boolean _bfd_xcoff_bfd_final_link
1.43911 ++ (bfd *, struct bfd_link_info *);
1.43912 ++extern bfd_boolean _bfd_ppc_xcoff_relocate_section
1.43913 ++ (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
1.43914 ++ struct internal_reloc *, struct internal_syment *, asection **);
1.43915 ++
1.43916 ++/* Functions in coff-ppc.c. FIXME: These are called be pe.em in the
1.43917 ++ linker, and so should start with bfd and be declared in bfd.h. */
1.43918 ++
1.43919 ++extern bfd_boolean ppc_allocate_toc_section
1.43920 ++ (struct bfd_link_info *);
1.43921 ++extern bfd_boolean ppc_process_before_allocation
1.43922 ++ (bfd *, struct bfd_link_info *);
1.43923 ++
1.43924 ++/* Extracted from coffcode.h. */
1.43925 ++typedef struct coff_ptr_struct
1.43926 ++{
1.43927 ++ /* Remembers the offset from the first symbol in the file for
1.43928 ++ this symbol. Generated by coff_renumber_symbols. */
1.43929 ++ unsigned int offset;
1.43930 ++
1.43931 ++ /* Should the value of this symbol be renumbered. Used for
1.43932 ++ XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */
1.43933 ++ unsigned int fix_value : 1;
1.43934 ++
1.43935 ++ /* Should the tag field of this symbol be renumbered.
1.43936 ++ Created by coff_pointerize_aux. */
1.43937 ++ unsigned int fix_tag : 1;
1.43938 ++
1.43939 ++ /* Should the endidx field of this symbol be renumbered.
1.43940 ++ Created by coff_pointerize_aux. */
1.43941 ++ unsigned int fix_end : 1;
1.43942 ++
1.43943 ++ /* Should the x_csect.x_scnlen field be renumbered.
1.43944 ++ Created by coff_pointerize_aux. */
1.43945 ++ unsigned int fix_scnlen : 1;
1.43946 ++
1.43947 ++ /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the
1.43948 ++ index into the line number entries. Set by coff_slurp_symbol_table. */
1.43949 ++ unsigned int fix_line : 1;
1.43950 ++
1.43951 ++ /* The container for the symbol structure as read and translated
1.43952 ++ from the file. */
1.43953 ++ union
1.43954 ++ {
1.43955 ++ union internal_auxent auxent;
1.43956 ++ struct internal_syment syment;
1.43957 ++ } u;
1.43958 ++} combined_entry_type;
1.43959 ++
1.43960 ++
1.43961 ++/* Each canonical asymbol really looks like this: */
1.43962 ++
1.43963 ++typedef struct coff_symbol_struct
1.43964 ++{
1.43965 ++ /* The actual symbol which the rest of BFD works with */
1.43966 ++ asymbol symbol;
1.43967 ++
1.43968 ++ /* A pointer to the hidden information for this symbol */
1.43969 ++ combined_entry_type *native;
1.43970 ++
1.43971 ++ /* A pointer to the linenumber information for this symbol */
1.43972 ++ struct lineno_cache_entry *lineno;
1.43973 ++
1.43974 ++ /* Have the line numbers been relocated yet ? */
1.43975 ++ bfd_boolean done_lineno;
1.43976 ++} coff_symbol_type;
1.43977 ++/* COFF symbol classifications. */
1.43978 ++
1.43979 ++enum coff_symbol_classification
1.43980 ++{
1.43981 ++ /* Global symbol. */
1.43982 ++ COFF_SYMBOL_GLOBAL,
1.43983 ++ /* Common symbol. */
1.43984 ++ COFF_SYMBOL_COMMON,
1.43985 ++ /* Undefined symbol. */
1.43986 ++ COFF_SYMBOL_UNDEFINED,
1.43987 ++ /* Local symbol. */
1.43988 ++ COFF_SYMBOL_LOCAL,
1.43989 ++ /* PE section symbol. */
1.43990 ++ COFF_SYMBOL_PE_SECTION
1.43991 ++};
1.43992 ++
1.43993 ++typedef struct
1.43994 ++{
1.43995 ++ void (*_bfd_coff_swap_aux_in)
1.43996 ++ (bfd *, void *, int, int, int, int, void *);
1.43997 ++
1.43998 ++ void (*_bfd_coff_swap_sym_in)
1.43999 ++ (bfd *, void *, void *);
1.44000 ++
1.44001 ++ void (*_bfd_coff_swap_lineno_in)
1.44002 ++ (bfd *, void *, void *);
1.44003 ++
1.44004 ++ unsigned int (*_bfd_coff_swap_aux_out)
1.44005 ++ (bfd *, void *, int, int, int, int, void *);
1.44006 ++
1.44007 ++ unsigned int (*_bfd_coff_swap_sym_out)
1.44008 ++ (bfd *, void *, void *);
1.44009 ++
1.44010 ++ unsigned int (*_bfd_coff_swap_lineno_out)
1.44011 ++ (bfd *, void *, void *);
1.44012 ++
1.44013 ++ unsigned int (*_bfd_coff_swap_reloc_out)
1.44014 ++ (bfd *, void *, void *);
1.44015 ++
1.44016 ++ unsigned int (*_bfd_coff_swap_filehdr_out)
1.44017 ++ (bfd *, void *, void *);
1.44018 ++
1.44019 ++ unsigned int (*_bfd_coff_swap_aouthdr_out)
1.44020 ++ (bfd *, void *, void *);
1.44021 ++
1.44022 ++ unsigned int (*_bfd_coff_swap_scnhdr_out)
1.44023 ++ (bfd *, void *, void *);
1.44024 ++
1.44025 ++ unsigned int _bfd_filhsz;
1.44026 ++ unsigned int _bfd_aoutsz;
1.44027 ++ unsigned int _bfd_scnhsz;
1.44028 ++ unsigned int _bfd_symesz;
1.44029 ++ unsigned int _bfd_auxesz;
1.44030 ++ unsigned int _bfd_relsz;
1.44031 ++ unsigned int _bfd_linesz;
1.44032 ++ unsigned int _bfd_filnmlen;
1.44033 ++ bfd_boolean _bfd_coff_long_filenames;
1.44034 ++ bfd_boolean _bfd_coff_long_section_names;
1.44035 ++ unsigned int _bfd_coff_default_section_alignment_power;
1.44036 ++ bfd_boolean _bfd_coff_force_symnames_in_strings;
1.44037 ++ unsigned int _bfd_coff_debug_string_prefix_length;
1.44038 ++
1.44039 ++ void (*_bfd_coff_swap_filehdr_in)
1.44040 ++ (bfd *, void *, void *);
1.44041 ++
1.44042 ++ void (*_bfd_coff_swap_aouthdr_in)
1.44043 ++ (bfd *, void *, void *);
1.44044 ++
1.44045 ++ void (*_bfd_coff_swap_scnhdr_in)
1.44046 ++ (bfd *, void *, void *);
1.44047 ++
1.44048 ++ void (*_bfd_coff_swap_reloc_in)
1.44049 ++ (bfd *abfd, void *, void *);
1.44050 ++
1.44051 ++ bfd_boolean (*_bfd_coff_bad_format_hook)
1.44052 ++ (bfd *, void *);
1.44053 ++
1.44054 ++ bfd_boolean (*_bfd_coff_set_arch_mach_hook)
1.44055 ++ (bfd *, void *);
1.44056 ++
1.44057 ++ void * (*_bfd_coff_mkobject_hook)
1.44058 ++ (bfd *, void *, void *);
1.44059 ++
1.44060 ++ bfd_boolean (*_bfd_styp_to_sec_flags_hook)
1.44061 ++ (bfd *, void *, const char *, asection *, flagword *);
1.44062 ++
1.44063 ++ void (*_bfd_set_alignment_hook)
1.44064 ++ (bfd *, asection *, void *);
1.44065 ++
1.44066 ++ bfd_boolean (*_bfd_coff_slurp_symbol_table)
1.44067 ++ (bfd *);
1.44068 ++
1.44069 ++ bfd_boolean (*_bfd_coff_symname_in_debug)
1.44070 ++ (bfd *, struct internal_syment *);
1.44071 ++
1.44072 ++ bfd_boolean (*_bfd_coff_pointerize_aux_hook)
1.44073 ++ (bfd *, combined_entry_type *, combined_entry_type *,
1.44074 ++ unsigned int, combined_entry_type *);
1.44075 ++
1.44076 ++ bfd_boolean (*_bfd_coff_print_aux)
1.44077 ++ (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
1.44078 ++ combined_entry_type *, unsigned int);
1.44079 ++
1.44080 ++ void (*_bfd_coff_reloc16_extra_cases)
1.44081 ++ (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
1.44082 ++ bfd_byte *, unsigned int *, unsigned int *);
1.44083 ++
1.44084 ++ int (*_bfd_coff_reloc16_estimate)
1.44085 ++ (bfd *, asection *, arelent *, unsigned int,
1.44086 ++ struct bfd_link_info *);
1.44087 ++
1.44088 ++ enum coff_symbol_classification (*_bfd_coff_classify_symbol)
1.44089 ++ (bfd *, struct internal_syment *);
1.44090 ++
1.44091 ++ bfd_boolean (*_bfd_coff_compute_section_file_positions)
1.44092 ++ (bfd *);
1.44093 ++
1.44094 ++ bfd_boolean (*_bfd_coff_start_final_link)
1.44095 ++ (bfd *, struct bfd_link_info *);
1.44096 ++
1.44097 ++ bfd_boolean (*_bfd_coff_relocate_section)
1.44098 ++ (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
1.44099 ++ struct internal_reloc *, struct internal_syment *, asection **);
1.44100 ++
1.44101 ++ reloc_howto_type *(*_bfd_coff_rtype_to_howto)
1.44102 ++ (bfd *, asection *, struct internal_reloc *,
1.44103 ++ struct coff_link_hash_entry *, struct internal_syment *,
1.44104 ++ bfd_vma *);
1.44105 ++
1.44106 ++ bfd_boolean (*_bfd_coff_adjust_symndx)
1.44107 ++ (bfd *, struct bfd_link_info *, bfd *, asection *,
1.44108 ++ struct internal_reloc *, bfd_boolean *);
1.44109 ++
1.44110 ++ bfd_boolean (*_bfd_coff_link_add_one_symbol)
1.44111 ++ (struct bfd_link_info *, bfd *, const char *, flagword,
1.44112 ++ asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
1.44113 ++ struct bfd_link_hash_entry **);
1.44114 ++
1.44115 ++ bfd_boolean (*_bfd_coff_link_output_has_begun)
1.44116 ++ (bfd *, struct coff_final_link_info *);
1.44117 ++
1.44118 ++ bfd_boolean (*_bfd_coff_final_link_postscript)
1.44119 ++ (bfd *, struct coff_final_link_info *);
1.44120 ++
1.44121 ++} bfd_coff_backend_data;
1.44122 ++
1.44123 ++#define coff_backend_info(abfd) \
1.44124 ++ ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
1.44125 ++
1.44126 ++#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
1.44127 ++ ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
1.44128 ++
1.44129 ++#define bfd_coff_swap_sym_in(a,e,i) \
1.44130 ++ ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
1.44131 ++
1.44132 ++#define bfd_coff_swap_lineno_in(a,e,i) \
1.44133 ++ ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
1.44134 ++
1.44135 ++#define bfd_coff_swap_reloc_out(abfd, i, o) \
1.44136 ++ ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
1.44137 ++
1.44138 ++#define bfd_coff_swap_lineno_out(abfd, i, o) \
1.44139 ++ ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
1.44140 ++
1.44141 ++#define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
1.44142 ++ ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
1.44143 ++
1.44144 ++#define bfd_coff_swap_sym_out(abfd, i,o) \
1.44145 ++ ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
1.44146 ++
1.44147 ++#define bfd_coff_swap_scnhdr_out(abfd, i,o) \
1.44148 ++ ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
1.44149 ++
1.44150 ++#define bfd_coff_swap_filehdr_out(abfd, i,o) \
1.44151 ++ ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
1.44152 ++
1.44153 ++#define bfd_coff_swap_aouthdr_out(abfd, i,o) \
1.44154 ++ ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
1.44155 ++
1.44156 ++#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
1.44157 ++#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
1.44158 ++#define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
1.44159 ++#define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
1.44160 ++#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
1.44161 ++#define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz)
1.44162 ++#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
1.44163 ++#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
1.44164 ++#define bfd_coff_long_filenames(abfd) \
1.44165 ++ (coff_backend_info (abfd)->_bfd_coff_long_filenames)
1.44166 ++#define bfd_coff_long_section_names(abfd) \
1.44167 ++ (coff_backend_info (abfd)->_bfd_coff_long_section_names)
1.44168 ++#define bfd_coff_default_section_alignment_power(abfd) \
1.44169 ++ (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
1.44170 ++#define bfd_coff_swap_filehdr_in(abfd, i,o) \
1.44171 ++ ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
1.44172 ++
1.44173 ++#define bfd_coff_swap_aouthdr_in(abfd, i,o) \
1.44174 ++ ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
1.44175 ++
1.44176 ++#define bfd_coff_swap_scnhdr_in(abfd, i,o) \
1.44177 ++ ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
1.44178 ++
1.44179 ++#define bfd_coff_swap_reloc_in(abfd, i, o) \
1.44180 ++ ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
1.44181 ++
1.44182 ++#define bfd_coff_bad_format_hook(abfd, filehdr) \
1.44183 ++ ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
1.44184 ++
1.44185 ++#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
1.44186 ++ ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
1.44187 ++#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
1.44188 ++ ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
1.44189 ++ (abfd, filehdr, aouthdr))
1.44190 ++
1.44191 ++#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
1.44192 ++ ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
1.44193 ++ (abfd, scnhdr, name, section, flags_ptr))
1.44194 ++
1.44195 ++#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
1.44196 ++ ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
1.44197 ++
1.44198 ++#define bfd_coff_slurp_symbol_table(abfd)\
1.44199 ++ ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
1.44200 ++
1.44201 ++#define bfd_coff_symname_in_debug(abfd, sym)\
1.44202 ++ ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
1.44203 ++
1.44204 ++#define bfd_coff_force_symnames_in_strings(abfd)\
1.44205 ++ (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
1.44206 ++
1.44207 ++#define bfd_coff_debug_string_prefix_length(abfd)\
1.44208 ++ (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
1.44209 ++
1.44210 ++#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
1.44211 ++ ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
1.44212 ++ (abfd, file, base, symbol, aux, indaux))
1.44213 ++
1.44214 ++#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
1.44215 ++ reloc, data, src_ptr, dst_ptr)\
1.44216 ++ ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
1.44217 ++ (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
1.44218 ++
1.44219 ++#define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
1.44220 ++ ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
1.44221 ++ (abfd, section, reloc, shrink, link_info))
1.44222 ++
1.44223 ++#define bfd_coff_classify_symbol(abfd, sym)\
1.44224 ++ ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
1.44225 ++ (abfd, sym))
1.44226 ++
1.44227 ++#define bfd_coff_compute_section_file_positions(abfd)\
1.44228 ++ ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
1.44229 ++ (abfd))
1.44230 ++
1.44231 ++#define bfd_coff_start_final_link(obfd, info)\
1.44232 ++ ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
1.44233 ++ (obfd, info))
1.44234 ++#define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
1.44235 ++ ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
1.44236 ++ (obfd, info, ibfd, o, con, rel, isyms, secs))
1.44237 ++#define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
1.44238 ++ ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
1.44239 ++ (abfd, sec, rel, h, sym, addendp))
1.44240 ++#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
1.44241 ++ ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
1.44242 ++ (obfd, info, ibfd, sec, rel, adjustedp))
1.44243 ++#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
1.44244 ++ value, string, cp, coll, hashp)\
1.44245 ++ ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
1.44246 ++ (info, abfd, name, flags, section, value, string, cp, coll, hashp))
1.44247 ++
1.44248 ++#define bfd_coff_link_output_has_begun(a,p) \
1.44249 ++ ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
1.44250 ++#define bfd_coff_final_link_postscript(a,p) \
1.44251 ++ ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
1.44252 ++
1.44253 +--- a/bfd/libbfd.h
1.44254 ++++ b/bfd/libbfd.h
1.44255 +@@ -1601,6 +1601,48 @@ static const char *const bfd_reloc_code_
1.44256 + "BFD_RELOC_AVR_LDI",
1.44257 + "BFD_RELOC_AVR_6",
1.44258 + "BFD_RELOC_AVR_6_ADIW",
1.44259 ++ "BFD_RELOC_AVR32_DIFF32",
1.44260 ++ "BFD_RELOC_AVR32_DIFF16",
1.44261 ++ "BFD_RELOC_AVR32_DIFF8",
1.44262 ++ "BFD_RELOC_AVR32_GOT32",
1.44263 ++ "BFD_RELOC_AVR32_GOT16",
1.44264 ++ "BFD_RELOC_AVR32_GOT8",
1.44265 ++ "BFD_RELOC_AVR32_21S",
1.44266 ++ "BFD_RELOC_AVR32_16U",
1.44267 ++ "BFD_RELOC_AVR32_16S",
1.44268 ++ "BFD_RELOC_AVR32_SUB5",
1.44269 ++ "BFD_RELOC_AVR32_8S_EXT",
1.44270 ++ "BFD_RELOC_AVR32_8S",
1.44271 ++ "BFD_RELOC_AVR32_15S",
1.44272 ++ "BFD_RELOC_AVR32_22H_PCREL",
1.44273 ++ "BFD_RELOC_AVR32_18W_PCREL",
1.44274 ++ "BFD_RELOC_AVR32_16B_PCREL",
1.44275 ++ "BFD_RELOC_AVR32_16N_PCREL",
1.44276 ++ "BFD_RELOC_AVR32_14UW_PCREL",
1.44277 ++ "BFD_RELOC_AVR32_11H_PCREL",
1.44278 ++ "BFD_RELOC_AVR32_10UW_PCREL",
1.44279 ++ "BFD_RELOC_AVR32_9H_PCREL",
1.44280 ++ "BFD_RELOC_AVR32_9UW_PCREL",
1.44281 ++ "BFD_RELOC_AVR32_GOTPC",
1.44282 ++ "BFD_RELOC_AVR32_GOTCALL",
1.44283 ++ "BFD_RELOC_AVR32_LDA_GOT",
1.44284 ++ "BFD_RELOC_AVR32_GOT21S",
1.44285 ++ "BFD_RELOC_AVR32_GOT18SW",
1.44286 ++ "BFD_RELOC_AVR32_GOT16S",
1.44287 ++ "BFD_RELOC_AVR32_32_CPENT",
1.44288 ++ "BFD_RELOC_AVR32_CPCALL",
1.44289 ++ "BFD_RELOC_AVR32_16_CP",
1.44290 ++ "BFD_RELOC_AVR32_9W_CP",
1.44291 ++ "BFD_RELOC_AVR32_ALIGN",
1.44292 ++ "BFD_RELOC_AVR32_14UW",
1.44293 ++ "BFD_RELOC_AVR32_10UW",
1.44294 ++ "BFD_RELOC_AVR32_10SW",
1.44295 ++ "BFD_RELOC_AVR32_STHH_W",
1.44296 ++ "BFD_RELOC_AVR32_7UW",
1.44297 ++ "BFD_RELOC_AVR32_6S",
1.44298 ++ "BFD_RELOC_AVR32_6UW",
1.44299 ++ "BFD_RELOC_AVR32_4UH",
1.44300 ++ "BFD_RELOC_AVR32_3U",
1.44301 + "BFD_RELOC_390_12",
1.44302 + "BFD_RELOC_390_GOT12",
1.44303 + "BFD_RELOC_390_PLT32",
1.44304 +--- /dev/null
1.44305 ++++ b/bfd/libtool
1.44306 +@@ -0,0 +1,7871 @@
1.44307 ++#! /bin/bash
1.44308 ++
1.44309 ++# libtool - Provide generalized library-building support services.
1.44310 ++# Generated automatically by config.status (bfd) 2.18.atmel.1.0.1
1.44311 ++# Libtool was configured on host hcegtvedt:
1.44312 ++# NOTE: Changes made to this file will be lost: look at ltmain.sh.
1.44313 ++#
1.44314 ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
1.44315 ++# 2006, 2007, 2008 Free Software Foundation, Inc.
1.44316 ++# Written by Gordon Matzigkeit, 1996
1.44317 ++#
1.44318 ++# This file is part of GNU Libtool.
1.44319 ++#
1.44320 ++# GNU Libtool is free software; you can redistribute it and/or
1.44321 ++# modify it under the terms of the GNU General Public License as
1.44322 ++# published by the Free Software Foundation; either version 2 of
1.44323 ++# the License, or (at your option) any later version.
1.44324 ++#
1.44325 ++# As a special exception to the GNU General Public License,
1.44326 ++# if you distribute this file as part of a program or library that
1.44327 ++# is built using GNU Libtool, you may include this file under the
1.44328 ++# same distribution terms that you use for the rest of that program.
1.44329 ++#
1.44330 ++# GNU Libtool is distributed in the hope that it will be useful,
1.44331 ++# but WITHOUT ANY WARRANTY; without even the implied warranty of
1.44332 ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.44333 ++# GNU General Public License for more details.
1.44334 ++#
1.44335 ++# You should have received a copy of the GNU General Public License
1.44336 ++# along with GNU Libtool; see the file COPYING. If not, a copy
1.44337 ++# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
1.44338 ++# obtained by writing to the Free Software Foundation, Inc.,
1.44339 ++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1.44340 ++
1.44341 ++
1.44342 ++# The names of the tagged configurations supported by this script.
1.44343 ++available_tags=""
1.44344 ++
1.44345 ++# ### BEGIN LIBTOOL CONFIG
1.44346 ++
1.44347 ++# Whether or not to build shared libraries.
1.44348 ++build_libtool_libs=no
1.44349 ++
1.44350 ++# Which release of libtool.m4 was used?
1.44351 ++macro_version=2.2.4
1.44352 ++macro_revision=1.2976
1.44353 ++
1.44354 ++# Whether or not to build static libraries.
1.44355 ++build_old_libs=yes
1.44356 ++
1.44357 ++# What type of objects to build.
1.44358 ++pic_mode=default
1.44359 ++
1.44360 ++# Whether or not to optimize for fast installation.
1.44361 ++fast_install=needless
1.44362 ++
1.44363 ++# The host system.
1.44364 ++host_alias=i686-pc-linux-gnu
1.44365 ++host=i686-pc-linux-gnu
1.44366 ++host_os=linux-gnu
1.44367 ++
1.44368 ++# The build system.
1.44369 ++build_alias=i686-pc-linux-gnu
1.44370 ++build=i686-pc-linux-gnu
1.44371 ++build_os=linux-gnu
1.44372 ++
1.44373 ++# A sed program that does not truncate output.
1.44374 ++SED="/bin/sed"
1.44375 ++
1.44376 ++# Sed that helps us avoid accidentally triggering echo(1) options like -n.
1.44377 ++Xsed="$SED -e 1s/^X//"
1.44378 ++
1.44379 ++# A grep program that handles long lines.
1.44380 ++GREP="/bin/grep"
1.44381 ++
1.44382 ++# An ERE matcher.
1.44383 ++EGREP="/bin/grep -E"
1.44384 ++
1.44385 ++# A literal string matcher.
1.44386 ++FGREP="/bin/grep -F"
1.44387 ++
1.44388 ++# A BSD- or MS-compatible name lister.
1.44389 ++NM="nm"
1.44390 ++
1.44391 ++# Whether we need soft or hard links.
1.44392 ++LN_S="ln -s"
1.44393 ++
1.44394 ++# What is the maximum length of a command?
1.44395 ++max_cmd_len=805306365
1.44396 ++
1.44397 ++# Object file suffix (normally "o").
1.44398 ++objext=o
1.44399 ++
1.44400 ++# Executable file suffix (normally "").
1.44401 ++exeext=
1.44402 ++
1.44403 ++# whether the shell understands "unset".
1.44404 ++lt_unset=unset
1.44405 ++
1.44406 ++# turn spaces into newlines.
1.44407 ++SP2NL="tr \\040 \\012"
1.44408 ++
1.44409 ++# turn newlines into spaces.
1.44410 ++NL2SP="tr \\015\\012 \\040\\040"
1.44411 ++
1.44412 ++# How to create reloadable object files.
1.44413 ++reload_flag=" -r"
1.44414 ++reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
1.44415 ++
1.44416 ++# Method to check whether dependent libraries are shared objects.
1.44417 ++deplibs_check_method="pass_all"
1.44418 ++
1.44419 ++# Command to use when deplibs_check_method == "file_magic".
1.44420 ++file_magic_cmd="\$MAGIC_CMD"
1.44421 ++
1.44422 ++# The archiver.
1.44423 ++AR="ar"
1.44424 ++AR_FLAGS="cru"
1.44425 ++
1.44426 ++# A symbol stripping program.
1.44427 ++STRIP="strip"
1.44428 ++
1.44429 ++# Commands used to install an old-style archive.
1.44430 ++RANLIB="ranlib"
1.44431 ++old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
1.44432 ++old_postuninstall_cmds=""
1.44433 ++
1.44434 ++# A C compiler.
1.44435 ++LTCC="gcc"
1.44436 ++
1.44437 ++# LTCC compiler flags.
1.44438 ++LTCFLAGS="-g -O2"
1.44439 ++
1.44440 ++# Take the output of nm and produce a listing of raw symbols and C names.
1.44441 ++global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
1.44442 ++
1.44443 ++# Transform the output of nm in a proper C declaration.
1.44444 ++global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
1.44445 ++
1.44446 ++# Transform the output of nm in a C name address pair.
1.44447 ++global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'"
1.44448 ++
1.44449 ++# Transform the output of nm in a C name address pair when lib prefix is needed.
1.44450 ++global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"lib\\2\", (void *) \\&\\2},/p'"
1.44451 ++
1.44452 ++# The name of the directory that contains temporary libtool files.
1.44453 ++objdir=.libs
1.44454 ++
1.44455 ++# Shell to use when invoking shell scripts.
1.44456 ++SHELL="/bin/bash"
1.44457 ++
1.44458 ++# An echo program that does not interpret backslashes.
1.44459 ++ECHO="echo"
1.44460 ++
1.44461 ++# Used to examine libraries when file_magic_cmd begins with "file".
1.44462 ++MAGIC_CMD=file
1.44463 ++
1.44464 ++# Must we lock files when doing compilation?
1.44465 ++need_locks="no"
1.44466 ++
1.44467 ++# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
1.44468 ++DSYMUTIL=""
1.44469 ++
1.44470 ++# Tool to change global to local symbols on Mac OS X.
1.44471 ++NMEDIT=""
1.44472 ++
1.44473 ++# Tool to manipulate fat objects and archives on Mac OS X.
1.44474 ++LIPO=""
1.44475 ++
1.44476 ++# ldd/readelf like tool for Mach-O binaries on Mac OS X.
1.44477 ++OTOOL=""
1.44478 ++
1.44479 ++# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
1.44480 ++OTOOL64=""
1.44481 ++
1.44482 ++# Old archive suffix (normally "a").
1.44483 ++libext=a
1.44484 ++
1.44485 ++# Shared library suffix (normally ".so").
1.44486 ++shrext_cmds=".so"
1.44487 ++
1.44488 ++# The commands to extract the exported symbol list from a shared archive.
1.44489 ++extract_expsyms_cmds=""
1.44490 ++
1.44491 ++# Variables whose values should be saved in libtool wrapper scripts and
1.44492 ++# restored at link time.
1.44493 ++variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
1.44494 ++
1.44495 ++# Do we need the "lib" prefix for modules?
1.44496 ++need_lib_prefix=no
1.44497 ++
1.44498 ++# Do we need a version for libraries?
1.44499 ++need_version=no
1.44500 ++
1.44501 ++# Library versioning type.
1.44502 ++version_type=linux
1.44503 ++
1.44504 ++# Shared library runtime path variable.
1.44505 ++runpath_var=LD_RUN_PATH
1.44506 ++
1.44507 ++# Shared library path variable.
1.44508 ++shlibpath_var=LD_LIBRARY_PATH
1.44509 ++
1.44510 ++# Is shlibpath searched before the hard-coded library search path?
1.44511 ++shlibpath_overrides_runpath=no
1.44512 ++
1.44513 ++# Format of library name prefix.
1.44514 ++libname_spec="lib\$name"
1.44515 ++
1.44516 ++# List of archive names. First name is the real one, the rest are links.
1.44517 ++# The last name is the one that the linker finds with -lNAME
1.44518 ++library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
1.44519 ++
1.44520 ++# The coded name of the library, if different from the real name.
1.44521 ++soname_spec="\${libname}\${release}\${shared_ext}\$major"
1.44522 ++
1.44523 ++# Command to use after installation of a shared archive.
1.44524 ++postinstall_cmds=""
1.44525 ++
1.44526 ++# Command to use after uninstallation of a shared archive.
1.44527 ++postuninstall_cmds=""
1.44528 ++
1.44529 ++# Commands used to finish a libtool library installation in a directory.
1.44530 ++finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
1.44531 ++
1.44532 ++# As "finish_cmds", except a single script fragment to be evaled but
1.44533 ++# not shown.
1.44534 ++finish_eval=""
1.44535 ++
1.44536 ++# Whether we should hardcode library paths into libraries.
1.44537 ++hardcode_into_libs=yes
1.44538 ++
1.44539 ++# Compile-time system search path for libraries.
1.44540 ++sys_lib_search_path_spec="/usr/lib/gcc/i486-linux-gnu/4.2.4 /usr/lib /lib"
1.44541 ++
1.44542 ++# Run-time system search path for libraries.
1.44543 ++sys_lib_dlsearch_path_spec="/lib /usr/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/lib/alsa-lib /usr/local/lib "
1.44544 ++
1.44545 ++# Whether dlopen is supported.
1.44546 ++dlopen_support=unknown
1.44547 ++
1.44548 ++# Whether dlopen of programs is supported.
1.44549 ++dlopen_self=unknown
1.44550 ++
1.44551 ++# Whether dlopen of statically linked programs is supported.
1.44552 ++dlopen_self_static=unknown
1.44553 ++
1.44554 ++# Commands to strip libraries.
1.44555 ++old_striplib="strip --strip-debug"
1.44556 ++striplib="strip --strip-unneeded"
1.44557 ++
1.44558 ++
1.44559 ++# The linker used to build libraries.
1.44560 ++LD="ld"
1.44561 ++
1.44562 ++# Commands used to build an old-style archive.
1.44563 ++old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
1.44564 ++
1.44565 ++# A language specific compiler.
1.44566 ++CC="gcc"
1.44567 ++
1.44568 ++# Is the compiler the GNU compiler?
1.44569 ++with_gcc=yes
1.44570 ++
1.44571 ++# Compiler flag to turn off builtin functions.
1.44572 ++no_builtin_flag=" -fno-builtin"
1.44573 ++
1.44574 ++# How to pass a linker flag through the compiler.
1.44575 ++wl="-Wl,"
1.44576 ++
1.44577 ++# Additional compiler flags for building library objects.
1.44578 ++pic_flag=" -fPIC -DPIC"
1.44579 ++
1.44580 ++# Compiler flag to prevent dynamic linking.
1.44581 ++link_static_flag="-static"
1.44582 ++
1.44583 ++# Does compiler simultaneously support -c and -o options?
1.44584 ++compiler_c_o="yes"
1.44585 ++
1.44586 ++# Whether or not to add -lc for building shared libraries.
1.44587 ++build_libtool_need_lc=yes
1.44588 ++
1.44589 ++# Whether or not to disallow shared libs when runtime libs are static.
1.44590 ++allow_libtool_libs_with_static_runtimes=no
1.44591 ++
1.44592 ++# Compiler flag to allow reflexive dlopens.
1.44593 ++export_dynamic_flag_spec="\${wl}--export-dynamic"
1.44594 ++
1.44595 ++# Compiler flag to generate shared objects directly from archives.
1.44596 ++whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
1.44597 ++
1.44598 ++# Whether the compiler copes with passing no objects directly.
1.44599 ++compiler_needs_object="no"
1.44600 ++
1.44601 ++# Create an old-style archive from a shared archive.
1.44602 ++old_archive_from_new_cmds=""
1.44603 ++
1.44604 ++# Create a temporary old-style archive to link instead of a shared archive.
1.44605 ++old_archive_from_expsyms_cmds=""
1.44606 ++
1.44607 ++# Commands used to build a shared archive.
1.44608 ++archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
1.44609 ++archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
1.44610 ++ cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
1.44611 ++ echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
1.44612 ++ \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
1.44613 ++
1.44614 ++# Commands used to build a loadable module if different from building
1.44615 ++# a shared archive.
1.44616 ++module_cmds=""
1.44617 ++module_expsym_cmds=""
1.44618 ++
1.44619 ++# Whether we are building with GNU ld or not.
1.44620 ++with_gnu_ld="yes"
1.44621 ++
1.44622 ++# Flag that allows shared libraries with undefined symbols to be built.
1.44623 ++allow_undefined_flag=""
1.44624 ++
1.44625 ++# Flag that enforces no undefined symbols.
1.44626 ++no_undefined_flag=""
1.44627 ++
1.44628 ++# Flag to hardcode $libdir into a binary during linking.
1.44629 ++# This must work even if $libdir does not exist
1.44630 ++hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
1.44631 ++
1.44632 ++# If ld is used when linking, flag to hardcode $libdir into a binary
1.44633 ++# during linking. This must work even if $libdir does not exist.
1.44634 ++hardcode_libdir_flag_spec_ld=""
1.44635 ++
1.44636 ++# Whether we need a single "-rpath" flag with a separated argument.
1.44637 ++hardcode_libdir_separator=""
1.44638 ++
1.44639 ++# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
1.44640 ++# DIR into the resulting binary.
1.44641 ++hardcode_direct=no
1.44642 ++
1.44643 ++# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
1.44644 ++# DIR into the resulting binary and the resulting library dependency is
1.44645 ++# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
1.44646 ++# library is relocated.
1.44647 ++hardcode_direct_absolute=no
1.44648 ++
1.44649 ++# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
1.44650 ++# into the resulting binary.
1.44651 ++hardcode_minus_L=no
1.44652 ++
1.44653 ++# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
1.44654 ++# into the resulting binary.
1.44655 ++hardcode_shlibpath_var=unsupported
1.44656 ++
1.44657 ++# Set to "yes" if building a shared library automatically hardcodes DIR
1.44658 ++# into the library and all subsequent libraries and executables linked
1.44659 ++# against it.
1.44660 ++hardcode_automatic=no
1.44661 ++
1.44662 ++# Set to yes if linker adds runtime paths of dependent libraries
1.44663 ++# to runtime path list.
1.44664 ++inherit_rpath=no
1.44665 ++
1.44666 ++# Whether libtool must link a program against all its dependency libraries.
1.44667 ++link_all_deplibs=unknown
1.44668 ++
1.44669 ++# Fix the shell variable $srcfile for the compiler.
1.44670 ++fix_srcfile_path=""
1.44671 ++
1.44672 ++# Set to "yes" if exported symbols are required.
1.44673 ++always_export_symbols=no
1.44674 ++
1.44675 ++# The commands to list exported symbols.
1.44676 ++export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
1.44677 ++
1.44678 ++# Symbols that should not be listed in the preloaded symbols.
1.44679 ++exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
1.44680 ++
1.44681 ++# Symbols that must always be exported.
1.44682 ++include_expsyms=""
1.44683 ++
1.44684 ++# Commands necessary for linking programs (against libraries) with templates.
1.44685 ++prelink_cmds=""
1.44686 ++
1.44687 ++# Specify filename containing input files.
1.44688 ++file_list_spec=""
1.44689 ++
1.44690 ++# How to hardcode a shared library path into an executable.
1.44691 ++hardcode_action=immediate
1.44692 ++
1.44693 ++# ### END LIBTOOL CONFIG
1.44694 ++
1.44695 ++# Generated from ltmain.m4sh; do not edit by hand
1.44696 ++
1.44697 ++# ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
1.44698 ++# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
1.44699 ++
1.44700 ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
1.44701 ++# This is free software; see the source for copying conditions. There is NO
1.44702 ++# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1.44703 ++
1.44704 ++# This program is free software; you can redistribute it and/or modify
1.44705 ++# it under the terms of the GNU General Public License as published by
1.44706 ++# the Free Software Foundation; either version 2 of the License, or
1.44707 ++# (at your option) any later version.
1.44708 ++#
1.44709 ++# This program is distributed in the hope that it will be useful, but
1.44710 ++# WITHOUT ANY WARRANTY; without even the implied warranty of
1.44711 ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1.44712 ++# General Public License for more details.
1.44713 ++#
1.44714 ++# You should have received a copy of the GNU General Public License
1.44715 ++# along with this program; if not, write to the Free Software
1.44716 ++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1.44717 ++#
1.44718 ++# As a special exception to the GNU General Public License, if you
1.44719 ++# distribute this file as part of a program that contains a
1.44720 ++# configuration script generated by Autoconf, you may include it under
1.44721 ++# the same distribution terms that you use for the rest of that program.
1.44722 ++
1.44723 ++# Usage: $progname [OPTION]... [MODE-ARG]...
1.44724 ++#
1.44725 ++# Provide generalized library-building support services.
1.44726 ++#
1.44727 ++# --config show all configuration variables
1.44728 ++# --debug enable verbose shell tracing
1.44729 ++# -n, --dry-run display commands without modifying any files
1.44730 ++# --features display basic configuration information and exit
1.44731 ++# --mode=MODE use operation mode MODE
1.44732 ++# --preserve-dup-deps don't remove duplicate dependency libraries
1.44733 ++# --quiet, --silent don't print informational messages
1.44734 ++# --tag=TAG use configuration variables from tag TAG
1.44735 ++# -v, --verbose print informational messages (default)
1.44736 ++# --version print version information
1.44737 ++# -h, --help print short or long help message
1.44738 ++#
1.44739 ++# MODE must be one of the following:
1.44740 ++#
1.44741 ++# clean remove files from the build directory
1.44742 ++# compile compile a source file into a libtool object
1.44743 ++# execute automatically set library path, then run a program
1.44744 ++# finish complete the installation of libtool libraries
1.44745 ++# install install libraries or executables
1.44746 ++# link create a library or an executable
1.44747 ++# uninstall remove libraries from an installed directory
1.44748 ++#
1.44749 ++# MODE-ARGS vary depending on the MODE.
1.44750 ++# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
1.44751 ++#
1.44752 ++# When reporting a bug, please describe a test case to reproduce it and
1.44753 ++# include the following information:
1.44754 ++#
1.44755 ++# host-triplet: $host
1.44756 ++# shell: $SHELL
1.44757 ++# compiler: $LTCC
1.44758 ++# compiler flags: $LTCFLAGS
1.44759 ++# linker: $LD (gnu? $with_gnu_ld)
1.44760 ++# $progname: (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
1.44761 ++# automake: $automake_version
1.44762 ++# autoconf: $autoconf_version
1.44763 ++#
1.44764 ++# Report bugs to <bug-libtool@gnu.org>.
1.44765 ++
1.44766 ++PROGRAM=ltmain.sh
1.44767 ++PACKAGE=libtool
1.44768 ++VERSION=2.1a
1.44769 ++TIMESTAMP=" 1.2435 2007/03/18 18:44:42"
1.44770 ++package_revision=1.2435
1.44771 ++
1.44772 ++# Be Bourne compatible
1.44773 ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
1.44774 ++ emulate sh
1.44775 ++ NULLCMD=:
1.44776 ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
1.44777 ++ # is contrary to our usage. Disable this feature.
1.44778 ++ alias -g '${1+"$@"}'='"$@"'
1.44779 ++ setopt NO_GLOB_SUBST
1.44780 ++else
1.44781 ++ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
1.44782 ++fi
1.44783 ++BIN_SH=xpg4; export BIN_SH # for Tru64
1.44784 ++DUALCASE=1; export DUALCASE # for MKS sh
1.44785 ++
1.44786 ++# NLS nuisances: We save the old values to restore during execute mode.
1.44787 ++# Only set LANG and LC_ALL to C if already set.
1.44788 ++# These must not be set unconditionally because not all systems understand
1.44789 ++# e.g. LANG=C (notably SCO).
1.44790 ++for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1.44791 ++do
1.44792 ++ eval "if test \"\${$lt_var+set}\" = set; then
1.44793 ++ save_$lt_var=\$$lt_var
1.44794 ++ $lt_var=C
1.44795 ++ export $lt_var
1.44796 ++ fi"
1.44797 ++done
1.44798 ++
1.44799 ++$lt_unset CDPATH
1.44800 ++
1.44801 ++
1.44802 ++
1.44803 ++
1.44804 ++
1.44805 ++: ${CP="cp -f"}
1.44806 ++: ${ECHO="echo"}
1.44807 ++: ${EGREP="/bin/grep -E"}
1.44808 ++: ${FGREP="/bin/grep -F"}
1.44809 ++: ${GREP="/bin/grep"}
1.44810 ++: ${LN_S="ln -s"}
1.44811 ++: ${MAKE="make"}
1.44812 ++: ${MKDIR="mkdir"}
1.44813 ++: ${MV="mv -f"}
1.44814 ++: ${RM="rm -f"}
1.44815 ++: ${SED="/bin/sed"}
1.44816 ++: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
1.44817 ++: ${Xsed="$SED -e 1s/^X//"}
1.44818 ++
1.44819 ++# Global variables:
1.44820 ++EXIT_SUCCESS=0
1.44821 ++EXIT_FAILURE=1
1.44822 ++EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
1.44823 ++EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
1.44824 ++
1.44825 ++exit_status=$EXIT_SUCCESS
1.44826 ++
1.44827 ++# Make sure IFS has a sensible default
1.44828 ++lt_nl='
1.44829 ++'
1.44830 ++IFS=" $lt_nl"
1.44831 ++
1.44832 ++dirname="s,/[^/]*$,,"
1.44833 ++basename="s,^.*/,,"
1.44834 ++
1.44835 ++# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
1.44836 ++# is ksh but when the shell is invoked as "sh" and the current value of
1.44837 ++# the _XPG environment variable is not equal to 1 (one), the special
1.44838 ++# positional parameter $0, within a function call, is the name of the
1.44839 ++# function.
1.44840 ++progpath="$0"
1.44841 ++
1.44842 ++# The name of this program:
1.44843 ++# In the unlikely event $progname began with a '-', it would play havoc with
1.44844 ++# func_echo (imagine progname=-n), so we prepend ./ in that case:
1.44845 ++progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,./-,'`
1.44846 ++
1.44847 ++# Make sure we have an absolute path for reexecution:
1.44848 ++case $progpath in
1.44849 ++ [\\/]*|[A-Za-z]:\\*) ;;
1.44850 ++ *[\\/]*)
1.44851 ++ progdir=`$ECHO "X$progpath" | $Xsed -e "$dirname"`
1.44852 ++ progdir=`cd "$progdir" && pwd`
1.44853 ++ progpath="$progdir/$progname"
1.44854 ++ ;;
1.44855 ++ *)
1.44856 ++ save_IFS="$IFS"
1.44857 ++ IFS=:
1.44858 ++ for progdir in $PATH; do
1.44859 ++ IFS="$save_IFS"
1.44860 ++ test -x "$progdir/$progname" && break
1.44861 ++ done
1.44862 ++ IFS="$save_IFS"
1.44863 ++ test -n "$progdir" || progdir=`pwd`
1.44864 ++ progpath="$progdir/$progname"
1.44865 ++ ;;
1.44866 ++esac
1.44867 ++
1.44868 ++# Sed substitution that helps us do robust quoting. It backslashifies
1.44869 ++# metacharacters that are still active within double-quoted strings.
1.44870 ++Xsed="${SED}"' -e 1s/^X//'
1.44871 ++sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
1.44872 ++
1.44873 ++# Same as above, but do not quote variable references.
1.44874 ++double_quote_subst='s/\(["`\\]\)/\\\1/g'
1.44875 ++
1.44876 ++# Re-`\' parameter expansions in output of double_quote_subst that were
1.44877 ++# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
1.44878 ++# in input to double_quote_subst, that '$' was protected from expansion.
1.44879 ++# Since each input `\' is now two `\'s, look for any number of runs of
1.44880 ++# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
1.44881 ++bs='\\'
1.44882 ++bs2='\\\\'
1.44883 ++bs4='\\\\\\\\'
1.44884 ++dollar='\$'
1.44885 ++sed_double_backslash="\
1.44886 ++ s/$bs4/&\\
1.44887 ++/g
1.44888 ++ s/^$bs2$dollar/$bs&/
1.44889 ++ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
1.44890 ++ s/\n//g"
1.44891 ++
1.44892 ++# Standard options:
1.44893 ++opt_dry_run=false
1.44894 ++opt_help=false
1.44895 ++opt_quiet=false
1.44896 ++opt_verbose=false
1.44897 ++
1.44898 ++# func_echo arg...
1.44899 ++# Echo program name prefixed message, along with the current mode
1.44900 ++# name if it has been set yet.
1.44901 ++func_echo ()
1.44902 ++{
1.44903 ++ $ECHO "$progname${mode+: }$mode: "${1+"$@"}
1.44904 ++}
1.44905 ++
1.44906 ++# func_verbose arg...
1.44907 ++# Echo program name prefixed message in verbose mode only.
1.44908 ++func_verbose ()
1.44909 ++{
1.44910 ++ $opt_verbose && func_echo ${1+"$@"}
1.44911 ++
1.44912 ++ # A bug in bash halts the script if the last line of a function
1.44913 ++ # fails when set -e is in force, so we need another command to
1.44914 ++ # work around that:
1.44915 ++ :
1.44916 ++}
1.44917 ++
1.44918 ++# func_error arg...
1.44919 ++# Echo program name prefixed message to standard error.
1.44920 ++func_error ()
1.44921 ++{
1.44922 ++ $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
1.44923 ++}
1.44924 ++
1.44925 ++# func_warning arg...
1.44926 ++# Echo program name prefixed warning message to standard error.
1.44927 ++func_warning ()
1.44928 ++{
1.44929 ++ $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
1.44930 ++}
1.44931 ++
1.44932 ++# func_fatal_error arg...
1.44933 ++# Echo program name prefixed message to standard error, and exit.
1.44934 ++func_fatal_error ()
1.44935 ++{
1.44936 ++ func_error ${1+"$@"}
1.44937 ++ exit $EXIT_FAILURE
1.44938 ++}
1.44939 ++
1.44940 ++# func_fatal_help arg...
1.44941 ++# Echo program name prefixed message to standard error, followed by
1.44942 ++# a help hint, and exit.
1.44943 ++func_fatal_help ()
1.44944 ++{
1.44945 ++ func_error ${1+"$@"}
1.44946 ++ func_fatal_error "$help"
1.44947 ++}
1.44948 ++help="Try \`$progname --help' for more information." ## default
1.44949 ++
1.44950 ++
1.44951 ++# func_grep expression filename
1.44952 ++# Check whether EXPRESSION matches any line of FILENAME, without output.
1.44953 ++func_grep ()
1.44954 ++{
1.44955 ++ $GREP "$1" "$2" >/dev/null 2>&1
1.44956 ++}
1.44957 ++
1.44958 ++
1.44959 ++# func_mkdir_p directory-path
1.44960 ++# Make sure the entire path to DIRECTORY-PATH is available.
1.44961 ++func_mkdir_p ()
1.44962 ++{
1.44963 ++ my_directory_path="$1"
1.44964 ++ my_dir_list=
1.44965 ++
1.44966 ++ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
1.44967 ++
1.44968 ++ # Protect directory names starting with `-'
1.44969 ++ case $my_directory_path in
1.44970 ++ -*) my_directory_path="./$my_directory_path" ;;
1.44971 ++ esac
1.44972 ++
1.44973 ++ # While some portion of DIR does not yet exist...
1.44974 ++ while test ! -d "$my_directory_path"; do
1.44975 ++ # ...make a list in topmost first order. Use a colon delimited
1.44976 ++ # list incase some portion of path contains whitespace.
1.44977 ++ my_dir_list="$my_directory_path:$my_dir_list"
1.44978 ++
1.44979 ++ # If the last portion added has no slash in it, the list is done
1.44980 ++ case $my_directory_path in */*) ;; *) break ;; esac
1.44981 ++
1.44982 ++ # ...otherwise throw away the child directory and loop
1.44983 ++ my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
1.44984 ++ done
1.44985 ++ my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
1.44986 ++
1.44987 ++ save_mkdir_p_IFS="$IFS"; IFS=':'
1.44988 ++ for my_dir in $my_dir_list; do
1.44989 ++ IFS="$save_mkdir_p_IFS"
1.44990 ++ # mkdir can fail with a `File exist' error if two processes
1.44991 ++ # try to create one of the directories concurrently. Don't
1.44992 ++ # stop in that case!
1.44993 ++ $MKDIR "$my_dir" 2>/dev/null || :
1.44994 ++ done
1.44995 ++ IFS="$save_mkdir_p_IFS"
1.44996 ++
1.44997 ++ # Bail out if we (or some other process) failed to create a directory.
1.44998 ++ test -d "$my_directory_path" || \
1.44999 ++ func_fatal_error "Failed to create \`$1'"
1.45000 ++ fi
1.45001 ++}
1.45002 ++
1.45003 ++
1.45004 ++# func_mktempdir [string]
1.45005 ++# Make a temporary directory that won't clash with other running
1.45006 ++# libtool processes, and avoids race conditions if possible. If
1.45007 ++# given, STRING is the basename for that directory.
1.45008 ++func_mktempdir ()
1.45009 ++{
1.45010 ++ my_template="${TMPDIR-/tmp}/${1-$progname}"
1.45011 ++
1.45012 ++ if test "$opt_dry_run" = ":"; then
1.45013 ++ # Return a directory name, but don't create it in dry-run mode
1.45014 ++ my_tmpdir="${my_template}-$$"
1.45015 ++ else
1.45016 ++
1.45017 ++ # If mktemp works, use that first and foremost
1.45018 ++ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
1.45019 ++
1.45020 ++ if test ! -d "$my_tmpdir"; then
1.45021 ++ # Failing that, at least try and use $RANDOM to avoid a race
1.45022 ++ my_tmpdir="${my_template}-${RANDOM-0}$$"
1.45023 ++
1.45024 ++ save_mktempdir_umask=`umask`
1.45025 ++ umask 0077
1.45026 ++ $MKDIR "$my_tmpdir"
1.45027 ++ umask $save_mktempdir_umask
1.45028 ++ fi
1.45029 ++
1.45030 ++ # If we're not in dry-run mode, bomb out on failure
1.45031 ++ test -d "$my_tmpdir" || \
1.45032 ++ func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
1.45033 ++ fi
1.45034 ++
1.45035 ++ $ECHO "X$my_tmpdir" | $Xsed
1.45036 ++}
1.45037 ++
1.45038 ++
1.45039 ++# func_quote_for_eval arg
1.45040 ++# Aesthetically quote ARG to be evaled later.
1.45041 ++# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
1.45042 ++# is double-quoted, suitable for a subsequent eval, whereas
1.45043 ++# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
1.45044 ++# which are still active within double quotes backslashified.
1.45045 ++func_quote_for_eval ()
1.45046 ++{
1.45047 ++ case $1 in
1.45048 ++ *[\\\`\"\$]*)
1.45049 ++ func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
1.45050 ++ *)
1.45051 ++ func_quote_for_eval_unquoted_result="$1" ;;
1.45052 ++ esac
1.45053 ++
1.45054 ++ case $func_quote_for_eval_unquoted_result in
1.45055 ++ # Double-quote args containing shell metacharacters to delay
1.45056 ++ # word splitting, command substitution and and variable
1.45057 ++ # expansion for a subsequent eval.
1.45058 ++ # Many Bourne shells cannot handle close brackets correctly
1.45059 ++ # in scan sets, so we specify it separately.
1.45060 ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1.45061 ++ func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
1.45062 ++ ;;
1.45063 ++ *)
1.45064 ++ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
1.45065 ++ esac
1.45066 ++}
1.45067 ++
1.45068 ++
1.45069 ++# func_quote_for_expand arg
1.45070 ++# Aesthetically quote ARG to be evaled later; same as above,
1.45071 ++# but do not quote variable references.
1.45072 ++func_quote_for_expand ()
1.45073 ++{
1.45074 ++ case $1 in
1.45075 ++ *[\\\`\"]*)
1.45076 ++ my_arg=`$ECHO "X$1" | $Xsed \
1.45077 ++ -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
1.45078 ++ *)
1.45079 ++ my_arg="$1" ;;
1.45080 ++ esac
1.45081 ++
1.45082 ++ case $my_arg in
1.45083 ++ # Double-quote args containing shell metacharacters to delay
1.45084 ++ # word splitting and command substitution for a subsequent eval.
1.45085 ++ # Many Bourne shells cannot handle close brackets correctly
1.45086 ++ # in scan sets, so we specify it separately.
1.45087 ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1.45088 ++ my_arg="\"$my_arg\""
1.45089 ++ ;;
1.45090 ++ esac
1.45091 ++
1.45092 ++ func_quote_for_expand_result="$my_arg"
1.45093 ++}
1.45094 ++
1.45095 ++
1.45096 ++# func_show_eval cmd [fail_exp]
1.45097 ++# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
1.45098 ++# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
1.45099 ++# is given, then evaluate it.
1.45100 ++func_show_eval ()
1.45101 ++{
1.45102 ++ my_cmd="$1"
1.45103 ++ my_fail_exp="${2-:}"
1.45104 ++
1.45105 ++ ${opt_silent-false} || {
1.45106 ++ func_quote_for_expand "$my_cmd"
1.45107 ++ eval "func_echo $func_quote_for_expand_result"
1.45108 ++ }
1.45109 ++
1.45110 ++ if ${opt_dry_run-false}; then :; else
1.45111 ++ eval "$my_cmd"
1.45112 ++ my_status=$?
1.45113 ++ if test "$my_status" -eq 0; then :; else
1.45114 ++ eval "(exit $my_status); $my_fail_exp"
1.45115 ++ fi
1.45116 ++ fi
1.45117 ++}
1.45118 ++
1.45119 ++
1.45120 ++
1.45121 ++
1.45122 ++
1.45123 ++# func_version
1.45124 ++# Echo version message to standard output and exit.
1.45125 ++func_version ()
1.45126 ++{
1.45127 ++ $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
1.45128 ++ s/^# //
1.45129 ++ s/^# *$//
1.45130 ++ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
1.45131 ++ p
1.45132 ++ }' < "$progpath"
1.45133 ++ exit $?
1.45134 ++}
1.45135 ++
1.45136 ++# func_usage
1.45137 ++# Echo short help message to standard output and exit.
1.45138 ++func_usage ()
1.45139 ++{
1.45140 ++ $SED -n '/^# Usage:/,/# -h/ {
1.45141 ++ s/^# //
1.45142 ++ s/^# *$//
1.45143 ++ s/\$progname/'$progname'/
1.45144 ++ p
1.45145 ++ }' < "$progpath"
1.45146 ++ $ECHO
1.45147 ++ $ECHO "run \`$progname --help | more' for full usage"
1.45148 ++ exit $?
1.45149 ++}
1.45150 ++
1.45151 ++# func_help
1.45152 ++# Echo long help message to standard output and exit.
1.45153 ++func_help ()
1.45154 ++{
1.45155 ++ $SED -n '/^# Usage:/,/# Report bugs to/ {
1.45156 ++ s/^# //
1.45157 ++ s/^# *$//
1.45158 ++ s*\$progname*'$progname'*
1.45159 ++ s*\$host*'"$host"'*
1.45160 ++ s*\$SHELL*'"$SHELL"'*
1.45161 ++ s*\$LTCC*'"$LTCC"'*
1.45162 ++ s*\$LTCFLAGS*'"$LTCFLAGS"'*
1.45163 ++ s*\$LD*'"$LD"'*
1.45164 ++ s/\$with_gnu_ld/'"$with_gnu_ld"'/
1.45165 ++ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
1.45166 ++ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
1.45167 ++ p
1.45168 ++ }' < "$progpath"
1.45169 ++ exit $?
1.45170 ++}
1.45171 ++
1.45172 ++# func_missing_arg argname
1.45173 ++# Echo program name prefixed message to standard error and set global
1.45174 ++# exit_cmd.
1.45175 ++func_missing_arg ()
1.45176 ++{
1.45177 ++ func_error "missing argument for $1"
1.45178 ++ exit_cmd=exit
1.45179 ++}
1.45180 ++
1.45181 ++exit_cmd=:
1.45182 ++
1.45183 ++
1.45184 ++
1.45185 ++
1.45186 ++
1.45187 ++# Check that we have a working $ECHO.
1.45188 ++if test "X$1" = X--no-reexec; then
1.45189 ++ # Discard the --no-reexec flag, and continue.
1.45190 ++ shift
1.45191 ++elif test "X$1" = X--fallback-echo; then
1.45192 ++ # Avoid inline document here, it may be left over
1.45193 ++ :
1.45194 ++elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
1.45195 ++ # Yippee, $ECHO works!
1.45196 ++ :
1.45197 ++else
1.45198 ++ # Restart under the correct shell, and then maybe $ECHO will work.
1.45199 ++ exec $SHELL "$progpath" --no-reexec ${1+"$@"}
1.45200 ++fi
1.45201 ++
1.45202 ++if test "X$1" = X--fallback-echo; then
1.45203 ++ # used as fallback echo
1.45204 ++ shift
1.45205 ++ cat <<EOF
1.45206 ++$*
1.45207 ++EOF
1.45208 ++ exit $EXIT_SUCCESS
1.45209 ++fi
1.45210 ++
1.45211 ++magic="%%%MAGIC variable%%%"
1.45212 ++
1.45213 ++
1.45214 ++# Global variables.
1.45215 ++# $mode is unset
1.45216 ++nonopt=
1.45217 ++execute_dlfiles=
1.45218 ++preserve_args=
1.45219 ++lo2o="s/\\.lo\$/.${objext}/"
1.45220 ++o2lo="s/\\.${objext}\$/.lo/"
1.45221 ++extracted_archives=
1.45222 ++extracted_serial=0
1.45223 ++
1.45224 ++opt_dry_run=false
1.45225 ++opt_duplicate_deps=false
1.45226 ++opt_silent=false
1.45227 ++opt_debug=:
1.45228 ++
1.45229 ++# If this variable is set in any of the actions, the command in it
1.45230 ++# will be execed at the end. This prevents here-documents from being
1.45231 ++# left over by shells.
1.45232 ++exec_cmd=
1.45233 ++
1.45234 ++# func_fatal_configuration arg...
1.45235 ++# Echo program name prefixed message to standard error, followed by
1.45236 ++# a configuration failure hint, and exit.
1.45237 ++func_fatal_configuration ()
1.45238 ++{
1.45239 ++ func_error ${1+"$@"}
1.45240 ++ func_error "See the $PACKAGE documentation for more information."
1.45241 ++ func_fatal_error "Fatal configuration error."
1.45242 ++}
1.45243 ++
1.45244 ++
1.45245 ++# func_config
1.45246 ++# Display the configuration for all the tags in this script.
1.45247 ++func_config ()
1.45248 ++{
1.45249 ++ re_begincf='^# ### BEGIN LIBTOOL'
1.45250 ++ re_endcf='^# ### END LIBTOOL'
1.45251 ++
1.45252 ++ # Default configuration.
1.45253 ++ $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
1.45254 ++
1.45255 ++ # Now print the configurations for the tags.
1.45256 ++ for tagname in $taglist; do
1.45257 ++ $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
1.45258 ++ done
1.45259 ++
1.45260 ++ exit $?
1.45261 ++}
1.45262 ++
1.45263 ++# func_features
1.45264 ++# Display the features supported by this script.
1.45265 ++func_features ()
1.45266 ++{
1.45267 ++ $ECHO "host: $host"
1.45268 ++ if test "$build_libtool_libs" = yes; then
1.45269 ++ $ECHO "enable shared libraries"
1.45270 ++ else
1.45271 ++ $ECHO "disable shared libraries"
1.45272 ++ fi
1.45273 ++ if test "$build_old_libs" = yes; then
1.45274 ++ $ECHO "enable static libraries"
1.45275 ++ else
1.45276 ++ $ECHO "disable static libraries"
1.45277 ++ fi
1.45278 ++
1.45279 ++ exit $?
1.45280 ++}
1.45281 ++
1.45282 ++# func_enable_tag tagname
1.45283 ++# Verify that TAGNAME is valid, and either flag an error and exit, or
1.45284 ++# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
1.45285 ++# variable here.
1.45286 ++func_enable_tag ()
1.45287 ++{
1.45288 ++ # Global variable:
1.45289 ++ tagname="$1"
1.45290 ++
1.45291 ++ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
1.45292 ++ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
1.45293 ++ sed_extractcf="/$re_begincf/,/$re_endcf/p"
1.45294 ++
1.45295 ++ # Validate tagname.
1.45296 ++ case $tagname in
1.45297 ++ *[!-_A-Za-z0-9,/]*)
1.45298 ++ func_fatal_error "invalid tag name: $tagname"
1.45299 ++ ;;
1.45300 ++ esac
1.45301 ++
1.45302 ++ # Don't test for the "default" C tag, as we know it's
1.45303 ++ # there but not specially marked.
1.45304 ++ case $tagname in
1.45305 ++ CC) ;;
1.45306 ++ *)
1.45307 ++ if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
1.45308 ++ taglist="$taglist $tagname"
1.45309 ++
1.45310 ++ # Evaluate the configuration. Be careful to quote the path
1.45311 ++ # and the sed script, to avoid splitting on whitespace, but
1.45312 ++ # also don't use non-portable quotes within backquotes within
1.45313 ++ # quotes we have to do it in 2 steps:
1.45314 ++ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
1.45315 ++ eval "$extractedcf"
1.45316 ++ else
1.45317 ++ func_error "ignoring unknown tag $tagname"
1.45318 ++ fi
1.45319 ++ ;;
1.45320 ++ esac
1.45321 ++}
1.45322 ++
1.45323 ++
1.45324 ++func_mode_help ()
1.45325 ++{
1.45326 ++ # We need to display help for each of the modes.
1.45327 ++ case $mode in
1.45328 ++ "")
1.45329 ++ # Generic help is extracted from the usage comments
1.45330 ++ # at the start of this file.
1.45331 ++ func_help
1.45332 ++ ;;
1.45333 ++
1.45334 ++ clean)
1.45335 ++ $ECHO \
1.45336 ++"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
1.45337 ++
1.45338 ++Remove files from the build directory.
1.45339 ++
1.45340 ++RM is the name of the program to use to delete files associated with each FILE
1.45341 ++(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
1.45342 ++to RM.
1.45343 ++
1.45344 ++If FILE is a libtool library, object or program, all the files associated
1.45345 ++with it are deleted. Otherwise, only FILE itself is deleted using RM."
1.45346 ++ ;;
1.45347 ++
1.45348 ++ compile)
1.45349 ++ $ECHO \
1.45350 ++"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
1.45351 ++
1.45352 ++Compile a source file into a libtool library object.
1.45353 ++
1.45354 ++This mode accepts the following additional options:
1.45355 ++
1.45356 ++ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
1.45357 ++ -no-suppress do not suppress compiler output for multiple passes
1.45358 ++ -prefer-pic try to building PIC objects only
1.45359 ++ -prefer-non-pic try to building non-PIC objects only
1.45360 ++ -shared do not build a \`.o' file suitable for static linking
1.45361 ++ -static only build a \`.o' file suitable for static linking
1.45362 ++
1.45363 ++COMPILE-COMMAND is a command to be used in creating a \`standard' object file
1.45364 ++from the given SOURCEFILE.
1.45365 ++
1.45366 ++The output file name is determined by removing the directory component from
1.45367 ++SOURCEFILE, then substituting the C source code suffix \`.c' with the
1.45368 ++library object suffix, \`.lo'."
1.45369 ++ ;;
1.45370 ++
1.45371 ++ execute)
1.45372 ++ $ECHO \
1.45373 ++"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
1.45374 ++
1.45375 ++Automatically set library path, then run a program.
1.45376 ++
1.45377 ++This mode accepts the following additional options:
1.45378 ++
1.45379 ++ -dlopen FILE add the directory containing FILE to the library path
1.45380 ++
1.45381 ++This mode sets the library path environment variable according to \`-dlopen'
1.45382 ++flags.
1.45383 ++
1.45384 ++If any of the ARGS are libtool executable wrappers, then they are translated
1.45385 ++into their corresponding uninstalled binary, and any of their required library
1.45386 ++directories are added to the library path.
1.45387 ++
1.45388 ++Then, COMMAND is executed, with ARGS as arguments."
1.45389 ++ ;;
1.45390 ++
1.45391 ++ finish)
1.45392 ++ $ECHO \
1.45393 ++"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
1.45394 ++
1.45395 ++Complete the installation of libtool libraries.
1.45396 ++
1.45397 ++Each LIBDIR is a directory that contains libtool libraries.
1.45398 ++
1.45399 ++The commands that this mode executes may require superuser privileges. Use
1.45400 ++the \`--dry-run' option if you just want to see what would be executed."
1.45401 ++ ;;
1.45402 ++
1.45403 ++ install)
1.45404 ++ $ECHO \
1.45405 ++"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
1.45406 ++
1.45407 ++Install executables or libraries.
1.45408 ++
1.45409 ++INSTALL-COMMAND is the installation command. The first component should be
1.45410 ++either the \`install' or \`cp' program.
1.45411 ++
1.45412 ++The following components of INSTALL-COMMAND are treated specially:
1.45413 ++
1.45414 ++ -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
1.45415 ++
1.45416 ++The rest of the components are interpreted as arguments to that command (only
1.45417 ++BSD-compatible install options are recognized)."
1.45418 ++ ;;
1.45419 ++
1.45420 ++ link)
1.45421 ++ $ECHO \
1.45422 ++"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
1.45423 ++
1.45424 ++Link object files or libraries together to form another library, or to
1.45425 ++create an executable program.
1.45426 ++
1.45427 ++LINK-COMMAND is a command using the C compiler that you would use to create
1.45428 ++a program from several object files.
1.45429 ++
1.45430 ++The following components of LINK-COMMAND are treated specially:
1.45431 ++
1.45432 ++ -all-static do not do any dynamic linking at all
1.45433 ++ -avoid-version do not add a version suffix if possible
1.45434 ++ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
1.45435 ++ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
1.45436 ++ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
1.45437 ++ -export-symbols SYMFILE
1.45438 ++ try to export only the symbols listed in SYMFILE
1.45439 ++ -export-symbols-regex REGEX
1.45440 ++ try to export only the symbols matching REGEX
1.45441 ++ -LLIBDIR search LIBDIR for required installed libraries
1.45442 ++ -lNAME OUTPUT-FILE requires the installed library libNAME
1.45443 ++ -module build a library that can dlopened
1.45444 ++ -no-fast-install disable the fast-install mode
1.45445 ++ -no-install link a not-installable executable
1.45446 ++ -no-undefined declare that a library does not refer to external symbols
1.45447 ++ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
1.45448 ++ -objectlist FILE Use a list of object files found in FILE to specify objects
1.45449 ++ -precious-files-regex REGEX
1.45450 ++ don't remove output files matching REGEX
1.45451 ++ -release RELEASE specify package release information
1.45452 ++ -rpath LIBDIR the created library will eventually be installed in LIBDIR
1.45453 ++ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
1.45454 ++ -shared only do dynamic linking of libtool libraries
1.45455 ++ -shrext SUFFIX override the standard shared library file extension
1.45456 ++ -static do not do any dynamic linking of uninstalled libtool libraries
1.45457 ++ -static-libtool-libs
1.45458 ++ do not do any dynamic linking of libtool libraries
1.45459 ++ -version-info CURRENT[:REVISION[:AGE]]
1.45460 ++ specify library version info [each variable defaults to 0]
1.45461 ++ -weak LIBNAME declare that the target provides the LIBNAME interface
1.45462 ++
1.45463 ++All other options (arguments beginning with \`-') are ignored.
1.45464 ++
1.45465 ++Every other argument is treated as a filename. Files ending in \`.la' are
1.45466 ++treated as uninstalled libtool libraries, other files are standard or library
1.45467 ++object files.
1.45468 ++
1.45469 ++If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
1.45470 ++only library objects (\`.lo' files) may be specified, and \`-rpath' is
1.45471 ++required, except when creating a convenience library.
1.45472 ++
1.45473 ++If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
1.45474 ++using \`ar' and \`ranlib', or on Windows using \`lib'.
1.45475 ++
1.45476 ++If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
1.45477 ++is created, otherwise an executable program is created."
1.45478 ++ ;;
1.45479 ++
1.45480 ++ uninstall)
1.45481 ++ $ECHO \
1.45482 ++"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
1.45483 ++
1.45484 ++Remove libraries from an installation directory.
1.45485 ++
1.45486 ++RM is the name of the program to use to delete files associated with each FILE
1.45487 ++(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
1.45488 ++to RM.
1.45489 ++
1.45490 ++If FILE is a libtool library, all the files associated with it are deleted.
1.45491 ++Otherwise, only FILE itself is deleted using RM."
1.45492 ++ ;;
1.45493 ++
1.45494 ++ *)
1.45495 ++ func_fatal_help "invalid operation mode \`$mode'"
1.45496 ++ ;;
1.45497 ++ esac
1.45498 ++
1.45499 ++ $ECHO
1.45500 ++ $ECHO "Try \`$progname --help' for more information about other modes."
1.45501 ++
1.45502 ++ exit $?
1.45503 ++}
1.45504 ++
1.45505 ++# Generated shell functions inserted here.
1.45506 ++
1.45507 ++# func_dirname file append nondir_replacement
1.45508 ++# Compute the dirname of FILE. If nonempty, add APPEND to the result,
1.45509 ++# otherwise set result to NONDIR_REPLACEMENT.
1.45510 ++func_dirname ()
1.45511 ++{
1.45512 ++ case ${1} in
1.45513 ++ */*) func_dirname_result="${1%/*}${2}" ;;
1.45514 ++ * ) func_dirname_result="${3}" ;;
1.45515 ++ esac
1.45516 ++}
1.45517 ++
1.45518 ++# func_basename file
1.45519 ++func_basename ()
1.45520 ++{
1.45521 ++ func_basename_result="${1##*/}"
1.45522 ++}
1.45523 ++
1.45524 ++# func_dirname_and_basename file append nondir_replacement
1.45525 ++# perform func_basename and func_dirname in a single function
1.45526 ++# call:
1.45527 ++# dirname: Compute the dirname of FILE. If nonempty,
1.45528 ++# add APPEND to the result, otherwise set result
1.45529 ++# to NONDIR_REPLACEMENT.
1.45530 ++# value returned in "$func_dirname_result"
1.45531 ++# basename: Compute filename of FILE.
1.45532 ++# value retuned in "$func_basename_result"
1.45533 ++# Implementation must be kept synchronized with func_dirname
1.45534 ++# and func_basename. For efficiency, we do not delegate to
1.45535 ++# those functions but instead duplicate the functionality here.
1.45536 ++func_dirname_and_basename ()
1.45537 ++{
1.45538 ++ case ${1} in
1.45539 ++ */*) func_dirname_result="${1%/*}${2}" ;;
1.45540 ++ * ) func_dirname_result="${3}" ;;
1.45541 ++ esac
1.45542 ++ func_basename_result="${1##*/}"
1.45543 ++}
1.45544 ++
1.45545 ++# func_stripname prefix suffix name
1.45546 ++# strip PREFIX and SUFFIX off of NAME.
1.45547 ++# PREFIX and SUFFIX must not contain globbing or regex special
1.45548 ++# characters, hashes, percent signs, but SUFFIX may contain a leading
1.45549 ++# dot (in which case that matches only a dot).
1.45550 ++func_stripname ()
1.45551 ++{
1.45552 ++ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
1.45553 ++ # positional parameters, so assign one to ordinary parameter first.
1.45554 ++ func_stripname_result=${3}
1.45555 ++ func_stripname_result=${func_stripname_result#"${1}"}
1.45556 ++ func_stripname_result=${func_stripname_result%"${2}"}
1.45557 ++}
1.45558 ++
1.45559 ++# func_opt_split
1.45560 ++func_opt_split ()
1.45561 ++{
1.45562 ++ func_opt_split_opt=${1%%=*}
1.45563 ++ func_opt_split_arg=${1#*=}
1.45564 ++}
1.45565 ++
1.45566 ++# func_lo2o object
1.45567 ++func_lo2o ()
1.45568 ++{
1.45569 ++ case ${1} in
1.45570 ++ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
1.45571 ++ *) func_lo2o_result=${1} ;;
1.45572 ++ esac
1.45573 ++}
1.45574 ++
1.45575 ++# func_xform libobj-or-source
1.45576 ++func_xform ()
1.45577 ++{
1.45578 ++ func_xform_result=${1%.*}.lo
1.45579 ++}
1.45580 ++
1.45581 ++# func_arith arithmetic-term...
1.45582 ++func_arith ()
1.45583 ++{
1.45584 ++ func_arith_result=$(( $* ))
1.45585 ++}
1.45586 ++
1.45587 ++# func_len string
1.45588 ++# STRING may not start with a hyphen.
1.45589 ++func_len ()
1.45590 ++{
1.45591 ++ func_len_result=${#1}
1.45592 ++}
1.45593 ++
1.45594 ++
1.45595 ++# func_append var value
1.45596 ++# Append VALUE to the end of shell variable VAR.
1.45597 ++func_append ()
1.45598 ++{
1.45599 ++ eval "$1+=\$2"
1.45600 ++}
1.45601 ++# Generated shell functions inserted here.
1.45602 ++
1.45603 ++
1.45604 ++# Parse options once, thoroughly. This comes as soon as possible in
1.45605 ++# the script to make things like `libtool --version' happen quickly.
1.45606 ++{
1.45607 ++
1.45608 ++ # Shorthand for --mode=foo, only valid as the first argument
1.45609 ++ case $1 in
1.45610 ++ clean|clea|cle|cl)
1.45611 ++ shift; set dummy --mode clean ${1+"$@"}; shift
1.45612 ++ ;;
1.45613 ++ compile|compil|compi|comp|com|co|c)
1.45614 ++ shift; set dummy --mode compile ${1+"$@"}; shift
1.45615 ++ ;;
1.45616 ++ execute|execut|execu|exec|exe|ex|e)
1.45617 ++ shift; set dummy --mode execute ${1+"$@"}; shift
1.45618 ++ ;;
1.45619 ++ finish|finis|fini|fin|fi|f)
1.45620 ++ shift; set dummy --mode finish ${1+"$@"}; shift
1.45621 ++ ;;
1.45622 ++ install|instal|insta|inst|ins|in|i)
1.45623 ++ shift; set dummy --mode install ${1+"$@"}; shift
1.45624 ++ ;;
1.45625 ++ link|lin|li|l)
1.45626 ++ shift; set dummy --mode link ${1+"$@"}; shift
1.45627 ++ ;;
1.45628 ++ uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1.45629 ++ shift; set dummy --mode uninstall ${1+"$@"}; shift
1.45630 ++ ;;
1.45631 ++ esac
1.45632 ++
1.45633 ++ # Parse non-mode specific arguments:
1.45634 ++ while test "$#" -gt 0; do
1.45635 ++ opt="$1"
1.45636 ++ shift
1.45637 ++
1.45638 ++ case $opt in
1.45639 ++ --config) func_config ;;
1.45640 ++
1.45641 ++ --debug) preserve_args="$preserve_args $opt"
1.45642 ++ func_echo "enabling shell trace mode"
1.45643 ++ opt_debug='set -x'
1.45644 ++ $opt_debug
1.45645 ++ ;;
1.45646 ++
1.45647 ++ -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
1.45648 ++ execute_dlfiles="$execute_dlfiles $1"
1.45649 ++ shift
1.45650 ++ ;;
1.45651 ++
1.45652 ++ --dry-run | -n) opt_dry_run=: ;;
1.45653 ++ --features) func_features ;;
1.45654 ++ --finish) mode="finish" ;;
1.45655 ++
1.45656 ++ --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
1.45657 ++ case $1 in
1.45658 ++ # Valid mode arguments:
1.45659 ++ clean) ;;
1.45660 ++ compile) ;;
1.45661 ++ execute) ;;
1.45662 ++ finish) ;;
1.45663 ++ install) ;;
1.45664 ++ link) ;;
1.45665 ++ relink) ;;
1.45666 ++ uninstall) ;;
1.45667 ++
1.45668 ++ # Catch anything else as an error
1.45669 ++ *) func_error "invalid argument for $opt"
1.45670 ++ exit_cmd=exit
1.45671 ++ break
1.45672 ++ ;;
1.45673 ++ esac
1.45674 ++
1.45675 ++ mode="$1"
1.45676 ++ shift
1.45677 ++ ;;
1.45678 ++
1.45679 ++ --preserve-dup-deps)
1.45680 ++ opt_duplicate_deps=: ;;
1.45681 ++
1.45682 ++ --quiet|--silent) preserve_args="$preserve_args $opt"
1.45683 ++ opt_silent=:
1.45684 ++ ;;
1.45685 ++
1.45686 ++ --verbose| -v) preserve_args="$preserve_args $opt"
1.45687 ++ opt_silent=false
1.45688 ++ ;;
1.45689 ++
1.45690 ++ --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
1.45691 ++ preserve_args="$preserve_args $opt $1"
1.45692 ++ func_enable_tag "$1" # tagname is set here
1.45693 ++ shift
1.45694 ++ ;;
1.45695 ++
1.45696 ++ # Separate optargs to long options:
1.45697 ++ -dlopen=*|--mode=*|--tag=*)
1.45698 ++ func_opt_split "$opt"
1.45699 ++ set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
1.45700 ++ shift
1.45701 ++ ;;
1.45702 ++
1.45703 ++ -\?|-h) func_usage ;;
1.45704 ++ --help) opt_help=: ;;
1.45705 ++ --version) func_version ;;
1.45706 ++
1.45707 ++ -*) func_fatal_help "unrecognized option \`$opt'" ;;
1.45708 ++
1.45709 ++ *) nonopt="$opt"
1.45710 ++ break
1.45711 ++ ;;
1.45712 ++ esac
1.45713 ++ done
1.45714 ++
1.45715 ++ # Now that we've collected a possible --mode arg, show help if necessary
1.45716 ++ $opt_help && func_mode_help
1.45717 ++
1.45718 ++ case $host in
1.45719 ++ *cygwin* | *mingw* | *pw32*)
1.45720 ++ # don't eliminate duplications in $postdeps and $predeps
1.45721 ++ opt_duplicate_compiler_generated_deps=:
1.45722 ++ ;;
1.45723 ++ *)
1.45724 ++ opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
1.45725 ++ ;;
1.45726 ++ esac
1.45727 ++
1.45728 ++ # Having warned about all mis-specified options, bail out if
1.45729 ++ # anything was wrong.
1.45730 ++ $exit_cmd $EXIT_FAILURE
1.45731 ++}
1.45732 ++
1.45733 ++# func_check_version_match
1.45734 ++# Ensure that we are using m4 macros, and libtool script from the same
1.45735 ++# release of libtool.
1.45736 ++func_check_version_match ()
1.45737 ++{
1.45738 ++ if test "$package_revision" != "$macro_revision"; then
1.45739 ++ if test "$VERSION" != "$macro_version"; then
1.45740 ++ if test -z "$macro_version"; then
1.45741 ++ cat >&2 <<_LT_EOF
1.45742 ++$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
1.45743 ++$progname: definition of this LT_INIT comes from an older release.
1.45744 ++$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1.45745 ++$progname: and run autoconf again.
1.45746 ++_LT_EOF
1.45747 ++ else
1.45748 ++ cat >&2 <<_LT_EOF
1.45749 ++$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
1.45750 ++$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
1.45751 ++$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1.45752 ++$progname: and run autoconf again.
1.45753 ++_LT_EOF
1.45754 ++ fi
1.45755 ++ else
1.45756 ++ cat >&2 <<_LT_EOF
1.45757 ++$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
1.45758 ++$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1.45759 ++$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1.45760 ++$progname: of $PACKAGE $VERSION and run autoconf again.
1.45761 ++_LT_EOF
1.45762 ++ fi
1.45763 ++
1.45764 ++ exit $EXIT_MISMATCH
1.45765 ++ fi
1.45766 ++}
1.45767 ++
1.45768 ++
1.45769 ++## ----------- ##
1.45770 ++## Main. ##
1.45771 ++## ----------- ##
1.45772 ++
1.45773 ++{
1.45774 ++ # Sanity checks first:
1.45775 ++ func_check_version_match
1.45776 ++
1.45777 ++ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1.45778 ++ func_fatal_configuration "not configured to build any kind of library"
1.45779 ++ fi
1.45780 ++
1.45781 ++ test -z "$mode" && func_fatal_error "error: you must specify a MODE."
1.45782 ++
1.45783 ++
1.45784 ++ # Darwin sucks
1.45785 ++ eval std_shrext=\"$shrext_cmds\"
1.45786 ++
1.45787 ++
1.45788 ++ # Only execute mode is allowed to have -dlopen flags.
1.45789 ++ if test -n "$execute_dlfiles" && test "$mode" != execute; then
1.45790 ++ func_error "unrecognized option \`-dlopen'"
1.45791 ++ $ECHO "$help" 1>&2
1.45792 ++ exit $EXIT_FAILURE
1.45793 ++ fi
1.45794 ++
1.45795 ++ # Change the help message to a mode-specific one.
1.45796 ++ generic_help="$help"
1.45797 ++ help="Try \`$progname --help --mode=$mode' for more information."
1.45798 ++}
1.45799 ++
1.45800 ++
1.45801 ++# func_lalib_p file
1.45802 ++# True iff FILE is a libtool `.la' library or `.lo' object file.
1.45803 ++# This function is only a basic sanity check; it will hardly flush out
1.45804 ++# determined imposters.
1.45805 ++func_lalib_p ()
1.45806 ++{
1.45807 ++ $SED -e 4q "$1" 2>/dev/null \
1.45808 ++ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1.45809 ++}
1.45810 ++
1.45811 ++# func_lalib_unsafe_p file
1.45812 ++# True iff FILE is a libtool `.la' library or `.lo' object file.
1.45813 ++# This function implements the same check as func_lalib_p without
1.45814 ++# resorting to external programs. To this end, it redirects stdin and
1.45815 ++# closes it afterwards, without saving the original file descriptor.
1.45816 ++# As a safety measure, use it only where a negative result would be
1.45817 ++# fatal anyway. Works if `file' does not exist.
1.45818 ++func_lalib_unsafe_p ()
1.45819 ++{
1.45820 ++ lalib_p=no
1.45821 ++ if test -r "$1" && exec 5<&1 <"$1"; then
1.45822 ++ for lalib_p_l in 1 2 3 4
1.45823 ++ do
1.45824 ++ read lalib_p_line
1.45825 ++ case "$lalib_p_line" in
1.45826 ++ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1.45827 ++ esac
1.45828 ++ done
1.45829 ++ exec 1<&5 5<&-
1.45830 ++ fi
1.45831 ++ test "$lalib_p" = yes
1.45832 ++}
1.45833 ++
1.45834 ++# func_ltwrapper_p file
1.45835 ++# True iff FILE is a libtool wrapper script.
1.45836 ++# This function is only a basic sanity check; it will hardly flush out
1.45837 ++# determined imposters.
1.45838 ++func_ltwrapper_p ()
1.45839 ++{
1.45840 ++ func_lalib_p "$1"
1.45841 ++}
1.45842 ++
1.45843 ++
1.45844 ++# func_execute_cmds commands fail_cmd
1.45845 ++# Execute tilde-delimited COMMANDS.
1.45846 ++# If FAIL_CMD is given, eval that upon failure.
1.45847 ++# FAIL_CMD may read-access the current command in variable CMD!
1.45848 ++func_execute_cmds ()
1.45849 ++{
1.45850 ++ $opt_debug
1.45851 ++ save_ifs=$IFS; IFS='~'
1.45852 ++ for cmd in $1; do
1.45853 ++ IFS=$save_ifs
1.45854 ++ eval cmd=\"$cmd\"
1.45855 ++ func_show_eval "$cmd" "${2-:}"
1.45856 ++ done
1.45857 ++ IFS=$save_ifs
1.45858 ++}
1.45859 ++
1.45860 ++
1.45861 ++# func_source file
1.45862 ++# Source FILE, adding directory component if necessary.
1.45863 ++# Note that it is not necessary on cygwin/mingw to append a dot to
1.45864 ++# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1.45865 ++# behavior happens only for exec(3), not for open(2)! Also, sourcing
1.45866 ++# `FILE.' does not work on cygwin managed mounts.
1.45867 ++func_source ()
1.45868 ++{
1.45869 ++ $opt_debug
1.45870 ++ case $1 in
1.45871 ++ */* | *\\*) . "$1" ;;
1.45872 ++ *) . "./$1" ;;
1.45873 ++ esac
1.45874 ++}
1.45875 ++
1.45876 ++
1.45877 ++# func_win32_libid arg
1.45878 ++# return the library type of file 'arg'
1.45879 ++#
1.45880 ++# Need a lot of goo to handle *both* DLLs and import libs
1.45881 ++# Has to be a shell function in order to 'eat' the argument
1.45882 ++# that is supplied when $file_magic_command is called.
1.45883 ++func_win32_libid ()
1.45884 ++{
1.45885 ++ $opt_debug
1.45886 ++ win32_libid_type="unknown"
1.45887 ++ win32_fileres=`file -L $1 2>/dev/null`
1.45888 ++ case $win32_fileres in
1.45889 ++ *ar\ archive\ import\ library*) # definitely import
1.45890 ++ win32_libid_type="x86 archive import"
1.45891 ++ ;;
1.45892 ++ *ar\ archive*) # could be an import, or static
1.45893 ++ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
1.45894 ++ $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
1.45895 ++ win32_nmres=`eval $NM -f posix -A $1 |
1.45896 ++ $SED -n -e '
1.45897 ++ 1,100{
1.45898 ++ / I /{
1.45899 ++ s,.*,import,
1.45900 ++ p
1.45901 ++ q
1.45902 ++ }
1.45903 ++ }'`
1.45904 ++ case $win32_nmres in
1.45905 ++ import*) win32_libid_type="x86 archive import";;
1.45906 ++ *) win32_libid_type="x86 archive static";;
1.45907 ++ esac
1.45908 ++ fi
1.45909 ++ ;;
1.45910 ++ *DLL*)
1.45911 ++ win32_libid_type="x86 DLL"
1.45912 ++ ;;
1.45913 ++ *executable*) # but shell scripts are "executable" too...
1.45914 ++ case $win32_fileres in
1.45915 ++ *MS\ Windows\ PE\ Intel*)
1.45916 ++ win32_libid_type="x86 DLL"
1.45917 ++ ;;
1.45918 ++ esac
1.45919 ++ ;;
1.45920 ++ esac
1.45921 ++ $ECHO "$win32_libid_type"
1.45922 ++}
1.45923 ++
1.45924 ++
1.45925 ++
1.45926 ++# func_infer_tag arg
1.45927 ++# Infer tagged configuration to use if any are available and
1.45928 ++# if one wasn't chosen via the "--tag" command line option.
1.45929 ++# Only attempt this if the compiler in the base compile
1.45930 ++# command doesn't match the default compiler.
1.45931 ++# arg is usually of the form 'gcc ...'
1.45932 ++func_infer_tag ()
1.45933 ++{
1.45934 ++ $opt_debug
1.45935 ++ if test -n "$available_tags" && test -z "$tagname"; then
1.45936 ++ CC_quoted=
1.45937 ++ for arg in $CC; do
1.45938 ++ func_quote_for_eval "$arg"
1.45939 ++ CC_quoted="$CC_quoted $func_quote_for_eval_result"
1.45940 ++ done
1.45941 ++ case $@ in
1.45942 ++ # Blanks in the command may have been stripped by the calling shell,
1.45943 ++ # but not from the CC environment variable when configure was run.
1.45944 ++ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
1.45945 ++ # Blanks at the start of $base_compile will cause this to fail
1.45946 ++ # if we don't check for them as well.
1.45947 ++ *)
1.45948 ++ for z in $available_tags; do
1.45949 ++ if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
1.45950 ++ # Evaluate the configuration.
1.45951 ++ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
1.45952 ++ CC_quoted=
1.45953 ++ for arg in $CC; do
1.45954 ++ # Double-quote args containing other shell metacharacters.
1.45955 ++ func_quote_for_eval "$arg"
1.45956 ++ CC_quoted="$CC_quoted $func_quote_for_eval_result"
1.45957 ++ done
1.45958 ++ case "$@ " in
1.45959 ++ " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
1.45960 ++ # The compiler in the base compile command matches
1.45961 ++ # the one in the tagged configuration.
1.45962 ++ # Assume this is the tagged configuration we want.
1.45963 ++ tagname=$z
1.45964 ++ break
1.45965 ++ ;;
1.45966 ++ esac
1.45967 ++ fi
1.45968 ++ done
1.45969 ++ # If $tagname still isn't set, then no tagged configuration
1.45970 ++ # was found and let the user know that the "--tag" command
1.45971 ++ # line option must be used.
1.45972 ++ if test -z "$tagname"; then
1.45973 ++ func_echo "unable to infer tagged configuration"
1.45974 ++ func_fatal_error "specify a tag with \`--tag'"
1.45975 ++# else
1.45976 ++# func_verbose "using $tagname tagged configuration"
1.45977 ++ fi
1.45978 ++ ;;
1.45979 ++ esac
1.45980 ++ fi
1.45981 ++}
1.45982 ++
1.45983 ++
1.45984 ++
1.45985 ++# func_generate_dlsyms outputname originator pic_p
1.45986 ++# Extract symbols from dlprefiles and create ${outputname}S.o with
1.45987 ++# a dlpreopen symbol table.
1.45988 ++func_generate_dlsyms ()
1.45989 ++{
1.45990 ++ $opt_debug
1.45991 ++ my_outputname="$1"
1.45992 ++ my_originator="$2"
1.45993 ++ my_pic_p="${3-no}"
1.45994 ++ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
1.45995 ++ my_dlsyms=
1.45996 ++
1.45997 ++ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
1.45998 ++ if test -n "$NM" && test -n "$global_symbol_pipe"; then
1.45999 ++ my_dlsyms="${my_outputname}S.c"
1.46000 ++ else
1.46001 ++ func_error "not configured to extract global symbols from dlpreopened files"
1.46002 ++ fi
1.46003 ++ fi
1.46004 ++
1.46005 ++ if test -n "$my_dlsyms"; then
1.46006 ++ case $my_dlsyms in
1.46007 ++ "") ;;
1.46008 ++ *.c)
1.46009 ++ # Discover the nlist of each of the dlfiles.
1.46010 ++ nlist="$output_objdir/${my_outputname}.nm"
1.46011 ++
1.46012 ++ func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
1.46013 ++
1.46014 ++ # Parse the name list into a source file.
1.46015 ++ func_echo "creating $output_objdir/$my_dlsyms"
1.46016 ++
1.46017 ++ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
1.46018 ++/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
1.46019 ++/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
1.46020 ++
1.46021 ++#ifdef __cplusplus
1.46022 ++extern \"C\" {
1.46023 ++#endif
1.46024 ++
1.46025 ++/* External symbol declarations for the compiler. */\
1.46026 ++"
1.46027 ++
1.46028 ++ if test "$dlself" = yes; then
1.46029 ++ func_echo "generating symbol list for \`$output'"
1.46030 ++
1.46031 ++ $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
1.46032 ++
1.46033 ++ # Add our own program objects to the symbol list.
1.46034 ++ progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
1.46035 ++ for progfile in $progfiles; do
1.46036 ++ func_echo "extracting global C symbols from \`$progfile'"
1.46037 ++ $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
1.46038 ++ done
1.46039 ++
1.46040 ++ if test -n "$exclude_expsyms"; then
1.46041 ++ $opt_dry_run || {
1.46042 ++ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
1.46043 ++ eval '$MV "$nlist"T "$nlist"'
1.46044 ++ }
1.46045 ++ fi
1.46046 ++
1.46047 ++ if test -n "$export_symbols_regex"; then
1.46048 ++ $opt_dry_run || {
1.46049 ++ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
1.46050 ++ eval '$MV "$nlist"T "$nlist"'
1.46051 ++ }
1.46052 ++ fi
1.46053 ++
1.46054 ++ # Prepare the list of exported symbols
1.46055 ++ if test -z "$export_symbols"; then
1.46056 ++ export_symbols="$output_objdir/$outputname.exp"
1.46057 ++ $opt_dry_run || {
1.46058 ++ $RM $export_symbols
1.46059 ++ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
1.46060 ++ case $host in
1.46061 ++ *cygwin* | *mingw* )
1.46062 ++ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
1.46063 ++ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
1.46064 ++ ;;
1.46065 ++ esac
1.46066 ++ }
1.46067 ++ else
1.46068 ++ $opt_dry_run || {
1.46069 ++ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
1.46070 ++ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
1.46071 ++ eval '$MV "$nlist"T "$nlist"'
1.46072 ++ case $host in
1.46073 ++ *cygwin | *mingw* )
1.46074 ++ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
1.46075 ++ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
1.46076 ++ ;;
1.46077 ++ esac
1.46078 ++ }
1.46079 ++ fi
1.46080 ++ fi
1.46081 ++
1.46082 ++ for dlprefile in $dlprefiles; do
1.46083 ++ func_echo "extracting global C symbols from \`$dlprefile'"
1.46084 ++ func_basename "$dlprefile"
1.46085 ++ name="$func_basename_result"
1.46086 ++ $opt_dry_run || {
1.46087 ++ eval '$ECHO ": $name " >> "$nlist"'
1.46088 ++ eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
1.46089 ++ }
1.46090 ++ done
1.46091 ++
1.46092 ++ $opt_dry_run || {
1.46093 ++ # Make sure we have at least an empty file.
1.46094 ++ test -f "$nlist" || : > "$nlist"
1.46095 ++
1.46096 ++ if test -n "$exclude_expsyms"; then
1.46097 ++ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
1.46098 ++ $MV "$nlist"T "$nlist"
1.46099 ++ fi
1.46100 ++
1.46101 ++ # Try sorting and uniquifying the output.
1.46102 ++ if $GREP -v "^: " < "$nlist" |
1.46103 ++ if sort -k 3 </dev/null >/dev/null 2>&1; then
1.46104 ++ sort -k 3
1.46105 ++ else
1.46106 ++ sort +2
1.46107 ++ fi |
1.46108 ++ uniq > "$nlist"S; then
1.46109 ++ :
1.46110 ++ else
1.46111 ++ $GREP -v "^: " < "$nlist" > "$nlist"S
1.46112 ++ fi
1.46113 ++
1.46114 ++ if test -f "$nlist"S; then
1.46115 ++ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
1.46116 ++ else
1.46117 ++ $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
1.46118 ++ fi
1.46119 ++
1.46120 ++ $ECHO >> "$output_objdir/$my_dlsyms" "\
1.46121 ++
1.46122 ++/* The mapping between symbol names and symbols. */
1.46123 ++typedef struct {
1.46124 ++ const char *name;
1.46125 ++ void *address;
1.46126 ++} lt_dlsymlist;
1.46127 ++"
1.46128 ++ case $host in
1.46129 ++ *cygwin* | *mingw* )
1.46130 ++ $ECHO >> "$output_objdir/$my_dlsyms" "\
1.46131 ++/* DATA imports from DLLs on WIN32 con't be const, because
1.46132 ++ runtime relocations are performed -- see ld's documentation
1.46133 ++ on pseudo-relocs. */"
1.46134 ++ lt_dlsym_const= ;;
1.46135 ++ *osf5*)
1.46136 ++ echo >> "$output_objdir/$my_dlsyms" "\
1.46137 ++/* This system does not cope well with relocations in const data */"
1.46138 ++ lt_dlsym_const= ;;
1.46139 ++ *)
1.46140 ++ lt_dlsym_const=const ;;
1.46141 ++ esac
1.46142 ++
1.46143 ++ $ECHO >> "$output_objdir/$my_dlsyms" "\
1.46144 ++extern $lt_dlsym_const lt_dlsymlist
1.46145 ++lt_${my_prefix}_LTX_preloaded_symbols[];
1.46146 ++$lt_dlsym_const lt_dlsymlist
1.46147 ++lt_${my_prefix}_LTX_preloaded_symbols[] =
1.46148 ++{\
1.46149 ++ { \"$my_originator\", (void *) 0 },"
1.46150 ++
1.46151 ++ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
1.46152 ++
1.46153 ++ $ECHO >> "$output_objdir/$my_dlsyms" "\
1.46154 ++ {0, (void *) 0}
1.46155 ++};
1.46156 ++
1.46157 ++/* This works around a problem in FreeBSD linker */
1.46158 ++#ifdef FREEBSD_WORKAROUND
1.46159 ++static const void *lt_preloaded_setup() {
1.46160 ++ return lt_${my_prefix}_LTX_preloaded_symbols;
1.46161 ++}
1.46162 ++#endif
1.46163 ++
1.46164 ++#ifdef __cplusplus
1.46165 ++}
1.46166 ++#endif\
1.46167 ++"
1.46168 ++ } # !$opt_dry_run
1.46169 ++
1.46170 ++ pic_flag_for_symtable=
1.46171 ++ case "$compile_command " in
1.46172 ++ *" -static "*) ;;
1.46173 ++ *)
1.46174 ++ case $host in
1.46175 ++ # compiling the symbol table file with pic_flag works around
1.46176 ++ # a FreeBSD bug that causes programs to crash when -lm is
1.46177 ++ # linked before any other PIC object. But we must not use
1.46178 ++ # pic_flag when linking with -static. The problem exists in
1.46179 ++ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
1.46180 ++ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
1.46181 ++ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
1.46182 ++ *-*-hpux*)
1.46183 ++ pic_flag_for_symtable=" $pic_flag" ;;
1.46184 ++ *)
1.46185 ++ if test "X$my_pic_p" != Xno; then
1.46186 ++ pic_flag_for_symtable=" $pic_flag"
1.46187 ++ fi
1.46188 ++ ;;
1.46189 ++ esac
1.46190 ++ ;;
1.46191 ++ esac
1.46192 ++ symtab_cflags=
1.46193 ++ for arg in $LTCFLAGS; do
1.46194 ++ case $arg in
1.46195 ++ -pie | -fpie | -fPIE) ;;
1.46196 ++ *) symtab_cflags="$symtab_cflags $arg" ;;
1.46197 ++ esac
1.46198 ++ done
1.46199 ++
1.46200 ++ # Now compile the dynamic symbol file.
1.46201 ++ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
1.46202 ++
1.46203 ++ # Clean up the generated files.
1.46204 ++ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
1.46205 ++
1.46206 ++ # Transform the symbol file into the correct name.
1.46207 ++ symfileobj="$output_objdir/${my_outputname}S.$objext"
1.46208 ++ case $host in
1.46209 ++ *cygwin* | *mingw* )
1.46210 ++ if test -f "$output_objdir/$my_outputname.def"; then
1.46211 ++ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
1.46212 ++ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
1.46213 ++ else
1.46214 ++ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
1.46215 ++ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
1.46216 ++ fi
1.46217 ++ ;;
1.46218 ++ *)
1.46219 ++ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
1.46220 ++ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
1.46221 ++ ;;
1.46222 ++ esac
1.46223 ++ ;;
1.46224 ++ *)
1.46225 ++ func_fatal_error "unknown suffix for \`$my_dlsyms'"
1.46226 ++ ;;
1.46227 ++ esac
1.46228 ++ else
1.46229 ++ # We keep going just in case the user didn't refer to
1.46230 ++ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
1.46231 ++ # really was required.
1.46232 ++
1.46233 ++ # Nullify the symbol file.
1.46234 ++ compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
1.46235 ++ finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
1.46236 ++ fi
1.46237 ++}
1.46238 ++
1.46239 ++# func_extract_an_archive dir oldlib
1.46240 ++func_extract_an_archive ()
1.46241 ++{
1.46242 ++ $opt_debug
1.46243 ++ f_ex_an_ar_dir="$1"; shift
1.46244 ++ f_ex_an_ar_oldlib="$1"
1.46245 ++ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" 'exit $?'
1.46246 ++ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
1.46247 ++ :
1.46248 ++ else
1.46249 ++ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
1.46250 ++ fi
1.46251 ++}
1.46252 ++
1.46253 ++
1.46254 ++# func_extract_archives gentop oldlib ...
1.46255 ++func_extract_archives ()
1.46256 ++{
1.46257 ++ $opt_debug
1.46258 ++ my_gentop="$1"; shift
1.46259 ++ my_oldlibs=${1+"$@"}
1.46260 ++ my_oldobjs=""
1.46261 ++ my_xlib=""
1.46262 ++ my_xabs=""
1.46263 ++ my_xdir=""
1.46264 ++
1.46265 ++ for my_xlib in $my_oldlibs; do
1.46266 ++ # Extract the objects.
1.46267 ++ case $my_xlib in
1.46268 ++ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
1.46269 ++ *) my_xabs=`pwd`"/$my_xlib" ;;
1.46270 ++ esac
1.46271 ++ func_basename "$my_xlib"
1.46272 ++ my_xlib="$func_basename_result"
1.46273 ++ my_xlib_u=$my_xlib
1.46274 ++ while :; do
1.46275 ++ case " $extracted_archives " in
1.46276 ++ *" $my_xlib_u "*)
1.46277 ++ extracted_serial=`expr $extracted_serial + 1`
1.46278 ++ my_xlib_u=lt$extracted_serial-$my_xlib ;;
1.46279 ++ *) break ;;
1.46280 ++ esac
1.46281 ++ done
1.46282 ++ extracted_archives="$extracted_archives $my_xlib_u"
1.46283 ++ my_xdir="$my_gentop/$my_xlib_u"
1.46284 ++
1.46285 ++ func_mkdir_p "$my_xdir"
1.46286 ++
1.46287 ++ case $host in
1.46288 ++ *-darwin*)
1.46289 ++ func_echo "Extracting $my_xabs"
1.46290 ++ # Do not bother doing anything if just a dry run
1.46291 ++ $opt_dry_run || {
1.46292 ++ darwin_orig_dir=`pwd`
1.46293 ++ cd $my_xdir || exit $?
1.46294 ++ darwin_archive=$my_xabs
1.46295 ++ darwin_curdir=`pwd`
1.46296 ++ darwin_base_archive=`basename $darwin_archive`
1.46297 ++ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
1.46298 ++ if test -n "$darwin_arches"; then
1.46299 ++ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
1.46300 ++ darwin_arch=
1.46301 ++ func_echo "$darwin_base_archive has multiple architectures $darwin_arches"
1.46302 ++ for darwin_arch in $darwin_arches ; do
1.46303 ++ func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
1.46304 ++ lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
1.46305 ++ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
1.46306 ++ func_extract_an_archive "`pwd`" "${darwin_base_archive}"
1.46307 ++ cd "$darwin_curdir"
1.46308 ++ $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
1.46309 ++ done # $darwin_arches
1.46310 ++ ## Okay now we've a bunch of thin objects, gotta fatten them up :)
1.46311 ++ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
1.46312 ++ darwin_file=
1.46313 ++ darwin_files=
1.46314 ++ for darwin_file in $darwin_filelist; do
1.46315 ++ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
1.46316 ++ lipo -create -output "$darwin_file" $darwin_files
1.46317 ++ done # $darwin_filelist
1.46318 ++ $RM -rf unfat-$$
1.46319 ++ cd "$darwin_orig_dir"
1.46320 ++ else
1.46321 ++ cd $darwin_orig_dir
1.46322 ++ func_extract_an_archive "$my_xdir" "$my_xabs"
1.46323 ++ fi # $darwin_arches
1.46324 ++ } # !$opt_dry_run
1.46325 ++ ;;
1.46326 ++ *)
1.46327 ++ func_extract_an_archive "$my_xdir" "$my_xabs"
1.46328 ++ ;;
1.46329 ++ esac
1.46330 ++ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
1.46331 ++ done
1.46332 ++
1.46333 ++ func_extract_archives_result="$my_oldobjs"
1.46334 ++}
1.46335 ++
1.46336 ++
1.46337 ++
1.46338 ++# func_write_libtool_object output_name pic_name nonpic_name
1.46339 ++# Create a libtool object file (analogous to a ".la" file),
1.46340 ++# but don't create it if we're doing a dry run.
1.46341 ++func_write_libtool_object ()
1.46342 ++{
1.46343 ++ write_libobj=${1}
1.46344 ++ if test "$build_libtool_libs" = yes; then
1.46345 ++ write_lobj=\'${2}\'
1.46346 ++ else
1.46347 ++ write_lobj=none
1.46348 ++ fi
1.46349 ++
1.46350 ++ if test "$build_old_libs" = yes; then
1.46351 ++ write_oldobj=\'${3}\'
1.46352 ++ else
1.46353 ++ write_oldobj=none
1.46354 ++ fi
1.46355 ++
1.46356 ++ $opt_dry_run || {
1.46357 ++ cat >${write_libobj}T <<EOF
1.46358 ++# $write_libobj - a libtool object file
1.46359 ++# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1.46360 ++#
1.46361 ++# Please DO NOT delete this file!
1.46362 ++# It is necessary for linking the library.
1.46363 ++
1.46364 ++# Name of the PIC object.
1.46365 ++pic_object=$write_lobj
1.46366 ++
1.46367 ++# Name of the non-PIC object
1.46368 ++non_pic_object=$write_oldobj
1.46369 ++
1.46370 ++EOF
1.46371 ++ mv -f "${write_libobj}T" "${write_libobj}"
1.46372 ++ }
1.46373 ++}
1.46374 ++
1.46375 ++# func_mode_compile arg...
1.46376 ++func_mode_compile ()
1.46377 ++{
1.46378 ++ $opt_debug
1.46379 ++ # Get the compilation command and the source file.
1.46380 ++ base_compile=
1.46381 ++ srcfile="$nonopt" # always keep a non-empty value in "srcfile"
1.46382 ++ suppress_opt=yes
1.46383 ++ suppress_output=
1.46384 ++ arg_mode=normal
1.46385 ++ libobj=
1.46386 ++ later=
1.46387 ++ pie_flag=
1.46388 ++
1.46389 ++ for arg
1.46390 ++ do
1.46391 ++ case $arg_mode in
1.46392 ++ arg )
1.46393 ++ # do not "continue". Instead, add this to base_compile
1.46394 ++ lastarg="$arg"
1.46395 ++ arg_mode=normal
1.46396 ++ ;;
1.46397 ++
1.46398 ++ target )
1.46399 ++ libobj="$arg"
1.46400 ++ arg_mode=normal
1.46401 ++ continue
1.46402 ++ ;;
1.46403 ++
1.46404 ++ normal )
1.46405 ++ # Accept any command-line options.
1.46406 ++ case $arg in
1.46407 ++ -o)
1.46408 ++ test -n "$libobj" && \
1.46409 ++ func_fatal_error "you cannot specify \`-o' more than once"
1.46410 ++ arg_mode=target
1.46411 ++ continue
1.46412 ++ ;;
1.46413 ++
1.46414 ++ -pie | -fpie | -fPIE)
1.46415 ++ pie_flag="$pie_flag $arg"
1.46416 ++ continue
1.46417 ++ ;;
1.46418 ++
1.46419 ++ -shared | -static | -prefer-pic | -prefer-non-pic)
1.46420 ++ later="$later $arg"
1.46421 ++ continue
1.46422 ++ ;;
1.46423 ++
1.46424 ++ -no-suppress)
1.46425 ++ suppress_opt=no
1.46426 ++ continue
1.46427 ++ ;;
1.46428 ++
1.46429 ++ -Xcompiler)
1.46430 ++ arg_mode=arg # the next one goes into the "base_compile" arg list
1.46431 ++ continue # The current "srcfile" will either be retained or
1.46432 ++ ;; # replaced later. I would guess that would be a bug.
1.46433 ++
1.46434 ++ -Wc,*)
1.46435 ++ func_stripname '-Wc,' '' "$arg"
1.46436 ++ args=$func_stripname_result
1.46437 ++ lastarg=
1.46438 ++ save_ifs="$IFS"; IFS=','
1.46439 ++ for arg in $args; do
1.46440 ++ IFS="$save_ifs"
1.46441 ++ func_quote_for_eval "$arg"
1.46442 ++ lastarg="$lastarg $func_quote_for_eval_result"
1.46443 ++ done
1.46444 ++ IFS="$save_ifs"
1.46445 ++ func_stripname ' ' '' "$lastarg"
1.46446 ++ lastarg=$func_stripname_result
1.46447 ++
1.46448 ++ # Add the arguments to base_compile.
1.46449 ++ base_compile="$base_compile $lastarg"
1.46450 ++ continue
1.46451 ++ ;;
1.46452 ++
1.46453 ++ *)
1.46454 ++ # Accept the current argument as the source file.
1.46455 ++ # The previous "srcfile" becomes the current argument.
1.46456 ++ #
1.46457 ++ lastarg="$srcfile"
1.46458 ++ srcfile="$arg"
1.46459 ++ ;;
1.46460 ++ esac # case $arg
1.46461 ++ ;;
1.46462 ++ esac # case $arg_mode
1.46463 ++
1.46464 ++ # Aesthetically quote the previous argument.
1.46465 ++ func_quote_for_eval "$lastarg"
1.46466 ++ base_compile="$base_compile $func_quote_for_eval_result"
1.46467 ++ done # for arg
1.46468 ++
1.46469 ++ case $arg_mode in
1.46470 ++ arg)
1.46471 ++ func_fatal_error "you must specify an argument for -Xcompile"
1.46472 ++ ;;
1.46473 ++ target)
1.46474 ++ func_fatal_error "you must specify a target with \`-o'"
1.46475 ++ ;;
1.46476 ++ *)
1.46477 ++ # Get the name of the library object.
1.46478 ++ test -z "$libobj" && {
1.46479 ++ func_basename "$srcfile"
1.46480 ++ libobj="$func_basename_result"
1.46481 ++ }
1.46482 ++ ;;
1.46483 ++ esac
1.46484 ++
1.46485 ++ # Recognize several different file suffixes.
1.46486 ++ # If the user specifies -o file.o, it is replaced with file.lo
1.46487 ++ xform='[cCFSifmso]'
1.46488 ++ case $libobj in
1.46489 ++ *.ada) xform=ada ;;
1.46490 ++ *.adb) xform=adb ;;
1.46491 ++ *.ads) xform=ads ;;
1.46492 ++ *.asm) xform=asm ;;
1.46493 ++ *.c++) xform=c++ ;;
1.46494 ++ *.cc) xform=cc ;;
1.46495 ++ *.ii) xform=ii ;;
1.46496 ++ *.class) xform=class ;;
1.46497 ++ *.cpp) xform=cpp ;;
1.46498 ++ *.cxx) xform=cxx ;;
1.46499 ++ *.[fF][09]?) xform='[fF][09].' ;;
1.46500 ++ *.for) xform=for ;;
1.46501 ++ *.java) xform=java ;;
1.46502 ++ *.obj) xform=obj ;;
1.46503 ++ esac
1.46504 ++
1.46505 ++ libobj=`$ECHO "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
1.46506 ++
1.46507 ++ case $libobj in
1.46508 ++ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
1.46509 ++ *)
1.46510 ++ func_fatal_error "cannot determine name of library object from \`$libobj'"
1.46511 ++ ;;
1.46512 ++ esac
1.46513 ++
1.46514 ++ func_infer_tag $base_compile
1.46515 ++
1.46516 ++ for arg in $later; do
1.46517 ++ case $arg in
1.46518 ++ -shared)
1.46519 ++ test "$build_libtool_libs" != yes && \
1.46520 ++ func_fatal_configuration "can not build a shared library"
1.46521 ++ build_old_libs=no
1.46522 ++ continue
1.46523 ++ ;;
1.46524 ++
1.46525 ++ -static)
1.46526 ++ build_libtool_libs=no
1.46527 ++ build_old_libs=yes
1.46528 ++ continue
1.46529 ++ ;;
1.46530 ++
1.46531 ++ -prefer-pic)
1.46532 ++ pic_mode=yes
1.46533 ++ continue
1.46534 ++ ;;
1.46535 ++
1.46536 ++ -prefer-non-pic)
1.46537 ++ pic_mode=no
1.46538 ++ continue
1.46539 ++ ;;
1.46540 ++ esac
1.46541 ++ done
1.46542 ++
1.46543 ++ func_quote_for_eval "$libobj"
1.46544 ++ test "X$libobj" != "X$func_quote_for_eval_result" \
1.46545 ++ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
1.46546 ++ && func_warning "libobj name \`$libobj' may not contain shell special characters."
1.46547 ++ func_basename "$obj"
1.46548 ++ objname="$func_basename_result"
1.46549 ++ func_dirname "$obj" "/" ""
1.46550 ++ xdir="$func_dirname_result"
1.46551 ++ lobj=${xdir}$objdir/$objname
1.46552 ++
1.46553 ++ test -z "$base_compile" && \
1.46554 ++ func_fatal_help "you must specify a compilation command"
1.46555 ++
1.46556 ++ # Delete any leftover library objects.
1.46557 ++ if test "$build_old_libs" = yes; then
1.46558 ++ removelist="$obj $lobj $libobj ${libobj}T"
1.46559 ++ else
1.46560 ++ removelist="$lobj $libobj ${libobj}T"
1.46561 ++ fi
1.46562 ++
1.46563 ++ $opt_dry_run || $RM $removelist
1.46564 ++ trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
1.46565 ++
1.46566 ++ # On Cygwin there's no "real" PIC flag so we must build both object types
1.46567 ++ case $host_os in
1.46568 ++ cygwin* | mingw* | pw32* | os2*)
1.46569 ++ pic_mode=default
1.46570 ++ ;;
1.46571 ++ esac
1.46572 ++ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
1.46573 ++ # non-PIC code in shared libraries is not supported
1.46574 ++ pic_mode=default
1.46575 ++ fi
1.46576 ++
1.46577 ++ # Calculate the filename of the output object if compiler does
1.46578 ++ # not support -o with -c
1.46579 ++ if test "$compiler_c_o" = no; then
1.46580 ++ output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
1.46581 ++ lockfile="$output_obj.lock"
1.46582 ++ removelist="$removelist $output_obj $lockfile"
1.46583 ++ trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
1.46584 ++ else
1.46585 ++ output_obj=
1.46586 ++ need_locks=no
1.46587 ++ lockfile=
1.46588 ++ fi
1.46589 ++
1.46590 ++ # Lock this critical section if it is needed
1.46591 ++ # We use this script file to make the link, it avoids creating a new file
1.46592 ++ if test "$need_locks" = yes; then
1.46593 ++ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
1.46594 ++ func_echo "Waiting for $lockfile to be removed"
1.46595 ++ sleep 2
1.46596 ++ done
1.46597 ++ elif test "$need_locks" = warn; then
1.46598 ++ if test -f "$lockfile"; then
1.46599 ++ $ECHO "\
1.46600 ++*** ERROR, $lockfile exists and contains:
1.46601 ++`cat $lockfile 2>/dev/null`
1.46602 ++
1.46603 ++This indicates that another process is trying to use the same
1.46604 ++temporary object file, and libtool could not work around it because
1.46605 ++your compiler does not support \`-c' and \`-o' together. If you
1.46606 ++repeat this compilation, it may succeed, by chance, but you had better
1.46607 ++avoid parallel builds (make -j) in this platform, or get a better
1.46608 ++compiler."
1.46609 ++
1.46610 ++ $opt_dry_run || $RM $removelist
1.46611 ++ exit $EXIT_FAILURE
1.46612 ++ fi
1.46613 ++ $ECHO "$srcfile" > "$lockfile"
1.46614 ++ fi
1.46615 ++
1.46616 ++ if test -n "$fix_srcfile_path"; then
1.46617 ++ eval srcfile=\"$fix_srcfile_path\"
1.46618 ++ fi
1.46619 ++ func_quote_for_eval "$srcfile"
1.46620 ++ qsrcfile=$func_quote_for_eval_result
1.46621 ++
1.46622 ++ $opt_dry_run || $RM "$libobj" "${libobj}T"
1.46623 ++
1.46624 ++ # Only build a PIC object if we are building libtool libraries.
1.46625 ++ if test "$build_libtool_libs" = yes; then
1.46626 ++ # Without this assignment, base_compile gets emptied.
1.46627 ++ fbsd_hideous_sh_bug=$base_compile
1.46628 ++
1.46629 ++ if test "$pic_mode" != no; then
1.46630 ++ command="$base_compile $qsrcfile $pic_flag"
1.46631 ++ else
1.46632 ++ # Don't build PIC code
1.46633 ++ command="$base_compile $qsrcfile"
1.46634 ++ fi
1.46635 ++
1.46636 ++ func_mkdir_p "$xdir$objdir"
1.46637 ++
1.46638 ++ if test -z "$output_obj"; then
1.46639 ++ # Place PIC objects in $objdir
1.46640 ++ command="$command -o $lobj"
1.46641 ++ fi
1.46642 ++
1.46643 ++ $opt_dry_run || $RM "$lobj" "$output_obj"
1.46644 ++
1.46645 ++ func_show_eval "$command" \
1.46646 ++ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
1.46647 ++
1.46648 ++ if test "$need_locks" = warn &&
1.46649 ++ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1.46650 ++ $ECHO "\
1.46651 ++*** ERROR, $lockfile contains:
1.46652 ++`cat $lockfile 2>/dev/null`
1.46653 ++
1.46654 ++but it should contain:
1.46655 ++$srcfile
1.46656 ++
1.46657 ++This indicates that another process is trying to use the same
1.46658 ++temporary object file, and libtool could not work around it because
1.46659 ++your compiler does not support \`-c' and \`-o' together. If you
1.46660 ++repeat this compilation, it may succeed, by chance, but you had better
1.46661 ++avoid parallel builds (make -j) in this platform, or get a better
1.46662 ++compiler."
1.46663 ++
1.46664 ++ $opt_dry_run || $RM $removelist
1.46665 ++ exit $EXIT_FAILURE
1.46666 ++ fi
1.46667 ++
1.46668 ++ # Just move the object if needed, then go on to compile the next one
1.46669 ++ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
1.46670 ++ func_show_eval '$MV "$output_obj" "$lobj"' \
1.46671 ++ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1.46672 ++ fi
1.46673 ++
1.46674 ++ # Allow error messages only from the first compilation.
1.46675 ++ if test "$suppress_opt" = yes; then
1.46676 ++ suppress_output=' >/dev/null 2>&1'
1.46677 ++ fi
1.46678 ++ fi
1.46679 ++
1.46680 ++ # Only build a position-dependent object if we build old libraries.
1.46681 ++ if test "$build_old_libs" = yes; then
1.46682 ++ if test "$pic_mode" != yes; then
1.46683 ++ # Don't build PIC code
1.46684 ++ command="$base_compile $qsrcfile$pie_flag"
1.46685 ++ else
1.46686 ++ command="$base_compile $qsrcfile $pic_flag"
1.46687 ++ fi
1.46688 ++ if test "$compiler_c_o" = yes; then
1.46689 ++ command="$command -o $obj"
1.46690 ++ fi
1.46691 ++
1.46692 ++ # Suppress compiler output if we already did a PIC compilation.
1.46693 ++ command="$command$suppress_output"
1.46694 ++ $opt_dry_run || $RM "$obj" "$output_obj"
1.46695 ++ func_show_eval "$command" \
1.46696 ++ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
1.46697 ++
1.46698 ++ if test "$need_locks" = warn &&
1.46699 ++ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1.46700 ++ $ECHO "\
1.46701 ++*** ERROR, $lockfile contains:
1.46702 ++`cat $lockfile 2>/dev/null`
1.46703 ++
1.46704 ++but it should contain:
1.46705 ++$srcfile
1.46706 ++
1.46707 ++This indicates that another process is trying to use the same
1.46708 ++temporary object file, and libtool could not work around it because
1.46709 ++your compiler does not support \`-c' and \`-o' together. If you
1.46710 ++repeat this compilation, it may succeed, by chance, but you had better
1.46711 ++avoid parallel builds (make -j) in this platform, or get a better
1.46712 ++compiler."
1.46713 ++
1.46714 ++ $opt_dry_run || $RM $removelist
1.46715 ++ exit $EXIT_FAILURE
1.46716 ++ fi
1.46717 ++
1.46718 ++ # Just move the object if needed
1.46719 ++ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1.46720 ++ func_show_eval '$MV "$output_obj" "$obj"' \
1.46721 ++ 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1.46722 ++ fi
1.46723 ++ fi
1.46724 ++
1.46725 ++ $opt_dry_run || {
1.46726 ++ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
1.46727 ++
1.46728 ++ # Unlock the critical section if it was locked
1.46729 ++ if test "$need_locks" != no; then
1.46730 ++ $RM "$lockfile"
1.46731 ++ fi
1.46732 ++ }
1.46733 ++
1.46734 ++ exit $EXIT_SUCCESS
1.46735 ++}
1.46736 ++
1.46737 ++test "$mode" = compile && func_mode_compile ${1+"$@"}
1.46738 ++
1.46739 ++
1.46740 ++# func_mode_execute arg...
1.46741 ++func_mode_execute ()
1.46742 ++{
1.46743 ++ $opt_debug
1.46744 ++ # The first argument is the command name.
1.46745 ++ cmd="$nonopt"
1.46746 ++ test -z "$cmd" && \
1.46747 ++ func_fatal_help "you must specify a COMMAND"
1.46748 ++
1.46749 ++ # Handle -dlopen flags immediately.
1.46750 ++ for file in $execute_dlfiles; do
1.46751 ++ test -f "$file" \
1.46752 ++ || func_fatal_help "\`$file' is not a file"
1.46753 ++
1.46754 ++ dir=
1.46755 ++ case $file in
1.46756 ++ *.la)
1.46757 ++ # Check to see that this really is a libtool archive.
1.46758 ++ func_lalib_unsafe_p "$file" \
1.46759 ++ || func_fatal_help "\`$lib' is not a valid libtool archive"
1.46760 ++
1.46761 ++ # Read the libtool library.
1.46762 ++ dlname=
1.46763 ++ library_names=
1.46764 ++ func_source "$file"
1.46765 ++
1.46766 ++ # Skip this library if it cannot be dlopened.
1.46767 ++ if test -z "$dlname"; then
1.46768 ++ # Warn if it was a shared library.
1.46769 ++ test -n "$library_names" && \
1.46770 ++ func_warning "\`$file' was not linked with \`-export-dynamic'"
1.46771 ++ continue
1.46772 ++ fi
1.46773 ++
1.46774 ++ func_dirname "$file" "" "."
1.46775 ++ dir="$func_dirname_result"
1.46776 ++
1.46777 ++ if test -f "$dir/$objdir/$dlname"; then
1.46778 ++ dir="$dir/$objdir"
1.46779 ++ else
1.46780 ++ if test ! -f "$dir/$dlname"; then
1.46781 ++ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
1.46782 ++ fi
1.46783 ++ fi
1.46784 ++ ;;
1.46785 ++
1.46786 ++ *.lo)
1.46787 ++ # Just add the directory containing the .lo file.
1.46788 ++ func_dirname "$file" "" "."
1.46789 ++ dir="$func_dirname_result"
1.46790 ++ ;;
1.46791 ++
1.46792 ++ *)
1.46793 ++ func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
1.46794 ++ continue
1.46795 ++ ;;
1.46796 ++ esac
1.46797 ++
1.46798 ++ # Get the absolute pathname.
1.46799 ++ absdir=`cd "$dir" && pwd`
1.46800 ++ test -n "$absdir" && dir="$absdir"
1.46801 ++
1.46802 ++ # Now add the directory to shlibpath_var.
1.46803 ++ if eval "test -z \"\$$shlibpath_var\""; then
1.46804 ++ eval "$shlibpath_var=\"\$dir\""
1.46805 ++ else
1.46806 ++ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
1.46807 ++ fi
1.46808 ++ done
1.46809 ++
1.46810 ++ # This variable tells wrapper scripts just to set shlibpath_var
1.46811 ++ # rather than running their programs.
1.46812 ++ libtool_execute_magic="$magic"
1.46813 ++
1.46814 ++ # Check if any of the arguments is a wrapper script.
1.46815 ++ args=
1.46816 ++ for file
1.46817 ++ do
1.46818 ++ case $file in
1.46819 ++ -*) ;;
1.46820 ++ *)
1.46821 ++ # Do a test to see if this is really a libtool program.
1.46822 ++ if func_ltwrapper_p "$file"; then
1.46823 ++ func_source "$file"
1.46824 ++
1.46825 ++ # Transform arg to wrapped name.
1.46826 ++ file="$progdir/$program"
1.46827 ++ fi
1.46828 ++ ;;
1.46829 ++ esac
1.46830 ++ # Quote arguments (to preserve shell metacharacters).
1.46831 ++ func_quote_for_eval "$file"
1.46832 ++ args="$args $func_quote_for_eval_result"
1.46833 ++ done
1.46834 ++
1.46835 ++ if test "X$opt_dry_run" = Xfalse; then
1.46836 ++ if test -n "$shlibpath_var"; then
1.46837 ++ # Export the shlibpath_var.
1.46838 ++ eval "export $shlibpath_var"
1.46839 ++ fi
1.46840 ++
1.46841 ++ # Restore saved environment variables
1.46842 ++ for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1.46843 ++ do
1.46844 ++ eval "if test \"\${save_$lt_var+set}\" = set; then
1.46845 ++ $lt_var=\$save_$lt_var; export $lt_var
1.46846 ++ else
1.46847 ++ $lt_unset $lt_var
1.46848 ++ fi"
1.46849 ++ done
1.46850 ++
1.46851 ++ # Now prepare to actually exec the command.
1.46852 ++ exec_cmd="\$cmd$args"
1.46853 ++ else
1.46854 ++ # Display what would be done.
1.46855 ++ if test -n "$shlibpath_var"; then
1.46856 ++ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
1.46857 ++ $ECHO "export $shlibpath_var"
1.46858 ++ fi
1.46859 ++ $ECHO "$cmd$args"
1.46860 ++ exit $EXIT_SUCCESS
1.46861 ++ fi
1.46862 ++}
1.46863 ++
1.46864 ++test "$mode" = execute && func_mode_execute ${1+"$@"}
1.46865 ++
1.46866 ++
1.46867 ++# func_mode_finish arg...
1.46868 ++func_mode_finish ()
1.46869 ++{
1.46870 ++ $opt_debug
1.46871 ++ libdirs="$nonopt"
1.46872 ++ admincmds=
1.46873 ++
1.46874 ++ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
1.46875 ++ for dir
1.46876 ++ do
1.46877 ++ libdirs="$libdirs $dir"
1.46878 ++ done
1.46879 ++
1.46880 ++ for libdir in $libdirs; do
1.46881 ++ if test -n "$finish_cmds"; then
1.46882 ++ # Do each command in the finish commands.
1.46883 ++ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
1.46884 ++'"$cmd"'"'
1.46885 ++ fi
1.46886 ++ if test -n "$finish_eval"; then
1.46887 ++ # Do the single finish_eval.
1.46888 ++ eval cmds=\"$finish_eval\"
1.46889 ++ $opt_dry_run || eval "$cmds" || admincmds="$admincmds
1.46890 ++ $cmds"
1.46891 ++ fi
1.46892 ++ done
1.46893 ++ fi
1.46894 ++
1.46895 ++ # Exit here if they wanted silent mode.
1.46896 ++ $opt_silent && exit $EXIT_SUCCESS
1.46897 ++
1.46898 ++ $ECHO "X----------------------------------------------------------------------" | $Xsed
1.46899 ++ $ECHO "Libraries have been installed in:"
1.46900 ++ for libdir in $libdirs; do
1.46901 ++ $ECHO " $libdir"
1.46902 ++ done
1.46903 ++ $ECHO
1.46904 ++ $ECHO "If you ever happen to want to link against installed libraries"
1.46905 ++ $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
1.46906 ++ $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
1.46907 ++ $ECHO "flag during linking and do at least one of the following:"
1.46908 ++ if test -n "$shlibpath_var"; then
1.46909 ++ $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
1.46910 ++ $ECHO " during execution"
1.46911 ++ fi
1.46912 ++ if test -n "$runpath_var"; then
1.46913 ++ $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
1.46914 ++ $ECHO " during linking"
1.46915 ++ fi
1.46916 ++ if test -n "$hardcode_libdir_flag_spec"; then
1.46917 ++ libdir=LIBDIR
1.46918 ++ eval flag=\"$hardcode_libdir_flag_spec\"
1.46919 ++
1.46920 ++ $ECHO " - use the \`$flag' linker flag"
1.46921 ++ fi
1.46922 ++ if test -n "$admincmds"; then
1.46923 ++ $ECHO " - have your system administrator run these commands:$admincmds"
1.46924 ++ fi
1.46925 ++ if test -f /etc/ld.so.conf; then
1.46926 ++ $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
1.46927 ++ fi
1.46928 ++ $ECHO
1.46929 ++
1.46930 ++ $ECHO "See any operating system documentation about shared libraries for"
1.46931 ++ case $host in
1.46932 ++ solaris2.[6789]|solaris2.1[0-9])
1.46933 ++ $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
1.46934 ++ $ECHO "pages."
1.46935 ++ ;;
1.46936 ++ *)
1.46937 ++ $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
1.46938 ++ ;;
1.46939 ++ esac
1.46940 ++ $ECHO "X----------------------------------------------------------------------" | $Xsed
1.46941 ++ exit $EXIT_SUCCESS
1.46942 ++}
1.46943 ++
1.46944 ++test "$mode" = finish && func_mode_finish ${1+"$@"}
1.46945 ++
1.46946 ++
1.46947 ++# func_mode_install arg...
1.46948 ++func_mode_install ()
1.46949 ++{
1.46950 ++ $opt_debug
1.46951 ++ # There may be an optional sh(1) argument at the beginning of
1.46952 ++ # install_prog (especially on Windows NT).
1.46953 ++ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
1.46954 ++ # Allow the use of GNU shtool's install command.
1.46955 ++ $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
1.46956 ++ # Aesthetically quote it.
1.46957 ++ func_quote_for_eval "$nonopt"
1.46958 ++ install_prog="$func_quote_for_eval_result "
1.46959 ++ arg=$1
1.46960 ++ shift
1.46961 ++ else
1.46962 ++ install_prog=
1.46963 ++ arg=$nonopt
1.46964 ++ fi
1.46965 ++
1.46966 ++ # The real first argument should be the name of the installation program.
1.46967 ++ # Aesthetically quote it.
1.46968 ++ func_quote_for_eval "$arg"
1.46969 ++ install_prog="$install_prog$func_quote_for_eval_result"
1.46970 ++
1.46971 ++ # We need to accept at least all the BSD install flags.
1.46972 ++ dest=
1.46973 ++ files=
1.46974 ++ opts=
1.46975 ++ prev=
1.46976 ++ install_type=
1.46977 ++ isdir=no
1.46978 ++ stripme=
1.46979 ++ for arg
1.46980 ++ do
1.46981 ++ if test -n "$dest"; then
1.46982 ++ files="$files $dest"
1.46983 ++ dest=$arg
1.46984 ++ continue
1.46985 ++ fi
1.46986 ++
1.46987 ++ case $arg in
1.46988 ++ -d) isdir=yes ;;
1.46989 ++ -f)
1.46990 ++ case " $install_prog " in
1.46991 ++ *[\\\ /]cp\ *) ;;
1.46992 ++ *) prev=$arg ;;
1.46993 ++ esac
1.46994 ++ ;;
1.46995 ++ -g | -m | -o)
1.46996 ++ prev=$arg
1.46997 ++ ;;
1.46998 ++ -s)
1.46999 ++ stripme=" -s"
1.47000 ++ continue
1.47001 ++ ;;
1.47002 ++ -*)
1.47003 ++ ;;
1.47004 ++ *)
1.47005 ++ # If the previous option needed an argument, then skip it.
1.47006 ++ if test -n "$prev"; then
1.47007 ++ prev=
1.47008 ++ else
1.47009 ++ dest=$arg
1.47010 ++ continue
1.47011 ++ fi
1.47012 ++ ;;
1.47013 ++ esac
1.47014 ++
1.47015 ++ # Aesthetically quote the argument.
1.47016 ++ func_quote_for_eval "$arg"
1.47017 ++ install_prog="$install_prog $func_quote_for_eval_result"
1.47018 ++ done
1.47019 ++
1.47020 ++ test -z "$install_prog" && \
1.47021 ++ func_fatal_help "you must specify an install program"
1.47022 ++
1.47023 ++ test -n "$prev" && \
1.47024 ++ func_fatal_help "the \`$prev' option requires an argument"
1.47025 ++
1.47026 ++ if test -z "$files"; then
1.47027 ++ if test -z "$dest"; then
1.47028 ++ func_fatal_help "no file or destination specified"
1.47029 ++ else
1.47030 ++ func_fatal_help "you must specify a destination"
1.47031 ++ fi
1.47032 ++ fi
1.47033 ++
1.47034 ++ # Strip any trailing slash from the destination.
1.47035 ++ func_stripname '' '/' "$dest"
1.47036 ++ dest=$func_stripname_result
1.47037 ++
1.47038 ++ # Check to see that the destination is a directory.
1.47039 ++ test -d "$dest" && isdir=yes
1.47040 ++ if test "$isdir" = yes; then
1.47041 ++ destdir="$dest"
1.47042 ++ destname=
1.47043 ++ else
1.47044 ++ func_dirname "$dest" "" "."
1.47045 ++ destdir="$func_dirname_result"
1.47046 ++ func_basename "$dest"
1.47047 ++ destname="$func_basename_result"
1.47048 ++
1.47049 ++ # Not a directory, so check to see that there is only one file specified.
1.47050 ++ set dummy $files; shift
1.47051 ++ test "$#" -gt 1 && \
1.47052 ++ func_fatal_help "\`$dest' is not a directory"
1.47053 ++ fi
1.47054 ++ case $destdir in
1.47055 ++ [\\/]* | [A-Za-z]:[\\/]*) ;;
1.47056 ++ *)
1.47057 ++ for file in $files; do
1.47058 ++ case $file in
1.47059 ++ *.lo) ;;
1.47060 ++ *)
1.47061 ++ func_fatal_help "\`$destdir' must be an absolute directory name"
1.47062 ++ ;;
1.47063 ++ esac
1.47064 ++ done
1.47065 ++ ;;
1.47066 ++ esac
1.47067 ++
1.47068 ++ # This variable tells wrapper scripts just to set variables rather
1.47069 ++ # than running their programs.
1.47070 ++ libtool_install_magic="$magic"
1.47071 ++
1.47072 ++ staticlibs=
1.47073 ++ future_libdirs=
1.47074 ++ current_libdirs=
1.47075 ++ for file in $files; do
1.47076 ++
1.47077 ++ # Do each installation.
1.47078 ++ case $file in
1.47079 ++ *.$libext)
1.47080 ++ # Do the static libraries later.
1.47081 ++ staticlibs="$staticlibs $file"
1.47082 ++ ;;
1.47083 ++
1.47084 ++ *.la)
1.47085 ++ # Check to see that this really is a libtool archive.
1.47086 ++ func_lalib_unsafe_p "$file" \
1.47087 ++ || func_fatal_help "\`$file' is not a valid libtool archive"
1.47088 ++
1.47089 ++ library_names=
1.47090 ++ old_library=
1.47091 ++ relink_command=
1.47092 ++ func_source "$file"
1.47093 ++
1.47094 ++ # Add the libdir to current_libdirs if it is the destination.
1.47095 ++ if test "X$destdir" = "X$libdir"; then
1.47096 ++ case "$current_libdirs " in
1.47097 ++ *" $libdir "*) ;;
1.47098 ++ *) current_libdirs="$current_libdirs $libdir" ;;
1.47099 ++ esac
1.47100 ++ else
1.47101 ++ # Note the libdir as a future libdir.
1.47102 ++ case "$future_libdirs " in
1.47103 ++ *" $libdir "*) ;;
1.47104 ++ *) future_libdirs="$future_libdirs $libdir" ;;
1.47105 ++ esac
1.47106 ++ fi
1.47107 ++
1.47108 ++ func_dirname "$file" "/" ""
1.47109 ++ dir="$func_dirname_result"
1.47110 ++ dir="$dir$objdir"
1.47111 ++
1.47112 ++ if test -n "$relink_command"; then
1.47113 ++ # Determine the prefix the user has applied to our future dir.
1.47114 ++ inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
1.47115 ++
1.47116 ++ # Don't allow the user to place us outside of our expected
1.47117 ++ # location b/c this prevents finding dependent libraries that
1.47118 ++ # are installed to the same prefix.
1.47119 ++ # At present, this check doesn't affect windows .dll's that
1.47120 ++ # are installed into $libdir/../bin (currently, that works fine)
1.47121 ++ # but it's something to keep an eye on.
1.47122 ++ test "$inst_prefix_dir" = "$destdir" && \
1.47123 ++ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
1.47124 ++
1.47125 ++ if test -n "$inst_prefix_dir"; then
1.47126 ++ # Stick the inst_prefix_dir data into the link command.
1.47127 ++ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
1.47128 ++ else
1.47129 ++ relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
1.47130 ++ fi
1.47131 ++
1.47132 ++ func_warning "relinking \`$file'"
1.47133 ++ func_show_eval "$relink_command" \
1.47134 ++ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
1.47135 ++ fi
1.47136 ++
1.47137 ++ # See the names of the shared library.
1.47138 ++ set dummy $library_names; shift
1.47139 ++ if test -n "$1"; then
1.47140 ++ realname="$1"
1.47141 ++ shift
1.47142 ++
1.47143 ++ srcname="$realname"
1.47144 ++ test -n "$relink_command" && srcname="$realname"T
1.47145 ++
1.47146 ++ # Install the shared library and build the symlinks.
1.47147 ++ func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
1.47148 ++ 'exit $?'
1.47149 ++ tstripme="$stripme"
1.47150 ++ case $host_os in
1.47151 ++ cygwin* | mingw* | pw32*)
1.47152 ++ case $realname in
1.47153 ++ *.dll.a)
1.47154 ++ tstripme=""
1.47155 ++ ;;
1.47156 ++ esac
1.47157 ++ ;;
1.47158 ++ esac
1.47159 ++ if test -n "$tstripme" && test -n "$striplib"; then
1.47160 ++ func_show_eval "$striplib $destdir/$realname" 'exit $?'
1.47161 ++ fi
1.47162 ++
1.47163 ++ if test "$#" -gt 0; then
1.47164 ++ # Delete the old symlinks, and create new ones.
1.47165 ++ # Try `ln -sf' first, because the `ln' binary might depend on
1.47166 ++ # the symlink we replace! Solaris /bin/ln does not understand -f,
1.47167 ++ # so we also need to try rm && ln -s.
1.47168 ++ for linkname
1.47169 ++ do
1.47170 ++ test "$linkname" != "$realname" \
1.47171 ++ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
1.47172 ++ done
1.47173 ++ fi
1.47174 ++
1.47175 ++ # Do each command in the postinstall commands.
1.47176 ++ lib="$destdir/$realname"
1.47177 ++ func_execute_cmds "$postinstall_cmds" 'exit $?'
1.47178 ++ fi
1.47179 ++
1.47180 ++ # Install the pseudo-library for information purposes.
1.47181 ++ func_basename "$file"
1.47182 ++ name="$func_basename_result"
1.47183 ++ instname="$dir/$name"i
1.47184 ++ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
1.47185 ++
1.47186 ++ # Maybe install the static library, too.
1.47187 ++ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
1.47188 ++ ;;
1.47189 ++
1.47190 ++ *.lo)
1.47191 ++ # Install (i.e. copy) a libtool object.
1.47192 ++
1.47193 ++ # Figure out destination file name, if it wasn't already specified.
1.47194 ++ if test -n "$destname"; then
1.47195 ++ destfile="$destdir/$destname"
1.47196 ++ else
1.47197 ++ func_basename "$file"
1.47198 ++ destfile="$func_basename_result"
1.47199 ++ destfile="$destdir/$destfile"
1.47200 ++ fi
1.47201 ++
1.47202 ++ # Deduce the name of the destination old-style object file.
1.47203 ++ case $destfile in
1.47204 ++ *.lo)
1.47205 ++ func_lo2o "$destfile"
1.47206 ++ staticdest=$func_lo2o_result
1.47207 ++ ;;
1.47208 ++ *.$objext)
1.47209 ++ staticdest="$destfile"
1.47210 ++ destfile=
1.47211 ++ ;;
1.47212 ++ *)
1.47213 ++ func_fatal_help "cannot copy a libtool object to \`$destfile'"
1.47214 ++ ;;
1.47215 ++ esac
1.47216 ++
1.47217 ++ # Install the libtool object if requested.
1.47218 ++ test -n "$destfile" && \
1.47219 ++ func_show_eval "$install_prog $file $destfile" 'exit $?'
1.47220 ++
1.47221 ++ # Install the old object if enabled.
1.47222 ++ if test "$build_old_libs" = yes; then
1.47223 ++ # Deduce the name of the old-style object file.
1.47224 ++ func_lo2o "$file"
1.47225 ++ staticobj=$func_lo2o_result
1.47226 ++ func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
1.47227 ++ fi
1.47228 ++ exit $EXIT_SUCCESS
1.47229 ++ ;;
1.47230 ++
1.47231 ++ *)
1.47232 ++ # Figure out destination file name, if it wasn't already specified.
1.47233 ++ if test -n "$destname"; then
1.47234 ++ destfile="$destdir/$destname"
1.47235 ++ else
1.47236 ++ func_basename "$file"
1.47237 ++ destfile="$func_basename_result"
1.47238 ++ destfile="$destdir/$destfile"
1.47239 ++ fi
1.47240 ++
1.47241 ++ # If the file is missing, and there is a .exe on the end, strip it
1.47242 ++ # because it is most likely a libtool script we actually want to
1.47243 ++ # install
1.47244 ++ stripped_ext=""
1.47245 ++ case $file in
1.47246 ++ *.exe)
1.47247 ++ if test ! -f "$file"; then
1.47248 ++ func_stripname '' '.exe' "$file"
1.47249 ++ file=$func_stripname_result
1.47250 ++ stripped_ext=".exe"
1.47251 ++ fi
1.47252 ++ ;;
1.47253 ++ esac
1.47254 ++
1.47255 ++ # Do a test to see if this is really a libtool program.
1.47256 ++ case $host in
1.47257 ++ *cygwin*|*mingw*)
1.47258 ++ func_stripname '' '.exe' "$file"
1.47259 ++ wrapper=$func_stripname_result
1.47260 ++ ;;
1.47261 ++ *)
1.47262 ++ wrapper=$file
1.47263 ++ ;;
1.47264 ++ esac
1.47265 ++ if func_ltwrapper_p "$wrapper"; then
1.47266 ++ notinst_deplibs=
1.47267 ++ relink_command=
1.47268 ++
1.47269 ++ func_source "$wrapper"
1.47270 ++
1.47271 ++ # Check the variables that should have been set.
1.47272 ++ test -z "$generated_by_libtool_version" && \
1.47273 ++ func_fatal_error "invalid libtool wrapper script \`$wrapper'"
1.47274 ++
1.47275 ++ finalize=yes
1.47276 ++ for lib in $notinst_deplibs; do
1.47277 ++ # Check to see that each library is installed.
1.47278 ++ libdir=
1.47279 ++ if test -f "$lib"; then
1.47280 ++ func_source "$lib"
1.47281 ++ fi
1.47282 ++ libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
1.47283 ++ if test -n "$libdir" && test ! -f "$libfile"; then
1.47284 ++ func_warning "\`$lib' has not been installed in \`$libdir'"
1.47285 ++ finalize=no
1.47286 ++ fi
1.47287 ++ done
1.47288 ++
1.47289 ++ relink_command=
1.47290 ++ func_source "$wrapper"
1.47291 ++
1.47292 ++ outputname=
1.47293 ++ if test "$fast_install" = no && test -n "$relink_command"; then
1.47294 ++ $opt_dry_run || {
1.47295 ++ if test "$finalize" = yes; then
1.47296 ++ tmpdir=`func_mktempdir`
1.47297 ++ func_basename "$file$stripped_ext"
1.47298 ++ file="$func_basename_result"
1.47299 ++ outputname="$tmpdir/$file"
1.47300 ++ # Replace the output file specification.
1.47301 ++ relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
1.47302 ++
1.47303 ++ $opt_silent || {
1.47304 ++ func_quote_for_expand "$relink_command"
1.47305 ++ eval "func_echo $func_quote_for_expand_result"
1.47306 ++ }
1.47307 ++ if eval "$relink_command"; then :
1.47308 ++ else
1.47309 ++ func_error "error: relink \`$file' with the above command before installing it"
1.47310 ++ $opt_dry_run || ${RM}r "$tmpdir"
1.47311 ++ continue
1.47312 ++ fi
1.47313 ++ file="$outputname"
1.47314 ++ else
1.47315 ++ func_warning "cannot relink \`$file'"
1.47316 ++ fi
1.47317 ++ }
1.47318 ++ else
1.47319 ++ # Install the binary that we compiled earlier.
1.47320 ++ file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
1.47321 ++ fi
1.47322 ++ fi
1.47323 ++
1.47324 ++ # remove .exe since cygwin /usr/bin/install will append another
1.47325 ++ # one anyway
1.47326 ++ case $install_prog,$host in
1.47327 ++ */usr/bin/install*,*cygwin*)
1.47328 ++ case $file:$destfile in
1.47329 ++ *.exe:*.exe)
1.47330 ++ # this is ok
1.47331 ++ ;;
1.47332 ++ *.exe:*)
1.47333 ++ destfile=$destfile.exe
1.47334 ++ ;;
1.47335 ++ *:*.exe)
1.47336 ++ func_stripname '' '.exe' "$destfile"
1.47337 ++ destfile=$func_stripname_result
1.47338 ++ ;;
1.47339 ++ esac
1.47340 ++ ;;
1.47341 ++ esac
1.47342 ++ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
1.47343 ++ $opt_dry_run || if test -n "$outputname"; then
1.47344 ++ ${RM}r "$tmpdir"
1.47345 ++ fi
1.47346 ++ ;;
1.47347 ++ esac
1.47348 ++ done
1.47349 ++
1.47350 ++ for file in $staticlibs; do
1.47351 ++ func_basename "$file"
1.47352 ++ name="$func_basename_result"
1.47353 ++
1.47354 ++ # Set up the ranlib parameters.
1.47355 ++ oldlib="$destdir/$name"
1.47356 ++
1.47357 ++ func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
1.47358 ++
1.47359 ++ if test -n "$stripme" && test -n "$old_striplib"; then
1.47360 ++ func_show_eval "$old_striplib $oldlib" 'exit $?'
1.47361 ++ fi
1.47362 ++
1.47363 ++ # Do each command in the postinstall commands.
1.47364 ++ func_execute_cmds "$old_postinstall_cmds" 'exit $?'
1.47365 ++ done
1.47366 ++
1.47367 ++ test -n "$future_libdirs" && \
1.47368 ++ func_warning "remember to run \`$progname --finish$future_libdirs'"
1.47369 ++
1.47370 ++ if test -n "$current_libdirs"; then
1.47371 ++ # Maybe just do a dry run.
1.47372 ++ $opt_dry_run && current_libdirs=" -n$current_libdirs"
1.47373 ++ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
1.47374 ++ else
1.47375 ++ exit $EXIT_SUCCESS
1.47376 ++ fi
1.47377 ++}
1.47378 ++
1.47379 ++test "$mode" = install && func_mode_install ${1+"$@"}
1.47380 ++
1.47381 ++
1.47382 ++# func_mode_link arg...
1.47383 ++func_mode_link ()
1.47384 ++{
1.47385 ++ $opt_debug
1.47386 ++ case $host in
1.47387 ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1.47388 ++ # It is impossible to link a dll without this setting, and
1.47389 ++ # we shouldn't force the makefile maintainer to figure out
1.47390 ++ # which system we are compiling for in order to pass an extra
1.47391 ++ # flag for every libtool invocation.
1.47392 ++ # allow_undefined=no
1.47393 ++
1.47394 ++ # FIXME: Unfortunately, there are problems with the above when trying
1.47395 ++ # to make a dll which has undefined symbols, in which case not
1.47396 ++ # even a static library is built. For now, we need to specify
1.47397 ++ # -no-undefined on the libtool link line when we can be certain
1.47398 ++ # that all symbols are satisfied, otherwise we get a static library.
1.47399 ++ allow_undefined=yes
1.47400 ++ ;;
1.47401 ++ *)
1.47402 ++ allow_undefined=yes
1.47403 ++ ;;
1.47404 ++ esac
1.47405 ++ libtool_args=$nonopt
1.47406 ++ base_compile="$nonopt $@"
1.47407 ++ compile_command=$nonopt
1.47408 ++ finalize_command=$nonopt
1.47409 ++
1.47410 ++ compile_rpath=
1.47411 ++ finalize_rpath=
1.47412 ++ compile_shlibpath=
1.47413 ++ finalize_shlibpath=
1.47414 ++ convenience=
1.47415 ++ old_convenience=
1.47416 ++ deplibs=
1.47417 ++ old_deplibs=
1.47418 ++ compiler_flags=
1.47419 ++ linker_flags=
1.47420 ++ dllsearchpath=
1.47421 ++ lib_search_path=`pwd`
1.47422 ++ inst_prefix_dir=
1.47423 ++ new_inherited_linker_flags=
1.47424 ++
1.47425 ++ avoid_version=no
1.47426 ++ dlfiles=
1.47427 ++ dlprefiles=
1.47428 ++ dlself=no
1.47429 ++ export_dynamic=no
1.47430 ++ export_symbols=
1.47431 ++ export_symbols_regex=
1.47432 ++ generated=
1.47433 ++ libobjs=
1.47434 ++ ltlibs=
1.47435 ++ module=no
1.47436 ++ no_install=no
1.47437 ++ objs=
1.47438 ++ non_pic_objects=
1.47439 ++ precious_files_regex=
1.47440 ++ prefer_static_libs=no
1.47441 ++ preload=no
1.47442 ++ prev=
1.47443 ++ prevarg=
1.47444 ++ release=
1.47445 ++ rpath=
1.47446 ++ xrpath=
1.47447 ++ perm_rpath=
1.47448 ++ temp_rpath=
1.47449 ++ thread_safe=no
1.47450 ++ vinfo=
1.47451 ++ vinfo_number=no
1.47452 ++ weak_libs=
1.47453 ++ single_module="${wl}-single_module"
1.47454 ++ func_infer_tag $base_compile
1.47455 ++
1.47456 ++ # We need to know -static, to get the right output filenames.
1.47457 ++ for arg
1.47458 ++ do
1.47459 ++ case $arg in
1.47460 ++ -shared)
1.47461 ++ test "$build_libtool_libs" != yes && \
1.47462 ++ func_fatal_configuration "can not build a shared library"
1.47463 ++ build_old_libs=no
1.47464 ++ break
1.47465 ++ ;;
1.47466 ++ -all-static | -static | -static-libtool-libs)
1.47467 ++ case $arg in
1.47468 ++ -all-static)
1.47469 ++ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
1.47470 ++ func_warning "complete static linking is impossible in this configuration"
1.47471 ++ fi
1.47472 ++ if test -n "$link_static_flag"; then
1.47473 ++ dlopen_self=$dlopen_self_static
1.47474 ++ # See comment for -static flag below, for more details.
1.47475 ++ func_append compile_command " $link_static_flag"
1.47476 ++ func_append finalize_command " $link_static_flag"
1.47477 ++ fi
1.47478 ++ prefer_static_libs=yes
1.47479 ++ ;;
1.47480 ++ -static)
1.47481 ++ if test -z "$pic_flag" && test -n "$link_static_flag"; then
1.47482 ++ dlopen_self=$dlopen_self_static
1.47483 ++ fi
1.47484 ++ prefer_static_libs=built
1.47485 ++ ;;
1.47486 ++ -static-libtool-libs)
1.47487 ++ if test -z "$pic_flag" && test -n "$link_static_flag"; then
1.47488 ++ dlopen_self=$dlopen_self_static
1.47489 ++ fi
1.47490 ++ prefer_static_libs=yes
1.47491 ++ ;;
1.47492 ++ esac
1.47493 ++ build_libtool_libs=no
1.47494 ++ build_old_libs=yes
1.47495 ++ break
1.47496 ++ ;;
1.47497 ++ esac
1.47498 ++ done
1.47499 ++
1.47500 ++ # See if our shared archives depend on static archives.
1.47501 ++ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
1.47502 ++
1.47503 ++ # Go through the arguments, transforming them on the way.
1.47504 ++ while test "$#" -gt 0; do
1.47505 ++ arg="$1"
1.47506 ++ shift
1.47507 ++ func_quote_for_eval "$arg"
1.47508 ++ qarg=$func_quote_for_eval_unquoted_result
1.47509 ++ func_append libtool_args " $func_quote_for_eval_result"
1.47510 ++
1.47511 ++ # If the previous option needs an argument, assign it.
1.47512 ++ if test -n "$prev"; then
1.47513 ++ case $prev in
1.47514 ++ output)
1.47515 ++ func_append compile_command " @OUTPUT@"
1.47516 ++ func_append finalize_command " @OUTPUT@"
1.47517 ++ ;;
1.47518 ++ esac
1.47519 ++
1.47520 ++ case $prev in
1.47521 ++ dlfiles|dlprefiles)
1.47522 ++ if test "$preload" = no; then
1.47523 ++ # Add the symbol object into the linking commands.
1.47524 ++ func_append compile_command " @SYMFILE@"
1.47525 ++ func_append finalize_command " @SYMFILE@"
1.47526 ++ preload=yes
1.47527 ++ fi
1.47528 ++ case $arg in
1.47529 ++ *.la | *.lo) ;; # We handle these cases below.
1.47530 ++ force)
1.47531 ++ if test "$dlself" = no; then
1.47532 ++ dlself=needless
1.47533 ++ export_dynamic=yes
1.47534 ++ fi
1.47535 ++ prev=
1.47536 ++ continue
1.47537 ++ ;;
1.47538 ++ self)
1.47539 ++ if test "$prev" = dlprefiles; then
1.47540 ++ dlself=yes
1.47541 ++ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
1.47542 ++ dlself=yes
1.47543 ++ else
1.47544 ++ dlself=needless
1.47545 ++ export_dynamic=yes
1.47546 ++ fi
1.47547 ++ prev=
1.47548 ++ continue
1.47549 ++ ;;
1.47550 ++ *)
1.47551 ++ if test "$prev" = dlfiles; then
1.47552 ++ dlfiles="$dlfiles $arg"
1.47553 ++ else
1.47554 ++ dlprefiles="$dlprefiles $arg"
1.47555 ++ fi
1.47556 ++ prev=
1.47557 ++ continue
1.47558 ++ ;;
1.47559 ++ esac
1.47560 ++ ;;
1.47561 ++ expsyms)
1.47562 ++ export_symbols="$arg"
1.47563 ++ test -f "$arg" \
1.47564 ++ || func_fatal_error "symbol file \`$arg' does not exist"
1.47565 ++ prev=
1.47566 ++ continue
1.47567 ++ ;;
1.47568 ++ expsyms_regex)
1.47569 ++ export_symbols_regex="$arg"
1.47570 ++ prev=
1.47571 ++ continue
1.47572 ++ ;;
1.47573 ++ framework)
1.47574 ++ case $host in
1.47575 ++ *-*-darwin*)
1.47576 ++ case "$deplibs " in
1.47577 ++ *" $qarg.ltframework "*) ;;
1.47578 ++ *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
1.47579 ++ ;;
1.47580 ++ esac
1.47581 ++ ;;
1.47582 ++ esac
1.47583 ++ prev=
1.47584 ++ continue
1.47585 ++ ;;
1.47586 ++ inst_prefix)
1.47587 ++ inst_prefix_dir="$arg"
1.47588 ++ prev=
1.47589 ++ continue
1.47590 ++ ;;
1.47591 ++ objectlist)
1.47592 ++ if test -f "$arg"; then
1.47593 ++ save_arg=$arg
1.47594 ++ moreargs=
1.47595 ++ for fil in `cat "$save_arg"`
1.47596 ++ do
1.47597 ++# moreargs="$moreargs $fil"
1.47598 ++ arg=$fil
1.47599 ++ # A libtool-controlled object.
1.47600 ++
1.47601 ++ # Check to see that this really is a libtool object.
1.47602 ++ if func_lalib_unsafe_p "$arg"; then
1.47603 ++ pic_object=
1.47604 ++ non_pic_object=
1.47605 ++
1.47606 ++ # Read the .lo file
1.47607 ++ func_source "$arg"
1.47608 ++
1.47609 ++ if test -z "$pic_object" ||
1.47610 ++ test -z "$non_pic_object" ||
1.47611 ++ test "$pic_object" = none &&
1.47612 ++ test "$non_pic_object" = none; then
1.47613 ++ func_fatal_error "cannot find name of object for \`$arg'"
1.47614 ++ fi
1.47615 ++
1.47616 ++ # Extract subdirectory from the argument.
1.47617 ++ func_dirname "$arg" "/" ""
1.47618 ++ xdir="$func_dirname_result"
1.47619 ++
1.47620 ++ if test "$pic_object" != none; then
1.47621 ++ # Prepend the subdirectory the object is found in.
1.47622 ++ pic_object="$xdir$pic_object"
1.47623 ++
1.47624 ++ if test "$prev" = dlfiles; then
1.47625 ++ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1.47626 ++ dlfiles="$dlfiles $pic_object"
1.47627 ++ prev=
1.47628 ++ continue
1.47629 ++ else
1.47630 ++ # If libtool objects are unsupported, then we need to preload.
1.47631 ++ prev=dlprefiles
1.47632 ++ fi
1.47633 ++ fi
1.47634 ++
1.47635 ++ # CHECK ME: I think I busted this. -Ossama
1.47636 ++ if test "$prev" = dlprefiles; then
1.47637 ++ # Preload the old-style object.
1.47638 ++ dlprefiles="$dlprefiles $pic_object"
1.47639 ++ prev=
1.47640 ++ fi
1.47641 ++
1.47642 ++ # A PIC object.
1.47643 ++ func_append libobjs " $pic_object"
1.47644 ++ arg="$pic_object"
1.47645 ++ fi
1.47646 ++
1.47647 ++ # Non-PIC object.
1.47648 ++ if test "$non_pic_object" != none; then
1.47649 ++ # Prepend the subdirectory the object is found in.
1.47650 ++ non_pic_object="$xdir$non_pic_object"
1.47651 ++
1.47652 ++ # A standard non-PIC object
1.47653 ++ func_append non_pic_objects " $non_pic_object"
1.47654 ++ if test -z "$pic_object" || test "$pic_object" = none ; then
1.47655 ++ arg="$non_pic_object"
1.47656 ++ fi
1.47657 ++ else
1.47658 ++ # If the PIC object exists, use it instead.
1.47659 ++ # $xdir was prepended to $pic_object above.
1.47660 ++ non_pic_object="$pic_object"
1.47661 ++ func_append non_pic_objects " $non_pic_object"
1.47662 ++ fi
1.47663 ++ else
1.47664 ++ # Only an error if not doing a dry-run.
1.47665 ++ if $opt_dry_run; then
1.47666 ++ # Extract subdirectory from the argument.
1.47667 ++ func_dirname "$arg" "/" ""
1.47668 ++ xdir="$func_dirname_result"
1.47669 ++
1.47670 ++ func_lo2o "$arg"
1.47671 ++ pic_object=$xdir$objdir/$func_lo2o_result
1.47672 ++ non_pic_object=$xdir$func_lo2o_result
1.47673 ++ func_append libobjs " $pic_object"
1.47674 ++ func_append non_pic_objects " $non_pic_object"
1.47675 ++ else
1.47676 ++ func_fatal_error "\`$arg' is not a valid libtool object"
1.47677 ++ fi
1.47678 ++ fi
1.47679 ++ done
1.47680 ++ else
1.47681 ++ func_fatal_error "link input file \`$arg' does not exist"
1.47682 ++ fi
1.47683 ++ arg=$save_arg
1.47684 ++ prev=
1.47685 ++ continue
1.47686 ++ ;;
1.47687 ++ precious_regex)
1.47688 ++ precious_files_regex="$arg"
1.47689 ++ prev=
1.47690 ++ continue
1.47691 ++ ;;
1.47692 ++ release)
1.47693 ++ release="-$arg"
1.47694 ++ prev=
1.47695 ++ continue
1.47696 ++ ;;
1.47697 ++ rpath | xrpath)
1.47698 ++ # We need an absolute path.
1.47699 ++ case $arg in
1.47700 ++ [\\/]* | [A-Za-z]:[\\/]*) ;;
1.47701 ++ *)
1.47702 ++ func_fatal_error "only absolute run-paths are allowed"
1.47703 ++ ;;
1.47704 ++ esac
1.47705 ++ if test "$prev" = rpath; then
1.47706 ++ case "$rpath " in
1.47707 ++ *" $arg "*) ;;
1.47708 ++ *) rpath="$rpath $arg" ;;
1.47709 ++ esac
1.47710 ++ else
1.47711 ++ case "$xrpath " in
1.47712 ++ *" $arg "*) ;;
1.47713 ++ *) xrpath="$xrpath $arg" ;;
1.47714 ++ esac
1.47715 ++ fi
1.47716 ++ prev=
1.47717 ++ continue
1.47718 ++ ;;
1.47719 ++ shrext)
1.47720 ++ shrext_cmds="$arg"
1.47721 ++ prev=
1.47722 ++ continue
1.47723 ++ ;;
1.47724 ++ weak)
1.47725 ++ weak_libs="$weak_libs $arg"
1.47726 ++ prev=
1.47727 ++ continue
1.47728 ++ ;;
1.47729 ++ xcclinker)
1.47730 ++ linker_flags="$linker_flags $qarg"
1.47731 ++ compiler_flags="$compiler_flags $qarg"
1.47732 ++ prev=
1.47733 ++ func_append compile_command " $qarg"
1.47734 ++ func_append finalize_command " $qarg"
1.47735 ++ continue
1.47736 ++ ;;
1.47737 ++ xcompiler)
1.47738 ++ compiler_flags="$compiler_flags $qarg"
1.47739 ++ prev=
1.47740 ++ func_append compile_command " $qarg"
1.47741 ++ func_append finalize_command " $qarg"
1.47742 ++ continue
1.47743 ++ ;;
1.47744 ++ xlinker)
1.47745 ++ linker_flags="$linker_flags $qarg"
1.47746 ++ compiler_flags="$compiler_flags $wl$qarg"
1.47747 ++ prev=
1.47748 ++ func_append compile_command " $wl$qarg"
1.47749 ++ func_append finalize_command " $wl$qarg"
1.47750 ++ continue
1.47751 ++ ;;
1.47752 ++ *)
1.47753 ++ eval "$prev=\"\$arg\""
1.47754 ++ prev=
1.47755 ++ continue
1.47756 ++ ;;
1.47757 ++ esac
1.47758 ++ fi # test -n "$prev"
1.47759 ++
1.47760 ++ prevarg="$arg"
1.47761 ++
1.47762 ++ case $arg in
1.47763 ++ -all-static)
1.47764 ++ # The effects of -all-static are defined in a previous loop.
1.47765 ++ continue
1.47766 ++ ;;
1.47767 ++
1.47768 ++ -allow-undefined)
1.47769 ++ # FIXME: remove this flag sometime in the future.
1.47770 ++ func_fatal_error "\`-allow-undefined' must not be used because it is the default"
1.47771 ++ ;;
1.47772 ++
1.47773 ++ -avoid-version)
1.47774 ++ avoid_version=yes
1.47775 ++ continue
1.47776 ++ ;;
1.47777 ++
1.47778 ++ -dlopen)
1.47779 ++ prev=dlfiles
1.47780 ++ continue
1.47781 ++ ;;
1.47782 ++
1.47783 ++ -dlpreopen)
1.47784 ++ prev=dlprefiles
1.47785 ++ continue
1.47786 ++ ;;
1.47787 ++
1.47788 ++ -export-dynamic)
1.47789 ++ export_dynamic=yes
1.47790 ++ continue
1.47791 ++ ;;
1.47792 ++
1.47793 ++ -export-symbols | -export-symbols-regex)
1.47794 ++ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1.47795 ++ func_fatal_error "more than one -exported-symbols argument is not allowed"
1.47796 ++ fi
1.47797 ++ if test "X$arg" = "X-export-symbols"; then
1.47798 ++ prev=expsyms
1.47799 ++ else
1.47800 ++ prev=expsyms_regex
1.47801 ++ fi
1.47802 ++ continue
1.47803 ++ ;;
1.47804 ++
1.47805 ++ -framework)
1.47806 ++ prev=framework
1.47807 ++ continue
1.47808 ++ ;;
1.47809 ++
1.47810 ++ -inst-prefix-dir)
1.47811 ++ prev=inst_prefix
1.47812 ++ continue
1.47813 ++ ;;
1.47814 ++
1.47815 ++ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1.47816 ++ # so, if we see these flags be careful not to treat them like -L
1.47817 ++ -L[A-Z][A-Z]*:*)
1.47818 ++ case $with_gcc/$host in
1.47819 ++ no/*-*-irix* | /*-*-irix*)
1.47820 ++ func_append compile_command " $arg"
1.47821 ++ func_append finalize_command " $arg"
1.47822 ++ ;;
1.47823 ++ esac
1.47824 ++ continue
1.47825 ++ ;;
1.47826 ++
1.47827 ++ -L*)
1.47828 ++ func_stripname '-L' '' "$arg"
1.47829 ++ dir=$func_stripname_result
1.47830 ++ # We need an absolute path.
1.47831 ++ case $dir in
1.47832 ++ [\\/]* | [A-Za-z]:[\\/]*) ;;
1.47833 ++ *)
1.47834 ++ absdir=`cd "$dir" && pwd`
1.47835 ++ test -z "$absdir" && \
1.47836 ++ func_fatal_error "cannot determine absolute directory name of \`$dir'"
1.47837 ++ dir="$absdir"
1.47838 ++ ;;
1.47839 ++ esac
1.47840 ++ case "$deplibs " in
1.47841 ++ *" -L$dir "*) ;;
1.47842 ++ *)
1.47843 ++ deplibs="$deplibs -L$dir"
1.47844 ++ lib_search_path="$lib_search_path $dir"
1.47845 ++ ;;
1.47846 ++ esac
1.47847 ++ case $host in
1.47848 ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1.47849 ++ testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
1.47850 ++ case :$dllsearchpath: in
1.47851 ++ *":$dir:"*) ;;
1.47852 ++ *) dllsearchpath="$dllsearchpath:$dir";;
1.47853 ++ esac
1.47854 ++ case :$dllsearchpath: in
1.47855 ++ *":$testbindir:"*) ;;
1.47856 ++ *) dllsearchpath="$dllsearchpath:$testbindir";;
1.47857 ++ esac
1.47858 ++ ;;
1.47859 ++ esac
1.47860 ++ continue
1.47861 ++ ;;
1.47862 ++
1.47863 ++ -l*)
1.47864 ++ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1.47865 ++ case $host in
1.47866 ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
1.47867 ++ # These systems don't actually have a C or math library (as such)
1.47868 ++ continue
1.47869 ++ ;;
1.47870 ++ *-*-os2*)
1.47871 ++ # These systems don't actually have a C library (as such)
1.47872 ++ test "X$arg" = "X-lc" && continue
1.47873 ++ ;;
1.47874 ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1.47875 ++ # Do not include libc due to us having libc/libc_r.
1.47876 ++ test "X$arg" = "X-lc" && continue
1.47877 ++ ;;
1.47878 ++ *-*-rhapsody* | *-*-darwin1.[012])
1.47879 ++ # Rhapsody C and math libraries are in the System framework
1.47880 ++ deplibs="$deplibs System.ltframework"
1.47881 ++ continue
1.47882 ++ ;;
1.47883 ++ *-*-sco3.2v5* | *-*-sco5v6*)
1.47884 ++ # Causes problems with __ctype
1.47885 ++ test "X$arg" = "X-lc" && continue
1.47886 ++ ;;
1.47887 ++ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
1.47888 ++ # Compiler inserts libc in the correct place for threads to work
1.47889 ++ test "X$arg" = "X-lc" && continue
1.47890 ++ ;;
1.47891 ++ esac
1.47892 ++ elif test "X$arg" = "X-lc_r"; then
1.47893 ++ case $host in
1.47894 ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1.47895 ++ # Do not include libc_r directly, use -pthread flag.
1.47896 ++ continue
1.47897 ++ ;;
1.47898 ++ esac
1.47899 ++ fi
1.47900 ++ deplibs="$deplibs $arg"
1.47901 ++ continue
1.47902 ++ ;;
1.47903 ++
1.47904 ++ -module)
1.47905 ++ module=yes
1.47906 ++ continue
1.47907 ++ ;;
1.47908 ++
1.47909 ++ # Tru64 UNIX uses -model [arg] to determine the layout of C++
1.47910 ++ # classes, name mangling, and exception handling.
1.47911 ++ # Darwin uses the -arch flag to determine output architecture.
1.47912 ++ -model|-arch|-isysroot)
1.47913 ++ compiler_flags="$compiler_flags $arg"
1.47914 ++ func_append compile_command " $arg"
1.47915 ++ func_append finalize_command " $arg"
1.47916 ++ prev=xcompiler
1.47917 ++ continue
1.47918 ++ ;;
1.47919 ++
1.47920 ++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
1.47921 ++ compiler_flags="$compiler_flags $arg"
1.47922 ++ func_append compile_command " $arg"
1.47923 ++ func_append finalize_command " $arg"
1.47924 ++ case "$new_inherited_linker_flags " in
1.47925 ++ *" $arg "*) ;;
1.47926 ++ * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
1.47927 ++ esac
1.47928 ++ continue
1.47929 ++ ;;
1.47930 ++
1.47931 ++ -multi_module)
1.47932 ++ single_module="${wl}-multi_module"
1.47933 ++ continue
1.47934 ++ ;;
1.47935 ++
1.47936 ++ -no-fast-install)
1.47937 ++ fast_install=no
1.47938 ++ continue
1.47939 ++ ;;
1.47940 ++
1.47941 ++ -no-install)
1.47942 ++ case $host in
1.47943 ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1.47944 ++ # The PATH hackery in wrapper scripts is required on Windows
1.47945 ++ # in order for the loader to find any dlls it needs.
1.47946 ++ func_warning "\`-no-install' is ignored for $host"
1.47947 ++ func_warning "assuming \`-no-fast-install' instead"
1.47948 ++ fast_install=no
1.47949 ++ ;;
1.47950 ++ *) no_install=yes ;;
1.47951 ++ esac
1.47952 ++ continue
1.47953 ++ ;;
1.47954 ++
1.47955 ++ -no-undefined)
1.47956 ++ allow_undefined=no
1.47957 ++ continue
1.47958 ++ ;;
1.47959 ++
1.47960 ++ -objectlist)
1.47961 ++ prev=objectlist
1.47962 ++ continue
1.47963 ++ ;;
1.47964 ++
1.47965 ++ -o) prev=output ;;
1.47966 ++
1.47967 ++ -precious-files-regex)
1.47968 ++ prev=precious_regex
1.47969 ++ continue
1.47970 ++ ;;
1.47971 ++
1.47972 ++ -release)
1.47973 ++ prev=release
1.47974 ++ continue
1.47975 ++ ;;
1.47976 ++
1.47977 ++ -rpath)
1.47978 ++ prev=rpath
1.47979 ++ continue
1.47980 ++ ;;
1.47981 ++
1.47982 ++ -R)
1.47983 ++ prev=xrpath
1.47984 ++ continue
1.47985 ++ ;;
1.47986 ++
1.47987 ++ -R*)
1.47988 ++ func_stripname '-R' '' "$arg"
1.47989 ++ dir=$func_stripname_result
1.47990 ++ # We need an absolute path.
1.47991 ++ case $dir in
1.47992 ++ [\\/]* | [A-Za-z]:[\\/]*) ;;
1.47993 ++ *)
1.47994 ++ func_fatal_error "only absolute run-paths are allowed"
1.47995 ++ ;;
1.47996 ++ esac
1.47997 ++ case "$xrpath " in
1.47998 ++ *" $dir "*) ;;
1.47999 ++ *) xrpath="$xrpath $dir" ;;
1.48000 ++ esac
1.48001 ++ continue
1.48002 ++ ;;
1.48003 ++
1.48004 ++ -shared)
1.48005 ++ # The effects of -shared are defined in a previous loop.
1.48006 ++ continue
1.48007 ++ ;;
1.48008 ++
1.48009 ++ -shrext)
1.48010 ++ prev=shrext
1.48011 ++ continue
1.48012 ++ ;;
1.48013 ++
1.48014 ++ -static | -static-libtool-libs)
1.48015 ++ # The effects of -static are defined in a previous loop.
1.48016 ++ # We used to do the same as -all-static on platforms that
1.48017 ++ # didn't have a PIC flag, but the assumption that the effects
1.48018 ++ # would be equivalent was wrong. It would break on at least
1.48019 ++ # Digital Unix and AIX.
1.48020 ++ continue
1.48021 ++ ;;
1.48022 ++
1.48023 ++ -thread-safe)
1.48024 ++ thread_safe=yes
1.48025 ++ continue
1.48026 ++ ;;
1.48027 ++
1.48028 ++ -version-info)
1.48029 ++ prev=vinfo
1.48030 ++ continue
1.48031 ++ ;;
1.48032 ++
1.48033 ++ -version-number)
1.48034 ++ prev=vinfo
1.48035 ++ vinfo_number=yes
1.48036 ++ continue
1.48037 ++ ;;
1.48038 ++
1.48039 ++ -weak)
1.48040 ++ prev=weak
1.48041 ++ continue
1.48042 ++ ;;
1.48043 ++
1.48044 ++ -Wc,*)
1.48045 ++ func_stripname '-Wc,' '' "$arg"
1.48046 ++ args=$func_stripname_result
1.48047 ++ arg=
1.48048 ++ save_ifs="$IFS"; IFS=','
1.48049 ++ for flag in $args; do
1.48050 ++ IFS="$save_ifs"
1.48051 ++ func_quote_for_eval "$flag"
1.48052 ++ arg="$arg $wl$func_quote_for_eval_result"
1.48053 ++ compiler_flags="$compiler_flags $func_quote_for_eval_result"
1.48054 ++ done
1.48055 ++ IFS="$save_ifs"
1.48056 ++ func_stripname ' ' '' "$arg"
1.48057 ++ arg=$func_stripname_result
1.48058 ++ ;;
1.48059 ++
1.48060 ++ -Wl,*)
1.48061 ++ func_stripname '-Wl,' '' "$arg"
1.48062 ++ args=$func_stripname_result
1.48063 ++ arg=
1.48064 ++ save_ifs="$IFS"; IFS=','
1.48065 ++ for flag in $args; do
1.48066 ++ IFS="$save_ifs"
1.48067 ++ func_quote_for_eval "$flag"
1.48068 ++ arg="$arg $wl$func_quote_for_eval_result"
1.48069 ++ compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
1.48070 ++ linker_flags="$linker_flags $func_quote_for_eval_result"
1.48071 ++ done
1.48072 ++ IFS="$save_ifs"
1.48073 ++ func_stripname ' ' '' "$arg"
1.48074 ++ arg=$func_stripname_result
1.48075 ++ ;;
1.48076 ++
1.48077 ++ -Xcompiler)
1.48078 ++ prev=xcompiler
1.48079 ++ continue
1.48080 ++ ;;
1.48081 ++
1.48082 ++ -Xlinker)
1.48083 ++ prev=xlinker
1.48084 ++ continue
1.48085 ++ ;;
1.48086 ++
1.48087 ++ -XCClinker)
1.48088 ++ prev=xcclinker
1.48089 ++ continue
1.48090 ++ ;;
1.48091 ++
1.48092 ++ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
1.48093 ++ # -r[0-9][0-9]* specifies the processor on the SGI compiler
1.48094 ++ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
1.48095 ++ # +DA*, +DD* enable 64-bit mode on the HP compiler
1.48096 ++ # -q* pass through compiler args for the IBM compiler
1.48097 ++ # -m*, -t[45]*, -txscale* pass through architecture-specific
1.48098 ++ # compiler args for GCC
1.48099 ++ # -F/path gives path to uninstalled frameworks, gcc on darwin
1.48100 ++ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
1.48101 ++ # @file GCC response files
1.48102 ++ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
1.48103 ++ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
1.48104 ++ func_quote_for_eval "$arg"
1.48105 ++ arg="$func_quote_for_eval_result"
1.48106 ++ func_append compile_command " $arg"
1.48107 ++ func_append finalize_command " $arg"
1.48108 ++ compiler_flags="$compiler_flags $arg"
1.48109 ++ continue
1.48110 ++ ;;
1.48111 ++
1.48112 ++ # Some other compiler flag.
1.48113 ++ -* | +*)
1.48114 ++ func_quote_for_eval "$arg"
1.48115 ++ arg="$func_quote_for_eval_result"
1.48116 ++ ;;
1.48117 ++
1.48118 ++ *.$objext)
1.48119 ++ # A standard object.
1.48120 ++ objs="$objs $arg"
1.48121 ++ ;;
1.48122 ++
1.48123 ++ *.lo)
1.48124 ++ # A libtool-controlled object.
1.48125 ++
1.48126 ++ # Check to see that this really is a libtool object.
1.48127 ++ if func_lalib_unsafe_p "$arg"; then
1.48128 ++ pic_object=
1.48129 ++ non_pic_object=
1.48130 ++
1.48131 ++ # Read the .lo file
1.48132 ++ func_source "$arg"
1.48133 ++
1.48134 ++ if test -z "$pic_object" ||
1.48135 ++ test -z "$non_pic_object" ||
1.48136 ++ test "$pic_object" = none &&
1.48137 ++ test "$non_pic_object" = none; then
1.48138 ++ func_fatal_error "cannot find name of object for \`$arg'"
1.48139 ++ fi
1.48140 ++
1.48141 ++ # Extract subdirectory from the argument.
1.48142 ++ func_dirname "$arg" "/" ""
1.48143 ++ xdir="$func_dirname_result"
1.48144 ++
1.48145 ++ if test "$pic_object" != none; then
1.48146 ++ # Prepend the subdirectory the object is found in.
1.48147 ++ pic_object="$xdir$pic_object"
1.48148 ++
1.48149 ++ if test "$prev" = dlfiles; then
1.48150 ++ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1.48151 ++ dlfiles="$dlfiles $pic_object"
1.48152 ++ prev=
1.48153 ++ continue
1.48154 ++ else
1.48155 ++ # If libtool objects are unsupported, then we need to preload.
1.48156 ++ prev=dlprefiles
1.48157 ++ fi
1.48158 ++ fi
1.48159 ++
1.48160 ++ # CHECK ME: I think I busted this. -Ossama
1.48161 ++ if test "$prev" = dlprefiles; then
1.48162 ++ # Preload the old-style object.
1.48163 ++ dlprefiles="$dlprefiles $pic_object"
1.48164 ++ prev=
1.48165 ++ fi
1.48166 ++
1.48167 ++ # A PIC object.
1.48168 ++ func_append libobjs " $pic_object"
1.48169 ++ arg="$pic_object"
1.48170 ++ fi
1.48171 ++
1.48172 ++ # Non-PIC object.
1.48173 ++ if test "$non_pic_object" != none; then
1.48174 ++ # Prepend the subdirectory the object is found in.
1.48175 ++ non_pic_object="$xdir$non_pic_object"
1.48176 ++
1.48177 ++ # A standard non-PIC object
1.48178 ++ func_append non_pic_objects " $non_pic_object"
1.48179 ++ if test -z "$pic_object" || test "$pic_object" = none ; then
1.48180 ++ arg="$non_pic_object"
1.48181 ++ fi
1.48182 ++ else
1.48183 ++ # If the PIC object exists, use it instead.
1.48184 ++ # $xdir was prepended to $pic_object above.
1.48185 ++ non_pic_object="$pic_object"
1.48186 ++ func_append non_pic_objects " $non_pic_object"
1.48187 ++ fi
1.48188 ++ else
1.48189 ++ # Only an error if not doing a dry-run.
1.48190 ++ if $opt_dry_run; then
1.48191 ++ # Extract subdirectory from the argument.
1.48192 ++ func_dirname "$arg" "/" ""
1.48193 ++ xdir="$func_dirname_result"
1.48194 ++
1.48195 ++ func_lo2o "$arg"
1.48196 ++ pic_object=$xdir$objdir/$func_lo2o_result
1.48197 ++ non_pic_object=$xdir$func_lo2o_result
1.48198 ++ func_append libobjs " $pic_object"
1.48199 ++ func_append non_pic_objects " $non_pic_object"
1.48200 ++ else
1.48201 ++ func_fatal_error "\`$arg' is not a valid libtool object"
1.48202 ++ fi
1.48203 ++ fi
1.48204 ++ ;;
1.48205 ++
1.48206 ++ *.$libext)
1.48207 ++ # An archive.
1.48208 ++ deplibs="$deplibs $arg"
1.48209 ++ old_deplibs="$old_deplibs $arg"
1.48210 ++ continue
1.48211 ++ ;;
1.48212 ++
1.48213 ++ *.la)
1.48214 ++ # A libtool-controlled library.
1.48215 ++
1.48216 ++ if test "$prev" = dlfiles; then
1.48217 ++ # This library was specified with -dlopen.
1.48218 ++ dlfiles="$dlfiles $arg"
1.48219 ++ prev=
1.48220 ++ elif test "$prev" = dlprefiles; then
1.48221 ++ # The library was specified with -dlpreopen.
1.48222 ++ dlprefiles="$dlprefiles $arg"
1.48223 ++ prev=
1.48224 ++ else
1.48225 ++ deplibs="$deplibs $arg"
1.48226 ++ fi
1.48227 ++ continue
1.48228 ++ ;;
1.48229 ++
1.48230 ++ # Some other compiler argument.
1.48231 ++ *)
1.48232 ++ # Unknown arguments in both finalize_command and compile_command need
1.48233 ++ # to be aesthetically quoted because they are evaled later.
1.48234 ++ func_quote_for_eval "$arg"
1.48235 ++ arg="$func_quote_for_eval_result"
1.48236 ++ ;;
1.48237 ++ esac # arg
1.48238 ++
1.48239 ++ # Now actually substitute the argument into the commands.
1.48240 ++ if test -n "$arg"; then
1.48241 ++ func_append compile_command " $arg"
1.48242 ++ func_append finalize_command " $arg"
1.48243 ++ fi
1.48244 ++ done # argument parsing loop
1.48245 ++
1.48246 ++ test -n "$prev" && \
1.48247 ++ func_fatal_help "the \`$prevarg' option requires an argument"
1.48248 ++
1.48249 ++ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
1.48250 ++ eval arg=\"$export_dynamic_flag_spec\"
1.48251 ++ func_append compile_command " $arg"
1.48252 ++ func_append finalize_command " $arg"
1.48253 ++ fi
1.48254 ++
1.48255 ++ oldlibs=
1.48256 ++ # calculate the name of the file, without its directory
1.48257 ++ func_basename "$output"
1.48258 ++ outputname="$func_basename_result"
1.48259 ++ libobjs_save="$libobjs"
1.48260 ++
1.48261 ++ if test -n "$shlibpath_var"; then
1.48262 ++ # get the directories listed in $shlibpath_var
1.48263 ++ eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
1.48264 ++ else
1.48265 ++ shlib_search_path=
1.48266 ++ fi
1.48267 ++ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
1.48268 ++ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
1.48269 ++
1.48270 ++ func_dirname "$output" "/" ""
1.48271 ++ output_objdir="$func_dirname_result$objdir"
1.48272 ++ # Create the object directory.
1.48273 ++ func_mkdir_p "$output_objdir"
1.48274 ++
1.48275 ++ # Determine the type of output
1.48276 ++ case $output in
1.48277 ++ "")
1.48278 ++ func_fatal_help "you must specify an output file"
1.48279 ++ ;;
1.48280 ++ *.$libext) linkmode=oldlib ;;
1.48281 ++ *.lo | *.$objext) linkmode=obj ;;
1.48282 ++ *.la) linkmode=lib ;;
1.48283 ++ *) linkmode=prog ;; # Anything else should be a program.
1.48284 ++ esac
1.48285 ++
1.48286 ++ specialdeplibs=
1.48287 ++
1.48288 ++ libs=
1.48289 ++ # Find all interdependent deplibs by searching for libraries
1.48290 ++ # that are linked more than once (e.g. -la -lb -la)
1.48291 ++ for deplib in $deplibs; do
1.48292 ++ if $opt_duplicate_deps ; then
1.48293 ++ case "$libs " in
1.48294 ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1.48295 ++ esac
1.48296 ++ fi
1.48297 ++ libs="$libs $deplib"
1.48298 ++ done
1.48299 ++
1.48300 ++ if test "$linkmode" = lib; then
1.48301 ++ libs="$predeps $libs $compiler_lib_search_path $postdeps"
1.48302 ++
1.48303 ++ # Compute libraries that are listed more than once in $predeps
1.48304 ++ # $postdeps and mark them as special (i.e., whose duplicates are
1.48305 ++ # not to be eliminated).
1.48306 ++ pre_post_deps=
1.48307 ++ if $opt_duplicate_compiler_generated_deps; then
1.48308 ++ for pre_post_dep in $predeps $postdeps; do
1.48309 ++ case "$pre_post_deps " in
1.48310 ++ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
1.48311 ++ esac
1.48312 ++ pre_post_deps="$pre_post_deps $pre_post_dep"
1.48313 ++ done
1.48314 ++ fi
1.48315 ++ pre_post_deps=
1.48316 ++ fi
1.48317 ++
1.48318 ++ deplibs=
1.48319 ++ newdependency_libs=
1.48320 ++ newlib_search_path=
1.48321 ++ need_relink=no # whether we're linking any uninstalled libtool libraries
1.48322 ++ notinst_deplibs= # not-installed libtool libraries
1.48323 ++ notinst_path= # paths that contain not-installed libtool libraries
1.48324 ++
1.48325 ++ case $linkmode in
1.48326 ++ lib)
1.48327 ++ passes="conv dlpreopen link"
1.48328 ++ for file in $dlfiles $dlprefiles; do
1.48329 ++ case $file in
1.48330 ++ *.la) ;;
1.48331 ++ *)
1.48332 ++ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
1.48333 ++ ;;
1.48334 ++ esac
1.48335 ++ done
1.48336 ++ ;;
1.48337 ++ prog)
1.48338 ++ compile_deplibs=
1.48339 ++ finalize_deplibs=
1.48340 ++ alldeplibs=no
1.48341 ++ newdlfiles=
1.48342 ++ newdlprefiles=
1.48343 ++ passes="conv scan dlopen dlpreopen link"
1.48344 ++ ;;
1.48345 ++ *) passes="conv"
1.48346 ++ ;;
1.48347 ++ esac
1.48348 ++
1.48349 ++ for pass in $passes; do
1.48350 ++ # The preopen pass in lib mode reverses $deplibs; put it back here
1.48351 ++ # so that -L comes before libs that need it for instance...
1.48352 ++ if test "$linkmode,$pass" = "lib,link"; then
1.48353 ++ ## FIXME: Find the place where the list is rebuilt in the wrong
1.48354 ++ ## order, and fix it there properly
1.48355 ++ tmp_deplibs=
1.48356 ++ for deplib in $deplibs; do
1.48357 ++ tmp_deplibs="$deplib $tmp_deplibs"
1.48358 ++ done
1.48359 ++ deplibs="$tmp_deplibs"
1.48360 ++ fi
1.48361 ++
1.48362 ++ if test "$linkmode,$pass" = "lib,link" ||
1.48363 ++ test "$linkmode,$pass" = "prog,scan"; then
1.48364 ++ libs="$deplibs"
1.48365 ++ deplibs=
1.48366 ++ fi
1.48367 ++ if test "$linkmode" = prog; then
1.48368 ++ case $pass in
1.48369 ++ dlopen) libs="$dlfiles" ;;
1.48370 ++ dlpreopen) libs="$dlprefiles" ;;
1.48371 ++ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
1.48372 ++ esac
1.48373 ++ fi
1.48374 ++ if test "$linkmode,$pass" = "lib,dlpreopen"; then
1.48375 ++ # Collect and forward deplibs of preopened libtool libs
1.48376 ++ for lib in $dlprefiles; do
1.48377 ++ # Ignore non-libtool-libs
1.48378 ++ dependency_libs=
1.48379 ++ case $lib in
1.48380 ++ *.la) func_source "$lib" ;;
1.48381 ++ esac
1.48382 ++
1.48383 ++ # Collect preopened libtool deplibs, except any this library
1.48384 ++ # has declared as weak libs
1.48385 ++ for deplib in $dependency_libs; do
1.48386 ++ deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
1.48387 ++ case " $weak_libs " in
1.48388 ++ *" $deplib_base "*) ;;
1.48389 ++ *) deplibs="$deplibs $deplib" ;;
1.48390 ++ esac
1.48391 ++ done
1.48392 ++ done
1.48393 ++ libs="$dlprefiles"
1.48394 ++ fi
1.48395 ++ if test "$pass" = dlopen; then
1.48396 ++ # Collect dlpreopened libraries
1.48397 ++ save_deplibs="$deplibs"
1.48398 ++ deplibs=
1.48399 ++ fi
1.48400 ++
1.48401 ++ for deplib in $libs; do
1.48402 ++ lib=
1.48403 ++ found=no
1.48404 ++ case $deplib in
1.48405 ++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
1.48406 ++ if test "$linkmode,$pass" = "prog,link"; then
1.48407 ++ compile_deplibs="$deplib $compile_deplibs"
1.48408 ++ finalize_deplibs="$deplib $finalize_deplibs"
1.48409 ++ else
1.48410 ++ compiler_flags="$compiler_flags $deplib"
1.48411 ++ if test "$linkmode" = lib ; then
1.48412 ++ case "$new_inherited_linker_flags " in
1.48413 ++ *" $deplib "*) ;;
1.48414 ++ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
1.48415 ++ esac
1.48416 ++ fi
1.48417 ++ fi
1.48418 ++ continue
1.48419 ++ ;;
1.48420 ++ -l*)
1.48421 ++ if test "$linkmode" != lib && test "$linkmode" != prog; then
1.48422 ++ func_warning "\`-l' is ignored for archives/objects"
1.48423 ++ continue
1.48424 ++ fi
1.48425 ++ func_stripname '-l' '' "$deplib"
1.48426 ++ name=$func_stripname_result
1.48427 ++ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
1.48428 ++ for search_ext in .la $std_shrext .so .a; do
1.48429 ++ # Search the libtool library
1.48430 ++ lib="$searchdir/lib${name}${search_ext}"
1.48431 ++ if test -f "$lib"; then
1.48432 ++ if test "$search_ext" = ".la"; then
1.48433 ++ found=yes
1.48434 ++ else
1.48435 ++ found=no
1.48436 ++ fi
1.48437 ++ break 2
1.48438 ++ fi
1.48439 ++ done
1.48440 ++ done
1.48441 ++ if test "$found" != yes; then
1.48442 ++ # deplib doesn't seem to be a libtool library
1.48443 ++ if test "$linkmode,$pass" = "prog,link"; then
1.48444 ++ compile_deplibs="$deplib $compile_deplibs"
1.48445 ++ finalize_deplibs="$deplib $finalize_deplibs"
1.48446 ++ else
1.48447 ++ deplibs="$deplib $deplibs"
1.48448 ++ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
1.48449 ++ fi
1.48450 ++ continue
1.48451 ++ else # deplib is a libtool library
1.48452 ++ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
1.48453 ++ # We need to do some special things here, and not later.
1.48454 ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
1.48455 ++ case " $predeps $postdeps " in
1.48456 ++ *" $deplib "*)
1.48457 ++ if func_lalib_p "$lib"; then
1.48458 ++ library_names=
1.48459 ++ old_library=
1.48460 ++ func_source "$lib"
1.48461 ++ for l in $old_library $library_names; do
1.48462 ++ ll="$l"
1.48463 ++ done
1.48464 ++ if test "X$ll" = "X$old_library" ; then # only static version available
1.48465 ++ found=no
1.48466 ++ func_dirname "$lib" "" "."
1.48467 ++ ladir="$func_dirname_result"
1.48468 ++ lib=$ladir/$old_library
1.48469 ++ if test "$linkmode,$pass" = "prog,link"; then
1.48470 ++ compile_deplibs="$deplib $compile_deplibs"
1.48471 ++ finalize_deplibs="$deplib $finalize_deplibs"
1.48472 ++ else
1.48473 ++ deplibs="$deplib $deplibs"
1.48474 ++ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
1.48475 ++ fi
1.48476 ++ continue
1.48477 ++ fi
1.48478 ++ fi
1.48479 ++ ;;
1.48480 ++ *) ;;
1.48481 ++ esac
1.48482 ++ fi
1.48483 ++ fi
1.48484 ++ ;; # -l
1.48485 ++ *.ltframework)
1.48486 ++ if test "$linkmode,$pass" = "prog,link"; then
1.48487 ++ compile_deplibs="$deplib $compile_deplibs"
1.48488 ++ finalize_deplibs="$deplib $finalize_deplibs"
1.48489 ++ else
1.48490 ++ deplibs="$deplib $deplibs"
1.48491 ++ if test "$linkmode" = lib ; then
1.48492 ++ case "$new_inherited_linker_flags " in
1.48493 ++ *" $deplib "*) ;;
1.48494 ++ * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
1.48495 ++ esac
1.48496 ++ fi
1.48497 ++ fi
1.48498 ++ continue
1.48499 ++ ;;
1.48500 ++ -L*)
1.48501 ++ case $linkmode in
1.48502 ++ lib)
1.48503 ++ deplibs="$deplib $deplibs"
1.48504 ++ test "$pass" = conv && continue
1.48505 ++ newdependency_libs="$deplib $newdependency_libs"
1.48506 ++ func_stripname '-L' '' "$deplib"
1.48507 ++ newlib_search_path="$newlib_search_path $func_stripname_result"
1.48508 ++ ;;
1.48509 ++ prog)
1.48510 ++ if test "$pass" = conv; then
1.48511 ++ deplibs="$deplib $deplibs"
1.48512 ++ continue
1.48513 ++ fi
1.48514 ++ if test "$pass" = scan; then
1.48515 ++ deplibs="$deplib $deplibs"
1.48516 ++ else
1.48517 ++ compile_deplibs="$deplib $compile_deplibs"
1.48518 ++ finalize_deplibs="$deplib $finalize_deplibs"
1.48519 ++ fi
1.48520 ++ func_stripname '-L' '' "$deplib"
1.48521 ++ newlib_search_path="$newlib_search_path $func_stripname_result"
1.48522 ++ ;;
1.48523 ++ *)
1.48524 ++ func_warning "\`-L' is ignored for archives/objects"
1.48525 ++ ;;
1.48526 ++ esac # linkmode
1.48527 ++ continue
1.48528 ++ ;; # -L
1.48529 ++ -R*)
1.48530 ++ if test "$pass" = link; then
1.48531 ++ func_stripname '-R' '' "$deplib"
1.48532 ++ dir=$func_stripname_result
1.48533 ++ # Make sure the xrpath contains only unique directories.
1.48534 ++ case "$xrpath " in
1.48535 ++ *" $dir "*) ;;
1.48536 ++ *) xrpath="$xrpath $dir" ;;
1.48537 ++ esac
1.48538 ++ fi
1.48539 ++ deplibs="$deplib $deplibs"
1.48540 ++ continue
1.48541 ++ ;;
1.48542 ++ *.la) lib="$deplib" ;;
1.48543 ++ *.$libext)
1.48544 ++ if test "$pass" = conv; then
1.48545 ++ deplibs="$deplib $deplibs"
1.48546 ++ continue
1.48547 ++ fi
1.48548 ++ case $linkmode in
1.48549 ++ lib)
1.48550 ++ # Linking convenience modules into shared libraries is allowed,
1.48551 ++ # but linking other static libraries is non-portable.
1.48552 ++ case " $dlpreconveniencelibs " in
1.48553 ++ *" $deplib "*) ;;
1.48554 ++ *)
1.48555 ++ valid_a_lib=no
1.48556 ++ case $deplibs_check_method in
1.48557 ++ match_pattern*)
1.48558 ++ set dummy $deplibs_check_method; shift
1.48559 ++ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
1.48560 ++ if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
1.48561 ++ | $EGREP "$match_pattern_regex" > /dev/null; then
1.48562 ++ valid_a_lib=yes
1.48563 ++ fi
1.48564 ++ ;;
1.48565 ++ pass_all)
1.48566 ++ valid_a_lib=yes
1.48567 ++ ;;
1.48568 ++ esac
1.48569 ++ if test "$valid_a_lib" != yes; then
1.48570 ++ $ECHO
1.48571 ++ $ECHO "*** Warning: Trying to link with static lib archive $deplib."
1.48572 ++ $ECHO "*** I have the capability to make that library automatically link in when"
1.48573 ++ $ECHO "*** you link to this library. But I can only do this if you have a"
1.48574 ++ $ECHO "*** shared version of the library, which you do not appear to have"
1.48575 ++ $ECHO "*** because the file extensions .$libext of this argument makes me believe"
1.48576 ++ $ECHO "*** that it is just a static archive that I should not use here."
1.48577 ++ else
1.48578 ++ $ECHO
1.48579 ++ $ECHO "*** Warning: Linking the shared library $output against the"
1.48580 ++ $ECHO "*** static library $deplib is not portable!"
1.48581 ++ deplibs="$deplib $deplibs"
1.48582 ++ fi
1.48583 ++ ;;
1.48584 ++ esac
1.48585 ++ continue
1.48586 ++ ;;
1.48587 ++ prog)
1.48588 ++ if test "$pass" != link; then
1.48589 ++ deplibs="$deplib $deplibs"
1.48590 ++ else
1.48591 ++ compile_deplibs="$deplib $compile_deplibs"
1.48592 ++ finalize_deplibs="$deplib $finalize_deplibs"
1.48593 ++ fi
1.48594 ++ continue
1.48595 ++ ;;
1.48596 ++ esac # linkmode
1.48597 ++ ;; # *.$libext
1.48598 ++ *.lo | *.$objext)
1.48599 ++ if test "$pass" = conv; then
1.48600 ++ deplibs="$deplib $deplibs"
1.48601 ++ elif test "$linkmode" = prog; then
1.48602 ++ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
1.48603 ++ # If there is no dlopen support or we're linking statically,
1.48604 ++ # we need to preload.
1.48605 ++ newdlprefiles="$newdlprefiles $deplib"
1.48606 ++ compile_deplibs="$deplib $compile_deplibs"
1.48607 ++ finalize_deplibs="$deplib $finalize_deplibs"
1.48608 ++ else
1.48609 ++ newdlfiles="$newdlfiles $deplib"
1.48610 ++ fi
1.48611 ++ fi
1.48612 ++ continue
1.48613 ++ ;;
1.48614 ++ %DEPLIBS%)
1.48615 ++ alldeplibs=yes
1.48616 ++ continue
1.48617 ++ ;;
1.48618 ++ esac # case $deplib
1.48619 ++
1.48620 ++ if test "$found" = yes || test -f "$lib"; then :
1.48621 ++ else
1.48622 ++ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
1.48623 ++ fi
1.48624 ++
1.48625 ++ # Check to see that this really is a libtool archive.
1.48626 ++ func_lalib_unsafe_p "$lib" \
1.48627 ++ || func_fatal_error "\`$lib' is not a valid libtool archive"
1.48628 ++
1.48629 ++ func_dirname "$lib" "" "."
1.48630 ++ ladir="$func_dirname_result"
1.48631 ++
1.48632 ++ dlname=
1.48633 ++ dlopen=
1.48634 ++ dlpreopen=
1.48635 ++ libdir=
1.48636 ++ library_names=
1.48637 ++ old_library=
1.48638 ++ inherited_linker_flags=
1.48639 ++ # If the library was installed with an old release of libtool,
1.48640 ++ # it will not redefine variables installed, or shouldnotlink
1.48641 ++ installed=yes
1.48642 ++ shouldnotlink=no
1.48643 ++ avoidtemprpath=
1.48644 ++
1.48645 ++
1.48646 ++ # Read the .la file
1.48647 ++ func_source "$lib"
1.48648 ++
1.48649 ++ # Convert "-framework foo" to "foo.ltframework"
1.48650 ++ if test -n "$inherited_linker_flags"; then
1.48651 ++ tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
1.48652 ++ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
1.48653 ++ case " $new_inherited_linker_flags " in
1.48654 ++ *" $tmp_inherited_linker_flag "*) ;;
1.48655 ++ *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
1.48656 ++ esac
1.48657 ++ done
1.48658 ++ fi
1.48659 ++ dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
1.48660 ++ if test "$linkmode,$pass" = "prog,link"; then
1.48661 ++ compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
1.48662 ++ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
1.48663 ++ else
1.48664 ++ compiler_flags="$compiler_flags $inherited_linker_flags"
1.48665 ++ fi
1.48666 ++ if test "$linkmode,$pass" = "lib,link" ||
1.48667 ++ test "$linkmode,$pass" = "prog,scan" ||
1.48668 ++ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
1.48669 ++ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
1.48670 ++ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
1.48671 ++ fi
1.48672 ++
1.48673 ++ if test "$pass" = conv; then
1.48674 ++ # Only check for convenience libraries
1.48675 ++ deplibs="$lib $deplibs"
1.48676 ++ if test -z "$libdir"; then
1.48677 ++ if test -z "$old_library"; then
1.48678 ++ func_fatal_error "cannot find name of link library for \`$lib'"
1.48679 ++ fi
1.48680 ++ # It is a libtool convenience library, so add in its objects.
1.48681 ++ convenience="$convenience $ladir/$objdir/$old_library"
1.48682 ++ old_convenience="$old_convenience $ladir/$objdir/$old_library"
1.48683 ++ elif test "$linkmode" != prog && test "$linkmode" != lib; then
1.48684 ++ func_fatal_error "\`$lib' is not a convenience library"
1.48685 ++ fi
1.48686 ++ tmp_libs=
1.48687 ++ for deplib in $dependency_libs; do
1.48688 ++ deplibs="$deplib $deplibs"
1.48689 ++ if $opt_duplicate_deps ; then
1.48690 ++ case "$tmp_libs " in
1.48691 ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1.48692 ++ esac
1.48693 ++ fi
1.48694 ++ tmp_libs="$tmp_libs $deplib"
1.48695 ++ done
1.48696 ++ continue
1.48697 ++ fi # $pass = conv
1.48698 ++
1.48699 ++
1.48700 ++ # Get the name of the library we link against.
1.48701 ++ linklib=
1.48702 ++ for l in $old_library $library_names; do
1.48703 ++ linklib="$l"
1.48704 ++ done
1.48705 ++ if test -z "$linklib"; then
1.48706 ++ func_fatal_error "cannot find name of link library for \`$lib'"
1.48707 ++ fi
1.48708 ++
1.48709 ++ # This library was specified with -dlopen.
1.48710 ++ if test "$pass" = dlopen; then
1.48711 ++ if test -z "$libdir"; then
1.48712 ++ func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
1.48713 ++ fi
1.48714 ++ if test -z "$dlname" ||
1.48715 ++ test "$dlopen_support" != yes ||
1.48716 ++ test "$build_libtool_libs" = no; then
1.48717 ++ # If there is no dlname, no dlopen support or we're linking
1.48718 ++ # statically, we need to preload. We also need to preload any
1.48719 ++ # dependent libraries so libltdl's deplib preloader doesn't
1.48720 ++ # bomb out in the load deplibs phase.
1.48721 ++ dlprefiles="$dlprefiles $lib $dependency_libs"
1.48722 ++ else
1.48723 ++ newdlfiles="$newdlfiles $lib"
1.48724 ++ fi
1.48725 ++ continue
1.48726 ++ fi # $pass = dlopen
1.48727 ++
1.48728 ++ # We need an absolute path.
1.48729 ++ case $ladir in
1.48730 ++ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
1.48731 ++ *)
1.48732 ++ abs_ladir=`cd "$ladir" && pwd`
1.48733 ++ if test -z "$abs_ladir"; then
1.48734 ++ func_warning "cannot determine absolute directory name of \`$ladir'"
1.48735 ++ func_warning "passing it literally to the linker, although it might fail"
1.48736 ++ abs_ladir="$ladir"
1.48737 ++ fi
1.48738 ++ ;;
1.48739 ++ esac
1.48740 ++ func_basename "$lib"
1.48741 ++ laname="$func_basename_result"
1.48742 ++
1.48743 ++ # Find the relevant object directory and library name.
1.48744 ++ if test "X$installed" = Xyes; then
1.48745 ++ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
1.48746 ++ func_warning "library \`$lib' was moved."
1.48747 ++ dir="$ladir"
1.48748 ++ absdir="$abs_ladir"
1.48749 ++ libdir="$abs_ladir"
1.48750 ++ else
1.48751 ++ dir="$libdir"
1.48752 ++ absdir="$libdir"
1.48753 ++ fi
1.48754 ++ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
1.48755 ++ else
1.48756 ++ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
1.48757 ++ dir="$ladir"
1.48758 ++ absdir="$abs_ladir"
1.48759 ++ # Remove this search path later
1.48760 ++ notinst_path="$notinst_path $abs_ladir"
1.48761 ++ else
1.48762 ++ dir="$ladir/$objdir"
1.48763 ++ absdir="$abs_ladir/$objdir"
1.48764 ++ # Remove this search path later
1.48765 ++ notinst_path="$notinst_path $abs_ladir"
1.48766 ++ fi
1.48767 ++ fi # $installed = yes
1.48768 ++ func_stripname 'lib' '.la' "$laname"
1.48769 ++ name=$func_stripname_result
1.48770 ++
1.48771 ++ # This library was specified with -dlpreopen.
1.48772 ++ if test "$pass" = dlpreopen; then
1.48773 ++ if test -z "$libdir" && test "$linkmode" = prog; then
1.48774 ++ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
1.48775 ++ fi
1.48776 ++ # Prefer using a static library (so that no silly _DYNAMIC symbols
1.48777 ++ # are required to link).
1.48778 ++ if test -n "$old_library"; then
1.48779 ++ newdlprefiles="$newdlprefiles $dir/$old_library"
1.48780 ++ # Keep a list of preopened convenience libraries to check
1.48781 ++ # that they are being used correctly in the link pass.
1.48782 ++ test -z "$libdir" && \
1.48783 ++ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
1.48784 ++ # Otherwise, use the dlname, so that lt_dlopen finds it.
1.48785 ++ elif test -n "$dlname"; then
1.48786 ++ newdlprefiles="$newdlprefiles $dir/$dlname"
1.48787 ++ else
1.48788 ++ newdlprefiles="$newdlprefiles $dir/$linklib"
1.48789 ++ fi
1.48790 ++ fi # $pass = dlpreopen
1.48791 ++
1.48792 ++ if test -z "$libdir"; then
1.48793 ++ # Link the convenience library
1.48794 ++ if test "$linkmode" = lib; then
1.48795 ++ deplibs="$dir/$old_library $deplibs"
1.48796 ++ elif test "$linkmode,$pass" = "prog,link"; then
1.48797 ++ compile_deplibs="$dir/$old_library $compile_deplibs"
1.48798 ++ finalize_deplibs="$dir/$old_library $finalize_deplibs"
1.48799 ++ else
1.48800 ++ deplibs="$lib $deplibs" # used for prog,scan pass
1.48801 ++ fi
1.48802 ++ continue
1.48803 ++ fi
1.48804 ++
1.48805 ++
1.48806 ++ if test "$linkmode" = prog && test "$pass" != link; then
1.48807 ++ newlib_search_path="$newlib_search_path $ladir"
1.48808 ++ deplibs="$lib $deplibs"
1.48809 ++
1.48810 ++ linkalldeplibs=no
1.48811 ++ if test "$link_all_deplibs" != no || test -z "$library_names" ||
1.48812 ++ test "$build_libtool_libs" = no; then
1.48813 ++ linkalldeplibs=yes
1.48814 ++ fi
1.48815 ++
1.48816 ++ tmp_libs=
1.48817 ++ for deplib in $dependency_libs; do
1.48818 ++ case $deplib in
1.48819 ++ -L*) func_stripname '-L' '' "$deplib"
1.48820 ++ newlib_search_path="$newlib_search_path $func_stripname_result"
1.48821 ++ ;;
1.48822 ++ esac
1.48823 ++ # Need to link against all dependency_libs?
1.48824 ++ if test "$linkalldeplibs" = yes; then
1.48825 ++ deplibs="$deplib $deplibs"
1.48826 ++ else
1.48827 ++ # Need to hardcode shared library paths
1.48828 ++ # or/and link against static libraries
1.48829 ++ newdependency_libs="$deplib $newdependency_libs"
1.48830 ++ fi
1.48831 ++ if $opt_duplicate_deps ; then
1.48832 ++ case "$tmp_libs " in
1.48833 ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1.48834 ++ esac
1.48835 ++ fi
1.48836 ++ tmp_libs="$tmp_libs $deplib"
1.48837 ++ done # for deplib
1.48838 ++ continue
1.48839 ++ fi # $linkmode = prog...
1.48840 ++
1.48841 ++ if test "$linkmode,$pass" = "prog,link"; then
1.48842 ++ if test -n "$library_names" &&
1.48843 ++ { { test "$prefer_static_libs" = no ||
1.48844 ++ test "$prefer_static_libs,$installed" = "built,yes"; } ||
1.48845 ++ test -z "$old_library"; }; then
1.48846 ++ # We need to hardcode the library path
1.48847 ++ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
1.48848 ++ # Make sure the rpath contains only unique directories.
1.48849 ++ case "$temp_rpath:" in
1.48850 ++ *"$absdir:"*) ;;
1.48851 ++ *) temp_rpath="$temp_rpath$absdir:" ;;
1.48852 ++ esac
1.48853 ++ fi
1.48854 ++
1.48855 ++ # Hardcode the library path.
1.48856 ++ # Skip directories that are in the system default run-time
1.48857 ++ # search path.
1.48858 ++ case " $sys_lib_dlsearch_path " in
1.48859 ++ *" $absdir "*) ;;
1.48860 ++ *)
1.48861 ++ case "$compile_rpath " in
1.48862 ++ *" $absdir "*) ;;
1.48863 ++ *) compile_rpath="$compile_rpath $absdir"
1.48864 ++ esac
1.48865 ++ ;;
1.48866 ++ esac
1.48867 ++ case " $sys_lib_dlsearch_path " in
1.48868 ++ *" $libdir "*) ;;
1.48869 ++ *)
1.48870 ++ case "$finalize_rpath " in
1.48871 ++ *" $libdir "*) ;;
1.48872 ++ *) finalize_rpath="$finalize_rpath $libdir"
1.48873 ++ esac
1.48874 ++ ;;
1.48875 ++ esac
1.48876 ++ fi # $linkmode,$pass = prog,link...
1.48877 ++
1.48878 ++ if test "$alldeplibs" = yes &&
1.48879 ++ { test "$deplibs_check_method" = pass_all ||
1.48880 ++ { test "$build_libtool_libs" = yes &&
1.48881 ++ test -n "$library_names"; }; }; then
1.48882 ++ # We only need to search for static libraries
1.48883 ++ continue
1.48884 ++ fi
1.48885 ++ fi
1.48886 ++
1.48887 ++ link_static=no # Whether the deplib will be linked statically
1.48888 ++ use_static_libs=$prefer_static_libs
1.48889 ++ if test "$use_static_libs" = built && test "$installed" = yes; then
1.48890 ++ use_static_libs=no
1.48891 ++ fi
1.48892 ++ if test -n "$library_names" &&
1.48893 ++ { test "$use_static_libs" = no || test -z "$old_library"; }; then
1.48894 ++ case $host in
1.48895 ++ *cygwin* | *mingw*)
1.48896 ++ # No point in relinking DLLs because paths are not encoded
1.48897 ++ notinst_deplibs="$notinst_deplibs $lib"
1.48898 ++ need_relink=no
1.48899 ++ ;;
1.48900 ++ *)
1.48901 ++ if test "$installed" = no; then
1.48902 ++ notinst_deplibs="$notinst_deplibs $lib"
1.48903 ++ need_relink=yes
1.48904 ++ fi
1.48905 ++ ;;
1.48906 ++ esac
1.48907 ++ # This is a shared library
1.48908 ++
1.48909 ++ # Warn about portability, can't link against -module's on some
1.48910 ++ # systems (darwin). Don't bleat about dlopened modules though!
1.48911 ++ dlopenmodule=""
1.48912 ++ for dlpremoduletest in $dlprefiles; do
1.48913 ++ if test "X$dlpremoduletest" = "X$lib"; then
1.48914 ++ dlopenmodule="$dlpremoduletest"
1.48915 ++ break
1.48916 ++ fi
1.48917 ++ done
1.48918 ++ if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
1.48919 ++ $ECHO
1.48920 ++ if test "$linkmode" = prog; then
1.48921 ++ $ECHO "*** Warning: Linking the executable $output against the loadable module"
1.48922 ++ else
1.48923 ++ $ECHO "*** Warning: Linking the shared library $output against the loadable module"
1.48924 ++ fi
1.48925 ++ $ECHO "*** $linklib is not portable!"
1.48926 ++ fi
1.48927 ++ if test "$linkmode" = lib &&
1.48928 ++ test "$hardcode_into_libs" = yes; then
1.48929 ++ # Hardcode the library path.
1.48930 ++ # Skip directories that are in the system default run-time
1.48931 ++ # search path.
1.48932 ++ case " $sys_lib_dlsearch_path " in
1.48933 ++ *" $absdir "*) ;;
1.48934 ++ *)
1.48935 ++ case "$compile_rpath " in
1.48936 ++ *" $absdir "*) ;;
1.48937 ++ *) compile_rpath="$compile_rpath $absdir"
1.48938 ++ esac
1.48939 ++ ;;
1.48940 ++ esac
1.48941 ++ case " $sys_lib_dlsearch_path " in
1.48942 ++ *" $libdir "*) ;;
1.48943 ++ *)
1.48944 ++ case "$finalize_rpath " in
1.48945 ++ *" $libdir "*) ;;
1.48946 ++ *) finalize_rpath="$finalize_rpath $libdir"
1.48947 ++ esac
1.48948 ++ ;;
1.48949 ++ esac
1.48950 ++ fi
1.48951 ++
1.48952 ++ if test -n "$old_archive_from_expsyms_cmds"; then
1.48953 ++ # figure out the soname
1.48954 ++ set dummy $library_names
1.48955 ++ shift
1.48956 ++ realname="$1"
1.48957 ++ shift
1.48958 ++ libname=`eval "\\$ECHO \"$libname_spec\""`
1.48959 ++ # use dlname if we got it. it's perfectly good, no?
1.48960 ++ if test -n "$dlname"; then
1.48961 ++ soname="$dlname"
1.48962 ++ elif test -n "$soname_spec"; then
1.48963 ++ # bleh windows
1.48964 ++ case $host in
1.48965 ++ *cygwin* | mingw*)
1.48966 ++ major=`expr $current - $age`
1.48967 ++ versuffix="-$major"
1.48968 ++ ;;
1.48969 ++ esac
1.48970 ++ eval soname=\"$soname_spec\"
1.48971 ++ else
1.48972 ++ soname="$realname"
1.48973 ++ fi
1.48974 ++
1.48975 ++ # Make a new name for the extract_expsyms_cmds to use
1.48976 ++ soroot="$soname"
1.48977 ++ func_basename "$soroot"
1.48978 ++ soname="$func_basename_result"
1.48979 ++ func_stripname 'lib' '.dll' "$soname"
1.48980 ++ newlib=libimp-$func_stripname_result.a
1.48981 ++
1.48982 ++ # If the library has no export list, then create one now
1.48983 ++ if test -f "$output_objdir/$soname-def"; then :
1.48984 ++ else
1.48985 ++ func_echo "extracting exported symbol list from \`$soname'"
1.48986 ++ func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
1.48987 ++ fi
1.48988 ++
1.48989 ++ # Create $newlib
1.48990 ++ if test -f "$output_objdir/$newlib"; then :; else
1.48991 ++ func_echo "generating import library for \`$soname'"
1.48992 ++ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
1.48993 ++ fi
1.48994 ++ # make sure the library variables are pointing to the new library
1.48995 ++ dir=$output_objdir
1.48996 ++ linklib=$newlib
1.48997 ++ fi # test -n "$old_archive_from_expsyms_cmds"
1.48998 ++
1.48999 ++ if test "$linkmode" = prog || test "$mode" != relink; then
1.49000 ++ add_shlibpath=
1.49001 ++ add_dir=
1.49002 ++ add=
1.49003 ++ lib_linked=yes
1.49004 ++ case $hardcode_action in
1.49005 ++ immediate | unsupported)
1.49006 ++ if test "$hardcode_direct" = no; then
1.49007 ++ add="$dir/$linklib"
1.49008 ++ case $host in
1.49009 ++ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
1.49010 ++ *-*-sysv4*uw2*) add_dir="-L$dir" ;;
1.49011 ++ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
1.49012 ++ *-*-unixware7*) add_dir="-L$dir" ;;
1.49013 ++ *-*-darwin* )
1.49014 ++ # if the lib is a (non-dlopened) module then we can not
1.49015 ++ # link against it, someone is ignoring the earlier warnings
1.49016 ++ if /usr/bin/file -L $add 2> /dev/null |
1.49017 ++ $GREP ": [^:]* bundle" >/dev/null ; then
1.49018 ++ if test "X$dlopenmodule" != "X$lib"; then
1.49019 ++ $ECHO "*** Warning: lib $linklib is a module, not a shared library"
1.49020 ++ if test -z "$old_library" ; then
1.49021 ++ $ECHO
1.49022 ++ $ECHO "*** And there doesn't seem to be a static archive available"
1.49023 ++ $ECHO "*** The link will probably fail, sorry"
1.49024 ++ else
1.49025 ++ add="$dir/$old_library"
1.49026 ++ fi
1.49027 ++ elif test -n "$old_library"; then
1.49028 ++ add="$dir/$old_library"
1.49029 ++ fi
1.49030 ++ fi
1.49031 ++ esac
1.49032 ++ elif test "$hardcode_minus_L" = no; then
1.49033 ++ case $host in
1.49034 ++ *-*-sunos*) add_shlibpath="$dir" ;;
1.49035 ++ esac
1.49036 ++ add_dir="-L$dir"
1.49037 ++ add="-l$name"
1.49038 ++ elif test "$hardcode_shlibpath_var" = no; then
1.49039 ++ add_shlibpath="$dir"
1.49040 ++ add="-l$name"
1.49041 ++ else
1.49042 ++ lib_linked=no
1.49043 ++ fi
1.49044 ++ ;;
1.49045 ++ relink)
1.49046 ++ if test "$hardcode_direct" = yes &&
1.49047 ++ test "$hardcode_direct_absolute" = no; then
1.49048 ++ add="$dir/$linklib"
1.49049 ++ elif test "$hardcode_minus_L" = yes; then
1.49050 ++ add_dir="-L$dir"
1.49051 ++ # Try looking first in the location we're being installed to.
1.49052 ++ if test -n "$inst_prefix_dir"; then
1.49053 ++ case $libdir in
1.49054 ++ [\\/]*)
1.49055 ++ add_dir="$add_dir -L$inst_prefix_dir$libdir"
1.49056 ++ ;;
1.49057 ++ esac
1.49058 ++ fi
1.49059 ++ add="-l$name"
1.49060 ++ elif test "$hardcode_shlibpath_var" = yes; then
1.49061 ++ add_shlibpath="$dir"
1.49062 ++ add="-l$name"
1.49063 ++ else
1.49064 ++ lib_linked=no
1.49065 ++ fi
1.49066 ++ ;;
1.49067 ++ *) lib_linked=no ;;
1.49068 ++ esac
1.49069 ++
1.49070 ++ if test "$lib_linked" != yes; then
1.49071 ++ func_fatal_configuration "unsupported hardcode properties"
1.49072 ++ fi
1.49073 ++
1.49074 ++ if test -n "$add_shlibpath"; then
1.49075 ++ case :$compile_shlibpath: in
1.49076 ++ *":$add_shlibpath:"*) ;;
1.49077 ++ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
1.49078 ++ esac
1.49079 ++ fi
1.49080 ++ if test "$linkmode" = prog; then
1.49081 ++ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
1.49082 ++ test -n "$add" && compile_deplibs="$add $compile_deplibs"
1.49083 ++ else
1.49084 ++ test -n "$add_dir" && deplibs="$add_dir $deplibs"
1.49085 ++ test -n "$add" && deplibs="$add $deplibs"
1.49086 ++ if test "$hardcode_direct" != yes &&
1.49087 ++ test "$hardcode_minus_L" != yes &&
1.49088 ++ test "$hardcode_shlibpath_var" = yes; then
1.49089 ++ case :$finalize_shlibpath: in
1.49090 ++ *":$libdir:"*) ;;
1.49091 ++ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
1.49092 ++ esac
1.49093 ++ fi
1.49094 ++ fi
1.49095 ++ fi
1.49096 ++
1.49097 ++ if test "$linkmode" = prog || test "$mode" = relink; then
1.49098 ++ add_shlibpath=
1.49099 ++ add_dir=
1.49100 ++ add=
1.49101 ++ # Finalize command for both is simple: just hardcode it.
1.49102 ++ if test "$hardcode_direct" = yes &&
1.49103 ++ test "$hardcode_direct_absolute" = no; then
1.49104 ++ add="$libdir/$linklib"
1.49105 ++ elif test "$hardcode_minus_L" = yes; then
1.49106 ++ add_dir="-L$libdir"
1.49107 ++ add="-l$name"
1.49108 ++ elif test "$hardcode_shlibpath_var" = yes; then
1.49109 ++ case :$finalize_shlibpath: in
1.49110 ++ *":$libdir:"*) ;;
1.49111 ++ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
1.49112 ++ esac
1.49113 ++ add="-l$name"
1.49114 ++ elif test "$hardcode_automatic" = yes; then
1.49115 ++ if test -n "$inst_prefix_dir" &&
1.49116 ++ test -f "$inst_prefix_dir$libdir/$linklib" ; then
1.49117 ++ add="$inst_prefix_dir$libdir/$linklib"
1.49118 ++ else
1.49119 ++ add="$libdir/$linklib"
1.49120 ++ fi
1.49121 ++ else
1.49122 ++ # We cannot seem to hardcode it, guess we'll fake it.
1.49123 ++ add_dir="-L$libdir"
1.49124 ++ # Try looking first in the location we're being installed to.
1.49125 ++ if test -n "$inst_prefix_dir"; then
1.49126 ++ case $libdir in
1.49127 ++ [\\/]*)
1.49128 ++ add_dir="$add_dir -L$inst_prefix_dir$libdir"
1.49129 ++ ;;
1.49130 ++ esac
1.49131 ++ fi
1.49132 ++ add="-l$name"
1.49133 ++ fi
1.49134 ++
1.49135 ++ if test "$linkmode" = prog; then
1.49136 ++ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
1.49137 ++ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
1.49138 ++ else
1.49139 ++ test -n "$add_dir" && deplibs="$add_dir $deplibs"
1.49140 ++ test -n "$add" && deplibs="$add $deplibs"
1.49141 ++ fi
1.49142 ++ fi
1.49143 ++ elif test "$linkmode" = prog; then
1.49144 ++ # Here we assume that one of hardcode_direct or hardcode_minus_L
1.49145 ++ # is not unsupported. This is valid on all known static and
1.49146 ++ # shared platforms.
1.49147 ++ if test "$hardcode_direct" != unsupported; then
1.49148 ++ test -n "$old_library" && linklib="$old_library"
1.49149 ++ compile_deplibs="$dir/$linklib $compile_deplibs"
1.49150 ++ finalize_deplibs="$dir/$linklib $finalize_deplibs"
1.49151 ++ else
1.49152 ++ compile_deplibs="-l$name -L$dir $compile_deplibs"
1.49153 ++ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
1.49154 ++ fi
1.49155 ++ elif test "$build_libtool_libs" = yes; then
1.49156 ++ # Not a shared library
1.49157 ++ if test "$deplibs_check_method" != pass_all; then
1.49158 ++ # We're trying link a shared library against a static one
1.49159 ++ # but the system doesn't support it.
1.49160 ++
1.49161 ++ # Just print a warning and add the library to dependency_libs so
1.49162 ++ # that the program can be linked against the static library.
1.49163 ++ $ECHO
1.49164 ++ $ECHO "*** Warning: This system can not link to static lib archive $lib."
1.49165 ++ $ECHO "*** I have the capability to make that library automatically link in when"
1.49166 ++ $ECHO "*** you link to this library. But I can only do this if you have a"
1.49167 ++ $ECHO "*** shared version of the library, which you do not appear to have."
1.49168 ++ if test "$module" = yes; then
1.49169 ++ $ECHO "*** But as you try to build a module library, libtool will still create "
1.49170 ++ $ECHO "*** a static module, that should work as long as the dlopening application"
1.49171 ++ $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
1.49172 ++ if test -z "$global_symbol_pipe"; then
1.49173 ++ $ECHO
1.49174 ++ $ECHO "*** However, this would only work if libtool was able to extract symbol"
1.49175 ++ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
1.49176 ++ $ECHO "*** not find such a program. So, this module is probably useless."
1.49177 ++ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
1.49178 ++ fi
1.49179 ++ if test "$build_old_libs" = no; then
1.49180 ++ build_libtool_libs=module
1.49181 ++ build_old_libs=yes
1.49182 ++ else
1.49183 ++ build_libtool_libs=no
1.49184 ++ fi
1.49185 ++ fi
1.49186 ++ else
1.49187 ++ deplibs="$dir/$old_library $deplibs"
1.49188 ++ link_static=yes
1.49189 ++ fi
1.49190 ++ fi # link shared/static library?
1.49191 ++
1.49192 ++ if test "$linkmode" = lib; then
1.49193 ++ if test -n "$dependency_libs" &&
1.49194 ++ { test "$hardcode_into_libs" != yes ||
1.49195 ++ test "$build_old_libs" = yes ||
1.49196 ++ test "$link_static" = yes; }; then
1.49197 ++ # Extract -R from dependency_libs
1.49198 ++ temp_deplibs=
1.49199 ++ for libdir in $dependency_libs; do
1.49200 ++ case $libdir in
1.49201 ++ -R*) func_stripname '-R' '' "$libdir"
1.49202 ++ temp_xrpath=$func_stripname_result
1.49203 ++ case " $xrpath " in
1.49204 ++ *" $temp_xrpath "*) ;;
1.49205 ++ *) xrpath="$xrpath $temp_xrpath";;
1.49206 ++ esac;;
1.49207 ++ *) temp_deplibs="$temp_deplibs $libdir";;
1.49208 ++ esac
1.49209 ++ done
1.49210 ++ dependency_libs="$temp_deplibs"
1.49211 ++ fi
1.49212 ++
1.49213 ++ newlib_search_path="$newlib_search_path $absdir"
1.49214 ++ # Link against this library
1.49215 ++ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
1.49216 ++ # ... and its dependency_libs
1.49217 ++ tmp_libs=
1.49218 ++ for deplib in $dependency_libs; do
1.49219 ++ newdependency_libs="$deplib $newdependency_libs"
1.49220 ++ if $opt_duplicate_deps ; then
1.49221 ++ case "$tmp_libs " in
1.49222 ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1.49223 ++ esac
1.49224 ++ fi
1.49225 ++ tmp_libs="$tmp_libs $deplib"
1.49226 ++ done
1.49227 ++
1.49228 ++ if test "$link_all_deplibs" != no; then
1.49229 ++ # Add the search paths of all dependency libraries
1.49230 ++ for deplib in $dependency_libs; do
1.49231 ++ case $deplib in
1.49232 ++ -L*) path="$deplib" ;;
1.49233 ++ *.la)
1.49234 ++ func_dirname "$deplib" "" "."
1.49235 ++ dir="$func_dirname_result"
1.49236 ++ # We need an absolute path.
1.49237 ++ case $dir in
1.49238 ++ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
1.49239 ++ *)
1.49240 ++ absdir=`cd "$dir" && pwd`
1.49241 ++ if test -z "$absdir"; then
1.49242 ++ func_warning "cannot determine absolute directory name of \`$dir'"
1.49243 ++ absdir="$dir"
1.49244 ++ fi
1.49245 ++ ;;
1.49246 ++ esac
1.49247 ++ if $GREP "^installed=no" $deplib > /dev/null; then
1.49248 ++ case $host in
1.49249 ++ *-*-darwin*)
1.49250 ++ depdepl=
1.49251 ++ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
1.49252 ++ if test -n "$deplibrary_names" ; then
1.49253 ++ for tmp in $deplibrary_names ; do
1.49254 ++ depdepl=$tmp
1.49255 ++ done
1.49256 ++ if test -f "$absdir/$objdir/$depdepl" ; then
1.49257 ++ depdepl="$absdir/$objdir/$depdepl"
1.49258 ++ darwin_install_name=`otool -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
1.49259 ++ darwin_install_name=`$ECHO $darwin_install_name`
1.49260 ++ if test -z "$darwin_install_name"; then
1.49261 ++ darwin_install_name=`otool64 -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
1.49262 ++ darwin_install_name=`$ECHO $darwin_install_name`
1.49263 ++ fi
1.49264 ++ compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
1.49265 ++ linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
1.49266 ++ path=
1.49267 ++ fi
1.49268 ++ fi
1.49269 ++ ;;
1.49270 ++ *)
1.49271 ++ path="-L$absdir/$objdir"
1.49272 ++ ;;
1.49273 ++ esac
1.49274 ++ else
1.49275 ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
1.49276 ++ test -z "$libdir" && \
1.49277 ++ func_fatal_error "\`$deplib' is not a valid libtool archive"
1.49278 ++ test "$absdir" != "$libdir" && \
1.49279 ++ func_warning "\`$deplib' seems to be moved"
1.49280 ++
1.49281 ++ path="-L$absdir"
1.49282 ++ fi
1.49283 ++ ;;
1.49284 ++ esac
1.49285 ++ case " $deplibs " in
1.49286 ++ *" $path "*) ;;
1.49287 ++ *) deplibs="$path $deplibs" ;;
1.49288 ++ esac
1.49289 ++ done
1.49290 ++ fi # link_all_deplibs != no
1.49291 ++ fi # linkmode = lib
1.49292 ++ done # for deplib in $libs
1.49293 ++ dependency_libs="$newdependency_libs"
1.49294 ++ if test "$pass" = dlpreopen; then
1.49295 ++ # Link the dlpreopened libraries before other libraries
1.49296 ++ for deplib in $save_deplibs; do
1.49297 ++ deplibs="$deplib $deplibs"
1.49298 ++ done
1.49299 ++ fi
1.49300 ++ if test "$pass" != dlopen; then
1.49301 ++ if test "$pass" != conv; then
1.49302 ++ # Make sure lib_search_path contains only unique directories.
1.49303 ++ lib_search_path=
1.49304 ++ for dir in $newlib_search_path; do
1.49305 ++ case "$lib_search_path " in
1.49306 ++ *" $dir "*) ;;
1.49307 ++ *) lib_search_path="$lib_search_path $dir" ;;
1.49308 ++ esac
1.49309 ++ done
1.49310 ++ newlib_search_path=
1.49311 ++ fi
1.49312 ++
1.49313 ++ if test "$linkmode,$pass" != "prog,link"; then
1.49314 ++ vars="deplibs"
1.49315 ++ else
1.49316 ++ vars="compile_deplibs finalize_deplibs"
1.49317 ++ fi
1.49318 ++ for var in $vars dependency_libs; do
1.49319 ++ # Add libraries to $var in reverse order
1.49320 ++ eval tmp_libs=\"\$$var\"
1.49321 ++ new_libs=
1.49322 ++ for deplib in $tmp_libs; do
1.49323 ++ # FIXME: Pedantically, this is the right thing to do, so
1.49324 ++ # that some nasty dependency loop isn't accidentally
1.49325 ++ # broken:
1.49326 ++ #new_libs="$deplib $new_libs"
1.49327 ++ # Pragmatically, this seems to cause very few problems in
1.49328 ++ # practice:
1.49329 ++ case $deplib in
1.49330 ++ -L*) new_libs="$deplib $new_libs" ;;
1.49331 ++ -R*) ;;
1.49332 ++ *)
1.49333 ++ # And here is the reason: when a library appears more
1.49334 ++ # than once as an explicit dependence of a library, or
1.49335 ++ # is implicitly linked in more than once by the
1.49336 ++ # compiler, it is considered special, and multiple
1.49337 ++ # occurrences thereof are not removed. Compare this
1.49338 ++ # with having the same library being listed as a
1.49339 ++ # dependency of multiple other libraries: in this case,
1.49340 ++ # we know (pedantically, we assume) the library does not
1.49341 ++ # need to be listed more than once, so we keep only the
1.49342 ++ # last copy. This is not always right, but it is rare
1.49343 ++ # enough that we require users that really mean to play
1.49344 ++ # such unportable linking tricks to link the library
1.49345 ++ # using -Wl,-lname, so that libtool does not consider it
1.49346 ++ # for duplicate removal.
1.49347 ++ case " $specialdeplibs " in
1.49348 ++ *" $deplib "*) new_libs="$deplib $new_libs" ;;
1.49349 ++ *)
1.49350 ++ case " $new_libs " in
1.49351 ++ *" $deplib "*) ;;
1.49352 ++ *) new_libs="$deplib $new_libs" ;;
1.49353 ++ esac
1.49354 ++ ;;
1.49355 ++ esac
1.49356 ++ ;;
1.49357 ++ esac
1.49358 ++ done
1.49359 ++ tmp_libs=
1.49360 ++ for deplib in $new_libs; do
1.49361 ++ case $deplib in
1.49362 ++ -L*)
1.49363 ++ case " $tmp_libs " in
1.49364 ++ *" $deplib "*) ;;
1.49365 ++ *) tmp_libs="$tmp_libs $deplib" ;;
1.49366 ++ esac
1.49367 ++ ;;
1.49368 ++ *) tmp_libs="$tmp_libs $deplib" ;;
1.49369 ++ esac
1.49370 ++ done
1.49371 ++ eval $var=\"$tmp_libs\"
1.49372 ++ done # for var
1.49373 ++ fi
1.49374 ++ # Last step: remove runtime libs from dependency_libs
1.49375 ++ # (they stay in deplibs)
1.49376 ++ tmp_libs=
1.49377 ++ for i in $dependency_libs ; do
1.49378 ++ case " $predeps $postdeps $compiler_lib_search_path " in
1.49379 ++ *" $i "*)
1.49380 ++ i=""
1.49381 ++ ;;
1.49382 ++ esac
1.49383 ++ if test -n "$i" ; then
1.49384 ++ tmp_libs="$tmp_libs $i"
1.49385 ++ fi
1.49386 ++ done
1.49387 ++ dependency_libs=$tmp_libs
1.49388 ++ done # for pass
1.49389 ++ if test "$linkmode" = prog; then
1.49390 ++ dlfiles="$newdlfiles"
1.49391 ++ fi
1.49392 ++ if test "$linkmode" = prog || test "$linkmode" = lib; then
1.49393 ++ dlprefiles="$newdlprefiles"
1.49394 ++ fi
1.49395 ++
1.49396 ++ case $linkmode in
1.49397 ++ oldlib)
1.49398 ++ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
1.49399 ++ func_warning "\`-dlopen' is ignored for archives"
1.49400 ++ fi
1.49401 ++
1.49402 ++ test -n "$deplibs" && \
1.49403 ++ func_warning "\`-l' and \`-L' are ignored for archives"
1.49404 ++
1.49405 ++
1.49406 ++ test -n "$rpath" && \
1.49407 ++ func_warning "\`-rpath' is ignored for archives"
1.49408 ++
1.49409 ++ test -n "$xrpath" && \
1.49410 ++ func_warning "\`-R' is ignored for archives"
1.49411 ++
1.49412 ++ test -n "$vinfo" && \
1.49413 ++ func_warning "\`-version-info/-version-number' is ignored for archives"
1.49414 ++
1.49415 ++ test -n "$release" && \
1.49416 ++ func_warning "\`-release' is ignored for archives"
1.49417 ++
1.49418 ++ test -n "$export_symbols$export_symbols_regex" && \
1.49419 ++ func_warning "\`-export-symbols' is ignored for archives"
1.49420 ++
1.49421 ++ # Now set the variables for building old libraries.
1.49422 ++ build_libtool_libs=no
1.49423 ++ oldlibs="$output"
1.49424 ++ objs="$objs$old_deplibs"
1.49425 ++ ;;
1.49426 ++
1.49427 ++ lib)
1.49428 ++ # Make sure we only generate libraries of the form `libNAME.la'.
1.49429 ++ case $outputname in
1.49430 ++ lib*)
1.49431 ++ func_stripname 'lib' '.la' "$outputname"
1.49432 ++ name=$func_stripname_result
1.49433 ++ eval shared_ext=\"$shrext_cmds\"
1.49434 ++ eval libname=\"$libname_spec\"
1.49435 ++ ;;
1.49436 ++ *)
1.49437 ++ test "$module" = no && \
1.49438 ++ func_fatal_help "libtool library \`$output' must begin with \`lib'"
1.49439 ++
1.49440 ++ if test "$need_lib_prefix" != no; then
1.49441 ++ # Add the "lib" prefix for modules if required
1.49442 ++ func_stripname '' '.la' "$outputname"
1.49443 ++ name=$func_stripname_result
1.49444 ++ eval shared_ext=\"$shrext_cmds\"
1.49445 ++ eval libname=\"$libname_spec\"
1.49446 ++ else
1.49447 ++ func_stripname '' '.la' "$outputname"
1.49448 ++ libname=$func_stripname_result
1.49449 ++ fi
1.49450 ++ ;;
1.49451 ++ esac
1.49452 ++
1.49453 ++ if test -n "$objs"; then
1.49454 ++ if test "$deplibs_check_method" != pass_all; then
1.49455 ++ func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
1.49456 ++ else
1.49457 ++ $ECHO
1.49458 ++ $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
1.49459 ++ $ECHO "*** objects $objs is not portable!"
1.49460 ++ libobjs="$libobjs $objs"
1.49461 ++ fi
1.49462 ++ fi
1.49463 ++
1.49464 ++ test "$dlself" != no && \
1.49465 ++ func_warning "\`-dlopen self' is ignored for libtool libraries"
1.49466 ++
1.49467 ++ set dummy $rpath
1.49468 ++ shift
1.49469 ++ test "$#" -gt 1 && \
1.49470 ++ func_warning "ignoring multiple \`-rpath's for a libtool library"
1.49471 ++
1.49472 ++ install_libdir="$1"
1.49473 ++
1.49474 ++ oldlibs=
1.49475 ++ if test -z "$rpath"; then
1.49476 ++ if test "$build_libtool_libs" = yes; then
1.49477 ++ # Building a libtool convenience library.
1.49478 ++ # Some compilers have problems with a `.al' extension so
1.49479 ++ # convenience libraries should have the same extension an
1.49480 ++ # archive normally would.
1.49481 ++ oldlibs="$output_objdir/$libname.$libext $oldlibs"
1.49482 ++ build_libtool_libs=convenience
1.49483 ++ build_old_libs=yes
1.49484 ++ fi
1.49485 ++
1.49486 ++ test -n "$vinfo" && \
1.49487 ++ func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
1.49488 ++
1.49489 ++ test -n "$release" && \
1.49490 ++ func_warning "\`-release' is ignored for convenience libraries"
1.49491 ++ else
1.49492 ++
1.49493 ++ # Parse the version information argument.
1.49494 ++ save_ifs="$IFS"; IFS=':'
1.49495 ++ set dummy $vinfo 0 0 0
1.49496 ++ shift
1.49497 ++ IFS="$save_ifs"
1.49498 ++
1.49499 ++ test -n "$7" && \
1.49500 ++ func_fatal_help "too many parameters to \`-version-info'"
1.49501 ++
1.49502 ++ # convert absolute version numbers to libtool ages
1.49503 ++ # this retains compatibility with .la files and attempts
1.49504 ++ # to make the code below a bit more comprehensible
1.49505 ++
1.49506 ++ case $vinfo_number in
1.49507 ++ yes)
1.49508 ++ number_major="$1"
1.49509 ++ number_minor="$2"
1.49510 ++ number_revision="$3"
1.49511 ++ #
1.49512 ++ # There are really only two kinds -- those that
1.49513 ++ # use the current revision as the major version
1.49514 ++ # and those that subtract age and use age as
1.49515 ++ # a minor version. But, then there is irix
1.49516 ++ # which has an extra 1 added just for fun
1.49517 ++ #
1.49518 ++ case $version_type in
1.49519 ++ darwin|linux|osf|windows|none)
1.49520 ++ current=`expr $number_major + $number_minor`
1.49521 ++ age="$number_minor"
1.49522 ++ revision="$number_revision"
1.49523 ++ ;;
1.49524 ++ freebsd-aout|freebsd-elf|sunos)
1.49525 ++ current="$number_major"
1.49526 ++ revision="$number_minor"
1.49527 ++ age="0"
1.49528 ++ ;;
1.49529 ++ irix|nonstopux)
1.49530 ++ current=`expr $number_major + $number_minor - 1`
1.49531 ++ age="$number_minor"
1.49532 ++ revision="$number_minor"
1.49533 ++ ;;
1.49534 ++ esac
1.49535 ++ ;;
1.49536 ++ no)
1.49537 ++ current="$1"
1.49538 ++ revision="$2"
1.49539 ++ age="$3"
1.49540 ++ ;;
1.49541 ++ esac
1.49542 ++
1.49543 ++ # Check that each of the things are valid numbers.
1.49544 ++ case $current in
1.49545 ++ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
1.49546 ++ *)
1.49547 ++ func_error "CURRENT \`$current' must be a nonnegative integer"
1.49548 ++ func_fatal_error "\`$vinfo' is not valid version information"
1.49549 ++ ;;
1.49550 ++ esac
1.49551 ++
1.49552 ++ case $revision in
1.49553 ++ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
1.49554 ++ *)
1.49555 ++ func_error "REVISION \`$revision' must be a nonnegative integer"
1.49556 ++ func_fatal_error "\`$vinfo' is not valid version information"
1.49557 ++ ;;
1.49558 ++ esac
1.49559 ++
1.49560 ++ case $age in
1.49561 ++ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
1.49562 ++ *)
1.49563 ++ func_error "AGE \`$age' must be a nonnegative integer"
1.49564 ++ func_fatal_error "\`$vinfo' is not valid version information"
1.49565 ++ ;;
1.49566 ++ esac
1.49567 ++
1.49568 ++ if test "$age" -gt "$current"; then
1.49569 ++ func_error "AGE \`$age' is greater than the current interface number \`$current'"
1.49570 ++ func_fatal_error "\`$vinfo' is not valid version information"
1.49571 ++ fi
1.49572 ++
1.49573 ++ # Calculate the version variables.
1.49574 ++ major=
1.49575 ++ versuffix=
1.49576 ++ verstring=
1.49577 ++ case $version_type in
1.49578 ++ none) ;;
1.49579 ++
1.49580 ++ darwin)
1.49581 ++ # Like Linux, but with the current version available in
1.49582 ++ # verstring for coding it into the library header
1.49583 ++ major=.`expr $current - $age`
1.49584 ++ versuffix="$major.$age.$revision"
1.49585 ++ # Darwin ld doesn't like 0 for these options...
1.49586 ++ minor_current=`expr $current + 1`
1.49587 ++ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
1.49588 ++ ;;
1.49589 ++
1.49590 ++ freebsd-aout)
1.49591 ++ major=".$current"
1.49592 ++ versuffix=".$current.$revision";
1.49593 ++ ;;
1.49594 ++
1.49595 ++ freebsd-elf)
1.49596 ++ major=".$current"
1.49597 ++ versuffix=".$current"
1.49598 ++ ;;
1.49599 ++
1.49600 ++ irix | nonstopux)
1.49601 ++ major=`expr $current - $age + 1`
1.49602 ++
1.49603 ++ case $version_type in
1.49604 ++ nonstopux) verstring_prefix=nonstopux ;;
1.49605 ++ *) verstring_prefix=sgi ;;
1.49606 ++ esac
1.49607 ++ verstring="$verstring_prefix$major.$revision"
1.49608 ++
1.49609 ++ # Add in all the interfaces that we are compatible with.
1.49610 ++ loop=$revision
1.49611 ++ while test "$loop" -ne 0; do
1.49612 ++ iface=`expr $revision - $loop`
1.49613 ++ loop=`expr $loop - 1`
1.49614 ++ verstring="$verstring_prefix$major.$iface:$verstring"
1.49615 ++ done
1.49616 ++
1.49617 ++ # Before this point, $major must not contain `.'.
1.49618 ++ major=.$major
1.49619 ++ versuffix="$major.$revision"
1.49620 ++ ;;
1.49621 ++
1.49622 ++ linux)
1.49623 ++ major=.`expr $current - $age`
1.49624 ++ versuffix="$major.$age.$revision"
1.49625 ++ ;;
1.49626 ++
1.49627 ++ osf)
1.49628 ++ major=.`expr $current - $age`
1.49629 ++ versuffix=".$current.$age.$revision"
1.49630 ++ verstring="$current.$age.$revision"
1.49631 ++
1.49632 ++ # Add in all the interfaces that we are compatible with.
1.49633 ++ loop=$age
1.49634 ++ while test "$loop" -ne 0; do
1.49635 ++ iface=`expr $current - $loop`
1.49636 ++ loop=`expr $loop - 1`
1.49637 ++ verstring="$verstring:${iface}.0"
1.49638 ++ done
1.49639 ++
1.49640 ++ # Make executables depend on our current version.
1.49641 ++ verstring="$verstring:${current}.0"
1.49642 ++ ;;
1.49643 ++
1.49644 ++ qnx)
1.49645 ++ major=".$current"
1.49646 ++ versuffix=".$current"
1.49647 ++ ;;
1.49648 ++
1.49649 ++ sunos)
1.49650 ++ major=".$current"
1.49651 ++ versuffix=".$current.$revision"
1.49652 ++ ;;
1.49653 ++
1.49654 ++ windows)
1.49655 ++ # Use '-' rather than '.', since we only want one
1.49656 ++ # extension on DOS 8.3 filesystems.
1.49657 ++ major=`expr $current - $age`
1.49658 ++ versuffix="-$major"
1.49659 ++ ;;
1.49660 ++
1.49661 ++ *)
1.49662 ++ func_fatal_configuration "unknown library version type \`$version_type'"
1.49663 ++ ;;
1.49664 ++ esac
1.49665 ++
1.49666 ++ # Clear the version info if we defaulted, and they specified a release.
1.49667 ++ if test -z "$vinfo" && test -n "$release"; then
1.49668 ++ major=
1.49669 ++ case $version_type in
1.49670 ++ darwin)
1.49671 ++ # we can't check for "0.0" in archive_cmds due to quoting
1.49672 ++ # problems, so we reset it completely
1.49673 ++ verstring=
1.49674 ++ ;;
1.49675 ++ *)
1.49676 ++ verstring="0.0"
1.49677 ++ ;;
1.49678 ++ esac
1.49679 ++ if test "$need_version" = no; then
1.49680 ++ versuffix=
1.49681 ++ else
1.49682 ++ versuffix=".0.0"
1.49683 ++ fi
1.49684 ++ fi
1.49685 ++
1.49686 ++ # Remove version info from name if versioning should be avoided
1.49687 ++ if test "$avoid_version" = yes && test "$need_version" = no; then
1.49688 ++ major=
1.49689 ++ versuffix=
1.49690 ++ verstring=""
1.49691 ++ fi
1.49692 ++
1.49693 ++ # Check to see if the archive will have undefined symbols.
1.49694 ++ if test "$allow_undefined" = yes; then
1.49695 ++ if test "$allow_undefined_flag" = unsupported; then
1.49696 ++ func_warning "undefined symbols not allowed in $host shared libraries"
1.49697 ++ build_libtool_libs=no
1.49698 ++ build_old_libs=yes
1.49699 ++ fi
1.49700 ++ else
1.49701 ++ # Don't allow undefined symbols.
1.49702 ++ allow_undefined_flag="$no_undefined_flag"
1.49703 ++ fi
1.49704 ++
1.49705 ++ fi
1.49706 ++
1.49707 ++ func_generate_dlsyms "$libname" "$libname" "yes"
1.49708 ++ libobjs="$libobjs $symfileobj"
1.49709 ++ test "X$libobjs" = "X " && libobjs=
1.49710 ++
1.49711 ++ if test "$mode" != relink; then
1.49712 ++ # Remove our outputs, but don't remove object files since they
1.49713 ++ # may have been created when compiling PIC objects.
1.49714 ++ removelist=
1.49715 ++ tempremovelist=`$ECHO "$output_objdir/*"`
1.49716 ++ for p in $tempremovelist; do
1.49717 ++ case $p in
1.49718 ++ *.$objext)
1.49719 ++ ;;
1.49720 ++ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
1.49721 ++ if test "X$precious_files_regex" != "X"; then
1.49722 ++ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
1.49723 ++ then
1.49724 ++ continue
1.49725 ++ fi
1.49726 ++ fi
1.49727 ++ removelist="$removelist $p"
1.49728 ++ ;;
1.49729 ++ *) ;;
1.49730 ++ esac
1.49731 ++ done
1.49732 ++ test -n "$removelist" && \
1.49733 ++ func_show_eval "${RM}r \$removelist"
1.49734 ++ fi
1.49735 ++
1.49736 ++ # Now set the variables for building old libraries.
1.49737 ++ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
1.49738 ++ oldlibs="$oldlibs $output_objdir/$libname.$libext"
1.49739 ++
1.49740 ++ # Transform .lo files to .o files.
1.49741 ++ oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
1.49742 ++ fi
1.49743 ++
1.49744 ++ # Eliminate all temporary directories.
1.49745 ++ #for path in $notinst_path; do
1.49746 ++ # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
1.49747 ++ # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
1.49748 ++ # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
1.49749 ++ #done
1.49750 ++
1.49751 ++ if test -n "$xrpath"; then
1.49752 ++ # If the user specified any rpath flags, then add them.
1.49753 ++ temp_xrpath=
1.49754 ++ for libdir in $xrpath; do
1.49755 ++ temp_xrpath="$temp_xrpath -R$libdir"
1.49756 ++ case "$finalize_rpath " in
1.49757 ++ *" $libdir "*) ;;
1.49758 ++ *) finalize_rpath="$finalize_rpath $libdir" ;;
1.49759 ++ esac
1.49760 ++ done
1.49761 ++ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
1.49762 ++ dependency_libs="$temp_xrpath $dependency_libs"
1.49763 ++ fi
1.49764 ++ fi
1.49765 ++
1.49766 ++ # Make sure dlfiles contains only unique files that won't be dlpreopened
1.49767 ++ old_dlfiles="$dlfiles"
1.49768 ++ dlfiles=
1.49769 ++ for lib in $old_dlfiles; do
1.49770 ++ case " $dlprefiles $dlfiles " in
1.49771 ++ *" $lib "*) ;;
1.49772 ++ *) dlfiles="$dlfiles $lib" ;;
1.49773 ++ esac
1.49774 ++ done
1.49775 ++
1.49776 ++ # Make sure dlprefiles contains only unique files
1.49777 ++ old_dlprefiles="$dlprefiles"
1.49778 ++ dlprefiles=
1.49779 ++ for lib in $old_dlprefiles; do
1.49780 ++ case "$dlprefiles " in
1.49781 ++ *" $lib "*) ;;
1.49782 ++ *) dlprefiles="$dlprefiles $lib" ;;
1.49783 ++ esac
1.49784 ++ done
1.49785 ++
1.49786 ++ if test "$build_libtool_libs" = yes; then
1.49787 ++ if test -n "$rpath"; then
1.49788 ++ case $host in
1.49789 ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
1.49790 ++ # these systems don't actually have a c library (as such)!
1.49791 ++ ;;
1.49792 ++ *-*-rhapsody* | *-*-darwin1.[012])
1.49793 ++ # Rhapsody C library is in the System framework
1.49794 ++ deplibs="$deplibs System.ltframework"
1.49795 ++ ;;
1.49796 ++ *-*-netbsd*)
1.49797 ++ # Don't link with libc until the a.out ld.so is fixed.
1.49798 ++ ;;
1.49799 ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1.49800 ++ # Do not include libc due to us having libc/libc_r.
1.49801 ++ ;;
1.49802 ++ *-*-sco3.2v5* | *-*-sco5v6*)
1.49803 ++ # Causes problems with __ctype
1.49804 ++ ;;
1.49805 ++ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
1.49806 ++ # Compiler inserts libc in the correct place for threads to work
1.49807 ++ ;;
1.49808 ++ *)
1.49809 ++ # Add libc to deplibs on all other systems if necessary.
1.49810 ++ if test "$build_libtool_need_lc" = "yes"; then
1.49811 ++ deplibs="$deplibs -lc"
1.49812 ++ fi
1.49813 ++ ;;
1.49814 ++ esac
1.49815 ++ fi
1.49816 ++
1.49817 ++ # Transform deplibs into only deplibs that can be linked in shared.
1.49818 ++ name_save=$name
1.49819 ++ libname_save=$libname
1.49820 ++ release_save=$release
1.49821 ++ versuffix_save=$versuffix
1.49822 ++ major_save=$major
1.49823 ++ # I'm not sure if I'm treating the release correctly. I think
1.49824 ++ # release should show up in the -l (ie -lgmp5) so we don't want to
1.49825 ++ # add it in twice. Is that correct?
1.49826 ++ release=""
1.49827 ++ versuffix=""
1.49828 ++ major=""
1.49829 ++ newdeplibs=
1.49830 ++ droppeddeps=no
1.49831 ++ case $deplibs_check_method in
1.49832 ++ pass_all)
1.49833 ++ # Don't check for shared/static. Everything works.
1.49834 ++ # This might be a little naive. We might want to check
1.49835 ++ # whether the library exists or not. But this is on
1.49836 ++ # osf3 & osf4 and I'm not really sure... Just
1.49837 ++ # implementing what was already the behavior.
1.49838 ++ newdeplibs=$deplibs
1.49839 ++ ;;
1.49840 ++ test_compile)
1.49841 ++ # This code stresses the "libraries are programs" paradigm to its
1.49842 ++ # limits. Maybe even breaks it. We compile a program, linking it
1.49843 ++ # against the deplibs as a proxy for the library. Then we can check
1.49844 ++ # whether they linked in statically or dynamically with ldd.
1.49845 ++ $opt_dry_run || $RM conftest.c
1.49846 ++ cat > conftest.c <<EOF
1.49847 ++ int main() { return 0; }
1.49848 ++EOF
1.49849 ++ $opt_dry_run || $RM conftest
1.49850 ++ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
1.49851 ++ ldd_output=`ldd conftest`
1.49852 ++ for i in $deplibs; do
1.49853 ++ name=`expr $i : '-l\(.*\)'`
1.49854 ++ # If $name is empty we are operating on a -L argument.
1.49855 ++ if test "$name" != "" && test "$name" != "0"; then
1.49856 ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
1.49857 ++ case " $predeps $postdeps " in
1.49858 ++ *" $i "*)
1.49859 ++ newdeplibs="$newdeplibs $i"
1.49860 ++ i=""
1.49861 ++ ;;
1.49862 ++ esac
1.49863 ++ fi
1.49864 ++ if test -n "$i" ; then
1.49865 ++ libname=`eval "\\$ECHO \"$libname_spec\""`
1.49866 ++ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
1.49867 ++ set dummy $deplib_matches; shift
1.49868 ++ deplib_match=$1
1.49869 ++ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
1.49870 ++ newdeplibs="$newdeplibs $i"
1.49871 ++ else
1.49872 ++ droppeddeps=yes
1.49873 ++ $ECHO
1.49874 ++ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
1.49875 ++ $ECHO "*** I have the capability to make that library automatically link in when"
1.49876 ++ $ECHO "*** you link to this library. But I can only do this if you have a"
1.49877 ++ $ECHO "*** shared version of the library, which I believe you do not have"
1.49878 ++ $ECHO "*** because a test_compile did reveal that the linker did not use it for"
1.49879 ++ $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
1.49880 ++ fi
1.49881 ++ fi
1.49882 ++ else
1.49883 ++ newdeplibs="$newdeplibs $i"
1.49884 ++ fi
1.49885 ++ done
1.49886 ++ else
1.49887 ++ # Error occurred in the first compile. Let's try to salvage
1.49888 ++ # the situation: Compile a separate program for each library.
1.49889 ++ for i in $deplibs; do
1.49890 ++ name=`expr $i : '-l\(.*\)'`
1.49891 ++ # If $name is empty we are operating on a -L argument.
1.49892 ++ if test "$name" != "" && test "$name" != "0"; then
1.49893 ++ $opt_dry_run || $RM conftest
1.49894 ++ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
1.49895 ++ ldd_output=`ldd conftest`
1.49896 ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
1.49897 ++ case " $predeps $postdeps " in
1.49898 ++ *" $i "*)
1.49899 ++ newdeplibs="$newdeplibs $i"
1.49900 ++ i=""
1.49901 ++ ;;
1.49902 ++ esac
1.49903 ++ fi
1.49904 ++ if test -n "$i" ; then
1.49905 ++ libname=`eval "\\$ECHO \"$libname_spec\""`
1.49906 ++ deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
1.49907 ++ set dummy $deplib_matches; shift
1.49908 ++ deplib_match=$1
1.49909 ++ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
1.49910 ++ newdeplibs="$newdeplibs $i"
1.49911 ++ else
1.49912 ++ droppeddeps=yes
1.49913 ++ $ECHO
1.49914 ++ $ECHO "*** Warning: dynamic linker does not accept needed library $i."
1.49915 ++ $ECHO "*** I have the capability to make that library automatically link in when"
1.49916 ++ $ECHO "*** you link to this library. But I can only do this if you have a"
1.49917 ++ $ECHO "*** shared version of the library, which you do not appear to have"
1.49918 ++ $ECHO "*** because a test_compile did reveal that the linker did not use this one"
1.49919 ++ $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
1.49920 ++ fi
1.49921 ++ fi
1.49922 ++ else
1.49923 ++ droppeddeps=yes
1.49924 ++ $ECHO
1.49925 ++ $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
1.49926 ++ $ECHO "*** make it link in! You will probably need to install it or some"
1.49927 ++ $ECHO "*** library that it depends on before this library will be fully"
1.49928 ++ $ECHO "*** functional. Installing it before continuing would be even better."
1.49929 ++ fi
1.49930 ++ else
1.49931 ++ newdeplibs="$newdeplibs $i"
1.49932 ++ fi
1.49933 ++ done
1.49934 ++ fi
1.49935 ++ ;;
1.49936 ++ file_magic*)
1.49937 ++ set dummy $deplibs_check_method; shift
1.49938 ++ file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
1.49939 ++ for a_deplib in $deplibs; do
1.49940 ++ name=`expr $a_deplib : '-l\(.*\)'`
1.49941 ++ # If $name is empty we are operating on a -L argument.
1.49942 ++ if test "$name" != "" && test "$name" != "0"; then
1.49943 ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
1.49944 ++ case " $predeps $postdeps " in
1.49945 ++ *" $a_deplib "*)
1.49946 ++ newdeplibs="$newdeplibs $a_deplib"
1.49947 ++ a_deplib=""
1.49948 ++ ;;
1.49949 ++ esac
1.49950 ++ fi
1.49951 ++ if test -n "$a_deplib" ; then
1.49952 ++ libname=`eval "\\$ECHO \"$libname_spec\""`
1.49953 ++ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
1.49954 ++ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
1.49955 ++ for potent_lib in $potential_libs; do
1.49956 ++ # Follow soft links.
1.49957 ++ if ls -lLd "$potent_lib" 2>/dev/null |
1.49958 ++ $GREP " -> " >/dev/null; then
1.49959 ++ continue
1.49960 ++ fi
1.49961 ++ # The statement above tries to avoid entering an
1.49962 ++ # endless loop below, in case of cyclic links.
1.49963 ++ # We might still enter an endless loop, since a link
1.49964 ++ # loop can be closed while we follow links,
1.49965 ++ # but so what?
1.49966 ++ potlib="$potent_lib"
1.49967 ++ while test -h "$potlib" 2>/dev/null; do
1.49968 ++ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
1.49969 ++ case $potliblink in
1.49970 ++ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
1.49971 ++ *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
1.49972 ++ esac
1.49973 ++ done
1.49974 ++ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
1.49975 ++ $SED -e 10q |
1.49976 ++ $EGREP "$file_magic_regex" > /dev/null; then
1.49977 ++ newdeplibs="$newdeplibs $a_deplib"
1.49978 ++ a_deplib=""
1.49979 ++ break 2
1.49980 ++ fi
1.49981 ++ done
1.49982 ++ done
1.49983 ++ fi
1.49984 ++ if test -n "$a_deplib" ; then
1.49985 ++ droppeddeps=yes
1.49986 ++ $ECHO
1.49987 ++ $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
1.49988 ++ $ECHO "*** I have the capability to make that library automatically link in when"
1.49989 ++ $ECHO "*** you link to this library. But I can only do this if you have a"
1.49990 ++ $ECHO "*** shared version of the library, which you do not appear to have"
1.49991 ++ $ECHO "*** because I did check the linker path looking for a file starting"
1.49992 ++ if test -z "$potlib" ; then
1.49993 ++ $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
1.49994 ++ else
1.49995 ++ $ECHO "*** with $libname and none of the candidates passed a file format test"
1.49996 ++ $ECHO "*** using a file magic. Last file checked: $potlib"
1.49997 ++ fi
1.49998 ++ fi
1.49999 ++ else
1.50000 ++ # Add a -L argument.
1.50001 ++ newdeplibs="$newdeplibs $a_deplib"
1.50002 ++ fi
1.50003 ++ done # Gone through all deplibs.
1.50004 ++ ;;
1.50005 ++ match_pattern*)
1.50006 ++ set dummy $deplibs_check_method; shift
1.50007 ++ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
1.50008 ++ for a_deplib in $deplibs; do
1.50009 ++ name=`expr $a_deplib : '-l\(.*\)'`
1.50010 ++ # If $name is empty we are operating on a -L argument.
1.50011 ++ if test -n "$name" && test "$name" != "0"; then
1.50012 ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
1.50013 ++ case " $predeps $postdeps " in
1.50014 ++ *" $a_deplib "*)
1.50015 ++ newdeplibs="$newdeplibs $a_deplib"
1.50016 ++ a_deplib=""
1.50017 ++ ;;
1.50018 ++ esac
1.50019 ++ fi
1.50020 ++ if test -n "$a_deplib" ; then
1.50021 ++ libname=`eval "\\$ECHO \"$libname_spec\""`
1.50022 ++ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
1.50023 ++ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
1.50024 ++ for potent_lib in $potential_libs; do
1.50025 ++ potlib="$potent_lib" # see symlink-check above in file_magic test
1.50026 ++ if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
1.50027 ++ $EGREP "$match_pattern_regex" > /dev/null; then
1.50028 ++ newdeplibs="$newdeplibs $a_deplib"
1.50029 ++ a_deplib=""
1.50030 ++ break 2
1.50031 ++ fi
1.50032 ++ done
1.50033 ++ done
1.50034 ++ fi
1.50035 ++ if test -n "$a_deplib" ; then
1.50036 ++ droppeddeps=yes
1.50037 ++ $ECHO
1.50038 ++ $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
1.50039 ++ $ECHO "*** I have the capability to make that library automatically link in when"
1.50040 ++ $ECHO "*** you link to this library. But I can only do this if you have a"
1.50041 ++ $ECHO "*** shared version of the library, which you do not appear to have"
1.50042 ++ $ECHO "*** because I did check the linker path looking for a file starting"
1.50043 ++ if test -z "$potlib" ; then
1.50044 ++ $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
1.50045 ++ else
1.50046 ++ $ECHO "*** with $libname and none of the candidates passed a file format test"
1.50047 ++ $ECHO "*** using a regex pattern. Last file checked: $potlib"
1.50048 ++ fi
1.50049 ++ fi
1.50050 ++ else
1.50051 ++ # Add a -L argument.
1.50052 ++ newdeplibs="$newdeplibs $a_deplib"
1.50053 ++ fi
1.50054 ++ done # Gone through all deplibs.
1.50055 ++ ;;
1.50056 ++ none | unknown | *)
1.50057 ++ newdeplibs=""
1.50058 ++ tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
1.50059 ++ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
1.50060 ++ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
1.50061 ++ for i in $predeps $postdeps ; do
1.50062 ++ # can't use Xsed below, because $i might contain '/'
1.50063 ++ tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
1.50064 ++ done
1.50065 ++ fi
1.50066 ++ if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' |
1.50067 ++ $GREP . >/dev/null; then
1.50068 ++ $ECHO
1.50069 ++ if test "X$deplibs_check_method" = "Xnone"; then
1.50070 ++ $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
1.50071 ++ else
1.50072 ++ $ECHO "*** Warning: inter-library dependencies are not known to be supported."
1.50073 ++ fi
1.50074 ++ $ECHO "*** All declared inter-library dependencies are being dropped."
1.50075 ++ droppeddeps=yes
1.50076 ++ fi
1.50077 ++ ;;
1.50078 ++ esac
1.50079 ++ versuffix=$versuffix_save
1.50080 ++ major=$major_save
1.50081 ++ release=$release_save
1.50082 ++ libname=$libname_save
1.50083 ++ name=$name_save
1.50084 ++
1.50085 ++ case $host in
1.50086 ++ *-*-rhapsody* | *-*-darwin1.[012])
1.50087 ++ # On Rhapsody replace the C library with the System framework
1.50088 ++ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
1.50089 ++ ;;
1.50090 ++ esac
1.50091 ++
1.50092 ++ if test "$droppeddeps" = yes; then
1.50093 ++ if test "$module" = yes; then
1.50094 ++ $ECHO
1.50095 ++ $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
1.50096 ++ $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
1.50097 ++ $ECHO "*** a static module, that should work as long as the dlopening"
1.50098 ++ $ECHO "*** application is linked with the -dlopen flag."
1.50099 ++ if test -z "$global_symbol_pipe"; then
1.50100 ++ $ECHO
1.50101 ++ $ECHO "*** However, this would only work if libtool was able to extract symbol"
1.50102 ++ $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
1.50103 ++ $ECHO "*** not find such a program. So, this module is probably useless."
1.50104 ++ $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
1.50105 ++ fi
1.50106 ++ if test "$build_old_libs" = no; then
1.50107 ++ oldlibs="$output_objdir/$libname.$libext"
1.50108 ++ build_libtool_libs=module
1.50109 ++ build_old_libs=yes
1.50110 ++ else
1.50111 ++ build_libtool_libs=no
1.50112 ++ fi
1.50113 ++ else
1.50114 ++ $ECHO "*** The inter-library dependencies that have been dropped here will be"
1.50115 ++ $ECHO "*** automatically added whenever a program is linked with this library"
1.50116 ++ $ECHO "*** or is declared to -dlopen it."
1.50117 ++
1.50118 ++ if test "$allow_undefined" = no; then
1.50119 ++ $ECHO
1.50120 ++ $ECHO "*** Since this library must not contain undefined symbols,"
1.50121 ++ $ECHO "*** because either the platform does not support them or"
1.50122 ++ $ECHO "*** it was explicitly requested with -no-undefined,"
1.50123 ++ $ECHO "*** libtool will only create a static version of it."
1.50124 ++ if test "$build_old_libs" = no; then
1.50125 ++ oldlibs="$output_objdir/$libname.$libext"
1.50126 ++ build_libtool_libs=module
1.50127 ++ build_old_libs=yes
1.50128 ++ else
1.50129 ++ build_libtool_libs=no
1.50130 ++ fi
1.50131 ++ fi
1.50132 ++ fi
1.50133 ++ fi
1.50134 ++ # Done checking deplibs!
1.50135 ++ deplibs=$newdeplibs
1.50136 ++ fi
1.50137 ++ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
1.50138 ++ case $host in
1.50139 ++ *-*-darwin*)
1.50140 ++ newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
1.50141 ++ new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
1.50142 ++ deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
1.50143 ++ ;;
1.50144 ++ esac
1.50145 ++
1.50146 ++ # move library search paths that coincide with paths to not yet
1.50147 ++ # installed libraries to the beginning of the library search list
1.50148 ++ new_libs=
1.50149 ++ for path in $notinst_path; do
1.50150 ++ case " $new_libs " in
1.50151 ++ *" -L$path/$objdir "*) ;;
1.50152 ++ *)
1.50153 ++ case " $deplibs " in
1.50154 ++ *" -L$path/$objdir "*)
1.50155 ++ new_libs="$new_libs -L$path/$objdir" ;;
1.50156 ++ esac
1.50157 ++ ;;
1.50158 ++ esac
1.50159 ++ done
1.50160 ++ for deplib in $deplibs; do
1.50161 ++ case $deplib in
1.50162 ++ -L*)
1.50163 ++ case " $new_libs " in
1.50164 ++ *" $deplib "*) ;;
1.50165 ++ *) new_libs="$new_libs $deplib" ;;
1.50166 ++ esac
1.50167 ++ ;;
1.50168 ++ *) new_libs="$new_libs $deplib" ;;
1.50169 ++ esac
1.50170 ++ done
1.50171 ++ deplibs="$new_libs"
1.50172 ++
1.50173 ++ # All the library-specific variables (install_libdir is set above).
1.50174 ++ library_names=
1.50175 ++ old_library=
1.50176 ++ dlname=
1.50177 ++
1.50178 ++ # Test again, we may have decided not to build it any more
1.50179 ++ if test "$build_libtool_libs" = yes; then
1.50180 ++ if test "$hardcode_into_libs" = yes; then
1.50181 ++ # Hardcode the library paths
1.50182 ++ hardcode_libdirs=
1.50183 ++ dep_rpath=
1.50184 ++ rpath="$finalize_rpath"
1.50185 ++ test "$mode" != relink && rpath="$compile_rpath$rpath"
1.50186 ++ for libdir in $rpath; do
1.50187 ++ if test -n "$hardcode_libdir_flag_spec"; then
1.50188 ++ if test -n "$hardcode_libdir_separator"; then
1.50189 ++ if test -z "$hardcode_libdirs"; then
1.50190 ++ hardcode_libdirs="$libdir"
1.50191 ++ else
1.50192 ++ # Just accumulate the unique libdirs.
1.50193 ++ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
1.50194 ++ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1.50195 ++ ;;
1.50196 ++ *)
1.50197 ++ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1.50198 ++ ;;
1.50199 ++ esac
1.50200 ++ fi
1.50201 ++ else
1.50202 ++ eval flag=\"$hardcode_libdir_flag_spec\"
1.50203 ++ dep_rpath="$dep_rpath $flag"
1.50204 ++ fi
1.50205 ++ elif test -n "$runpath_var"; then
1.50206 ++ case "$perm_rpath " in
1.50207 ++ *" $libdir "*) ;;
1.50208 ++ *) perm_rpath="$perm_rpath $libdir" ;;
1.50209 ++ esac
1.50210 ++ fi
1.50211 ++ done
1.50212 ++ # Substitute the hardcoded libdirs into the rpath.
1.50213 ++ if test -n "$hardcode_libdir_separator" &&
1.50214 ++ test -n "$hardcode_libdirs"; then
1.50215 ++ libdir="$hardcode_libdirs"
1.50216 ++ if test -n "$hardcode_libdir_flag_spec_ld"; then
1.50217 ++ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
1.50218 ++ else
1.50219 ++ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
1.50220 ++ fi
1.50221 ++ fi
1.50222 ++ if test -n "$runpath_var" && test -n "$perm_rpath"; then
1.50223 ++ # We should set the runpath_var.
1.50224 ++ rpath=
1.50225 ++ for dir in $perm_rpath; do
1.50226 ++ rpath="$rpath$dir:"
1.50227 ++ done
1.50228 ++ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
1.50229 ++ fi
1.50230 ++ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
1.50231 ++ fi
1.50232 ++
1.50233 ++ shlibpath="$finalize_shlibpath"
1.50234 ++ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
1.50235 ++ if test -n "$shlibpath"; then
1.50236 ++ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
1.50237 ++ fi
1.50238 ++
1.50239 ++ # Get the real and link names of the library.
1.50240 ++ eval shared_ext=\"$shrext_cmds\"
1.50241 ++ eval library_names=\"$library_names_spec\"
1.50242 ++ set dummy $library_names
1.50243 ++ shift
1.50244 ++ realname="$1"
1.50245 ++ shift
1.50246 ++
1.50247 ++ if test -n "$soname_spec"; then
1.50248 ++ eval soname=\"$soname_spec\"
1.50249 ++ else
1.50250 ++ soname="$realname"
1.50251 ++ fi
1.50252 ++ if test -z "$dlname"; then
1.50253 ++ dlname=$soname
1.50254 ++ fi
1.50255 ++
1.50256 ++ lib="$output_objdir/$realname"
1.50257 ++ linknames=
1.50258 ++ for link
1.50259 ++ do
1.50260 ++ linknames="$linknames $link"
1.50261 ++ done
1.50262 ++
1.50263 ++ # Use standard objects if they are pic
1.50264 ++ test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
1.50265 ++ test "X$libobjs" = "X " && libobjs=
1.50266 ++
1.50267 ++ delfiles=
1.50268 ++ if test -n "$export_symbols" && test -n "$include_expsyms"; then
1.50269 ++ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
1.50270 ++ export_symbols="$output_objdir/$libname.uexp"
1.50271 ++ delfiles="$delfiles $export_symbols"
1.50272 ++ fi
1.50273 ++
1.50274 ++ orig_export_symbols=
1.50275 ++ case $host_os in
1.50276 ++ cygwin* | mingw*)
1.50277 ++ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
1.50278 ++ # exporting using user supplied symfile
1.50279 ++ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
1.50280 ++ # and it's NOT already a .def file. Must figure out
1.50281 ++ # which of the given symbols are data symbols and tag
1.50282 ++ # them as such. So, trigger use of export_symbols_cmds.
1.50283 ++ # export_symbols gets reassigned inside the "prepare
1.50284 ++ # the list of exported symbols" if statement, so the
1.50285 ++ # include_expsyms logic still works.
1.50286 ++ orig_export_symbols="$export_symbols"
1.50287 ++ export_symbols=
1.50288 ++ always_export_symbols=yes
1.50289 ++ fi
1.50290 ++ fi
1.50291 ++ ;;
1.50292 ++ esac
1.50293 ++
1.50294 ++ # Prepare the list of exported symbols
1.50295 ++ if test -z "$export_symbols"; then
1.50296 ++ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
1.50297 ++ func_echo "generating symbol list for \`$libname.la'"
1.50298 ++ export_symbols="$output_objdir/$libname.exp"
1.50299 ++ $opt_dry_run || $RM $export_symbols
1.50300 ++ cmds=$export_symbols_cmds
1.50301 ++ save_ifs="$IFS"; IFS='~'
1.50302 ++ for cmd in $cmds; do
1.50303 ++ IFS="$save_ifs"
1.50304 ++ eval cmd=\"$cmd\"
1.50305 ++ if len=`expr "X$cmd" : ".*"` &&
1.50306 ++ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
1.50307 ++ func_show_eval "$cmd" 'exit $?'
1.50308 ++ skipped_export=false
1.50309 ++ else
1.50310 ++ # The command line is too long to execute in one step.
1.50311 ++ func_echo "using reloadable object file for export list..."
1.50312 ++ skipped_export=:
1.50313 ++ # Break out early, otherwise skipped_export may be
1.50314 ++ # set to false by a later but shorter cmd.
1.50315 ++ break
1.50316 ++ fi
1.50317 ++ done
1.50318 ++ IFS="$save_ifs"
1.50319 ++ if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
1.50320 ++ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
1.50321 ++ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
1.50322 ++ fi
1.50323 ++ fi
1.50324 ++ fi
1.50325 ++
1.50326 ++ if test -n "$export_symbols" && test -n "$include_expsyms"; then
1.50327 ++ tmp_export_symbols="$export_symbols"
1.50328 ++ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
1.50329 ++ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
1.50330 ++ fi
1.50331 ++
1.50332 ++ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
1.50333 ++ # The given exports_symbols file has to be filtered, so filter it.
1.50334 ++ func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
1.50335 ++ # FIXME: $output_objdir/$libname.filter potentially contains lots of
1.50336 ++ # 's' commands which not all seds can handle. GNU sed should be fine
1.50337 ++ # though. Also, the filter scales superlinearly with the number of
1.50338 ++ # global variables. join(1) would be nice here, but unfortunately
1.50339 ++ # isn't a blessed tool.
1.50340 ++ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
1.50341 ++ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
1.50342 ++ export_symbols=$output_objdir/$libname.def
1.50343 ++ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
1.50344 ++ fi
1.50345 ++
1.50346 ++ tmp_deplibs=
1.50347 ++ for test_deplib in $deplibs; do
1.50348 ++ case " $convenience " in
1.50349 ++ *" $test_deplib "*) ;;
1.50350 ++ *)
1.50351 ++ tmp_deplibs="$tmp_deplibs $test_deplib"
1.50352 ++ ;;
1.50353 ++ esac
1.50354 ++ done
1.50355 ++ deplibs="$tmp_deplibs"
1.50356 ++
1.50357 ++ if test -n "$convenience"; then
1.50358 ++ if test -n "$whole_archive_flag_spec" &&
1.50359 ++ test "$compiler_needs_object" = yes &&
1.50360 ++ test -z "$libobjs"; then
1.50361 ++ # extract the archives, so we have objects to list.
1.50362 ++ # TODO: could optimize this to just extract one archive.
1.50363 ++ whole_archive_flag_spec=
1.50364 ++ fi
1.50365 ++ if test -n "$whole_archive_flag_spec"; then
1.50366 ++ save_libobjs=$libobjs
1.50367 ++ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
1.50368 ++ test "X$libobjs" = "X " && libobjs=
1.50369 ++ else
1.50370 ++ gentop="$output_objdir/${outputname}x"
1.50371 ++ generated="$generated $gentop"
1.50372 ++
1.50373 ++ func_extract_archives $gentop $convenience
1.50374 ++ libobjs="$libobjs $func_extract_archives_result"
1.50375 ++ test "X$libobjs" = "X " && libobjs=
1.50376 ++ fi
1.50377 ++ fi
1.50378 ++
1.50379 ++ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
1.50380 ++ eval flag=\"$thread_safe_flag_spec\"
1.50381 ++ linker_flags="$linker_flags $flag"
1.50382 ++ fi
1.50383 ++
1.50384 ++ # Make a backup of the uninstalled library when relinking
1.50385 ++ if test "$mode" = relink; then
1.50386 ++ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
1.50387 ++ fi
1.50388 ++
1.50389 ++ # Do each of the archive commands.
1.50390 ++ if test "$module" = yes && test -n "$module_cmds" ; then
1.50391 ++ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
1.50392 ++ eval test_cmds=\"$module_expsym_cmds\"
1.50393 ++ cmds=$module_expsym_cmds
1.50394 ++ else
1.50395 ++ eval test_cmds=\"$module_cmds\"
1.50396 ++ cmds=$module_cmds
1.50397 ++ fi
1.50398 ++ else
1.50399 ++ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
1.50400 ++ eval test_cmds=\"$archive_expsym_cmds\"
1.50401 ++ cmds=$archive_expsym_cmds
1.50402 ++ else
1.50403 ++ eval test_cmds=\"$archive_cmds\"
1.50404 ++ cmds=$archive_cmds
1.50405 ++ fi
1.50406 ++ fi
1.50407 ++
1.50408 ++ if test "X$skipped_export" != "X:" &&
1.50409 ++ len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
1.50410 ++ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
1.50411 ++ :
1.50412 ++ else
1.50413 ++ # The command line is too long to link in one step, link piecewise
1.50414 ++ # or, if using GNU ld and skipped_export is not :, use a linker
1.50415 ++ # script.
1.50416 ++
1.50417 ++ # Save the value of $output and $libobjs because we want to
1.50418 ++ # use them later. If we have whole_archive_flag_spec, we
1.50419 ++ # want to use save_libobjs as it was before
1.50420 ++ # whole_archive_flag_spec was expanded, because we can't
1.50421 ++ # assume the linker understands whole_archive_flag_spec.
1.50422 ++ # This may have to be revisited, in case too many
1.50423 ++ # convenience libraries get linked in and end up exceeding
1.50424 ++ # the spec.
1.50425 ++ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
1.50426 ++ save_libobjs=$libobjs
1.50427 ++ fi
1.50428 ++ save_output=$output
1.50429 ++ output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
1.50430 ++
1.50431 ++ # Clear the reloadable object creation command queue and
1.50432 ++ # initialize k to one.
1.50433 ++ test_cmds=
1.50434 ++ concat_cmds=
1.50435 ++ objlist=
1.50436 ++ last_robj=
1.50437 ++ k=1
1.50438 ++
1.50439 ++ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
1.50440 ++ output=${output_objdir}/${output_la}.lnkscript
1.50441 ++ func_echo "creating GNU ld script: $output"
1.50442 ++ $ECHO 'INPUT (' > $output
1.50443 ++ for obj in $save_libobjs
1.50444 ++ do
1.50445 ++ $ECHO "$obj" >> $output
1.50446 ++ done
1.50447 ++ $ECHO ')' >> $output
1.50448 ++ delfiles="$delfiles $output"
1.50449 ++ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
1.50450 ++ output=${output_objdir}/${output_la}.lnk
1.50451 ++ func_echo "creating linker input file list: $output"
1.50452 ++ : > $output
1.50453 ++ set x $save_libobjs
1.50454 ++ shift
1.50455 ++ firstobj=
1.50456 ++ if test "$compiler_needs_object" = yes; then
1.50457 ++ firstobj="$1 "
1.50458 ++ shift
1.50459 ++ fi
1.50460 ++ for obj
1.50461 ++ do
1.50462 ++ $ECHO "$obj" >> $output
1.50463 ++ done
1.50464 ++ delfiles="$delfiles $output"
1.50465 ++ output=$firstobj\"$file_list_spec$output\"
1.50466 ++ else
1.50467 ++ if test -n "$save_libobjs"; then
1.50468 ++ func_echo "creating reloadable object files..."
1.50469 ++ output=$output_objdir/$output_la-${k}.$objext
1.50470 ++ # Loop over the list of objects to be linked.
1.50471 ++ for obj in $save_libobjs
1.50472 ++ do
1.50473 ++ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
1.50474 ++ if test "X$objlist" = X ||
1.50475 ++ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
1.50476 ++ test "$len" -le "$max_cmd_len"; }; then
1.50477 ++ objlist="$objlist $obj"
1.50478 ++ else
1.50479 ++ # The command $test_cmds is almost too long, add a
1.50480 ++ # command to the queue.
1.50481 ++ if test "$k" -eq 1 ; then
1.50482 ++ # The first file doesn't have a previous command to add.
1.50483 ++ eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
1.50484 ++ else
1.50485 ++ # All subsequent reloadable object files will link in
1.50486 ++ # the last one created.
1.50487 ++ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
1.50488 ++ fi
1.50489 ++ last_robj=$output_objdir/$output_la-${k}.$objext
1.50490 ++ k=`expr $k + 1`
1.50491 ++ output=$output_objdir/$output_la-${k}.$objext
1.50492 ++ objlist=$obj
1.50493 ++ len=1
1.50494 ++ fi
1.50495 ++ done
1.50496 ++ # Handle the remaining objects by creating one last
1.50497 ++ # reloadable object file. All subsequent reloadable object
1.50498 ++ # files will link in the last one created.
1.50499 ++ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
1.50500 ++ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
1.50501 ++
1.50502 ++ # Set up a command to remove the reloadable object files
1.50503 ++ # after they are used.
1.50504 ++ i=0
1.50505 ++ while test "$i" -lt "$k"
1.50506 ++ do
1.50507 ++ i=`expr $i + 1`
1.50508 ++ delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
1.50509 ++ done
1.50510 ++ else
1.50511 ++ output=
1.50512 ++ fi
1.50513 ++
1.50514 ++ if ${skipped_export-false}; then
1.50515 ++ func_echo "generating symbol list for \`$libname.la'"
1.50516 ++ export_symbols="$output_objdir/$libname.exp"
1.50517 ++ $opt_dry_run || $RM $export_symbols
1.50518 ++ libobjs=$output
1.50519 ++ # Append the command to create the export file.
1.50520 ++ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
1.50521 ++ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
1.50522 ++ fi
1.50523 ++
1.50524 ++ test -n "$save_libobjs" &&
1.50525 ++ func_echo "creating a temporary reloadable object file: $output"
1.50526 ++
1.50527 ++ # Loop through the commands generated above and execute them.
1.50528 ++ save_ifs="$IFS"; IFS='~'
1.50529 ++ for cmd in $concat_cmds; do
1.50530 ++ IFS="$save_ifs"
1.50531 ++ $opt_silent || {
1.50532 ++ func_quote_for_expand "$cmd"
1.50533 ++ eval "func_echo $func_quote_for_expand_result"
1.50534 ++ }
1.50535 ++ $opt_dry_run || eval "$cmd" || {
1.50536 ++ lt_exit=$?
1.50537 ++
1.50538 ++ # Restore the uninstalled library and exit
1.50539 ++ if test "$mode" = relink; then
1.50540 ++ ( cd "$output_objdir" && \
1.50541 ++ $RM "${realname}T" && \
1.50542 ++ $MV "${realname}U" "$realname" )
1.50543 ++ fi
1.50544 ++
1.50545 ++ exit $lt_exit
1.50546 ++ }
1.50547 ++ done
1.50548 ++ IFS="$save_ifs"
1.50549 ++
1.50550 ++ if test -n "$export_symbols_regex" && ${skipped_export-false}; then
1.50551 ++ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
1.50552 ++ func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
1.50553 ++ fi
1.50554 ++ fi
1.50555 ++
1.50556 ++ if ${skipped_export-false}; then
1.50557 ++ if test -n "$export_symbols" && test -n "$include_expsyms"; then
1.50558 ++ tmp_export_symbols="$export_symbols"
1.50559 ++ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
1.50560 ++ $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
1.50561 ++ fi
1.50562 ++
1.50563 ++ if test -n "$orig_export_symbols"; then
1.50564 ++ # The given exports_symbols file has to be filtered, so filter it.
1.50565 ++ func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
1.50566 ++ # FIXME: $output_objdir/$libname.filter potentially contains lots of
1.50567 ++ # 's' commands which not all seds can handle. GNU sed should be fine
1.50568 ++ # though. Also, the filter scales superlinearly with the number of
1.50569 ++ # global variables. join(1) would be nice here, but unfortunately
1.50570 ++ # isn't a blessed tool.
1.50571 ++ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
1.50572 ++ delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
1.50573 ++ export_symbols=$output_objdir/$libname.def
1.50574 ++ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
1.50575 ++ fi
1.50576 ++ fi
1.50577 ++
1.50578 ++ libobjs=$output
1.50579 ++ # Restore the value of output.
1.50580 ++ output=$save_output
1.50581 ++
1.50582 ++ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
1.50583 ++ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
1.50584 ++ test "X$libobjs" = "X " && libobjs=
1.50585 ++ fi
1.50586 ++ # Expand the library linking commands again to reset the
1.50587 ++ # value of $libobjs for piecewise linking.
1.50588 ++
1.50589 ++ # Do each of the archive commands.
1.50590 ++ if test "$module" = yes && test -n "$module_cmds" ; then
1.50591 ++ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
1.50592 ++ cmds=$module_expsym_cmds
1.50593 ++ else
1.50594 ++ cmds=$module_cmds
1.50595 ++ fi
1.50596 ++ else
1.50597 ++ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
1.50598 ++ cmds=$archive_expsym_cmds
1.50599 ++ else
1.50600 ++ cmds=$archive_cmds
1.50601 ++ fi
1.50602 ++ fi
1.50603 ++ fi
1.50604 ++
1.50605 ++ if test -n "$delfiles"; then
1.50606 ++ # Append the command to remove temporary files to $cmds.
1.50607 ++ eval cmds=\"\$cmds~\$RM $delfiles\"
1.50608 ++ fi
1.50609 ++
1.50610 ++ # Add any objects from preloaded convenience libraries
1.50611 ++ if test -n "$dlprefiles"; then
1.50612 ++ gentop="$output_objdir/${outputname}x"
1.50613 ++ generated="$generated $gentop"
1.50614 ++
1.50615 ++ func_extract_archives $gentop $dlprefiles
1.50616 ++ libobjs="$libobjs $func_extract_archives_result"
1.50617 ++ test "X$libobjs" = "X " && libobjs=
1.50618 ++ fi
1.50619 ++
1.50620 ++ save_ifs="$IFS"; IFS='~'
1.50621 ++ for cmd in $cmds; do
1.50622 ++ IFS="$save_ifs"
1.50623 ++ eval cmd=\"$cmd\"
1.50624 ++ $opt_silent || {
1.50625 ++ func_quote_for_expand "$cmd"
1.50626 ++ eval "func_echo $func_quote_for_expand_result"
1.50627 ++ }
1.50628 ++ $opt_dry_run || eval "$cmd" || {
1.50629 ++ lt_exit=$?
1.50630 ++
1.50631 ++ # Restore the uninstalled library and exit
1.50632 ++ if test "$mode" = relink; then
1.50633 ++ ( cd "$output_objdir" && \
1.50634 ++ $RM "${realname}T" && \
1.50635 ++ $MV "${realname}U" "$realname" )
1.50636 ++ fi
1.50637 ++
1.50638 ++ exit $lt_exit
1.50639 ++ }
1.50640 ++ done
1.50641 ++ IFS="$save_ifs"
1.50642 ++
1.50643 ++ # Restore the uninstalled library and exit
1.50644 ++ if test "$mode" = relink; then
1.50645 ++ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
1.50646 ++
1.50647 ++ if test -n "$convenience"; then
1.50648 ++ if test -z "$whole_archive_flag_spec"; then
1.50649 ++ func_show_eval '${RM}r "$gentop"'
1.50650 ++ fi
1.50651 ++ fi
1.50652 ++
1.50653 ++ exit $EXIT_SUCCESS
1.50654 ++ fi
1.50655 ++
1.50656 ++ # Create links to the real library.
1.50657 ++ for linkname in $linknames; do
1.50658 ++ if test "$realname" != "$linkname"; then
1.50659 ++ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
1.50660 ++ fi
1.50661 ++ done
1.50662 ++
1.50663 ++ # If -module or -export-dynamic was specified, set the dlname.
1.50664 ++ if test "$module" = yes || test "$export_dynamic" = yes; then
1.50665 ++ # On all known operating systems, these are identical.
1.50666 ++ dlname="$soname"
1.50667 ++ fi
1.50668 ++ fi
1.50669 ++ ;;
1.50670 ++
1.50671 ++ obj)
1.50672 ++ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
1.50673 ++ func_warning "\`-dlopen' is ignored for objects"
1.50674 ++ fi
1.50675 ++
1.50676 ++ test -n "$deplibs" && \
1.50677 ++ func_warning "\`-l' and \`-L' are ignored for objects"
1.50678 ++
1.50679 ++ test -n "$rpath" && \
1.50680 ++ func_warning "\`-rpath' is ignored for objects"
1.50681 ++
1.50682 ++ test -n "$xrpath" && \
1.50683 ++ func_warning "\`-R' is ignored for objects"
1.50684 ++
1.50685 ++ test -n "$vinfo" && \
1.50686 ++ func_warning "\`-version-info' is ignored for objects"
1.50687 ++
1.50688 ++ test -n "$release" && \
1.50689 ++ func_warning "\`-release' is ignored for objects"
1.50690 ++
1.50691 ++ case $output in
1.50692 ++ *.lo)
1.50693 ++ test -n "$objs$old_deplibs" && \
1.50694 ++ func_fatal_error "cannot build library object \`$output' from non-libtool objects"
1.50695 ++
1.50696 ++ libobj=$output
1.50697 ++ func_lo2o "$libobj"
1.50698 ++ obj=$func_lo2o_result
1.50699 ++ ;;
1.50700 ++ *)
1.50701 ++ libobj=
1.50702 ++ obj="$output"
1.50703 ++ ;;
1.50704 ++ esac
1.50705 ++
1.50706 ++ # Delete the old objects.
1.50707 ++ $opt_dry_run || $RM $obj $libobj
1.50708 ++
1.50709 ++ # Objects from convenience libraries. This assumes
1.50710 ++ # single-version convenience libraries. Whenever we create
1.50711 ++ # different ones for PIC/non-PIC, this we'll have to duplicate
1.50712 ++ # the extraction.
1.50713 ++ reload_conv_objs=
1.50714 ++ gentop=
1.50715 ++ # reload_cmds runs $LD directly, so let us get rid of
1.50716 ++ # -Wl from whole_archive_flag_spec and hope we can get by with
1.50717 ++ # turning comma into space..
1.50718 ++ wl=
1.50719 ++
1.50720 ++ if test -n "$convenience"; then
1.50721 ++ if test -n "$whole_archive_flag_spec"; then
1.50722 ++ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
1.50723 ++ reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
1.50724 ++ else
1.50725 ++ gentop="$output_objdir/${obj}x"
1.50726 ++ generated="$generated $gentop"
1.50727 ++
1.50728 ++ func_extract_archives $gentop $convenience
1.50729 ++ reload_conv_objs="$reload_objs $func_extract_archives_result"
1.50730 ++ fi
1.50731 ++ fi
1.50732 ++
1.50733 ++ # Create the old-style object.
1.50734 ++ reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
1.50735 ++
1.50736 ++ output="$obj"
1.50737 ++ func_execute_cmds "$reload_cmds" 'exit $?'
1.50738 ++
1.50739 ++ # Exit if we aren't doing a library object file.
1.50740 ++ if test -z "$libobj"; then
1.50741 ++ if test -n "$gentop"; then
1.50742 ++ func_show_eval '${RM}r "$gentop"'
1.50743 ++ fi
1.50744 ++
1.50745 ++ exit $EXIT_SUCCESS
1.50746 ++ fi
1.50747 ++
1.50748 ++ if test "$build_libtool_libs" != yes; then
1.50749 ++ if test -n "$gentop"; then
1.50750 ++ func_show_eval '${RM}r "$gentop"'
1.50751 ++ fi
1.50752 ++
1.50753 ++ # Create an invalid libtool object if no PIC, so that we don't
1.50754 ++ # accidentally link it into a program.
1.50755 ++ # $show "echo timestamp > $libobj"
1.50756 ++ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
1.50757 ++ exit $EXIT_SUCCESS
1.50758 ++ fi
1.50759 ++
1.50760 ++ if test -n "$pic_flag" || test "$pic_mode" != default; then
1.50761 ++ # Only do commands if we really have different PIC objects.
1.50762 ++ reload_objs="$libobjs $reload_conv_objs"
1.50763 ++ output="$libobj"
1.50764 ++ func_execute_cmds "$reload_cmds" 'exit $?'
1.50765 ++ fi
1.50766 ++
1.50767 ++ if test -n "$gentop"; then
1.50768 ++ func_show_eval '${RM}r "$gentop"'
1.50769 ++ fi
1.50770 ++
1.50771 ++ exit $EXIT_SUCCESS
1.50772 ++ ;;
1.50773 ++
1.50774 ++ prog)
1.50775 ++ case $host in
1.50776 ++ *cygwin*) func_stripname '' '.exe' "$output"
1.50777 ++ output=$func_stripname_result.exe;;
1.50778 ++ esac
1.50779 ++ test -n "$vinfo" && \
1.50780 ++ func_warning "\`-version-info' is ignored for programs"
1.50781 ++
1.50782 ++ test -n "$release" && \
1.50783 ++ func_warning "\`-release' is ignored for programs"
1.50784 ++
1.50785 ++ test "$preload" = yes \
1.50786 ++ && test "$dlopen_support" = unknown \
1.50787 ++ && test "$dlopen_self" = unknown \
1.50788 ++ && test "$dlopen_self_static" = unknown && \
1.50789 ++ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
1.50790 ++
1.50791 ++ case $host in
1.50792 ++ *-*-rhapsody* | *-*-darwin1.[012])
1.50793 ++ # On Rhapsody replace the C library is the System framework
1.50794 ++ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
1.50795 ++ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
1.50796 ++ ;;
1.50797 ++ esac
1.50798 ++
1.50799 ++ case $host in
1.50800 ++ *-*-darwin*)
1.50801 ++ # Don't allow lazy linking, it breaks C++ global constructors
1.50802 ++ # But is supposedly fixed on 10.4 or later (yay!).
1.50803 ++ if test "$tagname" = CXX ; then
1.50804 ++ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
1.50805 ++ 10.[0123])
1.50806 ++ compile_command="$compile_command ${wl}-bind_at_load"
1.50807 ++ finalize_command="$finalize_command ${wl}-bind_at_load"
1.50808 ++ ;;
1.50809 ++ esac
1.50810 ++ fi
1.50811 ++ # Time to change all our "foo.ltframework" stuff back to "-framework foo"
1.50812 ++ compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
1.50813 ++ finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
1.50814 ++ ;;
1.50815 ++ esac
1.50816 ++
1.50817 ++
1.50818 ++ # move library search paths that coincide with paths to not yet
1.50819 ++ # installed libraries to the beginning of the library search list
1.50820 ++ new_libs=
1.50821 ++ for path in $notinst_path; do
1.50822 ++ case " $new_libs " in
1.50823 ++ *" -L$path/$objdir "*) ;;
1.50824 ++ *)
1.50825 ++ case " $compile_deplibs " in
1.50826 ++ *" -L$path/$objdir "*)
1.50827 ++ new_libs="$new_libs -L$path/$objdir" ;;
1.50828 ++ esac
1.50829 ++ ;;
1.50830 ++ esac
1.50831 ++ done
1.50832 ++ for deplib in $compile_deplibs; do
1.50833 ++ case $deplib in
1.50834 ++ -L*)
1.50835 ++ case " $new_libs " in
1.50836 ++ *" $deplib "*) ;;
1.50837 ++ *) new_libs="$new_libs $deplib" ;;
1.50838 ++ esac
1.50839 ++ ;;
1.50840 ++ *) new_libs="$new_libs $deplib" ;;
1.50841 ++ esac
1.50842 ++ done
1.50843 ++ compile_deplibs="$new_libs"
1.50844 ++
1.50845 ++
1.50846 ++ compile_command="$compile_command $compile_deplibs"
1.50847 ++ finalize_command="$finalize_command $finalize_deplibs"
1.50848 ++
1.50849 ++ if test -n "$rpath$xrpath"; then
1.50850 ++ # If the user specified any rpath flags, then add them.
1.50851 ++ for libdir in $rpath $xrpath; do
1.50852 ++ # This is the magic to use -rpath.
1.50853 ++ case "$finalize_rpath " in
1.50854 ++ *" $libdir "*) ;;
1.50855 ++ *) finalize_rpath="$finalize_rpath $libdir" ;;
1.50856 ++ esac
1.50857 ++ done
1.50858 ++ fi
1.50859 ++
1.50860 ++ # Now hardcode the library paths
1.50861 ++ rpath=
1.50862 ++ hardcode_libdirs=
1.50863 ++ for libdir in $compile_rpath $finalize_rpath; do
1.50864 ++ if test -n "$hardcode_libdir_flag_spec"; then
1.50865 ++ if test -n "$hardcode_libdir_separator"; then
1.50866 ++ if test -z "$hardcode_libdirs"; then
1.50867 ++ hardcode_libdirs="$libdir"
1.50868 ++ else
1.50869 ++ # Just accumulate the unique libdirs.
1.50870 ++ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
1.50871 ++ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1.50872 ++ ;;
1.50873 ++ *)
1.50874 ++ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1.50875 ++ ;;
1.50876 ++ esac
1.50877 ++ fi
1.50878 ++ else
1.50879 ++ eval flag=\"$hardcode_libdir_flag_spec\"
1.50880 ++ rpath="$rpath $flag"
1.50881 ++ fi
1.50882 ++ elif test -n "$runpath_var"; then
1.50883 ++ case "$perm_rpath " in
1.50884 ++ *" $libdir "*) ;;
1.50885 ++ *) perm_rpath="$perm_rpath $libdir" ;;
1.50886 ++ esac
1.50887 ++ fi
1.50888 ++ case $host in
1.50889 ++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1.50890 ++ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
1.50891 ++ case :$dllsearchpath: in
1.50892 ++ *":$libdir:"*) ;;
1.50893 ++ *) dllsearchpath="$dllsearchpath:$libdir";;
1.50894 ++ esac
1.50895 ++ case :$dllsearchpath: in
1.50896 ++ *":$testbindir:"*) ;;
1.50897 ++ *) dllsearchpath="$dllsearchpath:$testbindir";;
1.50898 ++ esac
1.50899 ++ ;;
1.50900 ++ esac
1.50901 ++ done
1.50902 ++ # Substitute the hardcoded libdirs into the rpath.
1.50903 ++ if test -n "$hardcode_libdir_separator" &&
1.50904 ++ test -n "$hardcode_libdirs"; then
1.50905 ++ libdir="$hardcode_libdirs"
1.50906 ++ eval rpath=\" $hardcode_libdir_flag_spec\"
1.50907 ++ fi
1.50908 ++ compile_rpath="$rpath"
1.50909 ++
1.50910 ++ rpath=
1.50911 ++ hardcode_libdirs=
1.50912 ++ for libdir in $finalize_rpath; do
1.50913 ++ if test -n "$hardcode_libdir_flag_spec"; then
1.50914 ++ if test -n "$hardcode_libdir_separator"; then
1.50915 ++ if test -z "$hardcode_libdirs"; then
1.50916 ++ hardcode_libdirs="$libdir"
1.50917 ++ else
1.50918 ++ # Just accumulate the unique libdirs.
1.50919 ++ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
1.50920 ++ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1.50921 ++ ;;
1.50922 ++ *)
1.50923 ++ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1.50924 ++ ;;
1.50925 ++ esac
1.50926 ++ fi
1.50927 ++ else
1.50928 ++ eval flag=\"$hardcode_libdir_flag_spec\"
1.50929 ++ rpath="$rpath $flag"
1.50930 ++ fi
1.50931 ++ elif test -n "$runpath_var"; then
1.50932 ++ case "$finalize_perm_rpath " in
1.50933 ++ *" $libdir "*) ;;
1.50934 ++ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
1.50935 ++ esac
1.50936 ++ fi
1.50937 ++ done
1.50938 ++ # Substitute the hardcoded libdirs into the rpath.
1.50939 ++ if test -n "$hardcode_libdir_separator" &&
1.50940 ++ test -n "$hardcode_libdirs"; then
1.50941 ++ libdir="$hardcode_libdirs"
1.50942 ++ eval rpath=\" $hardcode_libdir_flag_spec\"
1.50943 ++ fi
1.50944 ++ finalize_rpath="$rpath"
1.50945 ++
1.50946 ++ if test -n "$libobjs" && test "$build_old_libs" = yes; then
1.50947 ++ # Transform all the library objects into standard objects.
1.50948 ++ compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
1.50949 ++ finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
1.50950 ++ fi
1.50951 ++
1.50952 ++ func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
1.50953 ++
1.50954 ++ # template prelinking step
1.50955 ++ if test -n "$prelink_cmds"; then
1.50956 ++ func_execute_cmds "$prelink_cmds" 'exit $?'
1.50957 ++ fi
1.50958 ++
1.50959 ++ wrappers_required=yes
1.50960 ++ case $host in
1.50961 ++ *cygwin* | *mingw* )
1.50962 ++ if test "$build_libtool_libs" != yes; then
1.50963 ++ wrappers_required=no
1.50964 ++ fi
1.50965 ++ ;;
1.50966 ++ *)
1.50967 ++ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
1.50968 ++ wrappers_required=no
1.50969 ++ fi
1.50970 ++ ;;
1.50971 ++ esac
1.50972 ++ if test "$wrappers_required" = no; then
1.50973 ++ # Replace the output file specification.
1.50974 ++ compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1.50975 ++ link_command="$compile_command$compile_rpath"
1.50976 ++
1.50977 ++ # We have no uninstalled library dependencies, so finalize right now.
1.50978 ++ exit_status=0
1.50979 ++ func_show_eval "$link_command" 'exit_status=$?'
1.50980 ++
1.50981 ++ # Delete the generated files.
1.50982 ++ if test -f "$output_objdir/${outputname}S.${objext}"; then
1.50983 ++ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
1.50984 ++ fi
1.50985 ++
1.50986 ++ exit $exit_status
1.50987 ++ fi
1.50988 ++
1.50989 ++ if test -n "$compile_shlibpath$finalize_shlibpath"; then
1.50990 ++ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
1.50991 ++ fi
1.50992 ++ if test -n "$finalize_shlibpath"; then
1.50993 ++ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
1.50994 ++ fi
1.50995 ++
1.50996 ++ compile_var=
1.50997 ++ finalize_var=
1.50998 ++ if test -n "$runpath_var"; then
1.50999 ++ if test -n "$perm_rpath"; then
1.51000 ++ # We should set the runpath_var.
1.51001 ++ rpath=
1.51002 ++ for dir in $perm_rpath; do
1.51003 ++ rpath="$rpath$dir:"
1.51004 ++ done
1.51005 ++ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
1.51006 ++ fi
1.51007 ++ if test -n "$finalize_perm_rpath"; then
1.51008 ++ # We should set the runpath_var.
1.51009 ++ rpath=
1.51010 ++ for dir in $finalize_perm_rpath; do
1.51011 ++ rpath="$rpath$dir:"
1.51012 ++ done
1.51013 ++ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
1.51014 ++ fi
1.51015 ++ fi
1.51016 ++
1.51017 ++ if test "$no_install" = yes; then
1.51018 ++ # We don't need to create a wrapper script.
1.51019 ++ link_command="$compile_var$compile_command$compile_rpath"
1.51020 ++ # Replace the output file specification.
1.51021 ++ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1.51022 ++ # Delete the old output file.
1.51023 ++ $opt_dry_run || $RM $output
1.51024 ++ # Link the executable and exit
1.51025 ++ func_show_eval "$link_command" 'exit $?'
1.51026 ++ exit $EXIT_SUCCESS
1.51027 ++ fi
1.51028 ++
1.51029 ++ if test "$hardcode_action" = relink; then
1.51030 ++ # Fast installation is not supported
1.51031 ++ link_command="$compile_var$compile_command$compile_rpath"
1.51032 ++ relink_command="$finalize_var$finalize_command$finalize_rpath"
1.51033 ++
1.51034 ++ func_warning "this platform does not like uninstalled shared libraries"
1.51035 ++ func_warning "\`$output' will be relinked during installation"
1.51036 ++ else
1.51037 ++ if test "$fast_install" != no; then
1.51038 ++ link_command="$finalize_var$compile_command$finalize_rpath"
1.51039 ++ if test "$fast_install" = yes; then
1.51040 ++ relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
1.51041 ++ else
1.51042 ++ # fast_install is set to needless
1.51043 ++ relink_command=
1.51044 ++ fi
1.51045 ++ else
1.51046 ++ link_command="$compile_var$compile_command$compile_rpath"
1.51047 ++ relink_command="$finalize_var$finalize_command$finalize_rpath"
1.51048 ++ fi
1.51049 ++ fi
1.51050 ++
1.51051 ++ # Replace the output file specification.
1.51052 ++ link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
1.51053 ++
1.51054 ++ # Delete the old output files.
1.51055 ++ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
1.51056 ++
1.51057 ++ func_show_eval "$link_command" 'exit $?'
1.51058 ++
1.51059 ++ # Now create the wrapper script.
1.51060 ++ func_echo "creating $output"
1.51061 ++
1.51062 ++ # Quote the relink command for shipping.
1.51063 ++ if test -n "$relink_command"; then
1.51064 ++ # Preserve any variables that may affect compiler behavior
1.51065 ++ for var in $variables_saved_for_relink; do
1.51066 ++ if eval test -z \"\${$var+set}\"; then
1.51067 ++ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
1.51068 ++ elif eval var_value=\$$var; test -z "$var_value"; then
1.51069 ++ relink_command="$var=; export $var; $relink_command"
1.51070 ++ else
1.51071 ++ func_quote_for_eval "$var_value"
1.51072 ++ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
1.51073 ++ fi
1.51074 ++ done
1.51075 ++ relink_command="(cd `pwd`; $relink_command)"
1.51076 ++ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
1.51077 ++ fi
1.51078 ++
1.51079 ++ # Quote $ECHO for shipping.
1.51080 ++ if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
1.51081 ++ case $progpath in
1.51082 ++ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
1.51083 ++ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
1.51084 ++ esac
1.51085 ++ qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
1.51086 ++ else
1.51087 ++ qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
1.51088 ++ fi
1.51089 ++
1.51090 ++ # Only actually do things if not in dry run mode.
1.51091 ++ $opt_dry_run || {
1.51092 ++ # win32 will think the script is a binary if it has
1.51093 ++ # a .exe suffix, so we strip it off here.
1.51094 ++ case $output in
1.51095 ++ *.exe) func_stripname '' '.exe' "$output"
1.51096 ++ output=$func_stripname_result ;;
1.51097 ++ esac
1.51098 ++ # test for cygwin because mv fails w/o .exe extensions
1.51099 ++ case $host in
1.51100 ++ *cygwin*)
1.51101 ++ exeext=.exe
1.51102 ++ func_stripname '' '.exe' "$outputname"
1.51103 ++ outputname=$func_stripname_result ;;
1.51104 ++ *) exeext= ;;
1.51105 ++ esac
1.51106 ++ case $host in
1.51107 ++ *cygwin* | *mingw* )
1.51108 ++ output_name=`basename $output`
1.51109 ++ output_path=`dirname $output`
1.51110 ++ cwrappersource="$output_path/$objdir/lt-$output_name.c"
1.51111 ++ cwrapper="$output_path/$output_name.exe"
1.51112 ++ $RM $cwrappersource $cwrapper
1.51113 ++ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
1.51114 ++
1.51115 ++ cat > $cwrappersource <<EOF
1.51116 ++
1.51117 ++/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
1.51118 ++ Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1.51119 ++
1.51120 ++ The $output program cannot be directly executed until all the libtool
1.51121 ++ libraries that it depends on are installed.
1.51122 ++
1.51123 ++ This wrapper executable should never be moved out of the build directory.
1.51124 ++ If it is, it will not operate correctly.
1.51125 ++
1.51126 ++ Currently, it simply execs the wrapper *script* "/bin/sh $output",
1.51127 ++ but could eventually absorb all of the scripts functionality and
1.51128 ++ exec $objdir/$outputname directly.
1.51129 ++*/
1.51130 ++EOF
1.51131 ++ cat >> $cwrappersource<<"EOF"
1.51132 ++#include <stdio.h>
1.51133 ++#include <stdlib.h>
1.51134 ++#include <unistd.h>
1.51135 ++#include <malloc.h>
1.51136 ++#include <stdarg.h>
1.51137 ++#include <assert.h>
1.51138 ++#include <string.h>
1.51139 ++#include <ctype.h>
1.51140 ++#include <sys/stat.h>
1.51141 ++
1.51142 ++#if defined(PATH_MAX)
1.51143 ++# define LT_PATHMAX PATH_MAX
1.51144 ++#elif defined(MAXPATHLEN)
1.51145 ++# define LT_PATHMAX MAXPATHLEN
1.51146 ++#else
1.51147 ++# define LT_PATHMAX 1024
1.51148 ++#endif
1.51149 ++
1.51150 ++#ifndef DIR_SEPARATOR
1.51151 ++# define DIR_SEPARATOR '/'
1.51152 ++# define PATH_SEPARATOR ':'
1.51153 ++#endif
1.51154 ++
1.51155 ++#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
1.51156 ++ defined (__OS2__)
1.51157 ++# define HAVE_DOS_BASED_FILE_SYSTEM
1.51158 ++# ifndef DIR_SEPARATOR_2
1.51159 ++# define DIR_SEPARATOR_2 '\\'
1.51160 ++# endif
1.51161 ++# ifndef PATH_SEPARATOR_2
1.51162 ++# define PATH_SEPARATOR_2 ';'
1.51163 ++# endif
1.51164 ++#endif
1.51165 ++
1.51166 ++#ifndef DIR_SEPARATOR_2
1.51167 ++# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
1.51168 ++#else /* DIR_SEPARATOR_2 */
1.51169 ++# define IS_DIR_SEPARATOR(ch) \
1.51170 ++ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
1.51171 ++#endif /* DIR_SEPARATOR_2 */
1.51172 ++
1.51173 ++#ifndef PATH_SEPARATOR_2
1.51174 ++# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
1.51175 ++#else /* PATH_SEPARATOR_2 */
1.51176 ++# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
1.51177 ++#endif /* PATH_SEPARATOR_2 */
1.51178 ++
1.51179 ++#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
1.51180 ++#define XFREE(stale) do { \
1.51181 ++ if (stale) { free ((void *) stale); stale = 0; } \
1.51182 ++} while (0)
1.51183 ++
1.51184 ++/* -DDEBUG is fairly common in CFLAGS. */
1.51185 ++#undef DEBUG
1.51186 ++#if defined DEBUGWRAPPER
1.51187 ++# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
1.51188 ++#else
1.51189 ++# define DEBUG(format, ...)
1.51190 ++#endif
1.51191 ++
1.51192 ++const char *program_name = NULL;
1.51193 ++
1.51194 ++void * xmalloc (size_t num);
1.51195 ++char * xstrdup (const char *string);
1.51196 ++const char * base_name (const char *name);
1.51197 ++char * find_executable(const char *wrapper);
1.51198 ++int check_executable(const char *path);
1.51199 ++char * strendzap(char *str, const char *pat);
1.51200 ++void lt_fatal (const char *message, ...);
1.51201 ++
1.51202 ++int
1.51203 ++main (int argc, char *argv[])
1.51204 ++{
1.51205 ++ char **newargz;
1.51206 ++ int i;
1.51207 ++
1.51208 ++ program_name = (char *) xstrdup (base_name (argv[0]));
1.51209 ++ DEBUG("(main) argv[0] : %s\n",argv[0]);
1.51210 ++ DEBUG("(main) program_name : %s\n",program_name);
1.51211 ++ newargz = XMALLOC(char *, argc+2);
1.51212 ++EOF
1.51213 ++
1.51214 ++ cat >> $cwrappersource <<EOF
1.51215 ++ newargz[0] = (char *) xstrdup("$SHELL");
1.51216 ++EOF
1.51217 ++
1.51218 ++ cat >> $cwrappersource <<"EOF"
1.51219 ++ newargz[1] = find_executable(argv[0]);
1.51220 ++ if (newargz[1] == NULL)
1.51221 ++ lt_fatal("Couldn't find %s", argv[0]);
1.51222 ++ DEBUG("(main) found exe at : %s\n",newargz[1]);
1.51223 ++ /* we know the script has the same name, without the .exe */
1.51224 ++ /* so make sure newargz[1] doesn't end in .exe */
1.51225 ++ strendzap(newargz[1],".exe");
1.51226 ++ for (i = 1; i < argc; i++)
1.51227 ++ newargz[i+1] = xstrdup(argv[i]);
1.51228 ++ newargz[argc+1] = NULL;
1.51229 ++
1.51230 ++ for (i=0; i<argc+1; i++)
1.51231 ++ {
1.51232 ++ DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
1.51233 ++ ;
1.51234 ++ }
1.51235 ++
1.51236 ++EOF
1.51237 ++
1.51238 ++ case $host_os in
1.51239 ++ mingw*)
1.51240 ++ cat >> $cwrappersource <<EOF
1.51241 ++ execv("$SHELL",(char const **)newargz);
1.51242 ++EOF
1.51243 ++ ;;
1.51244 ++ *)
1.51245 ++ cat >> $cwrappersource <<EOF
1.51246 ++ execv("$SHELL",newargz);
1.51247 ++EOF
1.51248 ++ ;;
1.51249 ++ esac
1.51250 ++
1.51251 ++ cat >> $cwrappersource <<"EOF"
1.51252 ++ return 127;
1.51253 ++}
1.51254 ++
1.51255 ++void *
1.51256 ++xmalloc (size_t num)
1.51257 ++{
1.51258 ++ void * p = (void *) malloc (num);
1.51259 ++ if (!p)
1.51260 ++ lt_fatal ("Memory exhausted");
1.51261 ++
1.51262 ++ return p;
1.51263 ++}
1.51264 ++
1.51265 ++char *
1.51266 ++xstrdup (const char *string)
1.51267 ++{
1.51268 ++ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
1.51269 ++;
1.51270 ++}
1.51271 ++
1.51272 ++const char *
1.51273 ++base_name (const char *name)
1.51274 ++{
1.51275 ++ const char *base;
1.51276 ++
1.51277 ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
1.51278 ++ /* Skip over the disk name in MSDOS pathnames. */
1.51279 ++ if (isalpha ((unsigned char)name[0]) && name[1] == ':')
1.51280 ++ name += 2;
1.51281 ++#endif
1.51282 ++
1.51283 ++ for (base = name; *name; name++)
1.51284 ++ if (IS_DIR_SEPARATOR (*name))
1.51285 ++ base = name + 1;
1.51286 ++ return base;
1.51287 ++}
1.51288 ++
1.51289 ++int
1.51290 ++check_executable(const char * path)
1.51291 ++{
1.51292 ++ struct stat st;
1.51293 ++
1.51294 ++ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
1.51295 ++ if ((!path) || (!*path))
1.51296 ++ return 0;
1.51297 ++
1.51298 ++ if ((stat (path, &st) >= 0) &&
1.51299 ++ (
1.51300 ++ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
1.51301 ++#if defined (S_IXOTH)
1.51302 ++ ((st.st_mode & S_IXOTH) == S_IXOTH) ||
1.51303 ++#endif
1.51304 ++#if defined (S_IXGRP)
1.51305 ++ ((st.st_mode & S_IXGRP) == S_IXGRP) ||
1.51306 ++#endif
1.51307 ++ ((st.st_mode & S_IXUSR) == S_IXUSR))
1.51308 ++ )
1.51309 ++ return 1;
1.51310 ++ else
1.51311 ++ return 0;
1.51312 ++}
1.51313 ++
1.51314 ++/* Searches for the full path of the wrapper. Returns
1.51315 ++ newly allocated full path name if found, NULL otherwise */
1.51316 ++char *
1.51317 ++find_executable (const char* wrapper)
1.51318 ++{
1.51319 ++ int has_slash = 0;
1.51320 ++ const char* p;
1.51321 ++ const char* p_next;
1.51322 ++ /* static buffer for getcwd */
1.51323 ++ char tmp[LT_PATHMAX + 1];
1.51324 ++ int tmp_len;
1.51325 ++ char* concat_name;
1.51326 ++
1.51327 ++ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
1.51328 ++
1.51329 ++ if ((wrapper == NULL) || (*wrapper == '\0'))
1.51330 ++ return NULL;
1.51331 ++
1.51332 ++ /* Absolute path? */
1.51333 ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
1.51334 ++ if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
1.51335 ++ {
1.51336 ++ concat_name = xstrdup (wrapper);
1.51337 ++ if (check_executable(concat_name))
1.51338 ++ return concat_name;
1.51339 ++ XFREE(concat_name);
1.51340 ++ }
1.51341 ++ else
1.51342 ++ {
1.51343 ++#endif
1.51344 ++ if (IS_DIR_SEPARATOR (wrapper[0]))
1.51345 ++ {
1.51346 ++ concat_name = xstrdup (wrapper);
1.51347 ++ if (check_executable(concat_name))
1.51348 ++ return concat_name;
1.51349 ++ XFREE(concat_name);
1.51350 ++ }
1.51351 ++#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
1.51352 ++ }
1.51353 ++#endif
1.51354 ++
1.51355 ++ for (p = wrapper; *p; p++)
1.51356 ++ if (*p == '/')
1.51357 ++ {
1.51358 ++ has_slash = 1;
1.51359 ++ break;
1.51360 ++ }
1.51361 ++ if (!has_slash)
1.51362 ++ {
1.51363 ++ /* no slashes; search PATH */
1.51364 ++ const char* path = getenv ("PATH");
1.51365 ++ if (path != NULL)
1.51366 ++ {
1.51367 ++ for (p = path; *p; p = p_next)
1.51368 ++ {
1.51369 ++ const char* q;
1.51370 ++ size_t p_len;
1.51371 ++ for (q = p; *q; q++)
1.51372 ++ if (IS_PATH_SEPARATOR(*q))
1.51373 ++ break;
1.51374 ++ p_len = q - p;
1.51375 ++ p_next = (*q == '\0' ? q : q + 1);
1.51376 ++ if (p_len == 0)
1.51377 ++ {
1.51378 ++ /* empty path: current directory */
1.51379 ++ if (getcwd (tmp, LT_PATHMAX) == NULL)
1.51380 ++ lt_fatal ("getcwd failed");
1.51381 ++ tmp_len = strlen(tmp);
1.51382 ++ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
1.51383 ++ memcpy (concat_name, tmp, tmp_len);
1.51384 ++ concat_name[tmp_len] = '/';
1.51385 ++ strcpy (concat_name + tmp_len + 1, wrapper);
1.51386 ++ }
1.51387 ++ else
1.51388 ++ {
1.51389 ++ concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
1.51390 ++ memcpy (concat_name, p, p_len);
1.51391 ++ concat_name[p_len] = '/';
1.51392 ++ strcpy (concat_name + p_len + 1, wrapper);
1.51393 ++ }
1.51394 ++ if (check_executable(concat_name))
1.51395 ++ return concat_name;
1.51396 ++ XFREE(concat_name);
1.51397 ++ }
1.51398 ++ }
1.51399 ++ /* not found in PATH; assume curdir */
1.51400 ++ }
1.51401 ++ /* Relative path | not found in path: prepend cwd */
1.51402 ++ if (getcwd (tmp, LT_PATHMAX) == NULL)
1.51403 ++ lt_fatal ("getcwd failed");
1.51404 ++ tmp_len = strlen(tmp);
1.51405 ++ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
1.51406 ++ memcpy (concat_name, tmp, tmp_len);
1.51407 ++ concat_name[tmp_len] = '/';
1.51408 ++ strcpy (concat_name + tmp_len + 1, wrapper);
1.51409 ++
1.51410 ++ if (check_executable(concat_name))
1.51411 ++ return concat_name;
1.51412 ++ XFREE(concat_name);
1.51413 ++ return NULL;
1.51414 ++}
1.51415 ++
1.51416 ++char *
1.51417 ++strendzap(char *str, const char *pat)
1.51418 ++{
1.51419 ++ size_t len, patlen;
1.51420 ++
1.51421 ++ assert(str != NULL);
1.51422 ++ assert(pat != NULL);
1.51423 ++
1.51424 ++ len = strlen(str);
1.51425 ++ patlen = strlen(pat);
1.51426 ++
1.51427 ++ if (patlen <= len)
1.51428 ++ {
1.51429 ++ str += len - patlen;
1.51430 ++ if (strcmp(str, pat) == 0)
1.51431 ++ *str = '\0';
1.51432 ++ }
1.51433 ++ return str;
1.51434 ++}
1.51435 ++
1.51436 ++static void
1.51437 ++lt_error_core (int exit_status, const char * mode,
1.51438 ++ const char * message, va_list ap)
1.51439 ++{
1.51440 ++ fprintf (stderr, "%s: %s: ", program_name, mode);
1.51441 ++ vfprintf (stderr, message, ap);
1.51442 ++ fprintf (stderr, ".\n");
1.51443 ++
1.51444 ++ if (exit_status >= 0)
1.51445 ++ exit (exit_status);
1.51446 ++}
1.51447 ++
1.51448 ++void
1.51449 ++lt_fatal (const char *message, ...)
1.51450 ++{
1.51451 ++ va_list ap;
1.51452 ++ va_start (ap, message);
1.51453 ++ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
1.51454 ++ va_end (ap);
1.51455 ++}
1.51456 ++EOF
1.51457 ++ # we should really use a build-platform specific compiler
1.51458 ++ # here, but OTOH, the wrappers (shell script and this C one)
1.51459 ++ # are only useful if you want to execute the "real" binary.
1.51460 ++ # Since the "real" binary is built for $host, then this
1.51461 ++ # wrapper might as well be built for $host, too.
1.51462 ++ $opt_dry_run || $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
1.51463 ++ ;;
1.51464 ++ esac
1.51465 ++ $RM $output
1.51466 ++ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
1.51467 ++
1.51468 ++ $ECHO > $output "\
1.51469 ++#! $SHELL
1.51470 ++
1.51471 ++# $output - temporary wrapper script for $objdir/$outputname
1.51472 ++# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1.51473 ++#
1.51474 ++# The $output program cannot be directly executed until all the libtool
1.51475 ++# libraries that it depends on are installed.
1.51476 ++#
1.51477 ++# This wrapper script should never be moved out of the build directory.
1.51478 ++# If it is, it will not operate correctly.
1.51479 ++
1.51480 ++# Sed substitution that helps us do robust quoting. It backslashifies
1.51481 ++# metacharacters that are still active within double-quoted strings.
1.51482 ++Xsed='${SED} -e 1s/^X//'
1.51483 ++sed_quote_subst='$sed_quote_subst'
1.51484 ++
1.51485 ++# Be Bourne compatible
1.51486 ++if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
1.51487 ++ emulate sh
1.51488 ++ NULLCMD=:
1.51489 ++ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
1.51490 ++ # is contrary to our usage. Disable this feature.
1.51491 ++ alias -g '\${1+\"\$@\"}'='\"\$@\"'
1.51492 ++ setopt NO_GLOB_SUBST
1.51493 ++else
1.51494 ++ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
1.51495 ++fi
1.51496 ++BIN_SH=xpg4; export BIN_SH # for Tru64
1.51497 ++DUALCASE=1; export DUALCASE # for MKS sh
1.51498 ++
1.51499 ++# The HP-UX ksh and POSIX shell print the target directory to stdout
1.51500 ++# if CDPATH is set.
1.51501 ++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
1.51502 ++
1.51503 ++relink_command=\"$relink_command\"
1.51504 ++
1.51505 ++# This environment variable determines our operation mode.
1.51506 ++if test \"\$libtool_install_magic\" = \"$magic\"; then
1.51507 ++ # install mode needs the following variables:
1.51508 ++ generated_by_libtool_version='$macro_version'
1.51509 ++ notinst_deplibs='$notinst_deplibs'
1.51510 ++else
1.51511 ++ # When we are sourced in execute mode, \$file and \$ECHO are already set.
1.51512 ++ if test \"\$libtool_execute_magic\" != \"$magic\"; then
1.51513 ++ ECHO=\"$qecho\"
1.51514 ++ file=\"\$0\"
1.51515 ++ # Make sure echo works.
1.51516 ++ if test \"X\$1\" = X--no-reexec; then
1.51517 ++ # Discard the --no-reexec flag, and continue.
1.51518 ++ shift
1.51519 ++ elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
1.51520 ++ # Yippee, \$ECHO works!
1.51521 ++ :
1.51522 ++ else
1.51523 ++ # Restart under the correct shell, and then maybe \$ECHO will work.
1.51524 ++ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
1.51525 ++ fi
1.51526 ++ fi\
1.51527 ++"
1.51528 ++ $ECHO >> $output "\
1.51529 ++
1.51530 ++ # Find the directory that this script lives in.
1.51531 ++ thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
1.51532 ++ test \"x\$thisdir\" = \"x\$file\" && thisdir=.
1.51533 ++
1.51534 ++ # Follow symbolic links until we get to the real thisdir.
1.51535 ++ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
1.51536 ++ while test -n \"\$file\"; do
1.51537 ++ destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
1.51538 ++
1.51539 ++ # If there was a directory component, then change thisdir.
1.51540 ++ if test \"x\$destdir\" != \"x\$file\"; then
1.51541 ++ case \"\$destdir\" in
1.51542 ++ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
1.51543 ++ *) thisdir=\"\$thisdir/\$destdir\" ;;
1.51544 ++ esac
1.51545 ++ fi
1.51546 ++
1.51547 ++ file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
1.51548 ++ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
1.51549 ++ done
1.51550 ++
1.51551 ++ # Try to get the absolute directory name.
1.51552 ++ absdir=\`cd \"\$thisdir\" && pwd\`
1.51553 ++ test -n \"\$absdir\" && thisdir=\"\$absdir\"
1.51554 ++"
1.51555 ++
1.51556 ++ if test "$fast_install" = yes; then
1.51557 ++ $ECHO >> $output "\
1.51558 ++ program=lt-'$outputname'$exeext
1.51559 ++ progdir=\"\$thisdir/$objdir\"
1.51560 ++
1.51561 ++ if test ! -f \"\$progdir/\$program\" ||
1.51562 ++ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
1.51563 ++ test \"X\$file\" != \"X\$progdir/\$program\"; }; then
1.51564 ++
1.51565 ++ file=\"\$\$-\$program\"
1.51566 ++
1.51567 ++ if test ! -d \"\$progdir\"; then
1.51568 ++ $MKDIR \"\$progdir\"
1.51569 ++ else
1.51570 ++ $RM \"\$progdir/\$file\"
1.51571 ++ fi"
1.51572 ++
1.51573 ++ $ECHO >> $output "\
1.51574 ++
1.51575 ++ # relink executable if necessary
1.51576 ++ if test -n \"\$relink_command\"; then
1.51577 ++ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
1.51578 ++ else
1.51579 ++ $ECHO \"\$relink_command_output\" >&2
1.51580 ++ $RM \"\$progdir/\$file\"
1.51581 ++ exit 1
1.51582 ++ fi
1.51583 ++ fi
1.51584 ++
1.51585 ++ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
1.51586 ++ { $RM \"\$progdir/\$program\";
1.51587 ++ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
1.51588 ++ $RM \"\$progdir/\$file\"
1.51589 ++ fi"
1.51590 ++ else
1.51591 ++ $ECHO >> $output "\
1.51592 ++ program='$outputname'
1.51593 ++ progdir=\"\$thisdir/$objdir\"
1.51594 ++"
1.51595 ++ fi
1.51596 ++
1.51597 ++ $ECHO >> $output "\
1.51598 ++
1.51599 ++ if test -f \"\$progdir/\$program\"; then"
1.51600 ++
1.51601 ++ # Export our shlibpath_var if we have one.
1.51602 ++ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
1.51603 ++ $ECHO >> $output "\
1.51604 ++ # Add our own library path to $shlibpath_var
1.51605 ++ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
1.51606 ++
1.51607 ++ # Some systems cannot cope with colon-terminated $shlibpath_var
1.51608 ++ # The second colon is a workaround for a bug in BeOS R4 sed
1.51609 ++ $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
1.51610 ++
1.51611 ++ export $shlibpath_var
1.51612 ++"
1.51613 ++ fi
1.51614 ++
1.51615 ++ # fixup the dll searchpath if we need to.
1.51616 ++ if test -n "$dllsearchpath"; then
1.51617 ++ $ECHO >> $output "\
1.51618 ++ # Add the dll search path components to the executable PATH
1.51619 ++ PATH=$dllsearchpath:\$PATH
1.51620 ++"
1.51621 ++ fi
1.51622 ++
1.51623 ++ $ECHO >> $output "\
1.51624 ++ if test \"\$libtool_execute_magic\" != \"$magic\"; then
1.51625 ++ # Run the actual program with our arguments.
1.51626 ++"
1.51627 ++ case $host in
1.51628 ++ # Backslashes separate directories on plain windows
1.51629 ++ *-*-mingw | *-*-os2*)
1.51630 ++ $ECHO >> $output "\
1.51631 ++ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
1.51632 ++"
1.51633 ++ ;;
1.51634 ++
1.51635 ++ *)
1.51636 ++ $ECHO >> $output "\
1.51637 ++ exec \"\$progdir/\$program\" \${1+\"\$@\"}
1.51638 ++"
1.51639 ++ ;;
1.51640 ++ esac
1.51641 ++ $ECHO >> $output "\
1.51642 ++ \$ECHO \"\$0: cannot exec \$program \$*\"
1.51643 ++ exit 1
1.51644 ++ fi
1.51645 ++ else
1.51646 ++ # The program doesn't exist.
1.51647 ++ \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
1.51648 ++ \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
1.51649 ++ $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
1.51650 ++ exit 1
1.51651 ++ fi
1.51652 ++fi\
1.51653 ++"
1.51654 ++ chmod +x $output
1.51655 ++ }
1.51656 ++ exit $EXIT_SUCCESS
1.51657 ++ ;;
1.51658 ++ esac
1.51659 ++
1.51660 ++ # See if we need to build an old-fashioned archive.
1.51661 ++ for oldlib in $oldlibs; do
1.51662 ++
1.51663 ++ if test "$build_libtool_libs" = convenience; then
1.51664 ++ oldobjs="$libobjs_save $symfileobj"
1.51665 ++ addlibs="$convenience"
1.51666 ++ build_libtool_libs=no
1.51667 ++ else
1.51668 ++ if test "$build_libtool_libs" = module; then
1.51669 ++ oldobjs="$libobjs_save"
1.51670 ++ build_libtool_libs=no
1.51671 ++ else
1.51672 ++ oldobjs="$old_deplibs $non_pic_objects"
1.51673 ++ if test "$preload" = yes && test -f "$symfileobj"; then
1.51674 ++ oldobjs="$oldobjs $symfileobj"
1.51675 ++ fi
1.51676 ++ fi
1.51677 ++ addlibs="$old_convenience"
1.51678 ++ fi
1.51679 ++
1.51680 ++ if test -n "$addlibs"; then
1.51681 ++ gentop="$output_objdir/${outputname}x"
1.51682 ++ generated="$generated $gentop"
1.51683 ++
1.51684 ++ func_extract_archives $gentop $addlibs
1.51685 ++ oldobjs="$oldobjs $func_extract_archives_result"
1.51686 ++ fi
1.51687 ++
1.51688 ++ # Do each command in the archive commands.
1.51689 ++ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
1.51690 ++ cmds=$old_archive_from_new_cmds
1.51691 ++ else
1.51692 ++
1.51693 ++ # Add any objects from preloaded convenience libraries
1.51694 ++ if test -n "$dlprefiles"; then
1.51695 ++ gentop="$output_objdir/${outputname}x"
1.51696 ++ generated="$generated $gentop"
1.51697 ++
1.51698 ++ func_extract_archives $gentop $dlprefiles
1.51699 ++ oldobjs="$oldobjs $func_extract_archives_result"
1.51700 ++ fi
1.51701 ++
1.51702 ++ # POSIX demands no paths to be encoded in archives. We have
1.51703 ++ # to avoid creating archives with duplicate basenames if we
1.51704 ++ # might have to extract them afterwards, e.g., when creating a
1.51705 ++ # static archive out of a convenience library, or when linking
1.51706 ++ # the entirety of a libtool archive into another (currently
1.51707 ++ # not supported by libtool).
1.51708 ++ if (for obj in $oldobjs
1.51709 ++ do
1.51710 ++ func_basename "$obj"
1.51711 ++ $ECHO "$func_basename_result"
1.51712 ++ done | sort | sort -uc >/dev/null 2>&1); then
1.51713 ++ :
1.51714 ++ else
1.51715 ++ $ECHO "copying selected object files to avoid basename conflicts..."
1.51716 ++ gentop="$output_objdir/${outputname}x"
1.51717 ++ generated="$generated $gentop"
1.51718 ++ func_mkdir_p "$gentop"
1.51719 ++ save_oldobjs=$oldobjs
1.51720 ++ oldobjs=
1.51721 ++ counter=1
1.51722 ++ for obj in $save_oldobjs
1.51723 ++ do
1.51724 ++ func_basename "$obj"
1.51725 ++ objbase="$func_basename_result"
1.51726 ++ case " $oldobjs " in
1.51727 ++ " ") oldobjs=$obj ;;
1.51728 ++ *[\ /]"$objbase "*)
1.51729 ++ while :; do
1.51730 ++ # Make sure we don't pick an alternate name that also
1.51731 ++ # overlaps.
1.51732 ++ newobj=lt$counter-$objbase
1.51733 ++ counter=`expr $counter + 1`
1.51734 ++ case " $oldobjs " in
1.51735 ++ *[\ /]"$newobj "*) ;;
1.51736 ++ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
1.51737 ++ esac
1.51738 ++ done
1.51739 ++ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
1.51740 ++ oldobjs="$oldobjs $gentop/$newobj"
1.51741 ++ ;;
1.51742 ++ *) oldobjs="$oldobjs $obj" ;;
1.51743 ++ esac
1.51744 ++ done
1.51745 ++ fi
1.51746 ++ eval cmds=\"$old_archive_cmds\"
1.51747 ++
1.51748 ++ if len=`expr "X$cmds" : ".*" 2>/dev/null` &&
1.51749 ++ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
1.51750 ++ cmds=$old_archive_cmds
1.51751 ++ else
1.51752 ++ # the command line is too long to link in one step, link in parts
1.51753 ++ func_echo "using piecewise archive linking..."
1.51754 ++ save_RANLIB=$RANLIB
1.51755 ++ RANLIB=:
1.51756 ++ objlist=
1.51757 ++ concat_cmds=
1.51758 ++ save_oldobjs=$oldobjs
1.51759 ++ # Is there a better way of finding the last object in the list?
1.51760 ++ for obj in $save_oldobjs
1.51761 ++ do
1.51762 ++ last_oldobj=$obj
1.51763 ++ done
1.51764 ++ for obj in $save_oldobjs
1.51765 ++ do
1.51766 ++ oldobjs="$objlist $obj"
1.51767 ++ objlist="$objlist $obj"
1.51768 ++ eval test_cmds=\"$old_archive_cmds\"
1.51769 ++ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
1.51770 ++ test "$len" -le "$max_cmd_len"; then
1.51771 ++ :
1.51772 ++ else
1.51773 ++ # the above command should be used before it gets too long
1.51774 ++ oldobjs=$objlist
1.51775 ++ if test "$obj" = "$last_oldobj" ; then
1.51776 ++ RANLIB=$save_RANLIB
1.51777 ++ fi
1.51778 ++ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
1.51779 ++ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
1.51780 ++ objlist=
1.51781 ++ fi
1.51782 ++ done
1.51783 ++ RANLIB=$save_RANLIB
1.51784 ++ oldobjs=$objlist
1.51785 ++ if test "X$oldobjs" = "X" ; then
1.51786 ++ eval cmds=\"\$concat_cmds\"
1.51787 ++ else
1.51788 ++ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
1.51789 ++ fi
1.51790 ++ fi
1.51791 ++ fi
1.51792 ++ func_execute_cmds "$cmds" 'exit $?'
1.51793 ++ done
1.51794 ++
1.51795 ++ test -n "$generated" && \
1.51796 ++ func_show_eval "${RM}r$generated"
1.51797 ++
1.51798 ++ # Now create the libtool archive.
1.51799 ++ case $output in
1.51800 ++ *.la)
1.51801 ++ old_library=
1.51802 ++ test "$build_old_libs" = yes && old_library="$libname.$libext"
1.51803 ++ func_echo "creating $output"
1.51804 ++
1.51805 ++ # Preserve any variables that may affect compiler behavior
1.51806 ++ for var in $variables_saved_for_relink; do
1.51807 ++ if eval test -z \"\${$var+set}\"; then
1.51808 ++ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
1.51809 ++ elif eval var_value=\$$var; test -z "$var_value"; then
1.51810 ++ relink_command="$var=; export $var; $relink_command"
1.51811 ++ else
1.51812 ++ func_quote_for_eval "$var_value"
1.51813 ++ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
1.51814 ++ fi
1.51815 ++ done
1.51816 ++ # Quote the link command for shipping.
1.51817 ++ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
1.51818 ++ relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
1.51819 ++ if test "$hardcode_automatic" = yes ; then
1.51820 ++ relink_command=
1.51821 ++ fi
1.51822 ++
1.51823 ++ # Only create the output if not a dry run.
1.51824 ++ $opt_dry_run || {
1.51825 ++ for installed in no yes; do
1.51826 ++ if test "$installed" = yes; then
1.51827 ++ if test -z "$install_libdir"; then
1.51828 ++ break
1.51829 ++ fi
1.51830 ++ output="$output_objdir/$outputname"i
1.51831 ++ # Replace all uninstalled libtool libraries with the installed ones
1.51832 ++ newdependency_libs=
1.51833 ++ for deplib in $dependency_libs; do
1.51834 ++ case $deplib in
1.51835 ++ *.la)
1.51836 ++ func_basename "$deplib"
1.51837 ++ name="$func_basename_result"
1.51838 ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
1.51839 ++ test -z "$libdir" && \
1.51840 ++ func_fatal_error "\`$deplib' is not a valid libtool archive"
1.51841 ++ newdependency_libs="$newdependency_libs $libdir/$name"
1.51842 ++ ;;
1.51843 ++ *) newdependency_libs="$newdependency_libs $deplib" ;;
1.51844 ++ esac
1.51845 ++ done
1.51846 ++ dependency_libs="$newdependency_libs"
1.51847 ++ newdlfiles=
1.51848 ++
1.51849 ++ for lib in $dlfiles; do
1.51850 ++ case $lib in
1.51851 ++ *.la)
1.51852 ++ func_basename "$lib"
1.51853 ++ name="$func_basename_result"
1.51854 ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
1.51855 ++ test -z "$libdir" && \
1.51856 ++ func_fatal_error "\`$lib' is not a valid libtool archive"
1.51857 ++ newdlfiles="$newdlfiles $libdir/$name"
1.51858 ++ ;;
1.51859 ++ *) newdlfiles="$newdlfiles $lib" ;;
1.51860 ++ esac
1.51861 ++ done
1.51862 ++ dlfiles="$newdlfiles"
1.51863 ++ newdlprefiles=
1.51864 ++ for lib in $dlprefiles; do
1.51865 ++ case $lib in
1.51866 ++ *.la)
1.51867 ++ # Only pass preopened files to the pseudo-archive (for
1.51868 ++ # eventual linking with the app. that links it) if we
1.51869 ++ # didn't already link the preopened objects directly into
1.51870 ++ # the library:
1.51871 ++ func_basename "$lib"
1.51872 ++ name="$func_basename_result"
1.51873 ++ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
1.51874 ++ test -z "$libdir" && \
1.51875 ++ func_fatal_error "\`$lib' is not a valid libtool archive"
1.51876 ++ newdlprefiles="$newdlprefiles $libdir/$name"
1.51877 ++ ;;
1.51878 ++ esac
1.51879 ++ done
1.51880 ++ dlprefiles="$newdlprefiles"
1.51881 ++ else
1.51882 ++ newdlfiles=
1.51883 ++ for lib in $dlfiles; do
1.51884 ++ case $lib in
1.51885 ++ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
1.51886 ++ *) abs=`pwd`"/$lib" ;;
1.51887 ++ esac
1.51888 ++ newdlfiles="$newdlfiles $abs"
1.51889 ++ done
1.51890 ++ dlfiles="$newdlfiles"
1.51891 ++ newdlprefiles=
1.51892 ++ for lib in $dlprefiles; do
1.51893 ++ case $lib in
1.51894 ++ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
1.51895 ++ *) abs=`pwd`"/$lib" ;;
1.51896 ++ esac
1.51897 ++ newdlprefiles="$newdlprefiles $abs"
1.51898 ++ done
1.51899 ++ dlprefiles="$newdlprefiles"
1.51900 ++ fi
1.51901 ++ $RM $output
1.51902 ++ # place dlname in correct position for cygwin
1.51903 ++ tdlname=$dlname
1.51904 ++ case $host,$output,$installed,$module,$dlname in
1.51905 ++ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
1.51906 ++ esac
1.51907 ++ $ECHO > $output "\
1.51908 ++# $outputname - a libtool library file
1.51909 ++# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1.51910 ++#
1.51911 ++# Please DO NOT delete this file!
1.51912 ++# It is necessary for linking the library.
1.51913 ++
1.51914 ++# The name that we can dlopen(3).
1.51915 ++dlname='$tdlname'
1.51916 ++
1.51917 ++# Names of this library.
1.51918 ++library_names='$library_names'
1.51919 ++
1.51920 ++# The name of the static archive.
1.51921 ++old_library='$old_library'
1.51922 ++
1.51923 ++# Linker flags that can not go in dependency_libs.
1.51924 ++inherited_linker_flags='$new_inherited_linker_flags'
1.51925 ++
1.51926 ++# Libraries that this one depends upon.
1.51927 ++dependency_libs='$dependency_libs'
1.51928 ++
1.51929 ++# Names of additional weak libraries provided by this library
1.51930 ++weak_library_names='$weak_libs'
1.51931 ++
1.51932 ++# Version information for $libname.
1.51933 ++current=$current
1.51934 ++age=$age
1.51935 ++revision=$revision
1.51936 ++
1.51937 ++# Is this an already installed library?
1.51938 ++installed=$installed
1.51939 ++
1.51940 ++# Should we warn about portability when linking against -modules?
1.51941 ++shouldnotlink=$module
1.51942 ++
1.51943 ++# Files to dlopen/dlpreopen
1.51944 ++dlopen='$dlfiles'
1.51945 ++dlpreopen='$dlprefiles'
1.51946 ++
1.51947 ++# Directory that this library needs to be installed in:
1.51948 ++libdir='$install_libdir'"
1.51949 ++ if test "$installed" = no && test "$need_relink" = yes; then
1.51950 ++ $ECHO >> $output "\
1.51951 ++relink_command=\"$relink_command\""
1.51952 ++ fi
1.51953 ++ done
1.51954 ++ }
1.51955 ++
1.51956 ++ # Do a symbolic link so that the libtool archive can be found in
1.51957 ++ # LD_LIBRARY_PATH before the program is installed.
1.51958 ++ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
1.51959 ++ ;;
1.51960 ++ esac
1.51961 ++ exit $EXIT_SUCCESS
1.51962 ++}
1.51963 ++
1.51964 ++{ test "$mode" = link || test "$mode" = relink; } &&
1.51965 ++ func_mode_link ${1+"$@"}
1.51966 ++
1.51967 ++
1.51968 ++# func_mode_uninstall arg...
1.51969 ++func_mode_uninstall ()
1.51970 ++{
1.51971 ++ $opt_debug
1.51972 ++ RM="$nonopt"
1.51973 ++ files=
1.51974 ++ rmforce=
1.51975 ++ exit_status=0
1.51976 ++
1.51977 ++ # This variable tells wrapper scripts just to set variables rather
1.51978 ++ # than running their programs.
1.51979 ++ libtool_install_magic="$magic"
1.51980 ++
1.51981 ++ for arg
1.51982 ++ do
1.51983 ++ case $arg in
1.51984 ++ -f) RM="$RM $arg"; rmforce=yes ;;
1.51985 ++ -*) RM="$RM $arg" ;;
1.51986 ++ *) files="$files $arg" ;;
1.51987 ++ esac
1.51988 ++ done
1.51989 ++
1.51990 ++ test -z "$RM" && \
1.51991 ++ func_fatal_help "you must specify an RM program"
1.51992 ++
1.51993 ++ rmdirs=
1.51994 ++
1.51995 ++ origobjdir="$objdir"
1.51996 ++ for file in $files; do
1.51997 ++ func_dirname "$file" "" "."
1.51998 ++ dir="$func_dirname_result"
1.51999 ++ if test "X$dir" = X.; then
1.52000 ++ objdir="$origobjdir"
1.52001 ++ else
1.52002 ++ objdir="$dir/$origobjdir"
1.52003 ++ fi
1.52004 ++ func_basename "$file"
1.52005 ++ name="$func_basename_result"
1.52006 ++ test "$mode" = uninstall && objdir="$dir"
1.52007 ++
1.52008 ++ # Remember objdir for removal later, being careful to avoid duplicates
1.52009 ++ if test "$mode" = clean; then
1.52010 ++ case " $rmdirs " in
1.52011 ++ *" $objdir "*) ;;
1.52012 ++ *) rmdirs="$rmdirs $objdir" ;;
1.52013 ++ esac
1.52014 ++ fi
1.52015 ++
1.52016 ++ # Don't error if the file doesn't exist and rm -f was used.
1.52017 ++ if { test -L "$file"; } >/dev/null 2>&1 ||
1.52018 ++ { test -h "$file"; } >/dev/null 2>&1 ||
1.52019 ++ test -f "$file"; then
1.52020 ++ :
1.52021 ++ elif test -d "$file"; then
1.52022 ++ exit_status=1
1.52023 ++ continue
1.52024 ++ elif test "$rmforce" = yes; then
1.52025 ++ continue
1.52026 ++ fi
1.52027 ++
1.52028 ++ rmfiles="$file"
1.52029 ++
1.52030 ++ case $name in
1.52031 ++ *.la)
1.52032 ++ # Possibly a libtool archive, so verify it.
1.52033 ++ if func_lalib_p "$file"; then
1.52034 ++ func_source $dir/$name
1.52035 ++
1.52036 ++ # Delete the libtool libraries and symlinks.
1.52037 ++ for n in $library_names; do
1.52038 ++ rmfiles="$rmfiles $objdir/$n"
1.52039 ++ done
1.52040 ++ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
1.52041 ++
1.52042 ++ case "$mode" in
1.52043 ++ clean)
1.52044 ++ case " $library_names " in
1.52045 ++ # " " in the beginning catches empty $dlname
1.52046 ++ *" $dlname "*) ;;
1.52047 ++ *) rmfiles="$rmfiles $objdir/$dlname" ;;
1.52048 ++ esac
1.52049 ++ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
1.52050 ++ ;;
1.52051 ++ uninstall)
1.52052 ++ if test -n "$library_names"; then
1.52053 ++ # Do each command in the postuninstall commands.
1.52054 ++ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
1.52055 ++ fi
1.52056 ++
1.52057 ++ if test -n "$old_library"; then
1.52058 ++ # Do each command in the old_postuninstall commands.
1.52059 ++ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
1.52060 ++ fi
1.52061 ++ # FIXME: should reinstall the best remaining shared library.
1.52062 ++ ;;
1.52063 ++ esac
1.52064 ++ fi
1.52065 ++ ;;
1.52066 ++
1.52067 ++ *.lo)
1.52068 ++ # Possibly a libtool object, so verify it.
1.52069 ++ if func_lalib_p "$file"; then
1.52070 ++
1.52071 ++ # Read the .lo file
1.52072 ++ func_source $dir/$name
1.52073 ++
1.52074 ++ # Add PIC object to the list of files to remove.
1.52075 ++ if test -n "$pic_object" &&
1.52076 ++ test "$pic_object" != none; then
1.52077 ++ rmfiles="$rmfiles $dir/$pic_object"
1.52078 ++ fi
1.52079 ++
1.52080 ++ # Add non-PIC object to the list of files to remove.
1.52081 ++ if test -n "$non_pic_object" &&
1.52082 ++ test "$non_pic_object" != none; then
1.52083 ++ rmfiles="$rmfiles $dir/$non_pic_object"
1.52084 ++ fi
1.52085 ++ fi
1.52086 ++ ;;
1.52087 ++
1.52088 ++ *)
1.52089 ++ if test "$mode" = clean ; then
1.52090 ++ noexename=$name
1.52091 ++ case $file in
1.52092 ++ *.exe)
1.52093 ++ func_stripname '' '.exe' "$file"
1.52094 ++ file=$func_stripname_result
1.52095 ++ func_stripname '' '.exe' "$name"
1.52096 ++ noexename=$func_stripname_result
1.52097 ++ # $file with .exe has already been added to rmfiles,
1.52098 ++ # add $file without .exe
1.52099 ++ rmfiles="$rmfiles $file"
1.52100 ++ ;;
1.52101 ++ esac
1.52102 ++ # Do a test to see if this is a libtool program.
1.52103 ++ if func_ltwrapper_p "$file"; then
1.52104 ++ relink_command=
1.52105 ++ func_source $dir/$noexename
1.52106 ++
1.52107 ++ # note $name still contains .exe if it was in $file originally
1.52108 ++ # as does the version of $file that was added into $rmfiles
1.52109 ++ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
1.52110 ++ if test "$fast_install" = yes && test -n "$relink_command"; then
1.52111 ++ rmfiles="$rmfiles $objdir/lt-$name"
1.52112 ++ fi
1.52113 ++ if test "X$noexename" != "X$name" ; then
1.52114 ++ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
1.52115 ++ fi
1.52116 ++ fi
1.52117 ++ fi
1.52118 ++ ;;
1.52119 ++ esac
1.52120 ++ func_show_eval "$RM $rmfiles" 'exit_status=1'
1.52121 ++ done
1.52122 ++ objdir="$origobjdir"
1.52123 ++
1.52124 ++ # Try to remove the ${objdir}s in the directories where we deleted files
1.52125 ++ for dir in $rmdirs; do
1.52126 ++ if test -d "$dir"; then
1.52127 ++ func_show_eval "rmdir $dir >/dev/null 2>&1"
1.52128 ++ fi
1.52129 ++ done
1.52130 ++
1.52131 ++ exit $exit_status
1.52132 ++}
1.52133 ++
1.52134 ++{ test "$mode" = uninstall || test "$mode" = clean; } &&
1.52135 ++ func_mode_uninstall ${1+"$@"}
1.52136 ++
1.52137 ++test -z "$mode" && {
1.52138 ++ help="$generic_help"
1.52139 ++ func_fatal_help "you must specify a MODE"
1.52140 ++}
1.52141 ++
1.52142 ++test -z "$exec_cmd" && \
1.52143 ++ func_fatal_help "invalid operation mode \`$mode'"
1.52144 ++
1.52145 ++if test -n "$exec_cmd"; then
1.52146 ++ eval exec "$exec_cmd"
1.52147 ++ exit $EXIT_FAILURE
1.52148 ++fi
1.52149 ++
1.52150 ++exit $exit_status
1.52151 ++
1.52152 ++
1.52153 ++# The TAGs below are defined such that we never get into a situation
1.52154 ++# in which we disable both kinds of libraries. Given conflicting
1.52155 ++# choices, we go for a static library, that is the most portable,
1.52156 ++# since we can't tell whether shared libraries were disabled because
1.52157 ++# the user asked for that or because the platform doesn't support
1.52158 ++# them. This is particularly important on AIX, because we don't
1.52159 ++# support having both static and shared libraries enabled at the same
1.52160 ++# time on that platform, so we default to a shared-only configuration.
1.52161 ++# If a disable-shared tag is given, we'll fallback to a static-only
1.52162 ++# configuration. But we'll never go from static-only to shared-only.
1.52163 ++
1.52164 ++# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
1.52165 ++build_libtool_libs=no
1.52166 ++build_old_libs=yes
1.52167 ++# ### END LIBTOOL TAG CONFIG: disable-shared
1.52168 ++
1.52169 ++# ### BEGIN LIBTOOL TAG CONFIG: disable-static
1.52170 ++build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
1.52171 ++# ### END LIBTOOL TAG CONFIG: disable-static
1.52172 ++
1.52173 ++# Local Variables:
1.52174 ++# mode:shell-script
1.52175 ++# sh-indentation:2
1.52176 ++# End:
1.52177 ++# vi:sw=2
1.52178 +--- a/bfd/Makefile.in
1.52179 ++++ b/bfd/Makefile.in
1.52180 +@@ -312,6 +312,7 @@ ALL_MACHINES = \
1.52181 + cpu-arc.lo \
1.52182 + cpu-arm.lo \
1.52183 + cpu-avr.lo \
1.52184 ++ cpu-avr32.lo \
1.52185 + cpu-bfin.lo \
1.52186 + cpu-cr16.lo \
1.52187 + cpu-cr16c.lo \
1.52188 +@@ -493,6 +494,7 @@ BFD32_BACKENDS = \
1.52189 + elf32-arc.lo \
1.52190 + elf32-arm.lo \
1.52191 + elf32-avr.lo \
1.52192 ++ elf32-avr32.lo \
1.52193 + elf32-bfin.lo \
1.52194 + elf32-cr16.lo \
1.52195 + elf32-cr16c.lo \
1.52196 +@@ -1908,6 +1910,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
1.52197 + $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
1.52198 + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
1.52199 + $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
1.52200 ++elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
1.52201 ++ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
1.52202 ++ $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
1.52203 ++ elf32-target.h
1.52204 + elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
1.52205 + $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
1.52206 + $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
1.52207 +--- /dev/null
1.52208 ++++ b/bfd/po/Makefile.in
1.52209 +@@ -0,0 +1,297 @@
1.52210 ++# Makefile for program source directory in GNU NLS utilities package.
1.52211 ++# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
1.52212 ++# Copyright 2001, 2003, 2006 Free Software Foundation, Inc.
1.52213 ++#
1.52214 ++# This file may be copied and used freely without restrictions. It can
1.52215 ++# be used in projects which are not available under the GNU Public License
1.52216 ++# but which still want to provide support for the GNU gettext functionality.
1.52217 ++# Please note that the actual code is *not* freely available.
1.52218 ++
1.52219 ++PACKAGE = bfd
1.52220 ++VERSION = 2.18.atmel.1.0.1.avr32linux.1
1.52221 ++
1.52222 ++SHELL = /bin/sh
1.52223 ++
1.52224 ++
1.52225 ++srcdir = .
1.52226 ++top_srcdir = ..
1.52227 ++
1.52228 ++top_builddir = ..
1.52229 ++
1.52230 ++prefix = /usr
1.52231 ++exec_prefix = ${prefix}
1.52232 ++datadir = $(prefix)/share
1.52233 ++localedir = $(datadir)/locale
1.52234 ++gnulocaledir = $(prefix)/share/locale
1.52235 ++gettextsrcdir = $(prefix)/share/gettext/po
1.52236 ++subdir = po
1.52237 ++
1.52238 ++DESTDIR =
1.52239 ++
1.52240 ++INSTALL = /usr/bin/install -c
1.52241 ++INSTALL_DATA = ${INSTALL} -m 644
1.52242 ++MKINSTALLDIRS = $(top_builddir)/./../mkinstalldirs
1.52243 ++
1.52244 ++CC = gcc
1.52245 ++GENCAT = gencat
1.52246 ++GMSGFMT = PATH=../src:$$PATH /usr/bin/msgfmt
1.52247 ++MSGFMT = /usr/bin/msgfmt
1.52248 ++XGETTEXT = PATH=../src:$$PATH /usr/bin/xgettext
1.52249 ++MSGMERGE = PATH=../src:$$PATH msgmerge
1.52250 ++
1.52251 ++DEFS = -DHAVE_CONFIG_H
1.52252 ++CFLAGS = -g -O2
1.52253 ++CPPFLAGS =
1.52254 ++
1.52255 ++INCLUDES = -I.. -I$(top_srcdir)/intl
1.52256 ++
1.52257 ++COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
1.52258 ++
1.52259 ++SOURCES = cat-id-tbl.c
1.52260 ++POFILES = @POFILES@
1.52261 ++GMOFILES = @GMOFILES@
1.52262 ++DISTFILES = ChangeLog Makefile.in.in SRC-POTFILES.in BLD-POTFILES.in $(PACKAGE).pot \
1.52263 ++stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
1.52264 ++
1.52265 ++# Note - the following line gets processed by bfd/configure and amended
1.52266 ++# to contain the full list of source dir POTFILES.
1.52267 ++SRC-POTFILES = \
1.52268 ++
1.52269 ++# Note - the following line gets processed by bfd/configure and amended
1.52270 ++# to contain the full list of build dir POTFILES.
1.52271 ++BLD-POTFILES = \
1.52272 ++
1.52273 ++CATALOGS = da.gmo es.gmo fr.gmo ja.gmo ro.gmo rw.gmo sv.gmo tr.gmo vi.gmo zh_CN.gmo da.gmo es.gmo fr.gmo ja.gmo ro.gmo rw.gmo sv.gmo tr.gmo vi.gmo zh_CN.gmo
1.52274 ++CATOBJEXT = .gmo
1.52275 ++INSTOBJEXT = .mo
1.52276 ++
1.52277 ++.SUFFIXES:
1.52278 ++.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
1.52279 ++
1.52280 ++.c.o:
1.52281 ++ $(COMPILE) $<
1.52282 ++
1.52283 ++.po.pox:
1.52284 ++ $(MAKE) $(PACKAGE).pot
1.52285 ++ $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
1.52286 ++
1.52287 ++.po.mo:
1.52288 ++ $(MSGFMT) -o $@ $<
1.52289 ++
1.52290 ++.po.gmo:
1.52291 ++ file=`echo $* | sed 's,.*/,,'`.gmo \
1.52292 ++ && rm -f $$file && $(GMSGFMT) -o $$file $<
1.52293 ++
1.52294 ++.po.cat:
1.52295 ++ sed -f ../intl/po2msg.sed < $< > $*.msg \
1.52296 ++ && rm -f $@ && $(GENCAT) $@ $*.msg
1.52297 ++
1.52298 ++
1.52299 ++all: all-yes
1.52300 ++
1.52301 ++all-yes: $(CATALOGS) # $(PACKAGE).pot
1.52302 ++all-no:
1.52303 ++
1.52304 ++$(srcdir)/$(PACKAGE).pot: $(SRC-POTFILES) $(BLD-POTFILES)
1.52305 ++ $(XGETTEXT) --default-domain=$(PACKAGE) \
1.52306 ++ --directory=$(top_srcdir) \
1.52307 ++ --add-comments --keyword=_ --keyword=N_ \
1.52308 ++ --msgid-bugs-address=bug-binutils@gnu.org \
1.52309 ++ --files-from=$(srcdir)/SRC-POTFILES.in
1.52310 ++ $(XGETTEXT) --default-domain=$(PACKAGE) \
1.52311 ++ --directory=.. \
1.52312 ++ --directory=. \
1.52313 ++ --add-comments --keyword=_ --keyword=N_ \
1.52314 ++ --join-existing \
1.52315 ++ --msgid-bugs-address=bug-binutils@gnu.org \
1.52316 ++ --files-from=$(srcdir)/BLD-POTFILES.in
1.52317 ++ rm -f $(srcdir)/$(PACKAGE).pot
1.52318 ++ mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
1.52319 ++
1.52320 ++$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
1.52321 ++$(srcdir)/stamp-cat-id: $(PACKAGE).pot
1.52322 ++ rm -f cat-id-tbl.tmp
1.52323 ++ sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
1.52324 ++ | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
1.52325 ++ if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
1.52326 ++ rm cat-id-tbl.tmp; \
1.52327 ++ else \
1.52328 ++ echo cat-id-tbl.c changed; \
1.52329 ++ rm -f $(srcdir)/cat-id-tbl.c; \
1.52330 ++ mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
1.52331 ++ fi
1.52332 ++ cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
1.52333 ++
1.52334 ++
1.52335 ++install: install-exec install-data
1.52336 ++install-exec:
1.52337 ++install-info:
1.52338 ++install-html:
1.52339 ++install-data: install-data-yes
1.52340 ++install-data-no: all
1.52341 ++install-data-yes: all
1.52342 ++ if test -r $(MKINSTALLDIRS); then \
1.52343 ++ $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
1.52344 ++ else \
1.52345 ++ $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
1.52346 ++ fi
1.52347 ++ @catalogs='$(CATALOGS)'; \
1.52348 ++ for cat in $$catalogs; do \
1.52349 ++ cat=`basename $$cat`; \
1.52350 ++ case "$$cat" in \
1.52351 ++ *.gmo) destdir=$(gnulocaledir);; \
1.52352 ++ *) destdir=$(localedir);; \
1.52353 ++ esac; \
1.52354 ++ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
1.52355 ++ dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
1.52356 ++ if test -r $(MKINSTALLDIRS); then \
1.52357 ++ $(MKINSTALLDIRS) $$dir; \
1.52358 ++ else \
1.52359 ++ $(top_srcdir)/mkinstalldirs $$dir; \
1.52360 ++ fi; \
1.52361 ++ if test -r $$cat; then \
1.52362 ++ $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
1.52363 ++ echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
1.52364 ++ else \
1.52365 ++ $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
1.52366 ++ echo "installing $(srcdir)/$$cat as" \
1.52367 ++ "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
1.52368 ++ fi; \
1.52369 ++ if test -r $$cat.m; then \
1.52370 ++ $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
1.52371 ++ echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
1.52372 ++ else \
1.52373 ++ if test -r $(srcdir)/$$cat.m ; then \
1.52374 ++ $(INSTALL_DATA) $(srcdir)/$$cat.m \
1.52375 ++ $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
1.52376 ++ echo "installing $(srcdir)/$$cat as" \
1.52377 ++ "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
1.52378 ++ else \
1.52379 ++ true; \
1.52380 ++ fi; \
1.52381 ++ fi; \
1.52382 ++ done
1.52383 ++ if test "$(PACKAGE)" = "gettext"; then \
1.52384 ++ if test -r $(MKINSTALLDIRS); then \
1.52385 ++ $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
1.52386 ++ else \
1.52387 ++ $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
1.52388 ++ fi; \
1.52389 ++ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
1.52390 ++ $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
1.52391 ++ else \
1.52392 ++ : ; \
1.52393 ++ fi
1.52394 ++
1.52395 ++# Define this as empty until I found a useful application.
1.52396 ++installcheck:
1.52397 ++
1.52398 ++uninstall:
1.52399 ++ catalogs='$(CATALOGS)'; \
1.52400 ++ for cat in $$catalogs; do \
1.52401 ++ cat=`basename $$cat`; \
1.52402 ++ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
1.52403 ++ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
1.52404 ++ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
1.52405 ++ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
1.52406 ++ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
1.52407 ++ done
1.52408 ++ rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in
1.52409 ++
1.52410 ++check: all
1.52411 ++
1.52412 ++cat-id-tbl.o: ../intl/libgettext.h
1.52413 ++
1.52414 ++html dvi pdf ps info tags TAGS ID:
1.52415 ++
1.52416 ++mostlyclean:
1.52417 ++ rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
1.52418 ++ rm -fr *.o
1.52419 ++
1.52420 ++clean: mostlyclean
1.52421 ++
1.52422 ++distclean: clean
1.52423 ++ rm -f Makefile Makefile.in *.mo *.msg *.cat *.cat.m
1.52424 ++ rm -f SRC-POTFILES BLD-POTFILES
1.52425 ++
1.52426 ++maintainer-clean: distclean
1.52427 ++ @echo "This command is intended for maintainers to use;"
1.52428 ++ @echo "it deletes files that may require special tools to rebuild."
1.52429 ++ rm -f $(GMOFILES) SRC-POTFILES.in BLD-POTFILES.in
1.52430 ++
1.52431 ++distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
1.52432 ++dist distdir: update-po $(DISTFILES)
1.52433 ++ dists="$(DISTFILES)"; \
1.52434 ++ for file in $$dists; do \
1.52435 ++ ln $(srcdir)/$$file $(distdir) 2> /dev/null \
1.52436 ++ || cp -p $(srcdir)/$$file $(distdir); \
1.52437 ++ done
1.52438 ++
1.52439 ++update-po: Makefile
1.52440 ++ $(MAKE) $(PACKAGE).pot
1.52441 ++ PATH=`pwd`/../src:$$PATH; \
1.52442 ++ cd $(srcdir); \
1.52443 ++ catalogs='$(CATALOGS)'; \
1.52444 ++ for cat in $$catalogs; do \
1.52445 ++ cat=`basename $$cat`; \
1.52446 ++ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
1.52447 ++ mv $$lang.po $$lang.old.po; \
1.52448 ++ echo "$$lang:"; \
1.52449 ++ if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
1.52450 ++ rm -f $$lang.old.po; \
1.52451 ++ else \
1.52452 ++ echo "msgmerge for $$cat failed!"; \
1.52453 ++ rm -f $$lang.po; \
1.52454 ++ mv $$lang.old.po $$lang.po; \
1.52455 ++ fi; \
1.52456 ++ done
1.52457 ++
1.52458 ++SRC-POTFILES: SRC-POTFILES.in
1.52459 ++ ( if test 'x$(srcdir)' != 'x.'; then \
1.52460 ++ posrcprefix='$(top_srcdir)/'; \
1.52461 ++ else \
1.52462 ++ posrcprefix="../"; \
1.52463 ++ fi; \
1.52464 ++ rm -f $@-t $@ \
1.52465 ++ && (sed -e '/^#/d' \
1.52466 ++ -e '/^[ ]*$$/d' \
1.52467 ++ -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
1.52468 ++ | sed -e '$$s/\\$$//') > $@-t \
1.52469 ++ && chmod a-w $@-t \
1.52470 ++ && mv $@-t $@ )
1.52471 ++
1.52472 ++BLD-POTFILES: BLD-POTFILES.in
1.52473 ++ ( rm -f $@-t $@ \
1.52474 ++ && (sed -e '/^#/d' \
1.52475 ++ -e '/^[ ]*$$/d' \
1.52476 ++ -e "s@.*@ ../& \\\\@" < $(srcdir)/$@.in \
1.52477 ++ | sed -e '$$s/\\$$//') > $@-t \
1.52478 ++ && chmod a-w $@-t \
1.52479 ++ && mv $@-t $@ )
1.52480 ++
1.52481 ++SRC-POTFILES.in: # ../Makefile
1.52482 ++ cd .. && $(MAKE) po/SRC-POTFILES.in
1.52483 ++
1.52484 ++BLD-POTFILES.in: # ../Makefile
1.52485 ++ cd .. && $(MAKE) po/BLD-POTFILES.in
1.52486 ++
1.52487 ++# Note - The presence of SRC-POTFILES and BLD-POTFILES as dependencies
1.52488 ++# here breaks the implementation of the 'distclean' rule for maintainers.
1.52489 ++# This is because if 'make distclean' is run in the BFD directory, the
1.52490 ++# Makefile there will be deleted before 'distclean' is made here, and so
1.52491 ++# the dependency SRC-POTFILES -> SRC-POTFILES.in -> ../Makefile cannot
1.52492 ++# be satisfied.
1.52493 ++#
1.52494 ++# The SRC-POTFILES and BLD-POTFILES dependencies cannot be removed,
1.52495 ++# however since it is necessary that these files be built during
1.52496 ++# *configure* time, so that configure can insert them into the
1.52497 ++# po/Makefile that it is creating, so that the Makefile will have
1.52498 ++# the correct dependencies.
1.52499 ++Makefile: Make-in ../config.status SRC-POTFILES BLD-POTFILES
1.52500 ++ cd .. \
1.52501 ++ && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
1.52502 ++ CONFIG_HEADERS= $(SHELL) ./config.status
1.52503 ++
1.52504 ++# Tell versions [3.59,3.63) of GNU make not to export all variables.
1.52505 ++# Otherwise a system limit (for SysV at least) may be exceeded.
1.52506 ++.NOEXPORT:
1.52507 +--- a/binutils/Makefile.in
1.52508 ++++ b/binutils/Makefile.in
1.52509 +@@ -1327,7 +1327,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
1.52510 + $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
1.52511 + $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
1.52512 + $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
1.52513 +- $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
1.52514 ++ $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
1.52515 + $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
1.52516 + $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
1.52517 + $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
1.52518 +--- a/ld/Makefile.in
1.52519 ++++ b/ld/Makefile.in
1.52520 +@@ -384,7 +384,34 @@ ALL_EMULATIONS = \
1.52521 + eavr3.o \
1.52522 + eavr4.o \
1.52523 + eavr5.o \
1.52524 +- eavr6.o \
1.52525 ++ eavr6.o \
1.52526 ++ eavr32elf_ap7000.o \
1.52527 ++ eavr32elf_ap7001.o \
1.52528 ++ eavr32elf_ap7002.o \
1.52529 ++ eavr32elf_ap7200.o \
1.52530 ++ eavr32elf_uc3a0128.o \
1.52531 ++ eavr32elf_uc3a0256.o \
1.52532 ++ eavr32elf_uc3a0512.o \
1.52533 ++ eavr32elf_uc3a0512es.o \
1.52534 ++ eavr32elf_uc3a1128.o \
1.52535 ++ eavr32elf_uc3a1256.o \
1.52536 ++ eavr32elf_uc3a1512es.o \
1.52537 ++ eavr32elf_uc3a1512.o \
1.52538 ++ eavr32elf_uc3a364.o \
1.52539 ++ eavr32elf_uc3a364s.o \
1.52540 ++ eavr32elf_uc3a3128.o \
1.52541 ++ eavr32elf_uc3a3128s.o \
1.52542 ++ eavr32elf_uc3a3256.o \
1.52543 ++ eavr32elf_uc3a3256s.o \
1.52544 ++ eavr32elf_uc3b064.o \
1.52545 ++ eavr32elf_uc3b0128.o \
1.52546 ++ eavr32elf_uc3b0256es.o \
1.52547 ++ eavr32elf_uc3b0256.o \
1.52548 ++ eavr32elf_uc3b164.o \
1.52549 ++ eavr32elf_uc3b1128.o \
1.52550 ++ eavr32elf_uc3b1256es.o \
1.52551 ++ eavr32elf_uc3b1256.o \
1.52552 ++ eavr32linux.o \
1.52553 + ecoff_i860.o \
1.52554 + ecoff_sparc.o \
1.52555 + eelf32_spu.o \
1.52556 +@@ -1448,6 +1475,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
1.52557 + $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
1.52558 + ${GEN_DEPENDS}
1.52559 + ${GENSCRIPTS} avr6 "$(tdir_avr2)"
1.52560 ++eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
1.52561 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52562 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52563 ++ ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
1.52564 ++eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
1.52565 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52566 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52567 ++ ${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
1.52568 ++eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
1.52569 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52570 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52571 ++ ${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
1.52572 ++eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
1.52573 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52574 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52575 ++ ${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
1.52576 ++eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
1.52577 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52578 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52579 ++ ${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
1.52580 ++eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
1.52581 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52582 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52583 ++ ${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
1.52584 ++eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
1.52585 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52586 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52587 ++ ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
1.52588 ++eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
1.52589 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52590 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52591 ++ ${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
1.52592 ++eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
1.52593 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52594 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52595 ++ ${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
1.52596 ++eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
1.52597 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52598 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52599 ++ ${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
1.52600 ++eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
1.52601 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52602 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52603 ++ ${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
1.52604 ++eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
1.52605 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52606 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52607 ++ ${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
1.52608 ++eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
1.52609 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52610 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52611 ++ ${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
1.52612 ++eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
1.52613 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52614 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52615 ++ ${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
1.52616 ++eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
1.52617 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52618 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52619 ++ ${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
1.52620 ++eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
1.52621 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52622 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52623 ++ ${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
1.52624 ++eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
1.52625 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52626 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52627 ++ ${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
1.52628 ++eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
1.52629 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52630 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52631 ++ ${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
1.52632 ++eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
1.52633 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52634 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52635 ++ ${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
1.52636 ++eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
1.52637 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52638 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52639 ++ ${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
1.52640 ++eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
1.52641 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52642 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52643 ++ ${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
1.52644 ++eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
1.52645 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52646 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52647 ++ ${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
1.52648 ++eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
1.52649 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52650 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52651 ++ ${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
1.52652 ++eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
1.52653 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52654 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52655 ++ ${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
1.52656 ++eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
1.52657 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52658 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52659 ++ ${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
1.52660 ++eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
1.52661 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52662 ++ $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
1.52663 ++ ${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
1.52664 ++eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
1.52665 ++ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
1.52666 ++ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
1.52667 ++ ${GENSCRIPTS} avr32linux "$(tdir_avr32)"
1.52668 + ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
1.52669 + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
1.52670 + ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
1.52671 +@@ -2679,7 +2814,9 @@ install-exec-local: ld-new$(EXEEXT)
1.52672 + || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
1.52673 + fi
1.52674 +
1.52675 +-install-data-local:
1.52676 ++# We want install to imply install-info as per GNU standards, despite the
1.52677 ++# cygnus option.
1.52678 ++install-data-local: install-info
1.52679 + $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
1.52680 + for f in ldscripts/*; do \
1.52681 + $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
1.52682 +--- /dev/null
1.52683 ++++ b/libiberty/required-list
1.52684 +@@ -0,0 +1 @@
1.52685 ++./regex.o ./cplus-dem.o ./cp-demangle.o ./md5.o ./alloca.o ./argv.o ./choose-temp.o ./concat.o ./cp-demint.o ./dyn-string.o ./fdmatch.o ./fibheap.o ./filename_cmp.o ./floatformat.o ./fnmatch.o ./fopen_unlocked.o ./getopt.o ./getopt1.o ./getpwd.o ./getruntime.o ./hashtab.o ./hex.o ./lbasename.o ./lrealpath.o ./make-relative-prefix.o ./make-temp-file.o ./objalloc.o ./obstack.o ./partition.o ./pexecute.o ./physmem.o ./pex-common.o ./pex-one.o ./pex-unix.o ./safe-ctype.o ./sort.o ./spaces.o ./splay-tree.o ./strerror.o ./strsignal.o ./unlink-if-ordinary.o ./xatexit.o ./xexit.o ./xmalloc.o ./xmemdup.o ./xstrdup.o ./xstrerror.o ./xstrndup.o
1.52686 +--- a/opcodes/configure
1.52687 ++++ b/opcodes/configure
1.52688 +@@ -11418,6 +11418,7 @@ if test x${all_targets} = xfalse ; then
1.52689 + bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
1.52690 + bfd_arm_arch) ta="$ta arm-dis.lo" ;;
1.52691 + bfd_avr_arch) ta="$ta avr-dis.lo" ;;
1.52692 ++ bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
1.52693 + bfd_bfin_arch) ta="$ta bfin-dis.lo" ;;
1.52694 + bfd_cr16_arch) ta="$ta cr16-dis.lo cr16-opc.lo" ;;
1.52695 + bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
1.52696 +@@ -11476,7 +11477,7 @@ if test x${all_targets} = xfalse ; then
1.52697 + ta="$ta sh64-dis.lo sh64-opc.lo"
1.52698 + archdefs="$archdefs -DINCLUDE_SHMEDIA"
1.52699 + break;;
1.52700 +- esac;
1.52701 ++ esac
1.52702 + done
1.52703 + ta="$ta sh-dis.lo cgen-bitset.lo" ;;
1.52704 + bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
1.52705 +--- a/opcodes/Makefile.in
1.52706 ++++ b/opcodes/Makefile.in
1.52707 +@@ -257,6 +257,7 @@ LIBIBERTY = ../libiberty/libiberty.a
1.52708 + # Header files.
1.52709 + HFILES = \
1.52710 + cgen-ops.h cgen-types.h \
1.52711 ++ avr32-asm.h avr32-opc.h \
1.52712 + fr30-desc.h fr30-opc.h \
1.52713 + frv-desc.h frv-opc.h \
1.52714 + h8500-opc.h \
1.52715 +@@ -291,6 +292,9 @@ CFILES = \
1.52716 + arc-ext.c \
1.52717 + arm-dis.c \
1.52718 + avr-dis.c \
1.52719 ++ avr32-asm.c \
1.52720 ++ avr32-dis.c \
1.52721 ++ avr32-opc.c \
1.52722 + bfin-dis.c \
1.52723 + cgen-asm.c \
1.52724 + cgen-bitset.c \
1.52725 +@@ -445,6 +449,9 @@ ALL_MACHINES = \
1.52726 + arc-ext.lo \
1.52727 + arm-dis.lo \
1.52728 + avr-dis.lo \
1.52729 ++ avr32-asm.lo \
1.52730 ++ avr32-dis.lo \
1.52731 ++ avr32-opc.lo \
1.52732 + bfin-dis.lo \
1.52733 + cgen-asm.lo \
1.52734 + cgen-bitset.lo \
1.52735 +@@ -1225,6 +1232,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h
1.52736 + $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
1.52737 + opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
1.52738 + $(INCDIR)/opcode/avr.h
1.52739 ++avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
1.52740 ++ $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
1.52741 ++ $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
1.52742 ++ $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
1.52743 ++avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
1.52744 ++ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
1.52745 ++ avr32-opc.h opintl.h
1.52746 ++avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
1.52747 ++ $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
1.52748 + bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
1.52749 + $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
1.52750 + cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \