aboutsummaryrefslogtreecommitdiff
path: root/gold/target.h
diff options
context:
space:
mode:
authorDoug Kwan <dougkwan@google.com>2012-03-19 23:54:07 +0000
committerDoug Kwan <dougkwan@google.com>2012-03-19 23:54:07 +0000
commit647f15745ab30d29fbcd8fb56ffba69f8b545886 (patch)
treeb0e4404eda01fbb8bb1c625a0b9171708c05fb63 /gold/target.h
parente918b09c1c4dd627527cbc0ab429ecdef16d3545 (diff)
downloadgdb-647f15745ab30d29fbcd8fb56ffba69f8b545886.zip
gdb-647f15745ab30d29fbcd8fb56ffba69f8b545886.tar.gz
gdb-647f15745ab30d29fbcd8fb56ffba69f8b545886.tar.bz2
2012-03-19 Doug Kwan <dougkwan@google.com>
* arm.cc (Target_arm::do_define_standard_symbols): New method. (Target_arm::do_finalize_sections): Remove code which defines __exidx_start and __exidx_end. Make symbol table parameter anonymous as it is not used. * gold.cc (queue_middle_tasks): Call target hook to define any target-specific symbols. * target.h (Target::define_standard_symbols): New method. (Target::do_define_standard_symbols): Same. * testsuite/Makefile.am (arm_exidx_test): Dump relocations also. * testsuite/Makefile.in: Regenerate. * testsuite/arm_exidx.s: Generate data relocations for __exidx_start and __exidx_end. * testsuite/arm_exidx_test.sh: Check that no unused dynamic relocations are generated for __exidx_start and __exidx_end.
Diffstat (limited to 'gold/target.h')
-rw-r--r--gold/target.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/gold/target.h b/gold/target.h
index 1035427..ff97aba 100644
--- a/gold/target.h
+++ b/gold/target.h
@@ -396,6 +396,11 @@ class Target
set_osabi(elfcpp::ELFOSABI osabi)
{ this->osabi_ = osabi; }
+ // Define target-specific standard symbols.
+ void
+ define_standard_symbols(Symbol_table* symtab, Layout* layout)
+ { this->do_define_standard_symbols(symtab, layout); }
+
protected:
// This struct holds the constant information for a child class. We
// use a struct to avoid the overhead of virtual function calls for
@@ -629,6 +634,11 @@ class Target
do_select_as_default_target()
{ }
+ // This may be overridden by the child class.
+ virtual void
+ do_define_standard_symbols(Symbol_table*, Layout*)
+ { }
+
private:
// The implementations of the four do_make_elf_object virtual functions are
// almost identical except for their sizes and endianness. We use a template.