#include <stdio.h>
#include <dlfcn.h>
#include <stdlib.h>
extern bool foo(bool* ptr);
int main()
{
printf("[BEGIN] init-term-segments\n");
void* h = dlopen(RUN_DIR "/libfoo.dylib", RTLD_NOW);
if (h == NULL) {
printf("[FAIL] init-term-segments - dlerror = %s\n", dlerror());
return 0;
}
void* fooSym = dlsym(RTLD_DEFAULT, "foo");
if ( fooSym == NULL ) {
printf("[FAIL] init-term-segments - dlsym failure\n");
return 0;
}
bool ranTerm = false;
bool ranInit = ((__typeof(&foo))fooSym)(&ranTerm);
if (!ranInit) {
printf("[FAIL] init-term-segments - didn't run init\n");
return 0;
}
if ( dlclose(h) != 0 ) {
printf("[FAIL] init-term-segments - didn't dlclose\n");
return 0;
}
if (!ranTerm) {
printf("[FAIL] init-term-segments - didn't run term\n");
return 0;
}
printf("[PASS] init-term-segments\n");
return 0;
}