mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
Fix internal error in do_relocate_sections when using plugins.
In a previous patch for PR 14675, to fix a problem with the .eh_frame section when static linking, I added a step to finalize the .eh_frame section at the end of the first link pass. This patch caused PR 18152, where a plugin-claimed object caused a non-claimed object's layout to be deferred until replacement files were read. The call to finalize_eh_frame_section() is happening before the layout of the deferred objects, leading to the internal error in do_relocate_sections. This patch moves the finalization of the .eh_frame section to after deferred objects have been processed. gold/ PR gold/14675 PR gold/18152 * gold.cc (queue_middle_tasks): Finalize .eh_frame after laying out deferred objects.
This commit is contained in:
parent
7188340681
commit
bd9e0d4628
@ -1,3 +1,9 @@
|
|||||||
|
2015-03-21 Cary Coutant <ccoutant@google.com>
|
||||||
|
|
||||||
|
PR gold/18152
|
||||||
|
* gold.cc (queue_middle_tasks): Finalize .eh_frame after laying out
|
||||||
|
deferred objects.
|
||||||
|
|
||||||
2015-03-11 Cary Coutant <ccoutant@google.com>
|
2015-03-11 Cary Coutant <ccoutant@google.com>
|
||||||
|
|
||||||
* options.cc (General_options::finalize): Don't allow -z relro
|
* options.cc (General_options::finalize): Don't allow -z relro
|
||||||
|
@ -492,9 +492,6 @@ queue_middle_tasks(const General_options& options,
|
|||||||
if (timer != NULL)
|
if (timer != NULL)
|
||||||
timer->stamp(0);
|
timer->stamp(0);
|
||||||
|
|
||||||
// Finalize the .eh_frame section.
|
|
||||||
layout->finalize_eh_frame_section();
|
|
||||||
|
|
||||||
// Add any symbols named with -u options to the symbol table.
|
// Add any symbols named with -u options to the symbol table.
|
||||||
symtab->add_undefined_symbols_from_command_line(layout);
|
symtab->add_undefined_symbols_from_command_line(layout);
|
||||||
|
|
||||||
@ -555,6 +552,9 @@ queue_middle_tasks(const General_options& options,
|
|||||||
plugins->layout_deferred_objects();
|
plugins->layout_deferred_objects();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Finalize the .eh_frame section.
|
||||||
|
layout->finalize_eh_frame_section();
|
||||||
|
|
||||||
/* If plugins have specified a section order, re-arrange input sections
|
/* If plugins have specified a section order, re-arrange input sections
|
||||||
according to a specified section order. If --section-ordering-file is
|
according to a specified section order. If --section-ordering-file is
|
||||||
also specified, do not do anything here. */
|
also specified, do not do anything here. */
|
||||||
|
Loading…
Reference in New Issue
Block a user