diff options
Diffstat (limited to 'binutils-2.22/bfd/elf64-mips.c')
-rw-r--r-- | binutils-2.22/bfd/elf64-mips.c | 292 |
1 files changed, 256 insertions, 36 deletions
diff --git a/binutils-2.22/bfd/elf64-mips.c b/binutils-2.22/bfd/elf64-mips.c index 3feb1bb..e02f969 100644 --- a/binutils-2.22/bfd/elf64-mips.c +++ b/binutils-2.22/bfd/elf64-mips.c @@ -1340,7 +1340,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_DTPMOD64", /* name */ FALSE, /* partial_inplace */ - MINUS_ONE, /* src_mask */ + 0, /* src_mask */ MINUS_ONE, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1354,7 +1354,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_DTPREL64", /* name */ FALSE, /* partial_inplace */ - MINUS_ONE, /* src_mask */ + 0, /* src_mask */ MINUS_ONE, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1369,7 +1369,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_GD", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1384,7 +1384,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_LDM", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1399,7 +1399,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_DTPREL_HI16", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1414,7 +1414,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_DTPREL_LO16", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1429,7 +1429,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_GOTTPREL", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1446,7 +1446,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_TPREL64", /* name */ FALSE, /* partial_inplace */ - MINUS_ONE, /* src_mask */ + 0, /* src_mask */ MINUS_ONE, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1461,7 +1461,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_TPREL_HI16", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1476,7 +1476,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS_TLS_TPREL_LO16", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1590,6 +1590,111 @@ static reloc_howto_type mips16_elf64_howto_table_rel[] = 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ + + /* MIPS16 TLS general dynamic variable reference. */ + HOWTO (R_MIPS16_TLS_GD, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_GD", /* name */ + TRUE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS local dynamic variable reference. */ + HOWTO (R_MIPS16_TLS_LDM, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_LDM", /* name */ + TRUE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS local dynamic offset. */ + HOWTO (R_MIPS16_TLS_DTPREL_HI16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_DTPREL_HI16", /* name */ + TRUE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS local dynamic offset. */ + HOWTO (R_MIPS16_TLS_DTPREL_LO16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_DTPREL_LO16", /* name */ + TRUE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS thread pointer offset. */ + HOWTO (R_MIPS16_TLS_GOTTPREL, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_GOTTPREL", /* name */ + TRUE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS thread pointer offset. */ + HOWTO (R_MIPS16_TLS_TPREL_HI16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_TPREL_HI16", /* name */ + TRUE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS thread pointer offset. */ + HOWTO (R_MIPS16_TLS_TPREL_LO16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_TPREL_LO16", /* name */ + TRUE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ }; static reloc_howto_type mips16_elf64_howto_table_rela[] = @@ -1608,7 +1713,7 @@ static reloc_howto_type mips16_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS16_26", /* name */ FALSE, /* partial_inplace */ - 0x3ffffff, /* src_mask */ + 0, /* src_mask */ 0x3ffffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1623,7 +1728,7 @@ static reloc_howto_type mips16_elf64_howto_table_rela[] = mips16_gprel_reloc, /* special_function */ "R_MIPS16_GPREL", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1638,7 +1743,7 @@ static reloc_howto_type mips16_elf64_howto_table_rela[] = _bfd_mips_elf_got16_reloc, /* special_function */ "R_MIPS16_GOT16", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1653,7 +1758,7 @@ static reloc_howto_type mips16_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS16_CALL16", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1668,7 +1773,7 @@ static reloc_howto_type mips16_elf64_howto_table_rela[] = _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS16_HI16", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1683,6 +1788,111 @@ static reloc_howto_type mips16_elf64_howto_table_rela[] = _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS16_LO16", /* name */ FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS general dynamic variable reference. */ + HOWTO (R_MIPS16_TLS_GD, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_GD", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS local dynamic variable reference. */ + HOWTO (R_MIPS16_TLS_LDM, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_LDM", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS local dynamic offset. */ + HOWTO (R_MIPS16_TLS_DTPREL_HI16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_DTPREL_HI16", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS local dynamic offset. */ + HOWTO (R_MIPS16_TLS_DTPREL_LO16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_DTPREL_LO16", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS thread pointer offset. */ + HOWTO (R_MIPS16_TLS_GOTTPREL, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_GOTTPREL", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS thread pointer offset. */ + HOWTO (R_MIPS16_TLS_TPREL_HI16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_TPREL_HI16", /* name */ + FALSE, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + FALSE), /* pcrel_offset */ + + /* MIPS16 TLS thread pointer offset. */ + HOWTO (R_MIPS16_TLS_TPREL_LO16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_generic_reloc, /* special_function */ + "R_MIPS16_TLS_TPREL_LO16", /* name */ + FALSE, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -1996,7 +2206,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_26_S1", /* name */ FALSE, /* partial_inplace */ - 0x3ffffff, /* src_mask */ + 0, /* src_mask */ 0x3ffffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2011,7 +2221,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MICROMIPS_HI16", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2026,7 +2236,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MICROMIPS_LO16", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2041,7 +2251,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf32_gprel16_reloc, /* special_function */ "R_MICROMIPS_GPREL16", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2056,7 +2266,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf32_gprel16_reloc, /* special_function */ "R_MICROMIPS_LITERAL", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2071,7 +2281,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_got16_reloc, /* special_function */ "R_MICROMIPS_GOT16", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2086,7 +2296,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_PC7_S1", /* name */ FALSE, /* partial_inplace */ - 0x0000007f, /* src_mask */ + 0, /* src_mask */ 0x0000007f, /* dst_mask */ TRUE), /* pcrel_offset */ @@ -2100,7 +2310,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_PC10_S1", /* name */ FALSE, /* partial_inplace */ - 0x000003ff, /* src_mask */ + 0, /* src_mask */ 0x000003ff, /* dst_mask */ TRUE), /* pcrel_offset */ @@ -2114,7 +2324,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_PC16_S1", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ TRUE), /* pcrel_offset */ @@ -2129,7 +2339,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_CALL16", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2147,7 +2357,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_GOT_DISP",/* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2162,7 +2372,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_GOT_PAGE",/* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2177,7 +2387,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_GOT_OFST",/* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2192,7 +2402,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_GOT_HI16",/* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2207,7 +2417,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_GOT_LO16",/* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2222,7 +2432,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_SUB", /* name */ FALSE, /* partial_inplace */ - MINUS_ONE, /* src_mask */ + 0, /* src_mask */ MINUS_ONE, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2237,7 +2447,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_HIGHER", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2252,7 +2462,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_HIGHEST", /* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2267,7 +2477,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_CALL_HI16",/* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ @@ -2282,7 +2492,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_CALL_LO16",/* name */ FALSE, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ FALSE), /* pcrel_offset */ }; @@ -2498,6 +2708,7 @@ mips_elf64_be_swap_reloc_out (bfd *abfd, const Elf_Internal_Rela *src, mirel.r_offset = src[0].r_offset; BFD_ASSERT(src[0].r_offset == src[1].r_offset); + BFD_ASSERT(src[0].r_offset == src[2].r_offset); mirel.r_type = ELF64_MIPS_R_TYPE (src[0].r_info); mirel.r_sym = ELF64_R_SYM (src[0].r_info); @@ -2908,6 +3119,15 @@ static const struct elf_reloc_map mips16_reloc_map[] = { BFD_RELOC_MIPS16_CALL16, R_MIPS16_CALL16 - R_MIPS16_min }, { BFD_RELOC_MIPS16_HI16_S, R_MIPS16_HI16 - R_MIPS16_min }, { BFD_RELOC_MIPS16_LO16, R_MIPS16_LO16 - R_MIPS16_min }, + { BFD_RELOC_MIPS16_TLS_GD, R_MIPS16_TLS_GD - R_MIPS16_min }, + { BFD_RELOC_MIPS16_TLS_LDM, R_MIPS16_TLS_LDM - R_MIPS16_min }, + { BFD_RELOC_MIPS16_TLS_DTPREL_HI16, + R_MIPS16_TLS_DTPREL_HI16 - R_MIPS16_min }, + { BFD_RELOC_MIPS16_TLS_DTPREL_LO16, + R_MIPS16_TLS_DTPREL_LO16 - R_MIPS16_min }, + { BFD_RELOC_MIPS16_TLS_GOTTPREL, R_MIPS16_TLS_GOTTPREL - R_MIPS16_min }, + { BFD_RELOC_MIPS16_TLS_TPREL_HI16, R_MIPS16_TLS_TPREL_HI16 - R_MIPS16_min }, + { BFD_RELOC_MIPS16_TLS_TPREL_LO16, R_MIPS16_TLS_TPREL_LO16 - R_MIPS16_min } }; static const struct elf_reloc_map micromips_reloc_map[] = @@ -3906,7 +4126,7 @@ const struct elf_size_info mips_elf64_size_info = #define elf_backend_grok_prstatus elf64_mips_grok_prstatus #define elf_backend_grok_psinfo elf64_mips_grok_psinfo -#define elf_backend_got_header_size (4 * MIPS_RESERVED_GOTNO) +#define elf_backend_got_header_size (8 * MIPS_RESERVED_GOTNO) /* MIPS ELF64 can use a mixture of REL and RELA, but some Relocations work better/work only in RELA, so we default to this. */ |