#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dlfcn.h>
int main()
{
printf("[BEGIN] dlopen-RTLD_NOLOAD-basic\n");
void* handle = dlopen("libfoo.dylib", RTLD_NOLOAD);
if ( handle == NULL ) {
printf("[FAIL] dlopen-RTLD_NOLOAD-basic: dlopen(libfoo.dylib, RTLD_NOLOAD) failed but it should have worked: %s\n", dlerror());
return 0;
}
void* sym = dlsym(handle, "foo");
if ( sym == NULL ) {
printf("[FAIL] dlopen-RTLD_NOLOAD-basic: dlsym(handle, \"foo\") failed but it should have worked: %s\n", dlerror());
return 0;
}
void* handle2 = dlopen("libfobbulate.dylib", RTLD_NOLOAD);
if ( handle2 != NULL ) {
printf("[FAIL] dlopen-RTLD_NOLOAD-basic: dlopen(libfobbulate.dylib, RTLD_NOLOAD) succeeded but it should have failed\n");
return 0;
}
void* handle3 = dlopen("libfoo-sym.dylib", RTLD_NOLOAD);
if ( handle3 == NULL ) {
printf("[FAIL] dlopen-RTLD_NOLOAD-basic: dlopen(libfoo-sym.dylib, RTLD_NOLOAD) failed but it should have worked: %s\n", dlerror());
return 0;
}
printf("[PASS] dlopen-RTLD_NOLOAD-basic\n");
return 0;
}