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