blob: 94e15704d5a5071bc048065495c6badeb6de9993 [file] [log] [blame]
#include <dlfcn.h>
#include <stdio.h>
// Mark foo and bar weak so that Clang allows the run-time linker to decide which DSO's symbol to
// use.
__attribute__((weak)) extern "C" void foo() {
printf("foo lib3\n");
void (*next)(void) = reinterpret_cast<void (*)()>(dlsym(RTLD_NEXT, "foo"));
if (next != nullptr) next();
}
__attribute__((weak)) extern "C" void bar() {
printf("bar lib3\n");
void (*next)(void) = reinterpret_cast<void (*)()>(dlsym(RTLD_NEXT, "bar"));
if (next != nullptr) next();
}
void lib3_call_funcs() {
printf("lib3_call_funcs\n");
foo();
bar();
}