diff options
author | Juan Cespedes <cespedes@debian.org> | 2004-11-10 00:15:33 +0100 |
---|---|---|
committer | Juan Cespedes <cespedes@debian.org> | 2004-11-10 00:15:33 +0100 |
commit | d914a206a11cc1011a45f00674b1e16988fae77f (patch) | |
tree | 77b4ecf3d7c51911e04566cce1c2319715448faf | |
parent | 337ea4581657020f6e9ae93e30cb4a7ddd993903 (diff) | |
download | ltrace-d914a206a11cc1011a45f00674b1e16988fae77f.tar.gz |
Version: 0.3.36
* Fixed "--indent" option
* Got rid of Debian and RedHat specific parts in tarball
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: @@ -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 @@ -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, <e->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 = <e->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, -- <e->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 = <e[i].hash[2]; -+ chain = <e[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(<e, filename); -- do_load_elf_symtab(<e); -- 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 (<e[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(<e, 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(<e); -+ 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 (<e[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 @@ -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); } @@ -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)); @@ -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, <e->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 = <e->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, - <e->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 = <e[i].hash[2]; + chain = <e[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(<e, filename); - do_load_elf_symtab(<e); - 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(<e, 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 (<e[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(<e); + for (i = 0; i < library_num + 1; ++i) + do_close_elf (<e[i]); - return library_symbols; + return library_symbols; } @@ -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); @@ -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 @@ -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 @@ -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 */ @@ -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 */ |