uint64_t
do_dynsym_value(const Symbol*) const;
+ // Return whether SYM is always defined.
+ bool
+ do_is_always_defined(Symbol* sym) const
+ { return strcmp(sym->name(), "___tls_get_addr") == 0; }
+
// Relocate a section.
void
relocate_section(const Relocate_info<32, false>*,
if (!gsym->final_value_is_known())
{
Reloc_section* rel_dyn = target->rel_dyn_section(layout);
- if (gsym->is_preemptible())
- rel_dyn->add_global(gsym, elfcpp::R_386_GLOB_DAT, got,
- gsym->got_offset());
+ if (gsym->is_from_dynobj()
+ || gsym->is_preemptible())
+ rel_dyn->add_global(gsym, elfcpp::R_386_GLOB_DAT, got,
+ gsym->got_offset());
else
{
rel_dyn->add_local(object, 0, elfcpp::R_386_RELATIVE,