1 1.7.28.2 bouyer /* $NetBSD: link_elf.h,v 1.7.28.2 2012/03/17 18:28:35 bouyer Exp $ */ 2 1.5 thorpej 3 1.5 thorpej #ifndef _LINK_ELF_H_ 4 1.5 thorpej #define _LINK_ELF_H_ 5 1.1 cgd 6 1.1 cgd #include <sys/types.h> 7 1.7.28.2 bouyer #include <sys/exec_elf.h> 8 1.1 cgd 9 1.7.28.1 snj typedef struct link_map { 10 1.4 christos caddr_t l_addr; /* Base Address of library */ 11 1.2 mhitch #ifdef __mips__ 12 1.4 christos caddr_t l_offs; /* Load Offset of library */ 13 1.2 mhitch #endif 14 1.4 christos const char *l_name; /* Absolute Path to Library */ 15 1.4 christos void *l_ld; /* Pointer to .dynamic in memory */ 16 1.4 christos struct link_map *l_next; /* linked list of of mapped libs */ 17 1.4 christos struct link_map *l_prev; 18 1.7.28.1 snj } Link_map; 19 1.1 cgd 20 1.1 cgd struct r_debug { 21 1.4 christos int r_version; /* not used */ 22 1.4 christos struct link_map *r_map; /* list of loaded images */ 23 1.7 uwe void (*r_brk)(void); /* pointer to break point */ 24 1.1 cgd enum { 25 1.4 christos RT_CONSISTENT, /* things are stable */ 26 1.4 christos RT_ADD, /* adding a shared library */ 27 1.4 christos RT_DELETE /* removing a shared library */ 28 1.4 christos } r_state; 29 1.1 cgd }; 30 1.4 christos 31 1.7.28.2 bouyer struct dl_phdr_info 32 1.7.28.2 bouyer { 33 1.7.28.2 bouyer Elf_Addr dlpi_addr; /* module relocation base */ 34 1.7.28.2 bouyer const char *dlpi_name; /* module name */ 35 1.7.28.2 bouyer const Elf_Phdr *dlpi_phdr; /* pointer to module's phdr */ 36 1.7.28.2 bouyer Elf_Half dlpi_phnum; /* number of entries in phdr */ 37 1.7.28.2 bouyer unsigned long long int dlpi_adds; /* total # of loads */ 38 1.7.28.2 bouyer unsigned long long int dlpi_subs; /* total # of unloads */ 39 1.7.28.2 bouyer size_t dlpi_tls_modid; 40 1.7.28.2 bouyer void *dlpi_tls_data; 41 1.7.28.2 bouyer }; 42 1.7.28.2 bouyer 43 1.7.28.2 bouyer __BEGIN_DECLS 44 1.7.28.2 bouyer 45 1.7.28.2 bouyer int dl_iterate_phdr(int (*)(struct dl_phdr_info *, size_t, void *), 46 1.7.28.2 bouyer void *); 47 1.7.28.2 bouyer 48 1.7.28.2 bouyer __END_DECLS 49 1.7.28.2 bouyer 50 1.5 thorpej #endif /* _LINK_ELF_H_ */ 51