diff --git a/lib/Makefile b/lib/Makefile index 959883f..186d31a 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -2,7 +2,7 @@ TOPSRC = $(shell cd ..; pwd) SUBDIR = startup libc libm libcurses libtermlib libwiznet libreadline libgpanel PROG = ar as aout ld nm ranlib size strip -CFLAGS += -std=gnu89 -fno-builtin -g -Werror -Wall -DCROSS -I. \ +CFLAGS = -Os -std=gnu89 -fno-builtin -g -Werror -Wall -DCROSS -I. \ -idirafter $(TOPSRC)/include \ -idirafter $(TOPSRC)/src/cmd/ar \ -idirafter $(TOPSRC)/src/cmd/as diff --git a/lib/libc/Makefile b/lib/libc/Makefile index 7340edb..7a32960 100644 --- a/lib/libc/Makefile +++ b/lib/libc/Makefile @@ -8,7 +8,7 @@ vpath %.c $(LIBCDIR)/mips/sys $(LIBCDIR)/gen $(LIBCDIR)/stdio \ $(LIBCDIR)/stdlib $(LIBCDIR)/string $(LIBCDIR)/inet \ $(LIBCDIR)/compat $(LIBCDIR)/runtime -CFLAGS += -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror +CFLAGS = -Os -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror ASFLAGS += -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -I$(LIBCDIR)/mips/sys # modules which can not use SYSCALL and must be assembled from sources. The diff --git a/lib/libcurses/Makefile b/lib/libcurses/Makefile index b2fde22..3a944d9 100644 --- a/lib/libcurses/Makefile +++ b/lib/libcurses/Makefile @@ -3,7 +3,7 @@ include $(TOPSRC)/target.mk vpath %.c $(TOPSRC)/src/libcurses -CFLAGS += -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror +CFLAGS = -Os -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror OBJS = addch.o addstr.o box.o clear.o clrtobot.o clrtoeol.o cr_put.o \ cr_tty.o curses.o delch.o deleteln.o delwin.o endwin.o erase.o \ diff --git a/lib/libgpanel/Makefile b/lib/libgpanel/Makefile index 11c8526..0460d42 100644 --- a/lib/libgpanel/Makefile +++ b/lib/libgpanel/Makefile @@ -3,7 +3,7 @@ include $(TOPSRC)/target.mk vpath %.c $(TOPSRC)/src/libgpanel -CFLAGS += -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror +CFLAGS = -Os -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror OBJS = open.o clear.o pixel.o line.o rect.o fill.o circle.o \ image.o char.o text.o text_width.o diff --git a/lib/libm/Makefile b/lib/libm/Makefile index d8c2e9a..b9ef088 100644 --- a/lib/libm/Makefile +++ b/lib/libm/Makefile @@ -3,7 +3,7 @@ include $(TOPSRC)/target.mk vpath %.c $(TOPSRC)/src/libm -CFLAGS += -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror +CFLAGS = -Os -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror OBJS = asin.o atan.o exp.o erf.o floor.o fmod.o hypot.o j0.o j1.o \ jn.o log.o pow.o sin.o sinh.o sqrt.o tan.o tanh.o diff --git a/lib/libreadline/Makefile b/lib/libreadline/Makefile index 5acadf2..1298bed 100644 --- a/lib/libreadline/Makefile +++ b/lib/libreadline/Makefile @@ -3,7 +3,7 @@ include $(TOPSRC)/target.mk vpath %.c $(TOPSRC)/src/libreadline -CFLAGS += -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror +CFLAGS = -Os -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror OBJS = readline.o diff --git a/lib/libtermlib/Makefile b/lib/libtermlib/Makefile index 2b3fb1a..72e1ea2 100644 --- a/lib/libtermlib/Makefile +++ b/lib/libtermlib/Makefile @@ -3,7 +3,7 @@ include $(TOPSRC)/target.mk vpath %.c $(TOPSRC)/src/libtermlib -CFLAGS += -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror +CFLAGS = -Os -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror OBJS = termcap.o tgoto.o tputs.o tcattr.o diff --git a/lib/libwiznet/Makefile b/lib/libwiznet/Makefile index d7883bc..2fc674b 100644 --- a/lib/libwiznet/Makefile +++ b/lib/libwiznet/Makefile @@ -3,7 +3,7 @@ include $(TOPSRC)/target.mk vpath %.c $(TOPSRC)/src/libwiznet -CFLAGS += -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror +CFLAGS = -Os -B$(TOPSRC)/lib/ $(DEFS) -Wa,-x -Wall -Werror OBJS = w5100.o socket.o ethernet.o client.o server.o udp.o diff --git a/lib/startup/Makefile b/lib/startup/Makefile index a4e47a6..5e34f6a 100644 --- a/lib/startup/Makefile +++ b/lib/startup/Makefile @@ -9,7 +9,7 @@ TOPSRC = $(shell cd ../..; pwd) include $(TOPSRC)/target.mk vpath %.c $(TOPSRC)/src/startup-mips -CFLAGS = -B$(TOPSRC)/lib/ -O -Wa,-x $(DEFS) +CFLAGS = -Os -B$(TOPSRC)/lib/ -Wa,-x $(DEFS) OBJS = ../crt0.o diff --git a/src/cmd/Makefile b/src/cmd/Makefile index 0031d6d..d5784b6 100644 --- a/src/cmd/Makefile +++ b/src/cmd/Makefile @@ -16,7 +16,7 @@ SUBDIR = adb adc-demo aout ar as awk basic calendar cc chflags \ man md5 med more nm passwd pdc picoc portio printf pwm \ ranlib re renice retroforth scm sed setty sh sl smallc \ smlrc smux stty sysctl test uname wiznet xargs \ - zmodem gtest msec unixbench cron compress date2 tip \ + zmodem gtest msec cron compress date2 tip \ talloc uucp # /sbin diff --git a/src/cmd/ar/delete.c b/src/cmd/ar/delete.c index 73d6f90..c9acfd5 100644 --- a/src/cmd/ar/delete.c +++ b/src/cmd/ar/delete.c @@ -91,7 +91,8 @@ delete(argv) SETCF(tfd, tname, afd, archive, NOPAD); copy_ar(&cf, size); (void)close(tfd); - (void)ftruncate(afd, size + SARMAG); + if (ftruncate(afd, size + SARMAG) < 0) + /* ignore */; close_archive(afd); if (*argv) { diff --git a/src/cmd/ar/move.c b/src/cmd/ar/move.c index a44ef3b..7c8b432 100644 --- a/src/cmd/ar/move.c +++ b/src/cmd/ar/move.c @@ -136,7 +136,8 @@ move(argv) cf.rfd = tfd3; copy_ar(&cf, size); - (void)ftruncate(afd, tsize + SARMAG); + if (ftruncate(afd, tsize + SARMAG) < 0) + /* ignore */; close_archive(afd); if (*argv) { diff --git a/src/cmd/ar/replace.c b/src/cmd/ar/replace.c index 51d4702..71878f4 100644 --- a/src/cmd/ar/replace.c +++ b/src/cmd/ar/replace.c @@ -190,7 +190,8 @@ append: while ((file = *argv++) != 0) { cf.rfd = tfd2; copy_ar(&cf, size); - (void)ftruncate(afd, tsize + SARMAG); + if (ftruncate(afd, tsize + SARMAG) < 0) + /* ignore */; close_archive(afd); return(err); } diff --git a/src/cmd/ld/ld.c b/src/cmd/ld/ld.c index d42c73c..b14ded8 100644 --- a/src/cmd/ld/ld.c +++ b/src/cmd/ld/ld.c @@ -1568,7 +1568,8 @@ int main (argc, argv) if (! ofilfnd) { unlink ("a.out"); - link ("l.out", "a.out"); + if (link ("l.out", "a.out") < 0) + perror("a.out"); ofilename = "a.out"; } delarg = errlev; diff --git a/src/cmd/ranlib/ranlib.c b/src/cmd/ranlib/ranlib.c index 0db19c4..8d0d668 100644 --- a/src/cmd/ranlib/ranlib.c +++ b/src/cmd/ranlib/ranlib.c @@ -385,7 +385,8 @@ int build() (void)lseek(tfd, (off_t)0, SEEK_SET); SETCF(tfd, tname, afd, archive, RPAD|WPAD); copy_ar(&cf, size); - (void)ftruncate(afd, lseek(afd, (off_t)0, SEEK_CUR)); + if (ftruncate(afd, lseek(afd, (off_t)0, SEEK_CUR)) < 0) + /* ignore */; (void)close(tfd); /* Set the time. */ diff --git a/src/cmd/strip.c b/src/cmd/strip.c index 4db2d96..62ca304 100644 --- a/src/cmd/strip.c +++ b/src/cmd/strip.c @@ -50,7 +50,8 @@ strip(name) head.a_reldata = 0; head.a_syms = 0; (void) lseek(f, (off_t)0, SEEK_SET); - (void) write(f, (char *)&head, sizeof (head)); + if (write(f, (char *)&head, sizeof (head)) != sizeof (head)) + /* ignore */; out: close(f); } diff --git a/src/cmd/unixbench/Makefile b/src/cmd/unixbench/Makefile index eb6c991..4f4d98f 100644 --- a/src/cmd/unixbench/Makefile +++ b/src/cmd/unixbench/Makefile @@ -57,7 +57,7 @@ OPTON = -O2 -fomit-frame-pointer -fforce-addr -ffast-math -Wall #CFLAGS = -DTIME -std1 -verbose -w0 ## generic gcc CFLAGS. -DTIME must be included -CFLAGS = -DTIME -Wall -pedantic -ansi +#CFLAGS = -DTIME -Wall -pedantic -ansi # local directories PROGDIR = ./pgms diff --git a/src/games/atc/Makefile b/src/games/atc/Makefile index 90735f0..61f5189 100644 --- a/src/games/atc/Makefile +++ b/src/games/atc/Makefile @@ -9,7 +9,7 @@ TOPSRC = $(shell cd ../../..; pwd) include $(TOPSRC)/target.mk #include $(TOPSRC)/cross.mk -CFLAGS = -Os -g -Werror -Wall +CFLAGS += -Os -g -Werror -Wall CFLAGS += -DBSD -DDEST=\"/games/lib/atc/\" #CFLAGS += -DSYSV -DDEST=\"games/\" YFLAGS = -d diff --git a/src/libm/fmod.c b/src/libm/fmod.c index cc46ffb..4529fea 100644 --- a/src/libm/fmod.c +++ b/src/libm/fmod.c @@ -1,7 +1,33 @@ #include #include -#include "ieee.h" +typedef union { + double value; + struct { + uint32_t lo; + uint32_t hi; + } uns; +} union64_t; + +/* + * Get two 32 bit ints from a double. + */ +#define EXTRACT_WORDS(high,low,d) {\ + union64_t u = {0}; \ + u.value = d; \ + high = u.uns.hi; \ + low = u.uns.lo; \ + } + +/* + * Set a double from two 32 bit ints. + */ +#define INSERT_WORDS(d,high,low) { \ + union64_t u = {0}; \ + u.uns.hi = high; \ + u.uns.lo = low; \ + d = u.value; \ + } static const double one = 1.0, Zero[] = {0.0, -0.0,}; diff --git a/src/libm/ieee.h b/src/libm/ieee.h deleted file mode 100644 index 20a8eee..0000000 --- a/src/libm/ieee.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Get two 32 bit ints from a double. */ - -#define EXTRACT_WORDS(high,low,d) \ - high = *(unsigned long long*) &d; \ - low = (*(unsigned long long*) &d) >> 32 - - -/* Set a double from two 32 bit ints. */ - -#define INSERT_WORDS(d,high,low) \ - *(unsigned long long*) &(x) = (unsigned long long) (high) << 32 | (low) - - -typedef union -{ - double value; - struct - { - uint32_t lsw; - uint32_t msw; - } parts; -} ieee_double_shape_type; - diff --git a/target.mk b/target.mk index 267f992..14b7e79 100644 --- a/target.mk +++ b/target.mk @@ -85,3 +85,6 @@ CFLAGS = -O LDFLAGS += -N -nostartfiles -fno-dwarf2-cfi-asm -T$(TOPSRC)/src/elf32-mips.ld \ $(TOPSRC)/src/crt0.o -L$(TOPSRC)/src LIBS = -lc + +# Enable mips16e instruction set by default +CFLAGS += -mips16