glibc/sysdeps/mach/hurd/ptrace.c
Ulrich Drepper 478b92f03a Update.
1997-06-23 23:39  Ulrich Drepper  <drepper@cygnus.com>

	* string/Makefile (headers): Change bytesex.h to bits/endian.h.
	* sysdeps/generic/Makefile: Don't try to generate bytesex.h, but
	bits/endian.h.

	* math/libm-test.c (lgamma_test): Make sure the test of the ilogb
	function will not fail because of exceptions.

	* math/math.h: Add warning about use of M_* constants.
	Pretty print.

1997-06-23 11:36  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* hurd/path-lookup.c: Change GPL to LGPL, update and reformat
	copyright, remove trailing white spaces and send through unexpand.
	* inet/netinet/icmp6.h: Likewise.
	* inet/netinet/in.h: Likewise.
	* inet/netinet/ip6.h: Likewise.
	* locale/programs/xmalloc.c: Likewise.
	* locale/programs/xstrdup.c: Likewise.
	* sysdeps/generic/make_siglist.c: Likewise.
	* sysdeps/generic/morecore.c: Likewise.
	* sysdeps/generic/sbrk.c: Likewise.
	* sysdeps/generic/signame.c: Likewise.
	* sysdeps/generic/signame.h: Likewise.
	* sysdeps/generic/netinet/inbits.h: Likewise.
	* sysdeps/posix/getpagesize.c: Likewise.
	* sysdeps/unix/errnos-tmpl.c: Likewise.
	* sysdeps/unix/getpagesize.c: Likewise.
	* sysdeps/unix/make_errlist.c: Likewise.
	* sysdeps/unix/mkfifo.c: Likewise.
	* sysdeps/unix/nlist.c: Likewise.
	* sysdeps/unix/start.c: Likewise.
	* sysdeps/unix/sysv/linux/netinet/inbits.h: Likewise.

	* munch-tmpl.c: Update and reformat copyright, remove trailing
	white spaces and send through unexpand.
	* libio/clearerr_u.c: Likewise.
	* libio/memstream.c: Likewise.
	* libio/putc_u.c: Likewise.
	* libio/putchar_u.c: Likewise.
	* stdio-common/scanf.c: Likewise.
	* stdlib/longlong.h: Likewise.
	* sysdeps/alpha/__longjmp.c: Likewise.
	* sysdeps/alpha/divrem.h: Likewise.
	* sysdeps/alpha/machine-gmon.h: Likewise.
	* sysdeps/alpha/setjmp_aux.c: Likewise.
	* sysdeps/alpha/bits/setjmp.h: Likewise.
	* sysdeps/arm/fpu_control.h: Likewise.
	* sysdeps/generic/_strerror.c: Likewise.
	* sysdeps/generic/det_endian.c: Likewise.
	* sysdeps/generic/fdatasync.c: Likewise.
	* sysdeps/generic/fpu_control.c: Likewise.
	* sysdeps/generic/ftime.c: Likewise.
	* sysdeps/generic/getdomain.c: Likewise.
	* sysdeps/generic/group_member.c: Likewise.
	* sysdeps/generic/ldiv.c: Likewise.
	* sysdeps/generic/lldiv.c: Likewise.
	* sysdeps/generic/lxstat.c: Likewise.
	* sysdeps/generic/memcmp.c: Likewise.
	* sysdeps/generic/memmem.c: Likewise.
	* sysdeps/generic/mig-reply.c: Likewise.
	* sysdeps/generic/pagecopy.h: Likewise.
	* sysdeps/generic/profil-counter.h: Likewise.
	* sysdeps/generic/pselect.c: Likewise.
	* sysdeps/generic/setfpucw.c: Likewise.
	* sysdeps/generic/stpcpy.c: Likewise.
	* sysdeps/generic/uname.c: Likewise.
	* sysdeps/generic/varargs.h: Likewise.
	* sysdeps/generic/vlimit.c: Likewise.
	* sysdeps/generic/bits/sigaction.h: Likewise.
	* sysdeps/generic/bits/ustat.h: Likewise.
	* sysdeps/generic/netinet/if_ether.h: Likewise.
	* sysdeps/generic/sys/swap.h: Likewise.
	* sysdeps/generic/sys/sysinfo.h: Likewise.
	* sysdeps/i386/init-first.c: Likewise.
	* sysdeps/i386/ldbl2mpn.c: Likewise.
	* sysdeps/i386/memcopy.h: Likewise.
	* sysdeps/i386/i586/memcopy.h: Likewise.
	* sysdeps/i860/memcopy.h: Likewise.
	* sysdeps/m68k/__longjmp.c: Likewise.
	* sysdeps/m68k/fpu_control.h: Likewise.
	* sysdeps/m68k/memcopy.h: Likewise.
	* sysdeps/m68k/s_isinfl.c: Likewise.
	* sysdeps/m68k/s_isnanl.c: Likewise.
	* sysdeps/m68k/setjmp.c: Likewise.
	* sysdeps/mach/_strerror.c: Likewise.
	* sysdeps/mach/getsysstats.c: Likewise.
	* sysdeps/mach/mprotect.c: Likewise.
	* sysdeps/mach/munmap.c: Likewise.
	* sysdeps/mach/pagecopy.h: Likewise.
	* sysdeps/mach/start.c: Likewise.
	* sysdeps/mach/sysdep.h: Likewise.
	* sysdeps/mach/alpha/machine-lock.h: Likewise.
	* sysdeps/mach/alpha/machine-sp.h: Likewise.
	* sysdeps/mach/alpha/sysdep.h: Likewise.
	* sysdeps/mach/alpha/thread_state.h: Likewise.
	* sysdeps/mach/hppa/machine-lock.h: Likewise.
	* sysdeps/mach/hurd/access.c: Likewise.
	* sysdeps/mach/hurd/closedir.c: Likewise.
	* sysdeps/mach/hurd/dirstream.h: Likewise.
	* sysdeps/mach/hurd/dl-cache.c: Likewise.
	* sysdeps/mach/hurd/euidaccess.c: Likewise.
	* sysdeps/mach/hurd/fdatasync.c: Likewise.
	* sysdeps/mach/hurd/fexecve.c: Likewise.
	* sysdeps/mach/hurd/fork.c: Likewise.
	* sysdeps/mach/hurd/fpathconf.c: Likewise.
	* sysdeps/mach/hurd/fstatfs.c: Likewise.
	* sysdeps/mach/hurd/fxstat.c: Likewise.
	* sysdeps/mach/hurd/getcwd.c: Likewise.
	* sysdeps/mach/hurd/getpriority.c: Likewise.
	* sysdeps/mach/hurd/getrlimit.c: Likewise.
	* sysdeps/mach/hurd/getsid.c: Likewise.
	* sysdeps/mach/hurd/group_member.c: Likewise.
	* sysdeps/mach/hurd/kill.c: Likewise.
	* sysdeps/mach/hurd/lchown.c: Likewise.
	* sysdeps/mach/hurd/lxstat.c: Likewise.
	* sysdeps/mach/hurd/mig-reply.c: Likewise.
	* sysdeps/mach/hurd/mmap.c: Likewise.
	* sysdeps/mach/hurd/opendir.c: Likewise.
	* sysdeps/mach/hurd/pathconf.c: Likewise.
	* sysdeps/mach/hurd/profil.c: Likewise.
	* sysdeps/mach/hurd/ptrace.c: Likewise.
	* sysdeps/mach/hurd/readdir.c: Likewise.
	* sysdeps/mach/hurd/readdir_r.c: Likewise.
	* sysdeps/mach/hurd/send.c: Likewise.
	* sysdeps/mach/hurd/sendto.c: Likewise.
	* sysdeps/mach/hurd/setpriority.c: Likewise.
	* sysdeps/mach/hurd/statfs.c: Likewise.
	* sysdeps/mach/hurd/ttyname.c: Likewise.
	* sysdeps/mach/hurd/uname.c: Likewise.
	* sysdeps/mach/hurd/xstat.c: Likewise.
	* sysdeps/mach/hurd/alpha/exc2signal.c: Likewise.
	* sysdeps/mach/hurd/alpha/longjmp-ts.c: Likewise.
	* sysdeps/mach/hurd/alpha/sigreturn.c: Likewise.
	* sysdeps/mach/hurd/alpha/trampoline.c: Likewise.
	* sysdeps/mach/hurd/alpha/bits/sigcontext.h: Likewise.
	* sysdeps/mach/hurd/hppa/trampoline.c: Likewise.
	* sysdeps/mach/hurd/hppa/bits/sigcontext.h: Likewise.
	* sysdeps/mach/hurd/i386/exc2signal.c: Likewise.
	* sysdeps/mach/hurd/i386/intr-msg.h: Likewise.
	* sysdeps/mach/hurd/i386/longjmp-ts.c: Likewise.
	* sysdeps/mach/hurd/i386/sigreturn.c: Likewise.
	* sysdeps/mach/hurd/i386/trampoline.c: Likewise.
	* sysdeps/mach/hurd/i386/bits/sigcontext.h: Likewise.
	* sysdeps/mach/hurd/mips/bits/sigcontext.h: Likewise.
	* sysdeps/mach/hurd/sys/param.h: Likewise.
	* sysdeps/mach/i386/machine-lock.h: Likewise.
	* sysdeps/mach/i386/machine-sp.h: Likewise.
	* sysdeps/mach/i386/sysdep.h: Likewise.
	* sysdeps/mach/i386/thread_state.h: Likewise.
	* sysdeps/posix/dup2.c: Likewise.
	* sysdeps/posix/flock.c: Likewise.
	* sysdeps/posix/getdtsz.c: Likewise.
	* sysdeps/posix/gettimeofday.c: Likewise.
	* sysdeps/posix/isatty.c: Likewise.
	* sysdeps/posix/killpg.c: Likewise.
	* sysdeps/posix/mk-stdiolim.c: Likewise.
	* sysdeps/posix/profil.c: Likewise.
	* sysdeps/posix/remove.c: Likewise.
	* sysdeps/posix/rename.c: Likewise.
	* sysdeps/posix/sigsuspend.c: Likewise.
	* sysdeps/posix/tempname.c: Likewise.
	* sysdeps/posix/truncate.c: Likewise.
	* sysdeps/posix/utimes.c: Likewise.
	* sysdeps/posix/wait.c: Likewise.
	* sysdeps/posix/wait3.c: Likewise.
	* sysdeps/rs6000/memcopy.h: Likewise.
	* sysdeps/sparc/memcopy.h: Likewise.
	* sysdeps/standalone/close.c: Likewise.
	* sysdeps/standalone/dirstream.h: Likewise.
	* sysdeps/standalone/filedesc.h: Likewise.
	* sysdeps/standalone/open.c: Likewise.
	* sysdeps/standalone/read.c: Likewise.
	* sysdeps/standalone/standalone.h: Likewise.
	* sysdeps/standalone/write.c: Likewise.
	* sysdeps/standalone/bits/stdio_lim.h: Likewise.
	* sysdeps/standalone/i386/i386.h: Likewise.
	* sysdeps/standalone/m68k/m68020/m68020.h: Likewise.
	* sysdeps/stub/__longjmp.c: Likewise.
	* sysdeps/stub/accept.c: Likewise.
	* sysdeps/stub/access.c: Likewise.
	* sysdeps/stub/acct.c: Likewise.
	* sysdeps/stub/adjtime.c: Likewise.
	* sysdeps/stub/alarm.c: Likewise.
	* sysdeps/stub/bind.c: Likewise.
	* sysdeps/stub/brk.c: Likewise.
	* sysdeps/stub/bsd-_setjmp.c: Likewise.
	* sysdeps/stub/bsd-setjmp.c: Likewise.
	* sysdeps/stub/chdir.c: Likewise.
	* sysdeps/stub/chflags.c: Likewise.
	* sysdeps/stub/chmod.c: Likewise.
	* sysdeps/stub/chown.c: Likewise.
	* sysdeps/stub/chroot.c: Likewise.
	* sysdeps/stub/clock.c: Likewise.
	* sysdeps/stub/close.c: Likewise.
	* sysdeps/stub/closedir.c: Likewise.
	* sysdeps/stub/connect.c: Likewise.
	* sysdeps/stub/ctermid.c: Likewise.
	* sysdeps/stub/cuserid.c: Likewise.
	* sysdeps/stub/dbl2mpn.c: Likewise.
	* sysdeps/stub/dirstream.h: Likewise.
	* sysdeps/stub/dup.c: Likewise.
	* sysdeps/stub/dup2.c: Likewise.
	* sysdeps/stub/exc2signal.c: Likewise.
	* sysdeps/stub/execve.c: Likewise.
	* sysdeps/stub/fchflags.c: Likewise.
	* sysdeps/stub/fchown.c: Likewise.
	* sysdeps/stub/fcntl.c: Likewise.
	* sysdeps/stub/fdopen.c: Likewise.
	* sysdeps/stub/fexecve.c: Likewise.
	* sysdeps/stub/flock.c: Likewise.
	* sysdeps/stub/fork.c: Likewise.
	* sysdeps/stub/fpathconf.c: Likewise.
	* sysdeps/stub/fpu_control.h: Likewise.
	* sysdeps/stub/fstatfs.c: Likewise.
	* sysdeps/stub/fsync.c: Likewise.
	* sysdeps/stub/ftruncate.c: Likewise.
	* sysdeps/stub/fxstat.c: Likewise.
	* sysdeps/stub/getcwd.c: Likewise.
	* sysdeps/stub/getdomain.c: Likewise.
	* sysdeps/stub/getdtsz.c: Likewise.
	* sysdeps/stub/getegid.c: Likewise.
	* sysdeps/stub/geteuid.c: Likewise.
	* sysdeps/stub/getgid.c: Likewise.
	* sysdeps/stub/getgroups.c: Likewise.
	* sysdeps/stub/gethostid.c: Likewise.
	* sysdeps/stub/gethostname.c: Likewise.
	* sysdeps/stub/getitimer.c: Likewise.
	* sysdeps/stub/getpeername.c: Likewise.
	* sysdeps/stub/getpgid.c: Likewise.
	* sysdeps/stub/getpid.c: Likewise.
	* sysdeps/stub/getppid.c: Likewise.
	* sysdeps/stub/getpriority.c: Likewise.
	* sysdeps/stub/getrlimit.c: Likewise.
	* sysdeps/stub/getrusage.c: Likewise.
	* sysdeps/stub/getsid.c: Likewise.
	* sysdeps/stub/getsockname.c: Likewise.
	* sysdeps/stub/getsockopt.c: Likewise.
	* sysdeps/stub/getsysstats.c: Likewise.
	* sysdeps/stub/gettimeofday.c: Likewise.
	* sysdeps/stub/getuid.c: Likewise.
	* sysdeps/stub/gtty.c: Likewise.
	* sysdeps/stub/if_index.c: Likewise.
	* sysdeps/stub/init-posix.c: Likewise.
	* sysdeps/stub/ioctl.c: Likewise.
	* sysdeps/stub/isatty.c: Likewise.
	* sysdeps/stub/isfdtype.c: Likewise.
	* sysdeps/stub/jmp-unwind.c: Likewise.
	* sysdeps/stub/kill.c: Likewise.
	* sysdeps/stub/killpg.c: Likewise.
	* sysdeps/stub/ldbl2mpn.c: Likewise.
	* sysdeps/stub/link.c: Likewise.
	* sysdeps/stub/listen.c: Likewise.
	* sysdeps/stub/lockfile.c: Likewise.
	* sysdeps/stub/longjmp-ts.c: Likewise.
	* sysdeps/stub/lseek.c: Likewise.
	* sysdeps/stub/lxstat.c: Likewise.
	* sysdeps/stub/machine-lock.h: Likewise.
	* sysdeps/stub/machine-sp.h: Likewise.
	* sysdeps/stub/madvise.c: Likewise.
	* sysdeps/stub/mkdir.c: Likewise.
	* sysdeps/stub/mkfifo.c: Likewise.
	* sysdeps/stub/mmap.c: Likewise.
	* sysdeps/stub/morecore.c: Likewise.
	* sysdeps/stub/mpn2dbl.c: Likewise.
	* sysdeps/stub/mpn2flt.c: Likewise.
	* sysdeps/stub/mpn2ldbl.c: Likewise.
	* sysdeps/stub/mprotect.c: Likewise.
	* sysdeps/stub/msgctl.c: Likewise.
	* sysdeps/stub/msgget.c: Likewise.
	* sysdeps/stub/msgrcv.c: Likewise.
	* sysdeps/stub/msgsnd.c: Likewise.
	* sysdeps/stub/munmap.c: Likewise.
	* sysdeps/stub/nanosleep.c: Likewise.
	* sysdeps/stub/nice.c: Likewise.
	* sysdeps/stub/nlist.c: Likewise.
	* sysdeps/stub/open.c: Likewise.
	* sysdeps/stub/opendir.c: Likewise.
	* sysdeps/stub/pathconf.c: Likewise.
	* sysdeps/stub/pause.c: Likewise.
	* sysdeps/stub/pipestream.c: Likewise.
	* sysdeps/stub/poll.c: Likewise.
	* sysdeps/stub/profil.c: Likewise.
	* sysdeps/stub/ptrace.c: Likewise.
	* sysdeps/stub/putenv.c: Likewise.
	* sysdeps/stub/read.c: Likewise.
	* sysdeps/stub/readdir.c: Likewise.
	* sysdeps/stub/readdir_r.c: Likewise.
	* sysdeps/stub/readlink.c: Likewise.
	* sysdeps/stub/reboot.c: Likewise.
	* sysdeps/stub/recv.c: Likewise.
	* sysdeps/stub/recvfrom.c: Likewise.
	* sysdeps/stub/recvmsg.c: Likewise.
	* sysdeps/stub/remove.c: Likewise.
	* sysdeps/stub/rename.c: Likewise.
	* sysdeps/stub/revoke.c: Likewise.
	* sysdeps/stub/rewinddir.c: Likewise.
	* sysdeps/stub/rmdir.c: Likewise.
	* sysdeps/stub/sbrk.c: Likewise.
	* sysdeps/stub/sched_getp.c: Likewise.
	* sysdeps/stub/sched_gets.c: Likewise.
	* sysdeps/stub/sched_primax.c: Likewise.
	* sysdeps/stub/sched_primin.c: Likewise.
	* sysdeps/stub/sched_rr_gi.c: Likewise.
	* sysdeps/stub/sched_setp.c: Likewise.
	* sysdeps/stub/sched_sets.c: Likewise.
	* sysdeps/stub/sched_yield.c: Likewise.
	* sysdeps/stub/seekdir.c: Likewise.
	* sysdeps/stub/select.c: Likewise.
	* sysdeps/stub/semctl.c: Likewise.
	* sysdeps/stub/semget.c: Likewise.
	* sysdeps/stub/semop.c: Likewise.
	* sysdeps/stub/send.c: Likewise.
	* sysdeps/stub/sendmsg.c: Likewise.
	* sysdeps/stub/sendto.c: Likewise.
	* sysdeps/stub/setdomain.c: Likewise.
	* sysdeps/stub/setegid.c: Likewise.
	* sysdeps/stub/setenv.c: Likewise.
	* sysdeps/stub/seteuid.c: Likewise.
	* sysdeps/stub/setgid.c: Likewise.
	* sysdeps/stub/setgroups.c: Likewise.
	* sysdeps/stub/sethostid.c: Likewise.
	* sysdeps/stub/sethostname.c: Likewise.
	* sysdeps/stub/setjmp.c: Likewise.
	* sysdeps/stub/setlogin.c: Likewise.
	* sysdeps/stub/setpgid.c: Likewise.
	* sysdeps/stub/setpriority.c: Likewise.
	* sysdeps/stub/setregid.c: Likewise.
	* sysdeps/stub/setreuid.c: Likewise.
	* sysdeps/stub/setrlimit.c: Likewise.
	* sysdeps/stub/setsid.c: Likewise.
	* sysdeps/stub/setsockopt.c: Likewise.
	* sysdeps/stub/settimeofday.c: Likewise.
	* sysdeps/stub/setuid.c: Likewise.
	* sysdeps/stub/shmctl.c: Likewise.
	* sysdeps/stub/shmget.c: Likewise.
	* sysdeps/stub/shutdown.c: Likewise.
	* sysdeps/stub/sigaction.c: Likewise.
	* sysdeps/stub/sigaltstack.c: Likewise.
	* sysdeps/stub/sigblock.c: Likewise.
	* sysdeps/stub/sigintr.c: Likewise.
	* sysdeps/stub/sigpending.c: Likewise.
	* sysdeps/stub/sigprocmask.c: Likewise.
	* sysdeps/stub/sigreturn.c: Likewise.
	* sysdeps/stub/sigsetmask.c: Likewise.
	* sysdeps/stub/sigstack.c: Likewise.
	* sysdeps/stub/sigsuspend.c: Likewise.
	* sysdeps/stub/sigvec.c: Likewise.
	* sysdeps/stub/socket.c: Likewise.
	* sysdeps/stub/socketpair.c: Likewise.
	* sysdeps/stub/sstk.c: Likewise.
	* sysdeps/stub/statfs.c: Likewise.
	* sysdeps/stub/stdio_init.c: Likewise.
	* sysdeps/stub/stime.c: Likewise.
	* sysdeps/stub/stty.c: Likewise.
	* sysdeps/stub/swapoff.c: Likewise.
	* sysdeps/stub/swapon.c: Likewise.
	* sysdeps/stub/symlink.c: Likewise.
	* sysdeps/stub/sync.c: Likewise.
	* sysdeps/stub/syscall.c: Likewise.
	* sysdeps/stub/sysd-stdio.c: Likewise.
	* sysdeps/stub/system.c: Likewise.
	* sysdeps/stub/tcdrain.c: Likewise.
	* sysdeps/stub/tcflow.c: Likewise.
	* sysdeps/stub/tcflush.c: Likewise.
	* sysdeps/stub/tcgetattr.c: Likewise.
	* sysdeps/stub/tcgetpgrp.c: Likewise.
	* sysdeps/stub/tcsendbrk.c: Likewise.
	* sysdeps/stub/tcsetpgrp.c: Likewise.
	* sysdeps/stub/telldir.c: Likewise.
	* sysdeps/stub/thread_state.h: Likewise.
	* sysdeps/stub/time.c: Likewise.
	* sysdeps/stub/times.c: Likewise.
	* sysdeps/stub/trampoline.c: Likewise.
	* sysdeps/stub/truncate.c: Likewise.
	* sysdeps/stub/ttyname.c: Likewise.
	* sysdeps/stub/ttyname_r.c: Likewise.
	* sysdeps/stub/ualarm.c: Likewise.
	* sysdeps/stub/ulimit.c: Likewise.
	* sysdeps/stub/umask.c: Likewise.
	* sysdeps/stub/unlink.c: Likewise.
	* sysdeps/stub/usleep.c: Likewise.
	* sysdeps/stub/ustat.c: Likewise.
	* sysdeps/stub/utime.c: Likewise.
	* sysdeps/stub/utimes.c: Likewise.
	* sysdeps/stub/vdprintf.c: Likewise.
	* sysdeps/stub/vhangup.c: Likewise.
	* sysdeps/stub/wait.c: Likewise.
	* sysdeps/stub/wait3.c: Likewise.
	* sysdeps/stub/wait4.c: Likewise.
	* sysdeps/stub/waitpid.c: Likewise.
	* sysdeps/stub/write.c: Likewise.
	* sysdeps/stub/xmknod.c: Likewise.
	* sysdeps/stub/xstat.c: Likewise.
	* sysdeps/stub/bits/errno.h: Likewise.
	* sysdeps/stub/bits/sigcontext.h: Likewise.
	* sysdeps/unix/fxstat.c: Likewise.
	* sysdeps/unix/mk-local_lim.c: Likewise.
	* sysdeps/unix/mkdir.c: Likewise.
	* sysdeps/unix/nice.c: Likewise.
	* sysdeps/unix/rmdir.c: Likewise.
	* sysdeps/unix/stime.c: Likewise.
	* sysdeps/unix/telldir.c: Likewise.
	* sysdeps/unix/xstat.c: Likewise.
	* sysdeps/unix/arm/sysdep.h: Likewise.
	* sysdeps/unix/bsd/ftime.c: Likewise.
	* sysdeps/unix/bsd/isatty.c: Likewise.
	* sysdeps/unix/bsd/setegid.c: Likewise.
	* sysdeps/unix/bsd/seteuid.c: Likewise.
	* sysdeps/unix/bsd/setsid.c: Likewise.
	* sysdeps/unix/bsd/sigaction.c: Likewise.
	* sysdeps/unix/bsd/sigprocmask.c: Likewise.
	* sysdeps/unix/bsd/tcgetattr.c: Likewise.
	* sysdeps/unix/bsd/tcsetattr.c: Likewise.
	* sysdeps/unix/bsd/times.c: Likewise.
	* sysdeps/unix/bsd/ulimit.c: Likewise.
	* sysdeps/unix/bsd/bits/dirent.h: Likewise.
	* sysdeps/unix/bsd/bsd4.4/tcdrain.c: Likewise.
	* sysdeps/unix/bsd/bsd4.4/wait.c: Likewise.
	* sysdeps/unix/bsd/bsd4.4/waitpid.c: Likewise.
	* sysdeps/unix/bsd/hp/m68k/sysdep.h: Likewise.
	* sysdeps/unix/bsd/osf/alpha/sysdep.h: Likewise.
	* sysdeps/unix/bsd/sequent/i386/sysdep.h: Likewise.
	* sysdeps/unix/bsd/sony/newsos/m68k/sysdep.h: Likewise.
	* sysdeps/unix/bsd/sun/m68k/sigtramp.c: Likewise.
	* sysdeps/unix/bsd/sun/m68k/sysdep.h: Likewise.
	* sysdeps/unix/bsd/sun/m68k/bits/sigcontext.h: Likewise.
	* sysdeps/unix/bsd/sun/sparc/sigtramp.c: Likewise.
	* sysdeps/unix/bsd/sun/sparc/bits/sigcontext.h: Likewise.
	* sysdeps/unix/bsd/sun/sunos4/mmap.c: Likewise.
	* sysdeps/unix/bsd/sun/sunos4/speed.c: Likewise.
	* sysdeps/unix/bsd/ultrix4/sysconf.c: Likewise.
	* sysdeps/unix/bsd/ultrix4/bits/posix_opt.h: Likewise.
	* sysdeps/unix/bsd/ultrix4/mips/bits/sigcontext.h: Likewise.
	* sysdeps/unix/bsd/vax/sysdep.h: Likewise.
	* sysdeps/unix/common/lxstat.c: Likewise.
	* sysdeps/unix/common/tcsendbrk.c: Likewise.
	* sysdeps/unix/common/bits/dirent.h: Likewise.
	* sysdeps/unix/i386/sysdep.h: Likewise.
	* sysdeps/unix/mips/sysdep.h: Likewise.
	* sysdeps/unix/sysv/setrlimit.c: Likewise.
	* sysdeps/unix/sysv/settimeofday.c: Likewise.
	* sysdeps/unix/sysv/sigaction.c: Likewise.
	* sysdeps/unix/sysv/sysv_termio.h: Likewise.
	* sysdeps/unix/sysv/tcdrain.c: Likewise.
	* sysdeps/unix/sysv/tcflow.c: Likewise.
	* sysdeps/unix/sysv/tcflush.c: Likewise.
	* sysdeps/unix/sysv/tcgetattr.c: Likewise.
	* sysdeps/unix/sysv/tcsendbrk.c: Likewise.
	* sysdeps/unix/sysv/tcsetattr.c: Likewise.
	* sysdeps/unix/sysv/bits/dirent.h: Likewise.
	* sysdeps/unix/sysv/irix4/getpriority.c: Likewise.
	* sysdeps/unix/sysv/irix4/setpriority.c: Likewise.
	* sysdeps/unix/sysv/irix4/bits/confname.h: Likewise.
	* sysdeps/unix/sysv/linux/adjtime.c: Likewise.
	* sysdeps/unix/sysv/linux/dl-sysdep.c: Likewise.
	* sysdeps/unix/sysv/linux/gethostname.c: Likewise.
	* sysdeps/unix/sysv/linux/if_index.c: Likewise.
	* sysdeps/unix/sysv/linux/ptrace.c: Likewise.
	* sysdeps/unix/sysv/linux/reboot.c: Likewise.
	* sysdeps/unix/sysv/linux/speed.c: Likewise.
	* sysdeps/unix/sysv/linux/sysctl.c: Likewise.
	* sysdeps/unix/sysv/linux/tcdrain.c: Likewise.
	* sysdeps/unix/sysv/linux/ulimit.c: Likewise.
	* sysdeps/unix/sysv/linux/waitpid.c: Likewise.
	* sysdeps/unix/sysv/linux/alpha/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/sigaction.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/signum.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/profil-counter.h: Likewise.
	* sysdeps/unix/sysv/linux/m68k/sysdep.h: Likewise.
	* sysdeps/unix/sysv/minix/bits/sigaction.h: Likewise.
	* sysdeps/unix/sysv/sco3.2.4/bits/confname.h: Likewise.
	* sysdeps/unix/sysv/sco3.2.4/bits/sigaction.h: Likewise.
	* sysdeps/unix/sysv/sysv4/sigaction.c: Likewise.
	* sysdeps/unix/sysv/sysv4/siginfo.h: Likewise.
	* sysdeps/unix/sysv/sysv4/sysconf.c: Likewise.
	* sysdeps/unix/sysv/sysv4/sysconfig.h: Likewise.
	* sysdeps/unix/sysv/sysv4/waitpid.c: Likewise.
	* sysdeps/unix/sysv/sysv4/bits/sigaction.h: Likewise.
	* sysdeps/unix/sysv/sysv4/i386/sysdep.h: Likewise.
	* sysdeps/unix/sysv/sysv4/solaris2/sparc/sysdep.h: Likewise.
	* sysdeps/vax/fl.h: Likewise.
	* sysdeps/vax/setjmp.c: Likewise.

1997-06-21 16:58  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* stdlib/strtod.c (INTERNAL (STRTOF)): Fix recognition of Infinity
	and NaN strings.

1997-06-20 21:52  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* sysdeps/m68k/fpu/bits/mathinline.h (__scalbn): Fix type of second
	argument.
	(__ilogb): Remove special case for zero, add stupid special case
	for NaN.
	(__ieee754_scalb): Remove definition.
	* sysdeps/m68k/fpu/mathbits.h (FP_ILOGB0, FP_ILOGBNAN): Define.
	* sysdeps/m68k/fpu/s_scalbn.c: Fix type of second argument.

	* sysdeps/m68k/fpu/e_scalb.c: Rewritten.
	* sysdeps/m68k/fpu/e_scalbf.c: Adapted.
	* sysdeps/m68k/fpu/e_scalbl.c: Adapted.

	* sysdeps/libm-ieee754/e_scalb.c: Raise no exceptions when
	returning NaN.  Handle zero specially.
	* sysdeps/libm-ieee754/e_scalbf.c: Likewise.
	* sysdeps/libm-ieee754/e_scalbl.c: Likewise.

	* math/libm-test.c (ilogb_test): Don't require exceptions for zero
	and NaN.
	(gamma_test): Use different argument when checking whether
	function is implemented.
	(scalb_test): Remove duplicate tests.

1997-06-03 15:59  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makerules (+depfiles): Add dependencies for $(test-srcs).
	(distinfo-vars): Add test-srcs.
1997-06-23 21:55:26 +00:00

387 lines
11 KiB
C

/* Process tracing interface `ptrace' for GNU Hurd.
Copyright (C) 1991, 92, 93, 95, 96, 97 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <sys/ptrace.h>
#include <sys/types.h>
#include <stdarg.h>
#include <hurd.h>
#include <hurd/signal.h>
#include <hurd/msg.h>
#include <thread_state.h>
/* Perform process tracing functions. REQUEST is one of the values
in <sys/ptrace.h>, and determines the action to be taken.
For all requests except PTRACE_TRACEME, PID specifies the process to be
traced.
PID and the other arguments described above for the various requests should
appear (those that are used for the particular request) as:
pid_t PID, void *ADDR, int DATA, void *ADDR2
after PID. */
int
ptrace (enum __ptrace_request request, ... )
{
pid_t pid;
void *addr, *addr2;
natural_t data;
va_list ap;
/* Read data from PID's address space, from ADDR for DATA bytes. */
error_t read_data (task_t task, vm_address_t *ourpage, vm_size_t *size)
{
/* Read the pages containing the addressed range. */
error_t err;
*size = round_page (addr + data) - trunc_page (addr);
err = __vm_read (task, trunc_page (addr), *size, ourpage, size);
return err;
}
/* Fetch the thread port for PID's user thread. */
error_t fetch_user_thread (task_t task, thread_t *thread)
{
thread_t threadbuf[3], *threads = threadbuf;
mach_msg_type_number_t nthreads = 3, i;
error_t err = __task_threads (task, &threads, &nthreads);
if (err)
return err;
if (nthreads == 0)
return EINVAL;
*thread = threads[0]; /* Assume user thread is first. */
for (i = 1; i < nthreads; ++i)
__mach_port_deallocate (__mach_task_self (), threads[i]);
if (threads != threadbuf)
__vm_deallocate (__mach_task_self (),
(vm_address_t) threads, nthreads * sizeof threads[0]);
return 0;
}
/* Fetch a thread state structure from PID and store it at ADDR. */
int get_regs (int flavor, mach_msg_type_number_t count)
{
error_t err;
task_t task = __pid2task (pid);
thread_t thread;
if (task == MACH_PORT_NULL)
return -1;
err = fetch_user_thread (task, &thread);
__mach_port_deallocate (__mach_task_self (), task);
if (!err)
err = __thread_get_state (thread, flavor, addr, &count);
__mach_port_deallocate (__mach_task_self (), thread);
return err ? __hurd_fail (err) : 0;
}
switch (request)
{
case PTRACE_TRACEME:
/* Make this process be traced. */
__sigfillset (&_hurdsig_traced);
__USEPORT (PROC, __proc_mark_traced (port));
break;
case PTRACE_CONT:
va_start (ap, request);
pid = va_arg (ap, pid_t);
addr = va_arg (ap, void *);
data = va_arg (ap, int);
va_end (ap);
{
/* Send a DATA signal to PID, telling it to take the signal
normally even if it's traced. */
error_t err;
task_t task = __pid2task (pid);
if (task == MACH_PORT_NULL)
return -1;
if (data == SIGKILL)
err = __task_terminate (task);
else
{
if (addr != (void *) 1)
{
/* Move the user thread's PC to ADDR. */
thread_t thread;
err = fetch_user_thread (task, &thread);
if (!err)
{
struct machine_thread_state state;
mach_msg_type_number_t count = MACHINE_THREAD_STATE_COUNT;
err = __thread_get_state (thread,
MACHINE_THREAD_STATE_FLAVOR,
(natural_t *) &state, &count);
if (!err)
{
MACHINE_THREAD_STATE_SET_PC (&state, addr);
err = __thread_set_state (thread,
MACHINE_THREAD_STATE_FLAVOR,
(natural_t *) &state, count);
}
}
__mach_port_deallocate (__mach_task_self (), thread);
}
else
err = 0;
if (! err)
/* Tell the process to take the signal (or just resume if 0). */
err = HURD_MSGPORT_RPC
(__USEPORT (PROC, __proc_getmsgport (port, pid, &msgport)),
0, 0, __msg_sig_post_untraced (msgport, data, 0, task));
}
__mach_port_deallocate (__mach_task_self (), task);
return err ? __hurd_fail (err) : 0;
}
case PTRACE_KILL:
va_start (ap, request);
pid = va_arg (ap, pid_t);
va_end (ap);
/* SIGKILL always just terminates the task,
so normal kill is just the same when traced. */
return kill (pid, SIGKILL);
case PTRACE_SINGLESTEP:
/* This is a machine-dependent kernel RPC on
machines that support it. Punt. */
return EOPNOTSUPP;
case PTRACE_ATTACH:
case PTRACE_DETACH:
va_start (ap, request);
pid = va_arg (ap, pid_t);
va_end (ap);
{
/* Tell PID to set or clear its trace bit. */
error_t err;
mach_port_t msgport;
task_t task = __pid2task (pid);
if (task == MACH_PORT_NULL)
return -1;
err = __USEPORT (PROC, __proc_getmsgport (port, pid, &msgport));
if (! err)
{
err = __msg_set_init_int (msgport, task, INIT_TRACEMASK,
request == PTRACE_DETACH ? 0 :
~(sigset_t) 0);
if (! err)
{
if (request == PTRACE_ATTACH)
/* Now stop the process. */
err = __msg_sig_post (msgport, SIGSTOP, 0, task);
else
/* Resume the process from tracing stop. */
err = __msg_sig_post_untraced (msgport, 0, 0, task);
}
__mach_port_deallocate (__mach_task_self (), msgport);
}
__mach_port_deallocate (__mach_task_self (), task);
return err ? __hurd_fail (err) : 0;
}
case PTRACE_PEEKTEXT:
case PTRACE_PEEKDATA:
va_start (ap, request);
pid = va_arg (ap, pid_t);
addr = va_arg (ap, void *);
va_end (ap);
{
/* Read the page (or two pages, if the word lies on a boundary)
containing the addressed word. */
error_t err;
vm_address_t ourpage;
vm_size_t size;
natural_t word;
task_t task = __pid2task (pid);
if (task == MACH_PORT_NULL)
return -1;
data = sizeof word;
ourpage = 0;
size = 0;
err = read_data (task, &ourpage, &size);
__mach_port_deallocate (__mach_task_self (), task);
if (err)
return __hurd_fail (err);
word = *(natural_t *) ((vm_address_t) addr - trunc_page (addr)
+ ourpage);
__vm_deallocate (__mach_task_self (), ourpage, size);
return word;
}
case PTRACE_PEEKUSER:
case PTRACE_POKEUSER:
/* U area, what's that? */
return EOPNOTSUPP;
case PTRACE_GETREGS:
case PTRACE_SETREGS:
va_start (ap, request);
pid = va_arg (ap, pid_t);
addr = va_arg (ap, void *);
va_end (ap);
return get_regs (MACHINE_THREAD_STATE_FLAVOR,
MACHINE_THREAD_STATE_COUNT);
case PTRACE_GETFPREGS:
case PTRACE_SETFPREGS:
va_start (ap, request);
pid = va_arg (ap, pid_t);
addr = va_arg (ap, void *);
va_end (ap);
#ifdef MACHINE_THREAD_FLOAT_STATE_FLAVOR
return get_regs (MACHINE_THREAD_FLOAT_STATE_FLAVOR,
MACHINE_THREAD_FLOAT_STATE_COUNT);
#else
return EOPNOTSUPP;
#endif
case PTRACE_GETFPAREGS:
case PTRACE_SETFPAREGS:
va_start (ap, request);
pid = va_arg (ap, pid_t);
addr = va_arg (ap, void *);
va_end (ap);
#ifdef MACHINE_THREAD_FPA_STATE_FLAVOR
return get_regs (MACHINE_THREAD_FPA_STATE_FLAVOR,
MACHINE_THREAD_FPA_STATE_COUNT);
#else
return EOPNOTSUPP;
#endif
case PTRACE_POKETEXT:
case PTRACE_POKEDATA:
va_start (ap, request);
pid = va_arg (ap, pid_t);
addr = va_arg (ap, void *);
data = va_arg (ap, int);
va_end (ap);
{
/* Read the page (or two pages, if the word lies on a boundary)
containing the addressed word. */
error_t err;
vm_address_t ourpage;
vm_size_t size;
task_t task = __pid2task (pid);
if (task == MACH_PORT_NULL)
return -1;
data = sizeof (natural_t);
ourpage = 0;
size = 0;
err = read_data (task, &ourpage, &size);
if (!err)
{
/* Now modify the specified word and write the page back. */
*(natural_t *) ((vm_address_t) addr - trunc_page (addr)
+ ourpage) = data;
err = __vm_write (task, trunc_page (addr), ourpage, size);
__vm_deallocate (__mach_task_self (), ourpage, size);
}
__mach_port_deallocate (__mach_task_self (), task);
return err ? __hurd_fail (err) : 0;
}
case PTRACE_READDATA:
case PTRACE_READTEXT:
va_start (ap, request);
pid = va_arg (ap, pid_t);
addr = va_arg (ap, void *);
data = va_arg (ap, int);
addr2 = va_arg (ap, void *);
va_end (ap);
{
error_t err;
vm_address_t ourpage;
vm_size_t size;
task_t task = __pid2task (pid);
if (task == MACH_PORT_NULL)
return -1;
if (((vm_address_t) addr2 + data) % __vm_page_size == 0)
{
/* Perhaps we can write directly to the user's buffer. */
ourpage = (vm_address_t) addr2;
size = data;
}
else
{
ourpage = 0;
size = 0;
}
err = read_data (task, &ourpage, &size);
__mach_port_deallocate (__mach_task_self (), task);
if (!err && ourpage != (vm_address_t) addr2)
{
memcpy (addr2, (void *) ourpage, data);
__vm_deallocate (__mach_task_self (), ourpage, size);
}
return err ? __hurd_fail (err) : 0;
}
case PTRACE_WRITEDATA:
case PTRACE_WRITETEXT:
va_start (ap, request);
pid = va_arg (ap, pid_t);
addr = va_arg (ap, void *);
data = va_arg (ap, int);
addr2 = va_arg (ap, void *);
va_end (ap);
{
error_t err;
vm_address_t ourpage;
vm_size_t size;
task_t task = __pid2task (pid);
if (task == MACH_PORT_NULL)
return -1;
if ((vm_address_t) addr % __vm_page_size == 0 &&
(vm_address_t) data % __vm_page_size == 0)
{
/* Writing whole pages; can go directly from the user's buffer. */
ourpage = (vm_address_t) addr2;
size = data;
err = 0;
}
else
{
/* Read the task's pages and modify our own copy. */
ourpage = 0;
size = 0;
err = read_data (task, &ourpage, &size);
if (!err)
memcpy ((void *) ((vm_address_t) addr - trunc_page (addr)
+ ourpage),
addr2,
data);
}
if (!err)
/* Write back the modified pages. */
err = __vm_write (task, trunc_page (addr), ourpage, size);
__mach_port_deallocate (__mach_task_self (), task);
return err ? __hurd_fail (err) : 0;
}
default:
errno = EINVAL;
return -1;
}
return 0;
}