bar.c   [plain text]



#include <dlfcn.h>
#include <stdio.h>
#include <unistd.h>

#include "test_support.h"

static void* bazHandle = NULL;
static void* bazSymbol = NULL;
static int barInited = 0;
static int bazInited = 0;

__attribute__((constructor))
static void myinit(int argc, const char* argv[], const char* envp[], const char* apple[]) {
    barInited = 1;
    bazHandle = dlopen(RUN_DIR "/libbaz.dylib", 0);
    if ( bazHandle == NULL ) {
        FAIL("dlopen libbaz.dylib: %s", dlerror());
    }
    bazSymbol = dlsym(RTLD_DEFAULT, "bazIsInited");
    if ( bazSymbol == NULL ) {
        FAIL("dlsym libbaz.dylib");
    }
    bazInited = ((int(*)())bazSymbol)();
}

int bar() {
	if ( barInited == 0 ) {
		FAIL("Didn't init bar");
	}
	if ( bazHandle == NULL ) {
        FAIL("bazHandle not inited");
	}
	if ( bazSymbol == NULL ) {
        FAIL("bazSymbol not inited");
	}
	if ( bazInited == 0 ) {
		FAIL("didn't init bar");
	}
	return 0;
}