1 /* $OpenBSD: link_elf.h,v 1.8 2022/01/28 04:59:15 guenther Exp $ */ 2 3 /* 4 * Public domain. 5 */ 6 7 #ifndef _LINK_ELF_H 8 #define _LINK_ELF_H 9 10 #include <elf_abi.h> 11 12 #ifndef DT_PROCNUM 13 #define DT_PROCNUM 0 14 #endif 15 16 /* 17 * struct link_map is a part of the protocol between the debugger and 18 * ld.so. ld.so may have additional fields in its version of this 19 * structure but those are ld.so private fields. 20 */ 21 struct link_map { 22 caddr_t l_addr; /* Base address of library */ 23 const char *l_name; /* Absolute path to library */ 24 void *l_ld; /* pointer to _DYNAMIC */ 25 struct link_map *l_next; 26 struct link_map *l_prev; 27 }; 28 29 struct dl_phdr_info { 30 Elf_Addr dlpi_addr; 31 const char *dlpi_name; 32 const Elf_Phdr *dlpi_phdr; 33 Elf_Half dlpi_phnum; 34 }; 35 36 __BEGIN_DECLS 37 int dl_iterate_phdr (int (*)(struct dl_phdr_info *, size_t, void *), 38 void *); 39 void *dl_unwind_find_exidx(const void *, int *); 40 __END_DECLS 41 42 #endif /* !_LINK_ELF_H */ 43