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.
This commit is contained in:
Doug Kwan
2012-03-19 23:54:07 +00:00
parent e918b09c1c
commit 647f15745a
8 changed files with 116 additions and 32 deletions

View File

@@ -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.