2 * D header file for FreeBSD.
4 * $(LINK2 http://svnweb.freebsd.org/base/head/sys/sys/elf64.h?view=markup, sys/elf64.h)
6 module core.sys.freebsd.sys.elf64;
13 import core.stdc.stdint;
14 public import core.sys.freebsd.sys.elf_common;
16 alias uint16_t Elf64_Half;
17 alias uint32_t Elf64_Word;
18 alias int32_t Elf64_Sword;
19 alias uint64_t Elf64_Lword;
20 alias uint64_t Elf64_Xword;
21 alias int64_t Elf64_Sxword;
22 alias uint64_t Elf64_Addr;
23 alias uint64_t Elf64_Off;
24 alias Elf64_Word Elf64_Hashelt;
25 alias Elf64_Xword Elf64_Size;
26 alias Elf64_Sxword Elf64_Ssize;
30 char[EI_NIDENT] e_ident = 0;
39 Elf64_Half e_phentsize;
41 Elf64_Half e_shentsize;
43 Elf64_Half e_shstrndx;
49 Elf64_Word l_time_stamp;
50 Elf64_Word l_checksum;
65 Elf64_Xword sh_addralign;
66 Elf64_Xword sh_entsize;
101 Elf64_Sxword r_addend;
106 auto ELF64_R_SYM(I)(I i) { return i >> 32; }
107 auto ELF64_R_TYPE(I)(I i) { return i & 0xffffffff; }
108 auto ELF64_R_INFO(S, T)(S sym, T type) { return (sym << 32) + (type & 0xffffffff); }
110 auto ELF64_R_TYPE_DATA(I)(I i) { return (cast(Elf64_Xword) i << 32) >> 40; }
111 auto ELF64_R_TYPE_ID(I)(I i) { return (cast(Elf64_Xword) i << 56 ) >> 56; }
112 auto ELF64_R_TYPE_INFO(D, T)(D d, T t) { return cast(Elf64_Xword) d << 8 + cast(Elf64_Xword) t; }
115 alias Elf_Note Elf64_Nhdr;
121 Elf64_Xword m_poffset;
128 auto ELF64_M_SYM(I)(I info) { return info >> 8; }
129 auto ELF64_M_SIZE(I)(I info) { return cast(ubyte)info; }
130 auto ELF64_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubye)size; }
155 auto ELF64_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
156 auto ELF64_ST_TYPE(T)(T val) { return val & 0xf; }
157 auto ELF64_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); }
158 auto ELF64_ST_VISIBILITY(O)(O o) { return o & 0x03; }
163 Elf64_Half vd_version;
180 Elf64_Half vn_version;
190 Elf64_Half vna_flags;
191 Elf64_Half vna_other;
196 alias Elf64_Half Elf64_Versym;
200 Elf64_Half si_boundto;