bug-binutils
[Top][All Lists]
Advanced

[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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]