| Index: fusl/include/link.h
|
| diff --git a/fusl/include/link.h b/fusl/include/link.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9349cddd5da7de4f7fa3e2abbda8cdad07d47151
|
| --- /dev/null
|
| +++ b/fusl/include/link.h
|
| @@ -0,0 +1,54 @@
|
| +#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
|
| +
|
| +/* 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;
|
| + 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
|
|
|