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

@@ -679,6 +679,8 @@ queue_middle_tasks(const General_options& options,
// Attach sections to segments.
layout->attach_sections_to_segments();
// TODO(csilvers): figure out a more principled way to get the target
Target* target = const_cast<Target*>(&parameters->target());
if (!parameters->options().relocatable())
{
// Predefine standard symbols.
@@ -687,6 +689,9 @@ queue_middle_tasks(const General_options& options,
// Define __start and __stop symbols for output sections where
// appropriate.
layout->define_section_symbols(symtab);
// Define target-specific symbols.
target->define_standard_symbols(symtab, layout);
}
// Make sure we have symbols for any required group signatures.
@@ -768,8 +773,6 @@ queue_middle_tasks(const General_options& options,
// When all those tasks are complete, we can start laying out the
// output file.
// TODO(csilvers): figure out a more principled way to get the target
Target* target = const_cast<Target*>(&parameters->target());
workqueue->queue(new Task_function(new Layout_task_runner(options,
input_objects,
symtab,