mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-27 22:48:57 +08:00
PR22751, LTO broken for libgcc libcalls
So what was happening was that the file added from libgcc.a during the rescan was not put on file_chain. map_input_to_output_sections then doesn't see the file and its sections are treated as discarded. The file_chain list pointer bug was caused by that fact that an archive element claimed by the plugin does not have my_archive set. Or more correctly, the actual archive element does have my_archive set, but this bfd is replaced with a dummy bfd that doesn't have my_archive set. PR 22751 * ldlang.c (find_rescan_insertion): Look past bfds with claim_archive set.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2018-01-28 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
PR 22751
|
||||||
|
* ldlang.c (find_rescan_insertion): Look past bfds with claim_archive
|
||||||
|
set.
|
||||||
|
|
||||||
2018-01-26 Maciej W. Rozycki <macro@mips.com>
|
2018-01-26 Maciej W. Rozycki <macro@mips.com>
|
||||||
|
|
||||||
* emulparams/elf32mipswindiss.sh (EXTRA_EM_FILE): Set to
|
* emulparams/elf32mipswindiss.sh (EXTRA_EM_FILE): Set to
|
||||||
|
@ -7044,7 +7044,8 @@ find_rescan_insertion (lang_input_statement_type *add)
|
|||||||
for (iter = before ? &before->next : &file_chain.head->input_statement.next;
|
for (iter = before ? &before->next : &file_chain.head->input_statement.next;
|
||||||
*iter != NULL;
|
*iter != NULL;
|
||||||
iter = &(*iter)->input_statement.next)
|
iter = &(*iter)->input_statement.next)
|
||||||
if ((*iter)->input_statement.the_bfd->my_archive == NULL)
|
if (!(*iter)->input_statement.flags.claim_archive
|
||||||
|
&& (*iter)->input_statement.the_bfd->my_archive == NULL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
return iter;
|
return iter;
|
||||||
|
Reference in New Issue
Block a user