aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--[l---------]ChangeLog519
-rw-r--r--Makefile.in31
-rw-r--r--README2
-rw-r--r--aclocal.m4833
-rw-r--r--config.h.in17
-rwxr-xr-xconfigure726
-rw-r--r--configure.ac72
-rw-r--r--configure.in50
-rw-r--r--debian/changelog511
-rw-r--r--debian/conffiles1
-rw-r--r--debian/control23
-rw-r--r--debian/copyright40
-rwxr-xr-xdebian/patches/0064bit.dpatch781
-rw-r--r--debian/patches/00list4
-rwxr-xr-xdebian/patches/01elf-rewrite.dpatch2742
-rwxr-xr-xdebian/patches/02demangle.dpatch5779
-rwxr-xr-xdebian/patches/03syscallent-update.dpatch615
-rwxr-xr-xdebian/rules59
-rw-r--r--demangle.c14
-rw-r--r--dict.c2
-rw-r--r--display_args.c53
-rw-r--r--elf.c516
-rw-r--r--elf.h39
-rw-r--r--etc/ltrace.conf112
-rw-r--r--ltrace.h10
-rw-r--r--ltrace.spec.in50
-rw-r--r--options.c14
-rw-r--r--options.h2
-rw-r--r--output.c8
-rw-r--r--read_config_file.c6
-rw-r--r--sysdeps/linux-gnu/Makefile10
-rw-r--r--sysdeps/linux-gnu/alpha/Makefile4
-rw-r--r--sysdeps/linux-gnu/alpha/arch.h5
-rw-r--r--sysdeps/linux-gnu/alpha/plt.c9
-rw-r--r--sysdeps/linux-gnu/alpha/syscallent.h17
-rw-r--r--sysdeps/linux-gnu/arm/Makefile4
-rw-r--r--sysdeps/linux-gnu/arm/arch.h3
-rw-r--r--sysdeps/linux-gnu/arm/plt.c9
-rw-r--r--sysdeps/linux-gnu/i386/Makefile4
-rw-r--r--sysdeps/linux-gnu/i386/arch.h3
-rw-r--r--sysdeps/linux-gnu/i386/plt.c9
-rw-r--r--sysdeps/linux-gnu/i386/syscallent.h44
-rw-r--r--sysdeps/linux-gnu/m68k/Makefile4
-rw-r--r--sysdeps/linux-gnu/m68k/arch.h3
-rw-r--r--sysdeps/linux-gnu/m68k/plt.c10
-rw-r--r--sysdeps/linux-gnu/ppc/Makefile4
-rw-r--r--sysdeps/linux-gnu/ppc/arch.h3
-rw-r--r--sysdeps/linux-gnu/ppc/plt.c9
-rw-r--r--sysdeps/linux-gnu/ppc/syscallent.h33
-rw-r--r--sysdeps/linux-gnu/s390/Makefile4
-rw-r--r--sysdeps/linux-gnu/s390/arch.h3
-rw-r--r--sysdeps/linux-gnu/s390/plt.c9
-rw-r--r--sysdeps/linux-gnu/s390/syscallent.h41
-rw-r--r--sysdeps/linux-gnu/sparc/Makefile4
-rw-r--r--sysdeps/linux-gnu/sparc/arch.h3
-rw-r--r--sysdeps/linux-gnu/sparc/plt.c9
-rw-r--r--sysdeps/linux-gnu/sparc/syscallent.h536
-rw-r--r--sysdeps/linux-gnu/x86_64/Makefile4
-rw-r--r--sysdeps/linux-gnu/x86_64/arch.h4
-rw-r--r--sysdeps/linux-gnu/x86_64/ffcheck.c18
-rw-r--r--sysdeps/linux-gnu/x86_64/plt.c9
-rw-r--r--sysdeps/linux-gnu/x86_64/syscallent.h45
62 files changed, 3211 insertions, 11296 deletions
diff --git a/ChangeLog b/ChangeLog
index d526672..8c0b833 120000..100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1 +1,518 @@
-debian/changelog \ No newline at end of file
+ltrace (0.3.36) unstable; urgency=low
+
+ * Fixed "--indent" option
+ * Got rid of Debian and RedHat specific parts in tarball
+
+ -- Juan Cespedes <cespedes@debian.org> Wed, 10 Nov 2004 00:13:43 +0100
+
+ltrace (0.3.35.1) unstable; urgency=low
+
+ * Non-maintainer upload
+ * Applied patch from Jakub Jelinek <jakub@redhat.com> to fix problems with
+ binaries built with recent binutils (closes: #274955)
+ * Applied patch from Jakub Jelinek to add long/ulong types to ltrace.conf
+ for amd64
+ * Applied patch from Jakub Jelinek to fix -C
+ * Applied patch from Jakub Jelinek to update syscallent.h
+ * debian/control: build-depend on dpatch and libelfg0-dev
+ * debian/rules: add dpatch support
+ * debian/changelog: convert to utf-8
+
+ -- Andrew Pollock <apollock@debian.org> Fri, 22 Oct 2004 21:43:16 +1000
+
+ltrace (0.3.35) unstable; urgency=low
+
+ * Fixed include line in m68k, caused build problems
+
+ -- Juan Cespedes <cespedes@debian.org> Fri, 16 Jul 2004 18:00:10 +0200
+
+ltrace (0.3.34) unstable; urgency=low
+
+ * Fixed prototype declaration problem in arm, m68k, powerpc, s390
+ * Added "amd64" to list of architectures (closes: Bug#252756)
+ * Sparc port is hopefully working (closes: Bug#35524)
+
+ -- Juan Cespedes <cespedes@debian.org> Wed, 07 Jul 2004 10:40:56 +0200
+
+ltrace (0.3.33) unstable; urgency=low
+
+ * Fixed two bugs, thanks to Mauro Meneghin <G1ld0@lycos.it>:
+ + Cope correctly with breakpoint values greater than
+ sizeof(long) bytes
+ + Fixed small bug in option -r (closes: Bug#212792)
+ * Show help if no (or few) arguments are given, just like
+ strace and fenris (thanks, Tomasz Wegrzanowski <taw@users.sf.net>)
+ * Some fixes from Jakub Bogusz <qboosh@pld-linux.org>:
+ + Small 64-bit cleanup of code
+ + support for more than 6 function arguments on amd64
+ + Adapted SPARC port from Jakub Jelinek <jakub@redhat.com>
+ + Added alpha support
+
+ -- Juan Cespedes <cespedes@debian.org> Mon, 14 Jun 2004 18:01:12 +0200
+
+ltrace (0.3.32) unstable; urgency=low
+
+ * Fixed wrong version number
+ * Removed unused file "opt_c.c"
+ * Remove error when tracing no calls and doing fork()
+ * Clean-up of sysdeps/linux-gnu/s390/trace.c
+ * Clean-up of sysdeps/linux-gnu/ppc/trace.c
+ * Make `--library' option really work (closes: Bug#232321)
+ * Merged several patches from SuSE:
+ + Added some functions to ltrace.conf
+ + Handle 64-big ELF files nicely
+ + AMD64 support
+ + Updated list of syscalls for S/390
+ + Improved some debugging statements
+ Many thanks to Bernhard Kaindl <bk@suse.de> for his great work
+
+ -- Juan Cespedes <cespedes@debian.org> Sun, 04 Apr 2004 01:31:37 +0200
+
+ltrace (0.3.31) unstable; urgency=low
+
+ * Added a lot of functions to ltrace.conf,
+ thanks to Jakub Jelinek <jakub@redhat.com> (closes: Bug#144518)
+ * Fixed off-by-one problem in checking syscall number
+ * Removed some warnings
+
+ -- Juan Cespedes <cespedes@debian.org> Tue, 04 Feb 2003 23:22:46 +0100
+
+ltrace (0.3.30) unstable; urgency=low
+
+ * Implemented -T option (show time spent inside each call)
+ * Alphabetically sort options in help and manual page
+ * Added -c option (summary of calls on program exit)
+
+ -- Juan Cespedes <cespedes@debian.org> Mon, 03 Feb 2003 00:22:28 +0100
+
+ltrace (0.3.29) unstable; urgency=low
+
+ * Align return values depending on screen width
+ * Updated list of syscalls and signals to Linux 2.4.20
+ * Fixed bug introduced in 0.3.27 which caused -L option to segfault
+
+ -- Juan Cespedes <cespedes@debian.org> Sat, 01 Feb 2003 19:01:39 +0100
+
+ltrace (0.3.28) unstable; urgency=medium
+
+ * Fixed memory corruption when using execve() in a traced program
+ (closes: Bug#160341, Bug#165626)
+
+ -- Juan Cespedes <cespedes@debian.org> Fri, 31 Jan 2003 19:51:28 +0100
+
+ltrace (0.3.27) unstable; urgency=low
+
+ * Removed dependency on libdl (it is no longer needed)
+ * Wrote generic dictionary, used in demangle.c and breakpoints.c
+ * Added debug.c for better debugging output
+
+ -- Juan Cespedes <cespedes@debian.org> Fri, 31 Jan 2003 18:58:55 +0100
+
+ltrace (0.3.26) unstable; urgency=low
+
+ * Fixed `ltrace -L' in powerpc
+
+ -- Juan Cespedes <cespedes@debian.org> Sun, 31 Mar 2002 20:53:49 +0200
+
+ltrace (0.3.25) unstable; urgency=low
+
+ * Finally added powerpc support (Anton Blanchard <anton@samba.org>)
+
+ -- Juan Cespedes <cespedes@debian.org> Sun, 31 Mar 2002 19:58:25 +0200
+
+ltrace (0.3.24) unstable; urgency=low
+
+ * Fixed 2 minor buffer overflows (closes: Bug#130746)
+ * Obey --prefix, --sysconfdir, --mandir options in configure
+ * Adding powerpc support (doesn't work yet)
+ (Anton Blanchard <anton@samba.org>)
+
+ -- Juan Cespedes <cespedes@debian.org> Wed, 27 Mar 2002 00:20:57 +0100
+
+ltrace (0.3.23) unstable; urgency=low
+
+ * Fixed missing include <unistd.h> in trace.c
+ * One arch-dependent function less (continue_after_breakpoint)
+ * Fixed S/390 port (it didn't compile yet...)
+
+ -- Juan Cespedes <cespedes@debian.org> Sun, 3 Mar 2002 18:58:36 +0100
+
+ltrace (0.3.22) unstable; urgency=low
+
+ * S/390: Removed extra target in sysdeps/linux-gnu/s390 which avoided
+ compiling...
+
+ -- Juan Cespedes <cespedes@debian.org> Sun, 3 Mar 2002 14:04:38 +0100
+
+ltrace (0.3.21) unstable; urgency=low
+
+ * Get rid of arch/breakpoint.c; we can do it arch-independent
+
+ -- Juan Cespedes <cespedes@debian.org> Sun, 3 Mar 2002 02:37:46 +0100
+
+ltrace (0.3.20) unstable; urgency=low
+
+ * Added s390 port (Timothy R. Fesig <slate@us.ibm.com>)
+ * Modified configure process to use ltrace.spec.in to generate
+ ltrace.spec (Timothy R. Fesig <slate@us.ibm.com>)
+ * Fixed some problems using ltrace.spec on Intel platform.
+ (Timothy R. Fesig <slate@us.ibm.com>)
+
+ -- Juan Cespedes <cespedes@debian.org> Sat, 2 Mar 2002 23:33:00 +0100
+
+ltrace (0.3.19) unstable; urgency=low
+
+ * Fixed small bug: "<unifinished...>" lines were sometimes incorrectly
+ displayed
+ * Added new functions to /etc/ltrace.conf (thanks to James R. Van Zandt
+ <jrv@vanzandt.mv.com>) (closes: Bug#91349)
+
+ -- Juan Cespedes <cespedes@debian.org> Fri, 1 Mar 2002 21:05:37 +0100
+
+ltrace (0.3.18) unstable; urgency=low
+
+ * Simplified arch-dependent stuff
+ * Updated list of syscalls and signals to Linux 2.4.18
+ * Unified coding-style of all function declarations
+ * Do not indent lines indicating signals, exit codes, etc
+ * Updated description
+ * fix off-by-one problem in checking syscall number (Tim Waugh
+ <twaugh@redhat.com> fixed this problem in RedHat two years ago;
+ thank you for NOT noticing me...)
+
+ -- Juan Cespedes <cespedes@debian.org> Fri, 1 Mar 2002 19:52:43 +0100
+
+ltrace (0.3.17) unstable; urgency=low
+
+ * Added a bit more debugging
+ * Fixed display of return address in nested functions
+ * Added posibility to exit from a function different from the last called
+ one (this fixes "ltrace gnome-terminal", for example)
+
+ -- Juan Cespedes <cespedes@debian.org> Mon, 25 Feb 2002 00:19:19 +0100
+
+ltrace (0.3.16) unstable; urgency=low
+
+ * ltrace works again after an execve is received (closes: Bug#108835)
+ * Added prototypes for fnmatch() and bsearch() (closes: Bug#106862)
+ * Re-wrote short description so it does not exceed 60 chars
+ (closes: Bug#114682)
+
+ -- Juan Cespedes <cespedes@debian.org> Mon, 10 Dec 2001 04:11:26 +0100
+
+ltrace (0.3.15) unstable; urgency=low
+
+ * Fixed `-n' option so that it displays correct output even when
+ tracing several processes
+
+ -- Juan Cespedes <cespedes@debian.org> Mon, 9 Jul 2001 01:02:46 +0200
+
+ltrace (0.3.14) unstable; urgency=low
+
+ * Assume a syscall is always immediatly followed by a sysret
+ in i386 (fixes bug which prevented ltrace to work properly
+ in any program using signals); I will have to rethink all
+ this and fix it correctly or port it to non-i386 archs
+ * Fixed -n option: now it is done in output.c (this still has
+ problems when tracing more than one process at a time)
+
+ -- Juan Cespedes <cespedes@debian.org> Sat, 7 Jul 2001 20:56:42 +0200
+
+ltrace (0.3.13) unstable; urgency=low
+
+ * Fixed "ltrace -i", broken since version 0.3.11
+
+ -- Juan Cespedes <cespedes@debian.org> Tue, 3 Jul 2001 18:36:15 +0200
+
+ltrace (0.3.12) unstable; urgency=low
+
+ * Re-wrote of "elf.c" (Silvio Cesare <silvio@big.net.au>)
+ * Added "--library" option (Silvio)
+ * Updated list of syscalls and signals to Linux 2.4.5
+ * Compile cleanly with gcc-3.0 (thanks to Frédéric L. W. Meunier)
+
+ -- Juan Cespedes <cespedes@debian.org> Tue, 3 Jul 2001 00:43:25 +0200
+
+ltrace (0.3.11) unstable; urgency=low
+
+ * Clean up lintian bugs
+ * Fixed small bug reading start of arguments in config file
+ * Keep a stack of nested calls (Morten Eriksen, 1999-07-04)
+ * Add "--indent" option (Morten Eriksen, 1999-07-04)
+ * cleans up connection between a breakpoint address and
+ a call instance (Morten Eriksen, 1999-07-04)
+ * New Standards-Version (3.5.5)
+
+ -- Juan Cespedes <cespedes@debian.org> Mon, 2 Jul 2001 00:24:11 +0200
+
+ltrace (0.3.10) unstable; urgency=low
+
+ * Added C++ demangle (again)
+ * Added correct Build-Depends
+
+ -- Juan Cespedes <cespedes@debian.org> Thu, 23 Dec 1999 00:22:33 +0100
+
+ltrace (0.3.9) unstable; urgency=low
+
+ * New Standards-Version (3.1.1)
+ * Fixed Lintian bugs
+
+ -- Juan Cespedes <cespedes@debian.org> Sun, 19 Dec 1999 17:49:40 +0100
+
+ltrace (0.3.8) unstable; urgency=low
+
+ * glibc-2.1 does no longer need `_GNU_SOURCE' defined to use <getopt.h>
+ * Changed description of package; adopted Red Hat's one
+ (thanks to whoever wrote it)
+ * Close all the file descriptors used before executing program (close-on-exec)
+ * Updated copyright file for new location /usr/share/common-licenses/GPL.
+ * Used GNU autoconf instead of "uname" to guess host system type
+ * Install man page in /usr/share/man instead of /usr/man
+ * Added a few functions to /etc/ltrace.conf
+ * Updated list of syscalls and signals to linux-2.2.12
+ * Fixed bugs in C++ demangle (Morten Eriksen <mortene@sim.no>)
+ * New Standards-Version: 3.0.1 (but keeping docs in /usr/doc)
+
+ -- Juan Cespedes <cespedes@debian.org> Mon, 30 Aug 1999 19:34:47 +0200
+
+ltrace (0.3.7) unstable; urgency=low
+
+ * Minor fixes
+ * Added minor patch from Alex Buell <alex.buell@tahallah.demon.co.uk>
+ to be able to compile under glibc 2.1
+ * Additions to config file from David Dyck <dcd@tc.fluke.com>
+ * Clean-up Makefile a bit
+ * Changed `LT_PT_*' with `ARGTYPE_*'
+ * Display '\\' instead of '\'
+ * Updated list of syscalls and signals to linux-2.2.5
+ * Compiled against glibc-2.1
+
+ -- Juan Cespedes <cespedes@debian.org> Sat, 3 Apr 1999 03:21:50 +0200
+
+ltrace (0.3.6) unstable; urgency=low
+
+ * Added m68k port (Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>) (Bug#27075)
+ * Changed "int pid" with "pid_t pid" everywhere
+ * Fixed return type of some functions from "int" to "void *" (thanks, Roman)
+
+ -- Juan Cespedes <cespedes@debian.org> Fri, 25 Sep 1998 14:48:37 +0200
+
+ltrace (0.3.5) unstable; urgency=low
+
+ * Added ARMLinux port (Pat Beirne <pbeirne@home.com>) (Bug#27040)
+ * Fixed minor things in options.c
+
+ -- Juan Cespedes <cespedes@debian.org> Thu, 24 Sep 1998 13:18:01 +0200
+
+ltrace (0.3.4) unstable; urgency=low
+
+ * Added "ltrace.spec" to build a .rpm binary file.
+ * Added "-r" option
+
+ -- Juan Cespedes <cespedes@debian.org> Sun, 20 Sep 1998 21:22:05 +0200
+
+ltrace (0.3.3) unstable; urgency=low
+
+ * Fixed a little bug in display_string
+ * A few more functions added to /etc/ltrace.conf
+
+ -- Juan Cespedes <cespedes@debian.org> Sun, 6 Sep 1998 14:03:10 +0200
+
+ltrace (0.3.2) unstable; urgency=low
+
+ * Make the output line-buffered (Bug#22874)
+ * New Standards-Version (2.4.1)
+ * Make it compile cleanly with glibc 2.0.7
+
+ -- Juan Cespedes <cespedes@debian.org> Tue, 14 Jul 1998 13:45:24 +0200
+
+ltrace (0.3.1) frozen unstable; urgency=low
+
+ * setgid programs had their uid and gid swapped! Fixed.
+
+ -- Juan Cespedes <cespedes@debian.org> Wed, 29 Apr 1998 19:25:11 +0200
+
+ltrace (0.3.0) unstable; urgency=low
+
+ * Preliminary autoconf support
+ * Switched to getopt()
+ * New option: -C (demangle C++ names)
+ * New options: --help, --version
+ * Display "format" (printf-like) argument types
+ * Updated manual page
+ * New option: -e
+
+ -- Juan Cespedes <cespedes@debian.org> Sat, 25 Apr 1998 14:21:59 +0200
+
+ltrace (0.2.9) frozen unstable; urgency=low
+
+ * Bug#20616 wasn't completely fixed; it didn't work with some programs (Fixed)
+ * Stopping ltrace with ^C DIDN'T WORK if -p option is not used!! (Fixed)
+ * Option -f caused program to segfault; fixed
+ * Fixed nasty bug about executing set[ug]id binaries:
+ When executing a program fails, don't left the program STOPPED.
+ * Make ltrace work with all setuid and setgid binaries when invoked as root
+
+ -- Juan Cespedes <cespedes@debian.org> Sat, 11 Apr 1998 22:50:38 +0200
+
+ltrace (0.2.8) frozen unstable; urgency=low
+
+ * Fix important bug regarding -p: disable all breakpoints on exit (Bug#20616)
+ * Compile cleanly on libc5
+ * Added `-t' option (Bug#20615)
+
+ -- Juan Cespedes <cespedes@debian.org> Sat, 4 Apr 1998 08:34:03 +0200
+
+ltrace (0.2.7) unstable; urgency=low
+
+ * Some minor fixes
+
+ -- Juan Cespedes <cespedes@debian.org> Sun, 15 Mar 1998 14:01:40 +0100
+
+ltrace (0.2.6) unstable; urgency=low
+
+ * Option `-f' now works (but it fails to attach some processes...)
+ * Output is now more similar to strace's
+
+ -- Juan Cespedes <cespedes@debian.org> Sat, 14 Mar 1998 20:50:16 +0100
+
+ltrace (0.2.5) unstable; urgency=low
+
+ * After a successful execve(), library calls are now logged
+ * Enhanced displaying of non-printable chars
+ * Added some functions to /etc/ltrace.conf
+
+ -- Juan Cespedes <cespedes@debian.org> Fri, 13 Mar 1998 19:16:47 +0100
+
+ltrace (0.2.4) unstable; urgency=low
+
+ * Option `-p' now works (but programs fail when ltrace is interrupted)
+
+ -- Juan Cespedes <cespedes@debian.org> Fri, 13 Mar 1998 00:29:10 +0100
+
+ltrace (0.2.3) unstable; urgency=low
+
+ * Don't display `...' in strings when limit of bytes is reached
+ * Added some functions to /etc/ltrace.conf
+
+ -- Juan Cespedes <cespedes@debian.org> Wed, 11 Mar 1998 23:33:14 +0100
+
+ltrace (0.2.2) unstable; urgency=low
+
+ * After a successful execve(), syscalls are now logged correctly
+
+ -- Juan Cespedes <cespedes@debian.org> Wed, 11 Mar 1998 00:02:35 +0100
+
+ltrace (0.2.1) unstable; urgency=low
+
+ * Added -u option (run command as other username)
+ * Updated manual page a bit
+
+ -- Juan Cespedes <cespedes@debian.org> Tue, 10 Mar 1998 00:08:38 +0100
+
+ltrace (0.2.0) unstable; urgency=low
+
+ * First `unstable' release
+ * Complete re-structured all the code to be able to add support for
+ different architectures (but only i386 arch is supported in this
+ version)
+ * Log also return values
+ * Log arguments (and return values) for syscalls
+ * Added preliminary support for various simultaneous processes
+ * getopt-like options
+ * New option: -a (alignment column)
+ * New option: -L (don't display library calls)
+ * New option: -s (maximum # of chars in strings)
+ * Now it reads config files with function names and parameter types
+ * Programs using clone() should work ok now
+ * debian/rules: gzipped only big files in /usr/doc/ltrace
+ * New Standards-Version: 2.4.0.0
+ * beginning to work on sparc port (not yet done)
+
+ -- Juan Cespedes <cespedes@debian.org> Sun, 8 Mar 1998 22:27:30 +0100
+
+ltrace (0.1.7) experimental; urgency=low
+
+ * Internal release.
+ * New Standards-Version (2.3.0.1)
+ * Clean up structures a bit
+ * Trying to log return values...
+
+ -- Juan Cespedes <cespedes@debian.org> Sun, 26 Oct 1997 19:53:20 +0100
+
+ltrace (0.1.6) experimental; urgency=low
+
+ * New maintainer address
+ * New Standards-Version
+
+ -- Juan Cespedes <cespedes@debian.org> Thu, 11 Sep 1997 23:22:32 +0200
+
+ltrace (0.1.5) experimental; urgency=low
+
+ * `command' is now searched in the PATH
+
+ -- Juan Cespedes <cespedes@etsit.upm.es> Wed, 27 Aug 1997 22:27:33 +0200
+
+ltrace (0.1.4) experimental; urgency=low
+
+ * Updated execute_process()
+ * No longer uses signals to wait for children. Should be a little faster.
+ * Now every function uses output.c:send_*() instead of `FILE * output'
+
+ -- Juan Cespedes <cespedes@etsit.upm.es> Mon, 25 Aug 1997 16:08:36 +0200
+
+ltrace (0.1.3) experimental; urgency=low
+
+ * Added options `-i', `-S'
+ * Added syscall names
+ * Added signal names
+ * Added `output.c', `signal.c'
+
+ -- Juan Cespedes <cespedes@etsit.upm.es> Sun, 24 Aug 1997 01:45:49 +0200
+
+ltrace (0.1.2) experimental; urgency=low
+
+ * Updated ``TODO''
+ * Added process.c:execute_process
+ * Added i386.c:type_of_stop
+ * Hopefully, system dependent stuff is now only in i386.[ch] and process.[ch]
+ * `-d' can now be used many times: many levels of debug
+ * removed breakpoint for children detecting fork()s.
+ Now, *every* program should work ok
+ * struct process now also has a field for the process filename
+ * Added "syscall.c" with a list of system call names in Linux/i386
+
+ -- Juan Cespedes <cespedes@etsit.upm.es> Sat, 23 Aug 1997 15:00:23 +0200
+
+ltrace (0.1.1) experimental; urgency=low
+
+ * Added ``TODO''
+ * Added symbols.c:disable_all_breakpoints
+ * Added ``process.[ch]'': init_sighandler, pid2proc
+ * Removed ``trace.c''
+ * Added rudimentary support for multiple processes
+ * Now tracing syscalls (fork() needs a special treatment (TODO))
+ * Added process.c:detach_process
+ * Added i386.c:trace_me,untrace_pid
+
+ -- Juan Cespedes <cespedes@etsit.upm.es> Sat, 23 Aug 1997 02:09:14 +0200
+
+ltrace (0.1.0) experimental; urgency=low
+
+ * Some clean-ups
+ * Added simple manual page
+
+ -- Juan Cespedes <cespedes@etsit.upm.es> Thu, 21 Aug 1997 17:01:36 +0200
+
+ltrace (0.0.1997.08.14) experimental; urgency=low
+
+ * Still re-structuring code... new file: symbols.c
+
+ -- Juan Cespedes <cespedes@etsit.upm.es> Thu, 14 Aug 1997 22:22:43 +0200
+
+ltrace (0.0.1997.08.09) experimental; urgency=low
+
+ * Added Debian files
+ * Re-structured most of the code; new files: elf.c, i386.c, trace.c
+
+ -- Juan Cespedes <cespedes@etsit.upm.es> Sat, 9 Aug 1997 20:55:24 +0200
diff --git a/Makefile.in b/Makefile.in
index a79b346..82bda7d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -13,11 +13,17 @@ bindir = $(prefix)/bin
mandir = @mandir@
docdir = $(prefix)/doc/ltrace
-CC = @CC@
-CPPFLAGS = -I$(TOPDIR) -I$(TOPDIR)/sysdeps/$(OS) -I- @DEFS@
-CFLAGS = -Wall @CFLAGS@ -DSYSCONFDIR=\"$(sysconfdir)\"
-LDFLAGS =
-LIBS = @LIBS@
+CC = @CC@
+CPPFLAGS = -I$(TOPDIR) -I$(TOPDIR)/sysdeps/$(OS) -I- @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)\"
+CFLAGS = -Wall @CFLAGS@
+LDFLAGS =
+LIBS = @LIBS@
+
+INSTALL = @INSTALL@
+INSTALL_FILE = $(INSTALL) -p -o root -g root -m 644
+INSTALL_PROGRAM = $(INSTALL) -p -o root -g root -m 755
+INSTALL_SCRIPT = $(INSTALL) -p -o root -g root -m 755
+INSTALL_DIR = $(INSTALL) -p -d -o root -g root -m 755
OBJ = ltrace.o options.o elf.o output.o read_config_file.o \
execute_program.o wait_for_something.o process_event.o \
@@ -38,7 +44,8 @@ clean:
$(RM) *~ *.bak a.out core KK
distclean: clean
- $(RM) config.cache config.status config.log config.h Makefile ltrace.spec configure.scan
+ $(RM) config.cache config.status config.log config.h Makefile configure.scan
+ $(RM) -r autom4te.cache
realclean: distclean
$(RM) configure config.h.in
@@ -47,12 +54,12 @@ dist: clean
( cd .. ; tar zcvf ltrace-`date +%y%m%d`.tgz ltrace )
install: ltrace
- @INSTALL@ -d $(DESTDIR)$(bindir) $(DESTDIR)$(docdir) $(DESTDIR)$(mandir)/man1
- @INSTALL@ -d $(DESTDIR)$(sysconfdir)
- @INSTALL@ -s ltrace $(DESTDIR)$(bindir)
- @INSTALL@ -m 644 etc/ltrace.conf $(DESTDIR)$(sysconfdir)
- @INSTALL@ -m 644 COPYING README TODO BUGS ChangeLog $(DESTDIR)$(docdir)
- @INSTALL@ -m 644 ltrace.1 $(DESTDIR)$(mandir)/man1
+ $(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(docdir) $(DESTDIR)$(mandir)/man1
+ $(INSTALL_DIR) $(DESTDIR)$(sysconfdir)
+ $(INSTALL_PROGRAM) ltrace $(DESTDIR)$(bindir)
+ $(INSTALL_FILE) etc/ltrace.conf $(DESTDIR)$(sysconfdir)
+ $(INSTALL_FILE) COPYING README TODO BUGS ChangeLog $(DESTDIR)$(docdir)
+ $(INSTALL_FILE) ltrace.1 $(DESTDIR)$(mandir)/man1
dummy:
diff --git a/README b/README
index 678aa41..8553b74 100644
--- a/README
+++ b/README
@@ -28,7 +28,7 @@ people have contributed significantly to this project:
* Silvio Cesare <silvio@big.net.au> (ELF hacking)
* Timothy Fesig <slate@us.ibm.com> (S390 port)
* Anton Blanchard <anton@samba.org> (Powerpc port)
-* Jakub Jelinek <jakub@redhat.com> (SPARC port)
+* Jakub Jelinek <jakub@redhat.com> (SPARC port, support for libelf, many fixes)
* Jakub Bogusz <qboosh@pld-linux.org> (alpha port)
* SuSE (amd64 port)
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..abe07e0
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,833 @@
+dnl aclocal.m4t generated automatically by aclocal 1.4-p6
+
+dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+dnl PARTICULAR PURPOSE.
+
+# lib-prefix.m4 serial 3 (gettext-0.13)
+dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
+dnl require excessive bracketing.
+ifdef([AC_HELP_STRING],
+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
+
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
+dnl to access previously installed libraries. The basic assumption is that
+dnl a user will want packages to use other packages he previously installed
+dnl with the same --prefix option.
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
+dnl libraries, but is otherwise very convenient.
+AC_DEFUN([AC_LIB_PREFIX],
+[
+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_LIB_ARG_WITH([lib-prefix],
+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+ --without-lib-prefix don't search for libraries in includedir and libdir],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/lib"
+ fi
+ fi
+])
+ if test $use_additional = yes; then
+ dnl Potentially add $additional_includedir to $CPPFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's already present in $CPPFLAGS,
+ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ for x in $CPPFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $CPPFLAGS.
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ dnl Potentially add $additional_libdir to $LDFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's already present in $LDFLAGS,
+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/lib"; then
+ haveit=
+ for x in $LDFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_libdir" = "X/usr/local/lib"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LDFLAGS.
+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ fi
+])
+
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
+dnl acl_final_exec_prefix, containing the values to which $prefix and
+dnl $exec_prefix will expand at the end of the configure script.
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
+[
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
+dnl variables prefix and exec_prefix bound to the values they will have
+dnl at the end of the configure script.
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
+[
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ $1
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+])
+
+# lib-link.m4 serial 4 (gettext-0.12)
+dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ define([Name],[translit([$1],[./-], [___])])
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+ ])
+ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+ dnl results of this search when this library appears as a dependency.
+ HAVE_LIB[]NAME=yes
+ undefine([Name])
+ undefine([NAME])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. If found, it
+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ define([Name],[translit([$1],[./-], [___])])
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+
+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed lib[]Name and not disabled its use
+ dnl via --without-lib[]Name-prefix, he wants to use it.
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+ ac_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIB[]NAME"
+ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
+ LIBS="$ac_save_LIBS"
+ ])
+ if test "$ac_cv_lib[]Name" = yes; then
+ HAVE_LIB[]NAME=yes
+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
+ AC_MSG_CHECKING([how to link with lib[]$1])
+ AC_MSG_RESULT([$LIB[]NAME])
+ else
+ HAVE_LIB[]NAME=no
+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+ dnl $INC[]NAME either.
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ LIB[]NAME=
+ LTLIB[]NAME=
+ fi
+ AC_SUBST([HAVE_LIB]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ undefine([Name])
+ undefine([NAME])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
+dnl hardcode_direct, hardcode_minus_L.
+AC_DEFUN([AC_LIB_RPATH],
+[
+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+ ])
+ wl="$acl_cv_wl"
+ libext="$acl_cv_libext"
+ shlibext="$acl_cv_shlibext"
+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ hardcode_direct="$acl_cv_hardcode_direct"
+ hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ dnl Determine whether the user wants rpath handling at all.
+ AC_ARG_ENABLE(rpath,
+ [ --disable-rpath do not hardcode runtime library paths],
+ :, enable_rpath=yes)
+])
+
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
+[
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_LIB_ARG_WITH([lib$1-prefix],
+[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
+ --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/lib"
+ fi
+ fi
+])
+ dnl Search the library and its dependencies in $additional_libdir and
+ dnl $LDFLAGS. Using breadth-first-seach.
+ LIB[]NAME=
+ LTLIB[]NAME=
+ INC[]NAME=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='$1 $2'
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+ dnl or AC_LIB_HAVE_LINKFLAGS call.
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+ else
+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+ dnl that this library doesn't exist. So just drop it.
+ :
+ fi
+ else
+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+ dnl and the already constructed $LIBNAME/$LTLIBNAME.
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ if test $use_additional = yes; then
+ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+ found_dir="$additional_libdir"
+ found_so="$additional_libdir/lib$name.$shlibext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ else
+ if test -f "$additional_libdir/lib$name.$libext"; then
+ found_dir="$additional_libdir"
+ found_a="$additional_libdir/lib$name.$libext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+ found_dir="$dir"
+ found_so="$dir/lib$name.$shlibext"
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ else
+ if test -f "$dir/lib$name.$libext"; then
+ found_dir="$dir"
+ found_a="$dir/lib$name.$libext"
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ dnl Found the library.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ dnl Linking with a shared library. We attempt to hardcode its
+ dnl directory into the executable's runpath, unless it's the
+ dnl standard /usr/lib.
+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+ dnl No hardcoding is needed.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ dnl The hardcoding into $LIBNAME is system dependent.
+ if test "$hardcode_direct" = yes; then
+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+ dnl resulting binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ dnl Rely on "-L$found_dir".
+ dnl But don't add it if it's already contained in the LDFLAGS
+ dnl or the already constructed $LIBNAME
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+ fi
+ if test "$hardcode_minus_L" != no; then
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
+ dnl here, because this doesn't fit in flags passed to the
+ dnl compiler. So give up. No hardcoding. This affects only
+ dnl very old systems.
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ dnl Linking with a static library.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+ else
+ dnl We shouldn't come here, but anyway it's good to have a
+ dnl fallback.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+ fi
+ fi
+ dnl Assume the include files are nearby.
+ additional_includedir=
+ case "$found_dir" in
+ */lib | */lib/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ dnl Potentially add $additional_includedir to $INCNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 3. if it's already present in $CPPFLAGS or the already
+ dnl constructed $INCNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INC[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $INCNAME.
+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ dnl Look for dependencies.
+ if test -n "$found_la"; then
+ dnl Read the .la file. It defines the variables
+ dnl dlname, library_names, old_library, dependency_libs, current,
+ dnl age, revision, installed, dlopen, dlpreopen, libdir.
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ dnl We use only dependency_libs.
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 3. if it's already present in $LDFLAGS or the already
+ dnl constructed $LIBNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/lib"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/lib"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LIBNAME.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LTLIBNAME.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ dnl Handle this in the next round.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ dnl Handle this in the next round. Throw away the .la's
+ dnl directory; it is already contained in a preceding -L
+ dnl option.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ dnl Most likely an immediate library name.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ dnl Didn't find the library; assume it is in the system directories
+ dnl known to the linker and runtime loader. (All the system
+ dnl directories known to the linker should also be known to the
+ dnl runtime loader, otherwise the system is severely misconfigured.)
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user must
+ dnl pass all path elements in one option. We can arrange that for a
+ dnl single library, but not when more than one $LIBNAMEs are used.
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+ done
+ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ dnl When using libtool, the option that works for both libraries and
+ dnl executables is -R. The -R options are cumulative.
+ for found_dir in $ltrpathdirs; do
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+ done
+ fi
+])
+
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
+dnl unless already present in VAR.
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
+dnl contains two or three consecutive elements that belong together.
+AC_DEFUN([AC_LIB_APPENDTOVAR],
+[
+ for element in [$2]; do
+ haveit=
+ for x in $[$1]; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ [$1]="${[$1]}${[$1]:+ }$element"
+ fi
+ done
+])
+
+# lib-ld.m4 serial 3 (gettext-0.13)
+dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl Subroutines of libtool.m4,
+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
+dnl with libtool.m4.
+
+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ acl_cv_prog_gnu_ld=yes ;;
+*)
+ acl_cv_prog_gnu_ld=no ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-1.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_ARG_WITH(gnu-ld,
+[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by GCC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]* | [A-Za-z]:[\\/]*)]
+ [re_direlt='/[^/][^/]*/\.\./']
+ # Canonicalize the path of ld
+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(acl_cv_path_LD,
+[if test -z "$LD"; then
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break ;;
+ *)
+ test "$with_gnu_ld" != yes && break ;;
+ esac
+ fi
+ done
+ IFS="$ac_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_LIB_PROG_LD_GNU
+])
+
diff --git a/config.h.in b/config.h.in
index c8ceadb..865c501 100644
--- a/config.h.in
+++ b/config.h.in
@@ -1,4 +1,7 @@
-/* config.h.in. Generated from configure.in by autoheader. */
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Defined if ELF_C_READ_MMAP is valid argument for elf_begin */
+#undef HAVE_ELF_C_READ_MMAP
/* Define to 1 if you have the `getopt' function. */
#undef HAVE_GETOPT
@@ -12,9 +15,15 @@
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
+/* Define to 1 if you have the `elf' library (-lelf). */
+#undef HAVE_LIBELF
+
/* Define to 1 if you have the `iberty' library (-liberty). */
#undef HAVE_LIBIBERTY
+/* Define to 1 if you have the `supc++' library (-lsupc++). */
+#undef HAVE_LIBSUPC__
+
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
@@ -57,6 +66,12 @@
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
diff --git a/configure b/configure
index 2d36792..c904ad1 100755
--- a/configure
+++ b/configure
@@ -841,6 +841,11 @@ if test -n "$ac_init_help"; then
cat <<\_ACEOF
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-largefile omit support for large files
+
Some influential environment variables:
CC C compiler command
CFLAGS C compiler flags
@@ -1291,6 +1296,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_config_headers="$ac_config_headers config.h"
+
ac_aux_dir=
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
if test -f $ac_dir/install-sh; then
@@ -2452,15 +2458,78 @@ _ACEOF
fi
-echo "$as_me:$LINENO: checking ltrace version" >&5
-echo $ECHO_N "checking ltrace version... $ECHO_C" >&6
+echo "$as_me:$LINENO: checking for __cxa_demangle in -lsupc++" >&5
+echo $ECHO_N "checking for __cxa_demangle in -lsupc++... $ECHO_C" >&6
+if test "${ac_cv_lib_supcpp___cxa_demangle+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsupc++ $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
-ltrace_version=`sed -n '1s/ltrace (\([0-9.]\+\)).*/\1/p' ${srcdir}/debian/changelog`
-sed -e "s/@VERSION@/${ltrace_version}/g" \
- < ${srcdir}/ltrace.spec.in > ${srcdir}/ltrace.spec
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char __cxa_demangle ();
+int
+main ()
+{
+__cxa_demangle ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_supcpp___cxa_demangle=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_supcpp___cxa_demangle=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_supcpp___cxa_demangle" >&5
+echo "${ECHO_T}$ac_cv_lib_supcpp___cxa_demangle" >&6
+if test $ac_cv_lib_supcpp___cxa_demangle = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBSUPC__ 1
+_ACEOF
+
+ LIBS="-lsupc++ $LIBS"
+
+fi
-echo "$as_me:$LINENO: result: $ltrace_version" >&5
-echo "${ECHO_T}$ltrace_version" >&6
ac_ext=c
@@ -3410,6 +3479,649 @@ fi
done
+if test "${ac_cv_header_gelf_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for gelf.h" >&5
+echo $ECHO_N "checking for gelf.h... $ECHO_C" >&6
+if test "${ac_cv_header_gelf_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_gelf_h" >&5
+echo "${ECHO_T}$ac_cv_header_gelf_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking gelf.h usability" >&5
+echo $ECHO_N "checking gelf.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <gelf.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking gelf.h presence" >&5
+echo $ECHO_N "checking gelf.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <gelf.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: gelf.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: gelf.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: gelf.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: gelf.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: gelf.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: gelf.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: gelf.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: gelf.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: gelf.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: gelf.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: gelf.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: gelf.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: gelf.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: gelf.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: gelf.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: gelf.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for gelf.h" >&5
+echo $ECHO_N "checking for gelf.h... $ECHO_C" >&6
+if test "${ac_cv_header_gelf_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_gelf_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_gelf_h" >&5
+echo "${ECHO_T}$ac_cv_header_gelf_h" >&6
+
+fi
+if test $ac_cv_header_gelf_h = yes; then
+ :
+else
+
+ if test -f /usr/include/elfutils/gelf.h; then
+ CPPFLAGS="$CPPFLAGS -I /usr/include/elfutils"
+ elif test -f /usr/local/include/elfutils/gelf.h; then
+ CPPFLAGS="$CPPFLAGS -I /usr/local/include/elfutils"
+ elif test -f /usr/include/libelf/gelf.h; then
+ CPPFLAGS="$CPPFLAGS -I /usr/include/libelf"
+ elif test -f /usr/local/include/libelf/gelf.h; then
+ CPPFLAGS="$CPPFLAGS -I /usr/local/include/libelf"
+ else
+ { { echo "$as_me:$LINENO: error: gelf.h not found" >&5
+echo "$as_me: error: gelf.h not found" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+
+
+echo "$as_me:$LINENO: checking for gelf_getdyn in -lelf" >&5
+echo $ECHO_N "checking for gelf_getdyn in -lelf... $ECHO_C" >&6
+if test "${ac_cv_lib_elf_gelf_getdyn+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lelf $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char gelf_getdyn ();
+int
+main ()
+{
+gelf_getdyn ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_elf_gelf_getdyn=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_elf_gelf_getdyn=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_elf_gelf_getdyn" >&5
+echo "${ECHO_T}$ac_cv_lib_elf_gelf_getdyn" >&6
+if test $ac_cv_lib_elf_gelf_getdyn = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBELF 1
+_ACEOF
+
+ LIBS="-lelf $LIBS"
+
+fi
+
+
+ac_cv_have_elf_c_read_mmap=no
+echo "$as_me:$LINENO: checking elf_begin accepts ELF_C_READ_MMAP" >&5
+echo $ECHO_N "checking elf_begin accepts ELF_C_READ_MMAP... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <gelf.h>
+int
+main ()
+{
+Elf *elf = elf_begin (4, ELF_C_READ_MMAP, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_have_elf_c_read_mmap=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_cv_have_elf_c_read_mmap" >&5
+echo "${ECHO_T}$ac_cv_have_elf_c_read_mmap" >&6
+if test $ac_cv_have_elf_c_read_mmap = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ELF_C_READ_MMAP 1
+_ACEOF
+
+# Check whether --enable-largefile or --disable-largefile was given.
+if test "${enable_largefile+set}" = set; then
+ enableval="$enable_largefile"
+
+fi;
+if test "$enable_largefile" != no; then
+
+ echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
+echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_largefile_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sys_largefile_CC=' -n32'; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
+echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ while :; do
+ ac_cv_sys_file_offset_bits=no
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sys_file_offset_bits=64; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ break
+done
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
+echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
+if test "$ac_cv_sys_file_offset_bits" != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+
+fi
+rm -f conftest*
+ echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
+echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_large_files+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ while :; do
+ ac_cv_sys_large_files=no
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sys_large_files=1; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ break
+done
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
+echo "${ECHO_T}$ac_cv_sys_large_files" >&6
+if test "$ac_cv_sys_large_files" != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+
+fi
+rm -f conftest*
+fi
+
+fi
ac_config_files="$ac_config_files Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..0a81c03
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,72 @@
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT(ltrace.c)
+AC_CONFIG_HEADER(config.h)
+AC_PREREQ(2.50)
+
+dnl Check host system type
+AC_CANONICAL_HOST
+HOST_OS="$host_os"
+AC_SUBST(HOST_OS)
+
+dnl Checks for programs.
+AC_PROG_CC
+AC_PROG_INSTALL
+
+dnl Checks for libraries.
+AC_CHECK_LIB(iberty, cplus_demangle,,,)
+AC_CHECK_LIB(supc++, __cxa_demangle,,,)
+
+dnl
+dnl The following stuff may be useful, but I don't use it now.
+dnl
+
+dnl dnl Checks for header files.
+AC_HEADER_STDC
+dnl AC_HEADER_SYS_WAIT
+dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h unistd.h)
+AC_CHECK_HEADERS(getopt.h)
+dnl
+dnl dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_TYPE_UID_T
+AC_TYPE_PID_T
+dnl AC_HEADER_TIME
+dnl AC_STRUCT_TM
+dnl
+dnl dnl Checks for library functions.
+dnl AC_FUNC_MMAP
+dnl AC_TYPE_SIGNAL
+dnl AC_FUNC_VPRINTF
+dnl AC_CHECK_FUNCS(gettimeofday strdup strerror strspn)
+AC_CHECK_FUNCS(getopt getopt_long)
+
+AC_CHECK_HEADER(gelf.h,,[
+ if test -f /usr/include/elfutils/gelf.h; then
+ CPPFLAGS="$CPPFLAGS -I /usr/include/elfutils"
+ elif test -f /usr/local/include/elfutils/gelf.h; then
+ CPPFLAGS="$CPPFLAGS -I /usr/local/include/elfutils"
+ elif test -f /usr/include/libelf/gelf.h; then
+ CPPFLAGS="$CPPFLAGS -I /usr/include/libelf"
+ elif test -f /usr/local/include/libelf/gelf.h; then
+ CPPFLAGS="$CPPFLAGS -I /usr/local/include/libelf"
+ else
+ AC_MSG_ERROR(gelf.h not found)
+ fi])
+AC_CHECK_LIB(elf,gelf_getdyn)
+
+ac_cv_have_elf_c_read_mmap=no
+AC_MSG_CHECKING(elf_begin accepts ELF_C_READ_MMAP)
+AC_TRY_COMPILE([#include <gelf.h>],
+ [Elf *elf = elf_begin (4, ELF_C_READ_MMAP, 0);],
+ [ac_cv_have_elf_c_read_mmap=yes])
+AC_MSG_RESULT($ac_cv_have_elf_c_read_mmap)
+if test $ac_cv_have_elf_c_read_mmap = yes; then
+AC_DEFINE(HAVE_ELF_C_READ_MMAP, 1,
+ [Defined if ELF_C_READ_MMAP is valid argument for elf_begin])
+dnl This is not 100% correct, but all elfutils installations
+dnl are built with LFS, while AFAIK all Michael Riepe's libelfs
+dnl are built without LFS. It is important that LFS setting
+dnl of libelf and ltrace matches.
+AC_SYS_LARGEFILE
+fi
+AC_OUTPUT(Makefile)
diff --git a/configure.in b/configure.in
deleted file mode 100644
index 98dd645..0000000
--- a/configure.in
+++ /dev/null
@@ -1,50 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(ltrace.c)
-AC_CONFIG_HEADER(config.h)
-
-dnl Check host system type
-AC_CANONICAL_HOST
-HOST_OS="$host_os"
-AC_SUBST(HOST_OS)
-
-dnl Checks for programs.
-AC_PROG_CC
-AC_PROG_INSTALL
-
-dnl Checks for libraries.
-AC_CHECK_LIB(iberty, cplus_demangle,,,)
-
-AC_MSG_CHECKING(ltrace version)
-changequote(<<, >>)
-ltrace_version=`sed -n '1s/ltrace (\([0-9.]\+\)).*/\1/p' ${srcdir}/debian/changelog`
-sed -e "s/@VERSION@/${ltrace_version}/g" \
- < ${srcdir}/ltrace.spec.in > ${srcdir}/ltrace.spec
-changequote([, ])
-dnl AC_DEFINE_UNQUOTED(VERSION,"$ltrace_version")
-AC_MSG_RESULT($ltrace_version)
-
-dnl
-dnl The following stuff may be useful, but I don't use it now.
-dnl
-
-dnl dnl Checks for header files.
-AC_HEADER_STDC
-dnl AC_HEADER_SYS_WAIT
-dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h unistd.h)
-AC_CHECK_HEADERS(getopt.h)
-dnl
-dnl dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_TYPE_UID_T
-AC_TYPE_PID_T
-dnl AC_HEADER_TIME
-dnl AC_STRUCT_TM
-dnl
-dnl dnl Checks for library functions.
-dnl AC_FUNC_MMAP
-dnl AC_TYPE_SIGNAL
-dnl AC_FUNC_VPRINTF
-dnl AC_CHECK_FUNCS(gettimeofday strdup strerror strspn)
-AC_CHECK_FUNCS(getopt getopt_long)
-
-AC_OUTPUT(Makefile)
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
index c5a9122..0000000
--- a/debian/changelog
+++ /dev/null
@@ -1,511 +0,0 @@
-ltrace (0.3.35.1) unstable; urgency=low
-
- * Non-maintainer upload
- * Applied patch from Jakub Jelinek <jakub@redhat.com> to fix problems with
- binaries built with recent binutils (closes: #274955)
- * Applied patch from Jakub Jelinek to add long/ulong types to ltrace.conf
- for amd64
- * Applied patch from Jakub Jelinek to fix -C
- * Applied patch from Jakub Jelinek to update syscallent.h
- * debian/control: build-depend on dpatch and libelfg0-dev
- * debian/rules: add dpatch support
- * debian/changelog: convert to utf-8
-
- -- Andrew Pollock <apollock@debian.org> Fri, 22 Oct 2004 21:43:16 +1000
-
-ltrace (0.3.35) unstable; urgency=low
-
- * Fixed include line in m68k, caused build problems
-
- -- Juan Cespedes <cespedes@debian.org> Fri, 16 Jul 2004 18:00:10 +0200
-
-ltrace (0.3.34) unstable; urgency=low
-
- * Fixed prototype declaration problem in arm, m68k, powerpc, s390
- * Added "amd64" to list of architectures (closes: Bug#252756)
- * Sparc port is hopefully working (closes: Bug#35524)
-
- -- Juan Cespedes <cespedes@debian.org> Wed, 07 Jul 2004 10:40:56 +0200
-
-ltrace (0.3.33) unstable; urgency=low
-
- * Fixed two bugs, thanks to Mauro Meneghin <G1ld0@lycos.it>:
- + Cope correctly with breakpoint values greater than
- sizeof(long) bytes
- + Fixed small bug in option -r (closes: Bug#212792)
- * Show help if no (or few) arguments are given, just like
- strace and fenris (thanks, Tomasz Wegrzanowski <taw@users.sf.net>)
- * Some fixes from Jakub Bogusz <qboosh@pld-linux.org>:
- + Small 64-bit cleanup of code
- + support for more than 6 function arguments on amd64
- + Adapted SPARC port from Jakub Jelinek <jakub@redhat.com>
- + Added alpha support
-
- -- Juan Cespedes <cespedes@debian.org> Mon, 14 Jun 2004 18:01:12 +0200
-
-ltrace (0.3.32) unstable; urgency=low
-
- * Fixed wrong version number
- * Removed unused file "opt_c.c"
- * Remove error when tracing no calls and doing fork()
- * Clean-up of sysdeps/linux-gnu/s390/trace.c
- * Clean-up of sysdeps/linux-gnu/ppc/trace.c
- * Make `--library' option really work (closes: Bug#232321)
- * Merged several patches from SuSE:
- + Added some functions to ltrace.conf
- + Handle 64-big ELF files nicely
- + AMD64 support
- + Updated list of syscalls for S/390
- + Improved some debugging statements
- Many thanks to Bernhard Kaindl <bk@suse.de> for his great work
-
- -- Juan Cespedes <cespedes@debian.org> Sun, 04 Apr 2004 01:31:37 +0200
-
-ltrace (0.3.31) unstable; urgency=low
-
- * Added a lot of functions to ltrace.conf,
- thanks to Jakub Jelinek <jakub@redhat.com> (closes: Bug#144518)
- * Fixed off-by-one problem in checking syscall number
- * Removed some warnings
-
- -- Juan Cespedes <cespedes@debian.org> Tue, 04 Feb 2003 23:22:46 +0100
-
-ltrace (0.3.30) unstable; urgency=low
-
- * Implemented -T option (show time spent inside each call)
- * Alphabetically sort options in help and manual page
- * Added -c option (summary of calls on program exit)
-
- -- Juan Cespedes <cespedes@debian.org> Mon, 03 Feb 2003 00:22:28 +0100
-
-ltrace (0.3.29) unstable; urgency=low
-
- * Align return values depending on screen width
- * Updated list of syscalls and signals to Linux 2.4.20
- * Fixed bug introduced in 0.3.27 which caused -L option to segfault
-
- -- Juan Cespedes <cespedes@debian.org> Sat, 01 Feb 2003 19:01:39 +0100
-
-ltrace (0.3.28) unstable; urgency=medium
-
- * Fixed memory corruption when using execve() in a traced program
- (closes: Bug#160341, Bug#165626)
-
- -- Juan Cespedes <cespedes@debian.org> Fri, 31 Jan 2003 19:51:28 +0100
-
-ltrace (0.3.27) unstable; urgency=low
-
- * Removed dependency on libdl (it is no longer needed)
- * Wrote generic dictionary, used in demangle.c and breakpoints.c
- * Added debug.c for better debugging output
-
- -- Juan Cespedes <cespedes@debian.org> Fri, 31 Jan 2003 18:58:55 +0100
-
-ltrace (0.3.26) unstable; urgency=low
-
- * Fixed `ltrace -L' in powerpc
-
- -- Juan Cespedes <cespedes@debian.org> Sun, 31 Mar 2002 20:53:49 +0200
-
-ltrace (0.3.25) unstable; urgency=low
-
- * Finally added powerpc support (Anton Blanchard <anton@samba.org>)
-
- -- Juan Cespedes <cespedes@debian.org> Sun, 31 Mar 2002 19:58:25 +0200
-
-ltrace (0.3.24) unstable; urgency=low
-
- * Fixed 2 minor buffer overflows (closes: Bug#130746)
- * Obey --prefix, --sysconfdir, --mandir options in configure
- * Adding powerpc support (doesn't work yet)
- (Anton Blanchard <anton@samba.org>)
-
- -- Juan Cespedes <cespedes@debian.org> Wed, 27 Mar 2002 00:20:57 +0100
-
-ltrace (0.3.23) unstable; urgency=low
-
- * Fixed missing include <unistd.h> in trace.c
- * One arch-dependent function less (continue_after_breakpoint)
- * Fixed S/390 port (it didn't compile yet...)
-
- -- Juan Cespedes <cespedes@debian.org> Sun, 3 Mar 2002 18:58:36 +0100
-
-ltrace (0.3.22) unstable; urgency=low
-
- * S/390: Removed extra target in sysdeps/linux-gnu/s390 which avoided
- compiling...
-
- -- Juan Cespedes <cespedes@debian.org> Sun, 3 Mar 2002 14:04:38 +0100
-
-ltrace (0.3.21) unstable; urgency=low
-
- * Get rid of arch/breakpoint.c; we can do it arch-independent
-
- -- Juan Cespedes <cespedes@debian.org> Sun, 3 Mar 2002 02:37:46 +0100
-
-ltrace (0.3.20) unstable; urgency=low
-
- * Added s390 port (Timothy R. Fesig <slate@us.ibm.com>)
- * Modified configure process to use ltrace.spec.in to generate
- ltrace.spec (Timothy R. Fesig <slate@us.ibm.com>)
- * Fixed some problems using ltrace.spec on Intel platform.
- (Timothy R. Fesig <slate@us.ibm.com>)
-
- -- Juan Cespedes <cespedes@debian.org> Sat, 2 Mar 2002 23:33:00 +0100
-
-ltrace (0.3.19) unstable; urgency=low
-
- * Fixed small bug: "<unifinished...>" lines were sometimes incorrectly
- displayed
- * Added new functions to /etc/ltrace.conf (thanks to James R. Van Zandt
- <jrv@vanzandt.mv.com>) (closes: Bug#91349)
-
- -- Juan Cespedes <cespedes@debian.org> Fri, 1 Mar 2002 21:05:37 +0100
-
-ltrace (0.3.18) unstable; urgency=low
-
- * Simplified arch-dependent stuff
- * Updated list of syscalls and signals to Linux 2.4.18
- * Unified coding-style of all function declarations
- * Do not indent lines indicating signals, exit codes, etc
- * Updated description
- * fix off-by-one problem in checking syscall number (Tim Waugh
- <twaugh@redhat.com> fixed this problem in RedHat two years ago;
- thank you for NOT noticing me...)
-
- -- Juan Cespedes <cespedes@debian.org> Fri, 1 Mar 2002 19:52:43 +0100
-
-ltrace (0.3.17) unstable; urgency=low
-
- * Added a bit more debugging
- * Fixed display of return address in nested functions
- * Added posibility to exit from a function different from the last called
- one (this fixes "ltrace gnome-terminal", for example)
-
- -- Juan Cespedes <cespedes@debian.org> Mon, 25 Feb 2002 00:19:19 +0100
-
-ltrace (0.3.16) unstable; urgency=low
-
- * ltrace works again after an execve is received (closes: Bug#108835)
- * Added prototypes for fnmatch() and bsearch() (closes: Bug#106862)
- * Re-wrote short description so it does not exceed 60 chars
- (closes: Bug#114682)
-
- -- Juan Cespedes <cespedes@debian.org> Mon, 10 Dec 2001 04:11:26 +0100
-
-ltrace (0.3.15) unstable; urgency=low
-
- * Fixed `-n' option so that it displays correct output even when
- tracing several processes
-
- -- Juan Cespedes <cespedes@debian.org> Mon, 9 Jul 2001 01:02:46 +0200
-
-ltrace (0.3.14) unstable; urgency=low
-
- * Assume a syscall is always immediatly followed by a sysret
- in i386 (fixes bug which prevented ltrace to work properly
- in any program using signals); I will have to rethink all
- this and fix it correctly or port it to non-i386 archs
- * Fixed -n option: now it is done in output.c (this still has
- problems when tracing more than one process at a time)
-
- -- Juan Cespedes <cespedes@debian.org> Sat, 7 Jul 2001 20:56:42 +0200
-
-ltrace (0.3.13) unstable; urgency=low
-
- * Fixed "ltrace -i", broken since version 0.3.11
-
- -- Juan Cespedes <cespedes@debian.org> Tue, 3 Jul 2001 18:36:15 +0200
-
-ltrace (0.3.12) unstable; urgency=low
-
- * Re-wrote of "elf.c" (Silvio Cesare <silvio@big.net.au>)
- * Added "--library" option (Silvio)
- * Updated list of syscalls and signals to Linux 2.4.5
- * Compile cleanly with gcc-3.0 (thanks to Frédéric L. W. Meunier)
-
- -- Juan Cespedes <cespedes@debian.org> Tue, 3 Jul 2001 00:43:25 +0200
-
-ltrace (0.3.11) unstable; urgency=low
-
- * Clean up lintian bugs
- * Fixed small bug reading start of arguments in config file
- * Keep a stack of nested calls (Morten Eriksen, 1999-07-04)
- * Add "--indent" option (Morten Eriksen, 1999-07-04)
- * cleans up connection between a breakpoint address and
- a call instance (Morten Eriksen, 1999-07-04)
- * New Standards-Version (3.5.5)
-
- -- Juan Cespedes <cespedes@debian.org> Mon, 2 Jul 2001 00:24:11 +0200
-
-ltrace (0.3.10) unstable; urgency=low
-
- * Added C++ demangle (again)
- * Added correct Build-Depends
-
- -- Juan Cespedes <cespedes@debian.org> Thu, 23 Dec 1999 00:22:33 +0100
-
-ltrace (0.3.9) unstable; urgency=low
-
- * New Standards-Version (3.1.1)
- * Fixed Lintian bugs
-
- -- Juan Cespedes <cespedes@debian.org> Sun, 19 Dec 1999 17:49:40 +0100
-
-ltrace (0.3.8) unstable; urgency=low
-
- * glibc-2.1 does no longer need `_GNU_SOURCE' defined to use <getopt.h>
- * Changed description of package; adopted Red Hat's one
- (thanks to whoever wrote it)
- * Close all the file descriptors used before executing program (close-on-exec)
- * Updated copyright file for new location /usr/share/common-licenses/GPL.
- * Used GNU autoconf instead of "uname" to guess host system type
- * Install man page in /usr/share/man instead of /usr/man
- * Added a few functions to /etc/ltrace.conf
- * Updated list of syscalls and signals to linux-2.2.12
- * Fixed bugs in C++ demangle (Morten Eriksen <mortene@sim.no>)
- * New Standards-Version: 3.0.1 (but keeping docs in /usr/doc)
-
- -- Juan Cespedes <cespedes@debian.org> Mon, 30 Aug 1999 19:34:47 +0200
-
-ltrace (0.3.7) unstable; urgency=low
-
- * Minor fixes
- * Added minor patch from Alex Buell <alex.buell@tahallah.demon.co.uk>
- to be able to compile under glibc 2.1
- * Additions to config file from David Dyck <dcd@tc.fluke.com>
- * Clean-up Makefile a bit
- * Changed `LT_PT_*' with `ARGTYPE_*'
- * Display '\\' instead of '\'
- * Updated list of syscalls and signals to linux-2.2.5
- * Compiled against glibc-2.1
-
- -- Juan Cespedes <cespedes@debian.org> Sat, 3 Apr 1999 03:21:50 +0200
-
-ltrace (0.3.6) unstable; urgency=low
-
- * Added m68k port (Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>) (Bug#27075)
- * Changed "int pid" with "pid_t pid" everywhere
- * Fixed return type of some functions from "int" to "void *" (thanks, Roman)
-
- -- Juan Cespedes <cespedes@debian.org> Fri, 25 Sep 1998 14:48:37 +0200
-
-ltrace (0.3.5) unstable; urgency=low
-
- * Added ARMLinux port (Pat Beirne <pbeirne@home.com>) (Bug#27040)
- * Fixed minor things in options.c
-
- -- Juan Cespedes <cespedes@debian.org> Thu, 24 Sep 1998 13:18:01 +0200
-
-ltrace (0.3.4) unstable; urgency=low
-
- * Added "ltrace.spec" to build a .rpm binary file.
- * Added "-r" option
-
- -- Juan Cespedes <cespedes@debian.org> Sun, 20 Sep 1998 21:22:05 +0200
-
-ltrace (0.3.3) unstable; urgency=low
-
- * Fixed a little bug in display_string
- * A few more functions added to /etc/ltrace.conf
-
- -- Juan Cespedes <cespedes@debian.org> Sun, 6 Sep 1998 14:03:10 +0200
-
-ltrace (0.3.2) unstable; urgency=low
-
- * Make the output line-buffered (Bug#22874)
- * New Standards-Version (2.4.1)
- * Make it compile cleanly with glibc 2.0.7
-
- -- Juan Cespedes <cespedes@debian.org> Tue, 14 Jul 1998 13:45:24 +0200
-
-ltrace (0.3.1) frozen unstable; urgency=low
-
- * setgid programs had their uid and gid swapped! Fixed.
-
- -- Juan Cespedes <cespedes@debian.org> Wed, 29 Apr 1998 19:25:11 +0200
-
-ltrace (0.3.0) unstable; urgency=low
-
- * Preliminary autoconf support
- * Switched to getopt()
- * New option: -C (demangle C++ names)
- * New options: --help, --version
- * Display "format" (printf-like) argument types
- * Updated manual page
- * New option: -e
-
- -- Juan Cespedes <cespedes@debian.org> Sat, 25 Apr 1998 14:21:59 +0200
-
-ltrace (0.2.9) frozen unstable; urgency=low
-
- * Bug#20616 wasn't completely fixed; it didn't work with some programs (Fixed)
- * Stopping ltrace with ^C DIDN'T WORK if -p option is not used!! (Fixed)
- * Option -f caused program to segfault; fixed
- * Fixed nasty bug about executing set[ug]id binaries:
- When executing a program fails, don't left the program STOPPED.
- * Make ltrace work with all setuid and setgid binaries when invoked as root
-
- -- Juan Cespedes <cespedes@debian.org> Sat, 11 Apr 1998 22:50:38 +0200
-
-ltrace (0.2.8) frozen unstable; urgency=low
-
- * Fix important bug regarding -p: disable all breakpoints on exit (Bug#20616)
- * Compile cleanly on libc5
- * Added `-t' option (Bug#20615)
-
- -- Juan Cespedes <cespedes@debian.org> Sat, 4 Apr 1998 08:34:03 +0200
-
-ltrace (0.2.7) unstable; urgency=low
-
- * Some minor fixes
-
- -- Juan Cespedes <cespedes@debian.org> Sun, 15 Mar 1998 14:01:40 +0100
-
-ltrace (0.2.6) unstable; urgency=low
-
- * Option `-f' now works (but it fails to attach some processes...)
- * Output is now more similar to strace's
-
- -- Juan Cespedes <cespedes@debian.org> Sat, 14 Mar 1998 20:50:16 +0100
-
-ltrace (0.2.5) unstable; urgency=low
-
- * After a successful execve(), library calls are now logged
- * Enhanced displaying of non-printable chars
- * Added some functions to /etc/ltrace.conf
-
- -- Juan Cespedes <cespedes@debian.org> Fri, 13 Mar 1998 19:16:47 +0100
-
-ltrace (0.2.4) unstable; urgency=low
-
- * Option `-p' now works (but programs fail when ltrace is interrupted)
-
- -- Juan Cespedes <cespedes@debian.org> Fri, 13 Mar 1998 00:29:10 +0100
-
-ltrace (0.2.3) unstable; urgency=low
-
- * Don't display `...' in strings when limit of bytes is reached
- * Added some functions to /etc/ltrace.conf
-
- -- Juan Cespedes <cespedes@debian.org> Wed, 11 Mar 1998 23:33:14 +0100
-
-ltrace (0.2.2) unstable; urgency=low
-
- * After a successful execve(), syscalls are now logged correctly
-
- -- Juan Cespedes <cespedes@debian.org> Wed, 11 Mar 1998 00:02:35 +0100
-
-ltrace (0.2.1) unstable; urgency=low
-
- * Added -u option (run command as other username)
- * Updated manual page a bit
-
- -- Juan Cespedes <cespedes@debian.org> Tue, 10 Mar 1998 00:08:38 +0100
-
-ltrace (0.2.0) unstable; urgency=low
-
- * First `unstable' release
- * Complete re-structured all the code to be able to add support for
- different architectures (but only i386 arch is supported in this
- version)
- * Log also return values
- * Log arguments (and return values) for syscalls
- * Added preliminary support for various simultaneous processes
- * getopt-like options
- * New option: -a (alignment column)
- * New option: -L (don't display library calls)
- * New option: -s (maximum # of chars in strings)
- * Now it reads config files with function names and parameter types
- * Programs using clone() should work ok now
- * debian/rules: gzipped only big files in /usr/doc/ltrace
- * New Standards-Version: 2.4.0.0
- * beginning to work on sparc port (not yet done)
-
- -- Juan Cespedes <cespedes@debian.org> Sun, 8 Mar 1998 22:27:30 +0100
-
-ltrace (0.1.7) experimental; urgency=low
-
- * Internal release.
- * New Standards-Version (2.3.0.1)
- * Clean up structures a bit
- * Trying to log return values...
-
- -- Juan Cespedes <cespedes@debian.org> Sun, 26 Oct 1997 19:53:20 +0100
-
-ltrace (0.1.6) experimental; urgency=low
-
- * New maintainer address
- * New Standards-Version
-
- -- Juan Cespedes <cespedes@debian.org> Thu, 11 Sep 1997 23:22:32 +0200
-
-ltrace (0.1.5) experimental; urgency=low
-
- * `command' is now searched in the PATH
-
- -- Juan Cespedes <cespedes@etsit.upm.es> Wed, 27 Aug 1997 22:27:33 +0200
-
-ltrace (0.1.4) experimental; urgency=low
-
- * Updated execute_process()
- * No longer uses signals to wait for children. Should be a little faster.
- * Now every function uses output.c:send_*() instead of `FILE * output'
-
- -- Juan Cespedes <cespedes@etsit.upm.es> Mon, 25 Aug 1997 16:08:36 +0200
-
-ltrace (0.1.3) experimental; urgency=low
-
- * Added options `-i', `-S'
- * Added syscall names
- * Added signal names
- * Added `output.c', `signal.c'
-
- -- Juan Cespedes <cespedes@etsit.upm.es> Sun, 24 Aug 1997 01:45:49 +0200
-
-ltrace (0.1.2) experimental; urgency=low
-
- * Updated ``TODO''
- * Added process.c:execute_process
- * Added i386.c:type_of_stop
- * Hopefully, system dependent stuff is now only in i386.[ch] and process.[ch]
- * `-d' can now be used many times: many levels of debug
- * removed breakpoint for children detecting fork()s.
- Now, *every* program should work ok
- * struct process now also has a field for the process filename
- * Added "syscall.c" with a list of system call names in Linux/i386
-
- -- Juan Cespedes <cespedes@etsit.upm.es> Sat, 23 Aug 1997 15:00:23 +0200
-
-ltrace (0.1.1) experimental; urgency=low
-
- * Added ``TODO''
- * Added symbols.c:disable_all_breakpoints
- * Added ``process.[ch]'': init_sighandler, pid2proc
- * Removed ``trace.c''
- * Added rudimentary support for multiple processes
- * Now tracing syscalls (fork() needs a special treatment (TODO))
- * Added process.c:detach_process
- * Added i386.c:trace_me,untrace_pid
-
- -- Juan Cespedes <cespedes@etsit.upm.es> Sat, 23 Aug 1997 02:09:14 +0200
-
-ltrace (0.1.0) experimental; urgency=low
-
- * Some clean-ups
- * Added simple manual page
-
- -- Juan Cespedes <cespedes@etsit.upm.es> Thu, 21 Aug 1997 17:01:36 +0200
-
-ltrace (0.0.1997.08.14) experimental; urgency=low
-
- * Still re-structuring code... new file: symbols.c
-
- -- Juan Cespedes <cespedes@etsit.upm.es> Thu, 14 Aug 1997 22:22:43 +0200
-
-ltrace (0.0.1997.08.09) experimental; urgency=low
-
- * Added Debian files
- * Re-structured most of the code; new files: elf.c, i386.c, trace.c
-
- -- Juan Cespedes <cespedes@etsit.upm.es> Sat, 9 Aug 1997 20:55:24 +0200
diff --git a/debian/conffiles b/debian/conffiles
deleted file mode 100644
index 1c10cee..0000000
--- a/debian/conffiles
+++ /dev/null
@@ -1 +0,0 @@
-/etc/ltrace.conf
diff --git a/debian/control b/debian/control
deleted file mode 100644
index bb99211..0000000
--- a/debian/control
+++ /dev/null
@@ -1,23 +0,0 @@
-Source: ltrace
-Section: utils
-Priority: optional
-Maintainer: Juan Cespedes <cespedes@debian.org>
-Standards-Version: 3.5.6
-Build-Depends: binutils-dev, dpatch, libelfg0-dev
-
-Package: ltrace
-Architecture: i386 arm m68k s390 powerpc sparc alpha amd64
-Depends: ${shlibs:Depends}
-Description: Tracks runtime library calls in dynamically linked programs
- ltrace is a debugging program which runs a specified command until it
- exits. While the command is executing, ltrace intercepts and records
- the dynamic library calls which are called by
- the executed process and the signals received by that process.
- It can also intercept and print the system calls executed by the program.
- .
- The program to be traced need not be recompiled for this, so you can
- use it on binaries for which you don't have the source handy.
- .
- You should install ltrace if you need a sysadmin tool for tracking the
- execution of processes.
-
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644
index ae2b820..0000000
--- a/debian/copyright
+++ /dev/null
@@ -1,40 +0,0 @@
-This is the Debian GNU/Linux's prepackaged version of the
-Dynamic Library Tracer ``ltrace''.
-
-
-Copyrights
-----------
-Copyright (C) 1997-2004 Juan Cespedes <cespedes@debian.org>
-
-ARMLinux port: Copyright (C) 1998 Pat Beirne <pbeirne@home.com>
-m68k port: Copyright (C) 1998 Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>
-Misc fixes: Copyright (C) 1999 Morten Eriksen <mortene@sim.no>
-s390 port: Copyright (C) 2001 IBM Poughkeepsie, IBM Cororation <slate@us.ibm.com>
-ELF hacking: Copyright (C) 1999 Silvio Cesare <silvio@big.net.au>
-PowerPC port: Copyright (C) 2001-2002 Anton Blanchard <anton@samba.org>
-SPARC port: Copyright (C) 1999 Jakub Jelinek <jakub@redhat.com>
-
-
-Autoconf stuff: Copyright 1992-1996 Free Software Foundation, Inc.
-install-sh: Copyright 1991 by the Massachusetts Institute of Technology
-C++ demangle: Copyright 1989-1997 Free Software Foundation, Inc.
-
-
-License
--------
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-A copy of the GNU General Public License is available as
-`/usr/share/common-licenses/GPL' in the Debian GNU/Linux distribution
-or on the World Wide Web at `http://www.gnu.org/copyleft/gpl.html'.
-You can also obtain it by writing to the Free Software Foundation,
-Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
diff --git a/debian/patches/0064bit.dpatch b/debian/patches/0064bit.dpatch
deleted file mode 100755
index ceee406..0000000
--- a/debian/patches/0064bit.dpatch
+++ /dev/null
@@ -1,781 +0,0 @@
-#! /bin/sh -e
-## 0064bit.dpatch by <apollock@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: No description.
-
-if [ $# -lt 1 ]; then
- echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
- exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}"
-
-case "$1" in
- -patch) patch -p1 ${patch_opts} < $0;;
- -unpatch) patch -R -p1 ${patch_opts} < $0;;
- *)
- echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
- exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/dict.c ltrace-0.3.35/dict.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/dict.c 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/dict.c 2004-10-22 16:34:24.000000000 +1000
-@@ -152,7 +152,7 @@
-
- unsigned int
- dict_key2hash_int(void * key) {
-- return (unsigned int)key;
-+ return (unsigned long)key;
- }
-
- int
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/display_args.c ltrace-0.3.35/display_args.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/display_args.c 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/display_args.c 2004-10-22 16:34:24.000000000 +1000
-@@ -4,6 +4,7 @@
-
- #include <stdio.h>
- #include <stdlib.h>
-+#include <string.h>
- #include <limits.h>
-
- #include "ltrace.h"
-@@ -27,6 +28,10 @@
- return fprintf(output, "%d", (int)gimme_arg(type, proc, arg_num));
- case ARGTYPE_UINT:
- return fprintf(output, "%u", (unsigned)gimme_arg(type, proc, arg_num));
-+ case ARGTYPE_LONG:
-+ return fprintf(output, "%ld", gimme_arg(type, proc, arg_num));
-+ case ARGTYPE_ULONG:
-+ return fprintf(output, "%lu", (unsigned long)gimme_arg(type, proc, arg_num));
- case ARGTYPE_OCTAL:
- return fprintf(output, "0%o", (unsigned)gimme_arg(type, proc, arg_num));
- case ARGTYPE_CHAR:
-@@ -53,6 +58,10 @@
- return display_stringN(2, type, proc, arg_num);
- case ARGTYPE_STRING3:
- return display_stringN(3, type, proc, arg_num);
-+ case ARGTYPE_STRING4:
-+ return display_stringN(4, type, proc, arg_num);
-+ case ARGTYPE_STRING5:
-+ return display_stringN(5, type, proc, arg_num);
- case ARGTYPE_UNKNOWN:
- default:
- return display_unknown(type, proc, arg_num);
-@@ -169,23 +178,50 @@
- }
- for(i=0; str1[i]; i++) {
- if (str1[i]=='%') {
-+ int is_long = 0;
- while(1) {
- unsigned char c = str1[++i];
- if (c == '%') {
- break;
- } else if (!c) {
- break;
-- } else if ((c=='d') || (c=='i')) {
-- len += fprintf(output, ", %d", (int)gimme_arg(type, proc, ++arg_num));
-+ } else if (strchr ("lzZtj", c)) {
-+ is_long++;
-+ if (c == 'j')
-+ is_long++;
-+ if (is_long > 1 && sizeof (long) < sizeof (long long)) {
-+ len += fprintf(output, ", ...");
-+ str1[i+1]='\0';
-+ break;
-+ }
-+ } else if (c=='d' || c=='i') {
-+ if (is_long)
-+ len += fprintf(output, ", %d", (int)gimme_arg(type, proc, ++arg_num));
-+ else
-+ len += fprintf(output, ", %ld", gimme_arg(type, proc, ++arg_num));
- break;
- } else if (c=='u') {
-- len += fprintf(output, ", %u", (int)gimme_arg(type, proc, ++arg_num));
-+ if (is_long)
-+ len += fprintf(output, ", %u", (int)gimme_arg(type, proc, ++arg_num));
-+ else
-+ len += fprintf(output, ", %lu", gimme_arg(type, proc, ++arg_num));
- break;
- } else if (c=='o') {
-- len += fprintf(output, ", 0%o", (int)gimme_arg(type, proc, ++arg_num));
-+ if (is_long)
-+ len += fprintf(output, ", 0%o", (int)gimme_arg(type, proc, ++arg_num));
-+ else
-+ len += fprintf(output, ", 0%lo", gimme_arg(type, proc, ++arg_num));
- break;
-- } else if ((c=='x') || (c=='X')) {
-- len += fprintf(output, ", %#x", (int)gimme_arg(type, proc, ++arg_num));
-+ } else if (c=='x' || c=='X') {
-+ if (is_long)
-+ len += fprintf(output, ", %#x", (int)gimme_arg(type, proc, ++arg_num));
-+ else
-+ len += fprintf(output, ", %#lx", gimme_arg(type, proc, ++arg_num));
-+ break;
-+ } else if (strchr("eEfFgGaACS", c)
-+ || (is_long && (c=='c' || c=='s'))) {
-+ len += fprintf(output, ", ...");
-+ str1[i+1]='\0';
- break;
- } else if (c=='c') {
- len += fprintf(output, ", '");
-@@ -196,9 +232,8 @@
- len += fprintf(output, ", ");
- len += display_string(type, proc, ++arg_num);
- break;
-- } else if ((c=='e') || (c=='E') || (c=='f') || (c=='g')) {
-- len += fprintf(output, ", ...");
-- str1[i+1]='\0';
-+ } else if (c=='p' || c=='n') {
-+ len += fprintf(output, ", %p", (void *)gimme_arg(type, proc, ++arg_num));
- break;
- } else if (c=='*') {
- len += fprintf(output, ", %d", (int)gimme_arg(type, proc, ++arg_num));
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/etc/ltrace.conf ltrace-0.3.35/etc/ltrace.conf
---- /home/apollock/debian/ltrace/ltrace-0.3.35/etc/ltrace.conf 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/etc/ltrace.conf 2004-10-22 16:34:24.000000000 +1000
-@@ -5,6 +5,8 @@
- ; void
- ; int
- ; uint == (unsigned int)
-+; long
-+; ulong == (unsigned long)
- ; octal == (unsigned) [written in octal]
- ; char
- ; addr == (void *) [unsigned, written in hexa]
-@@ -28,6 +30,9 @@
- ; ctype.h
- char tolower(char);
- char toupper(char);
-+addr __ctype_b_loc(void);
-+addr __ctype_tolower_loc(void);
-+addr __ctype_toupper_loc(void);
-
- ; curses.h
- int waddch(addr, char);
-@@ -80,11 +85,27 @@
- ; locale.h
- string setlocale(int, string);
-
-+; mcheck.h
-+void mtrace(void);
-+void muntrace(void);
-+
- ; mntent.h
- int endmntent(file);
- file setmntent(string,string);
- addr getmntent(addr);
-
-+; mqueue.h
-+int mq_open(string, int, octal, addr); ; WARNING: 3rd and 4th arguments may not be there
-+int mq_close(int);
-+int mq_unlink(string);
-+int mq_getattr(int, addr);
-+int mq_setattr(int, addr, addr);
-+int mq_notify(int, addr);
-+int mq_send(int, string3, ulong, uint);
-+int mq_timedsend(int, string3, ulong, uint, addr);
-+long mq_receive(int, +string0, ulong, addr);
-+long mq_timedreceive(int, +string0, ulong, addr, addr);
-+
- ; netdb.h
- void endhostent(void);
- void endnetent(void);
-@@ -97,7 +118,7 @@
- addr gethostbyaddr(string, uint, int);
- addr gethostbyname(string);
- addr gethostent(void);
--int getnameinfo(addr, int, string, int, string, int, int);
-+int getnameinfo(addr, uint, string, uint, string, uint, uint);
- addr getnetbyaddr(uint, int);
- addr getnetbyname(string);
- addr getnetent(void);
-@@ -162,78 +183,78 @@
- int ferror(file);
- int fflush(file);
- char fgetc(file);
--addr fgets(+string, uint, file);
-+addr fgets(+string, int, file);
- int fileno(file);
- file fopen(string,string);
- file fopen64(string,string);
- int fprintf(file,format);
- int fputc(char,file);
- int fputs(string,file);
--uint fread(addr,uint,uint,file);
--uint fread_unlocked(addr,uint,uint,file);
--uint fwrite(string,uint,uint,file);
--uint fwrite_unlocked(string,uint,uint,file);
-+ulong fread(addr,ulong,ulong,file);
-+ulong fread_unlocked(addr,ulong,ulong,file);
-+ulong fwrite(string,ulong,ulong,file);
-+ulong fwrite_unlocked(string,ulong,ulong,file);
- int pclose(addr);
- void perror(string);
- addr popen(string, string);
- int printf(format);
- int puts(string);
- int remove(string);
--int snprintf(+string2,int,format);
-+int snprintf(+string2,ulong,format);
- int sprintf(+string,format);
- string tempnam(string,string);
- int vfprintf(file,string,addr);
--int vsnprintf(+string2,int,string,addr);
--int setvbuf(file,addr,int,uint);
-+int vsnprintf(+string2,ulong,string,addr);
-+int setvbuf(file,addr,int,ulong);
- void setbuf(file,addr);
--void setbuffer(file,addr,uint);
-+void setbuffer(file,addr,ulong);
- void setlinebuf(file);
- int rename(string,string);
-
- ; stdlib.h
--int __strtol_internal(string,addr,int);
--uint __strtoul_internal(string,addr,int);
-+long __strtol_internal(string,addr,int);
-+ulong __strtoul_internal(string,addr,int);
- int atexit(addr);
--addr bsearch(string, addr, uint, uint, addr);
--addr calloc(uint, uint);
-+addr bsearch(string, addr, ulong, ulong, addr);
-+addr calloc(ulong, ulong);
- void exit(int);
- void free(addr);
- string getenv(string);
- int putsenv(string);
- int setenv(string,string,int);
- void unsetenv(string);
--addr malloc(int);
--void qsort(addr,uint,uint,addr);
-+addr malloc(ulong);
-+void qsort(addr,ulong,ulong,addr);
- int random(void);
--addr realloc(addr,uint);
-+addr realloc(addr,ulong);
- void srandom(uint);
- int system(string);
-
- ; string.h
--void bcopy(addr,addr,int);
--void bzero(addr,int);
-+void bcopy(addr,addr,ulong);
-+void bzero(addr,ulong);
- string basename(string);
- string index(string,char);
--addr memchr(string,char,uint);
--addr memcpy(addr,string3,uint);
--addr memset(addr,char,int);
-+addr memchr(string,char,ulong);
-+addr memcpy(addr,string3,ulong);
-+addr memset(addr,char,long);
- string rindex(string,char);
- addr stpcpy(addr,string);
- int strcasecmp(string, string);
- string strcat(string, string);
- string strchr(string,char);
- int strcoll(string,string);
--uint strlen(string);
-+ulong strlen(string);
- int strcmp(string,string);
- addr strcpy(addr,string);
- addr strdup(string);
- string strerror(int);
--int strncmp(string,string,int);
--addr strncpy(addr,string3,uint);
-+int strncmp(string,string,ulong);
-+addr strncpy(addr,string3,ulong);
- string strrchr(string,char);
- string strsep(addr,string);
--uint strspn(string,string);
--uint strcspn(string,string);
-+ulong strspn(string,string);
-+ulong strcspn(string,string);
- string strstr(string,string);
- string strtok(string, string);
-
-@@ -278,8 +299,8 @@
- int gettimeofday(addr, addr);
- addr gmtime(addr);
- addr localtime(addr);
--uint strftime(+string2,uint,string,addr);
--int time(addr);
-+ulong strftime(+string2,ulong,string,addr);
-+long time(addr);
-
- ; unistd.h
- void _exit(int);
-@@ -294,13 +315,13 @@
- int execv(string,addr);
- int fchdir(int);
- int fork(void);
--int ftruncate(int,uint);
--string2 getcwd(addr,uint);
--int getdomainname(+string2,int);
-+int ftruncate(int,ulong);
-+string2 getcwd(addr,ulong);
-+int getdomainname(+string2,ulong);
- int geteuid(void);
- int getegid(void);
- int getgid(void);
--int gethostname(+string2,int);
-+int gethostname(+string2,ulong);
- string getlogin(void);
- int getopt(int,addr,string);
- int getpid(void);
-@@ -312,25 +333,25 @@
- int isatty(int);
- int link(string,string);
- int mkdir(string,octal);
--int read(int, +string0, uint);
-+long read(int, +string0, ulong);
- int rmdir(string);
- int seteuid(uint);
- int setgid(int);
--int sethostname(+string2,int);
-+int sethostname(+string2,ulong);
- int setpgid(int,int);
- int setreuid(uint, uint);
- int setuid(int);
- uint sleep(uint);
- int symlink(string,string);
- int sync(void);
--int truncate(string,uint);
-+int truncate(string,ulong);
- string ttyname(int);
- int unlink(string);
- void usleep(uint);
--int write(int, string3, uint);
--addr sbrk(int);
-+long write(int, string3, ulong);
-+addr sbrk(long);
- int getpagesize(void);
--int lseek(int,int,int);
-+long lseek(int,long,int);
- int pipe(addr);
-
- ; utmp.h
-@@ -338,6 +359,9 @@
- addr getutent(void);
- void setutent(void);
-
-+; wchar.h
-+int fwide(addr, int);
-+
- ; sys/wait.h
- int wait(addr);
- int waitpid(int,addr,int);
-@@ -396,17 +420,17 @@
- void SYS_exit(int);
- void SYS_exit_group(int);
- int SYS_fork(void);
--int SYS_getcwd(+string2,uint);
-+int SYS_getcwd(+string2,ulong);
- int SYS_getpid(void);
--;addr SYS_mmap(addr,int,int,int,int,int);
--int SYS_munmap(addr,uint);
-+;addr SYS_mmap(addr,ulong,int,int,int,long);
-+int SYS_munmap(addr,ulong);
- int SYS_open(string,int,octal);
- int SYS_personality(uint);
--int SYS_read(int,+string0,uint);
-+long SYS_read(int,+string0,ulong);
- int SYS_stat(string,addr);
- octal SYS_umask(octal);
- int SYS_uname(addr);
--int SYS_write(int,string3,uint);
-+long SYS_write(int,string3,ulong);
- int SYS_sync(void);
- int SYS_setxattr(string,string,addr,uint,int);
- int SYS_lsetxattr(string,string,addr,uint,int);
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/ltrace.h ltrace-0.3.35/ltrace.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/ltrace.h 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/ltrace.h 2004-10-22 16:34:24.000000000 +1000
-@@ -28,6 +28,8 @@
- ARGTYPE_VOID,
- ARGTYPE_INT,
- ARGTYPE_UINT,
-+ ARGTYPE_LONG,
-+ ARGTYPE_ULONG,
- ARGTYPE_OCTAL,
- ARGTYPE_CHAR,
- ARGTYPE_ADDR,
-@@ -37,7 +39,9 @@
- ARGTYPE_STRING0, /* stringN: string up to (arg N) bytes */
- ARGTYPE_STRING1,
- ARGTYPE_STRING2,
-- ARGTYPE_STRING3
-+ ARGTYPE_STRING3,
-+ ARGTYPE_STRING4,
-+ ARGTYPE_STRING5
- };
-
- enum tof {
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/read_config_file.c ltrace-0.3.35/read_config_file.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/read_config_file.c 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/read_config_file.c 2004-10-22 16:34:24.000000000 +1000
-@@ -15,6 +15,8 @@
- * "void" ARGTYPE_VOID
- * "int" ARGTYPE_INT
- * "uint" ARGTYPE_UINT
-+ * "long" ARGTYPE_LONG
-+ * "ulong" ARGTYPE_ULONG
- * "octal" ARGTYPE_OCTAL
- * "char" ARGTYPE_CHAR
- * "string" ARGTYPE_STRING
-@@ -31,6 +33,8 @@
- { "void", ARGTYPE_VOID },
- { "int", ARGTYPE_INT },
- { "uint", ARGTYPE_UINT },
-+ { "long", ARGTYPE_LONG },
-+ { "ulong", ARGTYPE_ULONG },
- { "octal", ARGTYPE_OCTAL },
- { "char", ARGTYPE_CHAR },
- { "addr", ARGTYPE_ADDR },
-@@ -41,6 +45,8 @@
- { "string1",ARGTYPE_STRING1 },
- { "string2",ARGTYPE_STRING2 },
- { "string3",ARGTYPE_STRING3 },
-+ { "string4",ARGTYPE_STRING4 },
-+ { "string5",ARGTYPE_STRING5 },
- { NULL, ARGTYPE_UNKNOWN } /* Must finish with NULL */
- };
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/Makefile ltrace-0.3.35/sysdeps/linux-gnu/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/Makefile 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/Makefile 2004-10-22 16:34:24.000000000 +1000
-@@ -16,10 +16,10 @@
- cp $(ARCH)/syscallent.h syscallent.h
-
- ../sysdep.o: os.o $(ARCH)/arch.o
-- $(LD) -r -o ../sysdep.o os.o $(ARCH)/arch.o
-+ $(CC) -nostdlib -r -o ../sysdep.o os.o $(ARCH)/arch.o
-
- os.o: $(OBJ)
-- $(LD) -r -o os.o $(OBJ)
-+ $(CC) -nostdlib -r -o os.o $(OBJ)
-
- $(ARCH)/arch.o: dummy
- $(MAKE) -C $(ARCH)
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/alpha/Makefile ltrace-0.3.35/sysdeps/linux-gnu/alpha/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/alpha/Makefile 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/alpha/Makefile 2004-10-22 16:34:24.000000000 +1000
-@@ -3,7 +3,7 @@
- all: arch.o
-
- arch.o: $(OBJ)
-- $(LD) -r -o arch.o $(OBJ)
-+ $(CC) -nostdlib -r -o arch.o $(OBJ)
-
- clean:
- $(RM) $(OBJ) arch.o
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/arm/Makefile ltrace-0.3.35/sysdeps/linux-gnu/arm/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/arm/Makefile 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/arm/Makefile 2004-10-22 16:34:24.000000000 +1000
-@@ -3,7 +3,7 @@
- all: arch.o
-
- arch.o: $(OBJ) arch.h
-- $(LD) -r -o arch.o $(OBJ)
-+ $(CC) -nostdlib -r -o arch.o $(OBJ)
-
- clean:
- $(RM) $(OBJ) arch.o
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/i386/Makefile ltrace-0.3.35/sysdeps/linux-gnu/i386/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/i386/Makefile 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/i386/Makefile 2004-10-22 16:34:24.000000000 +1000
-@@ -3,7 +3,7 @@
- all: arch.o
-
- arch.o: $(OBJ)
-- $(LD) -r -o arch.o $(OBJ)
-+ $(CC) -nostdlib -r -o arch.o $(OBJ)
-
- clean:
- $(RM) $(OBJ) arch.o
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/i386/syscallent.h ltrace-0.3.35/sysdeps/linux-gnu/i386/syscallent.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/i386/syscallent.h 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/i386/syscallent.h 2004-10-22 16:34:24.000000000 +1000
-@@ -1,4 +1,4 @@
-- "0", /* 0 */
-+ "restart_syscall", /* 0 */
- "exit", /* 1 */
- "fork", /* 2 */
- "read", /* 3 */
-@@ -178,8 +178,8 @@
- "rt_sigtimedwait", /* 177 */
- "rt_sigqueueinfo", /* 178 */
- "rt_sigsuspend", /* 179 */
-- "pread", /* 180 */
-- "pwrite", /* 181 */
-+ "pread64", /* 180 */
-+ "pwrite64", /* 181 */
- "chown", /* 182 */
- "getcwd", /* 183 */
- "capget", /* 184 */
-@@ -221,7 +221,7 @@
- "getdents64", /* 220 */
- "fcntl64", /* 221 */
- "222", /* 222 */
-- "security", /* 223 */
-+ "223", /* 223 */
- "gettid", /* 224 */
- "readahead", /* 225 */
- "setxattr", /* 226 */
-@@ -248,6 +248,36 @@
- "io_getevents", /* 247 */
- "io_submit", /* 248 */
- "io_cancel", /* 249 */
-- "alloc_hugepages", /* 250 */
-- "free_hugepages", /* 251 */
-+ "fadvise64", /* 250 */
-+ "251", /* 251 */
- "exit_group", /* 252 */
-+ "lookup_dcookie", /* 253 */
-+ "epoll_create", /* 254 */
-+ "epoll_ctl", /* 255 */
-+ "epoll_wait", /* 256 */
-+ "remap_file_pages", /* 257 */
-+ "set_tid_address", /* 258 */
-+ "timer_create", /* 259 */
-+ "timer_settime", /* 260 */
-+ "timer_gettime", /* 261 */
-+ "timer_getoverrun", /* 262 */
-+ "timer_delete", /* 263 */
-+ "clock_settime", /* 264 */
-+ "clock_gettime", /* 265 */
-+ "clock_getres", /* 266 */
-+ "clock_nanosleep", /* 267 */
-+ "statfs64", /* 268 */
-+ "fstatfs64", /* 269 */
-+ "tgkill", /* 270 */
-+ "utimes", /* 271 */
-+ "fadvise64_64", /* 272 */
-+ "vserver", /* 273 */
-+ "mbind", /* 274 */
-+ "get_mempolicy", /* 275 */
-+ "set_mempolicy", /* 276 */
-+ "mq_open", /* 277 */
-+ "mq_unlink", /* 278 */
-+ "mq_timedsend", /* 279 */
-+ "mq_timedreceive", /* 280 */
-+ "mq_notify", /* 281 */
-+ "mq_getsetattr", /* 282 */
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/m68k/Makefile ltrace-0.3.35/sysdeps/linux-gnu/m68k/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/m68k/Makefile 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/m68k/Makefile 2004-10-22 16:34:24.000000000 +1000
-@@ -3,7 +3,7 @@
- all: arch.o
-
- arch.o: $(OBJ)
-- $(LD) -r -o arch.o $(OBJ)
-+ $(CC) -nostdlib -r -o arch.o $(OBJ)
-
- clean:
- $(RM) $(OBJ) arch.o
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/ppc/Makefile ltrace-0.3.35/sysdeps/linux-gnu/ppc/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/ppc/Makefile 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/ppc/Makefile 2004-10-22 16:34:24.000000000 +1000
-@@ -3,7 +3,7 @@
- all: arch.o
-
- arch.o: $(OBJ)
-- $(LD) -r -o arch.o $(OBJ)
-+ $(CC) -nostdlib -r -o arch.o $(OBJ)
-
- clean:
- $(RM) $(OBJ) arch.o
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/ppc/syscallent.h ltrace-0.3.35/sysdeps/linux-gnu/ppc/syscallent.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/ppc/syscallent.h 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/ppc/syscallent.h 2004-10-22 16:34:24.000000000 +1000
-@@ -222,7 +222,7 @@
- "futex", /* 221 */
- "sched_setaffinity", /* 222 */
- "sched_getaffinity", /* 223 */
-- "security", /* 224 */
-+ "224", /* 224 */
- "tuxcall", /* 225 */
- "sendfile64", /* 226 */
- "io_setup", /* 227 */
-@@ -230,3 +230,33 @@
- "io_getevents", /* 229 */
- "io_submit", /* 230 */
- "io_cancel", /* 231 */
-+ "set_tid_address", /* 232 */
-+ "fadvise64", /* 233 */
-+ "exit_group", /* 234 */
-+ "lookup_dcookie", /* 235 */
-+ "epoll_create", /* 236 */
-+ "epoll_ctl", /* 237 */
-+ "epoll_wait", /* 238 */
-+ "remap_file_pages", /* 239 */
-+ "timer_create", /* 240 */
-+ "timer_settime", /* 241 */
-+ "timer_gettime", /* 242 */
-+ "timer_getoverrun", /* 243 */
-+ "timer_delete", /* 244 */
-+ "clock_settime", /* 245 */
-+ "clock_gettime", /* 246 */
-+ "clock_getres", /* 247 */
-+ "clock_nanosleep", /* 248 */
-+ "swapcontext", /* 249 */
-+ "tgkill", /* 250 */
-+ "utimes", /* 251 */
-+ "statfs64", /* 252 */
-+ "fstatfs64", /* 253 */
-+ "fadvise64_64", /* 254 */
-+ "rtas", /* 255 */
-+ "mq_open", /* 262 */
-+ "mq_unlink", /* 263 */
-+ "mq_timedsend", /* 264 */
-+ "mq_timedreceive", /* 265 */
-+ "mq_notify", /* 266 */
-+ "mq_getsetattr", /* 267 */
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/s390/Makefile ltrace-0.3.35/sysdeps/linux-gnu/s390/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/s390/Makefile 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/s390/Makefile 2004-10-22 16:34:24.000000000 +1000
-@@ -7,7 +7,7 @@
- all: arch.o
-
- arch.o: $(OBJ)
-- $(LD) -r -o arch.o $(OBJ)
-+ $(CC) -nostdlib -r -o arch.o $(OBJ)
-
- clean:
- $(RM) $(OBJ) arch.o
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/s390/syscallent.h ltrace-0.3.35/sysdeps/linux-gnu/s390/syscallent.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/s390/syscallent.h 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/s390/syscallent.h 2004-10-22 16:34:24.000000000 +1000
-@@ -221,7 +221,7 @@
- "getdents64", /* 220 */
- "fcntl64", /* 221 */
- "readahead", /* 222 */
-- "223", /* 223 */
-+ "sendfile64", /* 223 */
- "setxattr", /* 224 */
- "lsetxattr", /* 225 */
- "fsetxattr", /* 226 */
-@@ -236,3 +236,42 @@
- "fremovexattr", /* 235 */
- "gettid", /* 236 */
- "tkill", /* 237 */
-+ "futex", /* 238 */
-+ "sched_setaffinity", /* 239 */
-+ "sched_getaffinity", /* 240 */
-+ "241", /* 241 */
-+ "242", /* 242 */
-+ "io_setup", /* 243 */
-+ "io_destroy", /* 244 */
-+ "io_getevents", /* 245 */
-+ "io_submit", /* 246 */
-+ "io_cancel", /* 247 */
-+ "exit_group", /* 248 */
-+ "epoll_create", /* 249 */
-+ "epoll_ctl", /* 250 */
-+ "epoll_wait", /* 251 */
-+ "set_tid_address", /* 252 */
-+ "fadvise64", /* 253 */
-+ "timer_create", /* 254 */
-+ "timer_settime", /* 255 */
-+ "timer_gettime", /* 256 */
-+ "timer_getoverrun", /* 257 */
-+ "timer_delete", /* 258 */
-+ "clock_settime", /* 259 */
-+ "clock_gettime", /* 260 */
-+ "clock_getres", /* 261 */
-+ "clock_nanosleep", /* 262 */
-+ "263", /* 263 */
-+ "fadvise64_64", /* 264 */
-+ "statfs64", /* 265 */
-+ "fstatfs64", /* 266 */
-+ "267", /* 267 */
-+ "268", /* 268 */
-+ "269", /* 269 */
-+ "270", /* 270 */
-+ "mq_open", /* 271 */
-+ "mq_unlink", /* 272 */
-+ "mq_timedsend", /* 273 */
-+ "mq_timedreceive", /* 274 */
-+ "mq_notify", /* 275 */
-+ "mq_getsetattr", /* 276 */
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/sparc/Makefile ltrace-0.3.35/sysdeps/linux-gnu/sparc/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/sparc/Makefile 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/sparc/Makefile 2004-10-22 16:34:24.000000000 +1000
-@@ -3,7 +3,7 @@
- all: arch.o
-
- arch.o: $(OBJ)
-- $(LD) -r -o arch.o $(OBJ)
-+ $(CC) -nostdlib -r -o arch.o $(OBJ)
-
- clean:
- $(RM) $(OBJ) arch.o
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/Makefile ltrace-0.3.35/sysdeps/linux-gnu/x86_64/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/Makefile 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/x86_64/Makefile 2004-10-22 16:34:24.000000000 +1000
-@@ -3,7 +3,7 @@
- all: arch.o
-
- arch.o: $(OBJ)
-- $(LD) -r -o arch.o $(OBJ)
-+ $(CC) -nostdlib -r -o arch.o $(OBJ)
-
- clean:
- $(RM) $(OBJ) arch.o
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/syscallent.h ltrace-0.3.35/sysdeps/linux-gnu/x86_64/syscallent.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/syscallent.h 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/x86_64/syscallent.h 2004-10-22 16:34:24.000000000 +1000
-@@ -201,3 +201,46 @@
- "tkill", /* 200 */
- "time", /* 201 */
- "futex", /* 202 */
-+ "sched_setaffinity", /* 203 */
-+ "sched_getaffinity", /* 204 */
-+ "set_thread_area", /* 205 */
-+ "io_setup", /* 206 */
-+ "io_destroy", /* 207 */
-+ "io_getevents", /* 208 */
-+ "io_submit", /* 209 */
-+ "io_cancel", /* 210 */
-+ "get_thread_area", /* 211 */
-+ "lookup_dcookie", /* 212 */
-+ "epoll_create", /* 213 */
-+ "epoll_ctl", /* 214 */
-+ "epoll_wait", /* 215 */
-+ "remap_file_pages", /* 216 */
-+ "getdents64", /* 217 */
-+ "set_tid_address", /* 218 */
-+ "restart_syscall", /* 219 */
-+ "semtimedop", /* 220 */
-+ "fadvise64", /* 221 */
-+ "timer_create", /* 222 */
-+ "timer_settime", /* 223 */
-+ "timer_gettime", /* 224 */
-+ "timer_getoverrun", /* 225 */
-+ "timer_delete", /* 226 */
-+ "clock_settime", /* 227 */
-+ "clock_gettime", /* 228 */
-+ "clock_getres", /* 229 */
-+ "clock_nanosleep", /* 230 */
-+ "exit_group", /* 231 */
-+ "epoll_wait", /* 232 */
-+ "epoll_ctl", /* 233 */
-+ "tgkill", /* 234 */
-+ "utimes", /* 235 */
-+ "vserver", /* 236 */
-+ "mbind", /* 237 */
-+ "set_mempolicy", /* 238 */
-+ "get_mempolicy", /* 239 */
-+ "mq_open", /* 240 */
-+ "mq_unlink", /* 241 */
-+ "mq_timedsend", /* 242 */
-+ "mq_timedreceive", /* 243 */
-+ "mq_notify", /* 244 */
-+ "mq_getsetattr", /* 245 */
diff --git a/debian/patches/00list b/debian/patches/00list
deleted file mode 100644
index 018f0f7..0000000
--- a/debian/patches/00list
+++ /dev/null
@@ -1,4 +0,0 @@
-0064bit
-01elf-rewrite
-02demangle
-03syscallent-update
diff --git a/debian/patches/01elf-rewrite.dpatch b/debian/patches/01elf-rewrite.dpatch
deleted file mode 100755
index 51315f0..0000000
--- a/debian/patches/01elf-rewrite.dpatch
+++ /dev/null
@@ -1,2742 +0,0 @@
-#! /bin/sh -e
-## 01elf-rewrite.dpatch by <apollock@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: No description.
-
-if [ $# -lt 1 ]; then
- echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
- exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}"
-
-case "$1" in
- -patch) patch -p1 ${patch_opts} < $0;;
- -unpatch) patch -R -p1 ${patch_opts} < $0;;
- *)
- echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
- exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/aclocal.m4 ltrace-0.3.35/aclocal.m4
---- /home/apollock/debian/ltrace/ltrace-0.3.35/aclocal.m4 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/aclocal.m4 2004-10-22 21:28:41.000000000 +1000
-@@ -0,0 +1,833 @@
-+dnl aclocal.m4t generated automatically by aclocal 1.4-p6
-+
-+dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
-+dnl This file is free software; the Free Software Foundation
-+dnl gives unlimited permission to copy and/or distribute it,
-+dnl with or without modifications, as long as this notice is preserved.
-+
-+dnl This program is distributed in the hope that it will be useful,
-+dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-+dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-+dnl PARTICULAR PURPOSE.
-+
-+# lib-prefix.m4 serial 3 (gettext-0.13)
-+dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
-+dnl This file is free software, distributed under the terms of the GNU
-+dnl General Public License. As a special exception to the GNU General
-+dnl Public License, this file may be distributed as part of a program
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+
-+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
-+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
-+dnl require excessive bracketing.
-+ifdef([AC_HELP_STRING],
-+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
-+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
-+
-+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
-+dnl to access previously installed libraries. The basic assumption is that
-+dnl a user will want packages to use other packages he previously installed
-+dnl with the same --prefix option.
-+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
-+dnl libraries, but is otherwise very convenient.
-+AC_DEFUN([AC_LIB_PREFIX],
-+[
-+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
-+ AC_REQUIRE([AC_PROG_CC])
-+ AC_REQUIRE([AC_CANONICAL_HOST])
-+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-+ dnl By default, look in $includedir and $libdir.
-+ use_additional=yes
-+ AC_LIB_WITH_FINAL_PREFIX([
-+ eval additional_includedir=\"$includedir\"
-+ eval additional_libdir=\"$libdir\"
-+ ])
-+ AC_LIB_ARG_WITH([lib-prefix],
-+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
-+ --without-lib-prefix don't search for libraries in includedir and libdir],
-+[
-+ if test "X$withval" = "Xno"; then
-+ use_additional=no
-+ else
-+ if test "X$withval" = "X"; then
-+ AC_LIB_WITH_FINAL_PREFIX([
-+ eval additional_includedir=\"$includedir\"
-+ eval additional_libdir=\"$libdir\"
-+ ])
-+ else
-+ additional_includedir="$withval/include"
-+ additional_libdir="$withval/lib"
-+ fi
-+ fi
-+])
-+ if test $use_additional = yes; then
-+ dnl Potentially add $additional_includedir to $CPPFLAGS.
-+ dnl But don't add it
-+ dnl 1. if it's the standard /usr/include,
-+ dnl 2. if it's already present in $CPPFLAGS,
-+ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
-+ dnl 4. if it doesn't exist as a directory.
-+ if test "X$additional_includedir" != "X/usr/include"; then
-+ haveit=
-+ for x in $CPPFLAGS; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-I$additional_includedir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test "X$additional_includedir" = "X/usr/local/include"; then
-+ if test -n "$GCC"; then
-+ case $host_os in
-+ linux*) haveit=yes;;
-+ esac
-+ fi
-+ fi
-+ if test -z "$haveit"; then
-+ if test -d "$additional_includedir"; then
-+ dnl Really add $additional_includedir to $CPPFLAGS.
-+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
-+ fi
-+ fi
-+ fi
-+ fi
-+ dnl Potentially add $additional_libdir to $LDFLAGS.
-+ dnl But don't add it
-+ dnl 1. if it's the standard /usr/lib,
-+ dnl 2. if it's already present in $LDFLAGS,
-+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
-+ dnl 4. if it doesn't exist as a directory.
-+ if test "X$additional_libdir" != "X/usr/lib"; then
-+ haveit=
-+ for x in $LDFLAGS; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-L$additional_libdir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test "X$additional_libdir" = "X/usr/local/lib"; then
-+ if test -n "$GCC"; then
-+ case $host_os in
-+ linux*) haveit=yes;;
-+ esac
-+ fi
-+ fi
-+ if test -z "$haveit"; then
-+ if test -d "$additional_libdir"; then
-+ dnl Really add $additional_libdir to $LDFLAGS.
-+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
-+ fi
-+ fi
-+ fi
-+ fi
-+ fi
-+])
-+
-+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
-+dnl acl_final_exec_prefix, containing the values to which $prefix and
-+dnl $exec_prefix will expand at the end of the configure script.
-+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
-+[
-+ dnl Unfortunately, prefix and exec_prefix get only finally determined
-+ dnl at the end of configure.
-+ if test "X$prefix" = "XNONE"; then
-+ acl_final_prefix="$ac_default_prefix"
-+ else
-+ acl_final_prefix="$prefix"
-+ fi
-+ if test "X$exec_prefix" = "XNONE"; then
-+ acl_final_exec_prefix='${prefix}'
-+ else
-+ acl_final_exec_prefix="$exec_prefix"
-+ fi
-+ acl_save_prefix="$prefix"
-+ prefix="$acl_final_prefix"
-+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
-+ prefix="$acl_save_prefix"
-+])
-+
-+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
-+dnl variables prefix and exec_prefix bound to the values they will have
-+dnl at the end of the configure script.
-+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
-+[
-+ acl_save_prefix="$prefix"
-+ prefix="$acl_final_prefix"
-+ acl_save_exec_prefix="$exec_prefix"
-+ exec_prefix="$acl_final_exec_prefix"
-+ $1
-+ exec_prefix="$acl_save_exec_prefix"
-+ prefix="$acl_save_prefix"
-+])
-+
-+# lib-link.m4 serial 4 (gettext-0.12)
-+dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
-+dnl This file is free software, distributed under the terms of the GNU
-+dnl General Public License. As a special exception to the GNU General
-+dnl Public License, this file may be distributed as part of a program
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl From Bruno Haible.
-+
-+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
-+dnl the libraries corresponding to explicit and implicit dependencies.
-+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
-+dnl augments the CPPFLAGS variable.
-+AC_DEFUN([AC_LIB_LINKFLAGS],
-+[
-+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-+ AC_REQUIRE([AC_LIB_RPATH])
-+ define([Name],[translit([$1],[./-], [___])])
-+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
-+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
-+ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
-+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
-+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
-+ ])
-+ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
-+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
-+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
-+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-+ AC_SUBST([LIB]NAME)
-+ AC_SUBST([LTLIB]NAME)
-+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
-+ dnl results of this search when this library appears as a dependency.
-+ HAVE_LIB[]NAME=yes
-+ undefine([Name])
-+ undefine([NAME])
-+])
-+
-+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
-+dnl searches for libname and the libraries corresponding to explicit and
-+dnl implicit dependencies, together with the specified include files and
-+dnl the ability to compile and link the specified testcode. If found, it
-+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
-+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
-+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
-+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
-+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
-+[
-+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
-+ AC_REQUIRE([AC_LIB_RPATH])
-+ define([Name],[translit([$1],[./-], [___])])
-+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-+
-+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
-+ dnl accordingly.
-+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
-+
-+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
-+ dnl because if the user has installed lib[]Name and not disabled its use
-+ dnl via --without-lib[]Name-prefix, he wants to use it.
-+ ac_save_CPPFLAGS="$CPPFLAGS"
-+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-+
-+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
-+ ac_save_LIBS="$LIBS"
-+ LIBS="$LIBS $LIB[]NAME"
-+ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
-+ LIBS="$ac_save_LIBS"
-+ ])
-+ if test "$ac_cv_lib[]Name" = yes; then
-+ HAVE_LIB[]NAME=yes
-+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
-+ AC_MSG_CHECKING([how to link with lib[]$1])
-+ AC_MSG_RESULT([$LIB[]NAME])
-+ else
-+ HAVE_LIB[]NAME=no
-+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
-+ dnl $INC[]NAME either.
-+ CPPFLAGS="$ac_save_CPPFLAGS"
-+ LIB[]NAME=
-+ LTLIB[]NAME=
-+ fi
-+ AC_SUBST([HAVE_LIB]NAME)
-+ AC_SUBST([LIB]NAME)
-+ AC_SUBST([LTLIB]NAME)
-+ undefine([Name])
-+ undefine([NAME])
-+])
-+
-+dnl Determine the platform dependent parameters needed to use rpath:
-+dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
-+dnl hardcode_direct, hardcode_minus_L.
-+AC_DEFUN([AC_LIB_RPATH],
-+[
-+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
-+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
-+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
-+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
-+ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
-+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
-+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
-+ . ./conftest.sh
-+ rm -f ./conftest.sh
-+ acl_cv_rpath=done
-+ ])
-+ wl="$acl_cv_wl"
-+ libext="$acl_cv_libext"
-+ shlibext="$acl_cv_shlibext"
-+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
-+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
-+ hardcode_direct="$acl_cv_hardcode_direct"
-+ hardcode_minus_L="$acl_cv_hardcode_minus_L"
-+ dnl Determine whether the user wants rpath handling at all.
-+ AC_ARG_ENABLE(rpath,
-+ [ --disable-rpath do not hardcode runtime library paths],
-+ :, enable_rpath=yes)
-+])
-+
-+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
-+dnl the libraries corresponding to explicit and implicit dependencies.
-+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
-+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
-+[
-+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
-+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-+ dnl By default, look in $includedir and $libdir.
-+ use_additional=yes
-+ AC_LIB_WITH_FINAL_PREFIX([
-+ eval additional_includedir=\"$includedir\"
-+ eval additional_libdir=\"$libdir\"
-+ ])
-+ AC_LIB_ARG_WITH([lib$1-prefix],
-+[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
-+ --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
-+[
-+ if test "X$withval" = "Xno"; then
-+ use_additional=no
-+ else
-+ if test "X$withval" = "X"; then
-+ AC_LIB_WITH_FINAL_PREFIX([
-+ eval additional_includedir=\"$includedir\"
-+ eval additional_libdir=\"$libdir\"
-+ ])
-+ else
-+ additional_includedir="$withval/include"
-+ additional_libdir="$withval/lib"
-+ fi
-+ fi
-+])
-+ dnl Search the library and its dependencies in $additional_libdir and
-+ dnl $LDFLAGS. Using breadth-first-seach.
-+ LIB[]NAME=
-+ LTLIB[]NAME=
-+ INC[]NAME=
-+ rpathdirs=
-+ ltrpathdirs=
-+ names_already_handled=
-+ names_next_round='$1 $2'
-+ while test -n "$names_next_round"; do
-+ names_this_round="$names_next_round"
-+ names_next_round=
-+ for name in $names_this_round; do
-+ already_handled=
-+ for n in $names_already_handled; do
-+ if test "$n" = "$name"; then
-+ already_handled=yes
-+ break
-+ fi
-+ done
-+ if test -z "$already_handled"; then
-+ names_already_handled="$names_already_handled $name"
-+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
-+ dnl or AC_LIB_HAVE_LINKFLAGS call.
-+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
-+ eval value=\"\$HAVE_LIB$uppername\"
-+ if test -n "$value"; then
-+ if test "$value" = yes; then
-+ eval value=\"\$LIB$uppername\"
-+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
-+ eval value=\"\$LTLIB$uppername\"
-+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
-+ else
-+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
-+ dnl that this library doesn't exist. So just drop it.
-+ :
-+ fi
-+ else
-+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
-+ dnl and the already constructed $LIBNAME/$LTLIBNAME.
-+ found_dir=
-+ found_la=
-+ found_so=
-+ found_a=
-+ if test $use_additional = yes; then
-+ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
-+ found_dir="$additional_libdir"
-+ found_so="$additional_libdir/lib$name.$shlibext"
-+ if test -f "$additional_libdir/lib$name.la"; then
-+ found_la="$additional_libdir/lib$name.la"
-+ fi
-+ else
-+ if test -f "$additional_libdir/lib$name.$libext"; then
-+ found_dir="$additional_libdir"
-+ found_a="$additional_libdir/lib$name.$libext"
-+ if test -f "$additional_libdir/lib$name.la"; then
-+ found_la="$additional_libdir/lib$name.la"
-+ fi
-+ fi
-+ fi
-+ fi
-+ if test "X$found_dir" = "X"; then
-+ for x in $LDFLAGS $LTLIB[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ case "$x" in
-+ -L*)
-+ dir=`echo "X$x" | sed -e 's/^X-L//'`
-+ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
-+ found_dir="$dir"
-+ found_so="$dir/lib$name.$shlibext"
-+ if test -f "$dir/lib$name.la"; then
-+ found_la="$dir/lib$name.la"
-+ fi
-+ else
-+ if test -f "$dir/lib$name.$libext"; then
-+ found_dir="$dir"
-+ found_a="$dir/lib$name.$libext"
-+ if test -f "$dir/lib$name.la"; then
-+ found_la="$dir/lib$name.la"
-+ fi
-+ fi
-+ fi
-+ ;;
-+ esac
-+ if test "X$found_dir" != "X"; then
-+ break
-+ fi
-+ done
-+ fi
-+ if test "X$found_dir" != "X"; then
-+ dnl Found the library.
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
-+ if test "X$found_so" != "X"; then
-+ dnl Linking with a shared library. We attempt to hardcode its
-+ dnl directory into the executable's runpath, unless it's the
-+ dnl standard /usr/lib.
-+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
-+ dnl No hardcoding is needed.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-+ else
-+ dnl Use an explicit option to hardcode DIR into the resulting
-+ dnl binary.
-+ dnl Potentially add DIR to ltrpathdirs.
-+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-+ haveit=
-+ for x in $ltrpathdirs; do
-+ if test "X$x" = "X$found_dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ ltrpathdirs="$ltrpathdirs $found_dir"
-+ fi
-+ dnl The hardcoding into $LIBNAME is system dependent.
-+ if test "$hardcode_direct" = yes; then
-+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
-+ dnl resulting binary.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-+ else
-+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
-+ dnl Use an explicit option to hardcode DIR into the resulting
-+ dnl binary.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-+ dnl Potentially add DIR to rpathdirs.
-+ dnl The rpathdirs will be appended to $LIBNAME at the end.
-+ haveit=
-+ for x in $rpathdirs; do
-+ if test "X$x" = "X$found_dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ rpathdirs="$rpathdirs $found_dir"
-+ fi
-+ else
-+ dnl Rely on "-L$found_dir".
-+ dnl But don't add it if it's already contained in the LDFLAGS
-+ dnl or the already constructed $LIBNAME
-+ haveit=
-+ for x in $LDFLAGS $LIB[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-L$found_dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
-+ fi
-+ if test "$hardcode_minus_L" != no; then
-+ dnl FIXME: Not sure whether we should use
-+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-+ dnl here.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
-+ else
-+ dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
-+ dnl here, because this doesn't fit in flags passed to the
-+ dnl compiler. So give up. No hardcoding. This affects only
-+ dnl very old systems.
-+ dnl FIXME: Not sure whether we should use
-+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
-+ dnl here.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-+ fi
-+ fi
-+ fi
-+ fi
-+ else
-+ if test "X$found_a" != "X"; then
-+ dnl Linking with a static library.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
-+ else
-+ dnl We shouldn't come here, but anyway it's good to have a
-+ dnl fallback.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
-+ fi
-+ fi
-+ dnl Assume the include files are nearby.
-+ additional_includedir=
-+ case "$found_dir" in
-+ */lib | */lib/)
-+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
-+ additional_includedir="$basedir/include"
-+ ;;
-+ esac
-+ if test "X$additional_includedir" != "X"; then
-+ dnl Potentially add $additional_includedir to $INCNAME.
-+ dnl But don't add it
-+ dnl 1. if it's the standard /usr/include,
-+ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
-+ dnl 3. if it's already present in $CPPFLAGS or the already
-+ dnl constructed $INCNAME,
-+ dnl 4. if it doesn't exist as a directory.
-+ if test "X$additional_includedir" != "X/usr/include"; then
-+ haveit=
-+ if test "X$additional_includedir" = "X/usr/local/include"; then
-+ if test -n "$GCC"; then
-+ case $host_os in
-+ linux*) haveit=yes;;
-+ esac
-+ fi
-+ fi
-+ if test -z "$haveit"; then
-+ for x in $CPPFLAGS $INC[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-I$additional_includedir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test -d "$additional_includedir"; then
-+ dnl Really add $additional_includedir to $INCNAME.
-+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
-+ fi
-+ fi
-+ fi
-+ fi
-+ fi
-+ dnl Look for dependencies.
-+ if test -n "$found_la"; then
-+ dnl Read the .la file. It defines the variables
-+ dnl dlname, library_names, old_library, dependency_libs, current,
-+ dnl age, revision, installed, dlopen, dlpreopen, libdir.
-+ save_libdir="$libdir"
-+ case "$found_la" in
-+ */* | *\\*) . "$found_la" ;;
-+ *) . "./$found_la" ;;
-+ esac
-+ libdir="$save_libdir"
-+ dnl We use only dependency_libs.
-+ for dep in $dependency_libs; do
-+ case "$dep" in
-+ -L*)
-+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
-+ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
-+ dnl But don't add it
-+ dnl 1. if it's the standard /usr/lib,
-+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
-+ dnl 3. if it's already present in $LDFLAGS or the already
-+ dnl constructed $LIBNAME,
-+ dnl 4. if it doesn't exist as a directory.
-+ if test "X$additional_libdir" != "X/usr/lib"; then
-+ haveit=
-+ if test "X$additional_libdir" = "X/usr/local/lib"; then
-+ if test -n "$GCC"; then
-+ case $host_os in
-+ linux*) haveit=yes;;
-+ esac
-+ fi
-+ fi
-+ if test -z "$haveit"; then
-+ haveit=
-+ for x in $LDFLAGS $LIB[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-L$additional_libdir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test -d "$additional_libdir"; then
-+ dnl Really add $additional_libdir to $LIBNAME.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
-+ fi
-+ fi
-+ haveit=
-+ for x in $LDFLAGS $LTLIB[]NAME; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X-L$additional_libdir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ if test -d "$additional_libdir"; then
-+ dnl Really add $additional_libdir to $LTLIBNAME.
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
-+ fi
-+ fi
-+ fi
-+ fi
-+ ;;
-+ -R*)
-+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
-+ if test "$enable_rpath" != no; then
-+ dnl Potentially add DIR to rpathdirs.
-+ dnl The rpathdirs will be appended to $LIBNAME at the end.
-+ haveit=
-+ for x in $rpathdirs; do
-+ if test "X$x" = "X$dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ rpathdirs="$rpathdirs $dir"
-+ fi
-+ dnl Potentially add DIR to ltrpathdirs.
-+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
-+ haveit=
-+ for x in $ltrpathdirs; do
-+ if test "X$x" = "X$dir"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ ltrpathdirs="$ltrpathdirs $dir"
-+ fi
-+ fi
-+ ;;
-+ -l*)
-+ dnl Handle this in the next round.
-+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
-+ ;;
-+ *.la)
-+ dnl Handle this in the next round. Throw away the .la's
-+ dnl directory; it is already contained in a preceding -L
-+ dnl option.
-+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
-+ ;;
-+ *)
-+ dnl Most likely an immediate library name.
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
-+ ;;
-+ esac
-+ done
-+ fi
-+ else
-+ dnl Didn't find the library; assume it is in the system directories
-+ dnl known to the linker and runtime loader. (All the system
-+ dnl directories known to the linker should also be known to the
-+ dnl runtime loader, otherwise the system is severely misconfigured.)
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
-+ fi
-+ fi
-+ fi
-+ done
-+ done
-+ if test "X$rpathdirs" != "X"; then
-+ if test -n "$hardcode_libdir_separator"; then
-+ dnl Weird platform: only the last -rpath option counts, the user must
-+ dnl pass all path elements in one option. We can arrange that for a
-+ dnl single library, but not when more than one $LIBNAMEs are used.
-+ alldirs=
-+ for found_dir in $rpathdirs; do
-+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
-+ done
-+ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
-+ acl_save_libdir="$libdir"
-+ libdir="$alldirs"
-+ eval flag=\"$hardcode_libdir_flag_spec\"
-+ libdir="$acl_save_libdir"
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-+ else
-+ dnl The -rpath options are cumulative.
-+ for found_dir in $rpathdirs; do
-+ acl_save_libdir="$libdir"
-+ libdir="$found_dir"
-+ eval flag=\"$hardcode_libdir_flag_spec\"
-+ libdir="$acl_save_libdir"
-+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
-+ done
-+ fi
-+ fi
-+ if test "X$ltrpathdirs" != "X"; then
-+ dnl When using libtool, the option that works for both libraries and
-+ dnl executables is -R. The -R options are cumulative.
-+ for found_dir in $ltrpathdirs; do
-+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
-+ done
-+ fi
-+])
-+
-+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
-+dnl unless already present in VAR.
-+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
-+dnl contains two or three consecutive elements that belong together.
-+AC_DEFUN([AC_LIB_APPENDTOVAR],
-+[
-+ for element in [$2]; do
-+ haveit=
-+ for x in $[$1]; do
-+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
-+ if test "X$x" = "X$element"; then
-+ haveit=yes
-+ break
-+ fi
-+ done
-+ if test -z "$haveit"; then
-+ [$1]="${[$1]}${[$1]:+ }$element"
-+ fi
-+ done
-+])
-+
-+# lib-ld.m4 serial 3 (gettext-0.13)
-+dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
-+dnl This file is free software, distributed under the terms of the GNU
-+dnl General Public License. As a special exception to the GNU General
-+dnl Public License, this file may be distributed as part of a program
-+dnl that contains a configuration script generated by Autoconf, under
-+dnl the same distribution terms as the rest of that program.
-+
-+dnl Subroutines of libtool.m4,
-+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
-+dnl with libtool.m4.
-+
-+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
-+AC_DEFUN([AC_LIB_PROG_LD_GNU],
-+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
-+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-+case `$LD -v 2>&1 </dev/null` in
-+*GNU* | *'with BFD'*)
-+ acl_cv_prog_gnu_ld=yes ;;
-+*)
-+ acl_cv_prog_gnu_ld=no ;;
-+esac])
-+with_gnu_ld=$acl_cv_prog_gnu_ld
-+])
-+
-+dnl From libtool-1.4. Sets the variable LD.
-+AC_DEFUN([AC_LIB_PROG_LD],
-+[AC_ARG_WITH(gnu-ld,
-+[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-+AC_REQUIRE([AC_PROG_CC])dnl
-+AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+# Prepare PATH_SEPARATOR.
-+# The user is always right.
-+if test "${PATH_SEPARATOR+set}" != set; then
-+ echo "#! /bin/sh" >conf$$.sh
-+ echo "exit 0" >>conf$$.sh
-+ chmod +x conf$$.sh
-+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-+ PATH_SEPARATOR=';'
-+ else
-+ PATH_SEPARATOR=:
-+ fi
-+ rm -f conf$$.sh
-+fi
-+ac_prog=ld
-+if test "$GCC" = yes; then
-+ # Check if gcc -print-prog-name=ld gives a path.
-+ AC_MSG_CHECKING([for ld used by GCC])
-+ case $host in
-+ *-*-mingw*)
-+ # gcc leaves a trailing carriage return which upsets mingw
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-+ *)
-+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-+ esac
-+ case $ac_prog in
-+ # Accept absolute paths.
-+ [[\\/]* | [A-Za-z]:[\\/]*)]
-+ [re_direlt='/[^/][^/]*/\.\./']
-+ # Canonicalize the path of ld
-+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
-+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
-+ done
-+ test -z "$LD" && LD="$ac_prog"
-+ ;;
-+ "")
-+ # If it fails, then pretend we aren't using GCC.
-+ ac_prog=ld
-+ ;;
-+ *)
-+ # If it is relative, then search for the first ld in PATH.
-+ with_gnu_ld=unknown
-+ ;;
-+ esac
-+elif test "$with_gnu_ld" = yes; then
-+ AC_MSG_CHECKING([for GNU ld])
-+else
-+ AC_MSG_CHECKING([for non-GNU ld])
-+fi
-+AC_CACHE_VAL(acl_cv_path_LD,
-+[if test -z "$LD"; then
-+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-+ for ac_dir in $PATH; do
-+ test -z "$ac_dir" && ac_dir=.
-+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-+ acl_cv_path_LD="$ac_dir/$ac_prog"
-+ # Check to see if the program is GNU ld. I'd rather use --version,
-+ # but apparently some GNU ld's only accept -v.
-+ # Break only if it was the GNU/non-GNU ld that we prefer.
-+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
-+ *GNU* | *'with BFD'*)
-+ test "$with_gnu_ld" != no && break ;;
-+ *)
-+ test "$with_gnu_ld" != yes && break ;;
-+ esac
-+ fi
-+ done
-+ IFS="$ac_save_ifs"
-+else
-+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
-+fi])
-+LD="$acl_cv_path_LD"
-+if test -n "$LD"; then
-+ AC_MSG_RESULT($LD)
-+else
-+ AC_MSG_RESULT(no)
-+fi
-+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-+AC_LIB_PROG_LD_GNU
-+])
-+
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/config.h.in ltrace-0.3.35/config.h.in
---- /home/apollock/debian/ltrace/ltrace-0.3.35/config.h.in 2004-10-22 21:16:09.000000000 +1000
-+++ ltrace-0.3.35/config.h.in 2004-10-22 21:28:41.000000000 +1000
-@@ -1,4 +1,7 @@
--/* config.h.in. Generated from configure.in by autoheader. */
-+/* config.h.in. Generated from configure.ac by autoheader. */
-+
-+/* Defined if ELF_C_READ_MMAP is valid argument for elf_begin */
-+#undef HAVE_ELF_C_READ_MMAP
-
- /* Define to 1 if you have the `getopt' function. */
- #undef HAVE_GETOPT
-@@ -12,6 +15,9 @@
- /* Define to 1 if you have the <inttypes.h> header file. */
- #undef HAVE_INTTYPES_H
-
-+/* Define to 1 if you have the `elf' library (-lelf). */
-+#undef HAVE_LIBELF
-+
- /* Define to 1 if you have the `iberty' library (-liberty). */
- #undef HAVE_LIBIBERTY
-
-@@ -57,6 +63,12 @@
- /* Define to 1 if you have the ANSI C header files. */
- #undef STDC_HEADERS
-
-+/* Number of bits in a file offset, on hosts where this is settable. */
-+#undef _FILE_OFFSET_BITS
-+
-+/* Define for large files, on AIX-style hosts. */
-+#undef _LARGE_FILES
-+
- /* Define to empty if `const' does not conform to ANSI C. */
- #undef const
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/config.h.in.orig ltrace-0.3.35/config.h.in.orig
---- /home/apollock/debian/ltrace/ltrace-0.3.35/config.h.in.orig 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/config.h.in.orig 2004-10-22 21:28:41.000000000 +1000
-@@ -0,0 +1,70 @@
-+/* config.h.in. Generated from configure.in by autoheader. */
-+
-+/* Define to 1 if you have the `getopt' function. */
-+#undef HAVE_GETOPT
-+
-+/* Define to 1 if you have the <getopt.h> header file. */
-+#undef HAVE_GETOPT_H
-+
-+/* Define to 1 if you have the `getopt_long' function. */
-+#undef HAVE_GETOPT_LONG
-+
-+/* Define to 1 if you have the <inttypes.h> header file. */
-+#undef HAVE_INTTYPES_H
-+
-+/* Define to 1 if you have the `iberty' library (-liberty). */
-+#undef HAVE_LIBIBERTY
-+
-+/* Define to 1 if you have the <memory.h> header file. */
-+#undef HAVE_MEMORY_H
-+
-+/* Define to 1 if you have the <stdint.h> header file. */
-+#undef HAVE_STDINT_H
-+
-+/* Define to 1 if you have the <stdlib.h> header file. */
-+#undef HAVE_STDLIB_H
-+
-+/* Define to 1 if you have the <strings.h> header file. */
-+#undef HAVE_STRINGS_H
-+
-+/* Define to 1 if you have the <string.h> header file. */
-+#undef HAVE_STRING_H
-+
-+/* Define to 1 if you have the <sys/stat.h> header file. */
-+#undef HAVE_SYS_STAT_H
-+
-+/* Define to 1 if you have the <sys/types.h> header file. */
-+#undef HAVE_SYS_TYPES_H
-+
-+/* Define to 1 if you have the <unistd.h> header file. */
-+#undef HAVE_UNISTD_H
-+
-+/* Define to the address where bug reports for this package should be sent. */
-+#undef PACKAGE_BUGREPORT
-+
-+/* Define to the full name of this package. */
-+#undef PACKAGE_NAME
-+
-+/* Define to the full name and version of this package. */
-+#undef PACKAGE_STRING
-+
-+/* Define to the one symbol short name of this package. */
-+#undef PACKAGE_TARNAME
-+
-+/* Define to the version of this package. */
-+#undef PACKAGE_VERSION
-+
-+/* Define to 1 if you have the ANSI C header files. */
-+#undef STDC_HEADERS
-+
-+/* Define to empty if `const' does not conform to ANSI C. */
-+#undef const
-+
-+/* Define to `int' if <sys/types.h> doesn't define. */
-+#undef gid_t
-+
-+/* Define to `int' if <sys/types.h> does not define. */
-+#undef pid_t
-+
-+/* Define to `int' if <sys/types.h> doesn't define. */
-+#undef uid_t
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/config.h.in~ ltrace-0.3.35/config.h.in~
---- /home/apollock/debian/ltrace/ltrace-0.3.35/config.h.in~ 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/config.h.in~ 2004-10-22 21:28:41.000000000 +1000
-@@ -0,0 +1,70 @@
-+/* config.h.in. Generated from configure.in by autoheader. */
-+
-+/* Define to 1 if you have the `getopt' function. */
-+#undef HAVE_GETOPT
-+
-+/* Define to 1 if you have the <getopt.h> header file. */
-+#undef HAVE_GETOPT_H
-+
-+/* Define to 1 if you have the `getopt_long' function. */
-+#undef HAVE_GETOPT_LONG
-+
-+/* Define to 1 if you have the <inttypes.h> header file. */
-+#undef HAVE_INTTYPES_H
-+
-+/* Define to 1 if you have the `iberty' library (-liberty). */
-+#undef HAVE_LIBIBERTY
-+
-+/* Define to 1 if you have the <memory.h> header file. */
-+#undef HAVE_MEMORY_H
-+
-+/* Define to 1 if you have the <stdint.h> header file. */
-+#undef HAVE_STDINT_H
-+
-+/* Define to 1 if you have the <stdlib.h> header file. */
-+#undef HAVE_STDLIB_H
-+
-+/* Define to 1 if you have the <strings.h> header file. */
-+#undef HAVE_STRINGS_H
-+
-+/* Define to 1 if you have the <string.h> header file. */
-+#undef HAVE_STRING_H
-+
-+/* Define to 1 if you have the <sys/stat.h> header file. */
-+#undef HAVE_SYS_STAT_H
-+
-+/* Define to 1 if you have the <sys/types.h> header file. */
-+#undef HAVE_SYS_TYPES_H
-+
-+/* Define to 1 if you have the <unistd.h> header file. */
-+#undef HAVE_UNISTD_H
-+
-+/* Define to the address where bug reports for this package should be sent. */
-+#undef PACKAGE_BUGREPORT
-+
-+/* Define to the full name of this package. */
-+#undef PACKAGE_NAME
-+
-+/* Define to the full name and version of this package. */
-+#undef PACKAGE_STRING
-+
-+/* Define to the one symbol short name of this package. */
-+#undef PACKAGE_TARNAME
-+
-+/* Define to the version of this package. */
-+#undef PACKAGE_VERSION
-+
-+/* Define to 1 if you have the ANSI C header files. */
-+#undef STDC_HEADERS
-+
-+/* Define to empty if `const' does not conform to ANSI C. */
-+#undef const
-+
-+/* Define to `int' if <sys/types.h> doesn't define. */
-+#undef gid_t
-+
-+/* Define to `int' if <sys/types.h> does not define. */
-+#undef pid_t
-+
-+/* Define to `int' if <sys/types.h> doesn't define. */
-+#undef uid_t
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/configure ltrace-0.3.35/configure
---- /home/apollock/debian/ltrace/ltrace-0.3.35/configure 2004-10-22 21:16:07.000000000 +1000
-+++ ltrace-0.3.35/configure 2004-10-22 21:28:41.000000000 +1000
-@@ -841,6 +841,11 @@
-
- cat <<\_ACEOF
-
-+Optional Features:
-+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
-+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
-+ --disable-largefile omit support for large files
-+
- Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
-@@ -1291,6 +1296,7 @@
- ac_config_headers="$ac_config_headers config.h"
-
-
-+
- ac_aux_dir=
- for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
-@@ -3410,6 +3416,649 @@
- done
-
-
-+if test "${ac_cv_header_gelf_h+set}" = set; then
-+ echo "$as_me:$LINENO: checking for gelf.h" >&5
-+echo $ECHO_N "checking for gelf.h... $ECHO_C" >&6
-+if test "${ac_cv_header_gelf_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_gelf_h" >&5
-+echo "${ECHO_T}$ac_cv_header_gelf_h" >&6
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking gelf.h usability" >&5
-+echo $ECHO_N "checking gelf.h usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+#include <gelf.h>
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_header_compiler=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+# Is the header present?
-+echo "$as_me:$LINENO: checking gelf.h presence" >&5
-+echo $ECHO_N "checking gelf.h presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <gelf.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ ac_header_preproc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ ac_header_preproc=no
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6
-+
-+# So? What about this header?
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: gelf.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: gelf.h: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: gelf.h: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: gelf.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: gelf.h: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: gelf.h: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: gelf.h: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: gelf.h: in the future, the compiler will take precedence" >&2;}
-+ (
-+ cat <<\_ASBOX
-+## ------------------------------------------ ##
-+## Report this to the AC_PACKAGE_NAME lists. ##
-+## ------------------------------------------ ##
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+esac
-+echo "$as_me:$LINENO: checking for gelf.h" >&5
-+echo $ECHO_N "checking for gelf.h... $ECHO_C" >&6
-+if test "${ac_cv_header_gelf_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_header_gelf_h=$ac_header_preproc
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_gelf_h" >&5
-+echo "${ECHO_T}$ac_cv_header_gelf_h" >&6
-+
-+fi
-+if test $ac_cv_header_gelf_h = yes; then
-+ :
-+else
-+
-+ if test -f /usr/include/elfutils/gelf.h; then
-+ CPPFLAGS="$CPPFLAGS -I /usr/include/elfutils"
-+ elif test -f /usr/local/include/elfutils/gelf.h; then
-+ CPPFLAGS="$CPPFLAGS -I /usr/local/include/elfutils"
-+ elif test -f /usr/include/libelf/gelf.h; then
-+ CPPFLAGS="$CPPFLAGS -I /usr/include/libelf"
-+ elif test -f /usr/local/include/libelf/gelf.h; then
-+ CPPFLAGS="$CPPFLAGS -I /usr/local/include/libelf"
-+ else
-+ { { echo "$as_me:$LINENO: error: gelf.h not found" >&5
-+echo "$as_me: error: gelf.h not found" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+fi
-+
-+
-+
-+echo "$as_me:$LINENO: checking for gelf_getdyn in -lelf" >&5
-+echo $ECHO_N "checking for gelf_getdyn in -lelf... $ECHO_C" >&6
-+if test "${ac_cv_lib_elf_gelf_getdyn+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lelf $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char gelf_getdyn ();
-+int
-+main ()
-+{
-+gelf_getdyn ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest$ac_exeext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_lib_elf_gelf_getdyn=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_elf_gelf_getdyn=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_elf_gelf_getdyn" >&5
-+echo "${ECHO_T}$ac_cv_lib_elf_gelf_getdyn" >&6
-+if test $ac_cv_lib_elf_gelf_getdyn = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define HAVE_LIBELF 1
-+_ACEOF
-+
-+ LIBS="-lelf $LIBS"
-+
-+fi
-+
-+
-+ac_cv_have_elf_c_read_mmap=no
-+echo "$as_me:$LINENO: checking elf_begin accepts ELF_C_READ_MMAP" >&5
-+echo $ECHO_N "checking elf_begin accepts ELF_C_READ_MMAP... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <gelf.h>
-+int
-+main ()
-+{
-+Elf *elf = elf_begin (4, ELF_C_READ_MMAP, 0);
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_have_elf_c_read_mmap=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_cv_have_elf_c_read_mmap" >&5
-+echo "${ECHO_T}$ac_cv_have_elf_c_read_mmap" >&6
-+if test $ac_cv_have_elf_c_read_mmap = yes; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE_ELF_C_READ_MMAP 1
-+_ACEOF
-+
-+# Check whether --enable-largefile or --disable-largefile was given.
-+if test "${enable_largefile+set}" = set; then
-+ enableval="$enable_largefile"
-+
-+fi;
-+if test "$enable_largefile" != no; then
-+
-+ echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
-+echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6
-+if test "${ac_cv_sys_largefile_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_sys_largefile_CC=no
-+ if test "$GCC" != yes; then
-+ ac_save_CC=$CC
-+ while :; do
-+ # IRIX 6.2 and later do not support large files by default,
-+ # so use the C compiler's -n32 option if that helps.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <sys/types.h>
-+ /* Check that off_t can represent 2**63 - 1 correctly.
-+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
-+ since some C++ compilers masquerading as C compilers
-+ incorrectly reject 9223372036854775807. */
-+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-+ && LARGE_OFF_T % 2147483647 == 1)
-+ ? 1 : -1];
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+ rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext
-+ CC="$CC -n32"
-+ rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_sys_largefile_CC=' -n32'; break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext
-+ break
-+ done
-+ CC=$ac_save_CC
-+ rm -f conftest.$ac_ext
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
-+echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
-+ if test "$ac_cv_sys_largefile_CC" != no; then
-+ CC=$CC$ac_cv_sys_largefile_CC
-+ fi
-+
-+ echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-+echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
-+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ while :; do
-+ ac_cv_sys_file_offset_bits=no
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <sys/types.h>
-+ /* Check that off_t can represent 2**63 - 1 correctly.
-+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
-+ since some C++ compilers masquerading as C compilers
-+ incorrectly reject 9223372036854775807. */
-+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-+ && LARGE_OFF_T % 2147483647 == 1)
-+ ? 1 : -1];
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#define _FILE_OFFSET_BITS 64
-+#include <sys/types.h>
-+ /* Check that off_t can represent 2**63 - 1 correctly.
-+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
-+ since some C++ compilers masquerading as C compilers
-+ incorrectly reject 9223372036854775807. */
-+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-+ && LARGE_OFF_T % 2147483647 == 1)
-+ ? 1 : -1];
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_sys_file_offset_bits=64; break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ break
-+done
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
-+echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
-+if test "$ac_cv_sys_file_offset_bits" != no; then
-+
-+cat >>confdefs.h <<_ACEOF
-+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-+_ACEOF
-+
-+fi
-+rm -f conftest*
-+ echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
-+echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6
-+if test "${ac_cv_sys_large_files+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ while :; do
-+ ac_cv_sys_large_files=no
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <sys/types.h>
-+ /* Check that off_t can represent 2**63 - 1 correctly.
-+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
-+ since some C++ compilers masquerading as C compilers
-+ incorrectly reject 9223372036854775807. */
-+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-+ && LARGE_OFF_T % 2147483647 == 1)
-+ ? 1 : -1];
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#define _LARGE_FILES 1
-+#include <sys/types.h>
-+ /* Check that off_t can represent 2**63 - 1 correctly.
-+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
-+ since some C++ compilers masquerading as C compilers
-+ incorrectly reject 9223372036854775807. */
-+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-+ && LARGE_OFF_T % 2147483647 == 1)
-+ ? 1 : -1];
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_sys_large_files=1; break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ break
-+done
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
-+echo "${ECHO_T}$ac_cv_sys_large_files" >&6
-+if test "$ac_cv_sys_large_files" != no; then
-+
-+cat >>confdefs.h <<_ACEOF
-+#define _LARGE_FILES $ac_cv_sys_large_files
-+_ACEOF
-+
-+fi
-+rm -f conftest*
-+fi
-+
-+fi
- ac_config_files="$ac_config_files Makefile"
- cat >confcache <<\_ACEOF
- # This file is a shell script that caches the results of configure
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/configure.ac ltrace-0.3.35/configure.ac
---- /home/apollock/debian/ltrace/ltrace-0.3.35/configure.ac 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/configure.ac 2004-10-22 21:28:41.000000000 +1000
-@@ -0,0 +1,80 @@
-+dnl Process this file with autoconf to produce a configure script.
-+AC_INIT(ltrace.c)
-+AC_CONFIG_HEADER(config.h)
-+AC_PREREQ(2.50)
-+
-+dnl Check host system type
-+AC_CANONICAL_HOST
-+HOST_OS="$host_os"
-+AC_SUBST(HOST_OS)
-+
-+dnl Checks for programs.
-+AC_PROG_CC
-+AC_PROG_INSTALL
-+
-+dnl Checks for libraries.
-+AC_CHECK_LIB(iberty, cplus_demangle,,,)
-+
-+AC_MSG_CHECKING(ltrace version)
-+changequote(<<, >>)
-+ltrace_version=`sed -n '1s/ltrace (\([0-9.]\+\)).*/\1/p' ${srcdir}/debian/changelog`
-+sed -e "s/@VERSION@/${ltrace_version}/g" \
-+ < ${srcdir}/ltrace.spec.in > ${srcdir}/ltrace.spec
-+changequote([, ])
-+dnl AC_DEFINE_UNQUOTED(VERSION,"$ltrace_version")
-+AC_MSG_RESULT($ltrace_version)
-+
-+dnl
-+dnl The following stuff may be useful, but I don't use it now.
-+dnl
-+
-+dnl dnl Checks for header files.
-+AC_HEADER_STDC
-+dnl AC_HEADER_SYS_WAIT
-+dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h unistd.h)
-+AC_CHECK_HEADERS(getopt.h)
-+dnl
-+dnl dnl Checks for typedefs, structures, and compiler characteristics.
-+AC_C_CONST
-+AC_TYPE_UID_T
-+AC_TYPE_PID_T
-+dnl AC_HEADER_TIME
-+dnl AC_STRUCT_TM
-+dnl
-+dnl dnl Checks for library functions.
-+dnl AC_FUNC_MMAP
-+dnl AC_TYPE_SIGNAL
-+dnl AC_FUNC_VPRINTF
-+dnl AC_CHECK_FUNCS(gettimeofday strdup strerror strspn)
-+AC_CHECK_FUNCS(getopt getopt_long)
-+
-+AC_CHECK_HEADER(gelf.h,,[
-+ if test -f /usr/include/elfutils/gelf.h; then
-+ CPPFLAGS="$CPPFLAGS -I /usr/include/elfutils"
-+ elif test -f /usr/local/include/elfutils/gelf.h; then
-+ CPPFLAGS="$CPPFLAGS -I /usr/local/include/elfutils"
-+ elif test -f /usr/include/libelf/gelf.h; then
-+ CPPFLAGS="$CPPFLAGS -I /usr/include/libelf"
-+ elif test -f /usr/local/include/libelf/gelf.h; then
-+ CPPFLAGS="$CPPFLAGS -I /usr/local/include/libelf"
-+ else
-+ AC_MSG_ERROR(gelf.h not found)
-+ fi])
-+AC_CHECK_LIB(elf,gelf_getdyn)
-+
-+ac_cv_have_elf_c_read_mmap=no
-+AC_MSG_CHECKING(elf_begin accepts ELF_C_READ_MMAP)
-+AC_TRY_COMPILE([#include <gelf.h>],
-+ [Elf *elf = elf_begin (4, ELF_C_READ_MMAP, 0);],
-+ [ac_cv_have_elf_c_read_mmap=yes])
-+AC_MSG_RESULT($ac_cv_have_elf_c_read_mmap)
-+if test $ac_cv_have_elf_c_read_mmap = yes; then
-+AC_DEFINE(HAVE_ELF_C_READ_MMAP, 1,
-+ [Defined if ELF_C_READ_MMAP is valid argument for elf_begin])
-+dnl This is not 100% correct, but all elfutils installations
-+dnl are built with LFS, while AFAIK all Michael Riepe's libelfs
-+dnl are built without LFS. It is important that LFS setting
-+dnl of libelf and ltrace matches.
-+AC_SYS_LARGEFILE
-+fi
-+AC_OUTPUT(Makefile)
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/configure.in ltrace-0.3.35/configure.in
---- /home/apollock/debian/ltrace/ltrace-0.3.35/configure.in 2004-10-22 21:16:02.000000000 +1000
-+++ ltrace-0.3.35/configure.in 2004-10-22 21:28:41.000000000 +1000
-@@ -1,50 +0,0 @@
--dnl Process this file with autoconf to produce a configure script.
--AC_INIT(ltrace.c)
--AC_CONFIG_HEADER(config.h)
--
--dnl Check host system type
--AC_CANONICAL_HOST
--HOST_OS="$host_os"
--AC_SUBST(HOST_OS)
--
--dnl Checks for programs.
--AC_PROG_CC
--AC_PROG_INSTALL
--
--dnl Checks for libraries.
--AC_CHECK_LIB(iberty, cplus_demangle,,,)
--
--AC_MSG_CHECKING(ltrace version)
--changequote(<<, >>)
--ltrace_version=`sed -n '1s/ltrace (\([0-9.]\+\)).*/\1/p' ${srcdir}/debian/changelog`
--sed -e "s/@VERSION@/${ltrace_version}/g" \
-- < ${srcdir}/ltrace.spec.in > ${srcdir}/ltrace.spec
--changequote([, ])
--dnl AC_DEFINE_UNQUOTED(VERSION,"$ltrace_version")
--AC_MSG_RESULT($ltrace_version)
--
--dnl
--dnl The following stuff may be useful, but I don't use it now.
--dnl
--
--dnl dnl Checks for header files.
--AC_HEADER_STDC
--dnl AC_HEADER_SYS_WAIT
--dnl AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h unistd.h)
--AC_CHECK_HEADERS(getopt.h)
--dnl
--dnl dnl Checks for typedefs, structures, and compiler characteristics.
--AC_C_CONST
--AC_TYPE_UID_T
--AC_TYPE_PID_T
--dnl AC_HEADER_TIME
--dnl AC_STRUCT_TM
--dnl
--dnl dnl Checks for library functions.
--dnl AC_FUNC_MMAP
--dnl AC_TYPE_SIGNAL
--dnl AC_FUNC_VPRINTF
--dnl AC_CHECK_FUNCS(gettimeofday strdup strerror strspn)
--AC_CHECK_FUNCS(getopt getopt_long)
--
--AC_OUTPUT(Makefile)
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/elf.c ltrace-0.3.35/elf.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/elf.c 2004-10-22 21:16:02.000000000 +1000
-+++ ltrace-0.3.35/elf.c 2004-10-22 21:28:41.000000000 +1000
-@@ -1,21 +1,14 @@
- #if HAVE_CONFIG_H
--#include "config.h"
-+# include "config.h"
- #endif
-
--/*
-- * This file contains functions specific to ELF binaries
-- *
-- * Silvio Cesare <silvio@big.net.au>
-- *
-- */
--
--#include <stdio.h>
-+#include <endian.h>
- #include <errno.h>
--#include <stdlib.h>
--#include <sys/types.h>
--#include <sys/stat.h>
-+#include <error.h>
- #include <fcntl.h>
--#include <sys/mman.h>
-+#include <gelf.h>
-+#include <stdint.h>
-+#include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
-
-@@ -23,241 +16,322 @@
- #include "elf.h"
- #include "debug.h"
-
--static void do_init_elf(struct ltelf *lte, const char *filename);
--static void do_close_elf(struct ltelf *lte);
--static void do_load_elf_symtab(struct ltelf *lte);
--static void do_init_load_libraries(void);
--static void do_close_load_libraries(void);
--static int in_load_libraries(const char *func);
--static void add_library_symbol(
-- struct ltelf *lte,
-- int i,
-- struct library_symbol **library_symbolspp
--);
--
--static struct ltelf library_lte[MAX_LIBRARY];
-+static void do_init_elf (struct ltelf *lte, const char *filename);
-+static void do_close_elf (struct ltelf *lte);
-+static void add_library_symbol (GElf_Addr addr, const char *name,
-+ struct library_symbol **library_symbolspp);
-+static int in_load_libraries (const char *name, struct ltelf *lte);
-
- static void
--do_init_elf(struct ltelf *lte, const char *filename) {
-- struct stat sbuf;
-+do_init_elf (struct ltelf *lte, const char *filename)
-+{
-+ int i;
-+ GElf_Addr relplt_addr = 0;
-+ size_t relplt_size = 0;
-
-- debug(1, "Reading ELF from %s...", filename);
-+ debug (1, "Reading ELF from %s...", filename);
-
-- lte->fd = open(filename, O_RDONLY);
-- if (lte->fd == -1) {
-- fprintf(
-- stderr,
-- "Can't open \"%s\": %s\n",
-- filename,
-- strerror(errno)
-- );
-- exit(1);
-- }
-- if (fstat(lte->fd, &sbuf) == -1) {
-- fprintf(
-- stderr,
-- "Can't stat \"%s\": %s\n",
-- filename,
-- strerror(errno)
-- );
-- exit(1);
-- }
-- if (sbuf.st_size < sizeof(Elf_Ehdr)) {
-- fprintf(
-- stderr,
-- "\"%s\" is not an ELF binary object\n",
-- filename
-- );
-- exit(1);
-- }
-- lte->maddr = mmap(
-- NULL, sbuf.st_size, PROT_READ, MAP_SHARED, lte->fd, 0
-- );
-- if (lte->maddr == (void*)-1) {
-- fprintf(
-- stderr,
-- "Can't mmap \"%s\": %s\n",
-- filename,
-- strerror(errno)
-- );
-- exit(1);
-- }
-+ memset (lte, 0, sizeof (*lte));
-+ lte->fd = open (filename, O_RDONLY);
-+ if (lte->fd == -1)
-+ error (EXIT_FAILURE, errno, "Can't open \"%s\"", filename);
-
--#if defined(FILEFORMAT_CHECK)
-- if (! ffcheck(lte->maddr)) {
-- fprintf(
-- stderr,
-- "%s: wrong architecture or ELF format\n",
-- filename
-- );
-- exit(1);
-- }
-+#ifdef HAVE_ELF_C_READ_MMAP
-+ lte->elf = elf_begin (lte->fd, ELF_C_READ_MMAP, NULL);
-+#else
-+ lte->elf = elf_begin (lte->fd, ELF_C_READ, NULL);
- #endif
-
-- lte->ehdr = lte->maddr;
-+ if (lte->elf == NULL || elf_kind (lte->elf) != ELF_K_ELF)
-+ error (EXIT_FAILURE, 0, "Can't open ELF file \"%s\"", filename);
-
-- if (strncmp(lte->ehdr->e_ident, ELFMAG, SELFMAG)) {
-- fprintf(
-- stderr,
-- "\"%s\" is not an ELF binary object\n",
-- filename
-- );
-- exit(1);
-- }
-+ if (gelf_getehdr (lte->elf, &lte->ehdr) == NULL)
-+ error (EXIT_FAILURE, 0, "Can't read ELF header of \"%s\"", filename);
-
--/*
-- more ELF checks should go here - the e_arch/e_machine fields in the
-- ELF header are specific to each architecture. perhaps move some code
-- into sysdeps (have check_ehdr_arch) - silvio
--*/
-+ if (lte->ehdr.e_type != ET_EXEC && lte->ehdr.e_type != ET_DYN)
-+ error (EXIT_FAILURE, 0, "\"%s\" is not an ELF executable nor shared library",
-+ filename);
-
-- lte->strtab = NULL;
-+ if (lte->ehdr.e_ident[EI_CLASS] != LT_ELFCLASS
-+ || (lte->ehdr.e_machine != LT_ELF_MACHINE
-+#ifdef LT_ELF_MACHINE2
-+ && lte->ehdr.e_machine != LT_ELF_MACHINE2
-+#endif
-+#ifdef LT_ELF_MACHINE3
-+ && lte->ehdr.e_machine != LT_ELF_MACHINE3
-+#endif
-+ ))
-+ error (EXIT_FAILURE, 0, "\"%s\" is ELF from incompatible architecture",
-+ filename);
-
-- lte->symtab = NULL;
-- lte->symtab_len = 0;
--}
-+ for (i = 1; i < lte->ehdr.e_shnum; ++i)
-+ {
-+ Elf_Scn *scn;
-+ GElf_Shdr shdr;
-+ const char *name;
-
--static void
--do_close_elf(struct ltelf *lte) {
-- close(lte->fd);
--}
-+ scn = elf_getscn (lte->elf, i);
-+ if (scn == NULL || gelf_getshdr (scn, &shdr) == NULL)
-+ error (EXIT_FAILURE, 0, "Couldn't get section header from \"%s\"",
-+ filename);
-
--static void
--do_load_elf_symtab(struct ltelf *lte) {
-- void *maddr = lte->maddr;
-- Elf_Ehdr *ehdr = lte->ehdr;
-- Elf_Shdr *shdr = (Elf_Shdr *)(maddr + ehdr->e_shoff);
-- int i;
-+ name = elf_strptr (lte->elf, lte->ehdr.e_shstrndx, shdr.sh_name);
-+ if (name == NULL)
-+ error (EXIT_FAILURE, 0, "Couldn't get section header from \"%s\"",
-+ filename);
-
--/*
-- an ELF object should only ever one dynamic symbol section (DYNSYM), but
-- can have multiple string tables. the sh_link entry from DYNSYM points
-- to the correct STRTAB section - silvio
--*/
-+ if (shdr.sh_type == SHT_DYNSYM)
-+ {
-+ Elf_Data *data;
-
-- for(i = 0; i < ehdr->e_shnum; i++) {
-- if (shdr[i].sh_type == SHT_DYNSYM) {
-- lte->symtab = (Elf_Sym *)(maddr + shdr[i].sh_offset);
-- lte->symtab_len = shdr[i].sh_size;
-- lte->strtab = (char *)(
-- maddr + shdr[shdr[i].sh_link].sh_offset
-- );
-- }
-+ lte->dynsym = elf_getdata (scn, NULL);
-+ lte->dynsym_count = shdr.sh_size / shdr.sh_entsize;
-+ if (lte->dynsym == NULL || elf_getdata (scn, lte->dynsym) != NULL)
-+ error (EXIT_FAILURE, 0, "Couldn't get .dynsym data from \"%s\"",
-+ filename);
-+
-+ scn = elf_getscn (lte->elf, shdr.sh_link);
-+ if (scn == NULL || gelf_getshdr (scn, &shdr) == NULL)
-+ error (EXIT_FAILURE, 0, "Couldn't get section header from \"%s\"",
-+ filename);
-+
-+ data = elf_getdata (scn, NULL);
-+ if (data == NULL || elf_getdata (scn, data) != NULL
-+ || shdr.sh_size != data->d_size || data->d_off)
-+ error (EXIT_FAILURE, 0, "Couldn't get .dynstr data from \"%s\"",
-+ filename);
-+
-+ lte->dynstr = data->d_buf;
- }
-+ else if (shdr.sh_type == SHT_DYNAMIC)
-+ {
-+ Elf_Data *data;
-+ size_t j;
-
-- debug(2, "symtab: %p", lte->symtab);
-- debug(2, "symtab_len: %lu", lte->symtab_len);
-- debug(2, "strtab: %p", lte->strtab);
--}
-+ data = elf_getdata (scn, NULL);
-+ if (data == NULL || elf_getdata (scn, data) != NULL)
-+ error (EXIT_FAILURE, 0, "Couldn't get .dynamic data from \"%s\"",
-+ filename);
-
--static void
--add_library_symbol(
-- struct ltelf *lte,
-- int i,
-- struct library_symbol **library_symbolspp) {
-- struct library_symbol *tmp = *library_symbolspp;
-- struct library_symbol *library_symbols;
-+ for (j = 0; j < shdr.sh_size / shdr.sh_entsize; ++j)
-+ {
-+ GElf_Dyn dyn;
-
-- *library_symbolspp = (struct library_symbol *)malloc(
-- sizeof(struct library_symbol)
-- );
-- library_symbols = *library_symbolspp;
-- if (library_symbols == NULL) {
-- perror("ltrace: malloc");
-- exit(1);
-+ if (gelf_getdyn (data, j, &dyn) == NULL)
-+ error (EXIT_FAILURE, 0, "Couldn't get .dynamic data from \"%s\"",
-+ filename);
-+
-+ if (dyn.d_tag == DT_JMPREL)
-+ relplt_addr = dyn.d_un.d_ptr;
-+ else if (dyn.d_tag == DT_PLTRELSZ)
-+ relplt_size = dyn.d_un.d_val;
-+ }
- }
-+ else if (shdr.sh_type == SHT_HASH)
-+ {
-+ Elf_Data *data;
-+ size_t j;
-
--#ifdef __sparc__
-- library_symbols->enter_addr = (void *)(lte->symtab[i].st_value + 4 /* plt(?) */);
--#else
-- library_symbols->enter_addr = (void *)lte->symtab[i].st_value;
--#endif
-- library_symbols->name = &lte->strtab[lte->symtab[i].st_name];
-- library_symbols->next = tmp;
-+ data = elf_getdata (scn, NULL);
-+ if (data == NULL || elf_getdata (scn, data) != NULL
-+ || data->d_off || data->d_size != shdr.sh_size)
-+ error (EXIT_FAILURE, 0, "Couldn't get .hash data from \"%s\"",
-+ filename);
-
-- debug(2, "addr: %p, symbol: \"%s\"",
-- lte->symtab[i].st_value,
-- &lte->strtab[lte->symtab[i].st_name]);
--}
-+ if (shdr.sh_entsize == 4)
-+ {
-+ /* Standard conforming ELF. */
-+ if (data->d_type != ELF_T_WORD)
-+ error (EXIT_FAILURE, 0, "Couldn't get .hash data from \"%s\"",
-+ filename);
-+ lte->hash = (Elf32_Word *) data->d_buf;
-+ }
-+ else if (shdr.sh_entsize == 8)
-+ {
-+ /* Alpha or s390x. */
-+ Elf32_Word *dst, *src;
-+ size_t hash_count = data->d_size / 8;
-
--/*
-- this is all pretty slow. perhaps using .hash would be faster, or
-- even just a custum built hash table. its all initialization though,
-- so its not that bad - silvio
--*/
-+ lte->hash = (Elf32_Word *)
-+ malloc (hash_count * sizeof (Elf32_Word));
-+ if (lte->hash == NULL)
-+ error (EXIT_FAILURE, 0, "Couldn't convert .hash section from \"%s\"",
-+ filename);
-+ lte->hash_malloced = 1;
-+ dst = lte->hash;
-+ src = (Elf32_Word *) data->d_buf;
-+ if ((data->d_type == ELF_T_WORD && __BYTE_ORDER == __BIG_ENDIAN)
-+ || (data->d_type == ELF_T_XWORD
-+ && lte->ehdr.e_ident[EI_DATA] == ELFDATA2MSB))
-+ ++src;
-+ for (j = 0; j < hash_count; ++j, src += 2)
-+ *dst++ = *src;
-+ }
-+ else
-+ error (EXIT_FAILURE, 0, "Unknown .hash sh_entsize in \"%s\"",
-+ filename);
-+ }
-+ else if ((shdr.sh_type == SHT_PROGBITS || shdr.sh_type == SHT_NOBITS)
-+ && strcmp (name, ".plt") == 0)
-+ lte->plt_addr = shdr.sh_addr;
-+ }
-
--static void
--do_init_load_libraries(void) {
-- int i;
-+ if (lte->dynsym == NULL || lte->dynstr == NULL)
-+ error (EXIT_FAILURE, 0, "Couldn't find .dynsym or .dynstr in \"%s\"",
-+ filename);
-
-- for (i = 0; i < library_num; i++) {
-- do_init_elf(&library_lte[i], library[i]);
-- do_load_elf_symtab(&library_lte[i]);
-+ if (!relplt_addr || !lte->plt_addr)
-+ {
-+ debug (1, "%s has no PLT relocations", filename);
-+ lte->relplt = NULL;
-+ lte->relplt_count = 0;
-+ }
-+ else
-+ {
-+ for (i = 1; i < lte->ehdr.e_shnum; ++i)
-+ {
-+ Elf_Scn *scn;
-+ GElf_Shdr shdr;
-+
-+ scn = elf_getscn (lte->elf, i);
-+ if (scn == NULL || gelf_getshdr (scn, &shdr) == NULL)
-+ error (EXIT_FAILURE, 0, "Couldn't get section header from \"%s\"",
-+ filename);
-+ if (shdr.sh_addr == relplt_addr && shdr.sh_size == relplt_size)
-+ {
-+ lte->relplt = elf_getdata (scn, NULL);
-+ lte->relplt_count = shdr.sh_size / shdr.sh_entsize;
-+ if (lte->relplt == NULL
-+ || elf_getdata (scn, lte->relplt) != NULL)
-+ error (EXIT_FAILURE, 0, "Couldn't get .rel*.plt data from \"%s\"",
-+ filename);
-+ break;
-+ }
- }
-+
-+ if (i == lte->ehdr.e_shnum)
-+ error (EXIT_FAILURE, 0, "Couldn't find .rel*.plt section in \"%s\"",
-+ filename);
-+
-+ debug (1, "%s %zd PLT relocations", filename, lte->relplt_count);
-+ }
- }
-
- static void
--do_close_load_libraries(void) {
-- int i;
-+do_close_elf (struct ltelf *lte)
-+{
-+ if (lte->hash_malloced)
-+ free ((char *) lte->hash);
-+ elf_end (lte->elf);
-+ close (lte->fd);
-+}
-
-- for (i = 0; i < library_num; i++) {
-- do_close_elf(&library_lte[i]);
-- }
-+static void
-+add_library_symbol (GElf_Addr addr, const char *name,
-+ struct library_symbol **library_symbolspp)
-+{
-+ struct library_symbol *s;
-+ s = malloc (sizeof (struct library_symbol) + strlen (name) + 1);
-+ if (s == NULL)
-+ error (EXIT_FAILURE, errno, "add_library_symbol failed");
-+
-+ s->next = *library_symbolspp;
-+ s->enter_addr = (void *) (uintptr_t) addr;
-+ s->name = (char *) (s + 1);
-+ strcpy (s->name, name);
-+ *library_symbolspp = s;
-+
-+ debug (2, "addr: %p, symbol: \"%s\"", (void *) (uintptr_t) addr, name);
- }
-
- static int
--in_load_libraries(const char *func) {
-- int i, j;
--/*
-- if no libraries are specified, assume we want all
--*/
-- if (library_num == 0) return 1;
-+in_load_libraries (const char *name, struct ltelf *lte)
-+{
-+ size_t i;
-+ unsigned long hash;
-
-- for (i = 0; i < library_num; i++) {
-- Elf_Sym *symtab = library_lte[i].symtab;
-- char *strtab = library_lte[i].strtab;
-+ if (!library_num)
-+ return 1;
-
-- for(
-- j = 0;
-- j < library_lte[i].symtab_len / sizeof(Elf_Sym);
-- j++
-- ) {
-- if (
-- symtab[j].st_value &&
-- !strcmp(func, &strtab[symtab[j].st_name])
-- ) return 1;
-- }
-+ hash = elf_hash (name);
-+ for (i = 1; i <= library_num; ++i)
-+ {
-+ Elf32_Word nbuckets, symndx;
-+ Elf32_Word *buckets, *chain;
-+
-+ if (lte[i].hash == NULL)
-+ continue;
-+
-+ nbuckets = lte[i].hash[0];
-+ buckets = &lte[i].hash[2];
-+ chain = &lte[i].hash[2 + nbuckets];
-+ for (symndx = buckets[hash % nbuckets];
-+ symndx != STN_UNDEF;
-+ symndx = chain[symndx])
-+ {
-+ GElf_Sym sym;
-+
-+ if (gelf_getsym (lte[i].dynsym, symndx, &sym) == NULL)
-+ error (EXIT_FAILURE, 0, "Couldn't get symbol from .dynsym");
-+
-+ if (sym.st_value != 0
-+ && sym.st_shndx != SHN_UNDEF
-+ && strcmp (name, lte[i].dynstr + sym.st_name) == 0)
-+ return 1;
- }
-- return 0;
-+ }
-+ return 0;
- }
-
--/*
-- this is the main function
--*/
--
- struct library_symbol *
--read_elf(const char *filename) {
-- struct library_symbol *library_symbols = NULL;
-- struct ltelf lte;
-- int i;
-+read_elf (const char *filename)
-+{
-+ struct library_symbol *library_symbols = NULL;
-+ struct ltelf lte[MAX_LIBRARY + 1];
-+ size_t i;
-
-- do_init_elf(&lte, filename);
-- do_load_elf_symtab(&lte);
-- do_init_load_libraries();
-+ elf_version (EV_CURRENT);
-
-- for(i = 0; i < lte.symtab_len / sizeof(Elf_Sym); i++) {
-- Elf_Sym *symtab = lte.symtab;
-- char *strtab = lte.strtab;
-+ do_init_elf (lte, filename);
-+ for (i = 0; i < library_num; ++i)
-+ do_init_elf (&lte[i + 1], library[i]);
-
-- if (!symtab[i].st_shndx && symtab[i].st_value) {
-- if (in_load_libraries(&strtab[symtab[i].st_name])) {
-- add_library_symbol(&lte, i, &library_symbols);
-- }
-- }
-+ for (i = 0; i < lte->relplt_count; ++i)
-+ {
-+ GElf_Rel rel;
-+ GElf_Rela rela;
-+ GElf_Sym sym;
-+ GElf_Addr addr;
-+ void *ret;
-+ const char *name;
-+
-+ if (lte->relplt->d_type == ELF_T_REL)
-+ {
-+ ret = gelf_getrel (lte->relplt, i, &rel);
-+ rela.r_offset = rel.r_offset;
-+ rela.r_info = rel.r_info;
-+ rela.r_addend = 0;
- }
-+ else
-+ ret = gelf_getrela (lte->relplt, i, &rela);
-
-- do_close_load_libraries();
-- do_close_elf(&lte);
-+ if (ret == NULL
-+ || ELF64_R_SYM (rela.r_info) >= lte->dynsym_count
-+ || gelf_getsym (lte->dynsym, ELF64_R_SYM (rela.r_info), &sym) == NULL)
-+ error (EXIT_FAILURE, 0, "Couldn't get relocation from \"%s\"",
-+ filename);
-
-- return library_symbols;
-+ name = lte->dynstr + sym.st_name;
-+ if (in_load_libraries (name, lte))
-+ {
-+ addr = arch_plt_sym_val (lte, i, &rela);
-+ if (addr != 0)
-+ add_library_symbol (addr, name, &library_symbols);
-+ }
-+ }
-+
-+ for (i = 0; i < library_num + 1; ++i)
-+ do_close_elf (&lte[i]);
-+
-+ return library_symbols;
- }
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/elf.h ltrace-0.3.35/elf.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/elf.h 2004-10-22 16:32:57.000000000 +1000
-+++ ltrace-0.3.35/elf.h 2004-10-22 21:28:41.000000000 +1000
-@@ -1,32 +1,31 @@
- #ifndef LTRACE_ELF_H
- #define LTRACE_ELF_H
-
--#include <elf.h>
--#include "ltrace.h"
-+#include <gelf.h>
-+#include <stdlib.h>
-
--#if ELFSIZE == 64
--#define Elf_Sym Elf64_Sym
--#define Elf_Ehdr Elf64_Ehdr
--#define Elf_Shdr Elf64_Shdr
--#else
--#define Elf_Sym Elf32_Sym
--#define Elf_Ehdr Elf32_Ehdr
--#define Elf_Shdr Elf32_Shdr
--#endif
-+#include "ltrace.h"
-
--struct ltelf {
-- int fd;
-- void* maddr;
-- Elf_Ehdr* ehdr;
-- char* strtab;
-- Elf_Sym* symtab;
-- int symtab_len;
-+struct ltelf
-+{
-+ int fd;
-+ Elf *elf;
-+ GElf_Ehdr ehdr;
-+ Elf_Data *dynsym;
-+ size_t dynsym_count;
-+ const char *dynstr;
-+ GElf_Addr plt_addr;
-+ Elf_Data *relplt;
-+ size_t relplt_count;
-+ Elf32_Word *hash;
-+ int hash_malloced;
- };
-
- extern int library_num;
- extern char *library[MAX_LIBRARY];
--extern struct ltelf library_lte[MAX_LIBRARY];
-
--extern struct library_symbol * read_elf(const char *);
-+extern struct library_symbol *read_elf (const char *);
-+
-+extern GElf_Addr arch_plt_sym_val (struct ltelf *, size_t, GElf_Rela *);
-
- #endif
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/alpha/Makefile ltrace-0.3.35/sysdeps/linux-gnu/alpha/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/alpha/Makefile 2004-10-22 21:28:40.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/alpha/Makefile 2004-10-22 21:28:41.000000000 +1000
-@@ -1,4 +1,4 @@
--OBJ = trace.o regs.o
-+OBJ = trace.o regs.o plt.o
-
- all: arch.o
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/alpha/arch.h ltrace-0.3.35/sysdeps/linux-gnu/alpha/arch.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/alpha/arch.h 2004-10-22 21:16:02.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/alpha/arch.h 2004-10-22 21:28:41.000000000 +1000
-@@ -1,4 +1,7 @@
- #define BREAKPOINT_VALUE { 0x80, 0x00, 0x00, 0x00 }
- #define BREAKPOINT_LENGTH 4
- #define DECR_PC_AFTER_BREAK 4
--#define ELFSIZE 64
-+
-+#define LT_ELFCLASS ELFCLASS64
-+#define LT_ELF_MACHINE EM_ALPHA
-+#define LT_ELF_MACHINE2 EM_FAKE_ALPHA
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/alpha/plt.c ltrace-0.3.35/sysdeps/linux-gnu/alpha/plt.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/alpha/plt.c 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/alpha/plt.c 2004-10-22 21:28:41.000000000 +1000
-@@ -0,0 +1,9 @@
-+#include <gelf.h>
-+#include "ltrace.h"
-+#include "elf.h"
-+
-+GElf_Addr
-+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
-+{
-+ return lte->plt_addr + ndx * 12 + 32;
-+}
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/arm/Makefile ltrace-0.3.35/sysdeps/linux-gnu/arm/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/arm/Makefile 2004-10-22 21:28:40.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/arm/Makefile 2004-10-22 21:28:41.000000000 +1000
-@@ -1,4 +1,4 @@
--OBJ = trace.o regs.o
-+OBJ = trace.o regs.o plt.o
-
- all: arch.o
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/arm/arch.h ltrace-0.3.35/sysdeps/linux-gnu/arm/arch.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/arm/arch.h 2004-10-22 21:16:02.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/arm/arch.h 2004-10-22 21:28:41.000000000 +1000
-@@ -1,3 +1,6 @@
- #define BREAKPOINT_VALUE { 0x01, 0x00, 0x9f, 0xef }
- #define BREAKPOINT_LENGTH 4
- #define DECR_PC_AFTER_BREAK 0
-+
-+#define LT_ELFCLASS ELFCLASS32
-+#define LT_ELF_MACHINE EM_ARM
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/arm/plt.c ltrace-0.3.35/sysdeps/linux-gnu/arm/plt.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/arm/plt.c 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/arm/plt.c 2004-10-22 21:28:41.000000000 +1000
-@@ -0,0 +1,9 @@
-+#include <gelf.h>
-+#include "ltrace.h"
-+#include "elf.h"
-+
-+GElf_Addr
-+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
-+{
-+ return lte->plt_addr + 20 + ndx * 12;
-+}
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/i386/Makefile ltrace-0.3.35/sysdeps/linux-gnu/i386/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/i386/Makefile 2004-10-22 21:28:40.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/i386/Makefile 2004-10-22 21:28:41.000000000 +1000
-@@ -1,4 +1,4 @@
--OBJ = trace.o regs.o
-+OBJ = trace.o regs.o plt.o
-
- all: arch.o
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/i386/arch.h ltrace-0.3.35/sysdeps/linux-gnu/i386/arch.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/i386/arch.h 2004-10-22 21:16:02.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/i386/arch.h 2004-10-22 21:28:41.000000000 +1000
-@@ -1,3 +1,6 @@
- #define BREAKPOINT_VALUE {0xcc}
- #define BREAKPOINT_LENGTH 1
- #define DECR_PC_AFTER_BREAK 1
-+
-+#define LT_ELFCLASS ELFCLASS32
-+#define LT_ELF_MACHINE EM_386
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/i386/plt.c ltrace-0.3.35/sysdeps/linux-gnu/i386/plt.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/i386/plt.c 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/i386/plt.c 2004-10-22 21:28:41.000000000 +1000
-@@ -0,0 +1,9 @@
-+#include <gelf.h>
-+#include "ltrace.h"
-+#include "elf.h"
-+
-+GElf_Addr
-+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
-+{
-+ return lte->plt_addr + (ndx + 1) * 16;
-+}
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/m68k/Makefile ltrace-0.3.35/sysdeps/linux-gnu/m68k/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/m68k/Makefile 2004-10-22 21:28:40.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/m68k/Makefile 2004-10-22 21:28:41.000000000 +1000
-@@ -1,4 +1,4 @@
--OBJ = trace.o regs.o
-+OBJ = trace.o regs.o plt.o
-
- all: arch.o
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/m68k/arch.h ltrace-0.3.35/sysdeps/linux-gnu/m68k/arch.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/m68k/arch.h 2004-10-22 21:16:02.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/m68k/arch.h 2004-10-22 21:28:41.000000000 +1000
-@@ -1,3 +1,6 @@
- #define BREAKPOINT_VALUE { 0x4e, 0x4f }
- #define BREAKPOINT_LENGTH 2
- #define DECR_PC_AFTER_BREAK 2
-+
-+#define LT_ELFCLASS ELFCLASS32
-+#define LT_ELF_MACHINE EM_68K
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/m68k/plt.c ltrace-0.3.35/sysdeps/linux-gnu/m68k/plt.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/m68k/plt.c 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/m68k/plt.c 2004-10-22 21:28:41.000000000 +1000
-@@ -0,0 +1,10 @@
-+#include <gelf.h>
-+#include "ltrace.h"
-+#include "elf.h"
-+
-+GElf_Addr
-+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
-+{
-+ return lte->plt_addr + (ndx + 1)
-+ * ((lte->ehdr.e_flags & EF_CPU32) ? 24 : 12);
-+}
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/ppc/Makefile ltrace-0.3.35/sysdeps/linux-gnu/ppc/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/ppc/Makefile 2004-10-22 21:28:40.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/ppc/Makefile 2004-10-22 21:28:41.000000000 +1000
-@@ -1,4 +1,4 @@
--OBJ = trace.o regs.o
-+OBJ = trace.o regs.o plt.o
-
- all: arch.o
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/ppc/arch.h ltrace-0.3.35/sysdeps/linux-gnu/ppc/arch.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/ppc/arch.h 2004-10-22 21:16:02.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/ppc/arch.h 2004-10-22 21:28:41.000000000 +1000
-@@ -1,3 +1,6 @@
- #define BREAKPOINT_VALUE { 0x7f, 0xe0, 0x00, 0x08 }
- #define BREAKPOINT_LENGTH 4
- #define DECR_PC_AFTER_BREAK 0
-+
-+#define LT_ELFCLASS ELFCLASS32
-+#define LT_ELF_MACHINE EM_PPC
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/ppc/plt.c ltrace-0.3.35/sysdeps/linux-gnu/ppc/plt.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/ppc/plt.c 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/ppc/plt.c 2004-10-22 21:28:41.000000000 +1000
-@@ -0,0 +1,9 @@
-+#include <gelf.h>
-+#include "ltrace.h"
-+#include "elf.h"
-+
-+GElf_Addr
-+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
-+{
-+ return rela->r_offset;
-+}
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/s390/Makefile ltrace-0.3.35/sysdeps/linux-gnu/s390/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/s390/Makefile 2004-10-22 21:28:40.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/s390/Makefile 2004-10-22 21:28:41.000000000 +1000
-@@ -2,7 +2,7 @@
- # S/390 version
- # Copyright (C) 2001 IBM Poughkeepsie, IBM Corporation
- #
--OBJ = trace.o regs.o
-+OBJ = trace.o regs.o plt.o
-
- all: arch.o
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/s390/arch.h ltrace-0.3.35/sysdeps/linux-gnu/s390/arch.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/s390/arch.h 2004-10-22 21:16:02.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/s390/arch.h 2004-10-22 21:28:41.000000000 +1000
-@@ -6,3 +6,6 @@
- #define BREAKPOINT_VALUE { 0x00, 0x01 }
- #define BREAKPOINT_LENGTH 2
- #define DECR_PC_AFTER_BREAK 2
-+
-+#define LT_ELFCLASS ELFCLASS32
-+#define LT_ELF_MACHINE EM_S390
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/s390/plt.c ltrace-0.3.35/sysdeps/linux-gnu/s390/plt.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/s390/plt.c 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/s390/plt.c 2004-10-22 21:28:41.000000000 +1000
-@@ -0,0 +1,9 @@
-+#include <gelf.h>
-+#include "ltrace.h"
-+#include "elf.h"
-+
-+GElf_Addr
-+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
-+{
-+ return lte->plt_addr + (ndx + 1) * 32;
-+}
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/sparc/Makefile ltrace-0.3.35/sysdeps/linux-gnu/sparc/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/sparc/Makefile 2004-10-22 21:28:40.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/sparc/Makefile 2004-10-22 21:28:41.000000000 +1000
-@@ -1,4 +1,4 @@
--OBJ = regs.o trace.o
-+OBJ = regs.o trace.o plt.o
-
- all: arch.o
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/sparc/arch.h ltrace-0.3.35/sysdeps/linux-gnu/sparc/arch.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/sparc/arch.h 2004-10-22 21:16:02.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/sparc/arch.h 2004-10-22 21:28:41.000000000 +1000
-@@ -2,3 +2,6 @@
- #define BREAKPOINT_LENGTH 4
- #define DECR_PC_AFTER_BREAK 0
-
-+#define LT_ELFCLASS ELFCLASS32
-+#define LT_ELF_MACHINE EM_SPARC
-+#define LT_ELF_MACHINE2 EM_SPARC32PLUS
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/sparc/plt.c ltrace-0.3.35/sysdeps/linux-gnu/sparc/plt.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/sparc/plt.c 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/sparc/plt.c 2004-10-22 21:28:41.000000000 +1000
-@@ -0,0 +1,9 @@
-+#include <gelf.h>
-+#include "ltrace.h"
-+#include "elf.h"
-+
-+GElf_Addr
-+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
-+{
-+ return rela->r_offset + 4;
-+}
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/Makefile ltrace-0.3.35/sysdeps/linux-gnu/x86_64/Makefile
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/Makefile 2004-10-22 21:28:40.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/x86_64/Makefile 2004-10-22 21:28:41.000000000 +1000
-@@ -1,4 +1,4 @@
--OBJ = trace.o regs.o ffcheck.o
-+OBJ = trace.o regs.o plt.o
-
- all: arch.o
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/arch.h ltrace-0.3.35/sysdeps/linux-gnu/x86_64/arch.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/arch.h 2004-10-22 21:16:02.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/x86_64/arch.h 2004-10-22 21:28:41.000000000 +1000
-@@ -2,5 +2,5 @@
- #define BREAKPOINT_LENGTH 1
- #define DECR_PC_AFTER_BREAK 1
-
--#define FILEFORMAT_CHECK 1
--#define ELFSIZE 64
-+#define LT_ELFCLASS ELFCLASS64
-+#define LT_ELF_MACHINE EM_X86_64
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/ffcheck.c ltrace-0.3.35/sysdeps/linux-gnu/x86_64/ffcheck.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/ffcheck.c 2004-10-22 21:16:02.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/x86_64/ffcheck.c 2004-10-22 21:28:41.000000000 +1000
-@@ -1,18 +0,0 @@
--#include <elf.h>
--
--int
--ffcheck (void *maddr)
--{
-- Elf64_Ehdr *ehdr=maddr;
--
-- if (! ehdr)
-- return 0;
-- if (
-- ehdr->e_type == 2 &&
-- ehdr->e_machine == 0x3e &&
-- ehdr->e_version == 1
-- )
-- return 1;
--
-- return 0;
--}
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/plt.c ltrace-0.3.35/sysdeps/linux-gnu/x86_64/plt.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/plt.c 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/x86_64/plt.c 2004-10-22 21:28:41.000000000 +1000
-@@ -0,0 +1,9 @@
-+#include <gelf.h>
-+#include "ltrace.h"
-+#include "elf.h"
-+
-+GElf_Addr
-+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
-+{
-+ return lte->plt_addr + (ndx + 1) * 16;
-+}
diff --git a/debian/patches/02demangle.dpatch b/debian/patches/02demangle.dpatch
deleted file mode 100755
index b218389..0000000
--- a/debian/patches/02demangle.dpatch
+++ /dev/null
@@ -1,5779 +0,0 @@
-#! /bin/sh -e
-## 02demangle.dpatch by <apollock@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: No description.
-
-if [ $# -lt 1 ]; then
- echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
- exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}"
-
-case "$1" in
- -patch) patch -p1 ${patch_opts} < $0;;
- -unpatch) patch -R -p1 ${patch_opts} < $0;;
- *)
- echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
- exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/config.h.in ltrace-0.3.35/config.h.in
---- /home/apollock/debian/ltrace/ltrace-0.3.35/config.h.in 2004-10-22 20:12:56.000000000 +1000
-+++ ltrace-0.3.35/config.h.in 2004-10-22 20:13:14.000000000 +1000
-@@ -21,6 +21,9 @@
- /* Define to 1 if you have the `iberty' library (-liberty). */
- #undef HAVE_LIBIBERTY
-
-+/* Define to 1 if you have the `supc++' library (-lsupc++). */
-+#undef HAVE_LIBSUPC__
-+
- /* Define to 1 if you have the <memory.h> header file. */
- #undef HAVE_MEMORY_H
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/configure ltrace-0.3.35/configure
---- /home/apollock/debian/ltrace/ltrace-0.3.35/configure 2004-10-22 20:12:57.000000000 +1000
-+++ ltrace-0.3.35/configure 2004-10-22 20:13:14.000000000 +1000
-@@ -2458,6 +2458,80 @@
- fi
-
-
-+echo "$as_me:$LINENO: checking for __cxa_demangle in -lsupc++" >&5
-+echo $ECHO_N "checking for __cxa_demangle in -lsupc++... $ECHO_C" >&6
-+if test "${ac_cv_lib_supcpp___cxa_demangle+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lsupc++ $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char __cxa_demangle ();
-+int
-+main ()
-+{
-+__cxa_demangle ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag"
-+ || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest$ac_exeext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_lib_supcpp___cxa_demangle=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_supcpp___cxa_demangle=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_supcpp___cxa_demangle" >&5
-+echo "${ECHO_T}$ac_cv_lib_supcpp___cxa_demangle" >&6
-+if test $ac_cv_lib_supcpp___cxa_demangle = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define HAVE_LIBSUPC__ 1
-+_ACEOF
-+
-+ LIBS="-lsupc++ $LIBS"
-+
-+fi
-+
-+
- echo "$as_me:$LINENO: checking ltrace version" >&5
- echo $ECHO_N "checking ltrace version... $ECHO_C" >&6
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/configure.ac ltrace-0.3.35/configure.ac
---- /home/apollock/debian/ltrace/ltrace-0.3.35/configure.ac 2004-10-22 20:12:57.000000000 +1000
-+++ ltrace-0.3.35/configure.ac 2004-10-22 20:13:14.000000000 +1000
-@@ -14,6 +14,7 @@
-
- dnl Checks for libraries.
- AC_CHECK_LIB(iberty, cplus_demangle,,,)
-+AC_CHECK_LIB(supc++, __cxa_demangle,,,)
-
- AC_MSG_CHECKING(ltrace version)
- changequote(<<, >>)
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/configure.orig ltrace-0.3.35/configure.orig
---- /home/apollock/debian/ltrace/ltrace-0.3.35/configure.orig 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/configure.orig 2004-10-22 20:12:57.000000000 +1000
-@@ -0,0 +1,5188 @@
-+#! /bin/sh
-+# Guess values for system-dependent variables and create Makefiles.
-+# Generated by GNU Autoconf 2.59.
-+#
-+# Copyright (C) 2003 Free Software Foundation, Inc.
-+# This configure script is free software; the Free Software Foundation
-+# gives unlimited permission to copy, distribute and modify it.
-+## --------------------- ##
-+## M4sh Initialization. ##
-+## --------------------- ##
-+
-+# Be Bourne compatible
-+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-+ emulate sh
-+ NULLCMD=:
-+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-+ # is contrary to our usage. Disable this feature.
-+ alias -g '${1+"$@"}'='"$@"'
-+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-+ set -o posix
-+fi
-+DUALCASE=1; export DUALCASE # for MKS sh
-+
-+# Support unset when possible.
-+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-+ as_unset=unset
-+else
-+ as_unset=false
-+fi
-+
-+
-+# Work around bugs in pre-3.0 UWIN ksh.
-+$as_unset ENV MAIL MAILPATH
-+PS1='$ '
-+PS2='> '
-+PS4='+ '
-+
-+# NLS nuisances.
-+for as_var in \
-+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-+ LC_TELEPHONE LC_TIME
-+do
-+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-+ eval $as_var=C; export $as_var
-+ else
-+ $as_unset $as_var
-+ fi
-+done
-+
-+# Required to use basename.
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
-+ as_basename=basename
-+else
-+ as_basename=false
-+fi
-+
-+
-+# Name of the executable.
-+as_me=`$as_basename "$0" ||
-+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ X"$0" : 'X\(/\)$' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X/"$0" |
-+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-+ /^X\/\(\/\/\)$/{ s//\1/; q; }
-+ /^X\/\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+
-+
-+# PATH needs CR, and LINENO needs CR and PATH.
-+# Avoid depending upon Character Ranges.
-+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-+as_cr_digits='0123456789'
-+as_cr_alnum=$as_cr_Letters$as_cr_digits
-+
-+# The user is always right.
-+if test "${PATH_SEPARATOR+set}" != set; then
-+ echo "#! /bin/sh" >conf$$.sh
-+ echo "exit 0" >>conf$$.sh
-+ chmod +x conf$$.sh
-+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-+ PATH_SEPARATOR=';'
-+ else
-+ PATH_SEPARATOR=:
-+ fi
-+ rm -f conf$$.sh
-+fi
-+
-+
-+ as_lineno_1=$LINENO
-+ as_lineno_2=$LINENO
-+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-+ test "x$as_lineno_1" != "x$as_lineno_2" &&
-+ test "x$as_lineno_3" = "x$as_lineno_2" || {
-+ # Find who we are. Look in the path if we contain no path at all
-+ # relative or not.
-+ case $0 in
-+ *[\\/]* ) as_myself=$0 ;;
-+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-+done
-+
-+ ;;
-+ esac
-+ # We did not find ourselves, most probably we were run as `sh COMMAND'
-+ # in which case we are not to be found in the path.
-+ if test "x$as_myself" = x; then
-+ as_myself=$0
-+ fi
-+ if test ! -f "$as_myself"; then
-+ { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
-+ { (exit 1); exit 1; }; }
-+ fi
-+ case $CONFIG_SHELL in
-+ '')
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for as_base in sh bash ksh sh5; do
-+ case $as_dir in
-+ /*)
-+ if ("$as_dir/$as_base" -c '
-+ as_lineno_1=$LINENO
-+ as_lineno_2=$LINENO
-+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-+ test "x$as_lineno_1" != "x$as_lineno_2" &&
-+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
-+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
-+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
-+ CONFIG_SHELL=$as_dir/$as_base
-+ export CONFIG_SHELL
-+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-+ fi;;
-+ esac
-+ done
-+done
-+;;
-+ esac
-+
-+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-+ # uniformly replaced by the line number. The first 'sed' inserts a
-+ # line-number line before each line; the second 'sed' does the real
-+ # work. The second script uses 'N' to pair each line-number line
-+ # with the numbered line, and appends trailing '-' during
-+ # substitution so that $LINENO is not a special case at line end.
-+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
-+ sed '=' <$as_myself |
-+ sed '
-+ N
-+ s,$,-,
-+ : loop
-+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-+ t loop
-+ s,-$,,
-+ s,^['$as_cr_digits']*\n,,
-+ ' >$as_me.lineno &&
-+ chmod +x $as_me.lineno ||
-+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-+ { (exit 1); exit 1; }; }
-+
-+ # Don't try to exec as it changes $[0], causing all sort of problems
-+ # (the dirname of $[0] is not the place where we might find the
-+ # original and so on. Autoconf is especially sensible to this).
-+ . ./$as_me.lineno
-+ # Exit status is that of the last command.
-+ exit
-+}
-+
-+
-+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-+ *c*,-n*) ECHO_N= ECHO_C='
-+' ECHO_T=' ' ;;
-+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-+esac
-+
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+rm -f conf$$ conf$$.exe conf$$.file
-+echo >conf$$.file
-+if ln -s conf$$.file conf$$ 2>/dev/null; then
-+ # We could just check for DJGPP; but this test a) works b) is more generic
-+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-+ if test -f conf$$.exe; then
-+ # Don't use ln at all; we don't have any links
-+ as_ln_s='cp -p'
-+ else
-+ as_ln_s='ln -s'
-+ fi
-+elif ln conf$$.file conf$$ 2>/dev/null; then
-+ as_ln_s=ln
-+else
-+ as_ln_s='cp -p'
-+fi
-+rm -f conf$$ conf$$.exe conf$$.file
-+
-+if mkdir -p . 2>/dev/null; then
-+ as_mkdir_p=:
-+else
-+ test -d ./-p && rmdir ./-p
-+ as_mkdir_p=false
-+fi
-+
-+as_executable_p="test -f"
-+
-+# Sed expression to map a string onto a valid CPP name.
-+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-+
-+# Sed expression to map a string onto a valid variable name.
-+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-+
-+
-+# IFS
-+# We need space, tab and new line, in precisely that order.
-+as_nl='
-+'
-+IFS=" $as_nl"
-+
-+# CDPATH.
-+$as_unset CDPATH
-+
-+
-+# Name of the host.
-+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-+# so uname gets run too.
-+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-+
-+exec 6>&1
-+
-+#
-+# Initializations.
-+#
-+ac_default_prefix=/usr/local
-+ac_config_libobj_dir=.
-+cross_compiling=no
-+subdirs=
-+MFLAGS=
-+MAKEFLAGS=
-+SHELL=${CONFIG_SHELL-/bin/sh}
-+
-+# Maximum number of lines to put in a shell here document.
-+# This variable seems obsolete. It should probably be removed, and
-+# only ac_max_sed_lines should be used.
-+: ${ac_max_here_lines=38}
-+
-+# Identity of this package.
-+PACKAGE_NAME=
-+PACKAGE_TARNAME=
-+PACKAGE_VERSION=
-+PACKAGE_STRING=
-+PACKAGE_BUGREPORT=
-+
-+ac_unique_file="ltrace.c"
-+# Factoring default headers for most tests.
-+ac_includes_default="\
-+#include <stdio.h>
-+#if HAVE_SYS_TYPES_H
-+# include <sys/types.h>
-+#endif
-+#if HAVE_SYS_STAT_H
-+# include <sys/stat.h>
-+#endif
-+#if STDC_HEADERS
-+# include <stdlib.h>
-+# include <stddef.h>
-+#else
-+# if HAVE_STDLIB_H
-+# include <stdlib.h>
-+# endif
-+#endif
-+#if HAVE_STRING_H
-+# if !STDC_HEADERS && HAVE_MEMORY_H
-+# include <memory.h>
-+# endif
-+# include <string.h>
-+#endif
-+#if HAVE_STRINGS_H
-+# include <strings.h>
-+#endif
-+#if HAVE_INTTYPES_H
-+# include <inttypes.h>
-+#else
-+# if HAVE_STDINT_H
-+# include <stdint.h>
-+# endif
-+#endif
-+#if HAVE_UNISTD_H
-+# include <unistd.h>
-+#endif"
-+
-+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os HOST_OS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CPP EGREP LIBOBJS LTLIBOBJS'
-+ac_subst_files=''
-+
-+# Initialize some variables set by options.
-+ac_init_help=
-+ac_init_version=false
-+# The variables have the same names as the options, with
-+# dashes changed to underlines.
-+cache_file=/dev/null
-+exec_prefix=NONE
-+no_create=
-+no_recursion=
-+prefix=NONE
-+program_prefix=NONE
-+program_suffix=NONE
-+program_transform_name=s,x,x,
-+silent=
-+site=
-+srcdir=
-+verbose=
-+x_includes=NONE
-+x_libraries=NONE
-+
-+# Installation directory options.
-+# These are left unexpanded so users can "make install exec_prefix=/foo"
-+# and all the variables that are supposed to be based on exec_prefix
-+# by default will actually change.
-+# Use braces instead of parens because sh, perl, etc. also accept them.
-+bindir='${exec_prefix}/bin'
-+sbindir='${exec_prefix}/sbin'
-+libexecdir='${exec_prefix}/libexec'
-+datadir='${prefix}/share'
-+sysconfdir='${prefix}/etc'
-+sharedstatedir='${prefix}/com'
-+localstatedir='${prefix}/var'
-+libdir='${exec_prefix}/lib'
-+includedir='${prefix}/include'
-+oldincludedir='/usr/include'
-+infodir='${prefix}/info'
-+mandir='${prefix}/man'
-+
-+ac_prev=
-+for ac_option
-+do
-+ # If the previous option needs an argument, assign it.
-+ if test -n "$ac_prev"; then
-+ eval "$ac_prev=\$ac_option"
-+ ac_prev=
-+ continue
-+ fi
-+
-+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-+
-+ # Accept the important Cygnus configure options, so we can diagnose typos.
-+
-+ case $ac_option in
-+
-+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
-+ ac_prev=bindir ;;
-+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-+ bindir=$ac_optarg ;;
-+
-+ -build | --build | --buil | --bui | --bu)
-+ ac_prev=build_alias ;;
-+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-+ build_alias=$ac_optarg ;;
-+
-+ -cache-file | --cache-file | --cache-fil | --cache-fi \
-+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-+ ac_prev=cache_file ;;
-+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-+ cache_file=$ac_optarg ;;
-+
-+ --config-cache | -C)
-+ cache_file=config.cache ;;
-+
-+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-+ ac_prev=datadir ;;
-+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-+ | --da=*)
-+ datadir=$ac_optarg ;;
-+
-+ -disable-* | --disable-*)
-+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-+ # Reject names that are not valid shell variable names.
-+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-+ { (exit 1); exit 1; }; }
-+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-+ eval "enable_$ac_feature=no" ;;
-+
-+ -enable-* | --enable-*)
-+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-+ # Reject names that are not valid shell variable names.
-+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-+ { (exit 1); exit 1; }; }
-+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-+ case $ac_option in
-+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-+ *) ac_optarg=yes ;;
-+ esac
-+ eval "enable_$ac_feature='$ac_optarg'" ;;
-+
-+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-+ | --exec | --exe | --ex)
-+ ac_prev=exec_prefix ;;
-+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-+ | --exec=* | --exe=* | --ex=*)
-+ exec_prefix=$ac_optarg ;;
-+
-+ -gas | --gas | --ga | --g)
-+ # Obsolete; use --with-gas.
-+ with_gas=yes ;;
-+
-+ -help | --help | --hel | --he | -h)
-+ ac_init_help=long ;;
-+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-+ ac_init_help=recursive ;;
-+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-+ ac_init_help=short ;;
-+
-+ -host | --host | --hos | --ho)
-+ ac_prev=host_alias ;;
-+ -host=* | --host=* | --hos=* | --ho=*)
-+ host_alias=$ac_optarg ;;
-+
-+ -includedir | --includedir | --includedi | --included | --include \
-+ | --includ | --inclu | --incl | --inc)
-+ ac_prev=includedir ;;
-+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-+ | --includ=* | --inclu=* | --incl=* | --inc=*)
-+ includedir=$ac_optarg ;;
-+
-+ -infodir | --infodir | --infodi | --infod | --info | --inf)
-+ ac_prev=infodir ;;
-+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-+ infodir=$ac_optarg ;;
-+
-+ -libdir | --libdir | --libdi | --libd)
-+ ac_prev=libdir ;;
-+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
-+ libdir=$ac_optarg ;;
-+
-+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-+ | --libexe | --libex | --libe)
-+ ac_prev=libexecdir ;;
-+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-+ | --libexe=* | --libex=* | --libe=*)
-+ libexecdir=$ac_optarg ;;
-+
-+ -localstatedir | --localstatedir | --localstatedi | --localstated \
-+ | --localstate | --localstat | --localsta | --localst \
-+ | --locals | --local | --loca | --loc | --lo)
-+ ac_prev=localstatedir ;;
-+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-+ localstatedir=$ac_optarg ;;
-+
-+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-+ ac_prev=mandir ;;
-+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-+ mandir=$ac_optarg ;;
-+
-+ -nfp | --nfp | --nf)
-+ # Obsolete; use --without-fp.
-+ with_fp=no ;;
-+
-+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-+ | --no-cr | --no-c | -n)
-+ no_create=yes ;;
-+
-+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-+ no_recursion=yes ;;
-+
-+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-+ | --oldin | --oldi | --old | --ol | --o)
-+ ac_prev=oldincludedir ;;
-+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-+ oldincludedir=$ac_optarg ;;
-+
-+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-+ ac_prev=prefix ;;
-+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-+ prefix=$ac_optarg ;;
-+
-+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
-+ | --program-pre | --program-pr | --program-p)
-+ ac_prev=program_prefix ;;
-+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
-+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-+ program_prefix=$ac_optarg ;;
-+
-+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
-+ | --program-suf | --program-su | --program-s)
-+ ac_prev=program_suffix ;;
-+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
-+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-+ program_suffix=$ac_optarg ;;
-+
-+ -program-transform-name | --program-transform-name \
-+ | --program-transform-nam | --program-transform-na \
-+ | --program-transform-n | --program-transform- \
-+ | --program-transform | --program-transfor \
-+ | --program-transfo | --program-transf \
-+ | --program-trans | --program-tran \
-+ | --progr-tra | --program-tr | --program-t)
-+ ac_prev=program_transform_name ;;
-+ -program-transform-name=* | --program-transform-name=* \
-+ | --program-transform-nam=* | --program-transform-na=* \
-+ | --program-transform-n=* | --program-transform-=* \
-+ | --program-transform=* | --program-transfor=* \
-+ | --program-transfo=* | --program-transf=* \
-+ | --program-trans=* | --program-tran=* \
-+ | --progr-tra=* | --program-tr=* | --program-t=*)
-+ program_transform_name=$ac_optarg ;;
-+
-+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-+ | -silent | --silent | --silen | --sile | --sil)
-+ silent=yes ;;
-+
-+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-+ ac_prev=sbindir ;;
-+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-+ | --sbi=* | --sb=*)
-+ sbindir=$ac_optarg ;;
-+
-+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
-+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-+ | --sharedst | --shareds | --shared | --share | --shar \
-+ | --sha | --sh)
-+ ac_prev=sharedstatedir ;;
-+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-+ | --sha=* | --sh=*)
-+ sharedstatedir=$ac_optarg ;;
-+
-+ -site | --site | --sit)
-+ ac_prev=site ;;
-+ -site=* | --site=* | --sit=*)
-+ site=$ac_optarg ;;
-+
-+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-+ ac_prev=srcdir ;;
-+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-+ srcdir=$ac_optarg ;;
-+
-+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-+ | --syscon | --sysco | --sysc | --sys | --sy)
-+ ac_prev=sysconfdir ;;
-+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-+ sysconfdir=$ac_optarg ;;
-+
-+ -target | --target | --targe | --targ | --tar | --ta | --t)
-+ ac_prev=target_alias ;;
-+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-+ target_alias=$ac_optarg ;;
-+
-+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
-+ verbose=yes ;;
-+
-+ -version | --version | --versio | --versi | --vers | -V)
-+ ac_init_version=: ;;
-+
-+ -with-* | --with-*)
-+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-+ # Reject names that are not valid shell variable names.
-+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-+ { echo "$as_me: error: invalid package name: $ac_package" >&2
-+ { (exit 1); exit 1; }; }
-+ ac_package=`echo $ac_package| sed 's/-/_/g'`
-+ case $ac_option in
-+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-+ *) ac_optarg=yes ;;
-+ esac
-+ eval "with_$ac_package='$ac_optarg'" ;;
-+
-+ -without-* | --without-*)
-+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-+ # Reject names that are not valid shell variable names.
-+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-+ { echo "$as_me: error: invalid package name: $ac_package" >&2
-+ { (exit 1); exit 1; }; }
-+ ac_package=`echo $ac_package | sed 's/-/_/g'`
-+ eval "with_$ac_package=no" ;;
-+
-+ --x)
-+ # Obsolete; use --with-x.
-+ with_x=yes ;;
-+
-+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-+ | --x-incl | --x-inc | --x-in | --x-i)
-+ ac_prev=x_includes ;;
-+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-+ x_includes=$ac_optarg ;;
-+
-+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
-+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-+ ac_prev=x_libraries ;;
-+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-+ x_libraries=$ac_optarg ;;
-+
-+ -*) { echo "$as_me: error: unrecognized option: $ac_option
-+Try \`$0 --help' for more information." >&2
-+ { (exit 1); exit 1; }; }
-+ ;;
-+
-+ *=*)
-+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-+ # Reject names that are not valid shell variable names.
-+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-+ { (exit 1); exit 1; }; }
-+ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
-+ eval "$ac_envvar='$ac_optarg'"
-+ export $ac_envvar ;;
-+
-+ *)
-+ # FIXME: should be removed in autoconf 3.0.
-+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
-+ ;;
-+
-+ esac
-+done
-+
-+if test -n "$ac_prev"; then
-+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-+ { echo "$as_me: error: missing argument to $ac_option" >&2
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+# Be sure to have absolute paths.
-+for ac_var in exec_prefix prefix
-+do
-+ eval ac_val=$`echo $ac_var`
-+ case $ac_val in
-+ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
-+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-+ { (exit 1); exit 1; }; };;
-+ esac
-+done
-+
-+# Be sure to have absolute paths.
-+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
-+ localstatedir libdir includedir oldincludedir infodir mandir
-+do
-+ eval ac_val=$`echo $ac_var`
-+ case $ac_val in
-+ [\\/$]* | ?:[\\/]* ) ;;
-+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-+ { (exit 1); exit 1; }; };;
-+ esac
-+done
-+
-+# There might be people who depend on the old broken behavior: `$host'
-+# used to hold the argument of --host etc.
-+# FIXME: To remove some day.
-+build=$build_alias
-+host=$host_alias
-+target=$target_alias
-+
-+# FIXME: To remove some day.
-+if test "x$host_alias" != x; then
-+ if test "x$build_alias" = x; then
-+ cross_compiling=maybe
-+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-+ If a cross compiler is detected then cross compile mode will be used." >&2
-+ elif test "x$build_alias" != "x$host_alias"; then
-+ cross_compiling=yes
-+ fi
-+fi
-+
-+ac_tool_prefix=
-+test -n "$host_alias" && ac_tool_prefix=$host_alias-
-+
-+test "$silent" = yes && exec 6>/dev/null
-+
-+
-+# Find the source files, if location was not specified.
-+if test -z "$srcdir"; then
-+ ac_srcdir_defaulted=yes
-+ # Try the directory containing this script, then its parent.
-+ ac_confdir=`(dirname "$0") 2>/dev/null ||
-+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$0" : 'X\(//\)[^/]' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ X"$0" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$0" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ srcdir=$ac_confdir
-+ if test ! -r $srcdir/$ac_unique_file; then
-+ srcdir=..
-+ fi
-+else
-+ ac_srcdir_defaulted=no
-+fi
-+if test ! -r $srcdir/$ac_unique_file; then
-+ if test "$ac_srcdir_defaulted" = yes; then
-+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
-+ { (exit 1); exit 1; }; }
-+ else
-+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-+ { (exit 1); exit 1; }; }
-+ fi
-+fi
-+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
-+ { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
-+ { (exit 1); exit 1; }; }
-+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
-+ac_env_build_alias_set=${build_alias+set}
-+ac_env_build_alias_value=$build_alias
-+ac_cv_env_build_alias_set=${build_alias+set}
-+ac_cv_env_build_alias_value=$build_alias
-+ac_env_host_alias_set=${host_alias+set}
-+ac_env_host_alias_value=$host_alias
-+ac_cv_env_host_alias_set=${host_alias+set}
-+ac_cv_env_host_alias_value=$host_alias
-+ac_env_target_alias_set=${target_alias+set}
-+ac_env_target_alias_value=$target_alias
-+ac_cv_env_target_alias_set=${target_alias+set}
-+ac_cv_env_target_alias_value=$target_alias
-+ac_env_CC_set=${CC+set}
-+ac_env_CC_value=$CC
-+ac_cv_env_CC_set=${CC+set}
-+ac_cv_env_CC_value=$CC
-+ac_env_CFLAGS_set=${CFLAGS+set}
-+ac_env_CFLAGS_value=$CFLAGS
-+ac_cv_env_CFLAGS_set=${CFLAGS+set}
-+ac_cv_env_CFLAGS_value=$CFLAGS
-+ac_env_LDFLAGS_set=${LDFLAGS+set}
-+ac_env_LDFLAGS_value=$LDFLAGS
-+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
-+ac_cv_env_LDFLAGS_value=$LDFLAGS
-+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
-+ac_env_CPPFLAGS_value=$CPPFLAGS
-+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
-+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
-+ac_env_CPP_set=${CPP+set}
-+ac_env_CPP_value=$CPP
-+ac_cv_env_CPP_set=${CPP+set}
-+ac_cv_env_CPP_value=$CPP
-+
-+#
-+# Report the --help message.
-+#
-+if test "$ac_init_help" = "long"; then
-+ # Omit some internal or obsolete options to make the list less imposing.
-+ # This message is too long to be a string in the A/UX 3.1 sh.
-+ cat <<_ACEOF
-+\`configure' configures this package to adapt to many kinds of systems.
-+
-+Usage: $0 [OPTION]... [VAR=VALUE]...
-+
-+To assign environment variables (e.g., CC, CFLAGS...), specify them as
-+VAR=VALUE. See below for descriptions of some of the useful variables.
-+
-+Defaults for the options are specified in brackets.
-+
-+Configuration:
-+ -h, --help display this help and exit
-+ --help=short display options specific to this package
-+ --help=recursive display the short help of all the included packages
-+ -V, --version display version information and exit
-+ -q, --quiet, --silent do not print \`checking...' messages
-+ --cache-file=FILE cache test results in FILE [disabled]
-+ -C, --config-cache alias for \`--cache-file=config.cache'
-+ -n, --no-create do not create output files
-+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
-+
-+_ACEOF
-+
-+ cat <<_ACEOF
-+Installation directories:
-+ --prefix=PREFIX install architecture-independent files in PREFIX
-+ [$ac_default_prefix]
-+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
-+ [PREFIX]
-+
-+By default, \`make install' will install all the files in
-+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-+for instance \`--prefix=\$HOME'.
-+
-+For better control, use the options below.
-+
-+Fine tuning of the installation directories:
-+ --bindir=DIR user executables [EPREFIX/bin]
-+ --sbindir=DIR system admin executables [EPREFIX/sbin]
-+ --libexecdir=DIR program executables [EPREFIX/libexec]
-+ --datadir=DIR read-only architecture-independent data [PREFIX/share]
-+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
-+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
-+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
-+ --libdir=DIR object code libraries [EPREFIX/lib]
-+ --includedir=DIR C header files [PREFIX/include]
-+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
-+ --infodir=DIR info documentation [PREFIX/info]
-+ --mandir=DIR man documentation [PREFIX/man]
-+_ACEOF
-+
-+ cat <<\_ACEOF
-+
-+System types:
-+ --build=BUILD configure for building on BUILD [guessed]
-+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
-+_ACEOF
-+fi
-+
-+if test -n "$ac_init_help"; then
-+
-+ cat <<\_ACEOF
-+
-+Optional Features:
-+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
-+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
-+ --disable-largefile omit support for large files
-+
-+Some influential environment variables:
-+ CC C compiler command
-+ CFLAGS C compiler flags
-+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
-+ nonstandard directory <lib dir>
-+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
-+ headers in a nonstandard directory <include dir>
-+ CPP C preprocessor
-+
-+Use these variables to override the choices made by `configure' or to help
-+it to find libraries and programs with nonstandard names/locations.
-+
-+_ACEOF
-+fi
-+
-+if test "$ac_init_help" = "recursive"; then
-+ # If there are subdirs, report their specific --help.
-+ ac_popdir=`pwd`
-+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-+ test -d $ac_dir || continue
-+ ac_builddir=.
-+
-+if test "$ac_dir" != .; then
-+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-+ # A "../" for each directory in $ac_dir_suffix.
-+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-+else
-+ ac_dir_suffix= ac_top_builddir=
-+fi
-+
-+case $srcdir in
-+ .) # No --srcdir option. We are building in place.
-+ ac_srcdir=.
-+ if test -z "$ac_top_builddir"; then
-+ ac_top_srcdir=.
-+ else
-+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-+ fi ;;
-+ [\\/]* | ?:[\\/]* ) # Absolute path.
-+ ac_srcdir=$srcdir$ac_dir_suffix;
-+ ac_top_srcdir=$srcdir ;;
-+ *) # Relative path.
-+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
-+esac
-+
-+# Do not use `cd foo && pwd` to compute absolute paths, because
-+# the directories may not exist.
-+case `pwd` in
-+.) ac_abs_builddir="$ac_dir";;
-+*)
-+ case "$ac_dir" in
-+ .) ac_abs_builddir=`pwd`;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_top_builddir=${ac_top_builddir}.;;
-+*)
-+ case ${ac_top_builddir}. in
-+ .) ac_abs_top_builddir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_srcdir=$ac_srcdir;;
-+*)
-+ case $ac_srcdir in
-+ .) ac_abs_srcdir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_top_srcdir=$ac_top_srcdir;;
-+*)
-+ case $ac_top_srcdir in
-+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-+ esac;;
-+esac
-+
-+ cd $ac_dir
-+ # Check for guested configure; otherwise get Cygnus style configure.
-+ if test -f $ac_srcdir/configure.gnu; then
-+ echo
-+ $SHELL $ac_srcdir/configure.gnu --help=recursive
-+ elif test -f $ac_srcdir/configure; then
-+ echo
-+ $SHELL $ac_srcdir/configure --help=recursive
-+ elif test -f $ac_srcdir/configure.ac ||
-+ test -f $ac_srcdir/configure.in; then
-+ echo
-+ $ac_configure --help
-+ else
-+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-+ fi
-+ cd "$ac_popdir"
-+ done
-+fi
-+
-+test -n "$ac_init_help" && exit 0
-+if $ac_init_version; then
-+ cat <<\_ACEOF
-+
-+Copyright (C) 2003 Free Software Foundation, Inc.
-+This configure script is free software; the Free Software Foundation
-+gives unlimited permission to copy, distribute and modify it.
-+_ACEOF
-+ exit 0
-+fi
-+exec 5>config.log
-+cat >&5 <<_ACEOF
-+This file contains any messages produced by compilers while
-+running configure, to aid debugging if configure makes a mistake.
-+
-+It was created by $as_me, which was
-+generated by GNU Autoconf 2.59. Invocation command line was
-+
-+ $ $0 $@
-+
-+_ACEOF
-+{
-+cat <<_ASUNAME
-+## --------- ##
-+## Platform. ##
-+## --------- ##
-+
-+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-+uname -m = `(uname -m) 2>/dev/null || echo unknown`
-+uname -r = `(uname -r) 2>/dev/null || echo unknown`
-+uname -s = `(uname -s) 2>/dev/null || echo unknown`
-+uname -v = `(uname -v) 2>/dev/null || echo unknown`
-+
-+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-+
-+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-+hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
-+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-+
-+_ASUNAME
-+
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ echo "PATH: $as_dir"
-+done
-+
-+} >&5
-+
-+cat >&5 <<_ACEOF
-+
-+
-+## ----------- ##
-+## Core tests. ##
-+## ----------- ##
-+
-+_ACEOF
-+
-+
-+# Keep a trace of the command line.
-+# Strip out --no-create and --no-recursion so they do not pile up.
-+# Strip out --silent because we don't want to record it for future runs.
-+# Also quote any args containing shell meta-characters.
-+# Make two passes to allow for proper duplicate-argument suppression.
-+ac_configure_args=
-+ac_configure_args0=
-+ac_configure_args1=
-+ac_sep=
-+ac_must_keep_next=false
-+for ac_pass in 1 2
-+do
-+ for ac_arg
-+ do
-+ case $ac_arg in
-+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-+ | -silent | --silent | --silen | --sile | --sil)
-+ continue ;;
-+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-+ esac
-+ case $ac_pass in
-+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
-+ 2)
-+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
-+ if test $ac_must_keep_next = true; then
-+ ac_must_keep_next=false # Got value, back to normal.
-+ else
-+ case $ac_arg in
-+ *=* | --config-cache | -C | -disable-* | --disable-* \
-+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-+ | -with-* | --with-* | -without-* | --without-* | --x)
-+ case "$ac_configure_args0 " in
-+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-+ esac
-+ ;;
-+ -* ) ac_must_keep_next=true ;;
-+ esac
-+ fi
-+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
-+ # Get rid of the leading space.
-+ ac_sep=" "
-+ ;;
-+ esac
-+ done
-+done
-+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
-+
-+# When interrupted or exit'd, cleanup temporary files, and complete
-+# config.log. We remove comments because anyway the quotes in there
-+# would cause problems or look ugly.
-+# WARNING: Be sure not to use single quotes in there, as some shells,
-+# such as our DU 5.0 friend, will then `close' the trap.
-+trap 'exit_status=$?
-+ # Save into config.log some information that might help in debugging.
-+ {
-+ echo
-+
-+ cat <<\_ASBOX
-+## ---------------- ##
-+## Cache variables. ##
-+## ---------------- ##
-+_ASBOX
-+ echo
-+ # The following way of writing the cache mishandles newlines in values,
-+{
-+ (set) 2>&1 |
-+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
-+ *ac_space=\ *)
-+ sed -n \
-+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
-+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
-+ ;;
-+ *)
-+ sed -n \
-+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
-+ ;;
-+ esac;
-+}
-+ echo
-+
-+ cat <<\_ASBOX
-+## ----------------- ##
-+## Output variables. ##
-+## ----------------- ##
-+_ASBOX
-+ echo
-+ for ac_var in $ac_subst_vars
-+ do
-+ eval ac_val=$`echo $ac_var`
-+ echo "$ac_var='"'"'$ac_val'"'"'"
-+ done | sort
-+ echo
-+
-+ if test -n "$ac_subst_files"; then
-+ cat <<\_ASBOX
-+## ------------- ##
-+## Output files. ##
-+## ------------- ##
-+_ASBOX
-+ echo
-+ for ac_var in $ac_subst_files
-+ do
-+ eval ac_val=$`echo $ac_var`
-+ echo "$ac_var='"'"'$ac_val'"'"'"
-+ done | sort
-+ echo
-+ fi
-+
-+ if test -s confdefs.h; then
-+ cat <<\_ASBOX
-+## ----------- ##
-+## confdefs.h. ##
-+## ----------- ##
-+_ASBOX
-+ echo
-+ sed "/^$/d" confdefs.h | sort
-+ echo
-+ fi
-+ test "$ac_signal" != 0 &&
-+ echo "$as_me: caught signal $ac_signal"
-+ echo "$as_me: exit $exit_status"
-+ } >&5
-+ rm -f core *.core &&
-+ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
-+ exit $exit_status
-+ ' 0
-+for ac_signal in 1 2 13 15; do
-+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-+done
-+ac_signal=0
-+
-+# confdefs.h avoids OS command line length limits that DEFS can exceed.
-+rm -rf conftest* confdefs.h
-+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-+echo >confdefs.h
-+
-+# Predefined preprocessor variables.
-+
-+cat >>confdefs.h <<_ACEOF
-+#define PACKAGE_NAME "$PACKAGE_NAME"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+#define PACKAGE_VERSION "$PACKAGE_VERSION"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+#define PACKAGE_STRING "$PACKAGE_STRING"
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<_ACEOF
-+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-+_ACEOF
-+
-+
-+# Let the site file select an alternate cache file if it wants to.
-+# Prefer explicitly selected file to automatically selected ones.
-+if test -z "$CONFIG_SITE"; then
-+ if test "x$prefix" != xNONE; then
-+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-+ else
-+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-+ fi
-+fi
-+for ac_site_file in $CONFIG_SITE; do
-+ if test -r "$ac_site_file"; then
-+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-+echo "$as_me: loading site script $ac_site_file" >&6;}
-+ sed 's/^/| /' "$ac_site_file" >&5
-+ . "$ac_site_file"
-+ fi
-+done
-+
-+if test -r "$cache_file"; then
-+ # Some versions of bash will fail to source /dev/null (special
-+ # files actually), so we avoid doing that.
-+ if test -f "$cache_file"; then
-+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-+echo "$as_me: loading cache $cache_file" >&6;}
-+ case $cache_file in
-+ [\\/]* | ?:[\\/]* ) . $cache_file;;
-+ *) . ./$cache_file;;
-+ esac
-+ fi
-+else
-+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-+echo "$as_me: creating cache $cache_file" >&6;}
-+ >$cache_file
-+fi
-+
-+# Check that the precious variables saved in the cache have kept the same
-+# value.
-+ac_cache_corrupted=false
-+for ac_var in `(set) 2>&1 |
-+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
-+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
-+ eval ac_new_set=\$ac_env_${ac_var}_set
-+ eval ac_old_val="\$ac_cv_env_${ac_var}_value"
-+ eval ac_new_val="\$ac_env_${ac_var}_value"
-+ case $ac_old_set,$ac_new_set in
-+ set,)
-+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-+ ac_cache_corrupted=: ;;
-+ ,set)
-+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-+ ac_cache_corrupted=: ;;
-+ ,);;
-+ *)
-+ if test "x$ac_old_val" != "x$ac_new_val"; then
-+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
-+echo "$as_me: former value: $ac_old_val" >&2;}
-+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
-+echo "$as_me: current value: $ac_new_val" >&2;}
-+ ac_cache_corrupted=:
-+ fi;;
-+ esac
-+ # Pass precious variables to config.status.
-+ if test "$ac_new_set" = set; then
-+ case $ac_new_val in
-+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-+ ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-+ *) ac_arg=$ac_var=$ac_new_val ;;
-+ esac
-+ case " $ac_configure_args " in
-+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
-+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-+ esac
-+ fi
-+done
-+if $ac_cache_corrupted; then
-+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ ac_config_headers="$ac_config_headers config.h"
-+
-+
-+
-+ac_aux_dir=
-+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
-+ if test -f $ac_dir/install-sh; then
-+ ac_aux_dir=$ac_dir
-+ ac_install_sh="$ac_aux_dir/install-sh -c"
-+ break
-+ elif test -f $ac_dir/install.sh; then
-+ ac_aux_dir=$ac_dir
-+ ac_install_sh="$ac_aux_dir/install.sh -c"
-+ break
-+ elif test -f $ac_dir/shtool; then
-+ ac_aux_dir=$ac_dir
-+ ac_install_sh="$ac_aux_dir/shtool install -c"
-+ break
-+ fi
-+done
-+if test -z "$ac_aux_dir"; then
-+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
-+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
-+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
-+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
-+
-+# Make sure we can run config.sub.
-+$ac_config_sub sun4 >/dev/null 2>&1 ||
-+ { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
-+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+echo "$as_me:$LINENO: checking build system type" >&5
-+echo $ECHO_N "checking build system type... $ECHO_C" >&6
-+if test "${ac_cv_build+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_build_alias=$build_alias
-+test -z "$ac_cv_build_alias" &&
-+ ac_cv_build_alias=`$ac_config_guess`
-+test -z "$ac_cv_build_alias" &&
-+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
-+ { (exit 1); exit 1; }; }
-+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
-+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
-+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-+echo "${ECHO_T}$ac_cv_build" >&6
-+build=$ac_cv_build
-+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-+
-+
-+echo "$as_me:$LINENO: checking host system type" >&5
-+echo $ECHO_N "checking host system type... $ECHO_C" >&6
-+if test "${ac_cv_host+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_host_alias=$host_alias
-+test -z "$ac_cv_host_alias" &&
-+ ac_cv_host_alias=$ac_cv_build_alias
-+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
-+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
-+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-+echo "${ECHO_T}$ac_cv_host" >&6
-+host=$ac_cv_host
-+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-+
-+
-+HOST_OS="$host_os"
-+
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}gcc; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$ac_cv_prog_CC"; then
-+ ac_ct_CC=$CC
-+ # Extract the first word of "gcc", so it can be a program name with args.
-+set dummy gcc; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_CC"; then
-+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_CC="gcc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+ac_ct_CC=$ac_cv_prog_ac_ct_CC
-+if test -n "$ac_ct_CC"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-+echo "${ECHO_T}$ac_ct_CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ CC=$ac_ct_CC
-+else
-+ CC="$ac_cv_prog_CC"
-+fi
-+
-+if test -z "$CC"; then
-+ if test -n "$ac_tool_prefix"; then
-+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-+set dummy ${ac_tool_prefix}cc; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_CC="${ac_tool_prefix}cc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$ac_cv_prog_CC"; then
-+ ac_ct_CC=$CC
-+ # Extract the first word of "cc", so it can be a program name with args.
-+set dummy cc; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_CC"; then
-+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_CC="cc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+ac_ct_CC=$ac_cv_prog_ac_ct_CC
-+if test -n "$ac_ct_CC"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-+echo "${ECHO_T}$ac_ct_CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ CC=$ac_ct_CC
-+else
-+ CC="$ac_cv_prog_CC"
-+fi
-+
-+fi
-+if test -z "$CC"; then
-+ # Extract the first word of "cc", so it can be a program name with args.
-+set dummy cc; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+ ac_prog_rejected=no
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-+ ac_prog_rejected=yes
-+ continue
-+ fi
-+ ac_cv_prog_CC="cc"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+if test $ac_prog_rejected = yes; then
-+ # We found a bogon in the path, so make sure we never use it.
-+ set dummy $ac_cv_prog_CC
-+ shift
-+ if test $# != 0; then
-+ # We chose a different compiler from the bogus one.
-+ # However, it has the same basename, so the bogon will be chosen
-+ # first if we set CC to just the basename; use the full file name.
-+ shift
-+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-+ fi
-+fi
-+fi
-+fi
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+fi
-+if test -z "$CC"; then
-+ if test -n "$ac_tool_prefix"; then
-+ for ac_prog in cl
-+ do
-+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$CC"; then
-+ ac_cv_prog_CC="$CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+CC=$ac_cv_prog_CC
-+if test -n "$CC"; then
-+ echo "$as_me:$LINENO: result: $CC" >&5
-+echo "${ECHO_T}$CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$CC" && break
-+ done
-+fi
-+if test -z "$CC"; then
-+ ac_ct_CC=$CC
-+ for ac_prog in cl
-+do
-+ # Extract the first word of "$ac_prog", so it can be a program name with args.
-+set dummy $ac_prog; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if test -n "$ac_ct_CC"; then
-+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+ ac_cv_prog_ac_ct_CC="$ac_prog"
-+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+ break 2
-+ fi
-+done
-+done
-+
-+fi
-+fi
-+ac_ct_CC=$ac_cv_prog_ac_ct_CC
-+if test -n "$ac_ct_CC"; then
-+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-+echo "${ECHO_T}$ac_ct_CC" >&6
-+else
-+ echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+ test -n "$ac_ct_CC" && break
-+done
-+
-+ CC=$ac_ct_CC
-+fi
-+
-+fi
-+
-+
-+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: no acceptable C compiler found in \$PATH
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+# Provide some information about the compiler.
-+echo "$as_me:$LINENO:" \
-+ "checking for C compiler version" >&5
-+ac_compiler=`set X $ac_compile; echo $2`
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
-+ (eval $ac_compiler --version </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
-+ (eval $ac_compiler -v </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
-+ (eval $ac_compiler -V </dev/null >&5) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }
-+
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+ac_clean_files_save=$ac_clean_files
-+ac_clean_files="$ac_clean_files a.out a.exe b.out"
-+# Try to create an executable without -o first, disregard a.out.
-+# It will help us diagnose broken compilers, and finding out an intuition
-+# of exeext.
-+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
-+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
-+ (eval $ac_link_default) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
-+ # Find the output, starting from the most likely. This scheme is
-+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
-+# resort.
-+
-+# Be careful to initialize this variable, since it used to be cached.
-+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
-+ac_cv_exeext=
-+# b.out is created by i960 compilers.
-+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
-+do
-+ test -f "$ac_file" || continue
-+ case $ac_file in
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
-+ ;;
-+ conftest.$ac_ext )
-+ # This is the source file.
-+ ;;
-+ [ab].out )
-+ # We found the default executable, but exeext='' is most
-+ # certainly right.
-+ break;;
-+ *.* )
-+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-+ # FIXME: I believe we export ac_cv_exeext for Libtool,
-+ # but it would be cool to find out if it's true. Does anybody
-+ # maintain Libtool? --akim.
-+ export ac_cv_exeext
-+ break;;
-+ * )
-+ break;;
-+ esac
-+done
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: C compiler cannot create executables
-+See \`config.log' for more details." >&2;}
-+ { (exit 77); exit 77; }; }
-+fi
-+
-+ac_exeext=$ac_cv_exeext
-+echo "$as_me:$LINENO: result: $ac_file" >&5
-+echo "${ECHO_T}$ac_file" >&6
-+
-+# Check the compiler produces executables we can run. If not, either
-+# the compiler is broken, or we cross compile.
-+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
-+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-+# If not cross compiling, check that we can run a simple program.
-+if test "$cross_compiling" != yes; then
-+ if { ac_try='./$ac_file'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ cross_compiling=no
-+ else
-+ if test "$cross_compiling" = maybe; then
-+ cross_compiling=yes
-+ else
-+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
-+If you meant to cross compile, use \`--host'.
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot run C compiled programs.
-+If you meant to cross compile, use \`--host'.
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: yes" >&5
-+echo "${ECHO_T}yes" >&6
-+
-+rm -f a.out a.exe conftest$ac_cv_exeext b.out
-+ac_clean_files=$ac_clean_files_save
-+# Check the compiler produces executables we can run. If not, either
-+# the compiler is broken, or we cross compile.
-+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-+echo "$as_me:$LINENO: result: $cross_compiling" >&5
-+echo "${ECHO_T}$cross_compiling" >&6
-+
-+echo "$as_me:$LINENO: checking for suffix of executables" >&5
-+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
-+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
-+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-+# work properly (i.e., refer to `conftest.exe'), while it won't with
-+# `rm'.
-+for ac_file in conftest.exe conftest conftest.*; do
-+ test -f "$ac_file" || continue
-+ case $ac_file in
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
-+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-+ export ac_cv_exeext
-+ break;;
-+ * ) break;;
-+ esac
-+done
-+else
-+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+rm -f conftest$ac_cv_exeext
-+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-+echo "${ECHO_T}$ac_cv_exeext" >&6
-+
-+rm -f conftest.$ac_ext
-+EXEEXT=$ac_cv_exeext
-+ac_exeext=$EXEEXT
-+echo "$as_me:$LINENO: checking for suffix of object files" >&5
-+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
-+if test "${ac_cv_objext+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.o conftest.obj
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; then
-+ for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
-+ case $ac_file in
-+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
-+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-+ break;;
-+ esac
-+done
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: cannot compute suffix of object files: cannot compile
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+rm -f conftest.$ac_cv_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-+echo "${ECHO_T}$ac_cv_objext" >&6
-+OBJEXT=$ac_cv_objext
-+ac_objext=$OBJEXT
-+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
-+if test "${ac_cv_c_compiler_gnu+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+#ifndef __GNUC__
-+ choke me
-+#endif
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_compiler_gnu=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_compiler_gnu=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ac_cv_c_compiler_gnu=$ac_compiler_gnu
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
-+GCC=`test $ac_compiler_gnu = yes && echo yes`
-+ac_test_CFLAGS=${CFLAGS+set}
-+ac_save_CFLAGS=$CFLAGS
-+CFLAGS="-g"
-+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
-+if test "${ac_cv_prog_cc_g+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_prog_cc_g=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_prog_cc_g=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
-+if test "$ac_test_CFLAGS" = set; then
-+ CFLAGS=$ac_save_CFLAGS
-+elif test $ac_cv_prog_cc_g = yes; then
-+ if test "$GCC" = yes; then
-+ CFLAGS="-g -O2"
-+ else
-+ CFLAGS="-g"
-+ fi
-+else
-+ if test "$GCC" = yes; then
-+ CFLAGS="-O2"
-+ else
-+ CFLAGS=
-+ fi
-+fi
-+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
-+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
-+if test "${ac_cv_prog_cc_stdc+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_prog_cc_stdc=no
-+ac_save_CC=$CC
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <stdarg.h>
-+#include <stdio.h>
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-+struct buf { int x; };
-+FILE * (*rcsopen) (struct buf *, struct stat *, int);
-+static char *e (p, i)
-+ char **p;
-+ int i;
-+{
-+ return p[i];
-+}
-+static char *f (char * (*g) (char **, int), char **p, ...)
-+{
-+ char *s;
-+ va_list v;
-+ va_start (v,p);
-+ s = g (p, va_arg (v,int));
-+ va_end (v);
-+ return s;
-+}
-+
-+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
-+ function prototypes and stuff, but not '\xHH' hex character constants.
-+ These don't provoke an error unfortunately, instead are silently treated
-+ as 'x'. The following induces an error, until -std1 is added to get
-+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
-+ array size at least. It's necessary to write '\x00'==0 to get something
-+ that's true only with -std1. */
-+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-+
-+int test (int i, double x);
-+struct s1 {int (*f) (int a);};
-+struct s2 {int (*f) (double a);};
-+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-+int argc;
-+char **argv;
-+int
-+main ()
-+{
-+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+# Don't try gcc -ansi; that turns off useful extensions and
-+# breaks some systems' header files.
-+# AIX -qlanglvl=ansi
-+# Ultrix and OSF/1 -std1
-+# HP-UX 10.20 and later -Ae
-+# HP-UX older versions -Aa -D_HPUX_SOURCE
-+# SVR4 -Xc -D__EXTENSIONS__
-+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-+do
-+ CC="$ac_save_CC $ac_arg"
-+ rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_prog_cc_stdc=$ac_arg
-+break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext
-+done
-+rm -f conftest.$ac_ext conftest.$ac_objext
-+CC=$ac_save_CC
-+
-+fi
-+
-+case "x$ac_cv_prog_cc_stdc" in
-+ x|xno)
-+ echo "$as_me:$LINENO: result: none needed" >&5
-+echo "${ECHO_T}none needed" >&6 ;;
-+ *)
-+ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
-+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
-+ CC="$CC $ac_cv_prog_cc_stdc" ;;
-+esac
-+
-+# Some people use a C++ compiler to compile C. Since we use `exit',
-+# in C++ we need to declare it. In case someone uses the same compiler
-+# for both compiling C and C++ we need to have the C++ compiler decide
-+# the declaration of exit, since it's the most demanding environment.
-+cat >conftest.$ac_ext <<_ACEOF
-+#ifndef __cplusplus
-+ choke me
-+#endif
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ for ac_declaration in \
-+ '' \
-+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
-+ 'extern "C" void std::exit (int); using std::exit;' \
-+ 'extern "C" void exit (int) throw ();' \
-+ 'extern "C" void exit (int);' \
-+ 'void exit (int);'
-+do
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_declaration
-+#include <stdlib.h>
-+int
-+main ()
-+{
-+exit (42);
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+continue
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_declaration
-+int
-+main ()
-+{
-+exit (42);
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+done
-+rm -f conftest*
-+if test -n "$ac_declaration"; then
-+ echo '#ifdef __cplusplus' >>confdefs.h
-+ echo $ac_declaration >>confdefs.h
-+ echo '#endif' >>confdefs.h
-+fi
-+
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+# Find a good install program. We prefer a C program (faster),
-+# so one script is as good as another. But avoid the broken or
-+# incompatible versions:
-+# SysV /etc/install, /usr/sbin/install
-+# SunOS /usr/etc/install
-+# IRIX /sbin/install
-+# AIX /bin/install
-+# AmigaOS /C/install, which installs bootblocks on floppy discs
-+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-+# OS/2's system install, which has a completely different semantic
-+# ./install, which can be erroneously created by make from ./install.sh.
-+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
-+if test -z "$INSTALL"; then
-+if test "${ac_cv_path_install+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ # Account for people who put trailing slashes in PATH elements.
-+case $as_dir/ in
-+ ./ | .// | /cC/* | \
-+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
-+ /usr/ucb/* ) ;;
-+ *)
-+ # OSF1 and SCO ODT 3.0 have their own names for install.
-+ # Don't use installbsd from OSF since it installs stuff as root
-+ # by default.
-+ for ac_prog in ginstall scoinst install; do
-+ for ac_exec_ext in '' $ac_executable_extensions; do
-+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-+ if test $ac_prog = install &&
-+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-+ # AIX install. It has an incompatible calling convention.
-+ :
-+ elif test $ac_prog = install &&
-+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-+ # program-specific install script used by HP pwplus--don't use.
-+ :
-+ else
-+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-+ break 3
-+ fi
-+ fi
-+ done
-+ done
-+ ;;
-+esac
-+done
-+
-+
-+fi
-+ if test "${ac_cv_path_install+set}" = set; then
-+ INSTALL=$ac_cv_path_install
-+ else
-+ # As a last resort, use the slow shell script. We don't cache a
-+ # path for INSTALL within a source directory, because that will
-+ # break other packages using the cache if that directory is
-+ # removed, or if the path is relative.
-+ INSTALL=$ac_install_sh
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $INSTALL" >&5
-+echo "${ECHO_T}$INSTALL" >&6
-+
-+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-+# It thinks the first close brace ends the variable substitution.
-+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-+
-+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-+
-+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-+
-+
-+
-+
-+echo "$as_me:$LINENO: checking for cplus_demangle in -liberty" >&5
-+echo $ECHO_N "checking for cplus_demangle in -liberty... $ECHO_C" >&6
-+if test "${ac_cv_lib_iberty_cplus_demangle+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-liberty $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char cplus_demangle ();
-+int
-+main ()
-+{
-+cplus_demangle ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest$ac_exeext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_lib_iberty_cplus_demangle=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_iberty_cplus_demangle=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_iberty_cplus_demangle" >&5
-+echo "${ECHO_T}$ac_cv_lib_iberty_cplus_demangle" >&6
-+if test $ac_cv_lib_iberty_cplus_demangle = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define HAVE_LIBIBERTY 1
-+_ACEOF
-+
-+ LIBS="-liberty $LIBS"
-+
-+fi
-+
-+
-+echo "$as_me:$LINENO: checking ltrace version" >&5
-+echo $ECHO_N "checking ltrace version... $ECHO_C" >&6
-+
-+ltrace_version=`sed -n '1s/ltrace (\([0-9.]\+\)).*/\1/p' ${srcdir}/debian/changelog`
-+sed -e "s/@VERSION@/${ltrace_version}/g" \
-+ < ${srcdir}/ltrace.spec.in > ${srcdir}/ltrace.spec
-+
-+echo "$as_me:$LINENO: result: $ltrace_version" >&5
-+echo "${ECHO_T}$ltrace_version" >&6
-+
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
-+# On Suns, sometimes $CPP names a directory.
-+if test -n "$CPP" && test -d "$CPP"; then
-+ CPP=
-+fi
-+if test -z "$CPP"; then
-+ if test "${ac_cv_prog_CPP+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ # Double quotes because CPP needs to be expanded
-+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-+ do
-+ ac_preproc_ok=false
-+for ac_c_preproc_warn_flag in '' yes
-+do
-+ # Use a header file that comes with gcc, so configuring glibc
-+ # with a fresh cross-compiler works.
-+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ # <limits.h> exists even on freestanding compilers.
-+ # On the NeXT, cc -E runs the code through the compiler's parser,
-+ # not just through cpp. "Syntax error" is here to catch this case.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+ Syntax error
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Broken: fails on valid input.
-+continue
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+ # OK, works on sane cases. Now check whether non-existent headers
-+ # can be detected and how.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <ac_nonexistent.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ # Broken: success on invalid input.
-+continue
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Passes both tests.
-+ac_preproc_ok=:
-+break
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+done
-+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-+rm -f conftest.err conftest.$ac_ext
-+if $ac_preproc_ok; then
-+ break
-+fi
-+
-+ done
-+ ac_cv_prog_CPP=$CPP
-+
-+fi
-+ CPP=$ac_cv_prog_CPP
-+else
-+ ac_cv_prog_CPP=$CPP
-+fi
-+echo "$as_me:$LINENO: result: $CPP" >&5
-+echo "${ECHO_T}$CPP" >&6
-+ac_preproc_ok=false
-+for ac_c_preproc_warn_flag in '' yes
-+do
-+ # Use a header file that comes with gcc, so configuring glibc
-+ # with a fresh cross-compiler works.
-+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ # <limits.h> exists even on freestanding compilers.
-+ # On the NeXT, cc -E runs the code through the compiler's parser,
-+ # not just through cpp. "Syntax error" is here to catch this case.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+ Syntax error
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ :
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Broken: fails on valid input.
-+continue
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+ # OK, works on sane cases. Now check whether non-existent headers
-+ # can be detected and how.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <ac_nonexistent.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ # Broken: success on invalid input.
-+continue
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ # Passes both tests.
-+ac_preproc_ok=:
-+break
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+
-+done
-+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-+rm -f conftest.err conftest.$ac_ext
-+if $ac_preproc_ok; then
-+ :
-+else
-+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-+See \`config.log' for more details." >&5
-+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-+See \`config.log' for more details." >&2;}
-+ { (exit 1); exit 1; }; }
-+fi
-+
-+ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+echo "$as_me:$LINENO: checking for egrep" >&5
-+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
-+if test "${ac_cv_prog_egrep+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ if echo a | (grep -E '(a|b)') >/dev/null 2>&1
-+ then ac_cv_prog_egrep='grep -E'
-+ else ac_cv_prog_egrep='egrep'
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
-+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
-+ EGREP=$ac_cv_prog_egrep
-+
-+
-+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-+if test "${ac_cv_header_stdc+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <stdlib.h>
-+#include <stdarg.h>
-+#include <string.h>
-+#include <float.h>
-+
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_header_stdc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_header_stdc=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <string.h>
-+
-+_ACEOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ $EGREP "memchr" >/dev/null 2>&1; then
-+ :
-+else
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <stdlib.h>
-+
-+_ACEOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ $EGREP "free" >/dev/null 2>&1; then
-+ :
-+else
-+ ac_cv_header_stdc=no
-+fi
-+rm -f conftest*
-+
-+fi
-+
-+if test $ac_cv_header_stdc = yes; then
-+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-+ if test "$cross_compiling" = yes; then
-+ :
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <ctype.h>
-+#if ((' ' & 0x0FF) == 0x020)
-+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-+#else
-+# define ISLOWER(c) \
-+ (('a' <= (c) && (c) <= 'i') \
-+ || ('j' <= (c) && (c) <= 'r') \
-+ || ('s' <= (c) && (c) <= 'z'))
-+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-+#endif
-+
-+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-+int
-+main ()
-+{
-+ int i;
-+ for (i = 0; i < 256; i++)
-+ if (XOR (islower (i), ISLOWER (i))
-+ || toupper (i) != TOUPPER (i))
-+ exit(2);
-+ exit (0);
-+}
-+_ACEOF
-+rm -f conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ :
-+else
-+ echo "$as_me: program exited with status $ac_status" >&5
-+echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+( exit $ac_status )
-+ac_cv_header_stdc=no
-+fi
-+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-+fi
-+fi
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-+echo "${ECHO_T}$ac_cv_header_stdc" >&6
-+if test $ac_cv_header_stdc = yes; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define STDC_HEADERS 1
-+_ACEOF
-+
-+fi
-+
-+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-+ inttypes.h stdint.h unistd.h
-+do
-+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+
-+#include <$ac_header>
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ eval "$as_ac_Header=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_Header=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+if test `eval echo '${'$as_ac_Header'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+
-+done
-+
-+
-+
-+for ac_header in getopt.h
-+do
-+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking $ac_header usability" >&5
-+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+#include <$ac_header>
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_header_compiler=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+# Is the header present?
-+echo "$as_me:$LINENO: checking $ac_header presence" >&5
-+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <$ac_header>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ ac_header_preproc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ ac_header_preproc=no
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6
-+
-+# So? What about this header?
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-+ (
-+ cat <<\_ASBOX
-+## ------------------------------------------ ##
-+## Report this to the AC_PACKAGE_NAME lists. ##
-+## ------------------------------------------ ##
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+esac
-+echo "$as_me:$LINENO: checking for $ac_header" >&5
-+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_Header+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ eval "$as_ac_Header=\$ac_header_preproc"
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-+
-+fi
-+if test `eval echo '${'$as_ac_Header'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+
-+done
-+
-+echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
-+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
-+if test "${ac_cv_c_const+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+int
-+main ()
-+{
-+/* FIXME: Include the comments suggested by Paul. */
-+#ifndef __cplusplus
-+ /* Ultrix mips cc rejects this. */
-+ typedef int charset[2];
-+ const charset x;
-+ /* SunOS 4.1.1 cc rejects this. */
-+ char const *const *ccp;
-+ char **p;
-+ /* NEC SVR4.0.2 mips cc rejects this. */
-+ struct point {int x, y;};
-+ static struct point const zero = {0,0};
-+ /* AIX XL C 1.02.0.0 rejects this.
-+ It does not let you subtract one const X* pointer from another in
-+ an arm of an if-expression whose if-part is not a constant
-+ expression */
-+ const char *g = "string";
-+ ccp = &g + (g ? g-g : 0);
-+ /* HPUX 7.0 cc rejects these. */
-+ ++ccp;
-+ p = (char**) ccp;
-+ ccp = (char const *const *) p;
-+ { /* SCO 3.2v4 cc rejects this. */
-+ char *t;
-+ char const *s = 0 ? (char *) 0 : (char const *) 0;
-+
-+ *t++ = 0;
-+ }
-+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
-+ int x[] = {25, 17};
-+ const int *foo = &x[0];
-+ ++foo;
-+ }
-+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-+ typedef const int *iptr;
-+ iptr p = 0;
-+ ++p;
-+ }
-+ { /* AIX XL C 1.02.0.0 rejects this saying
-+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-+ struct s { int j; const int *ap[3]; };
-+ struct s *b; b->j = 5;
-+ }
-+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-+ const int foo = 10;
-+ }
-+#endif
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_c_const=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_c_const=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
-+echo "${ECHO_T}$ac_cv_c_const" >&6
-+if test $ac_cv_c_const = no; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define const
-+_ACEOF
-+
-+fi
-+
-+echo "$as_me:$LINENO: checking for uid_t in sys/types.h" >&5
-+echo $ECHO_N "checking for uid_t in sys/types.h... $ECHO_C" >&6
-+if test "${ac_cv_type_uid_t+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <sys/types.h>
-+
-+_ACEOF
-+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-+ $EGREP "uid_t" >/dev/null 2>&1; then
-+ ac_cv_type_uid_t=yes
-+else
-+ ac_cv_type_uid_t=no
-+fi
-+rm -f conftest*
-+
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5
-+echo "${ECHO_T}$ac_cv_type_uid_t" >&6
-+if test $ac_cv_type_uid_t = no; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define uid_t int
-+_ACEOF
-+
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define gid_t int
-+_ACEOF
-+
-+fi
-+
-+echo "$as_me:$LINENO: checking for pid_t" >&5
-+echo $ECHO_N "checking for pid_t... $ECHO_C" >&6
-+if test "${ac_cv_type_pid_t+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+int
-+main ()
-+{
-+if ((pid_t *) 0)
-+ return 0;
-+if (sizeof (pid_t))
-+ return 0;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_type_pid_t=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_type_pid_t=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
-+echo "${ECHO_T}$ac_cv_type_pid_t" >&6
-+if test $ac_cv_type_pid_t = yes; then
-+ :
-+else
-+
-+cat >>confdefs.h <<_ACEOF
-+#define pid_t int
-+_ACEOF
-+
-+fi
-+
-+
-+
-+for ac_func in getopt getopt_long
-+do
-+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-+echo "$as_me:$LINENO: checking for $ac_func" >&5
-+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-+if eval "test \"\${$as_ac_var+set}\" = set"; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
-+#define $ac_func innocuous_$ac_func
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+ which can conflict with char $ac_func (); below.
-+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+ <limits.h> exists even on freestanding compilers. */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#endif
-+
-+#undef $ac_func
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+{
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char $ac_func ();
-+/* The GNU C library defines this for functions which it implements
-+ to always fail with ENOSYS. Some functions are actually named
-+ something starting with __ and the normal name is an alias. */
-+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-+choke me
-+#else
-+char (*f) () = $ac_func;
-+#endif
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+int
-+main ()
-+{
-+return f != $ac_func;
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest$ac_exeext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ eval "$as_ac_var=yes"
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+eval "$as_ac_var=no"
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+fi
-+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-+if test `eval echo '${'$as_ac_var'}'` = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-+_ACEOF
-+
-+fi
-+done
-+
-+
-+if test "${ac_cv_header_gelf_h+set}" = set; then
-+ echo "$as_me:$LINENO: checking for gelf.h" >&5
-+echo $ECHO_N "checking for gelf.h... $ECHO_C" >&6
-+if test "${ac_cv_header_gelf_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_gelf_h" >&5
-+echo "${ECHO_T}$ac_cv_header_gelf_h" >&6
-+else
-+ # Is the header compilable?
-+echo "$as_me:$LINENO: checking gelf.h usability" >&5
-+echo $ECHO_N "checking gelf.h usability... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+$ac_includes_default
-+#include <gelf.h>
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_header_compiler=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_header_compiler=no
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-+echo "${ECHO_T}$ac_header_compiler" >&6
-+
-+# Is the header present?
-+echo "$as_me:$LINENO: checking gelf.h presence" >&5
-+echo $ECHO_N "checking gelf.h presence... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <gelf.h>
-+_ACEOF
-+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } >/dev/null; then
-+ if test -s conftest.err; then
-+ ac_cpp_err=$ac_c_preproc_warn_flag
-+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-+ else
-+ ac_cpp_err=
-+ fi
-+else
-+ ac_cpp_err=yes
-+fi
-+if test -z "$ac_cpp_err"; then
-+ ac_header_preproc=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ ac_header_preproc=no
-+fi
-+rm -f conftest.err conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-+echo "${ECHO_T}$ac_header_preproc" >&6
-+
-+# So? What about this header?
-+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-+ yes:no: )
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: accepted by the compiler, rejected by the preprocessor!" >&5
-+echo "$as_me: WARNING: gelf.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: proceeding with the compiler's result" >&5
-+echo "$as_me: WARNING: gelf.h: proceeding with the compiler's result" >&2;}
-+ ac_header_preproc=yes
-+ ;;
-+ no:yes:* )
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: present but cannot be compiled" >&5
-+echo "$as_me: WARNING: gelf.h: present but cannot be compiled" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: check for missing prerequisite headers?" >&5
-+echo "$as_me: WARNING: gelf.h: check for missing prerequisite headers?" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: see the Autoconf documentation" >&5
-+echo "$as_me: WARNING: gelf.h: see the Autoconf documentation" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: section \"Present But Cannot Be Compiled\"" >&5
-+echo "$as_me: WARNING: gelf.h: section \"Present But Cannot Be Compiled\"" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: proceeding with the preprocessor's result" >&5
-+echo "$as_me: WARNING: gelf.h: proceeding with the preprocessor's result" >&2;}
-+ { echo "$as_me:$LINENO: WARNING: gelf.h: in the future, the compiler will take precedence" >&5
-+echo "$as_me: WARNING: gelf.h: in the future, the compiler will take precedence" >&2;}
-+ (
-+ cat <<\_ASBOX
-+## ------------------------------------------ ##
-+## Report this to the AC_PACKAGE_NAME lists. ##
-+## ------------------------------------------ ##
-+_ASBOX
-+ ) |
-+ sed "s/^/$as_me: WARNING: /" >&2
-+ ;;
-+esac
-+echo "$as_me:$LINENO: checking for gelf.h" >&5
-+echo $ECHO_N "checking for gelf.h... $ECHO_C" >&6
-+if test "${ac_cv_header_gelf_h+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_header_gelf_h=$ac_header_preproc
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_header_gelf_h" >&5
-+echo "${ECHO_T}$ac_cv_header_gelf_h" >&6
-+
-+fi
-+if test $ac_cv_header_gelf_h = yes; then
-+ :
-+else
-+
-+ if test -f /usr/include/elfutils/gelf.h; then
-+ CPPFLAGS="$CPPFLAGS -I /usr/include/elfutils"
-+ elif test -f /usr/local/include/elfutils/gelf.h; then
-+ CPPFLAGS="$CPPFLAGS -I /usr/local/include/elfutils"
-+ elif test -f /usr/include/libelf/gelf.h; then
-+ CPPFLAGS="$CPPFLAGS -I /usr/include/libelf"
-+ elif test -f /usr/local/include/libelf/gelf.h; then
-+ CPPFLAGS="$CPPFLAGS -I /usr/local/include/libelf"
-+ else
-+ { { echo "$as_me:$LINENO: error: gelf.h not found" >&5
-+echo "$as_me: error: gelf.h not found" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+fi
-+
-+
-+
-+echo "$as_me:$LINENO: checking for gelf_getdyn in -lelf" >&5
-+echo $ECHO_N "checking for gelf_getdyn in -lelf... $ECHO_C" >&6
-+if test "${ac_cv_lib_elf_gelf_getdyn+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_check_lib_save_LIBS=$LIBS
-+LIBS="-lelf $LIBS"
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+
-+/* Override any gcc2 internal prototype to avoid an error. */
-+#ifdef __cplusplus
-+extern "C"
-+#endif
-+/* We use char because int might match the return type of a gcc2
-+ builtin and then its argument prototype would still apply. */
-+char gelf_getdyn ();
-+int
-+main ()
-+{
-+gelf_getdyn ();
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext conftest$ac_exeext
-+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-+ (eval $ac_link) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest$ac_exeext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_lib_elf_gelf_getdyn=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+ac_cv_lib_elf_gelf_getdyn=no
-+fi
-+rm -f conftest.err conftest.$ac_objext \
-+ conftest$ac_exeext conftest.$ac_ext
-+LIBS=$ac_check_lib_save_LIBS
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_lib_elf_gelf_getdyn" >&5
-+echo "${ECHO_T}$ac_cv_lib_elf_gelf_getdyn" >&6
-+if test $ac_cv_lib_elf_gelf_getdyn = yes; then
-+ cat >>confdefs.h <<_ACEOF
-+#define HAVE_LIBELF 1
-+_ACEOF
-+
-+ LIBS="-lelf $LIBS"
-+
-+fi
-+
-+
-+ac_cv_have_elf_c_read_mmap=no
-+echo "$as_me:$LINENO: checking elf_begin accepts ELF_C_READ_MMAP" >&5
-+echo $ECHO_N "checking elf_begin accepts ELF_C_READ_MMAP... $ECHO_C" >&6
-+cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <gelf.h>
-+int
-+main ()
-+{
-+Elf *elf = elf_begin (4, ELF_C_READ_MMAP, 0);
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_have_elf_c_read_mmap=yes
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+echo "$as_me:$LINENO: result: $ac_cv_have_elf_c_read_mmap" >&5
-+echo "${ECHO_T}$ac_cv_have_elf_c_read_mmap" >&6
-+if test $ac_cv_have_elf_c_read_mmap = yes; then
-+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE_ELF_C_READ_MMAP 1
-+_ACEOF
-+
-+# Check whether --enable-largefile or --disable-largefile was given.
-+if test "${enable_largefile+set}" = set; then
-+ enableval="$enable_largefile"
-+
-+fi;
-+if test "$enable_largefile" != no; then
-+
-+ echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
-+echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6
-+if test "${ac_cv_sys_largefile_CC+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ ac_cv_sys_largefile_CC=no
-+ if test "$GCC" != yes; then
-+ ac_save_CC=$CC
-+ while :; do
-+ # IRIX 6.2 and later do not support large files by default,
-+ # so use the C compiler's -n32 option if that helps.
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <sys/types.h>
-+ /* Check that off_t can represent 2**63 - 1 correctly.
-+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
-+ since some C++ compilers masquerading as C compilers
-+ incorrectly reject 9223372036854775807. */
-+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-+ && LARGE_OFF_T % 2147483647 == 1)
-+ ? 1 : -1];
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+ rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext
-+ CC="$CC -n32"
-+ rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_sys_largefile_CC=' -n32'; break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext
-+ break
-+ done
-+ CC=$ac_save_CC
-+ rm -f conftest.$ac_ext
-+ fi
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
-+echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
-+ if test "$ac_cv_sys_largefile_CC" != no; then
-+ CC=$CC$ac_cv_sys_largefile_CC
-+ fi
-+
-+ echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-+echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
-+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ while :; do
-+ ac_cv_sys_file_offset_bits=no
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <sys/types.h>
-+ /* Check that off_t can represent 2**63 - 1 correctly.
-+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
-+ since some C++ compilers masquerading as C compilers
-+ incorrectly reject 9223372036854775807. */
-+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-+ && LARGE_OFF_T % 2147483647 == 1)
-+ ? 1 : -1];
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#define _FILE_OFFSET_BITS 64
-+#include <sys/types.h>
-+ /* Check that off_t can represent 2**63 - 1 correctly.
-+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
-+ since some C++ compilers masquerading as C compilers
-+ incorrectly reject 9223372036854775807. */
-+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-+ && LARGE_OFF_T % 2147483647 == 1)
-+ ? 1 : -1];
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_sys_file_offset_bits=64; break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ break
-+done
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
-+echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
-+if test "$ac_cv_sys_file_offset_bits" != no; then
-+
-+cat >>confdefs.h <<_ACEOF
-+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-+_ACEOF
-+
-+fi
-+rm -f conftest*
-+ echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
-+echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6
-+if test "${ac_cv_sys_large_files+set}" = set; then
-+ echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+ while :; do
-+ ac_cv_sys_large_files=no
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#include <sys/types.h>
-+ /* Check that off_t can represent 2**63 - 1 correctly.
-+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
-+ since some C++ compilers masquerading as C compilers
-+ incorrectly reject 9223372036854775807. */
-+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-+ && LARGE_OFF_T % 2147483647 == 1)
-+ ? 1 : -1];
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ cat >conftest.$ac_ext <<_ACEOF
-+/* confdefs.h. */
-+_ACEOF
-+cat confdefs.h >>conftest.$ac_ext
-+cat >>conftest.$ac_ext <<_ACEOF
-+/* end confdefs.h. */
-+#define _LARGE_FILES 1
-+#include <sys/types.h>
-+ /* Check that off_t can represent 2**63 - 1 correctly.
-+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
-+ since some C++ compilers masquerading as C compilers
-+ incorrectly reject 9223372036854775807. */
-+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-+ && LARGE_OFF_T % 2147483647 == 1)
-+ ? 1 : -1];
-+int
-+main ()
-+{
-+
-+ ;
-+ return 0;
-+}
-+_ACEOF
-+rm -f conftest.$ac_objext
-+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-+ (eval $ac_compile) 2>conftest.er1
-+ ac_status=$?
-+ grep -v '^ *+' conftest.er1 >conftest.err
-+ rm -f conftest.er1
-+ cat conftest.err >&5
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); } &&
-+ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; } &&
-+ { ac_try='test -s conftest.$ac_objext'
-+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-+ (eval $ac_try) 2>&5
-+ ac_status=$?
-+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
-+ (exit $ac_status); }; }; then
-+ ac_cv_sys_large_files=1; break
-+else
-+ echo "$as_me: failed program was:" >&5
-+sed 's/^/| /' conftest.$ac_ext >&5
-+
-+fi
-+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-+ break
-+done
-+fi
-+echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
-+echo "${ECHO_T}$ac_cv_sys_large_files" >&6
-+if test "$ac_cv_sys_large_files" != no; then
-+
-+cat >>confdefs.h <<_ACEOF
-+#define _LARGE_FILES $ac_cv_sys_large_files
-+_ACEOF
-+
-+fi
-+rm -f conftest*
-+fi
-+
-+fi
-+ ac_config_files="$ac_config_files Makefile"
-+cat >confcache <<\_ACEOF
-+# This file is a shell script that caches the results of configure
-+# tests run on this system so they can be shared between configure
-+# scripts and configure runs, see configure's option --config-cache.
-+# It is not useful on other systems. If it contains results you don't
-+# want to keep, you may remove or edit it.
-+#
-+# config.status only pays attention to the cache file if you give it
-+# the --recheck option to rerun configure.
-+#
-+# `ac_cv_env_foo' variables (set or unset) will be overridden when
-+# loading this file, other *unset* `ac_cv_foo' will be assigned the
-+# following values.
-+
-+_ACEOF
-+
-+# The following way of writing the cache mishandles newlines in values,
-+# but we know of no workaround that is simple, portable, and efficient.
-+# So, don't put newlines in cache variables' values.
-+# Ultrix sh set writes to stderr and can't be redirected directly,
-+# and sets the high bit in the cache file unless we assign to the vars.
-+{
-+ (set) 2>&1 |
-+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
-+ *ac_space=\ *)
-+ # `set' does not quote correctly, so add quotes (double-quote
-+ # substitution turns \\\\ into \\, and sed turns \\ into \).
-+ sed -n \
-+ "s/'/'\\\\''/g;
-+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-+ ;;
-+ *)
-+ # `set' quotes correctly as required by POSIX, so do not add quotes.
-+ sed -n \
-+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
-+ ;;
-+ esac;
-+} |
-+ sed '
-+ t clear
-+ : clear
-+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-+ t end
-+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-+ : end' >>confcache
-+if diff $cache_file confcache >/dev/null 2>&1; then :; else
-+ if test -w $cache_file; then
-+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
-+ cat confcache >$cache_file
-+ else
-+ echo "not updating unwritable cache $cache_file"
-+ fi
-+fi
-+rm -f confcache
-+
-+test "x$prefix" = xNONE && prefix=$ac_default_prefix
-+# Let make expand exec_prefix.
-+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-+
-+# VPATH may cause trouble with some makes, so we remove $(srcdir),
-+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-+# trailing colons and then remove the whole line if VPATH becomes empty
-+# (actually we leave an empty line to preserve line numbers).
-+if test "x$srcdir" = x.; then
-+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
-+s/:*\$(srcdir):*/:/;
-+s/:*\${srcdir}:*/:/;
-+s/:*@srcdir@:*/:/;
-+s/^\([^=]*=[ ]*\):*/\1/;
-+s/:*$//;
-+s/^[^=]*=[ ]*$//;
-+}'
-+fi
-+
-+DEFS=-DHAVE_CONFIG_H
-+
-+ac_libobjs=
-+ac_ltlibobjs=
-+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-+ # 1. Remove the extension, and $U if already installed.
-+ ac_i=`echo "$ac_i" |
-+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
-+ # 2. Add them.
-+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
-+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
-+done
-+LIBOBJS=$ac_libobjs
-+
-+LTLIBOBJS=$ac_ltlibobjs
-+
-+
-+
-+: ${CONFIG_STATUS=./config.status}
-+ac_clean_files_save=$ac_clean_files
-+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-+echo "$as_me: creating $CONFIG_STATUS" >&6;}
-+cat >$CONFIG_STATUS <<_ACEOF
-+#! $SHELL
-+# Generated by $as_me.
-+# Run this file to recreate the current configuration.
-+# Compiler output produced by configure, useful for debugging
-+# configure, is in config.log if it exists.
-+
-+debug=false
-+ac_cs_recheck=false
-+ac_cs_silent=false
-+SHELL=\${CONFIG_SHELL-$SHELL}
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+## --------------------- ##
-+## M4sh Initialization. ##
-+## --------------------- ##
-+
-+# Be Bourne compatible
-+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-+ emulate sh
-+ NULLCMD=:
-+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-+ # is contrary to our usage. Disable this feature.
-+ alias -g '${1+"$@"}'='"$@"'
-+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-+ set -o posix
-+fi
-+DUALCASE=1; export DUALCASE # for MKS sh
-+
-+# Support unset when possible.
-+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-+ as_unset=unset
-+else
-+ as_unset=false
-+fi
-+
-+
-+# Work around bugs in pre-3.0 UWIN ksh.
-+$as_unset ENV MAIL MAILPATH
-+PS1='$ '
-+PS2='> '
-+PS4='+ '
-+
-+# NLS nuisances.
-+for as_var in \
-+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-+ LC_TELEPHONE LC_TIME
-+do
-+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-+ eval $as_var=C; export $as_var
-+ else
-+ $as_unset $as_var
-+ fi
-+done
-+
-+# Required to use basename.
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
-+ as_basename=basename
-+else
-+ as_basename=false
-+fi
-+
-+
-+# Name of the executable.
-+as_me=`$as_basename "$0" ||
-+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-+ X"$0" : 'X\(//\)$' \| \
-+ X"$0" : 'X\(/\)$' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X/"$0" |
-+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-+ /^X\/\(\/\/\)$/{ s//\1/; q; }
-+ /^X\/\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+
-+
-+# PATH needs CR, and LINENO needs CR and PATH.
-+# Avoid depending upon Character Ranges.
-+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-+as_cr_digits='0123456789'
-+as_cr_alnum=$as_cr_Letters$as_cr_digits
-+
-+# The user is always right.
-+if test "${PATH_SEPARATOR+set}" != set; then
-+ echo "#! /bin/sh" >conf$$.sh
-+ echo "exit 0" >>conf$$.sh
-+ chmod +x conf$$.sh
-+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-+ PATH_SEPARATOR=';'
-+ else
-+ PATH_SEPARATOR=:
-+ fi
-+ rm -f conf$$.sh
-+fi
-+
-+
-+ as_lineno_1=$LINENO
-+ as_lineno_2=$LINENO
-+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-+ test "x$as_lineno_1" != "x$as_lineno_2" &&
-+ test "x$as_lineno_3" = "x$as_lineno_2" || {
-+ # Find who we are. Look in the path if we contain no path at all
-+ # relative or not.
-+ case $0 in
-+ *[\\/]* ) as_myself=$0 ;;
-+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-+done
-+
-+ ;;
-+ esac
-+ # We did not find ourselves, most probably we were run as `sh COMMAND'
-+ # in which case we are not to be found in the path.
-+ if test "x$as_myself" = x; then
-+ as_myself=$0
-+ fi
-+ if test ! -f "$as_myself"; then
-+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
-+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi
-+ case $CONFIG_SHELL in
-+ '')
-+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-+do
-+ IFS=$as_save_IFS
-+ test -z "$as_dir" && as_dir=.
-+ for as_base in sh bash ksh sh5; do
-+ case $as_dir in
-+ /*)
-+ if ("$as_dir/$as_base" -c '
-+ as_lineno_1=$LINENO
-+ as_lineno_2=$LINENO
-+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-+ test "x$as_lineno_1" != "x$as_lineno_2" &&
-+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
-+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
-+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
-+ CONFIG_SHELL=$as_dir/$as_base
-+ export CONFIG_SHELL
-+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-+ fi;;
-+ esac
-+ done
-+done
-+;;
-+ esac
-+
-+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-+ # uniformly replaced by the line number. The first 'sed' inserts a
-+ # line-number line before each line; the second 'sed' does the real
-+ # work. The second script uses 'N' to pair each line-number line
-+ # with the numbered line, and appends trailing '-' during
-+ # substitution so that $LINENO is not a special case at line end.
-+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
-+ sed '=' <$as_myself |
-+ sed '
-+ N
-+ s,$,-,
-+ : loop
-+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-+ t loop
-+ s,-$,,
-+ s,^['$as_cr_digits']*\n,,
-+ ' >$as_me.lineno &&
-+ chmod +x $as_me.lineno ||
-+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
-+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
-+ { (exit 1); exit 1; }; }
-+
-+ # Don't try to exec as it changes $[0], causing all sort of problems
-+ # (the dirname of $[0] is not the place where we might find the
-+ # original and so on. Autoconf is especially sensible to this).
-+ . ./$as_me.lineno
-+ # Exit status is that of the last command.
-+ exit
-+}
-+
-+
-+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-+ *c*,-n*) ECHO_N= ECHO_C='
-+' ECHO_T=' ' ;;
-+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
-+esac
-+
-+if expr a : '\(a\)' >/dev/null 2>&1; then
-+ as_expr=expr
-+else
-+ as_expr=false
-+fi
-+
-+rm -f conf$$ conf$$.exe conf$$.file
-+echo >conf$$.file
-+if ln -s conf$$.file conf$$ 2>/dev/null; then
-+ # We could just check for DJGPP; but this test a) works b) is more generic
-+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-+ if test -f conf$$.exe; then
-+ # Don't use ln at all; we don't have any links
-+ as_ln_s='cp -p'
-+ else
-+ as_ln_s='ln -s'
-+ fi
-+elif ln conf$$.file conf$$ 2>/dev/null; then
-+ as_ln_s=ln
-+else
-+ as_ln_s='cp -p'
-+fi
-+rm -f conf$$ conf$$.exe conf$$.file
-+
-+if mkdir -p . 2>/dev/null; then
-+ as_mkdir_p=:
-+else
-+ test -d ./-p && rmdir ./-p
-+ as_mkdir_p=false
-+fi
-+
-+as_executable_p="test -f"
-+
-+# Sed expression to map a string onto a valid CPP name.
-+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-+
-+# Sed expression to map a string onto a valid variable name.
-+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-+
-+
-+# IFS
-+# We need space, tab and new line, in precisely that order.
-+as_nl='
-+'
-+IFS=" $as_nl"
-+
-+# CDPATH.
-+$as_unset CDPATH
-+
-+exec 6>&1
-+
-+# Open the log real soon, to keep \$[0] and so on meaningful, and to
-+# report actual input values of CONFIG_FILES etc. instead of their
-+# values after options handling. Logging --version etc. is OK.
-+exec 5>>config.log
-+{
-+ echo
-+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-+## Running $as_me. ##
-+_ASBOX
-+} >&5
-+cat >&5 <<_CSEOF
-+
-+This file was extended by $as_me, which was
-+generated by GNU Autoconf 2.59. Invocation command line was
-+
-+ CONFIG_FILES = $CONFIG_FILES
-+ CONFIG_HEADERS = $CONFIG_HEADERS
-+ CONFIG_LINKS = $CONFIG_LINKS
-+ CONFIG_COMMANDS = $CONFIG_COMMANDS
-+ $ $0 $@
-+
-+_CSEOF
-+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
-+echo >&5
-+_ACEOF
-+
-+# Files that config.status was made for.
-+if test -n "$ac_config_files"; then
-+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
-+fi
-+
-+if test -n "$ac_config_headers"; then
-+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
-+fi
-+
-+if test -n "$ac_config_links"; then
-+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
-+fi
-+
-+if test -n "$ac_config_commands"; then
-+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-+fi
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+ac_cs_usage="\
-+\`$as_me' instantiates files from templates according to the
-+current configuration.
-+
-+Usage: $0 [OPTIONS] [FILE]...
-+
-+ -h, --help print this help, then exit
-+ -V, --version print version number, then exit
-+ -q, --quiet do not print progress messages
-+ -d, --debug don't remove temporary files
-+ --recheck update $as_me by reconfiguring in the same conditions
-+ --file=FILE[:TEMPLATE]
-+ instantiate the configuration file FILE
-+ --header=FILE[:TEMPLATE]
-+ instantiate the configuration header FILE
-+
-+Configuration files:
-+$config_files
-+
-+Configuration headers:
-+$config_headers
-+
-+Report bugs to <bug-autoconf@gnu.org>."
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<_ACEOF
-+ac_cs_version="\\
-+config.status
-+configured by $0, generated by GNU Autoconf 2.59,
-+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-+
-+Copyright (C) 2003 Free Software Foundation, Inc.
-+This config.status script is free software; the Free Software Foundation
-+gives unlimited permission to copy, distribute and modify it."
-+srcdir=$srcdir
-+INSTALL="$INSTALL"
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+# If no file are specified by the user, then we need to provide default
-+# value. By we need to know if files were specified by the user.
-+ac_need_defaults=:
-+while test $# != 0
-+do
-+ case $1 in
-+ --*=*)
-+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
-+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
-+ ac_shift=:
-+ ;;
-+ -*)
-+ ac_option=$1
-+ ac_optarg=$2
-+ ac_shift=shift
-+ ;;
-+ *) # This is not an option, so the user has probably given explicit
-+ # arguments.
-+ ac_option=$1
-+ ac_need_defaults=false;;
-+ esac
-+
-+ case $ac_option in
-+ # Handling of the options.
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-+ ac_cs_recheck=: ;;
-+ --version | --vers* | -V )
-+ echo "$ac_cs_version"; exit 0 ;;
-+ --he | --h)
-+ # Conflict between --help and --header
-+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
-+Try \`$0 --help' for more information." >&5
-+echo "$as_me: error: ambiguous option: $1
-+Try \`$0 --help' for more information." >&2;}
-+ { (exit 1); exit 1; }; };;
-+ --help | --hel | -h )
-+ echo "$ac_cs_usage"; exit 0 ;;
-+ --debug | --d* | -d )
-+ debug=: ;;
-+ --file | --fil | --fi | --f )
-+ $ac_shift
-+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
-+ ac_need_defaults=false;;
-+ --header | --heade | --head | --hea )
-+ $ac_shift
-+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
-+ ac_need_defaults=false;;
-+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
-+ ac_cs_silent=: ;;
-+
-+ # This is an error.
-+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
-+Try \`$0 --help' for more information." >&5
-+echo "$as_me: error: unrecognized option: $1
-+Try \`$0 --help' for more information." >&2;}
-+ { (exit 1); exit 1; }; } ;;
-+
-+ *) ac_config_targets="$ac_config_targets $1" ;;
-+
-+ esac
-+ shift
-+done
-+
-+ac_configure_extra_args=
-+
-+if $ac_cs_silent; then
-+ exec 6>/dev/null
-+ ac_configure_extra_args="$ac_configure_extra_args --silent"
-+fi
-+
-+_ACEOF
-+cat >>$CONFIG_STATUS <<_ACEOF
-+if \$ac_cs_recheck; then
-+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-+fi
-+
-+_ACEOF
-+
-+
-+
-+
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+for ac_config_target in $ac_config_targets
-+do
-+ case "$ac_config_target" in
-+ # Handling of arguments.
-+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-+ { (exit 1); exit 1; }; };;
-+ esac
-+done
-+
-+# If the user did not use the arguments to specify the items to instantiate,
-+# then the envvar interface is used. Set only those that are not.
-+# We use the long form for the default assignment because of an extremely
-+# bizarre bug on SunOS 4.1.3.
-+if $ac_need_defaults; then
-+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-+fi
-+
-+# Have a temporary directory for convenience. Make it in the build tree
-+# simply because there is no reason to put it here, and in addition,
-+# creating and moving files from /tmp can sometimes cause problems.
-+# Create a temporary directory, and hook for its removal unless debugging.
-+$debug ||
-+{
-+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-+ trap '{ (exit 1); exit 1; }' 1 2 13 15
-+}
-+
-+# Create a (secure) tmp directory for tmp files.
-+
-+{
-+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
-+ test -n "$tmp" && test -d "$tmp"
-+} ||
-+{
-+ tmp=./confstat$$-$RANDOM
-+ (umask 077 && mkdir $tmp)
-+} ||
-+{
-+ echo "$me: cannot create a temporary directory in ." >&2
-+ { (exit 1); exit 1; }
-+}
-+
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<_ACEOF
-+
-+#
-+# CONFIG_FILES section.
-+#
-+
-+# No need to generate the scripts if there are no CONFIG_FILES.
-+# This happens for instance when ./config.status config.h
-+if test -n "\$CONFIG_FILES"; then
-+ # Protect against being on the right side of a sed subst in config.status.
-+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
-+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
-+s,@SHELL@,$SHELL,;t t
-+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
-+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
-+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
-+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
-+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
-+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
-+s,@exec_prefix@,$exec_prefix,;t t
-+s,@prefix@,$prefix,;t t
-+s,@program_transform_name@,$program_transform_name,;t t
-+s,@bindir@,$bindir,;t t
-+s,@sbindir@,$sbindir,;t t
-+s,@libexecdir@,$libexecdir,;t t
-+s,@datadir@,$datadir,;t t
-+s,@sysconfdir@,$sysconfdir,;t t
-+s,@sharedstatedir@,$sharedstatedir,;t t
-+s,@localstatedir@,$localstatedir,;t t
-+s,@libdir@,$libdir,;t t
-+s,@includedir@,$includedir,;t t
-+s,@oldincludedir@,$oldincludedir,;t t
-+s,@infodir@,$infodir,;t t
-+s,@mandir@,$mandir,;t t
-+s,@build_alias@,$build_alias,;t t
-+s,@host_alias@,$host_alias,;t t
-+s,@target_alias@,$target_alias,;t t
-+s,@DEFS@,$DEFS,;t t
-+s,@ECHO_C@,$ECHO_C,;t t
-+s,@ECHO_N@,$ECHO_N,;t t
-+s,@ECHO_T@,$ECHO_T,;t t
-+s,@LIBS@,$LIBS,;t t
-+s,@build@,$build,;t t
-+s,@build_cpu@,$build_cpu,;t t
-+s,@build_vendor@,$build_vendor,;t t
-+s,@build_os@,$build_os,;t t
-+s,@host@,$host,;t t
-+s,@host_cpu@,$host_cpu,;t t
-+s,@host_vendor@,$host_vendor,;t t
-+s,@host_os@,$host_os,;t t
-+s,@HOST_OS@,$HOST_OS,;t t
-+s,@CC@,$CC,;t t
-+s,@CFLAGS@,$CFLAGS,;t t
-+s,@LDFLAGS@,$LDFLAGS,;t t
-+s,@CPPFLAGS@,$CPPFLAGS,;t t
-+s,@ac_ct_CC@,$ac_ct_CC,;t t
-+s,@EXEEXT@,$EXEEXT,;t t
-+s,@OBJEXT@,$OBJEXT,;t t
-+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
-+s,@CPP@,$CPP,;t t
-+s,@EGREP@,$EGREP,;t t
-+s,@LIBOBJS@,$LIBOBJS,;t t
-+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
-+CEOF
-+
-+_ACEOF
-+
-+ cat >>$CONFIG_STATUS <<\_ACEOF
-+ # Split the substitutions into bite-sized pieces for seds with
-+ # small command number limits, like on Digital OSF/1 and HP-UX.
-+ ac_max_sed_lines=48
-+ ac_sed_frag=1 # Number of current file.
-+ ac_beg=1 # First line for current file.
-+ ac_end=$ac_max_sed_lines # Line after last line for current file.
-+ ac_more_lines=:
-+ ac_sed_cmds=
-+ while $ac_more_lines; do
-+ if test $ac_beg -gt 1; then
-+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-+ else
-+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-+ fi
-+ if test ! -s $tmp/subs.frag; then
-+ ac_more_lines=false
-+ else
-+ # The purpose of the label and of the branching condition is to
-+ # speed up the sed processing (if there are no `@' at all, there
-+ # is no need to browse any of the substitutions).
-+ # These are the two extra sed commands mentioned above.
-+ (echo ':t
-+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
-+ if test -z "$ac_sed_cmds"; then
-+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
-+ else
-+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
-+ fi
-+ ac_sed_frag=`expr $ac_sed_frag + 1`
-+ ac_beg=$ac_end
-+ ac_end=`expr $ac_end + $ac_max_sed_lines`
-+ fi
-+ done
-+ if test -z "$ac_sed_cmds"; then
-+ ac_sed_cmds=cat
-+ fi
-+fi # test -n "$CONFIG_FILES"
-+
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
-+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-+ case $ac_file in
-+ - | *:- | *:-:* ) # input from stdin
-+ cat >$tmp/stdin
-+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-+ * ) ac_file_in=$ac_file.in ;;
-+ esac
-+
-+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
-+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$ac_file" : 'X\(//\)[^/]' \| \
-+ X"$ac_file" : 'X\(//\)$' \| \
-+ X"$ac_file" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$ac_file" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ { if $as_mkdir_p; then
-+ mkdir -p "$ac_dir"
-+ else
-+ as_dir="$ac_dir"
-+ as_dirs=
-+ while test ! -d "$as_dir"; do
-+ as_dirs="$as_dir $as_dirs"
-+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
-+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$as_dir" : 'X\(//\)[^/]' \| \
-+ X"$as_dir" : 'X\(//\)$' \| \
-+ X"$as_dir" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$as_dir" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ done
-+ test ! -n "$as_dirs" || mkdir $as_dirs
-+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-+ { (exit 1); exit 1; }; }; }
-+
-+ ac_builddir=.
-+
-+if test "$ac_dir" != .; then
-+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-+ # A "../" for each directory in $ac_dir_suffix.
-+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-+else
-+ ac_dir_suffix= ac_top_builddir=
-+fi
-+
-+case $srcdir in
-+ .) # No --srcdir option. We are building in place.
-+ ac_srcdir=.
-+ if test -z "$ac_top_builddir"; then
-+ ac_top_srcdir=.
-+ else
-+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-+ fi ;;
-+ [\\/]* | ?:[\\/]* ) # Absolute path.
-+ ac_srcdir=$srcdir$ac_dir_suffix;
-+ ac_top_srcdir=$srcdir ;;
-+ *) # Relative path.
-+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
-+esac
-+
-+# Do not use `cd foo && pwd` to compute absolute paths, because
-+# the directories may not exist.
-+case `pwd` in
-+.) ac_abs_builddir="$ac_dir";;
-+*)
-+ case "$ac_dir" in
-+ .) ac_abs_builddir=`pwd`;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_top_builddir=${ac_top_builddir}.;;
-+*)
-+ case ${ac_top_builddir}. in
-+ .) ac_abs_top_builddir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_srcdir=$ac_srcdir;;
-+*)
-+ case $ac_srcdir in
-+ .) ac_abs_srcdir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-+ esac;;
-+esac
-+case $ac_abs_builddir in
-+.) ac_abs_top_srcdir=$ac_top_srcdir;;
-+*)
-+ case $ac_top_srcdir in
-+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
-+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-+ esac;;
-+esac
-+
-+
-+ case $INSTALL in
-+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
-+ esac
-+
-+ # Let's still pretend it is `configure' which instantiates (i.e., don't
-+ # use $as_me), people would be surprised to read:
-+ # /* config.h. Generated by config.status. */
-+ if test x"$ac_file" = x-; then
-+ configure_input=
-+ else
-+ configure_input="$ac_file. "
-+ fi
-+ configure_input=$configure_input"Generated from `echo $ac_file_in |
-+ sed 's,.*/,,'` by configure."
-+
-+ # First look for the input files in the build tree, otherwise in the
-+ # src tree.
-+ ac_file_inputs=`IFS=:
-+ for f in $ac_file_in; do
-+ case $f in
-+ -) echo $tmp/stdin ;;
-+ [\\/$]*)
-+ # Absolute (can't be DOS-style, as IFS=:)
-+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-+echo "$as_me: error: cannot find input file: $f" >&2;}
-+ { (exit 1); exit 1; }; }
-+ echo "$f";;
-+ *) # Relative
-+ if test -f "$f"; then
-+ # Build tree
-+ echo "$f"
-+ elif test -f "$srcdir/$f"; then
-+ # Source tree
-+ echo "$srcdir/$f"
-+ else
-+ # /dev/null tree
-+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-+echo "$as_me: error: cannot find input file: $f" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi;;
-+ esac
-+ done` || { (exit 1); exit 1; }
-+
-+ if test x"$ac_file" != x-; then
-+ { echo "$as_me:$LINENO: creating $ac_file" >&5
-+echo "$as_me: creating $ac_file" >&6;}
-+ rm -f "$ac_file"
-+ fi
-+_ACEOF
-+cat >>$CONFIG_STATUS <<_ACEOF
-+ sed "$ac_vpsub
-+$extrasub
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+:t
-+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-+s,@configure_input@,$configure_input,;t t
-+s,@srcdir@,$ac_srcdir,;t t
-+s,@abs_srcdir@,$ac_abs_srcdir,;t t
-+s,@top_srcdir@,$ac_top_srcdir,;t t
-+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
-+s,@builddir@,$ac_builddir,;t t
-+s,@abs_builddir@,$ac_abs_builddir,;t t
-+s,@top_builddir@,$ac_top_builddir,;t t
-+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
-+s,@INSTALL@,$ac_INSTALL,;t t
-+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
-+ rm -f $tmp/stdin
-+ if test x"$ac_file" != x-; then
-+ mv $tmp/out $ac_file
-+ else
-+ cat $tmp/out
-+ rm -f $tmp/out
-+ fi
-+
-+done
-+_ACEOF
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+#
-+# CONFIG_HEADER section.
-+#
-+
-+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-+# NAME is the cpp macro being defined and VALUE is the value it is being given.
-+#
-+# ac_d sets the value in "#define NAME VALUE" lines.
-+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-+ac_dB='[ ].*$,\1#\2'
-+ac_dC=' '
-+ac_dD=',;t'
-+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-+ac_uB='$,\1#\2define\3'
-+ac_uC=' '
-+ac_uD=',;t'
-+
-+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
-+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-+ case $ac_file in
-+ - | *:- | *:-:* ) # input from stdin
-+ cat >$tmp/stdin
-+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-+ * ) ac_file_in=$ac_file.in ;;
-+ esac
-+
-+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
-+echo "$as_me: creating $ac_file" >&6;}
-+
-+ # First look for the input files in the build tree, otherwise in the
-+ # src tree.
-+ ac_file_inputs=`IFS=:
-+ for f in $ac_file_in; do
-+ case $f in
-+ -) echo $tmp/stdin ;;
-+ [\\/$]*)
-+ # Absolute (can't be DOS-style, as IFS=:)
-+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-+echo "$as_me: error: cannot find input file: $f" >&2;}
-+ { (exit 1); exit 1; }; }
-+ # Do quote $f, to prevent DOS paths from being IFS'd.
-+ echo "$f";;
-+ *) # Relative
-+ if test -f "$f"; then
-+ # Build tree
-+ echo "$f"
-+ elif test -f "$srcdir/$f"; then
-+ # Source tree
-+ echo "$srcdir/$f"
-+ else
-+ # /dev/null tree
-+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-+echo "$as_me: error: cannot find input file: $f" >&2;}
-+ { (exit 1); exit 1; }; }
-+ fi;;
-+ esac
-+ done` || { (exit 1); exit 1; }
-+ # Remove the trailing spaces.
-+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
-+
-+_ACEOF
-+
-+# Transform confdefs.h into two sed scripts, `conftest.defines' and
-+# `conftest.undefs', that substitutes the proper values into
-+# config.h.in to produce config.h. The first handles `#define'
-+# templates, and the second `#undef' templates.
-+# And first: Protect against being on the right side of a sed subst in
-+# config.status. Protect against being in an unquoted here document
-+# in config.status.
-+rm -f conftest.defines conftest.undefs
-+# Using a here document instead of a string reduces the quoting nightmare.
-+# Putting comments in sed scripts is not portable.
-+#
-+# `end' is used to avoid that the second main sed command (meant for
-+# 0-ary CPP macros) applies to n-ary macro definitions.
-+# See the Autoconf documentation for `clear'.
-+cat >confdef2sed.sed <<\_ACEOF
-+s/[\\&,]/\\&/g
-+s,[\\$`],\\&,g
-+t clear
-+: clear
-+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
-+t end
-+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
-+: end
-+_ACEOF
-+# If some macros were called several times there might be several times
-+# the same #defines, which is useless. Nevertheless, we may not want to
-+# sort them, since we want the *last* AC-DEFINE to be honored.
-+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
-+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
-+rm -f confdef2sed.sed
-+
-+# This sed command replaces #undef with comments. This is necessary, for
-+# example, in the case of _POSIX_SOURCE, which is predefined and required
-+# on some systems where configure will not decide to define it.
-+cat >>conftest.undefs <<\_ACEOF
-+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
-+_ACEOF
-+
-+# Break up conftest.defines because some shells have a limit on the size
-+# of here documents, and old seds have small limits too (100 cmds).
-+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
-+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
-+echo ' :' >>$CONFIG_STATUS
-+rm -f conftest.tail
-+while grep . conftest.defines >/dev/null
-+do
-+ # Write a limited-size here document to $tmp/defines.sed.
-+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
-+ # Speed up: don't consider the non `#define' lines.
-+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
-+ # Work around the forget-to-reset-the-flag bug.
-+ echo 't clr' >>$CONFIG_STATUS
-+ echo ': clr' >>$CONFIG_STATUS
-+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
-+ echo 'CEOF
-+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
-+ rm -f $tmp/in
-+ mv $tmp/out $tmp/in
-+' >>$CONFIG_STATUS
-+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
-+ rm -f conftest.defines
-+ mv conftest.tail conftest.defines
-+done
-+rm -f conftest.defines
-+echo ' fi # grep' >>$CONFIG_STATUS
-+echo >>$CONFIG_STATUS
-+
-+# Break up conftest.undefs because some shells have a limit on the size
-+# of here documents, and old seds have small limits too (100 cmds).
-+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
-+rm -f conftest.tail
-+while grep . conftest.undefs >/dev/null
-+do
-+ # Write a limited-size here document to $tmp/undefs.sed.
-+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
-+ # Speed up: don't consider the non `#undef'
-+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
-+ # Work around the forget-to-reset-the-flag bug.
-+ echo 't clr' >>$CONFIG_STATUS
-+ echo ': clr' >>$CONFIG_STATUS
-+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
-+ echo 'CEOF
-+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
-+ rm -f $tmp/in
-+ mv $tmp/out $tmp/in
-+' >>$CONFIG_STATUS
-+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
-+ rm -f conftest.undefs
-+ mv conftest.tail conftest.undefs
-+done
-+rm -f conftest.undefs
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+ # Let's still pretend it is `configure' which instantiates (i.e., don't
-+ # use $as_me), people would be surprised to read:
-+ # /* config.h. Generated by config.status. */
-+ if test x"$ac_file" = x-; then
-+ echo "/* Generated by configure. */" >$tmp/config.h
-+ else
-+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
-+ fi
-+ cat $tmp/in >>$tmp/config.h
-+ rm -f $tmp/in
-+ if test x"$ac_file" != x-; then
-+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
-+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-+echo "$as_me: $ac_file is unchanged" >&6;}
-+ else
-+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$ac_file" : 'X\(//\)[^/]' \| \
-+ X"$ac_file" : 'X\(//\)$' \| \
-+ X"$ac_file" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$ac_file" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ { if $as_mkdir_p; then
-+ mkdir -p "$ac_dir"
-+ else
-+ as_dir="$ac_dir"
-+ as_dirs=
-+ while test ! -d "$as_dir"; do
-+ as_dirs="$as_dir $as_dirs"
-+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
-+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-+ X"$as_dir" : 'X\(//\)[^/]' \| \
-+ X"$as_dir" : 'X\(//\)$' \| \
-+ X"$as_dir" : 'X\(/\)' \| \
-+ . : '\(.\)' 2>/dev/null ||
-+echo X"$as_dir" |
-+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-+ /^X\(\/\/\)$/{ s//\1/; q; }
-+ /^X\(\/\).*/{ s//\1/; q; }
-+ s/.*/./; q'`
-+ done
-+ test ! -n "$as_dirs" || mkdir $as_dirs
-+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-+ { (exit 1); exit 1; }; }; }
-+
-+ rm -f $ac_file
-+ mv $tmp/config.h $ac_file
-+ fi
-+ else
-+ cat $tmp/config.h
-+ rm -f $tmp/config.h
-+ fi
-+done
-+_ACEOF
-+
-+cat >>$CONFIG_STATUS <<\_ACEOF
-+
-+{ (exit 0); exit 0; }
-+_ACEOF
-+chmod +x $CONFIG_STATUS
-+ac_clean_files=$ac_clean_files_save
-+
-+
-+# configure is writing to config.log, and then calls config.status.
-+# config.status does its own redirection, appending to config.log.
-+# Unfortunately, on DOS this fails, as config.log is still kept open
-+# by configure, so config.status won't be able to write to it; its
-+# output is simply discarded. So we exec the FD to /dev/null,
-+# effectively closing config.log, so it can be properly (re)opened and
-+# appended to by config.status. When coming back to configure, we
-+# need to make the FD available again.
-+if test "$no_create" != yes; then
-+ ac_cs_success=:
-+ ac_config_status_args=
-+ test "$silent" = yes &&
-+ ac_config_status_args="$ac_config_status_args --quiet"
-+ exec 5>/dev/null
-+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-+ exec 5>>config.log
-+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-+ # would make configure fail if this is the last instruction.
-+ $ac_cs_success || { (exit 1); exit 1; }
-+fi
-+
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/demangle.c ltrace-0.3.35/demangle.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/demangle.c 2003-01-31 01:52:57.000000000 +1100
-+++ ltrace-0.3.35/demangle.c 2004-10-22 20:13:14.000000000 +1000
-@@ -2,8 +2,6 @@
- #include "config.h"
- #endif
-
--#if HAVE_LIBIBERTY
--
- #include <string.h>
- #include <stdlib.h>
- #include <stdio.h>
-@@ -14,6 +12,8 @@
-
- #include "dict.h"
-
-+#ifdef USE_DEMANGLE
-+
- /*****************************************************************************/
-
- static struct dict * d = NULL;
-@@ -27,6 +27,10 @@
- const char *
- my_demangle(const char * function_name) {
- const char * tmp, * fn_copy;
-+#if !defined HAVE_LIBIBERTY && defined HAVE_LIBSUPC__
-+ extern char *__cxa_demangle (const char *, char *, size_t *, int *);
-+ int status = 0;
-+#endif
-
- if (!d) {
- d = dict_init(dict_key2hash_string, dict_key_cmp_string);
-@@ -36,7 +40,11 @@
- tmp = dict_find_entry(d, (void *)function_name);
- if (!tmp) {
- fn_copy = strdup(function_name);
-- tmp = cplus_demangle(function_name+strspn(function_name, "_"), DMGL_ANSI | DMGL_PARAMS);
-+#ifdef HAVE_LIBIBERTY
-+ tmp = cplus_demangle(function_name, DMGL_ANSI | DMGL_PARAMS);
-+#elif defined HAVE_LIBSUPC__
-+ tmp = __cxa_demangle(function_name, NULL, NULL, &status);
-+#endif
- if (!tmp) tmp = fn_copy;
- if (tmp) dict_enter(d, (void *)fn_copy, (void *)tmp);
- }
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/ltrace.h ltrace-0.3.35/ltrace.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/ltrace.h 2004-10-22 20:12:56.000000000 +1000
-+++ ltrace-0.3.35/ltrace.h 2004-10-22 20:13:14.000000000 +1000
-@@ -13,6 +13,10 @@
-
- #define MAX_LIBRARY 30
-
-+#if defined HAVE_LIBIBERTY || defined HAVE_LIBSUPC__
-+# define USE_DEMANGLE
-+#endif
-+
- extern char * command;
-
- extern int exiting; /* =1 if we have to exit ASAP */
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/options.c ltrace-0.3.35/options.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/options.c 2004-06-15 01:17:52.000000000 +1000
-+++ ltrace-0.3.35/options.c 2004-10-22 20:13:14.000000000 +1000
-@@ -37,7 +37,7 @@
- char * opt_u = NULL; /* username to run command as */
- int opt_r = 0; /* print relative timestamp */
- int opt_t = 0; /* print absolute timestamp */
--#if HAVE_LIBIBERTY
-+#ifdef USE_DEMANGLE
- int opt_C = 0; /* Demangle low-level symbol names into user-level names */
- #endif
- int opt_n = 0; /* indent trace output according to program flow */
-@@ -65,7 +65,7 @@
- " -a COLUMN align return values in a secific column.\n"
- # endif
- " -c count time and calls, and report a summary on exit.\n"
--# if HAVE_LIBIBERTY
-+# ifdef USE_DEMANGLE
- # if HAVE_GETOPT_LONG
- " -C, --demangle decode low-level symbol names into user-level names.\n"
- # else
-@@ -163,7 +163,7 @@
- static struct option long_options[] = {
- { "align", 1, 0, 'a'},
- { "debug", 0, 0, 'd'},
--# if HAVE_LIBIBERTY
-+# ifdef USE_DEMANGLE
- { "demangle", 0, 0, 'C'},
- #endif
- { "indent", 0, 0, 'n'},
-@@ -174,13 +174,13 @@
- { 0, 0, 0, 0}
- };
- c = getopt_long(argc, argv, "+cdfhiLrStTV"
--# if HAVE_LIBIBERTY
-+# ifdef USE_DEMANGLE
- "C"
- # endif
- "a:e:l:n:o:p:s:u:", long_options, &option_index);
- #else
- c = getopt(argc, argv, "+cdfhiLrStTV"
--# if HAVE_LIBIBERTY
-+# ifdef USE_DEMANGLE
- "C"
- # endif
- "a:e:l:n:o:p:s:u:");
-@@ -193,7 +193,7 @@
- break;
- case 'c': opt_c++;
- break;
--#if HAVE_LIBIBERTY
-+#ifdef USE_DEMANGLE
- case 'C': opt_C++;
- break;
- #endif
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/options.h ltrace-0.3.35/options.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/options.h 2003-02-03 07:27:33.000000000 +1100
-+++ ltrace-0.3.35/options.h 2004-10-22 20:13:14.000000000 +1000
-@@ -17,9 +17,7 @@
- extern char * opt_u; /* username to run command as */
- extern int opt_r; /* print relative timestamp */
- extern int opt_t; /* print absolute timestamp */
--#if HAVE_LIBIBERTY
- extern int opt_C; /* Demanglelow-level symbol names into user-level names */
--#endif
- extern int opt_n; /* indent trace output according to program flow */
- extern int opt_T; /* show the time spent inside each call */
-
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/output.c ltrace-0.3.35/output.c
---- /home/apollock/debian/ltrace/ltrace-0.3.35/output.c 2004-06-15 01:36:33.000000000 +1000
-+++ ltrace-0.3.35/output.c 2004-10-22 20:13:14.000000000 +1000
-@@ -15,7 +15,7 @@
- #include "output.h"
- #include "dict.h"
-
--#if HAVE_LIBIBERTY
-+#ifdef USE_DEMANGLE
- #include "demangle.h"
- #endif
-
-@@ -107,7 +107,7 @@
-
- tmp = list_of_functions;
- while(tmp) {
--#if HAVE_LIBIBERTY
-+#ifdef USE_DEMANGLE
- str1 = opt_C ? my_demangle(tmp->name) : tmp->name;
- str2 = opt_C ? my_demangle(name) : name;
- #else
-@@ -169,7 +169,7 @@
- current_depth = proc->callstack_depth;
- proc->type_being_displayed = type;
- begin_of_line(type, proc);
--#if HAVE_LIBIBERTY
-+#ifdef USE_DEMANGLE
- current_column += fprintf(output, "%s(", opt_C ? my_demangle(function_name): function_name);
- #else
- current_column += fprintf(output, "%s(", function_name);
-@@ -244,7 +244,7 @@
- }
- if (current_pid != proc->pid) {
- begin_of_line(type, proc);
--#if HAVE_LIBIBERTY
-+#ifdef USE_DEMANGLE
- current_column += fprintf(output, "<... %s resumed> ", opt_C ? my_demangle(function_name) : function_name);
- #else
- current_column += fprintf(output, "<... %s resumed> ", function_name);
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/output.c.orig ltrace-0.3.35/output.c.orig
---- /home/apollock/debian/ltrace/ltrace-0.3.35/output.c.orig 1970-01-01 10:00:00.000000000 +1000
-+++ ltrace-0.3.35/output.c.orig 2004-06-15 01:36:33.000000000 +1000
-@@ -0,0 +1,284 @@
-+#if HAVE_CONFIG_H
-+#include "config.h"
-+#endif
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <stdarg.h>
-+#include <string.h>
-+#include <time.h>
-+#include <sys/time.h>
-+#include <unistd.h>
-+
-+#include "ltrace.h"
-+#include "options.h"
-+#include "output.h"
-+#include "dict.h"
-+
-+#if HAVE_LIBIBERTY
-+#include "demangle.h"
-+#endif
-+
-+/* TODO FIXME XXX: include in ltrace.h: */
-+extern struct timeval current_time_spent;
-+
-+struct dict * dict_opt_c = NULL;
-+
-+static pid_t current_pid = 0;
-+static int current_depth = 0;
-+static int current_column = 0;
-+
-+static void
-+output_indent(struct process * proc) {
-+ current_column += fprintf(output, "%*s", opt_n * proc->callstack_depth, "");
-+}
-+
-+static void
-+begin_of_line(enum tof type, struct process * proc) {
-+ current_column = 0;
-+ if (!proc) {
-+ return;
-+ }
-+ if ((output!=stderr) && (opt_p || opt_f)) {
-+ current_column += fprintf(output, "%u ", proc->pid);
-+ } else if (list_of_processes->next) {
-+ current_column += fprintf(output, "[pid %u] ", proc->pid);
-+ }
-+ if (opt_r) {
-+ struct timeval tv;
-+ struct timezone tz;
-+ static struct timeval old_tv={0,0};
-+ struct timeval diff;
-+
-+ gettimeofday(&tv, &tz);
-+
-+ if (old_tv.tv_sec==0 && old_tv.tv_usec==0) {
-+ old_tv.tv_sec=tv.tv_sec;
-+ old_tv.tv_usec=tv.tv_usec;
-+ }
-+ diff.tv_sec = tv.tv_sec - old_tv.tv_sec;
-+ if (tv.tv_usec >= old_tv.tv_usec) {
-+ diff.tv_usec = tv.tv_usec - old_tv.tv_usec;
-+ } else {
-+ diff.tv_sec--;
-+ diff.tv_usec = 1000000 + tv.tv_usec - old_tv.tv_usec;
-+ }
-+ old_tv.tv_sec = tv.tv_sec;
-+ old_tv.tv_usec = tv.tv_usec;
-+ current_column += fprintf(output, "%3lu.%06d ",
-+ diff.tv_sec, (int)diff.tv_usec);
-+ }
-+ if (opt_t) {
-+ struct timeval tv;
-+ struct timezone tz;
-+
-+ gettimeofday(&tv, &tz);
-+ if (opt_t>2) {
-+ current_column += fprintf(output, "%lu.%06d ",
-+ tv.tv_sec, (int)tv.tv_usec);
-+ } else if (opt_t>1) {
-+ struct tm * tmp = localtime(&tv.tv_sec);
-+ current_column += fprintf(output, "%02d:%02d:%02d.%06d ",
-+ tmp->tm_hour, tmp->tm_min, tmp->tm_sec, (int)tv.tv_usec);
-+ } else {
-+ struct tm * tmp = localtime(&tv.tv_sec);
-+ current_column += fprintf(output, "%02d:%02d:%02d ",
-+ tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
-+ }
-+ }
-+ if (opt_i) {
-+ if (type==LT_TOF_FUNCTION || type==LT_TOF_FUNCTIONR) {
-+ current_column += fprintf(output, "[%p] ",
-+ proc->return_addr);
-+ } else {
-+ current_column += fprintf(output, "[%p] ",
-+ proc->instruction_pointer);
-+ }
-+ }
-+ if (opt_n > 0 && type!=LT_TOF_NONE) {
-+ output_indent(proc);
-+ }
-+}
-+
-+static struct function *
-+name2func(char * name) {
-+ struct function * tmp;
-+ const char * str1, * str2;
-+
-+ tmp = list_of_functions;
-+ while(tmp) {
-+#if HAVE_LIBIBERTY
-+ str1 = opt_C ? my_demangle(tmp->name) : tmp->name;
-+ str2 = opt_C ? my_demangle(name) : name;
-+#else
-+ str1 = tmp->name;
-+ str2 = name;
-+#endif
-+ if (!strcmp(str1, str2)) {
-+
-+ return tmp;
-+ }
-+ tmp = tmp->next;
-+ }
-+ return NULL;
-+}
-+
-+void
-+output_line(struct process * proc, char *fmt, ...) {
-+ va_list args;
-+
-+ if (opt_c) {
-+ return;
-+ }
-+ if (current_pid) {
-+ fprintf(output, " <unfinished ...>\n");
-+ }
-+ current_pid=0;
-+ if (!fmt) {
-+ return;
-+ }
-+ begin_of_line(LT_TOF_NONE, proc);
-+
-+ va_start(args, fmt);
-+ vfprintf(output, fmt, args);
-+ fprintf(output, "\n");
-+ va_end(args);
-+ current_column=0;
-+}
-+
-+static void
-+tabto(int col) {
-+ if (current_column < col) {
-+ fprintf(output, "%*s", col-current_column, "");
-+ }
-+}
-+
-+void
-+output_left(enum tof type, struct process * proc, char * function_name) {
-+ struct function * func;
-+
-+ if (opt_c) {
-+ return;
-+ }
-+ if (current_pid) {
-+ fprintf(output, " <unfinished ...>\n");
-+ current_pid=0;
-+ current_column=0;
-+ }
-+ current_pid = proc->pid;
-+ current_depth = proc->callstack_depth;
-+ proc->type_being_displayed = type;
-+ begin_of_line(type, proc);
-+#if HAVE_LIBIBERTY
-+ current_column += fprintf(output, "%s(", opt_C ? my_demangle(function_name): function_name);
-+#else
-+ current_column += fprintf(output, "%s(", function_name);
-+#endif
-+
-+ func = name2func(function_name);
-+ if (!func) {
-+ int i;
-+ for(i=0; i<4; i++) {
-+ current_column += display_arg(type, proc, i, ARGTYPE_UNKNOWN);
-+ current_column += fprintf(output, ", ");
-+ }
-+ current_column += display_arg(type, proc, 4, ARGTYPE_UNKNOWN);
-+ return;
-+ } else {
-+ int i;
-+ for(i=0; i< func->num_params - func->params_right - 1; i++) {
-+ current_column += display_arg(type, proc, i, func->arg_types[i]);
-+ current_column += fprintf(output, ", ");
-+ }
-+ if (func->num_params>func->params_right) {
-+ current_column += display_arg(type, proc, i, func->arg_types[i]);
-+ if (func->params_right) {
-+ current_column += fprintf(output, ", ");
-+ }
-+ }
-+ if (func->params_right) {
-+ save_register_args(type, proc);
-+ }
-+ }
-+}
-+
-+void
-+output_right(enum tof type, struct process * proc, char * function_name) {
-+ struct function * func = name2func(function_name);
-+
-+ if (opt_c) {
-+ struct opt_c_struct * st;
-+ if (!dict_opt_c) {
-+ dict_opt_c = dict_init(dict_key2hash_string, dict_key_cmp_string);
-+ }
-+ st = dict_find_entry(dict_opt_c, function_name);
-+ if (!st) {
-+ char *na;
-+ st = malloc(sizeof(struct opt_c_struct));
-+ na = strdup(function_name);
-+ if (!st || !na) {
-+ perror("malloc()");
-+ exit(1);
-+ }
-+ st->count = 0;
-+ st->tv.tv_sec = st->tv.tv_usec = 0;
-+ dict_enter(dict_opt_c, na, st);
-+ }
-+ if (st->tv.tv_usec + current_time_spent.tv_usec > 1000000) {
-+ st->tv.tv_usec += current_time_spent.tv_usec - 1000000;
-+ st->tv.tv_sec++;
-+ } else {
-+ st->tv.tv_usec += current_time_spent.tv_usec;
-+ }
-+ st->count++;
-+ st->tv.tv_sec += current_time_spent.tv_sec;
-+
-+// fprintf(output, "%s <%lu.%06d>\n", function_name,
-+// current_time_spent.tv_sec, (int)current_time_spent.tv_usec);
-+ return;
-+ }
-+ if (current_pid && (current_pid!=proc->pid ||
-+ current_depth != proc->callstack_depth)) {
-+ fprintf(output, " <unfinished ...>\n");
-+ current_pid = 0;
-+ }
-+ if (current_pid != proc->pid) {
-+ begin_of_line(type, proc);
-+#if HAVE_LIBIBERTY
-+ current_column += fprintf(output, "<... %s resumed> ", opt_C ? my_demangle(function_name) : function_name);
-+#else
-+ current_column += fprintf(output, "<... %s resumed> ", function_name);
-+#endif
-+ }
-+
-+ if (!func) {
-+ current_column += fprintf(output, ") ");
-+ tabto(opt_a-1);
-+ fprintf(output, "= ");
-+ display_arg(type, proc, -1, ARGTYPE_UNKNOWN);
-+ } else {
-+ int i;
-+ for(i=func->num_params-func->params_right; i<func->num_params-1; i++) {
-+ current_column += display_arg(type, proc, i, func->arg_types[i]);
-+ current_column += fprintf(output, ", ");
-+ }
-+ if (func->params_right) {
-+ current_column += display_arg(type, proc, i, func->arg_types[i]);
-+ }
-+ current_column += fprintf(output, ") ");
-+ tabto(opt_a-1);
-+ fprintf(output, "= ");
-+ if (func->return_type == ARGTYPE_VOID) {
-+ fprintf(output, "<void>");
-+ } else {
-+ display_arg(type, proc, -1, func->return_type);
-+ }
-+ }
-+ if (opt_T) {
-+ fprintf(output, " <%lu.%06d>",
-+ current_time_spent.tv_sec, (int)current_time_spent.tv_usec);
-+ }
-+ fprintf(output, "\n");
-+ current_pid=0;
-+ current_column=0;
-+}
diff --git a/debian/patches/03syscallent-update.dpatch b/debian/patches/03syscallent-update.dpatch
deleted file mode 100755
index 95f12c0..0000000
--- a/debian/patches/03syscallent-update.dpatch
+++ /dev/null
@@ -1,615 +0,0 @@
-#! /bin/sh -e
-## 03syscallent-update.dpatch by <apollock@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: No description.
-
-if [ $# -lt 1 ]; then
- echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
- exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}"
-
-case "$1" in
- -patch) patch -p1 ${patch_opts} < $0;;
- -unpatch) patch -R -p1 ${patch_opts} < $0;;
- *)
- echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
- exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/alpha/syscallent.h ltrace-0.3.35/sysdeps/linux-gnu/alpha/syscallent.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/alpha/syscallent.h 2004-06-15 01:57:35.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/alpha/syscallent.h 2004-10-22 20:14:06.000000000 +1000
-@@ -421,4 +421,19 @@
- "clock_gettime", /* 420 */
- "clock_getres", /* 421 */
- "clock_nanosleep", /* 422 */
-- "semtimedop" /* 423 */
-+ "semtimedop", /* 423 */
-+ "tgkill", /* 424 */
-+ "stat64", /* 425 */
-+ "lstat64", /* 426 */
-+ "fstat64", /* 427 */
-+ "vserver", /* 428 */
-+ "mbind", /* 429 */
-+ "get_mempolicy", /* 430 */
-+ "set_mempolicy", /* 431 */
-+ "mq_open", /* 432 */
-+ "mq_unlink", /* 433 */
-+ "mq_timedsend", /* 434 */
-+ "mq_timedreceive", /* 435 */
-+ "mq_notify", /* 436 */
-+ "mq_getsetattr", /* 437 */
-+ "waitid" /* 438 */
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/i386/syscallent.h ltrace-0.3.35/sysdeps/linux-gnu/i386/syscallent.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/i386/syscallent.h 2004-10-22 20:13:51.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/i386/syscallent.h 2004-10-22 20:14:06.000000000 +1000
-@@ -281,3 +281,5 @@
- "mq_timedreceive", /* 280 */
- "mq_notify", /* 281 */
- "mq_getsetattr", /* 282 */
-+ "kexec_load", /* 283 */
-+ "waitid", /* 284 */
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/ppc/syscallent.h ltrace-0.3.35/sysdeps/linux-gnu/ppc/syscallent.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/ppc/syscallent.h 2004-10-22 20:13:51.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/ppc/syscallent.h 2004-10-22 20:14:06.000000000 +1000
-@@ -260,3 +260,4 @@
- "mq_timedreceive", /* 265 */
- "mq_notify", /* 266 */
- "mq_getsetattr", /* 267 */
-+ "kexec_load", /* 268 */
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/sparc/syscallent.h ltrace-0.3.35/sysdeps/linux-gnu/sparc/syscallent.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/sparc/syscallent.h 2004-06-15 01:55:50.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/sparc/syscallent.h 2004-10-22 20:14:06.000000000 +1000
-@@ -1,256 +1,280 @@
-- "0", /* 0 */
-- "exit", /* 1 */
-- "fork", /* 2 */
-- "read", /* 3 */
-- "write", /* 4 */
-- "open", /* 5 */
-- "close", /* 6 */
-- "wait4", /* 7 */
-- "creat", /* 8 */
-- "link", /* 9 */
-- "unlink", /* 10 */
-- "execv", /* 11 */
-- "chdir", /* 12 */
-- "chown", /* 13 */
-- "mknod", /* 14 */
-- "chmod", /* 15 */
-- "lchown", /* 16 */
-- "brk", /* 17 */
-- "perfctr", /* 18 */
-- "lseek", /* 19 */
-- "getpid", /* 20 */
-- "capget", /* 21 */
-- "capset", /* 22 */
-- "setuid", /* 23 */
-- "getuid", /* 24 */
-- "25", /* 25 */
-- "ptrace", /* 26 */
-- "alarm", /* 27 */
-- "sigaltstack", /* 28 */
-- "pause", /* 29 */
-- "utime", /* 30 */
-- "31", /* 31 */
-- "32", /* 32 */
-- "access", /* 33 */
-- "nice", /* 34 */
-- "35", /* 35 */
-- "sync", /* 36 */
-- "kill", /* 37 */
-- "stat", /* 38 */
-- "sendfile", /* 39 */
-- "lstat", /* 40 */
-- "dup", /* 41 */
-- "pipe", /* 42 */
-- "times", /* 43 */
-- "44", /* 44 */
-- "umount2", /* 45 */
-- "setgid", /* 46 */
-- "getgid", /* 47 */
-- "signal", /* 48 */
-- "geteuid", /* 49 */
-- "getegid", /* 50 */
-- "acct", /* 51 */
-- "memory_ordering", /* 52 */
-- "53", /* 53 */
-- "ioctl", /* 54 */
-- "reboot", /* 55 */
-- "56", /* 56 */
-- "symlink", /* 57 */
-- "readlink", /* 58 */
-- "execve", /* 59 */
-- "umask", /* 60 */
-- "chroot", /* 61 */
-- "fstat", /* 62 */
-- "63", /* 63 */
-- "getpagesize", /* 64 */
-- "msync", /* 65 */
-- "vfork", /* 66 */
-- "pread", /* 67 */
-- "pwrite", /* 68 */
-- "69", /* 69 */
-- "70", /* 70 */
-- "mmap", /* 71 */
-- "72", /* 72 */
-- "munmap", /* 73 */
-- "mprotect", /* 74 */
-- "75", /* 75 */
-- "vhangup", /* 76 */
-- "77", /* 77 */
-- "78", /* 78 */
-- "getgroups", /* 79 */
-- "setgroups", /* 80 */
-- "getpgrp", /* 81 */
-- "82", /* 82 */
-- "setitimer", /* 83 */
-- "84", /* 84 */
-- "swapon", /* 85 */
-- "getitimer", /* 86 */
-- "87", /* 87 */
-- "sethostname", /* 88 */
-- "89", /* 89 */
-- "dup2", /* 90 */
-- "91", /* 91 */
-- "fcntl", /* 92 */
-- "select", /* 93 */
-- "94", /* 94 */
-- "fsync", /* 95 */
-- "setpriority", /* 96 */
-- "socket", /* 97 */
-- "connect", /* 98 */
-- "accept", /* 99 */
-- "getpriority", /* 100 */
-- "rt_sigreturn", /* 101 */
-- "rt_sigaction", /* 102 */
-- "rt_sigprocmask", /* 103 */
-- "rt_sigpending", /* 104 */
-- "rt_sigtimedwait", /* 105 */
-- "rt_sigqueueinfo", /* 106 */
-- "rt_sigsuspend", /* 107 */
-- "108", /* 108 */
-- "109", /* 109 */
-- "110", /* 110 */
-- "111", /* 111 */
-- "112", /* 112 */
-- "recvmsg", /* 113 */
-- "sendmsg", /* 114 */
-- "115", /* 115 */
-- "gettimeofday", /* 116 */
-- "getrusage", /* 117 */
-- "getsockopt", /* 118 */
-- "getcwd", /* 119 */
-- "readv", /* 120 */
-- "writev", /* 121 */
-- "settimeofday", /* 122 */
-- "fchown", /* 123 */
-- "fchmod", /* 124 */
-- "recvfrom", /* 125 */
-- "setreuid", /* 126 */
-- "setregid", /* 127 */
-- "rename", /* 128 */
-- "truncate", /* 129 */
-- "ftruncate", /* 130 */
-- "flock", /* 131 */
-- "132", /* 132 */
-- "sendto", /* 133 */
-- "shutdown", /* 134 */
-- "socketpair", /* 135 */
-- "mkdir", /* 136 */
-- "rmdir", /* 137 */
-- "utimes", /* 138 */
-- "139", /* 139 */
-- "140", /* 140 */
-- "getpeername", /* 141 */
-- "142", /* 142 */
-- "143", /* 143 */
-- "getrlimit", /* 144 */
-- "setrlimit", /* 145 */
-- "146", /* 146 */
-- "prctl", /* 147 */
-- "pciconfig_read", /* 148 */
-- "pciconfig_write", /* 149 */
-- "getsockname", /* 150 */
-- "151", /* 151 */
-- "152", /* 152 */
-- "poll", /* 153 */
-- "154", /* 154 */
-- "155", /* 155 */
-- "156", /* 156 */
-- "statfs", /* 157 */
-- "fstatfs", /* 158 */
-- "umount", /* 159 */
-- "160", /* 160 */
-- "161", /* 161 */
-- "getdomainname", /* 162 */
-- "setdomainname", /* 163 */
-- "utrap_install", /* 164 */
-- "quotactl", /* 165 */
-- "166", /* 166 */
-- "mount", /* 167 */
-- "ustat", /* 168 */
-- "169", /* 169 */
-- "170", /* 170 */
-- "171", /* 171 */
-- "172", /* 172 */
-- "173", /* 173 */
-- "getdents", /* 174 */
-- "setsid", /* 175 */
-- "fchdir", /* 176 */
-- "177", /* 177 */
-- "178", /* 178 */
-- "179", /* 179 */
-- "180", /* 180 */
-- "181", /* 181 */
-- "182", /* 182 */
-- "sigpending", /* 183 */
-- "query_module", /* 184 */
-- "setpgid", /* 185 */
-- "186", /* 186 */
-- "187", /* 187 */
-- "188", /* 188 */
-- "uname", /* 189 */
-- "init_module", /* 190 */
-- "personality", /* 191 */
-- "192", /* 192 */
-- "193", /* 193 */
-- "194", /* 194 */
-- "195", /* 195 */
-- "196", /* 196 */
-- "getppid", /* 197 */
-- "sigaction", /* 198 */
-- "sgetmask", /* 199 */
-- "ssetmask", /* 200 */
-- "sigsuspend", /* 201 */
-- "oldlstat", /* 202 */
-- "uselib", /* 203 */
-- "readdir", /* 204 */
-- "205", /* 205 */
-- "socketcall", /* 206 */
-- "syslog", /* 207 */
-- "208", /* 208 */
-- "209", /* 209 */
-- "idle", /* 210 */
-- "211", /* 211 */
-- "waitpid", /* 212 */
-- "swapoff", /* 213 */
-- "sysinfo", /* 214 */
-- "ipc", /* 215 */
-- "sigreturn", /* 216 */
-- "clone", /* 217 */
-- "218", /* 218 */
-- "adjtimex", /* 219 */
-- "sigprocmask", /* 220 */
-- "create_module", /* 221 */
-- "delete_module", /* 222 */
-- "get_kernel_syms", /* 223 */
-- "getpgid", /* 224 */
-- "bdflush", /* 225 */
-- "sysfs", /* 226 */
-- "afs_syscall", /* 227 */
-- "setfsuid", /* 228 */
-- "setfsgid", /* 229 */
-- "_newselect", /* 230 */
-- "time", /* 231 */
-- "232", /* 232 */
-- "stime", /* 233 */
-- "234", /* 234 */
-- "235", /* 235 */
-- "_llseek", /* 236 */
-- "mlock", /* 237 */
-- "munlock", /* 238 */
-- "mlockall", /* 239 */
-- "munlockall", /* 240 */
-- "sched_setparam", /* 241 */
-- "sched_getparam", /* 242 */
-- "sched_setscheduler", /* 243 */
-- "sched_getscheduler", /* 244 */
-- "sched_yield", /* 245 */
-- "sched_get_priority_max", /* 246 */
-- "sched_get_priority_min", /* 247 */
-- "sched_rr_get_interval", /* 248 */
-- "nanosleep", /* 249 */
-- "mremap", /* 250 */
-- "_sysctl", /* 251 */
-- "getsid", /* 252 */
-- "fdatasync", /* 253 */
-- "nfsservctl", /* 254 */
-- "aplib", /* 255 */
-+ "0", /* 0 */
-+ "exit", /* 1 */
-+ "fork", /* 2 */
-+ "read", /* 3 */
-+ "write", /* 4 */
-+ "open", /* 5 */
-+ "close", /* 6 */
-+ "wait4", /* 7 */
-+ "creat", /* 8 */
-+ "link", /* 9 */
-+ "unlink", /* 10 */
-+ "execv", /* 11 */
-+ "chdir", /* 12 */
-+ "chown", /* 13 */
-+ "mknod", /* 14 */
-+ "chmod", /* 15 */
-+ "lchown", /* 16 */
-+ "brk", /* 17 */
-+ "perfctr", /* 18 */
-+ "lseek", /* 19 */
-+ "getpid", /* 20 */
-+ "capget", /* 21 */
-+ "capset", /* 22 */
-+ "setuid", /* 23 */
-+ "getuid", /* 24 */
-+ "25", /* 25 */
-+ "ptrace", /* 26 */
-+ "alarm", /* 27 */
-+ "sigaltstack", /* 28 */
-+ "pause", /* 29 */
-+ "utime", /* 30 */
-+ "lchown32", /* 31 */
-+ "fchown32", /* 32 */
-+ "access", /* 33 */
-+ "nice", /* 34 */
-+ "chown32", /* 35 */
-+ "sync", /* 36 */
-+ "kill", /* 37 */
-+ "stat", /* 38 */
-+ "sendfile", /* 39 */
-+ "lstat", /* 40 */
-+ "dup", /* 41 */
-+ "pipe", /* 42 */
-+ "times", /* 43 */
-+ "getuid32", /* 44 */
-+ "umount2", /* 45 */
-+ "setgid", /* 46 */
-+ "getgid", /* 47 */
-+ "signal", /* 48 */
-+ "geteuid", /* 49 */
-+ "getegid", /* 50 */
-+ "acct", /* 51 */
-+ "memory_ordering", /* 52 */
-+ "getgid32", /* 53 */
-+ "ioctl", /* 54 */
-+ "reboot", /* 55 */
-+ "mmap2", /* 56 */
-+ "symlink", /* 57 */
-+ "readlink", /* 58 */
-+ "execve", /* 59 */
-+ "umask", /* 60 */
-+ "chroot", /* 61 */
-+ "fstat", /* 62 */
-+ "fstat64", /* 63 */
-+ "getpagesize", /* 64 */
-+ "msync", /* 65 */
-+ "vfork", /* 66 */
-+ "pread64", /* 67 */
-+ "pwrite64", /* 68 */
-+ "geteuid32", /* 69 */
-+ "getegid32", /* 70 */
-+ "mmap", /* 71 */
-+ "setreuid32", /* 72 */
-+ "munmap", /* 73 */
-+ "mprotect", /* 74 */
-+ "madvise", /* 75 */
-+ "vhangup", /* 76 */
-+ "truncate64", /* 77 */
-+ "mincore", /* 78 */
-+ "getgroups", /* 79 */
-+ "setgroups", /* 80 */
-+ "getpgrp", /* 81 */
-+ "setgroups32", /* 82 */
-+ "setitimer", /* 83 */
-+ "ftruncate64", /* 84 */
-+ "swapon", /* 85 */
-+ "getitimer", /* 86 */
-+ "setuid32", /* 87 */
-+ "sethostname", /* 88 */
-+ "setgid32", /* 89 */
-+ "dup2", /* 90 */
-+ "setfsuid32", /* 91 */
-+ "fcntl", /* 92 */
-+ "select", /* 93 */
-+ "setfsgid32", /* 94 */
-+ "fsync", /* 95 */
-+ "setpriority", /* 96 */
-+ "socket", /* 97 */
-+ "connect", /* 98 */
-+ "accept", /* 99 */
-+ "getpriority", /* 100 */
-+ "rt_sigreturn", /* 101 */
-+ "rt_sigaction", /* 102 */
-+ "rt_sigprocmask", /* 103 */
-+ "rt_sigpending", /* 104 */
-+ "rt_sigtimedwait", /* 105 */
-+ "rt_sigqueueinfo", /* 106 */
-+ "rt_sigsuspend", /* 107 */
-+ "setresuid32", /* 108 */
-+ "getresuid32", /* 109 */
-+ "setresgid32", /* 110 */
-+ "getresgid32", /* 111 */
-+ "setregid32", /* 112 */
-+ "recvmsg", /* 113 */
-+ "sendmsg", /* 114 */
-+ "getgroups32", /* 115 */
-+ "gettimeofday", /* 116 */
-+ "getrusage", /* 117 */
-+ "getsockopt", /* 118 */
-+ "getcwd", /* 119 */
-+ "readv", /* 120 */
-+ "writev", /* 121 */
-+ "settimeofday", /* 122 */
-+ "fchown", /* 123 */
-+ "fchmod", /* 124 */
-+ "recvfrom", /* 125 */
-+ "setreuid", /* 126 */
-+ "setregid", /* 127 */
-+ "rename", /* 128 */
-+ "truncate", /* 129 */
-+ "ftruncate", /* 130 */
-+ "flock", /* 131 */
-+ "lstat64", /* 132 */
-+ "sendto", /* 133 */
-+ "shutdown", /* 134 */
-+ "socketpair", /* 135 */
-+ "mkdir", /* 136 */
-+ "rmdir", /* 137 */
-+ "utimes", /* 138 */
-+ "stat64", /* 139 */
-+ "sendfile64", /* 140 */
-+ "getpeername", /* 141 */
-+ "futex", /* 142 */
-+ "gettid", /* 143 */
-+ "getrlimit", /* 144 */
-+ "setrlimit", /* 145 */
-+ "pivot_root", /* 146 */
-+ "prctl", /* 147 */
-+ "pciconfig_read", /* 148 */
-+ "pciconfig_write", /* 149 */
-+ "getsockname", /* 150 */
-+ "151", /* 151 */
-+ "152", /* 152 */
-+ "poll", /* 153 */
-+ "getdents64", /* 154 */
-+ "fcntl64", /* 155 */
-+ "156", /* 156 */
-+ "statfs", /* 157 */
-+ "fstatfs", /* 158 */
-+ "umount", /* 159 */
-+ "sched_set_affinity", /* 160 */
-+ "sched_get_affinity", /* 161 */
-+ "getdomainname", /* 162 */
-+ "setdomainname", /* 163 */
-+ "utrap_install", /* 164 */
-+ "quotactl", /* 165 */
-+ "set_tid_address", /* 166 */
-+ "mount", /* 167 */
-+ "ustat", /* 168 */
-+ "setxattr", /* 169 */
-+ "lsetxattr", /* 170 */
-+ "fsetxattr", /* 171 */
-+ "getxattr", /* 172 */
-+ "lgetxattr", /* 173 */
-+ "getdents", /* 174 */
-+ "setsid", /* 175 */
-+ "fchdir", /* 176 */
-+ "fgetxattr", /* 177 */
-+ "listxattr", /* 178 */
-+ "llistxattr", /* 179 */
-+ "flistxattr", /* 180 */
-+ "removexattr", /* 181 */
-+ "lremovexattr", /* 182 */
-+ "sigpending", /* 183 */
-+ "query_module", /* 184 */
-+ "setpgid", /* 185 */
-+ "fremovexattr", /* 186 */
-+ "tkill", /* 187 */
-+ "exit_group", /* 188 */
-+ "uname", /* 189 */
-+ "init_module", /* 190 */
-+ "personality", /* 191 */
-+ "remap_file_pages", /* 192 */
-+ "epoll_create", /* 193 */
-+ "epoll_ctl", /* 194 */
-+ "epoll_wait", /* 195 */
-+ "196", /* 196 */
-+ "getppid", /* 197 */
-+ "sigaction", /* 198 */
-+ "sgetmask", /* 199 */
-+ "ssetmask", /* 200 */
-+ "sigsuspend", /* 201 */
-+ "oldlstat", /* 202 */
-+ "uselib", /* 203 */
-+ "readdir", /* 204 */
-+ "readahead", /* 205 */
-+ "socketcall", /* 206 */
-+ "syslog", /* 207 */
-+ "lookup_dcookie", /* 208 */
-+ "fadvise64", /* 209 */
-+ "fadvise64_64", /* 210 */
-+ "tgkill", /* 211 */
-+ "waitpid", /* 212 */
-+ "swapoff", /* 213 */
-+ "sysinfo", /* 214 */
-+ "ipc", /* 215 */
-+ "sigreturn", /* 216 */
-+ "clone", /* 217 */
-+ "218", /* 218 */
-+ "adjtimex", /* 219 */
-+ "sigprocmask", /* 220 */
-+ "create_module", /* 221 */
-+ "delete_module", /* 222 */
-+ "get_kernel_syms", /* 223 */
-+ "getpgid", /* 224 */
-+ "bdflush", /* 225 */
-+ "sysfs", /* 226 */
-+ "afs_syscall", /* 227 */
-+ "setfsuid", /* 228 */
-+ "setfsgid", /* 229 */
-+ "_newselect", /* 230 */
-+ "time", /* 231 */
-+ "232", /* 232 */
-+ "stime", /* 233 */
-+ "statfs64", /* 234 */
-+ "fstatfs64", /* 235 */
-+ "_llseek", /* 236 */
-+ "mlock", /* 237 */
-+ "munlock", /* 238 */
-+ "mlockall", /* 239 */
-+ "munlockall", /* 240 */
-+ "sched_setparam", /* 241 */
-+ "sched_getparam", /* 242 */
-+ "sched_setscheduler", /* 243 */
-+ "sched_getscheduler", /* 244 */
-+ "sched_yield", /* 245 */
-+ "sched_get_priority_max", /* 246 */
-+ "sched_get_priority_min", /* 247 */
-+ "sched_rr_get_interval", /* 248 */
-+ "nanosleep", /* 249 */
-+ "mremap", /* 250 */
-+ "_sysctl", /* 251 */
-+ "getsid", /* 252 */
-+ "fdatasync", /* 253 */
-+ "nfsservctl", /* 254 */
-+ "aplib", /* 255 */
-+ "clock_settime", /* 256 */
-+ "clock_gettime", /* 257 */
-+ "clock_getres", /* 258 */
-+ "clock_nanosleep", /* 259 */
-+ "sched_getaffinity", /* 260 */
-+ "sched_setaffinity", /* 261 */
-+ "timer_settime", /* 262 */
-+ "timer_gettime", /* 263 */
-+ "timer_getoverrun", /* 264 */
-+ "timer_delete", /* 265 */
-+ "timer_create", /* 266 */
-+ "vserver", /* 267 */
-+ "io_setup", /* 268 */
-+ "io_destroy", /* 269 */
-+ "io_submit", /* 270 */
-+ "io_cancel", /* 271 */
-+ "io_getevents", /* 272 */
-+ "mq_open", /* 273 */
-+ "mq_unlink", /* 274 */
-+ "mq_timedsend", /* 275 */
-+ "mq_timedreceive", /* 276 */
-+ "mq_notify", /* 277 */
-+ "mq_getsetattr", /* 278 */
-+ "waitid", /* 279 */
-diff -urNad /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/syscallent.h ltrace-0.3.35/sysdeps/linux-gnu/x86_64/syscallent.h
---- /home/apollock/debian/ltrace/ltrace-0.3.35/sysdeps/linux-gnu/x86_64/syscallent.h 2004-10-22 20:13:51.000000000 +1000
-+++ ltrace-0.3.35/sysdeps/linux-gnu/x86_64/syscallent.h 2004-10-22 20:14:06.000000000 +1000
-@@ -244,3 +244,5 @@
- "mq_timedreceive", /* 243 */
- "mq_notify", /* 244 */
- "mq_getsetattr", /* 245 */
-+ "kexec_load", /* 246 */
-+ "waitid", /* 247 */
diff --git a/debian/rules b/debian/rules
deleted file mode 100755
index beba2b2..0000000
--- a/debian/rules
+++ /dev/null
@@ -1,59 +0,0 @@
-#! /usr/bin/make -f
-#
-# Copyright (C) 1997-2003 Juan Cespedes <cespedes@debian.org>
-#
-include /usr/share/dpatch/dpatch.make
-PACKAGE=ltrace
-
-.PHONY: binary binary-indep binary-arch clean
-
-build: patch Makefile config.h
- $(checkdir)
- $(MAKE)
- touch build
-
-Makefile config.h: configure Makefile.in config.h.in
- $(checkdir)
- ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc
-
-configure: configure.in
- $(checkdir)
- autoconf
-
-config.h.in: configure.in
- $(checkdir)
- $(RM) config.h.in
- autoheader
-
-binary: binary-arch binary-indep
-
-binary-indep:
-
-binary-arch: build
- $(checkdir)
- test root = "`whoami`" || exit 1
- $(RM) -rf debian/tmp
-
- install -d debian/tmp/DEBIAN
- cp debian/conffiles debian/tmp/DEBIAN
- $(MAKE) install DESTDIR=`pwd`/debian/tmp docdir=/usr/share/doc/ltrace
- $(RM) debian/tmp/usr/share/doc/ltrace/COPYING
- mv debian/tmp/usr/share/doc/ltrace/ChangeLog debian/tmp/usr/share/doc/ltrace/changelog
- gzip -9f debian/tmp/usr/share/doc/ltrace/README debian/tmp/usr/share/doc/ltrace/changelog
- cp -p debian/copyright debian/tmp/usr/share/doc/ltrace
- gzip -9f debian/tmp/usr/share/man/man1/*
- dpkg-shlibdeps debian/tmp/usr/bin/ltrace
- dpkg-gencontrol -isp
- chown -R root.root debian/tmp
- chmod -R u=rwX,go=rX debian/tmp
- dpkg --build debian/tmp ..
-
-clean: unpatch configure config.h.in
- $(checkdir)
- $(RM) -f build debian/files debian/substvars
- -$(MAKE) distclean
- $(RM) -rf debian/tmp
-
-define checkdir
- test -f ltrace.c -a -f debian/rules
-endef
diff --git a/demangle.c b/demangle.c
index 73fbf06..63b7da6 100644
--- a/demangle.c
+++ b/demangle.c
@@ -2,8 +2,6 @@
#include "config.h"
#endif
-#if HAVE_LIBIBERTY
-
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
@@ -14,6 +12,8 @@
#include "dict.h"
+#ifdef USE_DEMANGLE
+
/*****************************************************************************/
static struct dict * d = NULL;
@@ -27,6 +27,10 @@ my_demangle_dict_clear(void) {
const char *
my_demangle(const char * function_name) {
const char * tmp, * fn_copy;
+#if !defined HAVE_LIBIBERTY && defined HAVE_LIBSUPC__
+ extern char *__cxa_demangle (const char *, char *, size_t *, int *);
+ int status = 0;
+#endif
if (!d) {
d = dict_init(dict_key2hash_string, dict_key_cmp_string);
@@ -36,7 +40,11 @@ my_demangle(const char * function_name) {
tmp = dict_find_entry(d, (void *)function_name);
if (!tmp) {
fn_copy = strdup(function_name);
- tmp = cplus_demangle(function_name+strspn(function_name, "_"), DMGL_ANSI | DMGL_PARAMS);
+#ifdef HAVE_LIBIBERTY
+ tmp = cplus_demangle(function_name, DMGL_ANSI | DMGL_PARAMS);
+#elif defined HAVE_LIBSUPC__
+ tmp = __cxa_demangle(function_name, NULL, NULL, &status);
+#endif
if (!tmp) tmp = fn_copy;
if (tmp) dict_enter(d, (void *)fn_copy, (void *)tmp);
}
diff --git a/dict.c b/dict.c
index 8417ef8..944c202 100644
--- a/dict.c
+++ b/dict.c
@@ -152,7 +152,7 @@ dict_key_cmp_string(void * key1, void * key2) {
unsigned int
dict_key2hash_int(void * key) {
- return (unsigned int)key;
+ return (unsigned long)key;
}
int
diff --git a/display_args.c b/display_args.c
index b236415..87fd084 100644
--- a/display_args.c
+++ b/display_args.c
@@ -4,6 +4,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <limits.h>
#include "ltrace.h"
@@ -27,6 +28,10 @@ display_arg(enum tof type, struct process * proc, int arg_num, enum arg_type at)
return fprintf(output, "%d", (int)gimme_arg(type, proc, arg_num));
case ARGTYPE_UINT:
return fprintf(output, "%u", (unsigned)gimme_arg(type, proc, arg_num));
+ case ARGTYPE_LONG:
+ return fprintf(output, "%ld", gimme_arg(type, proc, arg_num));
+ case ARGTYPE_ULONG:
+ return fprintf(output, "%lu", (unsigned long)gimme_arg(type, proc, arg_num));
case ARGTYPE_OCTAL:
return fprintf(output, "0%o", (unsigned)gimme_arg(type, proc, arg_num));
case ARGTYPE_CHAR:
@@ -53,6 +58,10 @@ display_arg(enum tof type, struct process * proc, int arg_num, enum arg_type at)
return display_stringN(2, type, proc, arg_num);
case ARGTYPE_STRING3:
return display_stringN(3, type, proc, arg_num);
+ case ARGTYPE_STRING4:
+ return display_stringN(4, type, proc, arg_num);
+ case ARGTYPE_STRING5:
+ return display_stringN(5, type, proc, arg_num);
case ARGTYPE_UNKNOWN:
default:
return display_unknown(type, proc, arg_num);
@@ -169,23 +178,50 @@ display_format(enum tof type, struct process * proc, int arg_num) {
}
for(i=0; str1[i]; i++) {
if (str1[i]=='%') {
+ int is_long = 0;
while(1) {
unsigned char c = str1[++i];
if (c == '%') {
break;
} else if (!c) {
break;
- } else if ((c=='d') || (c=='i')) {
- len += fprintf(output, ", %d", (int)gimme_arg(type, proc, ++arg_num));
+ } else if (strchr ("lzZtj", c)) {
+ is_long++;
+ if (c == 'j')
+ is_long++;
+ if (is_long > 1 && sizeof (long) < sizeof (long long)) {
+ len += fprintf(output, ", ...");
+ str1[i+1]='\0';
+ break;
+ }
+ } else if (c=='d' || c=='i') {
+ if (is_long)
+ len += fprintf(output, ", %d", (int)gimme_arg(type, proc, ++arg_num));
+ else
+ len += fprintf(output, ", %ld", gimme_arg(type, proc, ++arg_num));
break;
} else if (c=='u') {
- len += fprintf(output, ", %u", (int)gimme_arg(type, proc, ++arg_num));
+ if (is_long)
+ len += fprintf(output, ", %u", (int)gimme_arg(type, proc, ++arg_num));
+ else
+ len += fprintf(output, ", %lu", gimme_arg(type, proc, ++arg_num));
break;
} else if (c=='o') {
- len += fprintf(output, ", 0%o", (int)gimme_arg(type, proc, ++arg_num));
+ if (is_long)
+ len += fprintf(output, ", 0%o", (int)gimme_arg(type, proc, ++arg_num));
+ else
+ len += fprintf(output, ", 0%lo", gimme_arg(type, proc, ++arg_num));
+ break;
+ } else if (c=='x' || c=='X') {
+ if (is_long)
+ len += fprintf(output, ", %#x", (int)gimme_arg(type, proc, ++arg_num));
+ else
+ len += fprintf(output, ", %#lx", gimme_arg(type, proc, ++arg_num));
break;
- } else if ((c=='x') || (c=='X')) {
- len += fprintf(output, ", %#x", (int)gimme_arg(type, proc, ++arg_num));
+ } else if (strchr("eEfFgGaACS", c)
+ || (is_long && (c=='c' || c=='s'))) {
+ len += fprintf(output, ", ...");
+ str1[i+1]='\0';
break;
} else if (c=='c') {
len += fprintf(output, ", '");
@@ -196,9 +232,8 @@ display_format(enum tof type, struct process * proc, int arg_num) {
len += fprintf(output, ", ");
len += display_string(type, proc, ++arg_num);
break;
- } else if ((c=='e') || (c=='E') || (c=='f') || (c=='g')) {
- len += fprintf(output, ", ...");
- str1[i+1]='\0';
+ } else if (c=='p' || c=='n') {
+ len += fprintf(output, ", %p", (void *)gimme_arg(type, proc, ++arg_num));
break;
} else if (c=='*') {
len += fprintf(output, ", %d", (int)gimme_arg(type, proc, ++arg_num));
diff --git a/elf.c b/elf.c
index ad4e8fe..1d37eb9 100644
--- a/elf.c
+++ b/elf.c
@@ -1,21 +1,14 @@
#if HAVE_CONFIG_H
-#include "config.h"
+# include "config.h"
#endif
-/*
- * This file contains functions specific to ELF binaries
- *
- * Silvio Cesare <silvio@big.net.au>
- *
- */
-
-#include <stdio.h>
+#include <endian.h>
#include <errno.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+#include <error.h>
#include <fcntl.h>
-#include <sys/mman.h>
+#include <gelf.h>
+#include <stdint.h>
+#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -23,241 +16,322 @@
#include "elf.h"
#include "debug.h"
-static void do_init_elf(struct ltelf *lte, const char *filename);
-static void do_close_elf(struct ltelf *lte);
-static void do_load_elf_symtab(struct ltelf *lte);
-static void do_init_load_libraries(void);
-static void do_close_load_libraries(void);
-static int in_load_libraries(const char *func);
-static void add_library_symbol(
- struct ltelf *lte,
- int i,
- struct library_symbol **library_symbolspp
-);
-
-static struct ltelf library_lte[MAX_LIBRARY];
+static void do_init_elf (struct ltelf *lte, const char *filename);
+static void do_close_elf (struct ltelf *lte);
+static void add_library_symbol (GElf_Addr addr, const char *name,
+ struct library_symbol **library_symbolspp);
+static int in_load_libraries (const char *name, struct ltelf *lte);
static void
-do_init_elf(struct ltelf *lte, const char *filename) {
- struct stat sbuf;
-
- debug(1, "Reading ELF from %s...", filename);
-
- lte->fd = open(filename, O_RDONLY);
- if (lte->fd == -1) {
- fprintf(
- stderr,
- "Can't open \"%s\": %s\n",
- filename,
- strerror(errno)
- );
- exit(1);
- }
- if (fstat(lte->fd, &sbuf) == -1) {
- fprintf(
- stderr,
- "Can't stat \"%s\": %s\n",
- filename,
- strerror(errno)
- );
- exit(1);
- }
- if (sbuf.st_size < sizeof(Elf_Ehdr)) {
- fprintf(
- stderr,
- "\"%s\" is not an ELF binary object\n",
- filename
- );
- exit(1);
- }
- lte->maddr = mmap(
- NULL, sbuf.st_size, PROT_READ, MAP_SHARED, lte->fd, 0
- );
- if (lte->maddr == (void*)-1) {
- fprintf(
- stderr,
- "Can't mmap \"%s\": %s\n",
- filename,
- strerror(errno)
- );
- exit(1);
- }
-
-#if defined(FILEFORMAT_CHECK)
- if (! ffcheck(lte->maddr)) {
- fprintf(
- stderr,
- "%s: wrong architecture or ELF format\n",
- filename
- );
- exit(1);
- }
-#endif
+do_init_elf (struct ltelf *lte, const char *filename)
+{
+ int i;
+ GElf_Addr relplt_addr = 0;
+ size_t relplt_size = 0;
- lte->ehdr = lte->maddr;
+ debug (1, "Reading ELF from %s...", filename);
- if (strncmp(lte->ehdr->e_ident, ELFMAG, SELFMAG)) {
- fprintf(
- stderr,
- "\"%s\" is not an ELF binary object\n",
- filename
- );
- exit(1);
- }
+ memset (lte, 0, sizeof (*lte));
+ lte->fd = open (filename, O_RDONLY);
+ if (lte->fd == -1)
+ error (EXIT_FAILURE, errno, "Can't open \"%s\"", filename);
-/*
- more ELF checks should go here - the e_arch/e_machine fields in the
- ELF header are specific to each architecture. perhaps move some code
- into sysdeps (have check_ehdr_arch) - silvio
-*/
+#ifdef HAVE_ELF_C_READ_MMAP
+ lte->elf = elf_begin (lte->fd, ELF_C_READ_MMAP, NULL);
+#else
+ lte->elf = elf_begin (lte->fd, ELF_C_READ, NULL);
+#endif
- lte->strtab = NULL;
+ if (lte->elf == NULL || elf_kind (lte->elf) != ELF_K_ELF)
+ error (EXIT_FAILURE, 0, "Can't open ELF file \"%s\"", filename);
- lte->symtab = NULL;
- lte->symtab_len = 0;
-}
+ if (gelf_getehdr (lte->elf, &lte->ehdr) == NULL)
+ error (EXIT_FAILURE, 0, "Can't read ELF header of \"%s\"", filename);
-static void
-do_close_elf(struct ltelf *lte) {
- close(lte->fd);
-}
+ if (lte->ehdr.e_type != ET_EXEC && lte->ehdr.e_type != ET_DYN)
+ error (EXIT_FAILURE, 0, "\"%s\" is not an ELF executable nor shared library",
+ filename);
-static void
-do_load_elf_symtab(struct ltelf *lte) {
- void *maddr = lte->maddr;
- Elf_Ehdr *ehdr = lte->ehdr;
- Elf_Shdr *shdr = (Elf_Shdr *)(maddr + ehdr->e_shoff);
- int i;
-
-/*
- an ELF object should only ever one dynamic symbol section (DYNSYM), but
- can have multiple string tables. the sh_link entry from DYNSYM points
- to the correct STRTAB section - silvio
-*/
-
- for(i = 0; i < ehdr->e_shnum; i++) {
- if (shdr[i].sh_type == SHT_DYNSYM) {
- lte->symtab = (Elf_Sym *)(maddr + shdr[i].sh_offset);
- lte->symtab_len = shdr[i].sh_size;
- lte->strtab = (char *)(
- maddr + shdr[shdr[i].sh_link].sh_offset
- );
- }
+ if (lte->ehdr.e_ident[EI_CLASS] != LT_ELFCLASS
+ || (lte->ehdr.e_machine != LT_ELF_MACHINE
+#ifdef LT_ELF_MACHINE2
+ && lte->ehdr.e_machine != LT_ELF_MACHINE2
+#endif
+#ifdef LT_ELF_MACHINE3
+ && lte->ehdr.e_machine != LT_ELF_MACHINE3
+#endif
+ ))
+ error (EXIT_FAILURE, 0, "\"%s\" is ELF from incompatible architecture",
+ filename);
+
+ for (i = 1; i < lte->ehdr.e_shnum; ++i)
+ {
+ Elf_Scn *scn;
+ GElf_Shdr shdr;
+ const char *name;
+
+ scn = elf_getscn (lte->elf, i);
+ if (scn == NULL || gelf_getshdr (scn, &shdr) == NULL)
+ error (EXIT_FAILURE, 0, "Couldn't get section header from \"%s\"",
+ filename);
+
+ name = elf_strptr (lte->elf, lte->ehdr.e_shstrndx, shdr.sh_name);
+ if (name == NULL)
+ error (EXIT_FAILURE, 0, "Couldn't get section header from \"%s\"",
+ filename);
+
+ if (shdr.sh_type == SHT_DYNSYM)
+ {
+ Elf_Data *data;
+
+ lte->dynsym = elf_getdata (scn, NULL);
+ lte->dynsym_count = shdr.sh_size / shdr.sh_entsize;
+ if (lte->dynsym == NULL || elf_getdata (scn, lte->dynsym) != NULL)
+ error (EXIT_FAILURE, 0, "Couldn't get .dynsym data from \"%s\"",
+ filename);
+
+ scn = elf_getscn (lte->elf, shdr.sh_link);
+ if (scn == NULL || gelf_getshdr (scn, &shdr) == NULL)
+ error (EXIT_FAILURE, 0, "Couldn't get section header from \"%s\"",
+ filename);
+
+ data = elf_getdata (scn, NULL);
+ if (data == NULL || elf_getdata (scn, data) != NULL
+ || shdr.sh_size != data->d_size || data->d_off)
+ error (EXIT_FAILURE, 0, "Couldn't get .dynstr data from \"%s\"",
+ filename);
+
+ lte->dynstr = data->d_buf;
}
-
- debug(2, "symtab: %p", lte->symtab);
- debug(2, "symtab_len: %lu", lte->symtab_len);
- debug(2, "strtab: %p", lte->strtab);
-}
-
-static void
-add_library_symbol(
- struct ltelf *lte,
- int i,
- struct library_symbol **library_symbolspp) {
- struct library_symbol *tmp = *library_symbolspp;
- struct library_symbol *library_symbols;
-
- *library_symbolspp = (struct library_symbol *)malloc(
- sizeof(struct library_symbol)
- );
- library_symbols = *library_symbolspp;
- if (library_symbols == NULL) {
- perror("ltrace: malloc");
- exit(1);
+ else if (shdr.sh_type == SHT_DYNAMIC)
+ {
+ Elf_Data *data;
+ size_t j;
+
+ data = elf_getdata (scn, NULL);
+ if (data == NULL || elf_getdata (scn, data) != NULL)
+ error (EXIT_FAILURE, 0, "Couldn't get .dynamic data from \"%s\"",
+ filename);
+
+ for (j = 0; j < shdr.sh_size / shdr.sh_entsize; ++j)
+ {
+ GElf_Dyn dyn;
+
+ if (gelf_getdyn (data, j, &dyn) == NULL)
+ error (EXIT_FAILURE, 0, "Couldn't get .dynamic data from \"%s\"",
+ filename);
+
+ if (dyn.d_tag == DT_JMPREL)
+ relplt_addr = dyn.d_un.d_ptr;
+ else if (dyn.d_tag == DT_PLTRELSZ)
+ relplt_size = dyn.d_un.d_val;
+ }
+ }
+ else if (shdr.sh_type == SHT_HASH)
+ {
+ Elf_Data *data;
+ size_t j;
+
+ data = elf_getdata (scn, NULL);
+ if (data == NULL || elf_getdata (scn, data) != NULL
+ || data->d_off || data->d_size != shdr.sh_size)
+ error (EXIT_FAILURE, 0, "Couldn't get .hash data from \"%s\"",
+ filename);
+
+ if (shdr.sh_entsize == 4)
+ {
+ /* Standard conforming ELF. */
+ if (data->d_type != ELF_T_WORD)
+ error (EXIT_FAILURE, 0, "Couldn't get .hash data from \"%s\"",
+ filename);
+ lte->hash = (Elf32_Word *) data->d_buf;
+ }
+ else if (shdr.sh_entsize == 8)
+ {
+ /* Alpha or s390x. */
+ Elf32_Word *dst, *src;
+ size_t hash_count = data->d_size / 8;
+
+ lte->hash = (Elf32_Word *)
+ malloc (hash_count * sizeof (Elf32_Word));
+ if (lte->hash == NULL)
+ error (EXIT_FAILURE, 0, "Couldn't convert .hash section from \"%s\"",
+ filename);
+ lte->hash_malloced = 1;
+ dst = lte->hash;
+ src = (Elf32_Word *) data->d_buf;
+ if ((data->d_type == ELF_T_WORD && __BYTE_ORDER == __BIG_ENDIAN)
+ || (data->d_type == ELF_T_XWORD
+ && lte->ehdr.e_ident[EI_DATA] == ELFDATA2MSB))
+ ++src;
+ for (j = 0; j < hash_count; ++j, src += 2)
+ *dst++ = *src;
+ }
+ else
+ error (EXIT_FAILURE, 0, "Unknown .hash sh_entsize in \"%s\"",
+ filename);
+ }
+ else if ((shdr.sh_type == SHT_PROGBITS || shdr.sh_type == SHT_NOBITS)
+ && strcmp (name, ".plt") == 0)
+ lte->plt_addr = shdr.sh_addr;
+ }
+
+ if (lte->dynsym == NULL || lte->dynstr == NULL)
+ error (EXIT_FAILURE, 0, "Couldn't find .dynsym or .dynstr in \"%s\"",
+ filename);
+
+ if (!relplt_addr || !lte->plt_addr)
+ {
+ debug (1, "%s has no PLT relocations", filename);
+ lte->relplt = NULL;
+ lte->relplt_count = 0;
+ }
+ else
+ {
+ for (i = 1; i < lte->ehdr.e_shnum; ++i)
+ {
+ Elf_Scn *scn;
+ GElf_Shdr shdr;
+
+ scn = elf_getscn (lte->elf, i);
+ if (scn == NULL || gelf_getshdr (scn, &shdr) == NULL)
+ error (EXIT_FAILURE, 0, "Couldn't get section header from \"%s\"",
+ filename);
+ if (shdr.sh_addr == relplt_addr && shdr.sh_size == relplt_size)
+ {
+ lte->relplt = elf_getdata (scn, NULL);
+ lte->relplt_count = shdr.sh_size / shdr.sh_entsize;
+ if (lte->relplt == NULL
+ || elf_getdata (scn, lte->relplt) != NULL)
+ error (EXIT_FAILURE, 0, "Couldn't get .rel*.plt data from \"%s\"",
+ filename);
+ break;
+ }
}
-#ifdef __sparc__
- library_symbols->enter_addr = (void *)(lte->symtab[i].st_value + 4 /* plt(?) */);
-#else
- library_symbols->enter_addr = (void *)lte->symtab[i].st_value;
-#endif
- library_symbols->name = &lte->strtab[lte->symtab[i].st_name];
- library_symbols->next = tmp;
+ if (i == lte->ehdr.e_shnum)
+ error (EXIT_FAILURE, 0, "Couldn't find .rel*.plt section in \"%s\"",
+ filename);
- debug(2, "addr: %p, symbol: \"%s\"",
- lte->symtab[i].st_value,
- &lte->strtab[lte->symtab[i].st_name]);
+ debug (1, "%s %zd PLT relocations", filename, lte->relplt_count);
+ }
}
-/*
- this is all pretty slow. perhaps using .hash would be faster, or
- even just a custum built hash table. its all initialization though,
- so its not that bad - silvio
-*/
-
static void
-do_init_load_libraries(void) {
- int i;
-
- for (i = 0; i < library_num; i++) {
- do_init_elf(&library_lte[i], library[i]);
- do_load_elf_symtab(&library_lte[i]);
- }
+do_close_elf (struct ltelf *lte)
+{
+ if (lte->hash_malloced)
+ free ((char *) lte->hash);
+ elf_end (lte->elf);
+ close (lte->fd);
}
static void
-do_close_load_libraries(void) {
- int i;
-
- for (i = 0; i < library_num; i++) {
- do_close_elf(&library_lte[i]);
- }
+add_library_symbol (GElf_Addr addr, const char *name,
+ struct library_symbol **library_symbolspp)
+{
+ struct library_symbol *s;
+ s = malloc (sizeof (struct library_symbol) + strlen (name) + 1);
+ if (s == NULL)
+ error (EXIT_FAILURE, errno, "add_library_symbol failed");
+
+ s->next = *library_symbolspp;
+ s->enter_addr = (void *) (uintptr_t) addr;
+ s->name = (char *) (s + 1);
+ strcpy (s->name, name);
+ *library_symbolspp = s;
+
+ debug (2, "addr: %p, symbol: \"%s\"", (void *) (uintptr_t) addr, name);
}
static int
-in_load_libraries(const char *func) {
- int i, j;
-/*
- if no libraries are specified, assume we want all
-*/
- if (library_num == 0) return 1;
-
- for (i = 0; i < library_num; i++) {
- Elf_Sym *symtab = library_lte[i].symtab;
- char *strtab = library_lte[i].strtab;
-
- for(
- j = 0;
- j < library_lte[i].symtab_len / sizeof(Elf_Sym);
- j++
- ) {
- if (
- symtab[j].st_value &&
- !strcmp(func, &strtab[symtab[j].st_name])
- ) return 1;
- }
+in_load_libraries (const char *name, struct ltelf *lte)
+{
+ size_t i;
+ unsigned long hash;
+
+ if (!library_num)
+ return 1;
+
+ hash = elf_hash (name);
+ for (i = 1; i <= library_num; ++i)
+ {
+ Elf32_Word nbuckets, symndx;
+ Elf32_Word *buckets, *chain;
+
+ if (lte[i].hash == NULL)
+ continue;
+
+ nbuckets = lte[i].hash[0];
+ buckets = &lte[i].hash[2];
+ chain = &lte[i].hash[2 + nbuckets];
+ for (symndx = buckets[hash % nbuckets];
+ symndx != STN_UNDEF;
+ symndx = chain[symndx])
+ {
+ GElf_Sym sym;
+
+ if (gelf_getsym (lte[i].dynsym, symndx, &sym) == NULL)
+ error (EXIT_FAILURE, 0, "Couldn't get symbol from .dynsym");
+
+ if (sym.st_value != 0
+ && sym.st_shndx != SHN_UNDEF
+ && strcmp (name, lte[i].dynstr + sym.st_name) == 0)
+ return 1;
}
- return 0;
+ }
+ return 0;
}
-/*
- this is the main function
-*/
-
struct library_symbol *
-read_elf(const char *filename) {
- struct library_symbol *library_symbols = NULL;
- struct ltelf lte;
- int i;
-
- do_init_elf(&lte, filename);
- do_load_elf_symtab(&lte);
- do_init_load_libraries();
-
- for(i = 0; i < lte.symtab_len / sizeof(Elf_Sym); i++) {
- Elf_Sym *symtab = lte.symtab;
- char *strtab = lte.strtab;
-
- if (!symtab[i].st_shndx && symtab[i].st_value) {
- if (in_load_libraries(&strtab[symtab[i].st_name])) {
- add_library_symbol(&lte, i, &library_symbols);
- }
- }
+read_elf (const char *filename)
+{
+ struct library_symbol *library_symbols = NULL;
+ struct ltelf lte[MAX_LIBRARY + 1];
+ size_t i;
+
+ elf_version (EV_CURRENT);
+
+ do_init_elf (lte, filename);
+ for (i = 0; i < library_num; ++i)
+ do_init_elf (&lte[i + 1], library[i]);
+
+ for (i = 0; i < lte->relplt_count; ++i)
+ {
+ GElf_Rel rel;
+ GElf_Rela rela;
+ GElf_Sym sym;
+ GElf_Addr addr;
+ void *ret;
+ const char *name;
+
+ if (lte->relplt->d_type == ELF_T_REL)
+ {
+ ret = gelf_getrel (lte->relplt, i, &rel);
+ rela.r_offset = rel.r_offset;
+ rela.r_info = rel.r_info;
+ rela.r_addend = 0;
+ }
+ else
+ ret = gelf_getrela (lte->relplt, i, &rela);
+
+ if (ret == NULL
+ || ELF64_R_SYM (rela.r_info) >= lte->dynsym_count
+ || gelf_getsym (lte->dynsym, ELF64_R_SYM (rela.r_info), &sym) == NULL)
+ error (EXIT_FAILURE, 0, "Couldn't get relocation from \"%s\"",
+ filename);
+
+ name = lte->dynstr + sym.st_name;
+ if (in_load_libraries (name, lte))
+ {
+ addr = arch_plt_sym_val (lte, i, &rela);
+ if (addr != 0)
+ add_library_symbol (addr, name, &library_symbols);
}
+ }
- do_close_load_libraries();
- do_close_elf(&lte);
+ for (i = 0; i < library_num + 1; ++i)
+ do_close_elf (&lte[i]);
- return library_symbols;
+ return library_symbols;
}
diff --git a/elf.h b/elf.h
index 26c6a14..5d878f5 100644
--- a/elf.h
+++ b/elf.h
@@ -1,32 +1,31 @@
#ifndef LTRACE_ELF_H
#define LTRACE_ELF_H
-#include <elf.h>
-#include "ltrace.h"
+#include <gelf.h>
+#include <stdlib.h>
-#if ELFSIZE == 64
-#define Elf_Sym Elf64_Sym
-#define Elf_Ehdr Elf64_Ehdr
-#define Elf_Shdr Elf64_Shdr
-#else
-#define Elf_Sym Elf32_Sym
-#define Elf_Ehdr Elf32_Ehdr
-#define Elf_Shdr Elf32_Shdr
-#endif
+#include "ltrace.h"
-struct ltelf {
- int fd;
- void* maddr;
- Elf_Ehdr* ehdr;
- char* strtab;
- Elf_Sym* symtab;
- int symtab_len;
+struct ltelf
+{
+ int fd;
+ Elf *elf;
+ GElf_Ehdr ehdr;
+ Elf_Data *dynsym;
+ size_t dynsym_count;
+ const char *dynstr;
+ GElf_Addr plt_addr;
+ Elf_Data *relplt;
+ size_t relplt_count;
+ Elf32_Word *hash;
+ int hash_malloced;
};
extern int library_num;
extern char *library[MAX_LIBRARY];
-extern struct ltelf library_lte[MAX_LIBRARY];
-extern struct library_symbol * read_elf(const char *);
+extern struct library_symbol *read_elf (const char *);
+
+extern GElf_Addr arch_plt_sym_val (struct ltelf *, size_t, GElf_Rela *);
#endif
diff --git a/etc/ltrace.conf b/etc/ltrace.conf
index 284a94a..7ecce4d 100644
--- a/etc/ltrace.conf
+++ b/etc/ltrace.conf
@@ -5,6 +5,8 @@
; void
; int
; uint == (unsigned int)
+; long
+; ulong == (unsigned long)
; octal == (unsigned) [written in octal]
; char
; addr == (void *) [unsigned, written in hexa]
@@ -28,6 +30,9 @@ int bfd_check_format(addr,int);
; ctype.h
char tolower(char);
char toupper(char);
+addr __ctype_b_loc(void);
+addr __ctype_tolower_loc(void);
+addr __ctype_toupper_loc(void);
; curses.h
int waddch(addr, char);
@@ -80,11 +85,27 @@ int _IO_putc(char,file);
; locale.h
string setlocale(int, string);
+; mcheck.h
+void mtrace(void);
+void muntrace(void);
+
; mntent.h
int endmntent(file);
file setmntent(string,string);
addr getmntent(addr);
+; mqueue.h
+int mq_open(string, int, octal, addr); ; WARNING: 3rd and 4th arguments may not be there
+int mq_close(int);
+int mq_unlink(string);
+int mq_getattr(int, addr);
+int mq_setattr(int, addr, addr);
+int mq_notify(int, addr);
+int mq_send(int, string3, ulong, uint);
+int mq_timedsend(int, string3, ulong, uint, addr);
+long mq_receive(int, +string0, ulong, addr);
+long mq_timedreceive(int, +string0, ulong, addr, addr);
+
; netdb.h
void endhostent(void);
void endnetent(void);
@@ -97,7 +118,7 @@ int getaddrinfo(string, string, addr, addr);
addr gethostbyaddr(string, uint, int);
addr gethostbyname(string);
addr gethostent(void);
-int getnameinfo(addr, int, string, int, string, int, int);
+int getnameinfo(addr, uint, string, uint, string, uint, uint);
addr getnetbyaddr(uint, int);
addr getnetbyname(string);
addr getnetent(void);
@@ -162,78 +183,78 @@ int feof(file);
int ferror(file);
int fflush(file);
char fgetc(file);
-addr fgets(+string, uint, file);
+addr fgets(+string, int, file);
int fileno(file);
file fopen(string,string);
file fopen64(string,string);
int fprintf(file,format);
int fputc(char,file);
int fputs(string,file);
-uint fread(addr,uint,uint,file);
-uint fread_unlocked(addr,uint,uint,file);
-uint fwrite(string,uint,uint,file);
-uint fwrite_unlocked(string,uint,uint,file);
+ulong fread(addr,ulong,ulong,file);
+ulong fread_unlocked(addr,ulong,ulong,file);
+ulong fwrite(string,ulong,ulong,file);
+ulong fwrite_unlocked(string,ulong,ulong,file);
int pclose(addr);
void perror(string);
addr popen(string, string);
int printf(format);
int puts(string);
int remove(string);
-int snprintf(+string2,int,format);
+int snprintf(+string2,ulong,format);
int sprintf(+string,format);
string tempnam(string,string);
int vfprintf(file,string,addr);
-int vsnprintf(+string2,int,string,addr);
-int setvbuf(file,addr,int,uint);
+int vsnprintf(+string2,ulong,string,addr);
+int setvbuf(file,addr,int,ulong);
void setbuf(file,addr);
-void setbuffer(file,addr,uint);
+void setbuffer(file,addr,ulong);
void setlinebuf(file);
int rename(string,string);
; stdlib.h
-int __strtol_internal(string,addr,int);
-uint __strtoul_internal(string,addr,int);
+long __strtol_internal(string,addr,int);
+ulong __strtoul_internal(string,addr,int);
int atexit(addr);
-addr bsearch(string, addr, uint, uint, addr);
-addr calloc(uint, uint);
+addr bsearch(string, addr, ulong, ulong, addr);
+addr calloc(ulong, ulong);
void exit(int);
void free(addr);
string getenv(string);
int putsenv(string);
int setenv(string,string,int);
void unsetenv(string);
-addr malloc(int);
-void qsort(addr,uint,uint,addr);
+addr malloc(ulong);
+void qsort(addr,ulong,ulong,addr);
int random(void);
-addr realloc(addr,uint);
+addr realloc(addr,ulong);
void srandom(uint);
int system(string);
; string.h
-void bcopy(addr,addr,int);
-void bzero(addr,int);
+void bcopy(addr,addr,ulong);
+void bzero(addr,ulong);
string basename(string);
string index(string,char);
-addr memchr(string,char,uint);
-addr memcpy(addr,string3,uint);
-addr memset(addr,char,int);
+addr memchr(string,char,ulong);
+addr memcpy(addr,string3,ulong);
+addr memset(addr,char,long);
string rindex(string,char);
addr stpcpy(addr,string);
int strcasecmp(string, string);
string strcat(string, string);
string strchr(string,char);
int strcoll(string,string);
-uint strlen(string);
+ulong strlen(string);
int strcmp(string,string);
addr strcpy(addr,string);
addr strdup(string);
string strerror(int);
-int strncmp(string,string,int);
-addr strncpy(addr,string3,uint);
+int strncmp(string,string,ulong);
+addr strncpy(addr,string3,ulong);
string strrchr(string,char);
string strsep(addr,string);
-uint strspn(string,string);
-uint strcspn(string,string);
+ulong strspn(string,string);
+ulong strcspn(string,string);
string strstr(string,string);
string strtok(string, string);
@@ -278,8 +299,8 @@ string ctime(addr);
int gettimeofday(addr, addr);
addr gmtime(addr);
addr localtime(addr);
-uint strftime(+string2,uint,string,addr);
-int time(addr);
+ulong strftime(+string2,ulong,string,addr);
+long time(addr);
; unistd.h
void _exit(int);
@@ -294,13 +315,13 @@ int execlp(string,string,addr,addr,addr);
int execv(string,addr);
int fchdir(int);
int fork(void);
-int ftruncate(int,uint);
-string2 getcwd(addr,uint);
-int getdomainname(+string2,int);
+int ftruncate(int,ulong);
+string2 getcwd(addr,ulong);
+int getdomainname(+string2,ulong);
int geteuid(void);
int getegid(void);
int getgid(void);
-int gethostname(+string2,int);
+int gethostname(+string2,ulong);
string getlogin(void);
int getopt(int,addr,string);
int getpid(void);
@@ -312,25 +333,25 @@ int getpgid(int);
int isatty(int);
int link(string,string);
int mkdir(string,octal);
-int read(int, +string0, uint);
+long read(int, +string0, ulong);
int rmdir(string);
int seteuid(uint);
int setgid(int);
-int sethostname(+string2,int);
+int sethostname(+string2,ulong);
int setpgid(int,int);
int setreuid(uint, uint);
int setuid(int);
uint sleep(uint);
int symlink(string,string);
int sync(void);
-int truncate(string,uint);
+int truncate(string,ulong);
string ttyname(int);
int unlink(string);
void usleep(uint);
-int write(int, string3, uint);
-addr sbrk(int);
+long write(int, string3, ulong);
+addr sbrk(long);
int getpagesize(void);
-int lseek(int,int,int);
+long lseek(int,long,int);
int pipe(addr);
; utmp.h
@@ -338,6 +359,9 @@ void endutent(void);
addr getutent(void);
void setutent(void);
+; wchar.h
+int fwide(addr, int);
+
; sys/wait.h
int wait(addr);
int waitpid(int,addr,int);
@@ -396,17 +420,17 @@ int SYS_execve(string,addr,addr);
void SYS_exit(int);
void SYS_exit_group(int);
int SYS_fork(void);
-int SYS_getcwd(+string2,uint);
+int SYS_getcwd(+string2,ulong);
int SYS_getpid(void);
-;addr SYS_mmap(addr,int,int,int,int,int);
-int SYS_munmap(addr,uint);
+;addr SYS_mmap(addr,ulong,int,int,int,long);
+int SYS_munmap(addr,ulong);
int SYS_open(string,int,octal);
int SYS_personality(uint);
-int SYS_read(int,+string0,uint);
+long SYS_read(int,+string0,ulong);
int SYS_stat(string,addr);
octal SYS_umask(octal);
int SYS_uname(addr);
-int SYS_write(int,string3,uint);
+long SYS_write(int,string3,ulong);
int SYS_sync(void);
int SYS_setxattr(string,string,addr,uint,int);
int SYS_lsetxattr(string,string,addr,uint,int);
diff --git a/ltrace.h b/ltrace.h
index b9b62fe..f9b7dcd 100644
--- a/ltrace.h
+++ b/ltrace.h
@@ -13,6 +13,10 @@
#define MAX_LIBRARY 30
+#if defined HAVE_LIBIBERTY || defined HAVE_LIBSUPC__
+# define USE_DEMANGLE
+#endif
+
extern char * command;
extern int exiting; /* =1 if we have to exit ASAP */
@@ -28,6 +32,8 @@ enum arg_type {
ARGTYPE_VOID,
ARGTYPE_INT,
ARGTYPE_UINT,
+ ARGTYPE_LONG,
+ ARGTYPE_ULONG,
ARGTYPE_OCTAL,
ARGTYPE_CHAR,
ARGTYPE_ADDR,
@@ -37,7 +43,9 @@ enum arg_type {
ARGTYPE_STRING0, /* stringN: string up to (arg N) bytes */
ARGTYPE_STRING1,
ARGTYPE_STRING2,
- ARGTYPE_STRING3
+ ARGTYPE_STRING3,
+ ARGTYPE_STRING4,
+ ARGTYPE_STRING5
};
enum tof {
diff --git a/ltrace.spec.in b/ltrace.spec.in
deleted file mode 100644
index 74ef25f..0000000
--- a/ltrace.spec.in
+++ /dev/null
@@ -1,50 +0,0 @@
-%define package ltrace
-%define version @VERSION@
-%define release 1
-%define _mandir /usr/share/man
-Summary: Tracks runtime library calls for dynamically linked executables
-Name: %{package}
-Version: %{version}
-Release: %{release}
-Copyright: GPL
-Group: Development/Debuggers
-ExclusiveArch: arm i386 m68k s390
-Source0: ftp://ftp.debian.org/debian/dists/unstable/main/source/utils/ltrace_%{version}.tar.gz
-Prefix: %{_prefix}
-BuildRoot: /tmp/%{name}-root
-
-%description
-ltrace is a debugging program which runs a specified command until it
-exits. While the command is executing, ltrace intercepts and records
-the dynamic library calls which are called by
-the executed process and the signals received by that process.
-It can also intercept and print the system calls executed by the program.
-
-The program to be traced need not be recompiled for this, so you can
-use it on binaries for which you don't have the source.
-
-You should install ltrace if you need a sysadmin tool for tracking the
-execution of processes.
-
-%prep
-%setup -q
-./configure --prefix=/usr --sysconfdir=/etc
-
-%build
-make
-
-%install
-rm -rf $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT
-make DESTDIR=$RPM_BUILD_ROOT mandir=%{_mandir} install
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files
-%defattr(-,root,root)
-%config /etc/ltrace.conf
-%doc COPYING README TODO BUGS ChangeLog
-/usr/bin/ltrace
-%{_mandir}/ltrace.1
-%changelog
diff --git a/options.c b/options.c
index e8f7113..aff93af 100644
--- a/options.c
+++ b/options.c
@@ -37,7 +37,7 @@ int opt_f = 0; /* trace child processes as they are created */
char * opt_u = NULL; /* username to run command as */
int opt_r = 0; /* print relative timestamp */
int opt_t = 0; /* print absolute timestamp */
-#if HAVE_LIBIBERTY
+#ifdef USE_DEMANGLE
int opt_C = 0; /* Demangle low-level symbol names into user-level names */
#endif
int opt_n = 0; /* indent trace output according to program flow */
@@ -65,7 +65,7 @@ usage(void) {
" -a COLUMN align return values in a secific column.\n"
# endif
" -c count time and calls, and report a summary on exit.\n"
-# if HAVE_LIBIBERTY
+# ifdef USE_DEMANGLE
# if HAVE_GETOPT_LONG
" -C, --demangle decode low-level symbol names into user-level names.\n"
# else
@@ -163,10 +163,10 @@ process_options(int argc, char **argv) {
static struct option long_options[] = {
{ "align", 1, 0, 'a'},
{ "debug", 0, 0, 'd'},
-# if HAVE_LIBIBERTY
+# ifdef USE_DEMANGLE
{ "demangle", 0, 0, 'C'},
#endif
- { "indent", 0, 0, 'n'},
+ { "indent", 1, 0, 'n'},
{ "help", 0, 0, 'h'},
{ "library", 1, 0, 'l'},
{ "output", 1, 0, 'o'},
@@ -174,13 +174,13 @@ process_options(int argc, char **argv) {
{ 0, 0, 0, 0}
};
c = getopt_long(argc, argv, "+cdfhiLrStTV"
-# if HAVE_LIBIBERTY
+# ifdef USE_DEMANGLE
"C"
# endif
"a:e:l:n:o:p:s:u:", long_options, &option_index);
#else
c = getopt(argc, argv, "+cdfhiLrStTV"
-# if HAVE_LIBIBERTY
+# ifdef USE_DEMANGLE
"C"
# endif
"a:e:l:n:o:p:s:u:");
@@ -193,7 +193,7 @@ process_options(int argc, char **argv) {
break;
case 'c': opt_c++;
break;
-#if HAVE_LIBIBERTY
+#ifdef USE_DEMANGLE
case 'C': opt_C++;
break;
#endif
diff --git a/options.h b/options.h
index 86c1694..0fbb427 100644
--- a/options.h
+++ b/options.h
@@ -17,9 +17,7 @@ extern int opt_f; /* trace child processes */
extern char * opt_u; /* username to run command as */
extern int opt_r; /* print relative timestamp */
extern int opt_t; /* print absolute timestamp */
-#if HAVE_LIBIBERTY
extern int opt_C; /* Demanglelow-level symbol names into user-level names */
-#endif
extern int opt_n; /* indent trace output according to program flow */
extern int opt_T; /* show the time spent inside each call */
diff --git a/output.c b/output.c
index 8dc8ba3..109a201 100644
--- a/output.c
+++ b/output.c
@@ -15,7 +15,7 @@
#include "output.h"
#include "dict.h"
-#if HAVE_LIBIBERTY
+#ifdef USE_DEMANGLE
#include "demangle.h"
#endif
@@ -107,7 +107,7 @@ name2func(char * name) {
tmp = list_of_functions;
while(tmp) {
-#if HAVE_LIBIBERTY
+#ifdef USE_DEMANGLE
str1 = opt_C ? my_demangle(tmp->name) : tmp->name;
str2 = opt_C ? my_demangle(name) : name;
#else
@@ -169,7 +169,7 @@ output_left(enum tof type, struct process * proc, char * function_name) {
current_depth = proc->callstack_depth;
proc->type_being_displayed = type;
begin_of_line(type, proc);
-#if HAVE_LIBIBERTY
+#ifdef USE_DEMANGLE
current_column += fprintf(output, "%s(", opt_C ? my_demangle(function_name): function_name);
#else
current_column += fprintf(output, "%s(", function_name);
@@ -244,7 +244,7 @@ output_right(enum tof type, struct process * proc, char * function_name) {
}
if (current_pid != proc->pid) {
begin_of_line(type, proc);
-#if HAVE_LIBIBERTY
+#ifdef USE_DEMANGLE
current_column += fprintf(output, "<... %s resumed> ", opt_C ? my_demangle(function_name) : function_name);
#else
current_column += fprintf(output, "<... %s resumed> ", function_name);
diff --git a/read_config_file.c b/read_config_file.c
index 3e58e6b..bdceef5 100644
--- a/read_config_file.c
+++ b/read_config_file.c
@@ -15,6 +15,8 @@
* "void" ARGTYPE_VOID
* "int" ARGTYPE_INT
* "uint" ARGTYPE_UINT
+ * "long" ARGTYPE_LONG
+ * "ulong" ARGTYPE_ULONG
* "octal" ARGTYPE_OCTAL
* "char" ARGTYPE_CHAR
* "string" ARGTYPE_STRING
@@ -31,6 +33,8 @@ static struct list_of_pt_t {
{ "void", ARGTYPE_VOID },
{ "int", ARGTYPE_INT },
{ "uint", ARGTYPE_UINT },
+ { "long", ARGTYPE_LONG },
+ { "ulong", ARGTYPE_ULONG },
{ "octal", ARGTYPE_OCTAL },
{ "char", ARGTYPE_CHAR },
{ "addr", ARGTYPE_ADDR },
@@ -41,6 +45,8 @@ static struct list_of_pt_t {
{ "string1",ARGTYPE_STRING1 },
{ "string2",ARGTYPE_STRING2 },
{ "string3",ARGTYPE_STRING3 },
+ { "string4",ARGTYPE_STRING4 },
+ { "string5",ARGTYPE_STRING5 },
{ NULL, ARGTYPE_UNKNOWN } /* Must finish with NULL */
};
diff --git a/sysdeps/linux-gnu/Makefile b/sysdeps/linux-gnu/Makefile
index cdea9af..7163709 100644
--- a/sysdeps/linux-gnu/Makefile
+++ b/sysdeps/linux-gnu/Makefile
@@ -1,8 +1,8 @@
-ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
+ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
-CFLAGS += -I$(TOPDIR)/sysdeps/linux-gnu/$(ARCH)
+CPPFLAGS += -I$(TOPDIR)/sysdeps/linux-gnu/$(ARCH)
-OBJ = trace.o proc.o breakpoint.o
+OBJ = trace.o proc.o breakpoint.o
all: sysdep.h signalent.h syscallent.h ../sysdep.o
@@ -16,10 +16,10 @@ syscallent.h:
cp $(ARCH)/syscallent.h syscallent.h
../sysdep.o: os.o $(ARCH)/arch.o
- $(LD) -r -o ../sysdep.o os.o $(ARCH)/arch.o
+ $(CC) -nostdlib -r -o ../sysdep.o os.o $(ARCH)/arch.o
os.o: $(OBJ)
- $(LD) -r -o os.o $(OBJ)
+ $(CC) -nostdlib -r -o os.o $(OBJ)
$(ARCH)/arch.o: dummy
$(MAKE) -C $(ARCH)
diff --git a/sysdeps/linux-gnu/alpha/Makefile b/sysdeps/linux-gnu/alpha/Makefile
index 4b347a5..60d7531 100644
--- a/sysdeps/linux-gnu/alpha/Makefile
+++ b/sysdeps/linux-gnu/alpha/Makefile
@@ -1,9 +1,9 @@
-OBJ = trace.o regs.o
+OBJ = trace.o regs.o plt.o
all: arch.o
arch.o: $(OBJ)
- $(LD) -r -o arch.o $(OBJ)
+ $(CC) -nostdlib -r -o arch.o $(OBJ)
clean:
$(RM) $(OBJ) arch.o
diff --git a/sysdeps/linux-gnu/alpha/arch.h b/sysdeps/linux-gnu/alpha/arch.h
index ce484aa..cdeeb52 100644
--- a/sysdeps/linux-gnu/alpha/arch.h
+++ b/sysdeps/linux-gnu/alpha/arch.h
@@ -1,4 +1,7 @@
#define BREAKPOINT_VALUE { 0x80, 0x00, 0x00, 0x00 }
#define BREAKPOINT_LENGTH 4
#define DECR_PC_AFTER_BREAK 4
-#define ELFSIZE 64
+
+#define LT_ELFCLASS ELFCLASS64
+#define LT_ELF_MACHINE EM_ALPHA
+#define LT_ELF_MACHINE2 EM_FAKE_ALPHA
diff --git a/sysdeps/linux-gnu/alpha/plt.c b/sysdeps/linux-gnu/alpha/plt.c
new file mode 100644
index 0000000..a626d59
--- /dev/null
+++ b/sysdeps/linux-gnu/alpha/plt.c
@@ -0,0 +1,9 @@
+#include <gelf.h>
+#include "ltrace.h"
+#include "elf.h"
+
+GElf_Addr
+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
+{
+ return lte->plt_addr + ndx * 12 + 32;
+}
diff --git a/sysdeps/linux-gnu/alpha/syscallent.h b/sysdeps/linux-gnu/alpha/syscallent.h
index ec0605b..97256d2 100644
--- a/sysdeps/linux-gnu/alpha/syscallent.h
+++ b/sysdeps/linux-gnu/alpha/syscallent.h
@@ -421,4 +421,19 @@
"clock_gettime", /* 420 */
"clock_getres", /* 421 */
"clock_nanosleep", /* 422 */
- "semtimedop" /* 423 */
+ "semtimedop", /* 423 */
+ "tgkill", /* 424 */
+ "stat64", /* 425 */
+ "lstat64", /* 426 */
+ "fstat64", /* 427 */
+ "vserver", /* 428 */
+ "mbind", /* 429 */
+ "get_mempolicy", /* 430 */
+ "set_mempolicy", /* 431 */
+ "mq_open", /* 432 */
+ "mq_unlink", /* 433 */
+ "mq_timedsend", /* 434 */
+ "mq_timedreceive", /* 435 */
+ "mq_notify", /* 436 */
+ "mq_getsetattr", /* 437 */
+ "waitid" /* 438 */
diff --git a/sysdeps/linux-gnu/arm/Makefile b/sysdeps/linux-gnu/arm/Makefile
index 7886d8d..00e77bc 100644
--- a/sysdeps/linux-gnu/arm/Makefile
+++ b/sysdeps/linux-gnu/arm/Makefile
@@ -1,9 +1,9 @@
-OBJ = trace.o regs.o
+OBJ = trace.o regs.o plt.o
all: arch.o
arch.o: $(OBJ) arch.h
- $(LD) -r -o arch.o $(OBJ)
+ $(CC) -nostdlib -r -o arch.o $(OBJ)
clean:
$(RM) $(OBJ) arch.o
diff --git a/sysdeps/linux-gnu/arm/arch.h b/sysdeps/linux-gnu/arm/arch.h
index dc2a1d0..e8a8b66 100644
--- a/sysdeps/linux-gnu/arm/arch.h
+++ b/sysdeps/linux-gnu/arm/arch.h
@@ -1,3 +1,6 @@
#define BREAKPOINT_VALUE { 0x01, 0x00, 0x9f, 0xef }
#define BREAKPOINT_LENGTH 4
#define DECR_PC_AFTER_BREAK 0
+
+#define LT_ELFCLASS ELFCLASS32
+#define LT_ELF_MACHINE EM_ARM
diff --git a/sysdeps/linux-gnu/arm/plt.c b/sysdeps/linux-gnu/arm/plt.c
new file mode 100644
index 0000000..635b4ce
--- /dev/null
+++ b/sysdeps/linux-gnu/arm/plt.c
@@ -0,0 +1,9 @@
+#include <gelf.h>
+#include "ltrace.h"
+#include "elf.h"
+
+GElf_Addr
+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
+{
+ return lte->plt_addr + 20 + ndx * 12;
+}
diff --git a/sysdeps/linux-gnu/i386/Makefile b/sysdeps/linux-gnu/i386/Makefile
index 4b347a5..60d7531 100644
--- a/sysdeps/linux-gnu/i386/Makefile
+++ b/sysdeps/linux-gnu/i386/Makefile
@@ -1,9 +1,9 @@
-OBJ = trace.o regs.o
+OBJ = trace.o regs.o plt.o
all: arch.o
arch.o: $(OBJ)
- $(LD) -r -o arch.o $(OBJ)
+ $(CC) -nostdlib -r -o arch.o $(OBJ)
clean:
$(RM) $(OBJ) arch.o
diff --git a/sysdeps/linux-gnu/i386/arch.h b/sysdeps/linux-gnu/i386/arch.h
index 6a18fd7..dc7383f 100644
--- a/sysdeps/linux-gnu/i386/arch.h
+++ b/sysdeps/linux-gnu/i386/arch.h
@@ -1,3 +1,6 @@
#define BREAKPOINT_VALUE {0xcc}
#define BREAKPOINT_LENGTH 1
#define DECR_PC_AFTER_BREAK 1
+
+#define LT_ELFCLASS ELFCLASS32
+#define LT_ELF_MACHINE EM_386
diff --git a/sysdeps/linux-gnu/i386/plt.c b/sysdeps/linux-gnu/i386/plt.c
new file mode 100644
index 0000000..e40b03a
--- /dev/null
+++ b/sysdeps/linux-gnu/i386/plt.c
@@ -0,0 +1,9 @@
+#include <gelf.h>
+#include "ltrace.h"
+#include "elf.h"
+
+GElf_Addr
+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
+{
+ return lte->plt_addr + (ndx + 1) * 16;
+}
diff --git a/sysdeps/linux-gnu/i386/syscallent.h b/sysdeps/linux-gnu/i386/syscallent.h
index 0a6d9cc..b6eb2a8 100644
--- a/sysdeps/linux-gnu/i386/syscallent.h
+++ b/sysdeps/linux-gnu/i386/syscallent.h
@@ -1,4 +1,4 @@
- "0", /* 0 */
+ "restart_syscall", /* 0 */
"exit", /* 1 */
"fork", /* 2 */
"read", /* 3 */
@@ -178,8 +178,8 @@
"rt_sigtimedwait", /* 177 */
"rt_sigqueueinfo", /* 178 */
"rt_sigsuspend", /* 179 */
- "pread", /* 180 */
- "pwrite", /* 181 */
+ "pread64", /* 180 */
+ "pwrite64", /* 181 */
"chown", /* 182 */
"getcwd", /* 183 */
"capget", /* 184 */
@@ -221,7 +221,7 @@
"getdents64", /* 220 */
"fcntl64", /* 221 */
"222", /* 222 */
- "security", /* 223 */
+ "223", /* 223 */
"gettid", /* 224 */
"readahead", /* 225 */
"setxattr", /* 226 */
@@ -248,6 +248,38 @@
"io_getevents", /* 247 */
"io_submit", /* 248 */
"io_cancel", /* 249 */
- "alloc_hugepages", /* 250 */
- "free_hugepages", /* 251 */
+ "fadvise64", /* 250 */
+ "251", /* 251 */
"exit_group", /* 252 */
+ "lookup_dcookie", /* 253 */
+ "epoll_create", /* 254 */
+ "epoll_ctl", /* 255 */
+ "epoll_wait", /* 256 */
+ "remap_file_pages", /* 257 */
+ "set_tid_address", /* 258 */
+ "timer_create", /* 259 */
+ "timer_settime", /* 260 */
+ "timer_gettime", /* 261 */
+ "timer_getoverrun", /* 262 */
+ "timer_delete", /* 263 */
+ "clock_settime", /* 264 */
+ "clock_gettime", /* 265 */
+ "clock_getres", /* 266 */
+ "clock_nanosleep", /* 267 */
+ "statfs64", /* 268 */
+ "fstatfs64", /* 269 */
+ "tgkill", /* 270 */
+ "utimes", /* 271 */
+ "fadvise64_64", /* 272 */
+ "vserver", /* 273 */
+ "mbind", /* 274 */
+ "get_mempolicy", /* 275 */
+ "set_mempolicy", /* 276 */
+ "mq_open", /* 277 */
+ "mq_unlink", /* 278 */
+ "mq_timedsend", /* 279 */
+ "mq_timedreceive", /* 280 */
+ "mq_notify", /* 281 */
+ "mq_getsetattr", /* 282 */
+ "kexec_load", /* 283 */
+ "waitid", /* 284 */
diff --git a/sysdeps/linux-gnu/m68k/Makefile b/sysdeps/linux-gnu/m68k/Makefile
index 4b347a5..60d7531 100644
--- a/sysdeps/linux-gnu/m68k/Makefile
+++ b/sysdeps/linux-gnu/m68k/Makefile
@@ -1,9 +1,9 @@
-OBJ = trace.o regs.o
+OBJ = trace.o regs.o plt.o
all: arch.o
arch.o: $(OBJ)
- $(LD) -r -o arch.o $(OBJ)
+ $(CC) -nostdlib -r -o arch.o $(OBJ)
clean:
$(RM) $(OBJ) arch.o
diff --git a/sysdeps/linux-gnu/m68k/arch.h b/sysdeps/linux-gnu/m68k/arch.h
index a29e5f1..1790d09 100644
--- a/sysdeps/linux-gnu/m68k/arch.h
+++ b/sysdeps/linux-gnu/m68k/arch.h
@@ -1,3 +1,6 @@
#define BREAKPOINT_VALUE { 0x4e, 0x4f }
#define BREAKPOINT_LENGTH 2
#define DECR_PC_AFTER_BREAK 2
+
+#define LT_ELFCLASS ELFCLASS32
+#define LT_ELF_MACHINE EM_68K
diff --git a/sysdeps/linux-gnu/m68k/plt.c b/sysdeps/linux-gnu/m68k/plt.c
new file mode 100644
index 0000000..f20986c
--- /dev/null
+++ b/sysdeps/linux-gnu/m68k/plt.c
@@ -0,0 +1,10 @@
+#include <gelf.h>
+#include "ltrace.h"
+#include "elf.h"
+
+GElf_Addr
+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
+{
+ return lte->plt_addr + (ndx + 1)
+ * ((lte->ehdr.e_flags & EF_CPU32) ? 24 : 12);
+}
diff --git a/sysdeps/linux-gnu/ppc/Makefile b/sysdeps/linux-gnu/ppc/Makefile
index 4b347a5..60d7531 100644
--- a/sysdeps/linux-gnu/ppc/Makefile
+++ b/sysdeps/linux-gnu/ppc/Makefile
@@ -1,9 +1,9 @@
-OBJ = trace.o regs.o
+OBJ = trace.o regs.o plt.o
all: arch.o
arch.o: $(OBJ)
- $(LD) -r -o arch.o $(OBJ)
+ $(CC) -nostdlib -r -o arch.o $(OBJ)
clean:
$(RM) $(OBJ) arch.o
diff --git a/sysdeps/linux-gnu/ppc/arch.h b/sysdeps/linux-gnu/ppc/arch.h
index 72fa45f..e04e885 100644
--- a/sysdeps/linux-gnu/ppc/arch.h
+++ b/sysdeps/linux-gnu/ppc/arch.h
@@ -1,3 +1,6 @@
#define BREAKPOINT_VALUE { 0x7f, 0xe0, 0x00, 0x08 }
#define BREAKPOINT_LENGTH 4
#define DECR_PC_AFTER_BREAK 0
+
+#define LT_ELFCLASS ELFCLASS32
+#define LT_ELF_MACHINE EM_PPC
diff --git a/sysdeps/linux-gnu/ppc/plt.c b/sysdeps/linux-gnu/ppc/plt.c
new file mode 100644
index 0000000..9e2c094
--- /dev/null
+++ b/sysdeps/linux-gnu/ppc/plt.c
@@ -0,0 +1,9 @@
+#include <gelf.h>
+#include "ltrace.h"
+#include "elf.h"
+
+GElf_Addr
+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
+{
+ return rela->r_offset;
+}
diff --git a/sysdeps/linux-gnu/ppc/syscallent.h b/sysdeps/linux-gnu/ppc/syscallent.h
index e709aab..2bbba38 100644
--- a/sysdeps/linux-gnu/ppc/syscallent.h
+++ b/sysdeps/linux-gnu/ppc/syscallent.h
@@ -222,7 +222,7 @@
"futex", /* 221 */
"sched_setaffinity", /* 222 */
"sched_getaffinity", /* 223 */
- "security", /* 224 */
+ "224", /* 224 */
"tuxcall", /* 225 */
"sendfile64", /* 226 */
"io_setup", /* 227 */
@@ -230,3 +230,34 @@
"io_getevents", /* 229 */
"io_submit", /* 230 */
"io_cancel", /* 231 */
+ "set_tid_address", /* 232 */
+ "fadvise64", /* 233 */
+ "exit_group", /* 234 */
+ "lookup_dcookie", /* 235 */
+ "epoll_create", /* 236 */
+ "epoll_ctl", /* 237 */
+ "epoll_wait", /* 238 */
+ "remap_file_pages", /* 239 */
+ "timer_create", /* 240 */
+ "timer_settime", /* 241 */
+ "timer_gettime", /* 242 */
+ "timer_getoverrun", /* 243 */
+ "timer_delete", /* 244 */
+ "clock_settime", /* 245 */
+ "clock_gettime", /* 246 */
+ "clock_getres", /* 247 */
+ "clock_nanosleep", /* 248 */
+ "swapcontext", /* 249 */
+ "tgkill", /* 250 */
+ "utimes", /* 251 */
+ "statfs64", /* 252 */
+ "fstatfs64", /* 253 */
+ "fadvise64_64", /* 254 */
+ "rtas", /* 255 */
+ "mq_open", /* 262 */
+ "mq_unlink", /* 263 */
+ "mq_timedsend", /* 264 */
+ "mq_timedreceive", /* 265 */
+ "mq_notify", /* 266 */
+ "mq_getsetattr", /* 267 */
+ "kexec_load", /* 268 */
diff --git a/sysdeps/linux-gnu/s390/Makefile b/sysdeps/linux-gnu/s390/Makefile
index ffad176..cea1b45 100644
--- a/sysdeps/linux-gnu/s390/Makefile
+++ b/sysdeps/linux-gnu/s390/Makefile
@@ -2,12 +2,12 @@
# S/390 version
# Copyright (C) 2001 IBM Poughkeepsie, IBM Corporation
#
-OBJ = trace.o regs.o
+OBJ = trace.o regs.o plt.o
all: arch.o
arch.o: $(OBJ)
- $(LD) -r -o arch.o $(OBJ)
+ $(CC) -nostdlib -r -o arch.o $(OBJ)
clean:
$(RM) $(OBJ) arch.o
diff --git a/sysdeps/linux-gnu/s390/arch.h b/sysdeps/linux-gnu/s390/arch.h
index fc66afb..bb61ca7 100644
--- a/sysdeps/linux-gnu/s390/arch.h
+++ b/sysdeps/linux-gnu/s390/arch.h
@@ -6,3 +6,6 @@
#define BREAKPOINT_VALUE { 0x00, 0x01 }
#define BREAKPOINT_LENGTH 2
#define DECR_PC_AFTER_BREAK 2
+
+#define LT_ELFCLASS ELFCLASS32
+#define LT_ELF_MACHINE EM_S390
diff --git a/sysdeps/linux-gnu/s390/plt.c b/sysdeps/linux-gnu/s390/plt.c
new file mode 100644
index 0000000..df31b48
--- /dev/null
+++ b/sysdeps/linux-gnu/s390/plt.c
@@ -0,0 +1,9 @@
+#include <gelf.h>
+#include "ltrace.h"
+#include "elf.h"
+
+GElf_Addr
+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
+{
+ return lte->plt_addr + (ndx + 1) * 32;
+}
diff --git a/sysdeps/linux-gnu/s390/syscallent.h b/sysdeps/linux-gnu/s390/syscallent.h
index 6ee7829..13bd3c2 100644
--- a/sysdeps/linux-gnu/s390/syscallent.h
+++ b/sysdeps/linux-gnu/s390/syscallent.h
@@ -221,7 +221,7 @@
"getdents64", /* 220 */
"fcntl64", /* 221 */
"readahead", /* 222 */
- "223", /* 223 */
+ "sendfile64", /* 223 */
"setxattr", /* 224 */
"lsetxattr", /* 225 */
"fsetxattr", /* 226 */
@@ -236,3 +236,42 @@
"fremovexattr", /* 235 */
"gettid", /* 236 */
"tkill", /* 237 */
+ "futex", /* 238 */
+ "sched_setaffinity", /* 239 */
+ "sched_getaffinity", /* 240 */
+ "241", /* 241 */
+ "242", /* 242 */
+ "io_setup", /* 243 */
+ "io_destroy", /* 244 */
+ "io_getevents", /* 245 */
+ "io_submit", /* 246 */
+ "io_cancel", /* 247 */
+ "exit_group", /* 248 */
+ "epoll_create", /* 249 */
+ "epoll_ctl", /* 250 */
+ "epoll_wait", /* 251 */
+ "set_tid_address", /* 252 */
+ "fadvise64", /* 253 */
+ "timer_create", /* 254 */
+ "timer_settime", /* 255 */
+ "timer_gettime", /* 256 */
+ "timer_getoverrun", /* 257 */
+ "timer_delete", /* 258 */
+ "clock_settime", /* 259 */
+ "clock_gettime", /* 260 */
+ "clock_getres", /* 261 */
+ "clock_nanosleep", /* 262 */
+ "263", /* 263 */
+ "fadvise64_64", /* 264 */
+ "statfs64", /* 265 */
+ "fstatfs64", /* 266 */
+ "267", /* 267 */
+ "268", /* 268 */
+ "269", /* 269 */
+ "270", /* 270 */
+ "mq_open", /* 271 */
+ "mq_unlink", /* 272 */
+ "mq_timedsend", /* 273 */
+ "mq_timedreceive", /* 274 */
+ "mq_notify", /* 275 */
+ "mq_getsetattr", /* 276 */
diff --git a/sysdeps/linux-gnu/sparc/Makefile b/sysdeps/linux-gnu/sparc/Makefile
index 6248ca8..b3914e5 100644
--- a/sysdeps/linux-gnu/sparc/Makefile
+++ b/sysdeps/linux-gnu/sparc/Makefile
@@ -1,9 +1,9 @@
-OBJ = regs.o trace.o
+OBJ = regs.o trace.o plt.o
all: arch.o
arch.o: $(OBJ)
- $(LD) -r -o arch.o $(OBJ)
+ $(CC) -nostdlib -r -o arch.o $(OBJ)
clean:
$(RM) $(OBJ) arch.o
diff --git a/sysdeps/linux-gnu/sparc/arch.h b/sysdeps/linux-gnu/sparc/arch.h
index 1173591..d2f85d2 100644
--- a/sysdeps/linux-gnu/sparc/arch.h
+++ b/sysdeps/linux-gnu/sparc/arch.h
@@ -2,3 +2,6 @@
#define BREAKPOINT_LENGTH 4
#define DECR_PC_AFTER_BREAK 0
+#define LT_ELFCLASS ELFCLASS32
+#define LT_ELF_MACHINE EM_SPARC
+#define LT_ELF_MACHINE2 EM_SPARC32PLUS
diff --git a/sysdeps/linux-gnu/sparc/plt.c b/sysdeps/linux-gnu/sparc/plt.c
new file mode 100644
index 0000000..52b2208
--- /dev/null
+++ b/sysdeps/linux-gnu/sparc/plt.c
@@ -0,0 +1,9 @@
+#include <gelf.h>
+#include "ltrace.h"
+#include "elf.h"
+
+GElf_Addr
+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
+{
+ return rela->r_offset + 4;
+}
diff --git a/sysdeps/linux-gnu/sparc/syscallent.h b/sysdeps/linux-gnu/sparc/syscallent.h
index cb2db16..c7ddc4f 100644
--- a/sysdeps/linux-gnu/sparc/syscallent.h
+++ b/sysdeps/linux-gnu/sparc/syscallent.h
@@ -1,256 +1,280 @@
- "0", /* 0 */
- "exit", /* 1 */
- "fork", /* 2 */
- "read", /* 3 */
- "write", /* 4 */
- "open", /* 5 */
- "close", /* 6 */
- "wait4", /* 7 */
- "creat", /* 8 */
- "link", /* 9 */
- "unlink", /* 10 */
- "execv", /* 11 */
- "chdir", /* 12 */
- "chown", /* 13 */
- "mknod", /* 14 */
- "chmod", /* 15 */
- "lchown", /* 16 */
- "brk", /* 17 */
- "perfctr", /* 18 */
- "lseek", /* 19 */
- "getpid", /* 20 */
- "capget", /* 21 */
- "capset", /* 22 */
- "setuid", /* 23 */
- "getuid", /* 24 */
- "25", /* 25 */
- "ptrace", /* 26 */
- "alarm", /* 27 */
- "sigaltstack", /* 28 */
- "pause", /* 29 */
- "utime", /* 30 */
- "31", /* 31 */
- "32", /* 32 */
- "access", /* 33 */
- "nice", /* 34 */
- "35", /* 35 */
- "sync", /* 36 */
- "kill", /* 37 */
- "stat", /* 38 */
- "sendfile", /* 39 */
- "lstat", /* 40 */
- "dup", /* 41 */
- "pipe", /* 42 */
- "times", /* 43 */
- "44", /* 44 */
- "umount2", /* 45 */
- "setgid", /* 46 */
- "getgid", /* 47 */
- "signal", /* 48 */
- "geteuid", /* 49 */
- "getegid", /* 50 */
- "acct", /* 51 */
- "memory_ordering", /* 52 */
- "53", /* 53 */
- "ioctl", /* 54 */
- "reboot", /* 55 */
- "56", /* 56 */
- "symlink", /* 57 */
- "readlink", /* 58 */
- "execve", /* 59 */
- "umask", /* 60 */
- "chroot", /* 61 */
- "fstat", /* 62 */
- "63", /* 63 */
- "getpagesize", /* 64 */
- "msync", /* 65 */
- "vfork", /* 66 */
- "pread", /* 67 */
- "pwrite", /* 68 */
- "69", /* 69 */
- "70", /* 70 */
- "mmap", /* 71 */
- "72", /* 72 */
- "munmap", /* 73 */
- "mprotect", /* 74 */
- "75", /* 75 */
- "vhangup", /* 76 */
- "77", /* 77 */
- "78", /* 78 */
- "getgroups", /* 79 */
- "setgroups", /* 80 */
- "getpgrp", /* 81 */
- "82", /* 82 */
- "setitimer", /* 83 */
- "84", /* 84 */
- "swapon", /* 85 */
- "getitimer", /* 86 */
- "87", /* 87 */
- "sethostname", /* 88 */
- "89", /* 89 */
- "dup2", /* 90 */
- "91", /* 91 */
- "fcntl", /* 92 */
- "select", /* 93 */
- "94", /* 94 */
- "fsync", /* 95 */
- "setpriority", /* 96 */
- "socket", /* 97 */
- "connect", /* 98 */
- "accept", /* 99 */
- "getpriority", /* 100 */
- "rt_sigreturn", /* 101 */
- "rt_sigaction", /* 102 */
- "rt_sigprocmask", /* 103 */
- "rt_sigpending", /* 104 */
- "rt_sigtimedwait", /* 105 */
- "rt_sigqueueinfo", /* 106 */
- "rt_sigsuspend", /* 107 */
- "108", /* 108 */
- "109", /* 109 */
- "110", /* 110 */
- "111", /* 111 */
- "112", /* 112 */
- "recvmsg", /* 113 */
- "sendmsg", /* 114 */
- "115", /* 115 */
- "gettimeofday", /* 116 */
- "getrusage", /* 117 */
- "getsockopt", /* 118 */
- "getcwd", /* 119 */
- "readv", /* 120 */
- "writev", /* 121 */
- "settimeofday", /* 122 */
- "fchown", /* 123 */
- "fchmod", /* 124 */
- "recvfrom", /* 125 */
- "setreuid", /* 126 */
- "setregid", /* 127 */
- "rename", /* 128 */
- "truncate", /* 129 */
- "ftruncate", /* 130 */
- "flock", /* 131 */
- "132", /* 132 */
- "sendto", /* 133 */
- "shutdown", /* 134 */
- "socketpair", /* 135 */
- "mkdir", /* 136 */
- "rmdir", /* 137 */
- "utimes", /* 138 */
- "139", /* 139 */
- "140", /* 140 */
- "getpeername", /* 141 */
- "142", /* 142 */
- "143", /* 143 */
- "getrlimit", /* 144 */
- "setrlimit", /* 145 */
- "146", /* 146 */
- "prctl", /* 147 */
- "pciconfig_read", /* 148 */
- "pciconfig_write", /* 149 */
- "getsockname", /* 150 */
- "151", /* 151 */
- "152", /* 152 */
- "poll", /* 153 */
- "154", /* 154 */
- "155", /* 155 */
- "156", /* 156 */
- "statfs", /* 157 */
- "fstatfs", /* 158 */
- "umount", /* 159 */
- "160", /* 160 */
- "161", /* 161 */
- "getdomainname", /* 162 */
- "setdomainname", /* 163 */
- "utrap_install", /* 164 */
- "quotactl", /* 165 */
- "166", /* 166 */
- "mount", /* 167 */
- "ustat", /* 168 */
- "169", /* 169 */
- "170", /* 170 */
- "171", /* 171 */
- "172", /* 172 */
- "173", /* 173 */
- "getdents", /* 174 */
- "setsid", /* 175 */
- "fchdir", /* 176 */
- "177", /* 177 */
- "178", /* 178 */
- "179", /* 179 */
- "180", /* 180 */
- "181", /* 181 */
- "182", /* 182 */
- "sigpending", /* 183 */
- "query_module", /* 184 */
- "setpgid", /* 185 */
- "186", /* 186 */
- "187", /* 187 */
- "188", /* 188 */
- "uname", /* 189 */
- "init_module", /* 190 */
- "personality", /* 191 */
- "192", /* 192 */
- "193", /* 193 */
- "194", /* 194 */
- "195", /* 195 */
- "196", /* 196 */
- "getppid", /* 197 */
- "sigaction", /* 198 */
- "sgetmask", /* 199 */
- "ssetmask", /* 200 */
- "sigsuspend", /* 201 */
- "oldlstat", /* 202 */
- "uselib", /* 203 */
- "readdir", /* 204 */
- "205", /* 205 */
- "socketcall", /* 206 */
- "syslog", /* 207 */
- "208", /* 208 */
- "209", /* 209 */
- "idle", /* 210 */
- "211", /* 211 */
- "waitpid", /* 212 */
- "swapoff", /* 213 */
- "sysinfo", /* 214 */
- "ipc", /* 215 */
- "sigreturn", /* 216 */
- "clone", /* 217 */
- "218", /* 218 */
- "adjtimex", /* 219 */
- "sigprocmask", /* 220 */
- "create_module", /* 221 */
- "delete_module", /* 222 */
- "get_kernel_syms", /* 223 */
- "getpgid", /* 224 */
- "bdflush", /* 225 */
- "sysfs", /* 226 */
- "afs_syscall", /* 227 */
- "setfsuid", /* 228 */
- "setfsgid", /* 229 */
- "_newselect", /* 230 */
- "time", /* 231 */
- "232", /* 232 */
- "stime", /* 233 */
- "234", /* 234 */
- "235", /* 235 */
- "_llseek", /* 236 */
- "mlock", /* 237 */
- "munlock", /* 238 */
- "mlockall", /* 239 */
- "munlockall", /* 240 */
- "sched_setparam", /* 241 */
- "sched_getparam", /* 242 */
- "sched_setscheduler", /* 243 */
- "sched_getscheduler", /* 244 */
- "sched_yield", /* 245 */
- "sched_get_priority_max", /* 246 */
- "sched_get_priority_min", /* 247 */
- "sched_rr_get_interval", /* 248 */
- "nanosleep", /* 249 */
- "mremap", /* 250 */
- "_sysctl", /* 251 */
- "getsid", /* 252 */
- "fdatasync", /* 253 */
- "nfsservctl", /* 254 */
- "aplib", /* 255 */
+ "0", /* 0 */
+ "exit", /* 1 */
+ "fork", /* 2 */
+ "read", /* 3 */
+ "write", /* 4 */
+ "open", /* 5 */
+ "close", /* 6 */
+ "wait4", /* 7 */
+ "creat", /* 8 */
+ "link", /* 9 */
+ "unlink", /* 10 */
+ "execv", /* 11 */
+ "chdir", /* 12 */
+ "chown", /* 13 */
+ "mknod", /* 14 */
+ "chmod", /* 15 */
+ "lchown", /* 16 */
+ "brk", /* 17 */
+ "perfctr", /* 18 */
+ "lseek", /* 19 */
+ "getpid", /* 20 */
+ "capget", /* 21 */
+ "capset", /* 22 */
+ "setuid", /* 23 */
+ "getuid", /* 24 */
+ "25", /* 25 */
+ "ptrace", /* 26 */
+ "alarm", /* 27 */
+ "sigaltstack", /* 28 */
+ "pause", /* 29 */
+ "utime", /* 30 */
+ "lchown32", /* 31 */
+ "fchown32", /* 32 */
+ "access", /* 33 */
+ "nice", /* 34 */
+ "chown32", /* 35 */
+ "sync", /* 36 */
+ "kill", /* 37 */
+ "stat", /* 38 */
+ "sendfile", /* 39 */
+ "lstat", /* 40 */
+ "dup", /* 41 */
+ "pipe", /* 42 */
+ "times", /* 43 */
+ "getuid32", /* 44 */
+ "umount2", /* 45 */
+ "setgid", /* 46 */
+ "getgid", /* 47 */
+ "signal", /* 48 */
+ "geteuid", /* 49 */
+ "getegid", /* 50 */
+ "acct", /* 51 */
+ "memory_ordering", /* 52 */
+ "getgid32", /* 53 */
+ "ioctl", /* 54 */
+ "reboot", /* 55 */
+ "mmap2", /* 56 */
+ "symlink", /* 57 */
+ "readlink", /* 58 */
+ "execve", /* 59 */
+ "umask", /* 60 */
+ "chroot", /* 61 */
+ "fstat", /* 62 */
+ "fstat64", /* 63 */
+ "getpagesize", /* 64 */
+ "msync", /* 65 */
+ "vfork", /* 66 */
+ "pread64", /* 67 */
+ "pwrite64", /* 68 */
+ "geteuid32", /* 69 */
+ "getegid32", /* 70 */
+ "mmap", /* 71 */
+ "setreuid32", /* 72 */
+ "munmap", /* 73 */
+ "mprotect", /* 74 */
+ "madvise", /* 75 */
+ "vhangup", /* 76 */
+ "truncate64", /* 77 */
+ "mincore", /* 78 */
+ "getgroups", /* 79 */
+ "setgroups", /* 80 */
+ "getpgrp", /* 81 */
+ "setgroups32", /* 82 */
+ "setitimer", /* 83 */
+ "ftruncate64", /* 84 */
+ "swapon", /* 85 */
+ "getitimer", /* 86 */
+ "setuid32", /* 87 */
+ "sethostname", /* 88 */
+ "setgid32", /* 89 */
+ "dup2", /* 90 */
+ "setfsuid32", /* 91 */
+ "fcntl", /* 92 */
+ "select", /* 93 */
+ "setfsgid32", /* 94 */
+ "fsync", /* 95 */
+ "setpriority", /* 96 */
+ "socket", /* 97 */
+ "connect", /* 98 */
+ "accept", /* 99 */
+ "getpriority", /* 100 */
+ "rt_sigreturn", /* 101 */
+ "rt_sigaction", /* 102 */
+ "rt_sigprocmask", /* 103 */
+ "rt_sigpending", /* 104 */
+ "rt_sigtimedwait", /* 105 */
+ "rt_sigqueueinfo", /* 106 */
+ "rt_sigsuspend", /* 107 */
+ "setresuid32", /* 108 */
+ "getresuid32", /* 109 */
+ "setresgid32", /* 110 */
+ "getresgid32", /* 111 */
+ "setregid32", /* 112 */
+ "recvmsg", /* 113 */
+ "sendmsg", /* 114 */
+ "getgroups32", /* 115 */
+ "gettimeofday", /* 116 */
+ "getrusage", /* 117 */
+ "getsockopt", /* 118 */
+ "getcwd", /* 119 */
+ "readv", /* 120 */
+ "writev", /* 121 */
+ "settimeofday", /* 122 */
+ "fchown", /* 123 */
+ "fchmod", /* 124 */
+ "recvfrom", /* 125 */
+ "setreuid", /* 126 */
+ "setregid", /* 127 */
+ "rename", /* 128 */
+ "truncate", /* 129 */
+ "ftruncate", /* 130 */
+ "flock", /* 131 */
+ "lstat64", /* 132 */
+ "sendto", /* 133 */
+ "shutdown", /* 134 */
+ "socketpair", /* 135 */
+ "mkdir", /* 136 */
+ "rmdir", /* 137 */
+ "utimes", /* 138 */
+ "stat64", /* 139 */
+ "sendfile64", /* 140 */
+ "getpeername", /* 141 */
+ "futex", /* 142 */
+ "gettid", /* 143 */
+ "getrlimit", /* 144 */
+ "setrlimit", /* 145 */
+ "pivot_root", /* 146 */
+ "prctl", /* 147 */
+ "pciconfig_read", /* 148 */
+ "pciconfig_write", /* 149 */
+ "getsockname", /* 150 */
+ "151", /* 151 */
+ "152", /* 152 */
+ "poll", /* 153 */
+ "getdents64", /* 154 */
+ "fcntl64", /* 155 */
+ "156", /* 156 */
+ "statfs", /* 157 */
+ "fstatfs", /* 158 */
+ "umount", /* 159 */
+ "sched_set_affinity", /* 160 */
+ "sched_get_affinity", /* 161 */
+ "getdomainname", /* 162 */
+ "setdomainname", /* 163 */
+ "utrap_install", /* 164 */
+ "quotactl", /* 165 */
+ "set_tid_address", /* 166 */
+ "mount", /* 167 */
+ "ustat", /* 168 */
+ "setxattr", /* 169 */
+ "lsetxattr", /* 170 */
+ "fsetxattr", /* 171 */
+ "getxattr", /* 172 */
+ "lgetxattr", /* 173 */
+ "getdents", /* 174 */
+ "setsid", /* 175 */
+ "fchdir", /* 176 */
+ "fgetxattr", /* 177 */
+ "listxattr", /* 178 */
+ "llistxattr", /* 179 */
+ "flistxattr", /* 180 */
+ "removexattr", /* 181 */
+ "lremovexattr", /* 182 */
+ "sigpending", /* 183 */
+ "query_module", /* 184 */
+ "setpgid", /* 185 */
+ "fremovexattr", /* 186 */
+ "tkill", /* 187 */
+ "exit_group", /* 188 */
+ "uname", /* 189 */
+ "init_module", /* 190 */
+ "personality", /* 191 */
+ "remap_file_pages", /* 192 */
+ "epoll_create", /* 193 */
+ "epoll_ctl", /* 194 */
+ "epoll_wait", /* 195 */
+ "196", /* 196 */
+ "getppid", /* 197 */
+ "sigaction", /* 198 */
+ "sgetmask", /* 199 */
+ "ssetmask", /* 200 */
+ "sigsuspend", /* 201 */
+ "oldlstat", /* 202 */
+ "uselib", /* 203 */
+ "readdir", /* 204 */
+ "readahead", /* 205 */
+ "socketcall", /* 206 */
+ "syslog", /* 207 */
+ "lookup_dcookie", /* 208 */
+ "fadvise64", /* 209 */
+ "fadvise64_64", /* 210 */
+ "tgkill", /* 211 */
+ "waitpid", /* 212 */
+ "swapoff", /* 213 */
+ "sysinfo", /* 214 */
+ "ipc", /* 215 */
+ "sigreturn", /* 216 */
+ "clone", /* 217 */
+ "218", /* 218 */
+ "adjtimex", /* 219 */
+ "sigprocmask", /* 220 */
+ "create_module", /* 221 */
+ "delete_module", /* 222 */
+ "get_kernel_syms", /* 223 */
+ "getpgid", /* 224 */
+ "bdflush", /* 225 */
+ "sysfs", /* 226 */
+ "afs_syscall", /* 227 */
+ "setfsuid", /* 228 */
+ "setfsgid", /* 229 */
+ "_newselect", /* 230 */
+ "time", /* 231 */
+ "232", /* 232 */
+ "stime", /* 233 */
+ "statfs64", /* 234 */
+ "fstatfs64", /* 235 */
+ "_llseek", /* 236 */
+ "mlock", /* 237 */
+ "munlock", /* 238 */
+ "mlockall", /* 239 */
+ "munlockall", /* 240 */
+ "sched_setparam", /* 241 */
+ "sched_getparam", /* 242 */
+ "sched_setscheduler", /* 243 */
+ "sched_getscheduler", /* 244 */
+ "sched_yield", /* 245 */
+ "sched_get_priority_max", /* 246 */
+ "sched_get_priority_min", /* 247 */
+ "sched_rr_get_interval", /* 248 */
+ "nanosleep", /* 249 */
+ "mremap", /* 250 */
+ "_sysctl", /* 251 */
+ "getsid", /* 252 */
+ "fdatasync", /* 253 */
+ "nfsservctl", /* 254 */
+ "aplib", /* 255 */
+ "clock_settime", /* 256 */
+ "clock_gettime", /* 257 */
+ "clock_getres", /* 258 */
+ "clock_nanosleep", /* 259 */
+ "sched_getaffinity", /* 260 */
+ "sched_setaffinity", /* 261 */
+ "timer_settime", /* 262 */
+ "timer_gettime", /* 263 */
+ "timer_getoverrun", /* 264 */
+ "timer_delete", /* 265 */
+ "timer_create", /* 266 */
+ "vserver", /* 267 */
+ "io_setup", /* 268 */
+ "io_destroy", /* 269 */
+ "io_submit", /* 270 */
+ "io_cancel", /* 271 */
+ "io_getevents", /* 272 */
+ "mq_open", /* 273 */
+ "mq_unlink", /* 274 */
+ "mq_timedsend", /* 275 */
+ "mq_timedreceive", /* 276 */
+ "mq_notify", /* 277 */
+ "mq_getsetattr", /* 278 */
+ "waitid", /* 279 */
diff --git a/sysdeps/linux-gnu/x86_64/Makefile b/sysdeps/linux-gnu/x86_64/Makefile
index 0319ab0..0a19c97 100644
--- a/sysdeps/linux-gnu/x86_64/Makefile
+++ b/sysdeps/linux-gnu/x86_64/Makefile
@@ -1,9 +1,9 @@
-OBJ = trace.o regs.o ffcheck.o
+OBJ = trace.o regs.o plt.o
all: arch.o
arch.o: $(OBJ)
- $(LD) -r -o arch.o $(OBJ)
+ $(CC) -nostdlib -r -o arch.o $(OBJ)
clean:
$(RM) $(OBJ) arch.o
diff --git a/sysdeps/linux-gnu/x86_64/arch.h b/sysdeps/linux-gnu/x86_64/arch.h
index aa61505..a7c8816 100644
--- a/sysdeps/linux-gnu/x86_64/arch.h
+++ b/sysdeps/linux-gnu/x86_64/arch.h
@@ -2,5 +2,5 @@
#define BREAKPOINT_LENGTH 1
#define DECR_PC_AFTER_BREAK 1
-#define FILEFORMAT_CHECK 1
-#define ELFSIZE 64
+#define LT_ELFCLASS ELFCLASS64
+#define LT_ELF_MACHINE EM_X86_64
diff --git a/sysdeps/linux-gnu/x86_64/ffcheck.c b/sysdeps/linux-gnu/x86_64/ffcheck.c
index 91dc855..e69de29 100644
--- a/sysdeps/linux-gnu/x86_64/ffcheck.c
+++ b/sysdeps/linux-gnu/x86_64/ffcheck.c
@@ -1,18 +0,0 @@
-#include <elf.h>
-
-int
-ffcheck (void *maddr)
-{
- Elf64_Ehdr *ehdr=maddr;
-
- if (! ehdr)
- return 0;
- if (
- ehdr->e_type == 2 &&
- ehdr->e_machine == 0x3e &&
- ehdr->e_version == 1
- )
- return 1;
-
- return 0;
-}
diff --git a/sysdeps/linux-gnu/x86_64/plt.c b/sysdeps/linux-gnu/x86_64/plt.c
new file mode 100644
index 0000000..e40b03a
--- /dev/null
+++ b/sysdeps/linux-gnu/x86_64/plt.c
@@ -0,0 +1,9 @@
+#include <gelf.h>
+#include "ltrace.h"
+#include "elf.h"
+
+GElf_Addr
+arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela)
+{
+ return lte->plt_addr + (ndx + 1) * 16;
+}
diff --git a/sysdeps/linux-gnu/x86_64/syscallent.h b/sysdeps/linux-gnu/x86_64/syscallent.h
index 2b56c95..31aa74a 100644
--- a/sysdeps/linux-gnu/x86_64/syscallent.h
+++ b/sysdeps/linux-gnu/x86_64/syscallent.h
@@ -201,3 +201,48 @@
"tkill", /* 200 */
"time", /* 201 */
"futex", /* 202 */
+ "sched_setaffinity", /* 203 */
+ "sched_getaffinity", /* 204 */
+ "set_thread_area", /* 205 */
+ "io_setup", /* 206 */
+ "io_destroy", /* 207 */
+ "io_getevents", /* 208 */
+ "io_submit", /* 209 */
+ "io_cancel", /* 210 */
+ "get_thread_area", /* 211 */
+ "lookup_dcookie", /* 212 */
+ "epoll_create", /* 213 */
+ "epoll_ctl", /* 214 */
+ "epoll_wait", /* 215 */
+ "remap_file_pages", /* 216 */
+ "getdents64", /* 217 */
+ "set_tid_address", /* 218 */
+ "restart_syscall", /* 219 */
+ "semtimedop", /* 220 */
+ "fadvise64", /* 221 */
+ "timer_create", /* 222 */
+ "timer_settime", /* 223 */
+ "timer_gettime", /* 224 */
+ "timer_getoverrun", /* 225 */
+ "timer_delete", /* 226 */
+ "clock_settime", /* 227 */
+ "clock_gettime", /* 228 */
+ "clock_getres", /* 229 */
+ "clock_nanosleep", /* 230 */
+ "exit_group", /* 231 */
+ "epoll_wait", /* 232 */
+ "epoll_ctl", /* 233 */
+ "tgkill", /* 234 */
+ "utimes", /* 235 */
+ "vserver", /* 236 */
+ "mbind", /* 237 */
+ "set_mempolicy", /* 238 */
+ "get_mempolicy", /* 239 */
+ "mq_open", /* 240 */
+ "mq_unlink", /* 241 */
+ "mq_timedsend", /* 242 */
+ "mq_timedreceive", /* 243 */
+ "mq_notify", /* 244 */
+ "mq_getsetattr", /* 245 */
+ "kexec_load", /* 246 */
+ "waitid", /* 247 */