* sysdeps/mach/hurd/ioctl.c (__ioctl): Move the marshalling of the
arguments into the request message buffer inside `send_rpc'
subfunction. We must repeat the marshalling when retrying the RPC
after a SIGTTOU delivery.
* hurd/ctty-input.c (_hurd_ctty_input): Use early short-circuit code
path when there is no ctty port.
* hurd/ctty-output.c (_hurd_ctty_output): Likewise.
Move sigstate check inside loop so we recheck after handling a signal.
* sysdeps/mach/hurd/ioctl.c (__ioctl): Move the marshalling of the
arguments into the request message buffer inside `send_rpc'
subfunction. We must repeat the marshalling when retrying the RPC
after a SIGTTOU delivery.
* sysdeps/mach/hurd/bits/fcntl.h
[__USE_GNU] (O_NOFOLLOW, O_DIRECTORY): New macros.
* hurd/hurdlookup.c (__hurd_file_name_lookup): If O_NOFOLLOW is set,
set O_NOTRANS as well.
(__hurd_file_name_lookup_retry): At successful end of lookup,
if O_NOFOLLOW set, io_stat the resultant port and fail with ENOENT if
it is a translated node not owned by root.
(__hurd_file_name_lookup): If O_DIRECTORY is set, put a trailing slash
on the file name passed to LOOKUP.
* sysdeps/mach/hurd/bits/fcntl.h
[__USE_GNU] (O_NOFOLLOW, O_DIRECTORY): New macros.
* hurd/hurdlookup.c (__hurd_file_name_lookup): If O_NOFOLLOW is set,
set O_NOTRANS as well.
(__hurd_file_name_lookup_retry): At successful end of lookup,
if O_NOFOLLOW set, io_stat the resultant port and fail with ENOENT if
it is a translated node not owned by root.
(__hurd_file_name_lookup): If O_DIRECTORY is set, put a trailing slash
on the file name passed to LOOKUP.
* sysdeps/mach/hurd/getsockname.c (getsockname): Set *LEN to the
actual length if the adress length is smaller than the input
value. Change type of *LEN paramater to socklen_t.
* sysdeps/mach/hurd/getpeername.c (getpeername): Likewise.
* sysdeps/mach/hurd/accept.c (accept): Likewise.
* sysdeps/mach/hurd/recvfrom.c (recvfrom): Likewise.
* sysdeps/mach/hurd/sendto.c (sendto): Change type of ADDR_LEN
paramater to socklen_t.
* sysdeps/mach/hurd/getsockname.c (getsockname): Set *LEN to the
actual length if the adress length is smaller than the input
value. Change type of *LEN paramater to socklen_t.
* sysdeps/mach/hurd/getpeername.c (getpeername): Likewise.
* sysdeps/mach/hurd/accept.c (accept): Likewise.
* sysdeps/mach/hurd/recvfrom.c (recvfrom): Likewise.
* sysdeps/mach/hurd/sendto.c (sendto): Change type of ADDR_LEN
paramater to socklen_t.
* sysdeps/mach/hurd/dl-sysdep.c (__getcwd): Fail with ENOSYS, don't
call abort. Suggested by Mark Kettenis <kettenis@phys.uva.nl>.
1999-01-23 Roland McGrath <roland@baalperazim.frob.com>
* sysdeps/unix/sysv/linux/sys/mtio.h: Moved to...
* sysdeps/gnu/sys/mtio.h: ...here.
(_IOT_mtop, _IOT_mtget, _IOT_mtpos, _IOT_mtconfiginfo): New macros.
* sysdeps/gnu/Dist: Add sys/mtio.h.
* sysdeps/unix/sysv/linux/Dist: Remove sys/mtio.h.
* sysdeps/unix/sysv/linux/Makefile [$(subdir) = misc]
(sysdep_headers): Don't add sys/mtio.h here.
* sysdeps/gnu/Makefile [$(subdir) = misc] (sysdep_headers): Add it
here instead.
Revamp Hurd ioctl typing magic to handle `struct' keyword in the
ioctl command macros, so we can use Unix-compatible headers that
make use of the _IO* macros.
* sysdeps/mach/hurd/bits/ioctls.h (_IOC_ENCODE_TYPE,
_IOC_ENCODE_TYPE_1, _IOC_ENCODE_TYPE_2, _IOTBASE_struct): New macros.
(_IOR, _IOW, _IOWR): Use them _IOC_ENCODE_TYPE(t) instead of _IOT_##t.
(_IOT_int, _IOT_char, _IOT_short): Renamed to _IOT__IOTBASE_*.
(numerous ioctl command macros): Restore `struct' keyword.
Revamp Hurd ioctl typing magic to handle `struct' keyword in the
ioctl command macros, so we can use Unix-compatible headers that
make use of the _IO* macros.
* sysdeps/mach/hurd/bits/ioctls.h (_IOC_ENCODE_TYPE,
_IOC_ENCODE_TYPE_1, _IOC_ENCODE_TYPE_2, _IOTBASE_struct): New macros.
(_IOR, _IOW, _IOWR): Use them _IOC_ENCODE_TYPE(t) instead of _IOT_##t.
(_IOT_int, _IOT_char, _IOT_short): Renamed to _IOT__IOTBASE_*.
(numerous ioctl command macros): Restore `struct' keyword.
* sysdeps/mach/hurd/bits/statfs.h (struct statfs, struct statfs64):
Remove __ from member names; rename __unused to f_spare. 1998-12-21 Mark Kettenis <kettenis@phys.uva.nl>
Implement fstatvfs and statfs on the Hurd.
* sysdeps/mach/hurd/bits/statfs.h: New file.
* sysdeps/mach/hurd/bits/statvfs.h: New file.
* sysdeps/mach/hurd/fstatvfs.c: New file.
* sysdeps/mach/hurd/statvfs.c: New file.
Reverse the change of 1998-04-22. Providing a struct dirent with
different members when __USE_FILE_OFFSET64 is defined is asking
for trouble. Instead add the necessary LFS magic to the 4.4BSD
header.
* sysdeps/unix/bsd/bsd4.4/bits/dirent.h: Add LFS definitions.
* sysdeps/mach/hurd/bits/dirent.h: Removed.
* sysdeps/mach/hurd/readdir64.c: Removed.
* sysdeps/mach/hurd/readdir64_r.c: Removed.
* sysdeps/generic/bits/mman.h [__USE_MISC] (MAP_ANONYMOUS): Define as
alias for MAP_ANON.
* stdio/stdio.h (sys_errlist, sys_nerr, _sys_errlist, _sys_nerr):
Remove decls. They don't exist at all on the Hurd.
* sunrpc/svc_unix.c, sunrpc/clnt_unix.c: Avoid using `struct cmsghdr'
and `struct ucred' #ifndef SCM_CREDENTIALS.
* sunrpc/publickey.c (getsecretkey): Use `&errno' instead of
`__errno_location ()'; means the same, works for Hurd.
* sysdeps/mach/hurd/Makefile (subdirs): Don't elide sunrpc.
* sysdeps/mach/hurd/bits/local_lim.h (SYMLOOP_MAX): Define this #ifdef
__USE_BSD as well as #ifdef __USE_GNU, so MAXSYMLINKS can use it.
Reported by UCHIYAMA Yasushi <uch@nop.or.jp>
1998-12-16 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Don't change
read-only struct termios_p* but change k_termios member directly.
* sysdeps/mach/hurd/bits/local_lim.h (SYMLOOP_MAX): Define this #ifdef
__USE_BSD as well as #ifdef __USE_GNU, so MAXSYMLINKS can use it.
Reported by UCHIYAMA Yasushi <uch@nop.or.jp>
* sysdeps/mach/hurd/pselect.c: New file.
* sysdeps/mach/hurd/poll.c: New file.
* hurd/Makefile (routines): Add hurdselect.
* hurd/hurdselect.c: New file.
(_hurd_select): New function, guts taken from ...
* sysdeps/mach/hurd/select.c (__select): ... here.
Now work by just calling _hurd_select.
* hurd/hurd/fd.h: Declare _hurd_select.
1998-12-05 Roland McGrath <roland@baalperazim.frob.com>
* time/strptime.c: Fix unterminated comment in last change.
* argp/argp.h: Add __restrict.
Provide backwards binary compatibility for the Hurd.
* hurd/geteuids.c [PIC && DO_VERSIONING]: Make __getuids a weak
alias for geteuids.
* hurd/Versions [GLIBC_2.0]: Add __getuids,
__hurd_file_name_lookup and _hurd_umask.
[GLIBC_2.1]: Add _hurd_proc_init.
* hurd/Makefile [versioning] (routines): Add compat-20.
(shared-only-routines): Likewise.
* hurd/hurdinit.c (_hurd_new_proc_init): Renamed from
_hurd_proc_init. Use it as the default _hurd_proc_init version
for GLIBC_2.1.
* hurd/compat-20.c: New file.
* mach/Versions [GLIBC_2.0]: Add __vm_allocate.
* mach/Versions [libc, GLIBC_2.0]: Add __spin_lock,
__spin_lock_init, __mutex_lock, __mutex_trylock,
__mutex_unlock.
Remove get_priviliged_ports. Moved to hurd/Versions.
* hurd/Versions [libc, GLIBC_2.0]: Add _end. This makes the Hurd
brk implementation see the end of the data segment of the program
instead of the shared library.
Add __hurd_errno_location. This inline function is used in user
programs.
Add _hurd_critical_section_lock, _hurd_critical_section_unlock,
_hurd_fd_get, _hurd_port_free, _hurd_port_get,
_hurd_port_locked_get. These inline functions are used by macros
used in mail.local in the Hurd distribution.
Add get_privileged_ports. Moved here from mach/Versions.
Remove __hurd_file_name_lookup, __hurd_file_name_lookup_retry,
__hurd_file_name_split, __hurd_file_name_path_lookup. These are
not used outside libc.
1998-11-30 Mark Kettenis <kettenis@phys.uva.nl>
* hurd/hurdstartup.c: Really include set-hooks.h with <> instead
of "".
__hurd_threadvar_max. Add comment explaining why we define
__hurd_threadvar_stack_offset and __hurd_threadvar_stack_mask here.
1998-07-29 Mark Kettenis <kettenis@phys.uva.nl>
* sysdeps/mach/hurd/dl-sysdep.c (__hurd_sigthread_stack_base,
__hurd_sigthread_stack_end, __hurd_sigthread_variables): Define to
prevent inclusion of Hurd signal handling code.
(__libc_write): New function.
(_dl_sysdep_output): Removed. The implementation in
`elf/dl-misc.c' now also works for the Hurd.
1998-09-12 Mark Kettenis <kettenis@phys.uva.nl>
* hurd/hurdstartup.c: Do not include hurdmalloc.h; _hurd_startup
does not use any of malloc/realloc/free anymore. Include
set-hooks.h with <> instead of "".
* sunrpc/svc_unix.c (__msgread): Move ON local var inside block
within #ifdef SO_PASSCRED. Avoids unused var when no SO_PASSCRED.
* sunrpc/clnt_unix.c (__msgread): Likewise.
* sunrpc/svc_unix.c (__msgread): Move ON local var inside block
within #ifdef SO_PASSCRED. Avoids unused var when no SO_PASSCRED.
* sunrpc/clnt_unix.c (__msgread): Likewise.
* hurd/setuids.c: Renamed to ...
* hurd/seteuids.c: this.
(setuids): Renamed to seteuids.
* hurd/getuids.c: Renamed to ...
* hurd/geteuids.c: this.
(__getuids): Renamed to geteuids, no aliases.
* hurd/hurd.h (geteuids, seteuids): Declare them.
* hurd/Versions: Replace getuids; __getuids with geteuids; seteuids.
* hurd/Makefile (routines): Updated.
1998-11-28 23:23 -0500 Zack Weinberg <zack@rabi.phys.columbia.edu>
* sysdeps/unix/sysv/linux/configure.in: Test for symlinks in
$prefix/include that may be clobbered on installation.
* sysdeps/mach/hurd/i386/init-first.c (init): Restored as inline fn.
Use constant _HURD_THREADVARS_MAX for temporary array size.
* Makeconfig ($(common-objpfx)sysd-sorted): Use @ instead of / as sed
s separator, since $(..) might contain a /.
* sysdeps/mach/hurd/i386/init-first.c (init): Provide temporary storage
for the per-thread variables of the main user thread to make it
possible to use malloc as soon as _hurd_preinit_hook has been run.
For cthreads, copy values to new stack from there.
For non-cthreads, malloc threadvar array here and copy from temp space.
(init1): No longer initialize threadvars here.
(doinit1): Made static void at top level.
(init): Folded into [PIC] _init or [!PIC] doinit1, since GCC cannot
inline a function that uses dynamic auto arrays.
* sysdeps/mach/hurd/i386/init-first.c (init): Provide temporary storage
for the per-thread variables of the main user thread to make it
possible to use malloc as soon as _hurd_preinit_hook has been run.
For cthreads, copy values to new stack from there.
For non-cthreads, malloc threadvar array here and copy from temp space.
(init1): No longer initialize threadvars here.
(doinit1): Made static void at top level.
(init): Folded into [PIC] _init or [!PIC] doinit1, since GCC cannot
inline a function that uses dynamic auto arrays.
* hurd/hurdsig.c (_hurdsig_init): Take new args, INTARRAY and
INTARRAYSIZE. Initialize main thread's sigstate from INIT_SIG* ints.
* hurd/hurd/signal.h: Update _hurdsig_init decl.
* hurd/hurdinit.c (_hurd_proc_init): Take new args, INTARRAY and
INTARRAYSIZE, pass them down to _hurdsig_init.
* hurd/hurd.h: Update _hurd_proc_init decl.
* hurd/hurdsig.c (_hurdsig_init): Take new args, INTARRAY and
INTARRAYSIZE. Initialize main thread's sigstate from INIT_SIG* ints.
* hurd/hurd/signal.h: Update _hurdsig_init decl.
* hurd/hurdinit.c (_hurd_proc_init): Take new args, INTARRAY and
INTARRAYSIZE, pass them down to _hurdsig_init.
* hurd/hurd.h: Update _hurd_proc_init decl.
* sysdeps/unix/sysv/linux/bits/sem.h,
sysdeps/unix/sysv/linux/bits/ipc.h,
sysdeps/unix/sysv/linux/bits/shm.h,
sysdeps/unix/sysv/linux/bits/msq.h: Moved to ...
* sysdeps/gnu/bits/sem.h, sysdeps/gnu/bits/ipc.h,
sysdeps/gnu/bits/shm.h, sysdeps/gnu/bits/msq.h: ... here,
so the same bits will be used for the Hurd.
* sysdeps/unix/sysv/linux/bits/sem.h,
sysdeps/unix/sysv/linux/bits/ipc.h,
sysdeps/unix/sysv/linux/bits/shm.h,
sysdeps/unix/sysv/linux/bits/msq.h: Moved to ...
* sysdeps/gnu/bits/sem.h, sysdeps/gnu/bits/ipc.h,
sysdeps/gnu/bits/shm.h, sysdeps/gnu/bits/msq.h: ... here,
so the same bits will be used for the Hurd.
* mach/Versions: Add evc_wait, mach_error, mach_error_string,
mach_error_type, mach_msg_destroy, mig_deallocate_reply_port.
Remove __mach_host_self, __mach_reply_port, __mach_setup_thread,
__mach_port_allocate, __mach_port_allocate_name,
__mach_port_deallocate, __mach_port_insert_right, __mutex_init,
__mutex_trylock, __mutex_lock, __mutex_unlock, __swtch, __switch,
__task_create, __task_suspend, __task_set_special_port,
__task_terminate, __thread_depress_abort, __thread_switch,
__vm_allocate, __vm_deallocate, __vm_map. These functions are not
used outside libc.
* sysdeps/mach/hurd/Versions: New file.
[libc, GLIBC_2.0]: Add _cthread_exit_routine and
_cthread_init_routine. These are set by the Hurd cthreads library.
Add __getcwd, __mmap. If we don't add these, the weak definitions in
the dynamic linker will not be replaced by the corresponding shared
library routines once they are loaded.
1998-10-21 Mark Kettenis <kettenis@phys.uva.nl>
* sysdeps/mach/hurd/i386/init-first.c: Only define
__libc_enable_secure if PIC is not defined.
1998-10-25 Roland McGrath <roland@baalperazim.frob.com>
* argp/Versions: Add _argp_unlock_xxx. Lock-savvy functions call this
to recurse into argp.
* sysdeps/mach/hurd/dl-sysdep.c (__getcwd): New weak function.
* mach/Versions, hurd/Versions: Add numerous symbols.
Remove libmachuser and libhurduser sections, punt
versioning for those libraries for now.
* misc/Versions: Add reboot here; it exists on all platforms.
* sysdeps/unix/sysv/linux/Versions: Remove reboot here.
* sysdeps/mach/hurd/opendir.c (__opendir): Return ENOENT for "".
(__opendir): Add trailing slash to name for open, for ENOTDIR check.
size_t is defined. Some reordering of definitions to make
* nscd/nscd-client.h: New file, broken out of "nscd.h".
* nscd/nscd.h: Move defns needed by clients to "nscd-client.h",
and #include that.
* nscd/Makefile (distribute): Add nscd-client.h.
* nscd/nscd_getgr_r.c, nscd/nscd_gethst_r.c, nscd/nscd_getpw_r.c:
Include "nscd-client.h" instead of "nscd.h"
[submitted 1998-08-06]
* mach/Machrules: Create target directory and force re-evaluation
of Makefile to prevent `make' from optimizing away most of the
implicit rules and `vpath' directives.
* hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): If _hurd_msgport_thread
is null, short-circuit to __mach_msg.
* sysdeps/mach/hurd/i386/init-first.c (init1): Don't call
__libc_init_secure. Instead set __libc_enable_secure here from
the exec flags.
(__libc_enable_secure): New variable it.
* sysdeps/mach/hurd/enbl-secure.c: New file, empty placeholder module.
* sysdeps/mach/hurd/i386/init-first.c (init1): Don't call
__libc_init_secure. Instead set __libc_enable_secure here from
the exec flags.
(__libc_enable_secure): New variable it.
* sysdeps/mach/hurd/enbl-secure.c: New file, empty placeholder module.
Don't add netinet/udp.h, netinet/ip_icmp.h here.
* sysdeps/gnu/Makefile: Do it here instead.
* sysdeps/unix/sysv/linux/Dist: Move those files from here ...
* sysdeps/gnu/Dist: ... to here.
1998-09-05 Roland McGrath <roland@baalperazim.frob.com>
* sysdeps/unix/sysv/linux/netinet/ip_icmp.h,
sysdeps/unix/sysv/linux/netinet/tcp.h,
sysdeps/unix/sysv/linux/netinet/udp.h: Moved to sysdeps/gnu/netinet.
* mach/Makefile: Use -include for mach-syscalls.mk to silence warning.
* sysdeps/mach/hurd/sysd-stdio.c: Declare fns
__stdio_{read,write,seek,close,fileno} using __io_*_fn types.
* sysdeps/generic/sysd-stdio.c: Likewise.
* elf/ldd.bash.in (TEXTDOMAIN, TEXTDOMAINDIR): Surround setting these
with magic comments ###BASH-ONLY and ###END-BASH-ONLY.
* elf/Makefile ($(objpfx)ldd): Generate always from ldd.bash.in.
(common-ldd-rewrite): New variable, old contents of $(sh-ldd-rewrite).
(sh-ldd-rewrite): Use that, add cmds to remove code surrounded by
those magic comments, and to use /bin/sh for @BASH@.
(bash-ldd-rewrite): Use $(common-ldd-rewrite).
* elf/ldd.sh.in: File removed.