Yes, you are right, by reading at the source it seems that ld.so only
searches the object with -Bsymbolic.
In fact there is this comment in the relevant file:
/* Create an appropriate searchlist. It contains only this map.
XXX This is the definition of DT_SYMBOLIC in SysVr4. The old
GNU ld.so implementation had a different interpretation which
is more reasonable. We are prepared to add this possibility
back as part of a GNU extension of the ELF format. */
Apparently the "different interpretation" is what I was assuming the
current one.
How about the implementing the GNU extension?
The value attached to the DT_SYMBOLIC entry is currently ignored but set
to 0 by ld so we could use it for the extension.
On non-Debian/non-GNU platforms this would interpreted just like
DT_SYMBOLIC.
This would only require modification of ld.so (add support for
DT_SYMBOLIC and value=1) and ld (add -Bgnusymbolic).
Or, alternatively, how about changing the semantics of DT_SYMBOLIC?
(shouldn't cause serious problems, would it?)
Attachment:
signature.asc
Description: This is a digitally signed message part