Если я не ошибаюсь, следующий код должен распечатывать разные адреса при каждом запуске. Однако он всегда отображает один и тот же адрес для isupper
(например).
Код:
#include <stdio.h>
#include <dlfcn.h>
int main(int argc, char *argv[]) {
printf("isspace @ %p\n", dlsym(RTLD_DEFAULT, "isspace"));
return 0;
}
Вывод:
$ ./libc-simple
isspace @ 0x7fff76b63035
$ ./libc-simple
isspace @ 0x7fff76b63035
$ ./libc-simple
isspace @ 0x7fff76b63035
$ ./libc-simple
isspace @ 0x7fff76b63035
(я работаю macOS 10.14.6, но я тестировал тот же код на другом компьютере под управлением macOS 10.15 с тем же результатом.)
Чего мне не хватает?