X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flink.h;h=9349cddd5da7de4f7fa3e2abbda8cdad07d47151;hb=6a851e3ab8a1ae524b2aa6218615ec1c86528e9c;hp=d5160e7e79b96cf25d56530fb2251980b5aed3eb;hpb=18c0e02e2bd53ceedbb843b06ff90890f1c734b0;p=musl diff --git a/include/link.h b/include/link.h index d5160e7e..9349cddd 100644 --- a/include/link.h +++ b/include/link.h @@ -1,8 +1,13 @@ #ifndef _LINK_H #define _LINK_H +#ifdef __cplusplus +extern "C" { +#endif + #include #define __NEED_size_t +#define __NEED_uint32_t #include #if UINTPTR_MAX > 0xffffffff @@ -11,6 +16,9 @@ #define ElfW(type) Elf32_ ## type #endif +/* this is the same everywhere except alpha and s390 */ +typedef uint32_t Elf_Symndx; + struct dl_phdr_info { ElfW(Addr) dlpi_addr; const char *dlpi_name; @@ -22,6 +30,25 @@ struct dl_phdr_info { void *dlpi_tls_data; }; +struct link_map { + ElfW(Addr) l_addr; + char *l_name; + ElfW(Dyn) *l_ld; + struct link_map *l_next, *l_prev; +}; + +struct r_debug { + int r_version; + struct link_map *r_map; + ElfW(Addr) r_brk; + enum { RT_CONSISTENT, RT_ADD, RT_DELETE } r_state; + ElfW(Addr) r_ldbase; +}; + int dl_iterate_phdr(int (*)(struct dl_phdr_info *, size_t, void *), void *); +#ifdef __cplusplus +} +#endif + #endif