Index: gold/target.h |
=================================================================== |
--- a/gold/target.h |
+++ b/gold/target.h |
@@ -60,6 +60,7 @@ |
class Output_section; |
class Input_objects; |
class Task; |
+class Output_data_dynamic; |
// The abstract class for target specific handling. |
@@ -203,6 +204,11 @@ |
Symbol_table* symtab) |
{ return this->do_finalize_sections(layout, input_objects, symtab); } |
+ // Fix data that are known after finalize_sections for MIPS (and possible |
+ // some other architectures). |
+ void fix_sections(Layout* layout, Symbol_table* symtab) |
+ { return this->do_fix_sections(layout, symtab); } |
+ |
// Return the value to use for a global symbol which needs a special |
// value in the dynamic symbol table. This will only be called if |
// the backend first calls symbol->set_needs_dynsym_value(). |
@@ -235,6 +241,11 @@ |
is_local_label_name(const char* name) const |
{ return this->do_is_local_label_name(name); } |
+ // Get the value for target specific dynamic tags. |
+ unsigned int |
+ dynamic_tag_value(elfcpp::DT tag) const |
+ { return this->do_dynamic_tag_value(tag); } |
+ |
// Get the symbol index to use for a target specific reloc. |
unsigned int |
reloc_symbol_index(void* arg, unsigned int type) const |
@@ -467,6 +478,11 @@ |
{ } |
// Virtual function which may be implemented by the child class. |
+ virtual void |
+ do_fix_sections(Layout*, Symbol_table*) |
+ { } |
+ |
+ // Virtual function which may be implemented by the child class. |
virtual uint64_t |
do_dynsym_value(const Symbol*) const |
{ gold_unreachable(); } |
@@ -495,6 +511,12 @@ |
do_is_local_label_name(const char*) const; |
// Virtual function that must be overridden by a target which uses |
+ // target specific dynamic tags. |
+ virtual unsigned int |
+ do_dynamic_tag_value(elfcpp::DT) const |
+ { gold_unreachable(); } |
+ |
+ // Virtual function that must be overridden by a target which uses |
// target specific relocations. |
virtual unsigned int |
do_reloc_symbol_index(void*, unsigned int) const |