50 #define ELF32_FSZ_ADDR 4 52 #define ELF32_FSZ_OFF 4 54 #define ELF32_FSZ_SWORD 4 56 #define ELF32_FSZ_WORD 4 58 #define ELF32_FSZ_HALF 2 61 #define ELF64_FSZ_ADDR 8 63 #define ELF64_FSZ_OFF 8 65 #define ELF64_FSZ_SHALF 4 69 #define ELF64_FSZ_SWORD 4 71 #define ELF64_FSZ_WORD 4 74 #define ELF64_FSZ_SWORD 8 76 #define ELF64_FSZ_WORD 8 79 #define ELF64_FSZ_XWORD 8 81 #define ELF64_FSZ_XWORD 8 83 #define ELF64_FSZ_HALF 4 85 #define ELF64_FSZ_QUARTER 2 135 #define EI_ABIVERSION 8 143 #define ELFMAG "\177ELF" 147 #define ELFCLASSNONE 0 150 #define ELFCLASSNUM 3 153 #define ELFDATANONE 0 154 #define ELFDATA2LSB 1 155 #define ELFDATA2MSB 2 163 #define ELFOSABI_SYSV 0 164 #define ELFOSABI_HPUX 1 165 #define ELFOSABI_STANDALONE 255 175 #define ET_LOOS 0xfe00 176 #define ET_HIOS 0xfeff 177 #define ET_LOPROC 0xff00 178 #define ET_HIPROC 0xffff 191 #define EM_MIPS_RS3_LE 10 196 #define EM_SPARC32PLUS 18 207 #define EM_SPARCV9 43 208 #define EM_TRICORE 44 211 #define EM_H8_300H 47 216 #define EM_COLDFIRE 52 222 #define EM_ALPHA_EXP 36902 265 #define PF_MASKOS 0x0ff00000 266 #define PF_MASKPROC 0xf0000000 268 #define PT_LOPROC 0x70000000 269 #define PT_HIPROC 0x7fffffff 271 #define PT_MIPS_REGINFO 0x70000000 304 #define SHT_PROGBITS 1 309 #define SHT_DYNAMIC 6 314 #define SHT_DYNSYM 11 317 #define SHT_LOOS 0x60000000 318 #define SHT_HIOS 0x6fffffff 319 #define SHT_LOPROC 0x70000000 320 #define SHT_HIPROC 0x7fffffff 321 #define SHT_LOUSER 0x80000000 322 #define SHT_HIUSER 0xffffffff 325 #define SHF_WRITE 0x1 326 #define SHF_ALLOC 0x2 327 #define SHF_EXECINSTR 0x4 329 #define SHF_MASKOS 0x0f000000 330 #define SHF_MASKPROC 0xf0000000 354 #define ELF_SYM_UNDEFINED 0 364 #define STB_LOPROC 13 365 #define STB_HIPROC 15 371 #define STT_SECTION 3 377 #define STT_LOPROC 13 378 #define STT_HIPROC 15 381 #define ELF32_ST_BIND(info) ((Elf32_Word)(info) >> 4) 382 #define ELF32_ST_TYPE(info) ((Elf32_Word)(info) & 0xf) 383 #define ELF32_ST_INFO(bind,type) ((Elf_Byte)(((bind) << 4) | ((type) & 0xf))) 385 #define ELF64_ST_BIND(info) ((Elf64_Xword)(info) >> 4) 386 #define ELF64_ST_TYPE(info) ((Elf64_Xword)(info) & 0xf) 387 #define ELF64_ST_INFO(bind,type) ((Elf_Byte)(((bind) << 4) | ((type) & 0xf))) 394 #define SHN_LORESERVE 0xff00 395 #define SHN_ABS 0xfff1 396 #define SHN_COMMON 0xfff2 397 #define SHN_HIRESERVE 0xffff 399 #define SHN_LOPROC 0xff00 400 #define SHN_HIPROC 0xff1f 401 #define SHN_LOOS 0xff20 402 #define SHN_HIOS 0xff3f 404 #define SHN_MIPS_ACOMMON 0xff00 405 #define SHN_MIPS_TEXT 0xff01 406 #define SHN_MIPS_DATA 0xff02 407 #define SHN_MIPS_SCOMMON 0xff03 424 #define ELF32_R_SYM(info) ((info) >> 8) 425 #define ELF32_R_TYPE(info) ((info) & 0xff) 426 #define ELF32_R_INFO(sym, type) (((sym) << 8) + (unsigned char)(type)) 440 #define ELF64_R_SYM(info) ((info) >> 32) 441 #define ELF64_R_TYPE(info) ((info) & 0xffffffff) 442 #define ELF64_R_INFO(sym,type) (((sym) << 32) + (type)) 466 #define DT_PLTRELSZ 2 480 #define DT_SYMBOLIC 16 486 #define DT_TEXTREL 22 488 #define DT_BIND_NOW 24 489 #define DT_INIT_ARRAY 25 490 #define DT_FINI_ARRAY 26 491 #define DT_INIT_ARRAYSZ 27 492 #define DT_FINI_ARRAYSZ 28 495 #define DT_LOOS 0x60000000 496 #define DT_HIOS 0x6fffffff 497 #define DT_LOPROC 0x70000000 498 #define DT_HIPROC 0x7fffffff 524 #define AT_DCACHEBSIZE 10 525 #define AT_ICACHEBSIZE 11 526 #define AT_UCACHEBSIZE 12 529 #define AT_MIPS_NOTELF 10 531 #define AT_SUN_UID 2000 532 #define AT_SUN_RUID 2001 533 #define AT_SUN_GID 2002 534 #define AT_SUN_RGID 2003 537 #define AT_SUN_LDELF 2004 538 #define AT_SUN_LDSHDR 2005 539 #define AT_SUN_LDNAME 2006 540 #define AT_SUN_LPGSIZE 2007 543 #define AT_SUN_PLATFORM 2008 544 #define AT_SUN_HWCAP 2009 545 #define AT_SUN_IFLUSH 2010 546 #define AT_SUN_CPU 2011 548 #define AT_SUN_EMUL_ENTRY 2012 549 #define AT_SUN_EMUL_EXECFD 2013 551 #define AT_SUN_EXECNAME 2014 568 #define ELF_NOTE_TYPE_OSVERSION 1 571 #define ELF_NOTE_NETBSD_TYPE_OSVERSION ELF_NOTE_TYPE_OSVERSION 574 #define ELF_NOTE_NETBSD_TYPE_EMULNAME 2 577 #define ELF_NOTE_NETBSD_NAMESZ 7 578 #define ELF_NOTE_NETBSD_DESCSZ 4 580 #define ELF_NOTE_NETBSD_NAME "NetBSD\0\0" 583 #define ELF_NOTE_GNU_NAMESZ 4 584 #define ELF_NOTE_GNU_DESCSZ 4 586 #define ELF_NOTE_GNU_NAME "GNU\0" 589 #define ELF_NOTE_GNU_OSMASK (u_int32_t)0xff000000 590 #define ELF_NOTE_GNU_OSLINUX (u_int32_t)0x01000000 591 #define ELF_NOTE_GNU_OSMACH (u_int32_t)0x00000000 594 #define CONCAT(x,y) __CONCAT(x,y) 595 #define ELFNAME(x) CONCAT(elf,CONCAT(ELFSIZE,CONCAT(_,x))) 596 #define ELFNAME2(x,y) CONCAT(x,CONCAT(_elf,CONCAT(ELFSIZE,CONCAT(_,y)))) 597 #define ELFNAMEEND(x) CONCAT(x,CONCAT(_elf,ELFSIZE)) 598 #define ELFDEFNNAME(x) CONCAT(ELF,CONCAT(ELFSIZE,CONCAT(_,x))) 603 #if defined(ELFSIZE) && (ELFSIZE == 32) 604 #define Elf_Ehdr Elf32_Ehdr 605 #define Elf_Phdr Elf32_Phdr 606 #define Elf_Shdr Elf32_Shdr 607 #define Elf_Sym Elf32_Sym 608 #define Elf_Rel Elf32_Rel 609 #define Elf_Rela Elf32_Rela 610 #define Elf_Dyn Elf32_Dyn 611 #define Elf_Word Elf32_Word 612 #define Elf_Sword Elf32_Sword 613 #define Elf_Addr Elf32_Addr 614 #define Elf_Off Elf32_Off 615 #define Elf_Nhdr Elf32_Nhdr 617 #define ELF_R_SYM ELF32_R_SYM 618 #define ELF_R_TYPE ELF32_R_TYPE 619 #define ELFCLASS ELFCLASS32 621 #define ELF_ST_BIND ELF32_ST_BIND 622 #define ELF_ST_TYPE ELF32_ST_TYPE 623 #define ELF_ST_INFO ELF32_ST_INFO 625 #define AuxInfo Aux32Info 626 #elif defined(ELFSIZE) && (ELFSIZE == 64) 627 #define Elf_Ehdr Elf64_Ehdr 628 #define Elf_Phdr Elf64_Phdr 629 #define Elf_Shdr Elf64_Shdr 630 #define Elf_Sym Elf64_Sym 631 #define Elf_Rel Elf64_Rel 632 #define Elf_Rela Elf64_Rela 633 #define Elf_Dyn Elf64_Dyn 634 #define Elf_Word Elf64_Word 635 #define Elf_Sword Elf64_Sword 636 #define Elf_Addr Elf64_Addr 637 #define Elf_Off Elf64_Off 638 #define Elf_Nhdr Elf64_Nhdr 640 #define ELF_R_SYM ELF64_R_SYM 641 #define ELF_R_TYPE ELF64_R_TYPE 642 #define ELFCLASS ELFCLASS64 644 #define ELF_ST_BIND ELF64_ST_BIND 645 #define ELF_ST_TYPE ELF64_ST_TYPE 646 #define ELF_ST_INFO ELF64_ST_INFO 648 #define AuxInfo Aux64Info 653 #define ELF_AUX_ENTRIES 8 654 #define ELF32_NO_ADDR (~(Elf32_Addr)0) 655 #define ELF64_NO_ADDR (~(Elf64_Addr)0) 657 #if defined(ELFSIZE) && (ELFSIZE == 64) 658 #define ELF_NO_ADDR ELF64_NO_ADDR 659 #elif defined(ELFSIZE) && (ELFSIZE == 32) 660 #define ELF_NO_ADDR ELF32_NO_ADDR 668 Elf_Addr arg_phentsize;
674 #include "opt_execfmt.h" 678 int exec_elf32_makecmds
__P((
struct proc *,
struct exec_package *));
679 int elf32_read_from
__P((
struct proc *,
struct vnode *, u_long,
681 void *elf32_copyargs
__P((
struct exec_package *,
struct ps_strings *,
686 int exec_elf64_makecmds
__P((
struct proc *,
struct exec_package *));
687 int elf64_read_from
__P((
struct proc *,
struct vnode *, u_long,
689 void *elf64_copyargs
__P((
struct exec_package *,
struct ps_strings *,
694 int exec_elf_setup_stack
__P((
struct proc *,
struct exec_package *));
Elf64_Quarter e_shentsize
Elf64_Quarter e_phentsize