mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-26 19:44:11 +08:00
RISC-V: Add TLSDESC reloc definitions.
bfd/ * elfxx-riscv.c: Add 5 TLSDESC reloc descriptions. * reloc.c: Likewise. * libbfd.h: Regenerate. * bfd-in2.h: Regenerate. include/ * elf/riscv.h: Add 5 TLSDESC reloc descriptions.
This commit is contained in:
parent
3243d790ee
commit
dc1470f1d8
@ -5420,6 +5420,10 @@ enum bfd_reloc_code_real
|
||||
BFD_RELOC_RISCV_TLS_DTPREL64,
|
||||
BFD_RELOC_RISCV_TLS_TPREL32,
|
||||
BFD_RELOC_RISCV_TLS_TPREL64,
|
||||
BFD_RELOC_RISCV_TLSDESC_HI20,
|
||||
BFD_RELOC_RISCV_TLSDESC_LOAD_LO12,
|
||||
BFD_RELOC_RISCV_TLSDESC_ADD_LO12,
|
||||
BFD_RELOC_RISCV_TLSDESC_CALL,
|
||||
BFD_RELOC_RISCV_ALIGN,
|
||||
BFD_RELOC_RISCV_RVC_BRANCH,
|
||||
BFD_RELOC_RISCV_RVC_JUMP,
|
||||
|
@ -218,7 +218,20 @@ static reloc_howto_type howto_table[] =
|
||||
MINUS_ONE, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (12),
|
||||
HOWTO (R_RISCV_TLSDESC, /* type */
|
||||
0, /* rightshift */
|
||||
0, /* size is handled by dynamic linker */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_RISCV_TLSDESC", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
MINUS_ONE, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (13),
|
||||
EMPTY_HOWTO (14),
|
||||
EMPTY_HOWTO (15),
|
||||
@ -808,6 +821,62 @@ static reloc_howto_type howto_table[] =
|
||||
0, /* src_mask */
|
||||
0, /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
HOWTO (R_RISCV_TLSDESC_HI20, /* type */
|
||||
0, /* rightshift */
|
||||
4, /* size */
|
||||
32, /* bitsize */
|
||||
true, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_RISCV_TLSDESC_HI20", /* name */
|
||||
true, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
ENCODE_UTYPE_IMM (-1U), /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
HOWTO (R_RISCV_TLSDESC_LOAD_LO12, /* type */
|
||||
0, /* rightshift */
|
||||
4, /* size */
|
||||
32, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_RISCV_TLSDESC_LOAD_LO12", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
ENCODE_ITYPE_IMM (-1U), /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
HOWTO (R_RISCV_TLSDESC_ADD_LO12, /* type */
|
||||
0, /* rightshift */
|
||||
4, /* size */
|
||||
32, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_RISCV_TLSDESC_ADD_LO12", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
ENCODE_ITYPE_IMM (-1U), /* dst_mask */
|
||||
false), /* pcrel_offset */
|
||||
|
||||
HOWTO (R_RISCV_TLSDESC_CALL, /* type */
|
||||
0, /* rightshift */
|
||||
0, /* size */
|
||||
0, /* bitsize */
|
||||
false, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
"R_RISCV_TLSDESC_CALL", /* name */
|
||||
false, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
ENCODE_ITYPE_IMM (-1U), /* dst_mask */
|
||||
false) /* pcrel_offset */
|
||||
};
|
||||
|
||||
static reloc_howto_type howto_table_internal[] =
|
||||
@ -935,6 +1004,10 @@ static const struct elf_reloc_map riscv_reloc_map[] =
|
||||
{ BFD_RELOC_RISCV_TPREL_LO12_I, R_RISCV_TPREL_LO12_I },
|
||||
{ BFD_RELOC_RISCV_TLS_GOT_HI20, R_RISCV_TLS_GOT_HI20 },
|
||||
{ BFD_RELOC_RISCV_TLS_GD_HI20, R_RISCV_TLS_GD_HI20 },
|
||||
{ BFD_RELOC_RISCV_TLSDESC_HI20, R_RISCV_TLSDESC_HI20 },
|
||||
{ BFD_RELOC_RISCV_TLSDESC_LOAD_LO12, R_RISCV_TLSDESC_LOAD_LO12 },
|
||||
{ BFD_RELOC_RISCV_TLSDESC_ADD_LO12, R_RISCV_TLSDESC_ADD_LO12 },
|
||||
{ BFD_RELOC_RISCV_TLSDESC_CALL, R_RISCV_TLSDESC_CALL },
|
||||
{ BFD_RELOC_RISCV_ALIGN, R_RISCV_ALIGN },
|
||||
{ BFD_RELOC_RISCV_RVC_BRANCH, R_RISCV_RVC_BRANCH },
|
||||
{ BFD_RELOC_RISCV_RVC_JUMP, R_RISCV_RVC_JUMP },
|
||||
|
@ -2409,6 +2409,10 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
|
||||
"BFD_RELOC_RISCV_TLS_DTPREL64",
|
||||
"BFD_RELOC_RISCV_TLS_TPREL32",
|
||||
"BFD_RELOC_RISCV_TLS_TPREL64",
|
||||
"BFD_RELOC_RISCV_TLSDESC_HI20",
|
||||
"BFD_RELOC_RISCV_TLSDESC_LOAD_LO12",
|
||||
"BFD_RELOC_RISCV_TLSDESC_ADD_LO12",
|
||||
"BFD_RELOC_RISCV_TLSDESC_CALL",
|
||||
"BFD_RELOC_RISCV_ALIGN",
|
||||
"BFD_RELOC_RISCV_RVC_BRANCH",
|
||||
"BFD_RELOC_RISCV_RVC_JUMP",
|
||||
|
@ -5002,6 +5002,14 @@ ENUMX
|
||||
BFD_RELOC_RISCV_TLS_TPREL32
|
||||
ENUMX
|
||||
BFD_RELOC_RISCV_TLS_TPREL64
|
||||
ENUMX
|
||||
BFD_RELOC_RISCV_TLSDESC_HI20
|
||||
ENUMX
|
||||
BFD_RELOC_RISCV_TLSDESC_LOAD_LO12
|
||||
ENUMX
|
||||
BFD_RELOC_RISCV_TLSDESC_ADD_LO12
|
||||
ENUMX
|
||||
BFD_RELOC_RISCV_TLSDESC_CALL
|
||||
ENUMX
|
||||
BFD_RELOC_RISCV_ALIGN
|
||||
ENUMX
|
||||
|
@ -44,6 +44,7 @@ START_RELOC_NUMBERS (elf_riscv_reloc_type)
|
||||
RELOC_NUMBER (R_RISCV_TLS_DTPREL64, 9)
|
||||
RELOC_NUMBER (R_RISCV_TLS_TPREL32, 10)
|
||||
RELOC_NUMBER (R_RISCV_TLS_TPREL64, 11)
|
||||
RELOC_NUMBER (R_RISCV_TLSDESC, 12)
|
||||
|
||||
/* Relocation types not used by the dynamic linker. */
|
||||
RELOC_NUMBER (R_RISCV_BRANCH, 16)
|
||||
@ -90,6 +91,10 @@ START_RELOC_NUMBERS (elf_riscv_reloc_type)
|
||||
/* Reserved 59 for R_RISCV_PLT32. */
|
||||
RELOC_NUMBER (R_RISCV_SET_ULEB128, 60)
|
||||
RELOC_NUMBER (R_RISCV_SUB_ULEB128, 61)
|
||||
RELOC_NUMBER (R_RISCV_TLSDESC_HI20, 62)
|
||||
RELOC_NUMBER (R_RISCV_TLSDESC_LOAD_LO12, 63)
|
||||
RELOC_NUMBER (R_RISCV_TLSDESC_ADD_LO12, 64)
|
||||
RELOC_NUMBER (R_RISCV_TLSDESC_CALL, 65)
|
||||
END_RELOC_NUMBERS (R_RISCV_max)
|
||||
|
||||
/* Internal relocations used exclusively by the relaxation pass. */
|
||||
|
Loading…
Reference in New Issue
Block a user