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 +02

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; priority=LOW

  * Revamped debian files

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


strace (3.1-2) unstable; priority=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; priority=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>
