microMIPS/BFD: Add missing NewABI TLS and miscellaneous relocations
Complement commit df58fc944d
("MIPS: microMIPS ASE support"),
<https://sourceware.org/ml/binutils/2011-07/msg00198.html>, and add TLS
and a few miscellaneous relocations to NewABI microMIPS support, fixing
GAS assertion failures:
.../gas/testsuite/gas/mips/elf-rel28.s: Assembler messages:
.../gas/testsuite/gas/mips/elf-rel28.s:19: Internal error in append_insn at .../gas/config/tc-mips.c:7660.
Please report this bug.
observed if an attempt is made to assemble the `elf-rel28.s' test case
to microMIPS code. The relocations are the same as with o32 support,
except for `partial_inplace' and `src_mask' updates for the respective
RELA variants.
bfd/
* elf64-mips.c (micromips_elf64_howto_table_rel): Add
R_MICROMIPS_HI0_LO16, R_MICROMIPS_TLS_GD, R_MICROMIPS_TLS_LDM,
R_MICROMIPS_TLS_DTPREL_HI16, R_MICROMIPS_TLS_DTPREL_LO16,
R_MICROMIPS_TLS_GOTTPREL, R_MICROMIPS_TLS_TPREL_HI16,
R_MICROMIPS_TLS_TPREL_LO16, R_MICROMIPS_GPREL7_S2 and
R_MICROMIPS_PC23_S2 relocation entries.
(micromips_elf64_howto_table_rela): Likewise.
(micromips_reloc_map): Likewise.
* elfn32-mips.c (elf_micromips_howto_table_rel): Likewise.
(elf_micromips_howto_table_rela): Likewise.
(micromips_reloc_map): Likewise.
gas/
* testsuite/gas/mips/elf-rel28-micromips-n32.d: New test.
* testsuite/gas/mips/elf-rel28-micromips-n64.d: New test.
* testsuite/gas/mips/mips.exp: Run the new tests.
This commit is contained in:
parent
30e5322741
commit
156f2c001e
@ -1,3 +1,17 @@
|
||||
2018-07-02 Maciej W. Rozycki <macro@mips.com>
|
||||
|
||||
* elf64-mips.c (micromips_elf64_howto_table_rel): Add
|
||||
R_MICROMIPS_HI0_LO16, R_MICROMIPS_TLS_GD, R_MICROMIPS_TLS_LDM,
|
||||
R_MICROMIPS_TLS_DTPREL_HI16, R_MICROMIPS_TLS_DTPREL_LO16,
|
||||
R_MICROMIPS_TLS_GOTTPREL, R_MICROMIPS_TLS_TPREL_HI16,
|
||||
R_MICROMIPS_TLS_TPREL_LO16, R_MICROMIPS_GPREL7_S2 and
|
||||
R_MICROMIPS_PC23_S2 relocation entries.
|
||||
(micromips_elf64_howto_table_rela): Likewise.
|
||||
(micromips_reloc_map): Likewise.
|
||||
* elfn32-mips.c (elf_micromips_howto_table_rel): Likewise.
|
||||
(elf_micromips_howto_table_rela): Likewise.
|
||||
(micromips_reloc_map): Likewise.
|
||||
|
||||
2018-07-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/23324
|
||||
|
335
bfd/elf64-mips.c
335
bfd/elf64-mips.c
@ -2421,6 +2421,166 @@ static reloc_howto_type micromips_elf64_howto_table_rel[] =
|
||||
0, /* src_mask */
|
||||
0x00000000, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* Low 16 bits of symbol value. Note that the high 16 bits of symbol values
|
||||
must be zero. This is used for relaxation. */
|
||||
HOWTO (R_MICROMIPS_HI0_LO16, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
_bfd_mips_elf_generic_reloc, /* special_function */
|
||||
"R_MICROMIPS_HI0_LO16",/* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (158),
|
||||
EMPTY_HOWTO (159),
|
||||
EMPTY_HOWTO (160),
|
||||
EMPTY_HOWTO (161),
|
||||
|
||||
/* TLS general dynamic variable reference. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_GD", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS local dynamic variable reference. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_LDM", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS local dynamic offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_DTPREL_HI16", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS local dynamic offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_DTPREL_LO16", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS thread pointer offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_GOTTPREL", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (167),
|
||||
EMPTY_HOWTO (168),
|
||||
|
||||
/* TLS thread pointer offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_TPREL_HI16", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS thread pointer offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_TPREL_LO16", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (171),
|
||||
|
||||
/* GP- and PC-relative relocations. */
|
||||
HOWTO (R_MICROMIPS_GPREL7_S2, /* type */
|
||||
2, /* rightshift */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
7, /* bitsize */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
_bfd_mips_elf32_gprel16_reloc, /* special_function */
|
||||
"R_MICROMIPS_GPREL7_S2", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000007f, /* src_mask */
|
||||
0x0000007f, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
HOWTO (R_MICROMIPS_PC23_S2, /* type */
|
||||
2, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
23, /* bitsize */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
_bfd_mips_elf_generic_reloc, /* special_function */
|
||||
"R_MICROMIPS_PC23_S2", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x007fffff, /* src_mask */
|
||||
0x007fffff, /* dst_mask */
|
||||
TRUE), /* pcrel_offset */
|
||||
};
|
||||
|
||||
static reloc_howto_type micromips_elf64_howto_table_rela[] =
|
||||
@ -2763,6 +2923,166 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] =
|
||||
0, /* src_mask */
|
||||
0x00000000, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* Low 16 bits of symbol value. Note that the high 16 bits of symbol values
|
||||
must be zero. This is used for relaxation. */
|
||||
HOWTO (R_MICROMIPS_HI0_LO16, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
_bfd_mips_elf_generic_reloc, /* special_function */
|
||||
"R_MICROMIPS_HI0_LO16",/* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (158),
|
||||
EMPTY_HOWTO (159),
|
||||
EMPTY_HOWTO (160),
|
||||
EMPTY_HOWTO (161),
|
||||
|
||||
/* TLS general dynamic variable reference. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_GD", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS local dynamic variable reference. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_LDM", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS local dynamic offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_DTPREL_HI16", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS local dynamic offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_DTPREL_LO16", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS thread pointer offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_GOTTPREL", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (167),
|
||||
EMPTY_HOWTO (168),
|
||||
|
||||
/* TLS thread pointer offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_TPREL_HI16", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS thread pointer offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_TPREL_LO16", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (171),
|
||||
|
||||
/* GP- and PC-relative relocations. */
|
||||
HOWTO (R_MICROMIPS_GPREL7_S2, /* type */
|
||||
2, /* rightshift */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
7, /* bitsize */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
_bfd_mips_elf32_gprel16_reloc, /* special_function */
|
||||
"R_MICROMIPS_GPREL7_S2", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000007f, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
HOWTO (R_MICROMIPS_PC23_S2, /* type */
|
||||
2, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
23, /* bitsize */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
_bfd_mips_elf_generic_reloc, /* special_function */
|
||||
"R_MICROMIPS_PC23_S2", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x007fffff, /* dst_mask */
|
||||
TRUE), /* pcrel_offset */
|
||||
};
|
||||
|
||||
/* GNU extension to record C++ vtable hierarchy */
|
||||
@ -3463,6 +3783,21 @@ static const struct elf_reloc_map micromips_reloc_map[] =
|
||||
{ BFD_RELOC_MICROMIPS_CALL_LO16, R_MICROMIPS_CALL_LO16 - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_SCN_DISP, R_MICROMIPS_SCN_DISP - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_JALR, R_MICROMIPS_JALR - R_MICROMIPS_min },
|
||||
/* There is no BFD reloc for R_MICROMIPS_HI0_LO16. */
|
||||
{ BFD_RELOC_MICROMIPS_TLS_GD, R_MICROMIPS_TLS_GD - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_TLS_LDM, R_MICROMIPS_TLS_LDM - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16,
|
||||
R_MICROMIPS_TLS_DTPREL_HI16 - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16,
|
||||
R_MICROMIPS_TLS_DTPREL_LO16 - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_TLS_GOTTPREL,
|
||||
R_MICROMIPS_TLS_GOTTPREL - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_TLS_TPREL_HI16,
|
||||
R_MICROMIPS_TLS_TPREL_HI16 - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_TLS_TPREL_LO16,
|
||||
R_MICROMIPS_TLS_TPREL_LO16 - R_MICROMIPS_min },
|
||||
/* There is no BFD reloc for R_MICROMIPS_GPREL7_S2. */
|
||||
/* There is no BFD reloc for R_MICROMIPS_PC23_S2. */
|
||||
};
|
||||
/* Given a BFD reloc type, return a howto structure. */
|
||||
|
||||
|
@ -2399,6 +2399,166 @@ static reloc_howto_type elf_micromips_howto_table_rel[] =
|
||||
0, /* src_mask */
|
||||
0x00000000, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* Low 16 bits of symbol value. Note that the high 16 bits of symbol values
|
||||
must be zero. This is used for relaxation. */
|
||||
HOWTO (R_MICROMIPS_HI0_LO16, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
_bfd_mips_elf_generic_reloc, /* special_function */
|
||||
"R_MICROMIPS_HI0_LO16",/* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (158),
|
||||
EMPTY_HOWTO (159),
|
||||
EMPTY_HOWTO (160),
|
||||
EMPTY_HOWTO (161),
|
||||
|
||||
/* TLS general dynamic variable reference. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_GD", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS local dynamic variable reference. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_LDM", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS local dynamic offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_DTPREL_HI16", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS local dynamic offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_DTPREL_LO16", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS thread pointer offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_GOTTPREL", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (167),
|
||||
EMPTY_HOWTO (168),
|
||||
|
||||
/* TLS thread pointer offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_TPREL_HI16", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS thread pointer offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_TPREL_LO16", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000ffff, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (171),
|
||||
|
||||
/* GP- and PC-relative relocations. */
|
||||
HOWTO (R_MICROMIPS_GPREL7_S2, /* type */
|
||||
2, /* rightshift */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
7, /* bitsize */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
_bfd_mips_elf32_gprel16_reloc, /* special_function */
|
||||
"R_MICROMIPS_GPREL7_S2", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x0000007f, /* src_mask */
|
||||
0x0000007f, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
HOWTO (R_MICROMIPS_PC23_S2, /* type */
|
||||
2, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
23, /* bitsize */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
_bfd_mips_elf_generic_reloc, /* special_function */
|
||||
"R_MICROMIPS_PC23_S2", /* name */
|
||||
TRUE, /* partial_inplace */
|
||||
0x007fffff, /* src_mask */
|
||||
0x007fffff, /* dst_mask */
|
||||
TRUE), /* pcrel_offset */
|
||||
};
|
||||
|
||||
static reloc_howto_type elf_micromips_howto_table_rela[] =
|
||||
@ -2741,6 +2901,166 @@ static reloc_howto_type elf_micromips_howto_table_rela[] =
|
||||
0, /* src_mask */
|
||||
0x00000000, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* Low 16 bits of symbol value. Note that the high 16 bits of symbol values
|
||||
must be zero. This is used for relaxation. */
|
||||
HOWTO (R_MICROMIPS_HI0_LO16, /* type */
|
||||
0, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_dont, /* complain_on_overflow */
|
||||
_bfd_mips_elf_generic_reloc, /* special_function */
|
||||
"R_MICROMIPS_HI0_LO16",/* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (158),
|
||||
EMPTY_HOWTO (159),
|
||||
EMPTY_HOWTO (160),
|
||||
EMPTY_HOWTO (161),
|
||||
|
||||
/* TLS general dynamic variable reference. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_GD", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS local dynamic variable reference. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_LDM", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS local dynamic offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_DTPREL_HI16", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS local dynamic offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_DTPREL_LO16", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS thread pointer offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_GOTTPREL", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (167),
|
||||
EMPTY_HOWTO (168),
|
||||
|
||||
/* TLS thread pointer offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_TPREL_HI16", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* TLS thread pointer offset. */
|
||||
HOWTO (R_MICROMIPS_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_MICROMIPS_TLS_TPREL_LO16", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000ffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
EMPTY_HOWTO (171),
|
||||
|
||||
/* GP- and PC-relative relocations. */
|
||||
HOWTO (R_MICROMIPS_GPREL7_S2, /* type */
|
||||
2, /* rightshift */
|
||||
1, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
7, /* bitsize */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
_bfd_mips_elf32_gprel16_reloc, /* special_function */
|
||||
"R_MICROMIPS_GPREL7_S2", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x0000007f, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
HOWTO (R_MICROMIPS_PC23_S2, /* type */
|
||||
2, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
23, /* bitsize */
|
||||
TRUE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_signed, /* complain_on_overflow */
|
||||
_bfd_mips_elf_generic_reloc, /* special_function */
|
||||
"R_MICROMIPS_PC23_S2", /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0, /* src_mask */
|
||||
0x007fffff, /* dst_mask */
|
||||
TRUE), /* pcrel_offset */
|
||||
};
|
||||
|
||||
/* GNU extension to record C++ vtable hierarchy */
|
||||
@ -3291,6 +3611,21 @@ static const struct elf_reloc_map micromips_reloc_map[] =
|
||||
{ BFD_RELOC_MICROMIPS_CALL_LO16, R_MICROMIPS_CALL_LO16 - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_SCN_DISP, R_MICROMIPS_SCN_DISP - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_JALR, R_MICROMIPS_JALR - R_MICROMIPS_min },
|
||||
/* There is no BFD reloc for R_MICROMIPS_HI0_LO16. */
|
||||
{ BFD_RELOC_MICROMIPS_TLS_GD, R_MICROMIPS_TLS_GD - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_TLS_LDM, R_MICROMIPS_TLS_LDM - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_TLS_DTPREL_HI16,
|
||||
R_MICROMIPS_TLS_DTPREL_HI16 - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_TLS_DTPREL_LO16,
|
||||
R_MICROMIPS_TLS_DTPREL_LO16 - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_TLS_GOTTPREL,
|
||||
R_MICROMIPS_TLS_GOTTPREL - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_TLS_TPREL_HI16,
|
||||
R_MICROMIPS_TLS_TPREL_HI16 - R_MICROMIPS_min },
|
||||
{ BFD_RELOC_MICROMIPS_TLS_TPREL_LO16,
|
||||
R_MICROMIPS_TLS_TPREL_LO16 - R_MICROMIPS_min },
|
||||
/* There is no BFD reloc for R_MICROMIPS_GPREL7_S2. */
|
||||
/* There is no BFD reloc for R_MICROMIPS_PC23_S2. */
|
||||
};
|
||||
|
||||
/* Given a BFD reloc type, return a howto structure. */
|
||||
|
@ -1,3 +1,9 @@
|
||||
2018-07-02 Maciej W. Rozycki <macro@mips.com>
|
||||
|
||||
* testsuite/gas/mips/elf-rel28-micromips-n32.d: New test.
|
||||
* testsuite/gas/mips/elf-rel28-micromips-n64.d: New test.
|
||||
* testsuite/gas/mips/mips.exp: Run the new tests.
|
||||
|
||||
2018-07-02 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
||||
|
||||
* config/tc-arm.c (cpu_arch_ver): Use symbolic TAG_CPU_ARCH macros
|
||||
|
96
gas/testsuite/gas/mips/elf-rel28-micromips-n32.d
Normal file
96
gas/testsuite/gas/mips/elf-rel28-micromips-n32.d
Normal file
@ -0,0 +1,96 @@
|
||||
#source: elf-rel28.s
|
||||
#as: -march=from-abi -mmicromips -n32
|
||||
#objdump: -dr
|
||||
#name: MIPS ELF reloc 28 (microMIPS, n32)
|
||||
|
||||
.*: file format .*
|
||||
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
.* <foo>:
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_CALL_HI16 bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_CALL_LO16 bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_CALL16 bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_DISP bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_PAGE bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_OFST bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_HI16 bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_LO16 bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT16 bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GPREL16 bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MIPS_16 bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_HIGHEST bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_HIGHER bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_SUB bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_GD bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_LDM bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_DTPREL_HI16 bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_DTPREL_LO16 bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_TPREL_HI16 bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_TPREL_LO16 bar
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_GOTTPREL bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_CALL_HI16 bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_CALL_LO16 bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_CALL16 bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_DISP bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_PAGE bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_OFST bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_HI16 bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_LO16 bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT16 bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GPREL16 bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MIPS_16 bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_HIGHEST bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_HIGHER bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_SUB bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_GD bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_LDM bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_DTPREL_HI16 bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_DTPREL_LO16 bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_TPREL_HI16 bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_TPREL_LO16 bar
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_GOTTPREL bar
|
||||
\.\.\.
|
180
gas/testsuite/gas/mips/elf-rel28-micromips-n64.d
Normal file
180
gas/testsuite/gas/mips/elf-rel28-micromips-n64.d
Normal file
@ -0,0 +1,180 @@
|
||||
#source: elf-rel28.s
|
||||
#as: -march=from-abi -mmicromips -64
|
||||
#objdump: -dr
|
||||
#name: MIPS ELF reloc 28 (microMIPS, n64)
|
||||
|
||||
.*: file format .*
|
||||
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
.* <foo>:
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_CALL_HI16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_CALL_LO16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_CALL16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_DISP bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_PAGE bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_OFST bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_HI16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_LO16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GPREL16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MIPS_16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_HIGHEST bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_HIGHER bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_SUB bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_GD bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_LDM bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_DTPREL_HI16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_DTPREL_LO16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_TPREL_HI16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_TPREL_LO16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: dc84 0000 ld a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_GOTTPREL bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_CALL_HI16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_CALL_LO16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_CALL16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_DISP bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_PAGE bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_OFST bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_HI16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT_LO16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GOT16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_GPREL16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MIPS_16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_HIGHEST bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_HIGHER bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_SUB bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_GD bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_LDM bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_DTPREL_HI16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_DTPREL_LO16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_TPREL_HI16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_TPREL_LO16 bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: d884 0000 sd a0,0\(a0\)
|
||||
.*: R_MICROMIPS_TLS_GOTTPREL bar
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
.*: R_MIPS_NONE \*ABS\*
|
||||
\.\.\.
|
@ -1221,7 +1221,9 @@ if { [istarget mips*-*-vxworks*] } {
|
||||
|
||||
if $has_newabi {
|
||||
run_dump_test "elf-rel28-n32"
|
||||
run_dump_test "elf-rel28-micromips-n32"
|
||||
run_dump_test "elf-rel28-n64"
|
||||
run_dump_test "elf-rel28-micromips-n64"
|
||||
run_dump_test_arches "elf-rel29" [mips_arch_list_matching mips3]
|
||||
}
|
||||
run_list_test_arches "elf-rel30" "-32" [mips_arch_list_all]
|
||||
|
Loading…
Reference in New Issue
Block a user