Add support for R_AARCH64_TLSLE_LDST8_TPREL_LO12, etc.
elfcpp/ PR gold/22969 * aarch64.h: Fix spelling of R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC. gold/ PR gold/22969 * aarch64-reloc.def: Add TLSLE_LDST* relocations. * aarch64.cc (Target_aarch64::optimize_tls_reloc): Likewise. (Target_aarch64::Scan::local): Likewise. (Target_aarch64::Scan::global): Likewise. (Target_aarch64::Relocate::relocate): Likewise. (Target_aarch64::Relocate::relocate_tls): Likewise.
This commit is contained in:
parent
c39e5b2671
commit
e82e6b2b19
|
@ -1,3 +1,8 @@
|
|||
2018-03-28 Cary Coutant <ccoutant@gmail.com>
|
||||
|
||||
PR gold/22969
|
||||
* aarch64.h: Fix spelling of R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC.
|
||||
|
||||
2018-01-13 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
2.30 branch created.
|
||||
|
|
|
@ -146,7 +146,7 @@ enum
|
|||
R_AARCH64_TLSLE_LDST8_TPREL_LO12 = 552, // TPREL(S+A)
|
||||
R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC = 553, // TPREL(S+A)
|
||||
R_AARCH64_TLSLE_LDST16_TPREL_LO12 = 554, // TPREL(S+A)
|
||||
R_AARCH64_TLSLE_LSDT16_TPREL_LO12_NC = 555, // TPREL(S+A)
|
||||
R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC = 555, // TPREL(S+A)
|
||||
R_AARCH64_TLSLE_LDST32_TPREL_LO12 = 556, // TPREL(S+A)
|
||||
R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC = 557, // TPREL(S+A)
|
||||
R_AARCH64_TLSLE_LDST64_TPREL_LO12 = 558, // TPREL(S+A)
|
||||
|
|
|
@ -1,10 +1,19 @@
|
|||
2018-03-28 Cary Coutant <ccoutant@gmail.com>
|
||||
|
||||
PR gold/22969
|
||||
* aarch64-reloc.def: Add TLSLE_LDST* relocations.
|
||||
* aarch64.cc (Target_aarch64::optimize_tls_reloc): Likewise.
|
||||
(Target_aarch64::Scan::local): Likewise.
|
||||
(Target_aarch64::Scan::global): Likewise.
|
||||
(Target_aarch64::Relocate::relocate): Likewise.
|
||||
(Target_aarch64::Relocate::relocate_tls): Likewise.
|
||||
|
||||
2018-03-27 Roland McGrath <mcgrathr@google.com>
|
||||
|
||||
* testsuite/split_x86_64.sh: Fix bad regexp.
|
||||
|
||||
2018-03-26 Cary Coutant <ccoutant@gmail.com>
|
||||
|
||||
gold/
|
||||
PR gold/22868
|
||||
* plugin.cc (Sized_pluginobj::do_add_symbols): Use a real section
|
||||
index instead of SHN_ABS for defined symbols.
|
||||
|
|
|
@ -108,6 +108,14 @@ ARD(TLSLE_MOVW_TPREL_G0_NC , STATIC , AARCH64 , Y, 0, 0,0
|
|||
ARD(TLSLE_ADD_TPREL_HI12 , STATIC , AARCH64 , Y, -1, 0,24 , 12,23 , Symbol::TLS_REF , ADD )
|
||||
ARD(TLSLE_ADD_TPREL_LO12 , STATIC , AARCH64 , Y, -1, 0,12 , 0,11 , Symbol::TLS_REF , ADD )
|
||||
ARD(TLSLE_ADD_TPREL_LO12_NC , STATIC , AARCH64 , Y, -1, 0,0 , 0,11 , Symbol::TLS_REF , ADD )
|
||||
ARD(TLSLE_LDST8_TPREL_LO12 , STATIC , AARCH64 , Y, -1, 0,12 , 0,11 , Symbol::TLS_REF , LDST )
|
||||
ARD(TLSLE_LDST8_TPREL_LO12_NC , STATIC , AARCH64 , Y, -1, 0,0 , 0,11 , Symbol::TLS_REF , LDST )
|
||||
ARD(TLSLE_LDST16_TPREL_LO12 , STATIC , AARCH64 , Y, -1, 0,12 , 1,11 , Symbol::TLS_REF , LDST )
|
||||
ARD(TLSLE_LDST16_TPREL_LO12_NC , STATIC , AARCH64 , Y, -1, 0,0 , 1,11 , Symbol::TLS_REF , LDST )
|
||||
ARD(TLSLE_LDST32_TPREL_LO12 , STATIC , AARCH64 , Y, -1, 0,12 , 2,11 , Symbol::TLS_REF , LDST )
|
||||
ARD(TLSLE_LDST32_TPREL_LO12_NC , STATIC , AARCH64 , Y, -1, 0,0 , 2,11 , Symbol::TLS_REF , LDST )
|
||||
ARD(TLSLE_LDST64_TPREL_LO12 , STATIC , AARCH64 , Y, -1, 0,12 , 3,11 , Symbol::TLS_REF , LDST )
|
||||
ARD(TLSLE_LDST64_TPREL_LO12_NC , STATIC , AARCH64 , Y, -1, 0,0 , 3,11 , Symbol::TLS_REF , LDST )
|
||||
// Above is from Table 4-18, Local Exec TLS relocations, 544-571.
|
||||
|
||||
ARD(TLSDESC_ADR_PAGE21 , STATIC , AARCH64 , Y, -1, 32,32 , 12,32 , Symbol::TLS_REF , ADRP )
|
||||
|
|
|
@ -5916,6 +5916,14 @@ Target_aarch64<size, big_endian>::optimize_tls_reloc(bool is_final,
|
|||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_HI12:
|
||||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST8_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST16_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST32_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST64_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC:
|
||||
// When we already have Local-Exec, there is nothing further we
|
||||
// can do.
|
||||
return tls::TLSOPT_NONE;
|
||||
|
@ -6262,6 +6270,14 @@ Target_aarch64<size, big_endian>::Scan::local(
|
|||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_HI12:
|
||||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST8_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST16_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST32_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST64_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC:
|
||||
{
|
||||
layout->set_has_static_tls();
|
||||
bool output_is_shared = parameters->options().shared();
|
||||
|
@ -6679,7 +6695,15 @@ Target_aarch64<size, big_endian>::Scan::global(
|
|||
case elfcpp::R_AARCH64_TLSLE_MOVW_TPREL_G0_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_HI12:
|
||||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_LO12_NC: // Local executable
|
||||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST8_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST16_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST32_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST64_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC: // Local executable
|
||||
layout->set_has_static_tls();
|
||||
if (parameters->options().shared())
|
||||
gold_error(_("%s: unsupported TLSLE reloc type %u in shared objects."),
|
||||
|
@ -7276,6 +7300,14 @@ Target_aarch64<size, big_endian>::Relocate::relocate(
|
|||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_HI12:
|
||||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST8_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST16_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST32_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST64_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSDESC_ADR_PAGE21:
|
||||
case elfcpp::R_AARCH64_TLSDESC_LD64_LO12:
|
||||
case elfcpp::R_AARCH64_TLSDESC_ADD_LO12:
|
||||
|
@ -7555,6 +7587,14 @@ Target_aarch64<size, big_endian>::Relocate::relocate_tls(
|
|||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_HI12:
|
||||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_ADD_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST8_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST16_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST32_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST64_TPREL_LO12:
|
||||
case elfcpp::R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC:
|
||||
{
|
||||
gold_assert(tls_segment != NULL);
|
||||
AArch64_address value = psymval->value(object, 0);
|
||||
|
|
Loading…
Reference in New Issue