16865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov#include <dlfcn.h> 26865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovextern "C" void *dlopen_b() { 37d09a8cd114751f88bf0d03f0f2e8f87a4a5ed9aDmitriy Ivanov // TODO (dimitry): this is to work around http://b/20049306 47d09a8cd114751f88bf0d03f0f2e8f87a4a5ed9aDmitriy Ivanov // remove once it is fixed 57d09a8cd114751f88bf0d03f0f2e8f87a4a5ed9aDmitriy Ivanov static int dummy = 0; 67d09a8cd114751f88bf0d03f0f2e8f87a4a5ed9aDmitriy Ivanov 7a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov // This is supposed to succeed because this library has DT_RUNPATH 8a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov // for libtest_dt_runpath_x.so which should be taken into account 9a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov // by dlopen. 106865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov void *handle = dlopen("libtest_dt_runpath_x.so", RTLD_NOW); 117d09a8cd114751f88bf0d03f0f2e8f87a4a5ed9aDmitriy Ivanov if (handle != nullptr) { 127d09a8cd114751f88bf0d03f0f2e8f87a4a5ed9aDmitriy Ivanov dummy++; 137d09a8cd114751f88bf0d03f0f2e8f87a4a5ed9aDmitriy Ivanov return handle; 147d09a8cd114751f88bf0d03f0f2e8f87a4a5ed9aDmitriy Ivanov } 157d09a8cd114751f88bf0d03f0f2e8f87a4a5ed9aDmitriy Ivanov return nullptr; 166865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov} 17