1 /**
2  * D header file for OpenBSD.
3  *
4  * Authors:  Iain Buclaw
5  * Based-on: core/sys/freebsd/sys
6  */
7 module core.sys.openbsd.sys.elf_common;
8 
9 version (OpenBSD):
10 
11 extern (C):
12 
13 import core.stdc.stdint;
14 
15 struct Elf_Note
16 {
17     uint32_t      n_namesz;
18     uint32_t      n_descsz;
19     uint32_t      n_type;
20 }
21 
22 struct Elf_GNU_Hash_Header
23 {
24     uint32_t      gh_nbuckets;
25     uint32_t      gh_symndx;
26     uint32_t      gh_maskwords;
27     uint32_t      gh_shift2;
28 }
29 
30 enum EI_MAG0 =         0;
31 enum EI_MAG1 =         1;
32 enum EI_MAG2 =         2;
33 enum EI_MAG3 =         3;
34 enum EI_CLASS =        4;
35 enum EI_DATA =         5;
36 enum EI_VERSION =      6;
37 enum EI_OSABI =        7;
38 enum EI_ABIVERSION =   8;
39 enum OLD_EI_BRAND =    8;
40 enum EI_PAD =          9;
41 enum EI_NIDENT =       16;
42 
43 enum ELFMAG0 =         0x7f;
44 enum ELFMAG1 =         'E';
45 enum ELFMAG2 =         'L';
46 enum ELFMAG3 =         'F';
47 enum ELFMAG =          "\177ELF";
48 enum SELFMAG =         4;
49 
50 enum EV_NONE =         0;
51 enum EV_CURRENT =      1;
52 
53 enum ELFCLASSNONE =    0;
54 enum ELFCLASS32 =      1;
55 enum ELFCLASS64 =      2;
56 
57 enum ELFDATANONE =     0;
58 enum ELFDATA2LSB =     1;
59 enum ELFDATA2MSB =     2;
60 
61 enum ELFOSABI_NONE =           0;
62 enum ELFOSABI_SYSV =           0;
63 enum ELFOSABI_HPUX =           1;
64 enum ELFOSABI_NETBSD =         2;
65 enum ELFOSABI_LINUX =          3;
66 enum ELFOSABI_HURD  =          4;
67 enum ELFOSABI_86OPEN =         5;
68 enum ELFOSABI_SOLARIS =        6;
69 enum ELFOSABI_AIX =            7;
70 enum ELFOSABI_MONTEREY =       7;
71 enum ELFOSABI_IRIX =           8;
72 enum ELFOSABI_FREEBSD =        9;
73 enum ELFOSABI_TRU64 =          10;
74 enum ELFOSABI_MODESTO =        11;
75 enum ELFOSABI_OPENBSD =        12;
76 enum ELFOSABI_OPENVMS =        13;
77 enum ELFOSABI_NSK =            14;
78 enum ELFOSABI_AROS =           15;
79 enum ELFOSABI_ARM =            97;
80 enum ELFOSABI_STANDALONE =     255;
81 
82 // just a pointer
83 enum ELFOSABI_DRAGONFLYBSD =   ELFOSABI_NONE;
84 
85 extern (D) pure @safe
86 {
IS_ELF(T)87     auto IS_ELF(T)(T ehdr) { return ehdr.e_ident[EI_MAG0] == ELFMAG0 &&
88                                     ehdr.e_ident[EI_MAG1] == ELFMAG1 &&
89                                     ehdr.e_ident[EI_MAG2] == ELFMAG2 &&
90                                     ehdr.e_ident[EI_MAG3] == ELFMAG3; }
91 }
92 
93 enum ET_NONE =         0;
94 enum ET_REL =          1;
95 enum ET_EXEC =         2;
96 enum ET_DYN =          3;
97 enum ET_CORE =         4;
98 enum ET_LOOS =         0xfe00;
99 enum ET_HIOS =         0xfeff;
100 enum ET_LOPROC =       0xff00;
101 enum ET_HIPROC =       0xffff;
102 
103 enum EM_NONE =          0;
104 enum EM_M32 =           1;
105 enum EM_SPARC =         2;
106 enum EM_386 =           3;
107 enum EM_68K =           4;
108 enum EM_88K =           5;
109 enum EM_860 =           7;
110 enum EM_MIPS =          8;
111 enum EM_S370 =          9;
112 enum EM_MIPS_RS3_LE =  10;
113 enum EM_PARISC =       15;
114 enum EM_VPP500 =       17;
115 enum EM_SPARC32PLUS =  18;
116 enum EM_960 =          19;
117 enum EM_PPC =          20;
118 enum EM_PPC64 =        21;
119 enum EM_S390 =         22;
120 enum EM_V800 =         36;
121 enum EM_FR20 =         37;
122 enum EM_RH32 =         38;
123 enum EM_RCE =          39;
124 enum EM_ARM =          40;
125 enum EM_SH =           42;
126 enum EM_SPARCV9 =      43;
127 enum EM_TRICORE =      44;
128 enum EM_ARC =          45;
129 enum EM_H8_300 =       46;
130 enum EM_H8_300H =      47;
131 enum EM_H8S =          48;
132 enum EM_H8_500 =       49;
133 enum EM_IA_64 =        50;
134 enum EM_MIPS_X =       51;
135 enum EM_COLDFIRE =     52;
136 enum EM_68HC12 =       53;
137 enum EM_MMA =          54;
138 enum EM_PCP =          55;
139 enum EM_NCPU =         56;
140 enum EM_NDR1 =         57;
141 enum EM_STARCORE =     58;
142 enum EM_ME16 =         59;
143 enum EM_ST100 =        60;
144 enum EM_TINYJ =        61;
145 enum EM_X86_64 =       62;
146 enum EM_AMD64 =        62;
147 enum EM_PDSP =         63;
148 enum EM_FX66 =         66;
149 enum EM_ST9PLUS =      67;
150 enum EM_ST7 =          68;
151 enum EM_68HC16 =       69;
152 enum EM_68HC11 =       70;
153 enum EM_68HC08 =       71;
154 enum EM_68HC05 =       72;
155 enum EM_SVX =          73;
156 enum EM_ST19 =         74;
157 enum EM_VAX =          75;
158 enum EM_CRIS =         76;
159 enum EM_JAVELIN =      77;
160 enum EM_FIREPATH =     78;
161 enum EM_ZSP =          79;
162 enum EM_MMIX =         80;
163 enum EM_HUANY =        81;
164 enum EM_PRISM =        82;
165 enum EM_AVR =          83;
166 enum EM_FR30 =         84;
167 enum EM_D10V =         85;
168 enum EM_D30V =         86;
169 enum EM_V850 =         87;
170 enum EM_M32R =         88;
171 enum EM_MN10300 =      89;
172 enum EM_MN10200 =      90;
173 enum EM_PJ =           91;
174 enum EM_OPENRISC =     92;
175 enum EM_ARC_A5 =       93;
176 enum EM_XTENSA =       94;
177 enum EM_VIDEOCORE =    95;
178 enum EM_TMM_GPP =      96;
179 enum EM_NS32K =        97;
180 enum EM_TPC =          98;
181 enum EM_SNP1K =        99;
182 enum EM_ST200 =       100;
183 enum EM_IP2K =        101;
184 enum EM_MAX =         102;
185 enum EM_CR =          103;
186 enum EM_F2MC16 =      104;
187 enum EM_MSP430 =      105;
188 enum EM_BLACKFIN =    106;
189 enum EM_SE_C33 =      107;
190 enum EM_SEP =         108;
191 enum EM_ARCA =        109;
192 enum EM_UNICORE =     110;
193 enum EM_DXP =         112;
194 enum EM_ALTERA_NIOS2 =113;
195 enum EM_CRX =         114;
196 enum EM_XGATE =       115;
197 enum EM_C166  =       116;
198 enum EM_M16C  =       117;
199 enum EM_DSPIC30F =    118;
200 enum EM_CE =          119;
201 enum EM_M32C  =       120;
202 enum EM_res121 =      121;
203 enum EM_res122 =      122;
204 enum EM_res123 =      123;
205 enum EM_res124 =      124;
206 enum EM_res125 =      125;
207 enum EM_res126 =      126;
208 enum EM_res127 =      127;
209 enum EM_res128 =      128;
210 enum EM_res129 =      129;
211 enum EM_res130 =      130;
212 enum EM_TSK3000 =     131;
213 enum EM_RS08  =       132;
214 enum EM_res133 =      133;
215 enum EM_ECOG2 =       134;
216 enum EM_SCORE =       135;
217 enum EM_SCORE7 =      135;
218 enum EM_DSP24 =       136;
219 enum EM_VIDEOCORE3 =  137;
220 enum EM_LATTICEMICO32 = 138;
221 enum EM_SE_C17 =      139;
222 enum EM_TI_C6000 =    140;
223 enum EM_TI_C2000 =    141;
224 enum EM_TI_C5500 =    142;
225 enum EM_res143 =      143;
226 enum EM_res144 =      144;
227 enum EM_res145 =      145;
228 enum EM_res146 =      146;
229 enum EM_res147 =      147;
230 enum EM_res148 =      148;
231 enum EM_res149 =      149;
232 enum EM_res150 =      150;
233 enum EM_res151 =      151;
234 enum EM_res152 =      152;
235 enum EM_res153 =      153;
236 enum EM_res154 =      154;
237 enum EM_res155 =      155;
238 enum EM_res156 =      156;
239 enum EM_res157 =      157;
240 enum EM_res158 =      158;
241 enum EM_res159 =      159;
242 enum EM_MMDSP_PLUS =  160;
243 enum EM_CYPRESS_M8C = 161;
244 enum EM_R32C  =       162;
245 enum EM_TRIMEDIA =    163;
246 enum EM_QDSP6 =       164;
247 enum EM_8051  =       165;
248 enum EM_STXP7X =      166;
249 enum EM_NDS32 =       167;
250 enum EM_ECOG1 =       168;
251 enum EM_ECOG1X =      168;
252 enum EM_MAXQ30 =      169;
253 enum EM_XIMO16 =      170;
254 enum EM_MANIK =       171;
255 enum EM_CRAYNV2 =     172;
256 enum EM_RX =          173;
257 enum EM_METAG =       174;
258 enum EM_MCST_ELBRUS = 175;
259 enum EM_ECOG16 =      176;
260 enum EM_CR16  =       177;
261 enum EM_ETPU  =       178;
262 enum EM_SLE9X =       179;
263 enum EM_L1OM  =       180;
264 enum EM_K1OM  =       181;
265 enum EM_INTEL182 =    182;
266 enum EM_res183 =      183;
267 enum EM_res184 =      184;
268 enum EM_AVR32 =       185;
269 enum EM_STM8  =       186;
270 enum EM_TILE64 =      187;
271 enum EM_TILEPRO =     188;
272 enum EM_MICROBLAZE =  189;
273 enum EM_CUDA  =       190;
274 enum EM_TILEGX =      191;
275 
276 enum EM_486 =           6;
277 enum EM_MIPS_RS4_BE =  10;
278 enum EM_ALPHA_STD =    41;
279 enum EM_ALPHA =    0x9026;
280 
281 enum SHN_UNDEF =       0;
282 enum SHN_LORESERVE =   0xff00;
283 enum SHN_LOPROC =      0xff00;
284 enum SHN_HIPROC =      0xff1f;
285 enum SHN_LOOS =        0xff20;
286 enum SHN_HIOS =        0xff3f;
287 enum SHN_ABS =         0xfff1;
288 enum SHN_COMMON =      0xfff2;
289 enum SHN_XINDEX =      0xffff;
290 enum SHN_HIRESERVE =   0xffff;
291 
292 enum PT_NULL =         0;
293 enum PT_LOAD =         1;
294 enum PT_DYNAMIC =      2;
295 enum PT_INTERP =       3;
296 enum PT_NOTE =         4;
297 enum PT_SHLIB =        5;
298 enum PT_PHDR =         6;
299 enum PT_TLS =          7;
300 enum PT_LOOS =         0x60000000;
301 enum PT_HIOS =         0x6fffffff;
302 enum PT_LOPROC =       0x70000000;
303 enum PT_HIPROC =       0x7fffffff;
304 
305 enum PT_GNU_EH_FRAME =  PT_LOOS + 0x474e550; /* Frame unwind information */
306 enum PT_SUNW_EH_FRAME = PT_GNU_EH_FRAME;     /* Solaris uses the same value */
307 enum PT_GNU_STACK =     PT_LOOS + 0x474e551; /* Stack flags */
308 enum PT_GNU_RELRO =     PT_LOOS + 0x474e552;  /* Read-only after relocation */
309 
310 enum PF_X =            0x1;
311 enum PF_W =            0x2;
312 enum PF_R =            0x4;
313 enum PF_MASKOS =       0x0ff00000;
314 enum PF_MASKPROC =     0xf0000000;
315 
316 enum PN_XNUM =         0xffff;
317 
318 enum SHT_NULL =          0;
319 enum SHT_PROGBITS =      1;
320 enum SHT_SYMTAB =        2;
321 enum SHT_STRTAB =        3;
322 enum SHT_RELA =          4;
323 enum SHT_HASH =          5;
324 enum SHT_DYNAMIC =       6;
325 enum SHT_NOTE =          7;
326 enum SHT_NOBITS =        8;
327 enum SHT_REL =           9;
328 enum SHT_SHLIB =         10;
329 enum SHT_DYNSYM =        11;
330 
331 enum SHT_INIT_ARRAY =    14;
332 enum SHT_FINI_ARRAY =    15;
333 enum SHT_PREINIT_ARRAY = 16;
334 enum SHT_GROUP =         17;
335 enum SHT_SYMTAB_SHNDX =  18;
336 
337 enum SHT_LOOS =          0x60000000;
338 enum SHT_LOSUNW =        0x6ffffff4;
339 
340 enum SHT_GNU_INCREMENTAL_INPUTS =  0x6fff4700;
341 enum SHT_GNU_ATTRIBUTES =       0x6ffffff5;
342 enum SHT_GNU_HASH =             0x6ffffff6;
343 enum SHT_GNU_LIBLIST =          0x6ffffff7;
344 
345 //enum SHT_SUNW_dof =      0x6ffffff4;
346 //enum SHT_SUNW_cap =      0x6ffffff5;
347 //enum SHT_SUNW_SIGNATURE = 0x6ffffff6;
348 enum SHT_SUNW_verdef =   0x6ffffffd;
349 enum SHT_SUNW_verneed =  0x6ffffffe;
350 enum SHT_SUNW_versym =   0x6fffffff;
351 
352 enum SHT_GNU_verdef =    SHT_SUNW_verdef;
353 enum SHT_GNU_verneed =   SHT_SUNW_verneed;
354 enum SHT_GNU_versym =    SHT_SUNW_versym;
355 
356 enum SHT_LOPROC =        0x70000000;
357 enum SHT_HIPROC =        0x7fffffff;
358 enum SHT_LOUSER =        0x80000000;
359 enum SHT_HIUSER =        0x8fffffff;
360 
361 /*
362 enum SHT_GNU_HASH =      0x6ffffff6;
363 enum SHT_SUNW_ANNOTATE = 0x6ffffff7;
364 enum SHT_SUNW_DEBUGSTR = 0x6ffffff8;
365 enum SHT_SUNW_DEBUG =    0x6ffffff9;
366 enum SHT_SUNW_move =     0x6ffffffa;
367 enum SHT_SUNW_COMDAT =   0x6ffffffb;
368 enum SHT_SUNW_syminfo =  0x6ffffffc;
369 enum SHT_HISUNW =        0x6fffffff;
370 enum SHT_HIOS =          0x6fffffff;
371 enum SHT_AMD64_UNWIND =  0x70000001;
372 enum SHT_ARM_EXIDX =     0x70000001;
373 enum SHT_ARM_PREEMPTMAP = 0x70000002;
374 enum SHT_ARM_ATTRIBUTES = 0x70000003;
375 enum SHT_ARM_DEBUGOVERLAY = 0x70000004;
376 enum SHT_ARM_OVERLAYSECTION = 0x70000005;
377 enum SHT_MIPS_REGINFO =  0x70000006;
378 enum SHT_MIPS_OPTIONS =  0x7000000d;
379 enum SHT_MIPS_DWARF =    0x7000001e;
380 */
381 
382 enum SHF_WRITE =            (1 << 0);
383 enum SHF_ALLOC =            (1 << 1);
384 enum SHF_EXECINSTR =        (1 << 2);
385 enum SHF_MERGE =            (1 << 4);
386 enum SHF_STRINGS =          (1 << 5);
387 enum SHF_INFO_LINK =        (1 << 6);
388 enum SHF_LINK_ORDER =       (1 << 7);
389 enum SHF_OS_NONCONFORMING = (1 << 8);
390 enum SHF_GROUP =            (1 << 9);
391 enum SHF_TLS =              (1 << 10);
392 enum SHF_COMPRESSED =       (1 << 11);
393 
394 enum SHF_MASKOS =           0x0ff00000;
395 enum SHF_MASKPROC =         0xf0000000;
396 
397 enum NT_PRSTATUS =     1;
398 enum NT_FPREGSET =     2;
399 enum NT_PRPSINFO =     3;
400 enum NT_TASKSTRUCT =   4;
401 enum NT_AUXV =         6;
402 
403 /*
404 enum NT_THRMISC =      7;
405 enum NT_PROCSTAT_PROC = 8;
406 enum NT_PROCSTAT_FILES = 9;
407 enum NT_PROCSTAT_VMMAP = 10;
408 enum NT_PROCSTAT_GROUPS = 11;
409 enum NT_PROCSTAT_UMASK = 12;
410 enum NT_PROCSTAT_RLIMIT = 13;
411 enum NT_PROCSTAT_OSREL = 14;
412 enum NT_PROCSTAT_PSSTRINGS = 15;
413 enum NT_PROCSTAT_AUXV = 16;
414 */
415 
416 enum STN_UNDEF =       0;
417 
418 enum STB_LOCAL =       0;
419 enum STB_GLOBAL =      1;
420 enum STB_WEAK =        2;
421 enum STB_NUM =         3;
422 enum STB_LOOS =        10;
423 enum STB_HIOS =        12;
424 enum STB_LOPROC =      13;
425 enum STB_HIPROC =      15;
426 
427 enum STT_NOTYPE =      0;
428 enum STT_OBJECT =      1;
429 enum STT_FUNC =        2;
430 enum STT_SECTION =     3;
431 enum STT_FILE =        4;
432 enum STT_COMMON =      5;
433 enum STT_TLS =         6;
434 enum STT_NUM =         7;
435 enum STT_LOOS =        10;
436 enum STT_GNU_IFUNC =   10;
437 enum STT_HIOS =        12;
438 enum STT_LOPROC =      13;
439 enum STT_HIPROC =      15;
440 
441 enum STV_DEFAULT =     0;
442 enum STV_INTERNAL =    1;
443 enum STV_HIDDEN =      2;
444 enum STV_PROTECTED =   3;
445 /*
446 enum STV_EXPORTED =    4;
447 enum STV_SINGLETON =   5;
448 enum STV_ELIMINATE =   6;
449 */
450 
451 enum DT_NULL =         0;
452 enum DT_NEEDED =       1;
453 enum DT_PLTRELSZ =     2;
454 enum DT_PLTGOT =       3;
455 enum DT_HASH =         4;
456 enum DT_STRTAB =       5;
457 enum DT_SYMTAB =       6;
458 enum DT_RELA =         7;
459 enum DT_RELASZ =       8;
460 enum DT_RELAENT =      9;
461 enum DT_STRSZ =        10;
462 enum DT_SYMENT =       11;
463 enum DT_INIT =         12;
464 enum DT_FINI =         13;
465 enum DT_SONAME =       14;
466 enum DT_RPATH =        15;
467 enum DT_SYMBOLIC =     16;
468 enum DT_REL =          17;
469 enum DT_RELSZ =        18;
470 enum DT_RELENT =       19;
471 enum DT_PLTREL =       20;
472 enum DT_DEBUG =        21;
473 enum DT_TEXTREL =      22;
474 enum DT_JMPREL =       23;
475 enum DT_BIND_NOW =     24;
476 enum DT_INIT_ARRAY =   25;
477 enum DT_FINI_ARRAY =   26;
478 enum DT_INIT_ARRAYSZ = 27;
479 enum DT_FINI_ARRAYSZ = 28;
480 enum DT_RUNPATH =      29;
481 enum DT_FLAGS =        30;
482 
483 enum DT_ENCODING =     32;
484 enum DT_PREINIT_ARRAY = 32;
485 enum DT_PREINIT_ARRAYSZ = 33;
486 //enum DT_MAXPOSTAGS =   34;
487 enum DT_LOOS =         0x6000000d;
488 enum DT_HIOS =         0x6ffff000;
489 /*
490 enum DT_SUNW_AUXILIARY = 0x6000000d;
491 enum DT_SUNW_RTLDINF = 0x6000000e;
492 enum DT_SUNW_FILTER =  0x6000000f;
493 enum DT_SUNW_CAP =     0x60000010;
494 */
495 
496 enum DT_VALRNGLO =     0x6ffffd00;
497 enum DT_GNU_PRELINKED = 0x6ffffdf5;
498 enum DT_GNU_CONFLICTSZ =0x6ffffdf6;
499 enum DT_GNU_LIBLISTSZ = 0x6ffffdf7;
500 enum DT_CHECKSUM =     0x6ffffdf8;
501 enum DT_PLTPADSZ =     0x6ffffdf9;
502 enum DT_MOVEENT =      0x6ffffdfa;
503 enum DT_MOVESZ =       0x6ffffdfb;
504 enum DT_FEATURE_1 =    0x6ffffdfc;
505 enum DT_POSFLAG_1 =    0x6ffffdfd;
506 enum DT_SYMINSZ =      0x6ffffdfe;
507 enum DT_SYMINENT =     0x6ffffdff;
508 enum DT_VALRNGHI =     0x6ffffdff;
509 enum DT_ADDRRNGLO =    0x6ffffe00;
510 enum DT_GNU_HASH =     0x6ffffef5;
511 enum DT_TLSDESC_PLT =  0x6ffffef6;
512 enum DT_TLSDESC_GOT =  0x6ffffef7;
513 enum DT_GNU_CONFLICT = 0x6ffffef8;
514 enum DT_GNU_LIBLIST =  0x6ffffef9;
515 enum DT_CONFIG =       0x6ffffefa;
516 enum DT_DEPAUDIT =     0x6ffffefb;
517 enum DT_AUDIT =        0x6ffffefc;
518 enum DT_PLTPAD =       0x6ffffefd;
519 enum DT_MOVETAB =      0x6ffffefe;
520 enum DT_SYMINFO =      0x6ffffeff;
521 enum DT_ADDRRNGHI =    0x6ffffeff;
522 enum DT_RELACOUNT =    0x6ffffff9;
523 enum DT_RELCOUNT =     0x6ffffffa;
524 enum DT_FLAGS_1 =      0x6ffffffb;
525 enum DT_VERDEF =       0x6ffffffc;
526 enum DT_VERDEFNUM =    0x6ffffffd;
527 enum DT_VERNEED =      0x6ffffffe;
528 enum DT_VERNEEDNUM =   0x6fffffff;
529 enum DT_VERSYM =       0x6ffffff0;
530 enum DT_LOPROC =       0x70000000;
531 //enum DT_DEPRECATED_SPARC_REGISTER = 0x7000001;
532 enum DT_AUXILIARY =    0x7ffffffd;
533 enum DT_USED =         0x7ffffffe;
534 enum DT_FILTER =       0x7fffffff;
535 enum DT_HIPROC =       0x7fffffff;
536 
537 enum DTF_1_PARINIT =   0x00000001;
538 enum DTF_1_CONFEXP =   0x00000002;
539 
540 enum DF_P1_LAZYLOAD =  0x00000001;
541 enum DF_P1_GROUPPERM=  0x00000002;
542 
543 enum DF_1_NOW =        0x00000001;
544 enum DF_1_BIND_NOW =   0x00000001;
545 enum DF_1_GLOBAL =     0x00000002;
546 enum DF_1_GROUP =      0x00000004;
547 enum DF_1_NODELETE =   0x00000008;
548 enum DF_1_LOADFLTR =   0x00000010;
549 enum DF_1_INITFIRST =  0x00000020;
550 enum DF_1_NOOPEN =     0x00000040;
551 enum DF_1_ORIGIN =     0x00000080;
552 enum DF_1_DIRECT =     0x00000100;
553 enum DF_1_TRANS =      0x00000200;
554 enum DF_1_INTERPOSE =  0x00000400;
555 enum DF_1_NODEFLIB =   0x00000800;
556 enum DF_1_NODUMP =     0x00001000;
557 enum DF_1_CONLFAT =    0x00002000;
558 
559 enum DF_ORIGIN =       0x00000001;
560 enum DF_SYMBOLIC =     0x00000002;
561 enum DF_TEXTREL =      0x00000004;
562 enum DF_BIND_NOW =     0x00000008;
563 enum DF_STATIC_TLS =   0x00000010;
564 
565 enum VER_DEF_NONE =    0;
566 enum VER_DEF_CURRENT = 1;
567 alias VER_NDX VER_DEF_IDX;
568 
569 enum VER_FLG_BASE =    0x1;
570 enum VER_FLG_WEAK =    0x2;
571 enum VER_FLG_INFO =    0x4;
572 
573 enum VER_NDX_LOCAL =           0;
574 enum VER_NDX_GLOBAL =          1;
575 enum VER_NDX_GIVEN =           2;
576 enum VER_NDX_HIDDEN =      32768;
577 extern (D) pure @safe
578 {
VER_NDX(V)579     auto VER_NDX(V)(V v) { return v & ~(1u << 15); }
580 }
581 
582 enum VER_NEED_NONE   = 0;
583 enum VER_NEED_CURRENT = 1;
584 enum VER_NEED_WEAK =    32768;
585 enum VER_NEED_HIDDEN = VER_NDX_HIDDEN;
586 alias VER_NDX VER_NEED_IDX;
587 
588 /*
589 enum CA_SUNW_NULL =    0;
590 enum CA_SUNW_HW_1 =    1;
591 enum CA_SUNW_SF_1 =    2;
592 */
593 
594 enum VERSYM_HIDDEN =   0x8000;
595 enum VERSYM_VERSION =  0x7fff;
596 enum ELF_VER_CHR =     '@';
597 
598 enum SYMINFO_BT_SELF =         0xffff;
599 enum SYMINFO_BT_PARENT =       0xfffe;
600 //enum SYMINFO_BT_NONE =         0xfffd;
601 //enum SYMINFO_BT_EXTERN =       0xfffc;
602 enum SYMINFO_BT_LOWRESERVE =   0xff00;
603 
604 enum SYMINFO_FLG_DIRECT =      0x0001;
605 enum SYMINFO_FLG_PASSTHRU =    0x0002;
606 enum SYMINFO_FLG_COPY =        0x0004;
607 enum SYMINFO_FLG_LAZYLOAD =    0x0008;
608 //enum SYMINFO_FLG_DIRECTBIND =  0x0010;
609 //enum SYMINFO_FLG_NOEXTDIRECT = 0x0020;
610 //enum SYMINFO_FLG_FILTER =      0x0002;
611 //enum SYMINFO_FLG_AUXILIARY =   0x0040;
612 
613 enum SYMINFO_NONE =            0;
614 enum SYMINFO_CURRENT =         1;
615 enum SYMINFO_NUM =             2;
616 
617 enum GRP_COMDAT =              0x1;
618 
619 enum R_386_NONE =               0;
620 enum R_386_32 =                 1;
621 enum R_386_PC32 =               2;
622 enum R_386_GOT32 =              3;
623 enum R_386_PLT32 =              4;
624 enum R_386_COPY =               5;
625 enum R_386_GLOB_DAT =           6;
626 enum R_386_JMP_SLOT =           7;
627 enum R_386_RELATIVE =           8;
628 enum R_386_GOTOFF =             9;
629 enum R_386_GOTPC =              10;
630 enum R_386_TLS_TPOFF =          14;
631 enum R_386_TLS_IE =             15;
632 enum R_386_TLS_GOTIE =          16;
633 enum R_386_TLS_LE =             17;
634 enum R_386_TLS_GD =             18;
635 enum R_386_TLS_LDM =            19;
636 enum R_386_TLS_GD_32 =          24;
637 enum R_386_TLS_GD_PUSH =        25;
638 enum R_386_TLS_GD_CALL =        26;
639 enum R_386_TLS_GD_POP =         27;
640 enum R_386_TLS_LDM_32 =         28;
641 enum R_386_TLS_LDM_PUSH =       29;
642 enum R_386_TLS_LDM_CALL =       30;
643 enum R_386_TLS_LDM_POP =        31;
644 enum R_386_TLS_LDO_32 =         32;
645 enum R_386_TLS_IE_32 =          33;
646 enum R_386_TLS_LE_32 =          34;
647 enum R_386_TLS_DTPMOD32 =       35;
648 enum R_386_TLS_DTPOFF32 =       36;
649 enum R_386_TLS_TPOFF32 =        37;
650 enum R_386_IRELATIVE =          42;
651 
652 enum R_X86_64_NONE =            0;
653 enum R_X86_64_64 =              1;
654 enum R_X86_64_PC32 =            2;
655 enum R_X86_64_GOT32 =           3;
656 enum R_X86_64_PLT32 =           4;
657 enum R_X86_64_COPY =            5;
658 enum R_X86_64_GLOB_DAT =        6;
659 enum R_X86_64_JMP_SLOT =        7;
660 enum R_X86_64_RELATIVE =        8;
661 enum R_X86_64_GOTPCREL =        9;
662 enum R_X86_64_32 =              10;
663 enum R_X86_64_32S =             11;
664 enum R_X86_64_16 =              12;
665 enum R_X86_64_PC16 =            13;
666 enum R_X86_64_8 =               14;
667 enum R_X86_64_PC8 =             15;
668 enum R_X86_64_DTPMOD64 =        16;
669 enum R_X86_64_DTPOFF64 =        17;
670 enum R_X86_64_TPOFF64 =         18;
671 enum R_X86_64_TLSGD =           19;
672 enum R_X86_64_TLSLD =           20;
673 enum R_X86_64_DTPOFF32 =        21;
674 enum R_X86_64_GOTTPOFF =        22;
675 enum R_X86_64_TPOFF32 =         23;
676 enum R_X86_64_IRELATIVE =       37;
677