1 // Copyright Yazan Dabain 2014. 2 // Distributed under the Boost Software License, Version 1.0. 3 // (See accompanying file LICENSE_1_0.txt or copy at 4 // http://www.boost.org/LICENSE_1_0.txt) 5 6 module elf.low64; 7 import elf.low; 8 9 package: 10 11 alias ELF64_Addr = ulong; 12 alias ELF64_Off = ulong; 13 alias ELF64_Half = ushort; 14 alias ELF64_Word = uint; 15 alias ELF64_SWord = int; 16 alias ELF64_XWord = ulong; 17 alias ELF64_SXword = long; 18 19 alias ELF64_Section = ushort; 20 21 align(1) struct ELFHeader64L { 22 align(1): 23 ELFIdent ident; 24 ELF64_Half type; 25 ELF64_Half machine; 26 ELF64_Word version_; 27 ELF64_Addr entry; 28 ELF64_Off phoff; 29 ELF64_Off shoff; 30 ELF64_Word flags; 31 ELF64_Half ehsize; 32 ELF64_Half phentsize; 33 ELF64_Half phnum; 34 ELF64_Half shentsize; 35 ELF64_Half shnum; 36 ELF64_Half shstrndx; 37 } 38 39 align(1) struct ELFSection64L { 40 align(1): 41 ELF64_Word name; 42 ELF64_Word type; 43 ELF64_XWord flags; 44 ELF64_Addr address; 45 ELF64_Off offset; 46 ELF64_XWord size; 47 ELF64_Word link; 48 ELF64_Word info; 49 ELF64_XWord addralign; 50 ELF64_XWord entsize; 51 } 52 53 align(1) struct ELFSymbol64L { 54 align(1): 55 ELF64_Word name; 56 ubyte info; 57 ubyte other; 58 ELF64_Half shndx; 59 ELF64_Addr value; 60 ELF64_XWord size; 61 }