| /** |
| * D header file for OpenBSD. |
| * |
| * Authors: Iain Buclaw |
| * Based-on: core/sys/freebsd/sys |
| */ |
| module core.sys.openbsd.sys.link_elf; |
| |
| version (OpenBSD): |
| |
| extern (C) nothrow @system: |
| |
| import core.sys.posix.config; |
| import core.sys.posix.sys.types; |
| import core.sys.openbsd.sys.elf; |
| |
| version (D_LP64) |
| enum __ELF_NATIVE_CLASS = 64; |
| else |
| enum __ELF_NATIVE_CLASS = 32; |
| |
| template ElfW(string type) |
| { |
| mixin("alias Elf"~__ELF_NATIVE_CLASS.stringof~"_"~type~" ElfW;"); |
| } |
| |
| struct link_map |
| { |
| caddr_t l_addr; |
| char* l_name; |
| void* l_ld; |
| link_map* l_next; |
| link_map* l_prev; |
| } |
| |
| enum |
| { |
| RT_CONSISTENT, |
| RT_ADD, |
| RT_DELETE, |
| } |
| |
| struct r_debug |
| { |
| int r_version; |
| link_map* r_map; |
| void function(r_debug*, link_map*) r_brk; |
| typeof(RT_CONSISTENT) r_state; |
| c_ulong r_ldbase; |
| } |
| |
| struct dl_phdr_info |
| { |
| ElfW!"Addr" dlpi_addr; |
| char* dlpi_name; |
| ElfW!"Phdr"* dlpi_phdr; |
| ElfW!"Half" dlpi_phnum; |
| } |
| |
| |
| private alias int function(dl_phdr_info*, size_t, void *) dl_iterate_phdr_cb; |
| private alias int function(dl_phdr_info*, size_t, void *) @nogc dl_iterate_phdr_cb_ngc; |
| |
| int dl_iterate_phdr(dl_iterate_phdr_cb __callback, void*__data); |
| int dl_iterate_phdr(dl_iterate_phdr_cb_ngc __callback, void*__data) @nogc; |
| |
| int _rtld_addr_phdr(const void*, dl_phdr_info*) @nogc |
| { |
| return 0; |
| } |