1 /** 2 * D header file for FreeBSD. 3 * 4 * $(LINK2 http://svnweb.freebsd.org/base/head/sys/sys/elf_common.h?view=markup, sys/elf_common.h) 5 */ 6 module core.sys.freebsd.sys.elf_common; 7 8 version (FreeBSD): 9 extern (C): 10 pure: 11 nothrow: 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 extern (D) 83 { IS_ELF(T)84 auto IS_ELF(T)(T ehdr) { return ehdr.e_ident[EI_MAG0] == ELFMAG0 && 85 ehdr.e_ident[EI_MAG1] == ELFMAG1 && 86 ehdr.e_ident[EI_MAG2] == ELFMAG2 && 87 ehdr.e_ident[EI_MAG3] == ELFMAG3; } 88 } 89 90 enum ET_NONE = 0; 91 enum ET_REL = 1; 92 enum ET_EXEC = 2; 93 enum ET_DYN = 3; 94 enum ET_CORE = 4; 95 enum ET_LOOS = 0xfe00; 96 enum ET_HIOS = 0xfeff; 97 enum ET_LOPROC = 0xff00; 98 enum ET_HIPROC = 0xffff; 99 100 enum EM_NONE = 0; 101 enum EM_M32 = 1; 102 enum EM_SPARC = 2; 103 enum EM_386 = 3; 104 enum EM_68K = 4; 105 enum EM_88K = 5; 106 enum EM_860 = 7; 107 enum EM_MIPS = 8; 108 enum EM_S370 = 9; 109 enum EM_MIPS_RS3_LE = 10; 110 enum EM_PARISC = 15; 111 enum EM_VPP500 = 17; 112 enum EM_SPARC32PLUS = 18; 113 enum EM_960 = 19; 114 enum EM_PPC = 20; 115 enum EM_PPC64 = 21; 116 enum EM_S390 = 22; 117 enum EM_V800 = 36; 118 enum EM_FR20 = 37; 119 enum EM_RH32 = 38; 120 enum EM_RCE = 39; 121 enum EM_ARM = 40; 122 enum EM_SH = 42; 123 enum EM_SPARCV9 = 43; 124 enum EM_TRICORE = 44; 125 enum EM_ARC = 45; 126 enum EM_H8_300 = 46; 127 enum EM_H8_300H = 47; 128 enum EM_H8S = 48; 129 enum EM_H8_500 = 49; 130 enum EM_IA_64 = 50; 131 enum EM_MIPS_X = 51; 132 enum EM_COLDFIRE = 52; 133 enum EM_68HC12 = 53; 134 enum EM_MMA = 54; 135 enum EM_PCP = 55; 136 enum EM_NCPU = 56; 137 enum EM_NDR1 = 57; 138 enum EM_STARCORE = 58; 139 enum EM_ME16 = 59; 140 enum EM_ST100 = 60; 141 enum EM_TINYJ = 61; 142 enum EM_X86_64 = 62; 143 enum EM_AMD64 = 62; 144 enum EM_PDSP = 63; 145 enum EM_FX66 = 66; 146 enum EM_ST9PLUS = 67; 147 enum EM_ST7 = 68; 148 enum EM_68HC16 = 69; 149 enum EM_68HC11 = 70; 150 enum EM_68HC08 = 71; 151 enum EM_68HC05 = 72; 152 enum EM_SVX = 73; 153 enum EM_ST19 = 74; 154 enum EM_VAX = 75; 155 enum EM_CRIS = 76; 156 enum EM_JAVELIN = 77; 157 enum EM_FIREPATH = 78; 158 enum EM_ZSP = 79; 159 enum EM_MMIX = 80; 160 enum EM_HUANY = 81; 161 enum EM_PRISM = 82; 162 enum EM_AVR = 83; 163 enum EM_FR30 = 84; 164 enum EM_D10V = 85; 165 enum EM_D30V = 86; 166 enum EM_V850 = 87; 167 enum EM_M32R = 88; 168 enum EM_MN10300 = 89; 169 enum EM_MN10200 = 90; 170 enum EM_PJ = 91; 171 enum EM_OPENRISC = 92; 172 enum EM_ARC_A5 = 93; 173 enum EM_XTENSA = 94; 174 enum EM_VIDEOCORE = 95; 175 enum EM_TMM_GPP = 96; 176 enum EM_NS32K = 97; 177 enum EM_TPC = 98; 178 enum EM_SNP1K = 99; 179 enum EM_ST200 = 100; 180 enum EM_IP2K = 101; 181 enum EM_MAX = 102; 182 enum EM_CR = 103; 183 enum EM_F2MC16 = 104; 184 enum EM_MSP430 = 105; 185 enum EM_BLACKFIN = 106; 186 enum EM_SE_C33 = 107; 187 enum EM_SEP = 108; 188 enum EM_ARCA = 109; 189 enum EM_UNICORE = 110; 190 191 enum EM_486 = 6; 192 enum EM_MIPS_RS4_BE = 10; 193 enum EM_ALPHA_STD = 41; 194 enum EM_ALPHA = 0x9026; 195 196 enum SHN_UNDEF = 0; 197 enum SHN_LORESERVE = 0xff00; 198 enum SHN_LOPROC = 0xff00; 199 enum SHN_HIPROC = 0xff1f; 200 enum SHN_LOOS = 0xff20; 201 enum SHN_HIOS = 0xff3f; 202 enum SHN_ABS = 0xfff1; 203 enum SHN_COMMON = 0xfff2; 204 enum SHN_XINDEX = 0xffff; 205 enum SHN_HIRESERVE = 0xffff; 206 207 enum SHT_NULL = 0; 208 enum SHT_PROGBITS = 1; 209 enum SHT_SYMTAB = 2; 210 enum SHT_STRTAB = 3; 211 enum SHT_RELA = 4; 212 enum SHT_HASH = 5; 213 enum SHT_DYNAMIC = 6; 214 enum SHT_NOTE = 7; 215 enum SHT_NOBITS = 8; 216 enum SHT_REL = 9; 217 enum SHT_SHLIB = 10; 218 enum SHT_DYNSYM = 11; 219 enum SHT_INIT_ARRAY = 14; 220 enum SHT_FINI_ARRAY = 15; 221 enum SHT_PREINIT_ARRAY = 16; 222 enum SHT_GROUP = 17; 223 enum SHT_SYMTAB_SHNDX = 18; 224 enum SHT_LOOS = 0x60000000; 225 enum SHT_LOSUNW = 0x6ffffff4; 226 enum SHT_SUNW_dof = 0x6ffffff4; 227 enum SHT_SUNW_cap = 0x6ffffff5; 228 enum SHT_SUNW_SIGNATURE = 0x6ffffff6; 229 enum SHT_GNU_HASH = 0x6ffffff6; 230 enum SHT_SUNW_ANNOTATE = 0x6ffffff7; 231 enum SHT_SUNW_DEBUGSTR = 0x6ffffff8; 232 enum SHT_SUNW_DEBUG = 0x6ffffff9; 233 enum SHT_SUNW_move = 0x6ffffffa; 234 enum SHT_SUNW_COMDAT = 0x6ffffffb; 235 enum SHT_SUNW_syminfo = 0x6ffffffc; 236 enum SHT_SUNW_verdef = 0x6ffffffd; 237 enum SHT_GNU_verdef = 0x6ffffffd; 238 enum SHT_SUNW_verneed = 0x6ffffffe; 239 enum SHT_GNU_verneed = 0x6ffffffe; 240 enum SHT_SUNW_versym = 0x6fffffff; 241 enum SHT_GNU_versym = 0x6fffffff; 242 enum SHT_HISUNW = 0x6fffffff; 243 enum SHT_HIOS = 0x6fffffff; 244 enum SHT_LOPROC = 0x70000000; 245 enum SHT_AMD64_UNWIND = 0x70000001; 246 enum SHT_ARM_EXIDX = 0x70000001; 247 enum SHT_ARM_PREEMPTMAP = 0x70000002; 248 enum SHT_ARM_ATTRIBUTES = 0x70000003; 249 enum SHT_ARM_DEBUGOVERLAY = 0x70000004; 250 enum SHT_ARM_OVERLAYSECTION = 0x70000005; 251 enum SHT_MIPS_REGINFO = 0x70000006; 252 enum SHT_MIPS_OPTIONS = 0x7000000d; 253 enum SHT_MIPS_DWARF = 0x7000001e; 254 enum SHT_HIPROC = 0x7fffffff; 255 enum SHT_LOUSER = 0x80000000; 256 enum SHT_HIUSER = 0x8fffffff; 257 258 enum SHF_WRITE = (1 << 0); 259 enum SHF_ALLOC = (1 << 1); 260 enum SHF_EXECINSTR = (1 << 2); 261 enum SHF_MERGE = (1 << 4); 262 enum SHF_STRINGS = (1 << 5); 263 enum SHF_INFO_LINK = (1 << 6); 264 enum SHF_LINK_ORDER = (1 << 7); 265 enum SHF_OS_NONCONFORMING = (1 << 8); 266 enum SHF_GROUP = (1 << 9); 267 enum SHF_TLS = (1 << 10); 268 enum SHF_COMPRESSED = (1 << 11); 269 enum SHF_MASKOS = 0x0ff00000; 270 enum SHF_MASKPROC = 0xf0000000; 271 272 enum PT_NULL = 0; 273 enum PT_LOAD = 1; 274 enum PT_DYNAMIC = 2; 275 enum PT_INTERP = 3; 276 enum PT_NOTE = 4; 277 enum PT_SHLIB = 5; 278 enum PT_PHDR = 6; 279 enum PT_TLS = 7; 280 enum PT_LOOS = 0x60000000; 281 enum PT_SUNW_UNWIND = 0x6464e550; 282 enum PT_GNU_EH_FRAME = 0x6474e550; 283 enum PT_GNU_STACK = 0x6474e551; 284 enum PT_GNU_RELRO = 0x6474e552; 285 enum PT_LOSUNW = 0x6ffffffa; 286 enum PT_SUNWBSS = 0x6ffffffa; 287 enum PT_SUNWSTACK = 0x6ffffffb; 288 enum PT_SUNWDTRACE = 0x6ffffffc; 289 enum PT_SUNWCAP = 0x6ffffffd; 290 enum PT_HISUNW = 0x6fffffff; 291 enum PT_HIOS = 0x6fffffff; 292 enum PT_LOPROC = 0x70000000; 293 enum PT_HIPROC = 0x7fffffff; 294 295 enum PF_X = (1 << 0); 296 enum PF_W = (1 << 1); 297 enum PF_R = (1 << 2); 298 enum PF_MASKOS = 0x0ff00000; 299 enum PF_MASKPROC = 0xf0000000; 300 301 enum PN_XNUM = 0xffff; 302 303 enum DT_NULL = 0; 304 enum DT_NEEDED = 1; 305 enum DT_PLTRELSZ = 2; 306 enum DT_PLTGOT = 3; 307 enum DT_HASH = 4; 308 enum DT_STRTAB = 5; 309 enum DT_SYMTAB = 6; 310 enum DT_RELA = 7; 311 enum DT_RELASZ = 8; 312 enum DT_RELAENT = 9; 313 enum DT_STRSZ = 10; 314 enum DT_SYMENT = 11; 315 enum DT_INIT = 12; 316 enum DT_FINI = 13; 317 enum DT_SONAME = 14; 318 enum DT_RPATH = 15; 319 enum DT_SYMBOLIC = 16; 320 enum DT_REL = 17; 321 enum DT_RELSZ = 18; 322 enum DT_RELENT = 19; 323 enum DT_PLTREL = 20; 324 enum DT_DEBUG = 21; 325 enum DT_TEXTREL = 22; 326 enum DT_JMPREL = 23; 327 enum DT_BIND_NOW = 24; 328 enum DT_INIT_ARRAY = 25; 329 enum DT_FINI_ARRAY = 26; 330 enum DT_INIT_ARRAYSZ = 27; 331 enum DT_FINI_ARRAYSZ = 28; 332 enum DT_RUNPATH = 29; 333 enum DT_FLAGS = 30; 334 enum DT_ENCODING = 32; 335 enum DT_PREINIT_ARRAY = 32; 336 enum DT_PREINIT_ARRAYSZ = 33; 337 enum DT_MAXPOSTAGS = 34; 338 enum DT_LOOS = 0x6000000d; 339 enum DT_SUNW_AUXILIARY = 0x6000000d; 340 enum DT_SUNW_RTLDINF = 0x6000000e; 341 enum DT_SUNW_FILTER = 0x6000000f; 342 enum DT_SUNW_CAP = 0x60000010; 343 enum DT_HIOS = 0x6ffff000; 344 enum DT_VALRNGLO = 0x6ffffd00; 345 enum DT_CHECKSUM = 0x6ffffdf8; 346 enum DT_PLTPADSZ = 0x6ffffdf9; 347 enum DT_MOVEENT = 0x6ffffdfa; 348 enum DT_MOVESZ = 0x6ffffdfb; 349 enum DT_FEATURE_1 = 0x6ffffdfc; 350 enum DT_POSFLAG_1 = 0x6ffffdfd; 351 enum DT_SYMINSZ = 0x6ffffdfe; 352 enum DT_SYMINENT = 0x6ffffdff; 353 enum DT_VALRNGHI = 0x6ffffdff; 354 enum DT_ADDRRNGLO = 0x6ffffe00; 355 enum DT_GNU_HASH = 0x6ffffef5; 356 enum DT_CONFIG = 0x6ffffefa; 357 enum DT_DEPAUDIT = 0x6ffffefb; 358 enum DT_AUDIT = 0x6ffffefc; 359 enum DT_PLTPAD = 0x6ffffefd; 360 enum DT_MOVETAB = 0x6ffffefe; 361 enum DT_SYMINFO = 0x6ffffeff; 362 enum DT_ADDRRNGHI = 0x6ffffeff; 363 enum DT_VERSYM = 0x6ffffff0; 364 enum DT_RELACOUNT = 0x6ffffff9; 365 enum DT_RELCOUNT = 0x6ffffffa; 366 enum DT_FLAGS_1 = 0x6ffffffb; 367 enum DT_VERDEF = 0x6ffffffc; 368 enum DT_VERDEFNUM = 0x6ffffffd; 369 enum DT_VERNEED = 0x6ffffffe; 370 enum DT_VERNEEDNUM = 0x6fffffff; 371 enum DT_LOPROC = 0x70000000; 372 enum DT_DEPRECATED_SPARC_REGISTER = 0x7000001; 373 enum DT_AUXILIARY = 0x7ffffffd; 374 enum DT_USED = 0x7ffffffe; 375 enum DT_FILTER = 0x7fffffff; 376 enum DT_HIPROC = 0x7fffffff; 377 378 enum DF_ORIGIN = 0x00000001; 379 enum DF_SYMBOLIC = 0x00000002; 380 enum DF_TEXTREL = 0x00000004; 381 enum DF_BIND_NOW = 0x00000008; 382 enum DF_STATIC_TLS = 0x00000010; 383 384 enum DF_1_BIND_NOW = 0x00000001; 385 enum DF_1_GLOBAL = 0x00000002; 386 enum DF_1_NODELETE = 0x00000008; 387 enum DF_1_LOADFLTR = 0x00000010; 388 enum DF_1_NOOPEN = 0x00000040; 389 enum DF_1_NODEFLIB = 0x00000800; 390 391 enum NT_PRSTATUS = 1; 392 enum NT_FPREGSET = 2; 393 enum NT_PRPSINFO = 3; 394 enum NT_THRMISC = 7; 395 enum NT_PROCSTAT_PROC = 8; 396 enum NT_PROCSTAT_FILES = 9; 397 enum NT_PROCSTAT_VMMAP = 10; 398 enum NT_PROCSTAT_GROUPS = 11; 399 enum NT_PROCSTAT_UMASK = 12; 400 enum NT_PROCSTAT_RLIMIT = 13; 401 enum NT_PROCSTAT_OSREL = 14; 402 enum NT_PROCSTAT_PSSTRINGS = 15; 403 enum NT_PROCSTAT_AUXV = 16; 404 405 enum STB_LOCAL = 0; 406 enum STB_GLOBAL = 1; 407 enum STB_WEAK = 2; 408 enum STB_NUM = 3; 409 enum STB_LOOS = 10; 410 enum STB_HIOS = 12; 411 enum STB_LOPROC = 13; 412 enum STB_HIPROC = 15; 413 414 enum STT_NOTYPE = 0; 415 enum STT_OBJECT = 1; 416 enum STT_FUNC = 2; 417 enum STT_SECTION = 3; 418 enum STT_FILE = 4; 419 enum STT_COMMON = 5; 420 enum STT_TLS = 6; 421 enum STT_NUM = 7; 422 enum STT_LOOS = 10; 423 enum STT_GNU_IFUNC = 10; 424 enum STT_HIOS = 12; 425 enum STT_LOPROC = 13; 426 enum STT_HIPROC = 15; 427 428 enum STV_DEFAULT = 0; 429 enum STV_INTERNAL = 1; 430 enum STV_HIDDEN = 2; 431 enum STV_PROTECTED = 3; 432 enum STV_EXPORTED = 4; 433 enum STV_SINGLETON = 5; 434 enum STV_ELIMINATE = 6; 435 436 enum STN_UNDEF = 0; 437 438 enum VER_DEF_CURRENT = 1; 439 alias VER_NDX VER_DEF_IDX; 440 441 enum VER_FLG_BASE = 0x1; 442 enum VER_FLG_WEAK = 0x2; 443 444 enum VER_NEED_CURRENT = 1; 445 enum VER_NEED_WEAK = 32768; 446 enum VER_NEED_HIDDEN = VER_NDX_HIDDEN; 447 alias VER_NDX VER_NEED_IDX; 448 449 enum VER_NDX_LOCAL = 0; 450 enum VER_NDX_GLOBAL = 1; 451 enum VER_NDX_GIVEN = 2; 452 453 enum VER_NDX_HIDDEN = 32768; 454 extern (D) 455 { VER_NDX(V)456 auto VER_NDX(V)(V v) { return v & ~(1u << 15); } 457 } 458 459 enum CA_SUNW_NULL = 0; 460 enum CA_SUNW_HW_1 = 1; 461 enum CA_SUNW_SF_1 = 2; 462 463 enum SYMINFO_FLG_DIRECT = 0x0001; 464 enum SYMINFO_FLG_PASSTHRU = 0x0002; 465 enum SYMINFO_FLG_COPY = 0x0004; 466 enum SYMINFO_FLG_LAZYLOAD = 0x0008; 467 enum SYMINFO_FLG_DIRECTBIND = 0x0010; 468 enum SYMINFO_FLG_NOEXTDIRECT = 0x0020; 469 enum SYMINFO_FLG_FILTER = 0x0002; 470 enum SYMINFO_FLG_AUXILIARY = 0x0040; 471 472 enum SYMINFO_BT_SELF = 0xffff; 473 enum SYMINFO_BT_PARENT = 0xfffe; 474 enum SYMINFO_BT_NONE = 0xfffd; 475 enum SYMINFO_BT_EXTERN = 0xfffc; 476 enum SYMINFO_BT_LOWRESERVE = 0xff00; 477 478 enum SYMINFO_NONE = 0; 479 enum SYMINFO_CURRENT = 1; 480 enum SYMINFO_NUM = 2; 481 482 enum R_386_NONE = 0; 483 enum R_386_32 = 1; 484 enum R_386_PC32 = 2; 485 enum R_386_GOT32 = 3; 486 enum R_386_PLT32 = 4; 487 enum R_386_COPY = 5; 488 enum R_386_GLOB_DAT = 6; 489 enum R_386_JMP_SLOT = 7; 490 enum R_386_RELATIVE = 8; 491 enum R_386_GOTOFF = 9; 492 enum R_386_GOTPC = 10; 493 enum R_386_TLS_TPOFF = 14; 494 enum R_386_TLS_IE = 15; 495 enum R_386_TLS_GOTIE = 16; 496 enum R_386_TLS_LE = 17; 497 enum R_386_TLS_GD = 18; 498 enum R_386_TLS_LDM = 19; 499 enum R_386_TLS_GD_32 = 24; 500 enum R_386_TLS_GD_PUSH = 25; 501 enum R_386_TLS_GD_CALL = 26; 502 enum R_386_TLS_GD_POP = 27; 503 enum R_386_TLS_LDM_32 = 28; 504 enum R_386_TLS_LDM_PUSH = 29; 505 enum R_386_TLS_LDM_CALL = 30; 506 enum R_386_TLS_LDM_POP = 31; 507 enum R_386_TLS_LDO_32 = 32; 508 enum R_386_TLS_IE_32 = 33; 509 enum R_386_TLS_LE_32 = 34; 510 enum R_386_TLS_DTPMOD32 = 35; 511 enum R_386_TLS_DTPOFF32 = 36; 512 enum R_386_TLS_TPOFF32 = 37; 513 enum R_386_IRELATIVE = 42; 514 515 enum R_ARM_NONE = 0; 516 enum R_ARM_PC24 = 1; 517 enum R_ARM_ABS32 = 2; 518 enum R_ARM_REL32 = 3; 519 enum R_ARM_PC13 = 4; 520 enum R_ARM_ABS16 = 5; 521 enum R_ARM_ABS12 = 6; 522 enum R_ARM_THM_ABS5 = 7; 523 enum R_ARM_ABS8 = 8; 524 enum R_ARM_SBREL32 = 9; 525 enum R_ARM_THM_PC22 = 10; 526 enum R_ARM_THM_PC8 = 11; 527 enum R_ARM_AMP_VCALL9 = 12; 528 enum R_ARM_SWI24 = 13; 529 enum R_ARM_THM_SWI8 = 14; 530 enum R_ARM_XPC25 = 15; 531 enum R_ARM_THM_XPC22 = 16; 532 enum R_ARM_TLS_DTPMOD32 = 17; 533 enum R_ARM_TLS_DTPOFF32 = 18; 534 enum R_ARM_TLS_TPOFF32 = 19; 535 enum R_ARM_COPY = 20; 536 enum R_ARM_GLOB_DAT = 21; 537 enum R_ARM_JUMP_SLOT = 22; 538 enum R_ARM_RELATIVE = 23; 539 enum R_ARM_GOTOFF = 24; 540 enum R_ARM_GOTPC = 25; 541 enum R_ARM_GOT32 = 26; 542 enum R_ARM_PLT32 = 27; 543 enum R_ARM_GNU_VTENTRY = 100; 544 enum R_ARM_GNU_VTINHERIT = 101; 545 enum R_ARM_RSBREL32 = 250; 546 enum R_ARM_THM_RPC22 = 251; 547 enum R_ARM_RREL32 = 252; 548 enum R_ARM_RABS32 = 253; 549 enum R_ARM_RPC24 = 254; 550 enum R_ARM_RBASE = 255; 551 552 enum R_IA_64_NONE = 0; 553 enum R_IA_64_IMM14 = 0x21; 554 enum R_IA_64_IMM22 = 0x22; 555 enum R_IA_64_IMM64 = 0x23; 556 enum R_IA_64_DIR32MSB = 0x24; 557 enum R_IA_64_DIR32LSB = 0x25; 558 enum R_IA_64_DIR64MSB = 0x26; 559 enum R_IA_64_DIR64LSB = 0x27; 560 enum R_IA_64_GPREL22 = 0x2a; 561 enum R_IA_64_GPREL64I = 0x2b; 562 enum R_IA_64_GPREL32MSB = 0x2c; 563 enum R_IA_64_GPREL32LSB = 0x2d; 564 enum R_IA_64_GPREL64MSB = 0x2e; 565 enum R_IA_64_GPREL64LSB = 0x2f; 566 enum R_IA_64_LTOFF22 = 0x32; 567 enum R_IA_64_LTOFF64I = 0x33; 568 enum R_IA_64_PLTOFF22 = 0x3a; 569 enum R_IA_64_PLTOFF64I = 0x3b; 570 enum R_IA_64_PLTOFF64MSB = 0x3e; 571 enum R_IA_64_PLTOFF64LSB = 0x3f; 572 enum R_IA_64_FPTR64I = 0x43; 573 enum R_IA_64_FPTR32MSB = 0x44; 574 enum R_IA_64_FPTR32LSB = 0x45; 575 enum R_IA_64_FPTR64MSB = 0x46; 576 enum R_IA_64_FPTR64LSB = 0x47; 577 enum R_IA_64_PCREL60B = 0x48; 578 enum R_IA_64_PCREL21B = 0x49; 579 enum R_IA_64_PCREL21M = 0x4a; 580 enum R_IA_64_PCREL21F = 0x4b; 581 enum R_IA_64_PCREL32MSB = 0x4c; 582 enum R_IA_64_PCREL32LSB = 0x4d; 583 enum R_IA_64_PCREL64MSB = 0x4e; 584 enum R_IA_64_PCREL64LSB = 0x4f; 585 enum R_IA_64_LTOFF_FPTR22 = 0x52; 586 enum R_IA_64_LTOFF_FPTR64I = 0x53; 587 enum R_IA_64_LTOFF_FPTR32MSB = 0x54; 588 enum R_IA_64_LTOFF_FPTR32LSB = 0x55; 589 enum R_IA_64_LTOFF_FPTR64MSB = 0x56; 590 enum R_IA_64_LTOFF_FPTR64LSB = 0x57; 591 enum R_IA_64_SEGREL32MSB = 0x5c; 592 enum R_IA_64_SEGREL32LSB = 0x5d; 593 enum R_IA_64_SEGREL64MSB = 0x5e; 594 enum R_IA_64_SEGREL64LSB = 0x5f; 595 enum R_IA_64_SECREL32MSB = 0x64; 596 enum R_IA_64_SECREL32LSB = 0x65; 597 enum R_IA_64_SECREL64MSB = 0x66; 598 enum R_IA_64_SECREL64LSB = 0x67; 599 enum R_IA_64_REL32MSB = 0x6c; 600 enum R_IA_64_REL32LSB = 0x6d; 601 enum R_IA_64_REL64MSB = 0x6e; 602 enum R_IA_64_REL64LSB = 0x6f; 603 enum R_IA_64_LTV32MSB = 0x74; 604 enum R_IA_64_LTV32LSB = 0x75; 605 enum R_IA_64_LTV64MSB = 0x76; 606 enum R_IA_64_LTV64LSB = 0x77; 607 enum R_IA_64_PCREL21BI = 0x79; 608 enum R_IA_64_PCREL22 = 0x7a; 609 enum R_IA_64_PCREL64I = 0x7b; 610 enum R_IA_64_IPLTMSB = 0x80; 611 enum R_IA_64_IPLTLSB = 0x81; 612 enum R_IA_64_SUB = 0x85; 613 enum R_IA_64_LTOFF22X = 0x86; 614 enum R_IA_64_LDXMOV = 0x87; 615 enum R_IA_64_TPREL14 = 0x91; 616 enum R_IA_64_TPREL22 = 0x92; 617 enum R_IA_64_TPREL64I = 0x93; 618 enum R_IA_64_TPREL64MSB = 0x96; 619 enum R_IA_64_TPREL64LSB = 0x97; 620 enum R_IA_64_LTOFF_TPREL22 = 0x9a; 621 enum R_IA_64_DTPMOD64MSB = 0xa6; 622 enum R_IA_64_DTPMOD64LSB = 0xa7; 623 enum R_IA_64_LTOFF_DTPMOD22 = 0xaa; 624 enum R_IA_64_DTPREL14 = 0xb1; 625 enum R_IA_64_DTPREL22 = 0xb2; 626 enum R_IA_64_DTPREL64I = 0xb3; 627 enum R_IA_64_DTPREL32MSB = 0xb4; 628 enum R_IA_64_DTPREL32LSB = 0xb5; 629 enum R_IA_64_DTPREL64MSB = 0xb6; 630 enum R_IA_64_DTPREL64LSB = 0xb7; 631 enum R_IA_64_LTOFF_DTPREL22 = 0xba; 632 633 enum R_MIPS_NONE = 0; 634 enum R_MIPS_16 = 1; 635 enum R_MIPS_32 = 2; 636 enum R_MIPS_REL32 = 3; 637 enum R_MIPS_26 = 4; 638 enum R_MIPS_HI16 = 5; 639 enum R_MIPS_LO16 = 6; 640 enum R_MIPS_GPREL16 = 7; 641 enum R_MIPS_LITERAL = 8; 642 enum R_MIPS_GOT16 = 9; 643 enum R_MIPS_PC16 = 10; 644 enum R_MIPS_CALL16 = 11; 645 enum R_MIPS_GPREL32 = 12; 646 enum R_MIPS_GOTHI16 = 21; 647 enum R_MIPS_GOTLO16 = 22; 648 enum R_MIPS_CALLHI16 = 30; 649 enum R_MIPS_CALLLO16 = 31; 650 651 enum R_PPC_NONE = 0; 652 enum R_PPC_ADDR32 = 1; 653 enum R_PPC_ADDR24 = 2; 654 enum R_PPC_ADDR16 = 3; 655 enum R_PPC_ADDR16_LO = 4; 656 enum R_PPC_ADDR16_HI = 5; 657 enum R_PPC_ADDR16_HA = 6; 658 enum R_PPC_ADDR14 = 7; 659 enum R_PPC_ADDR14_BRTAKEN = 8; 660 enum R_PPC_ADDR14_BRNTAKEN = 9; 661 enum R_PPC_REL24 = 10; 662 enum R_PPC_REL14 = 11; 663 enum R_PPC_REL14_BRTAKEN = 12; 664 enum R_PPC_REL14_BRNTAKEN = 13; 665 enum R_PPC_GOT16 = 14; 666 enum R_PPC_GOT16_LO = 15; 667 enum R_PPC_GOT16_HI = 16; 668 enum R_PPC_GOT16_HA = 17; 669 enum R_PPC_PLTREL24 = 18; 670 enum R_PPC_COPY = 19; 671 enum R_PPC_GLOB_DAT = 20; 672 enum R_PPC_JMP_SLOT = 21; 673 enum R_PPC_RELATIVE = 22; 674 enum R_PPC_LOCAL24PC = 23; 675 enum R_PPC_UADDR32 = 24; 676 enum R_PPC_UADDR16 = 25; 677 enum R_PPC_REL32 = 26; 678 enum R_PPC_PLT32 = 27; 679 enum R_PPC_PLTREL32 = 28; 680 enum R_PPC_PLT16_LO = 29; 681 enum R_PPC_PLT16_HI = 30; 682 enum R_PPC_PLT16_HA = 31; 683 enum R_PPC_SDAREL16 = 32; 684 enum R_PPC_SECTOFF = 33; 685 enum R_PPC_SECTOFF_LO = 34; 686 enum R_PPC_SECTOFF_HI = 35; 687 enum R_PPC_SECTOFF_HA = 36; 688 689 enum R_PPC64_ADDR64 = 38; 690 enum R_PPC64_ADDR16_HIGHER = 39; 691 enum R_PPC64_ADDR16_HIGHERA = 40; 692 enum R_PPC64_ADDR16_HIGHEST = 41; 693 enum R_PPC64_ADDR16_HIGHESTA = 42; 694 enum R_PPC64_UADDR64 = 43; 695 enum R_PPC64_REL64 = 44; 696 enum R_PPC64_PLT64 = 45; 697 enum R_PPC64_PLTREL64 = 46; 698 enum R_PPC64_TOC16 = 47; 699 enum R_PPC64_TOC16_LO = 48; 700 enum R_PPC64_TOC16_HI = 49; 701 enum R_PPC64_TOC16_HA = 50; 702 enum R_PPC64_TOC = 51; 703 enum R_PPC64_DTPMOD64 = 68; 704 enum R_PPC64_TPREL64 = 73; 705 enum R_PPC64_DTPREL64 = 78; 706 707 enum R_PPC_TLS = 67; 708 enum R_PPC_DTPMOD32 = 68; 709 enum R_PPC_TPREL16 = 69; 710 enum R_PPC_TPREL16_LO = 70; 711 enum R_PPC_TPREL16_HI = 71; 712 enum R_PPC_TPREL16_HA = 72; 713 enum R_PPC_TPREL32 = 73; 714 enum R_PPC_DTPREL16 = 74; 715 enum R_PPC_DTPREL16_LO = 75; 716 enum R_PPC_DTPREL16_HI = 76; 717 enum R_PPC_DTPREL16_HA = 77; 718 enum R_PPC_DTPREL32 = 78; 719 enum R_PPC_GOT_TLSGD16 = 79; 720 enum R_PPC_GOT_TLSGD16_LO = 80; 721 enum R_PPC_GOT_TLSGD16_HI = 81; 722 enum R_PPC_GOT_TLSGD16_HA = 82; 723 enum R_PPC_GOT_TLSLD16 = 83; 724 enum R_PPC_GOT_TLSLD16_LO = 84; 725 enum R_PPC_GOT_TLSLD16_HI = 85; 726 enum R_PPC_GOT_TLSLD16_HA = 86; 727 enum R_PPC_GOT_TPREL16 = 87; 728 enum R_PPC_GOT_TPREL16_LO = 88; 729 enum R_PPC_GOT_TPREL16_HI = 89; 730 enum R_PPC_GOT_TPREL16_HA = 90; 731 732 enum R_PPC_EMB_NADDR32 = 101; 733 enum R_PPC_EMB_NADDR16 = 102; 734 enum R_PPC_EMB_NADDR16_LO = 103; 735 enum R_PPC_EMB_NADDR16_HI = 104; 736 enum R_PPC_EMB_NADDR16_HA = 105; 737 enum R_PPC_EMB_SDAI16 = 106; 738 enum R_PPC_EMB_SDA2I16 = 107; 739 enum R_PPC_EMB_SDA2REL = 108; 740 enum R_PPC_EMB_SDA21 = 109; 741 enum R_PPC_EMB_MRKREF = 110; 742 enum R_PPC_EMB_RELSEC16 = 111; 743 enum R_PPC_EMB_RELST_LO = 112; 744 enum R_PPC_EMB_RELST_HI = 113; 745 enum R_PPC_EMB_RELST_HA = 114; 746 enum R_PPC_EMB_BIT_FLD = 115; 747 enum R_PPC_EMB_RELSDA = 116; 748 749 enum R_SPARC_NONE = 0; 750 enum R_SPARC_8 = 1; 751 enum R_SPARC_16 = 2; 752 enum R_SPARC_32 = 3; 753 enum R_SPARC_DISP8 = 4; 754 enum R_SPARC_DISP16 = 5; 755 enum R_SPARC_DISP32 = 6; 756 enum R_SPARC_WDISP30 = 7; 757 enum R_SPARC_WDISP22 = 8; 758 enum R_SPARC_HI22 = 9; 759 enum R_SPARC_22 = 10; 760 enum R_SPARC_13 = 11; 761 enum R_SPARC_LO10 = 12; 762 enum R_SPARC_GOT10 = 13; 763 enum R_SPARC_GOT13 = 14; 764 enum R_SPARC_GOT22 = 15; 765 enum R_SPARC_PC10 = 16; 766 enum R_SPARC_PC22 = 17; 767 enum R_SPARC_WPLT30 = 18; 768 enum R_SPARC_COPY = 19; 769 enum R_SPARC_GLOB_DAT = 20; 770 enum R_SPARC_JMP_SLOT = 21; 771 enum R_SPARC_RELATIVE = 22; 772 enum R_SPARC_UA32 = 23; 773 enum R_SPARC_PLT32 = 24; 774 enum R_SPARC_HIPLT22 = 25; 775 enum R_SPARC_LOPLT10 = 26; 776 enum R_SPARC_PCPLT32 = 27; 777 enum R_SPARC_PCPLT22 = 28; 778 enum R_SPARC_PCPLT10 = 29; 779 enum R_SPARC_10 = 30; 780 enum R_SPARC_11 = 31; 781 enum R_SPARC_64 = 32; 782 enum R_SPARC_OLO10 = 33; 783 enum R_SPARC_HH22 = 34; 784 enum R_SPARC_HM10 = 35; 785 enum R_SPARC_LM22 = 36; 786 enum R_SPARC_PC_HH22 = 37; 787 enum R_SPARC_PC_HM10 = 38; 788 enum R_SPARC_PC_LM22 = 39; 789 enum R_SPARC_WDISP16 = 40; 790 enum R_SPARC_WDISP19 = 41; 791 enum R_SPARC_GLOB_JMP = 42; 792 enum R_SPARC_7 = 43; 793 enum R_SPARC_5 = 44; 794 enum R_SPARC_6 = 45; 795 enum R_SPARC_DISP64 = 46; 796 enum R_SPARC_PLT64 = 47; 797 enum R_SPARC_HIX22 = 48; 798 enum R_SPARC_LOX10 = 49; 799 enum R_SPARC_H44 = 50; 800 enum R_SPARC_M44 = 51; 801 enum R_SPARC_L44 = 52; 802 enum R_SPARC_REGISTER = 53; 803 enum R_SPARC_UA64 = 54; 804 enum R_SPARC_UA16 = 55; 805 enum R_SPARC_TLS_GD_HI22 = 56; 806 enum R_SPARC_TLS_GD_LO10 = 57; 807 enum R_SPARC_TLS_GD_ADD = 58; 808 enum R_SPARC_TLS_GD_CALL = 59; 809 enum R_SPARC_TLS_LDM_HI22 = 60; 810 enum R_SPARC_TLS_LDM_LO10 = 61; 811 enum R_SPARC_TLS_LDM_ADD = 62; 812 enum R_SPARC_TLS_LDM_CALL = 63; 813 enum R_SPARC_TLS_LDO_HIX22 = 64; 814 enum R_SPARC_TLS_LDO_LOX10 = 65; 815 enum R_SPARC_TLS_LDO_ADD = 66; 816 enum R_SPARC_TLS_IE_HI22 = 67; 817 enum R_SPARC_TLS_IE_LO10 = 68; 818 enum R_SPARC_TLS_IE_LD = 69; 819 enum R_SPARC_TLS_IE_LDX = 70; 820 enum R_SPARC_TLS_IE_ADD = 71; 821 enum R_SPARC_TLS_LE_HIX22 = 72; 822 enum R_SPARC_TLS_LE_LOX10 = 73; 823 enum R_SPARC_TLS_DTPMOD32 = 74; 824 enum R_SPARC_TLS_DTPMOD64 = 75; 825 enum R_SPARC_TLS_DTPOFF32 = 76; 826 enum R_SPARC_TLS_DTPOFF64 = 77; 827 enum R_SPARC_TLS_TPOFF32 = 78; 828 enum R_SPARC_TLS_TPOFF64 = 79; 829 830 enum R_X86_64_NONE = 0; 831 enum R_X86_64_64 = 1; 832 enum R_X86_64_PC32 = 2; 833 enum R_X86_64_GOT32 = 3; 834 enum R_X86_64_PLT32 = 4; 835 enum R_X86_64_COPY = 5; 836 enum R_X86_64_GLOB_DAT = 6; 837 enum R_X86_64_JMP_SLOT = 7; 838 enum R_X86_64_RELATIVE = 8; 839 enum R_X86_64_GOTPCREL = 9; 840 enum R_X86_64_32 = 10; 841 enum R_X86_64_32S = 11; 842 enum R_X86_64_16 = 12; 843 enum R_X86_64_PC16 = 13; 844 enum R_X86_64_8 = 14; 845 enum R_X86_64_PC8 = 15; 846 enum R_X86_64_DTPMOD64 = 16; 847 enum R_X86_64_DTPOFF64 = 17; 848 enum R_X86_64_TPOFF64 = 18; 849 enum R_X86_64_TLSGD = 19; 850 enum R_X86_64_TLSLD = 20; 851 enum R_X86_64_DTPOFF32 = 21; 852 enum R_X86_64_GOTTPOFF = 22; 853 enum R_X86_64_TPOFF32 = 23; 854 enum R_X86_64_IRELATIVE = 37; 855 version(PPC64)856version (PPC64) 857 { 858 enum __ELF_WORD_SIZE = 64; 859 enum ELF_ARCH = EM_PPC64; 860 enum ELF_MACHINE_OK(x) = ((x) == EM_PPC64); 861 } version(PPC)862version (PPC) 863 { 864 enum __ELF_WORD_SIZE = 32; 865 enum ELF_ARCH = EM_PPC; 866 enum ELF_ARCH32 = EM_PPC; 867 enum ELF_MACHINE_OK(x) = ((x) == EM_PPC); 868 } 869 870 /** 871 * Auxiliary vector entries for passing information to the interpreter. 872 * 873 * The PowerPC supplement to the SVR4 ABI specification names this "auxv_t", 874 * but POSIX lays claim to all symbols ending with "_t". 875 */ 876 877 struct Elf32_Auxinfo 878 { 879 int a_type; 880 union a_un 881 { 882 long a_val; 883 void *a_ptr; 884 void function(void* a) a_fcn; 885 } 886 } 887 888 struct Elf64_Auxinfo 889 { 890 long a_type; 891 union a_un 892 { 893 long a_val; 894 void *a_ptr; 895 void function(void* a) a_fcn; 896 } 897 } 898 899 // __ElfType(Auxinfo); 900 901 /** 902 * Values for a_type. 903 */ 904 905 enum AT_NULL = 0; 906 enum AT_IGNORE = 1; 907 enum AT_EXECFD = 2; 908 enum AT_PHDR = 3; 909 enum AT_PHENT = 4; 910 enum AT_PHNUM = 5; 911 enum AT_PAGESZ = 6; 912 enum AT_BASE = 7; 913 enum AT_FLAGS = 8; 914 enum AT_ENTRY = 9; 915 enum AT_DCACHEBSIZE = 10; 916 enum AT_ICACHEBSIZE = 11; 917 enum AT_UCACHEBSIZE = 12; 918 enum AT_EXECPATH = 13; 919 enum AT_CANARY = 14; 920 enum AT_CANARYLEN = 15; 921 enum AT_OSRELDATE = 16; 922 enum AT_NCPUS = 17; 923 enum AT_PAGESIZES = 18; 924 enum AT_PAGESIZESLEN = 19; 925 enum AT_STACKPROT = 21; 926 enum AT_TIMEKEEP = 22; 927 enum AT_COUNT = 23; 928 929 /** 930 * Relocation types. 931 */ 932 933 enum R_PPC_COUNT = 37; 934 enum R_PPC_EMB_COUNT = (R_PPC_EMB_RELSDA - R_PPC_EMB_NADDR32 + 1); 935 936 /** 937 * Define "machine" characteristics 938 */ 939 940 version (PPC64) 941 { 942 enum ELF_TARG_CLASS = ELFCLASS64; 943 enum ELF_TARG_DATA = ELFDATA2MSB; 944 enum ELF_TARG_MACH = EM_PPC64; 945 enum ELF_TARG_VER = 1; 946 } 947 948 version (PPC) 949 { 950 enum ELF_TARG_CLASS = ELFCLASS32; 951 enum ELF_TARG_DATA = ELFDATA2MSB; 952 enum ELF_TARG_MACH = EM_PPC; 953 enum ELF_TARG_VER = 1; 954 } 955 956 enum ET_DYN_LOAD_ADDR = 0x01010000; 957