I'm trying to dynamically load a specific shared library using dlopen()
in lazy mode.
There are of course unresolved symbols in the shared library, but the lazy mode supposed to ignore them.
It does ignore them on Linux, and the resolving actually happens once the symbols are used in run time.
But in Android, it doesn't work, although I use lazy mode, dlopen()
fails because of unresolved symbols.
this is the code I'm talking about
retval = dlopen(LOADLIB, RTLD_LAZY);
What's going on ?
maybe because Android bionic DOES NOT support RTLD_LAZY mode even if you dlopen with RTLD_LAZY flag, you can check bionic source code for details.
below is marshmallow bionic code piece: