This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Please help with __attribute__ weak
- From: Dimitry Golubovsky <golubovsky at gmail dot com>
- To: gcc at gcc dot gnu dot org
- Cc: hjl at lucon dot org
- Date: Tue, 26 Jul 2005 10:16:48 -0400
- Subject: Re: Please help with __attribute__ weak
- Reply-to: Dimitry Golubovsky <golubovsky at gmail dot com>
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?
This is less desirable though, as it complicates the linker command
line, but if there is no way to do this via declaration in C code,
I'll go with the library.
--
Dimitry Golubovsky
Anywhere on the Web