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 |
@@ -401,6 +412,12 @@ |
define_standard_symbols(Symbol_table* symtab, Layout* layout) |
{ this->do_define_standard_symbols(symtab, layout); } |
+ // Return address of .text section. Some architecutres needs it as entry |
robertm
2012/04/27 19:46:15
I would prefer not have this change and the stuff
Aleksandar Simeonov
2012/05/08 15:21:42
This part is added to have same behavior as ld. We
|
+ // point if _start symbol is not defined and no -e option is used. |
+ virtual uint64_t |
+ text_section_address() const |
+ { return 0; } |
+ |
protected: |
// This struct holds the constant information for a child class. We |
// use a struct to avoid the overhead of virtual function calls for |
@@ -467,6 +484,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 +517,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 |