RFC: weakref GCC attribute and .weakref assembly directive
Aaron W. LaFramboise
aaron98wiridge9@aaronwl.com
Thu Oct 13 13:33:00 GMT 2005
Hello,
Alexandre Oliva wrote:
> What we need, in contrast, is some means to define an alias that
> doesn't, by itself, cause an external definition of the symbol to be
> brought in. If the symbol is referenced directly elsewhere, however,
> then it must be defined. This is similar to the notion of weak
> references in garbage collection literature, in which a strong
> reference stops an object from being garbage-collected, but a weak
> reference does not. I've decided to name this kind of alias a
> weakref.
Could you compare your novel weak references to PECOFF's notion of "weak
externals"?
.weak sym1 = sym2 # Analogous to: .weakref sym1, sym2
"If a definition of sym1 is linked, then an external reference to the
symbol is resolved normally.
If a definition of sym1 is not linked, then all references to the weak
external for sym1 refer to sym2 instead.
The external symbol, sym2, must always be linked; typically it is
defined in the module containing the weak reference to sym1" (PECOFF 6.0
5.5.3).
Note that PECOFF weak external symbols have external linkage, but they
will never be used to resolve an undefined reference in another object
at link-time.
I am thinking that the difference is that PECOFF weak externals can be
resolved by definitions anywhere in the final link, while your new weak
references can only be overriden by definitions within the same
translation unit. Does this seem correct?
Thanks,
Aaron W. LaFramboise
More information about the Binutils
mailing list