123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /*
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
- enum {
- Ehdr32sz = 52,
- Phdr32sz = 32,
- Shdr32sz = 40,
- Ehdr64sz = 64,
- Phdr64sz = 56,
- Shdr64sz = 64,
- };
- /* from /sys/src/libmach/elf.h */
- enum {
- /* Ehdr codes */
- MAG0 = 0, /* ident[] indexes */
- MAG1 = 1,
- MAG2 = 2,
- MAG3 = 3,
- CLASS = 4,
- DATA = 5,
- VERSION = 6,
- ELFCLASSNONE = 0, /* ident[CLASS] */
- ELFCLASS32 = 1,
- ELFCLASS64 = 2,
- ELFCLASSNUM = 3,
- ELFDATANONE = 0, /* ident[DATA] */
- ELFDATA2LSB = 1,
- ELFDATA2MSB = 2,
- ELFDATANUM = 3,
- NOETYPE = 0, /* type */
- REL = 1,
- EXEC = 2,
- DYN = 3,
- CORE = 4,
- NONE = 0, /* machine */
- M32 = 1, /* AT&T WE 32100 */
- SPARC = 2, /* Sun SPARC */
- I386 = 3, /* Intel 80386 */
- M68K = 4, /* Motorola 68000 */
- M88K = 5, /* Motorola 88000 */
- I486 = 6, /* Intel 80486 */
- I860 = 7, /* Intel i860 */
- MIPS = 8, /* Mips R2000 */
- S370 = 9, /* Amdhal */
- MIPSR4K = 10, /* Mips R4000 */
- SPARC64 = 18, /* Sun SPARC v9 */
- POWER = 20, /* PowerPC */
- POWER64 = 21, /* PowerPC64 */
- ARM = 40, /* ARM */
- AMD64 = 62, /* Amd64 */
- ARM64 = 183, /* ARM64 */
- NO_VERSION = 0, /* version, ident[VERSION] */
- CURRENT = 1,
- /* Phdr Codes */
- NOPTYPE = 0, /* type */
- PT_LOAD = 1,
- DYNAMIC = 2,
- INTERP = 3,
- NOTE = 4,
- SHLIB = 5,
- PHDR = 6,
- R = 0x4, /* flags */
- W = 0x2,
- X = 0x1,
- /* Shdr Codes */
- Progbits = 1, /* section types */
- Strtab = 3,
- Nobits = 8,
- Swrite = 1, /* section attributes (flags) */
- Salloc = 2,
- Sexec = 4,
- };
- typedef void (*Putl)(long);
- void elf32(int mach, int bo, int addpsects, void (*putpsects)(Putl));
- void elf32phdr(void (*putl)(long), uint32_t type, uint32_t off,
- uint32_t vaddr,
- uint32_t paddr, uint32_t filesz, uint32_t memsz, uint32_t prots,
- uint32_t align);
- void elf32shdr(void (*putl)(long), uint32_t name, uint32_t type,
- uint32_t flags,
- uint32_t vaddr, uint32_t off, uint32_t sectsz, uint32_t link,
- uint32_t addnl,
- uint32_t align, uint32_t entsz);
- void elf64(int mach, int bo, int addpsects, void (*putpsects)(Putl));
- void elf64phdr(void (*putl)(long), void (*putll)(vlong), uint32_t type,
- uvlong off, uvlong vaddr, uvlong paddr, uvlong filesz, uvlong memsz,
- uint32_t prots, uvlong align);
- void elf64shdr(void (*putl)(long), void (*putll)(vlong), uint32_t name,
- uint32_t type, uvlong flags, uvlong vaddr, uvlong off,
- uvlong sectsz,
- uint32_t link, uint32_t addnl, uvlong align, uvlong entsz);
|