[PATCH] elf: Don't load archive element after dynamic definition
H.J. Lu
hjl.tools@gmail.com
Thu Sep 3 02:16:14 GMT 2020
More information about the Binutils mailing list
Thu Sep 3 02:16:14 GMT 2020
- Previous message (by thread): [PATCH] elf: Don't load archive element after dynamic definition
- Next message (by thread): [PATCH] elf: Don't load archive element after dynamic definition
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wed, Sep 2, 2020 at 6:31 PM Alan Modra <amodra@gmail.com> wrote: > > On Wed, Sep 02, 2020 at 07:35:58AM -0700, H.J. Lu wrote: > > On Wed, Sep 2, 2020 at 7:29 AM Alan Modra <amodra@gmail.com> wrote: > > > > > > On Wed, Sep 02, 2020 at 06:22:08AM -0700, H.J. Lu wrote: > > > > > It's reasonably obvious that we need to load archive elements when > > > > > they define IR referenced symbols, because the archive element might > > > > > be an LTO object. What's not so obvious is whether loading of shared > > > > > libraries should follow the same rule. I think they should, in order > > > > > for LTO to get symbol resolution correct in corner cases. Basically > > > > > LTO needs to know what shared libraries are loaded before > > > > > recompilation. See commit a896df97b952 log comments. > > > > > > > > There is dynamic_def for this purpose. > > > > > > Your patch doesn't make changes to ld/plugin.c to inform LTO of the > > > availability of these symbols. And if you did, then how does the > > > linker work out whether or not the LTO recompilation depended on those > > > symbols? If it did change LTO recompilation then you had better > > > ensure the library really is loaded. By the time you work all of that > > > out, if it is even possible, your patch will likely be very > > > complicated indeed. > > > > A testcase? > > What don't you understand from my emails in this thread? I suggest > you look at what happened with the testcase in PR26314, in regard to > my comment > The lto recompilation didn't see symbol references from libbfd.so and > variables like _xexit_cleanup are made local in the recompiled > objects. Oops, two copies of them. A testcase? > That's critical in understanding why LTO needs to know about symbols > from shared libraries before LTO recompilation. > Linker is complicated and LTO makes it even more complicated. Without a testcase, we can't be sure that the bug is really fixed nor we can be sure it won't regress. -- H.J.
- Previous message (by thread): [PATCH] elf: Don't load archive element after dynamic definition
- Next message (by thread): [PATCH] elf: Don't load archive element after dynamic definition
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list