// sample to show dynamic symbol resolution on linux // compile lib with elfencode -D LIB --shared -o bite.so #ifdef LIB int printf(char*, ...); int bar(void) __attribute__((import)); int bite(void) __attribute__((export)) { printf("bite\n"); bar(); } #else #ifdef DLOPEN int dlopen(char*, int); void* dlsym(int, int); #else int bite(void) __attribute__((import_from(./bite.so))); #endif int printf(char*, ...); int _exit(int); int foo(void) __attribute__((entrypoint)) { printf("start\n"); #ifdef DLOPEN void (*b)(void) = dlsym(dlopen("./bite.so", 1), "bite"); printf("dlopen'd\n"); b(); #else bite(); #endif printf("after bite\n"); _exit(0); } int bar(void) __attribute__((export)) { printf("bar\n"); } #endif