/* BFD back-end for Motorola MCore COFF/PE
- Copyright (C) 1999-2017 Free Software Foundation, Inc.
+ Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
{
/* Unused: */
HOWTO (IMAGE_REL_MCORE_ABSOLUTE,/* type */
- 0, /* rightshift */
- 0, /* size (0 = byte, 1 = short, 2 = long) */
- 0, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
+ 0, /* rightshift */
+ 0, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_dont, /* dont complain_on_overflow */
- NULL, /* special_function */
- "ABSOLUTE", /* name */
- FALSE, /* partial_inplace */
- 0x00, /* src_mask */
- 0x00, /* dst_mask */
- FALSE), /* pcrel_offset */
+ NULL, /* special_function */
+ "ABSOLUTE", /* name */
+ FALSE, /* partial_inplace */
+ 0x00, /* src_mask */
+ 0x00, /* dst_mask */
+ FALSE), /* pcrel_offset */
HOWTO (IMAGE_REL_MCORE_ADDR32,/* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
- NULL, /* special_function */
- "ADDR32", /* name */
- TRUE, /* partial_inplace */
- 0xffffffff, /* src_mask */
- 0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ NULL, /* special_function */
+ "ADDR32", /* name */
+ TRUE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
/* 8 bits + 2 zero bits; jmpi/jsri/lrw instructions.
Should not appear in object files. */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
mcore_coff_unsupported_reloc, /* special_function */
- "IMM8BY4", /* name */
+ "IMM8BY4", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
0, /* dst_mask */
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- NULL, /* special_function */
- "IMM11BY2", /* name */
+ NULL, /* special_function */
+ "IMM11BY2", /* name */
FALSE, /* partial_inplace */
0x0, /* src_mask */
0x7ff, /* dst_mask */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
mcore_coff_unsupported_reloc, /* special_function */
- "IMM4BY2", /* name */
+ "IMM4BY2", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
0, /* dst_mask */
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
- NULL, /* special_function */
- "PCREL_32", /* name */
+ NULL, /* special_function */
+ "PCREL_32", /* name */
FALSE, /* partial_inplace */
0x0, /* src_mask */
0xffffffff, /* dst_mask */
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- NULL, /* special_function */
- "JSR_IMM11BY2", /* name */
+ NULL, /* special_function */
+ "JSR_IMM11BY2", /* name */
FALSE, /* partial_inplace */
0x0, /* src_mask */
0x7ff, /* dst_mask */
TRUE), /* pcrel_offset */
- HOWTO (IMAGE_REL_MCORE_RVA, /* type */
+ HOWTO (IMAGE_REL_MCORE_RVA, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- NULL, /* special_function */
- "MCORE_RVA", /* name */
+ NULL, /* special_function */
+ "MCORE_RVA", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
/* The original coff_link_hash_table structure. MUST be first field. */
struct coff_link_hash_table root;
- bfd * bfd_of_toc_owner;
- long int global_toc_size;
- long int import_table_size;
- long int first_thunk_address;
- long int thunk_size;
+ bfd * bfd_of_toc_owner;
+ long int global_toc_size;
+ long int import_table_size;
+ long int first_thunk_address;
+ long int thunk_size;
}
mcore_hash_table;
bfd_vma reloc_offset)
{
bfd_vma addr = reloc_offset
- - input_section->vma
- + input_section->output_offset
- + input_section->output_section->vma;
+ - input_section->vma
+ + input_section->output_offset
+ + input_section->output_section->vma;
if (coff_data (output_bfd)->pe)
addr -= pe_data (output_bfd)->pe_opthdr.ImageBase;
BFD_ASSERT (reloc_entry->howto != (reloc_howto_type *)0);
/* xgettext: c-format */
- _bfd_error_handler (_("%B: Relocation %s (%d) is not currently supported.\n"),
+ _bfd_error_handler (_("%pB: Relocation %s (%d) is not currently supported.\n"),
abfd,
reloc_entry->howto->name,
reloc_entry->howto->type);
{
switch (code)
{
- HOW2MAP (BFD_RELOC_32, IMAGE_REL_MCORE_ADDR32);
- HOW2MAP (BFD_RELOC_MCORE_PCREL_IMM8BY4, IMAGE_REL_MCORE_PCREL_IMM8BY4);
- HOW2MAP (BFD_RELOC_MCORE_PCREL_IMM11BY2, IMAGE_REL_MCORE_PCREL_IMM11BY2);
- HOW2MAP (BFD_RELOC_MCORE_PCREL_IMM4BY2, IMAGE_REL_MCORE_PCREL_IMM4BY2);
- HOW2MAP (BFD_RELOC_32_PCREL, IMAGE_REL_MCORE_PCREL_32);
+ HOW2MAP (BFD_RELOC_32, IMAGE_REL_MCORE_ADDR32);
+ HOW2MAP (BFD_RELOC_MCORE_PCREL_IMM8BY4, IMAGE_REL_MCORE_PCREL_IMM8BY4);
+ HOW2MAP (BFD_RELOC_MCORE_PCREL_IMM11BY2, IMAGE_REL_MCORE_PCREL_IMM11BY2);
+ HOW2MAP (BFD_RELOC_MCORE_PCREL_IMM4BY2, IMAGE_REL_MCORE_PCREL_IMM4BY2);
+ HOW2MAP (BFD_RELOC_32_PCREL, IMAGE_REL_MCORE_PCREL_32);
HOW2MAP (BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2, IMAGE_REL_MCORE_PCREL_JSR_IMM11BY2);
- HOW2MAP (BFD_RELOC_RVA, IMAGE_REL_MCORE_RVA);
+ HOW2MAP (BFD_RELOC_RVA, IMAGE_REL_MCORE_RVA);
default:
return NULL;
}
* addendp = sec->vma - 2; /* XXX guess - is this right ? */
/* If the symbol is defined, then the generic code is going to
- add back the symbol value in order to cancel out an
- adjustment it made to the addend. However, we set the addend
- to 0 at the start of this function. We need to adjust here,
- to avoid the adjustment the generic code will make. FIXME:
- This is getting a bit hackish. */
+ add back the symbol value in order to cancel out an
+ adjustment it made to the addend. However, we set the addend
+ to 0 at the start of this function. We need to adjust here,
+ to avoid the adjustment the generic code will make. FIXME:
+ This is getting a bit hackish. */
if (sym != NULL && sym->n_scnum != 0)
* addendp -= sym->n_value;
}
{
_bfd_error_handler
/* xgettext: c-format */
- (_("%B: compiled for a %s system and target is %s.\n"),
+ (_("%pB: compiled for a %s system and target is %s.\n"),
input_bfd,
- bfd_big_endian (input_bfd) ? _("big endian") : _("little endian"),
- bfd_big_endian (output_bfd) ? _("big endian") : _("little endian"));
+ bfd_big_endian (input_bfd) ? _("big endian") : _("little endian"),
+ bfd_big_endian (output_bfd) ? _("big endian") : _("little endian"));
bfd_set_error (bfd_error_wrong_format);
return FALSE;
for (; rel < relend; rel++)
{
- long symndx;
- struct internal_syment * sym;
- bfd_vma val;
- bfd_vma addend;
- bfd_reloc_status_type rstat;
- bfd_byte * loc;
- unsigned short r_type = rel->r_type;
- reloc_howto_type * howto = NULL;
+ long symndx;
+ struct internal_syment * sym;
+ bfd_vma val;
+ bfd_vma addend;
+ bfd_reloc_status_type rstat;
+ bfd_byte * loc;
+ unsigned short r_type = rel->r_type;
+ reloc_howto_type * howto = NULL;
struct coff_link_hash_entry * h;
- const char * my_name;
+ const char * my_name;
symndx = rel->r_symndx;
loc = contents + rel->r_vaddr - input_section->vma;
{
default:
/* xgettext: c-format */
- _bfd_error_handler (_("%B: unsupported relocation type 0x%02x"),
+ _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
input_bfd, r_type);
bfd_set_error (bfd_error_bad_value);
return FALSE;
case IMAGE_REL_MCORE_ABSOLUTE:
_bfd_error_handler
/* xgettext: c-format */
- (_("Warning: unsupported reloc %s <file %B, section %A>\n"
- "sym %ld (%s), r_vaddr %ld (%lx)"),
+ (_("warning: unsupported reloc %s <file %pB, section %pA>\n"
+ "sym %ld (%s), r_vaddr %" PRId64 " (%#" PRIx64 ")"),
howto->name, input_bfd, input_section,
- rel->r_symndx, my_name, (long) rel->r_vaddr,
- (unsigned long) rel->r_vaddr);
+ rel->r_symndx, my_name, (int64_t) rel->r_vaddr,
+ (uint64_t) rel->r_vaddr);
break;
case IMAGE_REL_MCORE_PCREL_IMM8BY4:
#define coff_bfd_reloc_type_lookup mcore_coff_reloc_type_lookup
#define coff_bfd_reloc_name_lookup mcore_coff_reloc_name_lookup
-#define coff_relocate_section coff_mcore_relocate_section
-#define coff_rtype_to_howto coff_mcore_rtype_to_howto
+#define coff_relocate_section coff_mcore_relocate_section
+#define coff_rtype_to_howto coff_mcore_rtype_to_howto
#define SELECT_RELOC(internal, howto) {internal.r_type = howto->type;}
/* Make sure that the 'r_offset' field is copied properly
so that identical binaries will compare the same. */
-#define SWAP_IN_RELOC_OFFSET H_GET_32
-#define SWAP_OUT_RELOC_OFFSET H_PUT_32
+#define SWAP_IN_RELOC_OFFSET H_GET_32
+#define SWAP_OUT_RELOC_OFFSET H_PUT_32
-#define COFF_PAGE_SIZE 0x1000
+#define COFF_PAGE_SIZE 0x1000
#include "coffcode.h"
\f