Re: KDE 2.0 impressions



>> Solaris has another linking option, called Direct Bindings. 
What direct bindings 
>> doies is decide which symbol a specific symbol reference will 
bind at link-edit 
>> time. This is done by having the link editor record for a 
symbol from which 
>> object from which object it is made available. and record that 
information in 
>> the newly built object. This can give much faster symbol 
resolution and permit 
>> multiple symbols with the same name to exist on the same link 
map without name 
>> space collision. Does Linux have a similar feature?
>Well, there is a hack called elfvector that does something 
similar. It can
>be found at http://www.bitwagon.com/elfvector.html. But it is 
not widely
>used.
>
>Linux does support multiple symbols with the same name if they 
are in
>libraries loaded by dlopen().

Solaris also supports this and uses shared object groups to
define the search path used to resolve a symbol, but this
can lead to ambiguous symbol resolution, e.g.


               -> B.so.1 \
              /
Exe -> A.so.1             -> D.so.1
              \       
               -> C.so.1 /
               
Here if a symbol used in D.so.1 is defined in both B.so.1 and
C.so.1, the actual symbol resolution does not depend on the
dlopen() dependencies but on the actual order of dlopen()'s (ie.
the symbol will be found in B or C, depending on which one was
dlopen()ed first).

The direct bindings feature that Padraig mentioned speeds up
symbol resolution but also allows a programmer to create a
library which specifies that a given symbol will be resolved from
a specific library and this can be used to eliminate the
ambiguity in "diamond" library dependencies like the one above.

Colm.

>/ Alex





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]