dladdr(3) Library Functions Manual dladdr(3) dladdr, dladdr1 - (libdl -ldl) #define _GNU_SOURCE #include int dladdr(const void *addr, Dl_info *info); int dladdr1(const void *addr, Dl_info *info, void **extra_info, int flags); dladdr() addr . dladdr() addr. Dl_info: typedef struct { const char *dli_fname; /* */ void *dli_fbase; /* */ const char *dli_sname; /* addr */ void *dli_saddr; /* dli_sname */ } Dl_info; addr dli_sname dli_saddr NULL. dladdr1() dladdr() extra_info. flags : RTLD_DL_LINKMAP . extra_info link_map ( struct link_map **) : struct link_map { ElfW(Addr) l_addr; /* ELF */ char *l_name; /* */ ElfW(Dyn) *l_ld; /* */ struct link_map *l_next, *l_prev; /* */ /* */ }; RTLD_DL_SYMENT ELF . extra_info : const ElfW(Sym) **. ElfW() ELF . 64 ElfW(Sym) Elf64_Sym : typedef struct { Elf64_Word st_name; /* */ unsigned char st_info; /* */ unsigned char st_other; /* */ Elf64_Section st_shndx; /* */ Elf64_Addr st_value; /* */ Elf64_Xword st_size; /* */ } Elf64_Sym; st_name . st_info . ELF64_ST_TYPE(st_info) ( ELF32_ST_TYPE() 32 ) : STT_NOTYPE STT_OBJECT STT_FUNC STT_SECTION STT_FILE STT_COMMON STT_TLS STT_GNU_IFUNC st_info ELF64_ST_BIND(st_info) ( ELF32_ST_BIND() 32-) : STB_LOCAL STB_GLOBAL STB_WEAK STB_GNU_UNIQUE st_other ELF64_ST_VISIBILITY(st_info) ( ELF32_ST_VISIBILITY() 32-) : STV_DEFAULT STV_INTERNAL STV_HIDDEN STV_PROTECTED . addr info->dli_sname info->dli_saddr NULL. addr 0. dlerror(3). attributes(7). +------------+------------------------------------+--------------------+ || | | +------------+------------------------------------+--------------------+ |dladdr(), | | MT-Safe | |dladdr1() | | | +------------+------------------------------------+--------------------+ GNU. dladdr() glibc 2.0. dladdr1() glibc 2.3.3. . dladdr(). ( i386 x86-64) dli_fname dli_fbase dladdr() . plt ( ) ( ). : gcc(1) got ( ) dladdr(). dl_iterate_phdr(3) dlinfo(3) dlopen(3) dlsym(3) ld.so(8) 3 . . : . 6.18 8 2026 dladdr(3)