use hidden visibility for call from dlsym to internal __dlsym
fix RTLD_NEXT on x86_64 the return address was being truncated to 32 bits, preventing the dlsym code from determining which module contains the calling code.
RTLD_NEXT support the asm wrapper is needed to get the return address without compiler-specific extensions.