Download raw body.
out with a.out
The world is ELF, OpenBSD has removed the ability to run a.out binaries
(even static ones) quite many years ago now, the a.out format defines
only matter for boot-related code on older hardware.
The following diff moves all the a.out-related defines, but the MID_xxx
constants, from <sys/exec.h> to <a.out.h>, and explicitly include the
latter instead of the former in code which deals with a.out bit.
(Also don't look at distrib/special/more/more.c around line 480 or you
might get tempted to edit this code with a chainsaw)
Index: distrib/special/more/more.c
===================================================================
RCS file: /OpenBSD/src/distrib/special/more/more.c,v
retrieving revision 1.41
diff -u -p -u -p -r1.41 more.c
--- distrib/special/more/more.c 28 Jun 2019 13:32:52 -0000 1.41
+++ distrib/special/more/more.c 3 Oct 2024 07:05:54 -0000
@@ -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>
Index: include/a.out.h
===================================================================
RCS file: /OpenBSD/src/include/a.out.h,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 a.out.h
--- include/a.out.h 2 Jun 2003 19:34:12 -0000 1.3
+++ include/a.out.h 3 Oct 2024 07:05:54 -0000
@@ -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_
Index: sys/arch/hppa/stand/mkboot/mkboot.c
===================================================================
RCS file: /OpenBSD/src/sys/arch/hppa/stand/mkboot/mkboot.c,v
retrieving revision 1.21
diff -u -p -u -p -r1.21 mkboot.c
--- sys/arch/hppa/stand/mkboot/mkboot.c 30 Dec 2017 23:08:29 -0000 1.21
+++ sys/arch/hppa/stand/mkboot/mkboot.c 3 Oct 2024 07:05:54 -0000
@@ -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>
Index: sys/sys/exec.h
===================================================================
RCS file: /OpenBSD/src/sys/sys/exec.h,v
retrieving revision 1.54
diff -u -p -u -p -r1.54 exec.h
--- sys/sys/exec.h 2 Apr 2024 08:39:16 -0000 1.54
+++ sys/sys/exec.h 3 Oct 2024 07:05:54 -0000
@@ -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
@@ -291,92 +259,6 @@ struct exec {
#define MID_HPUX800 0x20B /* hp800 HP-UX binary pa1.0 */
#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>
Index: usr.sbin/mopd/common/file.c
===================================================================
RCS file: /OpenBSD/src/usr.sbin/mopd/common/file.c,v
retrieving revision 1.19
diff -u -p -u -p -r1.19 file.c
--- usr.sbin/mopd/common/file.c 29 Oct 2017 08:45:53 -0000 1.19
+++ usr.sbin/mopd/common/file.c 3 Oct 2024 07:05:54 -0000
@@ -32,7 +32,7 @@
#ifndef NOAOUT
#if defined(__OpenBSD__)
-#include <sys/exec.h>
+#include <a.out.h>
#endif
#if defined(__bsdi__)
#define NOAOUT
Index: usr.sbin/mopd/mopa.out/mopa.out.c
===================================================================
RCS file: /OpenBSD/src/usr.sbin/mopd/mopa.out/mopa.out.c,v
retrieving revision 1.18
diff -u -p -u -p -r1.18 mopa.out.c
--- usr.sbin/mopd/mopa.out/mopa.out.c 28 Dec 2022 21:30:17 -0000 1.18
+++ usr.sbin/mopd/mopa.out/mopa.out.c 3 Oct 2024 07:05:54 -0000
@@ -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>
out with a.out