]>
Commit | Line | Data |
---|---|---|
b4c522fa IB |
1 | /** |
2 | * D header file for NetBSD. | |
3 | * | |
4 | * http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/exec_elf.h | |
5 | */ | |
6 | module core.sys.netbsd.sys.elf32; | |
7 | ||
8 | version (NetBSD): | |
9 | extern (C): | |
10 | pure: | |
11 | nothrow: | |
12 | ||
13 | import core.stdc.stdint; | |
14 | public import core.sys.netbsd.sys.elf_common; | |
15 | ||
16 | alias uint16_t Elf32_Half; | |
17 | alias uint32_t Elf32_Word; | |
18 | alias int32_t Elf32_Sword; | |
19 | alias uint64_t Elf32_Lword; | |
20 | alias uint32_t Elf32_Addr; | |
21 | alias uint32_t Elf32_Off; | |
22 | alias Elf32_Word Elf32_Hashelt; | |
23 | alias Elf32_Word Elf32_Size; | |
24 | alias Elf32_Sword Elf32_Ssize; | |
25 | ||
26 | struct Elf32_Ehdr | |
27 | { | |
0da83a16 | 28 | char[EI_NIDENT] e_ident = 0; |
b4c522fa IB |
29 | Elf32_Half e_type; |
30 | Elf32_Half e_machine; | |
31 | Elf32_Word e_version; | |
32 | Elf32_Addr e_entry; | |
33 | Elf32_Off e_phoff; | |
34 | Elf32_Off e_shoff; | |
35 | Elf32_Word e_flags; | |
36 | Elf32_Half e_ehsize; | |
37 | Elf32_Half e_phentsize; | |
38 | Elf32_Half e_phnum; | |
39 | Elf32_Half e_shentsize; | |
40 | Elf32_Half e_shnum; | |
41 | Elf32_Half e_shstrndx; | |
42 | } | |
43 | ||
44 | struct Elf32_Shdr | |
45 | { | |
46 | Elf32_Word sh_name; | |
47 | Elf32_Word sh_type; | |
48 | Elf32_Word sh_flags; | |
49 | Elf32_Addr sh_addr; | |
50 | Elf32_Off sh_offset; | |
51 | Elf32_Word sh_size; | |
52 | Elf32_Word sh_link; | |
53 | Elf32_Word sh_info; | |
54 | Elf32_Word sh_addralign; | |
55 | Elf32_Word sh_entsize; | |
56 | } | |
57 | ||
58 | struct Elf32_Phdr | |
59 | { | |
60 | Elf32_Word p_type; | |
61 | Elf32_Off p_offset; | |
62 | Elf32_Addr p_vaddr; | |
63 | Elf32_Addr p_paddr; | |
64 | Elf32_Word p_filesz; | |
65 | Elf32_Word p_memsz; | |
66 | Elf32_Word p_flags; | |
67 | Elf32_Word p_align; | |
68 | } | |
69 | ||
70 | struct Elf32_Dyn | |
71 | { | |
72 | Elf32_Sword d_tag; | |
73 | union _d_un | |
74 | { | |
75 | Elf32_Word d_val; | |
76 | Elf32_Addr d_ptr; | |
77 | } _d_un d_un; | |
78 | } | |
79 | ||
80 | struct Elf32_Rel | |
81 | { | |
82 | Elf32_Addr r_offset; | |
83 | Elf32_Word r_info; | |
84 | } | |
85 | ||
86 | struct Elf32_Rela | |
87 | { | |
88 | Elf32_Addr r_offset; | |
89 | Elf32_Word r_info; | |
90 | Elf32_Sword r_addend; | |
91 | } | |
92 | ||
93 | extern (D) | |
94 | { | |
95 | auto ELF32_R_SYM(V)(V val) { return val >> 8; } | |
96 | auto ELF32_R_TYPE(V)(V val) { return val & 0xff; } | |
97 | auto ELF32_R_INFO(S, T)(S sym, T type) { return (sym << 8) + (type & 0xff); } | |
98 | } | |
99 | ||
100 | alias Elf_Note Elf32_Nhdr; | |
101 | ||
102 | struct Elf32_Move | |
103 | { | |
104 | Elf32_Lword m_value; | |
105 | Elf32_Word m_info; | |
106 | Elf32_Word m_poffset; | |
107 | Elf32_Half m_repeat; | |
108 | Elf32_Half m_stride; | |
109 | } | |
110 | ||
111 | extern (D) | |
112 | { | |
113 | auto ELF32_M_SYM(I)(I info) { return info >> 8; } | |
114 | auto ELF32_M_SIZE(I)(I info) { return cast(ubyte)info; } | |
5fee5ec3 | 115 | auto ELF32_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubyte)size; } |
b4c522fa IB |
116 | } |
117 | ||
118 | struct Elf32_Cap | |
119 | { | |
120 | Elf32_Word c_tag; | |
121 | union _c_un | |
122 | { | |
123 | Elf32_Word c_val; | |
124 | Elf32_Addr c_ptr; | |
125 | } _c_un c_un; | |
126 | } | |
127 | ||
128 | struct Elf32_Sym | |
129 | { | |
130 | Elf32_Word st_name; | |
131 | Elf32_Addr st_value; | |
132 | Elf32_Word st_size; | |
133 | ubyte st_info; | |
134 | ubyte st_other; | |
135 | Elf32_Half st_shndx; | |
136 | } | |
137 | ||
138 | extern (D) | |
139 | { | |
140 | auto ELF32_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; } | |
141 | auto ELF32_ST_TYPE(T)(T val) { return val & 0xf; } | |
142 | auto ELF32_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); } | |
143 | auto ELF32_ST_VISIBILITY(O)(O o) { return o & 0x03; } | |
144 | } | |
145 | ||
146 | struct Elf32_Verdef | |
147 | { | |
148 | Elf32_Half vd_version; | |
149 | Elf32_Half vd_flags; | |
150 | Elf32_Half vd_ndx; | |
151 | Elf32_Half vd_cnt; | |
152 | Elf32_Word vd_hash; | |
153 | Elf32_Word vd_aux; | |
154 | Elf32_Word vd_next; | |
155 | } | |
156 | ||
157 | struct Elf32_Verdaux | |
158 | { | |
159 | Elf32_Word vda_name; | |
160 | Elf32_Word vda_next; | |
161 | } | |
162 | ||
163 | struct Elf32_Verneed | |
164 | { | |
165 | Elf32_Half vn_version; | |
166 | Elf32_Half vn_cnt; | |
167 | Elf32_Word vn_file; | |
168 | Elf32_Word vn_aux; | |
169 | Elf32_Word vn_next; | |
170 | } | |
171 | ||
172 | struct Elf32_Vernaux | |
173 | { | |
174 | Elf32_Word vna_hash; | |
175 | Elf32_Half vna_flags; | |
176 | Elf32_Half vna_other; | |
177 | Elf32_Word vna_name; | |
178 | Elf32_Word vna_next; | |
179 | } | |
180 | ||
181 | alias Elf32_Half Elf32_Versym; | |
182 | ||
183 | struct Elf32_Syminfo | |
184 | { | |
185 | Elf32_Half si_boundto; | |
186 | Elf32_Half si_flags; | |
187 | } |