From: Nick Downing Date: Wed, 4 Jan 2017 04:02:51 +0000 (+1100) Subject: Fix minor linkage and symbol table issues, now generates identical kernel X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=ff25de06bb2f77a559de42c96214b21acf176903;p=211bsd.git Fix minor linkage and symbol table issues, now generates identical kernel --- diff --git a/.gitignore b/.gitignore index 92e491e..20a3651 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/bin/cc/Makefile b/bin/cc/Makefile index 6291502..5138f2d 100644 --- a/bin/cc/Makefile +++ b/bin/cc/Makefile @@ -2,7 +2,7 @@ # makefile for cc # -CFLAGS=-DCROSSDIR=\"${CROSSDIR}\" -DSTAGEDIR=\"${STAGEDIR}\" +CFLAGS=-DCROSSDIR="\"${CROSSDIR}\"" -DSTAGEDIR="\"${STAGEDIR}\"" SEPFLAG=-i all: cc diff --git a/bin/ld/Makefile b/bin/ld/Makefile index 864106f..71a7224 100644 --- a/bin/ld/Makefile +++ b/bin/ld/Makefile @@ -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 diff --git a/bin/ld/ld.c b/bin/ld/ld.c index 42c17fc..cd2f8fb 100644 --- a/bin/ld/ld.c +++ b/bin/ld/ld.c @@ -73,9 +73,11 @@ static char *sccsid = "@(#)ld.c 4.6 1998/01/19"; #ifdef pdp11 #include #define OFF_T off_t +#define INT int #else #include #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; } } diff --git a/lib/cpp/Makefile b/lib/cpp/Makefile index 5a47269..998bed4 100644 --- a/lib/cpp/Makefile +++ b/lib/cpp/Makefile @@ -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 --- 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= diff --git a/sys/GENERIC/Makefile b/sys/GENERIC/Makefile index 862fa23..c6667e2 100644 --- a/sys/GENERIC/Makefile +++ b/sys/GENERIC/Makefile @@ -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 diff --git a/sys/GENERIC/vers.c b/sys/GENERIC/vers.c index bb554ee..4b61e94 100644 --- a/sys/GENERIC/vers.c +++ b/sys/GENERIC/vers.c @@ -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"; diff --git a/sys/GENERIC/version b/sys/GENERIC/version index a14f8d5..078fa0f 100644 --- a/sys/GENERIC/version +++ b/sys/GENERIC/version @@ -1 +1 @@ -179 +119 diff --git a/ucb/strcompact/Makefile b/ucb/strcompact/Makefile index 0f1404f..ec8dd53 100644 --- a/ucb/strcompact/Makefile +++ b/ucb/strcompact/Makefile @@ -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 diff --git a/ucb/strcompact/n.sh b/ucb/strcompact/n.sh index de0efef..e5803b4 100755 --- a/ucb/strcompact/n.sh +++ b/ucb/strcompact/n.sh @@ -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 diff --git a/ucb/strcompact/strcompact.c b/ucb/strcompact/strcompact.c index 33fc998..a6d31cf 100644 --- a/ucb/strcompact/strcompact.c +++ b/ucb/strcompact/strcompact.c @@ -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) { diff --git a/ucb/symcompact/symcompact.c b/ucb/symcompact/symcompact.c index 6e0ed4b..7c6a7f4 100644 --- a/ucb/symcompact/symcompact.c +++ b/ucb/symcompact/symcompact.c @@ -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