diff options
author | marcel <marcel@FreeBSD.org> | 2000-01-04 14:10:36 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2000-01-04 14:10:36 +0000 |
commit | 71adbdbe1afd64efe13457f38b20baa8dd9758e0 (patch) | |
tree | 47dd552dcb36bf6432f61110a1657f7e00c3ef82 /usr.sbin/btxld | |
parent | 3428629295a631b7efb9f963a5747ded4524f288 (diff) | |
download | FreeBSD-src-71adbdbe1afd64efe13457f38b20baa8dd9758e0.zip FreeBSD-src-71adbdbe1afd64efe13457f38b20baa8dd9758e0.tar.gz |
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).
Diffstat (limited to 'usr.sbin/btxld')
-rw-r--r-- | usr.sbin/btxld/Makefile | 2 | ||||
-rw-r--r-- | usr.sbin/btxld/btxld.c | 34 | ||||
-rw-r--r-- | usr.sbin/btxld/elfh.c | 2 | ||||
-rw-r--r-- | usr.sbin/btxld/elfh.h | 4 |
4 files changed, 24 insertions, 18 deletions
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 <bsd.prog.mk> 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 <unistd.h> #include <a.out.h> -#include <elf.h> #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 <sys/types.h> + #include <stddef.h> #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 <elf.h> +#include <sys/elf32.h> 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 */ |