diff options
Diffstat (limited to 'src/libmach/elf.h')
-rw-r--r-- | src/libmach/elf.h | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/src/libmach/elf.h b/src/libmach/elf.h deleted file mode 100644 index 8dbc983f0..000000000 --- a/src/libmach/elf.h +++ /dev/null @@ -1,182 +0,0 @@ -// Inferno libmach/elf.h -// http://code.google.com/p/inferno-os/source/browse/utils/libmach/elf.h -// -// Copyright © 1994-1999 Lucent Technologies Inc. -// Power PC support Copyright © 1995-2004 C H Forsyth (forsyth@terzarima.net). -// Portions Copyright © 1997-1999 Vita Nuova Limited. -// Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com). -// Revisions Copyright © 2000-2004 Lucent Technologies Inc. and others. -// Portions Copyright © 2009 The Go Authors. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -/* - * Definitions needed for accessing ELF headers. - * 32-bit and 64-bit structs differ. - */ -typedef struct { - uchar ident[16]; /* ident bytes */ - ushort type; /* file type */ - ushort machine; /* target machine */ - int version; /* file version */ - uint32 elfentry; /* start address */ - uint32 phoff; /* phdr file offset */ - uint32 shoff; /* shdr file offset */ - int flags; /* file flags */ - ushort ehsize; /* sizeof ehdr */ - ushort phentsize; /* sizeof phdr */ - ushort phnum; /* number phdrs */ - ushort shentsize; /* sizeof shdr */ - ushort shnum; /* number shdrs */ - ushort shstrndx; /* shdr string index */ -} Ehdr32; - -typedef struct { - uchar ident[16]; /* ident bytes */ - ushort type; /* file type */ - ushort machine; /* target machine */ - int version; /* file version */ - uvlong elfentry; /* start address */ - uvlong phoff; /* phdr file offset */ - uvlong shoff; /* shdr file offset */ - int flags; /* file flags */ - ushort ehsize; /* sizeof ehdr */ - ushort phentsize; /* sizeof phdr */ - ushort phnum; /* number phdrs */ - ushort shentsize; /* sizeof shdr */ - ushort shnum; /* number shdrs */ - ushort shstrndx; /* shdr string index */ -} Ehdr64; - -typedef struct { - int type; /* entry type */ - uint32 offset; /* file offset */ - uint32 vaddr; /* virtual address */ - uint32 paddr; /* physical address */ - int filesz; /* file size */ - uint32 memsz; /* memory size */ - int flags; /* entry flags */ - int align; /* memory/file alignment */ -} Phdr32; - -typedef struct { - int type; /* entry type */ - int flags; /* entry flags */ - uvlong offset; /* file offset */ - uvlong vaddr; /* virtual address */ - uvlong paddr; /* physical address */ - uvlong filesz; /* file size */ - uvlong memsz; /* memory size */ - uvlong align; /* memory/file alignment */ -} Phdr64; - -typedef struct { - uint32 name; /* section name */ - uint32 type; /* SHT_... */ - uint32 flags; /* SHF_... */ - uint32 addr; /* virtual address */ - uint32 offset; /* file offset */ - uint32 size; /* section size */ - uint32 link; /* misc info */ - uint32 info; /* misc info */ - uint32 addralign; /* memory alignment */ - uint32 entsize; /* entry size if table */ -} Shdr32; - -typedef struct { - uint32 name; /* section name */ - uint32 type; /* SHT_... */ - uvlong flags; /* SHF_... */ - uvlong addr; /* virtual address */ - uvlong offset; /* file offset */ - uvlong size; /* section size */ - uint32 link; /* misc info */ - uint32 info; /* misc info */ - uvlong addralign; /* memory alignment */ - uvlong entsize; /* entry size if table */ -} Shdr64; - -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 */ - SPARC64 = 18, /* Sun SPARC v9 */ - POWER = 20, /* PowerPC */ - ARM = 40, /* ARM */ - AMD64 = 62, /* Amd64 */ - - NO_VERSION = 0, /* version, ident[VERSION] */ - CURRENT = 1, - - /* Phdr Codes */ - NOPTYPE = 0, /* type */ - 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 */ - Salloc = 2, - Sexec = 4, -}; - -#define ELF_MAG ((0x7f<<24) | ('E'<<16) | ('L'<<8) | 'F') |