--- ./elf/Makefile.~1~	Sat Dec  3 22:48:33 1994
+++ ./elf/Makefile	Wed Jan 18 12:54:43 1995
@@ -23,9 +23,9 @@
 
 LIBSRC = libctype.o    libi386.o    libsignal.o	  libstdlib.o globals.o \
 	libsysdeps.o   libcvt.o     libmalloc.o   libstdio.o	  libstring.o \
-	libsvr4.o	libdirent.o liblocale.o	  libtime.o	libpwd.o
+	libsvr4.o	libdirent.o liblocale.o	  libtime.o	libpwd.o libnls.o
 
-all: ../libc.so.1 ../ld.so.1
+all: ../libc.so.1 ../ld.so.1 ../libdl.so.1
 
 ../libc.so.1: Makefile i386/elfinterp.o hash.o readelflib1.o  i386/resolve.o i386/boot1.o libdl/dlib.o $(LIBSRC)
 	$(LD) -e _dl_boot $(LD_SHLIBFLAG) -o ../libc.so.1 i386/boot1.o i386/elfinterp.o \
@@ -34,6 +34,9 @@
 ../ld.so.1: Makefile i386/elfinterp.o hash.o readelflib1.o  i386/resolve.o i386/boot1.o
 	$(LD) -e _dl_boot $(LD_SHLIBFLAG) -o ../ld.so.1 i386/boot1.o i386/elfinterp.o \
 		i386/resolve.o hash.o readelflib1.o
+
+../libdl.so.1: Makefile libdl/dlib.o
+	$(LD) $(LD_SHLIBFLAG) -o ../libdl.so.1 libdl/dlib.o
 
 test: test.o ../libc.so.1
 	$(LD) -o test -I ../libc.so.1 test.o ../libc.so.1
--- ./elf/hash.c.~1~	Wed Nov 23 12:56:21 1994
+++ ./elf/hash.c	Wed Dec  7 19:54:35 1994
@@ -168,6 +168,7 @@
 
       if(_dl_strcmp(pnt, name) == 0 && 
 	 (ELF32_ST_TYPE(symtab[si].st_info) == STT_FUNC ||
+	  ELF32_ST_TYPE(symtab[si].st_info) == STT_NOTYPE ||
 	  ELF32_ST_TYPE(symtab[si].st_info) == STT_OBJECT) &&
 	 symtab[si].st_value != 0) {
 
--- ./elf/readelflib1.c.~1~	Sat Dec  3 23:37:57 1994
+++ ./elf/readelflib1.c	Wed Jan 18 16:02:03 1995
@@ -108,6 +108,7 @@
       while(*pnt1) *pnt++ = *pnt1++;
       pnt1 = full_libname + 9;
       while(*pnt1) *pnt++ = *pnt1++;
+      *pnt++ = 0;
       tpnt1 = _dl_load_elf_shared_library(mylibname, 0);
     }
 #else
@@ -118,7 +119,7 @@
   }
 
   /* try "/lib/" first. */
-#if 1
+#ifndef IBCS_COMPATIBLE
   pnt1 = "/lib/";
   pnt = mylibname;
   while(*pnt1) *pnt++ = *pnt1++;
--- ./include/linux/fcntl.h.~1~	Wed Dec  1 18:35:22 1993
+++ ./include/linux/fcntl.h	Mon Dec  5 19:19:17 1994
@@ -1,3 +1,5 @@
+#ifndef _FCNTL_H
+#define _FCNTL_H
 /*
  * fcntl.h     iBCS compatable header
  */
@@ -38,3 +40,4 @@
 
 #define O_ACCMODE        3
 #define FD_CLOEXEC       1
+#endif
--- ./include/setjmp.h.~1~	Thu Jan 27 20:51:17 1994
+++ ./include/setjmp.h	Mon Dec  5 20:53:38 1994
@@ -56,6 +56,8 @@
 /* Store the calling environment in ENV, also saving the
    signal mask if SAVEMASK is nonzero.  Return 0.  */
 extern void __sigjmp_save __P ((sigjmp_buf __env, int __savemask));
+
+#ifndef ELF_LIBRARY
 #ifdef __GNUC__
 #define	sigsetjmp(env, savemask) \
   ({ __typeof ((*((sigjmp_buf *) 0))[0]) *__e = (env);			      \
@@ -66,7 +68,7 @@
 #define	sigsetjmp(env, savemask) \
   (__sigjmp_save ((env), (savemask)), __setjmp ((env)[0].__jmpbuf))
 #endif
-
+#endif
 
 /* Jump to the environment saved in ENV, making the
    sigsetjmp call there return VAL, or 1 if VAL is 0.
--- ./include/unistd.h.~1~	Thu Feb  3 22:22:59 1994
+++ ./include/unistd.h	Wed Jan 18 13:04:22 1995
@@ -297,43 +297,21 @@
 /* Values for the argument to `sysconf'.
    These correspond to the _POSIX_* symbols in <posix_limits.h> and above,
    but may vary at run time.  */
-enum
-{
-  _SC_ARG_MAX,
-  _SC_CHILD_MAX,
-  _SC_CLK_TCK,
-  _SC_NGROUPS_MAX,
-  _SC_OPEN_MAX,
-  _SC_STREAM_MAX,
-  _SC_TZNAME_MAX,
-  _SC_JOB_CONTROL,
-  _SC_SAVED_IDS,
-  _SC_VERSION,
 
-  /* CLOCKS_PER_SEC: Units/sec of clock() */
-  _SC_CLOCKS_PER_SEC,
+#define  _SC_ARG_MAX	1
+#define  _SC_CHILD_MAX	2
+#define  _SC_CLK_TCK	3
+#define  _SC_NGROUPS_MAX	4
+#define  _SC_OPEN_MAX	5
+#define  _SC_JOB_CONTROL	6
+#define  _SC_SAVED_IDS	7
+#define  _SC_VERSION	8
+#define  _SC_PASS_MAX	9
+#define  _SC_LOGNAME_MAX	10
+#define  _SC_PAGESIZE	11
+#define  _SC_XOPEN_VERSION	12
 
-  /* Values for the argument to `sysconf'
-     corresponding to _POSIX2_* symbols.  */
-  _SC_BC_BASE_MAX,
-  _SC_BC_DIM_MAX,
-  _SC_BC_SCALE_MAX,
-  _SC_BC_STRING_MAX,
-  _SC_COLL_WEIGHTS_MAX,
-  _SC_EQUIV_CLASS_MAX,
-  _SC_EXPR_NEST_MAX,
-  _SC_LINE_MAX,
-  _SC_RE_DUP_MAX,
-
-  _SC_2_VERSION,
-  _SC_2_C_BIND,
-  _SC_2_C_DEV,
-  _SC_2_FORT_DEV,
-  _SC_2_FORT_RUN,
-  _SC_2_SW_DEV,
-  _SC_2_LOCALEDEF
-};
-
+#define  _SC_TZNAME_MAX		17
 
 /* Get the value of the system variable NAME.  */
 extern long int __sysconf __P ((int __name));
--- ./svr4/Makefile.~1~	Wed Mar 23 08:00:35 1994
+++ ./svr4/Makefile	Tue Dec 13 19:55:49 1994
@@ -2,10 +2,11 @@
 include	../Makerules
 include	../Makeconfig
 
+XCFLAGS=-D__USE_POSIX
 
 SRC1S=	__fxstat.S __lxstat.S __memcntl.S __mmap.S __munmap.S __nuname.S __poll.S __seteuid.S __setegid.S __sigprocmsk.S __ulimit.S __xmknod.S __xstat.S 
 
-SRC2S= __assert.c __getline.c __longjmp.c __makedev.c __setjmp.c _errlist.c _msync.c dup2.c getcwd.c mblen.c mbtowc.c perror.c readv.c remove.c sleep.c strerror.c tcsetatr.c wctomb.c writev.c
+SRC2S= __assert.c __getline.c __longjmp.c __makedev.c __setjmp.c _errlist.c _msync.c dup2.c getcwd.c mblen.c mbtowc.c perror.c readv.c remove.c sleep.c strerror.c tcsetatr.c wctomb.c writev.c sigsetjmp.c
 
 SRCS	= $(SRC1S) $(SRC2S)
 ASMS	= $(SCR1S:.S=.s) $(SRC2S:.c=.s)
--- ./svr4/sigsetjmp.c.~1~	Mon Dec  5 20:44:46 1994
+++ ./svr4/sigsetjmp.c	Mon Dec 12 22:07:17 1994
@@ -18,38 +18,18 @@
 
 #include <ansidecl.h>
 #include <stddef.h>
-#include <setjmp.h>
 #include <signal.h>
+#include <setjmp.h>
 
 /* Store the calling environment in ENV, also saving the
    signal mask if SAVEMASK is nonzero.  Return 0.  */
+
 int
 DEFUN(sigsetjmp, (env, savemask), sigjmp_buf env AND int savemask)
 {
-  if (savemask)
-    env[0].__savemask = sigprocmask(SIG_BLOCK, (sigset_t *) NULL,
-				    &env[0].__sigmask) == 0;
-  else
-    env[0].__savemask = 0;
-
-#define REGS \
-  REG (bx);\
-  REG (si);\
-  REG (di)
-
-  /* Save the general registers.  */
-#define REG(xx) asm volatile ("movl %%e" #xx ",%0" : \
-	"=m" ((long int) ((env[0].__jmpbuf)[0].__##xx)) : )
-  REGS;
-
-  /* Save the return PC.  */
-  (env[0].__jmpbuf)[0].__pc = (PTR) ((PTR *) &env)[-1];
-
-  /* Save caller's FP, not our own.  */
-  (env[0].__jmpbuf)[0].__bp = (PTR) ((PTR *) &env)[-2];
-
-  /* Save caller's SP, not our own.  */
-  (env[0].__jmpbuf)[0].__sp = (PTR) &env;
-
-  return 0;
+  __typeof ((*((sigjmp_buf *) 0))[0]) *__e = (env);
+  env[0].__mask_was_saved = (savemask &&
+			     sigprocmask (SIG_BLOCK, (sigset_t *) NULL,
+					  &env[0].__saved_mask) == 0);
+     __setjmp (__e[0].__jmpbuf);
 }
--- ./svr4/sysconf.c.~1~	Mon Dec 12 22:21:20 1994
+++ ./svr4/sysconf.c	Mon Dec 12 22:36:15 1994
@@ -1,4 +1,13 @@
 
+#include <unistd.h>
+#include <limits.h>
+#include <time.h>
+#include <errno.h>
+#include <linux/param.h>
+
+#define PAGESIZE 4096
+#define LOGNAME_MAX PATH_MAX
+
 long sysconf(int name)
 {
   switch(name)
@@ -10,7 +19,7 @@
     case _SC_CLK_TCK:
       return CLK_TCK;
     case _SC_NGROUPS_MAX:
-      return NGROUPS_MAX;
+      return NGROUPS;
     case _SC_OPEN_MAX:
       return OPEN_MAX;
     case _SC_PASS_MAX:
--- ./sysdeps/__sysconf.c.~1~	Thu Feb  3 22:23:00 1994
+++ ./sysdeps/__sysconf.c	Tue Dec 13 19:55:34 1994
@@ -59,9 +59,6 @@
     case _SC_OPEN_MAX:
       return OPEN_MAX;
 
-    case _SC_STREAM_MAX:
-      return STREAM_MAX;
-
     case _SC_TZNAME_MAX:
 #if 1
       return TZNAME_MAX;
@@ -204,3 +201,7 @@
 #endif
     }
 }
+
+#ifdef ELF_LIBRARY
+__asm__(".weak sysconf; sysconf = __sysconf");
+#endif
--- ./sysdeps/time.c.~1~	Sun Jul 31 21:56:40 1994
+++ ./sysdeps/time.c	Wed Jan 18 13:01:35 1995
@@ -32,3 +32,9 @@
         }
     return time_result;
     }
+
+
+#ifdef ELF_LIBRARY
+__asm__(".globl _time; _time = time");
+#endif
+
--- ./sysdeps/Makefile.~1~	Sun Jul 31 21:56:39 1994
+++ ./sysdeps/Makefile	Wed Jan 18 16:56:01 1995
@@ -10,7 +10,7 @@
 	__fchmod.S	__fchown.S	__fcntl.S	__fork.S	\
 	__fstat.S	__fstatfs.S	__getdents.S	__getegid.S	\
 	__geteuid.S     __getgid.S	__getgrps.S	__getpid.S	\
-	__getuid.S					\
+	__getuid.S	__getppid.S			\
 	__ioctl.S	__kill.S	__link.S	__lseek.S	\
 	__lstat.S	__mkdir.S	__mknod.S	__open.S	\
 	__pipe.S	__read.S	__readlink.S	__rmdir.S	\
--- ./sysdeps/__getppid.S.~1~	Sat Jan 29 16:03:40 1994
+++ ./sysdeps/__getppid.S	Wed Jan 18 16:57:16 1995
@@ -39,3 +39,9 @@
 	ret
 
 
+
+#ifdef ELF_LIBRARY
+	.type _getppid,@function
+	.weak getppid
+	getppid = _getppid
+#endif
--- ./nls/Makefile.~1~	Mon Dec  5 19:12:58 1994
+++ ./nls/Makefile	Mon Dec  5 19:29:17 1994
@@ -1,11 +1,12 @@
-LIBRARY	=libsvr4
+LIBRARY	=libnls
 include	../Makerules
 include	../Makeconfig
 
+XCFLAGS= -DSYSV -DOLD_NLS_PATHS -DI_STDARG
 
-SRC1S=	__fxstat.S __lxstat.S __memcntl.S __mmap.S __munmap.S __nuname.S __poll.S __seteuid.S __setegid.S __sigprocmsk.S __ulimit.S __xmknod.S __xstat.S 
+SRC1S=
 
-SRC2S= __assert.c __getline.c __longjmp.c __makedev.c __setjmp.c _errlist.c _msync.c dup2.c getcwd.c mblen.c mbtowc.c perror.c readv.c remove.c sleep.c strerror.c tcsetatr.c wctomb.c writev.c
+SRC2S= gencat.c genlib.c mcprt.c mcprtlib.c msgcat-libc.c msgcat.c
 
 SRCS	= $(SRC1S) $(SRC2S)
 ASMS	= $(SCR1S:.S=.s) $(SRC2S:.c=.s)
--- ./Makefile.~1~	Sun Nov 20 11:45:59 1994
+++ ./Makefile	Tue Dec 13 15:14:44 1994
@@ -24,6 +24,8 @@
 all: Makeconfig ibcssubdirs
 endif
 
+DATE := $(shell date +%y%m%d;)
+
 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
 	  else if [ -x /bin/bash ]; then echo /bin/bash; \
 	  else echo sh; fi ; fi)
@@ -49,15 +51,15 @@
 # we want.
 #
 ifdef COFF
-ADDL_SUBDIRS	= header
+ADDL_SUBDIRS	= header missing 
 endif
 
 ifdef ELF
-ADDL_SUBDIRS	= dirent svr4 locale time pwd elf svr4/socket svr4/nsl
+ADDL_SUBDIRS	= dirent svr4 locale nls time pwd elf svr4/socket svr4/nsl
 endif
 
 # List of subdirectories from this level to all lower parts.
-SUBDIRS	=string sysdeps missing ctype convert stdlib malloc stdio \
+SUBDIRS	=string sysdeps ctype convert stdlib malloc stdio \
 	sysdeps/i386 signal $(ADDL_SUBDIRS)
 
 ifdef COFF
@@ -88,5 +90,5 @@
 	rm -f Makeconfig
 
 dist:   clean
-	rm -rf libc_s.tar.gz
-	tar cf - * | gzip > libc_s.tar.gz
+	rm -rf libc_s-*.tar.gz
+	tar cf - * | gzip > libc_s-$(DATE).tar.gz
--- ./README.eric.~1~	Thu Jul 28 21:11:10 1994
+++ ./README.eric	Tue Dec 13 15:10:50 1994
@@ -8,6 +8,11 @@
 2/17/94:	336	   120		   62		   6
 6/16/94:	372	   121		   72		   6
 ******************************************************************
+12/13/94:
+	After a bit of a hiatus (working on GNU linker/assembler, etc), back
+to working on this.  Dynamic loader updated (we use same source base as native
+libc-linux, so that patches/bugfixes get integrated.  Added sysconf, sigsetjmp.
+
 7/28/94:
 	Now support generating the shared libraries with the GNU tools.
 There is not yet a public release of the binutils with support for ELF
