2008-05-19  Roland McGrath  <roland@redhat.com>

	* signal.c (sys_kill): When current personality's wordsize is smaller
	than native, sign-extend the PID argument from 32 bits.
	Fixes RH#430585.

	* configure.ac: Add check for struct sigcontext_struct in <signal.h>.
	* signal.c [! HAVE_ASM_SIGCONTEXT_H] [I386] (struct sigcontext_struct):
	Conditionalize definition on !HAVE_STRUCT_SIGCONTEXT_STRUCT.
	Fixes Debian#456879.

	* util.c [LINUX] (setbpt): Use correct SYS_clone number for current
	personality.
	Fixes RH#447475.

2008-05-08  David S. Miller  <davem@davemloft.net>

	* syscall.c (socket_map, sparc_socket_decode): Delete.
	(trace_syscall): Use common socketcall and ipc subcall
	support on sparc.
	* linux/sparc/syscall.h (sys_semtimedop): Declare.
	(SYS_socket_subcall, SYS_sub_socket, SYS_sub_bind,
	SYS_sub_connect, SYS_sub_listen, SYS_sub_accept,
	SYS_sub_getsockname, SYS_sub_getpeername,
	SYS_sub_socketpair, SYS_sub_send, SYS_sub_recv,
	SYS_sub_sendto, SYS_sub_recvfrom, SYS_sub_shutdown,
	SYS_sub_setsockopt, SYS_sub_getsockopt, SYS_sub_sendmsg,
	SYS_sub_recvmsg, SYS_socket_nsubcalls, SYS_ipc_subcall,
	SYS_sub_semop, SYS_sub_semget, SYS_sub_semctl,
	SYS_sub_semtimedop, SYS_sub_msgsnd, SYS_sub_msgrcv,
	SYS_sub_msgget, SYS_sub_msgctl, SYS_sub_shmat,
	SYS_sub_shmdt, SYS_sub_shmget, SYS_sub_shmctl,
	SYS_ipc_nsubcalls): Define
	* linux/sparc/syscallent.h: Add socketcall and ipc entries.

2008-01-25  Bruna Moreira <bruna.moreira@indt.org>

	* defs.h [ARM]: Define SUPPORTED_PERSONALITIES to 2.
	* syscall.c (get_scno) [ARM]: Add support for architecture specific
	syscalls.
	* linux/arm/syscallent.h: Update network syscalls list.
	* linux/arm/syscallent1.h: New file. Add new architecture specific
	syscalls.
	* linux/arm/errnoent1.h: New file.
	* linux/arm/ioctlent1.h: New file.
	* linux/arm/signalent1.h: New file.
	Fixes Debian#441000.

2008-01-07  Paul Mundt  <lethal@linux-sh.org>

	* linux/sh64/syscallent.h: Update numerous calls, fix others.

2007-08-26  Daniel Jacobowitz  <dan@codesourcery.com>

	* defs.h [MIPS]: Include <sgidefs.h>.
	(MAX_QUALS): Update for MIPS.
	(LINUX_MIPSO32, LINUX_MIPSN32, LINUX_MIPSN64, LINUX_MIPS64): Define.
	(struct tcb): Add ext_arg for MIPS N32.
	(TCB_WAITEXECVE): Define for MIPS.
	(ALIGN64): Use LINUX_MIPSO32.
	* file.c (sys_lseek): Use ext_arg for MIPS N32.
	(sys_readahead, sys_fadvise64_64): Likewise.
	* io.c (sys_pread64, sys_pwrite64): Likewise.
	* mem.c (print_mmap): Take OFFSET argument.
	(sys_old_mmap): Update call to print_mmap.
	(sys_mmap): Use ext_arg for MIPS N32.
	* process.c (struct_user_offsets): Add MIPS registers.
	* signal.c (sys_sigreturn): Handle MIPS N32 and MIPS N64.  Correct
	MIPS O32 call to sprintsigmask.
	* syscall.c (internal_syscall): Handle MIPS N32.  Check for
	TCB_WAITEXECVE on MIPS.
	(force_result): Add a comment about MIPS N32.
	(syscall_enter): Handle MIPS N32 and MIPS N64.
	* linux/syscall.h (sys_pread64, sys_pwrite64): Declare.
	* linux/mips/syscallent.h: Include "dummy.h".  Handle alternate
	MIPS ABIs.

2008-04-19  Dmitry V. Levin <ldv@altlinux.org>

	* file.c [_LFS64_LARGEFILE] (sys_getdents64): Do the same
	d_reclen check as in sys_getdents: warn if d_reclen is 0 rather
	than looping forever.
	[FREEBSD] (sys_getdirentries): Likewise.
	Signed-off-by: Mike Frysinger <vapier@gentoo.org>

	* file.c [LINUXSPARC] (printstatsol): Fix sprinttime()
	invocation.  The sprinttime() function takes a time_t argument,
	but timestruct_t argument was given.
	Signed-off-by: Mike Frysinger <vapier@gentoo.org>

	* file.c (sprinttime): Check localtime() return value, to avoid
	potential NULL dereference due to invalid time structures.
	Signed-off-by: Harald van Dijk <truedfx@gentoo.org>
	Signed-off-by: Mike Frysinger <vapier@gentoo.org>

	* linux/errnoent.h: Update errno list based on latest
	linux/errno.h and asm-generic/errno*.h files.
	Signed-off-by: Mike Frysinger <vapier@gentoo.org>

	* signalent.sh: Fix sort(1) old-style options.
	* syscallent.sh: Likewise.
	Signed-off-by: Mike Frysinger <vapier@gentoo.org>

	* count.c (call_summary_pers): Check calloc() return value.
	Signed-off-by: "Yang Zhiguo" <yzgcsu@cn.fujitsu.com>

2008-03-26  Roland McGrath  <roland@redhat.com>

	* strace.spec (strace64_arches): Add sparc64.

2007-11-20  Roland McGrath  <roland@redhat.com>

	* CREDITS, ChangeLog: Converted contents to UTF8.

2007-11-19  Roland McGrath  <roland@redhat.com>

	* strace.spec: Add BuildRequires on libaio-devel, libacl-devel.

2007-11-19  Andreas Schwab  <schwab@suse.de>

	* process.c (sys_ptrace) [IA64]: For PTRACE_PEEKDATA,
	PTRACE_PEEKTEXT and PTRACE_PEEKUSER the data is returned directly.

	* linux/syscallent.h: Fix argument count for getdents64.
	* linux/arm/syscallent.h: Likewise.
	* linux/m68k/syscallent.h: Likewise.
	* linux/x86_64/syscallent.h: Likewise.

	* linux/ia64/syscallent.h: Use sys_getdents64.
	* linux/sh/syscallent.h: Likewise.

2007-11-06  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* strace.c [LINUX] (droptcb): Recurse on TCP->parent if it is a
	TCB_EXITING zombie group leader.
	* test/childthread.c: New file.
	* test/.cvsignore, test/Makefile: Add it.
	Code advisory: Roland McGrath
	Fixes RH#354261.

2007-11-03  Roland McGrath  <roland@redhat.com>

	* process.c (prctl_options): Add numerous constants.
	From Sami Farin <safari@u.safari.iki.fi>.
	Fixes RH#364401.

2007-11-03  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* strace.c (main): Move the STARTUP_CHILD call before setting up the
	signal handlers.  New comment about the valid internal states.

2007-11-02  Thiemo Seufer <ths@networkno.de>

	* signal.c (m_siginfo_t): Add for MIPS.
	(sys_sigreturn): struct sigcontext on MIPS has no sigset_t member,
	acquire the signal mask with the same trick as on Sparc.
	Fixes Debian#448802.

2007-11-01  Roland McGrath  <roland@redhat.com>

	* util.c (string_quote): Return nonzero if the string was unterminated.
	(printstr): Use that value instead of just our own test.
	(printpathn): Likewise.
	Fixes RH#358241.

	* linux/mips/syscallent.h: Fix argument count for fadvise64_64.
	From Paul Mundt <lethal@linux-sh.org>.

	* linux/mips/syscallent.h: Fix argument count for lookup_dcookie.
	From Paul Mundt <lethal@linux-sh.org>.

	* linux/sh64/syscallent.h: Fix SYS_socket_subcall check.
	From Paul Mundt <lethal@linux-sh.org>.

	* linux/sh/syscallent.h: Update numerous calls.
	From Paul Mundt <lethal@linux-sh.org>.

2007-09-22  Dmitry V. Levin <ldv@altlinux.org>

	* desc.c (sys_pselect6): Decode signal mask when entering syscall.
	Relax signal mask size check.

	* time.c (print_timespec, sprint_timespec): New functions.
	* defs.h (print_timespec, sprint_timespec): Declare them.
	* desc.c (sys_io_getevents): Use print_timespec.
	* stream.c (sys_ppoll): Likewise.
	(decode_poll): Use sprint_timespec.

2007-09-22  Alan Curry <pacman@world.std.com>
	    Dmitry V. Levin <ldv@altlinux.org>

	* stream.c (decode_poll): Rearrange so that arguments are decoded
	and printed on syscall entry, except for revents and the output
	timespec which are now printed in the auxstr.
	(sys_poll): Print the input timeout argument on syscall entry.
	[LINUX] (sys_ppoll): Likewise.
	Fixes Debian#369651.

2007-09-22  Dmitry V. Levin <ldv@altlinux.org>

	* desc.c (sprintflags): Remove static qualifier, add "prefix"
	argument, move function to ...
	* util.c (sprintflags): ... here.
	* defs.h (sprintflags): Declare it.

2007-11-01  Roland McGrath  <roland@redhat.com>

	* syscall.c (get_scno) [ARM]: Check TCB_WAITEXECVE.
	Reported by Bernhard Fischer <rep.dot.nop@gmail.com>.

	* net.c (sockpacketoptions): Make PACKET_ADD_MEMBERSHIP and
	PACKET_DROP_MEMBERSHIP conditional.
	From Bernhard Fischer <rep.dot.nop@gmail.com>.

	* configure.ac: Match sh64* for SH64, sh* for SH.
	Reported by Bernhard Fischer <rep.dot.nop@gmail.com>.

2007-10-01  Dmitry V. Levin <ldv@altlinux.org>

	* net.c (printsock): Output AF_UNIX socket address using
	printpathn() to avoid unprintable characters in output.
	Suggested by Neil Campbell.

2007-10-01  Dmitry V. Levin <ldv@altlinux.org>

	* util.c (string_quote): Move quoting code from ...
	(printstr) ... here.  Use string_quote.
	(printpathn): Update for new string_quote interface.
	(printpath): Use printpathn.

2007-09-25  Dmitry V. Levin <ldv@altlinux.org>

	* strace.c (main): Use calloc for tcbtab allocation.
	Check calloc return value.
	Reported by Bai Weidong.

2007-09-11  Roland McGrath  <roland@redhat.com>

	* linux/sparc/syscall.h: Add missing decls.
	* linux/sparc/syscallent.h: Correct entries for setgroups32,
	getgroups32, sys_getdents64.
	From Jakub Bogusz <qboosh@pld-linux.org>.

	* linux/alpha/syscallent.h: Correct entries for madvise, setresgid,
	getresgid, pivot_root, mincore, pciconfig_iobase, getdents64.
	From Jakub Bogusz <qboosh@pld-linux.org>.

	* linux/syscallent.h: Fix getegid32 entry.
	From Jakub Bogusz <qboosh@pld-linux.org>.

	* defs.h [LINUXSPARC]: Use asm/psrcompat.h for [SPARC64], not asm/psr.h.
	From Jakub Bogusz <qboosh@pld-linux.org>.

	* mem.c (sys_getpagesize): Define for [SPARC || SPARC64] too.
	From Jakub Bogusz <qboosh@pld-linux.org>.

2007-08-20  Dmitry V. Levin <ldv@altlinux.org>

	* syscall.c (qual_syscall, qualify): Fix nsyscalls and MAX_QUALS misuse.
	Reported by Xiaoning Ding.

2007-08-06  Jan Kratochvil  <jan.kratochvil@redhat.com>
	    Roland McGrath  <roland@redhat.com>

	* file.c [!HAVE_STAT64 && LINUX && X86_64] (struct stat64): Define it.
	[!HAVE_STAT64 && LINUX && X86_64] (HAVE_STAT64, STAT64_SIZE): Define.
	[HAVE_STAT64] (printstat64) [STAT64_SIZE]: Add compile-time assertion.
	Fixes RH#222275.

	* file.c (printstat64): Test [HAVE_LONG_LONG] for st_size printing
	and cast to widest type available.

2007-08-03  Ulrich Drepper  <drepper@redhat.com>

	* file.c (open_mode_flags): Add O_CLOEXEC.
	* net.c (msg_flags): Add MSG_CMSG_CLOEXEC.
	Fixes RH#365781.

2007-08-03  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.16.
	* debian/changelog, strace.spec: 4.5.16-1.

	* debian/control (Build-Depends): Replace libc6-dev-s390x and
	libc6-dev-sparc64 with gcc-multilib.
	* debian/rules: Replace sparc-linux, s390-linux conditionals with
	general "arch64_map" hair, handle x86_64 and powerpc64 too.
	From Matthias Klose <doko@cs.tu-berlin.de>.
	Fixes Debian#435303.

2007-08-02  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* strace.c (detach): Moved the resume notification code to ...
	(resume_from_tcp): ... a new function here.
	(handle_group_exit): No longer detach also the thread group leader.
	(trace): Fixed panic on exit of the TCB_GROUP_EXITING leader itself.
	Fixes RH#247907.

	* test/leaderkill.c (start): Renamed to ...
	(start0): ... here.
	(start1): New function.
	(main): Created a new spare thread.

2007-08-01  Roland McGrath  <roland@redhat.com>

	* util.c (umoven): Don't perror for EIO.
	(umovestr): Likewise.

	* process.c (printargv): Handle boundary cases correctly.
	Handle biarch fetching correctly.

	* util.c (printstr): Don't print ... if the string matches the length
	limit exactly.

	* linux/sparc64/syscallent.h: Just #include the sparc file.
	* linux/sparc64/syscallent1.h: Likewise.
	* linux/sparc64/syscallent2.h: Likewise.

	* linux/arm/syscallent.h: Add entry for getcpu.
	* linux/hppa/syscallent.h: Likewise.
	* linux/ia64/syscallent.h: Likewise.
	* linux/mips/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/sh/syscallent.h: Likewise.
	* linux/sh64/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.

	* linux/arm/syscallent.h: Add entry for eventfd.
	* linux/ia64/syscallent.h: Likewise.
	* linux/mips/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/sh/syscallent.h: Likewise.
	* linux/sh64/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.

	* linux/arm/syscallent.h: Add entry for timerfd.
	* linux/ia64/syscallent.h: Likewise.
	* linux/mips/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/sh/syscallent.h: Likewise.
	* linux/sh64/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.

	* linux/arm/syscallent.h: Add entry for signalfd.
	* linux/ia64/syscallent.h: Likewise.
	* linux/mips/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/sh/syscallent.h: Likewise.
	* linux/sh64/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.

	* linux/hppa/syscallent.h: Add entry for epoll_pwait.
	* linux/ia64/syscallent.h: Likewise.
	* linux/mips/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/sh/syscallent.h: Likewise.
	* linux/sh64/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.

2007-07-23  Ulrich Drepper  <drepper@redhat.com>

	* process.c (sys_getcpu): New function.
	* linux/syscall.h: Declare sys_getcpu.
	* linux/syscallent.h: Add entry for getcpu.

	* desc.c (sys_eventfd): New function.
	* linux/syscall.h: Declare sys_eventfd.
	* linux/syscallent.h: Add entry for eventfd.
	* linux/x86_64/syscallent.h: Likewise.

	* time.c (printitv_bitness): Add missing braces to enclose
	conditional code.
	(TDF_TIMER_ABSTIME): Define if not already.
	(timerfdflags): New variable.
	(sys_timerfd): New function.
	* linux/syscall.h: Declare sys_timerfd.
	* linux/syscallent.h: Add timerfd entry.
	* linux/x86_64/syscallent.h: Likewise.

	* linux/syscall.h: Declare sys_signalfd.
	* linux/syscallent.h: Add entry for signalfd.
	* linux/x86_64/syscallent.h: Likewise.
	* signal.c (sys_signalfd): New function.

	* desc.c (sys_epoll_wait): Move body of function to ...
	(epoll_wait_common): ...here.  New function.
	(sys_epoll_pwait): New function.
	* linux/syscall.h: Declare sys_epoll_pwait.
	* linux/syscallent.h: Add entry for epoll_pwait.
	* linux/x86_64/syscallent.h: Likewise.

2007-07-23  Roland McGrath  <roland@redhat.com>

	* time.c (printtv_bitness): SPECIAL only counts when tv_sec == 0.

	* linux/arm/syscallent.h: Add move_pages.
	* linux/hppa/syscallent.h: Likewise.
	* linux/ia64/syscallent.h: Likewise.
	* linux/m68k/syscallent.h: Likewise.
	* linux/mips/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/sh/syscallent.h: Likewise.
	* linux/sh64/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.

	* linux/syscallent.h: move_pages takes 6 args, not 5.
	* linux/x86_64/syscallent.h: Likewise.

2007-07-23  Ulrich Drepper  <drepper@redhat.com>

	* defs.h: Add new parameter to printtv_bitness prototype.
	(printttv): Pass zero for the new parameter.
	(printtv_special): New macro.
	* desc.c (decode_select): Pass zero for the new parameter of
	printtv_bitness.
	* file.c (utimensatflags): New macro.
	(sys_osf_utimes): Pass zero for the new parameter of
	printtv_bitness.
	(sys_utimes): Likewise.
	(sys_futimesat): Likewise.
	(decode_utimes): Add new parameter.  Pass it to the
	printtv_bitness calls.  Fix printing of time values.
	(sys_utimensat): New function.
	* time.c (UTIME_NOW, UTIME_OMIT): Define if not already
	happened.
	(printtv_bitness): Add new parameter.  Print special UTIME_*
	values as strings if set.
	(sys_osf_gettimeofday): Pass zero for the new parameter of
	printtv_bitness.
	(sys_osf_settimeofday): Likewise.
	* linux/syscall.h: Declare sys_utimensat.
	* linux/syscallent.h: Add utimensat entry.
	* linux/x86_64/syscallent.h: Likewise.

	* mem.c (move_pages_flags): New variable.
	(sys_move_pages): New function.
	* linux/syscall.h: Declare sys_move_pages.
	* linux/syscallent.h: Add entry for sys_move_pages.
	* linux/x86_64/syscallent.h: Likewise.

	* mem.c (MPOL_MF_MOVE, MPOL_MF_MOVE_ALL): Define.
	(mbindflags): Add MPOL_MF_MOVE and MPOL_MF_MOVE_ALL entries.

2007-07-23  Roland McGrath  <roland@redhat.com>

	* util.c (tv_add): Fix rounding comparison.
	Reported by Bai Weidong <baiwd@cn.fujitsu.com>.

2007-07-11  Roland McGrath  <roland@redhat.com>

	* count.c (call_summary_pers): Use tv_float conversion for output of
	cumulative time, in case it is negative from bogus -O value.
	From Lai JiangShan <laijs@cn.fujitsu.com>.

	* strace.c (handle_group_exit): Detach TCP before LEADER.
	Don't use PTRACE_KILL on LEADER.

	* util.c (printstr): Fix size calculation for outstr allocation.

	* configure.ac (struct sigcontext.sc_hi2): Use #ifdef around
	<asm/sigcontext.h> to match signal.c include conditions.

2007-07-05  Roland McGrath  <roland@redhat.com>

	* debian/rules: Use debian/$(package) instead of debian/tmp as temp dir.

	* configure.ac: Use <stddef.h> before <linux/socket.h>.

	* debian/changelog: Harmonize with debian version.
	* debian/control (Uploaders): Fix surname spelling.
	(Build-Depends): Make debhelper requirement (>= 5.0.0).
	(Standards-Version): Update to 3.7.2.

	* .cvsignore: Add some automake-created files.

	* file.c (sys_utime): Use personality_wordsize to handle biarch.
	Fixes RH#247185.

	* signal.c (sys_sigreturn) [MIPS]: Pass 3rd arg to sprintsigmask.
	From Zhang Le <zhilg@users.sourceforge.net>.

	* strace.c (strace_fopen): [_LFS64_LARGEFILE]: Use fopen64.
	Fixes Debian#385310.

	* strace.c (main): Fix error message for unfound -u user.
	From Srinivasa Ds <srinivasa@in.ibm.com>.
	Fixes RH#247170.

	* debian/control (Architecture): Add armel.

	* linux/syscallent.h: Fix sys_delete_module arg count.
	* linux/alpha/syscallent.h: Likewise.
	* linux/arm/syscallent.h: Likewise.
	* linux/hppa/syscallent.h: Likewise.
	* linux/ia64/syscallent.h: Likewise.
	* linux/m68k/syscallent.h: Likewise.
	* linux/mips/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/sh/syscallent.h: Likewise.
	* linux/sh64/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.
	* linux/sparc64/syscallent2.h: Likewise.
	* linux/x86_64/syscallent.h: Likewise.
	* linux/dummy.h (sys_delete_module): Use sys_open.
	From Johannes Stezenbach <js@linuxtv.org>.

	* configure.ac: Check for struct sigcontext.sc_hi2.
	* signal.c (sys_sigreturn) [MIPS]: Use sc_hi2 vs sc_sigset if found.

	* process.c [LINUX] (futexops): Add many new values.
	[LINUX] (futexwakeops, futexwakecmps): New tables.
	[LINUX] (sys_futex): Use them.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#241467.

2007-07-05  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* strace.c (detach): New prototype.  Extended the function comment.
	[LINUX] (detach): Call droptcb() instead of the wrongly parametrized
	detach() call.
	(handle_group_exit): Call droptcb() instead of the wrongly parametrized
	detach() call.	Always call detach() only once from the group leader.
	Comment the leader killing known bug tested by `test/leaderkill.c'.
	Code advisory: Roland McGrath
	Fixes RH#240961.

	* test/leaderkill.c: New file.
	* test/.cvsignore, test/Makefile: Add it.

2007-03-21  Andreas Schwab  <schwab@suse.de>

	* file.c (sys_newfstatat): Don't use printstat64 on ppc64.

2007-03-29  Vladimir Nadvornik <nadvornik@suse.cz>
	    Dmitry V. Levin <ldv@altlinux.org>

	Trace linux SG_IO ioctl arguments and results.
	* scsi.c: New file.
	* Makefile.am (strace_SOURCES): Add it.
	* defs.h (scsi_ioctl): New function.
	* ioctl.c (ioctl_decode): Use scsi_ioctl().

2007-06-28  Dmitry V. Levin <ldv@altlinux.org>

	* util.c (tv_mul): Multiply tv_usec properly.
	Patch from Cai Fei <caifei@cn.fujitsu.com>.

2007-06-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Never interrupt when the attached traced process would be left stopped.
	* strace.c (main): `-p' attaching moved to ...
	(startup_attach): ... a new function, renamed a variable C to TCBI.
	Block interrupting signals since the first tracee has been attached.
	New comment about INTERRUPTED in the nonthreaded case.
	[LINUX] (startup_attach): Check INTERRUPTED after each attached thread.
	(main): Command spawning moved to ...
	(startup_child): ... a new function, replaced RETURN with EXIT.
	[LINUX] (detach): New variable CATCH_SIGSTOP, do not signal
	new SIGSTOP for processes still in TCB_STARTUP.
	(main): Move signals and BLOCKED_SET init before the tracees attaching,
	[SUNOS4] (trace): Removed fixvfork () call as a dead code, SIGSTOP must
	have been already caught before clearing TCB_STARTUP.
	(trace): Removed the `!WIFSTOPPED(status)' dead code.
	Clear TCB_STARTUP only in the case the received signal was SIGSTOP.
	New comment when `TCB_BPTSET && TCB_STARTUP' combination can be set.
	Code advisory: Roland McGrath
	Fixes RH#240986.

2007-05-24  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* strace.c [LINUX] (my_tgkill): New macro.
	[LINUX] (detach): Use my_tgkill () instead of kill(2).
	Fixes RH#240962.

2007-03-30  Dmitry V. Levin <ldv@altlinux.org>

	* mem.c (mmap_flags): Add MAP_32BIT.
	Reported by Kirill A. Shutemov.

2007-01-12  Dmitry V. Levin <ldv@altlinux.org>

	* sock.c (sock_ioctl): Check umove() return code.
	[LINUX]: Handle SIOCGIFTXQLEN and SIOCGIFMAP.

2007-03-16  Roland McGrath  <roland@redhat.com>

	* linux/s390/syscallent.h: Use sys_restart_syscall for 7.
	* linux/s390x/syscallent.h: Likewise.

2007-02-18  Roland McGrath  <roland@redhat.com>

	* strace.spec (Summary): Remove trailing period.
	(%files): Add %doc files.
	(%changelog): Double %s in text.
	(BuildRoot): Change to Fedora canonical.
	(%install): Don't use %makeinstall macro.
	(%build): Use %{?_smp_mflags}.

2007-01-16  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.15.
	* debian/changelog, strace.spec: 4.5.15-1.

2007-01-16  Dmitry V. Levin <ldv@altlinux.org>

	Update mount parser to match kernel behaviour.
	* system.c [LINUX] (MS_VERBOSE): Rename to MS_SILENT.
	[LINUX] (MS_UNBINDABLE, MS_PRIVATE, MS_SLAVE, MS_SHARED):
	New macros.
	[LINUX] (mount_flags): Add them.
	[LINUX] (MS_MGC_MSK): New macro.
	[LINUX] (sys_mount): Update parser to match kernel behaviour:
	discard MS_MGC_VAL magic, do not decode type and/or data
	strings when specified flags do not imply valid strings.

2007-01-12  Dmitry V. Levin <ldv@altlinux.org>

	* time.c [LINUX] (tprint_timex32, tprint_timex): Decode adjtimex
	modes as flags.

2007-01-11  Dmitry V. Levin <ldv@altlinux.org>

	Update umount parser.
	* system.c [LINUX] (MNT_FORCE, MNT_DETACH, MNT_EXPIRE): New macros.
	[LINUX] (umount_flags): New xlat structure with MNT_* entries.
	[LINUX] (sys_umount2): Use umount_flags.

	Fix open(2) flags parser.
	* defs.h (tprint_open_modes): New function.
	* desc.c (sprint_open_modes): New function.
	(sys_fcntl): Use tprint_open_modes() and sprint_open_modes().
	* file.c (openmodes): Split xlat into open_access_modes and
	open_mode_flags.
	(tprint_open_modes): New function.
	(decode_open): Use it.
	* ipc.c (sys_mq_open, printmqattr): Likewise.
	Fixes RH#222385.

2007-01-11  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.15.
	* debian/changelog, strace.spec: 4.5.15-1.

	* debian/control (Uploaders): Add Frederik Schueler <fs@debian.org>.

	* strace.spec (Release): Use %{?dist}.

	* system.c [LINUX] (CTL_CPU): Define in case header is missing it.

2006-12-27  Dmitry V. Levin <ldv@altlinux.org>

	Add const qualifier to xlookup() return value.
	* defs.h (xlookup): Add const qualifier to return value.
	* desc.c (sprintflags): Likewise.
	* process.c (printpriv): Update xlookup() use.
	* signal.c (sprintsigmask): Add const qualifier to first argument and
	return value.
	* util.c (xlookup): Add const qualifier to return value.
	(printxval): Update xlookup() use.

2006-12-21  Dmitry V. Levin <ldv@altlinux.org>

	Move counts code to separate file.
	* count.c: New file.
	* Makefile.am (strace_SOURCES): Add count.c.
	* syscall.c (call_counts, countv, counts, shortest, time_cmp,
	syscall_cmp, count_cmp, sortfun, overhead, set_sortby,
	set_overhead, call_summary_pers, call_summary): Move to count.c
	* count.c (count_syscall): New function.
	* defs.h (count_syscall): Declare it.
	* syscall.c (trace_syscall): Use it.

2006-12-20  Dmitry V. Levin <ldv@altlinux.org>

	* syscall.c (internal_syscall): Change conditions for internal_exit,
	internal_fork, internal_clone, internal_exec and internal_wait
	calls from switching on known scno values to switching on known
	sysent[tcp->scno].sys_func values.
	Fixes RH#179740.

	Show system call summary for each personality.
	* syscall.c (countv): New call_counts pointers array.
	(counts): Convert to macro wrapper around countv.
	(call_summary_pers): New function.
	(call_summary): Use it for each personality.
	Fixes RH#192193.

2006-12-12  Dmitry V. Levin <ldv@altlinux.org>

	Fix -ff -o behaviour.  Fix piping trace output.
	* defs.h (newoutf): Remove.
	(alloctcb): Rename to alloc_tcb.  Add alloctcb() macro wrapper
	around alloc_tcb().
	* process.c [!USE_PROCFS] (internal_clone, internal_fork):
	Remove newoutf() call.
	* strace.c (set_cloexec_flag, strace_fopen, strace_popen,
	swap_uid): New functions.
	(popen_pid): New variable.
	(newoutf): Make static, use strace_fopen().
	(main): Use strace_fopen() and strace_popen(), remove uids
	swapping.  Do not open outfname when followfork > 1.
	Reinitialize tcp->outf properly.
	(alloctcb): Rename to alloc_tcb.  Use newoutf().
	(trace): Check popen_pid.  Remove newoutf() call.
	[USE_PROCFS] (proc_open, proc_poll_open): Use set_cloexec_flag().
	Fixes RH#204950, RH#218435, Debian#353935.

2006-12-10  Dmitry V. Levin <ldv@altlinux.org>

	Add biarch support for "struct sigevent".
	* time.c [LINUX && SUPPORTED_PERSONALITIES > 1] (printsigevent32):
	New function.
	[LINUX] (printsigevent): [SUPPORTED_PERSONALITIES > 1]
	Handle 32-bit personality.

	Add biarch support for "struct timex".
	* time.c [LINUX && SUPPORTED_PERSONALITIES > 1] (tprint_timex32):
	New function.
	[LINUX] (tprint_timex): New function.
	[LINUX] (sys_adjtimex): Use it.

	Enhance adjtimex parser.
	* time.c [LINUX] (adjtimex_modes, adjtimex_status,
	adjtimex_state): New xlat structures.
	[LINUX] (sys_adjtimex): Print the whole struct timex.
	Decode modes, status and return code.

	Add biarch support for "struct itimerval".
	* time.c (printitv): Rename to printitv_bitness().
	Add printitv() macro wrapper around printitv_bitness().
	(printitv_bitness): Handle 32-bit personality.
	[ALPHA] (sys_osf_getitimer, sys_osf_setitimer):
	Use printitv_bitness().
	(tprint_timeval, tprint_timeval32): New functions.
	(printtv_bitness, printitv_bitness, sys_adjtimex): Use them.
	(printitv32): Remove.

	Add biarch support for "struct timeval".
	* defs.h (bitness_t): New enum type.
	(printtv_bitness, sprinttv): New function prototypes.
	(printtv): Convert to macro wrapper around printtv_bitness().
	(printtv32): Remove.
	* desc.c (decode_select): Use printtv_bitness() and sprinttv().
	(sys_oldselect, sys_osf_select, sys_select, sys_pselect6):
	Update decode_select() use.
	* file.c [ALPHA] (sys_osf_utimes): Use printtv_bitness().
	* time.c (printtv_bitness, sprinttv): New functions.
	(printtv, printtv32): Remove.
	[ALPHA] (sys_osf_settimeofday, sys_osf_settimeofday):
	Use printtv_bitness().
	Fixes RH#171626, RH#173050.

	Add biarch support for "struct iovec".
	* defs.h (personality_wordsize): Add.
	* io.c [HAVE_SYS_UIO_H] (tprint_iov): [LINUX &&
	SUPPORTED_PERSONALITIES > 1] Handle 32-bit personality.
	* util.c [HAVE_SYS_UIO_H] (dumpiov): [LINUX &&
	SUPPORTED_PERSONALITIES > 1] Likewise.
	Patch from Jakub Jelinek.
	Fixes RH#218433.

	* time.c (sys_timer_create): Check umove() return code.

	Make several global variables static.
	#ifdef definitions of rarely unused functions.
	* defs.h (rflag, tflag, outfname): Remove.
	* strace.c (iflag, interactive, pflag_seen, rflag, tflag,
	outfname, username): Make static.
	* desc.c (sys_getdtablesize): Define only for
	ALPHA || FREEBSD || SUNOS4.
	* file.c (sys_fchroot): Define only for SUNOS4 || SVR4.
	(sys_mkfifo): Define only for FREEBSD.
	* mem.c (sys_sbrk): Define only for FREEBSD || SUNOS4.
	(sys_getpagesize): Define only for
	ALPHA || FREEBSD || IA64 || SUNOS4 || SVR4.
	* net.c (sys_so_socket): Define only for SVR4.
	* process.c (sys_gethostid): Define only for
	FREEBSD || SUNOS4 || SVR4.
	(sys_gethostname): Define only for
	ALPHA || FREEBSD || SUNOS4 || SVR4.
	(sys_setpgrp): Define only for ALPHA || SUNOS4 || SVR4.
	(sys_execv): Define only for SPARC || SPARC64 || SUNOS4.
	* signal.c (sys_sigblock): Define only for FREEBSD || SUNOS4.
	(sys_sighold, sys_sigwait): Define only for SVR4.
	(sys_killpg): Define only for FREEBSD || SUNOS4.
	* stream.c (sys_getmsg): Define only for
	SPARC || SPARC64 || SUNOS4 || SVR4.
	* syscall.c (sys_indir): Define only for SUNOS4.

2006-11-27  Dmitry V. Levin  <ldv@altlinux.org>

	* system.c [LINUX]: Define CTL_PROC, since Linux 2.6.18+ headers
	removed CTL_PROC enum.	Patch from Jakub Jelinek.
	[LINUX] (sysctl_root): Add CTL_BUS, CTL_ABI and CTL_CPU.

2006-11-20  Jakub Jelinek  <jakub@redhat.com>

	* linux/ia64/syscallent.h: Add #if check to make sure that
	SYS_socket_subcall adjustment isn't forgotten again.

2006-10-16  Dmitry V. Levin  <ldv@altlinux.org>

	Implement comprehensive quotactl(2) parser for Linux.
	* Makefile.am (strace_SOURCES): Add quota.c.
	* quota.c: New file.
	* resource.c: Remove old quotactl(2) parser.
	Fixes RH#118696.

2006-10-14  Dmitry V. Levin  <ldv@altlinux.org>

	* configure.ac (AC_CHECK_HEADERS): Add inttypes.h.
	* file.c [_LFS64_LARGEFILE && (LINUX || SVR4)]:
	Include <inttypes.h>.
	(sys_getdents64): Use PRIu64/PRId64 to avoid gcc warnings on
	64-bit platforms.

	* strace.c (main): Check getcwd() return code.

2006-10-13  Ulrich Drepper  <drepper@redhat.com>
	    Bernhard Kaindl <bk@suse.de>
	    Dmitry V. Levin  <ldv@altlinux.org>
	    Michael Holzheu <holzheu@de.ibm.com>

	Add hooks for new syscalls.  Add decoders for *at, inotify*,
	pselect6, ppoll and unshare syscalls.

	* defs.h: Declare print_sigset.
	* desc.c (sys_pselect6): New function.
	* file.c (decode_open, decode_access, decode_mkdir,
	decode_readlink, decode_chmod, decode_utimes, decode_mknod):
	New functions.
	(sys_open, sys_access, sys_mkdir, sys_readlink, sys_chmod,
	sys_utimes, sys_mknod): Use them.
	[LINUX] (fstatatflags, unlinkatflags, inotify_modes): New
	variables.
	[LINUX] (print_dirfd, sys_openat, sys_faccessat,
	sys_newfstatat, sys_mkdirat, sys_linkat, sys_unlinkat,
	sys_symlinkat, sys_readlinkat, sys_renameat, sys_fchownat,
	sys_fchmodat, sys_futimesat, sys_mknodat, sys_inotify_add_watch,
	sys_inotify_rm_watch): New functions.
	* process.c [LINUX] (sys_unshare): New function.
	* signal.c (print_sigset): New function.
	(sys_sigprocmask): Use it.
	* stream.c (decode_poll): New function.
	(sys_poll): Use it.
	[LINUX] (sys_ppoll): New function.
	* linux/syscall.h: Delcare new syscall handlers.
	* linux/syscallent.h: Hook up new syscalls.
	* linux/alpha/syscallent.h: Likewise.
	* linux/hppa/syscallent.h: Likewise.
	* linux/ia64/syscallent.h: Likewise.
	* linux/mips/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.
	* linux/x86_64/syscallent.h: Likewise.
	Fixes RH#178633.

2006-10-06  Dmitry V. Levin  <ldv@altlinux.org>

	* strace.c [!USE_PROCFS] (trace): Presence of PT_GETSIGINFO
	macro does not mean that PT_CR_IPSR and PT_CR_IIP macros are
	also defined, so check them along with PT_GETSIGINFO.
	Fixes RH#209856.

2006-09-01  Dmitry V. Levin  <ldv@altlinux.org>

	* file.c (print_xattr_val): Fix memory corruption bug reported
	by James Antill.
	Fixes RH#200621.

2006-04-21  Dmitry V. Levin  <ldv@altlinux.org>

	* defs.h [LINUX && X86_64 && !__NR_exit_group]: Define
	__NR_exit_group.

2006-03-29  Dmitry V. Levin  <ldv@altlinux.org>

	Fix race conditions in tcb allocation.
	* process.c (fork_tcb): Return error code as documented.  Do not
	print "tcb table full" error message.
	[USE_PROCFS] (internal_fork): Do not print "tcb table full"
	error message.
	[SYS_clone || SYS_clone2] (internal_clone, internal_fork): Call
	fork_tcb() before alloctcb().  Do not print "tcb table full"
	error message.
	* strace.c (main): Do not print "tcb table full" error message.
	(expand_tcbtab): Print error message in case of memory allocation
	failure.
	(alloctcb): Print error message when tcb table is full.
	(trace): Expand tcb table if necessary prior to allocating
	entry there.  Do not print "tcb table full" error message.
	Fixes RH#180293.

2006-08-22  Roland McGrath  <roland@redhat.com>

	* ipc.c (sys_msgget, sys_semget, sys_shmget): Show key values in hex.
	Fixes RH#198179.

2006-08-21  Roland McGrath  <roland@redhat.com>

	* linux/syscall.h (SYS_socket_subcall): Bump to 400.
	* linux/syscallent.h: Update table.
	* linux/arm/syscallent.h: Likewise.
	* linux/m68k/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/sh/syscallent.h: Likewise.
	* linux/sh64/syscallent.h: Likewise.
	Fixes RH#201462.

2006-04-25  Roland McGrath  <roland@redhat.com>

	* strace.c (main): Fail when -c is given with -ff.
	* strace.1: Note their incompatibility.
	Fixes RH#187847.

	* strace.c (main): Fail when nonoption args follow -p switches.
	Fixes Debian#361302.

	* Makefile.am (EXTRA_DIST): Add xlate.el.

	* linux/mips/Makefile.in: File removed, unused cruft.
	* linux/sparc/Makefile.in: Likewise.

	* strace.spec (Source0): Use http://dl.sourceforge.net URL.

	* ipc.c (sys_semtimedop): Fixed inverted indirect_ipccall test.
	* linux/hppa/syscallent.h: Fixed semtimedop entry.
	From Mike Stroyan <mike.stroyan@hp.com>.
	Fixes Debian#340239.

2006-03-30  Daniel Jacobowitz  <dan@codesourcery.com>

	* linux/arm/syscallent.h: Correct the name of exit.  Remove
	M68K conditionals and sys_security.  Correct syscalls 243-282.
	Fixes Debian#360154.

	* process.c (change_syscall): Add ARM support.
	* syscall.c (get_scno): Handle ARM EABI.
	Fixes Debian#360152.

2006-01-16  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.14.
	* debian/changelog, strace.spec: 4.5.14-1.

2006-01-13  Roland McGrath  <roland@redhat.com>

	* debian/control (Build-Depends): Add debhelper.

2006-01-12  Roland McGrath  <roland@redhat.com>

	* signal.c [LINUX] (sys_restart_syscall): New function.
	* linux/syscall.h: Declare sys_restart_syscall.
	* linux/sparc/syscall.h: Likewise.
	* linux/syscallent.h: Call 0 is restart_syscall.
	* linux/arm/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/m68k/syscallent.h: Likewise.
	* linux/hppa/syscallent.h: Likewise.
	* linux/sh/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.
	* linux/alpha/syscallent.h: Use sys_restart_syscall.
	* linux/ia64/syscallent.h: Likewise.
	* linux/mips/syscallent.h: Likewise.
	* linux/x86_64/syscallent.h: Likewise.
	Fixes RH#165469, Debian#350641.

2005-08-08  Dmitry V. Levin  <ldv@altlinux.org>

	* system.c [LINUX] (MS_MGC_VAL): New macro.
	[LINUX] (mount_flags): Add it.
	[LINUX] (sys_mount): If neither MS_BIND nor MS_MOVE bits are
        set in the flags argument, try to fetch data string.
	Fixes RH#165377.

2006-01-12  Roland McGrath  <roland@redhat.com>

	* system.c (sys_sysctl): Don't read off end of NAME when max_strlen
	exceeds INFO.nlen.
	From Timo Lindfors <timo.lindfors@iki.fi>.
	Fixes Debian#339117.

	* debian/rules (binary-arch): Don't pass -s to install.  Use dh_strip.
	Fixes Debian#325132.

	* debian/control (Standards-Version): Update to 3.6.2.

	* defs.h [LINUXSPARC] (PERSONALITY0_WORDSIZE, PERSONALITY1_WORDSIZE):
	New macros.
	[SPARC64] (PERSONALITY2_WORDSIZE): New macro.
	[X86_64] (PERSONALITY0_WORDSIZE, PERSONALITY1_WORDSIZE): New macros.
	* syscall.c (PERSONALITY0_WORDSIZE): New macro if undefined.
	(personality_wordsize): New variable.
	(decode_subcall): Use it for size of argument words.
	Fixes RH#174354.

2005-11-17  Dmitry V. Levin  <ldv@altlinux.org>

	Implement qual_flags support for each personality.
	* strace.c (main): Move qualify calls after set_personality call.
	* syscall.c (qual_flags0): New variable..
	[SUPPORTED_PERSONALITIES >= 2] (qual_flags1): New variable.
	[SUPPORTED_PERSONALITIES >= 3] (qual_flags2): New variable.
	(qual_flags): Change variable definition from array to pointer.
	(set_personality): Initialize qual_flags variable.
	(qualify_one): Add "pers" argument to specify personality.
	[SUPPORTED_PERSONALITIES >= 2]: Set qual_flags1 if requested.
	[SUPPORTED_PERSONALITIES >= 3]: Set qual_flags2 if requested.
	(qual_syscall): Pass personality to qualify_one.
	[SUPPORTED_PERSONALITIES >= 2]: Look for syscall also in sysent1
	table.
	[SUPPORTED_PERSONALITIES >= 3]: Look for syscall also in sysent2
	table.
	(qual_signal): Pass personality to qualify_one.
	(qual_desc): Likewise.
	(qualify): Use qualify_one instead of manual qual_flags
	manipulations.
	[SUPPORTED_PERSONALITIES >= 2]: Look for syscall also in sysent1
	table.
	[SUPPORTED_PERSONALITIES >= 3]: Look for syscall also in sysent2
	table.
	* defs.h: Update qual_flags declaration.
	Fixes RH#173986.

2005-11-14  Dmitry V. Levin  <ldv@altlinux.org>

	* syscall.c (qual_syscall): Handle numeric syscall specification.
	Fixes RH#174798.

	* syscall.c (qual_signal, qual_options): Remove redundant argument
	check.

2005-12-01  Roland McGrath  <roland@redhat.com>

	* ipc.c (indirect_ipccall) [MIPS || HPPA]: Return false.
	Fixes Debian#340239.

	* Makefile.am (EXTRA_DIST): Add linux/arm/syscallent.h
	and linux/m68k/syscallent.h.
	Fixes Debian#336197.

	* debian/control (Architecture): Add armeb.
	Fixes Debian#335681.

2005-11-02 Michal Marek  <mmarek@suse.cz>

	* strace-graph (handle_trace): follow clone() and vfork() calls.

2005-10-25  Heiko Carstens  <heiko.carstens@de.ibm.com>

	* linux/s390/syscallent.h: Added ioprio_set, ioprio_get,
	inotify_init, inotify_add_watch, inotify_rm_watch.
	Corrected number of arguments for request_key.
	* linux/s390x/syscallent.h: Likewise.

2005-12-01  Roland McGrath  <roland@redhat.com>

	* ipc.c (indirect_ipccall) [IA64]: Return false unless the syscall
	number is in the low range of IA32 syscalls.

2005-10-07  Andreas Schwab  <schwab@suse.de>

	* linux/ia64/syscallent.h: Syscall 1105 is gettid, not ioperm.

2005-12-01  Roland McGrath  <roland@redhat.com>

	* resource.c (resources): Add RLIMIT_NICE, RLIMIT_RTPRIO.
	Reported by Scott Tsai <scottt958@yahoo.com.tw>.

	* ipc.c (indirect_ipccall): New function.
	(sys_msgctl, sys_msgsnd, sys_msgrcv, sys_semop): Use that predicate
	instead of #ifdef LINUX test.
	[LINUX] (sys_semtimedop): Likewise.
	(sys_shmctl, sys_shmat, sys_shmdt): Likewise.
	Fixes RH#164755.

2005-07-31  Ulrich Drepper  <drepper@redhat.com>

	* linux/x86_64/syscallent.h: Fix syscall parameter count for msgrcv and
	msgctl.

	* ipc.c (sys_msgrcv): Add entering handling and print first parameter
	there.
	Fixes RH#164757.

2005-08-08  Dmitry V. Levin  <ldv@altlinux.org>

	* strace.1: Update "SEE ALSO" links to reference to valid
	manpages.
	Patch from Michail Litvak <mci@owl.openwall.com>.
	Fixes RH#165375.

2005-10-21  Roland McGrath  <roland@redhat.com>

	* util.c (printpathn): Cap N at sizeof path - 1.

2005-08-03  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.13.
	* debian/changelog, strace.spec: 4.5.13-1.

	* configure.ac: Check for struct dqblk.dqb_curblocks field.
	* resource.c [LINUX] (OLD_CMD): New macro.
	(quotacmds): Use it to hard-wire old O_* values, don't use macros.
	(sys_quotactl): If dqb_curblocks is not there, it's called
	dqb_curspace instead.  Print dqb_* fields as unsigned long long.

2005-07-19  Michael Schmitz  <schmitz@debian.org>

	Long overdue m68k cleanup.
	* linux/syscallent.h: remove m68k declarations.
	* linux/m68k/syscallent.h: new file, fixed up declarations
	to match kernel version 2.6.11. Newer syscalls are sufficiently
	different from i386 to merit a separate file.

2005-08-03  Roland McGrath  <roland@redhat.com>

	* linux/x86_64/syscallent.h: Update init_module argument count.
	* linux/sparc/syscallent.h: Likewise.
	* linux/sparc64/syscallent2.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.
	* linux/sh/syscallent.h: Likewise.
	* linux/sh64/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/arm/syscallent.h: Likewise.

2005-07-22  James Lentini  <jlentini@gmail.com>

	* bjm.c (sys_init_module): Display all three arguments.
	* linux/syscallent.h: Update argument count.

2005-08-03  Roland McGrath  <roland@redhat.com>

	* process.c (internal_wait): Don't suspend when known child is known
	to be exiting already.

	* strace.c (detach): If detaching the last live thread in a group with
	a zombie leader, then detach the leader too.
	(handle_group_exit): Use detach, not droptcb, for predeceased thread.
	Mark process about to take a signal with TCB_GROUP_EXITING flag.
	Fixes RH#161919.

2005-07-19  Roland McGrath  <roland@redhat.com>

	* defs.h [LINUX] [M68K] (__NR_exit_group): Define it if missing.
	Fixes Debian#315500.

2005-07-14  Heiko Carstens  <heiko.carstens@de.ibm.com>

	* linux/s390/syscallent.h (sys_tgkill, vserver, fadvise64_64)
	(statfs64, fstatfs64, remap_file_pages, mbind, get_mempolicy)
	(set_mempolicy, mq_open, mq_unlink, mq_timedsend, mq_timedreceive)
	(mq_notify, mq_getsetattr, sys_kexec_load, add_key, request_key)
	(keyctl, waitid): Added.
	* linux/s390x/syscallent.h: Likewise and added missing _llseek.
	* linux/s390/errnoent.h (ECANCELED, ENOKEY, EKEYEXPIRED)
	(EKEYREVOKED, EKEYREJECTED, EOWNERDEAD, ENOTRECOVERABLE): Added.
	* linux/s390x/errnoent.h: Likewise.

2005-07-05  Roland McGrath  <roland@redhat.com>

	* mem.c [LINUX] (sys_old_mmap) [X86_64]: Extract 32-bit values if
	child is 32-bit.
	Fixes RH#162467.

2005-06-08  Dmitry V. Levin  <ldv@altlinux.org>

	Introduce "-e trace=desc".
	* defs.h (TRACE_DESC): New flag.
	* syscall.c: Define TD macro before include of syscallent files
	and undefine it afterwards.
	(lookup_class): Recognize "desc" keyword.
	* strace.1: Document "-e trace=desc".
	* freebsd/i386/syscallent.h: Mark those syscalls which take a
	file descriptor as an argument or return a file descriptor with
	TD flag.
	* linux/alpha/syscallent.h: Likewise.
	* linux/hppa/syscallent.h: Likewise.
	* linux/ia64/syscallent.h: Likewise.
	* linux/mips/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/sh/syscallent.h: Likewise.
	* linux/sh64/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/sparc64/syscallent2.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.
	* linux/syscallent.h: Likewise.
	* linux/x86_64/syscallent.h: Likewise.
	* sunos4/syscallent.h: Likewise.
	* svr4/syscallent.h: Likewise.
	Fixes RH#159400.

	Remove TF flag from those syscalls which have no filename argument.
	* freebsd/i386/syscallent.h: Remove TF flag from fstat, pread,
	pwrite, fstat, sendfile.
	* linux/alpha/syscallent.h: Remove TF flag from read, write,
	pread, pwrite, sendfile.
	* linux/hppa/syscallent.h: Remove TF flag from read, write,
	pread, pwrite, fstat64, sendfile, ftruncate64.
	* linux/ia64/syscallent.h: Remove TF flag from read, write,
	sendfile, fstat, fadvise64.
	* linux/mips/syscallent.h: Remove TF flag from read, write,
	fstatfs, fstat, pread, pwrite, sendfile, ftruncate64, fstat64,
	sendfile64, fadvise64, fstatfs64.
	* linux/powerpc/syscallent.h: Remove TF flag from read, write,
	fstat, pread, pwrite, sendfile, ftruncate64, fstat64, sendfile64,
	fadvise64, fstatfs64, fadvise64_64.
	* linux/s390/syscallent.h: Remove TF flag from pread, pwrite,
	sendfile, ftruncate64, fstat64, sendfile64.
	* linux/s390x/syscallent.h: Remove TF flag from pread, pwrite,
	sendfile, sendfile64.
	* linux/sh/syscallent.h: Remove TF flag from pread, pwrite,
	sendfile, fstat64.
	* linux/sh64/syscallent.h: Remove TF flag from pread, pwrite,
	sendfile, ftruncate64, fstat64.
	* linux/sparc/syscallent.h: Remove TF flag from sendfile, fstat64,
	pread, pwrite, sendfile64.
	* linux/sparc64/syscallent2.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.
	* linux/syscallent.h: Remove TF flag from pread, pwrite, sendfile,
	ftruncate64, fstat64, sendfile64, fadvise64, fadvise64, fstatfs64,
	fadvise64_64.
	* linux/x86_64/syscallent.h: Remove TF flag from pread, pwrite,
	sendfile, fadvise64_64.
	* svr4/syscallent.h: Remove TF flag from pread, pwrite, ftruncate,
	fstatvfs64, ftruncate64.
	Fixes RH#159340.

2005-07-04  Roland McGrath  <roland@redhat.com>

	* net.c (sockipv6options): Add IPV6_ADD_MEMBERSHIP,
	IPV6_DROP_MEMBERSHIP, IPV6_ROUTER_ALERT.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#162450.

	* net.c (sockipoptions): Fix typos.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#161578.

	* util.c (printnum_int): New function, printnum with s/long/int/.
	* defs.h: Declare it.
	* net.c (printsockopt): Use it for int-sized option.
	Fixes RH#162449.
	Reported by Ulrich Drepper <drepper@redhat.com>.

2005-06-09  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.12.
	* debian/changelog, strace.spec: 4.5.12-1.

2005-06-08  Dmitry V. Levin  <ldv@altlinux.org>

	Minor namespace cleanup.
	* defs.h (string_quote): Remove declaration.
	* file.c (openmodessol) [LINUXSPARC]: Make static.
	(fileflags): Likewise.
	(aclcmds, aclipc) [HAVE_SYS_ACL_H]: Likewise.
	(direnttypes) [FREEBSD || LINUX]: Likewise.
	(xattrflags): Likewise.
	* process.c (unalignctl_string): Make static.
	(setarg): Disable.
	* syscall.c (subcalls_table): Make static.
	(socket_map) [!(LINUX && (ALPHA || MIPS))]: Likewise.
	(sparc_socket_decode): Make static, define for [SPARC || SPARC64] only.
	(decode_subcall): Make static.
	(syscall_fixup): Likewise.
	(get_error): Likewise.
	(syscall_enter): Likewise.
	* util.c (tv_tv): Disable.
	(getpc): Likewise.
	(string_quote): Make static.
	Fixes RH#159688.

2005-05-12  Philippe De Muyter  <phdm@macqel.be>

	* util.c (getpc, printcall): Check #if defined(M68K), not M68k.
	Enables `-i' on m68k machines.

2005-06-06  Roland McGrath  <roland@redhat.com>

	* process.c (struct_user_offsets) [X86_64]: Reorder elements so
	matching works right.
	Fixes RH#159787.

	* linux/syscall.h (SYS_socket, SYS_bind, SYS_connect, SYS_listen)
	(SYS_accept, SYS_getsockname, SYS_getpeername, SYS_socketpair)
	(SYS_send, SYS_recv, SYS_sendto, SYS_recvfrom, SYS_shutdown)
	(SYS_setsockopt, SYS_getsockopt, SYS_sendmsg, SYS_recvmsg)
	(SYS_getsockname, SYS_semop, SYS_semgsub_et, SYS_semget, SYS_semctl)
	(SYS_semtimedop, SYS_msgsnd, SYS_msgrcv, SYS_msgget)
	(SYS_msgctl, SYS_shmat, SYS_shmdt, SYS_shmget)
	(SYS_shmctl): Macros renamed to SYS_sub_*.
	* syscall.c (dumpio): Match SYS_sub_* if defined instead of SYS_*.

	* linux/syscall.h (SYS_waitid): Define if not defined.

	* linux/syscallent.h: Fix pread/pwrite names to pread64/pwrite64.

	* defs.h (struct sysent): New member `native_scno'.
	(known_scno): Declare new function.
	* linux/syscallent.h: Add new final field to interesting syscalls.
	* syscall.c (known_scno): New function.
	(dumpio, internal_syscall, syscall_fixup, trace_syscall): Use it.
	* process.c (internal_fork, internal_exit): Likewise.
	[IA64] (ARG_STACKSIZE, ARG_PTID, ARG_CTID, ARG_TLS): Likewise.
	* strace.c (proc_open): Likewise.
	* util.c [LINUX] (setbpt): Likewise.
	* linux/syscall.h: Remove [!defined(X86_64)] from conditional
	for defining SYS_socket_subcall et al.
	* linux/syscallent.h: Likewise for #error check.
	* syscall.c (trace_syscall): Likewise for SYS_{socketcall,ipc} cases.
	Fixes RH#158934.

2005-06-02  Roland McGrath  <roland@redhat.com>

	* file.c (printstatfs64): Cast values to unsigned long long and use
	%llu formats.
	Fixes RH#158243.

2005-05-31  Dmitry V. Levin  <ldv@altlinux.org>

	Deal with memory management issues.
	* defs.h (tprint_iov): Update prototype.
	* desc.c (sys_epoll_wait) [HAVE_SYS_EPOLL_H]: Do not allocate
	epoll_event array of arbitrary size on the stack, to avoid
	stack overflow.
	* file.c (print_xattr_val): Check for integer overflow during
	malloc size calculation, to avoid heap corruption.
	* io.c (tprint_iov) [HAVE_SYS_UIO_H]: Check for integer overflow
	during malloc size calculation, to avoid heap corruption.
	Change iovec array handling to avoid heap memory allocation.
	* mem.c (get_nodes) [LINUX]: Check for integer overflow during
	size calculation and do not allocate array of arbitrary size on
	the stack, to avoid stack overflow.
	* net.c (printcmsghdr) [HAVE_SENDMSG]: Do not allocate array of
	arbitrary size on the stack, to avoid stack overflow.  Do not
	trust cmsg.cmsg_len to avoid read beyond the end of allocated
	object.
	(printmsghdr) [HAVE_SENDMSG]: Update tprint_iov() usage.
	* process.c (sys_setgroups): Check for integer overflow during
	malloc size calculation, to avoid heap corruption.  Change gid_t
	array handling to avoid heap memory allocation.
	(sys_getgroups): Likewise.
	(sys_setgroups32) [LINUX]: Likewise.
	(sys_getgroups32) [LINUX]: Likewise.
	* stream.c (sys_poll) [HAVE_SYS_POLL_H]: Check for integer
	overflow during malloc size calculation, to avoid heap corruption.
	Change pollfd array handling to avoid heap memory allocation.
	* system.c (sys_sysctl) [LINUX]: Check for integer overflow
	during malloc size calculation, to avoid heap corruption.
	* util.c (dumpiov) [HAVE_SYS_UIO_H]: Check for integer overflow
	during malloc size calculation, to avoid heap corruption.
	Fixes RH#159196.

	* util.c (printxval): Change third argument from "char *" to
	"const char *".
	(printflags): Add third argument, "const char *", with similar
	meaning to the third argument of printxval().
	* defs.h (printxval): Change third argument from "char *" to
	"const char *".
	(printflags): Add third argument.
	* bjm.c (sys_query_module) [LINUX]: Pass third argument to
	printflags().
	* desc.c (sys_fcntl): Likewise.
	(sys_flock) [LOCK_SH]: Likewise.
	(print_epoll_event) [HAVE_SYS_EPOLL_H]: Likewise.
	* file.c (sys_open): Likewise.
	(solaris_open) [LINUXSPARC]: Likewise.
	(sys_access): Likewise.
	(sys_chflags, sys_fchflags) [FREEBSD]: Likewise.
	(realprintstat) [HAVE_LONG_LONG_OFF_T &&
	HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
	(printstat64) [HAVE_STAT64 &&
	HAVE_STRUCT_STAT_ST_FLAGS]: Likewise.
	(sys_setxattr, sys_fsetxattr): Likewise.
	* ipc.c (sys_msgget, sys_msgsnd, sys_msgrcv, sys_semget,
	sys_shmget, sys_shmat) [LINUX || SUNOS4 || FREEBSD]: Likewise.
	(sys_mq_open) [LINUX]: Likewise.
	(printmqattr) [HAVE_MQUEUE_H]: Likewise.
	* mem.c (print_mmap) [!HAVE_LONG_LONG_OFF_T]: Likewise.
	(sys_mmap64) [_LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T]: Likewise.
	(sys_mprotect): Likewise.
	(sys_mremap, sys_madvise, sys_mlockall) [LINUX]: Likewise.
	(sys_msync) [MS_ASYNC]: Likewise.
	(sys_mctl) [MC_SYNC]: Likewise.
	(sys_remap_file_pages, sys_mbind, sys_get_mempolicy) [LINUX]:
	Likewise.
	* net.c (printmsghdr) [HAVE_STRUCT_MSGHDR_MSG_CONTROL]: Likewise.
	(sys_send, sys_sendto): Likewise.
	(sys_sendmsg) [HAVE_SENDMSG]: Likewise.
	(sys_recv, sys_recvfrom): Likewise.
	(sys_recvmsg) [HAVE_SENDMSG]: Likewise.
	(printicmpfilter) [ICMP_FILTER]: Likewise.
	* proc.c (proc_ioctl) [SVR4 && !HAVE_MP_PROCFS || FREEBSD]: Likewise.
	* process.c (sys_clone) [LINUX]: Likewise.
	(printwaitn): Likewise.
	(sys_waitid) [SVR4 || LINUX]: Likewise.
	* signal.c (sys_sigvec) [SUNOS4 || FREEBSD]: Likewise.
	(sys_sigaction): Likewise.
	(printcontext) [SVR4]: Likewise.
	(print_stack_t) [LINUX) || FREEBSD]: Likewise.
	(sys_rt_sigaction) [LINUX]: Likewise.
	* sock.c (sock_ioctl) [LINUX]: Likewise.
	* stream.c (sys_putmsg, sys_getmsg): Likewise.
	(sys_putpmsg) [SYS_putpmsg]: Likewise.
	(sys_getpmsg) [SYS_getpmsg]: Likewise.
	(sys_poll): Likewise.
	(print_transport_message) [TI_BIND]: Likewise.
	(stream_ioctl): Likewise.
	* system.c (sys_mount, sys_reboot): Likewise.
	(sys_cacheflush) [LINUX && M68K]: Likewise.
	(sys_capget, sys_capset) [SYS_capget]: Likewise.
	* term.c (term_ioctl) [TIOCMGET]: Likewise.
	* time.c (sys_clock_nanosleep, sys_timer_settime) [LINUX]:
	Likewise.
	Fixes RH#159310.

	* bjm.c (sys_query_module) [LINUX]: Unitize "out of memory"
	errors reporting style.
	* strace.c (rebuild_pollv) [USE_PROCFS]: Likewise.
	* system.c (sys_capget, sys_capset) [SYS_capget]: Likewise.
	* util.c (printstr): Likewise.
	(dumpiov) [HAVE_SYS_UIO_H]: Likewise.
	(fixvfork) [SUNOS4]: Likewise.
	* desc.c (decode_select): Continue to decode syscall arguments
	in case of OOM condition.
	* file.c (sys_getdents): Likewise.
	(sys_getdents64) [_LFS64_LARGEFILE]: Likewise.
	(sys_getdirentries) [FREEBSD]: Likewise.
	* mem.c (sys_mincore): Changed type of variables which deal with
	malloc size from int to unsigned long.
	Fixes RH#159308.

2005-05-22  Dmitry V. Levin  <ldv@altlinux.org>

	* bjm.c [LINUX]: Do not include <linux/linkage.h>.  It is not
	safe to include kernel headers, and this one is not used anyway.
	Fixes RH#158488.

2005-05-26  Roland McGrath  <roland@redhat.com>

	* system.c (sys_sysctl): Check for errors accessing user pointers.
	Use malloc instead of alloca in case size is insane.

2005-05-09  Roland McGrath  <roland@redhat.com>

	* configure.ac: Check for libaio.h.
	* desc.c (sys_io_setup, sys_io_submit, sys_io_cancel,
	sys_io_getevents, sys_io_destroy): New functions.
	* linux/syscall.h: Declare them.
	* linux/syscallent.h: Use those for io_* syscalls.
	* linux/alpha/syscallent.h: Likewise.
	* linux/hppa/syscallent.h: Likewise.
	* linux/ia64/syscallent.h: Likewise.
	* linux/mips/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/x86_64/syscallent.h: Likewise.
	From Zach Brown <zach.brown@oracle.com>.
	Fixes RH#155065.

	* debian/control (Architecture): Add ppc64.
	Fixes Debian bug #301089.

2005-05-05  Anton Blanchard  <anton@samba.org>

	* process.c (ptrace_cmds): Add PTRACE_GETVRREGS and PTRACE_SETVRREGS
	if defined.

2005-05-09  Roland McGrath  <roland@redhat.com>

	* strace.c (main): Refuse negative -s argument value.
	Fixes Debian bug #303256.

2005-04-25  Anton Blanchard  <anton@samba.org>

	* file.c (openmodes): Add O_NOATIME flag if defined.

2005-04-05  Anton Blanchard  <anton@samba.org>

	* linux/powerpc/ioctlent.h: Regenerated.

	* signal.c (signame): Don't try and dereference negative index.

	* linux/powerpc/syscallent.h: Add debug_setcontext, vserver,
	mbind, *_mempolicy, mq_*, sys_kexec_load, add_key, request_key,
	keyctl, waitid, sys_semtimedop.  Fix various other syscalls.

	* ipc.c (shm_resource_flags): New variable, table has SHM_HUGETLB
	but not IPC_NOWAIT, which have the same value.
	(sys_shmget): Use that instead of resource_flags.

2005-03-22  Roland McGrath  <roland@redhat.com>

	* desc.c (decode_select): Increase local buffer size.
	Fixes RH#151570.

	* configure.ac, NEWS: Version 4.5.11.
	* debian/changelog, strace.spec: 4.5.11-1.

	* linux/arm/syscallent.h: Fix 113 entry (syscall, not vm86old).

2005-03-14  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.10.
	* debian/changelog, strace.spec: 4.5.10-1.

2005-02-26  GOTO Masanori  <gotom@debian.or.jp>

	* linux/alpha/syscallent.h: Fix the reversed order of lstat64 and
	fstat64.  Clean up osf_nrecvmsg and osf_ngetsockname.

2005-02-28  Andreas Schwab  <schwab@suse.de>

	* syscall.c (getrval2): Move #ifdef IA64 inside #ifdef LINUX.

2005-03-14  Roland McGrath  <roland@redhat.com>

	* linux/mips/syscallent.h: Update various calls.
	From Thiemo Seufer <ths@networkno.de>.
	Fixes Debian bug #256684.

	* debian/control (Architecture): Add s390.
	Fixes Debian bug #294172.

2005-03-06  Roland McGrath  <roland@redhat.com>

	* strace.c (trace) [PTRACE_GETSIGINFO]: Fetch siginfo_t for SIGSEGV
	and SIGBUS signals, use si_addr in output.

2005-03-01  Roland McGrath  <roland@redhat.com>

	* file.c (print_xattr_val): Add a cast.

2005-02-05  Roland McGrath  <roland@redhat.com>

	* desc.c (decode_select): Calculate size of passed fd_set vectors and
	copy in the user's size rather than the standard sizeof(fd_set).
	Fixes Debian bug #65654, #284290.

	* util.c (printpath, printpathn): Print NULL and don't try any fetch
	when ADDR is zero.
	Fixes Debian bug #63093.

	* debian/control (Build-Depends): Fix for s390 and sparc.
	From Bastian Blank <waldi@debian.org>.
	Fixes Debian bug #293564.

2004-12-19  Dmitry V. Levin  <ldv@altlinux.org>

	* strace.c (main) [!USE_PROCFS]: In child process, raise SIGSTOP
	right before execv() call.  Remove fake_execve() call.
	* defs.h (fake_execve): Remove unused declaration.
	* process.c (fake_execve): Remove unused function.
	Fixes RH#143365.

2005-02-04  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.9.
	* debian/changelog, strace.spec: 4.5.9-2.

	* file.c (O_LARGEFILE): Omit when #undef'd because it was zero.

2005-02-02  Roland McGrath  <roland@redhat.com>

	* debian/control: Add strace-udeb package for installer debugging.
	* debian/rules (binary-arch): Build it.
	From Joshua Kwan <joshk@triplehelix.org>.
	Fixes Debian bug #268294.

	* file.c (openmodes) [O_LARGEFILE] [O_LARGEFILE == 0]: Redefine to
	known values for Linux.

	* util.c (printcall): Print 16 ?s when long is 8 bytes.
	Fixes RH#146932.

	* linux/sparc/syscall.h: Declare sys_epoll_create, sys_epoll_ctl,
	sys_epoll_wait.
	* linux/sparc64/syscall.h: Just #include "../sparc/syscall.h" here.
	* ioctl.c (nioctlents2): Add const to type.
	Fixes Debian bug #278449.

	* sock.c (iffflags): New variable, table of IFF_* values.
	(print_addr): New function.
	(sock_ioctl): Handle SIOCGIFADDR, SIOCGIFDSTADDR, SIOCGIFBRDADDR,
	SIOCGIFNETMASK, SIOCGIFFLAGS, SIOCGIFMETRIC, SIOCGIFMTU, SIOCGIFSLAVE,
	SIOCGIFHWADDR.	Use print_addr for SIOCGIFCONF, SIOCGIFNAME, and
	SIOCGIFINDEX, and fix their output.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#138223.
	Fixes Debian bug #192164.

2004-12-20  Dmitry V. Levin  <ldv@altlinux.org>

	* configure.ac: Use AC_GNU_SOURCE macro instead of changing CFLAGS.
	* defs.h [HAVE_CONFIG_H]: Include config.h first.
	* strace.c: Include "defs.h" first.
	Fixes RH#143370.

	* syscall.c (call_summary): Fix potential NULL dereference.
	Fixes RH#143369.

2004-12-19  Dmitry V. Levin  <ldv@altlinux.org>

	* syscall.c (qual_signal): Check bounds for numeric signal names.
	Fix parser of symbolic signal names.
	Fix return code, as required by qualify() function.
	* syscall.c (qual_desc): Check bounds for descriptor number.
	* syscall.c (qual_syscall): Correct return code, to be consistent
	with qualify() and other qual_* functions.
	Fixes RH#143362.

2005-02-01  Roland McGrath  <roland@redhat.com>

	* system.c [LINUX] (MS_MANDLOCK, MS_NOATIME, MS_NODIRATIME, MS_BIND,
	MS_MOVE, MS_REC, MS_VERBOSE, MS_POSIXACL, MS_ACTIVE, MS_NOUSER):
	New macros.
	[LINUX] (mount_flags): Add them.
	[LINUX] (sys_mount): If any of (MS_BIND|MS_MOVE|MS_REMOUNT) bits are
	set in the flags argument, don't try to fetch the filesystem string.
	Fixes RH#141932.

	* config.guess: Update from canonical version, timestamp 2004-11-12.
	* config.sub: Likewise, timestamp 2004-11-30.

	* process.c [LINUX] [X86_64] (sys_arch_prctl): New function.
	* linux/syscall.h: Declare it.
	* linux/x86_64/syscallent.h: Use it.
	Part of RH#142667.

	* process.c (sys_sched_setscheduler): Use %#lx format for bad pointer.
	(sys_sched_getparam, sys_sched_setparam): Likewise.
	Part of RH#142667.

	* signal.c [HAVE_SIGACTION] [LINUX && X86_64] (SA_RESTORER): Define
	here too.
	Part of RH#142667.

	* linux/syscallent.h: Use sys_mincore instead of printargs.
	* linux/x86_64/syscallent.h: Likewise.  Also use sys_getrlimit,
	sys_semtimedop, sys_umount2.
	Part of RH#142667.

	* syscall.c (qual_signal): Fix inverted return value and bogus
	argument to qualify_one in the named case.

	* file.c (print_xattr_val): Don't use auto array sized by syscall
	argument.  Use malloc instead, so it can fail for insane values.
	Fixes Debian bug #283704.

	* net.c (sys_getsockopt): Fix a format %ld -> %d.

	* linux/syscall.h [IA64] (SYS_semtimedop): #undef it.

	* syscall.c (syscall_enter) [X86_64]: Fix 32-bit argument register map
	not to double the middle entry!
	Fixes RH#146093.

	* linux/x86_64/syscallent.h: Fix exit_group entry.

	* util.c (getpc) [S390 || S390X]: Implement it.
	Patch by David Wilder <wilder@us.ibm.com>.

	* linux/ia64/syscallent.h: Add fadvise64, fstatfs64, statfs64, mbind,
	[gs]et_mempolicy, mq_*, sys_kexec_load, vserver, and waitid.
	Fixes RH#146245.

2005-01-22  Andreas Schwab  <schwab@suse.de>

	* net.c (sys_getsockopt): Change type of len to int.

2004-10-19  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.8.
	* debian/changelog, strace.spec: 4.5.8-1.

	* file.c (sys_fadvise64): Conditionalize just on [LINUX].

	* configure.ac: Check for sys/epoll.h.
	* desc.c: Protect #include <sys/epoll.h> with [HAVE_SYS_EPOLL_H].
	(epollctls, epollevents): Protect each entry with #ifdef on its macro.

	* strace.c (handle_group_exit): Don't detach leader that wasn't
	TCB_ATTACHED.  Instead mark it with TCB_GROUP_EXITING.
	Remove droptcb loop at end, no longer required since 2.6 reports each
	thread death.
	Fixes RH#135254.

	* strace.c (trace): Use handle_group_exit for non-TCB_ATTACHED child
	taking signal when it has nclone_threads > 0.

	* strace.c (handle_group_exit, trace): Mark leader with
	TCB_GROUP_EXITING and don't be surprised at child deaths when their
	leader has it set.
	Fixes RH#132150.

	* process.c (WCOREFLAG): Define if not defined.
	(W_STOPCODE, W_EXITCODE): Likewise.
	Reported by Marty Leisner <mleisner@eng.mc.xerox.com>.

	* sock.c [! LINUX]: Include <sys/socket.h> before <sys/sockio.h>.
	Reported by Marty Leisner <mleisner@eng.mc.xerox.com>.

	* debian/rules: Make strace64.1.gz symlink to strace.1.gz instead of
	strace64.1 to strace.1, which doesn't exist.
	Fixes Debian bug #269220.

2004-09-05  Phil Blundell  <pb@nexus.co.uk>

	* linux/arm/syscallent.h: New file.

2004-10-19  Roland McGrath  <roland@redhat.com>

	* debian/rules (DEB_BUILD_GNU_TYPE, CONFIG_OPTS): New variables.
	[$(DEB_HOST_GNU_TYPE) == s390-linux] (build64, HOST64, CC64): Set them.
	(build/Makefile): Use $(CONFIG_OPTS).
	(build64/Makefile): Pass --host as well as --build.
	From Bastian Blank <waldi@debian.org>.
	Fixes Debian bug #271500.

	* linux/hppa/syscallent.h: Update for 2.6.9 syscalls.
	From Randolph Chung <tausq@debian.org>
	Fixes Debian bug #273887.

	* file.c (sys_llseek): Revert last change.

2004-09-14  Richard Henderson  <rth@twiddle.net>

	* linux/alpha/syscallent.h: Add tgkill, *stat64, vserver, mbind,
	[gs]et_mempolicy, mq_*, waitid.

2004-10-07  Roland McGrath  <roland@redhat.com>

	* file.c (sys_llssek, sys_readahead, sys_fadvise64, sys_fadvise64_64):
	Use LONG_LONG macro.
	* io.c (sys_pread, sys_pwrite, sys_sendfile): Likewise.

	* linux/x86_64/syscallent.h: Fix botched table entries.
	From Ulrich Drepper <drepper@redhat.com>.

	* mem.c [LINUX] (sys_mbind, sys_set_mempolicy, sys_get_mempolicy):
	New functions.
	* linux/syscall.h: Declare them.
	* linux/x86_64/syscallent.h: Likewise.
	From Ulrich Drepper <drepper@redhat.com>.

	* linux/syscallent.h: Handle mbind, set_mempolicy, get_mempolicy.
	From Ulrich Drepper <drepper@redhat.com>.

	* file.c [LINUX && (I386 || X86_64)] (sys_fadvise64, sys_fadvise64_64):
	New functions.
	* linux/syscall.h: Declare them.
	* linux/syscallent.h: Handle fadvise64 and fadvise64_64 using those.
	* linux/x86_64/syscallent.h: Likewise.
	From Ulrich Drepper <drepper@redhat.com>.

2004-09-13  Dmitry V. Levin  <ldv@altlinux.org>

	* linux/ioctlsort.c (main): Omit duplicate lines
	(with same name and code) from output.
	* linux/ioctlent.sh: Build the list of ioctls defined in
	scsi/sg.h (0x22..), scsi/scsi.h and scsi/scsi_ioctl.h (0x53..),
	as suggested by Peter Jones <pjones@redhat.com>
	* linux/ioctlent.h: Regenerated.
	Fixes RH#129808.

2004-09-13  Ulrich Drepper <drepper@redhat.com>
	    Dmitry V. Levin <ldv@altlinux.org>

	* time.c [LINUX] (print_rtc): New function, for printing rtc_time
	structure.
	[LINUX] (rtc_ioctl): New function, for parsing RTC_* ioctls.
	* ioctl.c [LINUX] (ioctl_decode): Call rtc_ioctl.
	* defs.h [LINUX]: Declare rtc_ioctl.
	Fixes RH#58606.

2004-10-06  Roland McGrath  <roland@redhat.com>

	* desc.c [LINUX] (sys_epoll_create, sys_epoll_ctl, sys_epoll_wait):
	New functions.
	* linux/syscall.h: Declare them.
	* linux/syscallent.h: Use those for epoll_* syscalls.
	* linux/alpha/syscallent.h: Likewise.
	* linux/hppa/syscallent.h: Likewise.
	* linux/ia64/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/sparc64/syscallent.h: Likewise.
	* linux/sparc64/syscallent2.h: Likewise.
	* linux/x86_64/syscallent.h: Likewise.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#134463.

	* resource.c (resources): Add RLIMIT_LOCKS, RLIMIT_SIGPENDING,
	and RLIMIT_MSGQUEUE, if defined.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#133594.

	* net.c [HAVE_SENDMSG] (printcmsghdr): New function.
	(printmsghdr): Use it.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#131689.

	* file.c (sprintmode): Add const to return type.
	(sprintfstype): Likewise.
	* signal.c (printsiginfo): Add a const.

2004-09-15  Roland McGrath  <roland@redhat.com>

	* linux/x86_64/syscallent.h: Use sys_waitid.

	* linux/syscallent.h: waitid takes 5 arguments, and is in TP category.
	* process.c (sys_waitid): Handle fifth argument (struct rusage *).

2004-09-11  Roland McGrath  <roland@redhat.com>

	* time.c (sys_clock_nanosleep): Print zero flags arg correctly.
	(sys_timer_settime): Likewise.
	(printsigevent): Print signals by name for SIGEV_SIGNAL.
	(sys_timer_create): Print clock ID symbolically.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#131420.

2004-09-07  Michal Ludvig  <mludvig@suse.cz>

	* defs.h (nioctlents1, nsignals2): Fix typos in decls.

2004-09-03  Roland McGrath  <roland@redhat.com>

	* syscall.c (qual_options): Add const to defn.
	Update all uses.
	(call_count, error_count, tv_count): Variables removed.
	(struct call_counts, counts): New type and variable.
	Update all users of the old three to use the new array of structs.
	(trace_syscall): Allocate counts on first use.
	(sorted_count): Variable removed.
	(call_summary): Allocate locally.

	* syscall.c (sysent0, sysent1, sysent2, sysent): Add const to defn.
	(nsyscalls0, nsyscalls1, nsyscalls2): Likewise.
	(errnoent0, errnoent1, errnoent2, errnoent): Likewise.
	(nerrnos0, nerrnos1, nerrnos2): Likewise.
	* signal.c (signalent0, signalent1, signalent2): Likewise.
	(nsignals0, nsignals1, nsignals2): Likewise.
	(signame): LIkewise.
	* ioctl.c (ioctlent0, ioctlent1, ioctlent2): Likewise.
	(nioctlents0, nioctlents1, nioctlents2): Likewise.
	(ioctl_lookup, ioctl_next_match): Likewise.
	* defs.h: Update decls.
	* io.c (sys_ioctl): Update users.

	* util.c (xlookup, printxval, addflags, printflags): Use const for
	struct xlat * argument.
	* defs.h (xlookup, printxval, addflags, printflags): Update decls.
	* bjm.c: Add const to all struct xlat defns.
	* desc.c: Likewise.
	* file.c: Likewise.
	* ipc.c: Likewise.
	* mem.c: Likewise.
	* net.c: Likewise.
	* proc.c: Likewise.
	* process.c: Likewise.
	* resource.c: Likewise.
	* signal.c: Likewise.
	* sock.c: Likewise.
	* stream.c: Likewise.
	* system.c: Likewise.
	* term.c: Likewise.
	* time.c: Likewise.
	* util.c: Likewise.

2004-09-01  Roland McGrath  <roland@redhat.com>

	* linux/x86_64/syscallent.h: Add new entries for timer_*, clock_*, and
	mq_* syscalls, and names only for new calls up to 252.
	* linux/syscallent.h: Add waitid.
	* linux/x86_64/syscallent.h: Likewise.
	* linux/syscall.h: Declare sys_waitid.

	* process.c (internal_wait): Take second arg giving index of flags
	argument.
	* defs.h: Update prototype.
	* syscall.c (internal_syscall): Update caller.
	Also use internal_wait for SYS_waitid.
	* process.c (sys_waitid): Define for [LINUX] as well.
	Don't tweak TCB_SUSPENDED--internal_wait does that.
	(waitid_types): Conditionalize use of nonstandard P_* macros.

2004-08-31  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.7.
	* debian/changelog: 4.5.7-1.
	* strace.spec: 4.5.7-2.

	* debian/rules: Rewrite sparc64 change of 2004-07-12.
	Always do each build in a separate build directory.
	Fixes Debian bug #254728.

	* time.c (clocknames): Use #ifdef around CLOCK_* uses.

	* strace.1: Say that -c shows system CPU time, not real time.
	Fixes Debian bug #254438.

	* syscall.c (dumpio): Match pread and pwrite system calls too.
	Fixes Debian bug #239947.

	* net.c (sockoptions): Add all SO_* macros known in Linux 2.6.9.
	Fixes Debian bug #171653.

2004-07-12  Dmitry V. Levin  <ldv@altlinux.org>

	* signal.c [LINUX] (parse_sigset_t): Fix hex strings parser.
	Fixes RH#128091.

2004-08-30  Roland McGrath  <roland@redhat.com>

	* strace.c (main): Don't call fake_execve under -c.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#129166.

	* net.c (sockipoptions): Add some options.
	[SOL_IPV6] (sockipv6options): New variable.
	(sys_getsockopt, printsockopt): Use it for SOL_IPV6 level.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#128391.

	* time.c (clocknames): New variable, symbolic names for clock_t.
	(sys_clock_settime, sys_clock_gettime, sys_clock_nanosleep): Use it.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#129378.

	* system.c (personality_options): Hard-code values here.
	Don't #include <linux/personality.h> at all.
	Fixes RH#130965 and Debian bug #40588.

	* file.c (print_xattr_val): New function to show attribute values.
	(sys_setxattr, sys_fsetxattr, sys_getxattr, sys_fgetxattr): Use it.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#131177.

2004-07-12  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.6.
	* strace.spec, debian/changelog: 4.5.6-1.

	* Makefile.am (EXTRA_DIST): Add linux/sparc64 files.

	* debian/rules: On sparc-linux, build strace64 as well.
	From Ben Collins <bcollins@debian.org>.
	Fixes Debian bug #254728.

2004-07-07  David S. Miller  <davem@nuts.davemloft.net>

	* linux/sparc/syscallent.h: Sync with reality.
	* linux/sparc/syscall.h (sys_sendfile64, sys_futex, sys_gettid,
	sys_sched_setaffinity, sys_sched_getaffinity, sys_setxattr,
	sys_lsetxattr, sys_fsetxattr, sys_getxattr, sys_lgetxattr,
	sys_fgetxattr, sys_listxattr, sys_llistxattr, sys_flistxattr,
	sys_removexattr, sys_lremovexattr, sys_fremovexattr,
	sys_remap_file_pages, sys_readahead, sys_tgkill, sys_statfs64,
	sys_fstatfs64, sys_clock_settime, sys_clock_gettime,
	sys_clock_getres, sys_clock_nanosleep, sys_timer_create,
	sys_timer_settime, sys_timer_gettime): New declarations.
	* linux/sparc64/dummy2.h, linux/sparc64/syscallent2.h,
	linux/sparc64/syscall.h, linux/sparc64/errnoent.h,
	linux/sparc64/errnoent1.h, linux/sparc64/errnoent2.h,
	linux/sparc64/ioctlent.h, linux/sparc64/ioctlent1.h,
	linux/sparc64/ioctlent2.h, linux/sparc64/signalent.h,
	linux/sparc64/signalent.h, linux/sparc64/signalent.h,
	linux/sparc64/signalent1.h, linux/sparc64/signalent2.h,
	linux/sparc64/syscall1.h, linux/sparc64/syscallent.h,
	linux/sparc64/syscallent1.h: New files.
	* defs.h (LINUXSPARC): Define also when SPARC64.
	(LINUX && SPARC64): Set SUPPORTED_PERSONALITIES to 3.
	Ignore SIGTRAP after execve by defining TCB_WAITEXECVE.
	Define possibly missing __NR_exit_group.  Declare getrval2.
	* configure.ac (sparc64): New architecture case.
	* file.c (stat_sparc64): New structure.
	(printstat_sparc64): New output routine for that.
	(printstat): Call it, if personality is 2.
	(printstat64): Likewise.
	* util.c: Conditionalize ptrace defines on LINUXSPARC
	not LINUX && SPARC.
	(SPARC64 && LINUX): Define r_pc to r_tpc, and PTRACE_FOOREGS
	to PTRACE_FOOREGS64 so that more sparc code can be shared
	between 64-bit and 32-bit.
	(_hack_syscall5): Correct trap number when SPARC64.
	(PTRACE_WRITE{TEXT,DATA}): Add SPARC64 to ifdef guard.
	(getpc): Handle SPARC64 && LINUX.
	(printcall): Likewise.
	(arg fetching/setting): Use same code for SPARC64 LINUX
	as for SPARC.
	(setbpt): Handle SPARC64 && LINUX.
	(clearbpt): Likewise.
	* signal.c: Conditionalize ptrace defines on SPARC and
	SPARC64.
	(SPARC64 && LINUX): Define r_pc to r_tpc, and PTRACE_FOOREGS
	to PTRACE_FOOREGS64 so that more sparc code can be shared
	between 64-bit and 32-bit.
	(m_siginfo): Use same definition on SPARC64 as SPARC.
	(sys_sigreturn): Handle LINUX && SPARC64.
	* syscall.c: Conditionalize ptrace defines on SPARC and
	SPARC64.
	(SPARC64 && LINUX): Define r_pc to r_tpc, and PTRACE_FOOREGS
	to PTRACE_FOOREGS64 so that more sparc code can be shared
	between 64-bit and 32-bit.
	(getscno): Use same static state on SPARC64 as SPARC,
	and add SPARC64 handling.
	(get_error): Handle LINUX && SPARC64.
	(force_result): Likewise.
	(syscall_enter): Likewise.
	(trace_syscall): Handle sys_socketcall and sys_ipc on SPARC64
	just like SPARC.
	(getrval2): Handle LINUX && SPARC64.
	* process.c: Conditionalize ptrace defines on SPARC and
	SPARC64.
	(SPARC64 && LINUX): Define r_pc to r_tpc, and PTRACE_FOOREGS
	to PTRACE_FOOREGS64 so that more sparc code can be shared
	between 64-bit and 32-bit.
	(change_syscall): Handle LINUX && SPARC64.
	(struct_user_offsets): Ifdef out those which do not exist
	on SPARC64.
	* net.c (sys_pipe): Handle LINUX && SPARC64.
	* ioctl.c: Fix initializer typo for nioctlents2, was
	nioctlents1 by accident.

2004-06-28  Andreas Schwab  <schwab@suse.de>

	* process.c (internal_exec): Move TCB_WAITEXECVE handling here.
	(sys_execve): Remove it here.

2004-07-12  Roland McGrath  <roland@redhat.com>

	* Makefile.am (EXTRA_DIST): Add linux/sh64/syscallent.h.

	* debian/control (Section): Move to utils, matching Debian override.

	* net.c (addrfams): Make variable global.
	* sock.c (sock_ioctl): Decode the arguments for SIOCGIFNAME,
	SIOCGIFINDEX, and SIOCGIFCONF.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#126917.

	* linux/ioctlsort.c: Add some #includes.
	[POWERPC]: Kludge out high bits.
	* linux/ia64/ioctlent.h: Regenerated using RHEL3 headers.
	* linux/powerpc/ioctlent.h: Likewise.

2004-07-11  Roland McGrath  <roland@redhat.com>

	* linux/ioctlent.sh: Replace asm with $asm in all places.

	* configure.ac: Add I386 as AM_CONDITIONAL.
	* Makefile.am [LINUX]: Add maintainer-mode rules to regenerate
	the ioctlent.h file.

2004-07-08  Roland McGrath  <roland@redhat.com>

	* resource.c (sys_quotactl): Truncate first argument to 32 bits, since
	that's what the kernel will do.

2004-07-07  Roland McGrath  <roland@redhat.com>

	* linux/ioctlent.sh: Take optional second argument to use as directory
	name in place of `asm'.

2004-06-27  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.5.
	* strace.spec, debian/changelog: 4.5.5-1.

2004-06-22  Roland McGrath  <roland@redhat.com>

	* syscall.c (syscall_fixup) [LINUX && X86_64]: For 32-bit process,
	sign extend the low 32 bits of RAX to 64 bits.
	Fixes RH#126547.

	* syscall.c (force_result): [LINUX && X86_64]: Fix RAX*4 -> RAX*8.

2004-06-03  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.4.
	* strace.spec, debian/changelog: 4.5.4-1.

	* net.c (domains): Add many PF_* values #ifdef PF_*.
	(addrfams): Add many AF_* values #ifdef AF_*.
	Fixes Debian bug #250506.

2004-05-02  Dmitry V. Levin  <ldv@altlinux.org>

	* linux/ioctlsort.c (compare): When ioctl codes equal, compare
	names.
	(main): Print a note that program output is generated by
	ioctlsort.
	* linux/ioctlent.sh: Build the list of ioctls defined in
	linux/fb.h (0x46..), linux/kd.h (0x4B..), linux/cdrom.h (0x53..),
	asm/ioctls.h (0x54..), linux/vt.h (0x56..), linux/videotext.h
	(0x71..), linux/videotext.h (0x72..), asm/sockios.h (0x89..),
	linux/sockios.h (0x89..), linux/wireless.h (0x8B..).
	* linux/ioctlent.h: Regenerated from linux-2.6.5.
	Fixes RH#122257.

2004-06-03  Roland McGrath  <roland@redhat.com>

	* debian/control (Architecture): Add amd64.
	Fixes Debian bug #246568.

	* strace.c (main) [LINUX]: Expand TCBTAB as necessary for threads
	attached.  Attach threads only under -f.  Set TCB_FOLLOWFORK in them.
	(expand_tcbtab): New function, broken out of ...
	* process.c (fork_tcb): ... here, call that.
	* defs.h: Declare expand_tcbtab.

2004-04-19  Roland McGrath  <roland@redhat.com>

	* process.c (printstatus): Add a space before | in output.

2004-04-16  Roland McGrath  <roland@redhat.com>

	* configure.ac: Version 4.5.3.
	* strace.spec, debian/changelog: 4.5.3-1.

2004-03-18  Dmitry V. Levin  <ldv@altlinux.org>

	* resource.c (sys_quotactl) [LINUX]: Cast arithmetic shift operand
	from long to unsigned long, to fix output of the quotactl command
	parser.
	Fixes RH#118694.

2004-04-16  Roland McGrath  <roland@redhat.com>

	* linux/s390/ioctlent.h, linux/s390x/ioctlent.h: Update DASD ioctls.
	From Maxim Shchetynin <maxim@de.ibm.com>.

	* configure.ac: Check for <mqueue.h>.
	* ipc.c (sys_mq_open, printmqattr) [! HAVE_MQUEUE_H]: Don't try to
	decode struct mq_attr.
	* NEWS: Mention mq support.

	* linux/syscall.h: Support new mq_* syscalls on Linux.
	* linux/syscallent.h: Likewise.
	* linux/dummy.h: Likewise.
	* ipc.c: Likewise.
	* time.c (printsigevent): Handle SIGEV_THREAD.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#120701.

2004-04-13  Roland McGrath  <roland@redhat.com>

	* net.c (msg_flags): Grok MSG_FIX, MSG_SYN, MSG_RST, MSG_NOSIGNAL,
	MSG_MORE.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#120541.

	* process.c (printstatus): Mask out bits presented symbolically, and
	print "| 0xnnn" if the remaining bits are not all zero.
	Fixes Debian bug #240062.

	* process.c (print_affinitylist): Rewritten to handle indirect values.
	(sys_sched_setaffinity, sys_sched_getaffinity): Update callers.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#118685.

	* acinclude.m4: Quote first argument to AC_DEFUN in all cases.

2004-04-08  Roland McGrath  <roland@redhat.com>

	* strace.c (main) [LINUX]: When attaching for -p, look in
	/proc/PID/task for all threads and attach them as presumed
	CLONE_THREAD children.
	* NEWS: Mention the feature.
	Fixes RH#120462.

2004-03-02  Roland McGrath  <roland@redhat.com>

	* util.c (setbpt): Fix one missed spot to use new arg0_index macro.
	From Michael Holzheu <HOLZHEU@de.ibm.com>.

	* debian/control (Standards-Version): Update to 3.6.1.

2004-03-01  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.2.
	* strace.spec, debian/changelog: 4.5.2-1.

	* strace.c (main): Avoid potential buffer overruns from ludicrous
	arguments or PATH values.
	* syscall.c (qual_signal): Bail out for too-long string.

	* mem.c [LINUX]: <asm/mman.h> -> <linux/mman.h>
	Fixes Debian bug #223207.

	* linux/sparc/syscall.h: Copy linux/syscall.h decls of sys_sched_*.

	* configure.ac: Check for `struct user_desc' in <asm/ldt.h>.
	* process.c [HAVE_STRUCT_USER_DESC]: Use struct user_desc in place of
	struct modify_ldt_ldt_s.
	* mem.c [HAVE_STRUCT_USER_DESC]: Likewise.

	* system.c (sysctl_vm): Conditionalize VM_* macro uses, add some more.
	From Tim Yamin <plasmaroo@gentoo.org>.

	* process.c (sys_execve): Clear instead of set TCB_WAITEXECVE on
	erring syscall.

	* configure.ac: Check for `struct pt_all_user_regs'
	and `struct ia64_fpreg' in <sys/ptrace.h>.
	* util.c, process.c, syscall.c, signal.c: Work around conflicts between
	<sys/ptrace.h> and <linux/ptrace.h> for defining those types.

	* process.c (struct_user_offsets) [LINUX && IA64]: Conditionalize
	PT_AR_CSD and PT_AR_SSD uses in case of older kernel headers.

	* util.c [LINUX] (arg0_index, arg1_index): New macros.
	[S390 || S390X]: Define them with inverted values.
	(setbpt): Use them for u_arg indices.

2004-02-26  Andreas Schwab  <schwab@suse.de>

	* defs.h [LINUX && IA64]: Declare getrval2 also on IA64.
	* net.c (sys_pipe) [LINUX && IA64]: For IA64 use the two return values.
	* syscall.c (getrval2) [LINUX && IA64]: Implement for IA64.

2004-03-01  Roland McGrath  <roland@redhat.com>

	* linux/dummy.h (sys_sched_getscheduler, sys_sched_setparam,
	sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler,
	sys_sched_get_priority_max, sys_sched_get_priority_min): Remove macros.
	* process.c [LINUX] (sys_sched_getscheduler, sys_sched_setparam,
	sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler,
	sys_sched_get_priority_min): New functions.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#116990.

2004-02-20  Roland McGrath  <roland@redhat.com>

	* linux/hppa/syscallent.h: Update some syscalls.
	From Randolph Chung <tausq@debian.org>.
	Fixes Debian bug #231632.

2003-12-31  David Mosberger  <davidm@hpl.hp.com>

	* process.c (internal_exit): For ia64, also recognize IA-32 252
	as exit_group().
	(change_syscall): For IA64, also support changing IA-32 syscalls.
	* syscall.c (internal_syscall): For IA64, also recognize IA-32
        syscall 252 (exit_group) as an internal_exit() syscall.
	* util.c (SYS_fork): For IA64, define them to the IA-32 syscall
	number.
	(SYS_vfork): Likewise.
	(arg_setup): For IA64 version, also support IA-32 syscalls.
	(get_arg0): Likewise.
	(get_arg1): Likewise.
	(set_arg0): Likewise.
	(set_arg1): Likewise.

2004-02-15  Anton Blanchard  <anton@samba.org>

	* linux/powerpc/syscallent.h: Add rtas call.
	Shift multiplexed syscalls to start at 300, we are already about
	to hit 256 real syscalls.
	* linux/syscall.h: SYS_socket_subcall is now 300 for [POWERPC].

2004-02-19  Roland McGrath  <roland@redhat.com>

	* strace.c (main): Use TCP->pid, not PID, in -p message.
	Fixes Debian bug #229802.

2004-01-13  Roland McGrath  <roland@redhat.com>

	* syscall.c (force_result) [LINUX] [S390 || S390X]: Remove bogus upeek
	call.

	* stream.c (internal_stream_ioctl): Fix typo strict -> struct.
	Reported by Petter Reinholdtsen <pere@hungry.com>.

2003-12-31  David Mosberger  <davidm@hpl.hp.com>

	* process.c (struct_user_offsets) [IA64]: Fix up register name list.

2003-12-14  Anton Blanchard  <anton@samba.org>

	* file.c (sys_getdents64): Don't cast d_ino and d_off to unsigned long.
	Use %llu formats for them.

	* file.c [LINUX] (fsmagic): Add SYSFS_MAGIC.

	* linux/powerpc/syscallent.h: Update to include recently added
	syscalls.

	* syscall.c (get_error) [POWERPC]: Cast result to unsigned long for
	ppc64, we were misreporting syscalls that really succeeded as having
	failed.

2004-01-13  Roland McGrath  <roland@redhat.com>

	* strace.1: Remove comment about vfork on Linux.
	Fixes Debian bug #223390.

	* file.c (direnttypes): Define under [LINUX] as well.  Add DT_UNKNOWN.
	(sys_getdents64) [LINUX]: Print d_type field.

2003-12-15  Dmitry V. Levin  <ldv@altlinux.org>

	* strace.c (trace) [WCOREDUMP]: Show coredump status of the
	killed process if available.  Fixes RH#112117.

2003-11-13  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.1.
	* strace.spec, debian/changelog: 4.5.1-1.

2003-09-06  Dmitry V. Levin  <ldv@altlinux.org>

	* defs.h (ioctl_lookup): Prototype change.
	* ioctl.c (ioctl_next_match): New function.
	* defs.h: Declare it.
	* io.c (sys_ioctl): Use it, to display all possible ioctl names
	when there's more than one match.
	* ioctl.c (ioctl_lookup): Likewise.
	* stream.c (internal_stream_ioctl): Likewise.
	Patch from Solar Designer <solar@openwall.com>.

2003-11-13  Roland McGrath  <roland@redhat.com>

	* linux/sh/syscallent.h: Use sys_setgroups32, sys_getgroups32.
	* linux/sh64/syscallent.h: Likewise.

2003-09-06  Dmitry V. Levin  <ldv@altlinux.org>

	Fixes for RH#105359.
	* util.c (printuid): New function.
	* defs.h: Declare it.
	* file.c (sys_chown): Use it.
	* file.c (sys_fchown): Likewise.
	* process.c (sys_setreuid, sys_setregid, sys_setresuid,
	sys_setresgid): Likewise.
	* linux/syscallent.h: Better handle getgid32, geteuid32, getegid32,
	setreuid32, setregid32, getgroups32, setgroups32, fchown32,
	setresuid32, getresuid32, setresgid32, getresgid32, chown32,
	setuid32, setgid32, setfsuid32, setfsgid32.
	* process.c [LINUX]: Define GETGROUPS32_T.
	* process.c [LINUX] (sys_setgroups32, sys_getgroups32):
	New functions.
	* linux/syscall.h (sys_setgroups32, sys_getgroups32):
	Declare them.

2003-11-11  Roland McGrath  <roland@redhat.com>

	* strace.c (main): Bail with usage error for missing command before we
	open the -o file or fiddle uids.

2003-11-06  Roland McGrath  <roland@redhat.com>

	* strace.c (main): Treat piped output more like file output.
	Disallow -ff with piped output.  Fixes RH#105366.
	Reported by Dmitry V. Levin <ldv@altlinux.org>

	* strace.c (tprintf): Check result of vfprintf and use perror when it
	fails while not writing to stderr itself.  Fixes Debian bug #218762.

	* net.c (printsock): Fix typo in #ifdef AF_NETLINK.
	From Ulrich Drepper <drepper@redhat.com>.

2003-11-01  Roland McGrath  <roland@redhat.com>

	* syscall.c (trace_syscall) [LINUX]: Calculate ONE_TICK once using
	setitimer rather than hard-coding a value based on HZ.
	Fixes RH#108012, reported by Florian La Roche <laroche@redhat.com>.

2003-10-21  Roland McGrath  <roland@redhat.com>

	* strace.1: Fixed a few spelling errors.
	Fixes Debian bug #217008.

	* syscall.c: Revert last change, was broken.

2003-10-01  Roland McGrath  <roland@redhat.com>

	* process.c (internal_clone): Don't suspend parent when call requested
	a specific PID that is not a traced child.

	* signal.c [LINUX] (parse_sigset_t): Rewrite to process hex strings
	from right to left so we don't have to presume the size.
	Reported by David Woodhouse <dwmw2@redhat.com>.

2003-09-25  Roland McGrath  <roland@redhat.com>

	* mem.c (mmap_prot) [PROT_SEM, PROT_GROWSDOWN, PROT_GROWSUP]: Include
	these in the table if they are defined.

2003-09-24  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.5.
	* strace.spec, debian/changelog: 4.5-1.

	* syscall.c (get_scno) [LINUX] [S390 || S390X]: Bail out of
	instruction decoding branch if TCB_INSYSCALL is clear.
	Reported by <jochen@penguin-breeder.org>.

	* linux/ioctlent.h: Swap order of overloaded TC* and SNDCTL_* values.

2003-09-23  Roland McGrath  <roland@redhat.com>

	* strace.spec: On ppc64 (maybe others later), create an strace64
	package as well containing just /usr/bin/strace64.

	* signal.c (sprintsigmask): Print RT_%u for __SIGRTMIN..__SIGRTMAX.
	Fixes RH#104365.

2003-08-21  Roland McGrath  <roland@redhat.com>

	* linux/syscallent.h: Fix mlock argument count.  Fixes RH#101499.
	* linux/x86_64/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.

2003-07-28  Daniel Jacobowitz  <drow@mvista.com>

	* defs.h (ALIGN64): Define for MIPS.
	* io.c (PREAD_OFFSET_ARG): Define.
	(sys_pread, sys_pwrite): Use it.
	* process.c (struct_user_offsets) [SH]: Check whether REG_XDREG0
	is defined.
	* linux/sh/syscallent.h (pread, pwrite): Take six arguments.
	(truncate64, ftruncate64): Pretty-print.
	* linux/mips/syscallent.h (pread, pwrite): Take six arguments.
	(truncate64, ftruncate64): Take four arguments.

2003-07-17  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.4.99.
	* strace.spec, debian/changelog: 4.4.99-1.

2003-07-15  Anton Blanchard  <anton@samba.org>

	* ipc.c: Add SHM_HUGETLB field.
	Mask out permission bits in msgget, semget and shmget before
		printing resource_flags.
	Mask execute permission bits (even though we dont currently
		use them).

2003-07-17  Roland McGrath  <roland@redhat.com>

	* linux/powerpc/syscallent.h (tgkill): New at 250.

	* linux/syscallent.h: truncate64/ftruncate64 need 3 args.
	From Ulrich Drepper <drepper@redhat.com>.

	* linux/syscallent.h: Handle statfs64, fstatfs64, utimes.
	* file.c (printstatfs): Print f_fsid and f_frsize.
	[LINUX] (printstatfs64, sys_statfs64, sys_fstatfs64): New functions.
	* linux/syscall.h: Add decls.
	From Ulrich Drepper <drepper@redhat.com>.

2003-07-09  Roland McGrath  <roland@redhat.com>

	* linux/ia64/syscallent.h (tgkill): New at 1235.

2003-07-05  Richard Henderson  <rth@twiddle.net>

	* process.c (sys_clone): Order arguments for alpha the same as x86_64.
	* syscall.c (ERESTART_RESTARTBLOCK): New.
	(trace_syscall): Print it.
	* linux/alpha/syscallent.h (osf_syscall): Name properly.
	(osf_set_program_attributes): Fix typo.
	(osf_nfssvc): Likewise.
	(osf_sigsendset): Likewise.
	(getdents64, gettid, readahead, tkill, setxattr, lsetxattr, fsetxattr,
	getxattr, lgetxattr, fgetxattr, listxattr, llistxattr, flistxattr,
	removexattr, lremovexattr, fremovexattr, futex, sched_setaffinity,
	sched_getaffinity, tuxcall, io_setup, io_destroy, io_getevents,
	io_submit, io_cancel, exit_group, lookup_dcookie, epoll_create,
	epoll_ctl, epoll_wait, remap_file_pages, set_tid_address,
	restart_syscall, fadvise, timer_create, timer_settime, timer_gettime,
	timer_getoverrun, timer_delete, clock_settime, clock_gettime,
	clock_getres, clock_nanosleep, semtimedop): New.

2003-07-08  Roland McGrath  <roland@redhat.com>

	* signal.c (sys_tgkill): New function.
	* linux/syscall.h: Declare it.
	* linux/syscallent.h: Add tgkill.

2003-06-27  Roland McGrath  <roland@redhat.com>

	* configure.ac: Check for type `struct __old_kernel_stat'.
	* file.c (convertoldstat, printoldstat): Define under
	[LINUX && HAVE_STRUCT___OLD_KERNEL_STAT] rather than a list of archs.
	(sys_oldstat, sys_oldfstat, sys_oldlstat): Likewise.
	* linux/dummy.h [! HAVE_STRUCT___OLD_KERNEL_STAT]
	(sys_oldstat, sys_oldfstat, sys_oldlstat): #define to printargs.

2003-06-26  Roland McGrath  <roland@redhat.com>

	* configure.ac: SHMEDIA -> SH64
	* defs.h: Likewise.
	* mem.c: Likewise.
	* process.c: Likewise.
	* sock.c: Likewise.
	* syscall.c: Likewise.
	* util.c: Likewise.
	* linux/shmedia/syscallent.h: Moved to ...
	* linux/sh64/syscallent.h: ... here.

	* config.guess: Update from canonical version, timestamp 2003-06-17.
	* config.sub: Likewise.

	* syscall.c (force_result) [LINUX] [ARM]: Fix variable usage.
	From: Joshua Neal <tinara@netpipeline.net>.

	* process.c [LINUX] (sys_futex): Grok FUTEX_REQUEUE and print 5th arg.
	* linux/syscallent.h: sys_futex argument count is now 5, not 4.
	* linux/ia64/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/x86_64/syscallent.h: Likewise.
	From Jakub Jelinek <jakub@redhat.com>.

	* syscall.c (get_scno) [S390 || S390X]: Fix old vs new mode detection.
	From Michael Holzheu <HOLZHEU@de.ibm.com>.

2003-06-23  Roland McGrath  <roland@redhat.com>

	* net.c (sys_socket): Decode protocol for PF_INET6 same as PF_INET.
	From Ulrich Drepper <drepper@redhat.com>.

2003-06-10  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.4.98.
	* strace.spec, debian/changelog: 4.4.98-1.

2003-06-09  Roland McGrath  <roland@redhat.com>

	* linux/s390x/syscallent.h: Update many syscalls.
	* linux/syscall.h (SYS_socket_subcall): Update [S390X] value.

	* linux/s390/syscallent.h: Update many syscalls.
	* linux/syscall.h (SYS_socket_subcall): Update [S390] value.

	* linux/shmedia/syscallent.h: New file.
	From Stephen Thomas <stephen.thomas@superh.com>.

	* strace.c (trace): Print a message and newline for a WIFEXITED report
	from the process we just printed an unterminated syscall line for.

2003-06-03  Roland McGrath  <roland@redhat.com>

	* util.c (printcall) [LINUX]: Fix typo [IA62] -> [IA64].

	Linux/ARM improvements from Russell King <rmk@arm.linux.org.uk>:
	* defs.h [LINUX] (TCB_WAITEXECVE): Define for [ARM] too.
	* process.c (struct_user_offsets) [LINUX] [ARM]: Add ARM registers.
	* signal.c [LINUX] (sys_sigreturn) [ARM]: New case.
	* syscall.c (get_scno, syscall_fixup) [LINUX] [ARM]: Case rewritten.
	(get_error) [LINUX] [ARM]: Update.
	(syscall_enter) [LINUX] [ARM]: New case.
	* util.c (printcall) [LINUX] [ARM]: New case.

	* debian/control (Standards-Version): Update to 3.5.10.

	* strace.c (main): In PATH search, accept only a regular file with
	execute bits set.  Fixes Debian bug #137103.

2003-06-02  Roland McGrath  <roland@redhat.com>

	* strace.c (main): Set -q when given -o and not -p, and not when not
	given -o, to match what the man page always said.
	Fixes Debian bug #47113, #153678.

	* configure.ac, NEWS: Version 4.4.97.
	* strace.spec, debian/changelog: 4.4.97-1.

	* configure.ac, defs.h, mem.c, process.c, sock.c, syscall.c, util.c:
	Merged in SHmedia port from Stephen Thomas <stephen.thomas@superh.com>.

	* config.guess: Update from ftp://ftp.gnu.org/pub/gnu/config/,
	timestamp 2003-05-22.
	* config.sub: Likewise, timestamp 2003-05-24.

2003-05-22  Roland McGrath  <roland@redhat.com>

	* defs.h (struct tcb): New member `nzombies'.
	* strace.c (alloctcb): Initialize it.
	(droptcb): Increment our parent's zombie count.
	* process.c (internal_wait): Don't go into TCB_SUSPENDED if the
	process has zombies it can reap.  On the way out, if we reaped
	an untraced process, decrement the zombie count.

	* process.c (sys_clone): Mask CSIGNAL out of flags and print that
	separately using signame.

	* process.c (internal_clone) [TCB_CLONE_THREAD]: Use ARG_FLAGS instead
	of literal 0 for index.  Consult the right flags without clobbering
	anything when we reparent the new child to the caller's parent thread.

	* linux/s390/syscallent.h: Fix sys_clone argument count.
	* linux/s390x/syscallent.h: Likewise.
	* linux/mips/syscallent.h: Likewise.
	* linux/alpha/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/sh/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/hppa/syscallent.h: Likewise.

	* process.c [LINUX] [S390 || S390X] (ARG_CTID, ARG_TLS): Fix swapped
	indices.  Reported by Jakub Jelinek <jakub@redhat.com>.

	* signal.c [LINUX] (SI_SIGIO, SI_TKILL): New macros.
	[LINUX || SVR4] (siginfo_codes): Add strings for them.

	* process.c (print_affinitylist): Fix loop condition.
	Reported by Ian Wienand <ianw@gelato.unsw.edu.au>.

2003-04-10  Roland McGrath  <roland@redhat.com>

	* syscall.c (qual_desc): Return zero after parsing number.
	From Rob Leslie <rob@mars.org>, fixes Debian bug #188379.

2003-04-07  Roland McGrath  <roland@redhat.com>

	* linux/syscallent.h: Handle semtimedop subcall of ipc syscall.
	* linux/syscall.h: Likewise.
	* ipc.c [LINUX] (sys_semtimedop): New function.
	From Ulrich Drepper <drepper@redhat.com>.

	* ipc.c (sys_semget): Mask off permission bits for resource_flags.
	From Ulrich Drepper <drepper@redhat.com>.

2003-04-01  Philippe De Muyter  <phdm@macqel.be>

	* sock.c, stream.c: Check #ifdef LINUX, not linux.
	* file.c: Always provide sys_*attr, regardless of #ifdef XATTR_CREATE.

2003-03-30  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.4.96.
	* strace.spec, debian/changelog: 4.4.96-1.

2003-02-26  Stuart Menefy <stuart.menefy@st.com>

	Various fixes for SuperH [SH]:
	* mem.c (sys_old_mmap): mmap() parameters passed in registers
	* net.c (sys_pipe), syscall.c (getrval2): pipe() results returned
	in registers
	* process.c (change_syscall): Fixed register which holds system
	call number
	* util.c (arg0_offset, arg1_offset): provide definition
	* Makefile.am: Added new files in linux/sh
	* linux/sh/syscallent.h: New file.
	* linux/sh/errnoent.h: New file.
	* linux/sh/ioctlent.h: New file.
	* linux/sh/signalent.h: New file.

	* linux/ioctlent.sh: Take an arg for location of header files
	* syscallent.sh: Replaced lost $

2003-03-30  Roland McGrath  <roland@redhat.com>

	* time.c [LINUX]: Handle new Linux 2.5 clock/timer syscalls.
	* linux/syscall.h, linux/syscallent.h, linux/dummy.h: Likewise.
	From Ulrich Drepper <drepper@redhat.com>.

	* linux/syscallent.h: Use sys_getrlimit for 191.
	Use name "old_getrlimit" for 76.
	Reported by Ulrich Drepper <drepper@redhat.com>.

2003-03-18  Roland McGrath  <roland@redhat.com>

	* process.c [LINUX] (sys_clone): Don't dereference parent_tid argument.

2003-03-17  Roland McGrath  <roland@redhat.com>

	* linux/x86_64/syscallent.h: clone takes 5 args.
	* process.c [LINUX] (sys_clone) [X86_64]: Fix argument order.

2003-03-15  Roland McGrath  <roland@redhat.com>

	* linux/x86_64/syscallent.h: Add exit_group syscall at 231.

2003-03-14  Roland McGrath  <roland@redhat.com>

	* linux/x86_64/syscallent.h: Update and add many 2.5 syscalls.

	* linux/ia64/syscallent.h: clone takes 5 arguments.
	* process.c [LINUX && IA64] (ARG_*): Update for 2.5 clone calls.

2003-03-12  Roland McGrath  <roland@redhat.com>

	* linux/ia64/syscallent.h: Fix arg counts for clone and clone2.
	Use sys_clone for clone2.
	* linux/syscall.h: Don't declare sys_clone2.
	* process.c (sys_clone): Rewritten to handle both flavors,
	print all extra args depending on flag bits.
	(sys_clone2): Function removed.

	* linux/ia64/syscallent.h: Add a bunch of 2.5 syscalls.

2003-03-04  Roland McGrath  <roland@redhat.com>

	* syscall.c (get_scno) [IA64]: Do TCB_WAITEXECVE check only when
	TCB_INSYSCALL is clear, like other platforms do.

2003-03-04  Ulrich Drepper  <drepper@redhat.com>

	* mem.c [LINUX] (sys_remap_file_pages): New function.
	* linux/syscall.h: Declare it.
	* linux/syscallent.h: Use it.
	* linux/powerpc/syscallent.h: Likewise.

	* process.c [LINUX] (sys_futex): Omit final if op is not FUTEX_WAIT.

2003-02-26  Roland McGrath  <roland@redhat.com>

	* configure.ac: Fix typo in netinet/in.h check.
	Also include <sys/types.h> and <sys/socket.h> before <netinet/in.h>.
	Reported by Alex Semenyaka <alexs@snark.rinet.ru>.

2003-02-24  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.4.95.
	* strace.spec, debian/changelog: 4.4.95-1.

	* process.c (sys_getresgid): Fix typos in argument access.

2003-02-23  Roland McGrath  <roland@redhat.com>

	* process.c (sys_getresuid): Fix typos in argument access.
	Reported by Anton Blanchard <anton@samba.org>.

2003-02-19  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.4.94.
	* strace.spec, debian/changelog: 4.4.94-1.

	* version.c: Removed.
	* Makefile.am (strace_SOURCES): Remove it.
	* strace.c: Use PACKAGE_NAME and VERSION macros instead of version var.

	FreeBSD rfork support changes from Russ Cox <rsc@plan9.bell-labs.com>:
	* syscall.c (internal_syscall): Handle SYS_rfork with internal_fork.
	* process.c (internal_fork) [SYS_rfork]: Bail if RFPROC flag not set.

2003-01-23  Roland McGrath  <roland@redhat.com>

	* signal.c: Reorder #ifdefs so HAVE_ASM_SIGCONTEXT_H doesn't matter on
	SPARC, which doesn't use the header regardless.

	* util.c [LINUX && SPARC]: Do renaming kludges around <asm/reg.h>
	like signal.c does.

	* linux/sparc/syscall.h: Declare sys_getdents64, sys_llseek.

	* linux/dummy.h [! SYS_getpmsg] (sys_getpmsg): #define to printargs.
	[! SYS_putpmsg] (sys_putpmsg): Likewise.

	* process.c: Reorder includes to put sys/reg.h before linux/ptrace.h,
	since they can conflict.

2003-01-21  Roland McGrath  <roland@redhat.com>

	* strace.c (usage): Omit -z, since it has never worked properly.
	* NEWS: Likewise.

	* strace.c (main): Grok new option `-E var=val' or `-E var' to put
	var=val in environ or to remove var, respectively.
	(usage): Mention it.
	* strace.1, NEWS: Document it.

	* configure.ac, NEWS: Version 4.4.93.
	* strace.spec, debian/changelog: 4.4.93-1.
	* strace.spec (Source0): Use strace-VERSION.tar.bz2 now.

2003-01-20  Roland McGrath  <roland@redhat.com>

	* defs.h [LINUX] [S390 || S390X] (TCB_WAITEXECVE): Define it.
	* syscall.c (get_scno, syscall_fixup) [LINUX] [S390 || S390X]: Handle
	TCB_WAITEXECVE state with special kludges.

	* process.c [LINUX] (sys_clone) [S390 || S390X]: Argument order is
	reversed from other architectures.

	* process.c (sys_execve) [LINUX]: Make setting TCB_WAITEXECVE flag
	conditional on [TCB_WAITEXECVE] instead of list of processors.

	* util.c (restore_arg0): Evaluate args in no-op defns.

	* util.c [S390 || S390X] (arg0_offset, arg1_offset): Fix definitions
	for clone call on S390.  From Michael Holzheu <holzheu@de.ibm.com>.

2003-01-17  Anton Blanchard <anton@samba.org>

	* util.c [LINUX] (setbpt): Handle SYS_vfork like SYS_fork.

	* linux/syscall.h (SYS_socket_subcall): 256 also for POWERPC.

2003-01-14  Roland McGrath  <roland@redhat.com>

	* linux/powerpc/errnoent.h: Add missing errnos.
	* linux/powerpc/ioctlent.h: Update ioctl values.
	From Anton Blanchard <anton@samba.org>.

	* io.c [LINUX] (sys_pread, sys_pwrite): Fix last change.
	From Anton Blanchard <anton@samba.org>.

	* linux/hppa/syscallent.h: Use sys_getdents64, sys_truncate64,
	sys_ftruncate64, instead of printargs, for those syscalls.
	* linux/mips/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.

	* linux/syscall.h (SYS_socket_subcall): Only 256 for S390, S390X.
	All others at the moment use linux/syscallent.h, where it's 300.

	* strace.1: Update bug reporting info.

	* resource.c [LINUX] (quotacmds): Grok new command encodings.
	From Nathan Scott <nathans@debian.org>.

	* configure.ac, NEWS: Version 4.4.92.
	* strace.spec, debian/changelog: 4.4.92-1.

	* configure.ac: Match powerpc* (includes powerpc64), and don't match
	ppc (never comes out of config.sub).

	* process.c (sys_ptrace): Use #lx format for address argument.
	[POWERPC]: Use sizeof(unsigned long) in place of 4 for multipliers.
	* process.c [POWERPC]: Likewise.
	* signal.c (sys_sigreturn) [POWERPC]: Likewise.
	* syscall.c (get_scno) [POWERPC]: Likewise.
	* util.c [POWERPC]: Likewise.
	(printnum): Use long for NUM.
	From Anton Blanchard <anton@samba.org>.

	* defs.h (ALIGN64): Fix defn for PPC, same as FreeBSD one.

	* util.c [LINUX] (restore_arg0, restore_arg1): New macros, defined
	appropriately via set_arg0 or no-ops for each architecture.
	(clearbpt): Use those instead of set_arg0 and set_arg1.

	* defs.h [_LARGEFILE64_SOURCE] (_LFS64_LARGEFILE): Define it.
	* linux/syscallent.h: Use sys_getdents64, sys_truncate64,
	sys_ftruncate64, instead of printargs, for those syscalls.

	* process.c: Use <linux/ptrace.h> regardless of <sys/reg.h>.
	(sys_ptrace): Use printxval.
	(ptrace_cmds): Make PTRACE_GETREGS et al conditional on #ifdef PTRACE_*
	instead of only #ifdef SUNOS4.  Add PTRACE_[GS]ETFPXREGS.

	* ipc.c (PRINTCTL): New macro.  #ifdef IPC_64, factor out the flag and
	print it before using printxval.
	(sys_msgctl, sys_semctl, sys_shmctl): Use it.

2003-01-13  Roland McGrath  <roland@redhat.com>

	* config.guess: Update from ftp://ftp.gnu.org/pub/gnu/config/,
	timestamp 2003-01-10.
	* config.sub: Likewise, timestamp 2003-01-03.
	* install-sh: Update from Automake 1.7.2.

	* linux/powerpc/signalent.h: Add SIGRTMIN.
	From Anton Blanchard <anton@samba.org>.

	* linux/powerpc/syscallent.h: Add missing system calls.
	Decode more system calls, we were just printargs for many things.
	Remove some x86-specific system calls.
	Remove two syscalls between the socket and ipc syscalls,
	it was resulting in all IPC syscalls being off by two.

	* ioctl.c (ioctl_decode) [POWERPC]: Decode term ioctls like Alpha.
	From Anton Blanchard <anton@samba.org>.

	* defs.h [POWERPC] (UESP, EIP, EAX, ORIG_EAX): Remove this cruft.
	[LINUX && POWERPC && !__powerpc64__] (ALIGN64): New macro.
	* io.c (sys_pread, sys_pwrite): Use ALIGN64.
	From Anton Blanchard <anton@samba.org>.

	* term.c [LINUX]: Get kernel definition of struct termios.
	From Anton Blanchard <anton@samba.org>.

	* linux/ioctlent.sh: Look in sound/ directory too.
	From Anton Blanchard <anton@samba.org>.

	* desc.c (printflock64): Fix ADDR argument type.
	From Anton Blanchard <anton@samba.org>.

	* strace.c [! HAVE_STRSIGNAL]: Clean up #ifdefs on decls for
	sys_siglist and _sys_siglist.
	Reported by John Hughes <john@Calva.COM>.

	* net.c: HAVE_OPTHDR -> HAVE_STRUCT_OPTHDR
	Reported by John Hughes <john@Calva.COM>.

	* linux/syscall.h [ARM] (SYS_socket_subcall): Set to 300.

2003-01-10  Roland McGrath  <roland@redhat.com>

	* configure.ac, NEWS: Version 4.4.91.
	* strace.spec, debian/changelog: 4.4.91-1

	* util.c [LINUX && X86_64] (arg0_offset, arg1_offset): Use correct
	values for x86-64, conditional on current_personality.

	* strace.c (droptcb): Clear flags word before calling rebuild_pollv.

	* configure.ac: Check struct T_conn_res for QUEUE_ptr or ACCEPTOR_id.
	* stream.c (print_transport_message): Use #ifdefs for those members.

	* strace.c (rebuild_pollv): Fix typo: struct poll -> struct pollfd.

	* configure.ac: Fix siginfo_t/sig_atomic_t checks.
	Use prerequisite #include <netinet/in.h> for netinet/*.h checks.

	* strace.c (pfd2tcb): Fix for new tcbtab type.
	(rebuild_pollv): Likewise.
	(detach): Put variables used under [LINUX] inside #ifdef.

	* process.c (change_syscall) [POWERPC]: Add missing return.
	* util.c [POWERPC] (arg0_offset): Set to 4*PT_R3, not 4*PT_ORIG_R3.

	* strace.spec: New file.
	* debian/changelog: 4.4.90-1
	* debian/rules (binary-arch): Depend on build.
	(clean): Don't try to run Makefile.in.
	* debian/control (Standards-Version): Now 3.5.8.

	* configure.ac: Diddle CFLAGS after AC_PROG_CC, not before.

2003-01-09  Roland McGrath  <roland@redhat.com>

	* syscall.c (force_result) [S390 || S390X]: Fix typo.

	* debian/control: Update Maintainer: field.

2003-01-08  Roland McGrath  <roland@redhat.com>

	* NEWS: Update for 4.4.90 test release.

	Support for new Linux 2.5 thread features.
	* defs.h [LINUX]: Define __NR_exit_group if not defined.
	(struct tcb): New members nclone_threads, nclone_detached,
	and nclone_waiting.
	(TCB_CLONE_DETACHED, TCB_CLONE_THREAD, TCB_GROUP_EXITING): New macros.
	(waiting_parent): Macro removed.
	(pid2tcb): Declare it.
	* process.c (internal_clone) [TCB_CLONE_THREAD]: Reparent the new
	child to our parent if we are a CLONE_THREAD child ourselves.
	Maintain TCB_CLONE_THREAD and TCB_CLONE_DETACHED flags and counts.
	(internal_wait) [TCB_CLONE_THREAD]: Factor out detached children when
	determining if we have any.  If TCB_CLONE_THREAD is set, check
	parent's children instead of our own, and bump nclone_waiting count.
	(internal_exit) [__NR_exit_group]: Set the TCB_GROUP_EXITING flag if
	the syscall was exit_group.
	* syscall.c (internal_syscall): Use internal_exit for exit_group.
	* strace.c (pid2tcb): No longer static.
	(alloctcb) [TCB_CLONE_THREAD]: Initialize new fields.
	(droptcb) [TCB_CLONE_THREAD]: Maintain new fields.
	If we have thread children, set TCB_EXITING and don't clear the TCB.
	(resume) [TCB_CLONE_THREAD]: Decrement parent's nclone_waiting.
	(detach) [TCB_CLONE_THREAD]: When calling resume, check all thread
	children of our parent that might be waiting for us too.
	[TCB_GROUP_EXITING] (handle_group_exit): New function.
	(trace) [TCB_GROUP_EXITING]: Use that in place of detach or droptcb.

	Revamp -f support for Linux.
	* util.c [LINUX] (setbpt, clearbpt): New implementations that tweak
	the system call to be clone with CLONE_PTRACE set.  Various new static
	helper functions.
	* process.c (internal_clone): Define also #ifdef SYS_clone2.
	Initialize TCPCHILD->parent field.
	[CLONE_PTRACE]: Don't do PTRACE_ATTACH here, because it's preattached.
	Check in case the new child is in the tcb already.
	(internal_fork) [LINUX]: Just call internal_clone.
	* strace.c (trace) [LINUX]: Under -f/-F, grok an unknown pid
	reporting to wait, put it in the TCB with TCB_ATTACHED|TCB_SUSPENDED.

	* linux/x86_64/syscallent1.h (sys_oldlstat): #define as printargs.

	* file.c [LINUX]: #undef st_[amc]time in case they are macros.

	* Makefile.am (AM_CFLAGS): New variable, define to $(WARNFLAGS).

	* Makefile.am (EXTRA_DIST): Remove debian/postinst and debian/prerm.

2003-01-09  Wichert Akkerman  <wichert@deephackmode.org>

	* debian/postinst, debian/prerm: removed, /usr/doc symlink is no
	longer used
	* debian/rules: no longer install postinst and prerm
	* debian/control: do not end summary with full stop (lintian)

2002-12-30  Roland McGrath  <roland@redhat.com>

	* Makefile.am (bin_SCRIPTS): New variable, list strace-graph.
	(EXTRA_DIST): Add missing files.

	* configure.ac: Fix asm/sigcontext.h check to include prerequisite.

	* syscall.c (qualify_one): New function.
	(qual_options): Replace lookup field with qualify, update initializer.
	(qualify): Update caller.
	(qual_signal, qual_fault, qual_desc): Rewritten from lookup_*.
	(qual_syscall): Rewritten lookup_syscall, match name more than once.
	Fixes RH#70579, bites IA64 -efoo when foo exists on IA32.

	* version.c (version): Make const, bump to 4.4.90.
	* strace.c: Update decl.

	* Makefile.am [LINUX && X86_64]: Remove cruft.
	* linux/x86_64/errnoent1.h: New file.
	* linux/x86_64/ioctlent1.h: New file.
	* linux/x86_64/signalent1.h: New file.
	* linux/x86_64/syscallent1.h: New file.
	* linux/x86_64/i386-headers.diff: File removed.
	* linux/x86_64/makeheaders.sh: File removed.
	* linux/x86_64/Makefile.in: File removed.

	* linux/syscallent.h [X86_64]: Disable sanity checks, subcall stuff is
	already broken for 32-bit personality on x86-64.

2002-12-29  Roland McGrath  <roland@redhat.com>

	* configure.ac, Makefile.am: Punt subdirs, handle everything here.
	* linux/Makefile.am: File removed.
	* freebsd/Makefile.am: File removed.
	* sunos4/Makefile.in: File removed.
	* svr4/Makefile.in: File removed.

	* linux/alpha/Makefile.in: File removed.
	* linux/hppa/Makefile.in: File removed.
	* linux/ia64/Makefile.in: File removed.
	* linux/powerpc/Makefile.in: File removed.
	* linux/s390/Makefile.in: File removed.
	* linux/s390x/Makefile.in: File removed.

2002-12-26  Roland McGrath  <roland@redhat.com>

	* syscallent.sh: Grok three flavors of #define line, uniquify.
	* linux/hppa/syscallent.sh: File removed.
	* linux/powerpc/syscallent.sh: File removed.

	* linux/Makefile.am: New file.
	* linux/Makefile.in: File removed.
	* freebsd/Makefile.am: New file.
	* freebsd/i386/Makefile.am: New file.
	* freebsd/i386/Makefile.in: File removed.

2002-12-22  Roland McGrath  <roland@redhat.com>

	Update to Autoconf 2.57, and Automakify with version 1.7.
	* Makefile.am: New file.
	* Makefile.in: File removed.
	* configure.in: Moved to ...
	* configure.ac: ... here.  Update for Autoconf 2.5x and Automake.
	* aclocal.m4: Moved to ...
	* acinclude.m4: ... here.  Update for Autoconf 2.5x.
	* acconfig.h: File removed.
	* AUTHORS: New file, makes automake happy.
	* autogen.sh: File removed.
	* README-CVS: Update to recommend autoreconf instead.
	* file.c: HAVE_ST_* -> HAVE_STRUCT_STAT_ST_*.
	* net.c: HAVE_SIN6_SCOPE_ID -> HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID,
	HAVE_MSG_CONTROL -> HAVE_STRUCT_MSGHDR_MSG_CONTROL.
	* strace.c: *_DECLARED -> HAVE_DECL_*
	* stream.c: HAVE_* -> HAVE_STRUCT_*

	* linux/Makefile.in (ioctldefs.h ioctls.h): Use $(SHELL) instead of
	sh, and use $(srcdir) to find the script.
	* linux/powerpc/Makefile.in (ioctlent.raw): Find ioctlent.sh in ../.
	(ioctlsort.o): Use ../ioctlsort.c, not ../../ioctlsort.c.
	* linux/x86_64/Makefile.in (headers): Renamed to all.
	* linux/alpha/Makefile.in: Add empty install target.
	* linux/x86_64/Makefile.in: Likewise.
	* linux/powerpc/Makefile.in: Likewise.
	* linux/Makefile.in: Likewise.

2002-12-26  Roland McGrath  <roland@redhat.com>

	* defs.h [LINUX && MIPS] (MAX_QUALS): Set to 5000, not 4999.
	From Daniel Jacobowitz <drow@false.org>.

2002-12-21  Roland McGrath  <roland@redhat.com>

	* linux/syscallent.h: Add some new 2.5 syscall names.
	Now clone takes 5 args.
	* process.c [LINUX] (clone_flags): Update with 2.5 flag bits.
	[LINUX] (sys_clone): Print new args.
	* mem.c (print_ldt_entry): Make global.

	* linux/syscall.h [I386 || IA64] (SYS_socket_subcall): Bump to 300 for
	safety, since up to 260 are already used in 2.5 kernels.
	* linux/syscallent.h: Update the table.
	* linux/ia64/syscallent.h: Likewise.

	* syscall.c (force_result): New function.
	* process.c (internal_wait): Handle ECHILD exit from wait call with
	WNOHANG flag set; force the return value to 0 in the inferior when it
	has live children we are tracing.
	* NEWS: Mention the bug fix.

2002-12-17  Roland McGrath  <roland@redhat.com>

	* linux/ia64/syscallent.h: Remove placeholders 275-298 to catch up
	with linux/syscallent.h additions.

	* strace.c (tcbtab): Make this a pointer to pointers, not an array.
	(tcbtabsize): New variable.
	(main): Initialize them using dynamic allocation.
	(alloctcb, main): Use tcbtabsize in place of MAX_PROCS; indirect.
	(pid2tcb, cleanup): Likewise.
	[USE_PROCFS] (pollv): Make this a pointer, not an array; make static.
	(rebuild_pollv): Dynamically allocate the vector.
	* defs.h (tcbtab): Update decls.
	(MAX_PROCS): Macro removed, no more static limit on this.
	* process.c (fork_tcb): New function.
	(internal_clone, internal_fork): Use it instead of checking nprocs.

	* strace.c (detach) [LINUX]: Use __WALL (or a second try with __WCLONE)
	in wait after sending SIGSTOP.

2002-12-16  Roland McGrath  <roland@redhat.com>

	* signal.c (sprintsigmask): Increase static buffer size to account for
	worst possible case.  Reported by Daniel Jacobowitz <drow@false.org>.

	* process.c [LINUX] (wait4_options): Fix __WCLONE value.  Add
	__WNOTHREAD and __WALL.

	* strace.c (trace) [LINUX]: Only check errno if wait4 actually fails,
	so we don't repeat a wait and thus drop a status.  Fixes RH#62591.

2002-12-15  Roland McGrath  <roland@redhat.com>

	* process.c (setarg) [POWERPC]: Support it.

	* util.c [POWERPC] (LOOP): Fix value, now 0x48000000 (0: b 0b).
	Old value was bogus, not even a proper instruction.
	From Guy M. Streeter <streeter@redhat.com>.

	* strace.c (main) [! USE_PROCFS]: Always reset SIGCHLD to SIG_DFL.

	* configure.in: Don't check for putpmsg.
	* stream.c (sys_getpmsg, sys_putpmsg): Make these conditional on
	#ifdef SYS_*, rather than on HAVE_PUTPMSG.

	* aclocal.m4 (AC_STAT64): Include <linux/types.h> before <asm/stat.h>
	in test.  Test our own #ifdef LINUX rather than predefined `linux'.

	* linux/powerpc/syscallent.h: Use sys_llseek for _llseek.
	* linux/sparc/syscallent.h: Likewise.
	* linux/hppa/syscallent.h: Likewise.

	* syscall.c (syscall_enter) [LINUX && POWERPC]: Define PT_ORIG_R3 if
	not defined, since <asm/ptrace.h> defines it only #ifdef __KERNEL__.
	* process.c: Likewise.

	* desc.c (sys_osf_select): Add missing return type.

	* syscall.c (trace_syscall): Use strerror, not sys_errlist/sys_nerr.

	* linux/ia64/syscallent.h: Remove macros for sys_delete_module,
	sys_nanosleep, both already in linux/dummy.h.

	* syscall.c (get_scno): Move static `currpers' inside #ifdef X86_64.
	(trace_syscall): Fix return without value.

	* linux/syscallent.h: Update table with names of new syscalls
	io_setup, io_destroy, io_getvents, io_submit, io_cancel.
	* linux/ia64/syscallent.h: Likewise.
	* linux/powerpc/syscallent.h: Likewise.

	* signal.c [LINUX && I386]: Provide SA_RESTORER constant if not
	defined.  If the bit is set, print the sa_restorer field of sigaction.

	* mem.c: Add sys_{get,set}_thread_area.
	* linux/syscall.h: Declare them.
	* linux/syscallent.h: Update the table for these.
	* linux/dummy.h (sys_modify_ldt): Define only #ifndef I386.
	(sys_get_thread_area, sys_set_thread_area): New macros #ifndef I386.

	* configure.in: Check for linux/xattr.h and linux/futex.h headers.
	* linux/syscall.h: Add sys_* decls for new syscalls getpmsg, putpmsg,
	readahead, sendfile64, setxattr, fsetxattr, getxattr, fgetxattr, int
	listxattr, flistxattr, removexattr, fremovexattr, sched_setaffinity,
	sched_getaffinity, futex.
	* linux/syscallent.h: Update the table.
	* io.c: Add sys_sendfile64.
	* file.c: Add sys_readahead, sys_*xattr.
	* process.c: Add sys_futex, sys_*affinity.

	* linux/syscall.h (SYS_socket_subcall): Define to 256 on all machines.
	(SYS_ipc_subcall): Always SYS_socket_subcall + SYS_socket_nsubcalls.
	* linux/syscallent.h: Update the table for socket and ipc subcalls.

2002-11-09  Heiko Carstens <heiko.carstens@de.ibm.com>

	Bugfix for s390/s390x:
	* syscall.c: Fixed scno derivation for s390/s390x.

2002-11-06  Michal Ludvig  <mludvig@suse.cz>

	Merged patch from Steven J. Hill <sjhill@realitydiluted.com>
	to allow the compilation of a native MIPS strace.

2002-11-06  Michal Ludvig  <mludvig@suse.cz>

	From Marty Leisner <leisner@rochester.rr.com>,
	rewritten by mludvig:
	* strace.c (not_failing_only): New.
	(usage): Added -z switch description.
	(main): Added -z switch parsing to not_failing_only variable.
	* syscall.c (trace_syscall): Added not_failing_only handling.

2002-10-08  Heiko Carstens <heiko.carstens@de.ibm.com>

	Missing complete changelog for 2002-10-07 commit:
	* Makefile.in: Added linux/s390, linux/s390x to ALL_SUBDIRS.
	* acconfig.h: New define for s390x.
	* config.sub: Added missing define for s390 and new one for s390x.
	* configure.in: Added new define for s390x.
	* file.c: Added missing #undef dirent64 and new defines for s390x.
	* linux/s390: New directory.
	* linux/s390/Makefile.in: New file.
	* linux/s390/errnoent.h: New file.
	* linux/s390/ioctlent.h: New file.
	* linux/s390/signalent.h: New file.
	* linux/s390/syscallent.h: New file.
	* linux/s390x: New directoy.
	* linux/s390x/Makefile.in: New file.
	* linux/s390x/errnoent.h: New file.
	* linux/s390x/ioctlent.h: New file.
	* linux/s390x/signalent.h: New file.
	* linux/s390x/syscallent.h: New file.
	* linux/syscall.h: Added sys_mincore() prototype and added new
	s390x defines.
	* process.c: Added s390x defines.
	(change_syscall): Changed handling for s390.
	(setarg): Added missing s390/s390x code in setarg().
	* signal.c: Added s390x define.
	(sys_sigreturn): Bugfix in s390/s390x code (wrong number of
	arguments to sprintsigmask()).
	* stream.c (internal_stream_ioctl): Changed int cast to long cast,
	since printstr() expects a long.
	* syscall.c (decode_subcall): Changed several variables to be long
	instead of int to match 64 bit requirements. Added s390x defines.
	(syscall_enter): Changed upeek() call to match s390 and s390x
	requirements.
	* util.c: Added s390x defines.

2002-10-07  Michal Ludvig  <mludvig@suse.cz>

	Merged s390x port by Heiko Carstens <Heiko.Carstens@de.ibm.com>
	and bugfixes to s390 by D.J. Barrow.

2002-09-23  Michal Ludvig  <mludvig@suse.cz>

	Merged x86-64 port by Andi Kleen <ak@suse.de>
	and Michal Ludvig <mludvig@suse.cz>
	* Makefile.in: New target 'headers'. Failure ignored.
	* acconfig.h: New defines for x86-64.
	* configure.in: Ditto.
	* defs.h: Ditto.
	* file.c: Ditto.
	* signal.c: Ditto.
	* process.c: Added support for x86-64.
	* util.c: Ditto.
	* syscall.c: Ditto + added automatic personality switching.
	* linux/syscall.h: Ditto.
	* linux/x86_64: New directory.
	* linux/x86_64/Makefile.in: New file.
	* linux/x86_64/gentab.pl: Ditto.
	* linux/x86_64/i386-headers.diff: Ditto.
	* linux/x86_64/makeheaders.sh: Ditto.
	* linux/x86_64/syscallent.h: Ditto.
	* mem.c (print_mmap): Always print arg[4] as int.

2002-09-23  Michal Ludvig  <mludvig@suse.cz>

	* configure.in: Fix regular expressions.
	* linux/syscall.h: Added missing braces in prototype of
	sys_getdents64().
	* file.c: Use '#ifdef LINUX' instead of '#ifdef linux'.
	(struct fileflags): Made extern to inhibit compiation warnings.
	(sys_getdents64): Merged LINUX and SVR4 part.
	* syscall.c (get_scno): Split multiline string into two distinct
	strings.

2002-05-24  John Hughes <john@calva.com>

	* stream.h, net.h: Avoid possible infinite loop caused by
	unsigned arithmetic in preceeding change.

2002-05-23  John Hughes <john@calva.com>

	* acconfig.h: Add HAVE_OPTHDR and HAVE_T_OPTHDR defines.

	* aclocal.m4: Add tests for struct opthdr in sys/socket.h and
	struct t_opthdr in sys/tiuser.h, define HAVE_OPTHDR and HAVE_T_OPTHDR
	if found.

	* configure.in: use tests for struct opthdr and struct t_opthdr.

	* defs.h: add new function print_sock_optmgmt.

	* io.c: add hack that lets ioctl decode functions set auxilliary
	string return.

	* stream.c: better decoding for timod ioctls.

	* net.c: add function print_sock_optmgmt, used by timod ioctl
	decoding functions in stream.c.

2002-05-23  John Hughes <john@calva.com>

	* acconfig.h: Make autoheader happy about Linux/SuperH

2002-05-23  John Hughes <john@calva.com>

	* strace.c: Get rid of warning if not using POLL_HACK

2002-05-22  John Hughes <john@calva.com>

	* net.c: Simplify {get,set}sockopt, decode SO_LINGER, cope with
	options that are not just ints, cope with systems that don't
	#define SOL_TCP and so on.

2002-05-21  John Hughes <john@calva.com>

	* strace.c: Fix warning if POLL_HACK is used.

2002-05-17  John Hughes <john@calva.com>

	* svr4/ioctlent.sh: Some defines on UW come with too many spaces.

2002-05-17  John Hughes <john@calva.com>

	* svr4/ioctlent.sh: Cope with #defines wrapped in #ifdefs.

2002-05-17  John Hughes <john@calva.com>

	* stream.c: tidy up output a little.

2002-05-17  John Hughes <john@calva.com>

	* process.c, svr4/dummy.h, svr4/syscall.h: decode arguments
	to procpriv syscall.

2002-05-01  Wichert Akkerman <wichert@deephackmode.org>

	* configure.in, defs.h, process.c, sock.c, syscall.c, util.c: merge
	  patch from Greg Banks <gbanks@pocketpenguins.com> for Linux/SuperH
	  support

2002-04-01  Wichert Akkerman <wichert@deephackmode.org>

	* strace.c: close tcp->outf in droptcb()

2002-04-01  Wichert Akkerman <wichert@deephackmode.org>

	* net.c: decode packet options

2002-03-31  Wichert Akkerman <wichert@deephackmode.org>

	* linux/{alpha,hppa,ia64,mips,powerpc,sparc}/syscallent.h: regenerated

2002-03-31  Wichert Akkerman <wichert@deephackmode.org>

	* debian/*: added
	* linux/syscallent.h: fix typo and add the reserved stream syscalls
	* defs.h, file.c, io.c: fix signed/unsigned issues
	* syscall.c: check for negative u_errors
	* cvsbuild: renamed to autogen.sh

2001-12-17  Wichert Akkerman <wakkerma@debian.org>

	* net.c: add new TCP socket options

2001-10-26  John Hughes <john@calva.com>

	* svr4/ioctlent.sh: Cope with #define lines containing
	comments that terminate on subsequent lines.  Used to
	comment out subsequent ioctls!

2001-10-25  Wichert Akkerman <wakkerma@debian.org>

	* linux/ioctlent.h: regenerated using current scripts so
	  term ioctls are included

2001-10-19  John Hughes  <john@Calva.COM>

	* strace.c(proc_open): On SVR4 only trace the syscalls,
	signals and faults we care about.

2001-10-18  John Hughes  <john@Calva.COM>

	* acconfig.h: Add HAS_SIGINFO_T.
	* aclocal.m4: add check for siginfo_t in signal.h.
	* configure.in: use check for siginfo_t.
	* defs.h: if HAVE_SIGINFO_T the declare printsiginfo.  On SVR4
	  allow access to siginfo when signal recieved.
	* process.c: Remove SVR4 only version of printsiginfo.
	* signal.c: merge SVR4 and LINUX versions of printsiginfo.
	* strace.c: on SVR4 print siginfo when signal recieved.

2001-10-18  John Hughes  <john@Calva.COM>

	* system.c(sys_ssisys): handle return values for ssisys

2001-10-18  John Hughes  <john@Calva.COM>

	* signal.c: handle sigwait
	* svr4/dummy.c: Move sigwait to done
	* svr4/syscall.h: handle sigwait

2001-10-16  John Hughes  <john@Calva.COM>

	* system.c(sys_ssisys): decode some args for ssisys.

2001-10-16  John Hughes  <john@Calva.COM>

	* mem.c: MS_SYNC is zero, so must be first in xlat list.

	* svr4/dummy.h: memcntl is much like mctl.

2001-10-16  John Hughes  <john@Calva.COM>

	* util.c (umovestr): UnixWare (svr4?) returns 0 when trying
	to read unmapped page.  Make it possible to strace ksh.

2001-10-03  David Mosberger  <davidm@hpl.hp.com>

	* process.c (internal_clone): Avoid race condition by clearing
	breakpoint after attaching to child.

2001-10-02  David Mosberger  <davidm@hpl.hp.com>

	* linux/ia64/syscallent.h: Define ia32 syscall numbers (originally
	by Don Dugger, with my refinements).

	* linux/ia64/ioctlent.h: Regenerate and manually merge conflicting
	ioctls (TCGETS & SNDCTL_TMR_TIMEBASE, etc.).

	* linux/ia64/Makefile.in (ioctldefs.h ioctls.h): Update for
	new ioctlent.h generation scheme.

	* linux/syscall.h (sys_clone2): Declare.
	[IA64] Define ia32 socket, ipc, and extra syscall numbers.

	* linux/ioctlent.sh (regexp): Also handle <asm/ioctls.h> so we
	don't miss the tty ioctls (unfortunately, some of the sound timer
	ioctls are in conflict with them!).

	* util.c (setbpt) [IA64]: Add ia32 support (by Don Dugger).
	(clrbpt) [IA64]: Ditto.

	* syscall.c (internal_syscall): Handle SYS_clone2, SYS32_wait4,
	and SYS32_exit.
	(get_scno): Get ia32 syscall number from r1 (orig eax) instead of
	r8 (eax).  Handle TCB_WAITEXECVE.
	(syscall_fixup): Handle ia64.
	(syscall_enter): Fix argument fetching for ia64.

	* strace.c [IA64 && LINUX]: Include <asm/ptrace_offsets.h>.
	(trace) [PT_GETSIGINFO]: Print signal address and pc if possible.

	* process.c (tcp): New function.
	(change_syscall): Add support for ia64 linux.
	(sys_execve): Turn on TCB_WAITEXECVE for ia64 linux.

	* desc.c (getlk): Cast l_len to "long long" to avoid warnings when
	type is narrower.
	* resource.c (sprintrlim64): Ditto.

	* defs.h (TCB_WAITEXECVE) [IA64]: Define.
	[IA64]: Declare "ia32" variable.

	* bjm.c: Do not include <linux/module.h>.  It's not safe to include
	kernel headers.  Declare the necessary constants and structures
	directly instead.

2001-10-01  David Mosberger  <davidm@hpl.hp.com>

	* signal.c (parse_sigset_t): New function.
	(sigishandled): Fix off-by-one bug by using parse_sigset_t() and
	avoiding relying on internal layout of sigset_t datastructure.

2001-04-26  David Mosberger  <davidm@hpl.hp.com>

	* linux/ia64/syscallent.h: Add getunwind().

2001-04-11  David Mosberger  <davidm@hpl.hp.com>

	* syscall.c (syscall_enter): Use PT_RBS_END instead of deprecated
	PT_AR_BSP.  Pick up arguments starting with out0, which is not
	always the same as r32 (e.g., consider inlined syscalls).

2001-09-28   John Hughes <john@Calva.COM>

  * process.c: FreeBSD-CURRENT no longer has PT_READ_U, and anyway we
    were showing it as PT_WRITE_U!  Fix from Maxime Henrion.

2001-09-18   John Hughes <john@Calva.COM>

  * net.c: fix display of sockaddr structures, sometimes too many "}",
    sometimes too few.  Fix suggested by Richard Kettlewell.

2001-08-19   Wichert Akkerman <wakkerma@debian.org>

  * signal.c: do not include asm/sigcontext.h on IA64 since it gets
    the struct from bits/sigcontext.h already which signal.h includes.

2001-08-03   Wichert Akkerman <wakkerma@debian.org>

  * linux/ioctlent.sh: change regexps so we catch sound ioctls as well in
    Linux
  * linux/Makefile.in: fix a few things so the ioctl list is generated
    properly
  * ioctl.c: remember to shift ioctl masks as well

2001-08-03   Wichert Akkerman <wakkerma@debian.org>

  * Linux/**/syscallent.h: synchronize section for fcntl and use sys_fcntl
    for sys_fcntl as well

2001-08-03   Wichert Akkerman <wakkerma@debian.org>

  * linux/hppa/syscallent.h: updated from Matthew Wilcox

2001-08-03   Wichert Akkerman <wakkerma@debian.org>

  * process.c: seems Linux/IA64 changed register names on us, switch to
    using new names.

2001-08-03   Wichert Akkerman <wakkerma@debian.org>

  * strace.c: set CLOEXEC  flag for outputfile

2001-08-03   Wichert Akkerman <wakkerma@debian.org>

  * linux/sparc/syscall.h, linux/sparc/syscallent.h: add some LFS calls

2001-07-23  Wichert Akkerman <wakkerma@debian.org>

  * configure.in: Support cross-compiling between architectures

2001-07-13  Wichert Akkerman <wakkerma@debian.org>

  * configure.in: add S390 to architecture list

2001-07-10  John Hughes <john@Calva.COM>

  * TODO, defs.h, io.h, net.c, strace.c, syscall.c, util.c: Merge fixes
    from Richard Kettlewell <rkettlewell@zeus.com> which add I/O dumping
    of args to readv/writev.  Also gets rid of redundant printiovec
    routine from net.c (duplicate of tprint_iov in util.c).

2001-07-02  Wichert Akkerman <wakkerma@debian.org>

  * config.{guess,sub}: updated

2001-05-15  John Hughes <john@Calva.COM>

  * signal.c: pass a pointer to sigmask to printsigmask from printcontext,
    it was just passing the sigmask (ucp->uc_sigmask).

2001-05-15  John Hughes <john@Calva.COM>

  * util.c: Don't run off the end of valid memory in umovestr when
    USE_PROCFS.  Important for FREEBSD systems (which seem to have an
    unmapped page just after the args/env area).

2001-04-18  John Hughes <john@Calva.COM>

  * configure.in: test for sys/nscsys.h, the non-stop clusters includes.
  * process.c: handle rfork{1,all} and rexecve calls on non-stop clusters.
  * syscall.c: treat rfork{1,all} and fork{1,all} as fork like calls.
    Treat rexecve as an exec.
  * system.c: decode arguments to ssisys call on nsc systems.
  * svr4/dummy.h, svr4/syscall.h: now we handle rfork{1,all}, ssisys and
    rexecve calls.

2001-04-12  Wichert Akkerman <wakkerma@debian.org>

  * process.c: fix cast for powerpc code
  * linux/powerpc/syscallent.h: update syscall list
  * README: fix address for the strace mailinglist
  * signal.c: switch to using /proc/<pid>/status on Linux so we can get
    the realtime signals as well

2001-04-10  Wichert Akkerman <wakkerma@debian.org>

  * Merge patches from Maciej W. Rozycki:
    + util.c: add code to print PC for MIPS
    + linux/mips/syscallent.h: updated
    + system.c: formating fixes for sys_sysmips
    + configure.in: test for yet more headers
    + stream.c: use configure-headertests instead of relying on OS hints

2001-04-07  Wichert Akkerman <wakkerma@debian.org>

  * NEWS: start 4.3.1 items
  * version.c: updated to say 4.3.1 (was still 4.2, oops!)

2001-04-07  Wichert Akkerman <wakkerma@debian.org>

  * configure.in: test for asm/sysmips.h and linux/utsname.h
  * linux/syscall.h: fix a typo for sys_sysmips
  * system.c: include asm/sysmips.h and linux/utsname.h if they exist,
    fix typo

2001-03-31  Wichert Akkerman <wakkerma@debian.org>

  * linux/mips/ioctlent.h: updated using new Linux ioctl setup

2001-03-31  Wichert Akkerman <wakkerma@debian.org>

  * linux/ia64/ioctlent.h: regenerated

2001-03-31  Wichert Akkerman <wakkerma@debian.org>

  * linux/{alpha,ia64,powerpc}/ioctlent.sh: removed, all archs use the
    general Linux ioctlent.sh

2001-03-31  Wichert Akkerman <wakkerma@debian.org>

  * linux/ioctlent.sh: add dir variable for location of kernel headers

2001-03-29  Wichert Akkerman <wakkerma@debian.org>

  * linux/ia64/ioctlent.h: updated using new Linux ioctl setup

2001-03-29  Wichert Akkerman <wakkerma@debian.org>

  * linux/powerpc/ioctlent.h: updated using new Linux ioctl setup

2001-03-29  Wichert Akkerman <wakkerma@debian.org>

  * linux/hppa/ioctlent.h: updated using new Linux ioctl setup

2001-03-29  Wichert Akkerman <wakkerma@debian.org>

  * linux/alpha/ioctlent.h: updated using new Linux ioctl setup

2001-03-28  Wichert Akkerman <wakkerma@debian.org>

  * configure.in: use sparc* so we can compile on sparc64 as well
  * process.c, syscall.c: work around double define of fpq, fq and fpu
    structs on Linux/sparc, and use regs instead of pt_regs
  * don't use asm/sigcontext.h on Linux/sparc

2001-03-28  Wichert Akkerman <wakkerma@debian.org>

  * linux/sparc/ioctlent.h: updated using new Linux ioctl setup

2001-03-28  Wichert Akkerman <wakkerma@debian.org>

  * strace.c: use __WALL as wait4 flag if it exists so we can properly
    trace threaded programs

2001-03-27  John Hughes <john@Calva.COM>

  * aclocal.m4: add check for endianness of long long.
  * acconfig.h: add #define for LITTLE_ENDIAN_LONG_LONG.
  * configure.in: check for endianness of long long.
  * defs.h: change LONG_LONG macro to work with either endianness of
    long long.

2001-03-27  John Hughes <john@Calva.COM>

  * net.c: Make compilable by SCO UDK compiler (doesn't like empty
    initialisation list for array).

2001-03-27  John Hughes <john@Calva.COM>

  * svr4/syscallent.h: ntp_adjtime entry was duplicated on Solaris
    systems - bad merge of Harald Boehme's patch by me.

2001-03-27  Wichert Akkerman <wakkerma@debian.org>

  * lots of files: add Linux/hppa support

2001-03-19  Wichert Akkerman <wakkerma@debian.org>

  * linux/mips/syscallent.h: we can't have -1 nargs, change to 0
  * linux/syscallent.h: not that syscalls 220 and 221 are used now
  * config.guess: updated

2001-03-17  Wichert Akkerman <wakkerma@debian.org>

  * linux/ioclsort.c: new file
  * linux/ioctlent.sh: complete rewrite to use a more sane approach to get
    the ioctl list that doesn't involve attempting to #include all kernel
    headers
  * linux/.cvsignore: added ioctdefs.h and ioctls.h which are generated
    by the new ioctlent.sh
  * ioctl.c: only look at the number and type bits for linux, since
    ioctlent.sh no longer supplies the others

2001-03-08  John Hughes <john@Calva.COM>

  * freebsd/syscalls.pl: On FreeBSD we must cope with COMPATibility syscalls,
    pretend they have names ending with "?" so that -e trace=stat (for
    example) will work.
  * freebsd/i386/syscallent.h: add ? to compatability syscalls.
  * freebsd/i386/syscall.h: consistency.

2001-03-08  John Hughes <john@Calva.COM>

  * acconfig.h: add new ST_xxx defines.
  * aclocal.m4: macros to check for more fields in struct stat.
  * configure.in: use new macros to check for fields in struct stat.
  * file.c: use new defines to replace #ifdef FREEBSD by #if HAVE_ST_xxx.

2001-03-08  John Hughes <john@Calva.COM>

  * defs.h: rename wimpy get64 as powerful new LONG_LONG
  * file.c: use LONG_LONG
  * io.c: use LONG_LONG
  * mem.c use LONG_LONG

2001-03-08  John Hughes <john@Calva.COM>

  * acconfig.h: new #defines HAVE_LONG_LONG_OFF_T and HAVE_LONG_LONG_RLIM_T.
  * aclocal.m4: routines to check for long long off_t and rlim_t.
  * configure.in: check for long long off_t and rlim_t.
  * desc.c: if HAVE_LONG_LONG_OFF_T treat flock as flock64
  * file.c: if HAVE_LONG_LONG_OFF_T treat stat,lstat,fstat and lseek as 64
    bit versions.
  * io.c: if HAVE_LONG_LONG_OFF_T use 64 bit versions of pread and pwrite.
  * mem.c: if HAVE_LONG_LONG_OFF_T use 64 bit version of mmap
  * resource.c: if HAVE_LONG_LONG_OFF_T use 64 bit versions of getrlimit
    and setrlimit.
  * freebsd/syscalls.print: don't explicitly use 64 bit versions of calls,
    now done automaticaly for us.
  * freebsd/i386/syscall.h: ditto.
  * freebsd/i386/syscallent.h ditto.

2001-03-07  John Hughes <john@Calva.COM>

  * desc.c: On FreeBSD flock structure uses 64 bit offsets.
  * file.c: On FreeBSD use stat64 and pals instead of stat.
  * freebsd/syscalls.print: use stat64, lstat64 and fstat64.
  * freebsd/i386/syscall.h: ditto.
  * freebsd/i386/syscallent.h: ditto.

2001-03-07  John Hughes <john@Calva.COM>

  * file.c: merge missing part of Harald Böhme's solaris patches,
    was only declaring sys_{stat64,lstat64,fstat64} on linux!

2001-03-07  John Hughes <john@Calva.COM>

  * svr4/dummy.h: fix multiple define warning on non LFS64 systems.
  * svr4/syscallent.h: pread/pwrite are TF calls.

2001-03-07  John Hughes <john@Calva.COM>

  * defs.h: add ALIGN64 macro to cope with FreeBSD's strange insistence
    on alignment for off_t (64 bit) arguments.  Also simplify get64 so
    we don't need to know endianness of long long.
  * file.c: FreeBSD now uses 64 bit versions of lseek, truncate,
    ftruncate, allows reduction in numvber of horrid #if's
  * io.c: FreeBSD now uses 64 bit versions of pread, pwrite.
  * mem.c: FreeBSD now uses 64 bit version of mmap.
  * freebsd/syscalls.print: use 64 bit versions of various syscalls.
  * freebsd/i386/syscall.h: use 64 bit versions of various syscalls.
  * freebsd/i386/syscallent.h: use 64 bit versions of various syscalls.

2001-03-06  John Hughes <john@Calva.COM>

  * file.c: Implement truncate64 and ftruncate64
  * svr4/dummy.h: add dummies for truncate64 and ftruncate64 for non
    LFS64 systems.
  * svr4/syscall.h: add declarations for truncate64 and ftruncate64.

2001-03-06  John Hughes <john@Calva.COM>

  * freebsd/syscalls.pl: fix for FreeBSD 4.1 (new optional field in
    syscall master file).

2001-03-06  John Hughes <john@Calva.COM>

  * syscall.c: fix for FreeBSD 4.1 (SYS_semconfig has disappeared).  Also
    zap incorrect syscall subarg range check.

2001-03-06  John Hughes <john@Calva.COM>

  * configure.in, defs.h, desc.c, file.c, io.c, mem.c, net.c, resource.c,
    signal.c, syscall.c, svr4/dummy.h, svr4/syscall.h, svr4/syscallent.h:
    merge Harald Böhme's solaris patches (_LFS64_LARGEFILE and kernel aio
    mostly).

2001-03-06  John Hughes <john@Calva.COM>

  * dummy.h: add unimplemented UW sycalls
  * syscall.h: we can do settimeofday for UW, whopee!
  * syscallent.h: fix unimplemented UW syscalls

2001-03-06  John Hughes <john@Calva.COM>

  * aclocal.m4: look for pr_syscall in pr_lwp if we HAVE_MP_PROCFS
  * defs.h: add PR_SYSCALL to allow use of pr_lwp.pr_syscall if it exists.
  * syscall.c: use PR_SYSCALL instead of pr_syscall, fix up UnixWare code
    so it doesn't try to use pr_sysarg.

2001-03-06  John Hughes <john@Calva.COM>

  * aclocal.m4: on systems other than linux look for stat64 in sys/stat.h
  * file.c: handle xstat version _STAT64_VER, aka stat64.

2001-03-06  John Hughes <john@Calva.COM>

  * net.c: make sure SOL_ options are defined before using.
  * signal.c: declare sigset variable, only used on linux, inside #ifdef.

2001-02-21  Wichert Akkerman <wakkerma@debian.org>

  * net.c: fix format for printing Unix domain sockets

2001-02-19  Wichert Akkerman <wakkerma@debian.org>

  * linux/mips/syscallent.h: use new sys_sysmips
  * system.c: add sys_sysmips decoding

2001-02-16  Wichert Akkerman <wakkerma@debian.org>

  * CREDITS: add Arkadiusz Miskiewicz <misiek@pld.org.pl> who
    submitted the IP6 scope ID updates
  * acconfig.h: add HAVE_SIN6_SCOPE_ID and HAVE_SIN6_SCOPE_ID_LINUX
  * aclocal.m4: add AC_SIN6_SCOPE_ID to check if sin6_scope_id is
    available
  * configure.in: check for if_indextoname function and sin6_scope_id
  * net.c: teach printsock about IP6 scope ids

2001-02-16  Wichert Akkerman <wakkerma@debian.org>

  * configure.in: test for netinet/tcp.h and netinet/udp.h existance
  * net.c: include netinet/tcp.h and netinet/udp.h if they exist
  * Makefile.in: use @mandir@ and @bindir@

2000-11-26  Wichert Akkerman <wakkerma@debian.org>

  *  net.c: fix formating error in sys_setsockopt
  *  net.c: add list of socketlayers and use that for [gs]etsockopt

2000-10-12  Wichert Akkerman <wakkerma@debian.org>

  * time.c: use sys/timex.h so things compile with 2.2 kernels
  * stream.c: test if MSG_* constants are #defined

2000-09-03  Wichert Akkerman <wakkerma@debian.org>

  * process.c: perform bpt trick for clone as well so we can get the
    pid of the child before it starts doing something
  * file.c: rename dirent64 struct to kernel_dirent64 so things compile
    again with newer libcs
  * test/clone.c: improve our testcase a bit
  * Merge another patch from Gäel Roualland with FreeBSD updates

2000-09-01  Wichert Akkerman <wakkerma@debian.org>

  * lots of files: merge patch from Gaël Roualland to add
    support for FreeBSD.

2000-08-09  Wichert Akkerman <wakkerma@debian.org>

  * file.c: update to reflect that st_ino suddenly became a long long
    in the in Linux 2.4.0-test6

2000-08-09  Wichert Akkerman <wakkerma@debian.org>

  * test/clone.c: minor fixup
  * Another bunch of patches from John Hughes merged:
  * signal.c:
    + SVR4 printcontext(): sigset_t != sigset_t*
    + getcontext returns a value, so print on exit of syscall
    + add UC_FP to ucontext_flags for OS writers that can't spell
    + sys_signal(): special case SIG_{ERR,DFL,IGN}
    + decode_subcall(): only do subcall range checking when needed
  * bunch of UnixWare updates
  * aclocal.m4, acconfig.h, configure.in: add test for long long type

2000-07-04  Wichert Akkerman <wakkerma@debian.org>

  * net.c: add SOL_PACKET and SOL_RAW socket options, update
    SOL_IP and SOL_TCP

2000-06-23  Wichert Akkerman <wakkerma@debian.org>

  * strace.c: close outf before we exec a child process

2000-06-09  Ulrich Drepper  <drepper@redhat.com>

  * configure.in: Don't link against libnsl on Linux, it's unnecessary.
  * defs.h (struct tcb): Make auxstr member const.
  * file.c (fsmagic): And many more magic numbers.
  * util.c: Don't include <linux/ptrace.h> for glibc 2.1 and up.

2000-04-26  Wichert Akkerman <wakkerma@debian.org>

  * defs.h: balance #if/#endif again
  * system.c: fix return statements in sys_capget()
  * Merge updates from Topi Miettinen <Topi.Miettinen@nic.fi>:
    + file.c: add F_[SG]ETSIG to fcntl flags
    + strace.c: don't setre[gu]id if not needed
    + system.c: handle sys_reboot for Linux
    + term.c: add baudrate constants up to B4000000
    + linux/**/syscallent.h: note that munlockall has no arguments

2000-04-25  David Mosberger  <davidm@hpl.hp.com>

  * CREDITS: fix email address
  * process.c: handle PR_[GS]ET_UNALIGN and PR_[GS]ET_KEEPCAPS
  * signal.c: honour offset of sigconfig in sigframe structure for
    Linux/ia64
  * linux/ia64/syscallent.h: Add perfmonctl, pivotroot, mincore, and
    madvise syscalls.
  * syscall.c (syscall_enter): With Kevin's latest ptrace patches,
    AR_BSP points to the _end_ of the active register frame, so we need
    to adjust bsp by moving it back by the size of the active frame
    before using it.

2000-04-24  Wichert Akkerman <wakkerma@debian.org>

  * process.c: add sparc support to change_syscall

2000-04-22  Wichert Akkerman <wakkerma@debian.org>

  * linux/mips/syscallent.h: fix some typos

2000-04-14  Wichert Akkerman <wakkerma@debian.org>

  * linux/mips/syscallent.h: added names for SVR4, SYSV, BSD4.3 and POSIX
    syscalls

2000-04-13  Wichert Akkerman <wakkerma@debian.org>

  * defs.h: Linux/MIPS uses syscalls up to >4k, so set MAX_QUALS to
    4999

2000-04-09  Wichert Akkerman <wakkerma@debian.org>

  * README-linux: updated to note that strace might not compile
    with development kernels
  * bjm.c: sys_query_module: check if malloc succeeds
  * system.c: sys_cap[gs]et(): check if malloc succeeds, only malloc once
  * linux/syscallent.h: updated for 2.3.99pre3
  * linux/alpha/syscallent.h: updated for 2.3.99pre3, add all osf syscalls
    even though Linux doesn't implement them
  * syscall.c: add global variables for MIPS registers as well
  * syscall.c: move global variables to before get_scno since that uses them
  * util.c: oops, misspelled defined
  * process.c: fix ptrace calls in change_syscall
  * mem.c: decode sys_madvise
  * Merge patch from Topi Miettinen <Topi.Miettinen@nic.fi>
    + add support for quotactl, fdatasync, mlock, mlockall, munlockall & acct
    + small fix for RLIMIT_* and RUSAGE_BOTH
    + enhace support for capget and capset

2000-02-19 Wichert Akkerman <wakkerma@debian.org>

  * test/vfork.c: new file to test vfork traces
  * test/.cvsignore: new file
  * defs.h: Up maximum number of traced processed to 64
  * strace.c: Disable some debugging code from davidm
  * implement setarg for more architectures
  * implement change_syscall

1999-12-27  Morten Welinder  <terra@diku.dk>

	* syscall.c (lookup_signal, lookup_desc): isdigit requires an
 	_unsigned_ char parameter.

2000-02-14 Wichert Akkerman <wakkerma@debian.org>

  * S390 updates

2000-02-03 Wichert Akkerman <wakkerma@debian.org>

  * Merge Linux/ia64 patches

2000-01-02 Pavel Machek	     <pavel@ucw.cz>

  * probe if sys/poll.h exists in configure + minor cleanups

  * syscall.c: split trace_syscall into few pieces to make code readable

2000-01-21 Wichert Akkerman  <wakkerma@debian.org>

  * Release version 4.2 to get the current updates out and so
    we can concentrate in finishing the clone support.

2000-01-11 Wichert Akkerman  <wakkerma@debian.org>

  * Add 1900 to tm_year in sprinttime

1999-12-24  Wichert Akkerman  <wakkerma@debian.org>

 * file.c: protect printstat64 with STAT64 instead of linux so we can
   compile on Linux architectures that don't have it
 * util.c: fix LOOP for ARM

Fri Dec 24 18:05:00 EST 1999

1999-12-23  Ulrich Drepper  <drepper@cygnus.com>

 * file.c: Use ugly libc_stat trick also for stat64.
   Implement sys_stat64, sys_fstat64, sys_lstat64, and printstat64.
 * process.c (internal_clone): Fix a few typos and add definitions to make
   it at least compile.
 * linux/syscall.h: Declare sys_stat64, sys_lstat64, and sys_fstat64.
 * linux/syscallent.h: Define table entries for sys_stat64, sys_lstat64,
   and sys_fstat64.
 * aclocal.m4: Define AC_STAT64.
 * acconfig.h: Define HAVE_STAT64.
 * configure.in: Add AC_STAT64.

Thu Dec 23 15:01:37 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge patch from ftp://oss.software.ibm.com/linux390/ to add
    support for Linux on the IBM S/390 architecture
  * process.c: add internal_clone(), currently only shows the options
  * syscall.c: use internal_clone to handle SYS_clone

Mon Dec 20 00:27:50 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Rewrite mmap-handling to support mmap2 on Linux

Tue Dec 14 11:35:16 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Note that Linux can handle sys_semop() as well

Tue Nov 30 11:05:26 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Include linux/in6.h for glibc2.0 and older

Mon Nov 29 16:33:04 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge patches from John Hughes to make configure support UnixWare

Sat Nov 27 21:38:17 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Enhance sys_query_module

Fri Nov 26 10:51:55 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Patches from John Hughes:
    + cosmectic fix in sys_getpmsg
    + allow net.c to compile on systems without AF_INET6
    + Only use long_to_sigset on Linux systems
    + UnixWare treats sigmask_t and sigmask_t* as the same thing
    + Add pollhack
    + Parse mount arguments for UnixWare
    + ACL fixes for UnixWare

Fri Nov 26 01:28:09 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Release 4.1 to get all the changes made out there

Thu Nov 18 18:04:04 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge stracefork from Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
    + Socket calls parsed better
	+ bunch of alpha OSF syscalls added
	+ Fix alpha 32/64 bit issues

Mon Nov  1 20:52:08 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Move Linux kernelmodule-functions from system.c to bjm.c and
    remove duplicate for sys_create_module
  * Linux MIPS updates:
    + Play with #ifdef's in net.c to get IPv6 right
    + Use printargs for vm86-syscall

Sun Oct 31 22:03:00 CET 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge Linux mips patch from Florian Lohoff <flo@rfc822.org>

Mon Oct 11 00:36:25 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge patch from Keith Owens <kaos@ocs.com.au> to sys_query_module
    and sys_delete_module correctly

Wed Oct  6 02:00:33 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Update cvsbuild to give a better error if autoconf isn't installed
  * Add test for linux/ptrace.h to configure
  * Since we define GNU_SOURCE in the Makefile we don't need to define
    USE_GNU in file.c anymore

Fri Sep 10 04:35:16 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * #define USE_GNU before including file.c so we get some extra O_* flags

Tue Aug 31 16:27:21 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Add missing } in IPv6 output

Tue Aug 31 01:23:08 CEST 1999  Wichert Akkerman <wakkerma@debian.org>

  * Update copyright for strace-graph to BSD to be consistent with
    the rest of strace

Mon Aug 30 00:53:57 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge patch from Daniel Jacobowitz: KERN_JAVA_* and KERN_SECURELVL aren't
    defined for all kernelversions
  * Add strace-graph, written by Richard Braakman <dark@xs4all.nl>

Thu Aug 19 13:10:15 CEST 1999 Jakub Jelinek <jj@ultra.linux.cz>

  * linux/sparc/syscall.h: Declare create_module/init_module.
  * configure.in: Allow compilation in a different directory
    than the source one.
  * signal.c: Use asm/reg.h and struct regs instead of pt_regs
    so that we don't depend on asm/ptrace.h which clashes with
    glibc sys/ptrace.h.
  * util.c: Likewise.
  * syscall.c: Likewise.

Wed Aug  4 18:01:50 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Syscall 94 on Linux alpha is sys_poll

Sun Jul 25 14:38:33 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge in UnixWare patches from John Hughes <john@Calva.COM>

Thu Jul 15 23:00:32 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge patch from Maciej W. Rozycki <macro@ds2.pg.gda.pl>:
    + Correctly implement fix sys_createmodule (Linux)
    + Add limited handlig of sys_initmodule (Linux)

Tue Jul 13 17:07:50 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Add configure-test for sys/reg.h and use that
  * Use sys/reg.h instead of asm/ptrace.h

Sat Jul 10 01:46:10 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Remove hack in signal.c for arm architecture
  * Add hack so we compile correctly on powerpc

Fri Jul  9 02:28:16 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Add a corrected patch from Daniel Jacobowitz

Thu Jul  8 16:00:04 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge patch from Daniel Jacobowitz to allow us to use the kernel types
    for the stat structure

Thu Jun 24 15:54:18 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Fix test for sys/reg include

Tue Jun 22 17:26:33 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Fixed some Linux/powerpc sillyness, thanks to Daniel Jacobowitz
  * Fixed some SunOS compile problems earlier that I forgot to include
    here

Mon Jun 14 12:44:25 CEST 1999

  * Avoid leakint fd into child when forking, patch from
    John Hughes <john@Calva.COM>

Fri Jun 11 14:54:47 CEST 1999

  * Applied IRIX64 patch from Thomas E. Dickey <dickey@clark.net>
  * Applied Solaris and manpage updates from Guy Harris <guy@netapp.com>

Wed Jun  9 14:48:49 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Brought syscall list for alpha up to date

Wed Jun  2 18:30:12 CEST 1999 Jakub Jelinek <jj@ultra.linux.cz>

  * system.c: sys_umount2 syscall support.
  * linux/sparc/errnoent.h: Update sparc-linux errnos.
  * linux/sparc/syscall.h: Update used sparc-linux syscalls.
  * linux/sparc/syscallent.h: Match 2.2.9 system calls.
  * file.c: sparc-linux asm/stat.h uses dev_t etc. types,
    so it needs strace's own copy of the stat structure.
  * util.c: Make it compile on sparc-linux.
  * strace.c: Fix strace -f and -ff operation on sparc-linux.
  * signal.c: rt_sigaction has different arguments on sparc*-linux
    and alpha-linux.
  * syscall.c: Recognize sparc64-linux binaries.

Fri May 28 21:09:00 PST Ulrich Drepper <drepper@cygnus.com>

  * configure.in: Fix typo (CFLAG -> CFLAGS).

  * syscall.c: Don't include linux/ptrace.h explicitly for glibc.

Thu May 27 13:59:27 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Add some sysctl support, patch from Ulrich Drepper

Wed May 26 01:04:34 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Use kernel dirent structure for Linux

Sun May  9 02:18:30 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Merge in patches from Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
    + some layout and other minor fixes
    + add some m68k-specific things to linux/syscallent.h. Note that m68k
      is similar enough to i386 to not need it's own subdirectory
    + add support for sendfile and mremap syscalls for Linux
  * Merge in patches from Sascha Schumann <sascha@schumann.2ns.de>
    + ioctls.h vs sys/ioctl.h on Alpha platform
    + pointer was casted to an int in stream.c
    + strsignal() needs -D_GNU_SOURCE in CFLAGS
    + several other casts changed
    + correct ARM/POWERPC architecture defines in acconfig.h
  * Merge in patches from Morten Welinder <terra@diku.dk>
    + add some autoconf-tests for includefiles
    + handle solaris version of sigcontext struct (actually I hacked this
      up again, but the idea is his :)

Sun Apr 18 22:32:42 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Update syscalls for linux alpha, patch from Bart Warmerdam
    <bartw@debian.org>
  * Update sparc code so it actually compiles

Fri Apr 16 02:18:05 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Add support for old_*stat functions for Linux. Please note you need
    to use reasonably recent kernel headers to compile strace now.
  * Change references to LINUX into linux in file.c
  * Fix include for LDT in mem.c

Thu Apr 15 22:28:15 CEST 1999 Wichert Akkerman <wakkerma@debian.org>

  * Change in strace maintainership, jrs passed the torch to me.
  * Use autoconf 2.13
  * Incorporate all changes already made in the Debian strace package:
    + compiles with more Linux kernels
    + added support for more Linux architectures
    + add support for a lot of extra syscalls
    + fix some problems with hanging children
    + check stray syscall after execv
    + decode capget and capset arguments
    + add more constants to net.c
    + detect ROSE networking
    + add more protocol families to domains
    + add IPIP protocol
    + added MSG_PROXY and MSG_CTRUNC to msg_flags
    + added SO_BSDCOMPAT and SO_REUSEPORT to sockoptions
    + added IP, IPX and TCP-options
    + added IP, IPX and TCP support to get-/setsockopt()
    + added IPX support
    + updated handling of signals

Sun Oct 27 22:28:00 1996  J. Richard Sladkey  <jrs@world.std.com>

	* util.c (umovestr) [LINUX]: Handle Linux like SunOS4
	instead of SVR4.  That is, read a few bytes at a time
	to avoid overrunning the end of the stack.

Fri May 31 01:48:49 1996  J. Richard Sladkey  <jrs@world.std.com>

	* version.c: Version 3.1 is released.

Thu May 23 01:04:43 1996  J. Richard Sladkey  <jrs@world.std.com>

	* aclocal.m4 (AC_DECL_SYS_ERRLIST): Try looking in stdio.h
	as well since that's where glibc declares it.  Go figure.
	* signal.c (sys_sigreturn) [ALPHA]: Use sigcontext
	instead of sigcontext_struct since glibc v5+ apparently
	plays games with the native OS namespace.
	From David Mosberger-Tang <davidm@AZStarNet.com>.

Mon May 20 23:17:14 1996  J. Richard Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.14 is released.

	* aclocal.m4 (AC_STRUCT_MSG_CONTROL): New macro.
	* configure.in: Add call to AC_STRUCT_MSG_CONTROL.
	* net.c (printmsghdr): Handle BSD 4.3 and 4.4 msghdr members
 	differently.
	Reported by Henrik Storner <storner@osiris.ping.dk>.

	* configure.in: (AC_CHECK_{HEADERS,FUNCS}): Add checks for
 	sys/filio.h and sys/stream.h and remove check for poll.
	* desc.c (decode_select, sys_select, sys_oldselect) [LINUX]:
 	Handle old and new styles of argument passing for select on Linux.
	* ioctl.c, stream.c: Conditionalize stream code on presence of
	sys/stream.h instead of poll because glibc implements poll but
	not the rest of the stream interface.
	* signal.c [LINUX]: Standardize on the name sigcontext_struct.
	(sys_sigprocmask) [ALPHA]: Handle OSF flavor which is more like
	sigsetmask.
	* term.c (term_ioctl): Use _VMIN, if present, for TC{G,S}ETA*.
	* util.c (umoven, umovestr): Move data in long-sized chunks
	at a time, instead of hard coding it to be 4.
	From David Mosberger-Tang <davidm@AZStarNet.com>.

Mon May 20 01:19:36 1996  J. Richard Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.13 is released.

	* configure.in (AC_CHECK_HEADERS): Add check for asm/sigcontext.h.
	* signal.c [HAVE_ASM_SIGCONTEXT_H]: Conditionally include
	asm/sigcontext.h to define sigcontext_struct and don't define it
	locally if the header is present.

	* syscall.c (nerrnos{0,2}): Correct size computation.

	* Makefile.in: Remove dependencies and rules relating to files
 	normally found in the os directory.  Because of the new scheme we
 	don't know precisely where they come from.  Sigh.
	* signalent.sh: Make it work for sunos4, linux, and svr4.
	* {sunos4,linux{,/alpha},svr4}/Makefile.in: Make rules correspond
 	to traditional make syntax.  Add signalent.h to files which can
 	unconditionally be rebuilt.  Prevent signalent.h from being
 	unconditionally being rebuilt since it's customized.
	* {sunos4,linux{,/alpha},svr4}/{ioctlent,errnoent,signalent}.h:
 	Use versions built by {ioctlent,errnoent,signaltent}.sh.
  	* sunos4/ioctlent.sh: Work around sprintf troubles with SunOS
 	4.1.4 and gcc 2.7.2.

Sun May 19 17:14:09 1996  J. Richard Sladkey  <jrs@world.std.com>

	* configure.in, Makefile.in: Add OSARCH concept to finish
	build support for the alpha.
	* Makefile.in, linux/Makefile.in: Rewrite clean, distclean,
	and maintainer-clean rules.
	* defs.h, ioctlsort.c: Make ioctl code member unsigned.
	* ioctl.c, ioctlsort.c (compare): Perform explicit checking
	for less, greater, and equal since subtraction on two's
	complement numbers isn't an order relation (it isn't transitive)!
	* linux/Makefile.in: Add rules for the signalent.h file.
	* linux/alpha/Makefile.in: New file.

Sun May 19 01:12:28 1996  J. Richard Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.12 is released.

	* linux{,alpha}/ioctlent.sh: Tweak for recent kernels.
	From Michael E Chastain <mec@duracef.shout.net>.

	* defs.h (SUPPORTED_PERSONALITES, DEFAULT_PERSONALITY): New.
	* syscall.c (set_personality): New.
	* strace.c (main): Call set_personality.
 	* defs.h, syscall.c, ioctl.c, signal.c: Make sysent, errnoent,
 	ioctlent, and signalent indirect pointers and redirect them
	based on personality.
	* {sunos4,svr4,linux{,/alpha}}/signalent.h: New files.
	Suggested by Tom Dyas <tdyas@eden.rutgers.edu>.

	* util.c (upeek): Handle case where ptrace returns a long
	and sizeof(long) != sizeof(int).
	From Richard Henderson <richard@twiddle.tamu.edu>

Fri May 17 21:03:36 1996  J. Richard Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.11 is released.

	* many files: Fix more printf warnings for other platforms.

	* ipc.c (sys_msgrcv) [LINUX]: Conditionalize definition of ipc_wrapper.

	* linux/dummy.h: Handle missing library support for {send,recv}msg.
	Reported by Thomas Bogendoerfer <tsbogend@bigbug.franken.de>.

	* linux/syscall.h (sys_utimes): Fix a typo in the declaration.
	From Thomas Bogendoerfer <tsbogend@bigbug.franken.de>.

Fri May 17 00:50:06 1996  J. Richard Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.10 is released.

	* Makfile.in: Add os/arch to includes so that a given arch
	(like alpha) can override the native arch (like i386).
	* configure.in: Check for sendmsg.

	* net.c: Make sendmsg and recvmsg dependent on an autoconf
	test.  Reported by Michael E Chastain <mec@duracef.shout.net>.

	* acconfig.h, configure.in: Detect the alpha.
	* ioctl.c: Handle the alpha.
	* defs.h: Make some members long for the alpha.  Define
	some register nicknames.  Add support for WAITEXECVE.
	* file.c [ALPHA]: Support the alpha for statfs.  Add
	osf_statfs and osf_fstatfs for the alpha.  Make damn sure
	major and minor results are suitable for passing to printf.
	* signal.c, syscall.c: Support the alpha.
	* process.c: Add alpha user offsets.
	* most files: Use %l? for printf arguments since
	most are now longs for the alpha.
	* linux/alpha/{errnoent.h,ioctlent.{h,sh},syscallent.h}:
	New for the alpha.
	From Thomas Bogendoerfer <tsbogend@bigbug.franken.de>.

Wed May 15 00:29:37 1996  J. Richard Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.9 is released.

	* config.in, config.sub, install-sh: Upgrade to autoconf 2.10.

	* linux/dummy.h, linux/syscallent.h, linux/syscall.h: Add recent
	Linux kernel version system calls.

Wed Mar 13 01:03:38 1996  J. Richard Sladkey  <jrs@world.std.com>

	* ipc.c [SUNOS4]: Add SunOS support for decoding IPC calls.
	* syscall.c [SUNOS4]: Compile decode_subcall on SunOS and
	decode IPC calls using it.
	* sunos4/dummy.h: Alias sys_semop to printargs.
	* sunos4/syscall.h: Add new pseudo syscalls for IPC.
	* sunos4/syscallent.h: Include new subcalls for IPC.
	From Matthias Pfaller <leo@dachau.marco.de>.

Tue Feb 13 22:08:25 1996  J. Richard Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.8 is released.

	* time.c [LINUX]: Explicitly include linux/version.h.

	* strace.c (main): Don't let them even *try* to
	get strace to attach to itself since some systems
	don't handle this case very gracefully.
	Reported by David S. Miller <davem@caip.rutgers.edu>.

	* Makefile.in (distclean): Fix it for subdirectories.

	* sunos4/syscallent.h, svr4/syscallent.h: Fill in the new
	sys_flags member for each defined system call.

Fri Dec  8 01:17:28 1995  Rick Sladkey  <jrs@world.std.com>

	* defs.h (TRACE_*): New flags to describe what class
	of system call each system call is.
	(sysent): Add sys_flags member.
	* syscall.c (sysent): Define (and later undef) abbreviations
	for the system call class flags.
	(lookup_class): New function to translate strings to
	system call class flags.
	(qualify): Handle new system call class mechanism.
	* linux/syscallent.h: Fill in the new sys_flags member
	for each defined system call.

	* defs.h (print_sock): Remove redundant and non-K&R C
	compatible prototype.  From Juergen Weigert
	<jnweiger@immd4.informatik.uni-erlangen.de>.

Thu Dec  7 01:17:40 1995  Rick Sladkey  <jrs@world.std.com>

	* linux/ioctlent.sh: Tweak to improve ioctl accuracy.
	From Michael E Chastain <mec@duracef.shout.net>.

	* system.c (includes) [LINUX]: Add linux/nfs.h for recent
	kernels.  From Michael E Chastain <mec@duracef.shout.net>.

Wed Dec  6 21:52:28 1995  Rick Sladkey  <jrs@world.std.com>

	* file.c (sprintfstype): Enclose string result in double
	quotes.

	* time.c (sys_adjtimex) [LINUX]: Conditionalize
	constantly evolving timex structure.
	From Aaron Ucko <UCKO@VAX1.ROCKHURST.EDU>.

	* defs.h, syscall.c, strace.c: Rename syscall to
	trace_syscall and change prototype and all callers
	because of broken Linux shared libraries.
	From Aaron Ucko <UCKO@VAX1.ROCKHURST.EDU>.

	* Makefile.in (clean): Check for a file with test -f not
	test -d.  From Aaron Ucko <UCKO@VAX1.ROCKHURST.EDU>.

Tue Sep 26 02:32:31 1995  Rick Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.7 is released.

	* util.c (string_quote): Fix thinko which caused core
	dumps for strings with quotes in them.
	Reported by Marty Leisner <leisner@sdsp.mc.xerox.com>.

	* linux/Makefile.in (errnoent.h rule): Grab all errno.h
	files from /usr/include, not just the linux one.
	From Michael E Chastain <mec@duracef.shout.net>.

	* linux/errnoent.sh: Total rewrite to handle more ioctls with
	fewer false positives on more kernel flavors.
	From Michael E Chastain <mec@duracef.shout.net>.

Mon Sep  4 01:29:22 1995  Rick Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.6 is released.

	* linux/dummy.h, linux/syscall.h, linux/syscallent.h: Add
	sys_msync.
	* mem.c (mctl_funcs, mctl_lockas, sys_mctl): Conditionalize
	on MC_SYNC instead of HAVE_MCTL.
	(mctl_sync): Conditionalize on MS_ASYNC instead of HAVE_MCTL.
	(sys_msync): New function.

Sat Sep  2 12:06:04 1995  Rick Sladkey  <jrs@world.std.com>

	* linux/dummy.h, linux/syscall.h, linux/syscallent.h: Add
	sys_flock and sys_getdents.
	* desc.c (flockcmds, sys_flock): Conditionalize on LOCK_SH
	not SUNOS4.
	* file.c (sys_getdents): Define unconditionally and handle
	LINUX case.
	* strace.c (main): Disallow username option unless both real
	and effective uids are root.

Wed Aug 30 01:29:58 1995  Rick Sladkey  <jrs@world.std.com>

	* strace.c (main): Ensure that run_uid and run_gid are
	always set to something meaningful.
	(main, newoutf) [!SVR4]: Swap real and effective uids while
	opening any output files.
	(main) [!SVR4]: Treat effective uid of root as a request
	to handle suid binaries correctly using the real uid of
	the invoking user.

Sat Aug 19 00:06:08 1995  Rick Sladkey  <jrs@world.std.com>

	* Makefile.in: Add `|| true' to clean rule because
	although GNU make 3.74 uses `sh -c' to invoke commands
	every other make in the world uses `sh -ec'.

	* syscall.c (syscall) [SVR4, MIPS]: The fifth and subsequent
	arguments appear to be stored on the stack, not in the
	registers following A3 (empirical result).

	* defs.h: Add prototype for printsock.
	* svr4/dummy.h: Remove generic handling of sys_mount.
	* system.c [SVR4, MIPS]: Include several system headers to cleanly
	get access to SGI mount information.
	(mount_flags, nfs_flags) [SVR4, MIPS]: New objects.
	(sys_mount) [SVR4, MIPS]: New function.
	(sys_mount) [SVR4, !MIPS]: New function.

Tue Jul  4 00:30:34 1995  Rick Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.5 is released.

	* desc.c, resource.c, strace.c, syscall.c, time.c: Cast tv_sec and
 	tv_usec members to long when using printf.

	* ipc.c: Omit define of __KERNEL__.
	({MSG,SEM,SHM}_{STAT,INFO}): Explicitly define those things we
 	want which __KERNEL__ used to provide.
	(sys_msgrcv): Change reference to ipc_kludge structure to
	look-alike ipc_wrapper to avoid dependence on __KERNEL__.

	mem.c (mmap_flags) [MAP_{GROWSDOWN,DENYWRITE,EXECUTABLE}]: Add
 	Linux specific options.

	syscall.c: Use SYS_ERRLIST_DECLARED instead of guessing.
  	[E{RESTART{SYS,NO{INTR,HAND}},NOIOCTLCMD}]: Explicitly define
 	instead of depending of __KERNEL__.

	term.c: Cast c_{i,o,c,l}flag to long when using printf.

Tue Jun  6 00:27:48 1995  Rick Sladkey  <jrs@world.std.com>

	* aclocal.m4 (AC_DECL_SYS_ERRLIST, AC_DECL__SYS_SIGLIST): New.
	* configure.in: Call AC_DECL_SYS_ERRLIST, AC_DECL_SYS_SIGLIST,
	and AC_DECL__SYS_SIGLIST.
	* acconfig.h (SYS_ERRLIST_DECLARED): New.
	* strace.c (strerror): Use SYS_ERRLIST_DECLARED.
	(strsignal): Use SYS_SIGLIST_DECLARED.

	net.c (sys_socket): Omit inadvertent surplus comma when
	protocol family isn't PF_INET.

	util.c (dumpstr): Fix incorrect printing of one too many
	characters when the length is not an even multiple of 16 bytes.
	Reported by Juergen Weigert
	<jnweiger@immd4.informatik.uni-erlangen.de>.

Thu May  4 23:37:47 1995  Rick Sladkey  <jrs@world.std.com>

	* ioctl.c (compare): Change prototype to match POSIX qsort.
	* signal.c (sigishandled) [SVR4]: Omit everything after return.
	* strace.c (trace) [SVR4]: Break out of for loop instead of
	returning when finished so final return statement is executed.
	* syscall.c (internal_syscall): Add more SYS_wait* variations.
	(syscall) [LINUX]: Correct typo which commented out the M68K
	argument to ifdef.
	* util.c (printstr): Cast unsigned char pointer argument
	to char pointer in umovestr call.
	(dumpstr): Likewise for umoven.

Wed May  3 01:10:56 1995  Rick Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.4 is released.

	* signal.c (sys_sigblock): Move after the definition of
	sys_sigsetmask that it calls to avoid an implicit declaration.
	* stream.c (transport_user_options, transport_server_options):
	Only needed if TI_BIND is defined.
	* configure.in: Add -Wno-implicit to WARNFLAGS on SunOS 4.x.

	* process.c (internal_fork) [SVR4]: Fix a typo that omitted
	the tcp arguement from the call to exiting.  Add getrval2
	check so no fork processing is done in the child.
	(printwaitn): Initialize exited so that its value is defined
	for all flows of execution.

Tue May  2 22:39:42 1995  Rick Sladkey  <jrs@world.std.com>

	* linux/dummy.h: Add aliases for sysfs, personality, afs_syscall,
	setfsuid, setfsgid, and _llseek syscalls.
	* linux/syscall.h: Add prototypes for them.
	* linux/syscallent.h: Add them to the syscall entries table.
	* system.c (headers) [LINUX]: Include linux/unistd.h to get __NR_*
	defines and conditionally include linux/personality.h if
	__NR_personality is defined.
	(personality_options) [LINUX]: New table.
	(sys_personality) [LINUX]: New function.

Tue May  2 00:20:39 1995  Rick Sladkey  <jrs@world.std.com>

	* strace.c (trace) [!SVR4]: Change forever loop to one predicated
	on the number of traced processes so that we can have untraced
	children (e.g. via popen).

	* strace (main) [!SVR4]: Call fake_execve to get the actual
	exec and its arguments into the trace.
	(environ): Declare it.
	* process.c (fake_execve): New function.
	(headers): Include sys/syscall.h to get SYS_* defines.

	* process.c (sys_execv, sys_execve): Surround argument annotations
	with C comment delimiters.
	(printargv, printargc): The arg vector is an array of char pointers
	not ints.

	* strace.c (printleader): Also check for multiple -p arguments
	when deciding whether to print the pid field.

	* strace.c (strerror) [!HAVE_STRERROR]: New function.
	* defs.h (strerror, strsignal): Add these prototypes if we provide
	the functions.
	* configure.in (AC_CHECK_FUNCS): Add strerror.

	* strace.c (main, proc_poller): Add SIGPIPE to the list of caught
	and blocked signals.

	* strace.c (main): Add username option.  Verify they are root before
	letting them use it.  Look up the ids in the password file.  Set
	them just before executing the program.
	From Reuben Sumner <rasumner@undergrad.math.uwaterloo.ca>.

Sat Apr 29 00:09:56 1995  Rick Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.3 is released.

	* system.c (mount_flags) [LINUX]: Omit duplicated MS_NOSUID entry.
	From Reuben Sumner <rasumner@undergrad.math.uwaterloo.ca>.

	* strace.c (outfname): Initialize to NULL.
	(main): Defer output file processing until after arguments.
	Allow either a pipe or a bang for command arguments.
	Check if outfname is NULL instead of checking outf for stderr.
	Reinitialize each startup TCB's outf to fix -p/-o ordering bug.
	(droptcb): Reset close TCB's outf to NULL instead of stderr.
	(tprintf): Avoid calling vfprintf if outf is NULL.

	* strace.c (main): Use popen if -o argument begins with a pipe.
	From Marty Leisner <leisner@sdsp.mc.xerox.com>.

	* process.c (printstatus): Fix a typo where WIFSIGNALED was meant
	but WIFSTOPPED was used.

	* Makefile.in: Add an EXTRA_DEFS variable and use it in the .c.o
	rule to prevent the comment from being untrue.

Fri Apr 28 22:01:56 1995  Rick Sladkey  <jrs@world.std.com>

	* strace.c (sys_exit): Move follow fork code to internal_exit.
	(sys_fork): Move follow fork code to internal_fork.
	(sys_execv, sys_execve): Move follow fork code to internal_exec.
	(sys_waitpid, sys_wait4): Move follow fork code to internal_wait.
	(vforking): Remove this static variable and check scno in
	internal_fork instead.
	(internal_exit, internal_fork, internal_exec, internal_wait): New
	functions.
	* defs.h: Add prototypes for the new internal_* functions.
	* syscall.c (syscall): Move syscall entering trace qualifier check
	and reprint checking after context decoding and precede them with
	a call to internal_syscall.  Precede syscall exiting trace
	qualifier check with a call to internal_syscall.
	(internal_syscall): New function.

	* defs.h (struct tcb): Make scno signed.
	* strace.c (syscall) Make u_error signed.
	[LINUX, I386]: Avoid unsigned cast in eax check.
	* syscall.c (sys_indir): Make i, scno, and nargs signed.
	* desc.c (sys_select): Make cumlen unsigned

Mon Apr 24 23:52:47 1995  Rick Sladkey  <jrs@world.std.com>

	* net.c (socktypes): Add SOCK_PACKET.

Sun Apr  2 23:50:39 1995  Rick Sladkey  <jrs@world.std.com>

	* Makefile (clean): Check explicitly for a Makefile in subdirs
	before running make in them.

Sun Mar 26 12:37:21 1995  Rick Sladkey  <jrs@world.std.com>

	* strace.c [MIPS] (proc_open): Conditionalize run on MIPS.
	[MIPS] (detach): Initialize error for MIPS case.
	(trace): Initialize ioctl_result and ioctl_errno for overly helpful
	compilers.
	* syscall.c (decode_subcall): Move variable i into conditionals
	that use use it.
	* system.c (syssgi_options): Conditionalize SGI_RECVLMSG and
	SGI_SET_FPDEBUG that SGI decided to drop.  I don't have the stomach
	to change them all.
	* term.c (term_ioctl): Force [c_[iocl]flags members to long before
	printing since we don't know what the size of their type is.
	* util.c [SVR4, MIPS] (umoven): Prevent MIPS from using pread even
	if autoconf detects it since it seems to either not work or do
	something else entirely on Irix 5.3.

Sun Mar 26 00:01:11 1995  Rick Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.2 is released.
	* linux/dummy.h: Make sys_fchdir like sys_close instead of printargs
	so that the file descriptor arg is decimal.

Sat Mar 25 22:50:13 1995  Rick Sladkey  <jrs@world.std.com>

	* net.c [LINUX] (protocols): Explicitly define all IPPROTO_* entries
	because on Linux they are enumerators.

	* system.c [LINUX] (mount_flags): Handle renaming of MS_SYNC to
	MS_SYNCHRONOUS.

	* util.c (printxval): When there is no translation, print the actual
	number first and the the default value as a C comment.

	* net.c (sys_send, sys_sendto, sys_sendmsg, sys_getsockopt,
	sys_setsockopt): Change first argument from unsigned to signed to
	cater to the frequent practice of calling system calls with a file
	descriptor of -1.
	* mem.c (sys_mmap): Likewise.

Sun Mar 19 13:53:52 1995  Rick Sladkey  <jrs@world.std.com>

	* signal.c [LINUX] (signalent): Handle old and new values of SIGIO.

Sun Dec 11 22:51:51 1994  Rick Sladkey  <jrs@world.std.com>

	* version.c: Version 3.0.1 is released.
	* Makefile.in, configure.in, aclocal.m4: Changes for autoconf 2.0.
	* config.guess, config.guess: Update from the FSF.
	* install-sh: New from the FSF.

Mon Dec  5 20:51:29 1994  Rick Sladkey  <jrs@world.std.com>

	* Makefile.in: Add m68k arch.
	* acconfig.h (M68K): Add m68k define.
	* configure.in: Add detection of arch m68k.
	* process.c [M68K] (struct_user_offsets): Support m68k registers and
	offsets.
	* signal.c [M68K] (sigcontext_struct): Support m68k sigcontext
	structure.
	[M68K] (sys_sigreturn): Support m68k sigreturn handling.
	* syscall.c [M68K] (syscall): Support m68k syscall number register
	and errno in d0 instead of eax.
	* util.c [M68K] (getpc, printcall, setbpt, clearbpt): Support m68k
	program counter in PT_PC instead of EIP.
	[M68K] (LOOP): Support m68k loop instruction.
	From Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.

	* mem.c [MAP_ANONYMOUS] (mmap_flags): Correct inadvertent reference
	to MAP_FIXED instead of MAP_ANONYMOUS.
	From Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.

	* signal.c [LINUX] (signalent): Signal 30 is now SIGPWR.
	From Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>.

Mon Dec  5 01:05:46 1994  Rick Sladkey  <jrs@world.std.com>

	* defs.h (tprintf): Fix typo in non-gcc ansi prototype for tprintf.
	Reported by Thanh Ma <tma@encore.com>.

	* strace.c (cleanup): Send SIGCONT before SIGTERM because Linux
	1.1.62 doesn't continue a traced child when the parent exits.
	Reported by Matt Day <mday@artisoft.com>.

	* system.c [LINUX]: Include netinet/in.h before arpa/inet.h.

	* util.c (printstr): Fix longstanding bug in notating string
	continuation.

	* strace.c [SVR4] (proc_open): Specifically wait for the child the
	child to go into the execve syscall to avoid spurious traces.
	[LINUX] (detach): Conditionalize the status variable.

Sun Dec  4 23:21:42 1994  Rick Sladkey  <jrs@world.std.com>

	* Makefile.in: Add mips arch.
	* acconfig.h (MIPS): Add mips define.
	* configure.in: Add detection of opsys irix5 and arch mips.  Check
	for prctl function.
	Check for sys/sysconfig.h header.
	* defs.h (MAX_ARGS): Bump maximum syscall arguments from 8 to 32.
	* file.c [SVR4]: Include sys/cred.h.
	(access_flags): Update access flags for SGI.
	(sprinttime): Change type of sprinttime argument from unsigned
	long to time_t.
	* process.c [HAVE_PRCTL]: Include sys/prctl.h.
	[HAVE_PRCTL] (prctl_options, sys_prctl): New for SGI.
	(printsiginfo): Conditionally compile SI_TIMER and SI_MESGQ.
	Cast si_band member to long before printing.
	* signal.c (sigact_flags): Add _SA_BSDCALL for SGI.
	(sigprocmaskcmds): Add SIG_SETMASK32 for SGI.
	* strace.c [SVR4] [MIPS]:
	(foobar): New dummy signal handler.
	(main): Install a dummy signal handler in the child before pausing
	to work around an SGI bug in PRSABORT.
	(proc_open): Send a interrupt to the child instead of aborting the
	syscall which doesn't work on Irix5.2.
	* svr4/dummy.h: Add new unfinished SGI syscalls
	(e.g. sys_sysmp, sys_sginap, etc.).  Handle some SGI syscalls like
	existing calls (e.g. sys_ksigaction like sys_sigaction).
	Printargs does the print thing for sys_sethostid.
	* svr4/syscall.h: Declare all new SGI syscalls.
	(SGI_KLUDGE): Define syscall table starting index to be 1 for SGI
	and add it to all subcall entry points.
	(SYS_pgrpsys_subcall, SYS_sigcall_subcall, SYS_context): Don't
	decode as subcalls on MIPS. Instead, use the normal syscalls.
	* svr4/syscallent.h [MIPS]: Lead syscall table with a dummy entry
	since SGI syscall numbers are off by one.
	[MIPS] (sys_pgrpsys): Rename to sys_setpgrp on SGI.
	[MIPS] (sys_xenix): Rename to sys_syssgi on SGI.
	[MIPS] (sys_sysmachine): Rename to sys_sysmips on SGI.
	[MIPS]: Conditionalize SVR4 extension into SGI and Solaris classes.
	* syscall.c (dumpio): Validate descriptor against MAX_QUALS.
	[HAVE_PR_SYSCALL] (syscall): Conditionalize SYS_vfork.
	[MIPS] (syscall): Add SGI section for decoding u_error and u_rval.
	Add workaround for broken SGI pr_sysarg on syscall entry.
	[SVR4] (syscall): Conditionalize subcall decoding for
	SYS_ptrpsys_subcall, SYS_sigcall_subcall and SYS_context_subcall.
	[SVR4] [MIPS] (getrval2): Handle SGI.
	* syscallent.sh: Dork the sed line to be choosier about SYS_ lines.
	* system.c [HAVE_SYSCONFIG_H]: Include sys/sysconfig.h.
	[MIPS] (syssgi_options, sys_syssgi): New for SGI.
