Fix a conflict between the linker's need to rename some PE format input libraries...
authorAlan Modra <amodra@gmail.com>
Wed, 3 Aug 2022 12:31:57 +0000 (13:31 +0100)
committerNick Clifton <nickc@redhat.com>
Wed, 3 Aug 2022 12:31:57 +0000 (13:31 +0100)
commita6ad7914429a22d3d835bd998b032212b776a08a
treed81caa6275932745dedefa9f17d391454a84a19f
parent8b8da1a9f31941fa167c9f2bd2a80cdd1dccb452
Fix a conflict between the linker's need to rename some PE format input libraries and the BFD library's file caching mechanism.

PR 29389
bfd * bfd.c (BFD_CLOSED_BY_CACHE): New bfd flag.
* cache.c (bfd_cache_delete): Set BFD_CLOSED_BY_DELETE on the
closed bfd.
(bfd_cache_lookup_worker): Clear BFD_CLOSED_BY_DELETE on the newly
reopened bfd.
* opncls.c (bfd_set_filename): Refuse to change the name of a bfd
that has been closed by bfd_cache_delete.  Mark changed bfds as
uncacheable.
* bfd-in2.h: Regenerate.

ld * ldlang.h (lang_input_statement_struct): Add sort_key field.
* emultempl/pe.em (after_open): If multiple import libraries refer
to the same bfd, store their names in the sort_key field.
* emultempl/pep.em (after_open): Likewise.
* ldlang.c (sort_filename): New function.  Returns the filename to
be used when sorting input files.
(wild_sort): Use the sort_filename function.
bfd/ChangeLog
bfd/bfd-in2.h
bfd/bfd.c
bfd/cache.c
bfd/opncls.c
ld/ChangeLog
ld/emultempl/pe.em
ld/emultempl/pep.em
ld/ldlang.c
ld/ldlang.h