1 use crate::platform::types::*; 2 3 pub type Elf32_Half = uint16_t; 4 pub type Elf64_Half = uint16_t; 5 6 pub type Elf32_Word = uint32_t; 7 pub type Elf32_Sword = int32_t; 8 pub type Elf64_Word = uint64_t; 9 pub type Elf64_Sword = int64_t; 10 11 pub type Elf32_Xword = uint64_t; 12 pub type Elf32_Sxword = int64_t; 13 pub type Elf64_Xword = uint64_t; 14 pub type Elf64_Sxword = int64_t; 15 16 pub type Elf32_Addr = uint32_t; 17 pub type Elf64_Addr = uint64_t; 18 19 pub type Elf32_Off = uint32_t; 20 pub type Elf64_Off = uint64_t; 21 22 pub type Elf32_Section = uint16_t; 23 pub type Elf64_Section = uint16_t; 24 25 pub type Elf32_Versym = Elf32_Half; 26 pub type Elf64_Versym = Elf64_Half; 27 28 pub const EI_NIDENT: usize = 16; 29 30 #[repr(C)] 31 pub struct Elf32_Ehdr { 32 pub e_ident: [c_uchar; EI_NIDENT], 33 pub e_type: Elf32_Half, 34 pub e_machine: Elf32_Half, 35 pub e_version: Elf32_Word, 36 pub e_entry: Elf32_Addr, 37 pub e_phoff: Elf32_Off, 38 pub e_shoff: Elf32_Off, 39 pub e_flags: Elf32_Word, 40 pub e_ehsize: Elf32_Half, 41 pub e_phentsize: Elf32_Half, 42 pub e_phnum: Elf32_Half, 43 pub e_shentsize: Elf32_Half, 44 pub e_shnum: Elf32_Half, 45 pub e_shstrndx: Elf32_Half, 46 } 47 48 #[repr(C)] 49 pub struct Elf64_Ehdr { 50 pub e_ident: [c_uchar; EI_NIDENT], 51 pub e_type: Elf64_Half, 52 pub e_machine: Elf64_Half, 53 pub e_version: Elf64_Word, 54 pub e_entry: Elf64_Addr, 55 pub e_phoff: Elf64_Off, 56 pub e_shoff: Elf64_Off, 57 pub e_flags: Elf64_Word, 58 pub e_ehsize: Elf64_Half, 59 pub e_phentsize: Elf64_Half, 60 pub e_phnum: Elf64_Half, 61 pub e_shentsize: Elf64_Half, 62 pub e_shnum: Elf64_Half, 63 pub e_shstrndx: Elf64_Half, 64 } 65 66 pub const EI_MAG0: usize = 0; 67 pub const ELFMAG0: usize = 0x7f; 68 pub const EI_MAG1: usize = 1; 69 pub const ELFMAG1: c_char = 'E' as c_char; 70 pub const EI_MAG2: usize = 2; 71 pub const ELFMAG2: c_char = 'L' as c_char; 72 pub const EI_MAG3: usize = 3; 73 pub const ELFMAG3: c_char = 'F' as c_char; 74 pub const ELFMAG: &'static str = "\x7fELF"; 75 pub const SELFMAG: usize = 4; 76 pub const EI_CLASS: usize = 4; 77 pub const ELFCLASSNONE: usize = 0; 78 pub const ELFCLASS32: usize = 1; 79 pub const ELFCLASS64: usize = 2; 80 pub const ELFCLASSNUM: usize = 3; 81 pub const EI_DATA: usize = 5; 82 pub const ELFDATANONE: usize = 0; 83 pub const ELFDATA2LSB: usize = 1; 84 pub const ELFDATA2MSB: usize = 2; 85 pub const ELFDATANUM: usize = 3; 86 pub const EI_VERSION: usize = 6; 87 pub const EI_OSABI: usize = 7; 88 pub const ELFOSABI_NONE: usize = 0; 89 pub const ELFOSABI_SYSV: usize = 0; 90 pub const ELFOSABI_HPUX: usize = 1; 91 pub const ELFOSABI_NETBSD: usize = 2; 92 pub const ELFOSABI_LINUX: usize = 3; 93 pub const ELFOSABI_GNU: usize = 3; 94 pub const ELFOSABI_SOLARIS: usize = 6; 95 pub const ELFOSABI_AIX: usize = 7; 96 pub const ELFOSABI_IRIX: usize = 8; 97 pub const ELFOSABI_FREEBSD: usize = 9; 98 pub const ELFOSABI_TRU64: usize = 10; 99 pub const ELFOSABI_MODESTO: usize = 11; 100 pub const ELFOSABI_OPENBSD: usize = 12; 101 pub const ELFOSABI_ARM: usize = 97; 102 pub const ELFOSABI_STANDALONE: usize = 255; 103 pub const EI_ABIVERSION: usize = 8; 104 pub const EI_PAD: usize = 9; 105 pub const ET_NONE: usize = 0; 106 pub const ET_REL: usize = 1; 107 pub const ET_EXEC: usize = 2; 108 pub const ET_DYN: usize = 3; 109 pub const ET_CORE: usize = 4; 110 pub const ET_NUM: usize = 5; 111 pub const ET_LOOS: usize = 0xfe00; 112 pub const ET_HIOS: usize = 0xfeff; 113 pub const ET_LOPROC: usize = 0xff00; 114 pub const ET_HIPROC: usize = 0xffff; 115 pub const EM_NONE: usize = 0; 116 pub const EM_M32: usize = 1; 117 pub const EM_SPARC: usize = 2; 118 pub const EM_386: usize = 3; 119 pub const EM_68K: usize = 4; 120 pub const EM_88K: usize = 5; 121 pub const EM_860: usize = 7; 122 pub const EM_MIPS: usize = 8; 123 pub const EM_S370: usize = 9; 124 pub const EM_MIPS_RS3_LE: usize = 10; 125 pub const EM_PARISC: usize = 15; 126 pub const EM_VPP500: usize = 17; 127 pub const EM_SPARC32PLUS: usize = 18; 128 pub const EM_960: usize = 19; 129 pub const EM_PPC: usize = 20; 130 pub const EM_PPC64: usize = 21; 131 pub const EM_S390: usize = 22; 132 pub const EM_V800: usize = 36; 133 pub const EM_FR20: usize = 37; 134 pub const EM_RH32: usize = 38; 135 pub const EM_RCE: usize = 39; 136 pub const EM_ARM: usize = 40; 137 pub const EM_FAKE_ALPHA: usize = 41; 138 pub const EM_SH: usize = 42; 139 pub const EM_SPARCV9: usize = 43; 140 pub const EM_TRICORE: usize = 44; 141 pub const EM_ARC: usize = 45; 142 pub const EM_H8_300: usize = 46; 143 pub const EM_H8_300H: usize = 47; 144 pub const EM_H8S: usize = 48; 145 pub const EM_H8_500: usize = 49; 146 pub const EM_IA_64: usize = 50; 147 pub const EM_MIPS_X: usize = 51; 148 pub const EM_COLDFIRE: usize = 52; 149 pub const EM_68HC12: usize = 53; 150 pub const EM_MMA: usize = 54; 151 pub const EM_PCP: usize = 55; 152 pub const EM_NCPU: usize = 56; 153 pub const EM_NDR1: usize = 57; 154 pub const EM_STARCORE: usize = 58; 155 pub const EM_ME16: usize = 59; 156 pub const EM_ST100: usize = 60; 157 pub const EM_TINYJ: usize = 61; 158 pub const EM_X86_64: usize = 62; 159 pub const EM_PDSP: usize = 63; 160 pub const EM_FX66: usize = 66; 161 pub const EM_ST9PLUS: usize = 67; 162 pub const EM_ST7: usize = 68; 163 pub const EM_68HC16: usize = 69; 164 pub const EM_68HC11: usize = 70; 165 pub const EM_68HC08: usize = 71; 166 pub const EM_68HC05: usize = 72; 167 pub const EM_SVX: usize = 73; 168 pub const EM_ST19: usize = 74; 169 pub const EM_VAX: usize = 75; 170 pub const EM_CRIS: usize = 76; 171 pub const EM_JAVELIN: usize = 77; 172 pub const EM_FIREPATH: usize = 78; 173 pub const EM_ZSP: usize = 79; 174 pub const EM_MMIX: usize = 80; 175 pub const EM_HUANY: usize = 81; 176 pub const EM_PRISM: usize = 82; 177 pub const EM_AVR: usize = 83; 178 pub const EM_FR30: usize = 84; 179 pub const EM_D10V: usize = 85; 180 pub const EM_D30V: usize = 86; 181 pub const EM_V850: usize = 87; 182 pub const EM_M32R: usize = 88; 183 pub const EM_MN10300: usize = 89; 184 pub const EM_MN10200: usize = 90; 185 pub const EM_PJ: usize = 91; 186 pub const EM_OR1K: usize = 92; 187 pub const EM_ARC_A5: usize = 93; 188 pub const EM_XTENSA: usize = 94; 189 pub const EM_AARCH64: usize = 183; 190 pub const EM_TILEPRO: usize = 188; 191 pub const EM_MICROBLAZE: usize = 189; 192 pub const EM_TILEGX: usize = 191; 193 pub const EM_NUM: usize = 192; 194 pub const EM_ALPHA: usize = 0x9026; 195 pub const EV_NONE: usize = 0; 196 pub const EV_CURRENT: usize = 1; 197 pub const EV_NUM: usize = 2; 198 199 #[repr(C)] 200 pub struct Elf32_Shdr { 201 pub sh_name: Elf32_Word, 202 pub sh_type: Elf32_Word, 203 pub sh_flags: Elf32_Word, 204 pub sh_addr: Elf32_Addr, 205 pub sh_offset: Elf32_Off, 206 pub sh_size: Elf32_Word, 207 pub sh_link: Elf32_Word, 208 pub sh_info: Elf32_Word, 209 pub sh_addralign: Elf32_Word, 210 pub sh_entsize: Elf32_Word, 211 } 212 213 #[repr(C)] 214 pub struct Elf64_Shdr { 215 pub sh_name: Elf64_Word, 216 pub sh_type: Elf64_Word, 217 pub sh_flags: Elf64_Xword, 218 pub sh_addr: Elf64_Addr, 219 pub sh_offset: Elf64_Off, 220 pub sh_size: Elf64_Xword, 221 pub sh_link: Elf64_Word, 222 pub sh_info: Elf64_Word, 223 pub sh_addralign: Elf64_Xword, 224 pub sh_entsize: Elf64_Xword, 225 } 226 227 pub const SHN_UNDEF: usize = 0; 228 pub const SHN_LORESERVE: usize = 0xff00; 229 pub const SHN_LOPROC: usize = 0xff00; 230 pub const SHN_BEFORE: usize = 0xff00; 231 pub const SHN_AFTER: usize = 0xff01; 232 pub const SHN_HIPROC: usize = 0xff1f; 233 pub const SHN_LOOS: usize = 0xff20; 234 pub const SHN_HIOS: usize = 0xff3f; 235 pub const SHN_ABS: usize = 0xfff1; 236 pub const SHN_COMMON: usize = 0xfff2; 237 pub const SHN_XINDEX: usize = 0xffff; 238 pub const SHN_HIRESERVE: usize = 0xffff; 239 pub const SHT_NULL: usize = 0; 240 pub const SHT_PROGBITS: usize = 1; 241 pub const SHT_SYMTAB: usize = 2; 242 pub const SHT_STRTAB: usize = 3; 243 pub const SHT_RELA: usize = 4; 244 pub const SHT_HASH: usize = 5; 245 pub const SHT_DYNAMIC: usize = 6; 246 pub const SHT_NOTE: usize = 7; 247 pub const SHT_NOBITS: usize = 8; 248 pub const SHT_REL: usize = 9; 249 pub const SHT_SHLIB: usize = 10; 250 pub const SHT_DYNSYM: usize = 11; 251 pub const SHT_INIT_ARRAY: usize = 14; 252 pub const SHT_FINI_ARRAY: usize = 15; 253 pub const SHT_PREINIT_ARRAY: usize = 16; 254 pub const SHT_GROUP: usize = 17; 255 pub const SHT_SYMTAB_SHNDX: usize = 18; 256 pub const SHT_NUM: usize = 19; 257 pub const SHT_LOOS: usize = 0x60000000; 258 pub const SHT_GNU_ATTRIBUTES: usize = 0x6ffffff5; 259 pub const SHT_GNU_HASH: usize = 0x6ffffff6; 260 pub const SHT_GNU_LIBLIST: usize = 0x6ffffff7; 261 pub const SHT_CHECKSUM: usize = 0x6ffffff8; 262 pub const SHT_LOSUNW: usize = 0x6ffffffa; 263 pub const SHT_SUNW_move: usize = 0x6ffffffa; 264 pub const SHT_SUNW_COMDAT: usize = 0x6ffffffb; 265 pub const SHT_SUNW_syminfo: usize = 0x6ffffffc; 266 pub const SHT_GNU_verdef: usize = 0x6ffffffd; 267 pub const SHT_GNU_verneed: usize = 0x6ffffffe; 268 pub const SHT_GNU_versym: usize = 0x6fffffff; 269 pub const SHT_HISUNW: usize = 0x6fffffff; 270 pub const SHT_HIOS: usize = 0x6fffffff; 271 pub const SHT_LOPROC: usize = 0x70000000; 272 pub const SHT_HIPROC: usize = 0x7fffffff; 273 pub const SHT_LOUSER: usize = 0x80000000; 274 pub const SHT_HIUSER: usize = 0x8fffffff; 275 276 pub const SHF_WRITE: usize = (1 << 0); 277 pub const SHF_ALLOC: usize = (1 << 1); 278 pub const SHF_EXECINSTR: usize = (1 << 2); 279 pub const SHF_MERGE: usize = (1 << 4); 280 pub const SHF_STRINGS: usize = (1 << 5); 281 pub const SHF_INFO_LINK: usize = (1 << 6); 282 pub const SHF_LINK_ORDER: usize = (1 << 7); 283 pub const SHF_OS_NONCONFORMING: usize = (1 << 8); 284 pub const SHF_GROUP: usize = (1 << 9); 285 pub const SHF_TLS: usize = (1 << 10); 286 pub const SHF_MASKOS: usize = 0x0ff00000; 287 pub const SHF_MASKPROC: usize = 0xf0000000; 288 pub const SHF_ORDERED: usize = (1 << 30); 289 pub const SHF_EXCLUDE: usize = (1 << 31); 290 pub const GRP_COMDAT: usize = 0x1; 291 292 #[repr(C)] 293 pub struct Elf32_Sym { 294 pub st_name: Elf32_Word, 295 pub st_value: Elf32_Addr, 296 pub st_size: Elf32_Word, 297 pub st_info: c_uchar, 298 pub st_other: c_uchar, 299 pub st_shndx: Elf32_Section, 300 } 301 302 #[repr(C)] 303 pub struct Elf64_Sym { 304 pub st_name: Elf64_Word, 305 pub st_info: c_uchar, 306 pub st_other: c_uchar, 307 pub st_shndx: Elf64_Section, 308 pub st_value: Elf64_Addr, 309 pub st_size: Elf64_Xword, 310 } 311 312 #[repr(C)] 313 pub struct Elf32_Syminfo { 314 pub si_boundto: Elf32_Half, 315 pub si_flags: Elf32_Half, 316 } 317 318 #[repr(C)] 319 pub struct Elf64_Syminfo { 320 pub si_boundto: Elf64_Half, 321 pub si_flags: Elf64_Half, 322 } 323 324 pub const SYMINFO_BT_SELF: usize = 0xffff; 325 pub const SYMINFO_BT_PARENT: usize = 0xfffe; 326 pub const SYMINFO_BT_LOWRESERVE: usize = 0xff00; 327 pub const SYMINFO_FLG_DIRECT: usize = 0x0001; 328 pub const SYMINFO_FLG_PASSTHRU: usize = 0x0002; 329 pub const SYMINFO_FLG_COPY: usize = 0x0004; 330 pub const SYMINFO_FLG_LAZYLOAD: usize = 0x0008; 331 pub const SYMINFO_NONE: usize = 0; 332 pub const SYMINFO_CURRENT: usize = 1; 333 pub const SYMINFO_NUM: usize = 2; 334 335 pub const STB_LOCAL: usize = 0; 336 pub const STB_GLOBAL: usize = 1; 337 pub const STB_WEAK: usize = 2; 338 pub const STB_NUM: usize = 3; 339 pub const STB_LOOS: usize = 10; 340 pub const STB_GNU_UNIQUE: usize = 10; 341 pub const STB_HIOS: usize = 12; 342 pub const STB_LOPROC: usize = 13; 343 pub const STB_HIPROC: usize = 15; 344 pub const STT_NOTYPE: usize = 0; 345 pub const STT_OBJECT: usize = 1; 346 pub const STT_FUNC: usize = 2; 347 pub const STT_SECTION: usize = 3; 348 pub const STT_FILE: usize = 4; 349 pub const STT_COMMON: usize = 5; 350 pub const STT_TLS: usize = 6; 351 pub const STT_NUM: usize = 7; 352 pub const STT_LOOS: usize = 10; 353 pub const STT_GNU_IFUNC: usize = 10; 354 pub const STT_HIOS: usize = 12; 355 pub const STT_LOPROC: usize = 13; 356 pub const STT_HIPROC: usize = 15; 357 pub const STN_UNDEF: usize = 0; 358 359 pub const STV_DEFAULT: usize = 0; 360 pub const STV_INTERNAL: usize = 1; 361 pub const STV_HIDDEN: usize = 2; 362 pub const STV_PROTECTED: usize = 3; 363 364 #[repr(C)] 365 pub struct Elf32_Rel { 366 pub r_offset: Elf32_Addr, 367 pub r_info: Elf32_Word, 368 } 369 370 #[repr(C)] 371 pub struct Elf64_Rel { 372 pub r_offset: Elf64_Addr, 373 pub r_info: Elf64_Xword, 374 } 375 376 #[repr(C)] 377 pub struct Elf32_Rela { 378 pub r_offset: Elf32_Addr, 379 pub r_info: Elf32_Word, 380 pub r_addend: Elf32_Sword, 381 } 382 383 #[repr(C)] 384 pub struct Elf64_Rela { 385 pub r_offset: Elf64_Addr, 386 pub r_info: Elf64_Xword, 387 pub r_addend: Elf64_Sxword, 388 } 389 390 #[repr(C)] 391 pub struct Elf32_Phdr { 392 pub p_type: Elf32_Word, 393 pub p_offset: Elf32_Off, 394 pub p_vaddr: Elf32_Addr, 395 pub p_paddr: Elf32_Addr, 396 pub p_filesz: Elf32_Word, 397 pub p_memsz: Elf32_Word, 398 pub p_flags: Elf32_Word, 399 pub p_align: Elf32_Word, 400 } 401 402 #[repr(C)] 403 pub struct Elf64_Phdr { 404 pub p_type: Elf64_Word, 405 pub p_flags: Elf64_Word, 406 pub p_offset: Elf64_Off, 407 pub p_vaddr: Elf64_Addr, 408 pub p_paddr: Elf64_Addr, 409 pub p_filesz: Elf64_Xword, 410 pub p_memsz: Elf64_Xword, 411 pub p_align: Elf64_Xword, 412 } 413 414 pub const PT_NULL: usize = 0; 415 pub const PT_LOAD: usize = 1; 416 pub const PT_DYNAMIC: usize = 2; 417 pub const PT_INTERP: usize = 3; 418 pub const PT_NOTE: usize = 4; 419 pub const PT_SHLIB: usize = 5; 420 pub const PT_PHDR: usize = 6; 421 pub const PT_TLS: usize = 7; 422 pub const PT_NUM: usize = 8; 423 pub const PT_LOOS: usize = 0x60000000; 424 pub const PT_GNU_EH_FRAME: usize = 0x6474e550; 425 pub const PT_GNU_STACK: usize = 0x6474e551; 426 pub const PT_GNU_RELRO: usize = 0x6474e552; 427 pub const PT_LOSUNW: usize = 0x6ffffffa; 428 pub const PT_SUNWBSS: usize = 0x6ffffffa; 429 pub const PT_SUNWSTACK: usize = 0x6ffffffb; 430 pub const PT_HISUNW: usize = 0x6fffffff; 431 pub const PT_HIOS: usize = 0x6fffffff; 432 pub const PT_LOPROC: usize = 0x70000000; 433 pub const PT_HIPROC: usize = 0x7fffffff; 434 pub const PN_XNUM: usize = 0xffff; 435 pub const PF_X: usize = (1 << 0); 436 pub const PF_W: usize = (1 << 1); 437 pub const PF_R: usize = (1 << 2); 438 pub const PF_MASKOS: usize = 0x0ff00000; 439 pub const PF_MASKPROC: usize = 0xf0000000; 440 441 pub const NT_PRSTATUS: usize = 1; 442 pub const NT_FPREGSET: usize = 2; 443 pub const NT_PRPSINFO: usize = 3; 444 pub const NT_PRXREG: usize = 4; 445 pub const NT_TASKSTRUCT: usize = 4; 446 pub const NT_PLATFORM: usize = 5; 447 pub const NT_AUXV: usize = 6; 448 pub const NT_GWINDOWS: usize = 7; 449 pub const NT_ASRS: usize = 8; 450 pub const NT_PSTATUS: usize = 10; 451 pub const NT_PSINFO: usize = 13; 452 pub const NT_PRCRED: usize = 14; 453 pub const NT_UTSNAME: usize = 15; 454 pub const NT_LWPSTATUS: usize = 16; 455 pub const NT_LWPSINFO: usize = 17; 456 pub const NT_PRFPXREG: usize = 20; 457 pub const NT_SIGINFO: usize = 0x53494749; 458 pub const NT_FILE: usize = 0x46494c45; 459 pub const NT_PRXFPREG: usize = 0x46e62b7f; 460 pub const NT_PPC_VMX: usize = 0x100; 461 pub const NT_PPC_SPE: usize = 0x101; 462 pub const NT_PPC_VSX: usize = 0x102; 463 pub const NT_386_TLS: usize = 0x200; 464 pub const NT_386_IOPERM: usize = 0x201; 465 pub const NT_X86_XSTATE: usize = 0x202; 466 pub const NT_S390_HIGH_GPRS: usize = 0x300; 467 pub const NT_S390_TIMER: usize = 0x301; 468 pub const NT_S390_TODCMP: usize = 0x302; 469 pub const NT_S390_TODPREG: usize = 0x303; 470 pub const NT_S390_CTRS: usize = 0x304; 471 pub const NT_S390_PREFIX: usize = 0x305; 472 pub const NT_S390_LAST_BREAK: usize = 0x306; 473 pub const NT_S390_SYSTEM_CALL: usize = 0x307; 474 pub const NT_S390_TDB: usize = 0x308; 475 pub const NT_ARM_VFP: usize = 0x400; 476 pub const NT_ARM_TLS: usize = 0x401; 477 pub const NT_ARM_HW_BREAK: usize = 0x402; 478 pub const NT_ARM_HW_WATCH: usize = 0x403; 479 pub const NT_METAG_CBUF: usize = 0x500; 480 pub const NT_METAG_RPIPE: usize = 0x501; 481 pub const NT_METAG_TLS: usize = 0x502; 482 pub const NT_VERSION: usize = 1; 483 484 #[repr(C)] 485 pub union Elf32_Dyn_Union { 486 d_val: Elf32_Word, 487 d_ptr: Elf32_Addr, 488 } 489 490 #[repr(C)] 491 pub struct Elf32_Dyn { 492 pub d_tag: Elf32_Sword, 493 pub d_un: Elf32_Dyn_Union, 494 } 495 496 #[repr(C)] 497 pub union Elf64_Dyn_Union { 498 d_val: Elf64_Xword, 499 d_ptr: Elf64_Addr, 500 } 501 502 #[repr(C)] 503 pub struct Elf64_Dyn { 504 pub d_tag: Elf64_Sxword, 505 pub d_un: Elf64_Dyn_Union, 506 } 507 508 pub const DT_NULL: usize = 0; 509 pub const DT_NEEDED: usize = 1; 510 pub const DT_PLTRELSZ: usize = 2; 511 pub const DT_PLTGOT: usize = 3; 512 pub const DT_HASH: usize = 4; 513 pub const DT_STRTAB: usize = 5; 514 pub const DT_SYMTAB: usize = 6; 515 pub const DT_RELA: usize = 7; 516 pub const DT_RELASZ: usize = 8; 517 pub const DT_RELAENT: usize = 9; 518 pub const DT_STRSZ: usize = 10; 519 pub const DT_SYMENT: usize = 11; 520 pub const DT_INIT: usize = 12; 521 pub const DT_FINI: usize = 13; 522 pub const DT_SONAME: usize = 14; 523 pub const DT_RPATH: usize = 15; 524 pub const DT_SYMBOLIC: usize = 16; 525 pub const DT_REL: usize = 17; 526 pub const DT_RELSZ: usize = 18; 527 pub const DT_RELENT: usize = 19; 528 pub const DT_PLTREL: usize = 20; 529 pub const DT_DEBUG: usize = 21; 530 pub const DT_TEXTREL: usize = 22; 531 pub const DT_JMPREL: usize = 23; 532 pub const DT_BIND_NOW: usize = 24; 533 pub const DT_INIT_ARRAY: usize = 25; 534 pub const DT_FINI_ARRAY: usize = 26; 535 pub const DT_INIT_ARRAYSZ: usize = 27; 536 pub const DT_FINI_ARRAYSZ: usize = 28; 537 pub const DT_RUNPATH: usize = 29; 538 pub const DT_FLAGS: usize = 30; 539 pub const DT_ENCODING: usize = 32; 540 pub const DT_PREINIT_ARRAY: usize = 32; 541 pub const DT_PREINIT_ARRAYSZ: usize = 33; 542 pub const DT_NUM: usize = 34; 543 pub const DT_LOOS: usize = 0x6000000d; 544 pub const DT_HIOS: usize = 0x6ffff000; 545 pub const DT_LOPROC: usize = 0x70000000; 546 pub const DT_HIPROC: usize = 0x7fffffff; 547 pub const DT_VALRNGLO: usize = 0x6ffffd00; 548 pub const DT_GNU_PRELINKED: usize = 0x6ffffdf5; 549 pub const DT_GNU_CONFLICTSZ: usize = 0x6ffffdf6; 550 pub const DT_GNU_LIBLISTSZ: usize = 0x6ffffdf7; 551 pub const DT_CHECKSUM: usize = 0x6ffffdf8; 552 pub const DT_PLTPADSZ: usize = 0x6ffffdf9; 553 pub const DT_MOVEENT: usize = 0x6ffffdfa; 554 pub const DT_MOVESZ: usize = 0x6ffffdfb; 555 pub const DT_FEATURE_1: usize = 0x6ffffdfc; 556 pub const DT_POSFLAG_1: usize = 0x6ffffdfd; 557 pub const DT_SYMINSZ: usize = 0x6ffffdfe; 558 pub const DT_SYMINENT: usize = 0x6ffffdff; 559 pub const DT_VALNUM: usize = 12; 560 561 pub const DT_ADDRRNGLO: usize = 0x6ffffe00; 562 pub const DT_GNU_HASH: usize = 0x6ffffef5; 563 pub const DT_TLSDESC_PLT: usize = 0x6ffffef6; 564 pub const DT_TLSDESC_GOT: usize = 0x6ffffef7; 565 pub const DT_GNU_CONFLICT: usize = 0x6ffffef8; 566 pub const DT_GNU_LIBLIST: usize = 0x6ffffef9; 567 pub const DT_CONFIG: usize = 0x6ffffefa; 568 pub const DT_DEPAUDIT: usize = 0x6ffffefb; 569 pub const DT_AUDIT: usize = 0x6ffffefc; 570 pub const DT_PLTPAD: usize = 0x6ffffefd; 571 pub const DT_MOVETAB: usize = 0x6ffffefe; 572 pub const DT_SYMINFO: usize = 0x6ffffeff; 573 pub const DT_ADDRNUM: usize = 11; 574 pub const DT_VERSYM: usize = 0x6ffffff0; 575 pub const DT_RELACOUNT: usize = 0x6ffffff9; 576 pub const DT_RELCOUNT: usize = 0x6ffffffa; 577 pub const DT_FLAGS_1: usize = 0x6ffffffb; 578 pub const DT_VERDEF: usize = 0x6ffffffc; 579 pub const DT_VERDEFNUM: usize = 0x6ffffffd; 580 pub const DT_VERNEED: usize = 0x6ffffffe; 581 pub const DT_VERSIONTAGNUM: usize = 16; 582 pub const DT_AUXILIARY: usize = 0x7ffffffd; 583 pub const DT_FILTER: usize = 0x7fffffff; 584 pub const DT_EXTRANUM: usize = 3; 585 pub const DF_ORIGIN: usize = 0x00000001; 586 pub const DF_SYMBOLIC: usize = 0x00000002; 587 pub const DF_TEXTREL: usize = 0x00000004; 588 pub const DF_BIND_NOW: usize = 0x00000008; 589 pub const DF_STATIC_TLS: usize = 0x00000010; 590 pub const DF_1_NOW: usize = 0x00000001; 591 pub const DF_1_GLOBAL: usize = 0x00000002; 592 pub const DF_1_GROUP: usize = 0x00000004; 593 pub const DF_1_NODELETE: usize = 0x00000008; 594 pub const DF_1_LOADFLTR: usize = 0x00000010; 595 pub const DF_1_INITFIRST: usize = 0x00000020; 596 pub const DF_1_NOOPEN: usize = 0x00000040; 597 pub const DF_1_ORIGIN: usize = 0x00000080; 598 pub const DF_1_DIRECT: usize = 0x00000100; 599 pub const DF_1_TRANS: usize = 0x00000200; 600 pub const DF_1_INTERPOSE: usize = 0x00000400; 601 pub const DF_1_NODEFLIB: usize = 0x00000800; 602 pub const DF_1_NODUMP: usize = 0x00001000; 603 pub const DF_1_CONFALT: usize = 0x00002000; 604 pub const DF_1_ENDFILTEE: usize = 0x00004000; 605 pub const DF_1_DISPRELDNE: usize = 0x00008000; 606 pub const DF_1_DISPRELPND: usize = 0x00010000; 607 pub const DF_1_NODIRECT: usize = 0x00020000; 608 pub const DF_1_IGNMULDEF: usize = 0x00040000; 609 pub const DF_1_NOKSYMS: usize = 0x00080000; 610 pub const DF_1_NOHDR: usize = 0x00100000; 611 pub const DF_1_EDITED: usize = 0x00200000; 612 pub const DF_1_NORELOC: usize = 0x00400000; 613 pub const DF_1_SYMINTPOSE: usize = 0x00800000; 614 pub const DF_1_GLOBAUDIT: usize = 0x01000000; 615 pub const DF_1_SINGLETON: usize = 0x02000000; 616 pub const DTF_1_PARINIT: usize = 0x00000001; 617 pub const DTF_1_CONFEXP: usize = 0x00000002; 618 pub const DF_P1_LAZYLOAD: usize = 0x00000001; 619 pub const DF_P1_GROUPPERM: usize = 0x00000002; 620 621 #[repr(C)] 622 pub struct Elf32_Verdef { 623 pub vd_version: Elf32_Half, 624 pub vd_flags: Elf32_Half, 625 pub vd_ndx: Elf32_Half, 626 pub vd_cnt: Elf32_Half, 627 pub vd_hash: Elf32_Word, 628 pub vd_aux: Elf32_Word, 629 pub vd_next: Elf32_Word, 630 } 631 632 #[repr(C)] 633 pub struct Elf64_Verdef { 634 pub vd_version: Elf64_Half, 635 pub vd_flags: Elf64_Half, 636 pub vd_ndx: Elf64_Half, 637 pub vd_cnt: Elf64_Half, 638 pub vd_hash: Elf64_Word, 639 pub vd_aux: Elf64_Word, 640 pub vd_next: Elf64_Word, 641 } 642 643 pub const VER_DEF_NONE: usize = 0; 644 pub const VER_DEF_CURRENT: usize = 1; 645 pub const VER_DEF_NUM: usize = 2; 646 647 pub const VER_FLG_BASE: usize = 0x1; 648 pub const VER_FLG_WEAK: usize = 0x2; 649 pub const VER_NDX_LOCAL: usize = 0; 650 pub const VER_NDX_GLOBAL: usize = 1; 651 pub const VER_NDX_LORESERVE: usize = 0xff00; 652 pub const VER_NDX_ELIMINATE: usize = 0xff01; 653 654 #[repr(C)] 655 pub struct Elf32_Verdaux { 656 pub vda_name: Elf32_Word, 657 pub vda_next: Elf32_Word, 658 } 659 660 #[repr(C)] 661 pub struct Elf64_Verdaux { 662 pub vda_name: Elf64_Word, 663 pub vda_next: Elf64_Word, 664 } 665 666 #[repr(C)] 667 pub struct Elf32_Verneed { 668 pub vn_version: Elf32_Half, 669 pub vn_cnt: Elf32_Half, 670 pub vn_file: Elf32_Word, 671 pub vn_aux: Elf32_Word, 672 pub vn_next: Elf32_Word, 673 } 674 675 #[repr(C)] 676 pub struct Elf64_Verneed { 677 pub vn_version: Elf64_Half, 678 pub vn_cnt: Elf64_Half, 679 pub vn_file: Elf64_Word, 680 pub vn_aux: Elf64_Word, 681 pub vn_next: Elf64_Word, 682 } 683 684 pub const VER_NEED_NONE: usize = 0; 685 pub const VER_NEED_CURRENT: usize = 1; 686 pub const VER_NEED_NUM: usize = 2; 687 688 #[repr(C)] 689 pub struct Elf64_Vernaux { 690 pub vna_hash: Elf64_Word, 691 pub vna_flags: Elf64_Half, 692 pub vna_other: Elf64_Half, 693 pub vna_name: Elf64_Word, 694 pub vna_next: Elf64_Word, 695 } 696 697 #[repr(C)] 698 pub union A_UN { 699 a_val: uint64_t, 700 } 701 702 #[repr(C)] 703 pub struct Elf64_auxv_t { 704 pub a_type: uint64_t, 705 pub a_un: A_UN, 706 } 707 708 pub const AT_NULL: usize = 0; 709 pub const AT_IGNORE: usize = 1; 710 pub const AT_EXECFD: usize = 2; 711 pub const AT_PHDR: usize = 3; 712 pub const AT_PHENT: usize = 4; 713 pub const AT_PHNUM: usize = 5; 714 pub const AT_PAGESZ: usize = 6; 715 pub const AT_BASE: usize = 7; 716 pub const AT_FLAGS: usize = 8; 717 pub const AT_ENTRY: usize = 9; 718 pub const AT_NOTELF: usize = 10; 719 pub const AT_UID: usize = 11; 720 pub const AT_EUID: usize = 12; 721 pub const AT_GID: usize = 13; 722 pub const AT_EGID: usize = 14; 723 pub const AT_CLKTCK: usize = 17; 724 pub const AT_PLATFORM: usize = 15; 725 pub const AT_HWCAP: usize = 16; 726 pub const AT_FPUCW: usize = 18; 727 pub const AT_DCACHEBSIZE: usize = 19; 728 pub const AT_ICACHEBSIZE: usize = 20; 729 pub const AT_UCACHEBSIZE: usize = 21; 730 pub const AT_IGNOREPPC: usize = 22; 731 pub const AT_SECURE: usize = 23; 732 pub const AT_BASE_PLATFORM: usize = 24; 733 pub const AT_RANDOM: usize = 25; 734 pub const AT_HWCAP2: usize = 26; 735 pub const AT_EXECFN: usize = 31; 736 pub const AT_SYSINFO: usize = 32; 737 pub const AT_SYSINFO_EHDR: usize = 33; 738 pub const AT_L1I_CACHESHAPE: usize = 34; 739 pub const AT_L1D_CACHESHAPE: usize = 35; 740 pub const AT_L2_CACHESHAPE: usize = 36; 741 pub const AT_L3_CACHESHAPE: usize = 37; 742 743 #[repr(C)] 744 pub struct Elf32_Nhdr { 745 pub n_namesz: Elf32_Word, 746 pub n_descsz: Elf32_Word, 747 pub n_type: Elf32_Word, 748 } 749 750 #[repr(C)] 751 pub struct Elf64_Nhdr { 752 pub n_namesz: Elf64_Word, 753 pub n_descsz: Elf64_Word, 754 pub n_type: Elf64_Word, 755 } 756 757 pub const ELF_NOTE_SOLARIS: &'static str = "SUNW Solaris"; 758 pub const ELF_NOTE_GNU: &'static str = "GNU"; 759 760 pub const ELF_NOTE_PAGESIZE_HINT: usize = 1; 761 762 pub const NT_GNU_ABI_TAG: usize = 1; 763 pub const ELF_NOTE_ABI: usize = NT_GNU_ABI_TAG; 764 765 pub const ELF_NOTE_OS_LINUX: usize = 0; 766 pub const ELF_NOTE_OS_GNU: usize = 1; 767 pub const ELF_NOTE_OS_SOLARIS2: usize = 2; 768 pub const ELF_NOTE_OS_FREEBSD: usize = 3; 769 770 pub const NT_GNU_BUILD_ID: usize = 3; 771 pub const NT_GNU_GOLD_VERSION: usize = 4; 772 773 #[repr(C)] 774 pub struct Elf64_Move { 775 pub m_value: Elf64_Xword, 776 pub m_info: Elf64_Xword, 777 pub m_poffset: Elf64_Xword, 778 pub m_repeat: Elf64_Half, 779 pub m_stride: Elf64_Half, 780 } 781 782 pub const R_AARCH64_NONE: usize = 0; 783 pub const R_AARCH64_ABS64: usize = 257; 784 pub const R_AARCH64_ABS32: usize = 258; 785 pub const R_AARCH64_ABS16: usize = 259; 786 pub const R_AARCH64_PREL64: usize = 260; 787 pub const R_AARCH64_PREL32: usize = 261; 788 pub const R_AARCH64_PREL16: usize = 262; 789 pub const R_AARCH64_MOVW_UABS_G0: usize = 263; 790 pub const R_AARCH64_MOVW_UABS_G0_NC: usize = 264; 791 pub const R_AARCH64_MOVW_UABS_G1: usize = 265; 792 pub const R_AARCH64_MOVW_UABS_G1_NC: usize = 266; 793 pub const R_AARCH64_MOVW_UABS_G2: usize = 267; 794 pub const R_AARCH64_MOVW_UABS_G2_NC: usize = 268; 795 pub const R_AARCH64_MOVW_UABS_G3: usize = 269; 796 pub const R_AARCH64_MOVW_SABS_G0: usize = 270; 797 pub const R_AARCH64_MOVW_SABS_G1: usize = 271; 798 pub const R_AARCH64_MOVW_SABS_G2: usize = 272; 799 pub const R_AARCH64_LD_PREL_LO19: usize = 273; 800 pub const R_AARCH64_ADR_PREL_LO21: usize = 274; 801 pub const R_AARCH64_ADR_PREL_PG_HI21: usize = 275; 802 pub const R_AARCH64_ADR_PREL_PG_HI21_NC: usize = 276; 803 pub const R_AARCH64_ADD_ABS_LO12_NC: usize = 277; 804 pub const R_AARCH64_LDST8_ABS_LO12_NC: usize = 278; 805 pub const R_AARCH64_TSTBR14: usize = 279; 806 pub const R_AARCH64_CONDBR19: usize = 280; 807 pub const R_AARCH64_JUMP26: usize = 282; 808 pub const R_AARCH64_CALL26: usize = 283; 809 pub const R_AARCH64_LDST16_ABS_LO12_NC: usize = 284; 810 pub const R_AARCH64_LDST32_ABS_LO12_NC: usize = 285; 811 pub const R_AARCH64_LDST64_ABS_LO12_NC: usize = 286; 812 pub const R_AARCH64_MOVW_PREL_G0: usize = 287; 813 pub const R_AARCH64_MOVW_PREL_G0_NC: usize = 288; 814 pub const R_AARCH64_MOVW_PREL_G1: usize = 289; 815 pub const R_AARCH64_MOVW_PREL_G1_NC: usize = 290; 816 pub const R_AARCH64_MOVW_PREL_G2: usize = 291; 817 pub const R_AARCH64_MOVW_PREL_G2_NC: usize = 292; 818 pub const R_AARCH64_MOVW_PREL_G3: usize = 293; 819 pub const R_AARCH64_LDST128_ABS_LO12_NC: usize = 299; 820 pub const R_AARCH64_MOVW_GOTOFF_G0: usize = 300; 821 pub const R_AARCH64_MOVW_GOTOFF_G0_NC: usize = 301; 822 pub const R_AARCH64_MOVW_GOTOFF_G1: usize = 302; 823 pub const R_AARCH64_MOVW_GOTOFF_G1_NC: usize = 303; 824 pub const R_AARCH64_MOVW_GOTOFF_G2: usize = 304; 825 pub const R_AARCH64_MOVW_GOTOFF_G2_NC: usize = 305; 826 pub const R_AARCH64_MOVW_GOTOFF_G3: usize = 306; 827 pub const R_AARCH64_GOTREL64: usize = 307; 828 pub const R_AARCH64_GOTREL32: usize = 308; 829 pub const R_AARCH64_GOT_LD_PREL19: usize = 309; 830 pub const R_AARCH64_LD64_GOTOFF_LO15: usize = 310; 831 pub const R_AARCH64_ADR_GOT_PAGE: usize = 311; 832 pub const R_AARCH64_LD64_GOT_LO12_NC: usize = 312; 833 pub const R_AARCH64_LD64_GOTPAGE_LO15: usize = 313; 834 pub const R_AARCH64_TLSGD_ADR_PREL21: usize = 512; 835 pub const R_AARCH64_TLSGD_ADR_PAGE21: usize = 513; 836 pub const R_AARCH64_TLSGD_ADD_LO12_NC: usize = 514; 837 pub const R_AARCH64_TLSGD_MOVW_G1: usize = 515; 838 pub const R_AARCH64_TLSGD_MOVW_G0_NC: usize = 516; 839 pub const R_AARCH64_TLSLD_ADR_PREL21: usize = 517; 840 pub const R_AARCH64_TLSLD_ADR_PAGE21: usize = 518; 841 pub const R_AARCH64_TLSLD_ADD_LO12_NC: usize = 519; 842 pub const R_AARCH64_TLSLD_MOVW_G1: usize = 520; 843 pub const R_AARCH64_TLSLD_MOVW_G0_NC: usize = 521; 844 pub const R_AARCH64_TLSLD_LD_PREL19: usize = 522; 845 pub const R_AARCH64_TLSLD_MOVW_DTPREL_G2: usize = 523; 846 pub const R_AARCH64_TLSLD_MOVW_DTPREL_G1: usize = 524; 847 pub const R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC: usize = 525; 848 pub const R_AARCH64_TLSLD_MOVW_DTPREL_G0: usize = 526; 849 pub const R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC: usize = 527; 850 pub const R_AARCH64_TLSLD_ADD_DTPREL_HI12: usize = 528; 851 pub const R_AARCH64_TLSLD_ADD_DTPREL_LO12: usize = 529; 852 pub const R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC: usize = 530; 853 pub const R_AARCH64_TLSLD_LDST8_DTPREL_LO12: usize = 531; 854 pub const R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC: usize = 532; 855 pub const R_AARCH64_TLSLD_LDST16_DTPREL_LO12: usize = 533; 856 pub const R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC: usize = 534; 857 pub const R_AARCH64_TLSLD_LDST32_DTPREL_LO12: usize = 535; 858 pub const R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC: usize = 536; 859 pub const R_AARCH64_TLSLD_LDST64_DTPREL_LO12: usize = 537; 860 pub const R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC: usize = 538; 861 pub const R_AARCH64_TLSIE_MOVW_GOTTPREL_G1: usize = 539; 862 pub const R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC: usize = 540; 863 pub const R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: usize = 541; 864 pub const R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: usize = 542; 865 pub const R_AARCH64_TLSIE_LD_GOTTPREL_PREL19: usize = 543; 866 pub const R_AARCH64_TLSLE_MOVW_TPREL_G2: usize = 544; 867 pub const R_AARCH64_TLSLE_MOVW_TPREL_G1: usize = 545; 868 pub const R_AARCH64_TLSLE_MOVW_TPREL_G1_NC: usize = 546; 869 pub const R_AARCH64_TLSLE_MOVW_TPREL_G0: usize = 547; 870 pub const R_AARCH64_TLSLE_MOVW_TPREL_G0_NC: usize = 548; 871 pub const R_AARCH64_TLSLE_ADD_TPREL_HI12: usize = 549; 872 pub const R_AARCH64_TLSLE_ADD_TPREL_LO12: usize = 550; 873 pub const R_AARCH64_TLSLE_ADD_TPREL_LO12_NC: usize = 551; 874 pub const R_AARCH64_TLSLE_LDST8_TPREL_LO12: usize = 552; 875 pub const R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC: usize = 553; 876 pub const R_AARCH64_TLSLE_LDST16_TPREL_LO12: usize = 554; 877 pub const R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC: usize = 555; 878 pub const R_AARCH64_TLSLE_LDST32_TPREL_LO12: usize = 556; 879 pub const R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC: usize = 557; 880 pub const R_AARCH64_TLSLE_LDST64_TPREL_LO12: usize = 558; 881 pub const R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC: usize = 559; 882 pub const R_AARCH64_TLSDESC_LD_PREL19: usize = 560; 883 pub const R_AARCH64_TLSDESC_ADR_PREL21: usize = 561; 884 pub const R_AARCH64_TLSDESC_ADR_PAGE21: usize = 562; 885 pub const R_AARCH64_TLSDESC_LD64_LO12: usize = 563; 886 pub const R_AARCH64_TLSDESC_ADD_LO12: usize = 564; 887 pub const R_AARCH64_TLSDESC_OFF_G1: usize = 565; 888 pub const R_AARCH64_TLSDESC_OFF_G0_NC: usize = 566; 889 pub const R_AARCH64_TLSDESC_LDR: usize = 567; 890 pub const R_AARCH64_TLSDESC_ADD: usize = 568; 891 pub const R_AARCH64_TLSDESC_CALL: usize = 569; 892 pub const R_AARCH64_TLSLE_LDST128_TPREL_LO12: usize = 570; 893 pub const R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC: usize = 571; 894 pub const R_AARCH64_TLSLD_LDST128_DTPREL_LO12: usize = 572; 895 pub const R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC: usize = 573; 896 pub const R_AARCH64_COPY: usize = 1024; 897 pub const R_AARCH64_GLOB_DAT: usize = 1025; 898 pub const R_AARCH64_JUMP_SLOT: usize = 1026; 899 pub const R_AARCH64_RELATIVE: usize = 1027; 900 pub const R_AARCH64_TLS_DTPMOD64: usize = 1028; 901 pub const R_AARCH64_TLS_DTPREL64: usize = 1029; 902 pub const R_AARCH64_TLS_TPREL64: usize = 1030; 903 pub const R_AARCH64_TLSDESC: usize = 1031; 904 905 pub const R_X86_64_NONE: usize = 0; 906 pub const R_X86_64_64: usize = 1; 907 pub const R_X86_64_PC32: usize = 2; 908 pub const R_X86_64_GOT32: usize = 3; 909 pub const R_X86_64_PLT32: usize = 4; 910 pub const R_X86_64_COPY: usize = 5; 911 pub const R_X86_64_GLOB_DAT: usize = 6; 912 pub const R_X86_64_JUMP_SLOT: usize = 7; 913 pub const R_X86_64_RELATIVE: usize = 8; 914 pub const R_X86_64_GOTPCREL: usize = 9; 915 pub const R_X86_64_32: usize = 10; 916 pub const R_X86_64_32S: usize = 11; 917 pub const R_X86_64_16: usize = 12; 918 pub const R_X86_64_PC16: usize = 13; 919 pub const R_X86_64_8: usize = 14; 920 pub const R_X86_64_PC8: usize = 15; 921 pub const R_X86_64_DTPMOD64: usize = 16; 922 pub const R_X86_64_DTPOFF64: usize = 17; 923 pub const R_X86_64_TPOFF64: usize = 18; 924 pub const R_X86_64_TLSGD: usize = 19; 925 pub const R_X86_64_TLSLD: usize = 20; 926 pub const R_X86_64_DTPOFF32: usize = 21; 927 pub const R_X86_64_GOTTPOFF: usize = 22; 928 pub const R_X86_64_TPOFF32: usize = 23; 929 pub const R_X86_64_PC64: usize = 24; 930 pub const R_X86_64_GOTOFF64: usize = 25; 931 pub const R_X86_64_GOTPC32: usize = 26; 932 pub const R_X86_64_GOT64: usize = 27; 933 pub const R_X86_64_GOTPCREL64: usize = 28; 934 pub const R_X86_64_GOTPC64: usize = 29; 935 pub const R_X86_64_GOTPLT64: usize = 30; 936 pub const R_X86_64_PLTOFF64: usize = 31; 937 pub const R_X86_64_SIZE32: usize = 32; 938 pub const R_X86_64_SIZE64: usize = 33; 939 pub const R_X86_64_GOTPC32_TLSDESC: usize = 34; 940 pub const R_X86_64_TLSDESC_CALL: usize = 35; 941 pub const R_X86_64_TLSDESC: usize = 36; 942 pub const R_X86_64_IRELATIVE: usize = 37; 943 pub const R_X86_64_RELATIVE64: usize = 38; 944 pub const R_X86_64_NUM: usize = 39; 945 946 #[no_mangle] 947 pub extern "C" fn stupid_cbindgen_needs_a_function_that_holds_all_elf_structs( 948 a: Elf32_Ehdr, 949 b: Elf64_Ehdr, 950 c: Elf32_Shdr, 951 d: Elf64_Shdr, 952 e: Elf32_Sym, 953 f: Elf64_Sym, 954 g: Elf32_Syminfo, 955 h: Elf64_Syminfo, 956 i: Elf32_Rel, 957 j: Elf64_Rel, 958 k: Elf32_Rela, 959 l: Elf64_Rela, 960 m: Elf32_Phdr, 961 n: Elf64_Phdr, 962 o: Elf32_Dyn, 963 p: Elf64_Dyn, 964 q: Elf32_Verdef, 965 r: Elf64_Verdef, 966 s: Elf32_Verdaux, 967 t: Elf64_Verdaux, 968 u: Elf32_Verneed, 969 v: Elf64_Verneed, 970 w: Elf64_Vernaux, 971 x: Elf64_auxv_t, 972 y: Elf32_Nhdr, 973 z: Elf64_Nhdr, 974 aa: Elf64_Move, 975 ) { 976 } 977