This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: About hidden & local symbols


Uli is the real expert here, so I may be a little off.

> I came across a library `libexiv2.so'(www.exiv2.org) which has some hidden 
> symbols in it. But the `Version symbol' entries for those hidden symbols 
> are shown as - 1 *global* - by `eu-readelf -sV'. Now if symbol is hidden
> 
>   - shouldn't the highest(15'th) bit of the corresponding `Version symbol'
>     entry be set? And if so, then it could not possibly equate to 1,
>     right?

I don't know that ST_VISIBILITY bits relate to version sets in this way.

>   - a binary(say tcpdump) is linked to a library(libpcap) which does not
>     use Symbol Versioning and does not have `Version definition' section
>     in it. In such a case,
> 
>       $ `eu-readelf -sV tcpdump'
> 
>     shows an output wherein, `Version symbol' entries for symbols
>     defined in libpacp are shown as: 0 *local* . Which means the symbol
>     is defined in the same object and is not accessible outside of the
>     same, right?

No.  These are undefined symbols in tcpdump.  The 0 indicates lack of a
version binding for the symbol.

>   - `Version symbol' entries are greater than 1 if and only if the
>     concerned library(or DSO) uses symbol versioning.

I think this is correct.

>   - And if so, there is no way of knowing if a *local* symbol is defined in
>     the same object/binary or is resolved from a library while running?

SHN_UNDEF symbols always have to be resolved.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]