Hiding symbols in a static library
Ken Raeburn
raeburn@raeburn.org
Mon Sep 28 10:38:00 GMT 2009
On Sep 28, 2009, at 03:58, Erik de Castro Lopo wrote:
> Ian Lance Taylor wrote:
>
>> If it's OK to use ld -r instead of building an archive, then it may
>> work to use ld -r with --retain-symbols-file.
>
> I've tried a couple of different versions of this:
>
> ld -r --retain-symbols-file=Symbols.static \
> libA.a libB.a libC.a libD.a -o output.o
>
> The four archives are all > 40kbytes, but the output file is always
> 257 bytes in size. Regardless of what I try, there are never any
> warning or error messages.
Right, there's nothing to cause any of the objects to get pulled in
from the archive libraries; "--retain-symbols-file" is just about
trimming the symbol table. Add "-u symbol" options for specific
symbols, or "--whole-archive" to just suck in everything.
> I've also tried using object files instead of archives, but that
> creates
> an object file still seems to export all the symbols that should be
> hidden.
Hm, that ought to work, I think... Check closely -- is it exporting
them as global symbols, or retaining them after converting to local
symbols so that they can still be used in relocations within the
output file? I haven't looked at the mechanism of --retain-symbols-
file in a lot of years, but I think it ought to be doing the latter.
Ken
More information about the Binutils
mailing list