This is the mail archive of the binutils@sources.redhat.com 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: Possible weak linker bug in ld


On Wed, Oct 15, 2003 at 05:16:22PM +0200, Svein E. Seldal wrote:
> Alan Modra wrote:
> 
> >On Wed, Oct 15, 2003 at 02:39:58PM +0200, Svein E. Seldal wrote:
> >
> >>I think I run across a bug in ld when linking files with weak symbols. 
> >
> >
> >See http://www.caldera.com/developers/gabi/latest/ch4.symtab.html
> >
> >"When the link editor searches archive libraries [see ``Archive File''
> >in Chapter 7], it extracts archive members that contain definitions of
> >undefined global symbols. The member's definition may be either a global
> >or a weak symbol. **The link editor does not extract archive members to
> >resolve undefined weak symbols.** Unresolved weak symbols have a zero
> >value."
> 
> May I ask why not?
> 
> In AVR target and the avr-libc, weak symbols are used for each of the 
> interrupt-vectors (in the gcrt1.S file). If the application does not 
> define a ISR handler for a specific function, it uses the default dummy 
> one. If the application implements a ISR handler, it will of course 
> override the weak symbol and use the "real" handler.
> 
> The case that I've run into is when you have a library that represents a 
>  specific function for this target, like a library for, say a 
> serialport. This library is also dependent on having an ISR handler to 
> work properly.

The way I deal with it is:

# cp isr.o libisr.a

or

# gcc ... -Wl,--whole-archive -lisr -Wl,--no-whole-archive ...



H.J.


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