summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2024-10-16 18:47:49 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2024-10-16 18:47:49 +0000
commit157461f00db007d6b7e901dfd2c7309aaa80f935 (patch)
treefa5550a47de7e4551970e5b44a7205ed59c67d08
parentf79ed711b86f19fd16c7cbd5fb905c21f9907c17 (diff)
a.out is no longer the commonly encountered binary file format, the world has
moved to ELF. Move the a.out specific defines and macros, but the MID_xxx values, from <sys/exec.h> to <a.out.h>, and update the few userland binaries which really need these defines (i.e. boot-related tools for old architectures) to explicitly include <a.out.h> when needed. "Fine" deraadt@
-rw-r--r--distrib/special/more/more.c4
-rw-r--r--include/a.out.h114
-rw-r--r--sys/arch/hppa/stand/mkboot/mkboot.c6
-rw-r--r--sys/sys/exec.h120
-rw-r--r--usr.sbin/mopd/common/file.c4
-rw-r--r--usr.sbin/mopd/mopa.out/mopa.out.c4
6 files changed, 123 insertions, 129 deletions
diff --git a/distrib/special/more/more.c b/distrib/special/more/more.c
index cd95e25eb0d..9178e888960 100644
--- a/distrib/special/more/more.c
+++ b/distrib/special/more/more.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: more.c,v 1.41 2019/06/28 13:32:52 deraadt Exp $ */
+/* $OpenBSD: more.c,v 1.42 2024/10/16 18:47:47 miod Exp $ */
/*
* Copyright (c) 2003 Todd C. Miller <millert@openbsd.org>
@@ -63,10 +63,10 @@
*/
#include <sys/types.h>
-#include <sys/exec.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
+#include <a.out.h>
#include <ctype.h>
#include <curses.h>
#include <errno.h>
diff --git a/include/a.out.h b/include/a.out.h
index 8191d174d4f..3e6b584b15c 100644
--- a/include/a.out.h
+++ b/include/a.out.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: a.out.h,v 1.3 2003/06/02 19:34:12 millert Exp $ */
+/* $OpenBSD: a.out.h,v 1.4 2024/10/16 18:47:48 miod Exp $ */
/* $NetBSD: a.out.h,v 1.15 1994/10/26 00:55:42 cgd Exp $ */
/*-
@@ -36,6 +36,118 @@
#ifndef _AOUT_H_
#define _AOUT_H_
+/*
+ * Legacy a.out structures and defines.
+ */
+
+/*
+ * Header prepended to each a.out file.
+ * only manipulate the a_midmag field via the
+ * N_SETMAGIC/N_GET{MAGIC,MID,FLAG} macros below.
+ */
+struct exec {
+ u_int32_t a_midmag; /* htonl(flags<<26|mid<<16|magic) */
+ u_int32_t a_text; /* text segment size */
+ u_int32_t a_data; /* initialized data size */
+ u_int32_t a_bss; /* uninitialized data size */
+ u_int32_t a_syms; /* symbol table size */
+ u_int32_t a_entry; /* entry point */
+ u_int32_t a_trsize; /* text relocation size */
+ u_int32_t a_drsize; /* data relocation size */
+};
+
+/* a_magic */
+#define OMAGIC 0407 /* old impure format */
+#define NMAGIC 0410 /* read-only text */
+#define ZMAGIC 0413 /* demand load format */
+#define QMAGIC 0314 /* "compact" demand load format; deprecated */
+
+/*
+ * a_flags
+ */
+#define EX_DYNAMIC 0x20
+#define EX_PIC 0x10
+#define EX_DPMASK 0x30
+/*
+ * Interpretation of the (a_flags & EX_DPMASK) bits:
+ *
+ * 00 traditional executable or object file
+ * 01 object file contains PIC code (set by `as -k')
+ * 10 dynamic executable
+ * 11 position independent executable image
+ * (eg. a shared library)
+ *
+ */
+
+/*
+ * The a.out structure's a_midmag field is a network-byteorder encoding
+ * of this int
+ * FFFFFFmmmmmmmmmmMMMMMMMMMMMMMMMM
+ * Where `F' is 6 bits of flag like EX_DYNAMIC,
+ * `m' is 10 bits of machine-id like MID_I386, and
+ * `M' is 16 bits worth of magic number, ie. ZMAGIC.
+ * The macros below will set/get the needed fields.
+ */
+#define N_GETMAGIC(ex) \
+ ( (((ex).a_midmag)&0xffff0000) ? (ntohl(((ex).a_midmag))&0xffff) : ((ex).a_midmag))
+#define N_GETMAGIC2(ex) \
+ ( (((ex).a_midmag)&0xffff0000) ? (ntohl(((ex).a_midmag))&0xffff) : \
+ (((ex).a_midmag) | 0x10000) )
+#define N_GETMID(ex) \
+ ( (((ex).a_midmag)&0xffff0000) ? ((ntohl(((ex).a_midmag))>>16)&0x03ff) : MID_ZERO )
+#define N_GETFLAG(ex) \
+ ( (((ex).a_midmag)&0xffff0000) ? ((ntohl(((ex).a_midmag))>>26)&0x3f) : 0 )
+#define N_SETMAGIC(ex,mag,mid,flag) \
+ ( (ex).a_midmag = htonl( (((flag)&0x3f)<<26) | (((mid)&0x03ff)<<16) | \
+ (((mag)&0xffff)) ) )
+
+#define N_ALIGN(ex,x) \
+ (N_GETMAGIC(ex) == ZMAGIC || N_GETMAGIC(ex) == QMAGIC ? \
+ ((x) + __LDPGSZ - 1) & ~(__LDPGSZ - 1) : (x))
+
+/* Valid magic number check. */
+#define N_BADMAG(ex) \
+ (N_GETMAGIC(ex) != NMAGIC && N_GETMAGIC(ex) != OMAGIC && \
+ N_GETMAGIC(ex) != ZMAGIC && N_GETMAGIC(ex) != QMAGIC)
+
+/* Address of the bottom of the text segment. */
+#define N_TXTADDR(ex) (N_GETMAGIC2(ex) == (ZMAGIC|0x10000) ? 0 : __LDPGSZ)
+
+/* Address of the bottom of the data segment. */
+#define N_DATADDR(ex) \
+ (N_GETMAGIC(ex) == OMAGIC ? N_TXTADDR(ex) + (ex).a_text : \
+ (N_TXTADDR(ex) + (ex).a_text + __LDPGSZ - 1) & ~(__LDPGSZ - 1))
+
+/* Address of the bottom of the bss segment. */
+#define N_BSSADDR(ex) \
+ (N_DATADDR(ex) + (ex).a_data)
+
+/* Text segment offset. */
+#define N_TXTOFF(ex) \
+ ( N_GETMAGIC2(ex)==ZMAGIC || N_GETMAGIC2(ex)==(QMAGIC|0x10000) ? \
+ 0 : (N_GETMAGIC2(ex)==(ZMAGIC|0x10000) ? __LDPGSZ : \
+ sizeof(struct exec)) )
+
+/* Data segment offset. */
+#define N_DATOFF(ex) \
+ N_ALIGN(ex, N_TXTOFF(ex) + (ex).a_text)
+
+/* Text relocation table offset. */
+#define N_TRELOFF(ex) \
+ (N_DATOFF(ex) + (ex).a_data)
+
+/* Data relocation table offset. */
+#define N_DRELOFF(ex) \
+ (N_TRELOFF(ex) + (ex).a_trsize)
+
+/* Symbol table offset. */
+#define N_SYMOFF(ex) \
+ (N_DRELOFF(ex) + (ex).a_drsize)
+
+/* String table offset. */
+#define N_STROFF(ex) \
+ (N_SYMOFF(ex) + (ex).a_syms)
+
#include <sys/exec.h>
#define _AOUT_INCLUDE_
diff --git a/sys/arch/hppa/stand/mkboot/mkboot.c b/sys/arch/hppa/stand/mkboot/mkboot.c
index 88d71da067b..b56c4c51388 100644
--- a/sys/arch/hppa/stand/mkboot/mkboot.c
+++ b/sys/arch/hppa/stand/mkboot/mkboot.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mkboot.c,v 1.21 2017/12/30 23:08:29 guenther Exp $ */
+/* $OpenBSD: mkboot.c,v 1.22 2024/10/16 18:47:48 miod Exp $ */
/*
* Copyright (c) 1990, 1993
@@ -32,11 +32,11 @@
*/
#include <sys/param.h>
-#include <sys/exec.h>
-#include <sys/exec_elf.h>
#include <sys/stat.h>
+#include <a.out.h>
#include <ctype.h>
+#include <elf.h>
#include <err.h>
#include <fcntl.h>
#include <stdlib.h>
diff --git a/sys/sys/exec.h b/sys/sys/exec.h
index 801181f2c98..687ccb3ec6f 100644
--- a/sys/sys/exec.h
+++ b/sys/sys/exec.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: exec.h,v 1.54 2024/04/02 08:39:16 deraadt Exp $ */
+/* $OpenBSD: exec.h,v 1.55 2024/10/16 18:47:48 miod Exp $ */
/* $NetBSD: exec.h,v 1.59 1996/02/09 18:25:09 christos Exp $ */
/*-
@@ -222,38 +222,6 @@ extern int stackgap_random;
#endif /* _KERNEL */
-#ifndef N_PAGSIZ
-#define N_PAGSIZ(ex) (__LDPGSZ)
-#endif
-
-/*
- * Legacy a.out structures and defines; start deleting these when
- * external use no longer exist.
- */
-
-
-/*
- * Header prepended to each a.out file.
- * only manipulate the a_midmag field via the
- * N_SETMAGIC/N_GET{MAGIC,MID,FLAG} macros below.
- */
-struct exec {
- u_int32_t a_midmag; /* htonl(flags<<26|mid<<16|magic) */
- u_int32_t a_text; /* text segment size */
- u_int32_t a_data; /* initialized data size */
- u_int32_t a_bss; /* uninitialized data size */
- u_int32_t a_syms; /* symbol table size */
- u_int32_t a_entry; /* entry point */
- u_int32_t a_trsize; /* text relocation size */
- u_int32_t a_drsize; /* data relocation size */
-};
-
-/* a_magic */
-#define OMAGIC 0407 /* old impure format */
-#define NMAGIC 0410 /* read-only text */
-#define ZMAGIC 0413 /* demand load format */
-#define QMAGIC 0314 /* "compact" demand load format; deprecated */
-
/*
* a_mid - keep sorted in numerical order for sanity's sake
* ensure that: 0 < mid < 0x3ff
@@ -292,92 +260,6 @@ struct exec {
#define MID_HPPA11 0x210 /* hp700 HP-UX binary pa1.1 */
#define MID_HPPA20 0x214 /* hp700 HP-UX binary pa2.0 */
-/*
- * a_flags
- */
-#define EX_DYNAMIC 0x20
-#define EX_PIC 0x10
-#define EX_DPMASK 0x30
-/*
- * Interpretation of the (a_flags & EX_DPMASK) bits:
- *
- * 00 traditional executable or object file
- * 01 object file contains PIC code (set by `as -k')
- * 10 dynamic executable
- * 11 position independent executable image
- * (eg. a shared library)
- *
- */
-
-/*
- * The a.out structure's a_midmag field is a network-byteorder encoding
- * of this int
- * FFFFFFmmmmmmmmmmMMMMMMMMMMMMMMMM
- * Where `F' is 6 bits of flag like EX_DYNAMIC,
- * `m' is 10 bits of machine-id like MID_I386, and
- * `M' is 16 bits worth of magic number, ie. ZMAGIC.
- * The macros below will set/get the needed fields.
- */
-#define N_GETMAGIC(ex) \
- ( (((ex).a_midmag)&0xffff0000) ? (ntohl(((ex).a_midmag))&0xffff) : ((ex).a_midmag))
-#define N_GETMAGIC2(ex) \
- ( (((ex).a_midmag)&0xffff0000) ? (ntohl(((ex).a_midmag))&0xffff) : \
- (((ex).a_midmag) | 0x10000) )
-#define N_GETMID(ex) \
- ( (((ex).a_midmag)&0xffff0000) ? ((ntohl(((ex).a_midmag))>>16)&0x03ff) : MID_ZERO )
-#define N_GETFLAG(ex) \
- ( (((ex).a_midmag)&0xffff0000) ? ((ntohl(((ex).a_midmag))>>26)&0x3f) : 0 )
-#define N_SETMAGIC(ex,mag,mid,flag) \
- ( (ex).a_midmag = htonl( (((flag)&0x3f)<<26) | (((mid)&0x03ff)<<16) | \
- (((mag)&0xffff)) ) )
-
-#define N_ALIGN(ex,x) \
- (N_GETMAGIC(ex) == ZMAGIC || N_GETMAGIC(ex) == QMAGIC ? \
- ((x) + __LDPGSZ - 1) & ~(__LDPGSZ - 1) : (x))
-
-/* Valid magic number check. */
-#define N_BADMAG(ex) \
- (N_GETMAGIC(ex) != NMAGIC && N_GETMAGIC(ex) != OMAGIC && \
- N_GETMAGIC(ex) != ZMAGIC && N_GETMAGIC(ex) != QMAGIC)
-
-/* Address of the bottom of the text segment. */
-#define N_TXTADDR(ex) (N_GETMAGIC2(ex) == (ZMAGIC|0x10000) ? 0 : __LDPGSZ)
-
-/* Address of the bottom of the data segment. */
-#define N_DATADDR(ex) \
- (N_GETMAGIC(ex) == OMAGIC ? N_TXTADDR(ex) + (ex).a_text : \
- (N_TXTADDR(ex) + (ex).a_text + __LDPGSZ - 1) & ~(__LDPGSZ - 1))
-
-/* Address of the bottom of the bss segment. */
-#define N_BSSADDR(ex) \
- (N_DATADDR(ex) + (ex).a_data)
-
-/* Text segment offset. */
-#define N_TXTOFF(ex) \
- ( N_GETMAGIC2(ex)==ZMAGIC || N_GETMAGIC2(ex)==(QMAGIC|0x10000) ? \
- 0 : (N_GETMAGIC2(ex)==(ZMAGIC|0x10000) ? __LDPGSZ : \
- sizeof(struct exec)) )
-
-/* Data segment offset. */
-#define N_DATOFF(ex) \
- N_ALIGN(ex, N_TXTOFF(ex) + (ex).a_text)
-
-/* Text relocation table offset. */
-#define N_TRELOFF(ex) \
- (N_DATOFF(ex) + (ex).a_data)
-
-/* Data relocation table offset. */
-#define N_DRELOFF(ex) \
- (N_TRELOFF(ex) + (ex).a_trsize)
-
-/* Symbol table offset. */
-#define N_SYMOFF(ex) \
- (N_DRELOFF(ex) + (ex).a_drsize)
-
-/* String table offset. */
-#define N_STROFF(ex) \
- (N_SYMOFF(ex) + (ex).a_syms)
-
#include <machine/exec.h>
#endif /* !_SYS_EXEC_H_ */
diff --git a/usr.sbin/mopd/common/file.c b/usr.sbin/mopd/common/file.c
index c4f5d02b520..12a928549fb 100644
--- a/usr.sbin/mopd/common/file.c
+++ b/usr.sbin/mopd/common/file.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: file.c,v 1.19 2017/10/29 08:45:53 mpi Exp $ */
+/* $OpenBSD: file.c,v 1.20 2024/10/16 18:47:48 miod Exp $ */
/*
* Copyright (c) 1995-96 Mats O Jansson. All rights reserved.
@@ -32,7 +32,7 @@
#ifndef NOAOUT
#if defined(__OpenBSD__)
-#include <sys/exec.h>
+#include <a.out.h>
#endif
#if defined(__bsdi__)
#define NOAOUT
diff --git a/usr.sbin/mopd/mopa.out/mopa.out.c b/usr.sbin/mopd/mopa.out/mopa.out.c
index 3ecb923fe33..35ed44cb5a0 100644
--- a/usr.sbin/mopd/mopa.out/mopa.out.c
+++ b/usr.sbin/mopd/mopa.out/mopa.out.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mopa.out.c,v 1.18 2022/12/28 21:30:17 jmc Exp $ */
+/* $OpenBSD: mopa.out.c,v 1.19 2024/10/16 18:47:48 miod Exp $ */
/*
* mopa.out - Convert a Unix format kernel into something that
@@ -53,7 +53,7 @@
#include "common/mopdef.h"
#include "common/file.h"
#if defined(__OpenBSD__)
-#include <sys/exec.h>
+#include <a.out.h>
#endif
#if defined(__FreeBSD__)
#include <sys/imgact_aout.h>