From cbb66355ca4e175c93560d9f2b984a4dc4e010af Mon Sep 17 00:00:00 2001 From: "David E. O'Brien" Date: Mon, 30 Dec 2002 10:01:26 +0000 Subject: [PATCH] Move elf2aout back to /usr/bin -- it is a general development tool, not a sysadmin tool. --- Makefile.inc1 | 2 +- usr.bin/Makefile | 1 + usr.sbin/Makefile | 1 - usr.sbin/elf2aout/Makefile | 9 -- usr.sbin/elf2aout/elf2aout.c | 162 ----------------------------------- 5 files changed, 2 insertions(+), 173 deletions(-) delete mode 100644 usr.sbin/elf2aout/Makefile delete mode 100644 usr.sbin/elf2aout/elf2aout.c diff --git a/Makefile.inc1 b/Makefile.inc1 index 8c0cda1671b3..7404433b7f2a 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -663,7 +663,7 @@ _btxld= usr.sbin/btxld .endif .if ${TARGET_ARCH} == "sparc64" -_elf2aout= usr.sbin/elf2aout +_elf2aout= usr.bin/elf2aout .endif _xlint= usr.bin/xlint/lint1 usr.bin/xlint/lint2 usr.bin/xlint/xlint diff --git a/usr.bin/Makefile b/usr.bin/Makefile index 7257d77f528c..ea8176737787 100644 --- a/usr.bin/Makefile +++ b/usr.bin/Makefile @@ -47,6 +47,7 @@ SUBDIR= alias \ dirname \ du \ ee \ + elf2aout \ enigma \ env \ expand \ diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile index 3f39337e48d3..2e1f72d9ce95 100644 --- a/usr.sbin/Makefile +++ b/usr.sbin/Makefile @@ -26,7 +26,6 @@ SUBDIR= IPXrouted \ devinfo \ digictl \ edquota \ - elf2aout \ extattr \ extattrctl \ faithd \ diff --git a/usr.sbin/elf2aout/Makefile b/usr.sbin/elf2aout/Makefile deleted file mode 100644 index b2218eb310c7..000000000000 --- a/usr.sbin/elf2aout/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ - -PROG= elf2aout -CFLAGS+=-I${.CURDIR}/../crunch/crunchide -WARNS?= 5 -NO_WERROR?= -NOMAN= - -.include diff --git a/usr.sbin/elf2aout/elf2aout.c b/usr.sbin/elf2aout/elf2aout.c deleted file mode 100644 index a9e1a010503b..000000000000 --- a/usr.sbin/elf2aout/elf2aout.c +++ /dev/null @@ -1,162 +0,0 @@ -/*- - * Copyright (c) 2002 Jake Burkholder - * 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. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. - */ - -#include -__FBSDID("$FreeBSD$"); - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "endian.h" -#define xe16toh(x) ((data == ELFDATA2MSB) ? be16toh(x) : le16toh(x)) -#define xe32toh(x) ((data == ELFDATA2MSB) ? be32toh(x) : le32toh(x)) -#define xe64toh(x) ((data == ELFDATA2MSB) ? be64toh(x) : le64toh(x)) -#define htoxe32(x) ((data == ELFDATA2MSB) ? htobe32(x) : htole32(x)) - -struct exec { - u_int32_t a_magic; - u_int32_t a_text; - u_int32_t a_data; - u_int32_t a_bss; - u_int32_t a_syms; - u_int32_t a_entry; - u_int32_t a_trsize; - u_int32_t a_drsize; -}; -#define A_MAGIC 0x01030107 - -extern char *optarg; -extern int optind; - -static void usage(void); - -/* - * elf to a.out converter for freebsd/sparc64 bootblocks. - */ -int -main(int ac, char **av) -{ - Elf64_Quarter phentsize; - Elf64_Quarter machine; - Elf64_Quarter phnum; - Elf64_Size filesz; - Elf64_Size memsz; - Elf64_Addr entry; - Elf64_Off offset; - Elf64_Off phoff; - Elf64_Half type; - unsigned char data; - struct stat sb; - struct exec a; - Elf64_Phdr *p; - Elf64_Ehdr *e; - void *v; - int efd; - int fd; - int c; - int i; - - fd = STDIN_FILENO; - while ((c = getopt(ac, av, "o:")) != -1) - switch (c) { - case 'o': - if ((fd = open(optarg, O_CREAT|O_RDWR, 0644)) < 0) - err(1, "%s", optarg); - break; - case '?': - default: - usage(); - } - ac -= optind; - av += optind; - if (ac == 0) - usage(); - - if ((efd = open(*av, O_RDONLY)) < 0 || fstat(efd, &sb) < 0) - err(1, NULL); - v = mmap(NULL, sb.st_size, PROT_READ, MAP_SHARED, efd, 0); - if ((e = v) == MAP_FAILED) - err(1, NULL); - - if (!IS_ELF(*e)) - errx(1, "not an elf file"); - if (e->e_ident[EI_CLASS] != ELFCLASS64) - errx(1, "wrong class"); - data = e->e_ident[EI_DATA]; - if (data != ELFDATA2MSB && data != ELFDATA2LSB) - errx(1, "wrong data format"); - if (e->e_ident[EI_VERSION] != EV_CURRENT) - errx(1, "wrong elf version"); - machine = xe16toh(e->e_machine); - if (machine != EM_SPARCV9 && machine != EM_ALPHA) - errx(1, "wrong machine type"); - phentsize = xe16toh(e->e_phentsize); - if (phentsize != sizeof(*p)) - errx(1, "phdr size mismatch"); - - entry = xe64toh(e->e_entry); - phoff = xe64toh(e->e_phoff); - phnum = xe16toh(e->e_phnum); - p = (Elf64_Phdr *)((char *)e + phoff); - bzero(&a, sizeof(a)); - for (i = 0; i < phnum; i++) { - type = xe32toh(p[i].p_type); - switch (type) { - case PT_LOAD: - if (a.a_magic != 0) - errx(1, "too many loadable segments"); - filesz = xe64toh(p[i].p_filesz); - memsz = xe64toh(p[i].p_memsz); - offset = xe64toh(p[i].p_offset); - a.a_magic = htoxe32(A_MAGIC); - a.a_text = htoxe32(filesz); - a.a_bss = htoxe32(memsz - filesz); - a.a_entry = htoxe32(entry); - if (write(fd, &a, sizeof(a)) != sizeof(a) || - write(fd, (char *)e + offset, filesz) != (ssize_t)filesz) - err(1, NULL); - break; - default: - break; - } - } - - return (0); -} - -static void -usage(void) -{ - - errx(1, "usage: elf2aout [-o outfile] infile"); -}