[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin
From: |
cvs-commit at gcc dot gnu.org |
Subject: |
[Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin |
Date: |
Wed, 26 Feb 2020 00:08:31 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=25593
--- Comment #11 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot
gnu.org> ---
The master branch has been updated by Alan Modra <address@hidden>:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e310298cf3fc02112ac0018260748828affa4061
commit e310298cf3fc02112ac0018260748828affa4061
Author: Alan Modra <address@hidden>
Date: Tue Feb 25 12:50:10 2020 +1030
PR25593, --as-needed breaks DT_NEEDED order with linker plugin
This patch delays setting up DT_NEEDED dynamic tags until all object
files and libraries have been opened and their symbols processed,
rather than adding the tags while processing symbols. Tags are
ordered according to the position of the associated library on the
command line and linker scripts. It is still possible with
--as-needed libs that are mentioned more than once for tags to be
ordered according to which mention was needed. For example with
"--as-needed a.so b.so c.so b.so" when b.so is not needed by a.so or
any other prior object file but is needed by c.so, the order of tags
will be "A C B".
bfd/
PR 25593
* elf-bfd.h (struct elf_link_hash_table): Rename "loaded" to
"dyn_loaded".
(bfd_elf_add_dt_needed_tag): Declare.
* elf-strtab.c (_bfd_elf_strtab_restore): Handle NULL buf.
* elflink.c (bfd_elf_add_dt_needed_tag): Make global and rename
from elf_add_dt_needed_tag. Remove soname and doit param.
(elf_link_add_object_symbols): Don't use elf_add_dt_needed_tag
to see whether as-needed lib is already loaded, use dyn_loaded
list instead. When saving and restoring around as-needed lib
handle possibility that dynstr has not been initialised. Don't
add DT_NEEDED tags here. Limit dyn_loaded list to dynamic libs.
Mark libs loaded via DT_NEEDED entries of other libs with
DYN_NO_NEEDED if they should not be mentioned in DT_NEEDED of
the output.
(elf_link_check_versioned_symbol): Remove now unneccesary
DYNAMIC check when traversing dyn_loaded list.
ld/
PR 25593
* ldelf.c (ldelf_try_needed): Add DT_NEEDED lib to input_bfds.
(ldelf_after_open): Save state of input_bfds list before loading
DT_NEEDED libs. Traverse input_bfds list adding DT_NEEDED tags.
Restore input_bfds list.
* testsuite/ld-cris/gotplt1.d: Adjust for changed .dynstr order.
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, (continued)
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, matz at suse dot de, 2020/02/24
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, hjl.tools at gmail dot com, 2020/02/24
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, hjl.tools at gmail dot com, 2020/02/24
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, amodra at gmail dot com, 2020/02/24
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, hjl.tools at gmail dot com, 2020/02/24
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, amodra at gmail dot com, 2020/02/24
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, hjl.tools at gmail dot com, 2020/02/24
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, amodra at gmail dot com, 2020/02/24
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, hjl.tools at gmail dot com, 2020/02/25
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, hjl.tools at gmail dot com, 2020/02/25
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin,
cvs-commit at gcc dot gnu.org <=
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, amodra at gmail dot com, 2020/02/25
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, cvs-commit at gcc dot gnu.org, 2020/02/26
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, romain.geissler at amadeus dot com, 2020/02/26
- [Bug ld/25593] --as-needed breaks DT_NEEDED order with linker plugin, amodra at gmail dot com, 2020/02/26