what are weak external symbols?

Ian Lance Taylor ian@airs.com
Mon Mar 28 14:19:00 GMT 2005


Bahadir Balban <bahadir.balban@gmail.com> writes:

> In summary it says that weak external symbols is a concept to avoid
> linking with unused parts of a library. The printf example is given:
> floating-point routines (namely fcvt) are referred as weak references
> by printf, such that when printf is used in a routine that didn't use
> fcvt, reference to fcvt resolves to zero and no error is produced from
> this.
> 
> Now the questions:
> 
> 1) Is my summary above correct?

Pretty much.  Instead of "a routine that didn't use fcvt" I would say
"a program that didn't use fcvt."

> 2) Is this a case such that, these fcvt routines are explicitly
> defined in printf as weak references? If so, how do you define it as
> such in C source? Or perhaps you use a linker flag when you create the
> library?

Search for weak here:
    http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Function-Attributes.html#Function-Attributes

Other compilers have other mechanisms.

Ian



More information about the Binutils mailing list