summaryrefslogtreecommitdiff
path: root/gold/target.h
diff options
context:
space:
mode:
Diffstat (limited to 'gold/target.h')
-rw-r--r--gold/target.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/gold/target.h b/gold/target.h
index 6ab31d05c59..33f7ee80639 100644
--- a/gold/target.h
+++ b/gold/target.h
@@ -53,6 +53,7 @@ class Symbol;
template<int size>
class Sized_symbol;
class Symbol_table;
+class Output_data;
class Output_section;
class Input_objects;
@@ -261,6 +262,18 @@ class Target
reloc_addend(void* arg, unsigned int type, uint64_t addend) const
{ return this->do_reloc_addend(arg, type, addend); }
+ // Return the PLT section to use for a global symbol. This is used
+ // for STT_GNU_IFUNC symbols.
+ Output_data*
+ plt_section_for_global(const Symbol* sym) const
+ { return this->do_plt_section_for_global(sym); }
+
+ // Return the PLT section to use for a local symbol. This is used
+ // for STT_GNU_IFUNC symbols.
+ Output_data*
+ plt_section_for_local(const Relobj* object, unsigned int symndx) const
+ { return this->do_plt_section_for_local(object, symndx); }
+
// Return true if a reference to SYM from a reloc of type R_TYPE
// means that the current function may call an object compiled
// without -fsplit-stack. SYM is known to be defined in an object
@@ -462,6 +475,16 @@ class Target
do_reloc_addend(void*, unsigned int, uint64_t) const
{ gold_unreachable(); }
+ // Virtual functions that must be overridden by a target that uses
+ // STT_GNU_IFUNC symbols.
+ virtual Output_data*
+ do_plt_section_for_global(const Symbol*) const
+ { gold_unreachable(); }
+
+ virtual Output_data*
+ do_plt_section_for_local(const Relobj*, unsigned int) const
+ { gold_unreachable(); }
+
// Virtual function which may be overridden by the child class. The
// default implementation is that any function not defined by the
// ABI is a call to a non-split function.