60,10 → 60,13 |
*/ |
} |
|
typedef void (*fptr_t)(void); |
|
int main(int argc, char *argv[]) |
{ |
void *a; |
void *s; |
fptr_t fun; |
|
char *lib_name; |
char *sym_name; |
71,8 → 74,8 |
// kputint(-1); |
printf("Hello from dltest!\n"); |
|
lib_name = "libc.so.0"; |
sym_name = "printf"; |
lib_name = "libtest.so.0"; |
sym_name = "test_func"; |
|
a = dlopen(lib_name, 0); |
if (a != NULL) { |
79,8 → 82,14 |
s = dlsym(a, sym_name); |
printf("symbol '%s' = 0x%lx\n", sym_name, (long) s); |
} else { |
printf("failed to dlopen() library '%s'\n"); |
printf("failed to dlopen() library '%s'\n", lib_name); |
} |
|
printf("Run dynamically-resolved function '%s'...\n", sym_name); |
fun = (fptr_t) s; |
(*fun)(); |
printf("OK\n"); |
|
return 0; |
} |
|