+2017-12-15 Alan Modra <amodra@gmail.com>
+
+ PR 22602
+ * powerpc.cc (Target_powerpc::Branch_info::mark_pltcall): Resolve
+ forwards before replacing __tls_get_addr.
+ (Target_powerpc::Branch_info::make_stub): Likewise.
+
2017-12-11 Stephen Crane <sjc@immunant.com>
* plugin.cc (Plugin::load): Include hooks for register_new_input
return false;
Symbol* sym = this->object_->global_symbol(this->r_sym_);
- if (target->replace_tls_get_addr(sym))
- sym = target->tls_get_addr_opt();
if (sym != NULL && sym->is_forwarder())
sym = symtab->resolve_forwards(sym);
+ if (target->replace_tls_get_addr(sym))
+ sym = target->tls_get_addr_opt();
const Sized_symbol<size>* gsym = static_cast<const Sized_symbol<size>*>(sym);
if (gsym != NULL
? (gsym->use_plt_offset(Scan::get_reference_flags(this->r_type_, target))
Target_powerpc<size, big_endian>* target =
static_cast<Target_powerpc<size, big_endian>*>(
parameters->sized_target<size, big_endian>());
- if (target->replace_tls_get_addr(sym))
- sym = target->tls_get_addr_opt();
if (sym != NULL && sym->is_forwarder())
sym = symtab->resolve_forwards(sym);
+ if (target->replace_tls_get_addr(sym))
+ sym = target->tls_get_addr_opt();
const Sized_symbol<size>* gsym = static_cast<const Sized_symbol<size>*>(sym);
bool ok = true;