blob: 55fc79268e23b5f1cc9bbe6e70eb6aba9fc90b8c [file] [log] [blame]
/**
* 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;
}