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