summaryrefslogtreecommitdiff
path: root/gold/gold.cc
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/gold.cc
parente918b09c1c4dd627527cbc0ab429ecdef16d3545 (diff)
downloadbinutils-gdb-647f15745ab30d29fbcd8fb56ffba69f8b545886.tar.gz
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/gold.cc')
-rw-r--r--gold/gold.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/gold/gold.cc b/gold/gold.cc
index f455ec8a412..f810bf913ba 100644
--- a/gold/gold.cc
+++ b/gold/gold.cc
@@ -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,