summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2008-06-04 21:12:51 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2008-06-04 21:12:51 +0000
commit27c67008ddea42303263824c8d145cb52ac76acb (patch)
tree0587195c442101efe5ca5d09279d74fdef466e8a /usr.bin
parent8e4b93b0d63335923d0a9a19013170d078bcbd43 (diff)
olf support starts to die (easy stuff first); ok miod
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/Makefile4
-rw-r--r--usr.bin/elf2olf/Makefile8
-rw-r--r--usr.bin/elf2olf/elf2olf.1113
-rw-r--r--usr.bin/elf2olf/elf2olf.c262
4 files changed, 2 insertions, 385 deletions
diff --git a/usr.bin/Makefile b/usr.bin/Makefile
index 3f52b83db26..dc46cc66dec 100644
--- a/usr.bin/Makefile
+++ b/usr.bin/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.108 2008/05/21 19:48:50 miod Exp $
+# $OpenBSD: Makefile,v 1.109 2008/06/04 21:12:49 deraadt Exp $
.include <bsd.own.mk>
@@ -6,7 +6,7 @@ SUBDIR= apply apropos ar arch asa asn1_compile at aucat audioctl awk banner \
basename bc bdes bgplg \
biff cal calendar cap_mkdb cdio checknr chpass cmp col colcrt colrm \
column comm compile_et compress cpp crontab csplit ctags cut \
- dc deroff diff diff3 dirname du elf2olf encrypt env expand false file \
+ dc deroff diff diff3 dirname du encrypt env expand false file \
file2c find fgen finger fmt fold from fsplit fstat ftp gencat getcap \
getconf getent getopt gprof grep gzsig head hexdump id indent \
infocmp ipcrm ipcs \
diff --git a/usr.bin/elf2olf/Makefile b/usr.bin/elf2olf/Makefile
deleted file mode 100644
index 8b17f488d42..00000000000
--- a/usr.bin/elf2olf/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# $OpenBSD: Makefile,v 1.5 1996/12/08 20:59:20 tholo Exp $
-
-PROG= elf2olf
-CPPFLAGS+= -DOS_ID=OOS_OPENBSD
-LINKS= ${BINDIR}/elf2olf ${BINDIR}/olf2elf
-MLINKS= elf2olf.1 olf2elf.1
-
-.include <bsd.prog.mk>
diff --git a/usr.bin/elf2olf/elf2olf.1 b/usr.bin/elf2olf/elf2olf.1
deleted file mode 100644
index 4e4919c675b..00000000000
--- a/usr.bin/elf2olf/elf2olf.1
+++ /dev/null
@@ -1,113 +0,0 @@
-.\" $OpenBSD: elf2olf.1,v 1.15 2007/05/31 19:20:09 jmc Exp $
-.\"
-.\" Copyright (c) 1996, 1997 Erik Theisen.
-.\" 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.
-.\" 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 without 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: elf2olf.1,v 1.15 2007/05/31 19:20:09 jmc Exp $
-.\"
-.Dd $Mdocdate: May 31 2007 $
-.Dt ELF2OLF 1
-.Os
-.Sh NAME
-.Nm elf2olf ,
-.Nm olf2elf
-.Nd convert between ELF and OLF object module format
-.Sh SYNOPSIS
-.Nm elf2olf
-.Op Fl v
-.Op Fl o Ar opsys
-.Ar module ...
-.Nm olf2elf
-.Op Fl v
-.Ar
-.Sh DESCRIPTION
-The
-.Nm elf2olf
-utility reads the specified
-.Em ELF
-version 1 module operands and converts them to the default operating system's
-.Em OLF
-object module format.
-.Pp
-The
-.Nm olf2elf
-utility reverses the process.
-The
-.Ar module
-operands are processed in command line order.
-.Pp
-The options are as follows:
-.Bl -tag -width Ds
-.It Fl o Ar opsys
-Specifies the operating system
-.Em OLF
-tag
-.Em "opsys"
-as follows:
-.Pp
-.Bl -tag -width Ds -compact
-.It Ta Pa "openbsd" Ta "OpenBSD"
-.It Ta Pa "netbsd" Ta "NetBSD"
-.It Ta Pa "freebsd" Ta "FreeBSD"
-.It Ta Pa "44bsd" Ta "4.4BSD"
-.It Ta Pa "linux" Ta "Linux"
-.It Ta Pa "svr4" Ta "AT&T System V Release 4"
-.It Ta Pa "esix" Ta "esix UNIX"
-.It Ta Pa "solaris" Ta "SunSoft Solaris"
-.It Ta Pa "irix" Ta "SGI IRIX"
-.It Ta Pa "sco " Ta "SCO UNIX"
-.It Ta Pa "dell" Ta "Dell SVR4"
-.It Ta Pa "ncr " Ta "NCR SVR4"
-.El
-.It Fl v
-Operate in verbose mode.
-.El
-.Pp
-The
-.Nm elf2olf
-and
-.Nm olf2elf
-utilities exit 0 on success or >0 if an error occurred.
-.Sh HISTORY
-The
-.Nm elf2olf
-and
-.Nm olf2elf
-utilities first appeared in
-.Ox 2.1 .
-.Sh AUTHORS
-Erik Theisen
-.Sh BUGS
-The
-.Em ELF
-version 1 object module format lacks any real method to determine the native
-operating system for any given binary thus mandating the existence of these
-tools.
-The converted binaries created by
-.Nm elf2olf
-will no longer execute on their native operating system, only on OLF
-enabled platforms, although
-.Nm olf2elf
-will undo the damage.
diff --git a/usr.bin/elf2olf/elf2olf.c b/usr.bin/elf2olf/elf2olf.c
deleted file mode 100644
index b2a0cad4a6e..00000000000
--- a/usr.bin/elf2olf/elf2olf.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/* $OpenBSD: elf2olf.c,v 1.9 2007/03/15 23:06:01 jmc Exp $ */
-/*
- * Copyright (c) 1996 Erik Theisen. 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.
- * 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 without 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.
- */
-#ifndef lint
-static char copyright[] =
-"@(#) Copyright (c) 1996 Erik Theisen. All rights reserved.\n";
-#endif /* not lint */
-
-#ifndef lint
-static char rcsid[] = "@(#) $Id: elf2olf.c,v 1.9 2007/03/15 23:06:01 jmc Exp $";
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <sys/stat.h>
-#include <sys/param.h>
-
-#include <olf_abi.h>
-
-int retval = 0;
-int olf2elf;
-char *progname;
-int verbose;
-int opsys = OS_ID;
-
-char *os_namev[] = ONAMEV;
-
-/* Handle endianess */
-#define word(x,y)((y == ELFDATA2LSB) ? ntohl(htonl(x)) : ntohl(x))
-#define half(x,y)((y == ELFDATA2LSB) ? ntohs(htons(x)) : ntohs(x))
-
-void usage(void);
-void pwarn(char *, char *, int);
-
-int
-main(int argc, char*argv[])
-{
- extern char *optarg;
- extern int optind;
- int ch, i, okay;
- char *opstring;
-
- int fd;
- struct stat st;
- Elf32_Ehdr ehdr;
- Elf32_Shdr shdr;
- int e;
-
- if ((progname = strrchr(*argv, '/')))
- ++progname;
- else
- progname = *argv;
-
- if (strstr(progname, "olf2elf"))
- olf2elf = 1;
-
- /*
- * Process cmdline
- */
- opstring = olf2elf ? "v" : "vo:";
- while((ch = getopt(argc, argv, opstring)) != -1)
- switch(ch) {
- case 'v':
- verbose = 1;
- break;
- case 'o':
- for (i = 1; i <= OOS_NUM; i++) {
- if (os_namev[i] == NULL) {
- fprintf(stderr,
- "%s: illegal -o argument -- %s\n",
- progname, optarg);
- usage();
- }
- else if (strcmp(optarg, os_namev[i]) == 0) {
- opsys = i;
- break;
- }
- }
- break;
- default:
- usage();
- }
- argc -= optind;
- argv += optind;
-
- if (argc == 0)
- usage();
-
- /*
- * Process file(s)
- */
- do {
- okay = 0;
-
- if ((fd = open(*argv, O_RDWR | O_EXLOCK, 0)) != -1 &&
- lseek(fd, (off_t)0, SEEK_SET) == 0 &&
- fstat(fd, &st) == 0) {
-
- /* Make sure this is a 32bit ELF or OLF version 1 file */
- if (read(fd, &ehdr, sizeof(Elf32_Ehdr)) == sizeof(Elf32_Ehdr)&&
- (IS_ELF(ehdr) || IS_OLF(ehdr)) &&
- ehdr.e_ident[EI_CLASS] == ELFCLASS32 &&
- ehdr.e_ident[EI_VERSION] == 1) {
-
- /* Is this elf2olf? */
- if(!olf2elf) {
-
- /* Tag, your it... */
- ehdr.e_ident[OI_MAG0] = OLFMAG0;
- ehdr.e_ident[OI_MAG1] = OLFMAG1;
- ehdr.e_ident[OI_MAG2] = OLFMAG2;
- ehdr.e_ident[OI_MAG3] = OLFMAG3;
- ehdr.e_ident[OI_OS] = opsys;
- ehdr.e_ident[OI_DYNAMIC] = ODYNAMIC_N;
- ehdr.e_ident[OI_STRIP] = OSTRIP;
-
- /* We'll need this endian */
- e = ehdr.e_ident[EI_DATA];
-
- /* Now we need to figure out wether or */
- /* not we're really stripped. */
- if (lseek(fd, (off_t)word(ehdr.e_shoff, e),
- SEEK_SET) == word(ehdr.e_shoff, e)) {
-
- /*
- * search through section header table
- * looking for a section header of type
- * SHT_SYMTAB and SHT_DYNAMIC. If there is
- * one present we're NOT stripped and/or
- * dynamic.
- */
- for (i = 0; i < half(ehdr.e_shnum, e); i++) {
- if (read(fd, &shdr, sizeof(Elf32_Shdr)) == sizeof(Elf32_Shdr)){
- if (word(shdr.sh_type, e) == SHT_SYMTAB)
- ehdr.e_ident[OI_STRIP] = OSTRIP_N;
- else if (word(shdr.sh_type, e) == SHT_DYNAMIC)
- ehdr.e_ident[OI_DYNAMIC] = ODYNAMIC;
- } else
- pwarn(progname, *argv, errno);
- } /* while less than number of section headers */
-
- /* We're ready to modify */
- okay = 1;
-
- } else /* Bogus section header table seek */
- pwarn(progname, *argv, errno);
-
- } else { /* olf2elf */
- ehdr.e_ident[EI_MAG0] = ELFMAG0;
- ehdr.e_ident[EI_MAG1] = ELFMAG1;
- ehdr.e_ident[EI_MAG2] = ELFMAG2;
- ehdr.e_ident[EI_MAG3] = ELFMAG3;
- ehdr.e_ident[OI_OS] = 0;
- ehdr.e_ident[OI_DYNAMIC] = 0;
- ehdr.e_ident[OI_STRIP] = 0;
-
- okay = 1;
- } /* olf2elf */
- } else /* Bogus non-ELF file encountered */
- pwarn(progname, *argv, ENOEXEC);
-
- /*
- * Do It.
- */
- if (okay) {
- if (lseek(fd, (off_t)0, SEEK_SET) == 0) {
- if (write(fd, &ehdr, sizeof(Elf32_Ehdr)) == sizeof(Elf32_Ehdr)) {
- if (verbose) {
- if (!olf2elf) {
- printf("ELF %s => OLF %d-bit %s %s linked %s OLF.\n",
- *argv,
- (ehdr.e_ident[OI_CLASS] == OLFCLASS32)?\
- 32 : 64,
- os_namev[ehdr.e_ident[OI_OS]],
- ehdr.e_ident[OI_DYNAMIC] ? \
- "dynamically" : "statically",
- !ehdr.e_ident[OI_STRIP] ?
- "stripped" : "unstripped");
- } else
- printf("OLF %s => ELF.\n", *argv);
- }
- } else /* bad write */
- pwarn(progname, *argv, errno);
- } else /* bad seek */
- pwarn(progname, *argv, errno);
- } /* okay? */
- fsync(fd);
- close(fd);
-
- } else /* couldn't handle file */
- pwarn(progname, *argv, errno);
- } while (*(++argv) != NULL);
-
-
- return (retval);
-}
-
-void
-pwarn(name, fname, errval)
- char *name;
- char *fname;
- int errval;
-{
- fprintf(stderr, "%s: %s: %s.\n", name, fname, strerror(errval));
- retval = 1;
-}
-
-void
-usage(void)
-{
- int i;
- int col = 8;
-
- if (olf2elf) {
- fprintf(stderr, "usage: %s [-v] file ...\n", progname);
- } else {
- fprintf(stderr, "usage: %s [-v] [-o opsys] module ...\n", progname);
- fprintf(stderr, "where opsys is:\n\t");
- for (i = 1; os_namev[i] != NULL; i++) {
- col = col + strlen(os_namev[i]) + 2;
- if (col > 78) {
- fprintf(stderr, "\n\t");
- col = 8;
- }
- fprintf(stderr, "%s%s", os_namev[i],
- os_namev[i+1] ? ", " : "\n");
- }
- }
- exit(1);
-}
-
-