"Fossies" - the Fresh Open Source Software Archive

Member "dmd2/src/druntime/import/core/sys/freebsd/sys/link_elf.d" (20 Nov 2020, 1831 Bytes) of package /linux/misc/dmd.2.094.2.linux.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) D source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /**
    2  * D header file for FreeBSD.
    3  *
    4  * $(LINK2 http://svnweb.freebsd.org/base/head/sys/sys/link_elf.h?view=markup, sys/link_elf.h)
    5  */
    6 module core.sys.freebsd.sys.link_elf;
    7 
    8 version (FreeBSD):
    9 extern (C):
   10 nothrow:
   11 
   12 import core.stdc.stdint : uint64_t;
   13 import core.sys.freebsd.sys.elf;
   14 
   15 version (D_LP64)
   16     enum __ELF_NATIVE_CLASS = 64;
   17 else
   18     enum __ELF_NATIVE_CLASS = 32;
   19 
   20 template ElfW(string type)
   21 {
   22     mixin("alias Elf"~__ELF_NATIVE_CLASS.stringof~"_"~type~" ElfW;");
   23 }
   24 
   25 enum LA_SER_ORIG =      0x01;
   26 enum LA_SER_LIBPATH =   0x02;
   27 enum LA_SER_RUNPATH =   0x04;
   28 enum LA_SER_CONFIG =    0x08;
   29 enum LA_SER_DEFAULT =   0x40;
   30 enum LA_SER_SECURE =    0x80;
   31 
   32 struct link_map
   33 {
   34     char*           l_addr;
   35 
   36     version (MIPS32)
   37         char*       l_offs;
   38     version (MIPS64)
   39         char*       l_offs;
   40 
   41     char*           l_name;
   42     void*           l_ld;
   43     link_map*       l_next, l_prev;
   44 }
   45 alias link_map Link_map;
   46 
   47 enum
   48 {
   49     RT_CONSISTENT,
   50     RT_ADD,
   51     RT_DELETE,
   52 }
   53 
   54 struct r_debug
   55 {
   56     int             r_version;
   57     link_map*       r_map;
   58     void function(r_debug*, link_map*) r_brk;
   59 }
   60 
   61 struct dl_phdr_info
   62 {
   63     ElfW!"Addr"     dlpi_addr;
   64     char*           dlpi_name;
   65     ElfW!"Phdr"*    dlpi_phdr;
   66     ElfW!"Half"     dlpi_phnum;
   67     uint64_t        dlpi_adds;
   68     uint64_t        dlpi_subs;
   69     size_t          dlpi_tls_modid;
   70     void*           dlpi_tls_data;
   71 }
   72 
   73 
   74 private alias extern(C) int function(dl_phdr_info*, size_t, void *) dl_iterate_phdr_cb;
   75 private alias extern(C) int function(dl_phdr_info*, size_t, void *) @nogc dl_iterate_phdr_cb_ngc;
   76 extern int dl_iterate_phdr(dl_iterate_phdr_cb __callback, void*__data);
   77 extern int dl_iterate_phdr(dl_iterate_phdr_cb_ngc __callback, void*__data) @nogc;
   78 extern int _rtld_addr_phdr(const void*, dl_phdr_info*) @nogc;
   79 extern int _rtld_get_stack_prot() @nogc;