54 lines
		
	
	
		
			921 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			921 B
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef _LINK_H
 | 
						|
#define _LINK_H
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
#include <elf.h>
 | 
						|
#define __NEED_size_t
 | 
						|
#define __NEED_uint32_t
 | 
						|
#include <bits/alltypes.h>
 | 
						|
 | 
						|
#if UINTPTR_MAX > 0xffffffff
 | 
						|
#define ElfW(type) Elf64_ ## type
 | 
						|
#else
 | 
						|
#define ElfW(type) Elf32_ ## type
 | 
						|
#endif
 | 
						|
 | 
						|
#include <bits/link.h>
 | 
						|
 | 
						|
struct dl_phdr_info {
 | 
						|
	ElfW(Addr) dlpi_addr;
 | 
						|
	const char *dlpi_name;
 | 
						|
	const ElfW(Phdr) *dlpi_phdr;
 | 
						|
	ElfW(Half) dlpi_phnum;
 | 
						|
	unsigned long long int dlpi_adds;
 | 
						|
	unsigned long long int dlpi_subs;
 | 
						|
	size_t dlpi_tls_modid;
 | 
						|
	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
 |