On 3/23/07, J.C. Roberts <[EMAIL PROTECTED]> wrote: ...
Unfortunately, it actually is possible to remove the typically used function name symbols from dynamically loaded libraries (shared objects). Stripping the function name symbols (along with debug symbols) from shared libraries is often used in copyright protection schemes as a way to thwart auditing and analysis. The resoning is because some feel that the function names help with understanding the code.
-BUT important thing to remember is the protected programs using these libraries _only_ work because they are not calling the shared library functions by name.
Bzzt. Symbols in shared libraries *are* referenced by name. There's a completely separate symbol table used (the ".dynsym" section) by the dynamic linker that has the information it needs. It should be obvious that the calling of shared library functions *is* by name, as you can dynamically override the functions by loading other shared libraries with the same name. Indeed, LD_PRELOAD would be almost useless if that wasn't true. *Please* go read up on (at least!) the ELF standard before making authoritative sounding statements about how shared libraries and symbol tables work. Philip Guenther