|
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.
|