ret->tls_get_addr = "__tls_get_addr";
ret->relative_r_type = R_X86_64_RELATIVE;
ret->relative_r_name = "R_X86_64_RELATIVE";
+ ret->ax_register = "RAX";
ret->elf_append_reloc = elf_append_rela;
ret->elf_write_addend_in_got = _bfd_elf64_write_addend;
}
ret->pointer_r_type = R_386_32;
ret->relative_r_type = R_386_RELATIVE;
ret->relative_r_name = "R_386_RELATIVE";
+ ret->ax_register = "EAX";
ret->elf_append_reloc = elf_append_rel;
ret->elf_write_addend = _bfd_elf32_write_addend;
ret->elf_write_addend_in_got = _bfd_elf32_write_addend;
enum elf_x86_tls_error_type tls_error)
{
const char *name;
+ const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+ struct elf_x86_link_hash_table *htab
+ = elf_x86_hash_table (info, bed->target_id);
if (h)
name = h->root.root.string;
else
{
- const struct elf_backend_data *bed
- = get_elf_backend_data (abfd);
- struct elf_x86_link_hash_table *htab
- = elf_x86_hash_table (info, bed->target_id);
if (htab == NULL)
name = "*unknown*";
else
info->callbacks->einfo
/* xgettext:c-format */
(_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
- "in indirect CALL only\n"),
- abfd, asect, rel->r_offset, from_reloc_name, name);
+ "in indirect CALL with %s register only\n"),
+ abfd, asect, rel->r_offset, from_reloc_name, name,
+ htab->ax_register);
break;
case elf_x86_tls_error_lea:
const char *dynamic_interpreter;
const char *tls_get_addr;
const char *relative_r_name;
+ const char *ax_register;
void (*elf_append_reloc) (bfd *, asection *, Elf_Internal_Rela *);
void (*elf_write_addend) (bfd *, uint64_t, void *);
void (*elf_write_addend_in_got) (bfd *, uint64_t, void *);