bfd_vma output_base = 0;
reloc_howto_type *howto = reloc_entry->howto;
asection *output_section;
- bfd_boolean relocatable = (output_bfd != NULL);
+ bool relocatable = (output_bfd != NULL);
if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
return bfd_reloc_outofrange;
bfd_vma output_base = 0;
reloc_howto_type *howto = reloc_entry->howto;
asection *output_section;
- bfd_boolean relocatable = (output_bfd != NULL);
+ bool relocatable = (output_bfd != NULL);
/* Is the address of the relocation really within the section? */
if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
bfd_size_type addr = reloc_entry->address;
bfd_vma output_base = 0;
asection *output_section;
- bfd_boolean relocatable = (output_bfd != NULL);
+ bool relocatable = (output_bfd != NULL);
/* Is the address of the relocation really within the section? */
if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
bfd_vma output_base = 0;
reloc_howto_type *howto = reloc_entry->howto;
asection *output_section;
- bfd_boolean relocatable = (output_bfd != NULL);
+ bool relocatable = (output_bfd != NULL);
/* Is the address of the relocation really within the section? */
if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
0, /* rightshift. */
3, /* size (0 = byte, 1 = short, 2 = long). */
0, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_dont, /* complain_on_overflow. */
bfd_elf_generic_reloc, /* special_function. */
"R_BFIN_UNUSED0", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0, /* dst_mask. */
- FALSE), /* pcrel_offset. */
+ false), /* pcrel_offset. */
HOWTO (R_BFIN_PCREL5M2, /* type. */
1, /* rightshift. */
1, /* size (0 = byte, 1 = short, 2 = long).. */
4, /* bitsize. */
- TRUE, /* pc_relative. */
+ true, /* pc_relative. */
0, /* bitpos. */
complain_overflow_unsigned, /* complain_on_overflow. */
bfin_bfd_reloc, /* special_function. */
"R_BFIN_PCREL5M2", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0x0000000F, /* dst_mask. */
- FALSE), /* pcrel_offset. */
+ false), /* pcrel_offset. */
HOWTO (R_BFIN_UNUSED1, /* type. */
0, /* rightshift. */
3, /* size (0 = byte, 1 = short, 2 = long). */
0, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_dont, /* complain_on_overflow. */
bfd_elf_generic_reloc, /* special_function. */
"R_BFIN_UNUSED1", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0, /* dst_mask. */
- FALSE), /* pcrel_offset. */
+ false), /* pcrel_offset. */
HOWTO (R_BFIN_PCREL10, /* type. */
1, /* rightshift. */
1, /* size (0 = byte, 1 = short, 2 = long). */
10, /* bitsize. */
- TRUE, /* pc_relative. */
+ true, /* pc_relative. */
0, /* bitpos. */
complain_overflow_signed, /* complain_on_overflow. */
bfin_bfd_reloc, /* special_function. */
"R_BFIN_PCREL10", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0x000003FF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_PCREL12_JUMP, /* type. */
1, /* rightshift. */
Right shift the rightmost bit.. */
1, /* size (0 = byte, 1 = short, 2 = long). */
12, /* bitsize. */
- TRUE, /* pc_relative. */
+ true, /* pc_relative. */
0, /* bitpos. */
complain_overflow_signed, /* complain_on_overflow. */
bfin_bfd_reloc, /* special_function. */
"R_BFIN_PCREL12_JUMP", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0x0FFF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_RIMM16, /* type. */
0, /* rightshift. */
1, /* size (0 = byte, 1 = short, 2 = long). */
16, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_signed, /* complain_on_overflow. */
bfin_imm16_reloc, /* special_function. */
"R_BFIN_RIMM16", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0x0000FFFF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_LUIMM16, /* type. */
0, /* rightshift. */
1, /* size (0 = byte, 1 = short, 2 = long). */
16, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_dont, /* complain_on_overflow. */
bfin_imm16_reloc, /* special_function. */
"R_BFIN_LUIMM16", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0x0000FFFF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_HUIMM16, /* type. */
16, /* rightshift. */
1, /* size (0 = byte, 1 = short, 2 = long). */
16, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_unsigned, /* complain_on_overflow. */
bfin_imm16_reloc, /* special_function. */
"R_BFIN_HUIMM16", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0x0000FFFF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_PCREL12_JUMP_S, /* type. */
1, /* rightshift. */
1, /* size (0 = byte, 1 = short, 2 = long). */
12, /* bitsize. */
- TRUE, /* pc_relative. */
+ true, /* pc_relative. */
0, /* bitpos. */
complain_overflow_signed, /* complain_on_overflow. */
bfin_bfd_reloc, /* special_function. */
"R_BFIN_PCREL12_JUMP_S", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0x00000FFF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_PCREL24_JUMP_X, /* type. */
1, /* rightshift. */
2, /* size (0 = byte, 1 = short, 2 = long). */
24, /* bitsize. */
- TRUE, /* pc_relative. */
+ true, /* pc_relative. */
0, /* bitpos. */
complain_overflow_signed, /* complain_on_overflow. */
bfin_pcrel24_reloc, /* special_function. */
"R_BFIN_PCREL24_JUMP_X", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0x00FFFFFF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_PCREL24, /* type. */
1, /* rightshift. */
2, /* size (0 = byte, 1 = short, 2 = long). */
24, /* bitsize. */
- TRUE, /* pc_relative. */
+ true, /* pc_relative. */
0, /* bitpos. */
complain_overflow_signed, /* complain_on_overflow. */
bfin_pcrel24_reloc, /* special_function. */
"R_BFIN_PCREL24", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0x00FFFFFF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_UNUSEDB, /* type. */
0, /* rightshift. */
3, /* size (0 = byte, 1 = short, 2 = long). */
0, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_dont, /* complain_on_overflow. */
bfd_elf_generic_reloc, /* special_function. */
"R_BFIN_UNUSEDB", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0, /* dst_mask. */
- FALSE), /* pcrel_offset. */
+ false), /* pcrel_offset. */
HOWTO (R_BFIN_UNUSEDC, /* type. */
0, /* rightshift. */
3, /* size (0 = byte, 1 = short, 2 = long). */
0, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_dont, /* complain_on_overflow. */
bfd_elf_generic_reloc, /* special_function. */
"R_BFIN_UNUSEDC", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0, /* dst_mask. */
- FALSE), /* pcrel_offset. */
+ false), /* pcrel_offset. */
HOWTO (R_BFIN_PCREL24_JUMP_L, /* type. */
1, /* rightshift. */
2, /* size (0 = byte, 1 = short, 2 = long). */
24, /* bitsize. */
- TRUE, /* pc_relative. */
+ true, /* pc_relative. */
0, /* bitpos. */
complain_overflow_signed, /* complain_on_overflow. */
bfin_pcrel24_reloc, /* special_function. */
"R_BFIN_PCREL24_JUMP_L", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0x00FFFFFF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_PCREL24_CALL_X, /* type. */
1, /* rightshift. */
2, /* size (0 = byte, 1 = short, 2 = long). */
24, /* bitsize. */
- TRUE, /* pc_relative. */
+ true, /* pc_relative. */
0, /* bitpos. */
complain_overflow_signed, /* complain_on_overflow. */
bfin_pcrel24_reloc, /* special_function. */
"R_BFIN_PCREL24_CALL_X", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0x00FFFFFF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_VAR_EQ_SYMB, /* type. */
0, /* rightshift. */
2, /* size (0 = byte, 1 = short, 2 = long). */
32, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_bitfield, /* complain_on_overflow. */
bfin_bfd_reloc, /* special_function. */
"R_BFIN_VAR_EQ_SYMB", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0, /* dst_mask. */
- FALSE), /* pcrel_offset. */
+ false), /* pcrel_offset. */
HOWTO (R_BFIN_BYTE_DATA, /* type. */
0, /* rightshift. */
0, /* size (0 = byte, 1 = short, 2 = long). */
8, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_unsigned, /* complain_on_overflow. */
bfin_bfd_reloc, /* special_function. */
"R_BFIN_BYTE_DATA", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0xFF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_BYTE2_DATA, /* type. */
0, /* rightshift. */
1, /* size (0 = byte, 1 = short, 2 = long). */
16, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_signed, /* complain_on_overflow. */
bfin_bfd_reloc, /* special_function. */
"R_BFIN_BYTE2_DATA", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0xFFFF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_BYTE4_DATA, /* type. */
0, /* rightshift. */
2, /* size (0 = byte, 1 = short, 2 = long). */
32, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_unsigned, /* complain_on_overflow. */
bfin_byte4_reloc, /* special_function. */
"R_BFIN_BYTE4_DATA", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0xFFFFFFFF, /* dst_mask. */
- TRUE), /* pcrel_offset. */
+ true), /* pcrel_offset. */
HOWTO (R_BFIN_PCREL11, /* type. */
1, /* rightshift. */
1, /* size (0 = byte, 1 = short, 2 = long). */
10, /* bitsize. */
- TRUE, /* pc_relative. */
+ true, /* pc_relative. */
0, /* bitpos. */
complain_overflow_unsigned, /* complain_on_overflow. */
bfin_bfd_reloc, /* special_function. */
"R_BFIN_PCREL11", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0x000003FF, /* dst_mask. */
- FALSE), /* pcrel_offset. */
+ false), /* pcrel_offset. */
/* A 18-bit signed operand with the GOT offset for the address of
2, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_GOT17M4", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* The upper 16 bits of the GOT offset for the address of the
symbol. */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_GOTHI", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* The lower 16 bits of the GOT offset for the address of the
symbol. */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_GOTLO", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* The 32-bit address of the canonical descriptor of a function. */
HOWTO (R_BFIN_FUNCDESC, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_FUNCDESC", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* A 12-bit signed operand with the GOT offset for the address of
canonical descriptor of a function. */
2, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_FUNCDESC_GOT17M4", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* The upper 16 bits of the GOT offset for the address of the
canonical descriptor of a function. */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_FUNCDESC_GOTHI", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* The lower 16 bits of the GOT offset for the address of the
canonical descriptor of a function. */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_FUNCDESC_GOTLO", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* The 32-bit address of the canonical descriptor of a function. */
HOWTO (R_BFIN_FUNCDESC_VALUE, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
64, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_FUNCDESC_VALUE", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* A 12-bit signed operand with the GOT offset for the address of
canonical descriptor of a function. */
2, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_FUNCDESC_GOTOFF17M4", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* The upper 16 bits of the GOT offset for the address of the
canonical descriptor of a function. */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_FUNCDESC_GOTOFFHI", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* The lower 16 bits of the GOT offset for the address of the
canonical descriptor of a function. */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_FUNCDESC_GOTOFFLO", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* A 12-bit signed operand with the GOT offset for the address of
the symbol. */
2, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_GOTOFF17M4", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* The upper 16 bits of the GOT offset for the address of the
symbol. */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_GOTOFFHI", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
/* The lower 16 bits of the GOT offset for the address of the
symbol. */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
- FALSE, /* pc_relative */
+ false, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_BFIN_GOTOFFLO", /* name */
- FALSE, /* partial_inplace */
+ false, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ false), /* pcrel_offset */
};
static reloc_howto_type bfin_gnuext_howto_table [] =
0, /* rightshift. */
1, /* size (0 = byte, 1 = short, 2 = long). */
16, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_bitfield, /* complain_on_overflow. */
bfin_pltpc_reloc, /* special_function. */
"R_BFIN_PLTPC", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0xffff, /* src_mask. */
0xffff, /* dst_mask. */
- FALSE), /* pcrel_offset. */
+ false), /* pcrel_offset. */
HOWTO (R_BFIN_GOT, /* type. */
0, /* rightshift. */
1, /* size (0 = byte, 1 = short, 2 = long). */
16, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_bitfield, /* complain_on_overflow. */
bfd_elf_generic_reloc, /* special_function. */
"R_BFIN_GOT", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0x7fff, /* src_mask. */
0x7fff, /* dst_mask. */
- FALSE), /* pcrel_offset. */
+ false), /* pcrel_offset. */
/* GNU extension to record C++ vtable hierarchy. */
HOWTO (R_BFIN_GNU_VTINHERIT, /* type. */
0, /* rightshift. */
2, /* size (0 = byte, 1 = short, 2 = long). */
0, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_dont, /* complain_on_overflow. */
NULL, /* special_function. */
"R_BFIN_GNU_VTINHERIT", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0, /* dst_mask. */
- FALSE), /* pcrel_offset. */
+ false), /* pcrel_offset. */
/* GNU extension to record C++ vtable member usage. */
HOWTO (R_BFIN_GNU_VTENTRY, /* type. */
0, /* rightshift. */
2, /* size (0 = byte, 1 = short, 2 = long). */
0, /* bitsize. */
- FALSE, /* pc_relative. */
+ false, /* pc_relative. */
0, /* bitpos. */
complain_overflow_dont, /* complain_on_overflow. */
_bfd_elf_rel_vtable_reloc_fn, /* special_function. */
"R_BFIN_GNU_VTENTRY", /* name. */
- FALSE, /* partial_inplace. */
+ false, /* partial_inplace. */
0, /* src_mask. */
0, /* dst_mask. */
- FALSE) /* pcrel_offset. */
+ false) /* pcrel_offset. */
};
struct bfin_reloc_map
};
-static bfd_boolean
+static bool
bfin_info_to_howto (bfd *abfd,
arelent *cache_ptr,
Elf_Internal_Rela *dst)
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
abfd, r_type);
bfd_set_error (bfd_error_bad_value);
- return FALSE;
+ return false;
}
- return TRUE;
+ return true;
}
/* Given a BFD reloc type, return the howto. */
}
/* Set by ld emulation if --code-in-l1. */
-bfd_boolean elf32_bfin_code_in_l1 = 0;
+bool elf32_bfin_code_in_l1 = 0;
/* Set by ld emulation if --data-in-l1. */
-bfd_boolean elf32_bfin_data_in_l1 = 0;
+bool elf32_bfin_data_in_l1 = 0;
-static bfd_boolean
+static bool
elf32_bfin_final_write_processing (bfd *abfd)
{
if (elf32_bfin_code_in_l1)
/* Return TRUE if the name is a local label.
bfin local labels begin with L$. */
-static bfd_boolean
+static bool
bfin_is_local_label_name (bfd *abfd, const char *label)
{
if (label[0] == 'L' && label[1] == '$' )
- return TRUE;
+ return true;
return _bfd_elf_is_local_label_name (abfd, label);
}
allocate space in the global offset table or procedure linkage
table. */
-static bfd_boolean
+static bool
bfin_check_relocs (bfd * abfd,
struct bfd_link_info *info,
asection *sec,
asection *srelgot;
if (bfd_link_relocatable (info))
- return TRUE;
+ return true;
dynobj = elf_hash_table (info)->dynobj;
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
Reconstruct it for later use during GC. */
case R_BFIN_GNU_VTINHERIT:
if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
- return FALSE;
+ return false;
break;
/* This relocation describes which C++ vtable entries
are actually used. Record for later use during GC. */
case R_BFIN_GNU_VTENTRY:
if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
- return FALSE;
+ return false;
break;
case R_BFIN_GOT:
/* Create the .got section. */
elf_hash_table (info)->dynobj = dynobj = abfd;
if (!_bfd_elf_create_got_section (dynobj, info))
- return FALSE;
+ return false;
}
sgot = elf_hash_table (info)->sgot;
if (h->dynindx == -1 && !h->forced_local)
{
if (!bfd_elf_link_record_dynamic_symbol (info, h))
- return FALSE;
+ return false;
}
/* Allocate space in the .got section. */
local_got_refcounts = ((bfd_signed_vma *)
bfd_zalloc (abfd, size));
if (local_got_refcounts == NULL)
- return FALSE;
+ return false;
elf_local_got_refcounts (abfd) = local_got_refcounts;
}
if (local_got_refcounts[r_symndx] == 0)
}
}
- return TRUE;
+ return true;
}
static enum elf_reloc_type_class
}
-static bfd_boolean
+static int
bfin_relocate_section (bfd * output_bfd,
struct bfd_link_info *info,
bfd * input_bfd,
Elf_Internal_Sym *sym;
asection *sec;
bfd_vma relocation = 0;
- bfd_boolean unresolved_reloc;
+ bool unresolved_reloc;
bfd_reloc_status_type r;
bfd_vma address;
if (r_type < 0 || r_type >= 243)
{
bfd_set_error (bfd_error_bad_value);
- return FALSE;
+ return false;
}
if (r_type == R_BFIN_GNU_VTENTRY
if (howto == NULL)
{
bfd_set_error (bfd_error_bad_value);
- return FALSE;
+ return false;
}
r_symndx = ELF32_R_SYM (rel->r_info);
h = NULL;
sym = NULL;
sec = NULL;
- unresolved_reloc = FALSE;
+ unresolved_reloc = false;
if (r_symndx < symtab_hdr->sh_info)
{
}
else
{
- bfd_boolean warned, ignored;
+ bool warned, ignored;
RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
r_symndx, symtab_hdr, sym_hashes,
/* Create the .got section. */
elf_hash_table (info)->dynobj = dynobj = output_bfd;
if (!_bfd_elf_create_got_section (dynobj, info))
- return FALSE;
+ return false;
}
sgot = elf_hash_table (info)->sgot;
if (h != NULL)
{
- bfd_boolean dyn;
+ bool dyn;
off = h->got.offset;
BFD_ASSERT (off != (bfd_vma) - 1);
}
}
else
- unresolved_reloc = FALSE;
+ unresolved_reloc = false;
}
else
{
"unresolvable relocation against symbol `%s'"),
input_bfd, input_section, (uint64_t) rel->r_offset,
h->root.root.string);
- return FALSE;
+ return false;
}
if (r != bfd_reloc_ok)
symtab_hdr->sh_link,
sym->st_name);
if (name == NULL)
- return FALSE;
+ return false;
if (*name == '\0')
name = bfd_section_name (sec);
}
(_("%pB(%pA+%#" PRIx64 "): reloc against `%s': error %d"),
input_bfd, input_section, (uint64_t) rel->r_offset,
name, (int) r);
- return FALSE;
+ return false;
}
}
}
- return TRUE;
+ return true;
}
static asection *
return (p != NULL) ? p - elf_tdata (output_bfd)->phdr : -1;
}
-inline static bfd_boolean
+inline static bool
_bfinfdpic_osec_readonly_p (bfd *output_bfd, asection *osec)
{
unsigned seg = _bfinfdpic_osec_to_segment (output_bfd, osec);
/* Generate relocations for GOT entries, function descriptors, and
code for PLT and lazy PLT entries. */
-inline static bfd_boolean
+inline static bool
_bfinfdpic_emit_got_relocs_plt_entries (struct bfinfdpic_relocs_info *entry,
bfd *output_bfd,
struct bfd_link_info *info,
int dynindx = -1;
if (entry->done)
- return TRUE;
+ return true;
entry->done = 1;
if (entry->got_entry || entry->fdgot_entry || entry->fd_entry)
idx = dynindx;
ad = addend;
if (ad)
- return FALSE;
+ return false;
}
else
{
else if (entry->lazyplt)
{
if (ad)
- return FALSE;
+ return false;
fd_lazy_rel_offset = ofst;
}
}
- return TRUE;
+ return true;
}
\f
/* Relocate an Blackfin ELF section.
section, which means that the addend must be adjusted
accordingly. */
-static bfd_boolean
+static int
bfinfdpic_relocate_section (bfd * output_bfd,
struct bfd_link_info *info,
bfd * input_bfd,
if (howto == NULL)
{
bfd_set_error (bfd_error_bad_value);
- return FALSE;
+ return false;
}
h = NULL;
}
else
{
- bfd_boolean warned, ignored;
- bfd_boolean unresolved_reloc;
+ bool warned, ignored;
+ bool unresolved_reloc;
RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
r_symndx, symtab_hdr, sym_hashes,
(info), input_bfd, r_symndx,
orig_addend, INSERT);
if (! picrel)
- return FALSE;
+ return false;
if (!_bfinfdpic_emit_got_relocs_plt_entries (picrel, output_bfd, info,
osec, sym,
(_("%pB: relocation at `%pA+%#" PRIx64 "' "
"references symbol `%s' with nonzero addend"),
input_bfd, input_section, (uint64_t) rel->r_offset, name);
- return FALSE;
+ return false;
}
info->callbacks->warning
(info, _("relocation references symbol not defined in the module"),
name, input_bfd, input_section, rel->r_offset);
- return FALSE;
+ return false;
}
break;
}
info->callbacks->warning
(info, _("R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"),
name, input_bfd, input_section, rel->r_offset);
- return FALSE;
+ return false;
}
dynindx = h->dynindx;
}
(info,
_("cannot emit fixups in read-only section"),
name, input_bfd, input_section, rel->r_offset);
- return FALSE;
+ return false;
}
offset = _bfd_elf_section_offset
(info,
_("cannot emit dynamic relocations in read-only section"),
name, input_bfd, input_section, rel->r_offset);
- return FALSE;
+ return false;
}
offset = _bfd_elf_section_offset (output_bfd, info,
input_section, rel->r_offset);
info->callbacks->warning
(info, _("R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"),
name, input_bfd, input_section, rel->r_offset);
- return FALSE;
+ return false;
}
dynindx = h->dynindx;
}
(info,
_("cannot emit fixups in read-only section"),
name, input_bfd, input_section, rel->r_offset);
- return FALSE;
+ return false;
}
if (!h || h->root.type != bfd_link_hash_undefweak)
{
(info,
_("cannot emit dynamic relocations in read-only section"),
name, input_bfd, input_section, rel->r_offset);
- return FALSE;
+ return false;
}
if (offset != (bfd_vma)-1)
: _("warning: relocation references a different segment"),
name, input_bfd, input_section, rel->r_offset);
if (!silence_segment_error && bfd_link_pic (info))
- return FALSE;
+ return false;
elf_elfheader (output_bfd)->e_flags |= EF_BFIN_PIC;
}
case bfd_reloc_undefined:
(*info->callbacks->undefined_symbol)
- (info, name, input_bfd, input_section, rel->r_offset, TRUE);
+ (info, name, input_bfd, input_section, rel->r_offset, true);
break;
case bfd_reloc_outofrange:
}
}
- return TRUE;
+ return true;
}
/* We need dynamic symbols for every section, since segments can
relocate independently. */
-static bfd_boolean
+static bool
_bfinfdpic_link_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info ATTRIBUTE_UNUSED,
asection *p)
/* If sh_type is yet undecided, assume it could be
SHT_PROGBITS/SHT_NOBITS. */
case SHT_NULL:
- return FALSE;
+ return false;
/* There shouldn't be section relative relocations
against any other section. */
default:
- return TRUE;
+ return true;
}
}
is almost entirely copied from
elflink.c:_bfd_elf_create_got_section(). */
-static bfd_boolean
+static bool
_bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
{
flagword flags, pltflags;
/* This function may be called more than once. */
s = elf_hash_table (info)->sgot;
if (s != NULL)
- return TRUE;
+ return true;
/* Machine specific: although pointers are 32-bits wide, we want the
GOT to be aligned to a 64-bit boundary, such that function
elf_hash_table (info)->sgot = s;
if (s == NULL
|| !bfd_set_section_alignment (s, ptralign))
- return FALSE;
+ return false;
if (bed->want_got_sym)
{
h = _bfd_elf_define_linkage_sym (abfd, info, s, "__GLOBAL_OFFSET_TABLE_");
elf_hash_table (info)->hgot = h;
if (h == NULL)
- return FALSE;
+ return false;
/* Machine-specific: we want the symbol for executables as
well. */
if (! bfd_elf_link_record_dynamic_symbol (info, h))
- return FALSE;
+ return false;
}
/* The first bit of the global offset table is the header. */
bfinfdpic_relocs_info_eq,
(htab_del) NULL);
if (! bfinfdpic_relocs_info (info))
- return FALSE;
+ return false;
s = bfd_make_section_anyway_with_flags (abfd, ".rel.got",
(flags | SEC_READONLY));
if (s == NULL
|| !bfd_set_section_alignment (s, 2))
- return FALSE;
+ return false;
bfinfdpic_gotrel_section (info) = s;
(flags | SEC_READONLY));
if (s == NULL
|| !bfd_set_section_alignment (s, 2))
- return FALSE;
+ return false;
bfinfdpic_gotfixup_section (info) = s;
}
s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
if (s == NULL
|| !bfd_set_section_alignment (s, bed->plt_alignment))
- return FALSE;
+ return false;
/* Blackfin-specific: remember it. */
bfinfdpic_plt_section (info) = s;
if (! (_bfd_generic_link_add_one_symbol
(info, abfd, "__PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, 0, NULL,
- FALSE, get_elf_backend_data (abfd)->collect, &bh)))
- return FALSE;
+ false, get_elf_backend_data (abfd)->collect, &bh)))
+ return false;
h = (struct elf_link_hash_entry *) bh;
h->def_regular = 1;
h->type = STT_OBJECT;
if (! bfd_link_executable (info)
&& ! bfd_elf_link_record_dynamic_symbol (info, h))
- return FALSE;
+ return false;
}
/* Blackfin-specific: we want rel relocations for the plt. */
flags | SEC_READONLY);
if (s == NULL
|| !bfd_set_section_alignment (s, bed->s->log_file_align))
- return FALSE;
+ return false;
/* Blackfin-specific: remember it. */
bfinfdpic_pltrel_section (info) = s;
- return TRUE;
+ return true;
}
/* Make sure the got and plt sections exist, and that our pointers in
the link hash table point to them. */
-static bfd_boolean
+static bool
elf32_bfinfdpic_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
{
/* This is mostly copied from
/* Blackfin-specific: we want to create the GOT in the Blackfin way. */
if (! _bfin_create_got_section (abfd, info))
- return FALSE;
+ return false;
/* Blackfin-specific: make sure we created everything we wanted. */
BFD_ASSERT (bfinfdpic_got_section (info) && bfinfdpic_gotrel_section (info)
s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
SEC_ALLOC | SEC_LINKER_CREATED);
if (s == NULL)
- return FALSE;
+ return false;
/* The .rel[a].bss section holds copy relocs. This section is not
normally needed. We need to create it here, though, so that the
flags | SEC_READONLY);
if (s == NULL
|| !bfd_set_section_alignment (s, bed->s->log_file_align))
- return FALSE;
+ return false;
}
}
- return TRUE;
+ return true;
}
/* Compute the total GOT size required by each symbol in each range.
static void
_bfinfdpic_count_relocs_fixups (struct bfinfdpic_relocs_info *entry,
struct _bfinfdpic_dynamic_got_info *dinfo,
- bfd_boolean subtract)
+ bool subtract)
{
bfd_vma relocs = 0, fixups = 0;
_bfinfdpic_count_nontls_entries (entry, dinfo);
- _bfinfdpic_count_relocs_fixups (entry, dinfo, FALSE);
+ _bfinfdpic_count_relocs_fixups (entry, dinfo, false);
return 1;
}
section and the rofixup section. Assign locations for GOT and PLT
entries. */
-static bfd_boolean
+static bool
_bfinfdpic_size_got_plt (bfd *output_bfd,
struct _bfinfdpic_dynamic_got_plt_info *gpinfop)
{
(bfd_byte *) bfd_zalloc (dynobj,
bfinfdpic_got_section (info)->size);
if (bfinfdpic_got_section (info)->contents == NULL)
- return FALSE;
+ return false;
}
if (elf_hash_table (info)->dynamic_sections_created)
(bfd_byte *) bfd_zalloc (dynobj,
bfinfdpic_gotrel_section (info)->size);
if (bfinfdpic_gotrel_section (info)->contents == NULL)
- return FALSE;
+ return false;
}
bfinfdpic_gotfixup_section (info)->size = (gpinfop->g.fixups + 1) * 4;
(bfd_byte *) bfd_zalloc (dynobj,
bfinfdpic_gotfixup_section (info)->size);
if (bfinfdpic_gotfixup_section (info)->contents == NULL)
- return FALSE;
+ return false;
}
if (elf_hash_table (info)->dynamic_sections_created)
(bfd_byte *) bfd_zalloc (dynobj,
bfinfdpic_pltrel_section (info)->size);
if (bfinfdpic_pltrel_section (info)->contents == NULL)
- return FALSE;
+ return false;
}
/* Add 4 bytes for every block of at most 65535 lazy PLT entries,
(bfd_byte *) bfd_zalloc (dynobj,
bfinfdpic_plt_section (info)->size);
if (bfinfdpic_plt_section (info)->contents == NULL)
- return FALSE;
+ return false;
}
- return TRUE;
+ return true;
}
/* Set the sizes of the dynamic sections. */
-static bfd_boolean
+static bool
elf32_bfinfdpic_size_dynamic_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
bfinfdpic_dynamic_got_plt_info (info) = bfd_alloc (dynobj, sizeof (gpinfo.g));
if (!_bfinfdpic_size_got_plt (output_bfd, &gpinfo))
- return FALSE;
+ return false;
s = bfd_get_linker_section (dynobj, ".dynbss");
if (s && s->size == 0)
if (s && s->size == 0)
s->flags |= SEC_EXCLUDE;
- return _bfd_elf_add_dynamic_tags (output_bfd, info, TRUE);
+ return _bfd_elf_add_dynamic_tags (output_bfd, info, true);
}
-static bfd_boolean
+static bool
elf32_bfinfdpic_always_size_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
if (!bfd_link_relocatable (info)
&& !bfd_elf_stack_segment_size (output_bfd, info,
"__stacksize", DEFAULT_STACK_SIZE))
- return FALSE;
+ return false;
- return TRUE;
+ return true;
}
/* Check whether any of the relocations was optimized away, and
subtract it from the relocation or fixup count. */
-static bfd_boolean
+static bool
_bfinfdpic_check_discarded_relocs (bfd *abfd, asection *sec,
struct bfd_link_info *info,
- bfd_boolean *changed)
+ bool *changed)
{
Elf_Internal_Shdr *symtab_hdr;
struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
if ((sec->flags & SEC_RELOC) == 0
|| sec->reloc_count == 0)
- return TRUE;
+ return true;
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
sym_hashes = elf_sym_hashes (abfd);
rel->r_addend, NO_INSERT);
if (! picrel)
- return FALSE;
+ return false;
- *changed = TRUE;
+ *changed = true;
dinfo = bfinfdpic_dynamic_got_plt_info (info);
- _bfinfdpic_count_relocs_fixups (picrel, dinfo, TRUE);
+ _bfinfdpic_count_relocs_fixups (picrel, dinfo, true);
if (ELF32_R_TYPE (rel->r_info) == R_BFIN_BYTE4_DATA)
picrel->relocs32--;
else /* we know (ELF32_R_TYPE (rel->r_info) == R_BFIN_FUNCDESC) */
picrel->relocsfd--;
- _bfinfdpic_count_relocs_fixups (picrel, dinfo, FALSE);
+ _bfinfdpic_count_relocs_fixups (picrel, dinfo, false);
}
- return TRUE;
+ return true;
}
-static bfd_boolean
+static bool
bfinfdpic_elf_discard_info (bfd *ibfd,
struct elf_reloc_cookie *cookie ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
- bfd_boolean changed = FALSE;
+ bool changed = false;
asection *s;
bfd *obfd = NULL;
if (s->sec_info_type == SEC_INFO_TYPE_EH_FRAME)
{
if (!_bfinfdpic_check_discarded_relocs (ibfd, s, info, &changed))
- return FALSE;
+ return false;
obfd = s->output_section->owner;
}
NULL);
if (!_bfinfdpic_size_got_plt (obfd, &gpinfo))
- return FALSE;
+ return false;
}
- return TRUE;
+ return true;
}
-static bfd_boolean
+static bool
elf32_bfinfdpic_finish_dynamic_sections (bfd *output_bfd,
struct bfd_link_info *info)
{
{
_bfd_error_handler
("LINKER BUG: .rofixup section size mismatch");
- return FALSE;
+ return false;
}
}
}
}
}
- return TRUE;
+ return true;
}
/* Adjust a symbol defined by a dynamic object and referenced by a
regular object. */
-static bfd_boolean
+static bool
elf32_bfinfdpic_adjust_dynamic_symbol (struct bfd_link_info *info,
struct elf_link_hash_entry *h)
{
h->root.u.def.value = def->root.u.def.value;
}
- return TRUE;
+ return true;
}
/* Perform any actions needed for dynamic symbols. */
-static bfd_boolean
+static bool
elf32_bfinfdpic_finish_dynamic_symbol
(bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info ATTRIBUTE_UNUSED,
struct elf_link_hash_entry *h ATTRIBUTE_UNUSED,
Elf_Internal_Sym *sym ATTRIBUTE_UNUSED)
{
- return TRUE;
+ return true;
}
/* Decide whether to attempt to turn absptr or lsda encodings in
shared libraries into pcrel within the given input section. */
-static bfd_boolean
+static bool
bfinfdpic_elf_use_relative_eh_frame
(bfd *input_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info ATTRIBUTE_UNUSED,
asection *eh_frame_section ATTRIBUTE_UNUSED)
{
/* We can't use PC-relative encodings in FDPIC binaries, in general. */
- return FALSE;
+ return false;
}
/* Adjust the contents of an eh_frame_hdr section before they're output. */
PLT entry should be faster), or taking hints from the compiler.
Given infinite time and money... :-) */
-static bfd_boolean
+static bool
bfinfdpic_check_relocs (bfd *abfd, struct bfd_link_info *info,
asection *sec, const Elf_Internal_Rela *relocs)
{
struct bfinfdpic_relocs_info *picrel;
if (bfd_link_relocatable (info))
- return TRUE;
+ return true;
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
sym_hashes = elf_sym_hashes (abfd);
{
elf_hash_table (info)->dynobj = dynobj = abfd;
if (! _bfin_create_got_section (abfd, info))
- return FALSE;
+ return false;
}
if (! IS_FDPIC (abfd))
{
(info), abfd, r_symndx,
rel->r_addend, INSERT);
if (! picrel)
- return FALSE;
+ return false;
break;
default:
Reconstruct it for later use during GC. */
case R_BFIN_GNU_VTINHERIT:
if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
- return FALSE;
+ return false;
break;
/* This relocation describes which C++ vtable entries are actually
BFD_ASSERT (h != NULL);
if (h != NULL
&& !bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
- return FALSE;
+ return false;
break;
case R_BFIN_HUIMM16:
/* xgettext:c-format */
(_("%pB: unsupported relocation type %#x"),
abfd, (int) ELF32_R_TYPE (rel->r_info));
- return FALSE;
+ return false;
}
}
- return TRUE;
+ return true;
}
/* Set the right machine number for a Blackfin ELF file. */
-static bfd_boolean
+static bool
elf32_bfin_object_p (bfd *abfd)
{
bfd_default_set_arch_mach (abfd, bfd_arch_bfin, 0);
== (IS_FDPIC (abfd)));
}
-static bfd_boolean
+static bool
elf32_bfin_set_private_flags (bfd * abfd, flagword flags)
{
elf_elfheader (abfd)->e_flags = flags;
- elf_flags_init (abfd) = TRUE;
- return TRUE;
+ elf_flags_init (abfd) = true;
+ return true;
}
/* Display the flags field. */
-static bfd_boolean
+static bool
elf32_bfin_print_private_bfd_data (bfd * abfd, void * ptr)
{
FILE *file = (FILE *) ptr;
fputc ('\n', file);
- return TRUE;
+ return true;
}
/* Merge backend specific data from an object file to the output
object file when linking. */
-static bfd_boolean
+static bool
elf32_bfin_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
{
bfd *obfd = info->output_bfd;
flagword old_flags, new_flags;
- bfd_boolean error = FALSE;
+ bool error = false;
/* FIXME: What should be checked when linking shared libraries? */
if ((ibfd->flags & DYNAMIC) != 0)
- return TRUE;
+ return true;
new_flags = elf_elfheader (ibfd)->e_flags;
old_flags = elf_elfheader (obfd)->e_flags;
if (!elf_flags_init (obfd)) /* First call, no flags set. */
{
- elf_flags_init (obfd) = TRUE;
+ elf_flags_init (obfd) = true;
elf_elfheader (obfd)->e_flags = new_flags;
}
if (((new_flags & EF_BFIN_FDPIC) == 0) != (! IS_FDPIC (obfd)))
{
- error = TRUE;
+ error = true;
if (IS_FDPIC (obfd))
_bfd_error_handler
(_("%pB: cannot link non-fdpic object file into fdpic executable"),
/* Finish up the dynamic sections. */
-static bfd_boolean
+static bool
bfin_finish_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
}
}
- return TRUE;
+ return true;
}
/* Finish up dynamic symbol handling. We set the contents of various
dynamic sections here. */
-static bfd_boolean
+static bool
bfin_finish_dynamic_symbol (bfd * output_bfd,
struct bfd_link_info *info,
struct elf_link_hash_entry *h,
|| h == elf_hash_table (info)->hgot)
sym->st_shndx = SHN_ABS;
- return TRUE;
+ return true;
}
/* Adjust a symbol defined by a dynamic object and referenced by a
change the definition to something the rest of the link can
understand. */
-static bfd_boolean
+static bool
bfin_adjust_dynamic_symbol (struct bfd_link_info *info,
struct elf_link_hash_entry *h)
{
BFD_ASSERT (def->root.type == bfd_link_hash_defined);
h->root.u.def.section = def->root.u.def.section;
h->root.u.def.value = def->root.u.def.value;
- return TRUE;
+ return true;
}
/* This is a reference to a symbol defined by a dynamic object which
For such cases we need not do anything here; the relocations will
be handled correctly by relocate_section. */
if (bfd_link_pic (info))
- return TRUE;
+ return true;
/* We must allocate the symbol in our .dynbss section, which will
become part of the .bss section of the executable. There will be
if ((h->root.u.def.section->flags & SEC_ALLOC) != 0)
{
_bfd_error_handler (_("the bfin target does not currently support the generation of copy relocations"));
- return FALSE;
+ return false;
}
#endif
/* We need to figure out the alignment required for this symbol. I
if (power_of_two > bfd_section_alignment (s))
{
if (!bfd_set_section_alignment (s, power_of_two))
- return FALSE;
+ return false;
}
/* Define the symbol as being at this point in the section. */
/* Increment the section size to make room for the symbol. */
s->size += h->size;
- return TRUE;
+ return true;
}
/* The bfin linker needs to keep track of the number of relocs that it
against a readonly section, and set the DF_TEXTREL flag in this
case. */
-static bfd_boolean
+static bool
bfin_discard_copies (struct elf_link_hash_entry *h, void * inf)
{
struct bfd_link_info *info = (struct bfd_link_info *) inf;
}
}
- return TRUE;
+ return true;
}
for (s = bfin_hash_entry (h)->pcrel_relocs_copied;
s != NULL; s = s->next)
s->section->size -= s->count * sizeof (Elf32_External_Rela);
- return TRUE;
+ return true;
}
-static bfd_boolean
+static bool
bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
bfd *dynobj;
asection *s;
- bfd_boolean relocs;
+ bool relocs;
dynobj = elf_hash_table (info)->dynobj;
BFD_ASSERT (dynobj != NULL);
/* The check_relocs and adjust_dynamic_symbol entry points have
determined the sizes of the various dynamic sections. Allocate
memory for them. */
- relocs = FALSE;
+ relocs = false;
for (s = dynobj->sections; s != NULL; s = s->next)
{
const char *name;
- bfd_boolean strip;
+ bool strip;
if ((s->flags & SEC_LINKER_CREATED) == 0)
continue;
of the dynobj section names depend upon the input files. */
name = bfd_section_name (s);
- strip = FALSE;
+ strip = false;
if (startswith (name, ".rela"))
{
adjust_dynamic_symbol is called, and it is that
function which decides whether anything needs to go
into these sections. */
- strip = TRUE;
+ strip = true;
}
else
{
- relocs = TRUE;
+ relocs = true;
/* We use the reloc_count field as a counter if we need
to copy relocs into the output file. */
contents to zero. */
s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
if (s->contents == NULL && s->size != 0)
- return FALSE;
+ return false;
}
if (elf_hash_table (info)->dynamic_sections_created)
if (!bfd_link_pic (info))
{
if (!add_dynamic_entry (DT_DEBUG, 0))
- return FALSE;
+ return false;
}
|| !add_dynamic_entry (DT_RELASZ, 0)
|| !add_dynamic_entry (DT_RELAENT,
sizeof (Elf32_External_Rela)))
- return FALSE;
+ return false;
}
if ((info->flags & DF_TEXTREL) != 0)
{
if (!add_dynamic_entry (DT_TEXTREL, 0))
- return FALSE;
+ return false;
}
}
#undef add_dynamic_entry
- return TRUE;
+ return true;
}
\f
/* Given a .data section and a .emreloc in-memory section, store
after the add_symbols entry point has been called for all the
objects, and before the final_link entry point is called. */
-bfd_boolean
+bool
bfd_bfin_elf32_create_embedded_relocs (bfd *abfd,
struct bfd_link_info *info,
asection *datasec,
*errmsg = NULL;
if (datasec->reloc_count == 0)
- return TRUE;
+ return true;
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
free (isymbuf);
if (elf_section_data (datasec)->relocs != internal_relocs)
free (internal_relocs);
- return TRUE;
+ return true;
error_return:
if (symtab_hdr->contents != (unsigned char *) isymbuf)
free (isymbuf);
if (elf_section_data (datasec)->relocs != internal_relocs)
free (internal_relocs);
- return FALSE;
+ return false;
}
struct bfd_elf_special_section const elf32_bfin_special_sections[] =