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 }