This is the mail archive of the
mailing list for the binutils project.
Re: ld violating ELF specification for hidden symbols?
>>> On 07.01.11 at 22:49, Cary Coutant <firstname.lastname@example.org> 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
> think you'll find that the hidden symbol is not present in the dynamic
> symbol table, or has been marked STB_LOCAL.