/* Whether to use RELA relocations when generating relocations.
This is a per-object flag to allow the assembler to generate REL
relocations for use in linker testcases. */
/* Whether to use RELA relocations when generating relocations.
This is a per-object flag to allow the assembler to generate REL
relocations for use in linker testcases. */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_NONE", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_NONE", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS32", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS32", /* name */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS16", /* name */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS16", /* name */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS8", /* name */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS8", /* name */
7, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S21", /* name */
7, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S21", /* name */
16, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S12", /* name */
16, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S12", /* name */
13, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S10", /* name */
13, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S10", /* name */
16, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S7", /* name */
16, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S7", /* name */
7, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS_S16", /* name */
7, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS_S16", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS_L16", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS_L16", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS_H16", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS_H16", /* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_U15_B", /* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_U15_B", /* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_U15_H", /* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_U15_H", /* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_U15_W", /* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_U15_W", /* name */
7, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_S16", /* name */
7, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_S16", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_L16_B", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_L16_B", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_L16_H", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_L16_H", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_L16_W", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_L16_W", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_H16_B", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_H16_B", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_H16_H", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_H16_H", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_H16_W", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_H16_W", /* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_GOT_U15_W",/* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_GOT_U15_W",/* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_GOT_L16_W",/* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_GOT_L16_W",/* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_GOT_H16_W",/* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_GOT_H16_W",/* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_DSBT_INDEX", /* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_DSBT_INDEX", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PREL31", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PREL31", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_COPY", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_COPY", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_JUMP_SLOT", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_JUMP_SLOT", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_EHTYPE", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_EHTYPE", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_H16", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_H16", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_L16", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_L16", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ALIGN", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ALIGN", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_FPHEAD", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_FPHEAD", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_NOCMP", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_NOCMP", /* name */
};
static reloc_howto_type elf32_tic6x_howto_table_rel[] =
{
HOWTO (R_C6000_NONE, /* type */
0, /* rightshift */
};
static reloc_howto_type elf32_tic6x_howto_table_rel[] =
{
HOWTO (R_C6000_NONE, /* type */
0, /* rightshift */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_NONE", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_NONE", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS32", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS32", /* name */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS16", /* name */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS16", /* name */
0x0000ffff, /* src_mask */
0x0000ffff, /* dst_mask */
0x0000ffff, /* src_mask */
0x0000ffff, /* dst_mask */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS8", /* name */
0, /* bitpos */
complain_overflow_bitfield,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS8", /* name */
0x000000ff, /* src_mask */
0x000000ff, /* dst_mask */
0x000000ff, /* src_mask */
0x000000ff, /* dst_mask */
7, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S21", /* name */
7, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S21", /* name */
0x0fffff80, /* src_mask */
0x0fffff80, /* dst_mask */
0x0fffff80, /* src_mask */
0x0fffff80, /* dst_mask */
16, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S12", /* name */
16, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S12", /* name */
0x0fff0000, /* src_mask */
0x0fff0000, /* dst_mask */
0x0fff0000, /* src_mask */
0x0fff0000, /* dst_mask */
13, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S10", /* name */
13, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S10", /* name */
0x007fe000, /* src_mask */
0x007fe000, /* dst_mask */
0x007fe000, /* src_mask */
0x007fe000, /* dst_mask */
16, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S7", /* name */
16, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PCR_S7", /* name */
0x007f0000, /* src_mask */
0x007f0000, /* dst_mask */
0x007f0000, /* src_mask */
0x007f0000, /* dst_mask */
7, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS_S16", /* name */
7, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS_S16", /* name */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS_L16", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ABS_L16", /* name */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
EMPTY_HOWTO (R_C6000_ABS_H16),
HOWTO (R_C6000_SBR_U15_B, /* type */
0, /* rightshift */
EMPTY_HOWTO (R_C6000_ABS_H16),
HOWTO (R_C6000_SBR_U15_B, /* type */
0, /* rightshift */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_U15_B", /* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_U15_B", /* name */
0x007fff00, /* src_mask */
0x007fff00, /* dst_mask */
0x007fff00, /* src_mask */
0x007fff00, /* dst_mask */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_U15_H", /* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_U15_H", /* name */
0x007fff00, /* src_mask */
0x007fff00, /* dst_mask */
0x007fff00, /* src_mask */
0x007fff00, /* dst_mask */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_U15_W", /* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_U15_W", /* name */
0x007fff00, /* src_mask */
0x007fff00, /* dst_mask */
0x007fff00, /* src_mask */
0x007fff00, /* dst_mask */
7, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_S16", /* name */
7, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_S16", /* name */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_L16_B", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_L16_B", /* name */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_L16_H", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_L16_H", /* name */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_L16_W", /* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_L16_W", /* name */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
EMPTY_HOWTO (R_C6000_SBR_H16_B),
EMPTY_HOWTO (R_C6000_SBR_H16_H),
EMPTY_HOWTO (R_C6000_SBR_H16_W),
HOWTO (R_C6000_SBR_GOT_U15_W, /* type */
2, /* rightshift */
EMPTY_HOWTO (R_C6000_SBR_H16_B),
EMPTY_HOWTO (R_C6000_SBR_H16_H),
EMPTY_HOWTO (R_C6000_SBR_H16_W),
HOWTO (R_C6000_SBR_GOT_U15_W, /* type */
2, /* rightshift */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_GOT_U15_W",/* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_GOT_U15_W",/* name */
0x007fff00, /* src_mask */
0x007fff00, /* dst_mask */
0x007fff00, /* src_mask */
0x007fff00, /* dst_mask */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_GOT_L16_W",/* name */
7, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_SBR_GOT_L16_W",/* name */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
0x007fff80, /* src_mask */
0x007fff80, /* dst_mask */
EMPTY_HOWTO (R_C6000_SBR_GOT_H16_W),
HOWTO (R_C6000_DSBT_INDEX, /* type */
0, /* rightshift */
EMPTY_HOWTO (R_C6000_SBR_GOT_H16_W),
HOWTO (R_C6000_DSBT_INDEX, /* type */
0, /* rightshift */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_DSBT_INDEX", /* name */
8, /* bitpos */
complain_overflow_unsigned,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_DSBT_INDEX", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PREL31", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_PREL31", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_COPY", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_COPY", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_JUMP_SLOT", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_JUMP_SLOT", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_EHTYPE", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_EHTYPE", /* name */
EMPTY_HOWTO (R_C6000_PCR_H16),
EMPTY_HOWTO (R_C6000_PCR_L16),
EMPTY_HOWTO (31),
EMPTY_HOWTO (R_C6000_PCR_H16),
EMPTY_HOWTO (R_C6000_PCR_L16),
EMPTY_HOWTO (31),
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ALIGN", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_ALIGN", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_FPHEAD", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_FPHEAD", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_NOCMP", /* name */
0, /* bitpos */
complain_overflow_dont,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_C6000_NOCMP", /* name */
elf32_tic6x_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *bfd_reloc,
Elf_Internal_Rela *elf_reloc)
{
elf32_tic6x_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *bfd_reloc,
Elf_Internal_Rela *elf_reloc)
{
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
abfd, r_type);
bfd_set_error (bfd_error_bad_value);
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
abfd, r_type);
bfd_set_error (bfd_error_bad_value);
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
abfd, r_type);
bfd_set_error (bfd_error_bad_value);
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
abfd, r_type);
bfd_set_error (bfd_error_bad_value);
elf32_tic6x_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, arelent *bfd_reloc,
Elf_Internal_Rela *elf_reloc)
{
elf32_tic6x_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, arelent *bfd_reloc,
Elf_Internal_Rela *elf_reloc)
{
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
abfd, r_type);
bfd_set_error (bfd_error_bad_value);
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
abfd, r_type);
bfd_set_error (bfd_error_bad_value);
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
abfd, r_type);
bfd_set_error (bfd_error_bad_value);
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
abfd, r_type);
bfd_set_error (bfd_error_bad_value);
}
/* Invoke the regular ELF backend linker to do all the work. */
if (!bfd_elf_final_link (abfd, info))
}
/* Invoke the regular ELF backend linker to do all the work. */
if (!bfd_elf_final_link (abfd, info))
elf32_tic6x_using_dsbt (bfd *abfd)
{
return bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC,
elf32_tic6x_using_dsbt (bfd *abfd)
{
return bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC,
elf32_tic6x_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
{
struct elf32_tic6x_link_hash_table *htab;
elf32_tic6x_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
{
struct elf32_tic6x_link_hash_table *htab;
if (htab->dsbt == NULL
|| !bfd_set_section_alignment (htab->dsbt, 2)
|| !bfd_set_section_alignment (htab->elf.splt, 5))
if (htab->dsbt == NULL
|| !bfd_set_section_alignment (htab->dsbt, 2)
|| !bfd_set_section_alignment (htab->elf.splt, 5))
elf32_tic6x_finish_dynamic_symbol (bfd * output_bfd,
struct bfd_link_info *info,
struct elf_link_hash_entry *h,
elf32_tic6x_finish_dynamic_symbol (bfd * output_bfd,
struct bfd_link_info *info,
struct elf_link_hash_entry *h,
}
/* Unwinding tables are not referenced directly. This pass marks them as
required if the corresponding code section is marked. */
}
/* Unwinding tables are not referenced directly. This pass marks them as
required if the corresponding code section is marked. */
elf32_tic6x_gc_mark_extra_sections (struct bfd_link_info *info,
elf_gc_mark_hook_fn gc_mark_hook)
{
bfd *sub;
Elf_Internal_Shdr **elf_shdrp;
elf32_tic6x_gc_mark_extra_sections (struct bfd_link_info *info,
elf_gc_mark_hook_fn gc_mark_hook)
{
bfd *sub;
Elf_Internal_Shdr **elf_shdrp;
_bfd_elf_gc_mark_extra_sections (info, gc_mark_hook);
/* Marking EH data may cause additional code sections to be marked,
requiring multiple passes. */
_bfd_elf_gc_mark_extra_sections (info, gc_mark_hook);
/* Marking EH data may cause additional code sections to be marked,
requiring multiple passes. */
- return (CONST_STRNEQ (name, ELF_STRING_C6000_unwind)
- || CONST_STRNEQ (name, ELF_STRING_C6000_unwind_once));
+ return (startswith (name, ELF_STRING_C6000_unwind)
+ || startswith (name, ELF_STRING_C6000_unwind_once));
}
/* Set the type and flags for an unwinding index table. We do this by
the section name, which is a hack, but ought to work. */
}
/* Set the type and flags for an unwinding index table. We do this by
the section name, which is a hack, but ought to work. */
elf32_tic6x_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
Elf_Internal_Shdr *hdr, asection *sec)
{
elf32_tic6x_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
Elf_Internal_Shdr *hdr, asection *sec)
{
elf32_tic6x_adjust_dynamic_symbol (struct bfd_link_info *info,
struct elf_link_hash_entry *h)
{
elf32_tic6x_adjust_dynamic_symbol (struct bfd_link_info *info,
struct elf_link_hash_entry *h)
{
h->root.u.def.section = def->root.u.def.section;
h->root.u.def.value = def->root.u.def.value;
h->non_got_ref = def->non_got_ref;
h->root.u.def.section = def->root.u.def.section;
h->root.u.def.value = def->root.u.def.value;
h->non_got_ref = def->non_got_ref;
For such cases we need not do anything here; the relocations will
be handled correctly by relocate_section. */
if (bfd_link_pic (info))
For such cases we need not do anything here; the relocations will
be handled correctly by relocate_section. */
if (bfd_link_pic (info))
/* If there are no references to this symbol that do not use the
GOT, we don't need to generate a copy reloc. */
if (!h->non_got_ref)
/* If there are no references to this symbol that do not use the
GOT, we don't need to generate a copy reloc. */
if (!h->non_got_ref)
/* We must allocate the symbol in our .dynbss section, which will
become part of the .bss section of the executable. There will be
/* We must allocate the symbol in our .dynbss section, which will
become part of the .bss section of the executable. There will be
than RELA relocation. RELOCS is the first relocation in the
section and ABFD is the bfd that contains SEC. */
than RELA relocation. RELOCS is the first relocation in the
section and ABFD is the bfd that contains SEC. */
elf32_tic6x_rel_relocation_p (bfd *abfd, asection *sec,
const Elf_Internal_Rela *relocs,
const Elf_Internal_Rela *rel)
elf32_tic6x_rel_relocation_p (bfd *abfd, asection *sec,
const Elf_Internal_Rela *relocs,
const Elf_Internal_Rela *rel)
fact that the INPUT_SECTION's REL_HDR is read before RELA_HDR. */
rel_hdr = elf_section_data (sec)->rel.hdr;
if (rel_hdr == NULL)
fact that the INPUT_SECTION's REL_HDR is read before RELA_HDR. */
rel_hdr = elf_section_data (sec)->rel.hdr;
if (rel_hdr == NULL)
bed = get_elf_backend_data (abfd);
return ((size_t) (rel - relocs)
< NUM_SHDR_ENTRIES (rel_hdr) * bed->s->int_rels_per_ext_rel);
bed = get_elf_backend_data (abfd);
return ((size_t) (rel - relocs)
< NUM_SHDR_ENTRIES (rel_hdr) * bed->s->int_rels_per_ext_rel);
/* We need dynamic symbols for every section, since segments can
relocate independently. */
/* We need dynamic symbols for every section, since segments can
relocate independently. */
elf32_tic6x_link_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info ATTRIBUTE_UNUSED,
asection *p)
elf32_tic6x_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:
/* If sh_type is yet undecided, assume it could be
SHT_PROGBITS/SHT_NOBITS. */
case SHT_NULL:
elf32_tic6x_relocate_section (bfd *output_bfd,
struct bfd_link_info *info,
bfd *input_bfd,
elf32_tic6x_relocate_section (bfd *output_bfd,
struct bfd_link_info *info,
bfd *input_bfd,
asection *sec;
struct elf_link_hash_entry *h;
bfd_vma off, off2, relocation;
asection *sec;
struct elf_link_hash_entry *h;
bfd_vma off, off2, relocation;
RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
r_symndx, symtab_hdr, sym_hashes,
RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
r_symndx, symtab_hdr, sym_hashes,
sreloc = elf_section_data (input_section)->sreloc;
BFD_ASSERT (sreloc != NULL && sreloc->contents != NULL);
sreloc = elf_section_data (input_section)->sreloc;
BFD_ASSERT (sreloc != NULL && sreloc->contents != NULL);
outrel.r_offset =
_bfd_elf_section_offset (output_bfd, info, input_section,
rel->r_offset);
if (outrel.r_offset == (bfd_vma) -1)
outrel.r_offset =
_bfd_elf_section_offset (output_bfd, info, input_section,
rel->r_offset);
if (outrel.r_offset == (bfd_vma) -1)
_bfd_error_handler (_("%pB: SB-relative relocation but "
"__c6xabi_DSBT_BASE not defined"),
input_bfd);
_bfd_error_handler (_("%pB: SB-relative relocation but "
"__c6xabi_DSBT_BASE not defined"),
input_bfd);
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
input_bfd, r_type);
bfd_set_error (bfd_error_bad_value);
_bfd_error_handler (_("%pB: unsupported relocation type %#x"),
input_bfd, r_type);
bfd_set_error (bfd_error_bad_value);
case bfd_reloc_undefined:
(*info->callbacks->undefined_symbol) (info, name, input_bfd,
input_section,
case bfd_reloc_undefined:
(*info->callbacks->undefined_symbol) (info, name, input_bfd,
input_section,
calculate needed space in the global offset table, procedure linkage
table, and dynamic reloc sections. */
calculate needed space in the global offset table, procedure linkage
table, and dynamic reloc sections. */
elf32_tic6x_check_relocs (bfd *abfd, struct bfd_link_info *info,
asection *sec, const Elf_Internal_Rela *relocs)
{
elf32_tic6x_check_relocs (bfd *abfd, struct bfd_link_info *info,
asection *sec, const Elf_Internal_Rela *relocs)
{
&& ! htab->elf.dynamic_sections_created)
{
if (! _bfd_elf_link_create_dynamic_sections (abfd, info))
&& ! htab->elf.dynamic_sections_created)
{
if (! _bfd_elf_link_create_dynamic_sections (abfd, info))
+ sizeof (bfd_vma) + sizeof(char));
local_got_refcounts = bfd_zalloc (abfd, size);
if (local_got_refcounts == NULL)
+ sizeof (bfd_vma) + sizeof(char));
local_got_refcounts = bfd_zalloc (abfd, size);
if (local_got_refcounts == NULL)
if (htab->elf.dynobj == NULL)
htab->elf.dynobj = abfd;
if (!_bfd_elf_create_got_section (htab->elf.dynobj, info))
if (htab->elf.dynobj == NULL)
htab->elf.dynobj = abfd;
if (!_bfd_elf_create_got_section (htab->elf.dynobj, info))
- (sec, htab->elf.dynobj, 2, abfd, /*rela? */ TRUE);
+ (sec, htab->elf.dynobj, 2, abfd, /*rela? */ true);
- NULL, FALSE, FALSE, &bh))
- return FALSE;
+ NULL, false, false, &bh))
+ return false;
elf32_tic6x_add_symbol_hook (bfd *abfd,
struct bfd_link_info *info ATTRIBUTE_UNUSED,
Elf_Internal_Sym *sym,
elf32_tic6x_add_symbol_hook (bfd *abfd,
struct bfd_link_info *info ATTRIBUTE_UNUSED,
Elf_Internal_Sym *sym,
if (strcmp (bfd_section_name (sec), ".scommon") == 0)
{
*retval = SHN_TIC6X_SCOMMON;
if (strcmp (bfd_section_name (sec), ".scommon") == 0)
{
*retval = SHN_TIC6X_SCOMMON;
elf32_tic6x_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
{
struct bfd_link_info *info;
elf32_tic6x_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
{
struct bfd_link_info *info;
if (h->dynindx == -1 && !h->forced_local)
{
if (! bfd_elf_link_record_dynamic_symbol (info, h))
if (h->dynindx == -1 && !h->forced_local)
{
if (! bfd_elf_link_record_dynamic_symbol (info, h))
elf32_tic6x_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
{
struct elf32_tic6x_link_hash_table *htab;
bfd *dynobj;
asection *s;
elf32_tic6x_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
{
struct elf32_tic6x_link_hash_table *htab;
bfd *dynobj;
asection *s;
/* Round up the size of the PLT section to a multiple of 32. */
if (s == htab->elf.splt && s->size > 0)
s->size = (s->size + 31) & ~(bfd_vma)31;
}
/* Round up the size of the PLT section to a multiple of 32. */
if (s == htab->elf.splt && s->size > 0)
s->size = (s->size + 31) & ~(bfd_vma)31;
}
_bfd_elf_add_dynamic_entry (info, TAG, VAL)
if (!_bfd_elf_add_dynamic_tags (output_bfd, info, relocs))
_bfd_elf_add_dynamic_entry (info, TAG, VAL)
if (!_bfd_elf_add_dynamic_tags (output_bfd, info, relocs))
if (!add_dynamic_entry (DT_C6000_DSBT_BASE, 0)
|| !add_dynamic_entry (DT_C6000_DSBT_SIZE, htab->params.dsbt_size)
|| !add_dynamic_entry (DT_C6000_DSBT_INDEX,
htab->params.dsbt_index))
if (!add_dynamic_entry (DT_C6000_DSBT_BASE, 0)
|| !add_dynamic_entry (DT_C6000_DSBT_SIZE, htab->params.dsbt_size)
|| !add_dynamic_entry (DT_C6000_DSBT_INDEX,
htab->params.dsbt_index))
}
/* This function is called after all the input files have been read,
and the input sections have been assigned to output sections. */
}
/* This function is called after all the input files have been read,
and the input sections have been assigned to output sections. */
elf32_tic6x_always_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
if (elf32_tic6x_using_dsbt (output_bfd) && !bfd_link_relocatable (info)
&& !bfd_elf_stack_segment_size (output_bfd, info,
"__stacksize", DEFAULT_STACK_SIZE))
elf32_tic6x_always_size_sections (bfd *output_bfd, struct bfd_link_info *info)
{
if (elf32_tic6x_using_dsbt (output_bfd) && !bfd_link_relocatable (info)
&& !bfd_elf_stack_segment_size (output_bfd, info,
"__stacksize", DEFAULT_STACK_SIZE))
elf32_tic6x_finish_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
elf32_tic6x_finish_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
struct bfd_link_info *info)
{
(_("%pB: error: unknown mandatory EABI object attribute %d"),
abfd, tag);
bfd_set_error (bfd_error_bad_value);
(_("%pB: error: unknown mandatory EABI object attribute %d"),
abfd, tag);
bfd_set_error (bfd_error_bad_value);
/* Merge attributes from IBFD and OBFD, returning TRUE if the merge
succeeded, FALSE otherwise. */
/* Merge attributes from IBFD and OBFD, returning TRUE if the merge
succeeded, FALSE otherwise. */
elf32_tic6x_merge_attributes (bfd *ibfd, struct bfd_link_info *info)
{
bfd *obfd = info->output_bfd;
elf32_tic6x_merge_attributes (bfd *ibfd, struct bfd_link_info *info)
{
bfd *obfd = info->output_bfd;
}
array_expect_in = elf32_tic6x_tag_to_array_alignment
(in_attr[Tag_ABI_array_object_align_expected].i);
}
array_expect_in = elf32_tic6x_tag_to_array_alignment
(in_attr[Tag_ABI_array_object_align_expected].i);
}
array_expect_out = elf32_tic6x_tag_to_array_alignment
(out_attr[Tag_ABI_array_object_align_expected].i);
}
array_expect_out = elf32_tic6x_tag_to_array_alignment
(out_attr[Tag_ABI_array_object_align_expected].i);
/* Merge Tag_ABI_compatibility attributes and any common GNU ones. */
if (!_bfd_elf_merge_object_attributes (ibfd, info))
/* Merge Tag_ABI_compatibility attributes and any common GNU ones. */
if (!_bfd_elf_merge_object_attributes (ibfd, info))
elf32_tic6x_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
{
if (!_bfd_generic_verify_endian_match (ibfd, info))
elf32_tic6x_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
{
if (!_bfd_generic_verify_endian_match (ibfd, info))
elf32_tic6x_fix_exidx_coverage (asection **text_section_order,
unsigned int num_text_sections,
struct bfd_link_info *info,
elf32_tic6x_fix_exidx_coverage (asection **text_section_order,
unsigned int num_text_sections,
struct bfd_link_info *info,
if (last_exidx_sec && last_unwind_type != 0)
elf32_tic6x_insert_cantunwind_after (last_text_sec, last_exidx_sec);
if (last_exidx_sec && last_unwind_type != 0)
elf32_tic6x_insert_cantunwind_after (last_text_sec, last_exidx_sec);
elf32_tic6x_write_section (bfd *output_bfd,
struct bfd_link_info *link_info,
asection *sec,
elf32_tic6x_write_section (bfd *output_bfd,
struct bfd_link_info *link_info,
asection *sec,
/* If this section has not been allocated an _tic6x_elf_section_data
structure then we cannot record anything. */
tic6x_data = get_tic6x_elf_section_data (sec);
if (tic6x_data == NULL)
/* If this section has not been allocated an _tic6x_elf_section_data
structure then we cannot record anything. */
tic6x_data = get_tic6x_elf_section_data (sec);
if (tic6x_data == NULL)