OpenSolaris

Printable Version Enter a New Search
Bug ID 6318306
Synopsis a dlsym() from a filter should be redirected to an associated filtee
State 10-Fix Delivered (Fix available in build)
Category:Subcategory compiler:linker
Keywords onnv_triage
Responsible Engineer Rod Evans
Reported Against
Duplicate Of
Introduced In
Commit to Fix snv_24
Fixed In snv_24
Release Fixed solaris_nevada(snv_24) , solaris_10u1(s10u1_16) (Bug ID:2129918) solaris_9(Bug ID:2130759,) solaris_8(Bug ID:2130760,)
Related Bugs
Submit Date 31-August-2005
Last Update Date 12-January-2007
Description
Any reference to a symbol within a filter should be redirected to an associated filtee.
A scenario has been provided where a filter calls dlsym() looking for a symbol within
itself.  This dlsym() should find the symbol within the filter, but then be redirected
to the symbol in the associated filtee.  This is consistent with an external reference
binding to the filter.  However, the present scenario is returning a binding to the
caller (the filter) and is not being redirected to the filtee.

As part of adding RTLD_PROBE (5079061), it was observed that a dlsym() of a function
that had a direct binding, or lazy loading dependency specified for the calling object,
was not establishing the direct binding or lazy loading.  The reason is that typical
relocations call the symbol search mechanism with a symbol index.  This index provides
for determining the Syminfo information, which in turn provides the dependency info.

dlsym() was updated to determine the symbols index before being used for RTLD_DEFAULT
and RTLD_PROBE operations.  This index was then used to complete the search.  However,
if the symbol is defined within the calling object, dlsym() is using that binding.  It
should simply use the index and re-initiate the search.
Work Around
N/A
Comments
N/A