Sun Jun  5 14:34:12 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* Version 1.08.1.

	* sysdeps/mach/hurd/ioctls.h (_IOR, _IOW): Swap IOC_IN and IOC_OUT.

	* sysdeps/mach/hurd/__ioctl.c: Only pack input for ioctls that
	take input.  Compute expected reply size for ioctls that take
	output and check it properly.

Sat Jun  4 00:35:42 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/ioctls.h (union __ioctl): Type removed.
	(enum __ioctl_datum): Name this enum.
	(_IOC_INOUT, _IOC_GROUP, _IOC_COMMAND, _IOC_TYPE): New macros.
	(_IOT_TYPE[012], _IOT_COUNT[012]): New macros.
	* sysdeps/mach/hurd/__ioctl.c: Use those macros instead of the union.

	* sysdeps/mach/hurd/__fork.c: Major rewrite.  Copy all ports
	present in the task, not just library-maintained ones.  Handle
	sigstate and signal thread setup explicitly here.
	* hurd/hurdsig.c (hurdsig_fork, hurdsig_fork_child): Functions
	removed.

	* hurd/hurdpid.c (init_pids): Don't put this on _hurd_fork_child_hook.

	* sysdeps/mach/hurd/__isatty.c: New file.

	* hurd/hurdsock.c (_hurd_socket_server): Pass NP to __path_lookup,
	not NAME (most of which is uninitialized).

	* hurd/hurdsig.c (_hurdsig_init): Don't check for _hurd_msgport
	being non-null; always initialize it.

Fri Jun  3 21:57:14 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* hurd/hurdrlimit.c (init_rlimit): Restore __mutex_init call.
	(_hurd_rlimit_lock): Set initializer to random value; run-time
	initialization is always required.

	* inet/rcmd.c (rcmd): Compute max fd + 1 for select instead of
	hardcoding 32.

Wed Jun  1 10:52:41 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* hurd/hurdrlimit.c (_hurd_rlimits, _hurd_rlimit_lock): Provide
	initializers so that the file is included in the link properly.
	(init_rlimit): Omit call to __mutex_init.

Tue May 31 18:15:33 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* hurd/hurdmalloc.c (more_memory): Do spin_lock_init on H->lock.
	(malloc_init): New function; put it on _hurd_preinit_hook.

	* sysdeps/mach/hurd/defs.c (init_stdio): If stream already
	allocated, don't allocate a new one.  Don't crash if _hurd_alloc_fd
	returns null if __newstream does.

	* sysdeps/mach/hurd/__brk.c (init_brk): If _hurd_brk is nonzero,
	leave it as it is.  Set PAGEND from _hurd_brk instead of &_end.

Mon May 30 18:37:47 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/hurdrlimit.c (init_rlimit): Put this on _hurd_preinit_hook
	instead of _hurd_subinit.

	* sysdeps/mach/hurd/mig-reply.c (mig_fork_child): Function removed.
	* hurd/dtable.c (fork_parent_dtable): Function removed.

	* sysdeps/generic/resourcebits.h: Rename RLIM_NLIMITS to
	RLIMIT_NLIMITS, add alias for old name.

	* sysdeps/mach/hurd/Makefile (hurd-objpfx): New variable.
	(before-compile): Use that instead of $(common-objpfx).

	* sysdeps/mach/Makefile [! objpfx] (mach-objpfx): Add trailing slash.

Fri May 27 01:34:56 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/hurdsig.c (_hurdsig_init): Always initialize _hurd_sigthread.

	* hurd/dtable.c: Use data_set_element instead of text_set_element
	for _hurd_fork_locks.
	* hurd/hurdsig.c: Likewise.

	* hurd/hurd.h (_hurd_set_data_limit): Declaration removed.

	* hurd/dtable.c (_hurd_dtable_rlimit): Variable removed.
	(init_dtable): Don't set it.

	* hurd/Makefile (headers): Add hurd/resource.h.
	(routines): Add hurdrlimit.
	* hurd/hurd/resource.h: New file.
	* hurd/hurdrlimit.c: New file.
	* sysdeps/mach/hurd/getrlimit.c: Rewritten to just fetch
	_hurd_rlimits.
	* sysdeps/mach/hurd/setrlimit.c: Rewritten to just set _hurd_rlimits.
	* sysdeps/mach/hurd/__brk.c (_hurd_data_limit): Variable removed.
	(_hurd_set_brk): Use _hurd_rlimits[RLIMIT_DATA].
	(_hurd_set_data_limit): Function removed.
	* hurd/alloc-fd.c (_hurd_dtable_rlimit): Variable removed.
	(_hurd_alloc_fd): Use _hurd_rlimits[RLIMIT_OFILE] instead.

	* sysdeps/generic/resourcebits.h: Add RLIMIT_NOFILE as an alias
	for RLIMIT_OFILE.

	* sysdeps/mach/hurd/mig-reply.c (__mig_init): Argument is stack
	on which to set the per-thread reply port variable.

	* sysdeps/mach/hurd/__brk.c (init_brk): Set _hurd_data_end to
	DATA_SIZE bytes past the beginning of data space, rather than to
	DATA_SIZE absolutely.  If vm_map fails, set it to PAGEND.

	* sysdeps/mach/hurd/start.c (_start): Run _hurd_preinit_hook right
	after __mach_init.

	* stdio/freopen.c (freopen): Rewritten using __stdio_reopen to
	preserve the old cookie value when possible.
	* sysdeps/posix/sysd-stdio.c (__stdio_reopen): New function.
	* sysdeps/stub/sysd-stdio.c (__stdio_reopen): New function.
	* sysdeps/mach/hurd/sysd-stdio.c (__stdio_reopen): New function.

	* stdio/freopen.c (freopen): Close the stream if MODE is invalid.

	* hurd/hurdsig.c (_hurd_core_limit): Define variable.

	* socket/sys/socket.h (PF_LOCAL): Define in preference to PF_FILE.

Thu May 26 12:09:51 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* hurd/alloc-fd.c (_hurd_alloc_fd): Don't return EINVAL when
	FIRST_FD is greater than _hurd_dtablesize and less than
	_hurd_dtable_rlimit.  If we want to grow _hurd_dtable, but
	_hurd_dtablesize is as big as _hurd_dtable_rlimit, then return
	EMFILE.  When growing _hurd_dtable, actually do something if
	_hurd_dtablesize is zero.
	
	* hurd/hurdmalloc.c (malloc_fork_prepare, malloc_fork_parent,
	malloc_fork_child): Declare as static so they don't conflict with
	the user's version of this file.

Wed May 25 20:55:16 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__brk.c: Include <cthreads.h> instead of
	<mutex.h>.

	* hurd/hurdmalloc.c, hurd/hurdmalloc.h: New files (temporary hack).
	* hurd/Makefile (routines): Append hurdmalloc.
	(distribute): Append hurdmalloc.h.
	* hurd/alloc-fd.c: Include "hurdmalloc.h" (temporary hack).
	* hurd/dtable.c: Likewise.
	* hurd/hurdinit.c: Likewise.
	* hurd/hurdsig.c: Likewise.
	* hurd/hurdsock.c: Likewise.
	* hurd/new-fd.c: Likewise.
	* sysdeps/mach/hurd/start.c: Likewise.

	* sysdeps/mach/hurd/start.c (start1): Use malloc and a for loop
	instead of calloc.
	* hurd/hurdsig.c (_hurd_thread_sigstate): Use malloc and memset
	instead of calloc.

	* sysdeps/mach/hurd/__brk.c (init_brk): Reference self to avoid
	compiler warning.  Add init_brk to _hurd_preinit_hook instead of
	__libc_subinit.

	* sysdeps/mach/hurd/start.c (_hurd_preinit_hook): New variable.
	(start1): Run _hurd_preinit_hook before threadvar setup.

Tue May 24 17:42:34 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/dtable.c (init_dtable): Initialize _hurd_dtablesize to
	_hurd_init_dtablesize.  Initialize _hurd_dtable_rlimit as
	_hurd_dtablesize used to be set, but don't let it be zero.
	(_hurd_dtable_rlimit): New variable.

Tue May 24 12:57:19 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/sleep.c (sleep): Timeout arg to mach_msg is
	in milliseconds, not microseconds; compute it accordingly.

	* sysdeps/mach/hurd/__select.c (__select): Deleted variables
	DTABLE and DTABLE_ULINK.  Use new vars _hurd_dtablesize and
	_hurd_dtable instead of old _hurd_dtable structure.  Use new
	locking protocol on _hurd_dtable.

Tue May 24 01:55:24 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__setitmr.c: Don't include mutex.h.

	* sysdeps/mach/hurd/defs.c (init_stdio): Reference self.

	* sysdeps/unix/sysv/sysv4/i386/sysdep.h: Include
	sysdeps/unix/sysv/i386/sysdep.h, not sysdeps/unix/i386/sysdep.h

Mon May 23 19:05:44 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/Makefile (mib_hacks, defines): Variables removed.

	* mach/devstream.c (mach_open_devstream): Set STREAM's seek and
	fileno io functions to null.

	* hurd/hurdexec.c (_hurd_exec): Fixed adding of dtable ports to
	PLEASE_DEALLOC array.

	* sysdeps/mach/hurd/defs.c (init_stdio): Unlock the descriptors
	after fetching them.  If a standard descriptor is not allocated,
	allocate the structure and store its pointer in the stream anyway.

	* stdio/gets.c: Only return null on P==S if feof (STREAM).

	* stdio/vfprintf.c: Make %Z a type modifier, not a format spec.

	* sysdeps/mach/hurd/fdopen.c: Return NULL rather than -1 for error.

Mon May 23 14:24:50 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__close.c (__close): Use new _hurd_fd_get
	protocol.
	* sysdeps/mach/hurd/__dup2.c (__dup2): Likewise.  Use
	_hurd_dtablesize and _hurd_dtable instead of old _hurd_dtable
	structure.

	* sysdeps/mach/hurd/sysd-stdio.c (__stdio_seek): Use
	HURD_FD_PORT_USE, not HURD_FD_USE.
	* sysdeps/mach/hurd/stdio_init.c (__stdio_init_stream): Variable
	is D, not FD.

	* hurd/alloc-fd.c (_hurd_alloc_fd): Arg FIRST_FD is not actually
	const. 
	* hurd/hurdsig.c (_hurd_internal_post_signal [case SIGINFO]): If
	we are not the process group leader, ignore the signal.
	(_S_sig_post [case SIGURG]): Declaration of D was out of place.

	* sysdeps/mach/hurd/fdopen.c: Include <hurd/io.h> for 
	io_get_openmodes prototype.

Sat May 21 16:03:23 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* assert/assert.c (__assert_fail): Put program name first in msg.

	* hurd/Makefile (dtable): Removed setdtsz.

	* hurd/hurdexec.c: Use _hurd_dtable and _hurd_dtablesize instead of
	old _hurd_dtable structure.
	* hurd/hurdsig.c: Likewise.
	* hurd/alloc-fd.c: Likewise.
	* hurd/hurdioctl.c (rectty_dtable): Likewise.

	* Version 1.08 released.

	* mach/mach_error_string.c: Renamed to errstring.c.
	* mach/Makefile (routines): Renamed mach_error_string to errstring.
	* mach/err_mach_ipc.sub: Renamed to err_mach.sub.
	* mach/err_bootstrap.sub: Renamed to err_boot.sub.

	* sysdeps/generic/sigset.h (__SIGSETFN): Take new arg CONST; use it
	for CONST qualifier on SET arg to generated function.
	Changed uses to pass it; sigismember passes __const, others empty.

	* sysdeps/mach/hurd/sysd-stdio.c: Rewritten to use `struct hurd_fd *'s
	for cookies.
	* sysdeps/mach/hurd/fdopen.c: Rewritten accordinly.
	* sysdeps/mach/hurd/defs.c (init_stdio): Rewritten accordingly.
	Add it to the _hurd_fd_subinit hook instead of the __libc_subinit
	hook.
	* sysdeps/mach/hurd/stdio_init.c: New file.
	* hurd/dtable.c (_hurd_fd_subinit): New hook variable.
	(init_dtable): Run the _hurd_fd_subinit hook.

	* hurd/hurd/fd.h (struct hurd_dtable): Type removed.
	(_hurd_dtable_users, _hurd_dtable_rlimit): Variables removed.
	(_hurd_dtable): Make this a struct hurd_fd **.
	(_hurd_dtablesize): New variable.
	(struct hurd_fd_user): Type removed.
	(_hurd_dtable_get, _hurd_dtable_free, _hurd_dtable_fd): Functions
	removed.
	(_hurd_fd_get): Rewritten.  Take just one arg, and look it up in
	_hurd_dtable; return a struct hurd_fd *.
	(HURD_FD_USE): Rewritten to use new _hurd_fd_get interface.
	* hurd/dtable.c	(_hurd_dtable_users, _hurd_dtable_rlimit):
	Variables removed.
	(_hurd_dtable): Make this a struct hurd_fd **.
	(_hurd_dtablesize): New variable.
	(init_dtable, fork_parent_dtable, fork_child_dtable,
	ctty_new_pgrp, reauth_dtable): Use new simpler _hurd_dtable format.
	* sysdeps/mach/hurd/__getdtsz.c: Use _hurd_dtablesize.
	* sysdeps/mach/hurd/__fcntl.c: Use new _hurd_fd_get protocol.

	* hurd/dtable.c (get_dtable_port): Return the ctty port if set.

	* hurd/hurd/fd.h (_hurd_fd_error_signal): New function, broken out
	of _hurd_fd_error.
	(_hurd_fd_error): Call it.

	* hurd/Makefile (dtable): Add fd-close.
	* hurd/fd-close.c: New file.
	* hurd/hurd/fd.h: Declare _hurd_fd_close.

	* sysdeps/mach/hurd/__close.c: Call _hurd_fd_close.

	* signal/Makefile (routines): Add sigsetops.
	* signal/sigsetops.c: New file.

	* sysdeps/unix/sysv/sysv4/sigset.h (_EXTERN_INLINE): New macro.
	Use it for all the inline functions.

	* signal/signal.h: Move #include <signum.h> inside #ifdef _SIGNAL_H.

	* sysdeps/generic/sigset.h: Protect types with #ifndef
	_SIGSET_H_types.  Protect rest with #if !defined (_SIGSET_H_fns)
	&& defined (_SIGNAL_H).
	(__SIGSETFN): Add extern declaration of NAME inside function.

	* sysdeps/unix/ioctls-tmpl.c: Add missing #endif.
	* sysdeps/unix/Makefile (make-ioctls-CFLAGS): Remember -D.

Fri May 20 20:42:33 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/Makefile (sys/termios.h): Variable removed.
	(ioctl-includes): New variable.
	(make-ioctls-CFLAGS): Compute value generally from $(ioctl-includes).
	($(common-objpfx)ioctls): Depend on $(ioctl-includes), instead of
	$(sys/termios.h).

	* sysdeps/unix/sysv/sco3.2.4/sco_getgrp.S: New file.
	* sysdeps/unix/sysv/sco3.2.4/Makefile (sysdep_routines): Add
	sco_getgrp.
	* sysdeps/unix/sysv/sco3.2.4/__getgrps.c: New file.

	* sysdeps/generic/sigset.h (__sigismember, __sigaddset, __sigdelset):
	Rewritten as extern inline functions; check for bogus signal number.

	* configure.in (names): Put $implied before $* in new $sysnames
	list remaining to be processed; this ensures unix/common precedes
	unix/sysv4 for sysv4.

Thu May 19 18:35:02 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/defs.c (init_stdio): Make stdin and stdout
	line buffered and stderr unbuffered.

Thu May 19 16:14:36 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/getcwd.c: Remember to call io_stat on cwdir.

	* sysdeps/generic/configure.in: Use changequote around if expr
	to avoid [] elision.

Thu May 19 13:53:59 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* hurd/hurdsock.c (_hurd_socket_server): Return EPFNOSUPPORT
	rather than EPROTONOSUPPORT because it's the entire protocol
	family that isn't present, not just one protocol.

	* sysdeps/mach/hurd/__access.c (__access): Don't deallocate
	CRDIR or CWDIR; that's taken care of by the _hurd_port_get
	and _hurd_port_free system.

Thu May 19 04:14:57 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/posix/libc_fatal.c: Include <errno.h>.

	* sysdeps/unix/sysv/sysv4/__sigact.c: Include <stddef.h> for NULL.

	* sysdeps/mach/hurd/__access.c: Fix swapped poly and count args in
	__auth_makeauth call.

	* sysdeps/mach/hurd/ioctls.h (_IOC, _IOT): Rewritten using bitwise
	operations, so the result is always technically a constant (the
	old method of using a union constructor expression was not good
	enough for initializers).

	* hurd/hurdsock.c (_hurd_socket_server): If path_lookup returns
	ENOENT, we return EPROTONOSUPPORT.

	* hurd/Makefile (dtable): Add hurdioctl.
	* hurd/dtable.c (rectty_dtable, tiocsctty, tiocnotty): Functions
	moved:
	* hurd/hurdioctl.c: New file.
	(fioctl, fioclex): New functions.
	* sysdeps/mach/hurd/__ioctl.c (_hurd_ioctl_handler_lists): Don't
	define it, just declare it.

	* sysdeps/mach/hurd/getcwd.c: Use MACH_PORT_RIGHT_SEND, not
	MACH_PORT_TYPE_SEND, in mach_port_mod_refs call.

	* sysdeps/mach/hurd/__getpgrp.c: Don't lock _hurd_pid_lock.

	* sysdeps/unix/common/glue-ctype.c: Don't include <ctype.h>.
	Instead, add explicit extern declaration of TABLE in main.

Wed May 18 17:54:00 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/m68k/Makefile (asm-CPPFLAGS): Append $(m68k-syntax-flag).

	* Version 1.07.6.

	* sunrpc/Makefile (+gccwarn): Set to -w.

	* sysdeps/unix/Makefile (ifeq testing sys/param.h): Use patsubst
	instead of dir to remove directory name from .../sys/param.h but
	preserve "sys/".

	* inet/sys/bitypes.h: Replaced with just #include <sys/types.h>.

	* posix/sys/utsname.h (_UTSNAME_NODENAME_LENGTH): If undefined,
	define to _UTSNAME_LENGTH.
	(struct utsname): Use _UTSNAME_NODENAME_LENGTH for `nodename' member.
	* sysdeps/unix/bsd/sun/sunos4/utsnamelen.h (_UTSNAME_NODENAME_LENGTH):
	Define it.

	* resource/sys/resource.h (enum __rlimit_resource): Removed.
	Just include <resourcebits.h> instead.
	* resource/Makefile (headers): Add resourcebits.h.
	* sysdeps/generic/resourcebits.h: New file.
	* sysdeps/unix/bsd/sun/sunos4/resourcebits.h: New file.

	* stdio/test-popen.c (main): Use popen to read the file back, too.

	* sysdeps/unix/sysv/sysv4/i386/sysdep.h: New file.

	* sysdeps/unix/sysv/sysv4/i386/sys-sig.S: Fixed typo: movel->movl.

Tue May 17 12:46:31 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* mach/mach/mach_traps.h (__mach_reply_port, __mach_thread_self,
	__mach_task_self, __mach_host_self): New declarations of __ 
	versions of syscall traps.
	(swtch, __swtch, swtch_pri, __swtch_pri, thread_switch,
	__thread_switch, evc_wait, __evc_wait): New prototypes.
	* mach/Makefile (headers): Added mach/mach_traps.h so that the
	GNU version is installed instead of the Mach version.
	
Mon May 16 15:34:12 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/stub/sys/param.h: New file.

	* mach/lock-intern.h (__mutex_lock, __mutex_unlock): Real definitions.
	(__mutex_lock_solid, __mutex_unlock_solid, __mutex_init): Declare
	them.
	* mach/mutex-solid.c: New file.
	* mach/Makefile (lock): Add mutex-solid.
	(lock-headers): Remove mutex.h.
	* mach/mutex.h: File removed.
	* hurd/hurd/id.h: Include <cthreads.h> instead of <mutex.h>.
	* hurd/hurd/signal.h: Likewise.
	* hurd/hurdsig.c: Likewise.
	* hurd/hurdsock.c: Likewise.
	* hurd/dtable.c: Likewise.
	* hurd/__setauth.c: Likewise.
	* sysdeps/mach/hurd/Makefile (includes): Also append
	-I$(hurd-srcdir)/libthreads.

	* sysdeps/posix/system.c [WAITPID_CANNOT_BLOCK_SIGCHLD]: Don't
	block SIGCHLD.
	* sysdeps/unix/sysv/sco3.2.4/system.c
	(WAITPID_CANNOT_BLOCK_SIGCHLD): Define this macro.

	* sysdeps/posix/sigintr.c (siginterrupt) [! SA_RESTART]: Always
	fail with ENOSYS.

	* sysdeps/posix/__sigvec.c [! SA_ONSTACK]: Fail with ENOSYS if
	SV_ONSTACK is set in VEC->sv_flags.
	[SA_RESTART]: Protect SV_INTERRUPT check with this.

	* sysdeps/mach/sysdep.h (FATAL_PREPARE): New macro.
	* sysdeps/posix/libc_fatal.c: Include <sysdep.h>.
	[FATAL_PREPARE]: Invoke the macro.
	* assert/assert.c: Likewise.

	* sysdeps/generic/memmem.c: Start BEGIN at HAYSTACK, not partway
	into it.  Loop until BEGIN passes the location in HAYSTACK with
	NEEDLE_LEN bytes remaining to the end.
	Compare first byte manually before calling memcmp.

	* sysdeps/unix/sysv/sco3.2.4/__sigact.S: Fix typo.

	* posix/sys/types.h [__USE_BSD] (int32_t, int16_t, int8_t,
	u_int32_t, u_int16_t, u_int8_t): New typedefs.

	* assert/assert.c (__assert_program_name): New variable.
	(__assert_fail): Print that in the msg too.
	[HAVE_GNU_LD] (set_progname): New function to set it up at startup.

Thu May 12 01:10:52 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/__setauth.c: Do critical section locking.
	* hurd/hurdexec.c: Likewise.
	* hurd/hurdauth.c (_S_del_auth): Likewise.
	* hurd/getuids.c: Likewise.
	* hurd/dtable.c: Likewise.
	* hurd/alloc-fd.c: Likewise.
	* hurd/hurd/port.h: Likewise.
	* hurd/hurd/fd.h: Likewise.
	* hurd/setuids.c: Likewise.
	* hurd/intern-fd.c: Likewise.
	* hurd/hurdsock.c (_hurd_socket_server): Likewise.
	* sysdeps/mach/hurd/setrlimit.c: Likewise.
	* sysdeps/mach/hurd/setgroups.c: Likewise.
	* sysdeps/mach/hurd/seteuid.c: Likewise.
	* sysdeps/mach/hurd/setegid.c: Likewise.
	* sysdeps/mach/hurd/getrlimit.c: Likewise.
	* sysdeps/mach/hurd/__setuid.c: Likewise.
	* sysdeps/mach/hurd/__setreuid.c: Likewise.
	* sysdeps/mach/hurd/__setregid.c: Likewise.
	* sysdeps/mach/hurd/__setitmr.c: Likewise.
	* sysdeps/mach/hurd/__setgid.c: Likewise.
	* sysdeps/mach/hurd/__select.c: Likewise.
	* sysdeps/mach/hurd/__sbrk.c: Likewise.
	* sysdeps/mach/hurd/__getuid.c: Likewise.
	* sysdeps/mach/hurd/__getpgrp.c: Likewise.
	* sysdeps/mach/hurd/__getitmr.c: Likewise.
	* sysdeps/mach/hurd/__getgrps.c: Likewise.
	* sysdeps/mach/hurd/__getgid.c: Likewise.
	* sysdeps/mach/hurd/__geteuid.c: Likewise.
	* sysdeps/mach/hurd/__getegid.c: Likewise.
	* sysdeps/mach/hurd/__getdtsz.c: Likewise.
	* sysdeps/mach/hurd/__fork.c: Likewise.
	* sysdeps/mach/hurd/__fcntl.c: Likewise.
	* sysdeps/mach/hurd/__dup2.c: Likewise.
	* sysdeps/mach/hurd/__close.c: Likewise.
	* sysdeps/mach/hurd/__brk.c: Likewise.
	* sysdeps/mach/hurd/__access.c: Likewise.

	* sysdeps/mach/hurd/reboot.c (reboot): Use the host priv port to
	prove authority.

	* sysdeps/mach/hurd/__readlink.c: Don't request O_READ access.

	* sysdeps/mach/hurd/__ioctl.c: Don't expect result data	unless
	return code is zero.  Translate MIG_BAD_ID or EOPNOTSUPP to ENOTTY.

	* mach/devstream.c (output): Use device_write instead of
	device_write_inband.

Wed May 11 18:49:31 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/hurdinit.c (_hurd_init): Finsih loop of _hurd_port_init on
	_hurd_ports elts before doing _hurd_proc_init or
	__task_set_special_port.

	* hurd/hurd/signal.h (struct hurd_sigstate): Add new
	`critical_section' member.  Remove #if 0'd out vfork crap.
	(_hurd_critical_section_lock, _hurd_critical_section_unlock): New
	functions. 
	(HURD_CRITICAL_BEGIN, HURD_CRITICAL_END): New macros.

	* io/Makefile (headers): Add poll.h and sys/poll.h.
	(routines): Add poll.
	* sysdeps/unix/bsd/sun/sunos4/poll.S: New file.
	* sysdeps/unix/sysv/poll.S: New file.
	* sysdeps/unix/bsd/poll.c: New file.
	* sysdeps/stub/poll.c: New file.
	* io/poll.h, io/sys/poll.h: New files.

	* misc/bsd-compat.c (setjmp): New function.

	* sysdeps/unix/Makefile (sysdep_headers): Remove sys/param.h.
	* misc/Makefile (headers): Add it here instead.

	* io/test-utime.c (main): New file.
	* io/Makefile (tests): New variable.

Wed May 11 13:44:33 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* hurd/hurd/threadvar.h (__hurd_errno_location): Remove 
	__volatile keyword.  `volatile int errno' is not the same
	as `int errno'; user programs often mention the latter.
	* errno.h: Remove __volatile keyword; same reason.

Tue May 10 17:21:41 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* time/zdump.c: New code from ADO.

	* time/difftime.c (difftime): Use hairy rounding algorithm from
	eggert@twinsun.com when sizeof (time_t) >= sizeof (double).

	* Makerules (native-CFLAGS): Remove -I$(sysincludedir).  RMS says
	people with bogons in /usr/local/include deserve to lose.

	* stdio/printf_fp.c (__printf_fp): If IS_NEG gets set, negate
	FPNUM before testing it for %g format choice.

	* sysdeps/unix/sysv/irix4/fcntlbits.h: New file.
	* sysdeps/unix/sysv/irix4/Dist: New file.
	* sysdeps/unix/sysv/irix4/readv.c: New file.
	* sysdeps/unix/sysv/irix4/writev.c: New file.
	* sysdeps/unix/sysv/irix4/__dup2.c: New file.

	* sunrpc/xdr_float.c (xdr_float): Change [mc68000 || sparc] to [!
	vax].

	* sysdeps/mips/setjmp.S: Remove spurious $.

	* sysdeps/generic/ftime.c: Include <errno.h>.

	* sysdeps/unix/mips/sysdep.S: Add .set noreorder.

Tue May 10 16:27:13 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* sysdeps/generic/termbits.h (NCCS): Doc fix.

Mon May  9 18:07:44 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/uname.c (uname): System uname information
	has moved from init to proc.

	* sysdeps/mach/usleep.c (usleep): Return correct value.  Destroy
	RECV when we're done with it.

Thu May  5 17:03:56 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__lstat.c: Use O_NOLINK instead of O_NOTRANS.

Thu May  5 04:20:54 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* mach/spin-lock.h (spin_lock_init): Define.

	* sysdeps/mach/hurd/sigsuspend.c: New local variable NEWMASK, set
	it to *SET if SET is not null, before taking SS->lock; don't
	dereference SET while holding the lock.  Restore SS->blocked to
	OLDMASK before unlocking and returning.

	* hurd/hurdsig.c (hurdsig_fork_child): Return zero.

	* sysdeps/mach/hurd/__fork.c (_hurd_fork_parent_hook,
	_hurd_fork_prepare_hook)): Define variables (symbol sets).
	(__fork): Run _hurd_fork_prepare_hook and _hurd_fork_parent_hook.

	* sysdeps/mach/hurd/sigsuspend.c: Don't test SS->pending; instead
	wait until SS->suspended is cleared.
	* hurd/hurdsig.c (_hurd_internal_post_signal): Clear SS->suspended
	before signalling on SS->arrived.

	* mach/Makefile (headers): Added mach/default_pager_helper.defs.

	* sysdeps/sparc/Dist: Added alloca.S.

Wed May  4 14:02:29 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* hurd/hurdexec.c (_hurd_exec): Unlock _hurd_dtable_lock when
	all through.

	* sysdeps/mach/hurd/__setitmr.c: Changed _hurd_itimer_lock
	to be a spin_lock; changed mutex_lock and mutex_unlock
	accordingly throughout.
	* sysdeps/mach/hurd/__getitmr.c: Corresponding changes from
	mutex calls to spin lock calls here too.

	* sysdeps/mach/hurd/__setitmr.c (setitimer_locked): Fixed syntax 
	of declaration of PREEMPT.
	(setitimer_locked): Declare variables ERR and ELAPSED.
	(setitimer_locked): Fix some references to REMAINING that 
	were using it as an itimerval instead of a timeval.
	(setitimer_locked): Deleted unused label STILLBORN.

Wed May  4 00:17:32 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/stub/__getitmr.c: Fix arg name __WHICH to WHICH.

	* sysdeps/unix/bsd/alarm.c: Round tv_usec with arithmetic rather
	than a test.

	* hurd/Makefile (user-interfaces): Add hurd/msg_request.

	* sysdeps/stub/__setitmr.c: Fix arg name __WHICH to WHICH.

	* Makeconfig (cross-compiling): Define if $(HOST_CC) and $(CC) differ.
	* time/Makefile (install-others): Omit defn ifdef cross-compiling.

Tue May  3 23:12:48 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* mach/Makefile (lock-headers): Add spin-lock.h.

	* misc/Makefile (routines): Add madvise.

	* malloc/Makefile (non-lib.a): Define.
	* misc/Makefile (non-lib.a): Define.
	* Makerules (install-lib.a): Filter out $(non-lib.a).
	(install-lib-non.a): Append $(non-lib.a).

	* mach/Makefile (mach-headers): Rename sys/version.h to
	mach/version.h.

	* hurd/Makefile (headers): Added hurd/threadvar.h.

	* Version 1.07.5.

	* hurd/port2fd.c (_hurd_port2fd): Use logic copied from
	_hurd_port_locked_set to install PORT in D->port, but leave it locked.

	* sunrpc/Makefile (generated): Don't add $(objpfx).

	* sysdeps/stub/machine-lock.h: New file.
	* sysdeps/stub/machine-sp.h: New file.

Tue May  3 22:31:15 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/usleep.c (usleep): Specify MACH_RCV_MSG so that
	mach_msg actually waits.

Tue May  3 19:24:48 1994  Karl Heuer  (kwzh@hal.gnu.ai.mit.edu)

	* malloc/malloc.h (enum mcheck_status): Delete trailing
	comma in enum list; some compilers don't like it.

Tue May  3 15:18:15 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__symlink.c (__symlink): Pass port type arg to
	__file_set_translator.

Mon May  2 17:56:47 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/Makefile (generated): Add $(inlines) .c files.

	* sysdeps/mach/hurd/__mknod.c: Pass port type arg to
	__file_set_translator.

Sun May  1 16:03:13 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* mach/mig_syms.c: Add de-__ing aliases for mig_init,
	mig_get_reply_port, and mig_dealloc_reply_port.

	* sysdeps/mach/hurd/errnos.awk: Handle copying errors from
	mach/mig_errors.h and device/device_types.h.  Omit E*_SUCCESS.
	Omit MACH_MSG_MASK and other special bit macros.

	* sysdeps/mach/hurd/i386/sigcontext.h (struct sigcontext): Added
	sc_reply_port member.
	* hurd/hurdsig.c (fetch_reply_port): New function.
	(_hurd_internal_post_signal): When setting up to run handler, set
	SCP->sc_reply_port to the receiving thread's value for
	_HURD_THREADVAR_MIG_REPLY.
	* sysdeps/mach/hurd/i386/__sigret.c: Destroy the MiG reply port
	used by the signal handler, and restore from SCP->sc_reply_port.
	* hurd/hurd/threadvar.h (__hurd_threadvar_location_from_sp): New
	function; guts from __hurd_threadvar_location.
	(__hurd_threadvar_location): Call that.

	* hurd/hurdsig.c (check_pending): New function, broken out of:
	(_hurd_internal_post_signal): Call that for pending signal check.
	If SIGNO is zero, call check_pending on each thread's sigstate.

	* sysdeps/mach/hurd/start.c (start1): Use calloc to get
	zero-filled space for __hurd_threadvar_stack_offset when
	__hurd_threadvar_stack_mask is zero.

Thu Apr 28 21:29:47 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Merged gmp-1.99.3+ mpn code from tege for printf_fp.
	* stdio/printf_fp.c: Include "longlong.h"; gmp-impl.h no longer does.
	
	* Makerules (+depfiles): Filter $(extra-objs) to get only .o files.

Wed Apr 27 00:20:41 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (depend-$(subdir)): Put output in tmp file and use mv -f.
	Always use $(+depfiles), since sources is no longer exported.

Tue Apr 26 20:05:55 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/bsd4.4/tcdrain.c: Don't include <termios.h> to 
	avoid <sys/ioctl.h> conflicts.
	* sysdeps/unix/bsd/bsd4.4/tcsetattr.c: Undefine ECHO, MDMBUF,
	TOSTOP, FLUSHO, PENDIN, and NOFLSH after including <termios.h> and
	before including <sys/ioctl.h>.
	* sysdeps/unix/bsd/bsd4.4/__tcgetatr.c: Likewise.

Tue Apr 26 14:42:43 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* sysdeps/mach/sleep.c (sleep): Specify MACH_RCV_MSG or else
	mach_msg won't do anything but return immediately.
	(sleep): Compute return value correctly.

Tue Apr 26 04:49:56 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/i386/setjmp.c: Put global register decls first thing.
	* sysdeps/i386/__longjmp.c: Likewise.

Fri Apr 22 18:10:36 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/irix4/__wait3.S: New file.
	* sysdeps/unix/sysv/irix4/time.S: New file.
	* sysdeps/unix/sysv/irix4/__waitpid.c: New file.

Thu Apr 21 16:54:11 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* malloc/malloc.c (initialize, morecore): When allocating the
	_heapinfo block itself, account for it in the statistics.

Tue Apr 19 20:17:06 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sco3.2.4/pipestream.c: New file.

	* malloc/malloc.c (morecore): Only zero the new part of NEWINFO,
	not the part we will copy _heapinfo into.

	* sysdeps/unix/bsd/signum.h (SIGLOST): Define.
	(_NSIG): Increase to 33.

Mon Apr 18 16:56:11 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* configure.in (config.status): Use $configure_args instead of
	$ac_configure_args.
	(after AC_PREPARE): Call AC_LANG_C.

	* time/Makefile (routines): Add sys/timeb.h.
	(routines): Add ftime.
	* time/sys/timeb.h: New file.
	* sysdeps/unix/bsd/ftime.c: New file.
	* sysdeps/generic/ftime.c: New file.

	* sysdeps/posix/getenv.c (getenv): Return NULL if __environ is null.

	* malloc/malloc.h [_MALLOC_INTERNAL] [HAVE_UNISTD_H]: Include
	unistd.h.

	* malloc/Makefile (gmalloc-routines): Put valloc first.

Wed Apr 13 14:03:02 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__symlink.c (__symlink): Set the target of the
	link to FROM, not TO.

	* sysdeps/mach/hurd/__readlink.c (__readlink): Copy just the
	target into the user's buffer, not the entire translator spec.

Tue Apr 12 00:13:19 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* hurd/fd-write.c (_hurd_fd_write): Set noctty for now rather
	than depending on what happens to be on the stack.

	* sysdeps/mach/hurd/readdir.c (readdir): Notice when hitting
	end-of-file and return NULL.

Mon Apr 11 17:36:59 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/start.c (start1): Bother to set __environ.

	* sysdeps/mach/hurd/__ioctl.c (__ioctl): Comment out use of 
	HURD_EINTR_RPC until signals work.

Mon Apr 11 14:16:40 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__ioctl.c (__ioctl): Call __mig_get_reply_port
	rather than __mig_reply_port (which doesn't exist).

	* sysdeps/mach/hurd/__mknod.c: Added temporary declarations
	of major and minor.

	* (This change occurred on April 4, 1994) mach/setup-thread.c
	(__mach_setup_thread): The March 31 change had an error; the stack
	needs to be allocated with ANYWHERE cleared.

	* (This change occurred on April 8, 1994) hurd/hurdexec.c
	(_hurd_exec): The arguments to exec_exec had the length and 
	type parameters transposed.  In addition, fetch the correct
	procserver port for the new task.

	* (This change occurred on April 8, 1994)
	sysdeps/mach/hurd/__wait.c (__wait4): Deal properly with a null
	USAGE argument.

	* (This change occurred on April 8, 1994)
	sysdeps/mach/hurd/_exit.c (_exit): Changed commented-out call to
	__proc_exit into a correct call to __proc_mark_exit.

Fri Apr  8 14:58:24 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* string/strsignal.c (strsignal): Store of NUL into unknown_signal
	was off by one.

Tue Apr  5 21:26:25 1994  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/unix/sysv/sysv4/__sigact.c (__sigaction): Declare member
	`oact' in lower case, to match its use in the rest of the function.

Tue Apr  5 03:07:04 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (install-lib.a rule): Run ranlib on the target.

	* Makerules (library member rule): Tighten up pattern rule to
	match only libc.a, not other libraries.

Mon Apr  4 21:49:57 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* set-hooks.h: New file.
	* Makefile (distribute): Add it.
	* set-init.c: Include it and use its macro DEFINE_HOOK_RUNNER.

	* Makerules (sysd-Makefile): Put `sysd-Makefile-done=t' in output.
	(sysd-rules): Don't include it unless sysd-Makefile-done is defined.

Mon Apr  4 18:33:54 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* mach/setup-thread.c (__mach_setup_thread): Oops; the vm_allocate
	call should have ANYWHERE cleared so that the change of the 31st
	has any effect at all.

Thu Mar 31 13:46:13 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* mach/setup-thread.c (__mach_setup_thread): Create a red zone
	beneath the stack; also, work around a bug in cthreads by
	forcing the stack into high memory.  FIXME--this routine
	depends on the direction of stack growth; that should be fixed.

Mon Mar 28 12:55:51 1994  Roland McGrath  (roland@mole.gnu.ai.mit.edu)

	* Rules (make-dummy-lib): Use `$(AR)' instead of literal `ar'.

	* configure.in (arg parsing): Don't take --os-release or --os-version.
	(switches): Variable removed; don't write it into config.status.
	(config.status): Write release and version values directly.

	* sysdeps/unix/common/configure.in: Use changequote around if expr
	to avoid [] elision.

Sat Mar 26 18:36:27 1994  Roland McGrath  (roland@mole.gnu.ai.mit.edu)

	* malloc/mcheck.c [! _MALLOC_INTERNAL]: #include <stdio.h>

Fri Mar 25 02:17:55 1994  Roland McGrath  (roland@mole.gnu.ai.mit.edu)

	* malloc/mcheck.c (mprobe): New function.
	(abortfunc): Take enum mcheck_status arg.
	(checkhdr): Return an enum mcheck_status, and pass it to abortfunc.
	(mabort): New function.
	(mcheck): Use mabort as default abortfunc.
	* malloc/malloc.h (enum mcheck_status): New type.
	(mprobe): Declare new function.
	(mcheck): ABORTFUNC takes an `enum mcheck_status' arg.

	* posix/unistd.h [__USE_GNU] (TEMP_FAILURE_RETRY): New macro.

	* stdio/stdio.h [__USE_GNU && !_LIBC] (cookie_io_functions_t):
	Define instead of __io_functions (and make that a typedef for
	this); omit __ from member names.

Thu Mar 24 14:59:23 1994  Roland McGrath  (roland@mole.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sco3.2.4/sigaction.h: New file.

	* sysdeps/unix/sysv/sco3.2.4/__sigact.S: Put address of
	__sigreturn in %ecx before doing syscall trap.

	* sysdeps/stub/setegid.c: Fix arg type to __gid_t (was int).

Wed Mar 23 17:33:09 1994  Roland McGrath  (roland@mole.gnu.ai.mit.edu)

	* Makefile (headers): Remove $(stdarg.h).
	* Makeconfig (stdarg.h): Variable removed.
	* configure.in: Remove check for __gnuc_va_list in stdarg.h.
	It is not safe to replace the compiler's stdarg.h with our own.

Tue Mar 22 12:46:08 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Rules (dist): Rule removed.
	* Makefile (dist): Likewise.
	* Makerules (dist, distinfo): New rules.
	(TAGS): Depend on distfile, pass -f distfile to submake.

	* math/Makefile: Remove if-ed out old bsdmath copying rules.

	* Makerules (sources, headers, sysdep_routines): Don't export these.
	* Rules (others, tests): Likewise.

	* io/lockf.c: Include fcntl.h and errno.h.

Mon Mar 21 20:27:32 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/sony/newsos4/fchdir.S: New file.
	* sysdeps/unix/bsd/sony/newsos4/{__wait4.c,__wait3.c,__wait.c,
	sys_wait4.S,Makefile,Dist}: New files.

	* sysdeps/unix/Makefile (syscall.h): De-SYS_ify `kerncall_basenum'.

	* sysdeps/unix/bsd/m68k/sysdep.S [! __motorola__]: Rename label 0
	to `store'; a user reports gas 1.38 bombs on numbered labels.

	* sysdeps/posix/Makefile (mk-stdiolim): Use $(HOST_CC).

	* Rules (distribute, dont_distribute, generated): Don't export them.
	(dist): Pass those vars down to sub-make on cmd line.
	* Makefile (distribute, generated): Don't export them.
	(dist): Pass distribute and generated values to sub-make on cmd line.

	* Makerules (install-lib-nosubdir): Insert $(libprefix) appropriately.

Fri Mar 18 01:02:52 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/sony/newsos/m68k/sysdep.h (DO_CALL): Use a6 in
	place of fp.  A user reports gas 1.38 doesn't grok fp.

Tue Mar  8 18:35:02 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (common-clean): Prepend $(objpfx) to $(generated).
	* Makefile (parent-clean): Prepend $(common-objpfx) to
	$(common-generated).
	* Makefile (generated): Don't prepend $(objpfx).
	* Rules (generated): Likewise.
	* sysdeps/unix/common/Makefile (generated): Likewise.
	* sysdeps/unix/sysv/Makefile (generated): Likewise.
	* sysdeps/unix/Makefile (common-generated): Don't prepend
	$(common-objpfx).
	* sysdeps/posix/Makefile (common-generated): Likewise.
	* sysdeps/generic/Makefile (common-generated): Likewise.
	(generated): Don't prepend $(objpfx).

	* sysdeps/generic/Makefile (common-generated): Set this instead of
	generated for bytesex.h and det_endian.

	* sysdeps/stub/fexecve.c: New file.
	* posix/Makefile (routines): Add fexecve.
	* posix/unistd.h [__USE_GNU]: Declare fexecve.

	* sysdeps/unix/common/configure.in: Protect siglist and ctype
	checks with if [ ! "$inhibit_glue" ].
	* sysdeps/generic/configure.in: Likewise for psignal check.
	* sysdeps/unix/common/Makefile: Protect body with ifndef inhibit-glue.

Mon Mar  7 17:46:46 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/osf1/alpha/__sigblock.S: New file from brendan.

Fri Mar  4 01:56:26 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (native-compile, common-objdir-compile): Use
	$(HOST_CC) in place of $(CC).

	* malloc/cfree.c: Move #undef cfree inside #ifdef _LIBC.

	* misc/sys/ioctl.h (struct ttysize): If TIOCGSIZE != TIOCGWINSZ,
	use two int elts instead of four shorts.

Thu Mar  3 17:35:54 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* malloc/realloc.c (realloc): When shrinking a block by splitting
	and then freeing one, bump the _chunks_used counter.

	* sysdeps/unix/sysv/sysv4/i386/__mknod.S: New file.

Tue Mar  1 11:42:41 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sco3.2.4/__waitpid.S: Get first argument from
	stack at 8(%esp), not 4(%esp).

	* sysdeps/unix/sysv/isc2.2/rename.S: Get unix/common, not unix/bsd.

Thu Feb 24 14:40:43 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* io/lockf.c: New file.
	* io/Makefile (routines): Add lockf.
	* io/fcntl.h [__USE_MISC] (F_ULOCK, F_LOCK, F_TLOCK, F_TEST): New
	macros.
	[__USE_MISC] (lockf): Declare it.
	* posix/unistd.h: Copy those new macros and declaration.

	* time/backward, time/etcetera, time/zic.c: New code and data from ADO.
	* Makeconfig (posixrules): Default to America/New_York.

	* sysdeps/unix/mips/sysdep.S: Store -1 in v0 in the delay slot after
	the return, rather than before (leaving the delay slot unfilled and
	without a nop!).

	* sysdeps/unix/sysv/irix4: New directory; mips-sgi-irix4 port
	courtesy Tom Quinn.

	* sysdeps/unix/sysv/sysv4/direct.h: Moved to unix/common; it is right
	for irix4 as well as sysv4.
	* sysdeps/unix/bsd/ultrix4/__wait.S: Moved to unix/mips.
	(noerror): Store register v1 in location pointed to by first arg (if
	not NULL).
	* sysdeps/unix/bsd/ultrix4/__sigret.S: Moved to unix/mips.

	* sysdeps/unix/bsd/bsd4.4/{mmap,munmap,mprotect,msync,madvise}.S:
	Moved to sysdeps/unix/mman (new directory).
	* sysdeps/unix/bsd/bsd4.4/Implies: New file; imply unix/mman.
	* sysdeps/unix/bsd/sunos4/Implies: Likewise.
	* sysdeps/unix/bsd/ultrix4/Implies: Likewise.
	* sysdeps/unix/bsd/osf1/Implies: Likewise.
	* sysdeps/unix/bsd/sun/sunos4/munmap.S,
	sysdeps/unix/bsd/sun/sunos4/mprotect.S,
	sysdeps/unix/bsd/sun/sunos4/madvise.S,
	sysdeps/unix/bsd/ultrix4/mmap.S,
	sysdeps/unix/bsd/ultrix4/munmap.S,
	sysdeps/unix/bsd/ultrix4/mprotect.S,
	sysdeps/unix/bsd/osf1/mmap.S,
	sysdeps/unix/bsd/osf1/munmap.S,
	sysdeps/unix/bsd/osf1/mprotect.S: Files removed.

	* sysdeps/unix/sysv/sysv4/fcntlbits.h: Moved to sysdeps/unix/common.

	* stdio/printf_fp.c: Add many assertions to make sure no mpn size
	variable is ever zero.

	* Makerules (native-CFLAGS): Add -I$(sysincludedir).

	* Makerules (depend-$(subdir)) [omit-deps]: Use $(+depfiles) value
	instead of shell hackery.

Wed Feb 23 00:09:08 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/sparc/alloca.S [! NO_UNDERSCORES]: Call it ___builtin_alloca.

Tue Feb 22 18:47:10 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Use __off_t in mmap
	prototype.

	* time/setitmr.c: Swap args OLD and NEW.
	* time/sys/time.h (setitimer): Likewise.
	* sysdeps/stub/__setitmr.c: Likewise.

Mon Feb 21 20:47:55 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/sparc/Makefile [gnulib] (routines): Add alloca.
	* sysdeps/sparc/alloca.S: New file; support for SunOS libc's
	`__builtin_alloca' function (never needed with GCC).

	* sysdeps/unix/sysv/sysv4/__sigact.c (trampoline): Cast handler to
	three-arg type.

Sun Feb 20 00:46:15 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/sun/sunos4/mmap.c: Add missing semicolon.

	* sysdeps/unix/sparc/start.c [! NO_SHLIB]: Include <sys/types.h>
	before <sys/mman.h>.

	* sysdeps/unix/bsd/ultrix4/mips/{sysdep.h,sysdep.S,__pipe.S,
	__fork.S,__brk.S}: Moved to sysdeps/unix/mips (new directory).

	* sysdeps/unix/bsd/ultrix4/mips/__sigret.S: Use SYS_sigreturn
	instead of literal 103; #define to 103 if not already defined.

Sat Feb 19 17:39:13 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sysv4/i386/Dist: New file; list sys-sig.S.

Fri Feb 18 18:07:34 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/generic/configure.in: New file; check for psignal.

	* sysdeps/unix/common/glue-ctype.c: Check for table named _ctype,
	before checking for _ctype_.
	* sysdeps/unix/common/configure.in: Check for _ctype.

	* sysdeps/unix/Makefile (syscall.h): Look for sys.s before syscall.h.
	* sysdeps/unix/configure (unix_syscall_h): Likewise.

	* configure.in (os = irix4*): Set base_os=unix/sysv.

	* sunrpc/rpc/auth.h (u_int32): Always define, no #ifdefs.
	* sunrpc/xdr_float.c: Change [mc68000 || sparc] to [! vax].

Thu Feb 17 18:42:29 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.07.4.

	* sysdeps/unix/bsd/sun/sunos4/Dist: Add sys_mmap.S.

	* Makerules (sysdep_dir): Remove defn.
	* Makeconfig (sysdep_dir): Define it here instead.

Wed Feb 16 16:54:00 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sysv4/__sigact.c: New file.
	* sysdeps/unix/sysv/sysv4/i386/Makefile: New file.
	* sysdeps/unix/sysv/sysv4/i386/sys-sig.S: New file.

	* time/sys/time.h (timerisset, timercmp, timerclear): New macros.

	* misc/Makefile (headers): Add sys/mman.h.
	(routines): Add mmap, munmap, mprotect, msync.
	* sysdeps/unix/bsd/sun/sunos4/sys_mmap.S: New file.
	* sysdeps/unix/bsd/sun/sunos4/mmap.c: New file.
	* sysdeps/unix/bsd/sun/sunos4/Makefile [$(subdir) == misc]
	(sysdep_routines): Add sys_mmap.
	* sysdeps/unix/bsd/bsd4.4/mprotect.S: New file.
	* sysdeps/unix/bsd/bsd4.4/munmap.S: New file.
	* sysdeps/unix/bsd/bsd4.4/msync.S: New file.
	* sysdeps/unix/bsd/bsd4.4/mmap.S: New file.
	* sysdeps/unix/bsd/bsd4.4/madvise.S: New file.
	* sysdeps/unix/bsd/sun/sunos4/mprotect.S: New file.
	* sysdeps/unix/bsd/sun/sunos4/munmap.S: New file.
	* sysdeps/unix/bsd/sun/sunos4/msync.S: New file.
	* sysdeps/unix/bsd/sun/sunos4/madvise.S: New file.
	* sysdeps/unix/bsd/ultrix4/sys/mman.h: New file.
	* sysdeps/unix/bsd/ultrix4/mmap.S: New file.
	* sysdeps/unix/bsd/ultrix4/munmap.S: New file.
	* sysdeps/unix/bsd/ultrix4/mprotect.S: New file.
	* sysdeps/stub/mprotect.c: New file.
	* sysdeps/stub/munmap.c: New file.
	* sysdeps/stub/msync.c: New file.
	* sysdeps/stub/mmap.c: New file.
	* sysdeps/stub/madvise.c: New file.
	* sysdeps/generic/sys/mman.h: New file.
	* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: New file.
	* sysdeps/unix/bsd/osf1/msync.S: New file.
	* sysdeps/unix/bsd/osf1/mmap.S: New file.
	* sysdeps/unix/bsd/osf1/munmap.S: New file.
	* sysdeps/unix/bsd/osf1/mprotect.S: New file.
	* sysdeps/unix/bsd/osf1/sys/mman.h: New file.

Tue Feb 15 16:47:45 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* posix/unistd.h: Declare truncate, ftruncate.

	* misc/Makefile (headers): Add syslog.h.
	* misc/syslog.h: New file; just includes <sys/syslog.h>.

	* posix/unistd.h: Change duplicate seteuid decl to setegid.

	* io/Makefile (headers): Add sys/fcntl.h.
	* io/sys/fcntl.h: New file; just includes <fcntl.h>.

Mon Feb 14 10:36:57 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules (library pattern rule): Depend on
	$(objpfx)stamp-$(subdir) and have empty commands.
	($(objpfx)stamp-$(subdir)): Move dep on $(objects) and ar cmds here.
	(common-mostlyclean): Remove $(objpfx)stamp-$(subdir).

	* Makerules (+depfiles): Filter out deps for modules in $(omit-deps).

	* sunrpc/Makefile (omit-deps): Define new variable.

	* Makerules ($(libc.a)(__.SYMDEF)): Depend on $(+libobjs), not
	lib-noranlib.
	* Makefile ($(libc.a)(__.SYMDEF)): Depend on subdir_lib.

	* Makerules (+depfiles): Include deps for $(extra-objs).

	* sunrpc/rpcsvc/klm_prot.x: Move program definition to end.

	* sunrpc/Makefile (lib): Depend on $(objpfx)librpcsvc.a.

	* time/zic.c: Set CP to NAME before dereferencing.

	* sunrpc/Makefile ($(objpfx)x%.c): Target fixed from $(objpfx)x%.c.
	($(objpfx)rpcsvc/%.h): Target renamed from $(includedir)rpcsvc/%.h.
	Make each x%.o file depend on the corresponding rpcsvc/%.h file.
	(headers): Add rpcsvc/%.h.
	(install-others): Remove generated rpcsvc headers.
	(generated): Define to include generated rpcsvc headers and sources.

	* sysdeps/m68k/fpu/acos.c: Add __CONSTVALUE to defn.
	* sysdeps/m68k/fpu/ldexp.c: Likewise.
	* sysdeps/m68k/fpu/pow.c: Likewise.
	* sysdeps/m68k/fpu/fmod.c: Likewise.
	* sysdeps/m68k/fpu/atan2.c: Likewise.
	* sysdeps/m68k/fpu/__drem.c: Likewise.
	* sysdeps/m68k/fpu/__isinf.c: Likewise.
	* sysdeps/generic/hypot.c: Likewise.
	* sysdeps/m68k/fpu/__logb.c: Likewise.

	* sysdeps/unix/bsd/m68k/sysdep.S: Swap operands in cmpl.

Sun Feb 13 19:49:24 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/m68k/Makefile (compile-command.S): Remove definition
	that did kludgey # hackery.
	* sysdeps/unix/bsd/hp/m68k/sysdep.h (PSEUDO): Add missing close paren.
	(POUND): Define (no arg) to just `#' (a single pound sign).
	(PSEUDO, DO_CALL): Use `POUND foo' in place of `POUND(foo)'.
	* sysdeps/unix/bsd/sony/newsos/m68k/sysdep.h: Likewise.
	* sysdeps/unix/bsd/sun/m68k/sysdep.h: Likewise.
	* sysdeps/unix/bsd/sun/m68k/__brk.S: Use #0, not POUND(0).
	* sysdeps/unix/bsd/hp/m68k/__brk.S: Use #__end instead of POUND(__end).

Fri Feb 11 00:29:45 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* configure.in (Makefile): Set objdir instead of ARCH in submake cmd.

	* time/mktime.c: Define __P if undefined.

	* assert/assert.h (__ASSERT_FUNCTION): Check __GNUC_MINOR__<6 if
	defined(__cplusplus).

Thu Feb 10 00:52:31 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/__sigact.c: Use __sigismember and
	__sigemptyset on sa_mask instead of assuming it's an int.

	* sysdeps/unix/sysv/sysv4/sigset.h (__sigismember): Declare arg
	SET to be a pointer to const.

	* sysdeps/posix/__sigpause.c: Convert MASK to a sigset_t with a loop.

	* sysdeps/posix/__sigblock.c: When sigset_t==mask, take address of
	SET or OSET, cast to int *, and dereference.
	* sysdeps/posix/__sigstmsk.c: Likewise.
	* sysdeps/posix/__sigvec.c: Likewise.

	Add the -lrpcsvc library of XDR routines for standard SunRPC protocols.
	* sunrpc/Makefile (install-lib): Define to include librpcsvc.a.
	(rpcsvc-objs): New variable.
	(extra-objs): Add $(rpcsvc-objs).
	($(objpfxlibrpcsvc.a): New target.
	($(objpfx)x%.o): New rule to rpcgen XDR routines.

Wed Feb  9 11:59:33 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* time/zic.c (mkdirs): Reapply fix to avoid writing into passed ptr.

	* sunrpc/Makefile (distribute): Add etc.rpc.
	($(includedir)/bootparam_prot.h): Change target to
	$(includedir)/rpcsvc/bootparam_prot.h and dep to
	$(includedir)/rpcsvc/bootparam.h.
	(install-others): Change reference.

	* sunrpc/rpc_util.h: Comment out bogus decl of sprintf.

	* Makerules ($(libc.a)(__.SYMDEF)): Depend on lib-noranlib instead
	of $(+libobjs); this way makes the parent do subdir_lib.

	* sysdeps/unix/sysv/sysv4/sigset.h: Protect types with #ifndef
	_SIGSET_H_types.  Protect rest with #if !defined (_SIGSET_H_fns)
	&& defined (_SIGNAL_H).

Tue Feb  8 19:00:42 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.07.3.

	* sysdeps/unix/sysv/sysv4/sigset.h: Fix typos (omitted __s).

Mon Feb  7 14:31:00 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules ($(libc.a)): Depend on $(libc.a)(__.SYMDEF); no commands.
	($(+libobjs)): Remove static pattern rule.
	(ar-it): Target removed.
	Replace with pattern rule to catch %(*.o) for all $(objects).
	($(libc.a)(__.SYMDEF)): New target.
	(lib-noranlib, $(libdir)/lib$(libprefix)c.a): Don't depend on ar-it.

	* sysdeps/unix/sparc/sysdep.h (PSEUDO): Add nop after jmp; the
	next insn is most likely a retl, which causes interesting behavior.

	* stdio/vfprintf.c: Pass WORKEND+1 to _itoa, not WORKEND.
	Subtract one from result of _itoa when setting W.

	* time/{africa,asia,australasia,backward,europe,leapseconds,
	northamerica,southamerica,zic.c}: New code and data from ADO.

Sun Feb  6 13:55:27 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sunrpc: New directory; code from Sun's RPCSRC-4.0.
	* sysdeps/unix/inet/Subdirs: Add sunrpc.
	* inet/netdb.h: #include <rpc/netdb.h> at end.

	* Make-dist ($(tardir).tar): Use -v when extracting from dist.tar
	and pipe output to doschk.

	* Makeconfig (etcdir): New variable.
	(localtime-file): Use that in default value.

	* Makerules (depend-$(subdir)): Include dep files for all .o files
	listed in $(extra-objs).

	* posix/sys/types.h (NFDBITS): #define to __NFDBITS.

	* inet/netinet/in.h (INADDR_LOOPBACK): Don't define if already
	defined; avoids changing source which defines it before including this.
	(struct sockaddr_in): Rename `__pad' member to `sin_zero'; some
	code wants to bzero the area just for paranoia.

	Make cleaning targets only remove common (not specific to one
	subdir) generated files if run from the parent directory.
	* Makefile (parent-clean): Remove $(common-generated) also.
	* sysdeps/unix/Makefile (local_lim.h, sys/param.h, errnos.h,
	ioctls.h, syscall.h): Append to $(common-generated), not $(generated).
	* sysdeps/posix/Makefile (stdio_lim.h): Likewise.

	* signal/signal.h: Declare psignal here.
	* stdio/stdio.h: Not here.

	* stdio/stdio.h [__OPTIMIZE__] (vprintf, vfscanf, vscanf,
	vsscanf): Define as extern inline functions instead of macros.

	* configure.in (names): Check existence of implied dirs and warn
	for absentees.

Sat Feb  5 13:38:26 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.07.2.

	* resource/sys/resource.h (RUSAGE_SELF, RUSAGE_CHILDREN): #define
	to self for things that test #ifdef.

	* sysdeps/unix/common/Dist: Remove bsd_getgrp.S.

	* sysdeps/unix/Makefile: Don't include param.h.dep ifdef no_deps.

	* Makerules (vpath %.h): Use $(common-objpfx) in place of $(objpfx).

	* sysdeps/unix/bsd/i386/__vfork.S: Decrement R1 and AND it with R0
	to avoid the test and branch.

	* sysdeps/unix/bsd/getprio.S, sysdeps/unix/bsd/setprio.S,
	sysdeps/unix/bsd/__setreuid.S, sysdeps/unix/bsd/__setregid.S: Moved to
	sysdeps/unix/common.

	* sysdeps/unix/reboot.S: New file.

	* sysdeps/unix/sysv/sysv4/solaris2/signum.h: New file.
	* sysdeps/unix/sysv/sysv4/signum.h: New file.
	* sysdeps/unix/sysv/sysv4/sigset.h: New file.
	* sysdeps/unix/sysv/sysv4/sigaction.h (struct sigaction): Swap
	positions of sa_flags and sa_mask members (sa_flags is first now).
	(SA_NOCLDWAIT): Renamed from SA_NOSCLDWAIT.

	* sysdeps/unix/bsd/init-posix.c (_posix_start_time): Initialize it.

	* Makerules (open-check-inhibit-asm): Use : for empty commands in case.

	* time/leapseconds: New version from ADO, adds 1994 leap second.

Thu Feb  3 02:15:30 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/ulimit.c: Define ulimit instead of __ulimit.

Wed Feb  2 16:56:29 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sco3.2.4/sigsuspend.S: Moved to unix/sysv/sysv4.
	Replaced with #include of that file.

	* sysdeps/unix/sysv/sysv4/solaris2/sigaltstack.S: Moved to 
	sysdeps/unix/sysv/sysv4/sigaltstk.S.

	* sysdeps/unix/sysv/sysv4/i386/__lstat.S: Syscall lxstat, not xlstat.
	* sysdeps/unix/sysv/sysv4/i386/__fstat.S: Syscall fxstat, not xfstat.

Tue Feb  1 18:22:21 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdio/_itoa.c, stdio/_itoa.h: New files.
	* stdio/Makefile (routines): Add _itoa.
	(distribute): Add _itoa.h.
	* stdio/vfprintf.c: Use _itoa instead of doing it by hand.

	* sysdeps/unix/sparc/vfork.S: Add nop after jmp.  Bad delay slot,
	no pipeline.
	* sysdeps/unix/bsd/ultrix4/mips/vfork.S: Likewise.

Mon Jan 31 19:33:04 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* assert/assert.c (__assert_fail): Take 4th arg FUNCTION; if it is
	not null, print it in the message.  Also declare __NORETURN.
	* assert/assert.h (__assert_fail): Update decl; also add __NORETURN.
	(__ASSERT_FUNCTION): #define to be __PRETTY_FUNCTION__ for GCC>=2.4.
	(assert): Pass __ASSERT_FUNCTION to __assert_fail.

	* sysdeps/unix/bsd/sun/sparc/vfork.S: Moved to sysdeps/unix/sparc.
	Use C_SYMBOL_NAME on __vfork instead of prepending an underscore.

	* sysdeps/unix/sysv/sysv4/solaris2/{start.c,sysdep.S,sysdep.h}: Moved
	to sysdeps/unix/sysv/sysv4/solaris2/sparc.

	* sysdeps/unix/{i386,sysv/sysv4/solaris2,sysv/i386/linux,bsd/m68k,
	bsd/ultrix4/mips,bsd/vax}/sysdep.S: Don't do EWOULDBLOCK_sys->EAGAIN
	mapping #if EWOULDBLOCK_sys == EAGAIN.

	* sysdeps/unix/sparc/sysdep.h [NO_UNDERSCORES]: #define syscall_error
	to C_SYMBOL_NAME(__syscall_error).
	(PSEUDO): On error, jump to syscall_error instead of setting errno.
	* sysdeps/unix/sparc/sysdep.S: New file.

	* sysdeps/unix/sysv/sysv4/i386/__vfork.S: New file, just #include
	unix/bsd/i386 version. 

	* sysdeps/unix/bsd/i386/__vfork.S: Use `scratch' in place of %edx.

Thu Jan 27 16:46:03 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* configure.in (asm-CPPFLAGS): Add new check to see if assembling
	a .S file loses without -P.  If so, set asm-CPPFLAGS=-P in config.make.

	* configure.in (stddef.h): Print msg under --verbose.

	* manual/Makefile (subdir): Define outside of `export' directive,
	for old make.

	* time/mktime.c (search): Take new arg PRODUCER, fn to call
	instead of `localtime'.
	(_mktime_internal): New function; all code from old `mktime', but
	take 2nd arg PRODUCER and pass along to `search'.
	(mktime): Rewrite to call _mktime_internal with localtime.
	* time/Makefile (routines): Add dysize, timegm, timelocal.
	* time/time.h (_mktime_internal): Declare it.
	[__USE_MISC]: Declare timegm, timelocal, dysize.
	* time/dysize.c: New file.
	* time/timegm.c: New file.
	* time/timelocal.c: New file.

Wed Jan 26 20:06:23 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	Remove the hackery on getgroups for most systems.  It is no longer
	necessary because gid_t is now the same size as int.
	* sysdeps/unix/common/Makefile (sysdep_routines): Don't add bsd_getgrp.
	* sysdeps/unix/common/bsd_getgrp.S: File removed.
	* sysdeps/unix/common/__getgrps.S: New file.
	* sysdeps/unix/bsd/sequent/i386/__getgrps.S: New file.

	Clean up the rules for cleaning up.
	* Makerules (common-mostlyclean): New target; remove object files.
	(common-clean): New target; depend on common-mostlyclean, and
	remove dep files and generated files.
	(clean): Depend on common-clean.
	(mostlyclean): Depend on common-mostlyclean.
	* Rules (mostlyclean): Target removed.
	(clean): Target removed.
	(distclean): New target; depend on clean.
	(realclean): New target; depend on distclean.
	(subdir_distclean): New target; depend on distclean.
	(subdir_realclean): New target; depend on realclean.
	(subdir_mostlyclean): New target; depend on mostlyclean.
	* Makefile (+subdir_targets): Add subdir_distclean,
	subdir_realclean; change mostlyclean to subdir_mostlyclean.
	(parent-mostlyclean): New target; depend on common-mostlyclean and
	remove libc.a and $(install-lib).
	(parent-clean): New target; depend on parent-mostlyclean and
	common-clean, and remove sysdirs sysd-dirs sysd-Makefile.
	(clean): Depend on parent-clean and just do submake for subdirs.
	(mostlyclean): Depend on parent-clean and just do submake for subdirs.
	(distclean, realclean): Depend on parent-clean and do submake
	distclean-1 passing it variable assignment distclean-1=$@.
	(distclean-1): Depend on subdir_$(distclean-1) and remove
	$(config-generated), config.status, config.make, Makefile (if not
	in srcdir).
	* manual/Makefile (subdir_clean): Target removed.
	(subdir_%): New rule to handle all such targets.
	(distclean): Depend on clean, not mostlyclean.
	(realclean): Depend on distclean, not clean.

	* sysdeps/unix/configure (unix_generated_dirpfx): New variable.
	Use it to put created .S files in sysdeps/unix if configured in
	srcdir, else in current directory.
	(unix_generated): Prepend $unix_generated_dirpfx.
	Have generated config.make fragment prepend $(objpfx).
	* sysdeps/unix/Makefile (generated): Don't set it.
	(config-generated): Set this instead; don't prepend any directory
	prefix to $(unix-generated).

	Fixes for SVR4 wait from jmc@ksu.ksu.edu (James Michael Chacon):
	* sysdeps/unix/sysv/sysv4/siginfo.h (__siginfo_t): Add `__code'
	and `__pid' fields.
	(EXITED, KILLED, CORED, TRAPPED, STOPPED, CONTINUED): New macros.
	* sysdeps/unix/sysv/sysv4/__waitpid.c: Switch on INFOP.__code and
	construct *STAT_LOC from INFOP.__status accordingly.

	* stdlib/testsort.c (main): Use puts to add newlines to printed lines.

Tue Jan 25 14:32:01 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.07.1.

	* manual/Makefile (%.z): Change target pattern to %.gz.
	(dist): Comment out dep.  Don't really need the separate doc dist.

	* stdio/stdio.h [__OPTIMIZE__] (getchar, putchar, getdelim,
	getline, __getline): Use extern inlines instead of macros.

	* sysdeps/unix/sysv/sco3.2.4/__waitpid.S: Fix typo ($eax for %eax).

	* sysdeps/unix/siglist.c [! HAVE_GNU_LD] (_sys_siglist): #define
	to sys_siglist.
	* sysdeps/posix/__gettod.c [! HAVE_GNU_LD] (__daylight,
	__timezone, __tzname): #define to non-__ names.

	* math/math.h [__USE_BSD] (M_E, M_LOG2E, M_LOG10E, M_LN2, M-LN10,
	M_PI, M_PI_2, M_PI_4, M_1_PI, M_2_PI, M_2_SQRTPI, M_SQRT2,
	M_SQRT1_2): New macros.

Tue Jan 25 14:01:28 1994  Michael I. Bushnell  (mib at ernst.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/start.c (start1): Decide separately whether to
	split argv and whether to split envp.

	* sysdeps/mach/hurd/i386/sysdep.h: File deleted.
	sysdeps/mach/i386/sysdep.h: Delete SET_SP macro.
	sysdeps/mach/hurd/start.c (_start): Don't call GET_SP; set globals
	instead of locals from exec_startup message.

	* misc/progname.c: Don't try to set
	program_invocation_name or program_invocation_short_name if argv
	or argv[0] is invalid.

Mon Jan 24 16:51:43 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sysv4/__waitpid.c: Return INFOP.__pid instead of
	the PID we were called with.

	* sysdeps/unix/sysv/__mkdir.c (__mkdir): Restore errno before
	returning, not after (lot of good that did).

	* sysdeps/unix/bsd/ultrix4/system.c, sysdeps/unix/bsd/bsd4.4/system.c,
	sysdeps/unix/bsd/osf1/system.c, sysdeps/unix/sysv/sco3.2.4/system.c,
	sysdeps/unix/bsd/sun/sunos4/system.c, sysdeps/unix/sysv/sysv4/system.c:
	New files.  Avoid sysdeps/unix/system.c, which defines NO_WAITPID.

	* set-init.c (__libc_init): Use `n' count field instead of
	checking for null terminator.  The latter loses when there are no
	set elts at all, and only one word is allocated for __libc_subinit.

	* sysdeps/generic/waitstatus.h (__WCOREFLAG): New macro.
	* posix/sys/wait.h [__USE_BSD] (WCOREFLAG): New; define to __WCOREFLAG.

	* stdio/fileno.c (fileno): Call __stdio_check_funcs.

	* stdio/tst-fileno.c: New file.

Fri Jan 21 16:56:50 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Rules (dep-dummy-lib, make-dummy-lib): New variables.
	($(objpfx)dummy.o): New file rule.
	* posix/Makefile ($(objpfx)libposix.a): Depend on
	$(dep-dummy-lib), and use $(make-dummy-lib) for commands.
	* math/Makefile ($(objpfx)libm.a): Likewise.

	* sysdeps/unix/sysv/sysv4/i386/__stat.S: New file.
	* sysdeps/unix/sysv/sysv4/i386/__lstat.S: Likewise.
	* sysdeps/unix/sysv/sysv4/i386/__fstat.S: Likewise.

	* sysdeps/sparc/bytesex.h: New file.

Thu Jan 20 12:45:35 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/stub/syscall.c (syscall): Declare arg type as int.

Wed Jan 19 18:18:15 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules ($(before-compile) rule): Protect w/`ifdef before-compile'.

	* manual/Makefile: Change all `mv' uses to `mv -f'.
	(subdir_install): Depend on stubs.

	* Makerules ($(objpfx)%.dep: %.s): Depend also on $(objpfx)dummy.dep.

Tue Jan 18 19:12:57 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* stdlib/testsort.c (main): Swap dimensions of BUFS array.


See ChangeLog.2 for earlier changes.
