summaryrefslogtreecommitdiffstats
path: root/sys/i386/ibcs2/coff.h
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>1994-10-14 08:53:16 +0000
committersos <sos@FreeBSD.org>1994-10-14 08:53:16 +0000
commit8c25a4d2ace95c98887a2c73b1a1b7ac8c79f8ef (patch)
tree03e7e36f42559e1855d7488025f88b38a06ded17 /sys/i386/ibcs2/coff.h
parente5a7fbf2bb8340c56fa8524e8b92c32ee9abb588 (diff)
downloadFreeBSD-src-8c25a4d2ace95c98887a2c73b1a1b7ac8c79f8ef.zip
FreeBSD-src-8c25a4d2ace95c98887a2c73b1a1b7ac8c79f8ef.tar.gz
iBCS2 emulator core files.
This is the main files for the iBCS2 emulator. It can be use compiled into the kernel by using: options IBCS2 options COMPAT_IBCS2 or as a lkm module using: options COMPAT_IBCS2 and then loading it via the ibcs2 script in /usr/bin REMEMBER: this code is still experimental ! NO WARRENTY ! Submitted by: sef@kithrup.com, mostyn@mrl.com, sos@kmd-ac.dk
Diffstat (limited to 'sys/i386/ibcs2/coff.h')
-rw-r--r--sys/i386/ibcs2/coff.h106
1 files changed, 106 insertions, 0 deletions
diff --git a/sys/i386/ibcs2/coff.h b/sys/i386/ibcs2/coff.h
new file mode 100644
index 0000000..0a25b84
--- /dev/null
+++ b/sys/i386/ibcs2/coff.h
@@ -0,0 +1,106 @@
+/*-
+ * Copyright (c) 1994 Sean Eric Fagan
+ * Copyright (c) 1994 Søren Schmidt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software withough specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $Id: coff.h,v 1.1 1994/10/12 19:37:16 sos Exp $
+ */
+
+#ifndef _COFF_H
+#define _COFF_H
+
+struct filehdr {
+ unsigned short f_magic; /* magic number */
+ unsigned short f_nscns; /* # of sections */
+ long f_timdat; /* time stamp */
+ long f_symptr; /* symbol table offset */
+ long f_nsyms; /* # of symbols */
+ unsigned short f_opthdr; /* size of system header */
+ unsigned short f_flags; /* flags, see below */
+};
+
+enum filehdr_flags {
+ F_RELFLG = 0x01, /* relocs have been stripped */
+ F_EXEC = 0x02, /* executable file (or shlib) */
+ F_LNNO = 0x04, /* line numbers have been stripped */
+ F_LSYMS = 0x08, /* symbols have been stripped */
+ F_SWABD = 0x40, /* swabbed byte names */
+ F_AR16WR = 0x80, /* 16-bit, byte reversed words */
+ F_AR32WR = 0x100 /* 32-bit, byte reversed words */
+};
+
+struct aouthdr {
+ short magic; /* magic number -- see below */
+ short vstamp; /* artifacts from a by-gone day */
+ long tsize; /* */
+ long dsize; /* */
+ long bsize; /* */
+ long entry; /* Entry point -- offset into file */
+ long tstart; /* artifacts from a by-gone day */
+ long dstart; /* */
+};
+
+#define I386_COFF 0x14c
+
+#define COFF_OMAGIC 0407 /* impure format */
+#define COFF_NMAGIC 0410 /* read-only text */
+#define COFF_ZMAGIC 0413 /* pagable from disk */
+#define COFF_SHLIB 0443 /* a shared library */
+
+struct scnhdr {
+ char s_name[8]; /* name of section (e.g., ".text") */
+ long s_paddr; /* physical addr, used for standalone */
+ long s_vaddr; /* virtual address */
+ long s_size; /* size of section */
+ long s_scnptr; /* file offset of section */
+ long s_relptr; /* points to relocs for section */
+ long s_lnnoptr; /* points to line numbers for section */
+ unsigned short s_nreloc; /* # of relocs */
+ unsigned short s_nlnno; /* # of line no's */
+ long s_flags; /* section flags -- see below */
+};
+
+enum scnhdr_flags {
+ STYP_REG = 0x00, /* regular (alloc'ed, reloc'ed, loaded) */
+ STYP_DSECT = 0x01, /* dummy (reloc'd) */
+ STYP_NOLOAD = 0x02, /* no-load (reloc'd) */
+ STYP_GROUP = 0x04, /* grouped */
+ STYP_PAD = 0x08, /* padding (loaded) */
+ STYP_COPY = 0x10, /* ??? */
+ STYP_TEXT = 0x20, /* text */
+ STYP_DATA = 0x40, /* data */
+ STYP_BSS = 0x80, /* bss */
+ STYP_INFO = 0x200, /* comment (!loaded, !alloc'ed, !reloc'd) */
+ STYP_OVER = 0x400, /* overlay (!allocated, reloc'd, !loaded) */
+ STYP_LIB = 0x800 /* lists shared library files */
+};
+
+struct slhdr {
+ long entry_length;
+ long path_index;
+ char *shlib_name;
+};
+#endif /* _COFF_H */
OpenPOWER on IntegriCloud