Mon Dec 12 01:41:07 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Version 1.09.3.

	* sysdeps/mach/hurd/alpha/trampoline.c: Use `long int' for sigcode
	values.  Use _hurdsig_catch_fault.  Pass address of __sigreturn in
	$27, SCP value in $25.  In trampoline code, use those regs.

	* sysdeps/mach/hurd/alpha/__sigret.c: Use asms instead of global
	register vars to restore FP regs.  Fix typo in REI invocation.

Sun Dec 11 14:10:11 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* hurd/hurd/fd.h (hurd_register_ioctl_handler,
	_HURD_HANDLE_IOCTLS): Third arg to handler is a void *, not a
	__gnuc_va_list.

	* stdio/memstream.c (enlarge_buffer): Always add one char into
	NEED for the char we are writing or the NUL terminator.

	* stdio/memstream.c (enlarge_buffer): If realloc fails, just set
	error flag and preserve old buffer state.

	* stdio/fwrite.c: In fill_buffer case, check for zero buffer space
	after fflush and write one char normally.

Sat Dec 10 00:02:21 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/__fork.c: Use natural_t in place of int.

	* sysdeps/alpha/macros.m4: Use C comments instead of ! comments.

	* sysdeps/mach/hurd/mmap.c: Cast -1 to long int before casting to
        caddr_t.

	* sysdeps/mach/alpha/syscall.S: Include
        <mach/machine/alpha_instruction.h> to define op_chmk.

	* sysdeps/mach/hurd/__mknod.c: Include <string.h>.
	* sysdeps/mach/hurd/setegid.c: Likewise.
	* sysdeps/mach/hurd/seteuid.c: Likewise.
	* sysdeps/mach/hurd/__setregid.c: Likewise.
	* sysdeps/mach/hurd/__setreuid.c: Likewise.
	* sysdeps/mach/hurd/__ioctl.c: Likewise.

	* sysdeps/mach/hurd/recvfrom.c: Include <string.h>.  Use
	mach_msg_type_number_t in place of unsigned int.
	* sysdeps/mach/hurd/recv.c: Likewise.
	* sysdeps/mach/hurd/getsockopt.c: Likewise.
	* sysdeps/mach/hurd/getsocknam.c: Likewise.
	* sysdeps/mach/hurd/getpeernam.c: Likewise.
	* sysdeps/mach/hurd/accept.c: Likewise.
	* sysdeps/mach/hurd/__gethstnm.c: Likewise.

Fri Dec  9 00:01:21 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/__readlink.c: Use mach_msg_type_number_t in
        place of unsigned int.
	* sysdeps/mach/hurd/__fork.c: Likewise.

	* sysdeps/mach/hurd/__setgid.c: Include <string.h>.
	* sysdeps/mach/hurd/__setuid.c: Likewise.
	* sysdeps/mach/hurd/__getgrps.c: Likewise.
	* hurd/getuids.c: Likewise.
	* sysdeps/mach/hurd/__getdents.c: Likewise.

	* sysdeps/mach/hurd/dirstream.h (DIR): Use unsigned long int for
        `__allocation' and `__size' members.

	* sysdeps/mach/hurd/alpha/exc2signal.c: Use `long int' for sigcode
        values.
	* sysdeps/mach/hurd/i386/exc2signal.c: Likewise.

	* mach/devstream.c (input): Use mach_msg_type_number_t for NREAD.

	* sysdeps/mach/hurd/__setitmr.c (preempt_sigalrm): Use `long int'
        for SIGCODE; take SIGERROR arg.

	* sysdeps/alpha/divrem.m4: Include <sysdep.h> instead of
	<regdef.h>.  Use C comments instead of ! comments.

	* sysdeps/alpha/memchr.c: Remove extra shift and OR of CHARMASK.
	* sysdeps/alpha/strchr.c: Likewise.

	* sysdeps/mach/hurd/sysd-stdio.c: Use mach_msg_type_number_t in
        place of unsigned int.

	* sysdeps/posix/tempname.c (__stdio_gen_tempname): Cast FD to long
        int before casting to pointer.

	* stdio/printf_fp.c: Include <string.h>.

	* sysdeps/alpha/setjmp_aux.c: Use ENV[0].__jmpbuf[0].

	* sysdeps/mach/alpha/sysdep.h (ENTRY): New macro.

	* hurd/hurdioctl.c (fioctl): Pass a mach_msg_type_number_t* to
        __io_readable.

	* hurd/hurd-raise.c: Use `long int' for sigcode values.

	* hurd/hurdfault.c: Use `long int' for sigcode values.
	* hurd/hurdfault.h: Likewise.

	* hurd/hurd/signal.h (struct hurd_signal_preempt): Handler takes
        new SIGERROR arg.
	* hurd/preempt-sig.c: Likewise.
	* hurd/hurdsig.c (_hurd_internal_post_signal): Pass SIGERROR to
        PREEMPT.

	* hurd/hurdlookup.c: Use mach_msg_type_number_t and natural_t in
        place of unsigned int and int.

	* hurd/hurd/id.h: Use mach_msg_type_number_t in place of unsigned int.

	* hurd/catch-exc.c: Use `long int' for sigcode values.
	* sysdeps/mach/hurd/i386/trampoline.c: Likewise.
	* hurd/preempt-sig.c: Likewise.

	* configure.in (machine): Don't recognize r[34]00.
	Convert mips64* to mips/mips64/& and mips* to mips/&.
	* sysdeps/mips/mipsel/bytesex.h: New file.
	* sysdeps/mips/r4000: Directory renamed to sysdeps/mips/mips64.

	* sysdeps/mach/alpha/sysdep.h (START_MACHDEP): Add missing
        backslashes.
	(CALL_WITH_SP): Cast FN to long int.

	* sysdeps/mach/alpha/thread_state.h (struct machine_thread_all_state):
        New member `exc'.

	* hurd/fd-read.c: Include <string.h>.  Use mach_msg_type_number_t
	in place of mach_msg_type_size_t.

	* hurd/hurdfault.c: Use natural_t instead of int.

	* hurd/hurd/signal.h: Use `long int' for sigcode values.
	* hurd/hurdsig.c: Use mach_msg_type_number_t and natural_t in
	place of unsigned int and int.  Use `long int' for sigcode values.

	* hurd/vpprintf.c (pwrite): Cast &N to mach_msg_type_number_t *.

	* hurd/__fopenport.c: Include <string.h>.  Use
	mach_msg_type_number_t in place of unsigned int.

	* hurd/hurdauth.c: Include <string.h>.
	* hurd/hurdsock.c: Likewise.

	* sysdeps/mach/alpha/machine-lock.h: Remove ".set noreorder" et
	al; GCC already emits them.  Fix register constraints in asms.
	Set RTN in C, not asm.

	* hurd/hurdprio.c: Use mach_msg_type_number_t in place of unsigned
	int.

Thu Dec  8 04:00:11 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/alpha/__sigret.c: Remove ".set noreorder" et
        al; GCC already emits them.
	* sysdeps/mach/hurd/alpha/trampoline.c: Likewise.

	* sysdeps/mach/thread_state.h: Use mach_msg_type_number_t and
        natural_t in place of unsigned int and int.

	* sysdeps/mach/sysdep.h (ENTRY): Don't #error if undefined.

	* sysdeps/mach/syscall.h: New file.

	* sysdeps/mach/Makefile: Remove debugging printout.

	* sysdeps/mach/hurd/configure.in: Converted to an autoconf script
	from sysdeps/mach/hurd/configure, to work better with autoconf
	version 2.
	* sysdeps/mach/configure.in: Likewise, from sysdeps/mach/configure.

	* hurd/hurdmsg.c: Use mach_msg_type_number_t in place of unsigned
        int.

	* sysdeps/mach/alpha/sysdep.h: Rename variable `sp' to avoid
        conflict with #define in <mach/alpha/asm.h>.

	* sysdeps/mach/hurd/alpha/__sigret.c: Remove unused variable.

	* sysdeps/mach/hurd/__ioctl.c: Pass arg to
        __mig_dealloc_reply_port.

	* configure.in: Converted to Autoconf version 2.
	* sysdeps/generic/configure.in: Likewise.
	* sysdeps/unix/common/configure.in: Likewise.
	* sysdeps/unix/configure.in: New file, converted to a
	part-autoconf script from sysdeps/unix/configure, to work better
	with autoconf version 2.
	* aclocal.m4: Converted to Autoconf version 2.
	(AC_CHECK_SYMBOL): New macro.
	* config.make.in: New file.
	* config-name.in: New file.
	* Makefile (distribute): Rename install.sh to install-sh.
	Add config.make.in, config-name.in, Makefile.in.
	(distclean-1): Remove config-name.h and config.cache.
	* Makefile.in: New file.
	* Makeconfig (+gnu-stabs, gnu-as): Match -DHAVE_GNU_{AS,LD}=1 too.

Wed Dec  7 14:05:12 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/mips/cacheflush.c: New file.
	* sysdeps/mach/mips/Makefile: New file.
	* sysdeps/mach/mips/Dist: New file.

	* hurd/hurdmalloc.c (vm_allocate, vm_page_size): #define these to
        __ names at top.

	* posix/glob/Makefile.in (realclean): Remove config.status.

	* posix/glob/Makefile.in (DEFS): New variable, set from @DEFS@.
	(CPPFLAGS): Remove @DEFS@ from here.
	(.c.o): Use $(DEFS).

	* setjmp/siglongjmp.c: First arg is const.

Tue Dec  6 19:04:50 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* posix/glob/Makefile.in (CPPFLAGS): Include @DEFS@.

Mon Dec  5 12:05:10 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* posix/glob/configure.in: Add AC_PROG_CC.

	* sysdeps/mach/hurd/alpha/longjmp-ts.c: Use ENV[0].__jmpbuf[0].
	* sysdeps/mach/hurd/mips/longjmp-ts.c: Likewise.
	* sysdeps/mach/hurd/i386/longjmp-ts.c: Likewise.

	* Version 1.09.2.

	* sysdeps/mach/hurd/__select.c: Don't make TO const.

Sun Dec  4 12:06:36 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/configure (config_vars): Add missing backslash
        before a $.

	Revamp the `setjmp' interface to be cleaner: only one type
	`jmp_buf'/`sigjmp_buf', and only one `longjmp' function (with
	aliases `_longjmp', `siglongjmp').  Internal setjmp interface is
	now __sigsetjmp, which takes SAVEMASK flag and optionally saves
	the signal mask.  Add extern entry points `setjmp' and `_setjmp'
	for BSD compatiblity; they tail-call __sigsetjmp.
	* setjmp/setjmp.h: Include <sigset.h> for __sigset_t, not
        <signal.h>
	(jmp_buf): Define unconditionally with old `sigjmp_buf' defn.
	(__sigjmp_save): Declare to return int.
	(__setjmp): Remove declaration; this function no longer exists.
	(__sigsetjmp): Declare it; this is the new internal function.
	(setjmp): Define to call __sigsetjmp, second arg depending on
	__FAVOR_BSD.
	[__OPTIMIZE__] (longjmp): Remove #define.
	[__USE_BSD] (_longjmp): Declare it, another name for `longjmp'.
	[__USE_BSD] (_setjmp): Define macro to do __sigsetjmp (ENV, 0).
	[__FAVOR_BSD]: Remove all these defns.
	[__USE_POSIX] (sigjmp_buf): Define as another name for `jmp_buf'.
	[__USE_POSIX] (sigsetjmp): Define to call __sigsetjmp.
	* setjmp/sigjmp.c (__sigjmp_save): Return an int, always zero, not
        void.
	* setjmp/Makefile (routines): Remove _setjmp, add bsd-setjmp and
        bsd-_setjmp.
	* setjmp/longjmp.c: Define as a real funciton, which restores
        signal mask and calls __longjmp.
	* setjmp/siglongjmp.c: Make this an alias to longjmp.
	* setjmp/_longjmp.c: Alias to longjmp, not siglongjmp.
	* sysdeps/stub/setjmp.c: Implement __sigsetjmp instead of
        __setjmp; call __sigjmp_save.
	* sysdeps/sparc/setjmp.S: Likewise.
	* sysdeps/m68k/setjmp.c: Likewise.
	* sysdeps/i386/setjmp.c: Likewise.
	* sysdeps/vax/setjmp.c: Likewise.
	* sysdeps/mips/setjmp.S: Implement __sigsetjmp instead of
	__setjmp; call __sigsetjmp_aux instead of __setjmp_aux.  Pass SP
	and FP as 3rd and 4th args, not 2nd and 3rd.
	* sysdeps/alpha/setjmp.S: Likewise.
	* sysdeps/mips/setjmp_aux.c: Implement __sigsetjmp_aux instead of
        __setjmp_aux; call __sigjmp_save.
	* sysdeps/alpha/setjmp_aux.c: Likewise.
	* sysdeps/mips/bsd-setjmp.S, sysdeps/mips/bsd-_setjmp.S: New files.
	* sysdeps/alpha/bsd-setjmp.S, sysdeps/alpha/bsd-_setjmp.S: New files.
	* sysdeps/vax/bsd-setjmp.S, sysdeps/vax/bsd-_setjmp.S: New files.
	* sysdeps/sparc/bsd-setjmp.S, sysdeps/sparc/bsd-_setjmp.S: New files.
	* sysdeps/i386/bsd-setjmp.S, sysdeps/i386/bsd-_setjmp.S: New files.
	* sysdeps/m68k/bsd-setjmp.S, sysdeps/m68k/bsd-_setjmp.S: New files.
	* sysdeps/stub/bsd-setjmp.c, sysdeps/stub/bsd-_setjmp.c: New files.
	* setjmp/_setjmp.c: File removed.
	* sysdeps/alpha/__longjmp.c: Take arg of type __jmp_buf, not
        jmp_buf.
	* sysdeps/vax/__longjmp.c: Likewise.
	* sysdeps/stub/__longjmp.c: Likewise.
	* sysdeps/i386/__longjmp.c: Likewise.
	* sysdeps/m68k/__longjmp.c: Likewise.

Sat Dec  3 09:00:17 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/alpha/__sigret.c: Set up frame for `rei' to
	restore on user stack, aligned to an 8-word boundary and with a PS
	value that restores user's stack alignment.

Fri Dec  2 19:31:24 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/readdir.c: Search one char more than D_NAMLEN(DP)
	for the null terminator.  Always set D->d_namlen, using
	D_NAMLEN(DP) if no null is found.

	* sysdeps/unix/sysv/sco3.2.4/__sigact.S: Fix typo `.global' to
        `.globl'.  Silly me, I used a vowel in a Unix program.

Mon Nov 28 16:11:39 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* io/fts.c (ALIGN, ALIGNBYTES): New macros, defined if not already
        defined.

Tue Nov 22 06:39:49 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/bsd/osf1/dirstream.h: File removed.

	* sysdeps/stub/sigcontext.h (struct sigcontext): Use `__sigset_t'
        instead of `sigset_t' for `sc_mask'.
	* sysdeps/mach/hurd/i386/sigcontext.h: Likewise.
	* sysdeps/mach/hurd/alpha/sigcontext.h: Likewise.
	* sysdeps/mach/hurd/mips/sigcontext.h: Likewise.
	* sysdeps/unix/bsd/ultrix4/mips/sigcontext.h: Likewise.
	* sysdeps/unix/bsd/sun/m68k/sigcontext.h: Likewise.
	* sysdeps/unix/bsd/sun/sparc/sigcontext.h: Likewise.

	* hurd/hurdsig.c (_hurd_internal_post_signal: case handle): Call
	abort_thread always, first thing after thread_suspend.

Mon Nov 21 13:18:07 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/__fcntl.c: Don't make this whole function a
        critical section.

	* sysdeps/generic/strpbrk.c: Don't call strchr; do it by hand for
        efficiency.

Wed Nov 16 12:47:22 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/bsd/m68k/sysdep.S [__motorola__]: Swap operands in
        cmp.l.

	* hurd/msgportdemux.c (_hurd_msgport_receive): Call
	_hurd_self_sigstate to get sigstate cached before running any
	signal thread code.

	* sysdeps/mach/hurd/__fork.c: Pass _hurd_msgport_thread to
	__thread_get_state, not _hurd_sigthread.  Don't do
	__thread_get_state on THREAD_SELF--the kernel does not allow it.

	* hurd/hurdsig.c (_hurd_internal_post_signal): In stopping orphan
	test, take sigmask of SIGNO, don't & its value with a mask.  In
	blocked signal test, be careful not to pass SIGNO=0 to __sigismember.

Tue Nov 15 01:39:36 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makerules (stub-$(subdir)): Save absolute name of
	$(..)sysdeps/stub before cd'ing, transform gleaned file names to
	refer to saved name.

	* sysdeps/mach/hurd/socketpair.c: Include <fcntl.h>.

	* time/test_time.args: Add CST as a test case.

	* sysdeps/mach/hurd/socketpair.c: Rewritten (copying __pipe.c).

	* sysdeps/unix/bsd/dirstream.h [__USE_BSD] (dirfd): New macro.

	* posix/unistd.h: Declare fchdir.

	* io/fts.c (MAXPATHLEN): Define if not defined.

	* io/fts.c, io/fts.h: New files, from 4.4 BSD code by Keith Bostic.
	* io/Makefile (routines): Add fts.
	(headers): Add fts.h.

	Mostly ported the Hurd to the DEC Alpha.
	* sysdeps/mach/alpha/machine-sp.h: New file.
	* sysdeps/mach/alpha/thread_state.h: New file.
	* sysdeps/mach/alpha/sysdep.h: New file.
	* sysdeps/mach/alpha/machine-lock.h: New file.
	* sysdeps/mach/hurd/alpha/sigcontext.h: New file.
	* sysdeps/mach/hurd/alpha/longjmp-ts.c: New file.
	* sysdeps/mach/hurd/alpha/trampoline.c: New file.
	* sysdeps/mach/hurd/alpha/exc2signal.c: New file.
	* sysdeps/mach/hurd/alpha/__sigret.c: New file.

	* sysdeps/mach/hurd/Makefile (errlist.c, errnos.h): Make the
        output unwritable.
	* sysdeps/alpha/Makefile (divrem rule): Make the output
        unwritable, use mv -f.
	* sysdeps/sparc/Makefile (divrem rule): Likewise.

	* configure.in (sysnames): Put another loop on $mach inside $base
	loop but outside $vendor loop.  This should catch .../cpu/vendor.

Mon Nov 14 22:52:03 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/start.c: Add missing #endif.

Sun Nov 13 05:04:18 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/__select.c: At end of receiving loop, clear TO
        instead of TIMEOUT.

	* malloc/mcheck-init.c (turn_on_mcheck): Add gratuitous self
        reference to silence compiler warning.
	(_hurd_preinit_hook): Add the function to this set too.

	* time/__tzset.c (__tzset): Give tz_rules coherent default when TZ
        value is short or malformed.

	* mach/devstream.c: Echo input after reading it.

	* Make-dist (generated): Mutate to add .S and .s variations for .c
        files.

Fri Nov 11 11:43:26 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/i386/__sigret.c (__sigreturn): Don't actually
	abort here; at least let the user continue with bogus FP; that's
	better than a random crash until it's fixed.

Thu Nov 10 04:56:28 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/bsd/sun/sunos4/sys/mman.h (msync): Use __caddr_t
        instead of caddr_t in decl.

	* sysdeps/mach/start.c (START_ARGS): Define to void if undefined.
	[START_MACHDEP]: Reference this if defined.
	[START_MACHDEP] (_start): #define to _start0.
	(_start): Take args START_ARGS.
	* sysdeps/mach/hurd/start.c: Likewise.

Wed Nov  9 08:02:59 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* hurd/Makefile (sig): Remove longjmp-ctx (it is never called).

	* sysdeps/mach/hurd/__fork.c: Do thread_get_state on parent's
	threads to modify and thread_set_state new child threads.

Mon Nov  7 00:38:45 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* posix/glob/configure.in: Converted to Autoconf v2.
	* posix/glob.c: Test HAVE_DIRENT_H, HAVE_SYS_DIR_H, HAVE_NDIR_H
	instead of DIRENT, SYSDIR, NDIR.
	* posix/glob/Makefile.in (CC): New variable, set from @CC@.
	(CPPFLAGS): Set from @CPPFLAGS@, not @DEFS@.

	* sysdeps/unix/__fork.S: Use decrement and AND instead of test and
        branch.
	* sysdeps/unix/sparc/__fork.S: Likewise.
	* sysdeps/unix/sparc/__vfork.S: Likewise.
	* sysdeps/unix/bsd/sun/m68k/__vfork.S: Likewise.
	* sysdeps/unix/bsd/hp/m68k/__vfork.S: Likewise.
	* sysdeps/unix/i386/__fork.S: File removed.

Sun Nov  6 19:26:28 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Version 1.09.

Fri Nov  4 16:52:05 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Version 1.08.14.

	* manual/Makefile (stamp-summary): Depend on $(chapters-incl) too.

Thu Nov  3 18:33:50 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/generic/sigset.h (__sigemptyset): Cast to __sigset_t.
	(__sigfillset): Likewise.  Use ~(__sigset_t)0 in place of -1.
	(__SIGSETFN): Don't try to be clever.  Test bounds of SIG with <
	and >.

	* sysdeps/mach/hurd/__fork.c: Unlock signal state earlier, just
        after unlocking _hurd_ports locks.

	* sysdeps/unix/bsd/osf1/direct.h: File removed.
	* sysdeps/unix/bsd/direct.h (struct direct): Use `unsigned int'
	instead of `unsigned long int' for `d_fileno' member.

	* Makerules (common-mostlyclean): Remove $(tests:=.out) too.

	* assert/assert-perr.c (__assert_perror_fail): Add missing comma.

	* sysdeps/unix/ioctls-tmpl.c [__osf__ && __alpha__] (FIOPIPESTAT,
	SIOCSRREQR, SIOCSRREQW, SRVC_REQUEST): #undef these.

Wed Nov  2 23:00:19 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/setegid.c: Pass poly and count args for
	other_handles in correct order in call to auth_makeauth.
	* sysdeps/mach/hurd/__setregid.c: Likewise.
	* sysdeps/mach/hurd/__setreuid.c: Likewise.

	* Makerules (compile.S): Add -DASSEMBLER.
	* sysdeps/mach/sysdep.h [ASSEMBLER]: Don't include
        <mach/mig_support.h> if this is defined.

Wed Nov  2 22:39:55 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/seteuid.c: Pass poly and count args for
	other_handles in correct order in call to auth_makeauth.

Wed Nov  2 15:03:51 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* stdio/internals.c (fillbuf): Make sure returned char doesn't get
        sign extended.

Tue Nov  1 01:25:28 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/common/Implies: File removed.
	* sysdeps/unix/bsd/Implies: Add unix/inet.

	* assert/assert-perror.c: Renamed to assert-perr.c.
	* assert/Makefile (routines): Rename assert-perror to assert-perr.

	* Version 1.08.13.

	* mach/Makefile (generated): Add __%.c for $(mach-shortcuts) too.

	* dirent/Makefile (tests): Add tst-seekdir.
	* dirent/tst-seekdir.c (main): New file.
	* sysdeps/unix/bsd/seekdir.c: New file.
	* sysdeps/unix/bsd/telldir.c: New file.
	* sysdeps/unix/bsd/dirstream.h (DIR): New member `__pos'.
	* sysdeps/unix/bsd/readdir.c: Update DIRP->__pos in getdirentries
        call.
	* sysdeps/unix/opendir.c: Use calloc in place of malloc, to zero
        fill new DIRs.

	* sysdeps/standalone/i386/force_cpu386/force_cpu386.ld: Renamed to
	target.ld.
	* sysdeps/standalone/i386/force_cpu386/Makefile: Install it from
	that name (still into $(libdir)/force_cpu386.ld).

	* mach/Makefile (headers, user-interfaces, server-interfaces):
        Don't add default_pager stuff.

Mon Oct 31 07:00:40 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/bsd/sun/sunos4/termbits.h (TCSASOFT): Macro
        removed.

	* malloc/malloc.h: Change #ifdef __STDC__ to #if defined
        (__STDC__) && __STDC__.

Fri Oct 28 00:09:24 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/sysdep.h: Include <mach/mig_support.h> for decls.
	(FATAL_PREPARE): Pass arg to __mig_dealloc_reply_port.

	* assert/Makefile (routines): Add assert-perror.

	* Makerules (stubs): cd into $(objdir) and use local file names,
	making the cmd shorter.

	* sysdeps/mach/hurd/getprio.c (getonepriority): Call
        proc_getprocinfo with proc port.

	* sysdeps/mach/hurd/errnos.awk: Grok "@comment errno %d" in
        errno.texi, instead of assigning sequentially.
	* sysdeps/mach/hurd/errlist.awk: Likewise.

	* stdio/fwrite.c: Reset BUFFER_SPACE after fflush in fill_buffer
        case.

	* sysdeps/generic/sigset.h (__SIGSETFN): When losing, punt to
        `raise (-1)'.  Old method looped.

	* hurd/hurd/resource.h: Include <hurd/process.h>.

Thu Oct 27 15:00:50 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/standalone/standalone.h: Fixed typo.

Wed Oct 26 00:21:16 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/i386/vfork.S: New file.

	* sysdeps/generic/strchr.c: Increment CP properly in check for 5th
        char of quadword hit.

	* sysdeps/mach/hurd/getprio.c (getonepriority): Always set ONERR.

Tue Oct 25 03:53:26 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* hurd/hurd/resource.h: Include <errno.h>.

	* stdio/ftell.c: If STREAM->__pushed_back, calculate from
        pushback_bufp instead of bufp.

	* Makefile (format-me): New canned sequence; runs makeinfo
        --no-headers.
	(INSTALL): Use it.
	(NOTES): New file rule.

	* manual/intro.texi (Feature Test Macros): Node moved off to
        creature.texi.
	* manual/creature.texi: New file, broken out of intro.texi.

	* manual/Makefile (indices): New variable; include ky.
	(realclean): Use $(indices) to remove all index and sorted index
	files.

	* sysdeps/mach/hurd/fcntlbits.h (O_ASYNC, O_FSYNC, O_SYNC):
        Protect with [__USE_BSD].

Mon Oct 24 00:16:59 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/bsd/utime.c: Initialize tv_usec fields.
	Use __gettimeofday instead of time.

	* sunrpc/pmap_rmt.c: Include <sys/param.h> before <net/if.h>.
	Undef _POSIX_SOURCE before that.
	* sunrpc/pm_getport.c: Likewise.
	* sunrpc/pm_getmaps.c: Likewise.
	* sunrpc/get_myaddr.c: Likewise.

	* misc/sys/cdefs.h: Undef __P first.

	* Version 1.08.12.

	* sysdeps/mach/hurd/getprio.c: Rewritten.
	* sysdeps/mach/hurd/setprio.c: New file.
	* hurd/hurdprio.c: New file.
	* hurd/Makefile (routines): Add hurdprio.
	* hurd/hurd/resource.h (_hurd_priority_which_map): Declare it.
	(NICE_TO_MACH_PRIORITY, MACH_PRIORITY_TO_NICE): New macros.

Sun Oct 23 19:39:18 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makerules (sources): Fix typo in last change.

Fri Oct 21 13:15:39 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/generic/termbits.h (ECHOKE): Remove gratuitous leading
        space before #define.

	* Makerules (sources): Filter out $(elided-routines).

	* sysdeps/sparc/divrem.m4 (entry point): For OP=rem, set SIGN from
        dividend only, ignoring divisor.
	(Lgot_result): Test SIGN here for OP=rem too (as originally).

Wed Oct 19 02:40:02 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* hurd/hurdsig.c: Use assert_perror.

	* assert/assert-perror.c (__assert_perror_fail): New file.
	* assert/assert.h (assert_perror): New macro.

	* Version 1.08.11.

	* hurd/hurdsig.c (abort_rpcs): Actually return a port instead of
        boolean, as the type says.

	* hurd/hurdsig.c (abort_all_rpcs): If waiting for reply from
	interrupted RPC returns error, print debugging msg with error
	test, don't assert.

Mon Oct 17 00:06:03 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* stdlib/strtol.c: Deansideclized.
	* sysdeps/generic/strcspn.c: Deansideclized.
	* sysdeps/generic/putenv.c: Deansideclized, added portability
        cruft.

Fri Oct 14 14:00:11 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/sysv/sysv4/solaris2/utsnamelen.h:
	Moved to sysdeps/unix/sysv/sysv4.

Thu Oct 13 22:06:50 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/common/glue-ctype.c [HAVE__LOCP]: Move this defn to
        first.  Include sys/types.h.

	* sysdeps/unix/bsd/readdir.c: Include direct.h.

	* socket/sys/socket.h (__SOCKADDR_ARG): Always use non-GCC defn,
        for now.
	* posix/sys/wait.h (__WAIT_STATUS): Likewise.

Tue Oct 11 00:42:50 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Version 1.08.10.

Mon Oct 10 00:33:47 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* malloc/malloc.h [_MALLOC_INTERNAL] (CHAR_BIT): Don't define if
        already defined.

	* stdio/__vfscanf.c: Grok %q modifier like %ll.

	* mach/__msgserver.c: Increase default MAX_SIZE to two pages.

	* misc/init-misc.c: Cast string constant to non-const type.

	* sysdeps/i386/ffs.c: Use %1 again instead of listing TMP as an
	input with constraint "1".  This avoids a warning that TMP may be
	used before set.

Sun Oct  9 22:41:20 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* hurd/hurdsig.c (abort_all_rpcs): Declare SS.

Sun Oct 09 01:19:38 1994  Jim Meyering  (meyering@comco.com)

	* posix/fnmatch.c: Remove CONFIG_BROKETS conditional.

Fri Oct  7 15:28:07 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* stdio/__vfscanf.c: Properly grok %a modifier.

	* hurd/hurdsig.c (abort_rpcs): Return the reply port or null,
        instead of boolean.
	(abort_all_rpcs): Record the returns from abort_rpcs and wait for
	a message on each reply port.  Don't bother locking _hurd_siglock.

Thu Oct  6 18:57:44 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* hurd/hurd.h (_hurd_socket_server): Take new arg DEAD; explain
        its use in comment.
	* hurd/hurdsock.c (_hurd_socket_server): Take new arg DEAD; if
	nonzero, clear any old cached port and always do a fresh lookup.
	* sysdeps/mach/hurd/socket.c: Pass new arg to _hurd_socket_server,
        cope with dead server on socket_create.
	* sysdeps/mach/hurd/__pipe.c: Likewise.

Mon Oct  3 02:09:43 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/generic/utsnamelen.h (_UTSNAME_LENGTH): Increase to
        1024.

Sun Oct  2 18:35:16 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* posix/glob.h (__P): Change arg name to `protos', for congruence
        with 4.4 BSD.
	* posix/fnmatch.h (__P): Likewise.

Sat Oct  1 04:25:35 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* misc/Makefile (routines): Add daemon.

Fri Sep 30 16:49:09 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* misc/daemon.c: New file, incorporated from BSD 4.4-Lite.

	* sysdeps/mach/hurd/__setsid.c: Call _hurd_setcttyid with
        MACH_PORT_NULL after proc_setsid.

	* hurd/hurdioctl.c (_hurd_setcttyid): Don't do mod_refs if port is
        null.

	Always use fds' `port' cell for the generic port.
	For ctty fds, use the `ctty' cell for the ctty-special port.
	* hurd/dtable.c (get_dtable_port): Use port, never ctty.
	(fork_child_dtable): Reset D->ctty instead of D->port.
	(ctty_new_pgrp): Likewise.
	* sysdeps/mach/hurd/__ioctl.c: Use ctty port for RPC if set and
        !NOCTTY.
	* hurd/port2fd.c (_hurd_port2fd): Install normal port in D->port
	cell, and ctty-special port in the D->ctty cell, not the reverse.
	* hurd/hurdioctl.c (tiocsctty): Don't assume MACH_PORT_NULL is
        zero.
	* hurd/hurdexec.c (_hurd_exec): Always pass fds' normal port,
        never its ctty port.
	* hurd/fd-write.c (_hurd_fd_write): Use ctty port for RPC if set
        and !NOCTTY.
	* hurd/fd-read.c (_hurd_fd_read): Use ctty port for RPC if set.

Thu Sep 29 18:28:01 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* mach/mig_syms.c (mig_put_reply_port): Add symbol alias to __
        name.

Thu Sep 29 12:23:07 1994  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/unix/sysv/sysv4/solaris2/sparc/sysdep.h (ENTRY): Use
	poundfnc instead of \#function, to satisfy gcc-2.6.0 and higher.
	(cat, poundfnc): Define macros to pull it off.

	* sysdeps/unix/sysv/sysd-stdio.c: Include
	sysdeps/generic/sysd-stdio.h,
	not looking in sysdeps/posix.

Thu Sep 29 05:38:14 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/common/configure.in (ctype check): In test prog,
	just reference $ctype; we don't care what type it is.

	* sysdeps/unix/bsd/bsd4.4/direct.h: New file.
	(HAVE_D_TYPE): Define this macro.
	* dirent/dirent.h (struct dirent): New member `d_type'; shorten
        `d_namlen' to a byte.
	* sysdeps/unix/bsd/readdir.c [! HAVE_D_TYPE]: Shuffle d_namlen and
        clear d_type.

Wed Sep 28 17:23:26 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* posix/sys/utsname.h [__USE_SVID] (SYS_NMLN): New macro.

	* dirent/scandir.c: Free storage on error from readdir.

Mon Sep 26 00:55:34 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Version 1.08.9.

	* MakeTAGS (all-dist): Prepend the appropriate sysdep dir names.

	* hurd/hurdsig.c (_hurd_internal_post_signal: sigwakeup): Create a
        send right.

Sat Sep 24 13:44:51 1994  Jim Meyering  (meyering@comco.com)

	* sysdeps/generic/memcmp.c [CMP_LT_OR_GT]: New macro.
	(memcmp): Use it in place of each of ten 5-line #ifdef blocks.

Fri Sep 23 16:55:54 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/sigsuspend.c: Include <hurd/msg.h>.

	* sysdeps/mach/hurd/sigsuspend.c: Add missing & in __mach_msg
        call.

Thu Sep 15 14:22:56 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/standalone/i386/force_cpu386/Dist: New file.
	* sysdeps/standalone/m68k/m68020/mvme136/Dist: New file.
	* sysdeps/standalone/i960/Dist: New file.
	* sysdeps/standalone/m68k/m68020/Dist: New file.
	* sysdeps/standalone/i386/force_cpu386/force_cpu386.ld: New file.
	* sysdeps/standalone/m68k/m68020/mvme136/mvme136.ld: New file.
	* sysdeps/standalone/i960/i960ca.h: New file.
	* sysdeps/standalone/m68k/m68020/m68020.h: New file.

	* sysdeps/unix/common/configure.in: Use AC_COMPILE_CHECK instead
        of AC_HAVE_FUNCS.

	* sysdeps/generic/make_siglist.c (sys_siglist): Define as macro to
        my_siglist.

	* sysdeps/mach/i386/thread_state.h: Include from mach/machine, not
        mach/i386.
	* sysdeps/mach/hurd/i386/sigcontext.h: Likewise.

	* mach/mach/mig_support.h (__mig_put_reply_port): Declare.
	(__mig_dealloc_reply_port): Take arg.
	* sysdeps/mach/hurd/mig-reply.c (__mig_put_reply_port): New
        function.
	(__mig_dealloc_reply_port): Take arg, ignore it.

Wed Sep 14 18:16:07 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/Makefile (libc-name): Set to crt.
	[!subdir]: Install libc-ldscript as libc.a.
	* sysdeps/mach/hurd/Dist: Add libc-ldscript.

Tue Sep 13 19:57:09 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/sync.c: Don't be synchronous: pass WAIT=0 to
        file_syncfs.

	* Makerules (libc-name): New variable.
	(install, libc installation rule): Use $(libc-name) in place of `c'.

Sun Sep 11 23:28:20 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/__readlink.c: Only decrement LEN to remove the
	null terminator when LEN is already large enough to include it.

	* hurd/hurdlookup.c (__hurd_file_name_lookup_retry): Add break
        after FS_RETRY_MAGICAL case.

Fri Sep  9 04:03:59 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* stdio/vfprintf.c: Grok q modifier like ll.

	* Make-dist (sysdep-Subdir-files, subdirs): Set these early on,
        before doing distinfo.
	[parent] (+distinfo): Set inhibit_interface_rules=t in sub-make.

Thu Sep  8 17:18:14 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/generic/morecore.c (__default_morecore) [! __STDC__]:
	Declare arg as `int' instead of `ptrdiff_t'.

Tue Sep  6 19:06:00 1994  Roland McGrath  <roland@geech.gnu.ai.mit.edu>

	* posix/glob.c (prefix_array, glob): Avoid const on initialized
	variables.  Some compiler generates bad code.

Mon Sep  5 13:24:26 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* malloc/Makefile (malloc/%: ../sysdeps/generic/%): New rule, to get
        morecore.c.

	* malloc/malloc.h (size_t, ptrdiff_t): Never define these as macros.
	(__malloc_size_t): Define this instead.
	Change all uses of size_t to __malloc_size_t.
	* malloc/valloc.c: Replace all uses of size_t with __malloc_size_t.
	* malloc/memalign.c: Likewise.
	* malloc/mcheck.c: Likewise.
	* malloc/mtrace.c: Likewise.
	* malloc/malloc.c: Likewise.
	* malloc/free.c: Likewise.
	* malloc/realloc.c: Likewise.
	* malloc/calloc.c: Likewise.

	* MakeTAGS (TAGS): Define first so as to be default goal.
	(sysdep_dirs): Set this by running find, if it is not already set.
	(all-dirs): Include that value.
	(all-dist): Filter output of cat, not args to it.
	* Makerules (TAGS): Depend on distinfo, not distfile.

	* resolv/getnetnamadr.c (getnetbyname): Arg is always const,
        regardless of [sun].

Sun Sep  4 00:04:55 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Version 1.08.8.

	* Makerules (distinfo-vars): Double $s in final emitted sources defn.

	* inet/Makefile (headers): Add netdb.h.
	* resolv/Makefile (headers): Remove netdb.h.
	* resolv/netdb.h: Moved to inet.
	* inet/netdb.h: Incorporated from BSD 4.4-Lite.
	Add back h_errno declaration.

	* hurd/Makefile (faultexc.c): Change this to a pattern rule to
        build both faultexc.[ch].
	(hurdfault.o): Depend on faultexc.h and faultexc.c to get them built.

	* sysdeps/mach/hurd/i386/trampoline.c
        (_hurdsig_rcv_interrupted_p): Make PC volatile.
	(_hurd_setup_sighandler): Cast SS->context to int before comparing to
	_hurdsig_fault_sigcode.

	* sysdeps/mach/thread_state.h (MACHINE_THREAD_STATE_SET_{SP,PC}):
        Cast args to unsigned long int.

	* sysdeps/mach/hurd/i386/trampoline.c: Use _hurdsig_catch_fault.

	* Make-dist (subdirs): Use sed to remove comments from Subdirs files.
	* MakeTAGS (subdirs): Likewise.

	* sysdeps/mach/i386/thread_state.h: Include
        <mach/i386/thread_status.h> first thing.

	* hurd/Makefile (sig): Add faultexc.
	($(objpfx)faultexc.c): New target.
	(generated): Append faultexc.c.

	* hurd/Makefile (sig): Add hurdfault; remove init-fault.
	(distribute): Add hurdfault.h.
	* hurd/hurdfault.h: New file.
	* hurd/hurdfault.c: New file.
	* hurd/hurdsig.c (interrupted_reply_port_location): Use
	_hurdsig_catch_fault and _hurdsig_end_catch_fault.
	(_hurdsig_getenv): Likewise.
	* sysdeps/mach/hurd/i386/trampoline.c: Likewise.

	* hurd/catch-exc.c: Return EPERM if TASK is not right.

	* hurd/hurdsig.c (_hurd_sigthread_fault_env): Variable moved to
        hurdfault.c.
	(_hurdsig_fault_init): Function moved to hurdfault.c.

Sat Sep  3 12:22:53 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/thread_state.h (MACHINE_THREAD_STATE_SET_PC,
        MACHINE_THREAD_STATE_SET_SP): New macros.
	* mach/setup-thread.c: Use MACHINE_THREAD_STATE_SET_PC.
	* sysdeps/mach/hurd/__fork.c: Likewise.

	* string/test-ffs.c (main: try): Actually call ffs in the test.

Fri Sep  2 21:20:17 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/mips/__sigret.c: Restore FPU state.  Code from
        kkojima.

	* sysdeps/mach/hurd/__mknod.c: Fixed copying of the translator
	name into buffer with major and minor numbers, and setting of LEN.

	* sysdeps/unix/configure (unix_syscall): In sed cmd, do = first to
	avoid clobbering produced assignments.

Thu Sep  1 03:25:17 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Version 1.08.7.

	* sysdeps/mach/hurd/connect.c (connect): Fix accidental renaming
        of sun_path to sun_file_name.

	* bare/Makefile (routines, elided-routines): Set these both to
        $(bare-routines).
	(distribute): Don't set this.

	* Makerules (distinfo-vars): Fix cmd to echo `sources' defn.

	* sysdeps/unix/configure: Handle dirs other than common.  Check
	for [gs]etdomainname.
	* misc/Makefile (routines): Add getdomain, setdomain.
	* sysdeps/unix/bsd/bsd4.4/setdomain.S: New file.
	* sysdeps/unix/bsd/bsd4.4/getdomain.S: New file.
	* sysdeps/stub/setdomain.c: New file.
	* sysdeps/stub/getdomain.c: New file.

Wed Aug 31 01:15:26 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* hurd/hurdsig.c (_hurd_internal_post_signal: sigwakeup): Take no
	args; use parent SS variable.  Changed all calls.

	* hurd/hurd/signal.h (struct hurd_sigstate): Make `suspended' a
        port; remove `arrived'.
	* sysdeps/mach/hurd/sigsuspend.c (sigsuspend): Rewritten to set
	SS->suspended port and wait for msg on it.  Check for and deliver
	pending signals properly.
	* hurd/hurdsig.c (_hurd_internal_post_signal: sigwakeup): If
	SS->suspended is set, send an empty message on it and clear it.

	* math/test-math.c (print_trig_stuff): New function, tests many
        math functions.
	(main): Call it at end.

	* string/Makefile (tests): Added test-ffs.
	* string/test-ffs.c: New file.

Tue Aug 30 20:33:49 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* misc/fstab.c (error): Return void.
	(fstabscan): Return int.

	* sysdeps/i386/ffs.c: Use & modifier in constraint for CNT.

	* misc/fstab.c (EFTYPE): If not defined by errno.h, define this to
        EINVAL.
	(fstabscan): Return void.

Tue Aug 30 11:00:01 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/__access.c (__access): Use a send right,
	not a send-once right, in the new auth protocol.
	* hurd/__setauth.c (_hurd_setauth): Likewise.
	* hurd/hurdsig.c (reauth_proc): Likewise.
	* hurd/dtable.c (reauth_dtable): Likewise.
	* hurd/hurdlookup.c (__hurd_file_name_lookup_retry): Likewise.

Tue Aug 30 03:59:38 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* socket/sys/socket.h (__SOCKADDR_ARG) [GCC>=2.6]: Use a typedef
	with the transparent_union attribute.

	* sysdeps/mach/hurd/__access.c: Use new authentication protocol:
	for each port, create a fresh receive right and pass send-once
	rights in the auth calls, then destroy the port.

	* sysdeps/mach/mips/syscall.S: New file.

	* stdio/Makefile (mpn-headers, mpn-sysdep): Change asm.h to
	asm-syntax.h.

	* misc/Makefile (headers): Added fstab.h.
	(routines): Added fstab.
	* misc/fstab.c: New file.
	* misc/fstab.h: New file.

	* hurd/Makefile (routines): Changed hurdpath to hurdlookup.
	* hurd/hurdpath.c: Renamed to hurd/hurdlookup.c.
	* hurd/hurdlookup.c: Globally replace `pathtrans' with `lookup' and
        `path' with `file_name'.
	(__hurd_file_name_split): Don't bother skipping leading slashes.
	* hurd/hurd.h: Rename likewise in decls.
	* hurd/fchroot.c: Globally replace `pathtrans' with `lookup' and
        `path' with `file_name'.
	* hurd/hurdsig.c: Likewise.
	* hurd/hurdsock.c: Likewise.
	* hurd/hurdsyms.c: Likewise.
	* hurd/invoke-trans.c: Likewise.
	* sysdeps/mach/hurd/__access.c: Likewise.
	* sysdeps/mach/hurd/__chmod.c: Likewise.
	* sysdeps/mach/hurd/__chown.c: Likewise.
	* sysdeps/mach/hurd/__execve.c: Likewise.
	* sysdeps/mach/hurd/__link.c: Likewise.
	* sysdeps/mach/hurd/__lstat.c: Likewise.
	* sysdeps/mach/hurd/__mkdir.c: Likewise.
	* sysdeps/mach/hurd/__mknod.c: Likewise.
	* sysdeps/mach/hurd/__open.c: Likewise.
	* sysdeps/mach/hurd/__rmdir.c: Likewise.
	* sysdeps/mach/hurd/__readlink.c: Likewise.
	* sysdeps/mach/hurd/__stat.c: Likewise.
	* sysdeps/mach/hurd/__symlink.c: Likewise.
	* sysdeps/mach/hurd/__unlink.c: Likewise.
	* sysdeps/mach/hurd/__utimes.c: Likewise.
	* sysdeps/mach/hurd/bind.c: Likewise.
	* sysdeps/mach/hurd/chflags.c: Likewise.
	* sysdeps/mach/hurd/connect.c: Likewise.
	* sysdeps/mach/hurd/fchdir.c: Likewise.
	* sysdeps/mach/hurd/opendir.c: Likewise.
	* sysdeps/mach/hurd/sysd-stdio.c: Likewise.
	* sysdeps/mach/hurd/truncate.c: Likewise.
	* sysdeps/mach/hurd/rename.c: Likewise.
	* sysdeps/mach/hurd/getcwd.c: Likewise.
	* sysdeps/mach/hurd/chroot.c: Likewise.
	* sysdeps/mach/hurd/__chdir.c: Likewise.

	* hurd/__setauth.c (_hurd_setauth): Use new authentication
	protocol: for each port, create a fresh receive right and pass
	send-once rights in the auth calls, then destroy the port.
	* hurd/hurdsig.c (reauth_proc): Likewise.
	* hurd/dtable.c (reauth_dtable): Likewise.

	* hurd/hurdpath.c (__hurd_path_lookup_retry): Don't handle
	FS_RETRY_NONE (it's gone).  Use new authentication protocol:
	create a fresh receive right and pass send-once rights in the auth
	calls, then destroy the port.

Mon Aug 29 13:17:39 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/__symlink.c (__symlink): Use new
	file_set_translator protocol.
	* sysdeps/mach/hurd/bind.c (bind): Likewise.
	* sysdeps/mach/hurd/__mknod.c (__mknod): Likewise.

	* sysdeps/mach/hurd/__pipe.c (__pipe): Use PF_LOCAL instead
	of AF_FILE.

Fri Aug 26 01:21:09 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile ($(objpfx)sysd-dirs): Use sed to remove # comments from
        Subdirs files.

	Support for miscellaneous standalone boards (no OS), contributed
	by Joel Sherrill (jsherril@redstone-emh2.army.mil), On-Line
	Applications Research Corporation.
	* sysdeps/standalone: New directory.
	* sysdeps/standalone/standalone.h: New file.
	* sysdeps/standalone/stdio_lim.h: New file.
	* sysdeps/stub/strtsupp.c: New file.
	* sysdeps/standalone/filedesc.h: New file.
	* sysdeps/posix/{setenv,putenv}.c: Moved to sysdeps/generic.
	* sysdeps/unix/getenv.c: Moved to sysdeps/generic.
	* sysdeps/unix/morecore.c: Moved to sysdeps/generic.
	* sysdeps/posix/sysd-stdio.c: Moved to sysdeps/generic.
	* sysdeps/stub/errnos.h: Add ENFILE and EMFILE.
	* sysdeps/stub/errlist.c (_sys_errlist): Likewise.
	* sysdeps/stub/console.c: New file.
	* sysdeps/standalone/__open.c: New file.
	* sysdeps/standalone/__read.c: New file.
	* sysdeps/standalone/__write.c: New file.
	* sysdeps/standalone/__close.c: New file.
	* sysdeps/stub/brdinit.c: New file.
	* sysdeps/unix/__sbrk.c: Moved to sysdeps/generic.
	* sysdeps/standalone/__brk.c: New file.
	* sysdeps/standalone/Subdirs: New file
	* bare/Makefile: New file (and new directory).
	* sysdeps/i960/ffs.c: New file.
	* sysdeps/i960/Implies: New file.
	* configure.in (os=none): base_os=standalone

Thu Aug 25 23:56:32 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/stub/__sigret.c: Arg is not const.
	* signal/sigret.c: Likewise.

Tue Aug 23 14:43:19 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* socket/sys/socket.h (PF_FILE, AF_FILE): Removed (use LOCAL instead).
	(PF_XTP, PF_COIP, PF_CNT, PF_RTIP, PF_IPX, PF_SIP, PF_PIP): New
	macros.
	(PF_MAX): Increased to 26.
	(pseudo_AF_XTP, AF_COIP, AF_CNT, pseudo_AF_RTIP, AF_IPX, AF_SIP,
	pseudo_AF_PIP): New macros.
	(MSG_EOR, MSG_TRUNC, MSG_CTRUNC, MSG_WAITALL, MSG_DONTWAIT,
	SO_REUSEPORT): New enum constants.

	* hurd/hurdsig.c (_hurd_internal_post_signal): If not preempted,
	set ACT before checking for SIGCONT.  When continuing and
	ACT==handle, don't resume SS->thread; record that it is suspended
	and in handler-setup code, don't suspend it again.

	* sysdeps/mach/hurd/sys/param.h: Include <errno.h> (BSD does).

	* sysdeps/mach/hurd/__fork.c: When unchaining old sigstates, check
        for SS being head of chain.

Mon Aug 22 00:29:02 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* time/{asia,australasia,europe,northamerica}: New data from ADO.

	* hurd/hurdsig.c (abort_rpcs): After destroying MSGING_PORT,
	change the return value register in STATE to EINTR.
	* sysdeps/mach/mips/thread_state.h (SYSRETURN): New macro.
	* sysdeps/mach/i386/thread_state.h (SYSRETURN): New macro.

	* hurd/hurdsig.c (default_sigaction): New function.
	(_hurd_thread_sigstate): Use it to initialize SS->actions.
	Initialize rest of new sigstate by hand, don't just bzero it.

	* hurd/hurdsig.c (_hurd_internal_post_signal): Initialize
        THREAD_STATE.set to zero.

	* posix/execl.c: Use ARG instead of PATH in va_start.

	* sysdeps/mach/hurd/__fork.c: In child fork, unchain stale
	structures from _hurd_sigstates first, and only free them after
	other processing is complete.

	* hurd/hurdpath.c (__hurd_path_lookup_retry): For malformed number
	in magic "fd/N", return ENOENT instead of treating it as bogus
	magic.

	* sysdeps/mach/hurd/__chdir.c: After __path_lookup on arg, use
	__hurd_path_lookup of empty file name on resultant port to check
	that it's a directory.
	* sysdeps/mach/hurd/chroot.c: Likewise.
	* sysdeps/mach/hurd/fchdir.c: Use __hurd_path_lookup of empty file
	name on FD port to check that it's a directory and acquire a
	reference at the same time.
	* hurd/fchroot.c: Likewise.

	* hurd/hurdpid.c (init_pids): Add gratuitous self reference to
        silence compiler.

	* hurd/hurdpath.c: Include <hurd/term.h> for cttyid opening rpc.
	(__hurd_path_lookup_retry): Fixed typo.

	* sysdeps/mach/hurd/i386/__sigret.c: Push state onto the user's
        stack, switch to it, pop and return.

	Major rewrite of Hurd signal delivery.
	* hurd/hurd/signal.h (struct hurd_sigstate): New member `context'.
	* sysdeps/mach/hurd/i386/trampoline.c: Include "thread_state.h"
        instead of <mach/thread_status.h>.
	(struct mach_msg_trap_args): New type.
	(trampoline): Function removed.
	(_hurd_setup_sighandler): Take struct hurd_sigstate * arg instead
	of FLAGS and SIGALTSTACK args; take new flag arg RPC_WAIT; use
	struct machine_thread_all_state * for STATE arg.  New declared
	labels `trampoline', `rpc_wait_trampoline' mark asm code at end of
	function (after return).  Add another struct sigcontext * to
	STACKFRAME after the first one, for the arg to __sigreturn.  If
	SS->context is set, fill registers in SCP from that instead of
	STATE, and reset SS->INTR_PORT from it.  Use memcpy to copy from
	STATE into SCP; the structures are congruent.  If RPC_WAIT is set,
	set up to use rpc_wait_trampoline and frob args to mach_msg_trap
	syscall in progress so that it will retry the receive operation
	(but not resend!).
	{rpc_wait_trampoline, trampoline}: New trampoline code.
	(_hurd_rcv_interrupted_p): New function.
	* sysdeps/mach/hurd/mips/trampoline.c: Likewise.
	* hurd/hurdsig.c (write_corefile): Take new arg SIGERROR.  Use
	_hurdsig_getenv instead of getenv.  Use dir_mkfile to create an
	unlinked node for the core file; then use dir_link to name it,
	only if core_dump_task succeeded.
	(post_reply): New function.
	(abort_thread): New function.
	(interrupted_reply_port_location): New function.
	(interrupted_reply_port): Function removed (replaced by above).
	(abort_all_rpcs): Take struct machine_thread_all_state * for STATE.
	(abort_rpcs): Likewise.
	Return int, nonzero iff interrupt_operation RPC was done.  Take
	args for reply port and its port type; call abort_thread instead
	of doing thread_abort and thread_get_state.  Call
	_hurdsig_rcv_interrupted_p instead of _hurd_thread_state_msging_p.
	Use __interrupt_operation mig stub instead of manual packing.  If
	we destroy the msging port, and it is the thread's mig reply port,
	clear its reply port slot.  Fix inverted SA_RESTART test.
	(_hurd_internal_post_signal): Take new arg SIGERROR.
	Remove `cont' from ACT enum; SIGCONT processing is independent of
	handling.  Removed local function `check_pending'; add `reply'.
	Use mask macro STOPSIGS instead of alternation to check for stop
	signals.  Process SIGCONT and do continuation before examining the
	handler.  Use SS->pending_data instead of SS->sigcodes.  When
	dying, don't lock _hurd_siglock around __proc_dostop call.  When
	dying, reply immediately after stopping user threads.  When
	handling, notice return from abort_rpcs and pass it to
	_hurd_setup_sighandler; also pass SS instead of its components.
	Set SCP->sc_error from SIGERROR; clear SS->intr_port after saving
	it in SCP->sc_intr_port.  For pending checks, use macro PENDING
	and goto pending if returns true.
	(_S_sig_post): Eliminate unnecessary variable WIN; pass SIGERROR
	value of zero to _hurd_internal_post_signal.
	(_hurdsig_getenv): New function.
	* sysdeps/mach/hurd/i386/__sigret.c (sp): New global register
        variable.
	(__sigreturn): Arg is not const.
	After restoring SCP->sc_mask, check for pending signals (newly
	unblocked); if any, set SS->context to SCP, clear SS->intr_port,
	and send sig_post to the signal thread to deliver the pending
	signals.  Point SP directly at &SCP->sc_gs and used popa;iret to
	restore.  (This does not actually work; iret is unhelpful.)
	* sysdeps/mach/hurd/mips/__sigret.c (__sigreturn): Arg is not
	const.  After restoring SCP->sc_mask, check for pending signals
	(newly unblocked); if any, set SS->context to SCP, clear
	SS->intr_port, and send sig_post to the signal thread to deliver
	the pending signals.  Don't write $1 value into the user stack.
	Instead, write it into the word just past SCP->sc_pc; then point
	$1 at SCP->sc_pc and use `op_sigreturn' pseudo-instruction to
	restore the PC and $1 from that.

Fri Aug 19 15:39:54 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* configure.in (machine): Grok i586 -> i386/i586.
	* sysdeps/i386/pentium: Directory renamed to sysdeps/i386/i586.

	* hurd/hurd.h (_hurd_pids_changed_stamp, _hurd_pids_changed_sync):
        New variables.
	* hurd/hurdpid.c (_S_proc_newids): Last thing, increment
	_hurd_pids_changed_stamp and broadcast on _hurd_pids_changed_sync.
	* sysdeps/mach/hurd/__setpgrp.c: After proc_setpgrp succeeds and
	PID is ourself, wait on _hurd_pids_changed_sync until
	_hurd_pids_changed_stamp increases from the value before the RPC.
	* sysdeps/mach/hurd/__setsid.c: After proc_setsid succeeds, wait
	on _hurd_pids_changed_sync until _hurd_pids_changed_stamp
	increases from the value before the RPC.

	* posix/sys/wait.h [GCC>=2.6] (__WAIT_STATUS): Define this with
	typedef as a union with the new (GCC 2.6.1) `transparent_union'
	attribute.

	* stdio/printf_fp.c (MPNSIZE): New macro, computed from DBL_MAX_EXP.
	(MPN_VAR): Use that for size of bignums.

	* sysdeps/mach/hurd/__kill.c: For pgrp, ignore ESRCH error from
	kill_pid of individual pids, unless from all of them.
	* hurd/hurdkill.c (_hurd_sig_post): Likewise.

Fri Aug 19 00:54:50 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* configure.in (INSTALL): Quote this shell goop from m4.

	* sysdeps/stub/start.c (errno, __environ): Define these variables.

	* sysdeps/stub/errnos.h (ENOMEM, EACCES): New macros.
	* sysdeps/stub/errlist.c (_sys_errlist): Add strings for all
        macros defined in stub/errnos.h.
	(_sys_nerr): Use value computed from sizeof (_sys_errlist).

Wed Aug 17 15:32:39 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* hurd/hurdmsg.c (_S_io_select_done): Take poly arg for notify
        port arg.

	* mach/mach_init.h (vm_page_size): Remove macro defn.

	* hurd/Makefile (distribute): Added STATUS.

	* sysdeps/mach/thread_state.h: Include <string.h> and
        <mach/mach_interface.h>.

	* sysdeps/mach/hurd/__select.c: Pass port-type arg to io_select.

	* sysdeps/mach/hurd/__fork.c: Include "hurdmalloc.h", so we use
        the right `free'.

	* sysdeps/mach/hurd/__select.c (SELECT_DONE_MSGID): Correct value
        to 23020.
	(__select): Don't set PORT until just before sending io_select calls.
	Pass proper send-size for io_select_done reply message.  Clear the
	reply port slot in io_select_done reply message header.

	* sysdeps/mach/hurd/__kill.c: Rename parameter to ARG_SIG, make
        SIG a local variable initialized to that (this to work around a
        GCC bug).
	Initialize PIDS and NPIDS properly for proc_getpgrppids call.

	* signal/signal.h (__sigreturn, sigreturn): Arg is not const.

	* hurd/hurdpath.c (__hurd_path_lookup_retry): For REAUTH or NORMAL
	with empty retryname, treat like NONE (which is now obsolete)
	after reauthentication.  For magic "tty", use new
	termctty_open_terminal RPC on cttyid port.

Tue Aug 16 01:58:21 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/__kill.c (kill_pid): Make non-inline.  Treat
	null msgport like EPERM return from sig_post.
	* hurd/hurdkill.c (_hurd_sig_post): Treat null msgport like EPERM.

	* sysdeps/mach/thread_state.h (machine_get_state,
	machine_get_basic_state): Initialize count arg before calling
	thread_get_state.

	* hurd/hurdpath.c (__hurd_path_lookup_retry): Initialize ERR to zero.

	* hurd/hurdpath.c (__hurd_path_lookup_retry): Grok magic "tty".

	* hurd/hurd/signal.h (struct hurd_sigstate): Replace `sigcodes' with
        `pending_data'.
	(_hurd_raise_signal, _hurd_setup_sighandler): Update prototypes.
	(_hurd_thread_state_msging_p): Don't declare.
	(_hurdsig_rcv_interrupted_p): Declare this instead.
	(HURD_EINTR_RPC): Invert sense of restart test.

	* hurd/hurdrlimit.c (_hurd_rlimits): Add braces to initializer.

	* hurd/catch-exc.c: Unlock _hurd_siglock when done with it.  Use
	__spin_lock_locked on `held' member instead of __mutex_lock_locked.

	* sysdeps/mach/thread_state.h: New file.
	* sysdeps/mach/i386/thread_state.h: Don't #include
	<mach/thread_status.h>.  Add #include_next <thread_state.h> at end.
	* sysdeps/mach/mips/thread_state.h: Likewise.

	* sysdeps/mach/hurd/i386/sigcontext.h (struct sigcontext): Lay out
	corresponding to i386_thread_state and i386_float_state.
	* sysdeps/mach/hurd/mips/sigcontext.h (sc_mips_thread_state,
	sc_mips_exc_state, sc_mips_float_state): New macros, marking
	members that correspond to thread_state.h structs.

Mon Aug 15 17:21:20 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Rules [cross-compiling=yes] (tests): Depend on the binaries, not
	the output files.

	* Makerules: Replace uses of HOST_CC with BUILD_CC and
        native-CFLAGS with BUILD_CFLAGS.

	* sysdeps/unix/Makefile (mk-local_lim, make-ioctls): Replace uses
	of CC with BUILD_CC and native-CFLAGS with BUILD_CFLAGS.
	* sysdeps/unix/sysv/sysv4/solaris2/Makefile: Replace uses of
        HOST_CC with BUILD_CC and native-CFLAGS with BUILD_CFLAGS.
	* sysdeps/posix/Makefile: Likewise.

	* Makeconfig (+cc_version): Variable and associated code removed.
	(HOST_CC): Use BUILD_CC instead; all uses changed.
	(cross-compiling): Set to no if not the case.

	* sysdeps/m68k/fpu/__math.h: Replace all uses of __const with
        __CONSTVALUE.

	* Makerules (distinfo-vars): Remove $@.new first thing.  Write
	elided-routines instead of sysdep_routines.  After writing
	variables, append to sources from $(elided-routines).
	* sysdeps/vax/Makefile (elided-routines): New variable (append to
        it).
	(aux, routines): Don't set these.
	(sysdep_routines): Append things here instead.
	* sysdeps/generic/Makefile (elided-routines): New variable (append
        to it).
	(aux): Don't set this.
	* sysdeps/generic/Makefile (routines): Don't set this.
	(sysdep_routines): Append exp__E and log__L here instead.

	* time/test_time.c (main): Set TBUF.tm_isdst to -1 before calling
        mktime.

	* stdlib/stdlib.h (atof, atoi, atol, random, srandom, setstate,
	initstate, mblen): Never define as macros.
	[__OPTIMZE__ && __GNUC__ >= 2]: Define those functions as extern
	inlines.

	* hurd/hurdpath.c (__hurd_path_lookup_retry): For magic "fd/%u",
	lose on random chars after number; for / after number, retry
	remainder properly.

	* hurd/hurdpath.c (pathtrans_error): New function; filters errors
	from dir_pathtrans: EOPNOTSUPP and MIG_BAD_ID become ENOTDIR.
	(__hurd_path_lookup, __hurd_path_lookup_retry): Call it.

Thu Aug 11 11:59:33 1994  Noel Cragg  (noel@churchy.gnu.ai.mit.edu)

	* time/mktime.c (_mktime_internal): Add code to normalize value of
	TM_ISDST to -1, 0, or 1 so code doesn't loop forever.

Thu Aug 11 02:26:37 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* resolv/Makefile (subdir): Set to resolv, not res.

	* sysdeps/mach/hurd/sysd-stdio.c (fd_fail): Pass ERR to
        _hurd_raise_signal.

	* sysdeps/mach/i386/thread_state.h (struct machine_thread_all_state):
	Add new member `fpu'.

Wed Aug 10 23:39:49 1994  Karl Heuer  <kwzh@hal.gnu.ai.mit.edu>

	* malloc/mcheck.c (mcheck): Remove obsolete extern declaration.

	* malloc/mcheck.c (flood): Add an arg.
	(freehook, mallochook, reallochook): Use different flood bytes to
	distinguish freed space from uninitialized allocated space.

	* malloc/mtrace.c (mtrace): Guard against being called twice.
	(muntrace): New function, to turn off tracing.
	* malloc/malloc.h: Declare it.

Wed Aug 10 02:47:24 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/mips/sigcontext.h (struct sigcontext): Renamed
        member `sc_err' to `sc_error'.

	* hurd/hurd-raise.c: Take new arg SIGERROR.  Set
	SS->pending_data[SIGNO] from SIGCODE and SIGERROR instead of
	setting SS->sigcodes[SIGNO].

	* Makeconfig (+includes): Use text manipulation to avoid
	conditional for $(..).  Append $(last-includes).
	* sysdeps/mach/hurd/Makefile (last-includes): Append
        -I.../libthreads to this.
	(includes): Not to this.

	* hurd/hurd/fd.h (_hurd_fd_error): Pass ERR to _hurd_raise_signal.

	* stdlib/stdlib.h [__OPTIMIZE__] (cfree, rand, srand, random,
	srandom, initstate, setstate): Macros removed.

	* malloc/mcheck.c (reallochook): Fixed typo.
	(mabort) [! __GNU_LIBRARY__]: Use fprintf and abort instead of
	__libc_fatal.

	* hurd/Makefile (sig): Remove msging-p; that function will go in
        trampoline.c.
	* sysdeps/stub/msging-p.c: File removed.
	* sysdeps/mach/hurd/mips/msging-p.c: File removed.
	* sysdeps/mach/hurd/i386/msging-p.c: File removed.

Tue Aug  9 19:20:29 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* hurd/catch-exc.c: Get error code from _hurd_exception2signal and
	pass it to _hurd_internal_post_signal.  Search for SS manually
	rather than using _hurd_thread_sigstate, to avoid locks.

	* sysdeps/mach/hurd/mips/msging-p.c: Fetch port argument from
	register $8 (t0) instead of stack.  Change type of STATE arg to
	`struct machine_thread_all_state *'.

	* inet/inet_netof.c: Incorporated from BSD 4.4-Lite.
	* inet/inet_net.c: Incorporated from BSD 4.4-Lite.

Tue Aug  9 18:28:40 1994  Karl Heuer  <kwzh@hal.gnu.ai.mit.edu>

	* malloc/mtrace.c (tr_mallochook, tr_reallochook): Don't assume
	%lx format matches size_t arg.
	* malloc/mtrace.c: Enable file- and line-number tracing.
	* malloc/mtrace.awk: Postprocess that trace information.

	* malloc/mcheck.c (flood): New function.
	(freehook, mallochook, reallochook): Initialize new space and
	freed space to non-zero garbage, to help find code that makes
	unwarranted assumptions.

Mon Aug  8 01:20:56 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/mips/exc2signal.c (_hurd_exception2signal): Take
        new arg `int *error'; set it.
	* sysdeps/mach/hurd/i386/exc2signal.c: Likewise.
	* sysdeps/stub/exc2signal.c: Likewise.
	* hurd/hurd/signal.h (_hurd_exception2signal): Take new arg
	`int *error'.
	(_hurd_internal_post_signal): Take new arg `int error'.

	* res: Directory renamed to resolv.
	* sysdeps/unix/inet/Subdirs: Change res to resolv.

	* Version 1.08.6.

	* sysdeps/sparc/divrem.m4 (DEVELOP_QUOTIENT_BITS): Use ** instead of
	^ for exponentiation.  Pinard says it is more portable.

	* sysdeps/mach/hurd/mips/sigcontext.h (struct sigcontext): Added
        member `sc_err'.
	* sysdeps/mach/hurd/i386/sigcontext.h (struct sigcontext): Move
	sc_err to front machine-independent section; change its comment.

	* sysdeps/stub/thread_state.h (struct machine_thread_all_state): New
	type.
	* sysdeps/mach/i386/thread_state.h: Likewise.
	* sysdeps/mach/mips/thread_state.h: Likewise.

	* sysdeps/mach/i386/Implies: File removed; it was superfluous.

	* sysdeps/sparc/divrem.m4 (Lgot_result): Add more quotes in ifelse.

	* configure.in (fpu_dirs): Fixed typo.

Sun Aug  7 01:13:04 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* inet/inet_lnaof.c: Incorporated from BSD 4.4-Lite.
	* inet/inet_mkadr.c: Incorporated from BSD 4.4-Lite.
	* inet/inet_addr.c: Incorporated from BSD 4.4-Lite.
	* res/Makefile (headers): Use only arpa/nameser.h, not arpa/*.h.
	* res/arpa/inet.h: Moved to inet/arpa/inet.h.
	* inet/arpa/inet.h: Incorporated from BSD 4.4-Lite.

	* misc/init-misc.c: New file.
	* misc/Makefile (aux): Added init-misc.

	* Makeconfig (localtime-file): Use $(sysconfdir) instead of
        $(etcdir).

	* Makerules (install-bin-nosubdir): Use $(install-bin) instead of
        $(install).
	(install-sbin-nosubdir): New target.
	(install-no-libc.a-nosubdir): Depend on that.

	* configure.in ($nfp check): Iterate through $mach and use all
        fpu/ dirs that exist.

Wed Aug  3 02:46:03 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/mips/sigcontext.h: Rearranged structure so
	machine-dependent portion is laid out like `struct mips_thread_state;
	struct mips_exc_state; struct mips_float_state;'.

	* Version 1.08.5.

	* sysdeps/mach/hurd/mips/__sigret.c: Compare *reply_port to
        MACH_PORT_NULL, not implicit zero.
	(restore_gpr): Use N-1 as subscript into sc_gpr (sc_gpr[0] => $1).
	Before general regs, restore from sc_mdlo and sc_mdhi.  Don't
	treat sp, fp specially; use restore_gpr for them too.  For final
	return, store user $1 value beyond top of user stack ahead of
	time; then use $1 to hold the user PC, and restore it from the
	stack in the delay slot.

Tue Aug  2 21:03:51 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/mips/trampoline.c (_hurd_setup_sighandler):
        Copy TS to SCP all at once.
	* sysdeps/mach/hurd/mips/sigcontext.h (struct sigcontext): sc_gpr
	has 31 elts; sc_gpr, sc_pc, sc_mdlo, sc_mdhi are arranged in that
	order to mimic struct mips_thread_state.

	* Make-dist (all-headers): Instead of removing rpcsvc/%, use
	$(wildcard) to remove all headers that don't exist at top level,
	but preserve top-level $(headers).

	* Make-dist (sysdep_dirs): Avoid directories called RCS.
	(%/configure): Pass -f to mv.

	* sysdeps/mips/setjmp.S [__sgi__]: Use `fp' instead of `$fp'.

Mon Aug  1 20:12:23 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/mach/hurd/mips/sigcontext.h (struct sigcontext): Add
        members sc_mdlo, sc_mdhi.
	* sysdeps/mach/hurd/mips/trampoline.c (_hurd_setup_sighandler):
        Save mdlo and mdhi.

Sun Jul 31 14:21:16 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* time/mktime.c: Remove errant comment end sequence.

	* termios/sys/ttydefaults.h: Incorporated from BSD 4.4-Lite.
	* sysdeps/vax/DEFS.h: Incorporated from BSD 4.4-Lite.
	* sysdeps/unix/bsd/sys/reboot.h: Incorporated from BSD 4.4-Lite.
	* sysdeps/unix/bsd/bsd4.4/errnos.h: Updated from 4.4-Lite sys/errno.h.
	[__USE_BSD] (EAUTH, ENEEDAUTH, ELAST): New macros.
	* sysdeps/ieee754/support.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/ieee754/cbrt.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/trig.h: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/tanh.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/tan.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/sinh.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/sincos.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/pow.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/mathimpl.h: Incorporated from BSD 4.4-Lite.
	Add back __izing #define's, except for exp__E and log__L, which
	have been renamed with __s in 4.4-Lite.
	* sysdeps/generic/log__L.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/log1p.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/log.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/fmod.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/exp__E.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/exp.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/cosh.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/atanh.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/atan2.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/asinh.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/asincos.c: Incorporated from BSD 4.4-Lite.
	* misc/getusersh.c: Incorporated from BSD 4.4-Lite.
	(initshells): Reapply fix of 16 Nov 1992.
	* sysdeps/generic/acosh.c: Incorporated from BSD 4.4-Lite.
	* sysdeps/generic/__expm1.c: Incorporated from BSD 4.4-Lite.
	* misc/ttyslot.c: Incorporated from BSD 4.4-Lite.
	* misc/ttyent.h: Incorporated from BSD 4.4-Lite.
	* misc/syslog.c: Incorporated from BSD 4.4-Lite.
	* misc/paths.h: Incorporated from BSD 4.4-Lite.
	* misc/getttyent.c: Incorporated from BSD 4.4-Lite.
	* misc/sys/syslog.h: Incorporated from BSD 4.4-Lite.
	Don't include <machine/ansi>; define _BSD_VA_LIST_ to __gnuc_va_list.
	* inet/rexec.c: Incorporated from BSD 4.4-Lite.
	* inet/rcmd.c: Incorporated from BSD 4.4-Lite.
	(rcmd): Reapply select max fd fix of 3 Jun 1994.
	* inet/pathnames.h: File removed.
	* inet/inet_ntoa.c: Incorporated from BSD 4.4-Lite.
	* inet/getsrvbypt.c: Incorporated from BSD 4.4-Lite.
	* inet/getsrvbynm.c: Incorporated from BSD 4.4-Lite.
	* inet/getservent.c: Incorporated from BSD 4.4-Lite.
	* inet/getprtname.c: Incorporated from BSD 4.4-Lite.
	* inet/getprtent.c: Incorporated from BSD 4.4-Lite.
	* inet/getproto.c: Incorporated from BSD 4.4-Lite.
	* inet/protocols/timed.h: Incorporated from BSD 4.4-Lite.
	* inet/protocols/talkd.h: Incorporated from BSD 4.4-Lite.
	* inet/protocols/rwhod.h: Incorporated from BSD 4.4-Lite.
	* inet/protocols/routed.h: Incorporated from BSD 4.4-Lite.
	* inet/arpa/tftp.h: Incorporated from BSD 4.4-Lite.
	* inet/arpa/telnet.h: Incorporated from BSD 4.4-Lite.
	* inet/arpa/ftp.h: Incorporated from BSD 4.4-Lite.

Fri Jul 29 01:50:37 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Version 1.08.4.

	* res/Makefile (routines): Add missing backslash.

	* sysdeps/mach/hurd/mips/__sigret.c: Rename variable AT (which is
	the register's name) to SCPREG.  Fix some SCP references in
	register loads to use SCPREG instead.  Load SCPREG->sc_pc into $24
	and jump to it, restoring $at in the delay slot.  This still
	leaves $24 clobbered.

	* sysdeps/mach/hurd/mips/sigcontext.h: Use `unsigned int'
        consistently for port names.

	* sysdeps/mach/hurd/mips/trampoline.c: Don't set up args on the
        stack; pass them in registers.

	* Makefile (%/configure, sysd-dirs, munch-init.c): Pass -f to mv.

	* misc/sys/cdefs.h (__NORETURN, __CONSTVALUE): Use the
	__attribute__ defn for GCC>=2.7, not >=2.6.  Use the keyword defn
	only for GCC<2.5.  Use __volatile__ and __const__ instead of
	noreturn and const for namespace safety.

	* sysdeps/mach/hurd/__readlink.c: If BUF is null, return the size
        of buffer required.

Thu Jul 28 17:17:11 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* res/netdb.h: Declare h_errno.

	* res: New directory, for all code incoporated from BIND.
	* inet/arpa/inet.h, inet/arpa/resolv.h: Moved to res/arpa.
	* inet/sys/bitypes.h: Moved to res/sys.
	* inet/gethstnamad.c: Renamed to res/gethnamaddr.c.
	* inet/getnetbyad.c: Renamed to res/getnetbyaddr.c.
	* inet/getnetbynm.c: Renamed to res/getnetbyname.c.
	* inet/res_mkqry.c: Renamed to res/res_mkquery.c.
	* inet/Makefile (headers): Removed netdb.h, resolv.h, and
        sys/bitypes.h.
	(routines): Removed res_comp res_debug res_init res_mkqry res_query
	res_send gethstnmad sethostent.
	(aux, distribute): Variables removed.
	* res/getnetnamadr.c, res/nsap_addr.c: New files.
	* All .c and .h in res/ updated from BIND-4.9.3-BETA9.
	* res/Makefile: New file.
	* sysdeps/unix/inet/Subdirs: Added res.

	* Makerules: Replace all uses of `.dep' suffix with `.d' suffix.
	(+make-deps): Replace `.dtm' suffix with `.T' suffix.

Wed Jul 27 06:13:30 1994  Noel Cragg  (noel@churchy.gnu.ai.mit.edu)

	* time/mktime.c: Add code to support tm_isdst flag in struct tm.
	Fixed bug with handling of DST sections.

Mon Jul 25 17:17:28 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/sparc/divrem.m4 (Lgot_result) [S=true]: Only test SIGN
        and negate for [OP=div].

	* socket/sys/socket.h (__SOCKADDR_ARG): New macro; for GCC 2.6 and
	later, a funky union similar to __WAIT_STATUS in <sys/wait.h>.
	(bind, getsockname, connect, getpeername, sendto, recvfrom,
	accept): Use __SOCKADDR_ARG in place of `struct sockaddr *' in
	declarations.

	* posix/glob/configure.bat: New file.
	* posix/Makefile (glob.tar): Add glob/configure.bat.

	* sysdeps/unix/opendir.c: Fail with ENOENT when passed "".
	Check STATBUF and fail with ENOTDIR if it's not a directory.

Mon Jul 25 15:44:18 1994  Noel Cragg  (noel@churchy.gnu.ai.mit.edu)

	* time/mktime.c: Fix range-checking bug in NORMALIZE macro.

Fri Jul 22 02:42:44 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* sysdeps/unix/readdir.c: Search for NUL character to limit
	d_namlen.  Some systems return very bogus values.

	* sysdeps/unix/sysv/sysv4/i386/sysdep.h (PSEUDO): Remove ret at end.

	* mach/Makefile (mach-shortcuts): Filter out device_writev_request.

	* limits.h (_LIBC_LIMITS_H_): Don't define if already defined.
	[__GNUC__ < 2]: Only protect this section from multiple inclusion.

	* sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler):
        Declare SIGSP volatile.

	* hurd/hurdinit.c (_hurd_setproc): Fixed arg in
        _hurd_pgrp_changed_hook decl.

	* hurd/hurd/signal.h (_hurd_self_sigstate_unlocked): New function.
	(HURD_EINTR_RPC): Use it instead of _hurd_self_sigstate followed by
	__mutex_unlock; this thread might already hold the lock.

Wed Jul 20 18:53:54 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* hurd/fd-read.c (_hurd_fd_read): Test for EBACKGROUND in
	do loop was reversed.

	* hurd/hurdpath.c (__hurd_path_lookup): Skip over initial slashes
	before calling __dir_pathtrans.

Tue Jul 19 15:28:39 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* mach/Makefile (user-interfaces): Add mach/mach4.
	(mach-shortcuts): Match all syscall_% again; the missing ones are in
	mach4.defs.

	* mach/Machrules (%.ir): Match SimpleRoutine as well as Routine
        comments.

	* sysdeps/mach/hurd/Makefile ($(hurd)/errlist.c): Use -f flag to mv.

Sat Jul 16 00:42:30 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makerules [install]: Rewrite this rule to use install-bin.
	[install-sbin]: New rule parallel to that one, installs in $(sbindir).

	* time/Makefile (install-sbin): Set this instead of install.
	* sunrpc/Makefile (install-others): Use $(sysconfdir)/rpc instead
	of $(etcdir)/rpc.
	(install-bin): Set this instead of install; set it to just rpocgen.
	(install-sbin): Put rpcinfo and portmap here instead.
	($(sysconfdir)/rpc): Rule renamed from $(etcdir)/rpc.
	(defines): Rename it in _PATH_RPC defn here too.

	* posix/Makefile (install-bin): Set this instead of install.

	* Makeconfig (datadir): Default to $(prefix)/share, not $(prefix)/lib.
	(sbindir): New variable.
	(sysconfdir): Variable renamed from etcdir.

	* sysdeps/unix/bsd/sun/signum.h: New file; no SIGINFO, SIGLOST is 29.

	* sysdeps/unix/sysv/sco3.2.4/uname.S: New file from Scott Bartram.

	* sysdeps/unix/sysv/sco3.2.4/__getgrps.c: Include alloca.h.

	* configure.in (INSTALL): If it is $srcdir/install.sh after
	AC_PROG_INSTALL, reset it to '$(..)./install.sh'.

	* sysdeps/mach/hurd/__ioctl.c (io2mach_type): Move macro defn before
	first use.
	(__ioctl): Fix swapped args to __sigismember; remove unused variable.

	* sysdeps/mach/hurd/send.c: Fix portsPoly arg to __socket_send.
	* sysdeps/mach/hurd/sendto.c: Likewise.

	* sysdeps/mach/hurd/recv.c: Pass &BUFP, not BUFP.
	* sysdeps/mach/hurd/recvfrom.c: Likewise.

	* sysdeps/mach/hurd/connect.c: Include <hurd/ifsock.h>.

	* sysdeps/mips/dec/bytesex.h: New file.
	* sysdeps/mips/p40/bytesex.h: New file.

Fri Jul 15 23:12:06 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* posix/sys/types.h (u_quad, quad): Renamed to &_t.
	* posix/gnu/types.h [__GNUC__] (__u_quad_t, __quad_t, __qaddr_t):
	New typedefs, using long long int and derivatives.
	[! __GNUC__] (__u_quad, __quad): Renamed to &_t.
	(__fsid_t): Make this always be __u_quad_t.

	* time/sys/time.h (struct timespec): New type.
	(TIMEVAL_TO_TIMEPSEC, TIMESPEC_TO_TIMEVAL): New macros.

Thu Jul 14 15:43:39 1994  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/unix/sysv/sysv4/sysinfo.S: New file.
	* sysdeps/unix/sysv/sysv4/Dist: Add sysinfo.S.
	* sysdeps/unix/sysv/sysv4/Makefile: Add sysinfo to sysdep_routines
	if we're inside misc.
	* sysdeps/unix/sysv/sysv4/sethostnam.c: New file.
	* sysdeps/unix/sysv/sysv4/__gethstnm.c: New file.

	* sysdeps/unix/sysv/sysv4/solaris2/fsync.S: New file.

Tue Jul 12 00:57:08 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* mach/Makefile (mach-shortcuts): Only match known Mach
	subsystems: vm, task, mach_port, and thread.

Mon Jul 11 20:18:29 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/intr-rpc.defs, hurd/intr-rpc.awk: New files.
	* hurd/Makefile (user-MIGFLAGS): Add -imacros intr-rpc.defs.
	(transform-user-stub): New canned sequence.
	(transform-user-stub-output): New variable.
	Make the .ustamp files depend on intr-rpc.awk.

	* mach/Machrules (%.ir): Cull the RPC names from the preceding
	comment rather than the definition, so we don't see any userprefix.
	(transform-user-stub-output): New variable.
	(%.ustamp: %.defs): Invoke $(transform-user-stub) inside for loop.
	Use $(transform-user-stub-output) in place of `tmp' in arg to
	move-if-change.

	* mach/Makefile [! mach-shortcuts] (user-interfaces): Also filter
	out device/device_request.

Mon Jul 11 17:50:14 1994  Brendan Kehoe  (brendan@mole.gnu.ai.mit.edu)

	* sysdeps/unix/sysv/sysv4/Makefile: Put the sys-sig.S stuff in
	here, rather than in .../sysv4/solaris2/sparc/Makefile.
	* sysdeps/unix/sysv/sysv4/solaris2/sparc/Makefile: Removed the
	sys-sig.S part.

Sun Jul 10 19:04:24 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/bind.c: Call __hurd_invoke_translator.

	* hurd/hurd.h (__hurd_invoke_translator, hurd_invoke_translator):
	Declare them.
	* hurd/Makefile (routines): Add invoke-trans.
	* hurd/invoke-trans.c (__hurd_invoke_translator): New file.
	* hurd/hurdsyms.c (hurd_invoke_translator): New alias.

	* hurd/hurdpath.c (__hurd_path_lookup_retry): New function.
	* hurd/hurdsyms.c (hurd_path_lookup_retry: New alias.
	* hurd/hurd.h (__hurd_path_lookup_retry, hurd_path_lookup_retry):
	Declare them.

	* hurd/hurd/fd.h (_hurd_fd_error_signal): Return SIGLOST for
	MIG_SERVER_DIED.

	* time/strftime.c: Make %j value 1-origin instead of 0-origin.

Sat Jul  9 02:31:23 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* gnu-stabs.h (__SYMBOL_PREFIX): New macro, based on NO_UNDERSCORES.
	Use it in all macros instead of explicit leading underscores.
	Removed all [! __STDC__] definitions.

	* sysdeps/mach/hurd/mips/trampoline.c: New file.
	* sysdeps/mach/hurd/mips/sigcontext.h: New file.
	* sysdeps/mach/hurd/mips/longjmp-ts.c: New file.
	* sysdeps/mach/hurd/mips/msging-p.c: New file.
	* sysdeps/mach/hurd/mips/longjmp-ctx.c: New file.
	* sysdeps/mach/hurd/mips/init-fault.c: New file.
	* hurd/mach/hurd/mips/__sigret.c: New file.
	* sysdeps/mach/hurd/mips/exc2signal.c: New file.
	* sysdeps/mach/mips/thread_state.h: New file.
	* sysdeps/mach/mips/machine-sp.h: New file.
	* sysdeps/mach/mips/machine-lock.h: New file.
	* sysdeps/mach/mips/sysdep.h: New file.

	* mach/Makefile (mach-syscalls.mk): Snarf 3rd arg from kernel_trap.
	($(mach-syscalls:%=__%.S): Emit kernel_trap instead of SYSCALL_TRAP.
	* mach/syscalls.awk: Print nargs-$1 = $3 for each line.
	* sysdeps/mach/sysdep.h: Include <mach/machine/syscall_sw.h>.
	* sysdeps/mach/i386/sysdep.h (ENTRY, SYSCALL_TRAP): Macros removed.

	* sysdeps/mach/i386/machine-lock.h: Use __volatile in place of
	volatile to work with -traditional.

Fri Jul  8 21:06:43 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/hurdsig.c (_hurd_internal_post_signal): For stop signals,
	clear pending SIGCONT no matter what action we choose.
	Add new value `cont' to ACT enum; use it for default SIGCONT action.
	(_hurd_internal_post_signal: sigwakeup): New local inline.

Fri Jul  8 20:26:49 1994  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/unix/sysv/sysv4/solaris2/sparc/Makefile (sysdep-CFLAGS): Set
	this to include the -mhard-quad-float option.

	* sysdeps/unix/sysv/sysv4/solaris2/sparc/sys-sig.S: New file.
	* sysdeps/unix/sysv/sysv4/solaris2/sparc/Makefile: New file.
	* sysdeps/unix/sysv/sysv4/solaris2/sparc/Dist: New file.

Fri Jul  8 13:54:54 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/hurdpath.c (__hurd_path_lookup): Don't treat leading /
	specially for FS_RETRY_NORMAL.  Handle FS_RETRY_MAGICAL; leading /
	here means use crdir.  In that case, deallocate *RESULT if nonnull.

	* sysdeps/unix/sysv/sysv4/i386/sysdep.h: Don't define _ERRNO_H if
	already defined.

	* posix/gnu/types.h (__ino_t): Make this unsigned int instead of
	unsigned long int (matters for Alpha).

	* Makeconfig (+gccopt): Variable removed.
	(+cflags): Don't use it.
	(CPPFLAGS): Append $(sysdep-CPPFLAGS).
	(CFLAGS): Append $(sysdep-CFLAGS).

	* sysdeps/mach/hurd/__ioctl.c: In MSGID calculation, skip blocks
	of 100 for request commands >= 100, to allow for the reply msgids.

Thu Jul  7 19:07:00 1994  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/unix/bsd/osf1/dirstream.h (DIR): Make __allocation
	member be int, not size_t (which is a long).

Thu Jul  7 15:21:15 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/__fopenport.c (readio, writeio, seekio, closeio): New
	functions.
	(funcsio): New const variable.
	(__fopenport): Make the new stream use that for its io functions, and
	the default room functions, and set its seen flag.

Tue Jul  5 11:32:38 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/hurd/signal.h (struct hurd_sigstate): Removed `intr_restart'.
	(HURD_EINTR_RPC): Uncommented.  Declare label
	`__do_call' so it has block instead of function scope.  Don't use
	SS->intr_restart; instead SS->intr_port being reset to
	MACH_PORT_NULL tells us to restart the call.

	* sysdeps/mach/hurd/__ioctl.c: Enable use of HURD_EINTR_RPC.
	Do ctty magic and check for EBACKGROUND to generate SIGTTOU.

	* mach/devstream.c (dealloc_ref): New function.
	(mach_open_devstream): Add a user reference to DEV, and set
	STREAM's close fn to dealloc_ref, which will release the reference.

	* hurd/fd-read.c (_hurd_fd_read): Enabled and rewrote SIGTTIN code.
	* hurd/fd-write.c (_hurd_fd_write): Enabled and rewrote SIGTTOU code.

	* hurd/hurdsyms.c: Add an alias hurd_sig_post -> _hurd_sig_post.
	* hurd/hurdkill.c (_hurd_sig_post): Renamed back from hurd_sig_post.
	* hurd/hurd.h: Declare _hurd_sig_post.

	* hurd/hurdsig.c (_S_sig_post): Add SIGTTIN and SIGTTOU cases,
	handled like SIGINT et al.

	* mach/devstream.c: Turn back on NL->CRNL translation.

	* stdio/xbug.c (main): Return instead of running off the end.

Mon Jul  4 16:57:13 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Version 1.08.3.

Sat Jul  2 00:15:37 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__ioctl.c: Account for three type fields in
	message buffer size.

	* sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler):
	Catch faults accessing user stack and return NULL.
	* hurd/hurdsig.c (_hurd_internal_post_signal): When it does, die
	with SIGILL and dump core.

	* hurd/hurdsig.c (_hurd_internal_post_signal): Use
	_hurd_msgport_thread instead of __mach_thread_self () to avoid the
	system call.  (Signals will now lose if _hurd_msgport_thread gets
	clobbered.)
	(abort_rpcs): Always do thread_abort and thread_get_state.

	* misc/getpass.c: Fix typo resulting in newline not being removed.

	* termios/sys/ttydefaults.h [TTYDEFCHARS] (ttydefchars): Cast
	_POSIX_VDISABLE to cc_t to avoid gcc warning.

Fri Jul  1 14:07:40 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

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

	* socket/sys/socket.h (AF_LOCAL): New macro.

	* sysdeps/mach/hurd/__kill.c: Fix SIGKILL loop condition.

Fri Jul  1 13:36:27 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* hurd/hurdkill.c (hurd_sig_post): New var PIDSBUF; initialize
	PIDS and NPIDS correctly; only free PIDS if the MiG stub
	changed it.

Thu Jun 30 18:47:48 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* hurd/hurdsock.c (_hurd_socket_server): Zero up to and *including*
	new[DOMAIN].

Thu Jun 30 08:12:28 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/hurdsig.c (abort_all_rpcs): Just iterate over _hurd_sigstates.

	* hurd/dtable.c (fork_child_dtable): Skip empty descriptor slots.

	* sysdeps/mach/hurd/__ioctl.c: Fix MSG.data size calculation.

Wed Jun 29 19:06:54 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/bind.c: For AF_LOCAL, create a new node in the
	filesystem, put the ifsock translator on it, and fetch the
	address port.
	* sysdeps/mach/hurd/connect.c: For AF_LOCAL, look up the socket
	file and fetch the address port using the ifsock protocol.

Tue Jun 28 16:03:15 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/Makefile (routines): Add ports-get, ports-set, and hurdmsg.
	(aux): Remove msgstub.
	* hurd/hurdports.c (get): Just call _hurd_ports_get.
	(set): Just call _hurd_ports_set.
	(getcttyid, setcttyid): New functions.
	* hurd/ports-get.c (_hurd_ports_get): New file, new function.
	* hurd/ports-set.c (_hurd_ports_set): New file, new function.
	* hurd/hurd.h: Declare _hurd_ports_get and _hurd_ports_set.
	Declare getcttyid and setcttyid.
	* hurd/__setauth.c (__setauth): Just call _hurd_setauth.
	(_hurd_setauth): New function, code moved from __setauth.
	* hurd/hurdinit.c (_hurd_setproc): New function.
	* hurd/hurdioctl.c (_hurd_setcttyid): New function.

	* locale/C-ctype_ct.c (__ctype_tolower_C, __ctype_toupper_C): Use
	integer constants instead of character constants for octal values
	so they will not be sign extended.

	* sysdeps/mach/hurd/__setitmr.c (fork_itimer): New function, on
	_hurd_fork_child_hook.

	* sysdeps/stub/sysd-stdio.c (__stdio_reopen): Fix typo in arg type.
	* sysdeps/stub/__ioctl.c: Fix type of REQUEST arg.
	* sysdeps/stub/syscall.c: Include ansidecl.h.
	* sysdeps/stub/_exit.c: Add __NORETURN to defn.

	* sysdeps/unix/sysv/sysv4/sigset.h (_EXTERN_INLINE): Define to
	`extern __inline', not empty.

	* sysdeps/mach/hurd/ttyname.c: Don't bother searching /dev.

Sat Jun 25 15:41:29 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__fork.c: Moved proc_task2pid call to just
	before proc_child.  It is a waste to do it earlier.

Sat Jun 25 13:17:39 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__fork.c: Move proc_task2pid call to after
	_hurd_ports are unlocked.  Call proc_child nearly last thing.
	Ignore errors from thread_resume.

Fri Jun 24 20:21:11 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/posix/getcwd.c: Remove empty `#define'.

Fri Jun 24 17:57:36 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__fork.c: Call proc_task2pid immediately after
	task_create.  Add comment explaining why thread_resume must be the
	last thing we do to the child.

Fri Jun 24 01:41:41 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/hurdinit.c (_hurd_proc_init): Call __proc_set_arg_locations
	in place of __proc_setprocargs (it was renamed).

	* hurd/hurd.h: Rename _hurd_sig_post to hurd_sig_post.
	* hurd/hurdkill.c: Likewise.

	* hurd/port2fd.c (_hurd_port2fd): Call __term_open_ctty instead of
	__term_become_ctty, and don't pass the message port.
	* hurd/hurdioctl.c (rectty_dtable): Likewise.
	* hurd/dtable.c (fork_child_dtable, ctty_new_pgrp): Likewise.

	* sysdeps/mach/hurd/__fork.c: Use __proc_{get,set}_arg_locations
	to propagate argv and envp locations to the child.

	* stdio/freopen.c (freopen): If STREAM->__seen is clear, pass
	__stdio_close to __stdio_reopen.

	* misc/Makefile (install-lib): Add libg.a.
	($(objpfx)libg.a): New rule; use make-dummy-lib.
	(lib): Depend on $(objpfx)libg.a

Thu Jun 23 01:14:36 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* termios/termios.h (CCEQ): New macro.

	* sysdeps/unix/sysv/irix4/__getgrps.c: Add missing __ to fn name.

	Don't compile in absolute file names for localtime and posixrules
	files if they were specified relative to $(zonedir).
	* time/Makefile (installed-localtime-file,
	installed-posixrules-file): Set these instead of
	{localtime,posixrules}-file to the absolute file names.
	($(localtime-file), $(posixrules-file)): Change targets to
	$(installed-localtime-file) and $(installed-posixrules-file).

Wed Jun 22 15:52:26 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* hurd/Makefile (sig): Add hurdkill.

Sat Jun 18 12:57:54 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* stdio/_itoa.h (_itoa): Change type of VALUE to unsigned long long.
	* stdio/_itoa.c (_itoa): Likewise.

Thu Jun 16 01:10:41 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/dirstream.h (DIR): Replace `__filepos' member
	with `__entry_ptr' and `__entry_data'.  Remove `__block_size' member.
	Replace `__offset' member with `__ptr', a char *; no need to include
	<gnu/types.h>.
	* sysdeps/mach/hurd/readdir.c: Use those, new dir_readdir protocol.
	* sysdeps/mach/hurd/opendir.c: Initialize new members.
	Don't do io_stat to set __blocksize.
	* sysdeps/mach/hurd/telldir.c: Rewritten; return DIRP->__entry_ptr.
	* sysdeps/mach/hurd/seekdir.c: Rewritten; just set DIRP->__entry_ptr
	from arg, and zero DIRP->__size so a new block will be read.

	* sysdeps/mach/hurd/getcwd.c: Use new dir_readdir protocol.

	* hurd/msgstub.c: Add stubs for dir_changed, file_changed.

	* hurd/hurdsock.c (_hurd_socket_server): Removed unused label.

	* sysdeps/mach/hurd/__getdents.c: Use new dir_readdir protocol.

	* sysdeps/mach/hurd/__access.c: Open the file with 0 flags and
	then use file_check_access to discover what we are allowed.

Tue Jun 14 14:10:03 1994  Brendan Kehoe  (brendan@zen.org)

	* sysdeps/mips/setjmp.S: Refer to `$fp', not `fp'.

Tue Jun 14 00:50:54 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__pipe.c: Set FDS[1], not FDS[2].

Mon Jun 13 06:48:48 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* sysdeps/unix/bsd/sun/sparc/sigtramp.c (trampoline): Use a
	comment instead of a pointless insn to reference %0 in final asm.

	* hurd/hurdsock.c (_hurd_socket_server): If realloc fails, don't
	fail; just don't cache the port.
	Look up the server node only if it is not in the cache.
	Translate errno only if path_lookup fails.
	(init): New function, on _hurd_preinit_hook.

	* sysdeps/mach/hurd/__symlink.c: Complement _hurd_umask before ANDing.

Sat Jun 11 12:52:28 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__fork.c: Can't insert dead name rights into
	child.

Sat Jun 11 05:19:47 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/i386/longjmp-ts.c: Set TS->uesp instead of
	TS->esp.  Set TS->eip.

	* gnu-stabs.h (bss_set_element): New macro.
	* hurd/dtable.c: Use bss_set_element instead of data_set_element
	to put _hurd_dtable_lock in the _hurd_fork_locks set.

Fri Jun 10 02:04:51 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* sysdeps/mach/hurd/__fork.c: Don't apply MACH_PORT_TYPE to result
	from __mach_port_names.  Unlock SS->lock before return.
	Check for KERN_NAME_EXISTS from mach_port_allocate_name when
	creating a receive right and possibly ignore it.

	* sysdeps/unix/sysv/sco3.2.4/Dist: Add sco_getgrp.S.

	* crypt/speeds.c: Include signal.h and stdio.h first thing.
	[! SIGVTALRM]: Define NO_ITIMER.

	* sysdeps/unix/sysv/isc3/direct.h: New file.

	* hurd/hurdinline.c: Include lock-intern.h before #define
	_EXTERN_INLINE.

	* sysdeps/mach/hurd/__fork.c (_hurd_fork_locks): Don't be const.
	(__fork): Set SS from _hurd_self_sigstate so it is never null.
	New local flag PORTS_LOCKED records when we have spin_locked all
	the _hurd_ports cells; unlock them if necessary on error.

	* hurd/hurdsig.c (_hurd_siglock): Don't initialize it.
	(_hurdsig_init): Initialize _hurd_siglock at runtime.

Wed Jun  8 12:22:27 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* hurd/hurdid.c (_hurd_check_ids): Zero P->nuids and P->ngids after
	deallocating P->uids and P->ngids.

	* hurd/hurdioctl.c (_hurd_ioctl_handler_lists): Make defn initialized.

	* sysdeps/mach/hurd/__ioctl.c: Only try to unpack if IOC_OUT is set.

	* hurd/Makefile (routines): Replace $(inlines) with hurdinline.
	(inlines): Variable and rule removed.
	(generate-inlines): Variable removed.
	* hurd/hurdinline.c: New file.

Tue Jun  7 01:58:20 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* Makerules: Add -f to all mv commands missing it.

	* hurd/Makefile (generate-inline): New canned sequence.
	(inline-%.c): Use it.

	* time/asia, time/europe, time/northamerica: New versions from ADO.

Mon Jun  6 21:36:04 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* hurd/hurdid.c (init_id): New function.

	* Makerules (+make-deps): Put first s cmd before $(sed-remove-objpfx).
	(sed-remove-objpfx): Replace occurrences at beginning of line too.


See ChangeLog.3 for earlier changes.
