2 * D header file for DragonFlyBSD.
4 * Authors: Diederik de Groot(port:DragonFlyBSD)
5 * Copied: From core/sys/freebsd/sys
7 module core.sys.dragonflybsd.sys.elf_common;
9 version (DragonFlyBSD):
13 import core.stdc.stdint;
22 struct Elf_GNU_Hash_Header
26 uint32_t gh_maskwords;
38 enum EI_ABIVERSION = 8;
39 enum OLD_EI_BRAND = 8;
47 enum ELFMAG = "\177ELF";
53 enum ELFCLASSNONE = 0;
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;
83 enum ELFOSABI_DRAGONFLYBSD = ELFOSABI_NONE;
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; }
98 enum ET_LOOS = 0xfe00;
99 enum ET_HIOS = 0xfeff;
100 enum ET_LOPROC = 0xff00;
101 enum ET_HIPROC = 0xffff;
112 enum EM_MIPS_RS3_LE = 10;
115 enum EM_SPARC32PLUS = 18;
126 enum EM_SPARCV9 = 43;
127 enum EM_TRICORE = 44;
130 enum EM_H8_300H = 47;
135 enum EM_COLDFIRE = 52;
141 enum EM_STARCORE = 58;
149 enum EM_ST9PLUS = 67;
159 enum EM_JAVELIN = 77;
160 enum EM_FIREPATH = 78;
171 enum EM_MN10300 = 89;
172 enum EM_MN10200 = 90;
174 enum EM_OPENRISC = 92;
177 enum EM_VIDEOCORE = 95;
178 enum EM_TMM_GPP = 96;
186 enum EM_F2MC16 = 104;
187 enum EM_MSP430 = 105;
188 enum EM_BLACKFIN = 106;
189 enum EM_SE_C33 = 107;
192 enum EM_UNICORE = 110;
194 enum EM_ALTERA_NIOS2 =113;
199 enum EM_DSPIC30F = 118;
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;
214 enum EM_res133 = 133;
217 enum EM_SCORE7 = 135;
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;
245 enum EM_TRIMEDIA = 163;
248 enum EM_STXP7X = 166;
251 enum EM_ECOG1X = 168;
252 enum EM_MAXQ30 = 169;
253 enum EM_XIMO16 = 170;
255 enum EM_CRAYNV2 = 172;
258 enum EM_MCST_ELBRUS = 175;
259 enum EM_ECOG16 = 176;
265 enum EM_INTEL182 = 182;
266 enum EM_res183 = 183;
267 enum EM_res184 = 184;
270 enum EM_TILE64 = 187;
271 enum EM_TILEPRO = 188;
272 enum EM_MICROBLAZE = 189;
274 enum EM_TILEGX = 191;
277 enum EM_MIPS_RS4_BE = 10;
278 enum EM_ALPHA_STD = 41;
279 enum EM_ALPHA = 0x9026;
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;
300 enum PT_LOOS = 0x60000000;
301 enum PT_HIOS = 0x6fffffff;
302 enum PT_LOPROC = 0x70000000;
303 enum PT_HIPROC = 0x7fffffff;
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 */
313 enum PF_MASKOS = 0x0ff00000;
314 enum PF_MASKPROC = 0xf0000000;
316 enum PN_XNUM = 0xffff;
319 enum SHT_PROGBITS = 1;
324 enum SHT_DYNAMIC = 6;
329 enum SHT_DYNSYM = 11;
331 enum SHT_INIT_ARRAY = 14;
332 enum SHT_FINI_ARRAY = 15;
333 enum SHT_PREINIT_ARRAY = 16;
335 enum SHT_SYMTAB_SHNDX = 18;
337 enum SHT_LOOS = 0x60000000;
338 enum SHT_LOSUNW = 0x6ffffff4;
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;
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;
352 enum SHT_GNU_verdef = SHT_SUNW_verdef;
353 enum SHT_GNU_verneed = SHT_SUNW_verneed;
354 enum SHT_GNU_versym = SHT_SUNW_versym;
356 enum SHT_LOPROC = 0x70000000;
357 enum SHT_HIPROC = 0x7fffffff;
358 enum SHT_LOUSER = 0x80000000;
359 enum SHT_HIUSER = 0x8fffffff;
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;
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);
394 enum SHF_MASKOS = 0x0ff00000;
395 enum SHF_MASKPROC = 0xf0000000;
397 enum NT_PRSTATUS = 1;
398 enum NT_FPREGSET = 2;
399 enum NT_PRPSINFO = 3;
400 enum NT_TASKSTRUCT = 4;
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;
424 enum STB_LOPROC = 13;
425 enum STB_HIPROC = 15;
430 enum STT_SECTION = 3;
436 enum STT_GNU_IFUNC = 10;
438 enum STT_LOPROC = 13;
439 enum STT_HIPROC = 15;
441 enum STV_DEFAULT = 0;
442 enum STV_INTERNAL = 1;
444 enum STV_PROTECTED = 3;
446 enum STV_EXPORTED = 4;
447 enum STV_SINGLETON = 5;
448 enum STV_ELIMINATE = 6;
453 enum DT_PLTRELSZ = 2;
467 enum DT_SYMBOLIC = 16;
473 enum DT_TEXTREL = 22;
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;
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;
490 enum DT_SUNW_AUXILIARY = 0x6000000d;
491 enum DT_SUNW_RTLDINF = 0x6000000e;
492 enum DT_SUNW_FILTER = 0x6000000f;
493 enum DT_SUNW_CAP = 0x60000010;
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;
537 enum DTF_1_PARINIT = 0x00000001;
538 enum DTF_1_CONFEXP = 0x00000002;
540 enum DF_P1_LAZYLOAD = 0x00000001;
541 enum DF_P1_GROUPPERM= 0x00000002;
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;
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;
565 enum VER_DEF_NONE = 0;
566 enum VER_DEF_CURRENT = 1;
567 alias VER_NDX VER_DEF_IDX;
569 enum VER_FLG_BASE = 0x1;
570 enum VER_FLG_WEAK = 0x2;
571 enum VER_FLG_INFO = 0x4;
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
579 auto VER_NDX(V)(V v) { return v & ~(1u << 15); }
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;
589 enum CA_SUNW_NULL = 0;
590 enum CA_SUNW_HW_1 = 1;
591 enum CA_SUNW_SF_1 = 2;
594 enum VERSYM_HIDDEN = 0x8000;
595 enum VERSYM_VERSION = 0x7fff;
596 enum ELF_VER_CHR = '@';
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;
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;
613 enum SYMINFO_NONE = 0;
614 enum SYMINFO_CURRENT = 1;
615 enum SYMINFO_NUM = 2;
617 enum GRP_COMDAT = 0x1;
622 enum R_386_GOT32 = 3;
623 enum R_386_PLT32 = 4;
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;
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;