github.com/afumu/libc@v0.0.6/musl/include/link.h (about)

     1  #ifndef _LINK_H
     2  #define _LINK_H
     3  
     4  #ifdef __cplusplus
     5  extern "C" {
     6  #endif
     7  
     8  #include <elf.h>
     9  #define __NEED_size_t
    10  #define __NEED_uint32_t
    11  #include <bits/alltypes.h>
    12  
    13  #if UINTPTR_MAX > 0xffffffff
    14  #define ElfW(type) Elf64_ ## type
    15  #else
    16  #define ElfW(type) Elf32_ ## type
    17  #endif
    18  
    19  #include <bits/link.h>
    20  
    21  struct dl_phdr_info {
    22  	ElfW(Addr) dlpi_addr;
    23  	const char *dlpi_name;
    24  	const ElfW(Phdr) *dlpi_phdr;
    25  	ElfW(Half) dlpi_phnum;
    26  	unsigned long long int dlpi_adds;
    27  	unsigned long long int dlpi_subs;
    28  	size_t dlpi_tls_modid;
    29  	void *dlpi_tls_data;
    30  };
    31  
    32  struct link_map {
    33  	ElfW(Addr) l_addr;
    34  	char *l_name;
    35  	ElfW(Dyn) *l_ld;
    36  	struct link_map *l_next, *l_prev;
    37  };
    38  
    39  struct r_debug {
    40  	int r_version;
    41  	struct link_map *r_map;
    42  	ElfW(Addr) r_brk;
    43  	enum { RT_CONSISTENT, RT_ADD, RT_DELETE } r_state;
    44  	ElfW(Addr) r_ldbase;
    45  };
    46  
    47  int dl_iterate_phdr(int (*)(struct dl_phdr_info *, size_t, void *), void *);
    48  
    49  #ifdef __cplusplus
    50  }
    51  #endif
    52  
    53  #endif