From 71adbdbe1afd64efe13457f38b20baa8dd9758e0 Mon Sep 17 00:00:00 2001 From: marcel Date: Tue, 4 Jan 2000 14:10:36 +0000 Subject: o Allow btxld to be compiled on 64-bit machines o s/unsigned/unsigned int/g o Add -Wall btxld can now be built as a cross-tool for cross-building i386/pc98 on platforms that don't have btxld (such as alpha). --- usr.sbin/btxld/Makefile | 2 ++ usr.sbin/btxld/btxld.c | 34 ++++++++++++++++++---------------- usr.sbin/btxld/elfh.c | 2 ++ usr.sbin/btxld/elfh.h | 4 ++-- 4 files changed, 24 insertions(+), 18 deletions(-) (limited to 'usr.sbin/btxld') diff --git a/usr.sbin/btxld/Makefile b/usr.sbin/btxld/Makefile index 229b20e..6775183 100644 --- a/usr.sbin/btxld/Makefile +++ b/usr.sbin/btxld/Makefile @@ -4,4 +4,6 @@ PROG= btxld SRCS= btxld.c elfh.c MAN8= btxld.8 +CFLAGS+= -Wall + .include diff --git a/usr.sbin/btxld/btxld.c b/usr.sbin/btxld/btxld.c index e24f4f4..9e83beb 100644 --- a/usr.sbin/btxld/btxld.c +++ b/usr.sbin/btxld/btxld.c @@ -43,7 +43,6 @@ static const char rcsid[] = #include #include -#include #include "btx.h" #include "elfh.h" @@ -65,14 +64,14 @@ static const char rcsid[] = #define align(x, y) (((x) + (y) - 1) & ~((y) - 1)) struct hdr { - unsigned fmt; /* Format */ - unsigned flags; /* Bit flags */ - unsigned size; /* Size of file */ - unsigned text; /* Size of text segment */ - unsigned data; /* Size of data segment */ - unsigned bss; /* Size of bss segment */ - unsigned org; /* Program origin */ - unsigned entry; /* Program entry point */ + uint32_t fmt; /* Format */ + uint32_t flags; /* Bit flags */ + uint32_t size; /* Size of file */ + uint32_t text; /* Size of text segment */ + uint32_t data; /* Size of data segment */ + uint32_t bss; /* Size of bss segment */ + uint32_t org; /* Program origin */ + uint32_t entry; /* Program entry point */ }; static const char *const fmtlist[] = {"bin", "aout", "elf"}; @@ -95,7 +94,7 @@ static const char *oname = static int ppage = -1; /* First page present */ static int wpage = -1; /* First page writable */ -static unsigned format; /* Output format */ +static unsigned int format; /* Output format */ static uint32_t centry; /* Client entry address */ static uint32_t lentry; /* Loader entry address */ @@ -117,7 +116,7 @@ static void copy(int, int, size_t, off_t); static size_t readx(int, void *, size_t, off_t); static void writex(int, const void *, size_t); static void seekx(int, off_t); -static unsigned optfmt(const char *); +static unsigned int optfmt(const char *); static uint32_t optaddr(const char *); static int optpage(const char *, int); static void Warn(const char *, const char *, ...); @@ -195,9 +194,11 @@ btxld(const char *iname) char name[FILENAME_MAX]; struct btx_hdr btx; struct hdr ihdr, ohdr; - unsigned ldr_size, cwr; + unsigned int ldr_size, cwr; int fdi[3], fdo, i; + ldr_size = 0; + for (i = I_LDR; i <= I_CLNT; i++) { fname = i == I_LDR ? lname : i == I_BTX ? bname : iname; if ((fdi[i] = open(fname, O_RDONLY)) == -1) @@ -228,7 +229,7 @@ btxld(const char *iname) ohdr.org = lentry; ohdr.entry = lentry; cwr = 0; - if (wpage > 0 || (wpage == -1 && !(ihdr.flags & IMPURE))) + if (wpage > 0 || (wpage == -1 && !(ihdr.flags & IMPURE))) { if (wpage > 0) cwr = wpage; else { @@ -236,6 +237,7 @@ btxld(const char *iname) if (cwr > BTX_MAXCWR) cwr = BTX_MAXCWR; } + } if (ppage > 0 || (ppage && wpage && ihdr.org >= BTX_PGSIZE)) { btx.btx_flags |= BTX_MAPONE; if (!cwr) @@ -312,7 +314,7 @@ gethdr(int fd, struct hdr *hdr) const Elf32_Ehdr *ee; const Elf32_Phdr *ep; void *p; - unsigned fmt, x, n, i; + unsigned int fmt, x, n, i; memset(hdr, 0, sizeof(*hdr)); if (fstat(fd, &sb)) @@ -480,10 +482,10 @@ seekx(int fd, off_t offset) /* * Convert an option argument to a format code. */ -static unsigned +static unsigned int optfmt(const char *arg) { - unsigned i; + unsigned int i; for (i = 0; i < F_CNT && strcmp(arg, fmtlist[i]); i++); if (i == F_CNT) diff --git a/usr.sbin/btxld/elfh.c b/usr.sbin/btxld/elfh.c index cf16348..0f0928b 100644 --- a/usr.sbin/btxld/elfh.c +++ b/usr.sbin/btxld/elfh.c @@ -26,6 +26,8 @@ * $FreeBSD$ */ +#include + #include #include "elfh.h" diff --git a/usr.sbin/btxld/elfh.h b/usr.sbin/btxld/elfh.h index cf00f38..a4ab134 100644 --- a/usr.sbin/btxld/elfh.h +++ b/usr.sbin/btxld/elfh.h @@ -26,7 +26,7 @@ * $FreeBSD$ */ -#include +#include struct elfh { Elf32_Ehdr e; /* ELF header */ @@ -35,4 +35,4 @@ struct elfh { char shstrtab[28]; /* section header string table */ }; -const struct elfh elfhdr; /* ELF header template */ +extern const struct elfh elfhdr; /* ELF header template */ -- cgit v1.1