You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
586 B
24 lines
586 B
4 months ago
|
#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();
|
||
|
}
|