Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys Move a bunch of the COFF definitions into exec_coff.h, s...
details: https://anonhg.NetBSD.org/src/rev/ffb7c9f522ff
branches: trunk
changeset: 487218:ffb7c9f522ff
user: mycroft <mycroft%NetBSD.org@localhost>
date: Sun Jun 04 16:23:59 2000 +0000
description:
Move a bunch of the COFF definitions into exec_coff.h, so they can be used by
other code. XXX Not tested on SH3 yet.
diffstat:
sys/arch/i386/include/coff_machdep.h | 45 ++++++++++++++
sys/arch/sh3/include/coff_machdep.h | 111 +----------------------------------
sys/compat/ibcs2/ibcs2_exec.c | 13 ++-
sys/compat/ibcs2/ibcs2_exec.h | 102 +-------------------------------
sys/sys/exec_coff.h | 111 ++++++++++++++++++++++++++++++++++-
5 files changed, 165 insertions(+), 217 deletions(-)
diffs (truncated from 494 to 300 lines):
diff -r ccc295c4b7a4 -r ffb7c9f522ff sys/arch/i386/include/coff_machdep.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/include/coff_machdep.h Sun Jun 04 16:23:59 2000 +0000
@@ -0,0 +1,45 @@
+/* $NetBSD: coff_machdep.h,v 1.1 2000/06/04 16:23:59 mycroft Exp $ */
+
+/*-
+ * Copyright (c) 1997 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Charles M. Hannum.
+ *
+ * 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.
+ * 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. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the NetBSD
+ * Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``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 FOUNDATION OR CONTRIBUTORS
+ * 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.
+ */
+
+#ifndef _I386_COFF_MACHDEP_H_
+#define _I386_COFF_MACHDEP_H_
+
+#define COFF_MAGIC_I386 0x14c
+#define COFF_BADMAG(ex) (ex->f_magic != COFF_MAGIC_I386)
+
+#endif /* !_I386_COFF_MACHDEP_H_ */
diff -r ccc295c4b7a4 -r ffb7c9f522ff sys/arch/sh3/include/coff_machdep.h
--- a/sys/arch/sh3/include/coff_machdep.h Sun Jun 04 16:06:25 2000 +0000
+++ b/sys/arch/sh3/include/coff_machdep.h Sun Jun 04 16:23:59 2000 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: coff_machdep.h,v 1.2 2000/01/02 13:39:51 msaitoh Exp $ */
+/* $NetBSD: coff_machdep.h,v 1.3 2000/06/04 16:24:01 mycroft Exp $ */
/*
* Copyright (c) 1994, 1995 Scott Bartram
@@ -33,49 +33,10 @@
#ifndef _SH3_COFF_MACHDEP_H_
#define _SH3_COFF_MACHDEP_H_
-/*
- * COFF file header
- */
-
-struct coff_filehdr {
- u_short f_magic; /* magic number */
- u_short f_nscns; /* # of sections */
- long f_timdat; /* timestamp */
- long f_symptr; /* file offset of symbol table */
- long f_nsyms; /* # of symbol table entries */
- u_short f_opthdr; /* size of optional header */
- u_short f_flags; /* flags */
-};
-
/* f_magic flags */
#define COFF_MAGIC_SH3_BIG 0x500
#define COFF_MAGIC_SH3_LITTLE 0x550
-/* f_flags */
-#define COFF_F_RELFLG 0x1
-#define COFF_F_EXEC 0x2
-#define COFF_F_LNNO 0x4
-#define COFF_F_LSYMS 0x8
-#define COFF_F_SWABD 0x40
-#define COFF_F_AR16WR 0x80
-#define COFF_F_AR32WR 0x100
-#define COFF_F_AR32W 0x200
-
-/*
- * COFF system header
- */
-
-struct coff_aouthdr {
- short a_magic;
- short a_vstamp;
- long a_tsize;
- long a_dsize;
- long a_bsize;
- long a_entry;
- long a_tstart;
- long a_dstart;
-};
-
/* magic */
#define COFF_OMAGIC 0444 /* text not write-protected; data seg
is contiguous with text */
@@ -85,76 +46,6 @@
direct paging */
#define COFF_SMAGIC 0443 /* shared lib */
-/*
- * COFF section header
- */
-
-struct coff_scnhdr {
- char s_name[8];
- long s_paddr;
- long s_vaddr;
- long s_size;
- long s_scnptr;
- long s_relptr;
- long s_lnnoptr;
- u_short s_nreloc;
- u_short s_nlnno;
- long s_flags;
-};
-
-/* s_flags */
-#define COFF_STYP_REG 0x00
-#define COFF_STYP_DSECT 0x01
-#define COFF_STYP_NOLOAD 0x02
-#define COFF_STYP_GROUP 0x04
-#define COFF_STYP_PAD 0x08
-#define COFF_STYP_COPY 0x10
-#define COFF_STYP_TEXT 0x20
-#define COFF_STYP_DATA 0x40
-#define COFF_STYP_BSS 0x80
-#define COFF_STYP_INFO 0x200
-#define COFF_STYP_OVER 0x400
-#define COFF_STYP_SHLIB 0x800
-
-/*
- * COFF shared library header
- */
-
-struct coff_slhdr {
- long entry_len; /* in words */
- long path_index; /* in words */
- char sl_name[1];
-};
-
-struct coff_exechdr {
- struct coff_filehdr f;
- struct coff_aouthdr a;
-};
-
-#define COFF_ROUND(val, by) (((val) + by - 1) & ~(by - 1))
-
-#define COFF_ALIGN(a) ((a) & ~(COFF_LDPGSZ - 1))
-
-#define COFF_HDR_SIZE \
- (sizeof(struct coff_filehdr) + sizeof(struct coff_aouthdr))
-
-#define COFF_BLOCK_ALIGN(ap, value) \
- ((ap)->a_magic == COFF_ZMAGIC ? COFF_ROUND(value, COFF_LDPGSZ) : \
- value)
-
-#define COFF_TXTOFF(fp, ap) \
- ((ap)->a_magic == COFF_ZMAGIC ? 0 : \
- COFF_ROUND(COFF_HDR_SIZE + (fp)->f_nscns * \
- sizeof(struct coff_scnhdr), \
- COFF_SEGMENT_ALIGNMENT(fp, ap)))
-
-#define COFF_DATOFF(fp, ap) \
- (COFF_BLOCK_ALIGN(ap, COFF_TXTOFF(fp, ap) + (ap)->a_tsize))
-
-#define COFF_SEGMENT_ALIGN(fp, ap, value) \
- (COFF_ROUND(value, ((ap)->a_magic == COFF_ZMAGIC ? COFF_LDPGSZ : \
- COFF_SEGMENT_ALIGNMENT(fp, ap))))
-
#define COFF_LDPGSZ 4096
#define COFF_SEGMENT_ALIGNMENT(fp, ap) \
diff -r ccc295c4b7a4 -r ffb7c9f522ff sys/compat/ibcs2/ibcs2_exec.c
--- a/sys/compat/ibcs2/ibcs2_exec.c Sun Jun 04 16:06:25 2000 +0000
+++ b/sys/compat/ibcs2/ibcs2_exec.c Sun Jun 04 16:23:59 2000 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ibcs2_exec.c,v 1.26 2000/04/11 04:37:49 chs Exp $ */
+/* $NetBSD: ibcs2_exec.c,v 1.27 2000/06/04 16:24:02 mycroft Exp $ */
/*
* Copyright (c) 1994, 1995, 1998 Scott Bartram
@@ -46,6 +46,7 @@
#include <sys/vnode.h>
#include <sys/mount.h>
#include <sys/exec.h>
+#include <sys/exec_coff.h>
#include <sys/exec_elf.h>
#include <sys/resourcevar.h>
#ifdef IBCS2_DEBUG
@@ -357,9 +358,9 @@
struct coff_filehdr *fp;
struct coff_aouthdr *ap;
{
- epp->ep_taddr = COFF_SEGMENT_ALIGN(ap, ap->a_tstart);
+ epp->ep_taddr = COFF_SEGMENT_ALIGN(fp, ap, ap->a_tstart);
epp->ep_tsize = ap->a_tsize;
- epp->ep_daddr = COFF_SEGMENT_ALIGN(ap, ap->a_dstart);
+ epp->ep_daddr = COFF_SEGMENT_ALIGN(fp, ap, ap->a_dstart);
epp->ep_dsize = ap->a_dsize;
epp->ep_entry = ap->a_entry;
@@ -372,7 +373,7 @@
/* set up command for bss segment */
if (ap->a_bsize > 0)
NEW_VMCMD(&epp->ep_vmcmds, vmcmd_map_zero, ap->a_bsize,
- COFF_SEGMENT_ALIGN(ap, ap->a_dstart + ap->a_dsize),
+ COFF_SEGMENT_ALIGN(fp, ap, ap->a_dstart + ap->a_dsize),
NULLVP, 0,
VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE);
@@ -391,7 +392,7 @@
struct coff_filehdr *fp;
struct coff_aouthdr *ap;
{
- epp->ep_taddr = COFF_SEGMENT_ALIGN(ap, ap->a_tstart);
+ epp->ep_taddr = COFF_SEGMENT_ALIGN(fp, ap, ap->a_tstart);
epp->ep_tsize = ap->a_tsize;
epp->ep_daddr = COFF_ROUND(ap->a_dstart, COFF_LDPGSZ);
epp->ep_dsize = ap->a_dsize;
@@ -410,7 +411,7 @@
/* set up command for bss segment */
if (ap->a_bsize > 0)
NEW_VMCMD(&epp->ep_vmcmds, vmcmd_map_zero, ap->a_bsize,
- COFF_SEGMENT_ALIGN(ap, ap->a_dstart + ap->a_dsize),
+ COFF_SEGMENT_ALIGN(fp, ap, ap->a_dstart + ap->a_dsize),
NULLVP, 0,
VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE);
diff -r ccc295c4b7a4 -r ffb7c9f522ff sys/compat/ibcs2/ibcs2_exec.h
--- a/sys/compat/ibcs2/ibcs2_exec.h Sun Jun 04 16:06:25 2000 +0000
+++ b/sys/compat/ibcs2/ibcs2_exec.h Sun Jun 04 16:23:59 2000 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ibcs2_exec.h,v 1.6 2000/01/10 03:14:56 matt Exp $ */
+/* $NetBSD: ibcs2_exec.h,v 1.7 2000/06/04 16:24:02 mycroft Exp $ */
/*
* Copyright (c) 1994, 1995, 1998 Scott Bartram
@@ -37,43 +37,9 @@
* COFF file header
*/
-struct coff_filehdr {
- u_short f_magic; /* magic number */
- u_short f_nscns; /* # of sections */
- long f_timdat; /* timestamp */
- long f_symptr; /* file offset of symbol table */
- long f_nsyms; /* # of symbol table entries */
- u_short f_opthdr; /* size of optional header */
- u_short f_flags; /* flags */
-};
-
/* f_magic flags */
/* defined in <machine/ibcs2_machdep.h> */
-/* f_flags */
-#define COFF_F_RELFLG 0x1
-#define COFF_F_EXEC 0x2
-#define COFF_F_LNNO 0x4
-#define COFF_F_LSYMS 0x8
-#define COFF_F_SWABD 0x40
-#define COFF_F_AR16WR 0x80
-#define COFF_F_AR32WR 0x100
-
-/*
- * COFF system header
- */
-
-struct coff_aouthdr {
- short a_magic;
- short a_vstamp;
- long a_tsize;
- long a_dsize;
- long a_bsize;
- long a_entry;
- long a_tstart;
- long a_dstart;
-};
-
/* magic */
#define COFF_OMAGIC 0407 /* text not write-protected; data seg
is contiguous with text */
@@ -83,73 +49,9 @@
direct paging */
#define COFF_SMAGIC 0443 /* shared lib */
-/*
- * COFF section header
Home |
Main Index |
Thread Index |
Old Index