ld violating ELF specification for hidden symbols?

Jan Beulich JBeulich@novell.com
Mon Jan 10 08:09:00 GMT 2011


>>> On 07.01.11 at 22:49, Cary Coutant <ccoutant@google.com> wrote:
>>  The version of the spec I have says "A hidden symbol contained in
>> a relocatable object must be either removed or converted to
>> STB_LOCAL binding by the link-editor when the relocatable object is
>> included in an executable file or shared object." Nevertheless I see
>> global hidden symbols in executables. Did the spec get changed
>> (and if so, when/where), or is this a bug?
> 
> It's not clear in the gABI, but it really only matters for the dynamic
> symbol table. Once an executable or shared library is built, the
> static symbol table isn't involved in further symbol binding
> operations, and the symbols listed there are for reference only. I

Ah, yes, indeed. Having looked at a couple of arbitrarily chosen
binaries that I know got linked with no special options, this only
opens up the question of what determines whether a symbol
makes it into .dynsym (I would have expected all of them to be
there without telling the linker otherwise).

So it's really the wording in the spec that could be a little more
precise.

> think you'll find that the hidden symbol is not present in the dynamic
> symbol table, or has been marked STB_LOCAL.

Jan



More information about the Binutils mailing list