[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/23729] PROVIDE inside --start-group/--end-group overrides define
From: |
amodra at gmail dot com |
Subject: |
[Bug ld/23729] PROVIDE inside --start-group/--end-group overrides defined symbol |
Date: |
Mon, 01 Oct 2018 20:25:06 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=23729
Alan Modra <amodra at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution|--- |WORKSFORME
Assignee|unassigned at sourceware dot org |amodra at gmail dot com
--- Comment #1 from Alan Modra <amodra at gmail dot com> ---
I believe the changed behaviour is simply a bug fix. Consider how
--start-group libfunc.a main.o -T export.ld --end-group
should work. On the first iteration over object files:
- libfunc.a is searched for symbols that define currently undefined symbols,
none are found so no object files are extracted,
- main.o symbols are loaded, giving an undefined "func",
- export.ld is processed, which provides "func".
Since --start-group/--end-group wrap these three files, the library is searched
again for symbols that define currently undefined symbols, but "func" is now
defined (by the PROVIDE) so the object is not extracted..
Similar analysis applied to
-T export.ld --start-group libfunc.a main.o --end-group
or
--start-group libfunc.a main.o --end-group -T export.ld
says the linker is working properly there too.
The older binutils did not process the export.ld "PROVIDE" statement early
enough to define "func". You could probably see this difference between
binutils-2.26 and current binutils without --start-group/--end-group with
main.o -T export.ld libfunc.a
Thus a documentation change for --start-group/--end-group is not appropriate.
--
You are receiving this mail because:
You are on the CC list for the bug.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Bug ld/23729] PROVIDE inside --start-group/--end-group overrides defined symbol,
amodra at gmail dot com <=