coff.h revision 230132
1210284Sjmallett/*- 2232812Sjmallett * Copyright (c) 1994 Sean Eric Fagan 3215990Sjmallett * Copyright (c) 1994 S��ren Schmidt 4210284Sjmallett * All rights reserved. 5210284Sjmallett * 6215990Sjmallett * Redistribution and use in source and binary forms, with or without 7215990Sjmallett * modification, are permitted provided that the following conditions 8215990Sjmallett * are met: 9210284Sjmallett * 1. Redistributions of source code must retain the above copyright 10215990Sjmallett * notice, this list of conditions and the following disclaimer 11215990Sjmallett * in this position and unchanged. 12210284Sjmallett * 2. Redistributions in binary form must reproduce the above copyright 13215990Sjmallett * notice, this list of conditions and the following disclaimer in the 14215990Sjmallett * documentation and/or other materials provided with the distribution. 15215990Sjmallett * 3. The name of the author may not be used to endorse or promote products 16215990Sjmallett * derived from this software without specific prior written permission 17215990Sjmallett * 18232812Sjmallett * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 19215990Sjmallett * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 20215990Sjmallett * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21215990Sjmallett * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 22215990Sjmallett * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23215990Sjmallett * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24215990Sjmallett * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25215990Sjmallett * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26215990Sjmallett * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27215990Sjmallett * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28215990Sjmallett * 29232812Sjmallett * $FreeBSD: head/sys/i386/ibcs2/coff.h 230132 2012-01-15 13:23:18Z uqs $ 30215990Sjmallett */ 31215990Sjmallett 32215990Sjmallett#ifndef _COFF_H 33215990Sjmallett#define _COFF_H 34215990Sjmallett 35215990Sjmallettstruct filehdr { 36215990Sjmallett unsigned short f_magic; /* magic number */ 37215990Sjmallett unsigned short f_nscns; /* # of sections */ 38210284Sjmallett long f_timdat; /* time stamp */ 39210284Sjmallett long f_symptr; /* symbol table offset */ 40210284Sjmallett long f_nsyms; /* # of symbols */ 41210284Sjmallett unsigned short f_opthdr; /* size of system header */ 42210284Sjmallett unsigned short f_flags; /* flags, see below */ 43210284Sjmallett}; 44210284Sjmallett 45215990Sjmallettenum filehdr_flags { 46210284Sjmallett F_RELFLG = 0x01, /* relocs have been stripped */ 47210284Sjmallett F_EXEC = 0x02, /* executable file (or shlib) */ 48210284Sjmallett F_LNNO = 0x04, /* line numbers have been stripped */ 49210284Sjmallett F_LSYMS = 0x08, /* symbols have been stripped */ 50210284Sjmallett F_SWABD = 0x40, /* swabbed byte names */ 51232812Sjmallett F_AR16WR = 0x80, /* 16-bit, byte reversed words */ 52210284Sjmallett F_AR32WR = 0x100 /* 32-bit, byte reversed words */ 53210284Sjmallett}; 54210284Sjmallett 55210284Sjmallettstruct aouthdr { 56210284Sjmallett short magic; /* magic number -- see below */ 57210284Sjmallett short vstamp; /* artifacts from a by-gone day */ 58210284Sjmallett long tsize; /* */ 59210284Sjmallett long dsize; /* */ 60210284Sjmallett long bsize; /* */ 61210284Sjmallett long entry; /* Entry point -- offset into file */ 62210284Sjmallett long tstart; /* artifacts from a by-gone day */ 63215990Sjmallett long dstart; /* */ 64210284Sjmallett}; 65210284Sjmallett 66210284Sjmallett#define I386_COFF 0x14c 67210284Sjmallett 68210284Sjmallett#define COFF_OMAGIC 0407 /* impure format */ 69210284Sjmallett#define COFF_NMAGIC 0410 /* read-only text */ 70210284Sjmallett#define COFF_ZMAGIC 0413 /* pagable from disk */ 71210284Sjmallett#define COFF_SHLIB 0443 /* a shared library */ 72210284Sjmallett 73210284Sjmallettstruct scnhdr { 74210284Sjmallett char s_name[8]; /* name of section (e.g., ".text") */ 75210284Sjmallett long s_paddr; /* physical addr, used for standalone */ 76210284Sjmallett long s_vaddr; /* virtual address */ 77210284Sjmallett long s_size; /* size of section */ 78210284Sjmallett long s_scnptr; /* file offset of section */ 79210284Sjmallett long s_relptr; /* points to relocs for section */ 80210284Sjmallett long s_lnnoptr; /* points to line numbers for section */ 81210284Sjmallett unsigned short s_nreloc; /* # of relocs */ 82210284Sjmallett unsigned short s_nlnno; /* # of line no's */ 83210284Sjmallett long s_flags; /* section flags -- see below */ 84210284Sjmallett}; 85210284Sjmallett 86210284Sjmallettenum scnhdr_flags { 87210284Sjmallett STYP_REG = 0x00, /* regular (alloc'ed, reloc'ed, loaded) */ 88210284Sjmallett STYP_DSECT = 0x01, /* dummy (reloc'd) */ 89210284Sjmallett STYP_NOLOAD = 0x02, /* no-load (reloc'd) */ 90210284Sjmallett STYP_GROUP = 0x04, /* grouped */ 91210284Sjmallett STYP_PAD = 0x08, /* padding (loaded) */ 92210284Sjmallett STYP_COPY = 0x10, /* ??? */ 93210284Sjmallett STYP_TEXT = 0x20, /* text */ 94210284Sjmallett STYP_DATA = 0x40, /* data */ 95210284Sjmallett STYP_BSS = 0x80, /* bss */ 96210284Sjmallett STYP_INFO = 0x200, /* comment (!loaded, !alloc'ed, !reloc'd) */ 97210284Sjmallett STYP_OVER = 0x400, /* overlay (!allocated, reloc'd, !loaded) */ 98210284Sjmallett STYP_LIB = 0x800 /* lists shared library files */ 99210284Sjmallett}; 100210284Sjmallett 101210284Sjmallettstruct slhdr { 102210284Sjmallett long entry_length; 103210284Sjmallett long path_index; 104210284Sjmallett char *shlib_name; 105210284Sjmallett}; 106210284Sjmallett#endif /* _COFF_H */ 107210284Sjmallett