This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] PR ld/19636: [x86] Resolve undefweak and defined symbols in executable


Hi,

On Wed, 24 Feb 2016, H.J. Lu wrote:

> > Can you cite something to support this statement?  Is everyone here of
> > this opinion?
> >
> 
> Weak symbol was introduced for system libraries.  gABI has "Unresolved
> weak symbols have a zero value."

Sure, in the paragraph talking about archive members.  Ripping it out of 
context can also mean "Unresolved at runtime".

> The behavior of weak symbols in areas not specified by this document
> is implementation defined. Weak symbols are intended primarily for use
> in system software. Applications using weak symbols are unreliable
> since changes in the runtime environment might cause the execution to
> fail.

And this even supports my view, it specifically talks about changes in the 
runtime environment, which wouldn't matter if the link editor resolved 
everything.

> Ld at link-time and ld.so at run-time do want to use vale 0 for 
> unresolved weak symbols.  We used to treat STB_WEAK differently in ld.so 
> and later changed to treat STB_WEAK the same as STB_GLOBAL for defined 
> symbols, i.e. there are no weak defined symbols at run-time.

That makes sort of sense even, but I'm talking about _references_ to weak 
symbols.  If ld resolved undef-weaks, then there would be nothing left for 
ld.so to handle, so the fact that it does handle them also indicates that 
ld should not.


Ciao,
Michael.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]