On Tue, Jul 26, 2005 at 10:16:48AM -0400, Dimitry Golubovsky wrote: > Dimitry Golubovsky wrote: > > > I need to declare a symbol which is weaker in the executable than in any > > external static or dynamic library. > > > In other words, the executable provides some fallback function > > implementation (in my example, for "write"). But if the linker or > > dynamic linker resolves it, the symbol definition from an external > > library must be used. > > > H. J. Lu wrote: > > The weak symbol is different from the normal one only during creating > executable or shared library if it is in a relocatable file. You > can't use weak symbol for your purpose. But you can mark your symbol in > shared library protected. > > ================= > > Well, libraries are not created by me, so I cannot rely on any > possibility to mark symbols in it. Besides, this is for an automated > tool which may deal with tens of functions at once (this is for a > Haskell FFI generator known as `hsffig' that I am developing). > > If there is no way to declare overridable symbols in executables, then > perhaps placing all those fallback stub functions in a separate static > library (.a) and telling the linker to use it last (after all default > and user-specified libraries) could do the job, couldn't it? >
Yes. H.J.