diff options
author | Doug Kwan <dougkwan@google.com> | 2012-03-19 23:54:07 +0000 |
---|---|---|
committer | Doug Kwan <dougkwan@google.com> | 2012-03-19 23:54:07 +0000 |
commit | 647f15745ab30d29fbcd8fb56ffba69f8b545886 (patch) | |
tree | b0e4404eda01fbb8bb1c625a0b9171708c05fb63 /gold/gold.cc | |
parent | e918b09c1c4dd627527cbc0ab429ecdef16d3545 (diff) | |
download | gdb-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/gold.cc')
-rw-r--r-- | gold/gold.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gold/gold.cc b/gold/gold.cc index f455ec8..f810bf9 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*>(¶meters->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*>(¶meters->target()); workqueue->queue(new Task_function(new Layout_task_runner(options, input_objects, symtab, |