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

	Clean up spacing to fix warnings reported by git diff --check.
	* ChangeLog: Fix spaces before tab in indent.
	* bjm.c: Likewise.
	* debian/changelog: Likewise.
	* strace-graph: Likewise.
	* syscall.c: Likewise.
	* INSTALL: Fix trailing blank lines.
	* README-linux: Likewise.
	* README-svr4: Likewise.
	* linux/sparc/gen.pl: Likewise.
	* linux/sparc/syscall1.h: Likewise.
	* linux/sparc64/syscall1.h: Likewise.
	* linux/x86_64/gentab.pl: Likewise.
	* sunos4/syscall.h: Likewise.
	* test/Makefile: Likewise.
	* debian/rules: Fix trailing whitespaces.
	* desc.c: Likewise.
	* svr4/syscallent.h: Likewise.
	* test/childthread.c: Likewise.
	* test/leaderkill.c: Likewise.

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

	* .cvsignore: Remove.
	* README-CVS: Rename to README-hacking.
	* Makefile.am (EXTRA_DIST): Remove README-CVS.

2009-06-01  Dmitry V. Levin  <ldv@altlinux.org>

	* bjm.c (sys_query_module): Fix format warning reported by
	gcc -Wformat-security.
	* file.c (tprint_open_modes): Likewise.
	* process.c (printargv): Likewise.
	* signal.c (printsignal): Likewise.

	Clean up header checks.
	* configure.ac: Reformat AC_CHECK_HEADERS to keep it sorted and
	easily updated, and reduce merging errors in the future.
	* system.c: Convert all non-standard #ifdef checks for specific
	headers to regular #ifdef HAVE_*_H checks.
	Signed-off-by: Mike Frysinger <vapier@gentoo.org>

2009-04-20  Denys Vlasenko  <dvlasenk@redhat.com>

	* file.c (printstatsol, printstat_sparc64):
	Remove NULL/error check for addr parameter.
	(printoldstat, printstat, printoldstat64):
	Move NULL/error check for addr parameter
	so that it happens before printstatsol/printstat_sparc64 calls.

2009-04-16  Denys Vlasenko  <dvlasenk@redhat.com>

	* file.c (print_dirfd): Use int for file descriptor, not a long.
	* process.c (printwaitn): Use int for PID, not a long.

2009-04-15  Denys Vlasenko  <dvlasenk@redhat.com>

	* signal (sys_rt_sigtimedwait): Fix sigtimedwait syscall decoding.

2009-04-15  Denys Vlasenko  <dvlasenk@redhat.com>

	* signal (sys_rt_sigaction): Print struct sigaction correctly
	in 32/64 environment.
	* desc.c (printflock): Add #ifdefs around earlier flock 32/64 fix
	so that we don't waste time on arches with one personality.

2009-04-14  Denys Vlasenko  <dvlasenk@redhat.com>

	* signal.c: Whitespace, comment, and style fixes, no code changes.
	* file.c: Ditto.
	* time.c: Ditto.
	* process.c: Ditto.
	* resource.c: Ditto.

2009-03-23  Denys Vlasenko  <dvlasenk@redhat.com>

	* system.c (sram_alloc_flag): Add L2_SRAM constant.
	by Mike Frysinger (vapier AT gentoo.org).
	(sys_sram_alloc): Fix improperly used %zu:
	tcp->u_arg is not a size_t, it is a long.
	* net.c (printcmsghdr): Fix improperly used %zu:
	struct cmsghdr::cmsg_len is not a size_t.

2009-03-10  Denys Vlasenko  <dvlasenk@redhat.com>

	Decode fcntl's F_{GET,SET}LEASE, F_NOTIFY, and F_DUPFD_CLOEXEC.
	By Mike Frysinger (vapier AT gentoo.org)
	* desc.c: Add F_SETLEASE, F_GETLEASE, F_NOTIFY,
	F_DUPFD_CLOEXEC to fcntlcmds[]. Create notifyflags[] array.
	(sys_fcntl): Handle new flags.

	Optimize printing of open modes.
	* defs.h: Declare sprint_open_modes(),
	remove unused parameter in tprint_open_modes().
	* desc.c (sprint_open_modes): Move fuction definition from here...
	* file.c (sprint_open_modes): To here.
	(tprint_open_modes): Use sprint_open_modes(), it already
	generates needed string.
	* ipc.c: Remove unused parameter from calls
	to tprint_open_modes().

2009-02-27  Denys Vlasenko  <dvlasenk@redhat.com>

	AVR32 support by Hans-Christian Egtvedt
	(hans-christian.egtvedt AT atmel.com).
	* configure.ac: Make it recognize avr32.
	* defs.h: Define LINUX_AVR32.
	* linux/avr32/syscallent.h: New file.
	* Makefile.am: Reference linux/avr32/syscallent.h.
	* proc.c (change_syscall, setarg): Add support for avr32.
	(struct xlat struct_user_offsets[]): Ditto.
	* syscall.c (get_scno): Ditto.
	(get_error, force_result, syscall_enter): Ditto.
	* util.c (getpc, printcall): Ditto.

2009-02-25  Denys Vlasenko  <dvlasenk@redhat.com>

	CRIS support by Hinko Kocevar (hinko.kocevar AT cetrtapot.si)
	* configure.ac: Make it recognize cris.
	* process.c: Define ARG_xxx constants for cris.
	(change_syscall): Add support for cris.
	(struct_user_offsets): Add cris-specific data.
	* signal.c (sys_sigreturn): Add support for cris.
	* syscall.c (get_scno): Add support for cris.
	(syscall_fixup): Add support for cris.
	(get_error): Add support for cris.
	(syscall_enter): Add support for cris.
	(force_result): While at it, fix cpp directives indentation.
	* util.c (printcall): Add support for cris.

2009-02-24  Denys Vlasenko  <dvlasenk@redhat.com>

	* process.c: Indent preprocessor directives so that nesting
	can be figured out. Add PTRACE_SET_SYSCALL to ptrace_cmds[].
	* ioctlent.sh: Improved by Mike Frysinger.
	* HACKING-scripts: New file by Mike Frysinger.

2009-02-20  Denys Vlasenko  <dvlasenk@redhat.com>

	Further signalent.h cleanup.
	* linux/ia64/signalent.h: Remove, it is identical to common signalent.h
	sans "SIGRTnn" definitions which are redundant.
	* linux/powerpc/signalent.h: Remove, it is identical to common signalent.h
	sans outdated "SIGUNUSED" which should be "SIGSYS".
	* linux/s390/signalent.h: Ditto.
	* linux/s390x/signalent.h: Ditto.
	* Makefile.am: Remove references to the above files.

2009-02-20  Denys Vlasenko  <dvlasenk@redhat.com>

	Patch by Mike Frysinger (vapier AT gentoo.org).
	* linux/ioctlent.sh: Update sed machinery to parse _IOC() macros
	with two constants.

2009-02-20  Denys Vlasenko  <dvlasenk@redhat.com>

	Patch by Mike Frysinger (vapier AT gentoo.org).
	* Makefile.am: Remove reference to linux/sh/signalent.h.
	* linux/sh/signalent.h: Remove, it is identical to common signalent.h.

2009-02-20  Denys Vlasenko  <dvlasenk@redhat.com>

	Patch by Mike Frysinger (vapier AT gentoo.org).
	* linux/errnoent.h: Make ERRNO_58 show EDEADLOCK for POWERPC.
	* Makefile.am: Remove reference to linux/powerpc/errnoent.h.
	* linux/powerpc/errnoent.h: Remove, we can use common errnoent.h now.

2009-02-20  Denys Vlasenko  <dvlasenk@redhat.com>

	Patch by Mike Frysinger (vapier AT gentoo.org).
	Removing redundant errnoent.h files.
	* Makefile.am: Remove reference to linux/ia64/errnoent.h,
	linux/s390/errnoent.h, linux/s390x/errnoent.h and linux/sh/errnoent.h.
	* linux/ia64/errnoent.h: Remove, this arch uses common errnoent.h.
	* linux/s390/errnoent.h: Ditto.
	* linux/s390x/errnoent.h: Ditto.
	* linux/sh/errnoent.h: Ditto.

2009-02-10  Roland McGrath  <roland@redhat.com>

	* configure.ac: Check for struct sigcontext.
	* signal.c [LINUX] [M68K] (struct sigcontext): Don't define it if
	[HAVE_STRUCT_SIGCONTEXT].
	From Muttley Meen <muttley.meen@gmail.com>.

2009-02-09  Denys Vlasenko  <dvlasenk@redhat.com>

	* defs.h: Correct the comment about TCB_SUSPENDED.
	* strace.c: Fix misplaced #endif.
	* util.c: Indent preprocessor directives, mark code parts
	which can never be reached by compilation because of
	the combination of #if directives. These are likely dead code,
	I want to remove them later.

2009-01-29  Denys Vlasenko  <dvlasenk@redhat.com>

	* strace.c (newoutf): Prevent -o FILENAME overflowing the stack.
	(startup_attach): Fix wrong pid in "Process <PID> attached".
	(handle_group_exit): Do not consider exit to be spurious if
	tcb has TCB_STARTUP bit set - we can attach to the task
	right before its death, it can legitimately happen.
	(handle_stopped_tcbs): Ditto.

2009-01-26  Denys Vlasenko  <dvlasenk@redhat.com>

	* process.c (printwaitn): Add comment about wait4() pid expansion.
	Use #ifdef ALPHA instead of LINUX_64BIT, it was misleading
	(by implying "any 64-bit platform").
	* defs.h: Remove now-unused LINUX_64BIT define.
	* resource.c (sys_osf_getrusage): Fix indentation.

2009-01-26  Denys Vlasenko  <dvlasenk@redhat.com>

	* process.c (internal_clone): Fix fallout from tcb table expansion
	simplification. Due to overlooked else, I forgot to group
	fork_tcb(tcp) and alloctcb(pid) in a block.

2009-01-23  Michal Nowak  <mnowak@redhat.com>

	* syscall.c (get_scno): Fix warnings about unused variable 'pid'.

2009-01-23  Michal Nowak  <mnowak@redhat.com>

	* mem.c (print_ldt_entry): Fix warning:
	Format '%#08lx' expects type 'long unsigned int', but
	argument 2 was type 'unsigned int'.

2009-01-17  Denys Vlasenko  <dvlasenk@redhat.com>

	Two cleanups: tcb table expansion failure is not really a survivable
	event, we do not have any viable way to continue. No wonder most
	places where that is detected have FIXMEs.
	It's way simpler to treat as fatal failure, and handle it inside
	tcb table expansion finctions.
	Second cleanup: tidy up haphazard locations of a few externs.

	* defs.h: Change return type of expand_tcbtab() to void.
	Declare change_syscall().
	* process.c: Change all callsites of alloctcb(), alloc_tcb() and
	fork_tcb(), removing now-redundant error checks.
	(fork_tcb): Change return type to void - it can't fail now.
	* strace.c: Move extern declarations out of function bodies.
	Change all callsites of alloctcb(), alloc_tcb() and
	fork_tcb(), removing now-redundant error checks.
	(expand_tcbtab): Change return type to void - it can't fail now.
	On failure to expand, print a message, clean up, and exit.
	(alloc_tcb): On failure to expand, print a message, clean up, and exit.
	* util.c (setbpt): Remove extern declaration from function body.

2009-01-14  Denys Vlasenko  <dvlasenk@redhat.com>

	* linux/bfin/syscallent.h: sys_futex has 6 parameters, not 5.

2009-01-13  Denys Vlasenko  <dvlasenk@redhat.com>

	Fixes for ptrace() argument parsing.
	* process.c: Add parsing of PTRACE_SETOPTIONS, PTRACE_GETEVENTMSG,
	PTRACE_GETSIGINFO, PTRACE_SETSIGINFO.
	* defs.h: Declare several "extern const struct xlat" arrays here.
	* desc.c: Remove open_mode_flags[] and open_access_modes[]
	extern declarations.
	* net.c: Remove open_mode_flags[] extern declaration.
	* sock.c: Remove addrfams[] extern declaration.
	* util.c: Remove struct_user_offsets[] extern declaration.
	* signal.c: Remove open_mode_flags[] extern declaration.

2009-01-06  Denys Vlasenko  <dvlasenk@redhat.com>

	Output format fixes, improving the situation after recent
	change which added beeter handling of processes suddenly
	disappearing. Now we often do not finish last line
	before exiting in those cases.
	The only change affecting something other than output
	is change in umovestr where we were calling
	abort() on ptrace error.

	* strace.c (trace): If trace_syscall() failed with ESRCH,
	finish current output line with " <unfinished ...>".
	(mp_ioctl): While we are at it, fix gross style mismatch
	in this function definition. No code chages.
	* syscall.c (trace_syscall): If decode fails on syscall exit,
	finish current output line with "= ? <unavailable>".
	* util.c (umoven): Do not complain if error is ESRCH.
	(umovestr): Do not complain and do not abort() if error is ESRCH.
	* defs.h: Remove unused tcp parameter from printtrailer().
	* process.c: Adjust printtrailer() calls accordingly.
	* strace.c: Adjust printtrailer() calls accordingly.
	* syscall.c: Adjust printtrailer() calls accordingly.

2009-01-06  Denys Vlasenko  <dvlasenk@redhat.com>

	* desc.c (printflock): Fix display of fcntl(F_SETLK) on
	non-native 32-bit architecture.
	Fixes RH#471169 "format fcntl64() system calls for
	32 bit application incorrect".
	* desc.c: const'ify two static struct xlat vector[]'s,
	convert all remaining old style C parameter declarations
	in this file.

2008-11-13  Kirill A. Shutemov  <kirill@shutemov.name>

	* linux/arm/syscallent.h: Update syscalls.
	Based on patch by Enrico Scholz.

	* linux/arm/syscallent.h: Fix build on ARM EABI which does not
	provide syscalls socketcall and ipc.

2009-01-01  Andreas Schwab  <schwab@suse.de>

	* net.c (sys_accept): Properly decode third argument as pointer to
	int.

2008-12-30  Denys Vlasenko  <dvlasenk@redhat.com>

	Experimental support for -D option.
	Unlike normal case, with -D *grandparent* process exec's,
	becoming a traced process. Child exits (this prevents traced process
	from having children it doesn't expect to have), and grandchild
	attaches to grandparent similarly to strace -p PID.
	This allows for more transparent interaction in cases
	when process and its parent are communicating via signals,
	wait() etc. Without -D, strace process gets lodged in between,
	disrupting parent<->child link.
	* strace.c: Add global flag variable daemonized_tracer for -D option.
	(startup_attach): If -D, fork and block parent in pause().
	In this case we are already a child, we in fact created a grandchild.
	After attaching to grandparent, grandchild SIGKILLs parent.
	(startup_child): If -D, parent blocks in wait(), then
	execs the program to strace. Normally (w/o -D), it is child
	who execs the program.
	(main): Detect -D option, call startup_attach() if it is given.

2008-12-30  Kirill A. Shutemov  <kirill@shutemov.name>

	Fix some warnings on ARM build.
	* defs.h: include <sys/ptrace.h> on arm too.
	* syscall.c: EABI arm does not need decode_subcall(),
	ifdef it out.

2008-12-29  Nick Black  <dankamongmen@acm.org>

	* linux/syscallent.h: Mark sendfile(2) as network syscall.
	* linux/*/syscallent.h: Same, for all architectures.

2008-12-17  Denys Vlasenko  <dvlasenk@redhat.com>

	Make strace detect when traced process suddenly disappeared
	(prime example is randomly arriving SIGKILL).
	* defs.h (do_ptrace, ptrace_restart): Declare new functions
	* process.c: Use ptrace_restart instead of bare ptrace.
	This catches and records ESRCH errors.
	Print "<unavailable>" if syscall decode or result can't be
	determined because of an earlier error in ptrace()
	* syscall.c (trace_syscall): Stop indiscriminately bailing out
	on errors, print "syscall(????" or even "????(????" but continue.
	* util.c (do_ptrace, ptrace_restart): Define new functions.
	(upeek): use do_ptrace in order to catch and record ESRCH.
	Do not print error message in this case.
	Fixes RH#472053.

2008-12-17  Denys Vlasenko  <dvlasenk@redhat.com>

	* signal.c (sys_sigaction, sys_rt_sigaction): Fix typo
	in (sa_handler == SIG_IGN) comparison, it was using SIG_DFL
	instead.

2008-12-16  Denys Vlasenko  <dvlasenk@redhat.com>

	* defs.h: Modify declaration of upeek to take struct tcb *
	parameter instead of pid_t.
	* process.c: Change all upeek calls accordingly.
	* signal.c: Likewise.
	* strace.c: Likewise.
	* syscall.c: Likewise.
	* util.c: Likewise.

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

	* sock.c [LINUX] (sock_ioctl): Parse more SIOCS* ioctls.

2008-12-09  Roland McGrath  <roland@redhat.com>

	* strace.1 (DIAGNOSTICS): New section, describe exit behavior.

2008-11-09  Dmitry V. Levin  <ldv@altlinux.org>

	* process.c (prctl_options): Update constants from linux 2.6.27.
	* system.c (capabilities): Add more capability values.

	* util.c (string_quote): Fix support for NUL-terminated string.
	Add comments.
	(printpathn): Fix the case when "..." was appended to the output
	but no truncation was actually made.  Add comments.
	(printstr): Fix memory allocation.  Fix two cases when "..." was
	appended to the output but no truncation was actually made.
	Add comments.
	Fixes RH#470529.

2008-10-23  Dmitry V. Levin  <ldv@altlinux.org>

	Implement parsers for new linux syscalls.
	* desc.c (do_dup2, [LINUX] sys_dup3): New functions.
	(sys_dup2): Use do_dup2.
	[LINUX] (sys_epoll_create1): New function.
	[LINUX] (do_eventfd, sys_eventfd2): New functions.
	[LINUX] (sys_eventfd): Use do_eventfd.
	* net.c (do_pipe, [LINUX] sys_pipe2): New functions.
	(sys_pipe): Use do_pipe.
	* signal.c [LINUX] (do_signalfd, sys_signalfd4): New functions.
	[LINUX] (sys_signalfd): Use do_signalfd.
	* linux/syscall.h: Declare new sys_* functions.
	* linux/syscallent.h: Hook up signalfd4, eventfd2, epoll_create1,
	dup3, pipe2, inotify_init1.
	* linux/x86_64/syscallent.h: Hook up paccept, signalfd4, eventfd2,
	epoll_create1, dup3, pipe2, inotify_init1.

2008-10-23  Mike Frysinger  <vapier@gentoo.org>

	Port strace to the Blackfin architecture.
	* configure.ac: Add bfin to supported architectures.
	* process.c: Skip u_fpvalid/u_fpstate for Blackfin architecture.
	(change_syscall): Support Blackfin architecture.
	* syscall.c: Declare r0 for Blackfin architecture.
	(get_scno): Decode Blackfin syscall number.
	(syscall_fixup): Extract Blackfin return value.
	(get_error): Decode Blackfin return value.
	(force_result): Poke Blackfin return value.
	(syscall_enter): Extract Blackfin syscall arguments.
	* defs.h: Define TCB_WAITEXECVE for Blackfin architecture.
	* linux/syscall.h (sys_sram_alloc): Declare for Blackfin
	architecture.
	* system.c (sys_sram_alloc): Decode Blackfin sram_alloc() syscall.
	* util.c (getpc): Handle PC on Blackfin architecture.
	(printcall): Likewise.
	* linux/bfin/ioctlent.h, linux/bfin/syscallent.h: New Blackfin
	headers.
	* Makefile.am (EXTRA_DIST): Add linux/bfin/ioctlent.h and
	linux/bfin/syscallent.h.

2008-09-18  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Accept uclinux hosts as linux.

2008-10-22  Dmitry V. Levin <ldv@altlinux.org>

	Handle socket type flags introduced in linux 2.6.27.
	* net.c (socktypes): Add SOCK_DCCP.
	(sock_type_flags): New xlat structure.
	(tprint_sock_type): New function.
	(sys_socket, sys_socketpair): Use it to parse socket type and
	socket type flags.

2008-09-29  Dmitry V. Levin <ldv@altlinux.org>

	* strace.c (startup_child): Save child pid for future use.
	(main): Exit/kill ourself with straced child's exitcode/signal.
	(trace): If signalled process pid matches the saved child pid,
	save the signal number.  If terminated process pid matches the
	saved child pid, save its exit status.
	Patch from Denys Vlasenko <dvlasenk@redhat.com>
	Fixes RH#105371.

2008-09-12  Tomas Pospisek  <tpo@sourcepole.ch>
	    Jan Kratochvil  <jan.kratochvil@redhat.com>

	* strace.1 (DESCRIPTION): New description of unfinished system calls
	and system calls restarting.

2008-09-03  Dmitry V. Levin <ldv@altlinux.org>

	* desc.c (sys_fcntl): Do not initialize auxstr for failed syscall.
	* process.c (sys_fork, sys_rfork) [USE_PROCFS]: Likewise.
	* signal.c (sys_signal): Likewise.
	* stream.c (internal_stream_ioctl): Likewise.
	* time.c (sys_adjtimex): Likewise.
	* syscall.c (trace_syscall): If RVAL_STR is set, then
	print auxstr for failed syscall as well.

	* syscall.c (is_restart_error): New function.
	* defs.h (is_restart_error): Declare it.

	* linux/dummy.h (sys_nanosleep): Uncouple from sys_adjtime().
	* time.c (sys_nanosleep): New function, based on is_restart_error().

	* process.c (sys_prctl): Decode PR_SET_PDEATHSIG, PR_GET_PDEATHSIG,
	PR_SET_DUMPABLE, PR_GET_DUMPABLE, PR_SET_KEEPCAPS, PR_GET_KEEPCAPS.
	Fix PR_GET_UNALIGN decoder.
	(prctl_options): Add more constants.

	* linux/syscallent.h: Use sys_prctl() decoder for "prctl" syscall.
	* linux/alpha/syscallent.h: Likewise.
	* linux/arm/syscallent.h: Likewise.
	* linux/m68k/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/x86_64/syscallent.h: Likewise.

2008-09-02  Dmitry V. Levin <ldv@altlinux.org>

	* linux/x86_64/syscallent.h: Fix syscall numbers for "tee" and
	"sync_file_range".
	From Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>

2008-08-28  Roland McGrath  <roland@redhat.com>

	* strace.1 (BUGS): New section, mention SIGTRAP interference.

	* strace.spec (%ifarch %{strace64_arches}): Use cp -p instead of ln
	for %{rhel} < 6.

	* configure.ac, NEWS: Version 4.5.18.
	* strace.spec: 4.5.18-1.

2008-08-24  Roland McGrath  <roland@redhat.com>

	* linux/syscall.h (SYS_socket_subcall et al, SYS_ipc_subcall et al):
	Don't define these if [__ARM_EABI__].
	Reported by Johannes Stezenbach <js@sig21.net>.

	* syscall.c (trace_syscall): Conditionalize on [SYS_socket_subcall]
	and [SYS_ipc_subcall] individually.

	* linux/powerpc/syscallent.h: Handle subpage_prot.
	* mem.c [LINUX && POWERPC] (sys_subpage_prot): New function.
	* linux/syscall.h [POWERPC]: Declare it.
	From Simon Murray <simon@transitive.com>.

	* mem.c (mmap_prot): Handle PROT_SAO.
	From Simon Murray <simon@transitive.com>.

	* mem.c (madvise_flags): Typo fixes.  Rename to madvise_cmds.
	(sys_madvise): Use printxval, not printflags.
	Reported by Rajeev V. Pillai <rajeevvp@gmail.com>.

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

	* signal.c (sys_sigaction, sys_rt_sigaction): Don't omit the rest of
	the struct after sa_handler is a known constant.  Some sa_flags bits
	have meaning even for SIG_IGN/SIG_DFL.

2008-08-06  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* util.c (CLONE_VM): Define if not defined already.
	(setbpt): Clear CLONE_VM in the case we already clear CLONE_VFORK for
	SYS_clone and SYS_clone2.
	Reported by Michal Nowak.
	Fixes RH#455078.

2008-08-06  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix compiler warnings.
	* signal.c (sys_signal): Cast to SIG_* to the matching type LONG.
	* strace.c (trace): Variables PSR and PC are now signed.
	* syscall.c (syscall_enter): Variable RBS_END is now signed long.
	Remove/add the RBS_END casts appropriately.
	* util.c [IA64] (arg_setup): Variable BSP is now signed long.
	Remove/add the BSP casts appropriately.
	<ia32>: Initialize *STATE.

2008-07-31  Roland McGrath  <roland@redhat.com>

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

	* file.c [LINUX] (struct kernel_dirent): Define it locally,
	do not use <linux/dirent.h>.
	Fixes RH#457291.

	* configure.ac: Add AC_HEADER_STDBOOL.
	* defs.h [HAVE_STDBOOL_H]: #include <stdbool.h>.
	Fixes Debian#492774.

2008-07-24  Dmitry V. Levin <ldv@altlinux.org>

	* strace.c (main): Fix -F option backwards compatibility.

2008-07-22  Roland McGrath  <roland@redhat.com>

	* Makefile.am (EXTRA_DIST): Add new debian/ files.

2008-07-21  Roland McGrath  <roland@redhat.com>

	* configure.ac: Version 4.5.17.
	* strace.spec: 4.5.17-1.

	* defs.h [LINUXSPARC]: Don't #include <linux/a.out.h>.

2008-07-19  Frederik Schüler <fs@debian.org>

	* debian/control: Add strace64 package.
	* debian/rules: Use debhelper flag --same-arch instead of --arch in
	order to build strace64 only on the specified architectures.
	* debian/strace64.install: New file, list for dh_install.
	* debian/strace64.manpages: New file, list for dh_install.
	* debian/changelog: Add prereleases entries.
	Fixes Debian#491167, Debian#491188.

2008-07-18  Andreas Schwab  <schwab@suse.de>

	* linux/ia64/syscallent.h: Decode mincore syscall.

	* linux/powerpc/syscallent.h: Fix argument count for request_key.

	* term.c (term_ioctl): Decode indirect parameter as int, not long.

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

	* NEWS, strace.spec: Updates in preparation for release.

	* process.c (printwaitn): When current personality's wordsize is
	smaller than native, sign-extend the PID argument from 32 bits.

	* process.c (futexops): Update table.
	(sys_futex): Handle FUTEX_WAIT_BITSET correctly.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#448628.

	* linux/syscallent.h: Fix "futex" argument 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/powerpc/syscallent.h: Likewise.
	* linux/s390/syscallent.h: Likewise.
	* linux/s390x/syscallent.h: Likewise.
	* linux/sparc/syscallent.h: Likewise.
	* linux/x86_64/syscallent.h: Likewise.
	From Ulrich Drepper <drepper@redhat.com>.
	Fixes RH#448629.

	* signal.c (sigact_flags): Prefer SA_NODEFER to SA_NOMASK,
	SA_RESETHAND to SA_ONESHOT.
	Fixes RH#455821.

2008-07-09  Frederik Schüler <fs@debian.org>

	* debian/rules: Remove the broken udeb creation routines, and redo the
	complete install procedure using debhelper.
	* debian/strace.docs: New file, list for dh_installdocs.
	* debian/strace.examples: New file, list for dh_installexamples.
	* debian/strace.install: New file, list for dh_install.
	* debian/strace-udeb.install: New file, list for dh_install.
	* debian/strace.manpages : New file, list for dh_installmanpages.
	* debian/copyright: Update.
	* debian/control: Fix libc6 build dependency for alpha and ia64.
	(strace-udeb: XC-Package-Type): Add header.
	* debian/changelog: Cosmetic changes.

2008-07-03  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Trace vfork under -f on all the platforms.
	* strace.1 <-f>: Describe Linux catches new children immediately.
	<-F>: Make the option obsolete.  Move the SunOS VFORK comment to the
	`-f' option description.
	* defs.h (followvfork): Declaration removed.
	* strace.c (followvfork): Variable removed.
	(main) <-F>: Merge with the `-f' option.
	(trace): Make !FOLLOWVFORK unconditional.
	* process.c (internal_fork): Make !FOLLOWVFORK unconditional.

2008-07-01  Frederik Schüler <fs@debian.org>

	* debian/changelog: List all bugs closed since the last release.
	* debian/control: Remove Wichert Akkerman from uploaders list.
	* debian/control: Bump standards version to 3.8.0.
	* debian/control: Add Homepage field.
	* debian/rules: Fix dpkg-gencontrol call.
	* debian/compat: New file, set to compatibility level 5.
	* debian/rules: Call dh_clean on clean target.
	* debian/rules: Add dh_md5sums call.
	Fixes Debian#439428.

2008-06-30  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Fix ia64 `-f' on clone2 formerly crashing the child.
	* util.c [IA64] (restore_arg0, restore_arg1): Define as empty.
	Fixes RH#453438.

2008-06-27  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* util.c (CLONE_VFORK): Define if not defined already.
	(setbpt): Clear CLONE_VFORK for SYS_clone and SYS_clone2.
	Reported by Vitaly Mayatskikh.
	Fixes RH#455078.

2008-06-29  Dmitry V. Levin <ldv@altlinux.org>

	* linux/x86_64/syscallent.h: Remove duplicate syscall entries
	for #283 and #284.

2008-06-27  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* linux/syscallent.h: Remove a duplicite syscall stub #326.

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

	* syscall.c [LINUX] (is_negated_errno): New function.
	(get_error) [LINUX]: Use it for all such cases.
	Fixes RH#447587.

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

	* linux/x86_64/syscallent.h: Update entries for timerfd_* and fallocate.

	* file.c (sys_fallocate): New function.
	* linux/syscall.h: Declare it.
	* linux/syscallent.h: Update entry.
	From Kyle McMartin <kyle@mcmartin.ca>.

	* time.c (sys_timerfd_create): New function.
	(sys_timerfd_settime, sys_timerfd_gettime): New functions.
	* linux/syscall.h: Declare them.
	* linux/syscallent.h: Update entries for those syscalls.
	From Kyle McMartin <kyle@mcmartin.ca>.

	* debian/rules (binary-arch): Fix chmod/chown typo.
	Fixes Debian#459255.

	* debian/rules (binary-arch): Install strace-graph in examples/
	directory under package doc.
	Fixes Debian#469068.

	* 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.
