/* Boolean type used in bfd. Too many systems define their own
versions of "boolean" for us to safely typedef a "boolean" of
- our own. Using an enum for "bfd_boolean" has it's own set of
+ our own. Using an enum for "bfd_boolean" has its own set of
problems, with strange looking casts required to avoid warnings
on some older compilers. Thus we just use an int.
- General rule: functions which are bfd_boolean return TRUE on
+ General rule: Functions which are bfd_boolean return TRUE on
success and FALSE on failure (unless they're a predicate). */
typedef int bfd_boolean;
/* Byte swapping routines. */
-bfd_vma bfd_getb64
+bfd_vma bfd_getb64
PARAMS ((const unsigned char *));
-bfd_vma bfd_getl64
+bfd_vma bfd_getl64
PARAMS ((const unsigned char *));
-bfd_signed_vma bfd_getb_signed_64
+bfd_signed_vma bfd_getb_signed_64
PARAMS ((const unsigned char *));
-bfd_signed_vma bfd_getl_signed_64
+bfd_signed_vma bfd_getl_signed_64
PARAMS ((const unsigned char *));
-bfd_vma bfd_getb32
+bfd_vma bfd_getb32
PARAMS ((const unsigned char *));
-bfd_vma bfd_getl32
+bfd_vma bfd_getl32
PARAMS ((const unsigned char *));
-bfd_signed_vma bfd_getb_signed_32
+bfd_signed_vma bfd_getb_signed_32
PARAMS ((const unsigned char *));
-bfd_signed_vma bfd_getl_signed_32
+bfd_signed_vma bfd_getl_signed_32
PARAMS ((const unsigned char *));
-bfd_vma bfd_getb16
+bfd_vma bfd_getb16
PARAMS ((const unsigned char *));
-bfd_vma bfd_getl16
+bfd_vma bfd_getl16
PARAMS ((const unsigned char *));
-bfd_signed_vma bfd_getb_signed_16
+bfd_signed_vma bfd_getb_signed_16
PARAMS ((const unsigned char *));
-bfd_signed_vma bfd_getl_signed_16
+bfd_signed_vma bfd_getl_signed_16
PARAMS ((const unsigned char *));
-void bfd_putb64
+void bfd_putb64
PARAMS ((bfd_vma, unsigned char *));
-void bfd_putl64
+void bfd_putl64
PARAMS ((bfd_vma, unsigned char *));
-void bfd_putb32
+void bfd_putb32
PARAMS ((bfd_vma, unsigned char *));
-void bfd_putl32
+void bfd_putl32
PARAMS ((bfd_vma, unsigned char *));
-void bfd_putb16
+void bfd_putb16
PARAMS ((bfd_vma, unsigned char *));
-void bfd_putl16
+void bfd_putl16
PARAMS ((bfd_vma, unsigned char *));
/* Byte swapping routines which take size and endiannes as arguments. */
-bfd_vma bfd_get_bits
+bfd_vma bfd_get_bits
PARAMS ((bfd_byte *, int, bfd_boolean));
-void bfd_put_bits
+void bfd_put_bits
PARAMS ((bfd_vma, bfd_byte *, int, bfd_boolean));
\f
/* Externally visible ECOFF routines. */
const struct ecoff_debug_swap *swap,
bfd_boolean relocateable,
bfd_boolean (*get_extr) (struct symbol_cache_entry *,
- struct ecoff_extr *),
+ struct ecoff_extr *),
void (*set_index) (struct symbol_cache_entry *,
bfd_size_type)));
extern bfd_boolean bfd_ecoff_debug_one_external
bfd_arch_dlx, /* DLX */
bfd_arch_m68hc11, /* Motorola 68HC11 */
bfd_arch_m68hc12, /* Motorola 68HC12 */
+#define bfd_mach_m6812_default 0
+#define bfd_mach_m6812 1
+#define bfd_mach_m6812s 2
bfd_arch_z8k, /* Zilog Z8000 */
#define bfd_mach_z8001 1
#define bfd_mach_z8002 2
bfd_arch_mmix, /* Donald Knuth's educational processor. */
bfd_arch_xstormy16,
#define bfd_mach_xstormy16 1
+ bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
+#define bfd_mach_msp110 110
+#define bfd_mach_msp11 11
+#define bfd_mach_msp12 12
+#define bfd_mach_msp13 13
+#define bfd_mach_msp14 14
+#define bfd_mach_msp41 41
+#define bfd_mach_msp31 31
+#define bfd_mach_msp32 32
+#define bfd_mach_msp33 33
+#define bfd_mach_msp43 43
+#define bfd_mach_msp44 44
+#define bfd_mach_msp15 15
+#define bfd_mach_msp16 16
bfd_arch_last
};
const bfd_arch_info_type *
bfd_arch_get_compatible PARAMS ((
const bfd *abfd,
- const bfd *bbfd));
+ const bfd *bbfd,
+ bfd_boolean accept_unknowns));
void
bfd_set_arch_info PARAMS ((bfd *abfd, const bfd_arch_info_type *arg));
links (e.g. GOT stuff) it doesn't matter what this is set to. */
bfd_boolean partial_inplace;
- /* The src_mask selects which parts of the read in data
- are to be used in the relocation sum. E.g., if this was an 8 bit
- byte of data which we read and relocated, this would be
- 0x000000ff. When we have relocs which have an addend, such as
- sun4 extended relocs, the value in the offset part of a
- relocating field is garbage so we never use it. In this case
- the mask would be 0x00000000. */
+ /* src_mask selects the part of the instruction (or data) to be used
+ in the relocation sum. If the target relocations don't have an
+ addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
+ dst_mask to extract the addend from the section contents. If
+ relocations do have an addend in the reloc, eg. ELF USE_RELA, this
+ field should be zero. Non-zero values for ELF USE_RELA targets are
+ bogus as in those cases the value in the dst_mask part of the
+ section contents should be treated as garbage. */
bfd_vma src_mask;
- /* The dst_mask selects which parts of the instruction are replaced
- into the instruction. In most cases src_mask == dst_mask,
- except in the above special case, where dst_mask would be
- 0x000000ff, and src_mask would be 0x00000000. */
+ /* dst_mask selects which parts of the instruction (or data) are
+ replaced with a relocated value. */
bfd_vma dst_mask;
/* When some formats create PC relative instructions, they leave
/* Sony Xstormy16 Relocations. */
BFD_RELOC_XSTORMY16_REL_12,
+ BFD_RELOC_XSTORMY16_12,
BFD_RELOC_XSTORMY16_24,
BFD_RELOC_XSTORMY16_FPTR16,
BFD_RELOC_VAX_GLOB_DAT,
BFD_RELOC_VAX_JMP_SLOT,
BFD_RELOC_VAX_RELATIVE,
+
+/* msp430 specific relocation codes */
+ BFD_RELOC_MSP430_10_PCREL,
+ BFD_RELOC_MSP430_16_PCREL,
+ BFD_RELOC_MSP430_16,
+ BFD_RELOC_MSP430_16_PCREL_BYTE,
+ BFD_RELOC_MSP430_16_BYTE,
BFD_RELOC_UNUSED };
typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
reloc_howto_type *