Fix minor linkage and symbol table issues, now generates identical kernel
authorNick Downing <downing.nick@gmail.com>
Wed, 4 Jan 2017 04:02:51 +0000 (15:02 +1100)
committerNick Downing <downing.nick@gmail.com>
Wed, 4 Jan 2017 04:02:51 +0000 (15:02 +1100)
13 files changed:
.gitignore
bin/cc/Makefile
bin/ld/Makefile
bin/ld/ld.c
lib/cpp/Makefile
n.sh
sys/GENERIC/Makefile
sys/GENERIC/vers.c
sys/GENERIC/version
ucb/strcompact/Makefile
ucb/strcompact/n.sh
ucb/strcompact/strcompact.c
ucb/symcompact/symcompact.c

index 92e491e..20a3651 100644 (file)
@@ -7,6 +7,7 @@ bin/cc/cc
 bin/ar/ar
 bin/as/as
 bin/ld/ld
+bin/size
 bin/nm/nm
 lib/c2/c2
 lib/ccom/c0
@@ -57,6 +58,10 @@ sys/GENERIC/unix
 test/hello
 test/hello.i
 test/hello.s
+ucb/strcompact/strcompact
+ucb/symcompact/symcompact
+ucb/symdump/symdump
+ucb/symorder/symorder
 usr.lib/libvmf/genlib
 usr.lib/libvmf/genlib_p
 usr.bin/lorder
index 6291502..5138f2d 100644 (file)
@@ -2,7 +2,7 @@
 # makefile for cc
 #
 
-CFLAGS=-DCROSSDIR=\"${CROSSDIR}\" -DSTAGEDIR=\"${STAGEDIR}\"
+CFLAGS=-DCROSSDIR="\"${CROSSDIR}\"" -DSTAGEDIR="\"${STAGEDIR}\""
 SEPFLAG=-i
 
 all: cc
index 864106f..71a7224 100644 (file)
@@ -8,7 +8,7 @@ OBJS=ld.o ../../lib/libc/pdp/gen/nsym.o
 MAN=ld.0
 MANSRC=ld.1
 
-CFLAGS=-O -I../ar -DSTAGEDIR=\"${STAGEDIR}\" -DNUM_VM_PAGES=20
+CFLAGS=-O -I../ar -DSTAGEDIR="\"${STAGEDIR}\"" -DNUM_VM_PAGES=20
 SEPFLAG=-i
 
 all:   ld ld.0
index 42c17fc..cd2f8fb 100644 (file)
@@ -73,9 +73,11 @@ static char *sccsid = "@(#)ld.c      4.6 1998/01/19";
 #ifdef pdp11
 #include <sys/types.h>
 #define OFF_T off_t
+#define INT int
 #else
 #include <stdint.h>
 #define OFF_T int32_t
+#define INT int16_t
 #endif
 
 /*
@@ -1635,7 +1637,10 @@ void finishout() {
        int type, len;
        OFF_T   stroff;
        long dtotal, ovrnd;
-       int     thunk[THUNKSIZ / sizeof (int)];
+       INT     thunk[THUNKSIZ / sizeof (INT)];
+#ifndef pdp11
+       unsigned char temp[THUNKSIZ];
+#endif
  
        if (numov) {
                int aovhndlr[NOVL+1];
@@ -1653,7 +1658,19 @@ void finishout() {
                                thunk[1] = sp->sovalue + 4;
                                thunk[2] = 04537;       /* jsr r5, ovhndlrx */
                                thunk[3] = aovhndlr[sp->n_ovly];
+#ifdef pdp11
                                fwrite(thunk, THUNKSIZ, 1, toutb);
+#else
+                               temp[0] = thunk[0] & 0xff;
+                               temp[1] = (thunk[0] >> 8) & 0xff;
+                               temp[2] = thunk[1] & 0xff;
+                               temp[3] = (thunk[1] >> 8) & 0xff;
+                               temp[4] = thunk[2] & 0xff;
+                               temp[5] = (thunk[2] >> 8) & 0xff;
+                               temp[6] = thunk[3] & 0xff;
+                               temp[7] = (thunk[3] >> 8) & 0xff;
+                               fwrite(temp, THUNKSIZ, 1, toutb);
+#endif
                                torigin += THUNKSIZ;
                        }
                }
index 5a47269..998bed4 100644 (file)
@@ -1,7 +1,7 @@
 #      Makefile        1.3     (2.11BSD) 96/7/11
 #
 
-CFLAGS=-O -DSTAGEDIR=\"${STAGEDIR}\" -DFLEXNAMES -DTARGET_unix -DTARGET_pdp11 -DTARGET_BSD2_11
+CFLAGS=-O -DSTAGEDIR="\"${STAGEDIR}\"" -DFLEXNAMES -DTARGET_unix -DTARGET_pdp11 -DTARGET_BSD2_11
 SEPFLAG=-i
 
 cpp:   cpp.o y.tab.o
diff --git a/n.sh b/n.sh
index d855493..606e1c1 100755 (executable)
--- a/n.sh
+++ b/n.sh
@@ -31,7 +31,7 @@ make -C bin/nm CC="$CC" SEPFLAG=
 make -C lib/c2 CC="$CC" SEPFLAG=
 make -C lib/ccom CC="$CC" LDC0FLAGS= LDC1FLAGS= PURFLAG=
 make -C lib/cpp CC="$CC" STAGEDIR="$ROOT/stage" SEPFLAG=
-make -C ucb/strcompact CC="$CC" SEPFLAG= CROSSDIR="$ROOT/cross"
+make -C ucb/strcompact CC="$CC" SEPFLAG= CROSSDIR="$ROOT/cross" LOCALE="LC_ALL=C "
 make -C ucb/symcompact CC="$CC" SEPFLAG=
 make -C ucb/symdump CC="$CC" SEPFLAG=
 make -C ucb/symorder CC="$CC" SEPFLAG=
index 862fa23..c6667e2 100644 (file)
@@ -97,7 +97,7 @@ unix: ${SUB} ${KERNOBJ} checksys
        ./checksys unix
 
 vers.o: FRC
-       sh ../conf/newvers.sh
+       #sh ../conf/newvers.sh
        ${CC} -c vers.c
 
 boot.o: boot.s
@@ -191,7 +191,7 @@ checksys.o: /home/nick/src/211bsd.git/stage/usr/include/sys/types.h
 checksys.o: /home/nick/src/211bsd.git/stage/usr/include/unistd.h
 checksys.o: /home/nick/src/211bsd.git/stage/usr/include/sys/types.h
 checksys.o: /home/nick/src/211bsd.git/stage/usr/include/machine/machparam.h
-checksys.o: /home/nick/src/211bsd.git/stage/usr/include/sys/types.h
+checksys.o: /home/nick/src/211bsd.git/stage/usr/include/sys/types.h csym.h
 checksys.o: /home/nick/src/211bsd.git/stage/usr/include/sys/types.h
 checksys.o: /home/nick/src/211bsd.git/stage/usr/include/varargs.h
 
index bb554ee..4b61e94 100644 (file)
@@ -1 +1 @@
-char version[] = "2.11 BSD UNIX #179: Wednesday 4 January 13:17:28 AEDT 2017\n    nick@nick-HP-Pavilion-x360-Convertible:/home/nick/src/211bsd.git/sys/GENERIC\n";
+char version[] = "2.11 BSD UNIX #119: Wed Aug 23 20:56:53 PDT 2006\n    root@:/usr/src/sys/GENERIC\n";
index a14f8d5..078fa0f 100644 (file)
@@ -1 +1 @@
-179
+119
index 0f1404f..ec8dd53 100644 (file)
@@ -6,7 +6,7 @@
 SRCS=strcompact.c ../../lib/libc/pdp/gen/nsym.c
 OBJS=strcompact.o ../../lib/libc/pdp/gen/nsym.o
 
-CFLAGS=-O -DCROSSDIR=\"${CROSSDIR}\"
+CFLAGS=-O -DCROSSDIR="\"${CROSSDIR}\"" -DLOCALE="\"${LOCALE}\""
 SEPFLAG=-i
 
 all:   strcompact
index de0efef..e5803b4 100755 (executable)
@@ -2,5 +2,5 @@
 ROOT="`pwd |sed -e 's/\/ucb\/strcompact$//'`"
 CC="cc -Iinclude -Wall -Wno-char-subscripts -Wno-deprecated-declarations -Wno-format -Wno-maybe-uninitialized -Wno-parentheses -Wno-unused-result"
 mkdir --parents "$ROOT/cross/usr/ucb"
-make CC="$CC" SEPFLAG= CROSSDIR="$ROOT/cross"
+make CC="$CC" SEPFLAG= CROSSDIR="$ROOT/cross" LOCALE="LC_ALL=C "
 make DESTDIR="$ROOT/cross" install
index 33fc998..a6d31cf 100644 (file)
@@ -47,7 +47,7 @@
 #endif
 
        char    *Pgm;
-       char    *Sort = "/usr/bin/sort";
+       char    *Sort = LOCALE "/usr/bin/sort";
        char    *Symdump = CROSSDIR "/usr/ucb/symdump";
 static char    strfn[32], symfn[32];
 
@@ -132,6 +132,7 @@ register FILE       *fpin;
 
        sprintf(buf1, "%s %s | %s +0 -1 +1n -2 +2n -3 +3n -4 -u", Symdump,
                argv[1], Sort);
+ /*fprintf(stderr, "%s\n", buf1);*/
        sortfp = popen(buf1, "r");
        if      (!sortfp)
                {
index 6e0ed4b..7c6a7f4 100644 (file)
@@ -298,7 +298,10 @@ int main(argc, argv) int argc; char **argv; {
        for     (sp = symtab; sp < symtabend; sp++)
                {
 #ifdef pdp11
-               if      (!sp->n_un.n_name)
+               if      (!sp->n_un.n_name) {
+                       sp->n_un.n_strx = -1L;
+                       continue;
+               }
 #else
                if      (sp->n_un.n_strx < 0)
 #endif
@@ -325,7 +328,7 @@ int main(argc, argv) int argc; char **argv; {
        ftruncate(fileno(fp), ftell(fp));
        for     (sp = symtab; sp < symtabend; sp++)
                {
-               if      (sp->n_un.n_strx == 0)
+               if      (sp->n_un.n_strx < 0)
                        continue;
                nsyms++;
 #ifdef pdp11