diff options
Diffstat (limited to 'gold/x86_64.cc')
-rw-r--r-- | gold/x86_64.cc | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/gold/x86_64.cc b/gold/x86_64.cc index a447d38..0a6a960 100644 --- a/gold/x86_64.cc +++ b/gold/x86_64.cc @@ -405,10 +405,13 @@ class Target_x86_64 : public Target_freebsd<64, false> unsigned int got_type); // Register an existing PLT entry for a global symbol. - // A target needs to implement this to support incremental linking. void register_global_plt_entry(unsigned int plt_index, Symbol* gsym); + // Force a COPY relocation for a given symbol. + void + emit_copy_reloc(Symbol_table*, Symbol*, Output_section*, off_t); + // Apply an incremental relocation. void apply_relocation(const Relocate_info<64, false>* relinfo, @@ -1389,6 +1392,19 @@ Target_x86_64::register_global_plt_entry(unsigned int plt_index, this->plt_->add_relocation(gsym, got_offset); } +// Force a COPY relocation for a given symbol. + +void +Target_x86_64::emit_copy_reloc( + Symbol_table* symtab, Symbol* sym, Output_section* os, off_t offset) +{ + this->copy_relocs_.emit_copy_reloc(symtab, + symtab->get_sized_symbol<64>(sym), + os, + offset, + this->rela_dyn_section(NULL)); +} + // Define the _TLS_MODULE_BASE_ symbol in the TLS segment. void |