strace (@PACKAGE_VERSION@-1) experimental; urgency=low

  * @PACKAGE_STRING@ snapshot.

 -- Strace <@PACKAGE_BUGREPORT@>  @DEB_CHANGELOGTIME@

strace (4.13-1) unstable; urgency=medium

  * New upstream version.

 -- Dmitry V. Levin <ldv@altlinux.org>  Tue, 26 Jul 2016 16:17:18 +0000

strace (4.12-3) unstable; urgency=medium

  * Fix up 32/64-bit test output in strace -S test to fix i386 build
  * Run make check with VERBOSE=1 so we get useful information in build logs

 -- Steve McIntyre <93sam@debian.org>  Sat, 04 Jun 2016 02:37:44 +0100

strace (4.12-2) unstable; urgency=medium

  * Remove libunwind dependency. Closes: #826223

 -- Steve McIntyre <93sam@debian.org>  Fri, 03 Jun 2016 13:43:44 +0100

strace (4.12-1) unstable; urgency=low

  [ Dmitry V. Levin ]
  * New upstream version.
    + implemented simultaneous use of -p option and tracing of a command,
      closes: #549942
    + fixed decoding of syscalls unknown to the kernel on s390/s390x,
      closes: #485979

 -- Dmitry V. Levin <ldv@altlinux.org>  Tue, 31 May 2016 11:12:13 +0000

strace (4.11-1) unstable; urgency=low

  [ Dmitry V. Levin ]
  * New upstream version.
    + fixed decoding of path argument of umount2 syscall, closes: #785050

  [ Steve McIntyre ]
  * Drop patches against old upstream - all upstream now.
  * Add simple upstream patch to fix printing of 32-bit times syscall
    return value on 64-bit architectures.

 -- Steve McIntyre <93sam@debian.org>  Fri, 08 Jan 2015 00:52:05 +0000

strace (4.10-3) unstable; urgency=medium

  * Really fix mips* builds - fix sys_syscall() handling.
    Closes: #781753
  * Clean up strace64.substvars at clean time
  * Remove ancient changelog entries that annoy lintian
  * Update Standards-Version to 3.9.6 (no changes needed)

 -- Steve McIntyre <93sam@debian.org>  Wed, 08 Jul 2015 23:44:03 +0100

strace (4.10-2) unstable; urgency=medium

  * Fix building on arm64 using patches from upstream. Closes: #790770
  * Fix various test suite failures using patches from upstream.
    Closes: #781040
  * Fix mips o32 build. Thanks to Arturo Borrero Gonzalez
    <arturo.borrero.glez@gmail.com> for tracking this.
  * Add build-dependency on gawk for the test suite. Closes: #780992

 -- Steve McIntyre <93sam@debian.org>  Thu, 02 Jul 2015 02:03:25 +0100

strace (4.10-1) unstable; urgency=low

  [ Dmitry V. Levin ]
  * New upstream version.
    + enhanced ioctl decoding,  closes: #692913
    + enabled mips64el build, closes: #773375
    + updated signal and errno numbers, closes: #768642
    + updated generic and added arch-specific PTRACE_* constants,
      closes: #734554

 -- Steve McIntyre <93sam@debian.org>  Sat, 21 Mar 2015 22:18:25 +0000

strace (4.9-2) unstable; urgency=medium

  * Turn on support for ppc64el, code is already in upstream.
    Closes: #744121.

 -- Steve McIntyre <93sam@debian.org>  Wed, 20 Aug 2014 18:00:20 +0100

strace (4.9-1) unstable; urgency=medium

  [ Dmitry V. Levin ]
  * New upstream version.
    + added -w option to produce stats on syscall latency, closes: #457497
    + applied miscellaneous corrections to the manpage, closes: #725987
    + fixed a typo in package description, closes: #697625
    + enabled or1k build, closes: #742235
    + enabled maximum security hardening, thanks to Markus <waldeck@gmx.de>

  [ Steve McIntyre ]
  * New maintainer. Thanks to Frederik for all his prior work!

 -- Steve McIntyre <93sam@debian.org>  Wed, 20 Aug 2014 15:11:36 +0100

strace (4.8-1.1) unstable; urgency=low

  * NMU
  * Uploading 4.8 to unstable to fix long-standing bugs that have been
    fixed for ages in experimental only.
  * enable arm64 build, Closes: #749956
  * enable x32 build, Closes: #727018
  * lintian-inspired fixes:
    + add build-arch and build-indep targets in debian/rules
    + update standards-version to 3.9.5
    + remove ancient changelog entries causing syntax checker errors
    + add hardening using buildflags.mk
    + trivial changes to Description: fields

 -- Steve McIntyre <93sam@debian.org>  Thu, 10 Jul 2014 14:22:18 +0000

strace (4.8-1) experimental; urgency=low

  * New upstream version.
    + Added aarch64 support, closes: #693074
    + Fixed kernel release string parsing, closes: #702309

 -- Dmitry V. Levin <ldv@altlinux.org>  Mon, 03 Jun 2013 15:16:17 +0000

strace (4.7-1) experimental; urgency=low

  [ Dmitry V. Levin ]
  * New upstream version.
    + Fixed sockaddr_un.sun_path name in decoded output, closes: #554946
    + Avoid potential core file clobbering on exit, closes: #656398
    + Fixed a typo in documentation, closes: #653309

 -- Frederik Schüler <fs@debian.org>  Tue, 12 Feb 2013 10:35:22 +0100

strace (4.6-1) unstable; urgency=low

  * New upstream version.
    + Added HDIO_* ioctl names, closes: #450953
    + Fixed stat64 decoding on mips, closes: #599028
    + Fixed misleading italics in the manual page, closes: #589323

 -- Dmitry V. Levin <ldv@altlinux.org>  Mon, 14 Mar 2011 15:16:17 +0000

strace (4.5.20-2.3) unstable; urgency=low

  * Non-maintainer upload.
  * Add sh4 to arch list.
  * Add powerpcspe to arch list (Closes: #579842).

 -- Nobuhiro Iwamatsu <iwamatsu@debian.org>  Tue, 22 Mar 2011 09:03:49 +0900

strace (4.5.20-2.2) unstable; urgency=low

  * Non-maintainer upload.
  * Add sh4 to arch list (Closes: #537105).

 -- Nobuhiro Iwamatsu <iwamatsu@debian.org>  Wed, 09 Mar 2011 09:22:01 +0900

strace (4.5.20-2.1) unstable; urgency=low

  * NMU, added armhf support. (Closes: #596960)

 -- Konstantinos Margaritis <markos@debian.org>  Thu, 24 Feb 2011 14:47:54 +0000

strace (4.5.20-2) unstable; urgency=low

  * Add missing sparc syscall defines to fix FTBFS on sparc.

 -- Frederik Schüler <fs@debian.org>  Tue, 04 May 2010 14:31:46 +0200

strace (4.5.20-1) unstable; urgency=low

  [ Dmitry V. Levin ]
  * New upstream version.
    + Corrected decoding of 64bit syscalls, closes: #570603
    + Corrected getsockopt decoding on architectures where
      sizeof(long) > sizeof(int), closes: #494844
    + Corrected decoding of epoll_pwait, closes: #513014
    + Implemented -C option to combine regular and -c output, closes: #466196

  [ Frederik Schüler ]
  * Update standards-version to 3.8.4.
  * debian/rules: allow parallel building.
  * debian/rules: comment out verbose build, only needed for debugging.
  * debian/rules: clean up clean: target, dh_clean does most of the work
    already.
  * debian/rules: use *-stamp instead of stamp-*, so dh_clean can tidy
    up for us.

 -- Frederik Schüler <fs@debian.org>  Tue, 13 Apr 2010 13:02:57 +0200

strace (4.5.19-2) unstable; urgency=low

  * Add sparc64 to the architectures list, closes: #560062
  * Fix FTBFS, thanks to Aurelien Jarno <aurelien@aurel32.net> for pointing
    out the solution. Closes: #560516
  * Rebuild as normal package, closes: #566968
  * Update standards-version to 3.8.3.
  * Lower package priority to optional, matching the archive override.
  * Add watch file.

 -- Frederik Schüler <fs@debian.org>  Tue, 26 Jan 2010 12:20:51 +0100

strace (4.5.19-1) unstable; urgency=low

  [ Dmitry V. Levin ]
  * New upstream release.
    + Fixed FTBFS on armel, closes: #520084, #535564
    + Marked sendfile(2) as a network syscall, closes: #509499
    + Fixed syscall numbers for tee and sync_file_range, closes: #503124
    + Corrected accept(2) decoding, closes: #507573
    + Changed strace to exit/kill with traced process
      exitcode/signal, closes: #37665

  [ Frederik Schüler ]
  * Move myself from uploaders to maintainers, and drop Roland from the list,
    closes: #521458
  * Apply hppa fixes, thanks to Carlos O'Donell <carlos@systemhalted.org>
    and Helge Deller <deller@gmx.de> for the fixes, closes: #546619, #437928
  * Update standards-version to 3.8.1.

 -- Frederik Schüler <fs@debian.org>  Mon, 05 Oct 2009 22:39:54 +0200

strace (4.5.18-1) unstable; urgency=low

  * New upstream release, closes: #515655
    + Fix FTBFS, closes: #518852
  * Backported patch from CVS: Fix support for NUL-terminated
    string, closes: #508484
  * Build-depend on debhelper (>= 7.0.0).

 -- Frederik Schüler <fs@debian.org>  Mon, 09 Mar 2009 14:39:42 +0100

strace (4.5.17+cvs080723-2) unstable; urgency=low

  * Pull Fix for sparc FTBFS from CVS, closes: #492774
  * Make strace64 priority extra.

 -- Frederik Schüler <fs@debian.org>  Sat, 02 Aug 2008 10:36:59 +0200

strace (4.5.17+cvs080723-1) unstable; urgency=low

  * New upstream cvs snapshot.
    - fixes arm and armel FTBFS.

 -- Frederik Schüler <fs@debian.org>  Wed, 23 Jul 2008 15:23:22 +0200

strace (4.5.17-1) unstable; urgency=low

  * New upstream release.

 -- Frederik Schüler <fs@debian.org>  Sat, 19 Jul 2008 21:38:30 +0200

strace (4.5.16+cvs20080708-2) unstable; urgency=low

  * Rerun autotools in correct order.
  * Add strace64 package on i386, powerpc, s390 and sparc,
    closes: #491167, #491188

 -- Frederik Schüler <fs@debian.org>  Thu, 17 Jul 2008 17:21:27 +0200

strace (4.5.16+cvs20080708-1) unstable; urgency=low

  * New upstream snapshot.
    + Fix chmod/chown typo in debian/rules, closes: #459255.
    + Install strace-graph too, closes: 469068.
    + Fix m68k build, closes: 456879.
    + Arm updates, closes: #441000.
    + fix build on mips/mipsel, closes: #448802.
    + show poll() parameters before blocking, closes: #369651.
    + use dh_strip instead of install -s, closes: #438055, #396682.
    + fix sparc build, closes: #469379.
  * Acknowledge NMU, closes: #469380.
  * Remove Wichert Akkerman from uploaders list.
  * Bump standards version to 3.8.0.
    - Add Homepage field.
  * Add dh_md5sums call, closes: #439428.
  * Fix dpkg-gencontrol call.
  * Update debian/copyright.

 -- Frederik Schüler <fs@debian.org>  Tue, 01 Jul 2008 23:05:51 +0200

strace (4.5.16-1) unstable; urgency=low

  * New upstream version.
    + 64-bit builds, closes: #435303.
    + LFS build fix, closes: #385310.
    + Fix multithread issues
    + Fix spurious SIGSTOP on early interrupt.
    + Fix utime for biarch.
    + Fix -u error message.
    + Better futex syscall printing.
    + Fix argv/envp printing with small -s settings, and for biarch.
    + New syscalls: getcpu, eventfd, timerfd, signalfd, epoll_pwait,
      move_pages, utimensat.

 -- Roland McGrath <frob@debian.org>  Fri, 03 Aug 2007 03:24:21 -0700

strace (4.5.15-1) unstable; urgency=high

  [ Roland McGrath ]
  * New upstream version.
    + Fix -ff -o behavior, closes: #353935.
    + Fail when nonoption args follow -p switches, closes: #361302.
    + Fix semtimedop, closes: #340239.
    + ARM support fixes, closes: #360152, #360154.

  [ Frederik Schüler ]
  * Fix configure script, closes: #428997

 -- Frederik Schüler <fs@debian.org>  Fri, 22 Jun 2007 16:28:08 +0000

strace (4.5.14-2) unstable; urgency=low

  * New comaintainer.
  * Fix build failure with linux-2.6.18, thanks to Andreas Henriksson for the
    patch, closes: #392556.
  * Fix build with libc6 2.5.
  * Acknowledge NMUs, closes: #315500, #355733

 -- Frederik Schüler <fs@debian.org>  Thu, 26 Oct 2006 22:11:25 +0200

strace (4.5.14-1) unstable; urgency=low

  * New upstream version.
    + Fix crash in printing sysctl, closes: #339117.
    + Respect DEB_BUILD_OPTIONS=nostrip, closes: #325132.
    + Fix ipc syscall decoding, closes: #340239.
    + Add missing source files to tarball, closes: #336197.
    + Build on armeb, closes: #335681.

 -- Roland McGrath <frob@debian.org>  Mon, 16 Jan 2006 22:17:38 -0800

strace (4.5.13-1) unstable; urgency=low

  * New upstream version.
    + Fix m68k build, closes: #315500.
    + Fix setsockopt decoding on 64-bit.
    + Fix typos in socket option name strings.
    + Display more IPV6 socket options by name.
    + Don't display inappropriate syscalls for -e trace=file.
    + New selector type -e trace=desc for file-descriptor using calls.
    + Fix 32-bit old_mmap syscall decoding on x86-64.
    + Fix errors detaching from multithreaded process on interrupt.
    + Note 4.5.12 fix for crash handling bad signal numbers.

 -- Roland McGrath <frob@debian.org>  Wed,  3 Aug 2005 04:41:49 -0700

strace (4.5.12-1) unstable; urgency=low

  * New upstream version.
    + Build on ppc64, closes: #301089.
    + Refuse negative -s argument value, closes: #303256.
    + Fix known syscall recognition for IA32 processes on x86-64.
    + Fix bad output for ptrace on x86-64.
    + Fix potential buffer overruns.
    + Make some diagnostics more consistent.
    + Update PowerPC system calls.
    + Better printing for Linux aio system calls.
    + Don't truncate statfs64 fields to 32 bits in output.
    + Cosmetic code cleanups.

 -- Roland McGrath <frob@debian.org>  Wed,  8 Jun 2005 13:52:39 -0700

strace (4.5.11-1) unstable; urgency=low

  * New upstream version.
    + Update MIPS system call table, closes: #256684.
    + Fix build on s390 and sparc, closes: #294172, #293564.
    + Fix select handling on nonstandard fd_set sizes, closes: #65654, #284290.
    + Don't print errors for null file name pointers, closes: #63093.
    + Fix initial execve output with -i.
    + Fix build nits, closes: #300598.

 -- Roland McGrath <frob@debian.org>  Tue, 22 Mar 2005 15:12:22 -0800

strace (4.5.9-1) unstable; urgency=low

  * New upstream version.
    + Fix potential crash in getxattr printing, closes: #283704.
    + Improve socket ioctl printing, closes: #192164.
    + Fix sparc build, closes: #278449.
    + Update ia64 syscall list.
    + Fix x86_64 syscall argument extraction for 32-bit processes.
    + Fix -e signal=NAME parsing.
    + Fix x86_64 exit_group syscall handling.
    + Improve mount flags printing.
    + Support symbolic printing of x86_64 arch_prctl parameters.
    + Add strace-udeb package for Debian installer debugging, closes: #268294.

 -- Roland McGrath <frob@debian.org>  Fri,  4 Feb 2005 01:53:01 -0800

strace (4.5.8-1) unstable; urgency=low

  * New upstream version.
    + Fix strace64 man page symlink, closes: #269220.
    + Update syscall tables for Alpha, ARM, HPPA, closes: #273887.
    + Build strace64 for s390, closes: #271500.
    + Fix some endian issues in 64-bit argument output on 32-bit machines.
    + Support new Linux syscalls mbind, set_mempolicy, get_mempolicy, waitid.
    + Support Linux syscalls fadvise64, fadvise64_64, and epoll_*.
    + Improve ioctl command name matching.
    + Print RTC_* ioctl structure contents.
    + Support newer RLIMIT_* values.
    + Print struct cmsghdr details in sendmsg.

 -- Roland McGrath <frob@debian.org>  Tue, 19 Oct 2004 18:05:28 -0700

strace (4.5.7-1) unstable; urgency=low

  * New upstream version.
    + Update man page about -c, closes: #254438.
    + Include pread/pwrite calls in -e read/write tracing, closes: #239947.
    + Update SO_* and IP_* value lists, closes: #171653.
    + Print attribute values in *xattr system calls.
    + Print clock_t values symbolically in Linux clock_* system calls.
    + Show PER_* values correctly, closes: #40588.
    + Fix `strace64' build on sparc, closes: #254728.

 -- Roland McGrath <frob@debian.org>  Tue, 31 Aug 2004 01:41:19 -0700

strace (4.5.6-1) unstable; urgency=low

  * New upstream version.
    + Update Linux ioctl lists and decode some more network ioctls.
    + Fix `quotactl' argument decoding on 64-bit.
    + Linux/SPARC64 support, closes: #254728.

 -- Roland McGrath <frob@debian.org>  Mon, 12 Jul 2004 00:18:32 -0700

strace (4.5.5-1) unstable; urgency=low

  * New upstream version.
    + Fix support for 32-bit (i386) binaries on Linux/AMD64.

 -- Roland McGrath <frob@debian.org>  Sun, 27 Jun 2004 22:19:15 -0700

strace (4.5.4-1) unstable; urgency=low

  * Build package on amd64, closes: #246568.
  * New upstream version.
    + Recognize more PF_* and AF_* values, closes: #250506.
    + Other  fixes.

 -- Roland McGrath <frob@debian.org>  Thu,  3 Jun 2004 19:35:37 -0700

strace (4.5.3-1) unstable; urgency=low

  * New upstream version.
    + Finish fix for -f on Linux/S390(x).
    + Print extra wait status bits, closes: #240062.

 -- Roland McGrath <frob@debian.org>  Fri, 16 Apr 2004 15:27:43 -0700

strace (4.5.2-1) unstable; urgency=low

  * New upstream version.
    + Check for errors writing to -o file, closes: #218762
    + Print multiple ioctl code matches on Linux.
    + Various other fixes.
    + Update typos and obsolete bits in man page, closes: #217008, #223390
    + Fix compilation problems with newer kernel headers, closes: #223207
    + Update HPPA system calls, closes: #231632
    + Fix PID in messages, closes: #229802
    + Fix s390 brokenness in 4.5, closes: #226098

 -- Roland McGrath <frob@debian.org>  Mon,  1 Mar 2004 22:44:55 -0800

strace (4.5-1) unstable; urgency=low

  * New upstream version.
    + Fix mlock syscall printing.
    + MIPS & S390 updates.
    + Print names for SIGRT_* in sets.

 -- Roland McGrath <frob@debian.org>  Wed, 24 Sep 2003 15:20:18 -0700

strace (4.4.99-1) unstable; urgency=low

  * New upstream version.
    + Alpha updates.
    + Add a few more new Linux 2.5 system calls.
    + Stephen Thomas contributed a port to Linux/SH64.
    + Print protocol names for PF_INET6 sockets.

 -- Roland McGrath <frob@debian.org>  Thu, 17 Jul 2003 02:04:43 -0700

strace (4.4.98-1) unstable; urgency=low

  * New upstream version.
    + Fixes clone argument bugs.
    + Fixes sem* printing bugs.
    + Fixes -e argument parsing, closes: #188379.
    + Fixes hanging parent in odd wait cases, closes: #47608, #109656.
    + Fixes -q defaulting, closes: #47113, #153678.
    + Fixes trying to execute directories, closes: #137103.
    + Updates ARM support, thanks to Russell King.
    + Updates S390/S390x support.
  * Bump standards-version to 3.5.10

 -- Roland McGrath <frob@debian.org>  Mon,  2 Jun 2003 12:26:29 -0700

strace (4.4.96-1) unstable; urgency=low

  * New upstream version.
    + Handles yet more new Linux 2.5 system calls.
    + Fixes x86_64 and ia64 clone printing.
    + Updates SH port.

 -- Roland McGrath <frob@debian.org>  Sun, 30 Mar 2003 17:14:34 -0800

strace (4.4.95-1) unstable; urgency=low

  * New upstream version.
    + Fixes printing of getresuid and getresgid values.

 -- Roland McGrath <frob@debian.org>  Mon, 24 Feb 2003 02:50:43 -0800

strace (4.4.94-1) unstable; urgency=low

  * New upstream version.
    + New option -E to set environment variables.
    + Build fixes for sparc, closes: #178636.

 -- Roland McGrath <frob@debian.org>  Wed, 19 Feb 2003 19:12:40 -0800

strace (4.4.93-1) unstable; urgency=low

  * New upstream version.
    + Grok new quotactl arguments, closes: #154067.
    + Fix m68k build problem, closes: #176528.
    + Old bugs prior release actually closes: #154068.
    + Fix S390 bugs with -f, and bugs with execve.
  * Switched to non-native packaging (empty .diff), closes: #176388.

 -- Roland McGrath <frob@debian.org>  Tue, 21 Jan 2003 12:22:08 -0800

strace (4.4.92-1) unstable; urgency=low

  * New upstream version.
    + Updated config.guess and config.sub, closes: #176241.
    + Several fixes for PPC, closes: #144326.
    + Fixed ptrace output for unknown requests, closes: #77728.
    + Fixed output of getdents64, truncate64, ftruncate64, closes: #169528.
    + Old bugs the last release actually closes: #153750, #38467, #109993,
      #109815, #104594, #113087, #134803, #166622, #96356, #94725, #32147,
      #32798, #36801, #41066, #81637, #138300, #143791.

 -- Roland McGrath <frob@debian.org>  Tue, 14 Jan 2003 02:02:44 -0800

strace (4.4.91-1) unstable; urgency=low

  * New upstream version.
    + Fixes -f on x86-64.

 -- Roland McGrath <frob@debian.org>  Fri, 10 Jan 2003 12:55:34 -0800

strace (4.4.90-1) unstable; urgency=low

  * New maintainer.
  * New upstream version.

 -- Roland McGrath <frob@debian.org>  Fri, 10 Jan 2003 01:58:40 -0800

strace (4.4-1.2) unstable; urgency=low

  * NMU
  * Quick one-liner to allow building on the ARM. Closes: #109993.
  * Re-ran autoconf, hopefully I didn't break other arches.

 -- Anand Kumria <wildfire@progsoc.org>  Mon,  1 Oct 2001 14:22:25 +1000

strace (4.4-1.1) unstable; urgency=low

  * NMU.
  * Added patch from David Mosberger which fixes some ia64 issues.
    Closes: #113087.
  * Added ia64-specific Build-Depends on libc6.1-dev.  Closes:
    #109815.
  * Ran autoheader, so the s390 patch applies.  Closes: #104594.

 -- Jeff Licquia <jlicquia@progeny.com>  Tue, 25 Sep 2001 13:15:28 -0500

strace (4.4-1) unstable; urgency=low

  * New upstream version
    + Added S390 support. Closes: Bug#104594
    + New config.{guess,sub}. Closes: Bug#92532
    + LFS support for Linux/sparc. Closes: Bug#99215
    * Works on IA64 again. Closes: Bug#103854
  * Don't override CFLAGS in debian/rules
  * Remove rules to create configure & friends. Closes: Bug#92483

 -- Wichert Akkerman <wakkerma@debian.org>  Sun, 19 Aug 2001 14:10:58 +0200

strace (4.3-3.1) unstable; urgency=low

  * copy in new config.{guess,sub} to get support for new architectures.
    Closes: #94725

 -- LaMont Jones <lamont@debian.org>  Mon,  9 Jul 2001 21:39:34 -0600

strace (4.3-3) unstable; urgency=low

  * Update architecture list

 -- Wichert Akkerman <wakkerma@debian.org>  Sat, 14 Apr 2001 10:42:19 +0200

strace (4.3-2) unstable; urgency=low

  * Run cvsbuild so we don't need to run autohead & friends
  * Sync to current CVS

 -- Wichert Akkerman <wakkerma@debian.org>  Fri, 13 Apr 2001 19:08:53 +0200

strace (4.3-1) unstable; urgency=low

  * New upstream version
  * Updated Build-Depends to use a recent glibc so we get the 2.4 kernel
    headers
  * Changed Architecture so we only build on Linux
  * Include section and priority in control info

 -- Wichert Akkerman <wakkerma@debian.org>  Sun,  1 Apr 2001 16:35:32 +0200

strace (4.2-4) frozen unstable; urgency=low

  * Actually install postinst and prerm so we get the proper /usr/doc/strace
    symlink

 -- Wichert Akkerman <wakkerma@debian.org>  Thu, 17 Feb 2000 21:49:17 +0100

strace (4.2-3) frozen unstable; urgency=low

  * Fix typo in aclocal.m4 that prevented compilation on architectures without
    LFS

 -- Wichert Akkerman <wakkerma@debian.org>  Sun, 13 Feb 2000 01:19:11 +0100

strace (4.2-2) frozen unstable; urgency=low

  * only include linux/ptrace.h if sys/reg.h hasn't been found by configure,
    Closes: Bug# 39556

 -- Wichert Akkerman <wakkerma@debian.org>  Thu, 27 Jan 2000 03:22:55 +0100

strace (4.2-1) frozen unstable; urgency=low

  * New upstream version:
    + Builds correctly on glibc2.0 again, Closes: Bug# 51648
    + Small y2k fix in printtimes, Closes: Bug# 54592
    + semop is handled now, Closes: Bug# 52684

 -- Wichert Akkerman <wakkerma@debian.org>  Fri, 21 Jan 2000 21:45:41 +0100

strace (4.1-1) unstable; urgency=low

  * New upstream version
  * Bump standards-version to 3.1.0
  * FHS 2.1 compliant

 -- Wichert Akkerman <wakkerma@debian.org>  Fri, 26 Nov 1999 01:42:07 +0100

strace (4.0-1) unstable; urgency=low

  * New upstream version

 -- Wichert Akkerman <wakkerma@debian.org>  Fri,  9 Jul 1999 16:12:34 +0200

strace (3.99.1-1) unstable; urgency=low

  * New upstream version, second pre-release for 4.0

 -- Wichert Akkerman <wakkerma@debian.org>  Wed,  9 Jun 1999 15:20:42 +0200

strace (3.99-1) unstable; urgency=low

  * New upstream maintainer (me :)
  * New upstream version, pre-release for strace 4.0
  * See upstream changelog for changes
  * Build with glibc2.1

 -- Wichert Akkerman <wakkerma@debian.org>  Tue, 27 Apr 1999 14:00:15 +0200

strace (3.1.0.1-12) unstable; urgency=low

  * Only i386 has a LDT, so check for architecture in mem.c (Bug# 32798)
  * Check for nsignals properly, closes: #34445
  * Fix check for overruns in umove*, patch by Nate Eldredge <nate@cartsys.com>

 -- Wichert Akkerman <wakkerma@debian.org>  Mon, 15 Mar 1999 00:43:14 +0100

strace (3.1.0.1-11) unstable; urgency=low

  * Merge some ARM stuff that got stuck in my mailbox

 -- Wichert Akkerman <wakkerma@debian.org>  Sun, 31 Jan 1999 13:04:13 +0100

strace (3.1.0.1-10) unstable; urgency=low

  * Move sys_poll to the DONE section in linux/dummy.h
  * Support subarchitectures for alpha (Bug# 32147)
  * Incorporate changes from Ulrich Drepper
    + up number of supported personalities on Linux sparc to 3
    + add O_DIRECT, O_LARGEFILE and O_DIRECTORY to openmodes
    + change prefix for printxval to SEEK_ in sys_lseek
    + add a support for a whole bunch of syscalls
    + updated sys_pread and sys_pwrite for SVR4
    + handle sys_delete_module properly
    + change SYS_socket_subcall to 230 for non-powerpc architectures
    + sys_chown is now lchown
    + looks like a whole lot of syscalls is moved from 180 to 230
    + Revamp a lot of the signal handling code
    + handle sys_clone
    + Lots more (it was a 6494-line patch and I'm too lazy to put all
      changes in here..)
  * Please note you need to have 2.1 or 2.2 kernel sources in /usr/src/linux
    in order to compile this.

 -- Wichert Akkerman <wakkerma@debian.org>  Fri, 29 Jan 1999 02:04:12 +0100

strace (3.1.0.1-9) unstable; urgency=low

  * Add support for poll() systemcall

 -- Wichert Akkerman <wakkerma@debian.org>  Thu, 31 Dec 1998 16:03:44 +0100

strace (3.1.0.1-8) frozen unstable; urgency=low

  * Use new_stat from libc6 now, except for powerpc and sparc

 -- Wichert Akkerman <wakkerma@debian.org>  Thu, 24 Dec 1998 11:35:32 +0100

strace (3.1.0.1-7) frozen unstable; urgency=low

  * Fix sparc support
  * Display nanosleep call correctly (Bug# 25904)
  * Honour -v flag in printargs (Bug# 10426)
  * Play with #define to get proper kernel struct stat
  * Compile with 2.1.131 kernel source

 -- Wichert Akkerman <wakkerma@debian.org>  Sat, 19 Dec 1998 15:02:14 +0100

strace (3.1.0.1-6) frozen unstable; urgency=low

  * Set NSIG correctly for ARM
  * Include strace-graph script from Richard Braakman <dark@debian.org>
    as an example. Try it and be amazed!
  * Fix sigaction problem, patch from Topi Miettinen
    <Topi.Miettinen@medialab.sonera.net>

 -- Wichert Akkerman <wakkerma@debian.org>  Mon,  7 Dec 1998 02:10:30 +0100

strace (3.1.0.1-5) unstable; urgency=low

  * Patched from Richard Braakman <dark@debian.org>:
    + use correct dirent.h on Linux
    + remove debugging code left from the powerpc patch
    + fix output for execve when -v is used

 -- Wichert Akkerman <wakkerma@debian.org>  Fri, 13 Nov 1998 15:59:17 +0100

strace (3.1.0.1-5) unstable; urgency=low

  * Add location of upstream sources to the copyright
  * Merged ARM architecture support from Jim Studt <jim@federated.com>

 -- Wichert Akkerman <wakkerma@debian.org>  Mon,  9 Nov 1998 16:43:24 +0100

strace (3.1.0.1-4) unstable; urgency=low

  * More ppc patches from Daniel Jacobowitz <dan@debian.org>

 -- Wichert Akkerman <wakkerma@debian.org>  Mon, 12 Oct 1998 00:59:44 +0200

strace (3.1.0.1-3) unstable; urgency=low

  * Added support for sys_query_module, patch from Brian J. Murrell
    <brian@interlinx.bc.ca>
  * Preserve timestamps for documentation when installed
  * Incorporate patches from Daniel Jacobowitz <dan@debian.org>:
    + powerpc patches
    + Patches include changing SYS_socket_subcall and SYS_ipc_subcall,
      check for stray syscall exit after execv, and completely regenerated
      syscall, errno, and ioctl lists.
    + Decode capget and capset arguments.

 -- Wichert Akkerman <wakkerma@debian.org>  Sun, 11 Oct 1998 22:42:56 +0200

strace (3.1.0.1-2) unstable; urgency=low

  * Patch to support sparc, courtesy of RedHat
  * Cleaned up some stuff the patch left broken
  * Fix some more compilation-issues for IPX with current kernels

 -- Wichert Akkerman <wakkerma@debian.org>  Fri, 24 Jul 1998 22:53:43 +0200

strace (3.1.0.1-1) unstable; urgency=low

  * New (actually very old) upstream version. Fixes something we
    already had fixed
  * Compiled with current kernel-headers from libc6-dev
  * Fixed spelling-error
  * Compress changelog
  * Bumped standard-version to 2.4.1.0

 -- Wichert Akkerman <wakkerma@debian.org>  Wed, 22 Jul 1998 15:53:23 +0200

strace (3.1-14) unstable; urgency=low

  * Don't let libc6 trick us anymore with {f,l,}stat() calls
  * Fix configure.in to support PentiumII processors

 -- Wichert Akkerman <wakkerma@debian.org>  Mon, 22 Jun 1998 20:17:20 +0200

strace (3.1-13) unstable; urgency=low

  * Corrected error on PowerPC patch that broke other archictectures
    (Bug# 13837)

 -- Wichert Akkerman <wakkerma@debian.org>  Tue, 14 Oct 1997 15:41:29 +0200

strace (3.1-12) unstable; urgency=low

  * PowerPC patches by Klee Dienes (Bug# 10788, 10790)
  * Create correct md5sums (Bug# 13363)
  * Put changelog in correct place (Bug# 13363)
  * Pristine sources

 -- Wichert Akkerman <wakkerma@debian.org>  Mon,  6 Oct 1997 15:42:25 +0200

strace (3.1-11) unstable; urgency=low

  * Ported to libc6 / glibc2 (Bug# 11729)
  * Compress manpage

 -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>  Fri,  1 Aug 1997 00:13:38 +0200

strace (3.1-10) unstable; urgency=low

  * Install upstream changelog
  * Added dependencies to control file for libc
  * Added md5sums to .deb file

 -- Wichert Akkerman <wakkerma@debian.org>  Fri, 11 Jul 1997 12:26:12 +0200

strace (3.1-9) stable; urgency=low

  * Fixed bug with hanging children. Patch by Matthias Urlichs
  * Added some more constants to net.c.
  * glibc patches, courtesy of Klee Dienes (Bug# 7735)

 -- Wichert Akkerman <wakkerma@debian.org>  Mon, 21 Apr 1997 11:59:45 +0200

strace (3.1-8) frozen unstable; urgency=low

  * Added detection of ROSE networking

 -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>  Tue, 12 Nov 1996 22:21:22 +0100

strace (3.1-7) stable; urgency=low

  * Install manpage with correct mode (0644) (Bug#4813)
  * Renamed debian changelog to changelog.Debian

 -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>  Sat, 26 Oct 1996 18:15:41 +0200

strace (3.1-6) stable; urgency=low

  * Small patch for compilation on kernels 2.1.0 and later (see signal.c)

 -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>  Fri, 18 Oct 1996 00:28:47 +0200

strace (3.1-5) stable unstable; urgency=low

  * Moved to new packagingformat
  * Fixed umoven bug (Bug# 4523)
  * Corrected number of parameters for mmap systemcall (bug# 4508)

 -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>  Sat, 23 Sep 1996 23:33:58 +0200

strace (3.1-4) unstable; urgency=low

  * Fixed changestemplate

 -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>, Thu Sep 12 14:59:44 MET DST 1996

strace (3.1-3) unstable; urgency=low

  * Revamped debian files

 -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>, Thu Jul 11 20:19:11 MET DST 1996


strace (3.1-2) unstable; urgency=low
  * Added some #ifdef's around IPX stuff to make it compilable on non-Linux
    systems.
  * changed debian.control and debian.rules to conform to new debian naming
    schemes
  * added architecture-option to debian.rules and debian.control

 -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>

strace (3.1-1) unstable; urgency=low

  * Moved to new upstream version
  * added more protocol families to domains
  * added IPIP-protocol to protocols
  * 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

 -- Wichert Akkerman <wakkerma@wi.leidenuniv.nl>
