dladdr
extern int dladdr(const void *addr, Dl_info_t *info);
if (caller != NULL && dladdr(f, &info) != 0) {