From f98906fd4e319b1f2180376e49c9ac50f69c2401 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Sat, 27 Dec 2014 21:04:11 +0000 Subject: [PATCH] size: Add a size tool to report binary sizes --- Standalone/Makefile | 8 +++++++- Standalone/size.c | 50 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 Standalone/size.c diff --git a/Standalone/Makefile b/Standalone/Makefile index c94072fa..d8ea3318 100644 --- a/Standalone/Makefile +++ b/Standalone/Makefile @@ -1,6 +1,6 @@ CC=gcc CCOPTS=-O2 -g -Wall -Wno-char-subscripts -Wno-deprecated-declarations -TARGETS=mkfs fsck ucp +TARGETS=mkfs fsck ucp chmem size UTILS=util.o devio.o xfs1.o xfs1a.o xfs1b.o xfs2.o all: $(TARGETS) @@ -17,5 +17,11 @@ fsck: fsck.o util.o ucp: ucp.o $(UTILS) $(CC) $(CCOPTS) -o $@ $< $(UTILS) +chmem: chmem.o + $(CC) $(CCOPTS) -o $@ $< + +size: size.o + $(CC) $(CCOPTS) -o $@ $< + %.o: %.c $(CC) $(CCOPTS) -c -o $@ $< diff --git a/Standalone/size.c b/Standalone/size.c new file mode 100644 index 00000000..4b493467 --- /dev/null +++ b/Standalone/size.c @@ -0,0 +1,50 @@ +#include +#include +#include +#include + +static int bufpair(unsigned char *p, int n) +{ + return p[n] + 256 *p[n+1]; +} + +int main(int argc, char *argv[]) +{ + FILE *fp; + unsigned char buf[16]; + int basepage; + int n; + + if (argc < 2) { + fprintf(stderr, "%s [executable]\n", argv[0]); + exit(1); + } + for (n = 1; n < argc; n++) { + fp = fopen(argv[n], "r"); + if (fp == NULL) { + perror(argv[n]); + exit(1); + } + if (fread(buf, 16, 1, fp) != 1) { + fprintf(stderr, "%s: too short ?\n", argv[0]); + exit(1); + } + if (buf[0] != 0xC3 || buf[3] != 'F' || buf[4] != 'Z'|| buf[5] != 'X' || + buf[6] != '1') { + fprintf(stderr, "%s: not a Fuzix binary format.\n", argv[1]); + exit(1); + } + fclose(fp); + basepage = buf[7] << 8; + printf(" base text data bss size hex filename\n"); + printf("%5x%5x%5x%5x%7d%5x %s\n", + basepage, + bufpair(buf, 10) - basepage, + bufpair(buf, 12) - bufpair(buf, 10) - basepage, + bufpair(buf, 14), + bufpair(buf, 14) + bufpair(buf, 12) - basepage, + bufpair(buf, 14) + bufpair(buf, 12) - basepage, + argv[n]); + } + exit(0); +} -- 2.34.1