SymbolHider is a simple tool which hides symbols in ELF shared library's public interface
(by rewriting their visibility to hidden
).
The tool is inspired by @EmployedRussian suggestion in Is there any way to override the -fvisibility=hidden at link time? although I also enabled it for a more common case of fully linked binaries.
To hide some symbols in a library, run tool like
$ sym-hider libxyz.so foo bar
To instead unhide some symbols, run tool like
$ sym-hider --unhide file.o foo bar
(usually this will not work for already linked files i.e. executables and shlibs).
For more details run
$ sym-hider -h
- Support 32-bit ELFs
- Support DLL and Mach-O (is it possible?)
- Hide by wildcards
- More tests
- Support static libs (?)
- Warn on missing symbols