From 407658581b73f4f4a99e002f085a06c4ebb0864b Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Mon, 23 Mar 2009 10:10:03 -0400 Subject: Make .probes 32 bit aware and simplify label handling. * includes/sys/sdt.h (STAP_PROBE_DATA_): Use gas local labels which avoids a mysql problem when a function containing a probe is inlined. Make the data placement 32 bit aware. --- includes/sys/sdt.h | 118 +++++++++++++++++++++++++---------------------------- 1 file changed, 56 insertions(+), 62 deletions(-) diff --git a/includes/sys/sdt.h b/includes/sys/sdt.h index 5b92eeb3..3da4ff66 100644 --- a/includes/sys/sdt.h +++ b/includes/sys/sdt.h @@ -13,90 +13,84 @@ #include #include -#define STAP_PROBE_DATA_(probe,label) \ +#define STAP_PROBE_DATA_(probe,dataop) \ __asm__ volatile (".section .probes\n" \ - "\t.align 4\n" \ - label "_name:\n\t.asciz " #probe "\n" \ + "\t.align 8\n" \ + "1:\n\t.asciz " #probe "\n" \ "\t.align 4\n" \ "\t.int 0x31425250\n" \ - "\t.align 8\n" \ - "\t.quad " label "_name\n" \ - "\t.quad " label "\n" \ + "\t.align 8\n" \ + "\t" #dataop " 1b\n" \ + "\t.align 8\n" \ + "\t" #dataop " 2f\n" \ "\t.previous\n") -#define STAP_PROBE_DATA(probe,label) \ - STAP_PROBE_DATA_(#probe,label) - -/* These baroque macros are used to create a unique label */ -#define STAP_CONCAT(a,b) a ## b -#define STAP_CONCATSTR(a,b) #a #b -#define STAP_LABEL_PREFIX(p) _stapprobe1_ ## p -/* __COUNTER__ is not present in gcc 4.1 */ -#if __GNUC__ == 4 && __GNUC_MINOR__ >= 3 -#define STAP_COUNTER STAP_CONCAT(__,COUNTER__) +#if _LP64 +#define STAP_PROBE_DATA(probe) \ + STAP_PROBE_DATA_(#probe,.quad) #else -#define STAP_COUNTER STAP_CONCAT(__,LINE__) +#define STAP_PROBE_DATA(probe) \ + STAP_PROBE_DATA_(#probe,.long) #endif -#define STAP_LABEL(a,b) STAP_CONCATSTR(a,b) -#define STAP_PROBE_(probe,label) \ +#define STAP_PROBE_(probe) \ do { \ - STAP_PROBE_DATA(probe,label); \ - __asm__ volatile (label ":\n" \ + STAP_PROBE_DATA(probe); \ + __asm__ volatile ("2:\n" \ "\tnop"); \ } while (0) -#define STAP_PROBE1_(probe,label,parm1) \ +#define STAP_PROBE1_(probe,parm1) \ do { \ volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ - STAP_PROBE_DATA(probe,label); \ - __asm__ volatile (label ":\n" \ + STAP_PROBE_DATA(probe); \ + __asm__ volatile ("2:\n" \ "\tnop /* %0 */" :: "X"(arg1)); \ } while (0) -#define STAP_PROBE2_(probe,label,parm1,parm2) \ +#define STAP_PROBE2_(probe,parm1,parm2) \ do { \ volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ - STAP_PROBE_DATA(probe,label); \ - __asm__ volatile (label ":\n" \ + STAP_PROBE_DATA(probe); \ + __asm__ volatile ("2:\n" \ "\tnop /* %0 %1 */" :: "X"(arg1), "X"(arg2)); \ } while (0) -#define STAP_PROBE3_(probe,label,parm1,parm2,parm3) \ +#define STAP_PROBE3_(probe,parm1,parm2,parm3) \ do { \ volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ volatile __typeof__((parm3)) arg3 __attribute__ ((unused)) = parm3; \ - STAP_PROBE_DATA(probe,label); \ - __asm__ volatile (label ":\n" \ + STAP_PROBE_DATA(probe); \ + __asm__ volatile ("2:\n" \ "\tnop /* %0 %1 %2 */" :: "X"(arg1), "X"(arg2), "X"(arg3)); \ } while (0) -#define STAP_PROBE4_(probe,label,parm1,parm2,parm3,parm4) \ +#define STAP_PROBE4_(probe,parm1,parm2,parm3,parm4) \ do { \ volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ volatile __typeof__((parm3)) arg3 __attribute__ ((unused)) = parm3; \ volatile __typeof__((parm4)) arg4 __attribute__ ((unused)) = parm4; \ - STAP_PROBE_DATA(probe,label); \ - __asm__ volatile (label ":\n" \ + STAP_PROBE_DATA(probe); \ + __asm__ volatile ("2:\n" \ "\tnop /* %0 %1 %2 %3 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4)); \ } while (0) -#define STAP_PROBE5_(probe,label,parm1,parm2,parm3,parm4,parm5) \ +#define STAP_PROBE5_(probe,parm1,parm2,parm3,parm4,parm5) \ do { \ volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ volatile __typeof__((parm3)) arg3 __attribute__ ((unused)) = parm3; \ volatile __typeof__((parm4)) arg4 __attribute__ ((unused)) = parm4; \ volatile __typeof__((parm5)) arg5 __attribute__ ((unused)) = parm5; \ - STAP_PROBE_DATA(probe,label); \ - __asm__ volatile (label ":\n" \ + STAP_PROBE_DATA(probe); \ + __asm__ volatile ("2:\n" \ "\tnop /* %0 %1 %2 %3 %4 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5)); \ } while (0) -#define STAP_PROBE6_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6) \ +#define STAP_PROBE6_(probe,parm1,parm2,parm3,parm4,parm5,parm6) \ do { \ volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ @@ -104,12 +98,12 @@ do { \ volatile __typeof__((parm4)) arg4 __attribute__ ((unused)) = parm4; \ volatile __typeof__((parm5)) arg5 __attribute__ ((unused)) = parm5; \ volatile __typeof__((parm6)) arg6 __attribute__ ((unused)) = parm6; \ - STAP_PROBE_DATA(probe,label); \ - __asm__ volatile (label ":\n" \ + STAP_PROBE_DATA(probe); \ + __asm__ volatile ("2:\n" \ "\tnop /* %0 %1 %2 %3 %4 %5 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5), "X"(arg6)); \ } while (0) -#define STAP_PROBE7_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7) \ +#define STAP_PROBE7_(probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7) \ do { \ volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ @@ -118,12 +112,12 @@ do { \ volatile __typeof__((parm5)) arg5 __attribute__ ((unused)) = parm5; \ volatile __typeof__((parm6)) arg6 __attribute__ ((unused)) = parm6; \ volatile __typeof__((parm7)) arg7 __attribute__ ((unused)) = parm7; \ - STAP_PROBE_DATA(probe,label); \ - __asm__ volatile (label ":\n" \ + STAP_PROBE_DATA(probe); \ + __asm__ volatile ("2:\n" \ "\tnop /* %0 %1 %2 %3 %4 %5 %6 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5), "X"(arg6), "X"(arg7)); \ } while (0) -#define STAP_PROBE8_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) \ +#define STAP_PROBE8_(probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) \ do { \ volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ @@ -133,12 +127,12 @@ do { \ volatile __typeof__((parm6)) arg6 __attribute__ ((unused)) = parm6; \ volatile __typeof__((parm7)) arg7 __attribute__ ((unused)) = parm7; \ volatile __typeof__((parm8)) arg8 __attribute__ ((unused)) = parm8; \ - STAP_PROBE_DATA(probe,label); \ - __asm__ volatile (label ":\n" \ + STAP_PROBE_DATA(probe); \ + __asm__ volatile ("2:\n" \ "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5), "X"(arg6), "X"(arg7), "X"(arg8)); \ } while (0) -#define STAP_PROBE9_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) \ +#define STAP_PROBE9_(probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) \ do { \ volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ @@ -149,12 +143,12 @@ do { \ volatile __typeof__((parm7)) arg7 __attribute__ ((unused)) = parm7; \ volatile __typeof__((parm8)) arg8 __attribute__ ((unused)) = parm8; \ volatile __typeof__((parm9)) arg9 __attribute__ ((unused)) = parm9; \ - STAP_PROBE_DATA(probe,label); \ - __asm__ volatile (label ":\n" \ + STAP_PROBE_DATA(probe); \ + __asm__ volatile ("2:\n" \ "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 %8 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5), "X"(arg6), "X"(arg7), "X"(arg8), "X"(arg9)); \ } while (0) -#define STAP_PROBE10_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) \ +#define STAP_PROBE10_(probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) \ do { \ volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ @@ -166,33 +160,33 @@ do { \ volatile __typeof__((parm8)) arg8 __attribute__ ((unused)) = parm8; \ volatile __typeof__((parm9)) arg9 __attribute__ ((unused)) = parm9; \ volatile __typeof__((parm10)) arg10 __attribute__ ((unused)) = parm10; \ - STAP_PROBE_DATA(probe,label); \ - __asm__ volatile (label ":\n" \ + STAP_PROBE_DATA(probe); \ + __asm__ volatile ("2:\n" \ "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5), "X"(arg6), "X"(arg7), "X"(arg8), "X"(arg9), "X"(arg10)); \ } while (0) #define STAP_PROBE(provider,probe) \ - STAP_PROBE_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER)) + STAP_PROBE_(probe) #define STAP_PROBE1(provider,probe,parm1) \ - STAP_PROBE1_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1)) + STAP_PROBE1_(probe,(parm1)) #define STAP_PROBE2(provider,probe,parm1,parm2) \ - STAP_PROBE2_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2)) + STAP_PROBE2_(probe,(parm1),(parm2)) #define STAP_PROBE3(provider,probe,parm1,parm2,parm3) \ - STAP_PROBE3_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3)) + STAP_PROBE3_(probe,(parm1),(parm2),(parm3)) #define STAP_PROBE4(provider,probe,parm1,parm2,parm3,parm4) \ - STAP_PROBE4_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4)) + STAP_PROBE4_(probe,(parm1),(parm2),(parm3),(parm4)) #define STAP_PROBE5(provider,probe,parm1,parm2,parm3,parm4,parm5) \ - STAP_PROBE5_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4),(parm5)) + STAP_PROBE5_(probe,(parm1),(parm2),(parm3),(parm4),(parm5)) #define STAP_PROBE6(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6) \ - STAP_PROBE6_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4),(parm5),(parm6)) + STAP_PROBE6_(probe,(parm1),(parm2),(parm3),(parm4),(parm5),(parm6)) #define STAP_PROBE7(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7) \ - STAP_PROBE7_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7)) + STAP_PROBE7_(probe,(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7)) #define STAP_PROBE8(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) \ - STAP_PROBE8_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7),(parm8)) + STAP_PROBE8_(probe,(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7),(parm8)) #define STAP_PROBE9(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) \ - STAP_PROBE9_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7),(parm8),(parm9)) + STAP_PROBE9_(probe,(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7),(parm8),(parm9)) #define STAP_PROBE10(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) \ - STAP_PROBE10_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7),(parm8),(parm9),(parm10)) + STAP_PROBE10_(probe,(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7),(parm8),(parm9),(parm10)) #define DTRACE_PROBE(provider,probe) \ STAP_PROBE(provider,probe) -- cgit From d4db5608dbc31868a2041f20ea3f473eef3e61fd Mon Sep 17 00:00:00 2001 From: William Cohen Date: Mon, 23 Mar 2009 11:16:13 -0400 Subject: Add missing escape in kernel-doc create_sparameterlist() matching. --- scripts/kernel-doc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/kernel-doc b/scripts/kernel-doc index 9947882d..92178910 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc @@ -1774,7 +1774,7 @@ sub create_sparameterlist($$$) { my $param; foreach my $arg (split($splitter, $args)) { - if ($arg =~ m/s*([\w]+)\s*:?\s*([\w]*)/) { + if ($arg =~ m/\s*([\w]+)\s*:?\s*([\w]*)/) { $param = $1; $type = $2; push_parameter($param, $type, $file); -- cgit From d9e3e39eef31587ea762f4b017b46495f7a0b70f Mon Sep 17 00:00:00 2001 From: William Cohen Date: Tue, 24 Mar 2009 11:16:38 -0400 Subject: Move tapset documentation manpages from man3stap to man3. --- doc/SystemTap_Tapset_Reference/Makefile.am | 6 +++--- doc/SystemTap_Tapset_Reference/Makefile.in | 6 +++--- systemtap.spec | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/SystemTap_Tapset_Reference/Makefile.am b/doc/SystemTap_Tapset_Reference/Makefile.am index 68dfd971..b21bfcd6 100644 --- a/doc/SystemTap_Tapset_Reference/Makefile.am +++ b/doc/SystemTap_Tapset_Reference/Makefile.am @@ -2,7 +2,7 @@ ## process this file with automake to produce Makefile.in DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap -MAN_INSTALL_DIR = $(DESTDIR)$(mandir)/man3stap +MAN_INSTALL_DIR = $(DESTDIR)$(mandir)/man3 HTML_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap/tapsets @@ -36,7 +36,7 @@ tapsets.pdf: tapsets.xml xmlto pdf tapsets.xml stamp-mandocs: tapsets.xml - xmlto man -o man3stap tapsets.xml + xmlto man -o man3 tapsets.xml touch stamp-mandocs #FIXME need to figure out where to install things appropriately @@ -45,7 +45,7 @@ install-data-hook: $(MKDIR_P) $(DOC_INSTALL_DIR) $(INSTALL_DATA) tapsets.pdf $(DOC_INSTALL_DIR) $(MKDIR_P) $(MAN_INSTALL_DIR) - $(INSTALL_DATA) man3stap/* $(MAN_INSTALL_DIR) + $(INSTALL_DATA) man3/* $(MAN_INSTALL_DIR) $(MKDIR_P) $(HTML_INSTALL_DIR) $(INSTALL_DATA) tapsets/* $(HTML_INSTALL_DIR) endif diff --git a/doc/SystemTap_Tapset_Reference/Makefile.in b/doc/SystemTap_Tapset_Reference/Makefile.in index 2f8a5294..6fe6bab2 100644 --- a/doc/SystemTap_Tapset_Reference/Makefile.in +++ b/doc/SystemTap_Tapset_Reference/Makefile.in @@ -170,7 +170,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap -MAN_INSTALL_DIR = $(DESTDIR)$(mandir)/man3stap +MAN_INSTALL_DIR = $(DESTDIR)$(mandir)/man3 HTML_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap/tapsets SRCTREE = $(abs_top_srcdir)/ DOCPROC = $(abs_builddir)/docproc @@ -430,7 +430,7 @@ uninstall-am: @BUILD_REFDOCS_TRUE@ xmlto pdf tapsets.xml @BUILD_REFDOCS_TRUE@stamp-mandocs: tapsets.xml -@BUILD_REFDOCS_TRUE@ xmlto man -o man3stap tapsets.xml +@BUILD_REFDOCS_TRUE@ xmlto man -o man3 tapsets.xml @BUILD_REFDOCS_TRUE@ touch stamp-mandocs #FIXME need to figure out where to install things appropriately @@ -439,7 +439,7 @@ uninstall-am: @BUILD_REFDOCS_TRUE@ $(MKDIR_P) $(DOC_INSTALL_DIR) @BUILD_REFDOCS_TRUE@ $(INSTALL_DATA) tapsets.pdf $(DOC_INSTALL_DIR) @BUILD_REFDOCS_TRUE@ $(MKDIR_P) $(MAN_INSTALL_DIR) -@BUILD_REFDOCS_TRUE@ $(INSTALL_DATA) man3stap/* $(MAN_INSTALL_DIR) +@BUILD_REFDOCS_TRUE@ $(INSTALL_DATA) man3/* $(MAN_INSTALL_DIR) @BUILD_REFDOCS_TRUE@ $(MKDIR_P) $(HTML_INSTALL_DIR) @BUILD_REFDOCS_TRUE@ $(INSTALL_DATA) tapsets/* $(HTML_INSTALL_DIR) # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/systemtap.spec b/systemtap.spec index 540a9d93..cbf36662 100644 --- a/systemtap.spec +++ b/systemtap.spec @@ -245,7 +245,7 @@ exit 0 %if %{with_docs} %doc docs.installed/*.pdf %doc docs.installed/tapsets -%{_mandir}/man3stap/* +%{_mandir}/man3/* %endif %{_bindir}/stap -- cgit From e97c0b2970dfd8c23163d2712557a30401c75282 Mon Sep 17 00:00:00 2001 From: Will Cohen Date: Tue, 24 Mar 2009 12:01:52 -0400 Subject: Move man pages from man5 to man3 (3stap). --- Makefile.am | 10 +- Makefile.in | 137 +-- configure | 34 +- configure.ac | 2 +- doc/Makefile.in | 1 - doc/SystemTap_Tapset_Reference/Makefile.in | 1 - man/stapprobes.iosched.3stap.in | 100 +++ man/stapprobes.iosched.5.in | 100 --- man/stapprobes.netdev.3stap.in | 77 ++ man/stapprobes.netdev.5.in | 77 -- man/stapprobes.nfs.3stap.in | 1236 ++++++++++++++++++++++++++++ man/stapprobes.nfs.5.in | 1236 ---------------------------- man/stapprobes.nfsd.3stap.in | 513 ++++++++++++ man/stapprobes.nfsd.5.in | 513 ------------ man/stapprobes.pagefault.3stap.in | 40 + man/stapprobes.pagefault.5.in | 40 - man/stapprobes.process.3stap.in | 106 +++ man/stapprobes.process.5.in | 106 --- man/stapprobes.rpc.3stap.in | 583 +++++++++++++ man/stapprobes.rpc.5.in | 583 ------------- man/stapprobes.scsi.3stap.in | 151 ++++ man/stapprobes.scsi.5.in | 151 ---- man/stapprobes.signal.3stap.in | 509 ++++++++++++ man/stapprobes.signal.5.in | 509 ------------ man/stapprobes.socket.3stap.in | 485 +++++++++++ man/stapprobes.socket.5.in | 485 ----------- man/stapprobes.tcp.3stap.in | 102 +++ man/stapprobes.tcp.5.in | 102 --- man/stapprobes.udp.3stap.in | 102 +++ man/stapprobes.udp.5.in | 102 --- stap-server.8.in | 8 +- stap.1.in | 14 +- stapex.3stap.in | 126 +++ stapex.5.in | 126 --- stapfuncs.3stap.in | 668 +++++++++++++++ stapfuncs.5.in | 668 --------------- stapprobes.3stap.in | 676 +++++++++++++++ stapprobes.5.in | 676 --------------- staprun.8.in | 8 +- stapvars.3stap.in | 51 ++ stapvars.5.in | 51 -- systemtap.spec | 3 +- 42 files changed, 5637 insertions(+), 5631 deletions(-) create mode 100644 man/stapprobes.iosched.3stap.in delete mode 100644 man/stapprobes.iosched.5.in create mode 100644 man/stapprobes.netdev.3stap.in delete mode 100644 man/stapprobes.netdev.5.in create mode 100644 man/stapprobes.nfs.3stap.in delete mode 100644 man/stapprobes.nfs.5.in create mode 100644 man/stapprobes.nfsd.3stap.in delete mode 100644 man/stapprobes.nfsd.5.in create mode 100644 man/stapprobes.pagefault.3stap.in delete mode 100644 man/stapprobes.pagefault.5.in create mode 100644 man/stapprobes.process.3stap.in delete mode 100644 man/stapprobes.process.5.in create mode 100644 man/stapprobes.rpc.3stap.in delete mode 100644 man/stapprobes.rpc.5.in create mode 100644 man/stapprobes.scsi.3stap.in delete mode 100644 man/stapprobes.scsi.5.in create mode 100644 man/stapprobes.signal.3stap.in delete mode 100644 man/stapprobes.signal.5.in create mode 100644 man/stapprobes.socket.3stap.in delete mode 100644 man/stapprobes.socket.5.in create mode 100644 man/stapprobes.tcp.3stap.in delete mode 100644 man/stapprobes.tcp.5.in create mode 100644 man/stapprobes.udp.3stap.in delete mode 100644 man/stapprobes.udp.5.in create mode 100644 stapex.3stap.in delete mode 100644 stapex.5.in create mode 100644 stapfuncs.3stap.in delete mode 100644 stapfuncs.5.in create mode 100644 stapprobes.3stap.in delete mode 100644 stapprobes.5.in create mode 100644 stapvars.3stap.in delete mode 100644 stapvars.5.in diff --git a/Makefile.am b/Makefile.am index 9681381d..580c4178 100644 --- a/Makefile.am +++ b/Makefile.am @@ -12,7 +12,15 @@ AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -DPKGDATADIR='"${pkgdatadir}"' -DPKGLIBDIR= AM_CFLAGS = -D_GNU_SOURCE -fexceptions -Wall -Werror -Wunused -Wformat=2 -W AM_CXXFLAGS = -Wall -Werror -man_MANS = stap.1 stapprobes.5 stapfuncs.5 stapvars.5 stapex.5 staprun.8 man/stapprobes.iosched.5 man/stapprobes.netdev.5 man/stapprobes.nfs.5 man/stapprobes.nfsd.5 man/stapprobes.pagefault.5 man/stapprobes.process.5 man/stapprobes.rpc.5 man/stapprobes.scsi.5 man/stapprobes.signal.5 man/stapprobes.socket.5 man/stapprobes.tcp.5 man/stapprobes.udp.5 +man_MANS = stap.1 \ +stapprobes.3stap stapfuncs.3stap stapvars.3stap stapex.3stap \ +staprun.8 \ +man/stapprobes.iosched.3stap man/stapprobes.netdev.3stap \ +man/stapprobes.nfs.3stap man/stapprobes.nfsd.3stap \ +man/stapprobes.pagefault.3stap man/stapprobes.process.3stap \ +man/stapprobes.rpc.3stap man/stapprobes.scsi.3stap \ +man/stapprobes.signal.3stap man/stapprobes.socket.3stap \ +man/stapprobes.tcp.3stap man/stapprobes.udp.3stap # see also configure.ac bin_PROGRAMS = stap staprun diff --git a/Makefile.in b/Makefile.in index 12a5e6ea..35bcd486 100644 --- a/Makefile.in +++ b/Makefile.in @@ -56,21 +56,21 @@ subdir = . DIST_COMMON = INSTALL NEWS README AUTHORS $(srcdir)/Makefile.in \ $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(srcdir)/config.in $(srcdir)/stap.1.in \ - $(srcdir)/stapprobes.5.in $(srcdir)/stapfuncs.5.in \ - $(srcdir)/stapvars.5.in $(srcdir)/stapex.5.in \ + $(srcdir)/stapprobes.3stap.in $(srcdir)/stapfuncs.3stap.in \ + $(srcdir)/stapvars.3stap.in $(srcdir)/stapex.3stap.in \ $(srcdir)/staprun.8.in $(srcdir)/stap-server.8.in \ - $(top_srcdir)/man/stapprobes.iosched.5.in \ - $(top_srcdir)/man/stapprobes.netdev.5.in \ - $(top_srcdir)/man/stapprobes.nfs.5.in \ - $(top_srcdir)/man/stapprobes.nfsd.5.in \ - $(top_srcdir)/man/stapprobes.pagefault.5.in \ - $(top_srcdir)/man/stapprobes.process.5.in \ - $(top_srcdir)/man/stapprobes.rpc.5.in \ - $(top_srcdir)/man/stapprobes.scsi.5.in \ - $(top_srcdir)/man/stapprobes.signal.5.in \ - $(top_srcdir)/man/stapprobes.socket.5.in \ - $(top_srcdir)/man/stapprobes.tcp.5.in \ - $(top_srcdir)/man/stapprobes.udp.5.in \ + $(top_srcdir)/man/stapprobes.iosched.3stap.in \ + $(top_srcdir)/man/stapprobes.netdev.3stap.in \ + $(top_srcdir)/man/stapprobes.nfs.3stap.in \ + $(top_srcdir)/man/stapprobes.nfsd.3stap.in \ + $(top_srcdir)/man/stapprobes.pagefault.3stap.in \ + $(top_srcdir)/man/stapprobes.process.3stap.in \ + $(top_srcdir)/man/stapprobes.rpc.3stap.in \ + $(top_srcdir)/man/stapprobes.scsi.3stap.in \ + $(top_srcdir)/man/stapprobes.signal.3stap.in \ + $(top_srcdir)/man/stapprobes.socket.3stap.in \ + $(top_srcdir)/man/stapprobes.tcp.3stap.in \ + $(top_srcdir)/man/stapprobes.udp.3stap.in \ $(top_srcdir)/initscript/systemtap.in $(srcdir)/run-stap.in \ depcomp $(oldinclude_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -81,19 +81,20 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = stap.1 stapprobes.5 stapfuncs.5 stapvars.5 \ - stapex.5 staprun.8 stap-server.8 man/stapprobes.iosched.5 \ - man/stapprobes.netdev.5 man/stapprobes.nfs.5 \ - man/stapprobes.nfsd.5 man/stapprobes.pagefault.5 \ - man/stapprobes.process.5 man/stapprobes.rpc.5 \ - man/stapprobes.scsi.5 man/stapprobes.signal.5 \ - man/stapprobes.socket.5 man/stapprobes.tcp.5 \ - man/stapprobes.udp.5 initscript/systemtap run-stap +CONFIG_CLEAN_FILES = stap.1 stapprobes.3stap stapfuncs.3stap \ + stapvars.3stap stapex.3stap staprun.8 stap-server.8 \ + man/stapprobes.iosched.3stap man/stapprobes.netdev.3stap \ + man/stapprobes.nfs.3stap man/stapprobes.nfsd.3stap \ + man/stapprobes.pagefault.3stap man/stapprobes.process.3stap \ + man/stapprobes.rpc.3stap man/stapprobes.scsi.3stap \ + man/stapprobes.signal.3stap man/stapprobes.socket.3stap \ + man/stapprobes.tcp.3stap man/stapprobes.udp.3stap \ + initscript/systemtap run-stap @BUILD_SERVER_TRUE@am__EXEEXT_1 = stap-client-connect$(EXEEXT) \ @BUILD_SERVER_TRUE@ stap-server-connect$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibexecdir)" \ "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ - "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)" \ + "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man8dir)" \ "$(DESTDIR)$(oldincludedir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) pkglibexecPROGRAMS_INSTALL = $(INSTALL_PROGRAM) @@ -164,7 +165,7 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive man1dir = $(mandir)/man1 -man5dir = $(mandir)/man5 +man3dir = $(mandir)/man3 man8dir = $(mandir)/man8 NROFF = nroff MANS = $(man_MANS) @@ -288,7 +289,6 @@ staplog_CPPFLAGS = @staplog_CPPFLAGS@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @@ -298,13 +298,14 @@ pkglibexecdir = ${libexecdir}/${PACKAGE} AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -DPKGDATADIR='"${pkgdatadir}"' -DPKGLIBDIR='"$(pkglibexecdir)"' AM_CFLAGS = -D_GNU_SOURCE -fexceptions -Wall -Werror -Wunused -Wformat=2 -W AM_CXXFLAGS = -Wall -Werror -man_MANS = stap.1 stapprobes.5 stapfuncs.5 stapvars.5 stapex.5 \ - staprun.8 man/stapprobes.iosched.5 man/stapprobes.netdev.5 \ - man/stapprobes.nfs.5 man/stapprobes.nfsd.5 \ - man/stapprobes.pagefault.5 man/stapprobes.process.5 \ - man/stapprobes.rpc.5 man/stapprobes.scsi.5 \ - man/stapprobes.signal.5 man/stapprobes.socket.5 \ - man/stapprobes.tcp.5 man/stapprobes.udp.5 $(am__append_1) +man_MANS = stap.1 stapprobes.3stap stapfuncs.3stap stapvars.3stap \ + stapex.3stap staprun.8 man/stapprobes.iosched.3stap \ + man/stapprobes.netdev.3stap man/stapprobes.nfs.3stap \ + man/stapprobes.nfsd.3stap man/stapprobes.pagefault.3stap \ + man/stapprobes.process.3stap man/stapprobes.rpc.3stap \ + man/stapprobes.scsi.3stap man/stapprobes.signal.3stap \ + man/stapprobes.socket.3stap man/stapprobes.tcp.3stap \ + man/stapprobes.udp.3stap $(am__append_1) bin_SCRIPTS = stap-report $(am__append_3) dtrace oldinclude_HEADERS = includes/sys/sdt.h stap_SOURCES = main.cxx \ @@ -433,41 +434,41 @@ distclean-hdr: -rm -f config.h stamp-h1 stap.1: $(top_builddir)/config.status $(srcdir)/stap.1.in cd $(top_builddir) && $(SHELL) ./config.status $@ -stapprobes.5: $(top_builddir)/config.status $(srcdir)/stapprobes.5.in +stapprobes.3stap: $(top_builddir)/config.status $(srcdir)/stapprobes.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -stapfuncs.5: $(top_builddir)/config.status $(srcdir)/stapfuncs.5.in +stapfuncs.3stap: $(top_builddir)/config.status $(srcdir)/stapfuncs.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -stapvars.5: $(top_builddir)/config.status $(srcdir)/stapvars.5.in +stapvars.3stap: $(top_builddir)/config.status $(srcdir)/stapvars.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -stapex.5: $(top_builddir)/config.status $(srcdir)/stapex.5.in +stapex.3stap: $(top_builddir)/config.status $(srcdir)/stapex.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ staprun.8: $(top_builddir)/config.status $(srcdir)/staprun.8.in cd $(top_builddir) && $(SHELL) ./config.status $@ stap-server.8: $(top_builddir)/config.status $(srcdir)/stap-server.8.in cd $(top_builddir) && $(SHELL) ./config.status $@ -man/stapprobes.iosched.5: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.iosched.5.in +man/stapprobes.iosched.3stap: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.iosched.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -man/stapprobes.netdev.5: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.netdev.5.in +man/stapprobes.netdev.3stap: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.netdev.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -man/stapprobes.nfs.5: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.nfs.5.in +man/stapprobes.nfs.3stap: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.nfs.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -man/stapprobes.nfsd.5: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.nfsd.5.in +man/stapprobes.nfsd.3stap: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.nfsd.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -man/stapprobes.pagefault.5: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.pagefault.5.in +man/stapprobes.pagefault.3stap: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.pagefault.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -man/stapprobes.process.5: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.process.5.in +man/stapprobes.process.3stap: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.process.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -man/stapprobes.rpc.5: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.rpc.5.in +man/stapprobes.rpc.3stap: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.rpc.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -man/stapprobes.scsi.5: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.scsi.5.in +man/stapprobes.scsi.3stap: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.scsi.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -man/stapprobes.signal.5: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.signal.5.in +man/stapprobes.signal.3stap: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.signal.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -man/stapprobes.socket.5: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.socket.5.in +man/stapprobes.socket.3stap: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.socket.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -man/stapprobes.tcp.5: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.tcp.5.in +man/stapprobes.tcp.3stap: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.tcp.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ -man/stapprobes.udp.5: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.udp.5.in +man/stapprobes.udp.3stap: $(top_builddir)/config.status $(top_srcdir)/man/stapprobes.udp.3stap.in cd $(top_builddir) && $(SHELL) ./config.status $@ initscript/systemtap: $(top_builddir)/config.status $(top_srcdir)/initscript/systemtap.in cd $(top_builddir) && $(SHELL) ./config.status $@ @@ -1059,14 +1060,14 @@ uninstall-man1: echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ done -install-man5: $(man5_MANS) $(man_MANS) +install-man3: $(man3_MANS) $(man_MANS) @$(NORMAL_INSTALL) - test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)" - @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \ + test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)" + @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ - *.5*) list="$$list $$i" ;; \ + *.3*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ @@ -1074,35 +1075,35 @@ install-man5: $(man5_MANS) $(man_MANS) else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ - 5*) ;; \ - *) ext='5' ;; \ + 3*) ;; \ + *) ext='3' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst"; \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst"; \ done -uninstall-man5: +uninstall-man3: @$(NORMAL_UNINSTALL) - @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \ + @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ case "$$i" in \ - *.5*) list="$$list $$i" ;; \ + *.3*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ case "$$ext" in \ - 5*) ;; \ - *) ext='5' ;; \ + 3*) ;; \ + *) ext='3' ;; \ esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f '$(DESTDIR)$(man5dir)/$$inst'"; \ - rm -f "$(DESTDIR)$(man5dir)/$$inst"; \ + echo " rm -f '$(DESTDIR)$(man3dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man3dir)/$$inst"; \ done install-man8: $(man8_MANS) $(man_MANS) @$(NORMAL_INSTALL) @@ -1304,7 +1305,7 @@ all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(MANS) $(HEADERS) config.h \ all-local installdirs: installdirs-recursive installdirs-am: - for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibexecdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(oldincludedir)"; do \ + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkglibexecdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(oldincludedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) @@ -1369,7 +1370,7 @@ install-html: install-html-recursive install-info: install-info-recursive -install-man: install-man1 install-man5 install-man8 +install-man: install-man1 install-man3 install-man8 install-pdf: install-pdf-recursive @@ -1400,7 +1401,7 @@ uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ uninstall-local uninstall-man uninstall-oldincludeHEADERS \ uninstall-pkglibexecPROGRAMS -uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8 +uninstall-man: uninstall-man1 uninstall-man3 uninstall-man8 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-exec-am install-strip @@ -1416,7 +1417,7 @@ uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8 install-data-local install-dvi install-dvi-am install-exec \ install-exec-am install-exec-hook install-exec-local \ install-html install-html-am install-info install-info-am \ - install-man install-man1 install-man5 install-man8 \ + install-man install-man1 install-man3 install-man8 \ install-oldincludeHEADERS install-pdf install-pdf-am \ install-pkglibexecPROGRAMS install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ @@ -1424,7 +1425,7 @@ uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8 mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-binSCRIPTS uninstall-local \ - uninstall-man uninstall-man1 uninstall-man5 uninstall-man8 \ + uninstall-man uninstall-man1 uninstall-man3 uninstall-man8 \ uninstall-oldincludeHEADERS uninstall-pkglibexecPROGRAMS git_version.stamp: diff --git a/configure b/configure index 779dd4de..57afc1bb 100755 --- a/configure +++ b/configure @@ -7859,7 +7859,7 @@ _ACEOF ac_config_headers="$ac_config_headers config.h:config.in" -ac_config_files="$ac_config_files Makefile doc/Makefile doc/SystemTap_Tapset_Reference/Makefile stap.1 stapprobes.5 stapfuncs.5 stapvars.5 stapex.5 staprun.8 stap-server.8 man/stapprobes.iosched.5 man/stapprobes.netdev.5 man/stapprobes.nfs.5 man/stapprobes.nfsd.5 man/stapprobes.pagefault.5 man/stapprobes.process.5 man/stapprobes.rpc.5 man/stapprobes.scsi.5 man/stapprobes.signal.5 man/stapprobes.socket.5 man/stapprobes.tcp.5 man/stapprobes.udp.5 initscript/systemtap" +ac_config_files="$ac_config_files Makefile doc/Makefile doc/SystemTap_Tapset_Reference/Makefile stap.1 stapprobes.3stap stapfuncs.3stap stapvars.3stap stapex.3stap staprun.8 stap-server.8 man/stapprobes.iosched.3stap man/stapprobes.netdev.3stap man/stapprobes.nfs.3stap man/stapprobes.nfsd.3stap man/stapprobes.pagefault.3stap man/stapprobes.process.3stap man/stapprobes.rpc.3stap man/stapprobes.scsi.3stap man/stapprobes.signal.3stap man/stapprobes.socket.3stap man/stapprobes.tcp.3stap man/stapprobes.udp.3stap initscript/systemtap" subdirs="$subdirs testsuite" @@ -8504,24 +8504,24 @@ do "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/SystemTap_Tapset_Reference/Makefile") CONFIG_FILES="$CONFIG_FILES doc/SystemTap_Tapset_Reference/Makefile" ;; "stap.1") CONFIG_FILES="$CONFIG_FILES stap.1" ;; - "stapprobes.5") CONFIG_FILES="$CONFIG_FILES stapprobes.5" ;; - "stapfuncs.5") CONFIG_FILES="$CONFIG_FILES stapfuncs.5" ;; - "stapvars.5") CONFIG_FILES="$CONFIG_FILES stapvars.5" ;; - "stapex.5") CONFIG_FILES="$CONFIG_FILES stapex.5" ;; + "stapprobes.3stap") CONFIG_FILES="$CONFIG_FILES stapprobes.3stap" ;; + "stapfuncs.3stap") CONFIG_FILES="$CONFIG_FILES stapfuncs.3stap" ;; + "stapvars.3stap") CONFIG_FILES="$CONFIG_FILES stapvars.3stap" ;; + "stapex.3stap") CONFIG_FILES="$CONFIG_FILES stapex.3stap" ;; "staprun.8") CONFIG_FILES="$CONFIG_FILES staprun.8" ;; "stap-server.8") CONFIG_FILES="$CONFIG_FILES stap-server.8" ;; - "man/stapprobes.iosched.5") CONFIG_FILES="$CONFIG_FILES man/stapprobes.iosched.5" ;; - "man/stapprobes.netdev.5") CONFIG_FILES="$CONFIG_FILES man/stapprobes.netdev.5" ;; - "man/stapprobes.nfs.5") CONFIG_FILES="$CONFIG_FILES man/stapprobes.nfs.5" ;; - "man/stapprobes.nfsd.5") CONFIG_FILES="$CONFIG_FILES man/stapprobes.nfsd.5" ;; - "man/stapprobes.pagefault.5") CONFIG_FILES="$CONFIG_FILES man/stapprobes.pagefault.5" ;; - "man/stapprobes.process.5") CONFIG_FILES="$CONFIG_FILES man/stapprobes.process.5" ;; - "man/stapprobes.rpc.5") CONFIG_FILES="$CONFIG_FILES man/stapprobes.rpc.5" ;; - "man/stapprobes.scsi.5") CONFIG_FILES="$CONFIG_FILES man/stapprobes.scsi.5" ;; - "man/stapprobes.signal.5") CONFIG_FILES="$CONFIG_FILES man/stapprobes.signal.5" ;; - "man/stapprobes.socket.5") CONFIG_FILES="$CONFIG_FILES man/stapprobes.socket.5" ;; - "man/stapprobes.tcp.5") CONFIG_FILES="$CONFIG_FILES man/stapprobes.tcp.5" ;; - "man/stapprobes.udp.5") CONFIG_FILES="$CONFIG_FILES man/stapprobes.udp.5" ;; + "man/stapprobes.iosched.3stap") CONFIG_FILES="$CONFIG_FILES man/stapprobes.iosched.3stap" ;; + "man/stapprobes.netdev.3stap") CONFIG_FILES="$CONFIG_FILES man/stapprobes.netdev.3stap" ;; + "man/stapprobes.nfs.3stap") CONFIG_FILES="$CONFIG_FILES man/stapprobes.nfs.3stap" ;; + "man/stapprobes.nfsd.3stap") CONFIG_FILES="$CONFIG_FILES man/stapprobes.nfsd.3stap" ;; + "man/stapprobes.pagefault.3stap") CONFIG_FILES="$CONFIG_FILES man/stapprobes.pagefault.3stap" ;; + "man/stapprobes.process.3stap") CONFIG_FILES="$CONFIG_FILES man/stapprobes.process.3stap" ;; + "man/stapprobes.rpc.3stap") CONFIG_FILES="$CONFIG_FILES man/stapprobes.rpc.3stap" ;; + "man/stapprobes.scsi.3stap") CONFIG_FILES="$CONFIG_FILES man/stapprobes.scsi.3stap" ;; + "man/stapprobes.signal.3stap") CONFIG_FILES="$CONFIG_FILES man/stapprobes.signal.3stap" ;; + "man/stapprobes.socket.3stap") CONFIG_FILES="$CONFIG_FILES man/stapprobes.socket.3stap" ;; + "man/stapprobes.tcp.3stap") CONFIG_FILES="$CONFIG_FILES man/stapprobes.tcp.3stap" ;; + "man/stapprobes.udp.3stap") CONFIG_FILES="$CONFIG_FILES man/stapprobes.udp.3stap" ;; "initscript/systemtap") CONFIG_FILES="$CONFIG_FILES initscript/systemtap" ;; "run-stap") CONFIG_FILES="$CONFIG_FILES run-stap" ;; diff --git a/configure.ac b/configure.ac index f74d8d99..9d8dd7ae 100644 --- a/configure.ac +++ b/configure.ac @@ -355,7 +355,7 @@ dnl Don't use this directly (when not given it is set to NONE). AC_DEFINE_UNQUOTED(STAP_PREFIX, "$prefix", [configure prefix location]) AC_CONFIG_HEADERS([config.h:config.in]) -AC_CONFIG_FILES(Makefile doc/Makefile doc/SystemTap_Tapset_Reference/Makefile stap.1 stapprobes.5 stapfuncs.5 stapvars.5 stapex.5 staprun.8 stap-server.8 man/stapprobes.iosched.5 man/stapprobes.netdev.5 man/stapprobes.nfs.5 man/stapprobes.nfsd.5 man/stapprobes.pagefault.5 man/stapprobes.process.5 man/stapprobes.rpc.5 man/stapprobes.scsi.5 man/stapprobes.signal.5 man/stapprobes.socket.5 man/stapprobes.tcp.5 man/stapprobes.udp.5 initscript/systemtap) +AC_CONFIG_FILES(Makefile doc/Makefile doc/SystemTap_Tapset_Reference/Makefile stap.1 stapprobes.3stap stapfuncs.3stap stapvars.3stap stapex.3stap staprun.8 stap-server.8 man/stapprobes.iosched.3stap man/stapprobes.netdev.3stap man/stapprobes.nfs.3stap man/stapprobes.nfsd.3stap man/stapprobes.pagefault.3stap man/stapprobes.process.3stap man/stapprobes.rpc.3stap man/stapprobes.scsi.3stap man/stapprobes.signal.3stap man/stapprobes.socket.3stap man/stapprobes.tcp.3stap man/stapprobes.udp.3stap initscript/systemtap) AC_CONFIG_SUBDIRS(testsuite) AC_CONFIG_FILES([run-stap], [chmod +x run-stap]) AC_OUTPUT diff --git a/doc/Makefile.in b/doc/Makefile.in index e23a6699..93753666 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -163,7 +163,6 @@ staplog_CPPFLAGS = @staplog_CPPFLAGS@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ PDF_FILES = tutorial.pdf langref.pdf diff --git a/doc/SystemTap_Tapset_Reference/Makefile.in b/doc/SystemTap_Tapset_Reference/Makefile.in index 6fe6bab2..06286d6c 100644 --- a/doc/SystemTap_Tapset_Reference/Makefile.in +++ b/doc/SystemTap_Tapset_Reference/Makefile.in @@ -166,7 +166,6 @@ staplog_CPPFLAGS = @staplog_CPPFLAGS@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap diff --git a/man/stapprobes.iosched.3stap.in b/man/stapprobes.iosched.3stap.in new file mode 100644 index 00000000..e08dce8c --- /dev/null +++ b/man/stapprobes.iosched.3stap.in @@ -0,0 +1,100 @@ +.\" -*- nroff -*- +.TH STAPPROBES.IOSCHED 3stap @DATE@ "IBM" +.SH NAME +stapprobes.iosched \- systemtap IO scheduler probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of probe points is used to probe the IO scheduler +activities. It contains the following probe points: + +.P +.TP +.B ioscheduler.elv_next_request +Fires when retrieves a request from request queue + +.B Arguments: + +.I elevator_name + The elevator name + +.P +.TP +.B ioscheduler.elv_next_request.return +Fires when return from retrieving a request + +.B Arguments: + +.I req + Address of the request + +.I req_flags + request flags + +.I disk_major + disk major number of the request + +.I disk_minor + disk minor number of the request + +.P +.TP +.B ioscheduler.elv_add_request +Fires when add a request into request queue + +.B Arguments: + +.I elevator_name + The elevator name + +.I req + Address of the request + +.I req_flags + request flags + +.I disk_major + disk major number of the request + +.I disk_minor + disk minor number of the request + +.P +.TP +.B ioscheduler.elv_completed_request +Fires when a request is completed + +.B Arguments: + +.I elevator_name + The elevator name + +.I req + Address of the request + +.I req_flags + request flags + +.I disk_major + disk major number of the request + +.I disk_minor + disk minor number of the request + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (3stap), + diff --git a/man/stapprobes.iosched.5.in b/man/stapprobes.iosched.5.in deleted file mode 100644 index f638b2ff..00000000 --- a/man/stapprobes.iosched.5.in +++ /dev/null @@ -1,100 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES.IOSCHED 5 @DATE@ "IBM" -.SH NAME -stapprobes.iosched \- systemtap IO scheduler probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION - -This family of probe points is used to probe the IO scheduler -activities. It contains the following probe points: - -.P -.TP -.B ioscheduler.elv_next_request -Fires when retrieves a request from request queue - -.B Arguments: - -.I elevator_name - The elevator name - -.P -.TP -.B ioscheduler.elv_next_request.return -Fires when return from retrieving a request - -.B Arguments: - -.I req - Address of the request - -.I req_flags - request flags - -.I disk_major - disk major number of the request - -.I disk_minor - disk minor number of the request - -.P -.TP -.B ioscheduler.elv_add_request -Fires when add a request into request queue - -.B Arguments: - -.I elevator_name - The elevator name - -.I req - Address of the request - -.I req_flags - request flags - -.I disk_major - disk major number of the request - -.I disk_minor - disk minor number of the request - -.P -.TP -.B ioscheduler.elv_completed_request -Fires when a request is completed - -.B Arguments: - -.I elevator_name - The elevator name - -.I req - Address of the request - -.I req_flags - request flags - -.I disk_major - disk major number of the request - -.I disk_minor - disk minor number of the request - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes (5), - diff --git a/man/stapprobes.netdev.3stap.in b/man/stapprobes.netdev.3stap.in new file mode 100644 index 00000000..c25fbd44 --- /dev/null +++ b/man/stapprobes.netdev.3stap.in @@ -0,0 +1,77 @@ +.\" -*- nroff -*- +.TH STAPPROBES.NETDEV 3stap @DATE@ "IBM" +.SH NAME +stapprobes.netdev \- systemtap network device probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of probe points is used to probe the activities of network +device. +It contains the following probe points: + +.P +.TP +.B netdev.receive +Fires when data arrives on network device + +.B Arguments: + +.I dev_name + The name of the device. e.g: eth0, ath1 + +.I length + The length of the receiving buffer + +.I protocol + The possible values of protocol could be: + 0800 IP + 8100 802.1Q VLAN + 0001 802.3 + 0002 AX.25 + 0004 802.2 + 8035 RARP + 0005 SNAP + 0805 X.25 + 0806 ARP + 8137 IPX + 0009 Localtalk + 86DD IPv6 + +.I truesize + The size of the received data + +.P +.TP +.B netdev.transmit +Fires when the network device wants to transmit a buffer + +.B Arguments: + +.I dev_name + The name of the device. e.g: eth0, ath1 + +.I length + The length of the transmit buffer + +.I protocol + The protocol of this packet. + +.I truesize + The size of the the data to be transmitted. + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (3stap), diff --git a/man/stapprobes.netdev.5.in b/man/stapprobes.netdev.5.in deleted file mode 100644 index 0510b07b..00000000 --- a/man/stapprobes.netdev.5.in +++ /dev/null @@ -1,77 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES.NETDEV 5 @DATE@ "IBM" -.SH NAME -stapprobes.netdev \- systemtap network device probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION - -This family of probe points is used to probe the activities of network -device. -It contains the following probe points: - -.P -.TP -.B netdev.receive -Fires when data arrives on network device - -.B Arguments: - -.I dev_name - The name of the device. e.g: eth0, ath1 - -.I length - The length of the receiving buffer - -.I protocol - The possible values of protocol could be: - 0800 IP - 8100 802.1Q VLAN - 0001 802.3 - 0002 AX.25 - 0004 802.2 - 8035 RARP - 0005 SNAP - 0805 X.25 - 0806 ARP - 8137 IPX - 0009 Localtalk - 86DD IPv6 - -.I truesize - The size of the received data - -.P -.TP -.B netdev.transmit -Fires when the network device wants to transmit a buffer - -.B Arguments: - -.I dev_name - The name of the device. e.g: eth0, ath1 - -.I length - The length of the transmit buffer - -.I protocol - The protocol of this packet. - -.I truesize - The size of the the data to be transmitted. - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes (5), diff --git a/man/stapprobes.nfs.3stap.in b/man/stapprobes.nfs.3stap.in new file mode 100644 index 00000000..b6a81cde --- /dev/null +++ b/man/stapprobes.nfs.3stap.in @@ -0,0 +1,1236 @@ +.\" -*- nroff -*- +.TH STAPPROBES.NFS 3stap @DATE@ "IBM" +.SH NAME +stapprobes.nfs \- systemtap NFS client side probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of probe points is used to probe NFS activities on +client side. +It contains the following probe points: + +.P +.TP +.B nfs.fop.llseek + +Fires whenever doing a llseek operation on nfs client side + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I s_id + the pointer to s_id + +.I devname + the combination of server ip and the name of block device + on server + +.I maxbyte + Maximum size of the files + +.I offset + the offset of file to be repositioned + +.I origin + the original position. The possible value could be: + SEEK_SET + The offset is set to offset bytes. + SEEK_CUR + The offset is set to its current location + plus offset bytes. + SEEK_END + The offset is set to the size of the file + plus offset bytes. + +.P +.TP +.B nfs.fop.llseek.return + +Fires whenever nfs llseek operation is done + +.B Arguments: + +.I retstr + resulting offset location + +.P +.TP +.B nfs.fop.read + +Fires whenever doing a read operation on nfs client side + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I s_id + the pointer to s_id + +.I devname + the combination of server ip and the name of block device + on server + +.I len,size + number of bytes to be read + +.I pos + current file offset + +.I buf + the buf address + +.P +.TP +.B nfs.fop.read.return + +Fires whenever nfs read operation is done + +.B Arguments: + +.I size + number of bytes read + +.P +.TP +.B nfs.fop.write + +Fires whenever doing a write operation on nfs client side + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I s_id + the pointer to s_id + +.I devname + the combination of server ip and the name of block device + on server + +.I len,size + number of bytes to written + +.I pos + current file offset + +.I buf + the buf address + +.P +.TP +.B nfs.fop.write.return + +Fires whenever nfs write operation is done + +.B Arguments: + +.I size + number of bytes written + +.P +.TP +.B nfs.fop.aio_read + +Fires whenever doing an aio_read operation on nfs client side + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I s_id + the pointer to s_id + +.I devname + the combination of server ip and the name of block device + on server + +.I count,size + number of bytes to be read + +.I pos + current file offset + +.I buf + the buf address + +.I parent_name + parent dir name + +.I file_name + file name + +.I cache_valid + cache related bit mask flag + +.I cache_time + when we started read-caching this inode + +.I attrtimeo + how long the cached information is assumed to be valid. + + The cached attrs for this inode needed to be revalidated if + jiffies \- read_cache_jiffies > attrtime + +.P +.TP +.B nfs.fop.aio_read.return + +Fires whenever nfs aio_read operation is done + +.B Arguments: + +.I size + number of bytes read + +.P +.TP +.B nfs.fop.aio_write + +Fires whenever doing an aio_write operation on nfs client side + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I s_id + the pointer to s_id + +.I devname + the combination of server ip and the name of block device + on server + +.I count,size + number of bytes to written + +.I pos + current file offset + +.I buf + the buf address + +.I parent_name + parent dir name + +.I file_name + file name + +.P +.TP +.B nfs.fop.aio_write.return + +Fires whenever nfs aio_write operation is done + +.B Arguments: + +.I size + number of bytes written + +.P +.TP +.B nfs.fop.mmap + +Fires whenever doing an mmap operation on nfs client side + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I s_id + the pointer to s_id + +.I devname + the combination of server ip and the name of block device + on server + +.I vm_start + start address within vm_mm + +.I vm_end + the first byte after end address within vm_mm + +.I vm_flag + vm flags + +.I parent_name + parent dir name + +.I file_name + file name + +.I cache_valid + cache related bit mask flag + +.I cache_time + when we started read-caching this inode + +.I attrtimeo + how long the cached information is assumed to be valid. + + The cached attrs for this inode needed to be revalidated if + jiffies \- read_cache_jiffies > attrtime + +.P +.TP +.B nfs.fop.open + +Fires whenever doing an open operation on nfs client side + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I s_id + the pointer to s_id + +.I devname + the combination of server ip and the name of block device + on server + +.I file_name + file name + +.I flag + file flag + +.I i_size + file length in bytes + +.P +.TP +.B nfs.fop.flush + +Fires whenever doing an flush operation on nfs client side + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I s_id + the pointer to s_id + +.I devname + the combination of server ip and the name of block device + on server + +.I mode + file mode + +.I ndirty + number of dirty page to be flushed + +.P +.TP +.B nfs.fop.release + +Fires whenever doing a release page operation on nfs client side + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I s_id + the pointer to s_id + +.I devname + the combination of server ip and the name of block device + on server + +.I mode + file mode + +.P +.TP +.B nfs.fop.fsync + +Fires whenever doing a fsync operation on nfs client side + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I s_id + the pointer to s_id + +.I devname + the combination of server ip and the name of block device + on server + +.I ndirty + number of dirty page to be flushed + +.P +.TP +.B nfs.fop.lock + +Fires whenever doing a file lock operation on nfs client side + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I s_id + the pointer to s_id + +.I devname + the combination of server ip and the name of block device + on server + +.I i_mode + file type and access rights + +.I cmd + cmd arguments + +.I fl_type + lock type + +.I fl_flag + lock flags + +.I fl_start + starting offset of locked region + +.I fl_end + ending offset of locked region + +.P +.TP +.B nfs.fop.sendfile + +Fires whenever doing a send file operation on nfs client side + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I s_id + the pointer to s_id + +.I devname + the combination of server ip and the name of block device + on server + +.I count,size + number of bytes to sent + +.I ppos + current file offset + +.I cache_valid + cache related bit mask flag + +.I cache_time + when we started read-caching this inode + +.I attrtimeo + how long the cached information is assumed to be valid. + + The cached attrs for this inode needed to be revalidated if + jiffies \- read_cache_jiffies > attrtime + +.P +.TP +.B nfs.fop.sendfile.return + +Fires whenever nfs sendfile operation is done + +.B Arguments: + +.I size + number of bytes sent + +.P +.TP +.B nfs.fop.check_flags + +Fires whenever doing a check flag operation on nfs client side + +.B Arguments: + +.I flags + file flag + +.P +.TP +.B nfs.aop.readpage + +Fires when a previous async read operation failed + +.B Arguments: + +.I __page + the address of page + +.I dev + device identifier + +.I ino + inode number + +.I i_flag + file flags + +.I i_size + file length in bytes + +.I sb_flag + super block flags + +.I file + file argument + +.I page_index + offset within mapping + +.I rsize + read size (in bytes) + +.P +.TP +.B nfs.aop.readpages + +Fies when in readahead way,read several pages once + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I nr_pages ,size + number of pages attempted to read in this execution + +.I file + filp argument + +.I rpages + read size (in pages) + +.I rsize + read size (in bytes) + +.P +.TP +.B nfs.aop.readpages.return + +Fies whenever a nfs read pages operation is done + +.B Arguments: + +.I size + number of pages read + +.P +.TP +.B nfs.aop.set_page_dirty + +Fies whenever set page dirty on nfs client side + +.B Arguments: + +.I __page + the address of page + +.I page_flag + page flags + +.P +.TP +.B nfs.aop.writepage + +Fies whenever writing an mapped page to the server from nfs client side + +.B Arguments: + +.I __page + the address of page + +.I dev + device identifier + +.I ino + inode number + +.I for_reclaim + a flag of writeback_control, indicates if it's invoked from the page allocator + +.I for_kupdate + a flag of writeback_control, indicates if it's a kupdate writeback + The priority of wb is decided by above two flags + +.I i_flag + file flags + +.I i_size + file length in bytes + +.I i_state + inode state flags + +.I sb_flag + super block flags + +.I page_index + offset within mapping + +.I wsize + write size + +.P +.TP +.B nfs.aop.writepages + +Fies whenever writing several dirty pages to the server from nfs client sides + +.B Arguments: + +.I dev + device identifier + +.I ino + inode number + +.I for_reclaim + a flag of writeback_control, indicates if it's invoked from the page allocator + +.I for_kupdate + a flag of writeback_control, indicates if it's a kupdate writeback + The priority of wb is decided by above two flags + +.I wpages + write size (in pages) + +.I wsize + write size + +.I nr_to_write ,size + number of pages attempted to be written in this execution + +.P +.TP +.B nfs.aop.prepare_write + +Fies whenever prepare a page for writting on nfs client sides + +.B Arguments: + +.I __page + the address of page + +.I dev + device identifier + +.I ino + inode number + +.I offset + start address of this write operation + +.I to + end address of this write operation + +.I page_index + offset within mapping + +.I size + read bytes + +.P +.TP +.B nfs.aop.commit_write + +Fies often after prepare write operation + +.B Arguments: + +.I __page + the address of page + +.I dev + device identifier + +.I ino + inode number + +.I offset + start address of this write operation + +.I to + end address of this write operation + +.I i_flag + file flags + +.I i_size + file length in bytes + +.I sb_flag + super block flag + +.I page_index + offset within mapping + +.I size + read bytes + +.P +.TP +.B nfs.aop.release_page + +.B Arguments: + +.I __page + the address of page + +.I dev + device identifier + +.I ino + inode number + +.I page_index + offset within mapping + +.P +.TP +.B nfs.proc.lookup + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I filename + the name of file which client opens/searchs on server + +.I name_len + the length of file name + +.I bitmask0, bitmask1 + V4 bitmask representing the set of attributes + supported on this filesystem (only in probe nfs.proc4.lookup) + +.P +.TP +.B nfs.proc.read + +Fires when client synchronously reads file from server + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I flags + used to set task\->tk_flags in rpc_init_task function + +.I size,count + number of bytes to be read in this execution + +.I offset + the file offset + +.P +.TP +.B nfs.proc.read.return + +Fires when synchronously reading file from server is done + +.B Arguments: + +.I size + number of bytes read + +.P +.TP +.B nfs.proc.write + +Fires when client synchronously writes file to server + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I flags + used to set task\->tk_flags in rpc_init_task function + +.I size,count + number of bytes to be written in this execution + +.I offset + the file offset + +.I bitmask0, bitmask1 + V4 bitmask representing the set of attributes + supported on this filesystem (only in probe nfs.proc4.lookup) + +.P +.TP +.B nfs.proc.write.return + +Fires when synchronously writting file from server is done + +.B Arguments: + +.I size + number of bytes written + +.P +.TP +.B nfs.proc.commit + +Fires when client writes the buffered data to disk,the buffered +data is asynchronously written by client before(not exist in NFSV2) + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I size,count + number of bytes to be written in this execution + +.I offset + the file offset + +.I bitmask0, bitmask1 + V4 bitmask representing the set of attributes + supported on this filesystem (only in probe nfs.proc4.lookup) + +.P +.TP +.B nfs.proc.commit.return + +Fires when committing operation is done + +.B Arguments: + +.I size + number of bytes written + +.P +.TP +.B nfs.proc.read_setup + +Fires when client asynchronously reads file from server, +this function is used to setup a read rpc task,not do +a real read operation. + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I size,count + number of bytes to be read in this execution + +.I offset + the file offset + +.P +.TP +.B nfs.proc.read_done + +Fires when a read reply is received or some read error occur +(timeout or socket shutdown) + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I status + result of last async read operation + +.I count + number of bytes read + +.I timestamp + time stamp ,which is used for lease renewal (only + in nfs.proc4.read_done) + +.P +.TP +.B nfs.proc.write_setup + +Fires when client asynchronously write data to server, +this function is used to setup a write rpc task,not do +a write read operation. + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I size,count + number of bytes to be written in this execution + +.I offset + the file offset + +.I how + used to set args.stable,The possible value could be: + NFS_UNSTABLE, + NFS_DATA_SYNC, + NFS_FILE_SYNC + (only in nfs.proc3.write_setup and nfs.proc4.write_setup) + +.I bitmask0, bitmask1 + V4 bitmask representing the set of attributes supported + on this filesystem (only in probe nfs.proc4.write_setup) + +.P +.TP +.B nfs.proc.write_done + +Fires when a write reply is received or some write error occur +(timeout or socket shutdown) + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I status + result of last async write operation + +.I valid + fattr\->valid ,indicates which fields are valid + +.I count + number of bytes written + +.I timestamp + time stamp ,which is used for lease renewal (only + in nfs.proc4.read_done) + +.P +.TP +.B nfs.proc.commit_setup + +Fires when client asynchronously do a commit operation, +this function is used to setup a commit rpc task,not do +a commit read operation. + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I size,count + number of bytes to be written in this execution + +.I offset + the file offset + +.I bitmask0, bitmask1 + V4 bitmask representing the set of attributes supported + on this filesystem (only in probe nfs.proc4.commit_setup) + +.P +.TP +.B nfs.proc.commit_done + +Fires when a commit reply is received or some commit error occur +(timeout or socket shutdown) + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I status + result of last async write operation + +.I valid + fattr\->valid ,indicates which fields are valid + +.I count + number of bytes written + +.I timestamp + time stamp ,which is used for lease renewal (only + in nfs.proc4.read_done) + +.P +.TP +.B nfs.proc.open + +Fires whenever doing a open operation on nfs client side, +the nfs_open function is used to allocate file read/write +context information + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I filename + file name + +.I flag + file flag + +.I mode + file mode + +.P +.TP +.B nfs.proc.release + +Fires whenever doing a release operation on nfs client side, + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I filename + file name + +.I flag + file flag + +.I mode + file mode + +.P +.TP +.B nfs.proc4.handle_exception + +Fires whenever doing the error handling, only exist in NFSV4 + +.I errorcode + error code + +.P +.TP +.B nfs.proc.create + +Fires whenever nfs client creates a file on server + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I fh + file handler of parent dir + +.I filename + file name + +.I filelen + length of file name + +.I flag + indicates create mode(only for NFSV3 and NFSV4) + +.P +.TP +.B nfs.proc.remove + +Fires whenever nfs client removes a file from server + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I fh + file handler of parent dir + +.I filename + file name + +.I filelen + length of file name + +.P +.TP +.B nfs.proc.rename + +Fires whenever nfs client renames a file on server + +.B Arguments: + +.I server_ip + ip address of server + +.I prot + transfer protocol + +.I version + nfs version + +.I old_fh + file handler of old parent dir + +.I old_name + old file name + +.I old_filelen + length of old file name + +.I new_fh + file handler of new parent dir + +.I new_name + new file name + +.I new_filelen + length of new file name + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (3stap), + diff --git a/man/stapprobes.nfs.5.in b/man/stapprobes.nfs.5.in deleted file mode 100644 index bf575ae4..00000000 --- a/man/stapprobes.nfs.5.in +++ /dev/null @@ -1,1236 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES.NFS 5 @DATE@ "IBM" -.SH NAME -stapprobes.nfs \- systemtap NFS client side probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION - -This family of probe points is used to probe NFS activities on -client side. -It contains the following probe points: - -.P -.TP -.B nfs.fop.llseek - -Fires whenever doing a llseek operation on nfs client side - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I s_id - the pointer to s_id - -.I devname - the combination of server ip and the name of block device - on server - -.I maxbyte - Maximum size of the files - -.I offset - the offset of file to be repositioned - -.I origin - the original position. The possible value could be: - SEEK_SET - The offset is set to offset bytes. - SEEK_CUR - The offset is set to its current location - plus offset bytes. - SEEK_END - The offset is set to the size of the file - plus offset bytes. - -.P -.TP -.B nfs.fop.llseek.return - -Fires whenever nfs llseek operation is done - -.B Arguments: - -.I retstr - resulting offset location - -.P -.TP -.B nfs.fop.read - -Fires whenever doing a read operation on nfs client side - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I s_id - the pointer to s_id - -.I devname - the combination of server ip and the name of block device - on server - -.I len,size - number of bytes to be read - -.I pos - current file offset - -.I buf - the buf address - -.P -.TP -.B nfs.fop.read.return - -Fires whenever nfs read operation is done - -.B Arguments: - -.I size - number of bytes read - -.P -.TP -.B nfs.fop.write - -Fires whenever doing a write operation on nfs client side - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I s_id - the pointer to s_id - -.I devname - the combination of server ip and the name of block device - on server - -.I len,size - number of bytes to written - -.I pos - current file offset - -.I buf - the buf address - -.P -.TP -.B nfs.fop.write.return - -Fires whenever nfs write operation is done - -.B Arguments: - -.I size - number of bytes written - -.P -.TP -.B nfs.fop.aio_read - -Fires whenever doing an aio_read operation on nfs client side - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I s_id - the pointer to s_id - -.I devname - the combination of server ip and the name of block device - on server - -.I count,size - number of bytes to be read - -.I pos - current file offset - -.I buf - the buf address - -.I parent_name - parent dir name - -.I file_name - file name - -.I cache_valid - cache related bit mask flag - -.I cache_time - when we started read-caching this inode - -.I attrtimeo - how long the cached information is assumed to be valid. - - The cached attrs for this inode needed to be revalidated if - jiffies \- read_cache_jiffies > attrtime - -.P -.TP -.B nfs.fop.aio_read.return - -Fires whenever nfs aio_read operation is done - -.B Arguments: - -.I size - number of bytes read - -.P -.TP -.B nfs.fop.aio_write - -Fires whenever doing an aio_write operation on nfs client side - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I s_id - the pointer to s_id - -.I devname - the combination of server ip and the name of block device - on server - -.I count,size - number of bytes to written - -.I pos - current file offset - -.I buf - the buf address - -.I parent_name - parent dir name - -.I file_name - file name - -.P -.TP -.B nfs.fop.aio_write.return - -Fires whenever nfs aio_write operation is done - -.B Arguments: - -.I size - number of bytes written - -.P -.TP -.B nfs.fop.mmap - -Fires whenever doing an mmap operation on nfs client side - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I s_id - the pointer to s_id - -.I devname - the combination of server ip and the name of block device - on server - -.I vm_start - start address within vm_mm - -.I vm_end - the first byte after end address within vm_mm - -.I vm_flag - vm flags - -.I parent_name - parent dir name - -.I file_name - file name - -.I cache_valid - cache related bit mask flag - -.I cache_time - when we started read-caching this inode - -.I attrtimeo - how long the cached information is assumed to be valid. - - The cached attrs for this inode needed to be revalidated if - jiffies \- read_cache_jiffies > attrtime - -.P -.TP -.B nfs.fop.open - -Fires whenever doing an open operation on nfs client side - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I s_id - the pointer to s_id - -.I devname - the combination of server ip and the name of block device - on server - -.I file_name - file name - -.I flag - file flag - -.I i_size - file length in bytes - -.P -.TP -.B nfs.fop.flush - -Fires whenever doing an flush operation on nfs client side - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I s_id - the pointer to s_id - -.I devname - the combination of server ip and the name of block device - on server - -.I mode - file mode - -.I ndirty - number of dirty page to be flushed - -.P -.TP -.B nfs.fop.release - -Fires whenever doing a release page operation on nfs client side - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I s_id - the pointer to s_id - -.I devname - the combination of server ip and the name of block device - on server - -.I mode - file mode - -.P -.TP -.B nfs.fop.fsync - -Fires whenever doing a fsync operation on nfs client side - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I s_id - the pointer to s_id - -.I devname - the combination of server ip and the name of block device - on server - -.I ndirty - number of dirty page to be flushed - -.P -.TP -.B nfs.fop.lock - -Fires whenever doing a file lock operation on nfs client side - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I s_id - the pointer to s_id - -.I devname - the combination of server ip and the name of block device - on server - -.I i_mode - file type and access rights - -.I cmd - cmd arguments - -.I fl_type - lock type - -.I fl_flag - lock flags - -.I fl_start - starting offset of locked region - -.I fl_end - ending offset of locked region - -.P -.TP -.B nfs.fop.sendfile - -Fires whenever doing a send file operation on nfs client side - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I s_id - the pointer to s_id - -.I devname - the combination of server ip and the name of block device - on server - -.I count,size - number of bytes to sent - -.I ppos - current file offset - -.I cache_valid - cache related bit mask flag - -.I cache_time - when we started read-caching this inode - -.I attrtimeo - how long the cached information is assumed to be valid. - - The cached attrs for this inode needed to be revalidated if - jiffies \- read_cache_jiffies > attrtime - -.P -.TP -.B nfs.fop.sendfile.return - -Fires whenever nfs sendfile operation is done - -.B Arguments: - -.I size - number of bytes sent - -.P -.TP -.B nfs.fop.check_flags - -Fires whenever doing a check flag operation on nfs client side - -.B Arguments: - -.I flags - file flag - -.P -.TP -.B nfs.aop.readpage - -Fires when a previous async read operation failed - -.B Arguments: - -.I __page - the address of page - -.I dev - device identifier - -.I ino - inode number - -.I i_flag - file flags - -.I i_size - file length in bytes - -.I sb_flag - super block flags - -.I file - file argument - -.I page_index - offset within mapping - -.I rsize - read size (in bytes) - -.P -.TP -.B nfs.aop.readpages - -Fies when in readahead way,read several pages once - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I nr_pages ,size - number of pages attempted to read in this execution - -.I file - filp argument - -.I rpages - read size (in pages) - -.I rsize - read size (in bytes) - -.P -.TP -.B nfs.aop.readpages.return - -Fies whenever a nfs read pages operation is done - -.B Arguments: - -.I size - number of pages read - -.P -.TP -.B nfs.aop.set_page_dirty - -Fies whenever set page dirty on nfs client side - -.B Arguments: - -.I __page - the address of page - -.I page_flag - page flags - -.P -.TP -.B nfs.aop.writepage - -Fies whenever writing an mapped page to the server from nfs client side - -.B Arguments: - -.I __page - the address of page - -.I dev - device identifier - -.I ino - inode number - -.I for_reclaim - a flag of writeback_control, indicates if it's invoked from the page allocator - -.I for_kupdate - a flag of writeback_control, indicates if it's a kupdate writeback - The priority of wb is decided by above two flags - -.I i_flag - file flags - -.I i_size - file length in bytes - -.I i_state - inode state flags - -.I sb_flag - super block flags - -.I page_index - offset within mapping - -.I wsize - write size - -.P -.TP -.B nfs.aop.writepages - -Fies whenever writing several dirty pages to the server from nfs client sides - -.B Arguments: - -.I dev - device identifier - -.I ino - inode number - -.I for_reclaim - a flag of writeback_control, indicates if it's invoked from the page allocator - -.I for_kupdate - a flag of writeback_control, indicates if it's a kupdate writeback - The priority of wb is decided by above two flags - -.I wpages - write size (in pages) - -.I wsize - write size - -.I nr_to_write ,size - number of pages attempted to be written in this execution - -.P -.TP -.B nfs.aop.prepare_write - -Fies whenever prepare a page for writting on nfs client sides - -.B Arguments: - -.I __page - the address of page - -.I dev - device identifier - -.I ino - inode number - -.I offset - start address of this write operation - -.I to - end address of this write operation - -.I page_index - offset within mapping - -.I size - read bytes - -.P -.TP -.B nfs.aop.commit_write - -Fies often after prepare write operation - -.B Arguments: - -.I __page - the address of page - -.I dev - device identifier - -.I ino - inode number - -.I offset - start address of this write operation - -.I to - end address of this write operation - -.I i_flag - file flags - -.I i_size - file length in bytes - -.I sb_flag - super block flag - -.I page_index - offset within mapping - -.I size - read bytes - -.P -.TP -.B nfs.aop.release_page - -.B Arguments: - -.I __page - the address of page - -.I dev - device identifier - -.I ino - inode number - -.I page_index - offset within mapping - -.P -.TP -.B nfs.proc.lookup - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I filename - the name of file which client opens/searchs on server - -.I name_len - the length of file name - -.I bitmask0, bitmask1 - V4 bitmask representing the set of attributes - supported on this filesystem (only in probe nfs.proc4.lookup) - -.P -.TP -.B nfs.proc.read - -Fires when client synchronously reads file from server - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I flags - used to set task\->tk_flags in rpc_init_task function - -.I size,count - number of bytes to be read in this execution - -.I offset - the file offset - -.P -.TP -.B nfs.proc.read.return - -Fires when synchronously reading file from server is done - -.B Arguments: - -.I size - number of bytes read - -.P -.TP -.B nfs.proc.write - -Fires when client synchronously writes file to server - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I flags - used to set task\->tk_flags in rpc_init_task function - -.I size,count - number of bytes to be written in this execution - -.I offset - the file offset - -.I bitmask0, bitmask1 - V4 bitmask representing the set of attributes - supported on this filesystem (only in probe nfs.proc4.lookup) - -.P -.TP -.B nfs.proc.write.return - -Fires when synchronously writting file from server is done - -.B Arguments: - -.I size - number of bytes written - -.P -.TP -.B nfs.proc.commit - -Fires when client writes the buffered data to disk,the buffered -data is asynchronously written by client before(not exist in NFSV2) - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I size,count - number of bytes to be written in this execution - -.I offset - the file offset - -.I bitmask0, bitmask1 - V4 bitmask representing the set of attributes - supported on this filesystem (only in probe nfs.proc4.lookup) - -.P -.TP -.B nfs.proc.commit.return - -Fires when committing operation is done - -.B Arguments: - -.I size - number of bytes written - -.P -.TP -.B nfs.proc.read_setup - -Fires when client asynchronously reads file from server, -this function is used to setup a read rpc task,not do -a real read operation. - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I size,count - number of bytes to be read in this execution - -.I offset - the file offset - -.P -.TP -.B nfs.proc.read_done - -Fires when a read reply is received or some read error occur -(timeout or socket shutdown) - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I status - result of last async read operation - -.I count - number of bytes read - -.I timestamp - time stamp ,which is used for lease renewal (only - in nfs.proc4.read_done) - -.P -.TP -.B nfs.proc.write_setup - -Fires when client asynchronously write data to server, -this function is used to setup a write rpc task,not do -a write read operation. - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I size,count - number of bytes to be written in this execution - -.I offset - the file offset - -.I how - used to set args.stable,The possible value could be: - NFS_UNSTABLE, - NFS_DATA_SYNC, - NFS_FILE_SYNC - (only in nfs.proc3.write_setup and nfs.proc4.write_setup) - -.I bitmask0, bitmask1 - V4 bitmask representing the set of attributes supported - on this filesystem (only in probe nfs.proc4.write_setup) - -.P -.TP -.B nfs.proc.write_done - -Fires when a write reply is received or some write error occur -(timeout or socket shutdown) - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I status - result of last async write operation - -.I valid - fattr\->valid ,indicates which fields are valid - -.I count - number of bytes written - -.I timestamp - time stamp ,which is used for lease renewal (only - in nfs.proc4.read_done) - -.P -.TP -.B nfs.proc.commit_setup - -Fires when client asynchronously do a commit operation, -this function is used to setup a commit rpc task,not do -a commit read operation. - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I size,count - number of bytes to be written in this execution - -.I offset - the file offset - -.I bitmask0, bitmask1 - V4 bitmask representing the set of attributes supported - on this filesystem (only in probe nfs.proc4.commit_setup) - -.P -.TP -.B nfs.proc.commit_done - -Fires when a commit reply is received or some commit error occur -(timeout or socket shutdown) - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I status - result of last async write operation - -.I valid - fattr\->valid ,indicates which fields are valid - -.I count - number of bytes written - -.I timestamp - time stamp ,which is used for lease renewal (only - in nfs.proc4.read_done) - -.P -.TP -.B nfs.proc.open - -Fires whenever doing a open operation on nfs client side, -the nfs_open function is used to allocate file read/write -context information - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I filename - file name - -.I flag - file flag - -.I mode - file mode - -.P -.TP -.B nfs.proc.release - -Fires whenever doing a release operation on nfs client side, - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I filename - file name - -.I flag - file flag - -.I mode - file mode - -.P -.TP -.B nfs.proc4.handle_exception - -Fires whenever doing the error handling, only exist in NFSV4 - -.I errorcode - error code - -.P -.TP -.B nfs.proc.create - -Fires whenever nfs client creates a file on server - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I fh - file handler of parent dir - -.I filename - file name - -.I filelen - length of file name - -.I flag - indicates create mode(only for NFSV3 and NFSV4) - -.P -.TP -.B nfs.proc.remove - -Fires whenever nfs client removes a file from server - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I fh - file handler of parent dir - -.I filename - file name - -.I filelen - length of file name - -.P -.TP -.B nfs.proc.rename - -Fires whenever nfs client renames a file on server - -.B Arguments: - -.I server_ip - ip address of server - -.I prot - transfer protocol - -.I version - nfs version - -.I old_fh - file handler of old parent dir - -.I old_name - old file name - -.I old_filelen - length of old file name - -.I new_fh - file handler of new parent dir - -.I new_name - new file name - -.I new_filelen - length of new file name - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes (5), - diff --git a/man/stapprobes.nfsd.3stap.in b/man/stapprobes.nfsd.3stap.in new file mode 100644 index 00000000..d3aea639 --- /dev/null +++ b/man/stapprobes.nfsd.3stap.in @@ -0,0 +1,513 @@ +.\" -*- nroff -*- +.TH STAPPROBES.NFSD 3stap @DATE@ "IBM" +.SH NAME +stapprobes.nfsd \- systemtap NFS server side probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of probe points is used to probe NFS activities on +server side. Because there is only one function, i.e., nfsd4_proc_compound +in proc level for NFSv4, all the following nfsd.proc probe points except +nfsd.proc.compound are only for NFSv2 and NFSv3. + +It contains the following probe points: + +.P +.TP +.B nfsd.proc.lookup + +Fires whenever client opens/searchs file on server + +.B Arguments: + +.I client_ip + the ip address of client + +.I proto + transfer protocol + +.I version + nfs version + +.I fh + the pointer to file handler of parent dir + +.I filename + file name + +.I filelen + the length of file name + +.P +.TP +.B nfsd.proc.read + +Fires whenever client reads file on server + +.B Arguments: + +.I client_ip + the ip address of client + +.I proto + transfer protocol + +.I version + nfs version + +.I fh + the pointer to file handler of file + +.I count,size + number of bytes to be read + +.I offset + the offset of file + +.I vec + struct kvec ,includes buf address in kernel address + and the length of each buffer + +.I vlen + number of blocks to be read + +.P +.TP +.B nfsd.proc.write + +Fires whenever client writes data to file on server + +.B Arguments: + +.I client_ip + the ip address of client + +.I proto + transfer protocol + +.I version + nfs version + +.I fh + the pointer to file handler of file + +.I count,size + number of bytes to written + +.I offset + the offset of file + +.I vec + struct kvec ,includes buf address in kernel address + and the length of each buffer + +.I vlen + number of blocks to written + +.I stable + argp\->stable(only for nfs.proc3.write) + +.P +.TP +.B nfsd.proc.commit + +Fires whenever client does a commit operation + +.B Arguments: + +.I client_ip + the ip address of client + +.I proto + transfer protocol + +.I version + nfs version + +.I fh + the pointer to file handler of file + +.I count,size + number of bytes to written + +.I offset + the offset of file + +.P +.TP +.B nfsd.proc.create + +Fires whenever client creates a file on server + +.B Arguments: + +.I client_ip + the ip address of client + +.I proto + transfer protocol + +.I version + nfs version + +.I fh + the pointer to file handler of parent dir + +.I filename + file name + +.I filelen + the length of file name + +.P +.TP +.B nfsd.proc.remove + +Fires whenever client removes a file on server + +.B Arguments: + +.I client_ip + the ip address of client + +.I proto + transfer protocol + +.I version + nfs version + +.I fh + the pointer to file handler of file + +.I filename + file name + +.I filelen + the length of file name + +.P +.TP +.B nfsd.proc.rename + +Fires whenever client renames a file on server + +.B Arguments: + +.I client_ip + the ip address of client + +.I proto + transfer protocol + +.I version + nfs version + +.I fh + the pointer to file handler of old path + +.I tfh + the pointer to file handler of new path + +.I filename + old file name + +.I tname + new file name + +.I filelen + the length of old file name + +.I tlen + the length of new file name + +.P +.TP +.B nfsd.proc.compound + +Fires whenever server receives a NFSV4 operation from client + +.B Arguments: + +.I client_ip + the ip address of client + +.I proto + transfer protocol + +.I version + nfs version + +.I num + number of file operation + +.I op + head of operation list + +.P +.TP +.B nfsd.open + +Fires whenever server opens file + +.B Arguments: + +.I fh + file handle (the first part is the length of the file handle) + +.I access + type of open (read/write/commit/readdir...) + +.I type + type of file(regular file or dir) + +.P +.TP +.B nfsd.read + +Fires whenever server reads file + +.B Arguments: + +.I fh + file handle (the first part is the length of the file handle) + +.I file + argument :file, indicates if the file has been opened. + +.I count,size + number of bytes to be read + +.I offset + the offset of file + +.I vec + struct kvec ,includes buf address in kernel address + and the length of each buffer + +.I vlen + number of blocks to be read + +.P +.TP +.B nfsd.write + +Fires whenever server writes file + +.B Arguments: + +.I fh + file handle (the first part is the length of the file handle) + +.I file + argument :file, indicates if the file has been opened. + +.I count,size + number of bytes to be read + +.I offset + the offset of file + +.I vec + struct kvec ,includes buf address in kernel address + and the length of each buffer + +.I vlen + number of blocks to be written + +.P +.TP +.B nfsd.commit + +Fires when server commits all pending writes to stable storage + +.B Arguments: + +.I fh + file handle (the first part is the length of the file handle) + +.I count,size + number of bytes to be read + +.I offset + the offset of file + +.P +.TP +.B nfsd.lookup + +Fires whenever client opens/searchs file on server + +.B Arguments: + +.I fh + file handle (the first part is the length of the file handle) + +.I filename + file name + +.I filelen + the length of file name + +.P +.TP +.B nfsd.create + + Fires when client creates a file(regular,dir,device,fifo) on + server side, sometimes nfsd will call nfsd_create_v3 instead + of this function + +.B Arguments: + +.I fh + file handle (the first part is the length of the file handle) + +.I filename + file name + +.I filelen + the length of file name + +.I type + file type(regular,dir,device,fifo ...) + +.I iap_valid + Attribute flags + +.I iap_mode + file access mod + +.P +.TP +.B nfsd.createv3 + +Fires when client creates a regular file or set file attributes +on server side,only called by nfsd3_proc_create and nfsd4_open +(op_claim_type is NFS4_OPEN_CLAIM_NULL) + +.B Arguments: + +.I fh + file handle (the first part is the length of the file handle) + +.I filename + file name + +.I filelen + the length of file name + +.I iap_valid + Attribute flags + +.I iap_mode + file access mode + +.I createmode + create mode .The possible values could be: + NFS3_CREATE_EXCLUSIVE,NFS3_CREATE_UNCHECKED,NFS3_CREATE_GUARDED + +.I truncp + trunp arguments, indicates if the file shouldbe truncate + +.I verfier + file attributes (atime,mtime,mode).It's used to reset file + attributes for CREATE_EXCLUSIVE + +.P +.TP +.B nfsd.unlink + +Fires when client removes a file or a dir on server side, + +.B Arguments: + +.I fh + file handle (the first part is the length of the file handle) + +.I filename + file name + +.I filelen + the length of file name + +.I type + file type(file or dir) + +.P +.TP +.B nfsd.rename +Fires when clients rename a file on server side + +.B Arguments: + +.I fh + file handler of old path + +.I tfh + file handler of new path + +.I filename + old file name + +.I tname + new file name + +.I flen + length of old file name + +.I tlen + length of new file name + +.P +.TP +.B nfsd.close + +Fires whenever server closes file + +.B Arguments: + +.I filename + file name + +.P +.TP +.B nfsd.dispatch + +Fires whenever server receives NFS operation from client + +.B Arguments: + +.I client_ip + the ip address of client + +.I proto + transfer protocol + +.I version + nfs version + +.I xid + transmission id + +.I prog + program number + +.I proc + procedure number + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (3stap), + diff --git a/man/stapprobes.nfsd.5.in b/man/stapprobes.nfsd.5.in deleted file mode 100644 index 8d30b38b..00000000 --- a/man/stapprobes.nfsd.5.in +++ /dev/null @@ -1,513 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES.NFSD 5 @DATE@ "IBM" -.SH NAME -stapprobes.nfsd \- systemtap NFS server side probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION - -This family of probe points is used to probe NFS activities on -server side. Because there is only one function, i.e., nfsd4_proc_compound -in proc level for NFSv4, all the following nfsd.proc probe points except -nfsd.proc.compound are only for NFSv2 and NFSv3. - -It contains the following probe points: - -.P -.TP -.B nfsd.proc.lookup - -Fires whenever client opens/searchs file on server - -.B Arguments: - -.I client_ip - the ip address of client - -.I proto - transfer protocol - -.I version - nfs version - -.I fh - the pointer to file handler of parent dir - -.I filename - file name - -.I filelen - the length of file name - -.P -.TP -.B nfsd.proc.read - -Fires whenever client reads file on server - -.B Arguments: - -.I client_ip - the ip address of client - -.I proto - transfer protocol - -.I version - nfs version - -.I fh - the pointer to file handler of file - -.I count,size - number of bytes to be read - -.I offset - the offset of file - -.I vec - struct kvec ,includes buf address in kernel address - and the length of each buffer - -.I vlen - number of blocks to be read - -.P -.TP -.B nfsd.proc.write - -Fires whenever client writes data to file on server - -.B Arguments: - -.I client_ip - the ip address of client - -.I proto - transfer protocol - -.I version - nfs version - -.I fh - the pointer to file handler of file - -.I count,size - number of bytes to written - -.I offset - the offset of file - -.I vec - struct kvec ,includes buf address in kernel address - and the length of each buffer - -.I vlen - number of blocks to written - -.I stable - argp\->stable(only for nfs.proc3.write) - -.P -.TP -.B nfsd.proc.commit - -Fires whenever client does a commit operation - -.B Arguments: - -.I client_ip - the ip address of client - -.I proto - transfer protocol - -.I version - nfs version - -.I fh - the pointer to file handler of file - -.I count,size - number of bytes to written - -.I offset - the offset of file - -.P -.TP -.B nfsd.proc.create - -Fires whenever client creates a file on server - -.B Arguments: - -.I client_ip - the ip address of client - -.I proto - transfer protocol - -.I version - nfs version - -.I fh - the pointer to file handler of parent dir - -.I filename - file name - -.I filelen - the length of file name - -.P -.TP -.B nfsd.proc.remove - -Fires whenever client removes a file on server - -.B Arguments: - -.I client_ip - the ip address of client - -.I proto - transfer protocol - -.I version - nfs version - -.I fh - the pointer to file handler of file - -.I filename - file name - -.I filelen - the length of file name - -.P -.TP -.B nfsd.proc.rename - -Fires whenever client renames a file on server - -.B Arguments: - -.I client_ip - the ip address of client - -.I proto - transfer protocol - -.I version - nfs version - -.I fh - the pointer to file handler of old path - -.I tfh - the pointer to file handler of new path - -.I filename - old file name - -.I tname - new file name - -.I filelen - the length of old file name - -.I tlen - the length of new file name - -.P -.TP -.B nfsd.proc.compound - -Fires whenever server receives a NFSV4 operation from client - -.B Arguments: - -.I client_ip - the ip address of client - -.I proto - transfer protocol - -.I version - nfs version - -.I num - number of file operation - -.I op - head of operation list - -.P -.TP -.B nfsd.open - -Fires whenever server opens file - -.B Arguments: - -.I fh - file handle (the first part is the length of the file handle) - -.I access - type of open (read/write/commit/readdir...) - -.I type - type of file(regular file or dir) - -.P -.TP -.B nfsd.read - -Fires whenever server reads file - -.B Arguments: - -.I fh - file handle (the first part is the length of the file handle) - -.I file - argument :file, indicates if the file has been opened. - -.I count,size - number of bytes to be read - -.I offset - the offset of file - -.I vec - struct kvec ,includes buf address in kernel address - and the length of each buffer - -.I vlen - number of blocks to be read - -.P -.TP -.B nfsd.write - -Fires whenever server writes file - -.B Arguments: - -.I fh - file handle (the first part is the length of the file handle) - -.I file - argument :file, indicates if the file has been opened. - -.I count,size - number of bytes to be read - -.I offset - the offset of file - -.I vec - struct kvec ,includes buf address in kernel address - and the length of each buffer - -.I vlen - number of blocks to be written - -.P -.TP -.B nfsd.commit - -Fires when server commits all pending writes to stable storage - -.B Arguments: - -.I fh - file handle (the first part is the length of the file handle) - -.I count,size - number of bytes to be read - -.I offset - the offset of file - -.P -.TP -.B nfsd.lookup - -Fires whenever client opens/searchs file on server - -.B Arguments: - -.I fh - file handle (the first part is the length of the file handle) - -.I filename - file name - -.I filelen - the length of file name - -.P -.TP -.B nfsd.create - - Fires when client creates a file(regular,dir,device,fifo) on - server side, sometimes nfsd will call nfsd_create_v3 instead - of this function - -.B Arguments: - -.I fh - file handle (the first part is the length of the file handle) - -.I filename - file name - -.I filelen - the length of file name - -.I type - file type(regular,dir,device,fifo ...) - -.I iap_valid - Attribute flags - -.I iap_mode - file access mod - -.P -.TP -.B nfsd.createv3 - -Fires when client creates a regular file or set file attributes -on server side,only called by nfsd3_proc_create and nfsd4_open -(op_claim_type is NFS4_OPEN_CLAIM_NULL) - -.B Arguments: - -.I fh - file handle (the first part is the length of the file handle) - -.I filename - file name - -.I filelen - the length of file name - -.I iap_valid - Attribute flags - -.I iap_mode - file access mode - -.I createmode - create mode .The possible values could be: - NFS3_CREATE_EXCLUSIVE,NFS3_CREATE_UNCHECKED,NFS3_CREATE_GUARDED - -.I truncp - trunp arguments, indicates if the file shouldbe truncate - -.I verfier - file attributes (atime,mtime,mode).It's used to reset file - attributes for CREATE_EXCLUSIVE - -.P -.TP -.B nfsd.unlink - -Fires when client removes a file or a dir on server side, - -.B Arguments: - -.I fh - file handle (the first part is the length of the file handle) - -.I filename - file name - -.I filelen - the length of file name - -.I type - file type(file or dir) - -.P -.TP -.B nfsd.rename -Fires when clients rename a file on server side - -.B Arguments: - -.I fh - file handler of old path - -.I tfh - file handler of new path - -.I filename - old file name - -.I tname - new file name - -.I flen - length of old file name - -.I tlen - length of new file name - -.P -.TP -.B nfsd.close - -Fires whenever server closes file - -.B Arguments: - -.I filename - file name - -.P -.TP -.B nfsd.dispatch - -Fires whenever server receives NFS operation from client - -.B Arguments: - -.I client_ip - the ip address of client - -.I proto - transfer protocol - -.I version - nfs version - -.I xid - transmission id - -.I prog - program number - -.I proc - procedure number - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes (5), - diff --git a/man/stapprobes.pagefault.3stap.in b/man/stapprobes.pagefault.3stap.in new file mode 100644 index 00000000..b1c53a19 --- /dev/null +++ b/man/stapprobes.pagefault.3stap.in @@ -0,0 +1,40 @@ +.\" -*- nroff -*- +.TH STAPPROBES.PAGEFAULT 3stap @DATE@ "IBM" +.SH NAME +stapprobes.pagefault \- systemtap pagefault probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of probe points is used to probe page fault events. +It contains the following probe points: + +.P +.TP +.B vm.pagefault +Fires when there is a pagefault + +.B Arguments: + +.I address + The address caused this page fault. + +.I write_access + 1 means this is a write access and 0 means this is a read access + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (3stap), + diff --git a/man/stapprobes.pagefault.5.in b/man/stapprobes.pagefault.5.in deleted file mode 100644 index ea93f325..00000000 --- a/man/stapprobes.pagefault.5.in +++ /dev/null @@ -1,40 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES.PAGEFAULT 5 @DATE@ "IBM" -.SH NAME -stapprobes.pagefault \- systemtap pagefault probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION - -This family of probe points is used to probe page fault events. -It contains the following probe points: - -.P -.TP -.B vm.pagefault -Fires when there is a pagefault - -.B Arguments: - -.I address - The address caused this page fault. - -.I write_access - 1 means this is a write access and 0 means this is a read access - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes (5), - diff --git a/man/stapprobes.process.3stap.in b/man/stapprobes.process.3stap.in new file mode 100644 index 00000000..3b5e751d --- /dev/null +++ b/man/stapprobes.process.3stap.in @@ -0,0 +1,106 @@ +.\" -*- nroff -*- +.TH STAPPROBES.PROCESS 3stap @DATE@ "Intel, IBM" +.SH NAME +stapprobes.process \- systemtap process probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of probe points is used to probe the process activities. +It contains the following probe points: + +.P +.TP +.B process.create + +Fires whenever a new process is successfully created, either as a +result of one of the fork syscall variants, or a new kernel thread. + +.B Arguments: + +.I task + a handle to the newly created process + +.I new_pid + pid of the newly created process + +.P +.TP +.B process.start + +Fires immediately before a new process begins execution. + +.B Arguments: + +.I N/A + +.P +.TP +.B process.exec + +Fires whenever a process attempts to exec to a new program + +.B Arguments: + +.I filename + the path to the new executable + +.P +.TP +.B process.exec_complete + +Fires at the completion of an exec call + +.B Arguments: + +.I errno + the error number resulting from the exec + +.I success + a boolean indicating whether the exec was successful + +.P +.TP +.B process.exit + +Fires when a process terminates. This will always be followed by a +process.release, though the latter may be delayed if the process +waits in a zombie state. + +.B Arguments: + +.I code + the exit code of the process + +.P +.TP +.B process.release + +Fires when a process is released from the kernel. This always +follows a process.exit, though it may be delayed somewhat if the +process waits in a zombie state. + +.B Arguments: + +.I task + a task handle to the process being released + +.I pid + pid of the process being released + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (3stap), + diff --git a/man/stapprobes.process.5.in b/man/stapprobes.process.5.in deleted file mode 100644 index b725a907..00000000 --- a/man/stapprobes.process.5.in +++ /dev/null @@ -1,106 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES.PROCESS 5 @DATE@ "Intel, IBM" -.SH NAME -stapprobes.process \- systemtap process probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION - -This family of probe points is used to probe the process activities. -It contains the following probe points: - -.P -.TP -.B process.create - -Fires whenever a new process is successfully created, either as a -result of one of the fork syscall variants, or a new kernel thread. - -.B Arguments: - -.I task - a handle to the newly created process - -.I new_pid - pid of the newly created process - -.P -.TP -.B process.start - -Fires immediately before a new process begins execution. - -.B Arguments: - -.I N/A - -.P -.TP -.B process.exec - -Fires whenever a process attempts to exec to a new program - -.B Arguments: - -.I filename - the path to the new executable - -.P -.TP -.B process.exec_complete - -Fires at the completion of an exec call - -.B Arguments: - -.I errno - the error number resulting from the exec - -.I success - a boolean indicating whether the exec was successful - -.P -.TP -.B process.exit - -Fires when a process terminates. This will always be followed by a -process.release, though the latter may be delayed if the process -waits in a zombie state. - -.B Arguments: - -.I code - the exit code of the process - -.P -.TP -.B process.release - -Fires when a process is released from the kernel. This always -follows a process.exit, though it may be delayed somewhat if the -process waits in a zombie state. - -.B Arguments: - -.I task - a task handle to the process being released - -.I pid - pid of the process being released - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes (5), - diff --git a/man/stapprobes.rpc.3stap.in b/man/stapprobes.rpc.3stap.in new file mode 100644 index 00000000..a2622fe5 --- /dev/null +++ b/man/stapprobes.rpc.3stap.in @@ -0,0 +1,583 @@ +.\" -*- nroff -*- +.TH STAPPROBES.RPC 3stap @DATE@ "IBM" +.SH NAME +stapprobes.rpc \- systemtap SunRPC probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of probe points is used to probe the SUNRPC activities, +including the client, the server and the sunrpc scheduler. + +It contains the following probe points: + +.P +.TP +.B sunrpc.clnt.create_client +Fires when an RPC client is to be created + +.B Arguments: + +.I servername + The name of the server machine + +.I progname + The name of the RPC program + +.I prog + The number of the RPC program + +.I vers + The version number of the RPC program + +.I prot + The number of the IP protocol + +.I authflavor + The authentication flavor + +.P +.TP +.B sunrpc.clnt.clone_client +Fires when an RPC client structure is to be cloned + +.B Arguments: + +.I servername + The name of the server machine + +.I progname + The name of the RPC program + +.I prog + The number of the RPC program + +.I vers + The version number of the RPC program + +.I prot + The number of the IP protocol + +.I authflavor + The authentication flavor + +.P +.TP +.B sunrpc.clnt.shutdown_client +Fires when an RPC client is to be shut down + +.B Arguments + +.I servername + The name of the server machine + +.I progname + The name of the RPC program + +.I prog + The number of the RPC program + +.I vers + The version number of the RPC program + +.I prot + The number of the IP protocol + +.I authflavor + The authentication flavor + +.I clones + The number of clones + +.I tasks + The number of references + +.I netreconn + The count of reconnections + +.I rpccnt + The count of RPC calls + +.I om_ops + The count of operations + +.I om_ntrans + The count of RPC transmissions + +.I om_bytes_sent + The count of bytes out + +.I om_bytes_recv + The count of bytes in + +.I om_queue + The jiffies queued for transmission + +.I om_rtt + The RPC RTT jiffies + +.I om_execution + The RPC execution jiffies + +.P +.TP +.B sunrpc.clnt.bind_new_program +Fires when a new RPC program is to be bound an existing client + +.B Arguments + +.I servername + The name of the server machine + +.I old_progname + The name of old RPC program + +.I old_prog + The number of old RPC program + +.I old_vers + The version of old RPC program + +.I progname + The name of new RPC program + +.I prog + The number of new RPC program + +.I vers + The version of new RPC program + +.P +.TP +.B sunrpc.clnt.call_sync +Fires when an RPC procedure is to be called synchronously + +.B Arguments + +.I servername + The name of the server machine + +.I progname + The name of the RPC program + +.I prog + The number of the RPC program + +.I vers + The version number of the RPC program + +.I prot + The number of the IP protocol + +.I port + The port number + +.I xid + Current transmission id + +.I dead + Whether this client is abandoned + +.I procname + The procedure name in this RPC call + +.I proc + The procedure number in this RPC call + +.I flags + The flags of this RPC call + +.P +.TP +.B sunrpc.clnt.call_async +Fires when an RPC procedure is to be called asynchronously + +.B Arguments + +.I servername + The name of the server machine + +.I progname + The name of the RPC program + +.I prog + The number of the RPC program + +.I vers + The version number of the RPC program + +.I prot + The number of the IP protocol + +.I port + The port number + +.I xid + Current transmission id + +.I dead + Whether this client is abandoned + +.I procname + The procedure name in this RPC call + +.I proc + The procedure number in this RPC call + +.I flags + The flags of this RPC call + +.P +.TP +.B sunrpc.clnt.restart_call +Fires when an (async) RPC client is to be restarted + +.B Arguments + +.I servername + The name of the server machine + +.I prog + The number of the RPC program + +.I xid + The transmission id + +.I tk_pid + The debugging aid of this task + +.I tk_flags + The task flags + +.I tk_priority + The task priority + +.I tk_runstate + The task run status + +.P +.TP +.B sunrpc.svc.register +Fires when an RPC service is to be registered with the local portmapper. +If proto and port == 0, it means to unregister a service. + +.B Arguments + +.I sv_name + The name of the service + +.I progname + The name of the RPC program + +.I prog + The number of the RPC program + +.I prot + The number of the IP protocol + +.I port + The port number + +.P +.TP +.B sunrpc.svc.create +Fires when an RPC service is to be created + +.B Arguments + +.I progname + The name of the RPC program + +.I prog + The number of the RPC program + +.I pg_nvers + The total of the supported versions + +.I bufsize + The buffer size + +.P +.TP +.B sunrpc.svc.destroy +Fires when an RPC client is to be destroyed + +.B Arguments + +.I sv_name + The service name + +.I sv_progname + The name of the program + +.I sv_prog + The number of the program + +.I sv_nrthreads + The number of concurrent threads + +.I netcnt + The count of received RPC requests + +.I nettcpconn + The count of accepted TCP connections + +.I rpccnt + The count of valid RPC requests + +.I rpcbadfmt + The count of requests dropped for bad formats + +.I rpcbadauth + The count of requests drooped for authentication failure + +.P +.TP +.B sunrpc.svc.process +Fires when an RPC client is to be processed + +.B Arguments + +.I sv_name + The service name + +.I sv_prog + The number of the program + +.I sv_nrthreads + The number of concurrent threads + +.I peer_ip + The peer address where the request is from + +.I rq_xid + The transmission id in the request + +.I rq_prog + The program number in the request + +.I rq_vers + The program version in the request + +.I rq_proc + The procedure number in the request + +.I rq_prot + The IP protocol of the reqeust + +.P +.TP +.B sunrpc.svc.authorise +Fires when an RPC client is to be authorised + +.B Arguments + +.I sv_name + The service name + +.I peer_ip + The peer address where the request is from + +.I rq_xid + The transmission id in the request + +.I rq_prog + The program number in the request + +.I rq_vers + The program version in the request + +.I rq_proc + The procedure number in the request + +.I rq_prot + The IP protocol of the reqeust + +.P +.TP +.B sunrpc.svc.recv +Fires when the server is to receive the next request on any socket + +.B Arguments + +.I sv_name + The service name + +.I sv_prog + The number of the program + +.I sv_nrthreads + The number of concurrent threads + +.I timeout + The timeout of waiting for data + +.P +.TP +.B sunrpc.svc.send +Fires when want to return reply to client + +.B Arguments + +.I sv_name + The service name + +.I peer_ip + The peer address where the request is from + +.I rq_xid + The transmission id in the request + +.I rq_prog + The program number in the request + +.I rq_vers + The program version in the request + +.I rq_proc + The procedure number in the request + +.I rq_prot + The IP protocol of the reqeust + +.P +.TP +.B sunrpc.svc.drop +Fires when a request is to be dropped + +.B Arguments + +.I sv_name + The service name + +.I peer_ip + The peer address where the request is from + +.I rq_xid + The transmission id in the request + +.I rq_prog + The program number in the request + +.I rq_vers + The program version in the request + +.I rq_proc + The procedure number in the request + +.I rq_prot + The IP protocol of the reqeust + +.P +.TP +.B sunrpc.sched.new_task +Fires when a new task is to be created for the specified client + +.B Arguments +.I xid + The transmission id in the RPC call + +.I prog + The program number in the RPC call + +.I vers + The program version in the RPC call + +.I prot + The IP protocol in the RPC call + +.I tk_flags + The flags of the task + +.P +.TP +.B sunrpc.sched.release_task +Fires when all resources associated with a task are to be released + +.B Arguments + +.I xid + The transmission id in the RPC call + +.I prog + The program number in the RPC call + +.I vers + The program version in the RPC call + +.I prot + The IP protocol in the RPC call + +.I tk_flags + The flags of the task + +.P +.TP +.B sunrpc.sched.execute +Fires when the RPC `scheduler'(or rather, the finite state machine) +is to be executed + +.B Arguments + +.I xid + The transmission id in the RPC call + +.I prog + The program number in the RPC call + +.I vers + The program version in the RPC call + +.I prot + The IP protocol in the RPC call + +.I tk_pid + The debugging id of the task + +.I tk_flags + The flags of the task + +.P +.TP +.B sunrpc.sched.delay +Fires when a task is to be delayed + +.B Arguments + +.I xid + The transmission id in the RPC call + +.I prog + The program number in the RPC call + +.I vers + The program version in the RPC call + +.I prot + The IP protocol in the RPC call + +.I tk_pid + The debugging id of the task + +.I tk_flags + The flags of the task + +.I delay + The time delayed + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (3stap), + diff --git a/man/stapprobes.rpc.5.in b/man/stapprobes.rpc.5.in deleted file mode 100644 index 7f411de6..00000000 --- a/man/stapprobes.rpc.5.in +++ /dev/null @@ -1,583 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES.RPC 5 @DATE@ "IBM" -.SH NAME -stapprobes.rpc \- systemtap SunRPC probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION - -This family of probe points is used to probe the SUNRPC activities, -including the client, the server and the sunrpc scheduler. - -It contains the following probe points: - -.P -.TP -.B sunrpc.clnt.create_client -Fires when an RPC client is to be created - -.B Arguments: - -.I servername - The name of the server machine - -.I progname - The name of the RPC program - -.I prog - The number of the RPC program - -.I vers - The version number of the RPC program - -.I prot - The number of the IP protocol - -.I authflavor - The authentication flavor - -.P -.TP -.B sunrpc.clnt.clone_client -Fires when an RPC client structure is to be cloned - -.B Arguments: - -.I servername - The name of the server machine - -.I progname - The name of the RPC program - -.I prog - The number of the RPC program - -.I vers - The version number of the RPC program - -.I prot - The number of the IP protocol - -.I authflavor - The authentication flavor - -.P -.TP -.B sunrpc.clnt.shutdown_client -Fires when an RPC client is to be shut down - -.B Arguments - -.I servername - The name of the server machine - -.I progname - The name of the RPC program - -.I prog - The number of the RPC program - -.I vers - The version number of the RPC program - -.I prot - The number of the IP protocol - -.I authflavor - The authentication flavor - -.I clones - The number of clones - -.I tasks - The number of references - -.I netreconn - The count of reconnections - -.I rpccnt - The count of RPC calls - -.I om_ops - The count of operations - -.I om_ntrans - The count of RPC transmissions - -.I om_bytes_sent - The count of bytes out - -.I om_bytes_recv - The count of bytes in - -.I om_queue - The jiffies queued for transmission - -.I om_rtt - The RPC RTT jiffies - -.I om_execution - The RPC execution jiffies - -.P -.TP -.B sunrpc.clnt.bind_new_program -Fires when a new RPC program is to be bound an existing client - -.B Arguments - -.I servername - The name of the server machine - -.I old_progname - The name of old RPC program - -.I old_prog - The number of old RPC program - -.I old_vers - The version of old RPC program - -.I progname - The name of new RPC program - -.I prog - The number of new RPC program - -.I vers - The version of new RPC program - -.P -.TP -.B sunrpc.clnt.call_sync -Fires when an RPC procedure is to be called synchronously - -.B Arguments - -.I servername - The name of the server machine - -.I progname - The name of the RPC program - -.I prog - The number of the RPC program - -.I vers - The version number of the RPC program - -.I prot - The number of the IP protocol - -.I port - The port number - -.I xid - Current transmission id - -.I dead - Whether this client is abandoned - -.I procname - The procedure name in this RPC call - -.I proc - The procedure number in this RPC call - -.I flags - The flags of this RPC call - -.P -.TP -.B sunrpc.clnt.call_async -Fires when an RPC procedure is to be called asynchronously - -.B Arguments - -.I servername - The name of the server machine - -.I progname - The name of the RPC program - -.I prog - The number of the RPC program - -.I vers - The version number of the RPC program - -.I prot - The number of the IP protocol - -.I port - The port number - -.I xid - Current transmission id - -.I dead - Whether this client is abandoned - -.I procname - The procedure name in this RPC call - -.I proc - The procedure number in this RPC call - -.I flags - The flags of this RPC call - -.P -.TP -.B sunrpc.clnt.restart_call -Fires when an (async) RPC client is to be restarted - -.B Arguments - -.I servername - The name of the server machine - -.I prog - The number of the RPC program - -.I xid - The transmission id - -.I tk_pid - The debugging aid of this task - -.I tk_flags - The task flags - -.I tk_priority - The task priority - -.I tk_runstate - The task run status - -.P -.TP -.B sunrpc.svc.register -Fires when an RPC service is to be registered with the local portmapper. -If proto and port == 0, it means to unregister a service. - -.B Arguments - -.I sv_name - The name of the service - -.I progname - The name of the RPC program - -.I prog - The number of the RPC program - -.I prot - The number of the IP protocol - -.I port - The port number - -.P -.TP -.B sunrpc.svc.create -Fires when an RPC service is to be created - -.B Arguments - -.I progname - The name of the RPC program - -.I prog - The number of the RPC program - -.I pg_nvers - The total of the supported versions - -.I bufsize - The buffer size - -.P -.TP -.B sunrpc.svc.destroy -Fires when an RPC client is to be destroyed - -.B Arguments - -.I sv_name - The service name - -.I sv_progname - The name of the program - -.I sv_prog - The number of the program - -.I sv_nrthreads - The number of concurrent threads - -.I netcnt - The count of received RPC requests - -.I nettcpconn - The count of accepted TCP connections - -.I rpccnt - The count of valid RPC requests - -.I rpcbadfmt - The count of requests dropped for bad formats - -.I rpcbadauth - The count of requests drooped for authentication failure - -.P -.TP -.B sunrpc.svc.process -Fires when an RPC client is to be processed - -.B Arguments - -.I sv_name - The service name - -.I sv_prog - The number of the program - -.I sv_nrthreads - The number of concurrent threads - -.I peer_ip - The peer address where the request is from - -.I rq_xid - The transmission id in the request - -.I rq_prog - The program number in the request - -.I rq_vers - The program version in the request - -.I rq_proc - The procedure number in the request - -.I rq_prot - The IP protocol of the reqeust - -.P -.TP -.B sunrpc.svc.authorise -Fires when an RPC client is to be authorised - -.B Arguments - -.I sv_name - The service name - -.I peer_ip - The peer address where the request is from - -.I rq_xid - The transmission id in the request - -.I rq_prog - The program number in the request - -.I rq_vers - The program version in the request - -.I rq_proc - The procedure number in the request - -.I rq_prot - The IP protocol of the reqeust - -.P -.TP -.B sunrpc.svc.recv -Fires when the server is to receive the next request on any socket - -.B Arguments - -.I sv_name - The service name - -.I sv_prog - The number of the program - -.I sv_nrthreads - The number of concurrent threads - -.I timeout - The timeout of waiting for data - -.P -.TP -.B sunrpc.svc.send -Fires when want to return reply to client - -.B Arguments - -.I sv_name - The service name - -.I peer_ip - The peer address where the request is from - -.I rq_xid - The transmission id in the request - -.I rq_prog - The program number in the request - -.I rq_vers - The program version in the request - -.I rq_proc - The procedure number in the request - -.I rq_prot - The IP protocol of the reqeust - -.P -.TP -.B sunrpc.svc.drop -Fires when a request is to be dropped - -.B Arguments - -.I sv_name - The service name - -.I peer_ip - The peer address where the request is from - -.I rq_xid - The transmission id in the request - -.I rq_prog - The program number in the request - -.I rq_vers - The program version in the request - -.I rq_proc - The procedure number in the request - -.I rq_prot - The IP protocol of the reqeust - -.P -.TP -.B sunrpc.sched.new_task -Fires when a new task is to be created for the specified client - -.B Arguments -.I xid - The transmission id in the RPC call - -.I prog - The program number in the RPC call - -.I vers - The program version in the RPC call - -.I prot - The IP protocol in the RPC call - -.I tk_flags - The flags of the task - -.P -.TP -.B sunrpc.sched.release_task -Fires when all resources associated with a task are to be released - -.B Arguments - -.I xid - The transmission id in the RPC call - -.I prog - The program number in the RPC call - -.I vers - The program version in the RPC call - -.I prot - The IP protocol in the RPC call - -.I tk_flags - The flags of the task - -.P -.TP -.B sunrpc.sched.execute -Fires when the RPC `scheduler'(or rather, the finite state machine) -is to be executed - -.B Arguments - -.I xid - The transmission id in the RPC call - -.I prog - The program number in the RPC call - -.I vers - The program version in the RPC call - -.I prot - The IP protocol in the RPC call - -.I tk_pid - The debugging id of the task - -.I tk_flags - The flags of the task - -.P -.TP -.B sunrpc.sched.delay -Fires when a task is to be delayed - -.B Arguments - -.I xid - The transmission id in the RPC call - -.I prog - The program number in the RPC call - -.I vers - The program version in the RPC call - -.I prot - The IP protocol in the RPC call - -.I tk_pid - The debugging id of the task - -.I tk_flags - The flags of the task - -.I delay - The time delayed - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes (5), - diff --git a/man/stapprobes.scsi.3stap.in b/man/stapprobes.scsi.3stap.in new file mode 100644 index 00000000..b595105a --- /dev/null +++ b/man/stapprobes.scsi.3stap.in @@ -0,0 +1,151 @@ +.\" -*- nroff -*- +.TH STAPPROBES.SCSI 3stap @DATE@ "IBM" +.SH NAME +stapprobes.scsi \- systemtap scsi probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of probe points is used to probe the SCSI activities. +It contains the following probe points: + +.P +.TP +.B scsi.ioentry +Fires when SCSI mid layer prepares a SCSI request + +.B Arguments: + +.I disk_major + The major number of the disk + +.I disk_minor + The minor number of the disk + +.I device_state + The current state of the device. The possible values could be: + + SDEV_CREATED = 1, /* device created but not added to sysfs + * Only internal commands allowed (for inq) */ + SDEV_RUNNING = 2, /* device properly configured + * All commands allowed */ + SDEV_CANCEL = 3, /* beginning to delete device + * Only error handler commands allowed */ + SDEV_DEL = 4, /* device deleted + * no commands allowed */ + SDEV_QUIESCE = 5, /* Device quiescent. No block commands + * will be accepted, only specials (which + * originate in the mid-layer) */ + SDEV_OFFLINE = 6, /* Device offlined (by error handling or + * user request */ + SDEV_BLOCK = 7, /* Device blocked by scsi lld. No scsi + * commands from user or midlayer should be issued + * to the scsi lld. */ + +.P +.TP +.B scsi.iodispatching +Fires when the SCSI mid layer dispatches a SCSI command to the low level driver + +.B Arguments: + +.I host_no + The host number + +.I channel + The channel number + +.I lun + The lun number + +.I dev_id + The scsi device id + +.I device_state + The current state of the device. + +.I data_direction + The data_direction specifies whether this command is from/to the device. + The possible values could be: + + DMA_BIDIRECTIONAL = 0, + DMA_TO_DEVICE = 1, + DMA_FROM_DEVICE = 2, + DMA_NONE = 3, + +.I request_buffer + The request buffer address + +.I req_bufflen + The request buffer length + +.P +.TP +.B scsi.iodone +Fires when a SCSI command is done by low level driver and enqueued into the done queue. + +.B Arguments: + +.I host_no + The host number + +.I channel + The channel number + +.I lun + The lun number + +.I dev_id + The scsi device id + +.I device_state + The current state of the device + +.I data_direction + The data_direction specifies whether this command is from/to the device. + +.P +.TP +.B scsi.iocompleted +Fires when SCSI mid layer runs the completion processing for +block device I/O requests + +.B Arguments: + +.I host_no + The host number + +.I channel + The channel number + +.I lun + The lun number + +.I dev_id + The scsi device id + +.I device_state + The current state of the device + +.I data_direction + The data_direction specifies whether this command is from/to the device. + +.I goodbytes + The bytes completed. + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (3stap), + diff --git a/man/stapprobes.scsi.5.in b/man/stapprobes.scsi.5.in deleted file mode 100644 index bbebcc81..00000000 --- a/man/stapprobes.scsi.5.in +++ /dev/null @@ -1,151 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES.SCSI 5 @DATE@ "IBM" -.SH NAME -stapprobes.scsi \- systemtap scsi probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION - -This family of probe points is used to probe the SCSI activities. -It contains the following probe points: - -.P -.TP -.B scsi.ioentry -Fires when SCSI mid layer prepares a SCSI request - -.B Arguments: - -.I disk_major - The major number of the disk - -.I disk_minor - The minor number of the disk - -.I device_state - The current state of the device. The possible values could be: - - SDEV_CREATED = 1, /* device created but not added to sysfs - * Only internal commands allowed (for inq) */ - SDEV_RUNNING = 2, /* device properly configured - * All commands allowed */ - SDEV_CANCEL = 3, /* beginning to delete device - * Only error handler commands allowed */ - SDEV_DEL = 4, /* device deleted - * no commands allowed */ - SDEV_QUIESCE = 5, /* Device quiescent. No block commands - * will be accepted, only specials (which - * originate in the mid-layer) */ - SDEV_OFFLINE = 6, /* Device offlined (by error handling or - * user request */ - SDEV_BLOCK = 7, /* Device blocked by scsi lld. No scsi - * commands from user or midlayer should be issued - * to the scsi lld. */ - -.P -.TP -.B scsi.iodispatching -Fires when the SCSI mid layer dispatches a SCSI command to the low level driver - -.B Arguments: - -.I host_no - The host number - -.I channel - The channel number - -.I lun - The lun number - -.I dev_id - The scsi device id - -.I device_state - The current state of the device. - -.I data_direction - The data_direction specifies whether this command is from/to the device. - The possible values could be: - - DMA_BIDIRECTIONAL = 0, - DMA_TO_DEVICE = 1, - DMA_FROM_DEVICE = 2, - DMA_NONE = 3, - -.I request_buffer - The request buffer address - -.I req_bufflen - The request buffer length - -.P -.TP -.B scsi.iodone -Fires when a SCSI command is done by low level driver and enqueued into the done queue. - -.B Arguments: - -.I host_no - The host number - -.I channel - The channel number - -.I lun - The lun number - -.I dev_id - The scsi device id - -.I device_state - The current state of the device - -.I data_direction - The data_direction specifies whether this command is from/to the device. - -.P -.TP -.B scsi.iocompleted -Fires when SCSI mid layer runs the completion processing for -block device I/O requests - -.B Arguments: - -.I host_no - The host number - -.I channel - The channel number - -.I lun - The lun number - -.I dev_id - The scsi device id - -.I device_state - The current state of the device - -.I data_direction - The data_direction specifies whether this command is from/to the device. - -.I goodbytes - The bytes completed. - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes (5), - diff --git a/man/stapprobes.signal.3stap.in b/man/stapprobes.signal.3stap.in new file mode 100644 index 00000000..f42a7781 --- /dev/null +++ b/man/stapprobes.signal.3stap.in @@ -0,0 +1,509 @@ +.\" -*- nroff -*- +.TH STAPPROBES.SIGNAL 3stap @DATE@ "IBM" +.SH NAME +stapprobes.signal \- systemtap signal probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of probe points is used to probe signal activities. +It contains the following probe points: + +.P +.TP +.B signal.send + +Fires when a signal is sent to a process + +.B Arguments: + +.I sig + signal number + +.I sig_name + a string representation of the signal + +.I sig_pid + pid of the signal recipient process + +.I pid_name + name of the signal recipient process + +.I si_code + indicates the signal type + +.I task + a task handle to the signal recipient + +.I sinfo + the address of siginfo struct + +.I shared + indicates whether this signal is shared by the thread group + +.I send2queue + indicates whether this signal is sent to an existing sigqueue + +.I name + name of the function used to send out this signal + +.P +.TP +.B signal.send.return + +Fires when return from sending a signal + +.B Arguments: + +.I retstr + the return value + + Return values for "__group_send_sig_info" and "specific_send_sig_info" + +.RS +.RS +- return 0 if the signal is sucessfully sent to a process, +which means the following: + +<1> the signal is ignored by receiving process + +<2> this is a non-RT signal and we already have one queued + +<3> the signal is successfully added into the sigqueue of receiving process + +- return \-EAGAIN if the sigqueue is overflow the signal was RT and sent +by user using something other than kill() +.RE + + Return values for "send_group_sigqueue" + +.RS +- return 0 if the signal is either sucessfully added into the +sigqueue of receiving process or a SI_TIMER entry is already +queued so just increment the overrun count + +- return 1 if this signal is ignored by receiving process +.RE + + Return values for "send_sigqueue" + +.RS +- return 0 if the signal is either sucessfully added into the +sigqueue of receiving process or a SI_TIMER entry is already +queued so just increment the overrun count + +- return 1 if this signal is ignored by receiving process + +- return \-1 if the task is marked exiting, so posix_timer_event +can redirect it to the group leader +.RE + +.I shared + indicates whether this signal is shared by the thread group + +.I send2queue + indicates whether this signal is sent to an existing sigqueue + +.I name + name of the function used to send out this signal + + +.RE +.RE +.P +.TP +.B signal.checkperm + +Fires when check permissions for sending the signal + +.B Arguments: + +.I sig + the number of the signal + +.I sig_name + a string representation of the signal + +.I sig_pid + pid of the signal recipient process + +.I pid_name + name of the signal recipient process + +.I si_code + indicates the signal type + +.I task + a task handle to the signal recipient + +.I sinfo + the address of siginfo struct + +.I name + name of the probe point, is set to "signal.checkperm" + +.P +.TP +.B signal.checkperm.return + +Fires when return from permissions check for sending a signal + +.B Arguments: + +.I retstr + the return value + +.I name + name of the probe point, is set to "signal.checkperm" + +.P +.TP +.B signal.wakeup + +Fires when wake up the process for new active signals + +.B Arguments: + +.I sig_pid + pid of the process to be woke up + +.I pid_name + name of the process to be woke up + +.I resume + indicate whether to wake up a task in STOPPED or TRACED state + +.I state_mask + a string representation indicate the mask of task states +that can be woken. Possible values are +(TASK_INTERRUPTIBLE|TASK_STOPPED|TASK_TRACED) and +TASK_INTERRUPTIBLE. + +.P +.TP +.B signal.check_ignored + +Fires when check whether the signal is ignored or not + +.B Arguments: + +.I sig_pid + pid of the signal recipient process + +.I pid_name + name of the signal recipient process + +.I sig + the signal to be checked + +.I sig_name + name of the signal + +.P +.TP +.B signal.check_ignored.return + +Fires when return from signal.check_ignored + +.B Arguments: + +.I retstr + return value. 0 indicate the current signal isn't ignored. + +.P +.TP +.B signal.force_segv + +Forces SIGSEGV when there are some issues while handling +signals for the process + +.B Arguments: + +.I sig_pid + pid of the signal recipient process + +.I pid_name + name of the signal recipient process + +.I sig + the signal being handled + +.I sig_name + name of this signal + +.P +.TP +.B signal.force_segv.return + +Fires when return from signal.force_segv + +.B Arguments: + +.I retstr + return value. Always return 0 + +.P +.TP +.B signal.syskill + +Fires when sys_kill is called to send a signal to a process. + +.B Arguments: + +.I pid + pid of the recipient process + +.I sig + the signal to be sent + +.P +.TP +.B signal.syskill.return + +Fires when returning from sys_kill + +.P +.TP +.B signal.tgkill + +Fires when sys_tgkill is called to send a signal to one specific thread + +.B Arguments: + +.I pid + pid of the recipient thread + +.I tgid + thread group id which the target thread should have + +.I sig + the signal to be sent + +.P +.TP +.B signal.tgkill.return + +Fires when returning from sys_tgkill + +.P +.TP +.B signal.tkill + +Fires when sys_tkill is called to send a signal to a single process. + +.B Arguments: + +.I pid + pid of the recipient process + +.I sig + the signal to be sent + +.P +.TP +.B signal.tkill.return + +Fires when returning from sys_tkill + +.P +.TP +.B signal.send_sig_queue + +Fires when queue a signal to a process + +.B Arguments: + +.I sig + the signal to be queued + +.I sig_name + name of this signal + +.I sig_pid + pid of the process to which the signal is queued + +.I pid_name + name of the process to which the signal is queued + +.I sigqueue_addr + address of the signal queue + +.P +.TP +.B signal.send_sig_queue.return + +Fires when return from signal.send_sig_queue + +.B Arguments: + +.I retstr + return value + +.P +.TP +.B signal.pending + +Fires when examine the set of signals that are +pending for delivery to the calling thread + +.B Arguments: + +.I sigset_add + address of user space sigset_t + +.I sigset_size + sigset size + +.P +.TP +.B signal.pending.return + +Fires when return from signal.pending + +.B Arguments: + +.I retstr + return value + +.P +.TP +.B signal.handle + +Fires when invoking the signal handler + +.B Arguments: + +.I sig + signal number + +.I sig_name + signal name + +.I sinfo + address of siginfo struct + +.I sig_code + the si_code of siginfo + +.I ka_addr + Address of the k_sigaction struct associated with the signal + +.I oldset_addr + Address of a bit mask array of blocked signals + +.I sig_mode + indicates whether the signal is a User Mode or Kernel mode Signal + +.P +.TP +.B signal.handle.return + +Fires when return from signal.handle + +.B Arguments: + +.I retstr + return value of handle_signal() + +.P +.TP +.B signal.do_action + +Fires by calling thread to examine and change a signal action + +.B Arguments: + +.I sig + signal number + +.I sigact_addr + address of the new sigaction struct associated with the signal + +.I oldsigact_addr + address of a previous sigaction struct associated with the signal + +.I sa_handler + the new handler of the signal + +.I sa_mask + the new mask of the signal + +.P +.TP +.B signal.do_action.return + +Fires when return from signal.do_action + +.B Arguments: + +.I retstr + return value of do_sigaction() + +.P +.TP +.B signal.procmask + +Fires by calling thread to examine and change blocked signals + +.B Arguments: + +.I how + indicates how to change the blocked signals. + Possible values are: + SIG_BLOCK=0 for blocking signals + SIG_UNBLOCK=1 for unblocking signals + SIG_SETMASK=2 for setting the signal mask + +.I sigset_addr + address of sigset_t to be set + +.I oldsigset_addr + address of the old sigset_t + +.I sigset + the actual sigset to be set + +.P +.TP +.B signal.procmask.return + +Fires when return from signal.procmask + +.B Arguments: + +.I retstr + return value of sigprocmask() + +.P +.TP +.B signal.flush + +Fires when flush all pending signals for a task + +.B Arguments: + +.I task + the task handler of the process + +.I sig_pid + pid of the task + +.I pid_name + name of the task + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (3stap), + diff --git a/man/stapprobes.signal.5.in b/man/stapprobes.signal.5.in deleted file mode 100644 index dc669b0c..00000000 --- a/man/stapprobes.signal.5.in +++ /dev/null @@ -1,509 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES.SIGNAL 5 @DATE@ "IBM" -.SH NAME -stapprobes.signal \- systemtap signal probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION - -This family of probe points is used to probe signal activities. -It contains the following probe points: - -.P -.TP -.B signal.send - -Fires when a signal is sent to a process - -.B Arguments: - -.I sig - signal number - -.I sig_name - a string representation of the signal - -.I sig_pid - pid of the signal recipient process - -.I pid_name - name of the signal recipient process - -.I si_code - indicates the signal type - -.I task - a task handle to the signal recipient - -.I sinfo - the address of siginfo struct - -.I shared - indicates whether this signal is shared by the thread group - -.I send2queue - indicates whether this signal is sent to an existing sigqueue - -.I name - name of the function used to send out this signal - -.P -.TP -.B signal.send.return - -Fires when return from sending a signal - -.B Arguments: - -.I retstr - the return value - - Return values for "__group_send_sig_info" and "specific_send_sig_info" - -.RS -.RS -- return 0 if the signal is sucessfully sent to a process, -which means the following: - -<1> the signal is ignored by receiving process - -<2> this is a non-RT signal and we already have one queued - -<3> the signal is successfully added into the sigqueue of receiving process - -- return \-EAGAIN if the sigqueue is overflow the signal was RT and sent -by user using something other than kill() -.RE - - Return values for "send_group_sigqueue" - -.RS -- return 0 if the signal is either sucessfully added into the -sigqueue of receiving process or a SI_TIMER entry is already -queued so just increment the overrun count - -- return 1 if this signal is ignored by receiving process -.RE - - Return values for "send_sigqueue" - -.RS -- return 0 if the signal is either sucessfully added into the -sigqueue of receiving process or a SI_TIMER entry is already -queued so just increment the overrun count - -- return 1 if this signal is ignored by receiving process - -- return \-1 if the task is marked exiting, so posix_timer_event -can redirect it to the group leader -.RE - -.I shared - indicates whether this signal is shared by the thread group - -.I send2queue - indicates whether this signal is sent to an existing sigqueue - -.I name - name of the function used to send out this signal - - -.RE -.RE -.P -.TP -.B signal.checkperm - -Fires when check permissions for sending the signal - -.B Arguments: - -.I sig - the number of the signal - -.I sig_name - a string representation of the signal - -.I sig_pid - pid of the signal recipient process - -.I pid_name - name of the signal recipient process - -.I si_code - indicates the signal type - -.I task - a task handle to the signal recipient - -.I sinfo - the address of siginfo struct - -.I name - name of the probe point, is set to "signal.checkperm" - -.P -.TP -.B signal.checkperm.return - -Fires when return from permissions check for sending a signal - -.B Arguments: - -.I retstr - the return value - -.I name - name of the probe point, is set to "signal.checkperm" - -.P -.TP -.B signal.wakeup - -Fires when wake up the process for new active signals - -.B Arguments: - -.I sig_pid - pid of the process to be woke up - -.I pid_name - name of the process to be woke up - -.I resume - indicate whether to wake up a task in STOPPED or TRACED state - -.I state_mask - a string representation indicate the mask of task states -that can be woken. Possible values are -(TASK_INTERRUPTIBLE|TASK_STOPPED|TASK_TRACED) and -TASK_INTERRUPTIBLE. - -.P -.TP -.B signal.check_ignored - -Fires when check whether the signal is ignored or not - -.B Arguments: - -.I sig_pid - pid of the signal recipient process - -.I pid_name - name of the signal recipient process - -.I sig - the signal to be checked - -.I sig_name - name of the signal - -.P -.TP -.B signal.check_ignored.return - -Fires when return from signal.check_ignored - -.B Arguments: - -.I retstr - return value. 0 indicate the current signal isn't ignored. - -.P -.TP -.B signal.force_segv - -Forces SIGSEGV when there are some issues while handling -signals for the process - -.B Arguments: - -.I sig_pid - pid of the signal recipient process - -.I pid_name - name of the signal recipient process - -.I sig - the signal being handled - -.I sig_name - name of this signal - -.P -.TP -.B signal.force_segv.return - -Fires when return from signal.force_segv - -.B Arguments: - -.I retstr - return value. Always return 0 - -.P -.TP -.B signal.syskill - -Fires when sys_kill is called to send a signal to a process. - -.B Arguments: - -.I pid - pid of the recipient process - -.I sig - the signal to be sent - -.P -.TP -.B signal.syskill.return - -Fires when returning from sys_kill - -.P -.TP -.B signal.tgkill - -Fires when sys_tgkill is called to send a signal to one specific thread - -.B Arguments: - -.I pid - pid of the recipient thread - -.I tgid - thread group id which the target thread should have - -.I sig - the signal to be sent - -.P -.TP -.B signal.tgkill.return - -Fires when returning from sys_tgkill - -.P -.TP -.B signal.tkill - -Fires when sys_tkill is called to send a signal to a single process. - -.B Arguments: - -.I pid - pid of the recipient process - -.I sig - the signal to be sent - -.P -.TP -.B signal.tkill.return - -Fires when returning from sys_tkill - -.P -.TP -.B signal.send_sig_queue - -Fires when queue a signal to a process - -.B Arguments: - -.I sig - the signal to be queued - -.I sig_name - name of this signal - -.I sig_pid - pid of the process to which the signal is queued - -.I pid_name - name of the process to which the signal is queued - -.I sigqueue_addr - address of the signal queue - -.P -.TP -.B signal.send_sig_queue.return - -Fires when return from signal.send_sig_queue - -.B Arguments: - -.I retstr - return value - -.P -.TP -.B signal.pending - -Fires when examine the set of signals that are -pending for delivery to the calling thread - -.B Arguments: - -.I sigset_add - address of user space sigset_t - -.I sigset_size - sigset size - -.P -.TP -.B signal.pending.return - -Fires when return from signal.pending - -.B Arguments: - -.I retstr - return value - -.P -.TP -.B signal.handle - -Fires when invoking the signal handler - -.B Arguments: - -.I sig - signal number - -.I sig_name - signal name - -.I sinfo - address of siginfo struct - -.I sig_code - the si_code of siginfo - -.I ka_addr - Address of the k_sigaction struct associated with the signal - -.I oldset_addr - Address of a bit mask array of blocked signals - -.I sig_mode - indicates whether the signal is a User Mode or Kernel mode Signal - -.P -.TP -.B signal.handle.return - -Fires when return from signal.handle - -.B Arguments: - -.I retstr - return value of handle_signal() - -.P -.TP -.B signal.do_action - -Fires by calling thread to examine and change a signal action - -.B Arguments: - -.I sig - signal number - -.I sigact_addr - address of the new sigaction struct associated with the signal - -.I oldsigact_addr - address of a previous sigaction struct associated with the signal - -.I sa_handler - the new handler of the signal - -.I sa_mask - the new mask of the signal - -.P -.TP -.B signal.do_action.return - -Fires when return from signal.do_action - -.B Arguments: - -.I retstr - return value of do_sigaction() - -.P -.TP -.B signal.procmask - -Fires by calling thread to examine and change blocked signals - -.B Arguments: - -.I how - indicates how to change the blocked signals. - Possible values are: - SIG_BLOCK=0 for blocking signals - SIG_UNBLOCK=1 for unblocking signals - SIG_SETMASK=2 for setting the signal mask - -.I sigset_addr - address of sigset_t to be set - -.I oldsigset_addr - address of the old sigset_t - -.I sigset - the actual sigset to be set - -.P -.TP -.B signal.procmask.return - -Fires when return from signal.procmask - -.B Arguments: - -.I retstr - return value of sigprocmask() - -.P -.TP -.B signal.flush - -Fires when flush all pending signals for a task - -.B Arguments: - -.I task - the task handler of the process - -.I sig_pid - pid of the task - -.I pid_name - name of the task - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes (5), - diff --git a/man/stapprobes.socket.3stap.in b/man/stapprobes.socket.3stap.in new file mode 100644 index 00000000..6124e7b7 --- /dev/null +++ b/man/stapprobes.socket.3stap.in @@ -0,0 +1,485 @@ +.\" -*- nroff -*- +.TH STAPPROBES.SOCKET 3stap @DATE@ "IBM" +.SH NAME +stapprobes.socket \- systemtap socket probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of probe points is used to probe socket activities. +It contains the following probe points: + +.P +.TP +.B socket.send + +Fires at the conclusion of sending a message on a socket. +This probe alias includes the +.B socket.sendmsg.return, +.B socket.aio_write.return +and +.B socket.writev.return +probes (these probes should +catch all messages sent on sockets). The arguments supplied at the beginning +of the send are cached and made available in this probe. + +.B Context: + +The message sender. + +.B Arguments: + +.I name + Name of this probe. + +.I size + Size of message sent (in bytes) or error code if success == 0 + +.I protocol + Protocol used on the socket. Use sock_prot_num2str(protocol) + to convert to a string. + + Common values include: + 0 - IP (Internet Procotol, local interprocess communications) + 6 - TCP (Transmission Control Protocol) + 17 - UDP (User Datagram Protocol) + 132 - SCTP (Stream Control Transmission Protocol) + + Refer to /etc/protocols for a complete list of possible values. + +.I family + Protocol family of the socket (from include/linux/socket.h). + Use sock_fam_num2str(family) to convert to a string. + + Possible values are: + 0 - UNSPEC (Unspecified) + 1 - LOCAL (Unix domain/local sockets) + 2 - INET (Internet Protocol (IP)) + 3 - AX25 (Amateur Radio AX.25) + 4 - IPX (Novell IPX) + 5 - APPLETALK (AppleTalk DDP) + 6 - NETROM (Amateur Radio NET/ROM) + 7 - BRIDGE (Multiprotocol bridge) + 8 - ATMPVC (ATM PVCs) + 9 - X25 (X.25) + 10 - INET6 (IP version 6) + 11 - ROSE (Amateur Radio X.25 PLP) + 12 - DECNET (Reserved for DECnet project) + 13 - NETBEUI (Reserved for 802.2LLC project) + 14 - SECURITY (Security callback pseudo AF) + 15 - KEY (key management API) + 16 - NETLINK (Netlink protocol) + 17 - PACKET (Packet family) + 18 - ASH (Ash) + 19 - ECONET (Acorn Econet) + 20 - ATMSVC (ATM SVCs) + 22 - SNA (Linux SNA Project) + 23 - IRDA (IRDA sockets) + 24 - PPP0X (PPPoX sockets) + 25 - WANPIPE (Wanpipe API Sockets) + 26 - LLC (Linux LLC) + 30 - TIPC (TIPC sockets) + 31 - BLUETOOTH (Bluetooth sockets) + +.I state + State of the socket. Use sock_state_num2str(state) to convert + to a string. + + Possible values are: + 0 - FREE (not allocated) + 1 - UNCONNECTED (unconnected to any socket) + 2 - CONNECTING (in the process of connecting) + 3 - CONNECTED (connected to a socket) + 4 - DISCONNECTING (in the process of disconnecting) + +.I flags + Socket flags. Use sock_flags_num2str(flags) to convert + to a string. + + Possible values are: + 0 - ASYNC_NOSPACE + 1 - ASYNC_WAITDATA + 2 - NOSPACE + 3 - PASSCRED + 4 - PASSSEC + +.I type + Socket type. Use sock_type_num2str(type) to convert + to a string. + + Possible values are: + 1 - STREAM (stream connection socket) + 2 - DGRAM (datagram connectionless socket) + 3 - RAW (raw socket) + 4 - RDM (reliably-deliverd message) + 5 - SEQPACKET (sequential packet socket) + 6 - DCCP (datagram congestion control protocol socket) + 10 - PACKET (Linux-specific way of getting packets at device level) + +.I success + Was send successful? + + Possible values are: + 1 - Yes + 0 - No + +.TP +.B socket.receive + +Fires at the conclusion of receiving a message on a socket. +This probe alias includes the +.B socket.recvmsg.return, +.B socket.aio_read.return +and +.B socket.readv.return +probes (these probes should +catch all messages received on sockets). The arguments supplied at +the beginning of the receive are cached and made available in this probe. + +.B Context: + +The message receiver. + +.B Arguments: + +Same as +.B socket.send. + +.TP +.B socket.sendmsg + +Fires when the sock_sendmsg() kernel function is entered. + +.B Context: + +The message sender. + +.B Arguments: + +Same as +.B socket.send, +with the following exceptions: + +.I size + + Size of message being sent (in bytes). + +.I success + + Not used. + +.TP +.B socket.sendmsg.return + +Fires when the sock_sendmsg() kernel function returns. + +.B Context: + +The message sender. + +.B Arguments: + +Same as +.B socket.send + +.TP +.B socket.recvmsg + +Fires when the sock_recvmsg() kernel function is entered. + +.B Context: + +The message receiver. + +.B Arguments: + +Same as +.B socket.receive, +with the following exceptions: + +.I size + + Size of message being received (in bytes). + +.I success + + Not used. + +.TP +.B socket.recvmsg.return + +Fires when the sock_recvmsg() kernel function returns. + +.B Context: + +The message receiver. + +.B Arguments: + +Same as +.B socket.receive. + + + + + + +.TP +.B socket.aio_write + +Fires when the sock_aio_write() kernel function is entered. + +.B Context: + +The message sender. + +.B Arguments: + +Same as +.B socket.send, +with the following exceptions: + +.I size + + Size of message being sent (in bytes). + +.I success + + Not used. + +.TP +.B socket.aio_write.return + +Fires when the sock_aio_write() kernel function returns. + +.B Context: + +The message sender. + +.B Arguments: + +Same as +.B socket.send. + +.TP +.B socket.aio_read + +Fires when the sock_aio_read() kernel function is entered. + +.B Context: + +The message receiver. + +.B Arguments: + +Same as +.B socket.receive, +with the following exceptions: + +.I size + + Size of message being received (in bytes). + +.I success + + Not used. + +.TP +.B socket.aio_read.return + +Fires when the sock_aio_read() kernel function returns. + +.B Context: + +The message receiver. + +.B Arguments: + +Same as +.B socket.receive. + +.TP +.B socket.writev + +Fires when the sock_writev() kernel function is entered. + +.B Context: + +The message sender. + +.B Arguments: + +Same as +.B socket.send, +with the following exceptions: + +.I size + + Size of message being sent (in bytes). + +.I success + + Not used. + +.TP +.B socket.writev.return + +Fires when the sock_writev() kernel function returns. + +.B Context: + +The message sender. + +.B Arguments: + +Same as +.B socket.send. + +.TP +.B socket.readv + +Fires when the sock_readv() kernel function is entered. + +.B Context: + +The message receiver. + +.B Arguments: + +Same as +.B socket.receive, +with the following exceptions: + +.I size + + Size of message being received (in bytes). + +.I success + + Not used. + +.TP +.B socket.readv.return + +Fires when the sock_readv() kernel function returns. + +.B Context: + +The message receiver. + +.B Arguments: + +Same as +.B socket.receive. + +.TP +.B socket.create + +Fires at the beginning of creating a socket. + +.B Context: + +The socket creator. + +.B Arguments: + +.I name +.br +.I protocol +.br +.I family +.br +.I type + See +.B socket.send. + +.I requester + Requester type. + + Possible values are: + 1 - kernel + 0 - user + +.TP +.B socket.create.return + +Fires at the end of creating a socket. + +.B Context: + +The socket creator. + +.B Arguments: + +Same as +.B socket.create, +plus: + +.I err + Return code. + + Possible values are: + 0 - success + < 0 - error + +.I success + Was the socket created successfully? + + Possible values are: + 1 - Yes + 0 - No +.TP +.B socket.close + +Fires at the beginning of closing a socket. + +.B Context: + +The socket closer. + +.B Arguments: + +.I name +.br +.I protocol +.br +.I family +.br +.I state +.br +.I flags +.br +.I type + See +.B socket.send. + +.TP +.B socket.close.return + +Fires at the end of closing a socket. + +.B Context: + +The socket closer. + +.B Arguments: + +.I name + Name of this probe. + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (3stap), +.IR stapfuncs (3stap) diff --git a/man/stapprobes.socket.5.in b/man/stapprobes.socket.5.in deleted file mode 100644 index 6c939fd2..00000000 --- a/man/stapprobes.socket.5.in +++ /dev/null @@ -1,485 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES.SOCKET 5 @DATE@ "IBM" -.SH NAME -stapprobes.socket \- systemtap socket probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION - -This family of probe points is used to probe socket activities. -It contains the following probe points: - -.P -.TP -.B socket.send - -Fires at the conclusion of sending a message on a socket. -This probe alias includes the -.B socket.sendmsg.return, -.B socket.aio_write.return -and -.B socket.writev.return -probes (these probes should -catch all messages sent on sockets). The arguments supplied at the beginning -of the send are cached and made available in this probe. - -.B Context: - -The message sender. - -.B Arguments: - -.I name - Name of this probe. - -.I size - Size of message sent (in bytes) or error code if success == 0 - -.I protocol - Protocol used on the socket. Use sock_prot_num2str(protocol) - to convert to a string. - - Common values include: - 0 - IP (Internet Procotol, local interprocess communications) - 6 - TCP (Transmission Control Protocol) - 17 - UDP (User Datagram Protocol) - 132 - SCTP (Stream Control Transmission Protocol) - - Refer to /etc/protocols for a complete list of possible values. - -.I family - Protocol family of the socket (from include/linux/socket.h). - Use sock_fam_num2str(family) to convert to a string. - - Possible values are: - 0 - UNSPEC (Unspecified) - 1 - LOCAL (Unix domain/local sockets) - 2 - INET (Internet Protocol (IP)) - 3 - AX25 (Amateur Radio AX.25) - 4 - IPX (Novell IPX) - 5 - APPLETALK (AppleTalk DDP) - 6 - NETROM (Amateur Radio NET/ROM) - 7 - BRIDGE (Multiprotocol bridge) - 8 - ATMPVC (ATM PVCs) - 9 - X25 (X.25) - 10 - INET6 (IP version 6) - 11 - ROSE (Amateur Radio X.25 PLP) - 12 - DECNET (Reserved for DECnet project) - 13 - NETBEUI (Reserved for 802.2LLC project) - 14 - SECURITY (Security callback pseudo AF) - 15 - KEY (key management API) - 16 - NETLINK (Netlink protocol) - 17 - PACKET (Packet family) - 18 - ASH (Ash) - 19 - ECONET (Acorn Econet) - 20 - ATMSVC (ATM SVCs) - 22 - SNA (Linux SNA Project) - 23 - IRDA (IRDA sockets) - 24 - PPP0X (PPPoX sockets) - 25 - WANPIPE (Wanpipe API Sockets) - 26 - LLC (Linux LLC) - 30 - TIPC (TIPC sockets) - 31 - BLUETOOTH (Bluetooth sockets) - -.I state - State of the socket. Use sock_state_num2str(state) to convert - to a string. - - Possible values are: - 0 - FREE (not allocated) - 1 - UNCONNECTED (unconnected to any socket) - 2 - CONNECTING (in the process of connecting) - 3 - CONNECTED (connected to a socket) - 4 - DISCONNECTING (in the process of disconnecting) - -.I flags - Socket flags. Use sock_flags_num2str(flags) to convert - to a string. - - Possible values are: - 0 - ASYNC_NOSPACE - 1 - ASYNC_WAITDATA - 2 - NOSPACE - 3 - PASSCRED - 4 - PASSSEC - -.I type - Socket type. Use sock_type_num2str(type) to convert - to a string. - - Possible values are: - 1 - STREAM (stream connection socket) - 2 - DGRAM (datagram connectionless socket) - 3 - RAW (raw socket) - 4 - RDM (reliably-deliverd message) - 5 - SEQPACKET (sequential packet socket) - 6 - DCCP (datagram congestion control protocol socket) - 10 - PACKET (Linux-specific way of getting packets at device level) - -.I success - Was send successful? - - Possible values are: - 1 - Yes - 0 - No - -.TP -.B socket.receive - -Fires at the conclusion of receiving a message on a socket. -This probe alias includes the -.B socket.recvmsg.return, -.B socket.aio_read.return -and -.B socket.readv.return -probes (these probes should -catch all messages received on sockets). The arguments supplied at -the beginning of the receive are cached and made available in this probe. - -.B Context: - -The message receiver. - -.B Arguments: - -Same as -.B socket.send. - -.TP -.B socket.sendmsg - -Fires when the sock_sendmsg() kernel function is entered. - -.B Context: - -The message sender. - -.B Arguments: - -Same as -.B socket.send, -with the following exceptions: - -.I size - - Size of message being sent (in bytes). - -.I success - - Not used. - -.TP -.B socket.sendmsg.return - -Fires when the sock_sendmsg() kernel function returns. - -.B Context: - -The message sender. - -.B Arguments: - -Same as -.B socket.send - -.TP -.B socket.recvmsg - -Fires when the sock_recvmsg() kernel function is entered. - -.B Context: - -The message receiver. - -.B Arguments: - -Same as -.B socket.receive, -with the following exceptions: - -.I size - - Size of message being received (in bytes). - -.I success - - Not used. - -.TP -.B socket.recvmsg.return - -Fires when the sock_recvmsg() kernel function returns. - -.B Context: - -The message receiver. - -.B Arguments: - -Same as -.B socket.receive. - - - - - - -.TP -.B socket.aio_write - -Fires when the sock_aio_write() kernel function is entered. - -.B Context: - -The message sender. - -.B Arguments: - -Same as -.B socket.send, -with the following exceptions: - -.I size - - Size of message being sent (in bytes). - -.I success - - Not used. - -.TP -.B socket.aio_write.return - -Fires when the sock_aio_write() kernel function returns. - -.B Context: - -The message sender. - -.B Arguments: - -Same as -.B socket.send. - -.TP -.B socket.aio_read - -Fires when the sock_aio_read() kernel function is entered. - -.B Context: - -The message receiver. - -.B Arguments: - -Same as -.B socket.receive, -with the following exceptions: - -.I size - - Size of message being received (in bytes). - -.I success - - Not used. - -.TP -.B socket.aio_read.return - -Fires when the sock_aio_read() kernel function returns. - -.B Context: - -The message receiver. - -.B Arguments: - -Same as -.B socket.receive. - -.TP -.B socket.writev - -Fires when the sock_writev() kernel function is entered. - -.B Context: - -The message sender. - -.B Arguments: - -Same as -.B socket.send, -with the following exceptions: - -.I size - - Size of message being sent (in bytes). - -.I success - - Not used. - -.TP -.B socket.writev.return - -Fires when the sock_writev() kernel function returns. - -.B Context: - -The message sender. - -.B Arguments: - -Same as -.B socket.send. - -.TP -.B socket.readv - -Fires when the sock_readv() kernel function is entered. - -.B Context: - -The message receiver. - -.B Arguments: - -Same as -.B socket.receive, -with the following exceptions: - -.I size - - Size of message being received (in bytes). - -.I success - - Not used. - -.TP -.B socket.readv.return - -Fires when the sock_readv() kernel function returns. - -.B Context: - -The message receiver. - -.B Arguments: - -Same as -.B socket.receive. - -.TP -.B socket.create - -Fires at the beginning of creating a socket. - -.B Context: - -The socket creator. - -.B Arguments: - -.I name -.br -.I protocol -.br -.I family -.br -.I type - See -.B socket.send. - -.I requester - Requester type. - - Possible values are: - 1 - kernel - 0 - user - -.TP -.B socket.create.return - -Fires at the end of creating a socket. - -.B Context: - -The socket creator. - -.B Arguments: - -Same as -.B socket.create, -plus: - -.I err - Return code. - - Possible values are: - 0 - success - < 0 - error - -.I success - Was the socket created successfully? - - Possible values are: - 1 - Yes - 0 - No -.TP -.B socket.close - -Fires at the beginning of closing a socket. - -.B Context: - -The socket closer. - -.B Arguments: - -.I name -.br -.I protocol -.br -.I family -.br -.I state -.br -.I flags -.br -.I type - See -.B socket.send. - -.TP -.B socket.close.return - -Fires at the end of closing a socket. - -.B Context: - -The socket closer. - -.B Arguments: - -.I name - Name of this probe. - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes (5), -.IR stapfuncs (5) diff --git a/man/stapprobes.tcp.3stap.in b/man/stapprobes.tcp.3stap.in new file mode 100644 index 00000000..3e607b69 --- /dev/null +++ b/man/stapprobes.tcp.3stap.in @@ -0,0 +1,102 @@ +.\" -*- nroff -*- +.TH STAPPROBES.TCP 3stap @DATE@ "IBM, Intel" +.SH NAME +stapprobes.tcp \- systemtap tcp probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of probe points is used to probe TCP layer activities. +It contains the following probe points: + +.P +.TP +.B tcp.sendmsg + +Fires whenever sending a tcp message + +.B Arguments: + +.I sock + network socket + +.I size + number of bytes to send + +.P +.TP +.B tcp.sendmsg.return + +Fires whenever sending message is done + +.B Arguments: + +.I size + number of bytes sent + +.P +.TP +.B tcp.recvmsg + +Fires whenever a message is received + +.B Arguments: + +.I sock + network socket + +.I size + number of bytes to be received + +.P +.TP +.B tcp.recvmsg.return + +Fires whenever message receiving is done + +.B Arguments: + +.I size + number of bytes received + +.P +.TP +.B tcp.disconnect + +Fires whenever tcp is disconnected + +.B Arguments: + +.I sock + network socket + +.I flags + TCP flags (e.g. FIN, etc) + +.P +.TP +.B tcp.disconnect.return + +Fires when returning from tcp.disconnect + +.B Arguments: + +.I ret + error code (0: no error) + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (3stap), + diff --git a/man/stapprobes.tcp.5.in b/man/stapprobes.tcp.5.in deleted file mode 100644 index c5194261..00000000 --- a/man/stapprobes.tcp.5.in +++ /dev/null @@ -1,102 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES.TCP 5 @DATE@ "IBM, Intel" -.SH NAME -stapprobes.tcp \- systemtap tcp probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION - -This family of probe points is used to probe TCP layer activities. -It contains the following probe points: - -.P -.TP -.B tcp.sendmsg - -Fires whenever sending a tcp message - -.B Arguments: - -.I sock - network socket - -.I size - number of bytes to send - -.P -.TP -.B tcp.sendmsg.return - -Fires whenever sending message is done - -.B Arguments: - -.I size - number of bytes sent - -.P -.TP -.B tcp.recvmsg - -Fires whenever a message is received - -.B Arguments: - -.I sock - network socket - -.I size - number of bytes to be received - -.P -.TP -.B tcp.recvmsg.return - -Fires whenever message receiving is done - -.B Arguments: - -.I size - number of bytes received - -.P -.TP -.B tcp.disconnect - -Fires whenever tcp is disconnected - -.B Arguments: - -.I sock - network socket - -.I flags - TCP flags (e.g. FIN, etc) - -.P -.TP -.B tcp.disconnect.return - -Fires when returning from tcp.disconnect - -.B Arguments: - -.I ret - error code (0: no error) - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes (5), - diff --git a/man/stapprobes.udp.3stap.in b/man/stapprobes.udp.3stap.in new file mode 100644 index 00000000..3fbfd3e7 --- /dev/null +++ b/man/stapprobes.udp.3stap.in @@ -0,0 +1,102 @@ +.\" -*- nroff -*- +.TH STAPPROBES.UDP 3stap @DATE@ "Intel" +.SH NAME +stapprobes.udp \- systemtap udp probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION + +This family of probe points is used to probe UDP layer activities. +It contains the following probe points: + +.P +.TP +.B udp.sendmsg + +Fires whenever sending a udp message + +.B Arguments: + +.I sock + network socket + +.I size + number of bytes to send + +.P +.TP +.B udp.sendmsg.return + +Fires whenever sending message is done + +.B Arguments: + +.I size + number of bytes sent + +.P +.TP +.B udp.recvmsg + +Fires whenever a message is received + +.B Arguments: + +.I sock + network socket + +.I size + number of bytes to be received + +.P +.TP +.B udp.recvmsg.return + +Fires whenever message receiving is done + +.B Arguments: + +.I size + number of bytes received + +.P +.TP +.B udp.disconnect + +Fires whenever udp is disconnected + +.B Arguments: + +.I sock + network socket + +.I flags + flags (e.g. FIN, etc) + +.P +.TP +.B udp.disconnect.return + +Fires when returning from udp.disconnect + +.B Arguments: + +.I ret + error code (0: no error) + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes (3stap), + diff --git a/man/stapprobes.udp.5.in b/man/stapprobes.udp.5.in deleted file mode 100644 index 6e89adf0..00000000 --- a/man/stapprobes.udp.5.in +++ /dev/null @@ -1,102 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES.UDP 5 @DATE@ "Intel" -.SH NAME -stapprobes.udp \- systemtap udp probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION - -This family of probe points is used to probe UDP layer activities. -It contains the following probe points: - -.P -.TP -.B udp.sendmsg - -Fires whenever sending a udp message - -.B Arguments: - -.I sock - network socket - -.I size - number of bytes to send - -.P -.TP -.B udp.sendmsg.return - -Fires whenever sending message is done - -.B Arguments: - -.I size - number of bytes sent - -.P -.TP -.B udp.recvmsg - -Fires whenever a message is received - -.B Arguments: - -.I sock - network socket - -.I size - number of bytes to be received - -.P -.TP -.B udp.recvmsg.return - -Fires whenever message receiving is done - -.B Arguments: - -.I size - number of bytes received - -.P -.TP -.B udp.disconnect - -Fires whenever udp is disconnected - -.B Arguments: - -.I sock - network socket - -.I flags - flags (e.g. FIN, etc) - -.P -.TP -.B udp.disconnect.return - -Fires when returning from udp.disconnect - -.B Arguments: - -.I ret - error code (0: no error) - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes (5), - diff --git a/stap-server.8.in b/stap-server.8.in index 1976b6ea..bab8d82a 100644 --- a/stap-server.8.in +++ b/stap-server.8.in @@ -265,7 +265,7 @@ host. .SH EXAMPLES See the -.IR stapex (5) +.IR stapex (3stap) manual page for a collection of sample scripts. .PP Here is a very basic example of how to use @@ -351,9 +351,9 @@ access permissions before making use of any certificate database. .SH SEE ALSO .IR stap (1), .IR staprun (8), -.IR stapprobes (5), -.IR stapfuncs (5), -.IR stapex (5), +.IR stapprobes (3stap), +.IR stapfuncs (3stap), +.IR stapex (3stap), .IR NSS , .IR certutil , .IR signtool diff --git a/stap.1.in b/stap.1.in index c562c8b7..088449c0 100644 --- a/stap.1.in +++ b/stap.1.in @@ -535,7 +535,7 @@ Events are specified in a special syntax called "probe points". There are several varieties of probe points defined by the translator, and tapset scripts may define further ones using aliases. These are listed in the -.IR stapprobes (5) +.IR stapprobes (3stap) manual pages. .PP The probe handler is interpreted relative to the context of each @@ -860,7 +860,7 @@ by the scripts installed under the .IR @prefix@/share/systemtap/tapset .hy directory. These are described in the -.IR stapfuncs "(5) and " stapprobes (5) +.IR stapfuncs "(3stap) and " stapprobes (3stap) manual pages. .SH PROCESSING @@ -957,7 +957,7 @@ unloads the module, and cleans up. .SH EXAMPLES See the -.IR stapex (5) +.IR stapex (3stap) manual page for a collection of samples. .SH CACHING @@ -1202,10 +1202,10 @@ The auxiliary program supervising module loading, interaction, and unloading. .SH SEE ALSO -.IR stapprobes (5), -.IR stapfuncs (5), -.IR stapvars (5), -.IR stapex (5), +.IR stapprobes (3stap), +.IR stapfuncs (3stap), +.IR stapvars (3stap), +.IR stapex (3stap), .IR awk (1), .IR gdb (1) diff --git a/stapex.3stap.in b/stapex.3stap.in new file mode 100644 index 00000000..8d02fc5c --- /dev/null +++ b/stapex.3stap.in @@ -0,0 +1,126 @@ +.\" -*- nroff -*- +.TH STAPEX 3stap @DATE@ "Red Hat" +.SH NAME +stapex \- systemtap examples + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH LANGUAGE BASICS +These examples give a feel for basic systemtap syntax and +control structures. + +.SAMPLE +global odds, evens + +probe begin { + # "no" and "ne" are local integers + for (i=0; i<10; i++) { + if (i % 2) odds [no++] = i + else evens [ne++] = i + } + delete odds[2] + delete evens[3] + exit () +} + +probe end { + foreach (x+ in odds) { + printf ("odds[%d] = %d\n", x, odds[x]) + } + foreach (x in evens\-) { + printf ("evens[%d] = %d\n", x, evens[x]) + } +} +.ESAMPLE +This prints: +.SAMPLE +odds[1] = 1 +odds[3] = 5 +odds[4] = 7 +odds[5] = 9 +evens[5] = 8 +evens[4] = 6 +evens[2] = 2 +evens[1] = 0 +.ESAMPLE +Note that all variables types are inferred, and that all locals +and globals are automatically initialized. + +.PP +This script prints the primes between 0 and 49. +.SAMPLE +function isprime (x) { + if (x < 2) return 0 + for (i=2; i x) break + } + return 1 +} +probe begin { + for (i=0; i<50; i++) + if (isprime (i)) printf("%d\n", i) + exit() +} +.ESAMPLE + +.PP +This script demonstrates recursive functions. +.SAMPLE +function fibonacci(i) { + if (i < 1) error ("bad number") + if (i == 1) return 1 + if (i == 2) return 2 + return fibonacci (i\-1) + fibonacci (i\-2) +} +probe begin { + printf ("11th fibonacci number: %d\n", fibonacci (11)) + exit () +} +.ESAMPLE +Any larger number may exceed the MAXACTION or MAXNESTING +limits, and result in an error. + + +.SH PROBING + +To trace entry and exit from a function, use a pair of probes: +.SAMPLE +probe kernel.function("sys_mkdir") { println ("enter") } +probe kernel.function("sys_mkdir").return { println ("exit") } +.ESAMPLE + +To list the probeable functions in the kernel, use the listings mode. +.SAMPLE +% stap \-l \[aq]kernel.function("*")\[aq] +.ESAMPLE + +To list the probeable functions and local variables in the kernel, use another listings mode. +.SAMPLE +% stap \-L \[aq]kernel.function("*")\[aq] +.ESAMPLE + +.SH MORE EXAMPLES + +Larger examples, demos and samples can be found in +@prefix@/doc/systemtap*/examples, each example comes with either a .txt +or .meta file explaining what the example, sample or demo does and how +it is ordinarily run. + +.SH SEE ALSO +.BR @prefix@/doc/systemtap*/examples +.IR stap (1) +.IR stapprobes (3stap) +.IR stapfuncs (3stap) + diff --git a/stapex.5.in b/stapex.5.in deleted file mode 100644 index 38f30f62..00000000 --- a/stapex.5.in +++ /dev/null @@ -1,126 +0,0 @@ -.\" -*- nroff -*- -.TH STAPEX 5 @DATE@ "Red Hat" -.SH NAME -stapex \- systemtap examples - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH LANGUAGE BASICS -These examples give a feel for basic systemtap syntax and -control structures. - -.SAMPLE -global odds, evens - -probe begin { - # "no" and "ne" are local integers - for (i=0; i<10; i++) { - if (i % 2) odds [no++] = i - else evens [ne++] = i - } - delete odds[2] - delete evens[3] - exit () -} - -probe end { - foreach (x+ in odds) { - printf ("odds[%d] = %d\n", x, odds[x]) - } - foreach (x in evens\-) { - printf ("evens[%d] = %d\n", x, evens[x]) - } -} -.ESAMPLE -This prints: -.SAMPLE -odds[1] = 1 -odds[3] = 5 -odds[4] = 7 -odds[5] = 9 -evens[5] = 8 -evens[4] = 6 -evens[2] = 2 -evens[1] = 0 -.ESAMPLE -Note that all variables types are inferred, and that all locals -and globals are automatically initialized. - -.PP -This script prints the primes between 0 and 49. -.SAMPLE -function isprime (x) { - if (x < 2) return 0 - for (i=2; i x) break - } - return 1 -} -probe begin { - for (i=0; i<50; i++) - if (isprime (i)) printf("%d\n", i) - exit() -} -.ESAMPLE - -.PP -This script demonstrates recursive functions. -.SAMPLE -function fibonacci(i) { - if (i < 1) error ("bad number") - if (i == 1) return 1 - if (i == 2) return 2 - return fibonacci (i\-1) + fibonacci (i\-2) -} -probe begin { - printf ("11th fibonacci number: %d\n", fibonacci (11)) - exit () -} -.ESAMPLE -Any larger number may exceed the MAXACTION or MAXNESTING -limits, and result in an error. - - -.SH PROBING - -To trace entry and exit from a function, use a pair of probes: -.SAMPLE -probe kernel.function("sys_mkdir") { println ("enter") } -probe kernel.function("sys_mkdir").return { println ("exit") } -.ESAMPLE - -To list the probeable functions in the kernel, use the listings mode. -.SAMPLE -% stap \-l \[aq]kernel.function("*")\[aq] -.ESAMPLE - -To list the probeable functions and local variables in the kernel, use another listings mode. -.SAMPLE -% stap \-L \[aq]kernel.function("*")\[aq] -.ESAMPLE - -.SH MORE EXAMPLES - -Larger examples, demos and samples can be found in -@prefix@/doc/systemtap*/examples, each example comes with either a .txt -or .meta file explaining what the example, sample or demo does and how -it is ordinarily run. - -.SH SEE ALSO -.BR @prefix@/doc/systemtap*/examples -.IR stap (1) -.IR stapprobes (5) -.IR stapfuncs (5) - diff --git a/stapfuncs.3stap.in b/stapfuncs.3stap.in new file mode 100644 index 00000000..1f2955da --- /dev/null +++ b/stapfuncs.3stap.in @@ -0,0 +1,668 @@ +.\" -*- nroff -*- +.TH STAPFUNCS 3stap @DATE@ "Red Hat" +.SH NAME +stapfuncs \- systemtap functions + +.SH DESCRIPTION +The following sections enumerate the public functions provided by +standard tapsets installed under @prefix@/share/systemtap/tapset. Each +function is described with a signature, and its behavior/restrictions. +The signature line includes the name of the function, the type of +its return value (if any), and the names and types of all parameters. +The syntax is the same as printed with the +.IR stap " option " \-p2 . +Examples: + +.TP +example1:long (v:string, k:long) +In function "example1", do something with the given string and integer. +Return some integer. + +.TP +example2:unknown () +In function "example2", do something. There is no explicit return value +and take no parameters. + +.SS PRINTING + +.TP +log:unknown (msg:string) +Writes the given string to the common trace buffer. Append an implicit +end-of-line. Deprecated. Please use the faster print functions. + +.TP +warn:unknown (msg:string) +Write the given string to the warning stream. Append an implicit end-of-line. +.I staprun +prepends the string "WARNING:". + +.TP +error:unknown (msg:string) +An error has occurred. Write the given string to the error stream. +Append an implicit end-of-line. +.I staprun +prepends the string "ERROR:". +Block any further execution of statements in this probe. If the number +of errors so far exceeds the MAXERRORS parameter, also trigger an +.IR exit() . + +.TP +exit:unknown () +Enqueue a request to shut down the systemtap session. This does +.B not +unwind the current probe handler, nor block new probe handlers. +.I staprun +will shortly respond to the request and initiate an orderly shutdown. + +.SS CONVERSIONS +.PP +These functions access kernel or user-space data. They try to validate the +supplied addresses, and can thus result in errors if the pointers are invalid, +or if a user-space access would cause a fault. +.TP +kernel_string:string (addr:long) +Copy a 0-terminated string from kernel space at given address. +.TP +kernel_string_n:string (addr:long, n:long) +Similar with kernel_string, except that not more than n bytes are copied. +Thus, if there are null bytes among the first n bytes, it is same as +kernel_string(addr). If not, n bytes will be copied and a null byte will +be padded to the end. +.TP +kernel_long:long (addr:long) +Copy a long from kernel space at given address. +.TP +kernel_int:long (addr:long) +Copy an int from kernel space at given address. +.TP +kernel_short:long (addr:long) +Copy a short from kernel space at given address. +.TP +kernel_char:long (addr:long) +Copy a char from kernel space at given address. +.TP +user_string:string (addr:long) +Copy a string from user space at given address. If the access would +fault, return "" and signal no errors. +.TP +user_string2:string (addr:long, err_msg:string) +Copy a string from user space at given address. If the access would +fault, return instead the err_msg value. +.TP +user_string_warn:string (addr:long) +Copy a string from user space at given address. If the access would +fault, signal a warning and return "". +.TP +user_string_quoted:string (addr:long) +Copy a string from user space at given address. Any ASCII characters +that are not printable are replaced by the corresponding escape +sequence in the returned string. +.TP +user_string_n:string (addr:long, n:long) +Copy a string of n bytes from user space at given address. If the access +would fault, return "". +.TP +user_string_n2:string (addr:long, n:long, err_msg:string) +Copy a string of n bytes from user space at given address. If the access +would fault, return the err_msg value. +.TP +user_string_n_warn:string (addr:long, n:long) +Copy a string of n bytes from user space at given address. If the access +would fault, signal a warning and return "". +.TP +user_string_n_quoted:string (addr:long, n:long) +Copy a string of n bytes from user space at given address. Any ASCII +characters that are not printable are replaced by the corresponding escape +sequence in the returned string. If the access would fault, return "". +.TP +user_short:long (addr:long) +Copy a short from user space at given address. If the access would fault, +return 0. +.TP +user_short_warn:long (addr:long) +Copy a short from user space at given address. If the access would fault, +signal a warning and return 0. +.TP +user_int:long (addr:long) +Copy an int from user space at given address. If the access would fault, +return 0. +.TP +user_int_warn:long (addr:long) +Copy an int from user space at given address. If the access would fault, +signal a warning and return 0. +.TP +user_long:long (addr:long) +Copy a long from user space at given address. If the access would fault, +return 0. +.TP +user_long_warn:long (addr:long) +Copy a long from user space at given address. If the access would fault, +signal a warning and return 0. +.TP +user_char:long (addr:long) +Copy a char from user space at given address. If the access would fault, +return 0. +.TP +user_char_warn:long (addr:long) +Copy a char from user space at given address. If the access would fault, +signal a warning and return 0. +.SS STRING +.TP +strlen:long (str:string) +Return the number of characters in str. +.TP +substr:string (str:string,start:long, stop:long) +Return the substring of str starting from character start and ending at character stop. +.TP +isinstr:long (s1:string, s2:string) +Return 1 if string s1 contains string s2, returns 0 otherwise. +.TP +strtol:long (str:string, base:long) +Convert the string representation of a number to a long using the numbering system +specified by base. For example, strtol("1000", 16) returns 4096. Returns 0 if the +string cannot be converted. +.TP +tokenize:string (str:string, delim:string) +Return the next token in the given str string, where the tokens are delimited +by one of the characters in the delim string. If the str string is not blank, +it returns the first token. If the str string is blank, it returns the next +token in the string passed in the previous call to tokenize. If no delimiter +is found, the entire remaining str string is returned. Returns blank when +no more tokens are left. + +.SS TIMESTAMP +.TP +get_cycles:long () +Return the processor cycle counter value, or 0 if unavailable. +.TP +gettimeofday_ns:long () +Return the number of nanoseconds since the UNIX epoch. +.TP +gettimeofday_us:long () +Return the number of microseconds since the UNIX epoch. +.TP +gettimeofday_ms:long () +Return the number of milliseconds since the UNIX epoch. +.TP +gettimeofday_s:long () +Return the number of seconds since the UNIX epoch. + +.SS CONTEXT INFO +.TP +cpu:long () +Return the current cpu number. +.TP +execname:string () +Return the name of the current process. +.TP +pexecname:string() +Return the name of the parent process. +.TP +tid:long () +Return the id of the current thread. +.TP +pid:long () +Return the id of the current process. +.TP +ppid:long () +Return the id of the parent process. +.TP +uid:long () +Return the uid of the current process. +.TP +euid:long () +Return the effective uid of the current process. +.TP +gid:long () +Return the gid of the current process. +.TP +egid:long () +Return the effective gid of the current process. +.TP +print_regs:unknown () +Print a register dump. +.TP +backtrace:string () +Return a string of hex addresses that are a backtrace of the stack. +It may be truncated due to maximum string length. +.TP +print_stack:unknown (bt:string) +Perform a symbolic lookup of the addresses in the given string, +which is assumed to be the result of a prior call to +.IR backtrace() . +Print one line per address, including the address, the name of the +function containing the address, and an estimate of its position +within that function. Return nothing. +.TP +print_backtrace:unknown () +Equivalent to +.IR print_stack(backtrace()) , +except that deeper stack nesting may be supported. Return nothing. +.TP +pp:string () +Return the probe point associated with the currently running probe handler, +including alias and wildcard expansion effects. +.TP +probefunc:string () +Return the probe point's function name, if known. +.TP +probemod:string () +Return the probe point's module name, if known. +.TP +target:long () +Return the pid of the target process. +.TP +user_mode:long () +Return 1 if the probe point occurred in user-mode. +.TP +is_return:long () +Return 1 if the probe point is a return probe. Deprecated. + +.SS TARGET_SET +.TP +target_set_pid:long (tid:long) +Return whether the given process-id is within the "target set", that is whether +it is a descendent of the top-level target() process. +.TP +target_set_report:unknown () +Print a report about the target set, and their ancestry. + +.SS ERRNO +.TP +errno_str:string (e:long) +Return the symbolic string associated with the given error code, like +"ENOENT" for the number 2, or "E#3333" for an out-of-range value like 3333. + +.SS TASK +.PP +These functions return data about a task. They all require +a task handle as input, such as the value return by task_current() or the variables +prev_task and next_task in the scheduler.ctxswitch probe alias. + +.TP +task_current:long() +Return the task_struct of the current process. + +.TP +task_parent:long(task:long) +Return the parent task_struct of the given task. +.TP +task_state:long(task:long) +Return the state of the given task, which can be one of the following: + + TASK_RUNNING 0 + TASK_INTERRUPTIBLE 1 + TASK_UNINTERRUPTIBLE 2 + TASK_STOPPED 4 + TASK_TRACED 8 + EXIT_ZOMBIE 16 + EXIT_DEAD 32 + +.TP +task_execname:string(task:long) +Return the name of the given task. + +.TP +task_pid:long(task:long) +Return the process id of the given task. + +.TP +task_tid:long(task:long) +Return the thread id of the given task. + +.TP +task_gid:long(task:long) +Return the group id of the given task. + +.TP +task_egid:long(task:long) +Return the effective group id of the given task. + +.TP +task_uid:long(task:long) +Return the user id of the given task. + +.TP +task_euid:long(task:long) +Return the effective user id of the given task. + +.TP +task_prio:long(task:long) +Return the priority of the given task. + +.TP +task_nice:long(task:long) +Return the nice value of the given task. + +.TP +task_cpu:long(task:long) +Return the scheduled cpu for the given task. + +.TP +task_open_file_handles:long(task:long) +Return the number of open file handles for the given task. + +.TP +task_max_file_handles:long(task:long) +Return the maximum number of file handles for the given task. + +.SS CPU REGISTERS +.TP +registers_valid:long () +Return 1 if register() and u_register() can be used +in the current context, or 0 otherwise. +For example, registers_valid() returns 0 when called from a begin or end probe. +.TP +register:long (name:string) +Return the value of the named CPU register, +as it was saved when the current probe point was hit. +If the register is 32 bits, it is sign-extended to 64 bits. + +For the i386 architecture, the following names are recognized. +(name1/name2 indicates that name1 and name2 are alternative names +for the same register.) +eax/ax, ebp/bp, ebx/bx, ecx/cx, edi/di, edx/dx, eflags/flags, +eip/ip, esi/si, esp/sp, orig_eax/orig_ax, +xcs/cs, xds/ds, xes/es, xfs/fs, xss/ss. + +For the x86_64 architecture, the following names are recognized: +64-bit registers: +r8, r9, r10, r11, r12, r13, r14, r15, +rax/ax, rbp/bp, rbx/bx, rcx/cx, rdi/di, rdx/dx, +rip/ip, rsi/si, rsp/sp; +32-bit registers: +eax, ebp, ebx, ecx, edx, edi, edx, eip, esi, esp, flags/eflags, orig_eax; +segment registers: xcs/cs, xss/ss. + +For powerpc, the following names are recognized: +r0, r1, ... r31, nip, msr, orig_gpr3, ctr, link, xer, ccr, softe, trap, +dar, dsisr, result. + +For s390x, the following names are recognized: +r0, r1, ... r15, args, psw.mask, psw.addr, orig_gpr2, ilc, trap. + +.TP +u_register:long (name:string) +Same as register(name), except that +if the register is 32 bits, it is zero-extended to 64 bits. + +.SS NUMBERED FUNCTION ARGUMENTS +The functions in this section provide the values of a probed function's +arguments. +They can be called when you have hit +a probe point at the entry to a function. +Arguments are referred to by number, starting at 1. +Ordinarily, you can access arguments by name as well, +but you may find these functions useful if the code you are probing +was built without debugging information. + +On 32-bit architectures +\(em and when probing 32-bit applications on 64-bit architectures \(em +a 64-bit argument occupies two "arg slots." +For example, if you are probing the following function + + void f(int a, long long b, char *c) + +you would refer to a, b, and c as int_arg(1), longlong_arg(2), and +pointer_arg(3), respectively, on a 64-bit architecture; +but on a 32-bit architecture, you would refer to c as pointer_arg(4) +(since b occupies slots 2 and 3). + +If the function you are probing doesn't follow the default rules +for argument passing, you need to call one of the following functions +(which see) in your handler before calling any *_arg function: +asmlinkage(), fastcall(), or regparm(). +(This isn't necessary when referring to arguments only by name.) +.TP +int_arg:long (n:long) +Return the value of argument n as a signed int +(i.e., a 32-bit integer sign-extended to 64 bits). +.TP +uint_arg:long (n:long) +Return the value of argument n as an unsigned int +(i.e., a 32-bit integer zero-extended to 64 bits). +.TP +long_arg:long (n:long) +Return the value of argument n as a signed long. +On architectures where a long is 32 bits, the value is sign-extended to 64 bits. +.TP +ulong_arg:long (n:long) +Return the value of argument n as an unsigned long. +On architectures where a long is 32 bits, the value is zero-extended to 64 bits. +.TP +longlong_arg:long (n:long) +Return the value of argument n as a 64-bit value. +.TP +ulonglong_arg:long (n:long) +Same as longlong_arg(n). +.TP +pointer_arg:long (n:long) +Same as ulong_arg(n). +Use with any type of pointer. +.TP +s32_arg:long (n:long) +Same as int_arg(n). +.TP +u32_arg:long (n:long) +Same as uint_arg(n). +.TP +s64_arg:long (n:long) +Same as longlong_arg(n). +.TP +u64_arg:long (n:long) +Same as [u]longlong_arg(n). +.TP +asmlinkage:unknown () +The probed kernel function is declared asmlinkage in the source. +.TP +fastcall:unknown () +The probed kernel function is declared fastcall in the source. +.TP +regparm:unknown (n:long) +The probed function was built with the gcc \-mregparm=n option. +(The i386 kernel is built with \-mregparm=3, so systemtap considers +regparm(3) the default for kernel functions on that architecture.) + +For some architectures, the *_arg functions may reject unusually high +values of n. + +.SS QUEUE_STATS +.PP +The queue_stats tapset provides functions that, given notifications of +elementary queuing events (wait, run, done), tracks averages such as +queue length, service and wait times, utilization. The following +three functions should be called from appropriate probes, in sequence. +.TP +qs_wait:unknown (qname:string) +Record that a new request was enqueued for the given queue name. +.TP +qs_run:unknown (qname:string) +Record that a previously enqueued request was removed from the given +wait queue and is now being serviced. +.TP +qs_done:unknown (qname:string) +Record that a request originally from the given queue has completed +being serviced. +.\" XXX: qs_time +.PP +Functions with the prefix +.BR qsq_ +are for querying the statistics averaged since the first queue operation +(or when +.BR qsq_start +was called). Since statistics are often fractional, a scale parameter +is multiplies the result to a more useful scale. For some fractions, +a scale of 100 will usefully return percentage numbers. +.TP +qsq_start:unknown (qname:string) +Reset the statistics counters for the given queue, and start tracking +anew from this moment. +.TP +qsq_print:unknown (qname:string) +Print a line containing a selection of the given queue's statistics. +.TP +qsq_utilization:long (qname:string, scale:long) +Return the fraction of elapsed time when the resource was utilized. +.TP +qsq_blocked:long (qname:string, scale:long) +Return the fraction of elapsed time when the wait queue was used. +.TP +qsq_wait_queue_length:long (qname:string, scale:long) +Return the average length of the wait queue. +.TP +qsq_service_time:long (qname:string, scale:long) +Return the average time required to service a request. +.TP +qsq_wait_time:long (qname:string, scale:long) +Return the average time a request took from being enqueued to completed. +.TP +qsq_throughput:long (qname:string, scale:long) +Return the average rate of requests per scale units of time. + +.SS INDENT +.PP +The indent tapset provides functions to generate indented lines for +nested kinds of trace messages. Each line contains a relative +timestamp, and the process name / pid. +.TP +thread_indent:string (delta:long) +Return a string with an appropriate indentation for this thread. +Call it with a small positive or matching negative delta. +If this is the outermost, initial level of indentation, reset the +relative timestamp base to zero. +.TP +thread_timestamp:long () +Return an absolute timestamp value for use by the indentation function. +The default function uses +.IR gettimeofday_us + +.SS SYSTEM +.TP +system (cmd:string) +Runs a command on the system. The command will run in the background +when the current probe completes. + +.SS NUMA +.TP +addr_to_node:long (addr:long) +Return which node the given address belongs to in a NUMA system. + +.SS CTIME +.TP +ctime:string (seconds:long) +Return a simple textual rendering (e.g., "Wed\ Jun\ 30\ 21:49:008\ 1993") +of the given number of seconds since the epoch, as perhaps returned by +.IR gettimeofday_s() . + +.SS PERFMON +.TP +read_counter:long (handle:long) +Returns the value for the processor's performance counter for the associated +handle. The body of the a perfmon probe should set record +the handle being used for that event. + +.SS SOCKETS +These functions convert arguments in the socket tapset back and +forth between their numeric and string representations. +See +.IR stapprobes.socket (3stap) +for details. + +.TP +sock_prot_num2str:string (proto:long) +Returns the string representation of the given protocol value. +.TP +sock_prot_str2num:long (proto:string) +Returns the numeric value associated with the given protocol string. +.TP +sock_fam_num2str:string (family:long) +Returns the string representation of the given protocol family value. +.TP +sock_fam_str2num:long (family:string) +Returns the numeric value associated with the given protocol family string. +.TP +sock_state_num2str:string (state:long) +Returns the string representation of the given socket state value. +.TP +sock_state_str2num:long (state:string) +Returns the numeric value associated with the given socket state string. +.TP +sock_type_num2str:string (type:long) +Returns the string representation of the given socket type value. +.TP +sock_type_str2num:long (type:string) +Returns the numeric value associated with the given socket type string. +.TP +sock_flags_num2str:string (flags:long) +Returns the string representation of the given socket flags value. +.TP +msg_flags_num2str:string (flags:long) +Returns the string representation of the given message flags bit map. + +.SS INET +These functions convert between network (big-endian) and host byte order, like their +namesake C functions. +.TP +ntohll:long (x:long) +Convert from network to host byte order, 64-bit. +.TP +ntohl:long (x:long) +Convert from network to host byte order, 32-bit. +.TP +ntohs:long (x:long) +Convert from network to host byte order, 16-bit. +.TP +htonll:long (x:long) +Convert from host to network byte order, 64-bit. +.TP +htonl:long (x:long) +Convert from host to network byte order, 32-bit. +.TP +htons:long (x:long) +Convert from host to network byte order, 16-bit. + +.SS SIGNAL +.TP +get_sa_flags:long (act:long) +Returns the numeric value of sa_flags. +.TP +get_sa_handler:long (act:long) +Returns the numeric value of sa_handler. +.TP +sigset_mask_str:string (mask:long) +Returns the string representation of the sigset sa_mask. +.TP +is_sig_blocked:long (task:long, sig:long) +Returns 1 if the signal is currently blocked, or 0 if it is not. +.TP +sa_flags_str:string (sa_flags:long) +Returns the string representation of sa_flags. +.TP +sa_handler_str(handler) +Returns the string representation of sa_handler. If it is not SIG_DFL, SIG_IGN +or SIG_ERR, it will return the address of the handler. +.TP +signal_str(num) +Returns the string representation of the given signal number. + +.SS DEVICE +.TP +MAJOR:long(dev:long) +Extracts the major device number from a kernel device number (kdev_t). +.TP +MINOR:long(dev:long) +Extracts the minor device number from a kernel device number (kdev_t). +.TP +MKDEV:long(major:long, minor:long) +Creates a value that can be compared to a kernel device number (kdev_t). +.TP +usrdev2kerndev:long(dev:long) +Converts a user-space device number into the format used in the kernel. + +.SH FILES +.nh +.IR @prefix@/share/systemtap/tapset +.hy + +.SH SEE ALSO +.IR stap (1) diff --git a/stapfuncs.5.in b/stapfuncs.5.in deleted file mode 100644 index 0322369e..00000000 --- a/stapfuncs.5.in +++ /dev/null @@ -1,668 +0,0 @@ -.\" -*- nroff -*- -.TH STAPFUNCS 5 @DATE@ "Red Hat" -.SH NAME -stapfuncs \- systemtap functions - -.SH DESCRIPTION -The following sections enumerate the public functions provided by -standard tapsets installed under @prefix@/share/systemtap/tapset. Each -function is described with a signature, and its behavior/restrictions. -The signature line includes the name of the function, the type of -its return value (if any), and the names and types of all parameters. -The syntax is the same as printed with the -.IR stap " option " \-p2 . -Examples: - -.TP -example1:long (v:string, k:long) -In function "example1", do something with the given string and integer. -Return some integer. - -.TP -example2:unknown () -In function "example2", do something. There is no explicit return value -and take no parameters. - -.SS PRINTING - -.TP -log:unknown (msg:string) -Writes the given string to the common trace buffer. Append an implicit -end-of-line. Deprecated. Please use the faster print functions. - -.TP -warn:unknown (msg:string) -Write the given string to the warning stream. Append an implicit end-of-line. -.I staprun -prepends the string "WARNING:". - -.TP -error:unknown (msg:string) -An error has occurred. Write the given string to the error stream. -Append an implicit end-of-line. -.I staprun -prepends the string "ERROR:". -Block any further execution of statements in this probe. If the number -of errors so far exceeds the MAXERRORS parameter, also trigger an -.IR exit() . - -.TP -exit:unknown () -Enqueue a request to shut down the systemtap session. This does -.B not -unwind the current probe handler, nor block new probe handlers. -.I staprun -will shortly respond to the request and initiate an orderly shutdown. - -.SS CONVERSIONS -.PP -These functions access kernel or user-space data. They try to validate the -supplied addresses, and can thus result in errors if the pointers are invalid, -or if a user-space access would cause a fault. -.TP -kernel_string:string (addr:long) -Copy a 0-terminated string from kernel space at given address. -.TP -kernel_string_n:string (addr:long, n:long) -Similar with kernel_string, except that not more than n bytes are copied. -Thus, if there are null bytes among the first n bytes, it is same as -kernel_string(addr). If not, n bytes will be copied and a null byte will -be padded to the end. -.TP -kernel_long:long (addr:long) -Copy a long from kernel space at given address. -.TP -kernel_int:long (addr:long) -Copy an int from kernel space at given address. -.TP -kernel_short:long (addr:long) -Copy a short from kernel space at given address. -.TP -kernel_char:long (addr:long) -Copy a char from kernel space at given address. -.TP -user_string:string (addr:long) -Copy a string from user space at given address. If the access would -fault, return "" and signal no errors. -.TP -user_string2:string (addr:long, err_msg:string) -Copy a string from user space at given address. If the access would -fault, return instead the err_msg value. -.TP -user_string_warn:string (addr:long) -Copy a string from user space at given address. If the access would -fault, signal a warning and return "". -.TP -user_string_quoted:string (addr:long) -Copy a string from user space at given address. Any ASCII characters -that are not printable are replaced by the corresponding escape -sequence in the returned string. -.TP -user_string_n:string (addr:long, n:long) -Copy a string of n bytes from user space at given address. If the access -would fault, return "". -.TP -user_string_n2:string (addr:long, n:long, err_msg:string) -Copy a string of n bytes from user space at given address. If the access -would fault, return the err_msg value. -.TP -user_string_n_warn:string (addr:long, n:long) -Copy a string of n bytes from user space at given address. If the access -would fault, signal a warning and return "". -.TP -user_string_n_quoted:string (addr:long, n:long) -Copy a string of n bytes from user space at given address. Any ASCII -characters that are not printable are replaced by the corresponding escape -sequence in the returned string. If the access would fault, return "". -.TP -user_short:long (addr:long) -Copy a short from user space at given address. If the access would fault, -return 0. -.TP -user_short_warn:long (addr:long) -Copy a short from user space at given address. If the access would fault, -signal a warning and return 0. -.TP -user_int:long (addr:long) -Copy an int from user space at given address. If the access would fault, -return 0. -.TP -user_int_warn:long (addr:long) -Copy an int from user space at given address. If the access would fault, -signal a warning and return 0. -.TP -user_long:long (addr:long) -Copy a long from user space at given address. If the access would fault, -return 0. -.TP -user_long_warn:long (addr:long) -Copy a long from user space at given address. If the access would fault, -signal a warning and return 0. -.TP -user_char:long (addr:long) -Copy a char from user space at given address. If the access would fault, -return 0. -.TP -user_char_warn:long (addr:long) -Copy a char from user space at given address. If the access would fault, -signal a warning and return 0. -.SS STRING -.TP -strlen:long (str:string) -Return the number of characters in str. -.TP -substr:string (str:string,start:long, stop:long) -Return the substring of str starting from character start and ending at character stop. -.TP -isinstr:long (s1:string, s2:string) -Return 1 if string s1 contains string s2, returns 0 otherwise. -.TP -strtol:long (str:string, base:long) -Convert the string representation of a number to a long using the numbering system -specified by base. For example, strtol("1000", 16) returns 4096. Returns 0 if the -string cannot be converted. -.TP -tokenize:string (str:string, delim:string) -Return the next token in the given str string, where the tokens are delimited -by one of the characters in the delim string. If the str string is not blank, -it returns the first token. If the str string is blank, it returns the next -token in the string passed in the previous call to tokenize. If no delimiter -is found, the entire remaining str string is returned. Returns blank when -no more tokens are left. - -.SS TIMESTAMP -.TP -get_cycles:long () -Return the processor cycle counter value, or 0 if unavailable. -.TP -gettimeofday_ns:long () -Return the number of nanoseconds since the UNIX epoch. -.TP -gettimeofday_us:long () -Return the number of microseconds since the UNIX epoch. -.TP -gettimeofday_ms:long () -Return the number of milliseconds since the UNIX epoch. -.TP -gettimeofday_s:long () -Return the number of seconds since the UNIX epoch. - -.SS CONTEXT INFO -.TP -cpu:long () -Return the current cpu number. -.TP -execname:string () -Return the name of the current process. -.TP -pexecname:string() -Return the name of the parent process. -.TP -tid:long () -Return the id of the current thread. -.TP -pid:long () -Return the id of the current process. -.TP -ppid:long () -Return the id of the parent process. -.TP -uid:long () -Return the uid of the current process. -.TP -euid:long () -Return the effective uid of the current process. -.TP -gid:long () -Return the gid of the current process. -.TP -egid:long () -Return the effective gid of the current process. -.TP -print_regs:unknown () -Print a register dump. -.TP -backtrace:string () -Return a string of hex addresses that are a backtrace of the stack. -It may be truncated due to maximum string length. -.TP -print_stack:unknown (bt:string) -Perform a symbolic lookup of the addresses in the given string, -which is assumed to be the result of a prior call to -.IR backtrace() . -Print one line per address, including the address, the name of the -function containing the address, and an estimate of its position -within that function. Return nothing. -.TP -print_backtrace:unknown () -Equivalent to -.IR print_stack(backtrace()) , -except that deeper stack nesting may be supported. Return nothing. -.TP -pp:string () -Return the probe point associated with the currently running probe handler, -including alias and wildcard expansion effects. -.TP -probefunc:string () -Return the probe point's function name, if known. -.TP -probemod:string () -Return the probe point's module name, if known. -.TP -target:long () -Return the pid of the target process. -.TP -user_mode:long () -Return 1 if the probe point occurred in user-mode. -.TP -is_return:long () -Return 1 if the probe point is a return probe. Deprecated. - -.SS TARGET_SET -.TP -target_set_pid:long (tid:long) -Return whether the given process-id is within the "target set", that is whether -it is a descendent of the top-level target() process. -.TP -target_set_report:unknown () -Print a report about the target set, and their ancestry. - -.SS ERRNO -.TP -errno_str:string (e:long) -Return the symbolic string associated with the given error code, like -"ENOENT" for the number 2, or "E#3333" for an out-of-range value like 3333. - -.SS TASK -.PP -These functions return data about a task. They all require -a task handle as input, such as the value return by task_current() or the variables -prev_task and next_task in the scheduler.ctxswitch probe alias. - -.TP -task_current:long() -Return the task_struct of the current process. - -.TP -task_parent:long(task:long) -Return the parent task_struct of the given task. -.TP -task_state:long(task:long) -Return the state of the given task, which can be one of the following: - - TASK_RUNNING 0 - TASK_INTERRUPTIBLE 1 - TASK_UNINTERRUPTIBLE 2 - TASK_STOPPED 4 - TASK_TRACED 8 - EXIT_ZOMBIE 16 - EXIT_DEAD 32 - -.TP -task_execname:string(task:long) -Return the name of the given task. - -.TP -task_pid:long(task:long) -Return the process id of the given task. - -.TP -task_tid:long(task:long) -Return the thread id of the given task. - -.TP -task_gid:long(task:long) -Return the group id of the given task. - -.TP -task_egid:long(task:long) -Return the effective group id of the given task. - -.TP -task_uid:long(task:long) -Return the user id of the given task. - -.TP -task_euid:long(task:long) -Return the effective user id of the given task. - -.TP -task_prio:long(task:long) -Return the priority of the given task. - -.TP -task_nice:long(task:long) -Return the nice value of the given task. - -.TP -task_cpu:long(task:long) -Return the scheduled cpu for the given task. - -.TP -task_open_file_handles:long(task:long) -Return the number of open file handles for the given task. - -.TP -task_max_file_handles:long(task:long) -Return the maximum number of file handles for the given task. - -.SS CPU REGISTERS -.TP -registers_valid:long () -Return 1 if register() and u_register() can be used -in the current context, or 0 otherwise. -For example, registers_valid() returns 0 when called from a begin or end probe. -.TP -register:long (name:string) -Return the value of the named CPU register, -as it was saved when the current probe point was hit. -If the register is 32 bits, it is sign-extended to 64 bits. - -For the i386 architecture, the following names are recognized. -(name1/name2 indicates that name1 and name2 are alternative names -for the same register.) -eax/ax, ebp/bp, ebx/bx, ecx/cx, edi/di, edx/dx, eflags/flags, -eip/ip, esi/si, esp/sp, orig_eax/orig_ax, -xcs/cs, xds/ds, xes/es, xfs/fs, xss/ss. - -For the x86_64 architecture, the following names are recognized: -64-bit registers: -r8, r9, r10, r11, r12, r13, r14, r15, -rax/ax, rbp/bp, rbx/bx, rcx/cx, rdi/di, rdx/dx, -rip/ip, rsi/si, rsp/sp; -32-bit registers: -eax, ebp, ebx, ecx, edx, edi, edx, eip, esi, esp, flags/eflags, orig_eax; -segment registers: xcs/cs, xss/ss. - -For powerpc, the following names are recognized: -r0, r1, ... r31, nip, msr, orig_gpr3, ctr, link, xer, ccr, softe, trap, -dar, dsisr, result. - -For s390x, the following names are recognized: -r0, r1, ... r15, args, psw.mask, psw.addr, orig_gpr2, ilc, trap. - -.TP -u_register:long (name:string) -Same as register(name), except that -if the register is 32 bits, it is zero-extended to 64 bits. - -.SS NUMBERED FUNCTION ARGUMENTS -The functions in this section provide the values of a probed function's -arguments. -They can be called when you have hit -a probe point at the entry to a function. -Arguments are referred to by number, starting at 1. -Ordinarily, you can access arguments by name as well, -but you may find these functions useful if the code you are probing -was built without debugging information. - -On 32-bit architectures -\(em and when probing 32-bit applications on 64-bit architectures \(em -a 64-bit argument occupies two "arg slots." -For example, if you are probing the following function - - void f(int a, long long b, char *c) - -you would refer to a, b, and c as int_arg(1), longlong_arg(2), and -pointer_arg(3), respectively, on a 64-bit architecture; -but on a 32-bit architecture, you would refer to c as pointer_arg(4) -(since b occupies slots 2 and 3). - -If the function you are probing doesn't follow the default rules -for argument passing, you need to call one of the following functions -(which see) in your handler before calling any *_arg function: -asmlinkage(), fastcall(), or regparm(). -(This isn't necessary when referring to arguments only by name.) -.TP -int_arg:long (n:long) -Return the value of argument n as a signed int -(i.e., a 32-bit integer sign-extended to 64 bits). -.TP -uint_arg:long (n:long) -Return the value of argument n as an unsigned int -(i.e., a 32-bit integer zero-extended to 64 bits). -.TP -long_arg:long (n:long) -Return the value of argument n as a signed long. -On architectures where a long is 32 bits, the value is sign-extended to 64 bits. -.TP -ulong_arg:long (n:long) -Return the value of argument n as an unsigned long. -On architectures where a long is 32 bits, the value is zero-extended to 64 bits. -.TP -longlong_arg:long (n:long) -Return the value of argument n as a 64-bit value. -.TP -ulonglong_arg:long (n:long) -Same as longlong_arg(n). -.TP -pointer_arg:long (n:long) -Same as ulong_arg(n). -Use with any type of pointer. -.TP -s32_arg:long (n:long) -Same as int_arg(n). -.TP -u32_arg:long (n:long) -Same as uint_arg(n). -.TP -s64_arg:long (n:long) -Same as longlong_arg(n). -.TP -u64_arg:long (n:long) -Same as [u]longlong_arg(n). -.TP -asmlinkage:unknown () -The probed kernel function is declared asmlinkage in the source. -.TP -fastcall:unknown () -The probed kernel function is declared fastcall in the source. -.TP -regparm:unknown (n:long) -The probed function was built with the gcc \-mregparm=n option. -(The i386 kernel is built with \-mregparm=3, so systemtap considers -regparm(3) the default for kernel functions on that architecture.) - -For some architectures, the *_arg functions may reject unusually high -values of n. - -.SS QUEUE_STATS -.PP -The queue_stats tapset provides functions that, given notifications of -elementary queuing events (wait, run, done), tracks averages such as -queue length, service and wait times, utilization. The following -three functions should be called from appropriate probes, in sequence. -.TP -qs_wait:unknown (qname:string) -Record that a new request was enqueued for the given queue name. -.TP -qs_run:unknown (qname:string) -Record that a previously enqueued request was removed from the given -wait queue and is now being serviced. -.TP -qs_done:unknown (qname:string) -Record that a request originally from the given queue has completed -being serviced. -.\" XXX: qs_time -.PP -Functions with the prefix -.BR qsq_ -are for querying the statistics averaged since the first queue operation -(or when -.BR qsq_start -was called). Since statistics are often fractional, a scale parameter -is multiplies the result to a more useful scale. For some fractions, -a scale of 100 will usefully return percentage numbers. -.TP -qsq_start:unknown (qname:string) -Reset the statistics counters for the given queue, and start tracking -anew from this moment. -.TP -qsq_print:unknown (qname:string) -Print a line containing a selection of the given queue's statistics. -.TP -qsq_utilization:long (qname:string, scale:long) -Return the fraction of elapsed time when the resource was utilized. -.TP -qsq_blocked:long (qname:string, scale:long) -Return the fraction of elapsed time when the wait queue was used. -.TP -qsq_wait_queue_length:long (qname:string, scale:long) -Return the average length of the wait queue. -.TP -qsq_service_time:long (qname:string, scale:long) -Return the average time required to service a request. -.TP -qsq_wait_time:long (qname:string, scale:long) -Return the average time a request took from being enqueued to completed. -.TP -qsq_throughput:long (qname:string, scale:long) -Return the average rate of requests per scale units of time. - -.SS INDENT -.PP -The indent tapset provides functions to generate indented lines for -nested kinds of trace messages. Each line contains a relative -timestamp, and the process name / pid. -.TP -thread_indent:string (delta:long) -Return a string with an appropriate indentation for this thread. -Call it with a small positive or matching negative delta. -If this is the outermost, initial level of indentation, reset the -relative timestamp base to zero. -.TP -thread_timestamp:long () -Return an absolute timestamp value for use by the indentation function. -The default function uses -.IR gettimeofday_us - -.SS SYSTEM -.TP -system (cmd:string) -Runs a command on the system. The command will run in the background -when the current probe completes. - -.SS NUMA -.TP -addr_to_node:long (addr:long) -Return which node the given address belongs to in a NUMA system. - -.SS CTIME -.TP -ctime:string (seconds:long) -Return a simple textual rendering (e.g., "Wed\ Jun\ 30\ 21:49:008\ 1993") -of the given number of seconds since the epoch, as perhaps returned by -.IR gettimeofday_s() . - -.SS PERFMON -.TP -read_counter:long (handle:long) -Returns the value for the processor's performance counter for the associated -handle. The body of the a perfmon probe should set record -the handle being used for that event. - -.SS SOCKETS -These functions convert arguments in the socket tapset back and -forth between their numeric and string representations. -See -.IR stapprobes.socket (5) -for details. - -.TP -sock_prot_num2str:string (proto:long) -Returns the string representation of the given protocol value. -.TP -sock_prot_str2num:long (proto:string) -Returns the numeric value associated with the given protocol string. -.TP -sock_fam_num2str:string (family:long) -Returns the string representation of the given protocol family value. -.TP -sock_fam_str2num:long (family:string) -Returns the numeric value associated with the given protocol family string. -.TP -sock_state_num2str:string (state:long) -Returns the string representation of the given socket state value. -.TP -sock_state_str2num:long (state:string) -Returns the numeric value associated with the given socket state string. -.TP -sock_type_num2str:string (type:long) -Returns the string representation of the given socket type value. -.TP -sock_type_str2num:long (type:string) -Returns the numeric value associated with the given socket type string. -.TP -sock_flags_num2str:string (flags:long) -Returns the string representation of the given socket flags value. -.TP -msg_flags_num2str:string (flags:long) -Returns the string representation of the given message flags bit map. - -.SS INET -These functions convert between network (big-endian) and host byte order, like their -namesake C functions. -.TP -ntohll:long (x:long) -Convert from network to host byte order, 64-bit. -.TP -ntohl:long (x:long) -Convert from network to host byte order, 32-bit. -.TP -ntohs:long (x:long) -Convert from network to host byte order, 16-bit. -.TP -htonll:long (x:long) -Convert from host to network byte order, 64-bit. -.TP -htonl:long (x:long) -Convert from host to network byte order, 32-bit. -.TP -htons:long (x:long) -Convert from host to network byte order, 16-bit. - -.SS SIGNAL -.TP -get_sa_flags:long (act:long) -Returns the numeric value of sa_flags. -.TP -get_sa_handler:long (act:long) -Returns the numeric value of sa_handler. -.TP -sigset_mask_str:string (mask:long) -Returns the string representation of the sigset sa_mask. -.TP -is_sig_blocked:long (task:long, sig:long) -Returns 1 if the signal is currently blocked, or 0 if it is not. -.TP -sa_flags_str:string (sa_flags:long) -Returns the string representation of sa_flags. -.TP -sa_handler_str(handler) -Returns the string representation of sa_handler. If it is not SIG_DFL, SIG_IGN -or SIG_ERR, it will return the address of the handler. -.TP -signal_str(num) -Returns the string representation of the given signal number. - -.SS DEVICE -.TP -MAJOR:long(dev:long) -Extracts the major device number from a kernel device number (kdev_t). -.TP -MINOR:long(dev:long) -Extracts the minor device number from a kernel device number (kdev_t). -.TP -MKDEV:long(major:long, minor:long) -Creates a value that can be compared to a kernel device number (kdev_t). -.TP -usrdev2kerndev:long(dev:long) -Converts a user-space device number into the format used in the kernel. - -.SH FILES -.nh -.IR @prefix@/share/systemtap/tapset -.hy - -.SH SEE ALSO -.IR stap (1) diff --git a/stapprobes.3stap.in b/stapprobes.3stap.in new file mode 100644 index 00000000..f175e6e0 --- /dev/null +++ b/stapprobes.3stap.in @@ -0,0 +1,676 @@ +.\" -*- nroff -*- +.TH STAPPROBES 3stap @DATE@ "Red Hat" +.SH NAME +stapprobes \- systemtap probe points + +.\" macros +.de SAMPLE +.br +.RS +.nf +.nh +.. +.de ESAMPLE +.hy +.fi +.RE +.. + +.SH DESCRIPTION +The following sections enumerate the variety of probe points supported +by the systemtap translator, and additional aliases defined by +standard tapset scripts. +.PP +The general probe point syntax is a dotted-symbol sequence. This +allows a breakdown of the event namespace into parts, somewhat like +the Domain Name System does on the Internet. Each component +identifier may be parametrized by a string or number literal, with a +syntax like a function call. A component may include a "*" character, +to expand to a set of matching probe points. Probe aliases likewise +expand to other probe points. Each and every resulting probe point is +normally resolved to some low-level system instrumentation facility +(e.g., a kprobe address, marker, or a timer configuration), otherwise +the elaboration phase will fail. +.PP +However, a probe point may be followed by a "?" character, to indicate +that it is optional, and that no error should result if it fails to +resolve. Optionalness passes down through all levels of +alias/wildcard expansion. Alternately, a probe point may be followed +by a "!" character, to indicate that it is both optional and +sufficient. (Think vaguely of the prolog cut operator.) If it does +resolve, then no further probe points in the same comma-separated list +will be resolved. Therefore, the "!" sufficiency mark only makes +sense in a list of probe point alternatives. +.PP +Additionally, a probe point may be followed by a "if (expr)" statement, in +order to enable/disable the probe point on-the-fly. With the "if" statement, +if the "expr" is false when the probe point is hit, the whole probe body +including alias's body is skipped. The condition is stacked up through +all levels of alias/wildcard expansion. So the final condition becomes +the logical-and of conditions of all expanded alias/wildcard. + +These are all syntactically valid probe points: + +.SAMPLE +kernel.function("foo").return +syscall(22) +user.inode("/bin/vi").statement(0x2222) +end +syscall.* +kernel.function("no_such_function") ? +module("awol").function("no_such_function") ! +signal.*? if (switch) +.ESAMPLE + +Probes may be broadly classified into "synchronous" and +"asynchronous". A "synchronous" event is deemed to occur when any +processor executes an instruction matched by the specification. This +gives these probes a reference point (instruction address) from which +more contextual data may be available. Other families of probe points +refer to "asynchronous" events such as timers/counters rolling over, +where there is no fixed reference point that is related. Each probe +point specification may match multiple locations (for example, using +wildcards or aliases), and all them are then probed. A probe +declaration may also contain several comma-separated specifications, +all of which are probed. + +.SS BEGIN/END/ERROR + +The probe points +.IR begin " and " end +are defined by the translator to refer to the time of session startup +and shutdown. All "begin" probe handlers are run, in some sequence, +during the startup of the session. All global variables will have +been initialized prior to this point. All "end" probes are run, in +some sequence, during the +.I normal +shutdown of a session, such as in the aftermath of an +.I exit () +function call, or an interruption from the user. In the case of an +error-triggered shutdown, "end" probes are not run. There are no +target variables available in either context. +.PP +If the order of execution among "begin" or "end" probes is significant, +then an optional sequence number may be provided: + +.SAMPLE +begin(N) +end(N) +.ESAMPLE + +The number N may be positive or negative. The probe handlers are run in +increasing order, and the order between handlers with the same sequence +number is unspecified. When "begin" or "end" are given without a +sequence, they are effectively sequence zero. + +The +.IR error +probe point is similar to the +.IR end +probe, except that each such probe handler run when the session ends +after errors have occurred. In such cases, "end" probes are skipped, +but each "error" prober is still attempted. This kind of probe can be +used to clean up or emit a "final gasp". It may also be numerically +parametrized to set a sequence. + +.SS NEVER +The probe point +.IR never +is specially defined by the translator to mean "never". Its probe +handler is never run, though its statements are analyzed for symbol / +type correctness as usual. This probe point may be useful in +conjunction with optional probes. + +.SS SYSCALL + +The +.IR syscall.* +aliases define several hundred probes, too many to +summarize here. They are: + +.SAMPLE +syscall.NAME +.br +syscall.NAME.return +.ESAMPLE + +Generally, two probes are defined for each normal system call as listed in the +.IR syscalls(2) +manual page, one for entry and one for return. Those system calls that never +return do not have a corresponding +.IR .return +probe. +.PP +Each probe alias defines a variety of variables. Looking at the tapset source +code is the most reliable way. Generally, each variable listed in the standard +manual page is made available as a script-level variable, so +.IR syscall.open +exposes +.IR filename ", " flags ", and " mode . +In addition, a standard suite of variables is available at most aliases: +.TP +.IR argstr +A pretty-printed form of the entire argument list, without parentheses. +.TP +.IR name +The name of the system call. +.TP +.IR retstr +For return probes, a pretty-printed form of the system-call result. +.PP +Not all probe aliases obey all of these general guidelines. Please report +any bothersome ones you encounter as a bug. + + +.SS TIMERS + +Intervals defined by the standard kernel "jiffies" timer may be used +to trigger probe handlers asynchronously. Two probe point variants +are supported by the translator: + +.SAMPLE +timer.jiffies(N) +timer.jiffies(N).randomize(M) +.ESAMPLE + +The probe handler is run every N jiffies (a kernel-defined unit of +time, typically between 1 and 60 ms). If the "randomize" component is +given, a linearly distributed random value in the range [\-M..+M] is +added to N every time the handler is run. N is restricted to a +reasonable range (1 to around a million), and M is restricted to be +smaller than N. There are no target variables provided in either +context. It is possible for such probes to be run concurrently on +a multi-processor computer. +.PP +Alternatively, intervals may be specified in units of time. +There are two probe point variants similar to the jiffies timer: + +.SAMPLE +timer.ms(N) +timer.ms(N).randomize(M) +.ESAMPLE + +Here, N and M are specified in milliseconds, but the full options for units +are seconds (s/sec), milliseconds (ms/msec), microseconds (us/usec), +nanoseconds (ns/nsec), and hertz (hz). Randomization is not supported for +hertz timers. + +The actual resolution of the timers depends on the target kernel. For +kernels prior to 2.6.17, timers are limited to jiffies resolution, so +intervals are rounded up to the nearest jiffies interval. After 2.6.17, +the implementation uses hrtimers for tighter precision, though the actual +resolution will be arch-dependent. In either case, if the "randomize" +component is given, then the random value will be added to the interval +before any rounding occurs. +.PP +Profiling timers are also available to provide probes that execute on all +CPUs at the rate of the system tick (CONFIG_HZ). +This probe takes no parameters. + +.SAMPLE +timer.profile +.ESAMPLE + +Full context information of the interrupted process is available, making +this probe suitable for a time-based sampling profiler. + +.SS DWARF + +This family of probe points uses symbolic debugging information for +the target kernel/module/program, as may be found in unstripped +executables, or the separate +.I debuginfo +packages. They allow placement of probes logically into the execution +path of the target program, by specifying a set of points in the +source or object code. When a matching statement executes on any +processor, the probe handler is run in that context. +.PP +Points in a kernel, which are identified by +module, source file, line number, function name, or some +combination of these. +.PP +Here is a list of probe point families currently supported. The +.B .function +variant places a probe near the beginning of the named function, so that +parameters are available as context variables. The +.B .return +variant places a probe at the moment +.B after +the return from the named function, so the return value is available +as the "$return" context variable. The +.B .inline +modifier for +.B .function +filters the results to include only instances of inlined functions. +The +.B .call +modifier selects the opposite subset. Inline functions do not have an +identifiable return point, so +.B .return +is not supported on +.B .inline +probes. The +.B .statement +variant places a probe at the exact spot, exposing those local variables +that are visible there. + +.SAMPLE +kernel.function(PATTERN) +.br +kernel.function(PATTERN).call +.br +kernel.function(PATTERN).return +.br +kernel.function(PATTERN).inline +.br +kernel.function(PATTERN).label(LPATTERN) +.br +module(MPATTERN).function(PATTERN) +.br +module(MPATTERN).function(PATTERN).call +.br +module(MPATTERN).function(PATTERN).return +.br +module(MPATTERN).function(PATTERN).inline +.br +.br +kernel.statement(PATTERN) +.br +kernel.statement(ADDRESS).absolute +.br +module(MPATTERN).statement(PATTERN) +.ESAMPLE + +In the above list, MPATTERN stands for a string literal that aims to +identify the loaded kernel module of interest and LPATTERN stands for +a source program label. Both MPATTERN and LPATTERN may include the "*" +"[]", and "?" wildcards. +PATTERN stands for a string literal that +aims to identify a point in the program. It is made up of three +parts: +.IP \(bu 4 +The first part is the name of a function, as would appear in the +.I nm +program's output. This part may use the "*" and "?" wildcarding +operators to match multiple names. +.IP \(bu 4 +The second part is optional and begins with the "@" character. +It is followed by the path to the source file containing the function, +which may include a wildcard pattern, such as mm/slab*. +If it does not match as is, an implicit "*/" is optionally added +.I before +the pattern, so that a script need only name the last few components +of a possibly long source directory path. +.IP \(bu 4 +Finally, the third part is optional if the file name part was given, +and identifies the line number in the source file preceded by a ":" +or a "+". The line number is assumed to be an +absolute line number if preceded by a ":", or relative to the entry of +the function if preceded by a "+". +All the lines in the function can be matched with ":*". +A range of lines x through y can be matched with ":x-y". +.PP +As an alternative, PATTERN may be a numeric constant, indicating an +address. Such an address may be found from symbol tables of the +appropriate kernel / module object file. It is verified against +known statement code boundaries, and will be relocated for use at +run time. +.PP +In guru mode only, absolute kernel-space addresses may be specified with +the ".absolute" suffix. Such an address is considered already relocated, +as if it came from +.BR /proc/kallsyms , +so it cannot be checked against statement/instruction boundaries. +.PP +Some of the source-level context variables, such as function parameters, +locals, globals visible in the compilation unit, may be visible to +probe handlers. They may refer to these variables by prefixing their +name with "$" within the scripts. In addition, a special syntax +allows limited traversal of structures, pointers, and arrays. +.TP +$var +refers to an in-scope variable "var". If it's an integer-like type, +it will be cast to a 64-bit int for systemtap script use. String-like +pointers (char *) may be copied to systemtap string values using the +.IR kernel_string " or " user_string +functions. +.TP +$var\->field +traversal to a structure's field. The indirection operator +may be repeated to follow more levels of pointers. +.TP +$return +is available in return probes only for functions that are declared +with a return value. +.TP +.TP +$var[N] +indexes into an array. The index is given with a +literal number. +.TP +$$vars +expands to a character string that is equivalent to +sprintf("parm1=%x ... parmN=%x var1=%x ... varN=%x", parm1, ..., parmN, +var1, ..., varN) +.TP +$$locals +expands to a subset of $$vars for only local variables. +.TP +$$parms +expands to a subset of $$vars for only function parameters. +.TP +$$return +is available in return probes only. It expands to a string that +is equivalent to sprintf("return=%x", $return) +if the probed function has a return value, or else an empty string. +.PP +For ".return" probes, context variables other than the "$return" +value itself are only available for the function call parameters. +The expressions evaluate to the +.IR entry-time +values of those variables, since that is when a snapshot is taken. +Other local variables are not generally accessible, since by the time +a ".return" probe hits, the probed function will have already returned. + + +.SS USER-SPACE +Early prototype support for user-space probing is available in the +form of a non-symbolic probe point: +.SAMPLE +process(PID).statement(ADDRESS).absolute +.ESAMPLE +is analogous to +.IR +kernel.statement(ADDRESS).absolute +in that both use raw (unverified) virtual addresses and provide +no $variables. The target PID parameter must identify a running +process, and ADDRESS should identify a valid instruction address. +All threads of that process will be probed. +.PP +Additional user-space probing is available in the following forms: +.SAMPLE +process(PID).begin +process("PATH").begin +process.begin +process(PID).thread.begin +process("PATH").thread.begin +process.thread.begin +process(PID).end +process("PATH").end +process.end +process(PID).thread.end +process("PATH").thread.end +process.thread.end +process(PID).syscall +process("PATH").syscall +process.syscall +process(PID).syscall.return +process("PATH").syscall.return +process.syscall.return +process(PID).insn +process("PATH").insn +process(PID).insn.block +process("PATH").insn.block +process("PATH").mark("LABEL") +.ESAMPLE +.PP +A +.B .begin +probe gets called when new process described by PID or PATH gets created. +A +.B .thread.begin +probe gets called when a new thread described by PID or PATH gets created. +A +.B .end +probe gets called when process described by PID or PATH dies. +A +.B .thread.end +probe gets called when a thread described by PID or PATH dies. +A +.B .syscall +probe gets called when a thread described by PID or PATH makes a +system call. The system call number is available in the +.BR $syscall +context variable, and the first 6 arguments of the system call +are available in the +.BR $argN +(ex. $arg1, $arg2, ...) context variable. +A +.B .syscall.return +probe gets called when a thread described by PID or PATH returns from a +system call. The system call number is available in the +.BR $syscall +context variable, and the return value of the system call is available +in the +.BR $return +context variable. +A +.B .insn +probe gets called for every single-stepped instruction of the process described by PID or PATH. +A +.B .insn.block +probe gets called for every block-stepped instruction of the process described by PID or PATH. +A +.B .mark +probe gets called via a static probe which is defined in the +application by +STAP_PROBE1(handle,LABEL,arg1), which is defined in sdt.h. The handle is an application handle, +LABEL corresponds to the .mark argument, and arg1 is the argument. +STAP_PROBE1 is used for probes with 1 argument, STAP_PROBE2 is used +for probes with 2 arguments, and so on. +The arguments of the probe are available in the context variables +$arg1, $arg2, ... An alternative to using the STAP_PROBE macros is to +use the dtrace script to create custom macros. +.PP +Note that +.I PATH +names refer to executables that are searched the same way shells do: relative +to the working directory if they contain a "/" character, otherwise in +.BR $PATH . +If a process probe is specified without a PID or PATH, all user +threads are probed. + +.SS PROCFS + +These probe points allow procfs "files" in +/proc/systemtap/MODNAME to be created, read and written +.RI ( MODNAME +is the name of the systemtap module). The +.I proc +filesystem is a pseudo-filesystem which is used an an interface to +kernel data structures. There are four probe point variants supported +by the translator: + +.SAMPLE +procfs("PATH").read +procfs("PATH").write +procfs.read +procfs.write +.ESAMPLE + +.I PATH +is the file name (relative to /proc/systemtap/MODNAME) to be created. +If no +.I PATH +is specified (as in the last two variants above), +.I PATH +defaults to "command". +.PP +When a user reads /proc/systemtap/MODNAME/PATH, the corresponding +procfs +.I read +probe is triggered. The string data to be read should be assigned to +a variable named +.IR $value , +like this: + +.SAMPLE +procfs("PATH").read { $value = "100\\n" } +.ESAMPLE +.PP +When a user writes into /proc/systemtap/MODNAME/PATH, the +corresponding procfs +.I write +probe is triggered. The data the user wrote is available in the +string variable named +.IR $value , +like this: + +.SAMPLE +procfs("PATH").write { printf("user wrote: %s", $value) } +.ESAMPLE + +.SS MARKERS + +This family of probe points hooks up to static probing markers +inserted into the kernel or modules. These markers are special macro +calls inserted by kernel developers to make probing faster and more +reliable than with DWARF-based probes. Further, DWARF debugging +information is +.I not +required to probe markers. + +Marker probe points begin with +.BR kernel . +The next part names the marker itself: +.BR mark("name") . +The marker name string, which may contain the usual wildcard characters, +is matched against the names given to the marker macros when the kernel +and/or module was compiled. Optionally, you can specify +.BR format("format") . +Specifying the marker format string allows differentation between two +markers with the same name but different marker format strings. + +The handler associated with a marker-based probe may read the +optional parameters specified at the macro call site. These are +named +.BR $arg1 " through " $argNN , +where NN is the number of parameters supplied by the macro. Number +and string parameters are passed in a type-safe manner. + +The marker format string associated with a marker is available in +.BR $format . +And also the marker name string is avalable in +.BR $name . + +.SS TRACEPOINTS + +This family of probe points hooks up to static probing tracepoints +inserted into the kernel or modules. As with markers, these +tracepoints are special macro calls inserted by kernel developers to +make probing faster and more reliable than with DWARF-based probes, +and DWARF debugging information is not required to probe tracepoints. +Tracepoints have an extra advantage of more strongly-typed parameters +than markers. + +Tracepoint probes begin with +.BR kernel . +The next part names the tracepoint itself: +.BR trace("name") . +The tracepoint name string, which may contain the usual wildcard +characters, is matched against the names defined by the kernel +developers in the tracepoint header files. + +The handler associated with a tracepoint-based probe may read the +optional parameters specified at the macro call site. These are +named according to the declaration by the tracepoint author. For +example, the tracepoint probe +.BR kernel.trace("sched_switch") +provides the parameters +.BR $rq ", " $prev ", and " $next . +If the parameter is a complex type, as in a struct pointer, then a +script can access fields with the same syntax as DWARF $target +variables. Also, tracepoint parameters cannot be modified, but in +guru-mode a script may modify fields of parameters. + +The name of the tracepoint is available in +.BR $$name , +and a string of name=value pairs for all parameters of the tracepoint +is available in +.BR $$vars " or " $$parms . + +.SS PERFORMANCE MONITORING HARDWARE + +The perfmon family of probe points is used to access the performance +monitoring hardware available in modern processors. This family of +probes points needs the perfmon2 support in the kernel to access the +performance monitoring hardware. +.PP +Performance monitor hardware points begin with a +.BR perfmon ". " +The next part of the names the event being counted +.BR counter("event") . +The event names are processor implementation specific with the +execption of the generic +.BR cycles " and " instructions +events, which are available on all processors. This sets up a counter +on the processor to count the number of events occuring on the +processor. For more details on the performance monitoring events +available on a specific processor use the command perfmon2 command: + +.SAMPLE +pfmon \-l +.ESAMPLE +.TP +$counter +is a handle used in the body of the probe for operations +involving the counter associated with the probe. +.TP +read_counter +is a function that is passed the handle for the perfmon probe and returns +the current count for the event. + +.SH EXAMPLES +.PP +Here are some example probe points, defining the associated events. +.TP +begin, end, end +refers to the startup and normal shutdown of the session. In this +case, the handler would run once during startup and twice during +shutdown. +.TP +timer.jiffies(1000).randomize(200) +refers to a periodic interrupt, every 1000 +/\- 200 jiffies. +.TP +kernel.function("*init*"), kernel.function("*exit*") +refers to all kernel functions with "init" or "exit" in the name. +.TP +kernel.function("*@kernel/sched.c:240") +refers to any functions within the "kernel/sched.c" file that span +line 240. +.TP +kernel.mark("getuid") +refers to an STAP_MARK(getuid, ...) macro call in the kernel. +.TP +module("usb*").function("*sync*").return +refers to the moment of return from all functions with "sync" in the +name in any of the USB drivers. +.TP +kernel.statement(0xc0044852) +refers to the first byte of the statement whose compiled instructions +include the given address in the kernel. +.TP +kernel.statement("*@kernel/sched.c:2917") +refers to the statement of line 2917 within "kernel/sched.c". +.TP +kernel.statement("bio_init@fs/bio.c+3") +refers to the statement at line bio_init+3 within "fs/bio.c". +.TP +syscall.*.return +refers to the group of probe aliases with any name in the third position + +.SH SEE ALSO +.IR stap (1), +.IR stapprobes.iosched (3stap), +.IR stapprobes.netdev (3stap), +.IR stapprobes.nfs (3stap), +.IR stapprobes.nfsd (3stap), +.IR stapprobes.pagefault (3stap), +.IR stapprobes.process (3stap), +.IR stapprobes.rpc (3stap), +.IR stapprobes.scsi (3stap), +.IR stapprobes.signal (3stap), +.IR stapprobes.socket (3stap), +.IR stapprobes.tcp (3stap), +.IR stapprobes.udp (3stap), +.IR proc (3stap) diff --git a/stapprobes.5.in b/stapprobes.5.in deleted file mode 100644 index f4a872cb..00000000 --- a/stapprobes.5.in +++ /dev/null @@ -1,676 +0,0 @@ -.\" -*- nroff -*- -.TH STAPPROBES 5 @DATE@ "Red Hat" -.SH NAME -stapprobes \- systemtap probe points - -.\" macros -.de SAMPLE -.br -.RS -.nf -.nh -.. -.de ESAMPLE -.hy -.fi -.RE -.. - -.SH DESCRIPTION -The following sections enumerate the variety of probe points supported -by the systemtap translator, and additional aliases defined by -standard tapset scripts. -.PP -The general probe point syntax is a dotted-symbol sequence. This -allows a breakdown of the event namespace into parts, somewhat like -the Domain Name System does on the Internet. Each component -identifier may be parametrized by a string or number literal, with a -syntax like a function call. A component may include a "*" character, -to expand to a set of matching probe points. Probe aliases likewise -expand to other probe points. Each and every resulting probe point is -normally resolved to some low-level system instrumentation facility -(e.g., a kprobe address, marker, or a timer configuration), otherwise -the elaboration phase will fail. -.PP -However, a probe point may be followed by a "?" character, to indicate -that it is optional, and that no error should result if it fails to -resolve. Optionalness passes down through all levels of -alias/wildcard expansion. Alternately, a probe point may be followed -by a "!" character, to indicate that it is both optional and -sufficient. (Think vaguely of the prolog cut operator.) If it does -resolve, then no further probe points in the same comma-separated list -will be resolved. Therefore, the "!" sufficiency mark only makes -sense in a list of probe point alternatives. -.PP -Additionally, a probe point may be followed by a "if (expr)" statement, in -order to enable/disable the probe point on-the-fly. With the "if" statement, -if the "expr" is false when the probe point is hit, the whole probe body -including alias's body is skipped. The condition is stacked up through -all levels of alias/wildcard expansion. So the final condition becomes -the logical-and of conditions of all expanded alias/wildcard. - -These are all syntactically valid probe points: - -.SAMPLE -kernel.function("foo").return -syscall(22) -user.inode("/bin/vi").statement(0x2222) -end -syscall.* -kernel.function("no_such_function") ? -module("awol").function("no_such_function") ! -signal.*? if (switch) -.ESAMPLE - -Probes may be broadly classified into "synchronous" and -"asynchronous". A "synchronous" event is deemed to occur when any -processor executes an instruction matched by the specification. This -gives these probes a reference point (instruction address) from which -more contextual data may be available. Other families of probe points -refer to "asynchronous" events such as timers/counters rolling over, -where there is no fixed reference point that is related. Each probe -point specification may match multiple locations (for example, using -wildcards or aliases), and all them are then probed. A probe -declaration may also contain several comma-separated specifications, -all of which are probed. - -.SS BEGIN/END/ERROR - -The probe points -.IR begin " and " end -are defined by the translator to refer to the time of session startup -and shutdown. All "begin" probe handlers are run, in some sequence, -during the startup of the session. All global variables will have -been initialized prior to this point. All "end" probes are run, in -some sequence, during the -.I normal -shutdown of a session, such as in the aftermath of an -.I exit () -function call, or an interruption from the user. In the case of an -error-triggered shutdown, "end" probes are not run. There are no -target variables available in either context. -.PP -If the order of execution among "begin" or "end" probes is significant, -then an optional sequence number may be provided: - -.SAMPLE -begin(N) -end(N) -.ESAMPLE - -The number N may be positive or negative. The probe handlers are run in -increasing order, and the order between handlers with the same sequence -number is unspecified. When "begin" or "end" are given without a -sequence, they are effectively sequence zero. - -The -.IR error -probe point is similar to the -.IR end -probe, except that each such probe handler run when the session ends -after errors have occurred. In such cases, "end" probes are skipped, -but each "error" prober is still attempted. This kind of probe can be -used to clean up or emit a "final gasp". It may also be numerically -parametrized to set a sequence. - -.SS NEVER -The probe point -.IR never -is specially defined by the translator to mean "never". Its probe -handler is never run, though its statements are analyzed for symbol / -type correctness as usual. This probe point may be useful in -conjunction with optional probes. - -.SS SYSCALL - -The -.IR syscall.* -aliases define several hundred probes, too many to -summarize here. They are: - -.SAMPLE -syscall.NAME -.br -syscall.NAME.return -.ESAMPLE - -Generally, two probes are defined for each normal system call as listed in the -.IR syscalls(2) -manual page, one for entry and one for return. Those system calls that never -return do not have a corresponding -.IR .return -probe. -.PP -Each probe alias defines a variety of variables. Looking at the tapset source -code is the most reliable way. Generally, each variable listed in the standard -manual page is made available as a script-level variable, so -.IR syscall.open -exposes -.IR filename ", " flags ", and " mode . -In addition, a standard suite of variables is available at most aliases: -.TP -.IR argstr -A pretty-printed form of the entire argument list, without parentheses. -.TP -.IR name -The name of the system call. -.TP -.IR retstr -For return probes, a pretty-printed form of the system-call result. -.PP -Not all probe aliases obey all of these general guidelines. Please report -any bothersome ones you encounter as a bug. - - -.SS TIMERS - -Intervals defined by the standard kernel "jiffies" timer may be used -to trigger probe handlers asynchronously. Two probe point variants -are supported by the translator: - -.SAMPLE -timer.jiffies(N) -timer.jiffies(N).randomize(M) -.ESAMPLE - -The probe handler is run every N jiffies (a kernel-defined unit of -time, typically between 1 and 60 ms). If the "randomize" component is -given, a linearly distributed random value in the range [\-M..+M] is -added to N every time the handler is run. N is restricted to a -reasonable range (1 to around a million), and M is restricted to be -smaller than N. There are no target variables provided in either -context. It is possible for such probes to be run concurrently on -a multi-processor computer. -.PP -Alternatively, intervals may be specified in units of time. -There are two probe point variants similar to the jiffies timer: - -.SAMPLE -timer.ms(N) -timer.ms(N).randomize(M) -.ESAMPLE - -Here, N and M are specified in milliseconds, but the full options for units -are seconds (s/sec), milliseconds (ms/msec), microseconds (us/usec), -nanoseconds (ns/nsec), and hertz (hz). Randomization is not supported for -hertz timers. - -The actual resolution of the timers depends on the target kernel. For -kernels prior to 2.6.17, timers are limited to jiffies resolution, so -intervals are rounded up to the nearest jiffies interval. After 2.6.17, -the implementation uses hrtimers for tighter precision, though the actual -resolution will be arch-dependent. In either case, if the "randomize" -component is given, then the random value will be added to the interval -before any rounding occurs. -.PP -Profiling timers are also available to provide probes that execute on all -CPUs at the rate of the system tick (CONFIG_HZ). -This probe takes no parameters. - -.SAMPLE -timer.profile -.ESAMPLE - -Full context information of the interrupted process is available, making -this probe suitable for a time-based sampling profiler. - -.SS DWARF - -This family of probe points uses symbolic debugging information for -the target kernel/module/program, as may be found in unstripped -executables, or the separate -.I debuginfo -packages. They allow placement of probes logically into the execution -path of the target program, by specifying a set of points in the -source or object code. When a matching statement executes on any -processor, the probe handler is run in that context. -.PP -Points in a kernel, which are identified by -module, source file, line number, function name, or some -combination of these. -.PP -Here is a list of probe point families currently supported. The -.B .function -variant places a probe near the beginning of the named function, so that -parameters are available as context variables. The -.B .return -variant places a probe at the moment -.B after -the return from the named function, so the return value is available -as the "$return" context variable. The -.B .inline -modifier for -.B .function -filters the results to include only instances of inlined functions. -The -.B .call -modifier selects the opposite subset. Inline functions do not have an -identifiable return point, so -.B .return -is not supported on -.B .inline -probes. The -.B .statement -variant places a probe at the exact spot, exposing those local variables -that are visible there. - -.SAMPLE -kernel.function(PATTERN) -.br -kernel.function(PATTERN).call -.br -kernel.function(PATTERN).return -.br -kernel.function(PATTERN).inline -.br -kernel.function(PATTERN).label(LPATTERN) -.br -module(MPATTERN).function(PATTERN) -.br -module(MPATTERN).function(PATTERN).call -.br -module(MPATTERN).function(PATTERN).return -.br -module(MPATTERN).function(PATTERN).inline -.br -.br -kernel.statement(PATTERN) -.br -kernel.statement(ADDRESS).absolute -.br -module(MPATTERN).statement(PATTERN) -.ESAMPLE - -In the above list, MPATTERN stands for a string literal that aims to -identify the loaded kernel module of interest and LPATTERN stands for -a source program label. Both MPATTERN and LPATTERN may include the "*" -"[]", and "?" wildcards. -PATTERN stands for a string literal that -aims to identify a point in the program. It is made up of three -parts: -.IP \(bu 4 -The first part is the name of a function, as would appear in the -.I nm -program's output. This part may use the "*" and "?" wildcarding -operators to match multiple names. -.IP \(bu 4 -The second part is optional and begins with the "@" character. -It is followed by the path to the source file containing the function, -which may include a wildcard pattern, such as mm/slab*. -If it does not match as is, an implicit "*/" is optionally added -.I before -the pattern, so that a script need only name the last few components -of a possibly long source directory path. -.IP \(bu 4 -Finally, the third part is optional if the file name part was given, -and identifies the line number in the source file preceded by a ":" -or a "+". The line number is assumed to be an -absolute line number if preceded by a ":", or relative to the entry of -the function if preceded by a "+". -All the lines in the function can be matched with ":*". -A range of lines x through y can be matched with ":x-y". -.PP -As an alternative, PATTERN may be a numeric constant, indicating an -address. Such an address may be found from symbol tables of the -appropriate kernel / module object file. It is verified against -known statement code boundaries, and will be relocated for use at -run time. -.PP -In guru mode only, absolute kernel-space addresses may be specified with -the ".absolute" suffix. Such an address is considered already relocated, -as if it came from -.BR /proc/kallsyms , -so it cannot be checked against statement/instruction boundaries. -.PP -Some of the source-level context variables, such as function parameters, -locals, globals visible in the compilation unit, may be visible to -probe handlers. They may refer to these variables by prefixing their -name with "$" within the scripts. In addition, a special syntax -allows limited traversal of structures, pointers, and arrays. -.TP -$var -refers to an in-scope variable "var". If it's an integer-like type, -it will be cast to a 64-bit int for systemtap script use. String-like -pointers (char *) may be copied to systemtap string values using the -.IR kernel_string " or " user_string -functions. -.TP -$var\->field -traversal to a structure's field. The indirection operator -may be repeated to follow more levels of pointers. -.TP -$return -is available in return probes only for functions that are declared -with a return value. -.TP -.TP -$var[N] -indexes into an array. The index is given with a -literal number. -.TP -$$vars -expands to a character string that is equivalent to -sprintf("parm1=%x ... parmN=%x var1=%x ... varN=%x", parm1, ..., parmN, -var1, ..., varN) -.TP -$$locals -expands to a subset of $$vars for only local variables. -.TP -$$parms -expands to a subset of $$vars for only function parameters. -.TP -$$return -is available in return probes only. It expands to a string that -is equivalent to sprintf("return=%x", $return) -if the probed function has a return value, or else an empty string. -.PP -For ".return" probes, context variables other than the "$return" -value itself are only available for the function call parameters. -The expressions evaluate to the -.IR entry-time -values of those variables, since that is when a snapshot is taken. -Other local variables are not generally accessible, since by the time -a ".return" probe hits, the probed function will have already returned. - - -.SS USER-SPACE -Early prototype support for user-space probing is available in the -form of a non-symbolic probe point: -.SAMPLE -process(PID).statement(ADDRESS).absolute -.ESAMPLE -is analogous to -.IR -kernel.statement(ADDRESS).absolute -in that both use raw (unverified) virtual addresses and provide -no $variables. The target PID parameter must identify a running -process, and ADDRESS should identify a valid instruction address. -All threads of that process will be probed. -.PP -Additional user-space probing is available in the following forms: -.SAMPLE -process(PID).begin -process("PATH").begin -process.begin -process(PID).thread.begin -process("PATH").thread.begin -process.thread.begin -process(PID).end -process("PATH").end -process.end -process(PID).thread.end -process("PATH").thread.end -process.thread.end -process(PID).syscall -process("PATH").syscall -process.syscall -process(PID).syscall.return -process("PATH").syscall.return -process.syscall.return -process(PID).insn -process("PATH").insn -process(PID).insn.block -process("PATH").insn.block -process("PATH").mark("LABEL") -.ESAMPLE -.PP -A -.B .begin -probe gets called when new process described by PID or PATH gets created. -A -.B .thread.begin -probe gets called when a new thread described by PID or PATH gets created. -A -.B .end -probe gets called when process described by PID or PATH dies. -A -.B .thread.end -probe gets called when a thread described by PID or PATH dies. -A -.B .syscall -probe gets called when a thread described by PID or PATH makes a -system call. The system call number is available in the -.BR $syscall -context variable, and the first 6 arguments of the system call -are available in the -.BR $argN -(ex. $arg1, $arg2, ...) context variable. -A -.B .syscall.return -probe gets called when a thread described by PID or PATH returns from a -system call. The system call number is available in the -.BR $syscall -context variable, and the return value of the system call is available -in the -.BR $return -context variable. -A -.B .insn -probe gets called for every single-stepped instruction of the process described by PID or PATH. -A -.B .insn.block -probe gets called for every block-stepped instruction of the process described by PID or PATH. -A -.B .mark -probe gets called via a static probe which is defined in the -application by -STAP_PROBE1(handle,LABEL,arg1), which is defined in sdt.h. The handle is an application handle, -LABEL corresponds to the .mark argument, and arg1 is the argument. -STAP_PROBE1 is used for probes with 1 argument, STAP_PROBE2 is used -for probes with 2 arguments, and so on. -The arguments of the probe are available in the context variables -$arg1, $arg2, ... An alternative to using the STAP_PROBE macros is to -use the dtrace script to create custom macros. -.PP -Note that -.I PATH -names refer to executables that are searched the same way shells do: relative -to the working directory if they contain a "/" character, otherwise in -.BR $PATH . -If a process probe is specified without a PID or PATH, all user -threads are probed. - -.SS PROCFS - -These probe points allow procfs "files" in -/proc/systemtap/MODNAME to be created, read and written -.RI ( MODNAME -is the name of the systemtap module). The -.I proc -filesystem is a pseudo-filesystem which is used an an interface to -kernel data structures. There are four probe point variants supported -by the translator: - -.SAMPLE -procfs("PATH").read -procfs("PATH").write -procfs.read -procfs.write -.ESAMPLE - -.I PATH -is the file name (relative to /proc/systemtap/MODNAME) to be created. -If no -.I PATH -is specified (as in the last two variants above), -.I PATH -defaults to "command". -.PP -When a user reads /proc/systemtap/MODNAME/PATH, the corresponding -procfs -.I read -probe is triggered. The string data to be read should be assigned to -a variable named -.IR $value , -like this: - -.SAMPLE -procfs("PATH").read { $value = "100\\n" } -.ESAMPLE -.PP -When a user writes into /proc/systemtap/MODNAME/PATH, the -corresponding procfs -.I write -probe is triggered. The data the user wrote is available in the -string variable named -.IR $value , -like this: - -.SAMPLE -procfs("PATH").write { printf("user wrote: %s", $value) } -.ESAMPLE - -.SS MARKERS - -This family of probe points hooks up to static probing markers -inserted into the kernel or modules. These markers are special macro -calls inserted by kernel developers to make probing faster and more -reliable than with DWARF-based probes. Further, DWARF debugging -information is -.I not -required to probe markers. - -Marker probe points begin with -.BR kernel . -The next part names the marker itself: -.BR mark("name") . -The marker name string, which may contain the usual wildcard characters, -is matched against the names given to the marker macros when the kernel -and/or module was compiled. Optionally, you can specify -.BR format("format") . -Specifying the marker format string allows differentation between two -markers with the same name but different marker format strings. - -The handler associated with a marker-based probe may read the -optional parameters specified at the macro call site. These are -named -.BR $arg1 " through " $argNN , -where NN is the number of parameters supplied by the macro. Number -and string parameters are passed in a type-safe manner. - -The marker format string associated with a marker is available in -.BR $format . -And also the marker name string is avalable in -.BR $name . - -.SS TRACEPOINTS - -This family of probe points hooks up to static probing tracepoints -inserted into the kernel or modules. As with markers, these -tracepoints are special macro calls inserted by kernel developers to -make probing faster and more reliable than with DWARF-based probes, -and DWARF debugging information is not required to probe tracepoints. -Tracepoints have an extra advantage of more strongly-typed parameters -than markers. - -Tracepoint probes begin with -.BR kernel . -The next part names the tracepoint itself: -.BR trace("name") . -The tracepoint name string, which may contain the usual wildcard -characters, is matched against the names defined by the kernel -developers in the tracepoint header files. - -The handler associated with a tracepoint-based probe may read the -optional parameters specified at the macro call site. These are -named according to the declaration by the tracepoint author. For -example, the tracepoint probe -.BR kernel.trace("sched_switch") -provides the parameters -.BR $rq ", " $prev ", and " $next . -If the parameter is a complex type, as in a struct pointer, then a -script can access fields with the same syntax as DWARF $target -variables. Also, tracepoint parameters cannot be modified, but in -guru-mode a script may modify fields of parameters. - -The name of the tracepoint is available in -.BR $$name , -and a string of name=value pairs for all parameters of the tracepoint -is available in -.BR $$vars " or " $$parms . - -.SS PERFORMANCE MONITORING HARDWARE - -The perfmon family of probe points is used to access the performance -monitoring hardware available in modern processors. This family of -probes points needs the perfmon2 support in the kernel to access the -performance monitoring hardware. -.PP -Performance monitor hardware points begin with a -.BR perfmon ". " -The next part of the names the event being counted -.BR counter("event") . -The event names are processor implementation specific with the -execption of the generic -.BR cycles " and " instructions -events, which are available on all processors. This sets up a counter -on the processor to count the number of events occuring on the -processor. For more details on the performance monitoring events -available on a specific processor use the command perfmon2 command: - -.SAMPLE -pfmon \-l -.ESAMPLE -.TP -$counter -is a handle used in the body of the probe for operations -involving the counter associated with the probe. -.TP -read_counter -is a function that is passed the handle for the perfmon probe and returns -the current count for the event. - -.SH EXAMPLES -.PP -Here are some example probe points, defining the associated events. -.TP -begin, end, end -refers to the startup and normal shutdown of the session. In this -case, the handler would run once during startup and twice during -shutdown. -.TP -timer.jiffies(1000).randomize(200) -refers to a periodic interrupt, every 1000 +/\- 200 jiffies. -.TP -kernel.function("*init*"), kernel.function("*exit*") -refers to all kernel functions with "init" or "exit" in the name. -.TP -kernel.function("*@kernel/sched.c:240") -refers to any functions within the "kernel/sched.c" file that span -line 240. -.TP -kernel.mark("getuid") -refers to an STAP_MARK(getuid, ...) macro call in the kernel. -.TP -module("usb*").function("*sync*").return -refers to the moment of return from all functions with "sync" in the -name in any of the USB drivers. -.TP -kernel.statement(0xc0044852) -refers to the first byte of the statement whose compiled instructions -include the given address in the kernel. -.TP -kernel.statement("*@kernel/sched.c:2917") -refers to the statement of line 2917 within "kernel/sched.c". -.TP -kernel.statement("bio_init@fs/bio.c+3") -refers to the statement at line bio_init+3 within "fs/bio.c". -.TP -syscall.*.return -refers to the group of probe aliases with any name in the third position - -.SH SEE ALSO -.IR stap (1), -.IR stapprobes.iosched (5), -.IR stapprobes.netdev (5), -.IR stapprobes.nfs (5), -.IR stapprobes.nfsd (5), -.IR stapprobes.pagefault (5), -.IR stapprobes.process (5), -.IR stapprobes.rpc (5), -.IR stapprobes.scsi (5), -.IR stapprobes.signal (5), -.IR stapprobes.socket (5), -.IR stapprobes.tcp (5), -.IR stapprobes.udp (5), -.IR proc (5) diff --git a/staprun.8.in b/staprun.8.in index 01ef2320..5d2a72a6 100644 --- a/staprun.8.in +++ b/staprun.8.in @@ -103,7 +103,7 @@ module. .SH EXAMPLES See the -.IR stapex (5) +.IR stapex (3stap) manual page for a collection of sample scripts. .PP Here is a very basic example of how to use @@ -167,9 +167,9 @@ located in this directory. This directory should be owned by the root user and not be world writable. .SH SEE ALSO .IR stap (1), -.IR stapprobes (5), -.IR stapfuncs (5), -.IR stapex (5), +.IR stapprobes (3stap), +.IR stapfuncs (3stap), +.IR stapex (3stap), .SH BUGS Use the Bugzilla link off of the project web page or our mailing list. diff --git a/stapvars.3stap.in b/stapvars.3stap.in new file mode 100644 index 00000000..0ece000f --- /dev/null +++ b/stapvars.3stap.in @@ -0,0 +1,51 @@ +.\" -*- nroff -*- +.TH STAPVARS 3stap @DATE@ "Red Hat" +.SH NAME +stapvars \- systemtap variables + +.SH DESCRIPTION +The following sections enumerate the public variables provided by +standard tapsets installed under @prefix@/share/systemtap/tapset. Each +variable is described with a type, and its behavior/restrictions. +The syntax is the same as printed with the +.IR stap " option " \-p2 . +Examples: + +.TP +example1:long +Variable "example1" contains an integer. + +.TP +example2:string [long] +Variable "example2" is an array of strings, indexed by integers. + +.SS ARGV + +.TP +argc:long +Contains the value of the +.BR +$# +value: the number of command line arguments passed to the systemtap script. +It is initialized with an implicit begin(-1) probe. + +.TP +argv:string [long] +Contains each command line argument as a string. argv[1] will equal @1 if +there was at least one command line argument. Arguments beyond #32 are not +transcribed, and produce a warning message within the begin(-1) probe that +initializes this array. + +.SS NULL + +.TP +NULL:long +Simply defined as the number 0. + +.SH FILES +.nh +.IR @prefix@/share/systemtap/tapset +.hy + +.SH SEE ALSO +.IR stap (1) diff --git a/stapvars.5.in b/stapvars.5.in deleted file mode 100644 index 94e47667..00000000 --- a/stapvars.5.in +++ /dev/null @@ -1,51 +0,0 @@ -.\" -*- nroff -*- -.TH STAPVARS 5 @DATE@ "Red Hat" -.SH NAME -stapvars \- systemtap variables - -.SH DESCRIPTION -The following sections enumerate the public variables provided by -standard tapsets installed under @prefix@/share/systemtap/tapset. Each -variable is described with a type, and its behavior/restrictions. -The syntax is the same as printed with the -.IR stap " option " \-p2 . -Examples: - -.TP -example1:long -Variable "example1" contains an integer. - -.TP -example2:string [long] -Variable "example2" is an array of strings, indexed by integers. - -.SS ARGV - -.TP -argc:long -Contains the value of the -.BR -$# -value: the number of command line arguments passed to the systemtap script. -It is initialized with an implicit begin(-1) probe. - -.TP -argv:string [long] -Contains each command line argument as a string. argv[1] will equal @1 if -there was at least one command line argument. Arguments beyond #32 are not -transcribed, and produce a warning message within the begin(-1) probe that -initializes this array. - -.SS NULL - -.TP -NULL:long -Simply defined as the number 0. - -.SH FILES -.nh -.IR @prefix@/share/systemtap/tapset -.hy - -.SH SEE ALSO -.IR stap (1) diff --git a/systemtap.spec b/systemtap.spec index cbf36662..020cd001 100644 --- a/systemtap.spec +++ b/systemtap.spec @@ -245,13 +245,12 @@ exit 0 %if %{with_docs} %doc docs.installed/*.pdf %doc docs.installed/tapsets -%{_mandir}/man3/* %endif %{_bindir}/stap %{_bindir}/stap-report %{_mandir}/man1/* -%{_mandir}/man5/* +%{_mandir}/man3/* %dir %{_datadir}/%{name} %{_datadir}/%{name}/runtime -- cgit From 64c6aab0a7992ed950d01fec0d9592630af39ca4 Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Tue, 24 Mar 2009 12:40:05 -0400 Subject: Keep static probe parameters visible while inlining. * includes/sys/sdt.h (STAP_PROBEN): Revive the STAP_LABEL macro to prevent inlining to keep probe parameters visible. Use +rm constraints. * tapsets.cxx (build): Use .probes section for all uses of static probes. --- includes/sys/sdt.h | 217 ++++++++++++++++++++++++++++++----------------------- tapsets.cxx | 13 +--- 2 files changed, 126 insertions(+), 104 deletions(-) diff --git a/includes/sys/sdt.h b/includes/sys/sdt.h index 3da4ff66..ac24b6fb 100644 --- a/includes/sys/sdt.h +++ b/includes/sys/sdt.h @@ -13,180 +13,209 @@ #include #include -#define STAP_PROBE_DATA_(probe,dataop) \ +#define STAP_PROBE_DATA_(probe) \ __asm__ volatile (".section .probes\n" \ "\t.align 8\n" \ "1:\n\t.asciz " #probe "\n" \ "\t.align 4\n" \ "\t.int 0x31425250\n" \ "\t.align 8\n" \ - "\t" #dataop " 1b\n" \ + "\t.long 1b\n" \ "\t.align 8\n" \ - "\t" #dataop " 2f\n" \ + "\t.long 2f\n" \ "\t.previous\n") -#if _LP64 #define STAP_PROBE_DATA(probe) \ - STAP_PROBE_DATA_(#probe,.quad) + STAP_PROBE_DATA_(#probe) + +/* These baroque macros are used to create a unique label. */ +#define STAP_CONCAT(a,b) a ## b +#define STAP_LABEL_PREFIX(p) _stapprobe1_ ## p +/* __COUNTER__ is not present in gcc 4.1 */ +#if __GNUC__ == 4 && __GNUC_MINOR__ >= 3 +#define STAP_COUNTER STAP_CONCAT(__,COUNTER__) #else -#define STAP_PROBE_DATA(probe) \ - STAP_PROBE_DATA_(#probe,.long) +#define STAP_COUNTER STAP_CONCAT(__,LINE__) #endif +#define STAP_LABEL(a,b) STAP_CONCAT(a,b) -#define STAP_PROBE_(probe) \ +#define STAP_PROBE_(probe) \ do { \ STAP_PROBE_DATA(probe); \ - __asm__ volatile ("2:\n" \ + __asm__ volatile ("2:\n" \ "\tnop"); \ } while (0) -#define STAP_PROBE1_(probe,parm1) \ +/* Taking the address of a local label prevents the containing function + from being inlined, which keeps the parameters visible. */ + +#define STAP_PROBE1_(probe,label,parm1) \ do { \ - volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ + __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + volatile __typeof__((parm1)) arg1 = parm1; \ STAP_PROBE_DATA(probe); \ + label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 */" :: "X"(arg1)); \ + "\tnop /* %0 */" : "+rm"(arg1)); \ } while (0) -#define STAP_PROBE2_(probe,parm1,parm2) \ +#define STAP_PROBE2_(probe,label,parm1,parm2) \ do { \ - volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ - volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ + __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + volatile __typeof__((parm1)) arg1 = parm1; \ + volatile __typeof__((parm2)) arg2 = parm2; \ STAP_PROBE_DATA(probe); \ + label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 */" :: "X"(arg1), "X"(arg2)); \ + "\tnop /* %0 %1 */" : "+rm"(arg1), "+rm"(arg2)); \ } while (0) -#define STAP_PROBE3_(probe,parm1,parm2,parm3) \ +#define STAP_PROBE3_(probe,label,parm1,parm2,parm3) \ do { \ - volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ - volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ - volatile __typeof__((parm3)) arg3 __attribute__ ((unused)) = parm3; \ + __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + volatile __typeof__((parm1)) arg1 = parm1; \ + volatile __typeof__((parm2)) arg2 = parm2; \ + volatile __typeof__((parm3)) arg3 = parm3; \ STAP_PROBE_DATA(probe); \ + label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 */" :: "X"(arg1), "X"(arg2), "X"(arg3)); \ + "\tnop /* %0 %1 %2 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3)); \ } while (0) -#define STAP_PROBE4_(probe,parm1,parm2,parm3,parm4) \ +#define STAP_PROBE4_(probe,label,parm1,parm2,parm3,parm4) \ do { \ - volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ - volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ - volatile __typeof__((parm3)) arg3 __attribute__ ((unused)) = parm3; \ - volatile __typeof__((parm4)) arg4 __attribute__ ((unused)) = parm4; \ + __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + volatile __typeof__((parm1)) arg1 = parm1; \ + volatile __typeof__((parm2)) arg2 = parm2; \ + volatile __typeof__((parm3)) arg3 = parm3; \ + volatile __typeof__((parm4)) arg4 = parm4; \ STAP_PROBE_DATA(probe); \ + label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4)); \ + "\tnop /* %0 %1 %2 %3 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4)); \ } while (0) -#define STAP_PROBE5_(probe,parm1,parm2,parm3,parm4,parm5) \ +#define STAP_PROBE5_(probe,label,parm1,parm2,parm3,parm4,parm5) \ do { \ - volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ - volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ - volatile __typeof__((parm3)) arg3 __attribute__ ((unused)) = parm3; \ - volatile __typeof__((parm4)) arg4 __attribute__ ((unused)) = parm4; \ - volatile __typeof__((parm5)) arg5 __attribute__ ((unused)) = parm5; \ + __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + volatile __typeof__((parm1)) arg1 = parm1; \ + volatile __typeof__((parm2)) arg2 = parm2; \ + volatile __typeof__((parm3)) arg3 = parm3; \ + volatile __typeof__((parm4)) arg4 = parm4; \ + volatile __typeof__((parm5)) arg5 = parm5; \ STAP_PROBE_DATA(probe); \ + label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 %4 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5)); \ + "\tnop /* %0 %1 %2 %3 %4 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4), "+rm"(arg5)); \ } while (0) -#define STAP_PROBE6_(probe,parm1,parm2,parm3,parm4,parm5,parm6) \ +#define STAP_PROBE6_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6) \ do { \ - volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ - volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ - volatile __typeof__((parm3)) arg3 __attribute__ ((unused)) = parm3; \ - volatile __typeof__((parm4)) arg4 __attribute__ ((unused)) = parm4; \ - volatile __typeof__((parm5)) arg5 __attribute__ ((unused)) = parm5; \ - volatile __typeof__((parm6)) arg6 __attribute__ ((unused)) = parm6; \ + __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + volatile __typeof__((parm1)) arg1 = parm1; \ + volatile __typeof__((parm2)) arg2 = parm2; \ + volatile __typeof__((parm3)) arg3 = parm3; \ + volatile __typeof__((parm4)) arg4 = parm4; \ + volatile __typeof__((parm5)) arg5 = parm5; \ + volatile __typeof__((parm6)) arg6 = parm6; \ STAP_PROBE_DATA(probe); \ + label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 %4 %5 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5), "X"(arg6)); \ + "\tnop /* %0 %1 %2 %3 %4 %5 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4), "+rm"(arg5), "+rm"(arg6)); \ } while (0) -#define STAP_PROBE7_(probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7) \ +#define STAP_PROBE7_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7) \ do { \ - volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ - volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ - volatile __typeof__((parm3)) arg3 __attribute__ ((unused)) = parm3; \ - volatile __typeof__((parm4)) arg4 __attribute__ ((unused)) = parm4; \ - volatile __typeof__((parm5)) arg5 __attribute__ ((unused)) = parm5; \ - volatile __typeof__((parm6)) arg6 __attribute__ ((unused)) = parm6; \ - volatile __typeof__((parm7)) arg7 __attribute__ ((unused)) = parm7; \ + __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + volatile __typeof__((parm1)) arg1 = parm1; \ + volatile __typeof__((parm2)) arg2 = parm2; \ + volatile __typeof__((parm3)) arg3 = parm3; \ + volatile __typeof__((parm4)) arg4 = parm4; \ + volatile __typeof__((parm5)) arg5 = parm5; \ + volatile __typeof__((parm6)) arg6 = parm6; \ + volatile __typeof__((parm7)) arg7 = parm7; \ STAP_PROBE_DATA(probe); \ + label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 %4 %5 %6 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5), "X"(arg6), "X"(arg7)); \ + "\tnop /* %0 %1 %2 %3 %4 %5 %6 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4), "+rm"(arg5), "+rm"(arg6), "+rm"(arg7)); \ } while (0) -#define STAP_PROBE8_(probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) \ +#define STAP_PROBE8_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) \ do { \ - volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ - volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ - volatile __typeof__((parm3)) arg3 __attribute__ ((unused)) = parm3; \ - volatile __typeof__((parm4)) arg4 __attribute__ ((unused)) = parm4; \ - volatile __typeof__((parm5)) arg5 __attribute__ ((unused)) = parm5; \ - volatile __typeof__((parm6)) arg6 __attribute__ ((unused)) = parm6; \ - volatile __typeof__((parm7)) arg7 __attribute__ ((unused)) = parm7; \ - volatile __typeof__((parm8)) arg8 __attribute__ ((unused)) = parm8; \ + __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + volatile __typeof__((parm1)) arg1 = parm1; \ + volatile __typeof__((parm2)) arg2 = parm2; \ + volatile __typeof__((parm3)) arg3 = parm3; \ + volatile __typeof__((parm4)) arg4 = parm4; \ + volatile __typeof__((parm5)) arg5 = parm5; \ + volatile __typeof__((parm6)) arg6 = parm6; \ + volatile __typeof__((parm7)) arg7 = parm7; \ + volatile __typeof__((parm8)) arg8 = parm8; \ STAP_PROBE_DATA(probe); \ + label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5), "X"(arg6), "X"(arg7), "X"(arg8)); \ + "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4), "+rm"(arg5), "+rm"(arg6), "+rm"(arg7), "+rm"(arg8)); \ } while (0) -#define STAP_PROBE9_(probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) \ +#define STAP_PROBE9_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) \ do { \ - volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ - volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ - volatile __typeof__((parm3)) arg3 __attribute__ ((unused)) = parm3; \ - volatile __typeof__((parm4)) arg4 __attribute__ ((unused)) = parm4; \ - volatile __typeof__((parm5)) arg5 __attribute__ ((unused)) = parm5; \ - volatile __typeof__((parm6)) arg6 __attribute__ ((unused)) = parm6; \ - volatile __typeof__((parm7)) arg7 __attribute__ ((unused)) = parm7; \ - volatile __typeof__((parm8)) arg8 __attribute__ ((unused)) = parm8; \ - volatile __typeof__((parm9)) arg9 __attribute__ ((unused)) = parm9; \ + __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + volatile __typeof__((parm1)) arg1 = parm1; \ + volatile __typeof__((parm2)) arg2 = parm2; \ + volatile __typeof__((parm3)) arg3 = parm3; \ + volatile __typeof__((parm4)) arg4 = parm4; \ + volatile __typeof__((parm5)) arg5 = parm5; \ + volatile __typeof__((parm6)) arg6 = parm6; \ + volatile __typeof__((parm7)) arg7 = parm7; \ + volatile __typeof__((parm8)) arg8 = parm8; \ + volatile __typeof__((parm9)) arg9 = parm9; \ STAP_PROBE_DATA(probe); \ + label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 %8 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5), "X"(arg6), "X"(arg7), "X"(arg8), "X"(arg9)); \ + "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 %8 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4), "+rm"(arg5), "+rm"(arg6), "+rm"(arg7), "+rm"(arg8), "+rm"(arg9)); \ } while (0) -#define STAP_PROBE10_(probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) \ +#define STAP_PROBE10_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) \ do { \ - volatile __typeof__((parm1)) arg1 __attribute__ ((unused)) = parm1; \ - volatile __typeof__((parm2)) arg2 __attribute__ ((unused)) = parm2; \ - volatile __typeof__((parm3)) arg3 __attribute__ ((unused)) = parm3; \ - volatile __typeof__((parm4)) arg4 __attribute__ ((unused)) = parm4; \ - volatile __typeof__((parm5)) arg5 __attribute__ ((unused)) = parm5; \ - volatile __typeof__((parm6)) arg6 __attribute__ ((unused)) = parm6; \ - volatile __typeof__((parm7)) arg7 __attribute__ ((unused)) = parm7; \ - volatile __typeof__((parm8)) arg8 __attribute__ ((unused)) = parm8; \ - volatile __typeof__((parm9)) arg9 __attribute__ ((unused)) = parm9; \ - volatile __typeof__((parm10)) arg10 __attribute__ ((unused)) = parm10; \ + __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + volatile __typeof__((parm1)) arg1 = parm1; \ + volatile __typeof__((parm2)) arg2 = parm2; \ + volatile __typeof__((parm3)) arg3 = parm3; \ + volatile __typeof__((parm4)) arg4 = parm4; \ + volatile __typeof__((parm5)) arg5 = parm5; \ + volatile __typeof__((parm6)) arg6 = parm6; \ + volatile __typeof__((parm7)) arg7 = parm7; \ + volatile __typeof__((parm8)) arg8 = parm8; \ + volatile __typeof__((parm9)) arg9 = parm9; \ + volatile __typeof__((parm10)) arg10 = parm10; \ STAP_PROBE_DATA(probe); \ + label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 */" :: "X"(arg1), "X"(arg2), "X"(arg3), "X"(arg4), "X"(arg5), "X"(arg6), "X"(arg7), "X"(arg8), "X"(arg9), "X"(arg10)); \ + "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4), "+rm"(arg5), "+rm"(arg6), "+rm"(arg7), "+rm"(arg8), "+rm"(arg9), "+rm"(arg10)); \ } while (0) #define STAP_PROBE(provider,probe) \ STAP_PROBE_(probe) #define STAP_PROBE1(provider,probe,parm1) \ - STAP_PROBE1_(probe,(parm1)) + STAP_PROBE1_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1)) #define STAP_PROBE2(provider,probe,parm1,parm2) \ - STAP_PROBE2_(probe,(parm1),(parm2)) + STAP_PROBE2_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2)) #define STAP_PROBE3(provider,probe,parm1,parm2,parm3) \ - STAP_PROBE3_(probe,(parm1),(parm2),(parm3)) + STAP_PROBE3_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3)) #define STAP_PROBE4(provider,probe,parm1,parm2,parm3,parm4) \ - STAP_PROBE4_(probe,(parm1),(parm2),(parm3),(parm4)) + STAP_PROBE4_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4)) #define STAP_PROBE5(provider,probe,parm1,parm2,parm3,parm4,parm5) \ - STAP_PROBE5_(probe,(parm1),(parm2),(parm3),(parm4),(parm5)) + STAP_PROBE5_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4),(parm5)) #define STAP_PROBE6(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6) \ - STAP_PROBE6_(probe,(parm1),(parm2),(parm3),(parm4),(parm5),(parm6)) + STAP_PROBE6_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4),(parm5),(parm6)) #define STAP_PROBE7(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7) \ - STAP_PROBE7_(probe,(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7)) + STAP_PROBE7_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7)) #define STAP_PROBE8(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) \ - STAP_PROBE8_(probe,(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7),(parm8)) + STAP_PROBE8_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7),(parm8)) #define STAP_PROBE9(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) \ - STAP_PROBE9_(probe,(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7),(parm8),(parm9)) + STAP_PROBE9_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7),(parm8),(parm9)) #define STAP_PROBE10(provider,probe,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) \ - STAP_PROBE10_(probe,(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7),(parm8),(parm9),(parm10)) + STAP_PROBE10_(probe,STAP_LABEL(STAP_LABEL_PREFIX(probe),STAP_COUNTER),(parm1),(parm2),(parm3),(parm4),(parm5),(parm6),(parm7),(parm8),(parm9),(parm10)) #define DTRACE_PROBE(provider,probe) \ STAP_PROBE(provider,probe) diff --git a/tapsets.cxx b/tapsets.cxx index e9ade595..bc16d6fa 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -5731,8 +5731,6 @@ dwarf_builder::build(systemtap_session & sess, Elf* elf = dwfl_module_getelf (dw->module, &bias); size_t shstrndx; Elf_Scn *probe_scn = NULL; - bool probe_found = false; - bool dynamic = (dwfl_module_relocations (dw->module) == 1); dwfl_assert ("getshstrndx", elf_getshstrndx (elf, &shstrndx)); GElf_Shdr *shdr = NULL; @@ -5750,8 +5748,6 @@ dwarf_builder::build(systemtap_session & sess, break; } } - if (dynamic || sess.listing_mode) - probe_type = dwarf_no_probes; if (probe_type == probes_and_dwarf) { @@ -5779,9 +5775,7 @@ dwarf_builder::build(systemtap_session & sess, probe_arg = *((__uint64_t*)((char*)pdata->d_buf + probe_scn_offset)); if (probe_scn_offset % (sizeof(__uint64_t)*2)) probe_scn_offset = (probe_scn_offset + sizeof(__uint64_t)*2) - (probe_scn_offset % (sizeof(__uint64_t)*2)); - if (strcmp (location->components[1]->arg->tok->content.c_str(), probe_name.c_str()) == 0) - probe_found = true; - else + if (strcmp (location->components[1]->arg->tok->content.c_str(), probe_name.c_str()) != 0) continue; const token* sv_tok = location->components[1]->arg->tok; location->components[1]->functor = TOK_STATEMENT; @@ -5791,11 +5785,10 @@ dwarf_builder::build(systemtap_session & sess, dwarf_query q(sess, base, location, *dw, parameters, finished_results); dw->query_modules(&q); } - if (probe_found) - return; + return; } - if (probe_type == dwarf_no_probes || ! probe_found) + if (probe_type == dwarf_no_probes) { location->components[1]->functor = TOK_FUNCTION; location->components[1]->arg = new literal_string("*"); -- cgit From 3c1b3d06ef3134b30e804d189d346c5f83c6f3a6 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 24 Mar 2009 12:53:17 -0400 Subject: PR9993: tracepoint toleration for undeclared types in trace/*.h headers * tapsets.cxx (tracepoint_extra_headers): New function to return needed header file names. (emit_module_decls): Emit them. * buildrun.cxx (make_tracequery): Emit them. * testsuite/systemtap.base/tracepoints.exp: Rewrite to exercise building each tracepoint. --- buildrun.cxx | 7 ++++++- buildrun.h | 2 +- tapsets.cxx | 20 +++++++++++++++++++- testsuite/systemtap.base/tracepoints.exp | 23 +++++++++++++++++++++++ 4 files changed, 49 insertions(+), 3 deletions(-) diff --git a/buildrun.cxx b/buildrun.cxx index 6a266bd2..e19043cf 100644 --- a/buildrun.cxx +++ b/buildrun.cxx @@ -345,7 +345,7 @@ run_pass (systemtap_session& s) // Build a tiny kernel module to query tracepoints int -make_tracequery(systemtap_session& s, string& name) +make_tracequery(systemtap_session& s, string& name, const vector& extra_headers) { // create a subdirectory for the module string dir(s.tmpdir + "/tracequery"); @@ -382,6 +382,11 @@ make_tracequery(systemtap_session& s, string& name) osrc << "#define DEFINE_TRACE(name, proto, args) \\" << endl; osrc << " DECLARE_TRACE(name, TPPROTO(proto), TPARGS(args))" << endl; + // PR9993: Add extra headers to work around undeclared types in individual + // include/trace/foo.h files + for (unsigned z=0; z\n"; + // dynamically pull in all tracepoint headers from include/trace/ glob_t trace_glob; string globs[2] = { "/include/trace/*.h", "/source/include/trace/*.h" }; diff --git a/buildrun.h b/buildrun.h index 88127449..e87b7b85 100644 --- a/buildrun.h +++ b/buildrun.h @@ -14,7 +14,7 @@ int compile_pass (systemtap_session& s); int run_pass (systemtap_session& s); -int make_tracequery(systemtap_session& s, std::string& name); +int make_tracequery(systemtap_session& s, std::string& name, const std::vector& extra_headers); #endif // BUILDRUN_H diff --git a/tapsets.cxx b/tapsets.cxx index bc16d6fa..3a181cb3 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -9582,6 +9582,7 @@ tracepoint_derived_probe::tracepoint_derived_probe (systemtap_session& s, // tracepoints from FOO_event_types.h should really be included from FOO.h // XXX can dwarf tell us the include hierarchy? it would be better to // ... walk up to see which one was directly included by tracequery.c + // XXX: see also PR9993. header_pos = header.find("_event_types"); if (header_pos != string::npos) header.erase(header_pos, 12); @@ -9757,6 +9758,16 @@ tracepoint_derived_probe::emit_probe_context_vars (translator_output* o) } +static vector tracepoint_extra_headers () +{ + vector they_live; + // PR 9993 + // XXX: may need this to be configurable + they_live.push_back ("linux/skbuff.h"); + return they_live; +} + + void tracepoint_derived_probe_group::emit_module_decls (systemtap_session& s) { @@ -9766,6 +9777,12 @@ tracepoint_derived_probe_group::emit_module_decls (systemtap_session& s) s.op->newline() << "/* ---- tracepoint probes ---- */"; s.op->newline(); + // PR9993: Add extra headers to work around undeclared types in individual + // include/trace/foo.h files + const vector& extra_headers = tracepoint_extra_headers (); + for (unsigned z=0; znewline() << "#include <" << extra_headers[z] << ">\n"; + for (unsigned i = 0; i < probes.size(); ++i) { tracepoint_derived_probe *p = probes[i]; @@ -9963,6 +9980,7 @@ private: bool init_dw(systemtap_session& s); public: + tracepoint_builder(): dw(0) {} ~tracepoint_builder() { delete dw; } @@ -10009,7 +10027,7 @@ tracepoint_builder::init_dw(systemtap_session& s) // no cached module, time to make it string tracequery_ko; - int rc = make_tracequery(s, tracequery_ko); + int rc = make_tracequery(s, tracequery_ko, tracepoint_extra_headers()); if (rc != 0) return false; diff --git a/testsuite/systemtap.base/tracepoints.exp b/testsuite/systemtap.base/tracepoints.exp index bea461c4..cd033908 100644 --- a/testsuite/systemtap.base/tracepoints.exp +++ b/testsuite/systemtap.base/tracepoints.exp @@ -1,3 +1,26 @@ + +set tracepoints {} +spawn stap -l {kernel.trace("*")} +expect { + -re {^kernel.trace[^\r\n]*\r\n} { + append tracepoints $expect_out(0,string) + exp_continue + } + timeout {} + eof {} +} +catch {close}; catch { wait } + +foreach tp $tracepoints { + set test "tracepoint $tp -p4" + if {[catch {exec stap -w -p4 -e "probe $tp {}"} res]} { + fail "$test $res" + } else { + pass "$test" + } +} + set test "tracepoints" +if {![installtest_p]} { untested $test; return } set ::result_string {tracepoints OK} stap_run2 $srcdir/$subdir/$test.stp -- cgit From 7d6c591292084444ada2ecdecafe59c730865451 Mon Sep 17 00:00:00 2001 From: William Cohen Date: Tue, 24 Mar 2009 13:03:54 -0400 Subject: Strip off "probe" for the probe documentation generation. --- scripts/kernel-doc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/kernel-doc b/scripts/kernel-doc index 92178910..7f2db03f 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc @@ -2083,7 +2083,7 @@ sub process_state3_probe($$) { my $prototype = shift; my $file = shift; - $prototype =~ s@/probe/@@o; # strip off leading 'probe' + $prototype =~ s@probe@@o; # strip off leading 'probe' $prototype =~ s@^\s+@@gos; # strip leading spaces dump_probe($prototype,$file); reset_state(); -- cgit From 8e9d6257b102f40567b387fe45ab3d1474022f53 Mon Sep 17 00:00:00 2001 From: William Cohen Date: Tue, 24 Mar 2009 13:14:12 -0400 Subject: Add NEWS entry for the manpages. --- NEWS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NEWS b/NEWS index 7ae93675..74dde8b7 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,9 @@ * What's new +- Systemtap probes and function man pages extracted from the tapsets + are now available. To look at man page for systemtap vm.pagefault: + $ man 3stap vm.pagefault + - Kernel tracepoints are now supported for probing predefined kernel events without any debuginfo. Tracepoints incur less overhead than kprobes, and context parameters are available with full type -- cgit From 8f7c6d4680717700fe8beb8cc6d59c241e6677ed Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Tue, 24 Mar 2009 14:06:36 -0400 Subject: Use read operand "g" constraints. * includes/sdt.h (STAP_PROBEN): Use R "g" instead of RW "+rm" which can result in "read-only variable arg1 used as asm output" --- includes/sys/sdt.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/includes/sys/sdt.h b/includes/sys/sdt.h index ac24b6fb..ba75076b 100644 --- a/includes/sys/sdt.h +++ b/includes/sys/sdt.h @@ -56,7 +56,7 @@ do { \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 */" : "+rm"(arg1)); \ + "\tnop /* %0 */" :: "g"(arg1)); \ } while (0) #define STAP_PROBE2_(probe,label,parm1,parm2) \ @@ -67,7 +67,7 @@ do { \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 */" : "+rm"(arg1), "+rm"(arg2)); \ + "\tnop /* %0 %1 */" :: "g"(arg1), "g"(arg2)); \ } while (0) #define STAP_PROBE3_(probe,label,parm1,parm2,parm3) \ @@ -79,7 +79,7 @@ do { \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3)); \ + "\tnop /* %0 %1 %2 */" :: "g"(arg1), "g"(arg2), "g"(arg3)); \ } while (0) #define STAP_PROBE4_(probe,label,parm1,parm2,parm3,parm4) \ @@ -92,7 +92,7 @@ do { \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4)); \ + "\tnop /* %0 %1 %2 %3 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4)); \ } while (0) #define STAP_PROBE5_(probe,label,parm1,parm2,parm3,parm4,parm5) \ @@ -106,7 +106,7 @@ do { \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 %4 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4), "+rm"(arg5)); \ + "\tnop /* %0 %1 %2 %3 %4 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5)); \ } while (0) #define STAP_PROBE6_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6) \ @@ -121,7 +121,7 @@ do { \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 %4 %5 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4), "+rm"(arg5), "+rm"(arg6)); \ + "\tnop /* %0 %1 %2 %3 %4 %5 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6)); \ } while (0) #define STAP_PROBE7_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7) \ @@ -137,7 +137,7 @@ do { \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 %4 %5 %6 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4), "+rm"(arg5), "+rm"(arg6), "+rm"(arg7)); \ + "\tnop /* %0 %1 %2 %3 %4 %5 %6 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6), "g"(arg7)); \ } while (0) #define STAP_PROBE8_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) \ @@ -154,7 +154,7 @@ do { \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4), "+rm"(arg5), "+rm"(arg6), "+rm"(arg7), "+rm"(arg8)); \ + "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6), "g"(arg7), "g"(arg8)); \ } while (0) #define STAP_PROBE9_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) \ @@ -172,7 +172,7 @@ do { \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 %8 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4), "+rm"(arg5), "+rm"(arg6), "+rm"(arg7), "+rm"(arg8), "+rm"(arg9)); \ + "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 %8 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6), "g"(arg7), "g"(arg8), "g"(arg9)); \ } while (0) #define STAP_PROBE10_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) \ @@ -191,7 +191,7 @@ do { \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ - "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 */" : "+rm"(arg1), "+rm"(arg2), "+rm"(arg3), "+rm"(arg4), "+rm"(arg5), "+rm"(arg6), "+rm"(arg7), "+rm"(arg8), "+rm"(arg9), "+rm"(arg10)); \ + "\tnop /* %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4), "g"(arg5), "g"(arg6), "g"(arg7), "g"(arg8), "g"(arg9), "g"(arg10)); \ } while (0) #define STAP_PROBE(provider,probe) \ -- cgit From 30369ac1fe0ed4e022691eceaddb848689935f87 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 24 Mar 2009 15:11:33 -0400 Subject: build fix for RHEL4-era gcc 3.4.6 * tapsets.cxx (stringhash): Go to __gnu_cxx. (dwarf_cast_expanding_visitor::visit_cast_op): Use ~0 for all-ones. --- tapsets.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tapsets.cxx b/tapsets.cxx index 3a181cb3..c36a1aa0 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -603,7 +603,8 @@ typedef tr1::unordered_map cu_function_cache_t; typedef tr1::unordered_map mod_cu_function_cache_t; // module:cu -> function -> die #else struct stringhash { - size_t operator() (const string& s) const { hash h; return h(s.c_str()); } + // __gnu_cxx:: is needed because our own hash.h has an ambiguous hash<> decl too. + size_t operator() (const string& s) const { __gnu_cxx::hash h; return h(s.c_str()); } }; typedef hash_map cu_function_cache_t; @@ -5022,7 +5023,7 @@ void dwarf_cast_expanding_visitor::visit_cast_op (cast_op* e) string code; exp_type type = pe_long; - size_t mod_end = -1; + size_t mod_end = ~0; do { // split the module string by ':' for alternatives -- cgit From 148f987f1bbc4a8fe23012a56bf89bb9fc69beb9 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 24 Mar 2009 15:15:10 -0400 Subject: accelerate pass-3 symbol/unwind generation * translate.cxx (emit_symbol_data): Abort dwfl_getmodules loop as soon as we run out of modules we're looking for. --- translate.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translate.cxx b/translate.cxx index 40bb82c2..798d52fe 100644 --- a/translate.cxx +++ b/translate.cxx @@ -4826,7 +4826,7 @@ emit_symbol_data (systemtap_session& s) if (pending_interrupts) return; off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0); } - while (off > 0); + while (off > 0 && !ctx.undone_unwindsym_modules.empty()); dwfl_assert("dwfl_getmodules", off == 0); } dwfl_end(dwfl); @@ -4864,7 +4864,7 @@ emit_symbol_data (systemtap_session& s) if (pending_interrupts) return; off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0); } - while (off > 0); + while (off > 0 && !ctx.undone_unwindsym_modules.empty()); dwfl_assert("dwfl_getmodules", off == 0); } dwfl_end(dwfl); -- cgit From 59b6abb36a6b4db7025b65112164378621a70444 Mon Sep 17 00:00:00 2001 From: David Smith Date: Tue, 24 Mar 2009 14:43:08 -0500 Subject: PR 9989 fix. 2009-03-24 David Smith PR 9989. * runtime/task_finder.c (stap_utrace_detach): Ignores -EINPROGRESS. (stap_utrace_detach_ops): Ignores errors from stap_utrace_detach(), so that other tasks will get detached from this utrace engine. (__stp_utrace_attach): Better error handling from utrace_barrier(). (__stp_utrace_task_finder_target_quiesce): Ditto. --- runtime/task_finder.c | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/runtime/task_finder.c b/runtime/task_finder.c index 3f4908cb..e494e7a8 100644 --- a/runtime/task_finder.c +++ b/runtime/task_finder.c @@ -39,15 +39,23 @@ static atomic_t __stp_attach_count = ATOMIC_INIT (0); #define debug_task_finder_attach() (atomic_inc(&__stp_attach_count)) #define debug_task_finder_detach() (atomic_dec(&__stp_attach_count)) +#ifdef DEBUG_TASK_FINDER_PRINTK +#define debug_task_finder_report() (printk(KERN_ERR \ + "%s:%d attach count: %d, inuse count: %d\n", \ + __FUNCTION__, __LINE__, \ + atomic_read(&__stp_attach_count), \ + atomic_read(&__stp_inuse_count))) +#else #define debug_task_finder_report() (_stp_dbug(__FUNCTION__, __LINE__, \ "attach count: %d, inuse count: %d\n", \ atomic_read(&__stp_attach_count), \ atomic_read(&__stp_inuse_count))) +#endif /* !DEBUG_TASK_FINDER_PRINTK */ #else #define debug_task_finder_attach() /* empty */ #define debug_task_finder_detach() /* empty */ #define debug_task_finder_report() /* empty */ -#endif +#endif /* !DEBUG_TASK_FINDER */ typedef int (*stap_task_finder_callback)(struct stap_task_finder_target *tgt, struct task_struct *tsk, @@ -280,11 +288,15 @@ stap_utrace_detach(struct task_struct *tsk, break; case -ESRCH: /* REAP callback already begun */ case -EALREADY: /* DEATH callback already begun */ - rc = 0; /* ignore these errors*/ + rc = 0; /* ignore these errors */ + break; + case -EINPROGRESS: + debug_task_finder_detach(); + rc = 0; break; default: rc = -rc; - _stp_error("utrace_detach returned error %d on pid %d", + _stp_error("utrace_control returned error %d on pid %d", rc, tsk->pid); break; } @@ -298,7 +310,6 @@ stap_utrace_detach_ops(struct utrace_engine_ops *ops) { struct task_struct *grp, *tsk; struct utrace_attached_engine *engine; - int rc = 0; pid_t pid = 0; // Notice we're not calling get_task_mm() in this loop. In @@ -324,11 +335,12 @@ stap_utrace_detach_ops(struct utrace_engine_ops *ops) continue; #endif - rc = stap_utrace_detach(tsk, ops); - if (rc != 0) - goto udo_err; + /* Notice we're purposefully ignoring errors from + * stap_utrace_detach(). Even if we got an error on + * this task, we need to keep detaching from other + * tasks. */ + (void) stap_utrace_detach(tsk, ops); } while_each_thread(grp, tsk); -udo_err: rcu_read_unlock(); debug_task_finder_report(); } @@ -475,7 +487,7 @@ __stp_utrace_attach(struct task_struct *tsk, * ref. */ rc = utrace_barrier(tsk, engine); - if (rc != 0) + if (rc != -ESRCH && rc != -EALREADY) _stp_error("utrace_barrier returned error %d on pid %d", rc, (int)tsk->pid); } @@ -494,7 +506,7 @@ __stp_utrace_attach(struct task_struct *tsk, } } - else + else if (rc != -ESRCH && rc != -EALREADY) _stp_error("utrace_set_events2 returned error %d on pid %d", rc, (int)tsk->pid); utrace_engine_put(engine); @@ -869,11 +881,12 @@ __stp_utrace_task_finder_target_quiesce(enum utrace_resume_action action, * a stale task pointer, if we have an engine ref. */ rc = utrace_barrier(tsk, engine); - if (rc != 0) + if (rc == 0) + rc = utrace_set_events(tsk, engine, + __STP_ATTACHED_TASK_BASE_EVENTS(tgt)); + else if (rc != -ESRCH && rc != -EALREADY) _stp_error("utrace_barrier returned error %d on pid %d", rc, (int)tsk->pid); - rc = utrace_set_events(tsk, engine, - __STP_ATTACHED_TASK_BASE_EVENTS(tgt)); } if (rc != 0) _stp_error("utrace_set_events returned error %d on pid %d", -- cgit From 168bcc7c71f203fed7a8f25bfd0a84369b968c0f Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 24 Mar 2009 15:48:56 -0400 Subject: itrace: zap "usr_itrace_init: completed for tid = NNNN" debug message --- runtime/itrace.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/itrace.c b/runtime/itrace.c index 618cbff0..97ba427e 100644 --- a/runtime/itrace.c +++ b/runtime/itrace.c @@ -340,7 +340,8 @@ static int usr_itrace_init(int single_step, pid_t tid, struct stap_itrace_probe put_task_struct(tsk); rcu_read_unlock(); - printk(KERN_INFO "usr_itrace_init: completed for tid = %d\n", tid); + if (debug) + printk(KERN_INFO "usr_itrace_init: completed for tid = %d\n", tid); return 0; } -- cgit From ccc11a14c5117fcee425d53f00f0b871ac727728 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 24 Mar 2009 15:55:26 -0400 Subject: Revert "PR9940: avoid duplicated calling of uprobes in shared libraries" This fix caused a regression on fedora. stap -ve 'probe process("/bin/ls").function("main") { log(pp()); } probe process("/lib64/libc.so.6").function("*") { log(pp()); }' \ -c /bin/ls hung (with stapio & ls processes spinning) upon startup. --- runtime/task_finder.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/runtime/task_finder.c b/runtime/task_finder.c index e494e7a8..7949a81f 100644 --- a/runtime/task_finder.c +++ b/runtime/task_finder.c @@ -1045,7 +1045,6 @@ __stp_utrace_task_finder_target_syscall_entry(enum utrace_resume_action action, static void __stp_call_vm_callbacks_with_vma(struct stap_task_finder_target *tgt, struct task_struct *tsk, - int map_p, struct vm_area_struct *vma) { char *mmpath_buf; @@ -1072,7 +1071,7 @@ __stp_call_vm_callbacks_with_vma(struct stap_task_finder_target *tgt, rc, (int)tsk->pid); } else { - __stp_call_vm_callbacks(tgt, tsk, map_p, mmpath, + __stp_call_vm_callbacks(tgt, tsk, 1, mmpath, vma->vm_start, vma->vm_end, (vma->vm_pgoff << PAGE_SHIFT)); } @@ -1165,7 +1164,7 @@ __stp_utrace_task_finder_target_syscall_exit(enum utrace_resume_action action, down_read(&mm->mmap_sem); vma = __stp_find_file_based_vma(mm, rv); if (vma != NULL) { - __stp_call_vm_callbacks_with_vma(tgt, tsk, 0, vma); + __stp_call_vm_callbacks_with_vma(tgt, tsk, vma); } up_read(&mm->mmap_sem); mmput(mm); @@ -1238,7 +1237,6 @@ __stp_utrace_task_finder_target_syscall_exit(enum utrace_resume_action action, && vma->vm_end <= entry->vm_end) { __stp_call_vm_callbacks_with_vma(tgt, tsk, - 1, vma); if (vma->vm_end >= entry->vm_end) break; -- cgit From 49b50ec6c2b45456d33d3fa145ccd3adfe4c528b Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Tue, 24 Mar 2009 16:11:55 -0400 Subject: Remove debugging line. * dtrace: Remove debugging line. --- dtrace | 1 - 1 file changed, 1 deletion(-) diff --git a/dtrace b/dtrace index 7966e1f2..fd7b4b99 100755 --- a/dtrace +++ b/dtrace @@ -80,7 +80,6 @@ class provider: elif (c == 8): self.h.write ('#define %s(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) STAP_PROBE%d(provider,%s,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9)\n' % (this_probe_canon, c+1, this_probe)) elif (c == 9): - self.h.write('// X %d %s\n' % (c+1,this_probe_canon)) self.h.write ('#define %s(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) STAP_PROBE%d(provider,%s,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10)\n' % (this_probe_canon, c+1, this_probe)) self.h.write ('#define %s_ENABLED() 1\n' % this_probe_canon) -- cgit From b84e888167b9ecc22497730078759ee3a7c4914e Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 24 Mar 2009 21:37:30 +0100 Subject: Add testcase for uprobe on shared library (PR9940). * testsuite/systemtap.base/uprobes_exe.c: New file. * testsuite/systemtap.base/uprobes_lib.c: New file. * testsuite/systemtap.base/uprobes_lib.exp: New file. * testsuite/systemtap.base/uprobes_lib.stp: New file. --- testsuite/systemtap.base/uprobes_exe.c | 27 +++++++++++++++++++++++ testsuite/systemtap.base/uprobes_lib.c | 20 +++++++++++++++++ testsuite/systemtap.base/uprobes_lib.exp | 38 ++++++++++++++++++++++++++++++++ testsuite/systemtap.base/uprobes_lib.stp | 9 ++++++++ 4 files changed, 94 insertions(+) create mode 100644 testsuite/systemtap.base/uprobes_exe.c create mode 100644 testsuite/systemtap.base/uprobes_lib.c create mode 100644 testsuite/systemtap.base/uprobes_lib.exp create mode 100644 testsuite/systemtap.base/uprobes_lib.stp diff --git a/testsuite/systemtap.base/uprobes_exe.c b/testsuite/systemtap.base/uprobes_exe.c new file mode 100644 index 00000000..447434c6 --- /dev/null +++ b/testsuite/systemtap.base/uprobes_exe.c @@ -0,0 +1,27 @@ +/* uprobes_lib test case + * Copyright (C) 2009, Red Hat Inc. + * + * This file is part of systemtap, and is free software. You can + * redistribute it and/or modify it under the terms of the GNU General + * Public License (GPL); either version 2, or (at your option) any + * later version. + */ + +#include + +// function from our library +int lib_main (void); + +void +main_func (int foo) +{ + ; // nothing here... +} + +int +main (int argc, char *argv[], char *envp[]) +{ + main_func(1); + lib_main(); + return 0; +} diff --git a/testsuite/systemtap.base/uprobes_lib.c b/testsuite/systemtap.base/uprobes_lib.c new file mode 100644 index 00000000..c9d70625 --- /dev/null +++ b/testsuite/systemtap.base/uprobes_lib.c @@ -0,0 +1,20 @@ +/* uprobes_lib test case - library helper + * Copyright (C) 2009, Red Hat Inc. + * + * This file is part of systemtap, and is free software. You can + * redistribute it and/or modify it under the terms of the GNU General + * Public License (GPL); either version 2, or (at your option) any + * later version. + */ + +void +lib_func (int bar) +{ + ; // nothing here... +} + +void +lib_main () +{ + lib_func (3); +} diff --git a/testsuite/systemtap.base/uprobes_lib.exp b/testsuite/systemtap.base/uprobes_lib.exp new file mode 100644 index 00000000..ae1b72e8 --- /dev/null +++ b/testsuite/systemtap.base/uprobes_lib.exp @@ -0,0 +1,38 @@ +set test "uprobes_lib" +set testpath "$srcdir/$subdir" +set testsrc "$testpath/uprobes_exe.c" +set testsrclib "$testpath/uprobes_lib.c" +set testexe "./uprobes_exe" +set testlibname "uprobes_lib" +set testlibdir "." +set testso "$testlibdir/lib${testlibname}.so" +set testflags "additional_flags=-g additional_flags=-O" +set testlibflags "$testflags additional_flags=-fPIC additional_flags=-shared" +set maintestflags "$testflags additional_flags=-L$testlibdir additional_flags=-l$testlibname additional_flags=-Wl,-rpath,$testlibdir" + +# Only run on make installcheck +if {! [installtest_p]} { untested "$test"; return } + +# Compile our test program and library. +set res [target_compile $testsrclib $testso executable $testlibflags] +if { $res != "" } { + verbose "target_compile for $testso failed: $res" 2 + fail "unable to compile $testsrclib" + return +} +set res [target_compile $testsrc $testexe executable $maintestflags] +if { $res != "" } { + verbose "target_compile failed: $res" 2 + fail "unable to compile $testsrc" + return +} + +# XXX main_func needs another/extra test. Disabled for now. +# Enable (and in uprobes_lib.stp) after PR9940 is fixed. +# set ::result_string {main_func +# lib_func} +set ::result_string {lib_func} + +stap_run2 $srcdir/$subdir/$test.stp -c $testexe + +#exec rm -f $testexe $testso diff --git a/testsuite/systemtap.base/uprobes_lib.stp b/testsuite/systemtap.base/uprobes_lib.stp new file mode 100644 index 00000000..bc6cc249 --- /dev/null +++ b/testsuite/systemtap.base/uprobes_lib.stp @@ -0,0 +1,9 @@ +/* - Not activated probe... Seems always skipped? +probe process("uprobes_exe").function("main_func") { + printf("main_func\n"); +} +*/ + +probe process("libuprobes_lib.so").function("lib_func") { + printf("lib_func\n"); +} -- cgit From 5d6b014268ca47386ef92525b8669429dec6e49c Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 24 Mar 2009 16:41:31 -0400 Subject: further accelerate pass-3 symbol/unwind process, skip one more iteration --- translate.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/translate.cxx b/translate.cxx index 798d52fe..55b266bf 100644 --- a/translate.cxx +++ b/translate.cxx @@ -4824,9 +4824,10 @@ emit_symbol_data (systemtap_session& s) do { if (pending_interrupts) return; + if (ctx.undone_unwindsym_modules.empty()) return; off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0); } - while (off > 0 && !ctx.undone_unwindsym_modules.empty()); + while (off > 0); dwfl_assert("dwfl_getmodules", off == 0); } dwfl_end(dwfl); @@ -4862,9 +4863,10 @@ emit_symbol_data (systemtap_session& s) do { if (pending_interrupts) return; + if (ctx.undone_unwindsym_modules.empty()) return; off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0); } - while (off > 0 && !ctx.undone_unwindsym_modules.empty()); + while (off > 0); dwfl_assert("dwfl_getmodules", off == 0); } dwfl_end(dwfl); -- cgit From d10b4351a0bc2386ff15c806bfc3cd531fe883f0 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Tue, 24 Mar 2009 15:43:25 -0700 Subject: Typo and whitespace. --- stap.1.in | 66 +++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/stap.1.in b/stap.1.in index 088449c0..c664962c 100644 --- a/stap.1.in +++ b/stap.1.in @@ -150,7 +150,7 @@ Add the given directory to the tapset search directory. See the description of pass 2 for details. .TP .BI \-D " NAME=VALUE" -Add the given C preprocessor directive to the module Makefile. These can +Add the given C preprocessor directive to the module Makefile. These can be used to override limit parameters described below. .TP .BI \-R " DIR" @@ -183,7 +183,7 @@ This supports a subset of strftime(3) (%%, %C, %Y, %y, %m, %d, %e, %F, Start the probes, run CMD, and exit when CMD finishes. .TP .BI \-x " PID" -Sets target() to PID. This allows scripts to be written that filter on +Sets target() to PID. This allows scripts to be written that filter on a specific process. .TP .BI \-l " PROBE" @@ -197,7 +197,7 @@ Similar to "-l", but list probe points and script-level local variables. .BI \-F Without -o option, load module and start probes, then detach from the module leaving the probes running. -With -o option, run staprun in background as a daemon and show it's pid. +With -o option, run staprun in background as a daemon and show its pid. .TP .BI \-S " size[,N]" Sets the maximum size of output file and the maximum number of output files. @@ -253,7 +253,7 @@ parser for substitution. See below. .SH SCRIPT LANGUAGE -The systemtap script language resembles +The systemtap script language resembles .IR awk . There are two main outermost constructs: probes and functions. Within these, statements and expressions use C-like operator syntax and @@ -292,7 +292,7 @@ number beyond what was actually given is an error. .SS PREPROCESSING A simple conditional preprocessing stage is run as a part of parsing. -The general form is similar to the +The general form is similar to the .RB cond " ? " exp1 " : " exp2 ternary operator: .SAMPLE @@ -316,7 +316,7 @@ version of the target kernel (as optionally overridden by the option) compares to the given version string. The comparison is performed by the glibc function .BR strverscmp . -As a special case, if the operator is for simple equality +As a special case, if the operator is for simple equality .RB ( == ), or inequality .RB ( != ), @@ -348,14 +348,14 @@ kernel version is newer than 2.6.5: .ESAMPLE The following code might adapt to hypothetical kernel version drift: .SAMPLE -probe kernel.function ( - %( kernel_v <= "2.6.12" %? "__mm_do_fault" %: +probe kernel.function ( + %( kernel_v <= "2.6.12" %? "__mm_do_fault" %: %( kernel_vr == "2.6.13*smp" %? "do_page_fault" %: UNSUPPORTED %) %) ) { /* ... */ } %( arch == "ia64" %? - probe syscall.vliw = kernel.function("vliw_widget") {} + probe syscall.vliw = kernel.function("vliw_widget") {} %) .ESAMPLE @@ -423,7 +423,7 @@ Execute the string- or integer-valued expression and throw away the value. .TP .BR { " STMT1 STMT2 ... " } -Execute each statement in sequence in this block. Note that +Execute each statement in sequence in this block. Note that separators or terminators are generally not necessary between statements. .TP .BR ; @@ -445,12 +445,12 @@ STMT, then the iteration expression EXP3. .BR foreach " (VAR " in " ARRAY [ "limit " EXP ]) STMT" Loop over each element of the named global array, assigning current key to VAR. The array may not be modified within the statement. -By adding a single +By adding a single .BR + " or " \- operator after the VAR or the ARRAY identifier, the iteration will proceed in a sorted order, by ascending or descending index or value. Using the optional -.BR limit +.BR limit keyword limits the number of loop iterations to EXP times. EXP is evaluted once at the beginning of the loop. .TP @@ -503,7 +503,7 @@ string assignment operators .B = .= .TP unary numeric operators -.B + \- ! ~ ++ \-\- +.B + \- ! ~ ++ \-\- .TP binary numeric or string comparison operators .B < > <= >= == != @@ -542,7 +542,7 @@ The probe handler is interpreted relative to the context of each event. For events associated with kernel code, this context may include .I variables -defined in the +defined in the .I source code at that spot. These "target variables" are presented to the script as variables whose names are prefixed with "$". They may be accessed @@ -553,9 +553,9 @@ with optimized code. Some other events have very little context. New probe points may be defined using "aliases". Probe point aliases look similar to probe definitions, but instead of activating a probe at the given point, it just defines a new probe point name as an alias -to an existing one. There are two types of alias, i.e. the prologue +to an existing one. There are two types of alias, i.e. the prologue style and the epilogue style which are identified by "=" and "+=" -respectively. +respectively. .PP For prologue style alias, the statement block that follows an alias definition is implicitly added as a prologue to any probe that refers @@ -655,9 +655,9 @@ The .IR printf formatting directives similar to those of C, except that they are fully type-checked by the translator: -.RS +.RS .TP -%b +%b Writes a binary blob of the value given, instead of ASCII text. The width specifier determines the number of bytes to write; valid specifiers are %b %1b %2b %4b %8b. Default (%b) is 8 bytes. .TP %c @@ -738,7 +738,7 @@ distinct extraction function operating on a given identifier, the translator arranges to compute a set of statistics that satisfy it. The statistics system is thereby "on-demand". Each execution of an extraction function causes the aggregation to be computed for -that moment across all processors. +that moment across all processors. .PP Here is the set of extractor functions. The first argument of each is the same style of lvalue used on the left hand side of the accumulate @@ -751,7 +751,7 @@ integers. Histograms are also available, but are more complicated because they have a vector rather than scalar value. .I @hist_linear(v,start,stop,interval) -represents a linear histogram from "start" to "stop" by increments +represents a linear histogram from "start" to "stop" by increments of "interval". The interval must be positive. Similarly, .I @hist_log(v) represents a base-2 logarithmic histogram. Printing a histogram @@ -763,7 +763,7 @@ family of functions renders a histogram object as a tabular probe foo { x <<< $value } -probe end { +probe end { printf ("avg %d = sum %d / count %d\\n", @avg(x), @sum(x), @count(x)) print (@hist_log(v)) @@ -823,7 +823,7 @@ sequence, into the generated C code. At the outermost level, this may be useful to add .IR #include instructions, and any auxiliary definitions for use by other embedded -code. +code. .PP The other place where embedded code is permitted is as a function body. In this case, the script language body is replaced entirely by a piece @@ -884,7 +884,7 @@ the following patterns would be searched, in sequence: .IR 2.6/*.stp , and finally .IR *.stp -Stopping the translator after pass 1 causes it to print the parse trees. +Stopping the translator after pass 1 causes it to print the parse trees. .PP In pass 2, the translator analyzes the input script to resolve symbols @@ -896,7 +896,7 @@ added to the translator's resolution queue. This process iterates until all symbols are resolved and a subset of tapset scripts is selected. .PP -Next, all probe point descriptions are validated +Next, all probe point descriptions are validated against the wide variety supported by the translator. Probe points that refer to code locations ("synchronous probe points") require the appropriate kernel debugging information to be installed. In the @@ -913,7 +913,7 @@ Since this optimization can hide latent code errors such as type mismatches or invalid $target variables, it sometimes may be useful to disable the optimizations with the .BR \-u -option. +option. .PP Finally, all variable, function, parameter, array, and index types are inferred from context (literals and operators). Stopping the @@ -956,7 +956,7 @@ Finally, unloads the module, and cleans up. .SH EXAMPLES -See the +See the .IR stapex (3stap) manual page for a collection of samples. @@ -970,10 +970,10 @@ the .I $SYSTEMTAP_DIR/cache directory. The cache can be limited by having the file .I cache_mb_limit -placed in the cache directory (shown above) containing only an ASCII +placed in the cache directory (shown above) containing only an ASCII integer representing how many MiB the cache should not exceed. Note that this is a 'soft' limit in that the cache will be cleaned after a new entry -is added, so the total cache size may temporarily exceed this limit. In the +is added, so the total cache size may temporarily exceed this limit. In the absence of this file, a default will be created with the limit set to 64MiB. .SH SAFETY AND SECURITY @@ -1005,11 +1005,11 @@ program are run by the .IR staprun program. The latter is a part of the Systemtap package, dedicated to module loading and unloading (but only in the white zone), and -kernel-to-user data transfer. Since +kernel-to-user data transfer. Since .IR staprun does not perform any additional security checks on the kernel objects it is given, it would be unwise for a system administrator to add -untrusted users to the +untrusted users to the .I stapdev or .I stapusr @@ -1026,7 +1026,7 @@ to kernel crash or data corruption. The resource use limits are set by macros in the generated C code. These may be overridden with the .BR \-D -flag. A selection of these is as follows: +flag. A selection of these is as follows: .TP MAXNESTING Maximum number of recursive function call levels, default 10. @@ -1099,7 +1099,7 @@ Note that you must unload guests before unloading a host. If there are some guests connected to the host, unloading the host will be failed. .PP -In case something goes wrong with +In case something goes wrong with .IR stap " or " staprun after a probe has already started running, one may safely kill both user processes, and remove the active probe kernel module with @@ -1173,7 +1173,7 @@ environment variable. Temporary directory for systemtap files, including translated C code and kernel object. .TP -@prefix@/share/systemtap/tapset +@prefix@/share/systemtap/tapset The automatic tapset search directory, unless overridden by the .I SYSTEMTAP_TAPSET -- cgit From c87193cfb18258abbad947d009e6ca0bd2d5e0cf Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 24 Mar 2009 19:14:57 -0400 Subject: brown paper bag fix for commit 5d6b0142 return != break --- translate.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translate.cxx b/translate.cxx index 55b266bf..0b81d9bb 100644 --- a/translate.cxx +++ b/translate.cxx @@ -4824,7 +4824,7 @@ emit_symbol_data (systemtap_session& s) do { if (pending_interrupts) return; - if (ctx.undone_unwindsym_modules.empty()) return; + if (ctx.undone_unwindsym_modules.empty()) break; off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0); } while (off > 0); @@ -4863,7 +4863,7 @@ emit_symbol_data (systemtap_session& s) do { if (pending_interrupts) return; - if (ctx.undone_unwindsym_modules.empty()) return; + if (ctx.undone_unwindsym_modules.empty()) break; off = dwfl_getmodules (dwfl, &dump_unwindsyms, (void *) &ctx, 0); } while (off > 0); -- cgit From e1e3ba36653db4b1dcd82e7cb3579776a6834de7 Mon Sep 17 00:00:00 2001 From: Rajan Arora Date: Tue, 24 Mar 2009 22:30:37 -0400 Subject: PR 9922 fix, make --disable-pie the configure default *configure.ac: Change the default to compiling without fPIE. *systemtap.spec: Add --enable-pie as the default option (set pie_supported to 1). *configure: Regenerated with autoconf 2.61. --- configure | 3 ++- configure.ac | 3 ++- systemtap.spec | 9 ++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/configure b/configure index 57afc1bb..4f33313d 100755 --- a/configure +++ b/configure @@ -5990,12 +5990,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi +# Compiling without fPIE by default (see PR 9922) # Check whether --enable-pie was given. if test "${enable_pie+set}" = set; then enableval=$enable_pie; fi -if test "x$enable_pie" != xno; then +if test "x$enable_pie" == xyes; then save_CFLAGS="$CFLAGS" save_CXXFLAGS="$CXXFLAGS" diff --git a/configure.ac b/configure.ac index 9d8dd7ae..f1546673 100644 --- a/configure.ac +++ b/configure.ac @@ -82,9 +82,10 @@ AS_IF([test "x$enable_ssp" != xno],[ CFLAGS="$save_CFLAGS" CXXFLAGS="$save_CXXFLAGS"])]) +# Compiling without fPIE by default (see PR 9922) AC_ARG_ENABLE([pie], [AS_HELP_STRING([--disable-pie], [disable position-independent-executable])]) -AS_IF([test "x$enable_pie" != xno],[ +AS_IF([test "x$enable_pie" == xyes],[ save_CFLAGS="$CFLAGS" save_CXXFLAGS="$CXXFLAGS" save_LDFLAGS="$LDFLAGS" diff --git a/systemtap.spec b/systemtap.spec index 020cd001..e727b49c 100644 --- a/systemtap.spec +++ b/systemtap.spec @@ -3,6 +3,7 @@ %{!?with_crash: %define with_crash 0} %{!?with_bundled_elfutils: %define with_bundled_elfutils 0} %{!?elfutils_version: %define elfutils_version 0.127} +%{!?pie_supported: %define pie_supported 1} Name: systemtap Version: 0.9 @@ -175,9 +176,15 @@ cd .. %define docs_config --disable-docs %endif +# Enable pie as configure defaults to disabling it +%if %{pie_supported} +%define pie_config --enable-pie +%else +%define pie_config --disable-pie +%endif -%configure %{?elfutils_config} %{sqlite_config} %{crash_config} %{docs_config} +%configure %{?elfutils_config} %{sqlite_config} %{crash_config} %{docs_config} %{pie_config} make %{?_smp_mflags} %install -- cgit From 6a25ac4c75c33272af96fb3217a0e27b8e847a9a Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 25 Mar 2009 11:33:56 +0100 Subject: NEWS: Document how to see man pages for probes and functions in 3stap section. --- NEWS | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 74dde8b7..c169c5e2 100644 --- a/NEWS +++ b/NEWS @@ -1,8 +1,11 @@ * What's new - Systemtap probes and function man pages extracted from the tapsets - are now available. To look at man page for systemtap vm.pagefault: - $ man 3stap vm.pagefault + are now available in a separate man section 3stap. + To look at the page for probe vm.pagefault: + $ man -S 3stap probe_vm.pagefault + To look at the page for the function pexecname: + $ man -S 3stap pexecname - Kernel tracepoints are now supported for probing predefined kernel events without any debuginfo. Tracepoints incur less overhead than -- cgit From 83dd1a8e273f5a30a94fd6438fe0567c5fd1aee7 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 25 Mar 2009 13:34:04 +0100 Subject: NEWS: Add description of probe process().insn and process().insn.block. --- NEWS | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/NEWS b/NEWS index c169c5e2..795d73c1 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,14 @@ * What's new + - New probes process().insn and process().insn.block that allows + inspection of the process after each instruction or block of + instructions executed. So to count the total number of instructions + a process executes during a run do something like: + $ stap -e 'global steps; probe process("/bin/ls").insn {steps++} + probe end {printf("Total instructions: %d\n", steps);}' \ + -c /bin/ls + This feature can slow down execution of a process somewhat. + - Systemtap probes and function man pages extracted from the tapsets are now available in a separate man section 3stap. To look at the page for probe vm.pagefault: -- cgit From 8e2dc4511df5c321b7723549a559398a3aa84e96 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 25 Mar 2009 13:49:24 +0100 Subject: NEWS: Fix man 3stap description to original. --- NEWS | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index 795d73c1..d10c2cc3 100644 --- a/NEWS +++ b/NEWS @@ -9,12 +9,11 @@ -c /bin/ls This feature can slow down execution of a process somewhat. -- Systemtap probes and function man pages extracted from the tapsets - are now available in a separate man section 3stap. - To look at the page for probe vm.pagefault: - $ man -S 3stap probe_vm.pagefault - To look at the page for the function pexecname: - $ man -S 3stap pexecname + - Systemtap probes and function man pages extracted from the tapsets + are now available under 3stap. To show the page for probe vm.pagefault + or the stap function pexecname do: + $ man 3stap vm.pagefault + $ man 3stap pexecname - Kernel tracepoints are now supported for probing predefined kernel events without any debuginfo. Tracepoints incur less overhead than -- cgit From 59fde7ccc0f707fb55a2e145e78a1e19a4fd2e80 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 25 Mar 2009 14:09:02 +0100 Subject: NEWS: Document mark/trace list mode, interrupt reentrancy, reentrancy debug. --- NEWS | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/NEWS b/NEWS index d10c2cc3..4dae77d7 100644 --- a/NEWS +++ b/NEWS @@ -54,6 +54,18 @@ This replaces any dwarf $variable expressions that could not be resolved with literal numeric zeros, along with a warning message. +- Both kernel markers and kernel tracepoint support argument listing + through stap -L 'kernel.mark("*")' or stap -L 'kernel.trace("*")' + +- Users can use -DINTERRUPTIBLE=0 to prevent interrupt reentrancy in + their script, at the cost of a bit more overhead to toggle the + interrupt mask. + +- Added reentrancy debugging. If stap is run with the arguments + "-t -DDEBUG_REENTRANCY", additional warnings will be printed for + every reentrancy event, including the probe points of the + resident and interloper probes. + * What's new in version 0.9 - Typecasting is now supported using the @cast operator. A script can -- cgit From 882ddac13d8a821b93d4f9d2b7a16c9322ee46b6 Mon Sep 17 00:00:00 2001 From: Rajan Arora Date: Wed, 25 Mar 2009 10:33:45 -0400 Subject: Update configure --help message now that default is changed *configure.ac: Update help message for building with pie support. *configure: Regenerate. --- configure | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 4f33313d..777d6c0d 100755 --- a/configure +++ b/configure @@ -1336,7 +1336,7 @@ Optional Features: location). --enable-prologues make -P prologue-searching default --disable-ssp disable gcc stack-protector - --disable-pie disable position-independent-executable + --enable-pie enable position-independent-executable --enable-sqlite build with sqlite support --enable-crash[=DIRECTORY] enable crash extension (default is disabled). diff --git a/configure.ac b/configure.ac index f1546673..e980fbf5 100644 --- a/configure.ac +++ b/configure.ac @@ -84,7 +84,7 @@ AS_IF([test "x$enable_ssp" != xno],[ # Compiling without fPIE by default (see PR 9922) AC_ARG_ENABLE([pie], - [AS_HELP_STRING([--disable-pie], [disable position-independent-executable])]) + [AS_HELP_STRING([--enable-pie], [enable position-independent-executable])]) AS_IF([test "x$enable_pie" == xyes],[ save_CFLAGS="$CFLAGS" save_CXXFLAGS="$CXXFLAGS" -- cgit From b41a544e20a42413daa0323d2f149e9e34586ccf Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Wed, 25 Mar 2009 10:44:55 -0400 Subject: Fix for CVE-2009-0784: stapusr module-path checking race * runtime/staprun/staprun_funcs.c (check_path): Save fully canonicalized and checked module path for later loading. --- runtime/staprun/staprun_funcs.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/runtime/staprun/staprun_funcs.c b/runtime/staprun/staprun_funcs.c index 5e7fa102..e94e5d13 100644 --- a/runtime/staprun/staprun_funcs.c +++ b/runtime/staprun/staprun_funcs.c @@ -269,6 +269,15 @@ check_path(void) return -1; } + /* Overwrite the modpath with the canonicalized one, to defeat + a possible race between path checking below and somewhat later + module loading. */ + modpath = strdup (module_realpath); + if (modpath == NULL) { + _perr("allocating memory failed"); + exit (1); + } + /* To make sure the user can't specify something like * /lib/modules/`uname -r`/systemtapmod.ko, put a '/' on the * end of staplib_dir_realpath. */ -- cgit From 387a7a57e1dd8f07db10ada3f4c3010c96607bfa Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 25 Mar 2009 17:17:07 +0100 Subject: NEWS: Mention disable-pie, sdt.h compat, syscall wrappers and CVE-2009-0784. --- NEWS | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/NEWS b/NEWS index 4dae77d7..ed4572d4 100644 --- a/NEWS +++ b/NEWS @@ -66,6 +66,18 @@ every reentrancy event, including the probe points of the resident and interloper probes. +- Default to --disable-pie for configure. + Use --enable-pie to turn it back on. + +- Improved sdt.h compatibility and test suite for static dtrace + compatible user space markers. + +- Some architectures now use syscall wrappers (HAVE_SYSCALL_WRAPPERS). + The syscall tapset has been enhanced to take care of the syscall + wrappers in this release. + +- Security fix for CVE-2009-0784: stapusr module-path checking race. + * What's new in version 0.9 - Typecasting is now supported using the @cast operator. A script can -- cgit From 121e57ae36e2030093f72723b1fb74dc0507ddab Mon Sep 17 00:00:00 2001 From: William Cohen Date: Wed, 25 Mar 2009 18:26:01 -0400 Subject: Make aux_tapset.stp "long long" size agnostic so ia64 works. --- tapset/aux_syscalls.stp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tapset/aux_syscalls.stp b/tapset/aux_syscalls.stp index 87ea4e04..009b0532 100644 --- a/tapset/aux_syscalls.stp +++ b/tapset/aux_syscalls.stp @@ -325,7 +325,8 @@ function _struct_sockaddr_u:string(uaddr:long, len:long) struct sockaddr_ll *sll = (struct sockaddr_ll *)buf; snprintf(str, strlen, "{AF_PACKET, proto=%d, ind=%d, hatype=%d, pkttype=%d, halen=%d, addr=0x%llx}", (int)sll->sll_protocol, sll->sll_ifindex, (int)sll->sll_hatype, (int)sll->sll_pkttype, - (int)sll->sll_halen, *(uint64_t *)sll->sll_addr); + (int)sll->sll_halen, + (long long)(*(uint64_t *)sll->sll_addr)); } else { -- cgit From 2a8c27f6bfdf2e7962def6fc8729ebb5fb54c701 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Wed, 25 Mar 2009 15:47:21 -0700 Subject: Add more file stats to the hash For kernel developers, it may be common practice to reuse the same kernel build tree for several kernel variants. Our previous hashing only considered the release version, architecture, and build path, which may all remain constant for such a developer. This change adds the file size and mtime of several kernel version files to the hash, so it should be a bit more robust against collisions. --- hash.cxx | 38 ++++++++++++++++++++++++-------------- hash.h | 1 + 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/hash.cxx b/hash.cxx index b8d5a0e4..c9121641 100644 --- a/hash.cxx +++ b/hash.cxx @@ -47,6 +47,20 @@ hash::add(const unsigned char *buffer, size_t size) } +void +hash::add_file(const std::string& filename) +{ + struct stat st; + + if (stat(filename.c_str(), &st) == 0) + { + add(filename); + add(st.st_size); + add(st.st_mtime); + } +} + + void hash::result(string& r) { @@ -68,37 +82,33 @@ hash::result(string& r) static void get_base_hash (systemtap_session& s, hash& h) { - struct stat st; - // Hash kernel release and arch. h.add(s.kernel_release); h.add(s.kernel_build_tree); h.add(s.architecture); + // Hash a few kernel version/build-id files too + // (useful for kernel developers reusing a single source tree) + h.add_file(s.kernel_build_tree + "/.config"); + h.add_file(s.kernel_build_tree + "/.version"); + h.add_file(s.kernel_build_tree + "/include/linux/compile.h"); + h.add_file(s.kernel_build_tree + "/include/linux/version.h"); + h.add_file(s.kernel_build_tree + "/include/linux/utsrelease.h"); + // Hash runtime path (that gets added in as "-R path"). h.add(s.runtime_path); // Hash compiler path, size, and mtime. We're just going to assume // we'll be using gcc. XXX: getting kbuild to spit out out would be // better. - string gcc_path = find_executable ("gcc"); - if (stat(gcc_path.c_str(), &st) == 0) - { - h.add(gcc_path); - h.add(st.st_size); - h.add(st.st_mtime); - } + h.add_file(find_executable("gcc")); // Hash the systemtap size and mtime. We could use VERSION/DATE, // but when developing systemtap that doesn't work well (since you // can compile systemtap multiple times in 1 day). Since we don't // know exactly where we're getting run from, we'll use // /proc/self/exe. - if (stat("/proc/self/exe", &st) == 0) - { - h.add(st.st_size); - h.add(st.st_mtime); - } + h.add_file("/proc/self/exe"); } diff --git a/hash.h b/hash.h index 0fe95e27..bb3d5ae1 100644 --- a/hash.h +++ b/hash.h @@ -30,6 +30,7 @@ public: void add(const char *s) { add((const unsigned char *)s, strlen(s)); } void add(const std::string& s) { add((const unsigned char *)s.c_str(), s.length()); } + void add_file(const std::string& filename); void result(std::string& r); }; -- cgit From a5e8d632f443c6a882dcabc669236dc4798b1fd7 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Wed, 25 Mar 2009 17:25:06 -0700 Subject: Add the kernel tree's git revision to the hash To better support kernel developers who work out of a single source tree, this adds the git HEAD revision to our caching hash. --- hash.cxx | 4 ++++ util.cxx | 27 +++++++++++++++++++++++++++ util.h | 1 + 3 files changed, 32 insertions(+) diff --git a/hash.cxx b/hash.cxx index c9121641..649e7ec0 100644 --- a/hash.cxx +++ b/hash.cxx @@ -95,6 +95,10 @@ get_base_hash (systemtap_session& s, hash& h) h.add_file(s.kernel_build_tree + "/include/linux/version.h"); h.add_file(s.kernel_build_tree + "/include/linux/utsrelease.h"); + // If the kernel is a git working directory, then add the git HEAD + // revision to our hash as well. + h.add(git_revision(s.kernel_build_tree)); + // Hash runtime path (that gets added in as "-R path"). h.add(s.runtime_path); diff --git a/util.cxx b/util.cxx index 7d191cd2..68cc27f7 100644 --- a/util.cxx +++ b/util.cxx @@ -248,4 +248,31 @@ const string cmdstr_quoted(const string& cmd) return quoted_cmd; } + +string +git_revision(const string& path) +{ + string revision = "(not-a-git-repository)"; + string git_dir = path + "/.git/"; + + struct stat st; + if (stat(git_dir.c_str(), &st) == 0) + { + string command = "git --git-dir=\"" + git_dir + + "\" rev-parse HEAD 2>/dev/null"; + + char buf[50]; + FILE *fp = popen(command.c_str(), "r"); + if (fp != NULL) + { + char *bufp = fgets(buf, sizeof(buf), fp); + int rc = pclose(fp); + if (bufp != NULL && rc == 0) + revision = buf; + } + } + + return revision; +} + /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ diff --git a/util.h b/util.h index 2884e021..d385be02 100644 --- a/util.h +++ b/util.h @@ -12,6 +12,7 @@ void tokenize(const std::string& str, std::vector& tokens, const std::string& delimiters); std::string find_executable(const std::string& name); const std::string cmdstr_quoted(const std::string& cmd); +std::string git_revision(const std::string& path); // stringification generics -- cgit From bc02f40984fede1c312ca33c0c3937b970e8da6d Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 26 Mar 2009 17:53:57 +0100 Subject: .gitignore: Replace .5 with .3stap. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 48ee168d..cd63142e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,8 @@ gmon.out config.h config.log config.status -*.[158] +*.[18] +*.3stap .deps loc2c-test run-stap -- cgit From 4aa2079a01a62ff27cbe90f5eca38137035d34a8 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Thu, 26 Mar 2009 09:20:16 -0700 Subject: PR10001: Use the kernel's strlcpy & strlcat We had our own implementations of these which were triggering gcc bug38480 in some particular cases. It's easier for us to use the kernel's strlcpy and strlcat anyway, which avoids the bug. --- runtime/map.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/runtime/map.c b/runtime/map.c index de25d6f3..190ba91b 100644 --- a/runtime/map.c +++ b/runtime/map.c @@ -38,27 +38,16 @@ static int int64_eq_p (int64_t key1, int64_t key2) static void str_copy(char *dest, char *src) { - int len = 0; - if (src) { - len = strlen(src); - if (len > MAP_STRING_LENGTH - 1) - len = MAP_STRING_LENGTH - 1; - memcpy (dest, src, len); - } - dest[len] = 0; + if (src) + strlcpy(dest, src, MAP_STRING_LENGTH); + else + *dest = 0; } static void str_add(void *dest, char *val) { char *dst = (char *)dest; - int len = strlen(val); - int len1 = strlen(dst); - int num = MAP_STRING_LENGTH - 1 - len1; - - if (len > num) - len = num; - memcpy (&dst[len1], val, len); - dst[len + len1] = 0; + strlcat(dst, val, MAP_STRING_LENGTH); } static int str_eq_p (char *key1, char *key2) -- cgit From d0d806edbff3dbdc70a1c83dc6ac67c88b9606ce Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Thu, 26 Mar 2009 14:09:43 -0700 Subject: Skip the git-rev in the hash for now (from a5e8d632) It may be potentially expensive to fork-exec a git call to get the HEAD revision, and it's not clear whether it's even needed. We can always throw this back on if we find a meaningful usage scenario. --- hash.cxx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hash.cxx b/hash.cxx index 649e7ec0..3ff6848d 100644 --- a/hash.cxx +++ b/hash.cxx @@ -97,7 +97,10 @@ get_base_hash (systemtap_session& s, hash& h) // If the kernel is a git working directory, then add the git HEAD // revision to our hash as well. - h.add(git_revision(s.kernel_build_tree)); + // XXX avoiding this for now, because it's potentially expensive and has + // uncertain gain. The only corner case that this may help is if a developer + // is switching the source tree without rebuilding the kernel... + ///h.add(git_revision(s.kernel_build_tree)); // Hash runtime path (that gets added in as "-R path"). h.add(s.runtime_path); -- cgit From 835880e72bdaca1c468b72d1f6c7f0f6cefcc717 Mon Sep 17 00:00:00 2001 From: Wenji Huang Date: Thu, 26 Mar 2009 20:24:06 -0400 Subject: Add manual for pid-based lookup functions * stapfuncs.3stap.in: Add description for pid2task and pid2execname. --- stapfuncs.3stap.in | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/stapfuncs.3stap.in b/stapfuncs.3stap.in index 1f2955da..ccc87b1d 100644 --- a/stapfuncs.3stap.in +++ b/stapfuncs.3stap.in @@ -346,6 +346,14 @@ Return the number of open file handles for the given task. task_max_file_handles:long(task:long) Return the maximum number of file handles for the given task. +.TP +pid2task:long(pid:long) +Return the task of the given process id. + +.TP +pid2execname:string(pid:long) +Return the name of the given process id. + .SS CPU REGISTERS .TP registers_valid:long () -- cgit From 0977ab1f283c48918c483a73d96b1345286419ca Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 27 Mar 2009 12:45:51 +0100 Subject: .gitignore: Add testsuite exe and so files and initscript systemtap. --- initscript/.gitignore | 1 + testsuite/.gitignore | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 initscript/.gitignore diff --git a/initscript/.gitignore b/initscript/.gitignore new file mode 100644 index 00000000..ec0530ab --- /dev/null +++ b/initscript/.gitignore @@ -0,0 +1 @@ +systemtap diff --git a/testsuite/.gitignore b/testsuite/.gitignore index 19b30bf1..709de57f 100644 --- a/testsuite/.gitignore +++ b/testsuite/.gitignore @@ -2,3 +2,6 @@ site.exp systemtap.log systemtap.sum +*.so +*_exe +*.exe.[0-9] -- cgit From 432f054fc20511d487d18234b6408b5df89a8c4d Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Fri, 27 Mar 2009 11:54:42 -0400 Subject: PR10000: emit _stp_relocate* calculations correctly for kernel/module global $data * translate.cxx (dump_unwindsyms): Also emit STT_OBJECT symbols, therefore .data etc. sections into stap-symbols.h. * tapsets.cxx (iterate_over_modules): Omit a dwfl_getmodules() RC-checking assertion that blocked meaningful $context var error messages. (dwflpp::emit_address): Bypass dwfl_module_relocate_address() for kernel symbols as it has been unreliable; subtract sess.sym_stext manually. * testsuite/buildok/seventeen.stp: Extend test with module $global. --- tapsets.cxx | 25 +++++++++++++++++++------ testsuite/buildok/seventeen.stp | 9 +++++++++ translate.cxx | 7 ++++--- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/tapsets.cxx b/tapsets.cxx index c36a1aa0..82c61525 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -1040,7 +1040,10 @@ struct dwflpp off = dwfl_getmodules (dwfl, callback, data, off); } while (off > 0); - dwfl_assert("dwfl_getmodules", off == 0); + // Don't complain if we exited dwfl_getmodules early. + // This could be a $target variable error that will be + // reported soon anyway. + // dwfl_assert("dwfl_getmodules", off == 0); // PR6864 XXX: For dwarfless case (if .../vmlinux is missing), then the // "kernel" module is not reported in the loop above. However, we @@ -1699,15 +1702,25 @@ struct dwflpp // relocatable module probing code will need to have. Dwfl_Module *mod = dwfl_addrmodule (dwfl, address); dwfl_assert ("dwfl_addrmodule", mod); + const char *modname = dwfl_module_info (mod, NULL, NULL, NULL, + NULL, NULL, NULL, NULL); int n = dwfl_module_relocations (mod); dwfl_assert ("dwfl_module_relocations", n >= 0); - int i = dwfl_module_relocate_address (mod, &address); + Dwarf_Addr reloc_address = address; + int i = dwfl_module_relocate_address (mod, &reloc_address); dwfl_assert ("dwfl_module_relocate_address", i >= 0); - const char *modname = dwfl_module_info (mod, NULL, NULL, NULL, - NULL, NULL, NULL, NULL); dwfl_assert ("dwfl_module_info", modname); const char *secname = dwfl_module_relocation_info (mod, i, NULL); + if (sess.verbose > 2) + { + clog << "emit dwarf addr 0x" << hex << address << dec + << " => module " << modname + << " section " << (secname ?: "null") + << " relocaddr 0x" << hex << reloc_address << dec + << endl; + } + if (n > 0 && !(n == 1 && secname == NULL)) { dwfl_assert ("dwfl_module_relocation_info", secname); @@ -1717,7 +1730,7 @@ struct dwflpp // module, for a kernel module (or other ET_REL module object). obstack_printf (pool, "({ static unsigned long addr = 0; "); obstack_printf (pool, "if (addr==0) addr = _stp_module_relocate (\"%s\",\"%s\",%#" PRIx64 "); ", - modname, secname, address); + modname, secname, reloc_address); obstack_printf (pool, "addr; })"); } else if (n == 1 && module_name == TOK_KERNEL && secname[0] == '\0') @@ -1728,7 +1741,7 @@ struct dwflpp secname = "_stext"; obstack_printf (pool, "({ static unsigned long addr = 0; "); obstack_printf (pool, "if (addr==0) addr = _stp_module_relocate (\"%s\",\"%s\",%#" PRIx64 "); ", - modname, secname, address); + modname, secname, address); // PR10000 NB: not reloc_address obstack_printf (pool, "addr; })"); } else diff --git a/testsuite/buildok/seventeen.stp b/testsuite/buildok/seventeen.stp index 126db1fb..4e0b07c4 100755 --- a/testsuite/buildok/seventeen.stp +++ b/testsuite/buildok/seventeen.stp @@ -11,3 +11,12 @@ probe kernel.function("pipe_write") printf("0x%x\n", $write_fifo_fops->llseek) %) } + +# PR10000: We're looking for *some* module function that has a nearby global variable in scope +# XXX: See PR4096 +probe module("nfs").function("nfs_create_client") !, module("nfs").function("nfs_init_client") !, + kernel.function("nfs_fsync_dir") { + println(kernel_string($nfs_program->name)) +} + +probe timer.s(5) { exit() } diff --git a/translate.cxx b/translate.cxx index 0b81d9bb..47fffd1e 100644 --- a/translate.cxx +++ b/translate.cxx @@ -4564,7 +4564,7 @@ dump_unwindsyms (Dwfl_Module *m, // base address outself. (see also below). extra_offset = sym.st_value - base; if (c->session.verbose > 2) - clog << "Found kernel _stext 0x" << hex << extra_offset << dec << endl; + clog << "Found kernel _stext extra offset 0x" << hex << extra_offset << dec << endl; } // We only need the function symbols to identify kernel-mode @@ -4572,8 +4572,9 @@ dump_unwindsyms (Dwfl_Module *m, // These fake absolute addresses occur in some older i386 // kernels to indicate they are vDSO symbols, not real // functions in the kernel. - if (GELF_ST_TYPE (sym.st_info) == STT_FUNC && - ! (sym.st_shndx == SHN_UNDEF || sym.st_shndx == SHN_ABS)) + if ((GELF_ST_TYPE (sym.st_info) == STT_FUNC || + GELF_ST_TYPE (sym.st_info) == STT_OBJECT) // PR10000: also need .data + && !(sym.st_shndx == SHN_UNDEF || sym.st_shndx == SHN_ABS)) { Dwarf_Addr sym_addr = sym.st_value; const char *secname = NULL; -- cgit From 28f569c22b5a4ec666be5ccdf26fd194d3643c29 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Fri, 27 Mar 2009 12:07:49 -0400 Subject: initialize skip_badvars=0. rererenag developers in session.h to do so in the future --- main.cxx | 1 + session.h | 25 +++++++++++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/main.cxx b/main.cxx index cdcae41a..055c56b8 100644 --- a/main.cxx +++ b/main.cxx @@ -379,6 +379,7 @@ main (int argc, char * const argv []) s.ignore_vmlinux = false; s.ignore_dwarf = false; s.load_only = false; + s.skip_badvars = false; const char* s_p = getenv ("SYSTEMTAP_TAPSET"); if (s_p != NULL) diff --git a/session.h b/session.h index cbbae6b2..aeeeacdf 100644 --- a/session.h +++ b/session.h @@ -74,8 +74,9 @@ struct statistic_decl struct systemtap_session { systemtap_session (); - // NB: new POD members likely need to be explicitly cleared in the ctor. - // See elaborate.cxx. + // NB: It is very important for all of the above (and below) fields + // to be cleared in the systemtap_session ctor (elaborate.cxx) + // and/or main.cxx(main). // command line args std::vector include_path; @@ -112,6 +113,10 @@ struct systemtap_session bool need_uprobes; bool load_only; // flight recorder mode + // NB: It is very important for all of the above (and below) fields + // to be cleared in the systemtap_session ctor (elaborate.cxx) + // and/or main.cxx(main). + // Cache data bool use_cache; std::string cache_path; @@ -128,6 +133,10 @@ struct systemtap_session // Skip bad $ vars bool skip_badvars; + // NB: It is very important for all of the above (and below) fields + // to be cleared in the systemtap_session ctor (elaborate.cxx) + // and/or main.cxx(main). + // temporary directory for module builds etc. // hazardous - it is "rm -rf"'d at exit std::string tmpdir; @@ -172,8 +181,10 @@ struct systemtap_session hrtimer_derived_probe_group* hrtimer_derived_probes; perfmon_derived_probe_group* perfmon_derived_probes; procfs_derived_probe_group* procfs_derived_probes; + // NB: It is very important for all of the above (and below) fields - // to be cleared in the systemtap_session ctor (elaborate.cxx). + // to be cleared in the systemtap_session ctor (elaborate.cxx) + // and/or main.cxx(main). // unparser data translator_output* op; @@ -189,6 +200,10 @@ struct systemtap_session std::set unwindsym_modules; struct module_cache* module_cache; + // NB: It is very important for all of the above (and below) fields + // to be cleared in the systemtap_session ctor (elaborate.cxx) + // and/or main.cxx(main). + std::set seen_errors; std::set seen_warnings; unsigned num_errors () { return seen_errors.size(); } @@ -200,7 +215,9 @@ struct systemtap_session void print_error_source (std::ostream&, std::string&, const token* tok); void print_warning (const std::string& w, const token* tok = 0); - // reNB: new POD members likely need to be explicitly cleared in the ctor. + // NB: It is very important for all of the above (and below) fields + // to be cleared in the systemtap_session ctor (elaborate.cxx) + // and/or main.cxx(main). }; -- cgit From e904ad9554d7eb3363612f4f32141c6dbc4f50d4 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Fri, 27 Mar 2009 12:15:19 -0400 Subject: PR6819: clarify syntactic vs. semantic probe point validity --- stapprobes.3stap.in | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/stapprobes.3stap.in b/stapprobes.3stap.in index f175e6e0..a8988c71 100644 --- a/stapprobes.3stap.in +++ b/stapprobes.3stap.in @@ -49,12 +49,16 @@ including alias's body is skipped. The condition is stacked up through all levels of alias/wildcard expansion. So the final condition becomes the logical-and of conditions of all expanded alias/wildcard. -These are all syntactically valid probe points: +These are all +.B syntactically +valid probe points. (They are generally +.B semantically +invalid, depending on the contents of the tapsets, and the versions of +kernel/user software installed.) .SAMPLE kernel.function("foo").return -syscall(22) -user.inode("/bin/vi").statement(0x2222) +process("/bin/vi").statement(0x2222) end syscall.* kernel.function("no_such_function") ? @@ -62,6 +66,7 @@ module("awol").function("no_such_function") ! signal.*? if (switch) .ESAMPLE + Probes may be broadly classified into "synchronous" and "asynchronous". A "synchronous" event is deemed to occur when any processor executes an instruction matched by the specification. This -- cgit From 27aba29a01fa06488a7bd86d8bb327f3f692e218 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Fri, 27 Mar 2009 09:38:50 -0700 Subject: Version bumps for 0.9.5 release --- Makefile.in | 1 + NEWS | 2 +- aclocal.m4 | 4 +- configure | 3866 +++++++++++++++------------- configure.ac | 2 +- doc/Makefile.in | 1 + doc/SystemTap_Tapset_Reference/Makefile.in | 1 + systemtap.spec | 7 +- testsuite/Makefile.in | 94 +- testsuite/aclocal.m4 | 4 +- testsuite/configure | 1242 +++++---- testsuite/configure.ac | 2 +- 12 files changed, 2827 insertions(+), 2399 deletions(-) diff --git a/Makefile.in b/Makefile.in index 35bcd486..7f880e7f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -289,6 +289,7 @@ staplog_CPPFLAGS = @staplog_CPPFLAGS@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ diff --git a/NEWS b/NEWS index ed4572d4..ec204442 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -* What's new +* What's new in version 0.9.5 - New probes process().insn and process().insn.block that allows inspection of the process after each instruction or block of diff --git a/aclocal.m4 b/aclocal.m4 index 0e2027cd..5ff7e05a 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -13,8 +13,8 @@ m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(AC_AUTOCONF_VERSION, [2.61],, -[m4_warning([this file was generated for autoconf 2.61. +m4_if(AC_AUTOCONF_VERSION, [2.63],, +[m4_warning([this file was generated for autoconf 2.63. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) diff --git a/configure b/configure index 777d6c0d..6ed22c90 100755 --- a/configure +++ b/configure @@ -1,11 +1,11 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for systemtap 0.9. +# Generated by GNU Autoconf 2.63 for systemtap 0.9.5. # # Report bugs to . # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## @@ -17,7 +17,7 @@ DUALCASE=1; export DUALCASE # for MKS sh 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 + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST @@ -39,17 +39,45 @@ 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=';' +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' else - PATH_SEPARATOR=: + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' fi - rm -f conf$$.sh + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi # Support unset when possible. @@ -65,8 +93,6 @@ fi # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. @@ -89,7 +115,7 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi @@ -102,17 +128,10 @@ 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) >/dev/null 2>&1 && $as_unset $as_var - fi -done +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && @@ -134,7 +153,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -160,7 +179,7 @@ else as_have_required=no fi - if test $as_have_required = yes && (eval ": + if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } @@ -242,7 +261,7 @@ IFS=$as_save_IFS 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 + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST @@ -263,7 +282,7 @@ _ASEOF 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 + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST @@ -343,10 +362,10 @@ fi if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi @@ -415,9 +434,10 @@ fi test \$exitcode = 0") || { echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message + echo Please tell bug-autoconf@gnu.org about your system, + echo including any error possibly output before this message. + echo This can help us improve future autoconf versions. + echo Configuration will now proceed without shell functions. } @@ -453,7 +473,7 @@ test \$exitcode = 0") || { s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { $as_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 @@ -481,7 +501,6 @@ case `echo -n x` in *) ECHO_N='-n';; esac - if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -494,19 +513,22 @@ if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln + fi else as_ln_s='cp -p' fi @@ -531,10 +553,10 @@ else as_test_x=' eval sh -c '\'' if test -d "$1"; then - test -d "$1/."; + test -d "$1/."; else case $1 in - -*)set "./$1";; + -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi @@ -574,8 +596,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='systemtap' PACKAGE_TARNAME='systemtap' -PACKAGE_VERSION='0.9' -PACKAGE_STRING='systemtap 0.9' +PACKAGE_VERSION='0.9.5' +PACKAGE_STRING='systemtap 0.9.5' PACKAGE_BUGREPORT='systemtap@sources.redhat.com' # Factoring default headers for most tests. @@ -614,129 +636,145 @@ ac_includes_default="\ # include #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 -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -am__isrc -CYGPATH_W -PACKAGE -VERSION -ACLOCAL -AUTOCONF -AUTOMAKE -AUTOHEADER -MAKEINFO -install_sh -STRIP -INSTALL_STRIP_PROGRAM -mkdir_p -AWK -SET_MAKE -am__leading_dot -AMTAR -am__tar -am__untar -MAINTAINER_MODE_TRUE -MAINTAINER_MODE_FALSE +enable_option_checking=no +ac_subst_vars='LTLIBOBJS +LIBOBJS +subdirs +CXXCPP +PROCFLAGS +DATE +stap_LIBS +elfutils_abs_srcdir +BUILD_ELFUTILS_FALSE +BUILD_ELFUTILS_TRUE +BUILD_SERVER_FALSE +BUILD_SERVER_TRUE +nspr_CFLAGS +nss_CFLAGS +BUILD_REFDOCS_FALSE +BUILD_REFDOCS_TRUE +have_xmlto +BUILD_DOCS_FALSE +BUILD_DOCS_TRUE +have_latex2html +have_ps2pdf +have_dvips +have_latex +BUILD_CRASHMOD_FALSE +BUILD_CRASHMOD_TRUE +staplog_CPPFLAGS +sqlite3_LIBS +PIECXXFLAGS +PIECFLAGS +PIELDFLAGS +RANLIB +ANSI2KNR +U +EGREP +GREP +CPP +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +LN_S MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p MKDIR_P -LN_S -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -DEPDIR -am__include -am__quote -AMDEP_TRUE -AMDEP_FALSE -AMDEPBACKSLASH -CCDEPMODE -am__fastdepCC_TRUE -am__fastdepCC_FALSE -CXX -CXXFLAGS -ac_ct_CXX -CXXDEPMODE -am__fastdepCXX_TRUE -am__fastdepCXX_FALSE -CPP -GREP -EGREP -U -ANSI2KNR -RANLIB -PIELDFLAGS -PIECFLAGS -PIECXXFLAGS -sqlite3_LIBS -staplog_CPPFLAGS -BUILD_CRASHMOD_TRUE -BUILD_CRASHMOD_FALSE -have_latex -have_dvips -have_ps2pdf -have_latex2html -BUILD_DOCS_TRUE -BUILD_DOCS_FALSE -have_xmlto -BUILD_REFDOCS_TRUE -BUILD_REFDOCS_FALSE -nss_CFLAGS -nspr_CFLAGS -BUILD_SERVER_TRUE -BUILD_SERVER_FALSE -BUILD_ELFUTILS_TRUE -BUILD_ELFUTILS_FALSE -elfutils_abs_srcdir -stap_LIBS -DATE -PROCFLAGS -CXXCPP -subdirs -LIBOBJS -LTLIBOBJS' +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_maintainer_mode +enable_dependency_tracking +enable_perfmon +enable_prologues +enable_ssp +enable_pie +enable_sqlite +enable_crash +enable_docs +enable_refdocs +enable_server +with_elfutils +' ac_precious_vars='build_alias host_alias target_alias @@ -755,6 +793,8 @@ ac_subdirs_all='testsuite' # Initialize some variables set by options. ac_init_help= ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null @@ -853,13 +893,21 @@ do datarootdir=$ac_optarg ;; -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + ac_useropt=`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 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=no ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; @@ -872,13 +920,21 @@ do dvidir=$ac_optarg ;; -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + ac_useropt=`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 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -1069,22 +1125,38 @@ do ac_init_version=: ;; -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + ac_useropt=`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 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + ac_useropt=`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 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=no ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. @@ -1104,7 +1176,7 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) { echo "$as_me: error: unrecognized option: $ac_option + -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; @@ -1113,16 +1185,16 @@ Try \`$0 --help' for more information." >&2 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 + { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } 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 + $as_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 + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; @@ -1131,22 +1203,38 @@ 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 + { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi -# Be sure to have absolute directory names. +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 + { (exit 1); exit 1; }; } ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done @@ -1161,7 +1249,7 @@ target=$target_alias 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. + $as_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 @@ -1177,10 +1265,10 @@ test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 + { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 + { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } @@ -1188,12 +1276,12 @@ test "X$ac_ls_di" = "X$ac_pwd_ls_di" || if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X"$0" | + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1220,12 +1308,12 @@ else fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. @@ -1252,7 +1340,7 @@ 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 systemtap 0.9 to adapt to many kinds of systems. +\`configure' configures systemtap 0.9.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1274,9 +1362,9 @@ Configuration: Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] + [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] + [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify @@ -1286,25 +1374,25 @@ 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] - --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] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/systemtap] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --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] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/systemtap] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -1318,11 +1406,12 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of systemtap 0.9:";; + short | recursive ) echo "Configuration of systemtap 0.9.5:";; esac cat <<\_ACEOF Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful @@ -1380,15 +1469,17 @@ fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1424,7 +1515,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1433,11 +1524,11 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -systemtap configure 0.9 -generated by GNU Autoconf 2.61 +systemtap configure 0.9.5 +generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1447,8 +1538,8 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by systemtap $as_me 0.9, which was -generated by GNU Autoconf 2.61. Invocation command line was +It was created by systemtap $as_me 0.9.5, which was +generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ @@ -1484,7 +1575,7 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" + $as_echo "PATH: $as_dir" done IFS=$as_save_IFS @@ -1519,7 +1610,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; @@ -1571,11 +1662,12 @@ _ASBOX case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac @@ -1605,9 +1697,9 @@ _ASBOX do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo @@ -1622,9 +1714,9 @@ _ASBOX do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1640,8 +1732,8 @@ _ASBOX echo fi test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -1683,21 +1775,24 @@ _ACEOF # Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" + ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site fi -shift -for ac_site_file +for ac_site_file in "$ac_site_file1" "$ac_site_file2" do + test "x$ac_site_file" = xNONE && continue 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;} + { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi @@ -1707,16 +1802,16 @@ 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;} + { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 +$as_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;} + { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi @@ -1730,29 +1825,38 @@ for ac_var in $ac_precious_vars; do 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;} + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_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;} + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +$as_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=: + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} 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=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1762,10 +1866,12 @@ echo "$as_me: current value: $ac_new_val" >&2;} 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;} + { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi @@ -1821,8 +1927,8 @@ for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do 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;} + { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi @@ -1848,11 +1954,12 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # 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; } +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -1881,17 +1988,29 @@ case $as_dir/ in # 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 + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi fi fi done done ;; esac + done IFS=$as_save_IFS +rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then @@ -1904,8 +2023,8 @@ fi INSTALL=$ac_install_sh fi fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } +{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -1915,8 +2034,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file @@ -1939,9 +2058,9 @@ if ( # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken + { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi @@ -1952,26 +2071,23 @@ then # Ok. : else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! + { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! +$as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. +# Double any \ or $. # By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm -f conftest.sed +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` @@ -1982,15 +2098,15 @@ if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi -{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 -echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin @@ -2025,8 +2141,8 @@ fi MKDIR_P="$ac_install_sh -d" fi fi -{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 -echo "${ECHO_T}$MKDIR_P" >&6; } +{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in @@ -2038,10 +2154,10 @@ for ac_prog in gawk mawk nawk awk 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. @@ -2054,7 +2170,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2065,22 +2181,23 @@ fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6; } + { $as_echo "$as_me:$LINENO: result: $AWK" >&5 +$as_echo "$AWK" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi test -n "$AWK" && break done -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh @@ -2097,12 +2214,12 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } SET_MAKE= else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -2121,8 +2238,8 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi @@ -2139,7 +2256,7 @@ fi # Define the identity of the package. PACKAGE='systemtap' - VERSION='0.9' + VERSION='0.9.5' cat >>confdefs.h <<_ACEOF @@ -2177,10 +2294,10 @@ if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. @@ -2193,7 +2310,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2204,11 +2321,11 @@ fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } + { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2217,10 +2334,10 @@ if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. @@ -2233,7 +2350,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2244,11 +2361,11 @@ fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } + { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -2256,12 +2373,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -2285,8 +2398,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' -{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 -echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval @@ -2294,8 +2407,8 @@ else USE_MAINTAINER_MODE=no fi - { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 -echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } + { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' @@ -2315,15 +2428,15 @@ case $mkdir_p in esac -{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6; } + { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } fi ac_ext=c @@ -2334,10 +2447,10 @@ 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2350,7 +2463,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2361,11 +2474,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2374,10 +2487,10 @@ 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2390,7 +2503,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2401,11 +2514,11 @@ 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; } + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -2413,12 +2526,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2431,10 +2540,10 @@ 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2447,7 +2556,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2458,11 +2567,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2471,10 +2580,10 @@ 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2492,7 +2601,7 @@ do continue fi ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2515,11 +2624,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2530,10 +2639,10 @@ if test -z "$CC"; then 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2546,7 +2655,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2557,11 +2666,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2574,10 +2683,10 @@ if test -z "$CC"; then 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2590,7 +2699,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2601,11 +2710,11 @@ 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; } + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2617,12 +2726,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2632,44 +2737,50 @@ fi fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_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 +$as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (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` +$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF @@ -2688,27 +2799,22 @@ main () } _ACEOF ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" +ac_clean_files="$ac_clean_files a.out a.out.dSYM 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[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. +{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + ac_rmfiles= for ac_file in $ac_files do case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done @@ -2719,10 +2825,11 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' @@ -2733,7 +2840,7 @@ for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most @@ -2760,25 +2867,27 @@ else ac_file='' fi -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } +{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } if test -z "$ac_file"; then - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_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 +$as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } + { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that 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; } +{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&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 @@ -2787,49 +2896,53 @@ if test "$cross_compiling" != yes; then *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_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. + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_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. +$as_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; }; } + { (exit 1); exit 1; }; }; } fi fi fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } -rm -f a.out a.exe conftest$ac_cv_exeext b.out +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that 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; } +{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_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 @@ -2838,31 +2951,33 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 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 | *.map | *.inf | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_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 +$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (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; } +{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +$as_echo "$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; } +{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2885,40 +3000,43 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else - echo "$as_me: failed program was:" >&5 + $as_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 +{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_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 +$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (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; } +{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +$as_echo "$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; } +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2944,20 +3062,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no @@ -2967,15 +3086,19 @@ rm -f core 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` +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes @@ -3002,20 +3125,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" @@ -3040,20 +3164,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag @@ -3079,20 +3204,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -3107,8 +3233,8 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$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 @@ -3124,10 +3250,10 @@ else CFLAGS= fi fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC @@ -3198,20 +3324,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -3227,15 +3354,15 @@ fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; + { $as_echo "$as_me:$LINENO: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; + { $as_echo "$as_me:$LINENO: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac @@ -3256,8 +3383,8 @@ am__doit: .PHONY: am__doit END # If we don't find an include directive, just comment out the code. -{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none @@ -3284,8 +3411,8 @@ if test "$am__include" = "#"; then fi -{ echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6; } +{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. @@ -3309,10 +3436,10 @@ fi depcc="$CC" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -3400,8 +3527,8 @@ else fi fi -{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -3429,10 +3556,10 @@ if test -z "$CXX"; then 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. @@ -3445,7 +3572,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3456,11 +3583,11 @@ fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6; } + { $as_echo "$as_me:$LINENO: result: $CXX" >&5 +$as_echo "$CXX" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -3473,10 +3600,10 @@ if test -z "$CXX"; then 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. @@ -3489,7 +3616,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3500,11 +3627,11 @@ fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6; } + { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -3516,12 +3643,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -3531,43 +3654,47 @@ fi fi fi # Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` +$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ 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; } +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -3593,20 +3720,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no @@ -3616,15 +3744,19 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } -GXX=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS -{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes @@ -3651,20 +3783,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS="" @@ -3689,20 +3822,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cxx_werror_flag=$ac_save_cxx_werror_flag @@ -3728,20 +3862,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -3756,8 +3891,8 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then @@ -3781,10 +3916,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -3872,8 +4007,8 @@ else fi fi -{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } +{ $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if @@ -3892,15 +4027,15 @@ 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; } +{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&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 + $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" @@ -3932,20 +4067,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. @@ -3969,13 +4105,14 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err @@ -3983,7 +4120,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. @@ -4008,8 +4145,8 @@ fi else ac_cv_prog_CPP=$CPP fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } +{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 +$as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -4037,20 +4174,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. @@ -4074,13 +4212,14 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err @@ -4088,7 +4227,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. @@ -4104,11 +4243,13 @@ rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_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 +$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } fi ac_ext=c @@ -4125,10 +4266,10 @@ 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -4141,7 +4282,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4152,11 +4293,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -4165,10 +4306,10 @@ 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -4181,7 +4322,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4192,11 +4333,11 @@ 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; } + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -4204,12 +4345,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -4222,10 +4359,10 @@ 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -4238,7 +4375,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4249,11 +4386,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -4262,10 +4399,10 @@ 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -4283,7 +4420,7 @@ do continue fi ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4306,11 +4443,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -4321,10 +4458,10 @@ if test -z "$CC"; then 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -4337,7 +4474,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4348,11 +4485,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -4365,10 +4502,10 @@ if test -z "$CC"; then 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -4381,7 +4518,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4392,11 +4529,11 @@ 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; } + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -4408,12 +4545,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -4423,50 +4556,56 @@ fi fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_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 +$as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (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` +$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ 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; } +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -4492,20 +4631,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no @@ -4515,15 +4655,19 @@ rm -f core 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` +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes @@ -4550,20 +4694,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" @@ -4588,20 +4733,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag @@ -4627,20 +4773,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -4655,8 +4802,8 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$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 @@ -4672,10 +4819,10 @@ else CFLAGS= fi fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC @@ -4746,20 +4893,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -4775,15 +4923,15 @@ fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; + { $as_echo "$as_me:$LINENO: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; + { $as_echo "$as_me:$LINENO: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac @@ -4795,10 +4943,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= -{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -4886,8 +5034,8 @@ else fi fi -{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if @@ -4905,16 +5053,16 @@ fi am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc if test "x$CC" != xcc; then - { echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5 -echo $ECHO_N "checking whether $CC and cc understand -c and -o together... $ECHO_C" >&6; } + { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5 +$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } else - { echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5 -echo $ECHO_N "checking whether cc understands -c and -o together... $ECHO_C" >&6; } + { $as_echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5 +$as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi -set dummy $CC; ac_cc=`echo $2 | +set dummy $CC; ac_cc=`$as_echo "$2" | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -4940,19 +5088,21 @@ if { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -f conftest2.$ac_objext && { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes @@ -4963,10 +5113,11 @@ then *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* @@ -4974,19 +5125,21 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -f conftest2.$ac_objext && { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # cc works too. @@ -5004,11 +5157,11 @@ rm -f core conftest* fi if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } cat >>confdefs.h <<\_ACEOF #define NO_MINUS_C_MINUS_O 1 @@ -5030,11 +5183,11 @@ if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then fi -{ echo "$as_me:$LINENO: checking for function prototypes" >&5 -echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for function prototypes" >&5 +$as_echo_n "checking for function prototypes... " >&6; } if test "$ac_cv_prog_cc_c89" != no; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define PROTOTYPES 1 @@ -5046,48 +5199,43 @@ cat >>confdefs.h <<\_ACEOF _ACEOF else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 +{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else + if test -z "$GREP"; then ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue - # Check for GNU ac_path_GREP and select it if it is found. + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo 'GREP' >> "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` @@ -5102,74 +5250,60 @@ case `"$ac_path_GREP" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_GREP_found && break 3 + $ac_path_GREP_found && break 3 + done done done - -done IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + if test -z "$ac_cv_path_GREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } -fi - + fi else ac_cv_path_GREP=$GREP fi - fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else + if test -z "$EGREP"; then ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue - # Check for GNU ac_path_EGREP and select it if it is found. + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - echo 'EGREP' >> "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` @@ -5184,40 +5318,31 @@ case `"$ac_path_EGREP" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - - $ac_path_EGREP_found && break 3 + $ac_path_EGREP_found && break 3 + done done done - -done IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + if test -z "$ac_cv_path_EGREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } -fi - + fi else ac_cv_path_EGREP=$EGREP fi - fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -5244,20 +5369,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no @@ -5349,37 +5475,40 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_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 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi +rm -rf conftest.dSYM rm -f core *.core core.conftest.* 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; } +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -5401,11 +5530,11 @@ fi 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; } +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -5423,20 +5552,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" @@ -5444,12 +5574,15 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -5468,20 +5601,21 @@ fi for ac_header in string.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&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; } +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5497,32 +5631,33 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$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; } +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -5536,51 +5671,52 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else - echo "$as_me: failed program was:" >&5 + $as_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; } +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$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;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_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;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to systemtap@sources.redhat.com ## @@ -5589,21 +5725,24 @@ _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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -5614,10 +5753,10 @@ done if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -5630,7 +5769,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5641,11 +5780,11 @@ fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6; } + { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5654,10 +5793,10 @@ if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. @@ -5670,7 +5809,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5681,11 +5820,11 @@ fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6; } + { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -5693,12 +5832,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -5722,11 +5857,12 @@ fi # 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; } +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -5755,17 +5891,29 @@ case $as_dir/ in # 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 + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi fi fi done done ;; esac + done IFS=$as_save_IFS +rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then @@ -5778,8 +5926,8 @@ fi INSTALL=$ac_install_sh fi fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } +{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -5789,11 +5937,12 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh @@ -5810,12 +5959,12 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } SET_MAKE= else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -5833,10 +5982,10 @@ if test "${enable_perfmon+set}" = set; then LDFLAGS="$LDFLAGS -L$enable_perfmon/lib" fi -{ echo "$as_me:$LINENO: checking for pfm_start in -lpfm" >&5 -echo $ECHO_N "checking for pfm_start in -lpfm... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for pfm_start in -lpfm" >&5 +$as_echo_n "checking for pfm_start in -lpfm... " >&6; } if test "${ac_cv_lib_pfm_pfm_start+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpfm $LIBS" @@ -5868,33 +6017,37 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_pfm_pfm_start=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_pfm_pfm_start=no fi +rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_pfm_pfm_start" >&5 -echo "${ECHO_T}$ac_cv_lib_pfm_pfm_start" >&6; } -if test $ac_cv_lib_pfm_pfm_start = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pfm_pfm_start" >&5 +$as_echo "$ac_cv_lib_pfm_pfm_start" >&6; } +if test "x$ac_cv_lib_pfm_pfm_start" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBPFM 1 _ACEOF @@ -5903,8 +6056,8 @@ _ACEOF else - { { echo "$as_me:$LINENO: error: systemtap cannot find required perfmon libs (libpfm-devel may need to be installed" >&5 -echo "$as_me: error: systemtap cannot find required perfmon libs (libpfm-devel may need to be installed" >&2;} + { { $as_echo "$as_me:$LINENO: error: systemtap cannot find required perfmon libs (libpfm-devel may need to be installed" >&5 +$as_echo "$as_me: error: systemtap cannot find required perfmon libs (libpfm-devel may need to be installed" >&2;} { (exit 1); exit 1; }; } fi @@ -5913,17 +6066,17 @@ fi if test "${enable_prologues+set}" != set; then - { echo "$as_me:$LINENO: checking to see if prologue searching should be the default" >&5 -echo $ECHO_N "checking to see if prologue searching should be the default... $ECHO_C" >&6; } + { $as_echo "$as_me:$LINENO: checking to see if prologue searching should be the default" >&5 +$as_echo_n "checking to see if prologue searching should be the default... " >&6; } if { echo '#if __i386__ == 1 && __GNUC__ < 4' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then enable_prologues=yes - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi fi # Check whether --enable-prologues was given. @@ -5932,7 +6085,7 @@ if test "${enable_prologues+set}" = set; then if test "$enable_prologues" = yes; then cat >>confdefs.h <<\_ACEOF -#define ENABLE_PROLOGUES +#define ENABLE_PROLOGUES /**/ _ACEOF fi @@ -5959,29 +6112,30 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then - { echo "$as_me:$LINENO: Compiling with gcc -fstack-protector-all et al." >&5 -echo "$as_me: Compiling with gcc -fstack-protector-all et al." >&6;} + { $as_echo "$as_me:$LINENO: Compiling with gcc -fstack-protector-all et al." >&5 +$as_echo "$as_me: Compiling with gcc -fstack-protector-all et al." >&6;} CFLAGS="$save_CFLAGS -fstack-protector-all -D_FORTIFY_SOURCE=2" CXFXLAGS="$save_CXXFLAGS -fstack-protector-all -D_FORTIFY_SOURCE=2" else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - { echo "$as_me:$LINENO: Compiler does not support -fstack-protector-all et al." >&5 -echo "$as_me: Compiler does not support -fstack-protector-all et al." >&6;} + { $as_echo "$as_me:$LINENO: Compiler does not support -fstack-protector-all et al." >&5 +$as_echo "$as_me: Compiler does not support -fstack-protector-all et al." >&6;} CFLAGS="$save_CFLAGS" CXXFLAGS="$save_CXXFLAGS" fi @@ -6013,21 +6167,24 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then - { echo "$as_me:$LINENO: Compiling with gcc pie et al." >&5 -echo "$as_me: Compiling with gcc pie et al." >&6;} + { $as_echo "$as_me:$LINENO: Compiling with gcc pie et al." >&5 +$as_echo "$as_me: Compiling with gcc pie et al." >&6;} # LDFLAGS is special since it may be passed down to bundled-elfutils, # and interfere with the .so's built therein PIELDFLAGS="$LDFLAGS" @@ -6038,12 +6195,12 @@ echo "$as_me: Compiling with gcc pie et al." >&6;} CXXFLAGS="$save_CXXFLAGS" else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - { echo "$as_me:$LINENO: Compiler does not support -pie et al." >&5 -echo "$as_me: Compiler does not support -pie et al." >&6;} + { $as_echo "$as_me:$LINENO: Compiler does not support -pie et al." >&5 +$as_echo "$as_me: Compiler does not support -pie et al." >&6;} PIECFLAGS="" CFLAGS="$save_CFLAGS" PIECXXFLAGS="" @@ -6052,6 +6209,7 @@ echo "$as_me: Compiler does not support -pie et al." >&6;} LDFLAGS="$save_LDFLAGS" fi +rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi @@ -6068,10 +6226,10 @@ else fi sqlite3_LIBS= if test "x$enable_sqlite" != xno; then - { echo "$as_me:$LINENO: checking for sqlite3_open in -lsqlite3" >&5 -echo $ECHO_N "checking for sqlite3_open in -lsqlite3... $ECHO_C" >&6; } + { $as_echo "$as_me:$LINENO: checking for sqlite3_open in -lsqlite3" >&5 +$as_echo_n "checking for sqlite3_open in -lsqlite3... " >&6; } if test "${ac_cv_lib_sqlite3_sqlite3_open+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsqlite3 $LIBS" @@ -6103,33 +6261,37 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_sqlite3_sqlite3_open=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_sqlite3_sqlite3_open=no fi +rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_sqlite3_sqlite3_open" >&5 -echo "${ECHO_T}$ac_cv_lib_sqlite3_sqlite3_open" >&6; } -if test $ac_cv_lib_sqlite3_sqlite3_open = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_sqlite3_sqlite3_open" >&5 +$as_echo "$ac_cv_lib_sqlite3_sqlite3_open" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_open" = x""yes; then sqlite3_LIBS=-lsqlite3 @@ -6139,11 +6301,13 @@ _ACEOF else if test "x$enable_sqlite" != xcheck; then - { { echo "$as_me:$LINENO: error: --enable-sqlite was given, but test for sqlite failed + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: --enable-sqlite was given, but test for sqlite failed See \`config.log' for more details." >&5 -echo "$as_me: error: --enable-sqlite was given, but test for sqlite failed +$as_echo "$as_me: error: --enable-sqlite was given, but test for sqlite failed See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } fi fi @@ -6162,11 +6326,11 @@ if test "${enable_crash+set}" = set; then for ac_header in crash/defs.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; } +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -6186,20 +6350,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" @@ -6207,17 +6372,20 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF else - { { echo "$as_me:$LINENO: error: cannot find required crash header (crash-devel may need to be installed)" >&5 -echo "$as_me: error: cannot find required crash header (crash-devel may need to be installed)" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot find required crash header (crash-devel may need to be installed)" >&5 +$as_echo "$as_me: error: cannot find required crash header (crash-devel may need to be installed)" >&2;} { (exit 1); exit 1; }; } fi @@ -6248,10 +6416,10 @@ fi # Extract the first word of "latex", so it can be a program name with args. set dummy latex; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_have_latex+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$have_latex"; then ac_cv_prog_have_latex="$have_latex" # Let the user override the test. @@ -6264,7 +6432,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_have_latex="yes" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6276,20 +6444,20 @@ fi fi have_latex=$ac_cv_prog_have_latex if test -n "$have_latex"; then - { echo "$as_me:$LINENO: result: $have_latex" >&5 -echo "${ECHO_T}$have_latex" >&6; } + { $as_echo "$as_me:$LINENO: result: $have_latex" >&5 +$as_echo "$have_latex" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi # Extract the first word of "dvips", so it can be a program name with args. set dummy dvips; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_have_dvips+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$have_dvips"; then ac_cv_prog_have_dvips="$have_dvips" # Let the user override the test. @@ -6302,7 +6470,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_have_dvips="yes" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6314,20 +6482,20 @@ fi fi have_dvips=$ac_cv_prog_have_dvips if test -n "$have_dvips"; then - { echo "$as_me:$LINENO: result: $have_dvips" >&5 -echo "${ECHO_T}$have_dvips" >&6; } + { $as_echo "$as_me:$LINENO: result: $have_dvips" >&5 +$as_echo "$have_dvips" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi # Extract the first word of "ps2pdf", so it can be a program name with args. set dummy ps2pdf; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_have_ps2pdf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$have_ps2pdf"; then ac_cv_prog_have_ps2pdf="$have_ps2pdf" # Let the user override the test. @@ -6340,7 +6508,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_have_ps2pdf="yes" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6352,20 +6520,20 @@ fi fi have_ps2pdf=$ac_cv_prog_have_ps2pdf if test -n "$have_ps2pdf"; then - { echo "$as_me:$LINENO: result: $have_ps2pdf" >&5 -echo "${ECHO_T}$have_ps2pdf" >&6; } + { $as_echo "$as_me:$LINENO: result: $have_ps2pdf" >&5 +$as_echo "$have_ps2pdf" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi # Extract the first word of "latex2html", so it can be a program name with args. set dummy latex2html; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_have_latex2html+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$have_latex2html"; then ac_cv_prog_have_latex2html="$have_latex2html" # Let the user override the test. @@ -6378,7 +6546,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_have_latex2html="yes" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6390,23 +6558,23 @@ fi fi have_latex2html=$ac_cv_prog_have_latex2html if test -n "$have_latex2html"; then - { echo "$as_me:$LINENO: result: $have_latex2html" >&5 -echo "${ECHO_T}$have_latex2html" >&6; } + { $as_echo "$as_me:$LINENO: result: $have_latex2html" >&5 +$as_echo "$have_latex2html" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi if test "x${have_latex}${have_dvips}${have_ps2pdf}${have_latex2html}" != "xyesyesyesyes"; then if test "$enable_docs" == "yes"; then - { { echo "$as_me:$LINENO: error: cannot find all tools for building documentation" >&5 -echo "$as_me: error: cannot find all tools for building documentation" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot find all tools for building documentation" >&5 +$as_echo "$as_me: error: cannot find all tools for building documentation" >&2;} { (exit 1); exit 1; }; } fi if test "$enable_docs" == "check"; then - { echo "$as_me:$LINENO: WARNING: will not build documentation, cannot find all tools" >&5 -echo "$as_me: WARNING: will not build documentation, cannot find all tools" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: will not build documentation, cannot find all tools" >&5 +$as_echo "$as_me: WARNING: will not build documentation, cannot find all tools" >&2;} fi fi if test "x${have_latex}${have_dvips}${have_ps2pdf}${have_latex2html}" == "xyesyesyesyes" -a "$enable_docs" != "no"; then @@ -6430,16 +6598,16 @@ else fi if test "$building_docs" == "no" -a "$enable_refdocs" == "yes" ; then - { { echo "$as_me:$LINENO: error: must use --enable-docs with --enable-refdocs" >&5 -echo "$as_me: error: must use --enable-docs with --enable-refdocs" >&2;} + { { $as_echo "$as_me:$LINENO: error: must use --enable-docs with --enable-refdocs" >&5 +$as_echo "$as_me: error: must use --enable-docs with --enable-refdocs" >&2;} { (exit 1); exit 1; }; } fi # Extract the first word of "xmlto", so it can be a program name with args. set dummy xmlto; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_have_xmlto+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$have_xmlto"; then ac_cv_prog_have_xmlto="$have_xmlto" # Let the user override the test. @@ -6452,7 +6620,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_have_xmlto="yes" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6464,17 +6632,17 @@ fi fi have_xmlto=$ac_cv_prog_have_xmlto if test -n "$have_xmlto"; then - { echo "$as_me:$LINENO: result: $have_xmlto" >&5 -echo "${ECHO_T}$have_xmlto" >&6; } + { $as_echo "$as_me:$LINENO: result: $have_xmlto" >&5 +$as_echo "$have_xmlto" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi if test "x${have_xmlto}" == "xyes"; then -{ echo "$as_me:$LINENO: checking for xmlto pdf support" >&5 -echo $ECHO_N "checking for xmlto pdf support... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for xmlto pdf support" >&5 +$as_echo_n "checking for xmlto pdf support... " >&6; } cat > conftest.$ac_ext << EOF & /dev/null if test $? == 0; then have_xmlto_pdf="yes" - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi fi if test "$enable_refdocs" == "yes"; then if test "x${have_xmlto}${have_xmlto_pdf}" != "xyesyes"; then - { { echo "$as_me:$LINENO: error: cannot find proper yxmlto for building reference documentation" >&5 -echo "$as_me: error: cannot find proper yxmlto for building reference documentation" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot find proper yxmlto for building reference documentation" >&5 +$as_echo "$as_me: error: cannot find proper yxmlto for building reference documentation" >&2;} { (exit 1); exit 1; }; } fi fi @@ -6518,14 +6686,14 @@ else enable_server="check" fi -{ echo "$as_me:$LINENO: checking for /usr/include/nss3" >&5 -echo $ECHO_N "checking for /usr/include/nss3... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for /usr/include/nss3" >&5 +$as_echo_n "checking for /usr/include/nss3... " >&6; } if test "${ac_cv_file__usr_include_nss3+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && - { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 +$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "/usr/include/nss3"; then ac_cv_file__usr_include_nss3=yes @@ -6533,20 +6701,20 @@ else ac_cv_file__usr_include_nss3=no fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_file__usr_include_nss3" >&5 -echo "${ECHO_T}$ac_cv_file__usr_include_nss3" >&6; } -if test $ac_cv_file__usr_include_nss3 = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_file__usr_include_nss3" >&5 +$as_echo "$ac_cv_file__usr_include_nss3" >&6; } +if test "x$ac_cv_file__usr_include_nss3" = x""yes; then nssdir=nss3 else - { echo "$as_me:$LINENO: checking for /usr/include/nss" >&5 -echo $ECHO_N "checking for /usr/include/nss... $ECHO_C" >&6; } + { $as_echo "$as_me:$LINENO: checking for /usr/include/nss" >&5 +$as_echo_n "checking for /usr/include/nss... " >&6; } if test "${ac_cv_file__usr_include_nss+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && - { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 +$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "/usr/include/nss"; then ac_cv_file__usr_include_nss=yes @@ -6554,23 +6722,23 @@ else ac_cv_file__usr_include_nss=no fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_file__usr_include_nss" >&5 -echo "${ECHO_T}$ac_cv_file__usr_include_nss" >&6; } -if test $ac_cv_file__usr_include_nss = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_file__usr_include_nss" >&5 +$as_echo "$ac_cv_file__usr_include_nss" >&6; } +if test "x$ac_cv_file__usr_include_nss" = x""yes; then nssdir=nss fi fi -{ echo "$as_me:$LINENO: checking for /usr/include/nspr4" >&5 -echo $ECHO_N "checking for /usr/include/nspr4... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for /usr/include/nspr4" >&5 +$as_echo_n "checking for /usr/include/nspr4... " >&6; } if test "${ac_cv_file__usr_include_nspr4+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && - { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 +$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "/usr/include/nspr4"; then ac_cv_file__usr_include_nspr4=yes @@ -6578,20 +6746,20 @@ else ac_cv_file__usr_include_nspr4=no fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_file__usr_include_nspr4" >&5 -echo "${ECHO_T}$ac_cv_file__usr_include_nspr4" >&6; } -if test $ac_cv_file__usr_include_nspr4 = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_file__usr_include_nspr4" >&5 +$as_echo "$ac_cv_file__usr_include_nspr4" >&6; } +if test "x$ac_cv_file__usr_include_nspr4" = x""yes; then nsprdir=nspr4 else - { echo "$as_me:$LINENO: checking for /usr/include/nspr" >&5 -echo $ECHO_N "checking for /usr/include/nspr... $ECHO_C" >&6; } + { $as_echo "$as_me:$LINENO: checking for /usr/include/nspr" >&5 +$as_echo_n "checking for /usr/include/nspr... " >&6; } if test "${ac_cv_file__usr_include_nspr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && - { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 +$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "/usr/include/nspr"; then ac_cv_file__usr_include_nspr=yes @@ -6599,9 +6767,9 @@ else ac_cv_file__usr_include_nspr=no fi fi -{ echo "$as_me:$LINENO: result: $ac_cv_file__usr_include_nspr" >&5 -echo "${ECHO_T}$ac_cv_file__usr_include_nspr" >&6; } -if test $ac_cv_file__usr_include_nspr = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_file__usr_include_nspr" >&5 +$as_echo "$ac_cv_file__usr_include_nspr" >&6; } +if test "x$ac_cv_file__usr_include_nspr" = x""yes; then nsprdir=nspr fi @@ -6624,20 +6792,21 @@ CPPFLAGS="$CFLAGS $nss_CFLAGS $nspr_CFLAGS" for ac_header in "$nsprdir/nspr.h" "$nsprdir/plgetopt.h" "$nsprdir/prerror.h" "$nssdir/ssl.h" "$nssdir/nss.h" "$nssdir/pk11func.h" "$nssdir/secerr.h" do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&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; } +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -6653,32 +6822,33 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$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; } +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -6692,51 +6862,52 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else - echo "$as_me: failed program was:" >&5 + $as_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; } +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$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;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_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;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to systemtap@sources.redhat.com ## @@ -6745,21 +6916,24 @@ _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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF have_nss_includes=yes else @@ -6770,10 +6944,10 @@ done CPPFLAGS="$save_CPPFLAGS" have_nss_libs=no -{ echo "$as_me:$LINENO: checking for PR_Connect in -lnspr4" >&5 -echo $ECHO_N "checking for PR_Connect in -lnspr4... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for PR_Connect in -lnspr4" >&5 +$as_echo_n "checking for PR_Connect in -lnspr4... " >&6; } if test "${ac_cv_lib_nspr4_PR_Connect+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnspr4 $LIBS" @@ -6805,38 +6979,42 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_nspr4_PR_Connect=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nspr4_PR_Connect=no fi +rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_nspr4_PR_Connect" >&5 -echo "${ECHO_T}$ac_cv_lib_nspr4_PR_Connect" >&6; } -if test $ac_cv_lib_nspr4_PR_Connect = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nspr4_PR_Connect" >&5 +$as_echo "$ac_cv_lib_nspr4_PR_Connect" >&6; } +if test "x$ac_cv_lib_nspr4_PR_Connect" = x""yes; then - { echo "$as_me:$LINENO: checking for SSL_ReHandshake in -lssl3" >&5 -echo $ECHO_N "checking for SSL_ReHandshake in -lssl3... $ECHO_C" >&6; } + { $as_echo "$as_me:$LINENO: checking for SSL_ReHandshake in -lssl3" >&5 +$as_echo_n "checking for SSL_ReHandshake in -lssl3... " >&6; } if test "${ac_cv_lib_ssl3_SSL_ReHandshake+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lssl3 $LIBS" @@ -6868,33 +7046,37 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_ssl3_SSL_ReHandshake=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ssl3_SSL_ReHandshake=no fi +rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_ssl3_SSL_ReHandshake" >&5 -echo "${ECHO_T}$ac_cv_lib_ssl3_SSL_ReHandshake" >&6; } -if test $ac_cv_lib_ssl3_SSL_ReHandshake = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ssl3_SSL_ReHandshake" >&5 +$as_echo "$ac_cv_lib_ssl3_SSL_ReHandshake" >&6; } +if test "x$ac_cv_lib_ssl3_SSL_ReHandshake" = x""yes; then have_nss_libs=yes fi @@ -6904,13 +7086,13 @@ fi fi if test "x${have_nss_includes}${have_nss_libs}" != "xyesyes"; then if test "$enable_server" == "yes"; then - { { echo "$as_me:$LINENO: error: cannot find all libraries for stap-server" >&5 -echo "$as_me: error: cannot find all libraries for stap-server" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot find all libraries for stap-server" >&5 +$as_echo "$as_me: error: cannot find all libraries for stap-server" >&2;} { (exit 1); exit 1; }; } fi if test "$enable_server" == "check"; then - { echo "$as_me:$LINENO: WARNING: will not build stap-server, cannot find all libraries" >&5 -echo "$as_me: WARNING: will not build stap-server, cannot find all libraries" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: will not build stap-server, cannot find all libraries" >&5 +$as_echo "$as_me: WARNING: will not build stap-server, cannot find all libraries" >&2;} fi fi if test "x${have_nss_includes}${have_nss_libs}" == "xyesyes" -a "$enable_server" != "no"; then @@ -6928,8 +7110,8 @@ build_elfutils=no if test "${with_elfutils+set}" = set; then withval=$with_elfutils; case "$with_elfutils" in -yes) { { echo "$as_me:$LINENO: error: --with-elfutils requires an argument" >&5 -echo "$as_me: error: --with-elfutils requires an argument" >&2;} +yes) { { $as_echo "$as_me:$LINENO: error: --with-elfutils requires an argument" >&5 +$as_echo "$as_me: error: --with-elfutils requires an argument" >&2;} { (exit 1); exit 1; }; } ;; ''|no) ;; *) build_elfutils=yes ;; @@ -6954,10 +7136,10 @@ if test $build_elfutils = no; then # Need libdwfl-capable recent elfutils http://elfutils.fedorahosted.org/ save_LIBS="$LIBS" -{ echo "$as_me:$LINENO: checking for dwfl_module_getsym in -ldw" >&5 -echo $ECHO_N "checking for dwfl_module_getsym in -ldw... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for dwfl_module_getsym in -ldw" >&5 +$as_echo_n "checking for dwfl_module_getsym in -ldw... " >&6; } if test "${ac_cv_lib_dw_dwfl_module_getsym+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldw -Wl,--start-group -ldw -lebl -Wl,--end-group -lelf $LIBS" @@ -6989,33 +7171,37 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_dw_dwfl_module_getsym=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dw_dwfl_module_getsym=no fi +rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dw_dwfl_module_getsym" >&5 -echo "${ECHO_T}$ac_cv_lib_dw_dwfl_module_getsym" >&6; } -if test $ac_cv_lib_dw_dwfl_module_getsym = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dw_dwfl_module_getsym" >&5 +$as_echo "$ac_cv_lib_dw_dwfl_module_getsym" >&6; } +if test "x$ac_cv_lib_dw_dwfl_module_getsym" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBDW 1 _ACEOF @@ -7024,16 +7210,16 @@ _ACEOF else - { { echo "$as_me:$LINENO: error: missing elfutils development headers/libraries (install elfutils-devel, libebl-dev, libdw-dev and/or libebl-devel)" >&5 -echo "$as_me: error: missing elfutils development headers/libraries (install elfutils-devel, libebl-dev, libdw-dev and/or libebl-devel)" >&2;} + { { $as_echo "$as_me:$LINENO: error: missing elfutils development headers/libraries (install elfutils-devel, libebl-dev, libdw-dev and/or libebl-devel)" >&5 +$as_echo "$as_me: error: missing elfutils development headers/libraries (install elfutils-devel, libebl-dev, libdw-dev and/or libebl-devel)" >&2;} { (exit 1); exit 1; }; } fi -{ echo "$as_me:$LINENO: checking for dwarf_getelf in -ldw" >&5 -echo $ECHO_N "checking for dwarf_getelf in -ldw... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for dwarf_getelf in -ldw" >&5 +$as_echo_n "checking for dwarf_getelf in -ldw... " >&6; } if test "${ac_cv_lib_dw_dwarf_getelf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldw -Wl,--start-group -ldw -lebl -Wl,--end-group -lelf $LIBS" @@ -7065,33 +7251,37 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_dw_dwarf_getelf=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dw_dwarf_getelf=no fi +rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_dw_dwarf_getelf" >&5 -echo "${ECHO_T}$ac_cv_lib_dw_dwarf_getelf" >&6; } -if test $ac_cv_lib_dw_dwarf_getelf = yes; then +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dw_dwarf_getelf" >&5 +$as_echo "$ac_cv_lib_dw_dwarf_getelf" >&6; } +if test "x$ac_cv_lib_dw_dwarf_getelf" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBDW 1 _ACEOF @@ -7100,8 +7290,8 @@ _ACEOF else - { { echo "$as_me:$LINENO: error: elfutils, libdw too old, need 0.126+" >&5 -echo "$as_me: error: elfutils, libdw too old, need 0.126+" >&2;} + { { $as_echo "$as_me:$LINENO: error: elfutils, libdw too old, need 0.126+" >&5 +$as_echo "$as_me: error: elfutils, libdw too old, need 0.126+" >&2;} { (exit 1); exit 1; }; } fi @@ -7113,8 +7303,8 @@ else fi -{ echo "$as_me:$LINENO: stap will link $stap_LIBS" >&5 -echo "$as_me: stap will link $stap_LIBS" >&6;} +{ $as_echo "$as_me:$LINENO: stap will link $stap_LIBS" >&5 +$as_echo "$as_me: stap will link $stap_LIBS" >&6;} date=`date +%Y-%m-%d` @@ -7152,11 +7342,11 @@ ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_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; } +{ $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" @@ -7188,20 +7378,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. @@ -7225,13 +7416,14 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err @@ -7239,7 +7431,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. @@ -7264,8 +7456,8 @@ fi else ac_cv_prog_CXXCPP=$CXXCPP fi -{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 -echo "${ECHO_T}$CXXCPP" >&6; } +{ $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do @@ -7293,20 +7485,21 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. @@ -7330,13 +7523,14 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err @@ -7344,7 +7538,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. @@ -7360,11 +7554,13 @@ rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else - { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 -echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +$as_echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { (exit 1); exit 1; }; }; } fi ac_ext=cpp @@ -7377,20 +7573,21 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu for ac_header in tr1/unordered_map do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&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; } +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7406,32 +7603,33 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$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; } +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7445,51 +7643,52 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else - echo "$as_me: failed program was:" >&5 + $as_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; } +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_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;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_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;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to systemtap@sources.redhat.com ## @@ -7498,21 +7697,24 @@ _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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -7532,8 +7734,8 @@ if test $build_elfutils = yes; then /*) elfutils_srcdir="$with_elfutils" ;; *) elfutils_srcdir="../$with_elfutils" ;; esac - { echo "$as_me:$LINENO: running ${elfutils_srcdir}/configure" >&5 -echo "$as_me: running ${elfutils_srcdir}/configure" >&6;} + { $as_echo "$as_me:$LINENO: running ${elfutils_srcdir}/configure" >&5 +$as_echo "$as_me: running ${elfutils_srcdir}/configure" >&6;} # Our libdw.so's libebl will look in $ORIGIN/../lib/... but that # $ORIGIN is where libdw.so resides, which is not where there is a ../lib. # Note that $libdir might be using a quoted use of $exec_prefix or $prefix. @@ -7561,20 +7763,21 @@ echo "$as_me: running ${elfutils_srcdir}/configure" >&6;} for ac_header in elfutils/version.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&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; } +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7590,32 +7793,33 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$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; } +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7629,51 +7833,52 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else - echo "$as_me: failed program was:" >&5 + $as_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; } +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$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;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_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;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to systemtap@sources.redhat.com ## @@ -7682,21 +7887,24 @@ _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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -7708,20 +7916,21 @@ else for ac_header in elfutils/version.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&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; } +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7737,32 +7946,33 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$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; } +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -7776,51 +7986,52 @@ case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&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 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else - echo "$as_me: failed program was:" >&5 + $as_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; } +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$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;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_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;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ------------------------------------------- ## ## Report this to systemtap@sources.redhat.com ## @@ -7829,21 +8040,24 @@ _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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -7862,6 +8076,8 @@ ac_config_headers="$ac_config_headers config.h:config.in" ac_config_files="$ac_config_files Makefile doc/Makefile doc/SystemTap_Tapset_Reference/Makefile stap.1 stapprobes.3stap stapfuncs.3stap stapvars.3stap stapex.3stap staprun.8 stap-server.8 man/stapprobes.iosched.3stap man/stapprobes.netdev.3stap man/stapprobes.nfs.3stap man/stapprobes.nfsd.3stap man/stapprobes.pagefault.3stap man/stapprobes.process.3stap man/stapprobes.rpc.3stap man/stapprobes.scsi.3stap man/stapprobes.signal.3stap man/stapprobes.socket.3stap man/stapprobes.tcp.3stap man/stapprobes.udp.3stap initscript/systemtap" + + subdirs="$subdirs testsuite" ac_config_files="$ac_config_files run-stap" @@ -7893,11 +8109,12 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac @@ -7930,12 +8147,12 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; 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 "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} + { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -7951,7 +8168,7 @@ ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -7963,82 +8180,83 @@ LTLIBOBJS=$ac_ltlibobjs if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +$as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. +$as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +$as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_CRASHMOD_TRUE}" && test -z "${BUILD_CRASHMOD_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"BUILD_CRASHMOD\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_CRASHMOD\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"BUILD_CRASHMOD\" was never defined. +$as_echo "$as_me: error: conditional \"BUILD_CRASHMOD\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_DOCS_TRUE}" && test -z "${BUILD_DOCS_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"BUILD_DOCS\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_DOCS\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"BUILD_DOCS\" was never defined. +$as_echo "$as_me: error: conditional \"BUILD_DOCS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_REFDOCS_TRUE}" && test -z "${BUILD_REFDOCS_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"BUILD_REFDOCS\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_REFDOCS\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"BUILD_REFDOCS\" was never defined. +$as_echo "$as_me: error: conditional \"BUILD_REFDOCS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_SERVER_TRUE}" && test -z "${BUILD_SERVER_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"BUILD_SERVER\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_SERVER\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"BUILD_SERVER\" was never defined. +$as_echo "$as_me: error: conditional \"BUILD_SERVER\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_ELFUTILS_TRUE}" && test -z "${BUILD_ELFUTILS_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"BUILD_ELFUTILS\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_ELFUTILS\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"BUILD_ELFUTILS\" was never defined. +$as_echo "$as_me: error: conditional \"BUILD_ELFUTILS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} +ac_write_fail=0 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 +{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. @@ -8051,7 +8269,7 @@ ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## @@ -8061,7 +8279,7 @@ DUALCASE=1; export DUALCASE # for MKS sh 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 + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST @@ -8083,17 +8301,45 @@ 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=';' +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' else - PATH_SEPARATOR=: + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' fi - rm -f conf$$.sh + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi # Support unset when possible. @@ -8109,8 +8355,6 @@ fi # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. @@ -8133,7 +8377,7 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi @@ -8146,17 +8390,10 @@ 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) >/dev/null 2>&1 && $as_unset $as_var - fi -done +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && @@ -8178,7 +8415,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -8229,7 +8466,7 @@ $as_unset CDPATH s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { $as_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 @@ -8257,7 +8494,6 @@ case `echo -n x` in *) ECHO_N='-n';; esac - if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -8270,19 +8506,22 @@ if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln + fi else as_ln_s='cp -p' fi @@ -8307,10 +8546,10 @@ else as_test_x=' eval sh -c '\'' if test -d "$1"; then - test -d "$1/."; + test -d "$1/."; else case $1 in - -*)set "./$1";; + -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi @@ -8332,8 +8571,8 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by systemtap $as_me 0.9, which was -generated by GNU Autoconf 2.61. Invocation command line was +This file was extended by systemtap $as_me 0.9.5, which was +generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -8346,7 +8585,16 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q` _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" @@ -8354,22 +8602,23 @@ config_commands="$ac_config_commands" _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. -Usage: $0 [OPTIONS] [FILE]... +Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages + -q, --quiet, --silent + 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 + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE Configuration files: $config_files @@ -8383,13 +8632,13 @@ $config_commands Report bugs to ." _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -systemtap config.status 0.9 -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +systemtap config.status 0.9.5 +configured by $0, generated by GNU Autoconf 2.63, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2006 Free Software Foundation, Inc. +Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -8397,11 +8646,12 @@ ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk _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. +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do @@ -8423,30 +8673,36 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; + $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header - { echo "$as_me: error: ambiguous option: $1 + { $as_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 ;; + $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 + -*) { $as_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; @@ -8465,27 +8721,29 @@ if $ac_cs_silent; then fi _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + exec "\$@" fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - echo "$ac_log" + $as_echo "$ac_log" } >&5 _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # @@ -8493,7 +8751,7 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets @@ -8526,8 +8784,8 @@ do "initscript/systemtap") CONFIG_FILES="$CONFIG_FILES initscript/systemtap" ;; "run-stap") CONFIG_FILES="$CONFIG_FILES run-stap" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done @@ -8568,228 +8826,144 @@ $debug || (umask 077 && mkdir "$tmp") } || { - echo "$me: cannot create a temporary directory in ." >&2 + $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } -# -# Set up the sed scripts for CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -am__isrc!$am__isrc$ac_delim -CYGPATH_W!$CYGPATH_W$ac_delim -PACKAGE!$PACKAGE$ac_delim -VERSION!$VERSION$ac_delim -ACLOCAL!$ACLOCAL$ac_delim -AUTOCONF!$AUTOCONF$ac_delim -AUTOMAKE!$AUTOMAKE$ac_delim -AUTOHEADER!$AUTOHEADER$ac_delim -MAKEINFO!$MAKEINFO$ac_delim -install_sh!$install_sh$ac_delim -STRIP!$STRIP$ac_delim -INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim -mkdir_p!$mkdir_p$ac_delim -AWK!$AWK$ac_delim -SET_MAKE!$SET_MAKE$ac_delim -am__leading_dot!$am__leading_dot$ac_delim -AMTAR!$AMTAR$ac_delim -am__tar!$am__tar$ac_delim -am__untar!$am__untar$ac_delim -MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim -MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim -MAINT!$MAINT$ac_delim -MKDIR_P!$MKDIR_P$ac_delim -LN_S!$LN_S$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -DEPDIR!$DEPDIR$ac_delim -am__include!$am__include$ac_delim -am__quote!$am__quote$ac_delim -AMDEP_TRUE!$AMDEP_TRUE$ac_delim -AMDEP_FALSE!$AMDEP_FALSE$ac_delim -AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim -CCDEPMODE!$CCDEPMODE$ac_delim -am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim -am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim -CXX!$CXX$ac_delim -CXXFLAGS!$CXXFLAGS$ac_delim -ac_ct_CXX!$ac_ct_CXX$ac_delim -CXXDEPMODE!$CXXDEPMODE$ac_delim -am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim -am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim -CPP!$CPP$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -U!$U$ac_delim -ANSI2KNR!$ANSI2KNR$ac_delim -RANLIB!$RANLIB$ac_delim -PIELDFLAGS!$PIELDFLAGS$ac_delim -PIECFLAGS!$PIECFLAGS$ac_delim -PIECXXFLAGS!$PIECXXFLAGS$ac_delim -sqlite3_LIBS!$sqlite3_LIBS$ac_delim -staplog_CPPFLAGS!$staplog_CPPFLAGS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` +ac_cr=' ' +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr fi -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -CEOF$ac_eof +echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -BUILD_CRASHMOD_TRUE!$BUILD_CRASHMOD_TRUE$ac_delim -BUILD_CRASHMOD_FALSE!$BUILD_CRASHMOD_FALSE$ac_delim -have_latex!$have_latex$ac_delim -have_dvips!$have_dvips$ac_delim -have_ps2pdf!$have_ps2pdf$ac_delim -have_latex2html!$have_latex2html$ac_delim -BUILD_DOCS_TRUE!$BUILD_DOCS_TRUE$ac_delim -BUILD_DOCS_FALSE!$BUILD_DOCS_FALSE$ac_delim -have_xmlto!$have_xmlto$ac_delim -BUILD_REFDOCS_TRUE!$BUILD_REFDOCS_TRUE$ac_delim -BUILD_REFDOCS_FALSE!$BUILD_REFDOCS_FALSE$ac_delim -nss_CFLAGS!$nss_CFLAGS$ac_delim -nspr_CFLAGS!$nspr_CFLAGS$ac_delim -BUILD_SERVER_TRUE!$BUILD_SERVER_TRUE$ac_delim -BUILD_SERVER_FALSE!$BUILD_SERVER_FALSE$ac_delim -BUILD_ELFUTILS_TRUE!$BUILD_ELFUTILS_TRUE$ac_delim -BUILD_ELFUTILS_FALSE!$BUILD_ELFUTILS_FALSE$ac_delim -elfutils_abs_srcdir!$elfutils_abs_srcdir$ac_delim -stap_LIBS!$stap_LIBS$ac_delim -DATE!$DATE$ac_delim -PROCFLAGS!$PROCFLAGS$ac_delim -CXXCPP!$CXXCPP$ac_delim -subdirs!$subdirs$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 25; then + . ./conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\).*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\).*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACAWK _ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 +$as_echo "$as_me: error: could not setup config files machinery" >&2;} + { (exit 1); exit 1; }; } _ACEOF - # 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 @@ -8805,19 +8979,133 @@ s/^[^=]*=[ ]*$// }' fi -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #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. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 +$as_echo "$as_me: error: could not setup config headers machinery" >&2;} + { (exit 1); exit 1; }; } +fi # test -n "$CONFIG_HEADERS" -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} + :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 +$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; @@ -8846,26 +9134,38 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;} [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac - ac_file_inputs="$ac_file_inputs $ac_f" + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + ac_file_inputs="$ac_file_inputs '$ac_f'" done # 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. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} + { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; + *:-:* | *:-) cat >"$tmp/stdin" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } ;; esac ;; esac @@ -8875,7 +9175,7 @@ $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" | +$as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -8901,7 +9201,7 @@ echo X"$ac_file" | as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -8910,7 +9210,7 @@ $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" | +$as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -8931,17 +9231,17 @@ echo X"$as_dir" | test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -8986,12 +9286,13 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix esac _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= -case `sed -n '/datarootdir/ { +ac_sed_dataroot=' +/datarootdir/ { p q } @@ -9000,13 +9301,14 @@ case `sed -n '/datarootdir/ { /@infodir@/p /@localedir@/p /@mandir@/p -' $ac_file_inputs` in +' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g @@ -9020,15 +9322,16 @@ _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub $extrasub _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t +s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t @@ -9039,121 +9342,60 @@ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; - esac + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } ;; :H) # # CONFIG_HEADER # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #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. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : -do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines conftest.tail - -echo "ac_result=$ac_in" >>$CONFIG_STATUS -cat >>$CONFIG_STATUS <<\_ACEOF if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - 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;} + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} else - rm -f $ac_file - mv "$tmp/config.h" $ac_file + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } fi else - echo "/* $configure_input */" - cat "$ac_result" + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 +$as_echo "$as_me: error: could not create -" >&2;} + { (exit 1); exit 1; }; } fi - rm -f "$tmp/out12" -# Compute $ac_file's index in $config_headers. -_am_arg=$ac_file +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in @@ -9168,7 +9410,7 @@ $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -echo X"$_am_arg" | +$as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -9188,8 +9430,8 @@ echo X"$_am_arg" | s/.*/./; q'`/stamp-h$_am_stamp_count ;; - :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -echo "$as_me: executing $ac_file commands" >&6;} + :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac @@ -9211,7 +9453,7 @@ $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || -echo X"$mf" | +$as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -9255,7 +9497,7 @@ $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$file" | +$as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -9281,7 +9523,7 @@ echo X"$file" | as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -9290,7 +9532,7 @@ $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" | +$as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -9311,8 +9553,8 @@ echo X"$as_dir" | test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" @@ -9330,6 +9572,11 @@ _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save +test $ac_write_fail = 0 || + { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. @@ -9357,7 +9604,8 @@ fi # if test "$no_recursion" != yes; then - # Remove --cache-file and --srcdir arguments so they do not pile up. + # Remove --cache-file, --srcdir, and --disable-option-checking arguments + # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" @@ -9386,9 +9634,11 @@ if test "$no_recursion" != yes; then ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; + --disable-option-checking) + ;; *) case $ac_arg in - *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="$ac_sub_configure_args '$ac_arg'" ;; esac @@ -9398,7 +9648,7 @@ if test "$no_recursion" != yes; then # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in - *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" @@ -9407,6 +9657,10 @@ if test "$no_recursion" != yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi + # Always prepend --disable-option-checking to silence warnings, since + # different subdirs can have different --enable and --with options. + ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" + ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue @@ -9415,8 +9669,8 @@ if test "$no_recursion" != yes; then test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" - echo "$as_me:$LINENO: $ac_msg" >&5 - echo "$ac_msg" >&6 + $as_echo "$as_me:$LINENO: $ac_msg" >&5 + $as_echo "$ac_msg" >&6 { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; @@ -9425,7 +9679,7 @@ if test "$no_recursion" != yes; then as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -9434,7 +9688,7 @@ $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" | +$as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -9455,17 +9709,17 @@ echo X"$as_dir" | test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -9504,8 +9758,8 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else - { echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5 -echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5 +$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi @@ -9518,32 +9772,36 @@ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac - { echo "$as_me:$LINENO: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 -echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} + { $as_echo "$as_me:$LINENO: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 +$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || - { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5 -echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;} + { { $as_echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5 +$as_echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;} { (exit 1); exit 1; }; } fi cd "$ac_popdir" done fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi if test "${prefix}" = "/usr/local"; then - { echo "$as_me:$LINENO: " >&5 -echo "$as_me: " >&6;} - { echo "$as_me:$LINENO: For a private or temporary build of systemtap, we recommend" >&5 -echo "$as_me: For a private or temporary build of systemtap, we recommend" >&6;} - { echo "$as_me:$LINENO: configuring with a prefix. For example, try" >&5 -echo "$as_me: configuring with a prefix. For example, try" >&6;} - { echo "$as_me:$LINENO: $0 $ac_configure_args --prefix=$HOME/systemtap-${PACKAGE_VERSION}-$$" >&5 -echo "$as_me: $0 $ac_configure_args --prefix=$HOME/systemtap-${PACKAGE_VERSION}-$$" >&6;} - { echo "$as_me:$LINENO: Running systemtap uninstalled, entirely out of the build tree," >&5 -echo "$as_me: Running systemtap uninstalled, entirely out of the build tree," >&6;} - { echo "$as_me:$LINENO: is not supported." >&5 -echo "$as_me: is not supported." >&6;} + { $as_echo "$as_me:$LINENO: " >&5 +$as_echo "$as_me: " >&6;} + { $as_echo "$as_me:$LINENO: For a private or temporary build of systemtap, we recommend" >&5 +$as_echo "$as_me: For a private or temporary build of systemtap, we recommend" >&6;} + { $as_echo "$as_me:$LINENO: configuring with a prefix. For example, try" >&5 +$as_echo "$as_me: configuring with a prefix. For example, try" >&6;} + { $as_echo "$as_me:$LINENO: $0 $ac_configure_args --prefix=$HOME/systemtap-${PACKAGE_VERSION}-$$" >&5 +$as_echo "$as_me: $0 $ac_configure_args --prefix=$HOME/systemtap-${PACKAGE_VERSION}-$$" >&6;} + { $as_echo "$as_me:$LINENO: Running systemtap uninstalled, entirely out of the build tree," >&5 +$as_echo "$as_me: Running systemtap uninstalled, entirely out of the build tree," >&6;} + { $as_echo "$as_me:$LINENO: is not supported." >&5 +$as_echo "$as_me: is not supported." >&6;} fi diff --git a/configure.ac b/configure.ac index e980fbf5..553aa00e 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ dnl configure.ac --- autoconf input file for systemtap dnl Process this file with autoconf to produce a configure script. -AC_INIT([systemtap], 0.9, systemtap@sources.redhat.com, systemtap) +AC_INIT([systemtap], 0.9.5, systemtap@sources.redhat.com, systemtap) dnl ^^^^^ see also NEWS, systemtap.spec, testsuite/configure.ac AC_PREREQ(2.59) diff --git a/doc/Makefile.in b/doc/Makefile.in index 93753666..e23a6699 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -163,6 +163,7 @@ staplog_CPPFLAGS = @staplog_CPPFLAGS@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ PDF_FILES = tutorial.pdf langref.pdf diff --git a/doc/SystemTap_Tapset_Reference/Makefile.in b/doc/SystemTap_Tapset_Reference/Makefile.in index 06286d6c..6fe6bab2 100644 --- a/doc/SystemTap_Tapset_Reference/Makefile.in +++ b/doc/SystemTap_Tapset_Reference/Makefile.in @@ -166,6 +166,7 @@ staplog_CPPFLAGS = @staplog_CPPFLAGS@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ DOC_INSTALL_DIR = $(DESTDIR)$(datadir)/doc/systemtap diff --git a/systemtap.spec b/systemtap.spec index e727b49c..a01ccb11 100644 --- a/systemtap.spec +++ b/systemtap.spec @@ -6,8 +6,8 @@ %{!?pie_supported: %define pie_supported 1} Name: systemtap -Version: 0.9 -Release: 3%{?dist} +Version: 0.9.5 +Release: 1%{?dist} # for version, see also configure.ac Summary: Instrumentation System Group: Development/System @@ -323,6 +323,9 @@ exit 0 %changelog +* Fri Mar 27 2009 Josh Stone - 0.9.5-1 +- Upstream release. + * Wed Mar 18 2009 Will Cohen - 0.9-2 - Add location of man pages. diff --git a/testsuite/Makefile.in b/testsuite/Makefile.in index 9547479b..68fb5207 100644 --- a/testsuite/Makefile.in +++ b/testsuite/Makefile.in @@ -31,14 +31,16 @@ POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : -subdir = testsuite -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +subdir = . +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/configure $(am__configure_deps) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DEJATOOL = $(PACKAGE) @@ -48,39 +50,22 @@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ -DATE = @DATE@ DEFS = @DEFS@ -DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ -LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ -OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ @@ -88,25 +73,15 @@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ -PIECFLAGS = @PIECFLAGS@ -PIECXXFLAGS = @PIECXXFLAGS@ -PIELDFLAGS = @PIELDFLAGS@ -PROCFLAGS = @PROCFLAGS@ -RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ -U = @U@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -am__include = @am__include@ am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ @@ -114,15 +89,10 @@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ +dejazilla = @dejazilla@ docdir = @docdir@ dvidir = @dvidir@ -elfutils_abs_srcdir = @elfutils_abs_srcdir@ exec_prefix = @exec_prefix@ -have_dvips = @have_dvips@ -have_latex = @have_latex@ -have_latex2html = @have_latex2html@ -have_ps2pdf = @have_ps2pdf@ -have_xmlto = @have_xmlto@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ @@ -134,8 +104,6 @@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ -nspr_CFLAGS = @nspr_CFLAGS@ -nss_CFLAGS = @nss_CFLAGS@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ @@ -143,11 +111,7 @@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ -sqlite3_LIBS = @sqlite3_LIBS@ srcdir = @srcdir@ -stap_LIBS = @stap_LIBS@ -staplog_CPPFLAGS = @staplog_CPPFLAGS@ -subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ @@ -171,35 +135,39 @@ RUNTEST = "env SYSTEMTAP_RUNTIME=$(SYSTEMTAP_RUNTIME) SYSTEMTAP_TAPSET=$(SYSTEMT all: all-am .SUFFIXES: +am--refresh: + @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu testsuite/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu testsuite/Makefile + $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) tags: TAGS TAGS: @@ -270,6 +238,7 @@ clean: clean-am clean-am: clean-generic clean-local mostlyclean-am distclean: distclean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-DEJAGNU distclean-generic @@ -302,6 +271,8 @@ install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -321,16 +292,17 @@ uninstall-am: .MAKE: install-am install-strip -.PHONY: all all-am all-local check check-DEJAGNU check-am check-local \ - clean clean-generic clean-local distclean distclean-DEJAGNU \ - distclean-generic dvi dvi-am html html-am info info-am install \ - install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am +.PHONY: all all-am all-local am--refresh check check-DEJAGNU check-am \ + check-local clean clean-generic clean-local distclean \ + distclean-DEJAGNU distclean-generic dvi dvi-am html html-am \ + info info-am install install-am install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ + uninstall-am all-local: diff --git a/testsuite/aclocal.m4 b/testsuite/aclocal.m4 index c9daa488..832aa7b1 100644 --- a/testsuite/aclocal.m4 +++ b/testsuite/aclocal.m4 @@ -13,8 +13,8 @@ m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(AC_AUTOCONF_VERSION, [2.61],, -[m4_warning([this file was generated for autoconf 2.61. +m4_if(AC_AUTOCONF_VERSION, [2.63],, +[m4_warning([this file was generated for autoconf 2.63. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) diff --git a/testsuite/configure b/testsuite/configure index 094f99c7..18be8832 100755 --- a/testsuite/configure +++ b/testsuite/configure @@ -1,11 +1,11 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for systemtap 0.9. +# Generated by GNU Autoconf 2.63 for systemtap 0.9.5. # # Report bugs to . # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## @@ -17,7 +17,7 @@ DUALCASE=1; export DUALCASE # for MKS sh 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 + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST @@ -39,17 +39,45 @@ 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=';' +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' else - PATH_SEPARATOR=: + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' fi - rm -f conf$$.sh + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi # Support unset when possible. @@ -65,8 +93,6 @@ fi # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. @@ -89,7 +115,7 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi @@ -102,17 +128,10 @@ 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) >/dev/null 2>&1 && $as_unset $as_var - fi -done +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && @@ -134,7 +153,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -160,7 +179,7 @@ else as_have_required=no fi - if test $as_have_required = yes && (eval ": + if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } @@ -242,7 +261,7 @@ IFS=$as_save_IFS 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 + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST @@ -263,7 +282,7 @@ _ASEOF 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 + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST @@ -343,10 +362,10 @@ fi if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi @@ -415,9 +434,10 @@ fi test \$exitcode = 0") || { echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message + echo Please tell bug-autoconf@gnu.org about your system, + echo including any error possibly output before this message. + echo This can help us improve future autoconf versions. + echo Configuration will now proceed without shell functions. } @@ -453,7 +473,7 @@ test \$exitcode = 0") || { s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { $as_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 @@ -481,7 +501,6 @@ case `echo -n x` in *) ECHO_N='-n';; esac - if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -494,19 +513,22 @@ if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln + fi else as_ln_s='cp -p' fi @@ -531,10 +553,10 @@ else as_test_x=' eval sh -c '\'' if test -d "$1"; then - test -d "$1/."; + test -d "$1/."; else case $1 in - -*)set "./$1";; + -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi @@ -574,76 +596,82 @@ SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='systemtap' PACKAGE_TARNAME='systemtap' -PACKAGE_VERSION='0.9' -PACKAGE_STRING='systemtap 0.9' +PACKAGE_VERSION='0.9.5' +PACKAGE_STRING='systemtap 0.9.5' PACKAGE_BUGREPORT='systemtap@sources.redhat.com' -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 -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -am__isrc -CYGPATH_W -PACKAGE -VERSION -ACLOCAL -AUTOCONF -AUTOMAKE -AUTOHEADER -MAKEINFO -install_sh -STRIP -INSTALL_STRIP_PROGRAM -mkdir_p -AWK -SET_MAKE -am__leading_dot -AMTAR -am__tar -am__untar -MAINTAINER_MODE_TRUE -MAINTAINER_MODE_FALSE -MAINT -dejazilla +ac_subst_vars='LTLIBOBJS LIBOBJS -LTLIBOBJS' +dejazilla +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_maintainer_mode +enable_dejazilla +' ac_precious_vars='build_alias host_alias target_alias' @@ -652,6 +680,8 @@ target_alias' # Initialize some variables set by options. ac_init_help= ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null @@ -750,13 +780,21 @@ do datarootdir=$ac_optarg ;; -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + ac_useropt=`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 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=no ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; @@ -769,13 +807,21 @@ do dvidir=$ac_optarg ;; -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + ac_useropt=`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 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -966,22 +1012,38 @@ do ac_init_version=: ;; -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + ac_useropt=`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 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + ac_useropt=`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 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=no ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. @@ -1001,7 +1063,7 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) { echo "$as_me: error: unrecognized option: $ac_option + -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; @@ -1010,16 +1072,16 @@ Try \`$0 --help' for more information." >&2 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 + { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } 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 + $as_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 + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; @@ -1028,22 +1090,38 @@ 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 + { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi -# Be sure to have absolute directory names. +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 + { (exit 1); exit 1; }; } ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done @@ -1058,7 +1136,7 @@ target=$target_alias 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. + $as_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 @@ -1074,10 +1152,10 @@ test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 + { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 + { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } @@ -1085,12 +1163,12 @@ test "X$ac_ls_di" = "X$ac_pwd_ls_di" || if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X"$0" | + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1117,12 +1195,12 @@ else fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. @@ -1149,7 +1227,7 @@ 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 systemtap 0.9 to adapt to many kinds of systems. +\`configure' configures systemtap 0.9.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1171,9 +1249,9 @@ Configuration: Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] + [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] + [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify @@ -1183,25 +1261,25 @@ 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] - --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] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/systemtap] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --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] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/systemtap] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -1215,11 +1293,12 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of systemtap 0.9:";; + short | recursive ) echo "Configuration of systemtap 0.9.5:";; esac cat <<\_ACEOF Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful @@ -1238,15 +1317,17 @@ fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1282,7 +1363,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1291,11 +1372,11 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -systemtap configure 0.9 -generated by GNU Autoconf 2.61 +systemtap configure 0.9.5 +generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1305,8 +1386,8 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by systemtap $as_me 0.9, which was -generated by GNU Autoconf 2.61. Invocation command line was +It was created by systemtap $as_me 0.9.5, which was +generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ @@ -1342,7 +1423,7 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" + $as_echo "PATH: $as_dir" done IFS=$as_save_IFS @@ -1377,7 +1458,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; @@ -1429,11 +1510,12 @@ _ASBOX case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac @@ -1463,9 +1545,9 @@ _ASBOX do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo @@ -1480,9 +1562,9 @@ _ASBOX do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - echo "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1498,8 +1580,8 @@ _ASBOX echo fi test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -1541,21 +1623,24 @@ _ACEOF # Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" + ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site fi -shift -for ac_site_file +for ac_site_file in "$ac_site_file1" "$ac_site_file2" do + test "x$ac_site_file" = xNONE && continue 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;} + { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi @@ -1565,16 +1650,16 @@ 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;} + { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 +$as_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;} + { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi @@ -1588,29 +1673,38 @@ for ac_var in $ac_precious_vars; do 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;} + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_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;} + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +$as_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=: + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} 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=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1620,10 +1714,12 @@ echo "$as_me: current value: $ac_new_val" >&2;} 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;} + { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi @@ -1677,8 +1773,8 @@ for ac_dir in .. "$srcdir"/..; do fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in .. \"$srcdir\"/.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in .. \"$srcdir\"/.." >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in .. \"$srcdir\"/.." >&5 +$as_echo "$as_me: error: cannot find install-sh or install.sh in .. \"$srcdir\"/.." >&2;} { (exit 1); exit 1; }; } fi @@ -1706,11 +1802,12 @@ am__api_version='1.10' # 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; } +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -1739,17 +1836,29 @@ case $as_dir/ in # 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 + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi fi fi done done ;; esac + done IFS=$as_save_IFS +rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then @@ -1762,8 +1871,8 @@ fi INSTALL=$ac_install_sh fi fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } +{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -1773,8 +1882,8 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file @@ -1797,9 +1906,9 @@ if ( # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken + { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi @@ -1810,26 +1919,23 @@ then # Ok. : else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! + { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! +$as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. +# Double any \ or $. # By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm -f conftest.sed +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` @@ -1840,15 +1946,15 @@ if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi -{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 -echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin @@ -1883,8 +1989,8 @@ fi MKDIR_P="$ac_install_sh -d" fi fi -{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 -echo "${ECHO_T}$MKDIR_P" >&6; } +{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in @@ -1896,10 +2002,10 @@ for ac_prog in gawk mawk nawk awk 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; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. @@ -1912,7 +2018,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -1923,22 +2029,23 @@ fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6; } + { $as_echo "$as_me:$LINENO: result: $AWK" >&5 +$as_echo "$AWK" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi test -n "$AWK" && break done -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh @@ -1955,12 +2062,12 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } SET_MAKE= else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -1979,8 +2086,8 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi @@ -1997,7 +2104,7 @@ fi # Define the identity of the package. PACKAGE='systemtap' - VERSION='0.9' + VERSION='0.9.5' cat >>confdefs.h <<_ACEOF @@ -2035,10 +2142,10 @@ if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. @@ -2051,7 +2158,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2062,11 +2169,11 @@ fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6; } + { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi @@ -2075,10 +2182,10 @@ if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. @@ -2091,7 +2198,7 @@ do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2102,11 +2209,11 @@ fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6; } + { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then @@ -2114,12 +2221,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP @@ -2143,8 +2246,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' -{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 -echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } +{ $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval @@ -2152,8 +2255,8 @@ else USE_MAINTAINER_MODE=no fi - { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 -echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } + { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' @@ -2177,8 +2280,8 @@ case "$enable_dejazilla" in *) dejazilla="$enable_dejazilla" ;; esac if test -n "$dejazilla"; then - { echo "$as_me:$LINENO: A \"make *check\" will email results to $dejazilla" >&5 -echo "$as_me: A \"make *check\" will email results to $dejazilla" >&6;} + { $as_echo "$as_me:$LINENO: A \"make *check\" will email results to $dejazilla" >&5 +$as_echo "$as_me: A \"make *check\" will email results to $dejazilla" >&6;} fi @@ -2211,11 +2314,12 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac @@ -2248,12 +2352,12 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; 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 "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} + { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -2270,6 +2374,12 @@ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g @@ -2299,7 +2409,7 @@ ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -2311,19 +2421,20 @@ LTLIBOBJS=$ac_ltlibobjs if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +$as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} +ac_write_fail=0 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 +{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. @@ -2336,7 +2447,7 @@ ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## @@ -2346,7 +2457,7 @@ DUALCASE=1; export DUALCASE # for MKS sh 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 + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST @@ -2368,17 +2479,45 @@ 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=';' +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' else - PATH_SEPARATOR=: + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' fi - rm -f conf$$.sh + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi # Support unset when possible. @@ -2394,8 +2533,6 @@ fi # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) -as_nl=' -' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. @@ -2418,7 +2555,7 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi @@ -2431,17 +2568,10 @@ 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) >/dev/null 2>&1 && $as_unset $as_var - fi -done +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && @@ -2463,7 +2593,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -2514,7 +2644,7 @@ $as_unset CDPATH s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { $as_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 @@ -2542,7 +2672,6 @@ case `echo -n x` in *) ECHO_N='-n';; esac - if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr @@ -2555,19 +2684,22 @@ if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln + fi else as_ln_s='cp -p' fi @@ -2592,10 +2724,10 @@ else as_test_x=' eval sh -c '\'' if test -d "$1"; then - test -d "$1/."; + test -d "$1/."; else case $1 in - -*)set "./$1";; + -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi @@ -2617,8 +2749,8 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by systemtap $as_me 0.9, which was -generated by GNU Autoconf 2.61. Invocation command line was +This file was extended by systemtap $as_me 0.9.5, which was +generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -2631,26 +2763,33 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q` _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. -Usage: $0 [OPTIONS] [FILE]... +Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages + -q, --quiet, --silent + 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 + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE Configuration files: $config_files @@ -2658,13 +2797,13 @@ $config_files Report bugs to ." _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -systemtap config.status 0.9 -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +systemtap config.status 0.9.5 +configured by $0, generated by GNU Autoconf 2.63, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2006 Free Software Foundation, Inc. +Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -2672,11 +2811,12 @@ ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk _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. +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do @@ -2698,21 +2838,24 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; + $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; + $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 + -*) { $as_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; @@ -2731,30 +2874,32 @@ if $ac_cs_silent; then fi _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + exec "\$@" fi _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - echo "$ac_log" + $as_echo "$ac_log" } >&5 _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets @@ -2762,8 +2907,8 @@ do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done @@ -2802,130 +2947,144 @@ $debug || (umask 077 && mkdir "$tmp") } || { - echo "$me: cannot create a temporary directory in ." >&2 + $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } -# -# Set up the sed scripts for CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then -_ACEOF +ac_cr=' ' +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -am__isrc!$am__isrc$ac_delim -CYGPATH_W!$CYGPATH_W$ac_delim -PACKAGE!$PACKAGE$ac_delim -VERSION!$VERSION$ac_delim -ACLOCAL!$ACLOCAL$ac_delim -AUTOCONF!$AUTOCONF$ac_delim -AUTOMAKE!$AUTOMAKE$ac_delim -AUTOHEADER!$AUTOHEADER$ac_delim -MAKEINFO!$MAKEINFO$ac_delim -install_sh!$install_sh$ac_delim -STRIP!$STRIP$ac_delim -INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim -mkdir_p!$mkdir_p$ac_delim -AWK!$AWK$ac_delim -SET_MAKE!$SET_MAKE$ac_delim -am__leading_dot!$am__leading_dot$ac_delim -AMTAR!$AMTAR$ac_delim -am__tar!$am__tar$ac_delim -am__untar!$am__untar$ac_delim -MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim -MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim -MAINT!$MAINT$ac_delim -dejazilla!$dejazilla$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF + . ./conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 65; then + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done +rm -f conf$$subs.sh -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\).*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\).*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK _ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 +$as_echo "$as_me: error: could not setup config files machinery" >&2;} + { (exit 1); exit 1; }; } _ACEOF - # 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 @@ -2941,19 +3100,21 @@ s/^[^=]*=[ ]*$// }' fi -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" -for ac_tag in :F $CONFIG_FILES +eval set X " :F $CONFIG_FILES " +shift +for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} + :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 +$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; @@ -2982,26 +3143,38 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;} [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac - ac_file_inputs="$ac_file_inputs $ac_f" + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + ac_file_inputs="$ac_file_inputs '$ac_f'" done # 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. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} + { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; + *:-:* | *:-) cat >"$tmp/stdin" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } ;; esac ;; esac @@ -3011,7 +3184,7 @@ $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" | +$as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -3037,7 +3210,7 @@ echo X"$ac_file" | as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -3046,7 +3219,7 @@ $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" | +$as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -3067,17 +3240,17 @@ echo X"$as_dir" | test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -3122,12 +3295,13 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix esac _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= -case `sed -n '/datarootdir/ { +ac_sed_dataroot=' +/datarootdir/ { p q } @@ -3136,13 +3310,14 @@ case `sed -n '/datarootdir/ { /@infodir@/p /@localedir@/p /@mandir@/p -' $ac_file_inputs` in +' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g @@ -3156,15 +3331,16 @@ _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub $extrasub _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t +s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t @@ -3175,21 +3351,28 @@ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; - esac + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } ;; @@ -3204,6 +3387,11 @@ _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save +test $ac_write_fail = 0 || + { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. @@ -3225,4 +3413,8 @@ if test "$no_create" != yes; then # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi diff --git a/testsuite/configure.ac b/testsuite/configure.ac index c40fdf72..03ce3f61 100644 --- a/testsuite/configure.ac +++ b/testsuite/configure.ac @@ -1,7 +1,7 @@ dnl configure.ac --- autoconf input file for systemtap testsuite dnl Process this file with autoconf to produce a configure script. -AC_INIT([systemtap], 0.9, systemtap@sources.redhat.com, systemtap) +AC_INIT([systemtap], 0.9.5, systemtap@sources.redhat.com, systemtap) AC_PREREQ(2.59) AC_CONFIG_AUX_DIR(..) -- cgit From 467bea43a67ddb35d805aa4108fd48970003dba3 Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Fri, 27 Mar 2009 12:51:22 -0400 Subject: Don't do beginning of statement check for .mark probes * tapsets.cxx (dwarf_query): Add has_mark. (query_cu): Use for beginning of statement check. (dwarf_builder::build): Set has_mark. --- tapsets.cxx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tapsets.cxx b/tapsets.cxx index 82c61525..95ec0e3a 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -2850,6 +2850,8 @@ struct dwarf_query : public base_query bool has_absolute; + bool has_mark; + enum dbinfo_reqt dbinfo_reqt; enum dbinfo_reqt assess_dbinfo_reqt(); @@ -3101,6 +3103,7 @@ dwarf_query::dwarf_query(systemtap_session & sess, has_return = has_null_param(params, TOK_RETURN); has_maxactive = get_number_param(params, TOK_MAXACTIVE, maxactive_val); has_absolute = has_null_param(params, TOK_ABSOLUTE); + has_mark = false; if (has_function_str) spec_type = parse_function_spec(function_str_val); @@ -4045,9 +4048,9 @@ query_cu (Dwarf_Die * cudie, void * arg) } // Verify that a raw address matches the beginning of a // statement. This is a somewhat lame check that the address - // is at the start of an assembly instruction. - // Avoid for now since this thwarts a probe on a statement in a macro - if (0 && q->has_statement_num) + // is at the start of an assembly instruction. Mark probes are in the + // middle of a macro and thus not strictly at a statement beginning. + if (q->has_statement_num && ! q->has_mark) { Dwarf_Addr queryaddr = q->statement_num_val; dwarf_line_t address_line(dwarf_getsrc_die(cudie, queryaddr)); @@ -5797,6 +5800,7 @@ dwarf_builder::build(systemtap_session & sess, location->components[1]->arg->tok = sv_tok; ((literal_map_t&)parameters)[TOK_STATEMENT] = location->components[1]->arg; dwarf_query q(sess, base, location, *dw, parameters, finished_results); + q.has_mark = true; dw->query_modules(&q); } return; -- cgit From 756c9462d1de82b770b3168eb794e1735dedb77c Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Fri, 27 Mar 2009 13:01:54 -0400 Subject: PR7045: on 64-bit kernels, allow 32-bit userspace to be pass elf validation * tapsets.cxx (validate_elf): Reorganize glob matching for x86 and ppc. --- tapsets.cxx | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/tapsets.cxx b/tapsets.cxx index 95ec0e3a..690d7e28 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -4184,16 +4184,28 @@ validate_module_elf (Dwfl_Module *mod, const char *name, base_query *q) & main_filename, & debug_filename); const string& sess_machine = q->sess.architecture; - string expect_machine; + + string expect_machine; // to match sess.machine (i.e., kernel machine) + string expect_machine2; switch (elf_machine) { - case EM_386: expect_machine = "i?86"; break; // accept e.g. i586 - case EM_X86_64: expect_machine = "x86_64"; break; - // We don't support 32-bit ppc kernels, but we support 32-bit apps - // running on ppc64 kernels. - case EM_PPC: expect_machine = "ppc64"; break; - case EM_PPC64: expect_machine = "ppc64"; break; + // x86 and ppc are bi-architecture; a 64-bit kernel + // can normally run either 32-bit or 64-bit *userspace*. + case EM_386: + expect_machine = "i?86"; + if (! q->has_process) break; // 32-bit kernel/module + /* FALLSTHROUGH */ + case EM_X86_64: + expect_machine2 = "x86_64"; + break; + case EM_PPC: + expect_machine = "ppc"; + if (! q->has_process) break; // 32-bit kernel/module + /* FALLSTHROUGH */ + case EM_PPC64: + expect_machine2 = "ppc64"; + break; case EM_S390: expect_machine = "s390x"; break; case EM_IA_64: expect_machine = "ia64"; break; case EM_ARM: expect_machine = "armv*"; break; @@ -4204,10 +4216,12 @@ validate_module_elf (Dwfl_Module *mod, const char *name, base_query *q) if (! debug_filename) debug_filename = main_filename; if (! debug_filename) debug_filename = name; - if (fnmatch (expect_machine.c_str(), sess_machine.c_str(), 0) != 0) + if (fnmatch (expect_machine.c_str(), sess_machine.c_str(), 0) != 0 && + fnmatch (expect_machine2.c_str(), sess_machine.c_str(), 0) != 0) { stringstream msg; - msg << "ELF machine " << expect_machine << " (code " << elf_machine + msg << "ELF machine " << expect_machine << "|" << expect_machine2 + << " (code " << elf_machine << ") mismatch with target " << sess_machine << " in '" << debug_filename << "'"; throw semantic_error(msg.str ()); @@ -4219,7 +4233,7 @@ validate_module_elf (Dwfl_Module *mod, const char *name, base_query *q) << "-0x" << q->dw.module_end << ", bias 0x" << q->dw.module_bias << "]" << dec << " file " << debug_filename - << " ELF machine " << expect_machine + << " ELF machine " << expect_machine << "|" << expect_machine2 << " (code " << elf_machine << ")" << "\n"; } -- cgit From 99c0acadf5e45cb3fa00dc152f567d118d49fe34 Mon Sep 17 00:00:00 2001 From: Eugeniy Meshcheryakov Date: Sat, 28 Mar 2009 22:36:02 +0100 Subject: Fix typo s/yxmlto/xmlto/ --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 553aa00e..eab206a2 100644 --- a/configure.ac +++ b/configure.ac @@ -208,7 +208,7 @@ EOF fi if test "$enable_refdocs" == "yes"; then if test "x${have_xmlto}${have_xmlto_pdf}" != "xyesyes"; then - AC_MSG_ERROR([cannot find proper yxmlto for building reference documentation]) + AC_MSG_ERROR([cannot find proper xmlto for building reference documentation]) fi fi if test "x${have_xmlto}${have_xmlto_pdf}" == "xyesyes" -a "$enable_refdocs" != "no" -a "${building_docs}" == "yes"; then -- cgit From b29c53ec642a8b07633c8602b3bfc428ce2c4cd4 Mon Sep 17 00:00:00 2001 From: Eugeniy Meshcheryakov Date: Sat, 28 Mar 2009 23:10:20 +0100 Subject: Add header --- testsuite/systemtap.examples/network/tcp.stp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testsuite/systemtap.examples/network/tcp.stp b/testsuite/systemtap.examples/network/tcp.stp index ebe72a1c..01db9d2d 100644 --- a/testsuite/systemtap.examples/network/tcp.stp +++ b/testsuite/systemtap.examples/network/tcp.stp @@ -1,3 +1,5 @@ +#! /usr/bin/env stap + //A simple TCP tapset example probe begin { -- cgit From 64e0a05d0fcb2c1e3c27a6ab076ecc8b571efd21 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Sun, 29 Mar 2009 15:51:40 -0400 Subject: hand-regen configure after commit 99c0acad yxmlto->xmlto typo fix --- configure | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 6ed22c90..a63b6557 100755 --- a/configure +++ b/configure @@ -6662,8 +6662,8 @@ $as_echo "no" >&6; } fi if test "$enable_refdocs" == "yes"; then if test "x${have_xmlto}${have_xmlto_pdf}" != "xyesyes"; then - { { $as_echo "$as_me:$LINENO: error: cannot find proper yxmlto for building reference documentation" >&5 -$as_echo "$as_me: error: cannot find proper yxmlto for building reference documentation" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot find proper xmlto for building reference documentation" >&5 +$as_echo "$as_me: error: cannot find proper xmlto for building reference documentation" >&2;} { (exit 1); exit 1; }; } fi fi -- cgit From 23d89280bdf6bf4c341478eb766dba9d4f395708 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Sun, 29 Mar 2009 15:57:11 -0400 Subject: tweak "Distro:" line generation in testsuite logs, to moot "oracle-enterprise.patch" --- testsuite/lib/systemtap.exp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/testsuite/lib/systemtap.exp b/testsuite/lib/systemtap.exp index c80ad171..b9db4e40 100644 --- a/testsuite/lib/systemtap.exp +++ b/testsuite/lib/systemtap.exp @@ -151,10 +151,9 @@ proc get_system_info {} { set Snapshot $version } set Distro "Linux" - if [file exists /etc/fedora-release] {set Distro [exec /bin/cat /etc/fedora-release]} - if [file exists /etc/redhat-release] {set Distro [exec /bin/cat /etc/redhat-release]} - if [file exists /etc/suse-release] {set Distro [exec /bin/cat /etc/suse-release]} - if [file exists /etc/debian_version] {set Distro [exec /bin/cat /etc/debian_version]} + foreach f {/etc/fedora-release /etc/enterprise-release /etc/redhat-release /etc/suse-release /etc/debian_version} { + if [file exists $f] then {set Distro [exec /bin/cat $f]; break } + } } if {! [setup_systemtap_environment]} then { -- cgit From 172d72b30e804bda124f26b858f0f3081a561b3c Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Sun, 29 Mar 2009 16:40:13 -0400 Subject: prefer using /usr/bin/lsb_release to deduce distribution for testsuite --- testsuite/lib/systemtap.exp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/testsuite/lib/systemtap.exp b/testsuite/lib/systemtap.exp index b9db4e40..554e88ed 100644 --- a/testsuite/lib/systemtap.exp +++ b/testsuite/lib/systemtap.exp @@ -148,11 +148,17 @@ proc get_system_info {} { set Snapshot [exec /bin/cat $env(SRCDIR)/../SNAPSHOT] } else { regexp {version [^)]*} [exec stap -V 2>@ stdout] version - set Snapshot $version + set Snapshot $version } set Distro "Linux" - foreach f {/etc/fedora-release /etc/enterprise-release /etc/redhat-release /etc/suse-release /etc/debian_version} { - if [file exists $f] then {set Distro [exec /bin/cat $f]; break } + if [file exists /usr/bin/lsb_release] { + # this produces one line of this format: + # Distribution:\tSTRING + set Distro [lrange [exec /usr/bin/lsb_release -d] 1 end] + } else { + foreach f {/etc/fedora-release /etc/enterprise-release /etc/redhat-release /etc/suse-release /etc/debian_version} { + if [file exists $f] then {set Distro [exec /bin/cat $f]; break } + } } } -- cgit From 267a544424be10825c57ea3eaa4d908c818211c7 Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Mon, 30 Mar 2009 10:23:27 -0400 Subject: Test marker probe parameter types. * testsuite/systemtap.base/sdt_types.c: New file. * testsuite/systemtap.base/sdt_types.stp: New file. * testsuite/systemtap.base/static_uprobes.exp: Use sdt_types for type testing. --- testsuite/systemtap.base/sdt_types.c | 168 +++++++++++++ testsuite/systemtap.base/sdt_types.stp | 371 ++++++++++++++++++++++++++++ testsuite/systemtap.base/static_uprobes.exp | 47 ++-- 3 files changed, 561 insertions(+), 25 deletions(-) create mode 100644 testsuite/systemtap.base/sdt_types.c create mode 100644 testsuite/systemtap.base/sdt_types.stp diff --git a/testsuite/systemtap.base/sdt_types.c b/testsuite/systemtap.base/sdt_types.c new file mode 100644 index 00000000..2e04ec7e --- /dev/null +++ b/testsuite/systemtap.base/sdt_types.c @@ -0,0 +1,168 @@ +#include "sdt.h" /* Really , but pick current source version. */ +#include +#include + +int +main (int argc, char **argv) +{ + char char_var = '~'; + STAP_PROBE1(provider,char_var,char_var); + const char const_char_var = '!'; + STAP_PROBE1(provider,const_char_var,const_char_var); + volatile char volatile_char_var = '!'; + STAP_PROBE1(provider,volatile_char_var,volatile_char_var); + char *ptr_char_var = &char_var; + STAP_PROBE2(provider,ptr_char_var,ptr_char_var,&char_var); + const char *ptr_const_char_var = &char_var; + STAP_PROBE2(provider,ptr_const_char_var,ptr_const_char_var,&char_var); + char * const char_ptr_const_var = &char_var; + STAP_PROBE2(provider,char_ptr_const_var,char_ptr_const_var,&char_var); + volatile char *ptr_volatile_char_var = &char_var; + STAP_PROBE2(provider,ptr_volatile_char_var,ptr_volatile_char_var,&char_var); + char * volatile char_ptr_volatile_var = &char_var; + STAP_PROBE2(provider,char_ptr_volatile_var,char_ptr_volatile_var,&char_var); + short int short_int_var = 32767; + STAP_PROBE1(provider,short_int_var,short_int_var); + const short int const_short_int_var = -32767; + STAP_PROBE1(provider,const_short_int_var,const_short_int_var); + volatile short int volatile_short_int_var = -32767; + STAP_PROBE1(provider,volatile_short_int_var,volatile_short_int_var); + short int *ptr_short_int_var = &short_int_var; + STAP_PROBE2(provider,ptr_short_int_var,ptr_short_int_var,&short_int_var); + const short int *ptr_const_short_int_var = &short_int_var; + STAP_PROBE2(provider,ptr_const_short_int_var,ptr_const_short_int_var,&short_int_var); + short int * const short_int_ptr_const_var = &short_int_var; + STAP_PROBE2(provider,short_int_ptr_const_var,short_int_ptr_const_var,&short_int_var); + volatile short int *ptr_volatile_short_int_var = &short_int_var; + STAP_PROBE2(provider,ptr_volatile_short_int_var,ptr_volatile_short_int_var,&short_int_var); + short int * volatile short_int_ptr_volatile_var = &short_int_var; + STAP_PROBE2(provider,short_int_ptr_volatile_var,short_int_ptr_volatile_var,&short_int_var); + int int_var = 65536; + STAP_PROBE1(provider,int_var,int_var); + const int const_int_var = -65536; + STAP_PROBE1(provider,const_int_var,const_int_var); + volatile int volatile_int_var = -65536; + STAP_PROBE1(provider,volatile_int_var,volatile_int_var); + int *ptr_int_var = &int_var; + STAP_PROBE2(provider,ptr_int_var,ptr_int_var,&int_var); + const int *ptr_const_int_var = &int_var; + STAP_PROBE2(provider,ptr_const_int_var,ptr_const_int_var,&int_var); + int * const int_ptr_const_var = &int_var; + STAP_PROBE2(provider,int_ptr_const_var,int_ptr_const_var,&int_var); + volatile int *ptr_volatile_int_var = &int_var; + STAP_PROBE2(provider,ptr_volatile_int_var,ptr_volatile_int_var,&int_var); + int * volatile int_ptr_volatile_var = &int_var; + STAP_PROBE2(provider,int_ptr_volatile_var,int_ptr_volatile_var,&int_var); + long int long_int_var = 65536; + STAP_PROBE1(provider,long_int_var,long_int_var); + const long int const_long_int_var = -65536; + STAP_PROBE1(provider,const_long_int_var,const_long_int_var); + volatile long int volatile_long_int_var = -65536; + STAP_PROBE1(provider,volatile_long_int_var,volatile_long_int_var); + long int *ptr_long_int_var = &long_int_var; + STAP_PROBE2(provider,ptr_long_int_var,ptr_long_int_var,&long_int_var); + const long int *ptr_const_long_int_var = &long_int_var; + STAP_PROBE2(provider,ptr_const_long_int_var,ptr_const_long_int_var,&long_int_var); + long int * const long_int_ptr_const_var = &long_int_var; + STAP_PROBE2(provider,long_int_ptr_const_var,long_int_ptr_const_var,&long_int_var); + volatile long int *ptr_volatile_long_int_var = &long_int_var; + STAP_PROBE2(provider,ptr_volatile_long_int_var,ptr_volatile_long_int_var,&long_int_var); + long int * volatile long_int_ptr_volatile_var = &long_int_var; + STAP_PROBE2(provider,long_int_ptr_volatile_var,long_int_ptr_volatile_var,&long_int_var); + long long int long_long_int_var = 65536; + STAP_PROBE1(provider,long_long_int_var,long_long_int_var); + const long long int const_long_long_int_var = -65536; + STAP_PROBE1(provider,const_long_long_int_var,const_long_long_int_var); + volatile long long int volatile_long_long_int_var = -65536; + STAP_PROBE1(provider,volatile_long_long_int_var,volatile_long_long_int_var); + long long int *ptr_long_long_int_var = &long_long_int_var; + STAP_PROBE2(provider,ptr_long_long_int_var,ptr_long_long_int_var,&long_long_int_var); + const long long int *ptr_const_long_long_int_var = &long_long_int_var; + STAP_PROBE2(provider,ptr_const_long_long_int_var,ptr_const_long_long_int_var,&long_long_int_var); + long long int * const long_long_int_ptr_const_var = &long_long_int_var; + STAP_PROBE2(provider,long_long_int_ptr_const_var,long_long_int_ptr_const_var,&long_long_int_var); + volatile long long int *ptr_volatile_long_long_int_var = &long_long_int_var; + STAP_PROBE2(provider,ptr_volatile_long_long_int_var,ptr_volatile_long_long_int_var,&long_long_int_var); + long long int * volatile long_long_int_ptr_volatile_var = &long_long_int_var; + STAP_PROBE2(provider,long_long_int_ptr_volatile_var,long_long_int_ptr_volatile_var,&long_long_int_var); + + char arr_char [2] = "!~"; + STAP_PROBE1(provider,arr_char,&arr_char); + struct { + int int_var; + } arr_struct [2] = {{ + .int_var=1, + },{ + .int_var=2, + }}; + STAP_PROBE1(provider,arr_struct,&arr_struct); + struct { + unsigned int bit1_0:1; + unsigned int bit1_1:1; + char char_2; + unsigned int bit1_6:1; + unsigned int bit1_7:1; + char char_8; + unsigned int bit1_9:1; + unsigned int bit1_10:1; + } bitfields_small_var = { + .bit1_0=1, + .bit1_1=0, + .char_2='a', + .bit1_6=1, + .bit1_7=0, + .char_8='z', + .bit1_9=1, + .bit1_10=0, + }; + STAP_PROBE8(provider,bitfields_small_var, + (int)bitfields_small_var.bit1_0, + (int)bitfields_small_var.bit1_1, + bitfields_small_var.char_2, + (int)bitfields_small_var.bit1_6, + (int)bitfields_small_var.bit1_7, + bitfields_small_var.char_8, + (int)bitfields_small_var.bit1_9, + (int)bitfields_small_var.bit1_10); + struct { + unsigned char char_0; + int bit1_4:1; + unsigned int bit1_5:1; + int bit2_6:2; + unsigned int bit2_8:2; + int bit3_10:3; + unsigned int bit3_13:3; + int bit9_16:9; + unsigned int bit9_25:9; + char char_34; + } bitfields_bit_var = { + .char_0='A', + .bit1_4=-1, + .bit1_5=1, + .bit2_6=1, + .bit2_8=3, + .bit3_10=3, + .bit3_13=7, + .bit9_16=255, + .bit9_25=511, + .char_34='Z', + }; + STAP_PROBE10(provider,bitfields_bit_var,bitfields_bit_var.char_0, + (int)bitfields_bit_var.bit1_4, + (int)bitfields_bit_var.bit1_5, + (int)bitfields_bit_var.bit2_6, + (int)bitfields_bit_var.bit2_8, + (int)bitfields_bit_var.bit3_10, + (int)bitfields_bit_var.bit3_13, + (int)bitfields_bit_var.bit9_16, + (int)bitfields_bit_var.bit9_25, + bitfields_bit_var.char_34); + enum { + red = 0, + green = 1, + blue = 2 + } primary_colors_var = green; + STAP_PROBE1(provider,primary_colors_var,primary_colors_var); + return 0; +} + diff --git a/testsuite/systemtap.base/sdt_types.stp b/testsuite/systemtap.base/sdt_types.stp new file mode 100644 index 00000000..654b0d18 --- /dev/null +++ b/testsuite/systemtap.base/sdt_types.stp @@ -0,0 +1,371 @@ +probe process(@1).mark("char_var") { + if ($arg1 != 126) + printf("FAIL: char_var\n") + else + printf("PASS: char_var\n") +} + +probe process(@1).mark("const_char_var") { + if ($arg1 != 33) + printf("FAIL: const_char_var\n") + else + printf("PASS: const_char_var\n") +} + +probe process(@1).mark("volatile_char_var") { + if ($arg1 != 33) + printf("FAIL: volatile_char_var\n") + else + printf("PASS: volatile_char_var\n") +} + +probe process(@1).mark("ptr_char_var") { + if ($arg1 != $arg2) + printf("FAIL: ptr_char_var\n") + else + printf("PASS: ptr_char_var\n") +} + +probe process(@1).mark("ptr_const_char_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_const_char_var\n") + else + printf("PASS: ptr_const_char_var\n") +} + +probe process(@1).mark("char_ptr_const_var") +{ + if ($arg1 != $arg2) + printf("FAIL: char_ptr_const_var\n") + else + printf("PASS: char_ptr_const_var\n") +} + +probe process(@1).mark("ptr_volatile_char_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_volatile_char_var\n") + else + printf("PASS: ptr_volatile_char_var\n") +} + +probe process(@1).mark("char_ptr_volatile_var") +{ + if ($arg1 != $arg2) + printf("FAIL: char_ptr_volatile_var\n") + else + printf("PASS: char_ptr_volatile_var\n") +} + +probe process(@1).mark("short_int_var") +{ + if ($arg1 != 32767) + printf("FAIL: short_int_var\n") + else + printf("PASS: short_int_var\n") +} + +probe process(@1).mark("const_short_int_var") +{ + if ($arg1 != -32767) + printf("FAIL: const_short_int_var\n") + else + printf("PASS: const_short_int_var\n") +} + +probe process(@1).mark("volatile_short_int_var") +{ + if ($arg1 != -32767) + printf("FAIL: volatile_short_int_var\n") + else + printf("PASS: volatile_short_int_var\n") +} + +probe process(@1).mark("ptr_short_int_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_short_int_var\n") + else + printf("PASS: ptr_short_int_var\n") +} + +probe process(@1).mark("ptr_const_short_int_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_const_short_int_var\n") + else + printf("PASS: ptr_const_short_int_var\n") +} + +probe process(@1).mark("short_int_ptr_const_var") +{ + if ($arg1 != $arg2) + printf("FAIL: short_int_ptr_const_var\n") + else + printf("PASS: short_int_ptr_const_var\n") +} + +probe process(@1).mark("ptr_volatile_short_int_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_volatile_short_int_var\n") + else + printf("PASS: ptr_volatile_short_int_var\n") +} + +probe process(@1).mark("short_int_ptr_volatile_var") +{ + if ($arg1 != $arg2) + printf("FAIL: short_int_ptr_volatile_var\n") + else + printf("PASS: short_int_ptr_volatile_var\n") +} + +probe process(@1).mark("int_var") +{ + if ($arg1 != 65536) + printf("FAIL: int_var") + else + printf("PASS: int_var") +} + +probe process(@1).mark("const_int_var") +{ + if ($arg1 != -65536) + printf("FAIL: const_int_var\n") + else + printf("PASS: const_int_var\n") +} + +probe process(@1).mark("volatile_int_var") +{ + if ($arg1 != -65536) + printf("FAIL: volatile_int_var\n") + else + printf("PASS: volatile_int_var\n") +} + +probe process(@1).mark("ptr_int_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_const_int_var\n") + else + printf("PASS: ptr_const_int_var\n") +} + +probe process(@1).mark("ptr_const_int_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_const_int_var\n") + else + printf("PASS: ptr_const_int_var\n") +} + +probe process(@1).mark("int_ptr_const_var") +{ + if ($arg1 != $arg2) + printf("FAIL: int_ptr_const_var\n") + else + printf("PASS: int_ptr_const_var\n") +} + +probe process(@1).mark("ptr_volatile_int_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_volatile_int_var\n") + else + printf("PASS: ptr_volatile_int_var\n") +} + +probe process(@1).mark("int_ptr_volatile_var") +{ + if ($arg1 != $arg2) + printf("FAIL: int_ptr_volatile_var\n") + else + printf("PASS: int_ptr_volatile_var\n") +} + +probe process(@1).mark("long_int_var") +{ + if ($arg1 != 65536) + printf("FAIL: long_int_var\n") + else + printf("PASS: long_int_var\n") +} + +probe process(@1).mark("const_long_int_var") +{ + if ($arg1 != -65536) + printf("FAIL: const_long_int_var\n") + else + printf("PASS: const_long_int_var\n") +} + +probe process(@1).mark("volatile_long_int_var") +{ + if ($arg1 != -65536) + printf("FAIL: volatile_long_int_var\n") + else + printf("PASS: volatile_long_int_var\n") +} + +probe process(@1).mark("ptr_long_int_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_long_int_var\n") + else + printf("PASS: ptr_long_int_var\n") +} + +probe process(@1).mark("ptr_const_long_int_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_const_long_int_var\n") + else + printf("PASS: ptr_const_long_int_var\n") +} + +probe process(@1).mark("long_int_ptr_const_var") +{ + if ($arg1 != $arg2) + printf("FAIL: long_int_ptr_const_var\n") + else + printf("PASS: long_int_ptr_const_var\n") +} + +probe process(@1).mark("ptr_volatile_long_int_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_volatile_long_int_var\n") + else + printf("PASS: ptr_volatile_long_int_var\n") +} + +probe process(@1).mark("long_int_ptr_volatile_var") +{ + if ($arg1 != $arg2) + printf("FAIL: long_int_ptr_volatile_var\n") + else + printf("PASS: long_int_ptr_volatile_var\n") +} + +probe process(@1).mark("long_long_int_var") +{ + if ($arg1 != 65536) + printf("FAIL: long_long_int_var\n") + else + printf("PASS: long_long_int_var\n") +} + +probe process(@1).mark("const_long_long_int_var") +{ + if ($arg1 != -65536) + printf("FAIL: const_long_long_int_var\n") + else + printf("PASS: const_long_long_int_var\n") +} + +probe process(@1).mark("volatile_long_long_int_var") +{ + if ($arg1 != -65536) + printf("FAIL: volatile_long_long_int_var\n") + else + printf("PASS: volatile_long_long_int_var\n") +} + +probe process(@1).mark("ptr_long_long_int_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_long_long_int_var\n") + else + printf("PASS: ptr_long_long_int_var\n") +} + +probe process(@1).mark("ptr_const_long_long_int_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_const_long_long_int_var\n") + else + printf("PASS: ptr_const_long_long_int_var\n") +} + +probe process(@1).mark("long_long_int_ptr_const_var") +{ + if ($arg1 != $arg2) + printf("FAIL: long_long_int_ptr_const_var\n") + else + printf("PASS: long_long_int_ptr_const_var\n") +} + +probe process(@1).mark("ptr_volatile_long_long_int_var") +{ + if ($arg1 != $arg2) + printf("FAIL: ptr_volatile_long_long_int_var\n") + else + printf("PASS: ptr_volatile_long_long_int_var\n") +} + +probe process(@1).mark("long_long_int_ptr_volatile_var") +{ + if ($arg1 != $arg2) + printf("FAIL: long_long_int_ptr_volatile_var\n") + else + printf("PASS: long_long_int_ptr_volatile_var\n") +} + +probe process(@1).mark("arr_char") +{ + arr_char = user_string ($arg1); + if (arr_char != "!~") + printf("FAIL: arr_char_var\n") + else + printf("PASS: arr_char_var\n") +} + +probe process(@1).mark("arr_struct") +{ + arr_struct_int_var = user_int ($arg1) + if (arr_struct_int_var != 1) + printf("FAIL: arr_struct_var\n") + else + printf("PASS: arr_struct_var\n") +} + +probe process(@1).mark("bitfields_small_var") +{ + if ($arg1 != 1 || $arg2 != 0 || $arg3 != 97 || $arg4 != 1 + || $arg5 != 0 || $arg6 != 122 || $arg7 != 1 || $arg8 != 0) + printf("FAIL: bitfields_small_var\n") + +} + +probe process(@1).mark("bitfields_bit_var") +{ + if ($arg1 != 65 || $arg2 != -1 || $arg3 != 1 || $arg4 != 1 + || $arg5 != 3 || $arg6 != 3 || $arg7 != 7 || $arg8 != 255 + || $arg9 != 511 || $arg10 != 90) + printf("FAIL: bitfields_bit_var\n") + else + printf("PASS: bitfields_bit_var\n") +} + + +probe process(@1).mark("primary_colors_var") +{ + if ($arg1 != 1) + printf("FAIL: primary_colors_var\n") + else + printf("PASS: primary_colors_var\n") +} + + + + + + + + + + + diff --git a/testsuite/systemtap.base/static_uprobes.exp b/testsuite/systemtap.base/static_uprobes.exp index e407440e..620d5576 100644 --- a/testsuite/systemtap.base/static_uprobes.exp +++ b/testsuite/systemtap.base/static_uprobes.exp @@ -118,17 +118,6 @@ if { $res != "" } { pass "$test compiling C -g" } -set sup_flags "$sup_flags additional_flags=-x additional_flags=c++" -set res [target_compile $sup_srcpath $supcplus_exepath executable $sup_flags] -if { $res != "" } { - verbose "target_compile failed: $res" 2 - fail "$test compiling C++ -g" - catch {exec rm -f $sup_srcpath $sup_exepath $sup_hpath $sup_stppath} - return -} else { - pass "$test compiling C++ -g" -} - if {![installtest_p]} {untested $test; return} # Try to find utrace_attach symbol in /proc/kallsyms @@ -162,29 +151,37 @@ wait if {$ok == 5} { pass "$test C" } { fail "$test C ($ok)" } -set ok 0 +set sup_flags "$sup_flags additional_flags=-O0" +set res [target_compile $srcdir/$subdir/sdt_types.c sdt_types.x executable $sup_flags] +if { $res != "" } { + verbose "target_compile failed: $res" 2 + fail "$test compiling -g" + return +} else { + pass "$test compiling -g" +} -# Test setting a probe without .probes using only dwarf label info -verbose -log "objcopy -R .probes $supcplus_exepath $sup_exepath" -spawn objcopy -R .probes $supcplus_exepath $sup_exepath -verbose -log "spawn stap -c $sup_exepath $sup_stppath" -spawn stap -c $sup_exepath $sup_stppath +set ok 0 +set fail "types" +verbose -log "spawn stap -c ./sdt_types.x $srcdir/$subdir/sdt_types.stp ./sdt_types.x" +spawn stap -c ./sdt_types.x $srcdir/$subdir/sdt_types.stp ./sdt_types.x expect { -timeout 180 - -re {In test_probe_2 probe 0x2} { incr ok; exp_continue } - -re {In test_probe_0 probe 0x3} { incr ok; exp_continue } - -re {In test_probe_3 probe 0x3 0x[0-9a-f][0-9a-f]} { incr ok; exp_continue } - -re {In test_probe_4 dtrace probe 0x4} { incr ok; exp_continue } - timeout { fail "$test C++ (timeout)" } + -re {FAIL: [a-z_]+var} { regexp " .*$" $expect_out(0,string) s; + incr ok; set fail "$fail $s"; exp_continue } + timeout { fail "$test C (timeout)" } eof { } } wait -# we now generate the probes via asm so there is no label debug info -if {$ok == 5} { pass "$test C++" } { xfail "$test C++ ($ok)" } +if { $ok != 0 } { + fail $fail +} else { + pass types +} if { $verbose == 0 } { -catch {exec rm -f $sup_srcpath $sup_exepath $supcplus_exepath $sup_dpath $sup_hpath $sup_stppath} +catch {exec rm -f $sup_srcpath $sup_exepath $supcplus_exepath $sup_dpath $sup_hpath $sup_stppath sdt_types.x} } -- cgit From bcc2b3536d6efb5857c16704f99b772655981cdd Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Mon, 30 Mar 2009 21:18:30 +0200 Subject: PR10016: systemtap kills all processes in process group on signal. * main.cxx (main): Make sure we run in our own process group. --- main.cxx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/main.cxx b/main.cxx index 055c56b8..23b182eb 100644 --- a/main.cxx +++ b/main.cxx @@ -845,6 +845,16 @@ main (int argc, char * const argv []) // directory. s.translated_source = string(s.tmpdir) + "/" + s.module_name + ".c"; + // We want a new process group so we can use kill (0, sig) to send a + // signal to all children (but not the parent). As done in + // handle_interrupt (). Unless we are already the process group leader. + if (getpgrp() != getpid() && setpgrp() != 0) + { + const char* e = strerror (errno); + if (! s.suppress_warnings) + cerr << "Warning: failed to set new process group: " << e << endl; + } + // Set up our handler to catch routine signals, to allow clean // and reasonably timely exit. setup_signals(&handle_interrupt); -- cgit From 5cad2d3b056059758d44b4dd56abe37ca9c841a6 Mon Sep 17 00:00:00 2001 From: Wenji Huang Date: Mon, 30 Mar 2009 17:23:42 -0400 Subject: PR9998: adapt tapset/i686/registers.stp to latest kernel * buildrun.cxx (compile_pass): Add autoconf-x86-gs.c. * tapset/i686/registers.stp (_stp_register_regs): Update offsets. (test_x86_gs): Auxiliary function. * runtime/autoconf-x86-gs.c : New file. * testsuite/systemtap.base/x86_gs.exp : New test case. * testsuite/systemtap.base/x86_gs.stp : Ditto. --- buildrun.cxx | 1 + tapset/i686/registers.stp | 50 ++++++++++++++++++++++++++++++----------------- 2 files changed, 33 insertions(+), 18 deletions(-) diff --git a/buildrun.cxx b/buildrun.cxx index e19043cf..97357692 100644 --- a/buildrun.cxx +++ b/buildrun.cxx @@ -149,6 +149,7 @@ compile_pass (systemtap_session& s) output_autoconf(s, o, "autoconf-procfs-owner.c", "STAPCONF_PROCFS_OWNER", NULL); output_autoconf(s, o, "autoconf-alloc-percpu-align.c", "STAPCONF_ALLOC_PERCPU_ALIGN", NULL); output_autoconf(s, o, "autoconf-find-task-pid.c", "STAPCONF_FIND_TASK_PID", NULL); + output_autoconf(s, o, "autoconf-x86-gs.c", "STAPCONF_X86_GS", NULL); #if 0 /* NB: For now, the performance hit of probe_kernel_read/write (vs. our diff --git a/tapset/i686/registers.stp b/tapset/i686/registers.stp index a6e5694e..997376dc 100644 --- a/tapset/i686/registers.stp +++ b/tapset/i686/registers.stp @@ -1,25 +1,39 @@ global _reg_offsets, _stp_regs_registered, _sp_offset, _ss_offset +function test_x86_gs:long() %{ /* pure */ +#ifdef STAPCONF_X86_GS + THIS->__retvalue = 1; +#else + THIS->__retvalue = 0; +#endif +%} + function _stp_register_regs() { + /* Same order as pt_regs */ - _reg_offsets["ebx"] = 0 _reg_offsets["bx"] = 0 - _reg_offsets["ecx"] = 4 _reg_offsets["cx"] = 4 - _reg_offsets["edx"] = 8 _reg_offsets["dx"] = 8 - _reg_offsets["esi"] = 12 _reg_offsets["si"] = 12 - _reg_offsets["edi"] = 16 _reg_offsets["di"] = 16 - _reg_offsets["ebp"] = 20 _reg_offsets["bp"] = 20 - _reg_offsets["eax"] = 24 _reg_offsets["ax"] = 24 - _reg_offsets["xds"] = 28 _reg_offsets["ds"] = 28 - _reg_offsets["xes"] = 32 _reg_offsets["es"] = 32 - _reg_offsets["xfs"] = 36 _reg_offsets["fs"] = 36 - _reg_offsets["orig_eax"] = 40 _reg_offsets["orig_ax"] = 40 - _reg_offsets["eip"] = 44 _reg_offsets["ip"] = 44 - _reg_offsets["xcs"] = 48 _reg_offsets["cs"] = 48 - _reg_offsets["eflags"] = 52 _reg_offsets["flags"] = 52 - _reg_offsets["esp"] = 56 _reg_offsets["sp"] = 56 - _reg_offsets["xss"] = 60 _reg_offsets["ss"] = 60 - _sp_offset = 56 - _ss_offset = 60 + _reg_offsets["ebx"] = 0 _reg_offsets["bx"] = 0 + _reg_offsets["ecx"] = 4 _reg_offsets["cx"] = 4 + _reg_offsets["edx"] = 8 _reg_offsets["dx"] = 8 + _reg_offsets["esi"] = 12 _reg_offsets["si"] = 12 + _reg_offsets["edi"] = 16 _reg_offsets["di"] = 16 + _reg_offsets["ebp"] = 20 _reg_offsets["bp"] = 20 + _reg_offsets["eax"] = 24 _reg_offsets["ax"] = 24 + _reg_offsets["xds"] = 28 _reg_offsets["ds"] = 28 + _reg_offsets["xes"] = 32 _reg_offsets["es"] = 32 + _reg_offsets["xfs"] = 36 _reg_offsets["fs"] = 36 + gs_incr = 0 +if (test_x86_gs()) { + gs_incr = 4 + _reg_offsets["xgs"] = 40 _reg_offsets["gs"] = 40 +} + _reg_offsets["orig_eax"] = 40 + gs_incr _reg_offsets["orig_ax"] = 40 + gs_incr + _reg_offsets["eip"] = 44 + gs_incr _reg_offsets["ip"] = 44 + gs_incr + _reg_offsets["xcs"] = 48 + gs_incr _reg_offsets["cs"] = 48 + gs_incr + _reg_offsets["eflags"] = 52 + gs_incr _reg_offsets["flags"] = 52 + gs_incr + _reg_offsets["esp"] = 56 + gs_incr _reg_offsets["sp"] = 56 + gs_incr + _reg_offsets["xss"] = 60 + gs_incr _reg_offsets["ss"] = 60 + gs_incr + _sp_offset = 56 + gs_incr + _ss_offset = 60 + gs_incr _stp_regs_registered = 1 } -- cgit From bd0b450c6327b1666385f4e5fb5d23382cbffc86 Mon Sep 17 00:00:00 2001 From: Wenji Huang Date: Mon, 30 Mar 2009 17:29:20 -0400 Subject: PR9998: new config and test files * runtime/autoconf-x86-gs.c : New file. * testsuite/systemtap.base/x86_gs.exp : New test case. * testsuite/systemtap.base/x86_gs.stp : Ditto. --- runtime/autoconf-x86-gs.c | 5 +++++ testsuite/systemtap.base/x86_gs.exp | 12 ++++++++++++ testsuite/systemtap.base/x86_gs.stp | 10 ++++++++++ 3 files changed, 27 insertions(+) create mode 100644 runtime/autoconf-x86-gs.c create mode 100644 testsuite/systemtap.base/x86_gs.exp create mode 100644 testsuite/systemtap.base/x86_gs.stp diff --git a/runtime/autoconf-x86-gs.c b/runtime/autoconf-x86-gs.c new file mode 100644 index 00000000..f4dda795 --- /dev/null +++ b/runtime/autoconf-x86-gs.c @@ -0,0 +1,5 @@ +#include + +#if defined (__i386__) +struct pt_regs regs = {.gs = 0x0}; +#endif diff --git a/testsuite/systemtap.base/x86_gs.exp b/testsuite/systemtap.base/x86_gs.exp new file mode 100644 index 00000000..98ab3051 --- /dev/null +++ b/testsuite/systemtap.base/x86_gs.exp @@ -0,0 +1,12 @@ +set test "x86_gs" +if {![installtest_p]} { untested $test; return } +set arch [exec uname -m] +if {$arch!="i686"} { untested $test; return } +spawn stap $srcdir/$subdir/x86_gs.stp +expect { + -timeout 60 + -re "0\r\n" { pass $test } + -re "140\r\n" { pass $test } + eof { fail $test } + timeout { fail "$test unexpected timeout" } +} diff --git a/testsuite/systemtap.base/x86_gs.stp b/testsuite/systemtap.base/x86_gs.stp new file mode 100644 index 00000000..68b58512 --- /dev/null +++ b/testsuite/systemtap.base/x86_gs.stp @@ -0,0 +1,10 @@ +#! stap + +# test x86 gs register + +probe begin { + if (!_stp_regs_registered) + _stp_register_regs() + printf("%d\n",test_x86_gs() * 100 + _reg_offsets["gs"]) /* 0 or 140 */ + exit() +} -- cgit From ff41ddbb9f40fbcc4bb0aa11ca0d8e03b369b606 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 31 Mar 2009 12:15:09 +0200 Subject: PR10016: Run stap in its own process group with waiter process for signals. * main.cxx (runner): New main function. (waiter_handler): Signal handler for waiter process. (waiter): Waiter process waitpid function. (main): Fork and run wait and runner in their own processes. --- main.cxx | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/main.cxx b/main.cxx index 23b182eb..3b88a1c8 100644 --- a/main.cxx +++ b/main.cxx @@ -36,6 +36,8 @@ extern "C" { #include #include #include +#include +#include #include #include #include @@ -330,9 +332,61 @@ setup_signals (sighandler_t handler) sigaction (SIGTERM, &sa, NULL); } +pid_t runner_pid; +int runner (int, char * const []); + +// Passes on signals to runner process. +// In practise passes signal to runner process process group, +// since run_pass() uses system() to spawn child processes, +// which makes the process ignore SIGINT during the command run. +extern "C" +void waiter_handler (int sig) +{ + // Process group is negative process id. + kill (-1 * runner_pid, sig); +} + +// Just sits there till the runner exits and then exits the same way. +void waiter() +{ + int status; + setup_signals (&waiter_handler); + while (waitpid (runner_pid, &status, 0) != runner_pid); + + // Exit as our runner child exitted. + if (WIFEXITED(status)) + exit (WEXITSTATUS(status)); + + // Or simulate as if we were killed by the same signal. + if (WIFSIGNALED(status)) + { + int sig = WTERMSIG(status); + signal (sig, SIG_DFL); + raise (sig); + } + + // Should not happen, exit as if error. + exit(-1); +} int main (int argc, char * const argv []) +{ + // Fork to make sure runner gets its own process group, while + // the waiter sits in the original process group of the shell + // and forwards any signals. + runner_pid = fork (); + if (runner_pid == 0) + return runner (argc, argv); + if (runner_pid > 0) + waiter (); + + perror ("couldn't fork"); + exit (-1); +} + +int +runner (int argc, char * const argv []) { string cmdline_script; // -e PROGRAM string script_file; // FILE @@ -847,8 +901,8 @@ main (int argc, char * const argv []) // We want a new process group so we can use kill (0, sig) to send a // signal to all children (but not the parent). As done in - // handle_interrupt (). Unless we are already the process group leader. - if (getpgrp() != getpid() && setpgrp() != 0) + // handle_interrupt (). + if (setpgrp() != 0) { const char* e = strerror (errno); if (! s.suppress_warnings) -- cgit From dc246f3c5fb0d9fdc4388e00d8ddf5d1b53a3fc8 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 31 Mar 2009 16:34:41 +0200 Subject: Add missing socket function argument descriptions. * tapsets/socket.stp: Add descriptions for proto, family and state. --- tapset/socket.stp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tapset/socket.stp b/tapset/socket.stp index 0f01b8d4..de778d7c 100644 --- a/tapset/socket.stp +++ b/tapset/socket.stp @@ -545,6 +545,7 @@ probe socket.close.return = kernel.function ("sock_release").return /** * sfunction sock_prot_num2str - Given a protocol number, return a string representation. + * @proto: The protocol number. */ function sock_prot_num2str:string (proto:long) { @@ -553,6 +554,7 @@ function sock_prot_num2str:string (proto:long) /** * sfunction sock_prot_str2num - Given a protocol name (string), return the corresponding protocol number. + * @proto: The protocol name. */ function sock_prot_str2num:long (proto:string) { @@ -563,6 +565,7 @@ function sock_prot_str2num:long (proto:string) /** * sfunction sock_fam_num2str - Given a protocol family number, return a string representation. + * @family: The family number. */ function sock_fam_num2str:string (family:long) { @@ -572,6 +575,7 @@ function sock_fam_num2str:string (family:long) /** * sfunction sock_fam_str2num - Given a protocol family name (string), return the corresponding * protocol family number. + * @family: The family name. */ function sock_fam_str2num:long (family:string) { @@ -582,6 +586,7 @@ function sock_fam_str2num:long (family:string) /** * sfunction sock_state_num2str - Given a socket state number, return a string representation. + * @state: The state number. */ function sock_state_num2str:string (state:long) { @@ -590,6 +595,7 @@ function sock_state_num2str:string (state:long) /** * sfunction sock_state_str2num - Given a socket state string, return the corresponding state number. + * @state: The state name. */ function sock_state_str2num:long (state:string) { -- cgit From 2397bb1aae49121d35cbd9f3863b4f6df202201f Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 31 Mar 2009 17:26:01 +0200 Subject: Add fake Systemtap Hackers author to tapset reference manual template. * doc/SystemTap_Tapset_Reference/tapsets.tmpl: Add authorblock. --- doc/SystemTap_Tapset_Reference/tapsets.tmpl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/SystemTap_Tapset_Reference/tapsets.tmpl b/doc/SystemTap_Tapset_Reference/tapsets.tmpl index 21706ea2..b7c0713b 100644 --- a/doc/SystemTap_Tapset_Reference/tapsets.tmpl +++ b/doc/SystemTap_Tapset_Reference/tapsets.tmpl @@ -11,6 +11,14 @@ Red Hat, Inc. and others + + + SystemTap + Hackers + + + + This documentation is free software; you can redistribute -- cgit From c5746f91b1ba8f374b4230e16cb33e1b9206ca2b Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Tue, 31 Mar 2009 11:54:26 -0400 Subject: Customize .mark -l output. * tapsets.cxx (dwarf_builder::build): Add .mark name wildcard check. Customize -l handling. * testsuite/systemtap.base/static_uprobes.exp: Test .mark name wildcard. --- tapsets.cxx | 15 +++++++++++- testsuite/systemtap.base/static_uprobes.exp | 38 ++++++++++++++++++++++++----- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/tapsets.cxx b/tapsets.cxx index 690d7e28..50ee563a 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -5806,16 +5806,29 @@ dwarf_builder::build(systemtap_session & sess, probe_arg = *((__uint64_t*)((char*)pdata->d_buf + probe_scn_offset)); if (probe_scn_offset % (sizeof(__uint64_t)*2)) probe_scn_offset = (probe_scn_offset + sizeof(__uint64_t)*2) - (probe_scn_offset % (sizeof(__uint64_t)*2)); - if (strcmp (location->components[1]->arg->tok->content.c_str(), probe_name.c_str()) != 0) + if ((strcmp (location->components[1]->arg->tok->content.c_str(), + probe_name.c_str()) == 0) + || (dw->name_has_wildcard (location->components[1]->arg->tok->content.c_str()) + && dw->function_name_matches_pattern + (probe_name.c_str(), + location->components[1]->arg->tok->content.c_str()))) + ; + else continue; const token* sv_tok = location->components[1]->arg->tok; location->components[1]->functor = TOK_STATEMENT; location->components[1]->arg = new literal_number((int)probe_arg); location->components[1]->arg->tok = sv_tok; ((literal_map_t&)parameters)[TOK_STATEMENT] = location->components[1]->arg; + dwarf_query q(sess, base, location, *dw, parameters, finished_results); q.has_mark = true; dw->query_modules(&q); + if (sess.listing_mode) + { + finished_results.back()->locations[0]->components[1]->functor = TOK_MARK; + finished_results.back()->locations[0]->components[1]->arg = new literal_string (probe_name.c_str()); + } } return; } diff --git a/testsuite/systemtap.base/static_uprobes.exp b/testsuite/systemtap.base/static_uprobes.exp index 620d5576..820626b8 100644 --- a/testsuite/systemtap.base/static_uprobes.exp +++ b/testsuite/systemtap.base/static_uprobes.exp @@ -1,5 +1,7 @@ set test "static_uprobes" +# Test miscellaneous features of .mark probes + # Compile a C program to use as the user-space probing target set sup_srcpath "[pwd]/static_uprobes.c" set sup_exepath "[pwd]/static_uprobes.x" @@ -80,6 +82,9 @@ provider static_uprobes { }; " close $fp + +# Test dtrace + if {[installtest_p]} { set dtrace $env(SYSTEMTAP_PATH)/dtrace } else { @@ -90,9 +95,9 @@ if {[catch {exec $dtrace -h -s $sup_dpath} res]} { } catch {exec rm -f $sup_dpath} if {[file exists $sup_hpath]} then { - pass "$test generating header" + pass "$test dtrace" } else { - fail "$test generating header" + fail "$test dtrace" catch {exec rm -f $sup_srcpath $sup_hpath $sup_stppath} return } @@ -133,6 +138,8 @@ if {$utrace_support_found == 0} { return } +# Run stap on executable built with dtrace generated header file + set ok 0 verbose -log "spawn stap -c $sup_exepath $sup_stppath" @@ -151,14 +158,16 @@ wait if {$ok == 5} { pass "$test C" } { fail "$test C ($ok)" } +# Test passing various C types to .mark probes + set sup_flags "$sup_flags additional_flags=-O0" set res [target_compile $srcdir/$subdir/sdt_types.c sdt_types.x executable $sup_flags] if { $res != "" } { verbose "target_compile failed: $res" 2 - fail "$test compiling -g" + fail "$test compiling types -g" return } else { - pass "$test compiling -g" + pass "$test compiling types -g" } set ok 0 @@ -176,9 +185,26 @@ expect { wait if { $ok != 0 } { - fail $fail + fail "$test $fail" +} else { + pass "$test types" +} + +# Test .mark probe wildcard matching + +set ok 0 +spawn stap -l "process(\"./sdt_types.x\").mark(\"*\")" +expect { + -timeout 180 + -re {mark\(\".*\"\)} { incr ok; exp_continue } + timeout { fail "$test C (timeout)" } + eof { } +} + +if { $ok == 45 } { + pass "$test wildcard" } else { - pass types + fail "$test wildcard ($ok)" } if { $verbose == 0 } { -- cgit From 6dfeb4e36f7339ddfafefcb69578e1b5809b6e72 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Wed, 1 Apr 2009 11:26:01 -0400 Subject: semok/badvar.stp test: add stap -p2 as for other semok tests --- testsuite/semok/badvar.stp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/testsuite/semok/badvar.stp b/testsuite/semok/badvar.stp index b3bd2d67..677187a3 100755 --- a/testsuite/semok/badvar.stp +++ b/testsuite/semok/badvar.stp @@ -1,7 +1,9 @@ -#! stap --skip-badvars +#! /bin/sh +stap -p2 --skip-badvars -e ' probe syscall.read { if ($foo == 0) printf ("Voila! It works..\n") exit () } +' -- cgit From 76eb4a5d7a17bd8c37a679590c55b94e200042d0 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Wed, 1 Apr 2009 11:30:50 -0400 Subject: PR4105: support up to 9 (up from 5) array index dimensions * runtime/map-gen.c, pmap-gen.c: Hand-expand arity 6..9 cases throughout. * testsuite/buildok/thirty.stp: New test. * testsuite/buildko/two.stp: New test. An Alan Smithee patch. --- runtime/map-gen.c | 291 ++++++++++++++++++++++++++++++++++++ runtime/pmap-gen.c | 343 +++++++++++++++++++++++++++++++++++++++++++ testsuite/buildko/two.stp | 14 ++ testsuite/buildok/thirty.stp | 49 +++++++ 4 files changed, 697 insertions(+) create mode 100644 testsuite/buildko/two.stp create mode 100644 testsuite/buildok/thirty.stp diff --git a/runtime/map-gen.c b/runtime/map-gen.c index c4bdf2c7..fdb75089 100644 --- a/runtime/map-gen.c +++ b/runtime/map-gen.c @@ -26,6 +26,14 @@ #define JOIN5x(a,b,c,d,e,f) a##_##b##c##d##e##f #define JOIN6(a,b,c,d,e,f,g) JOIN6x(a,b,c,d,e,f,g) #define JOIN6x(a,b,c,d,e,f,g) a##_##b##c##d##e##f##g +#define JOIN7(a,b,c,d,e,f,g,h) JOIN7x(a,b,c,d,e,f,g,h) +#define JOIN7x(a,b,c,d,e,f,g,h) a##_##b##c##d##e##f##g##h +#define JOIN8(a,b,c,d,e,f,g,h,i) JOIN8x(a,b,c,d,e,f,g,h,i) +#define JOIN8x(a,b,c,d,e,f,g,h,i) a##_##b##c##d##e##f##g##h##i +#define JOIN9(a,b,c,d,e,f,g,h,i,j) JOIN9x(a,b,c,d,e,f,g,h,i,j) +#define JOIN9x(a,b,c,d,e,f,g,h,i,j) a##_##b##c##d##e##f##g##h##i##j +#define JOIN10(a,b,c,d,e,f,g,h,i,j,k) JOIN10x(a,b,c,d,e,f,g,h,i,j,k) +#define JOIN10x(a,b,c,d,e,f,g,h,i,j,k) a##_##b##c##d##e##f##g##h##i##j##k #include "map.h" @@ -162,6 +170,113 @@ #define KEY5_HASH JOIN(KEY5NAME,hash) #endif /* defined(KEY5_TYPE) */ +#if defined (KEY6_TYPE) +#undef KEY_ARITY +#define KEY_ARITY 6 +#if KEY6_TYPE == STRING +#define KEY6TYPE char* +#define KEY6NAME str +#define KEY6N s +#define KEY6STOR char key6[MAP_STRING_LENGTH] +#define KEY6CPY(m) str_copy(m->key6, key6) +#else +#define KEY6TYPE int64_t +#define KEY6NAME int64 +#define KEY6N i +#define KEY6STOR int64_t key6 +#define KEY6CPY(m) m->key6=key6 +#endif +#define KEY6_EQ_P JOIN(KEY6NAME,eq_p) +#define KEY6_HASH JOIN(KEY6NAME,hash) +#endif /* defined(KEY6_TYPE) */ + +#if defined (KEY7_TYPE) +#undef KEY_ARITY +#define KEY_ARITY 7 +#if KEY7_TYPE == STRING +#define KEY7TYPE char* +#define KEY7NAME str +#define KEY7N s +#define KEY7STOR char key7[MAP_STRING_LENGTH] +#define KEY7CPY(m) str_copy(m->key7, key7) +#else +#define KEY7TYPE int64_t +#define KEY7NAME int64 +#define KEY7N i +#define KEY7STOR int64_t key7 +#define KEY7CPY(m) m->key7=key7 +#endif +#define KEY7_EQ_P JOIN(KEY7NAME,eq_p) +#define KEY7_HASH JOIN(KEY7NAME,hash) +#endif /* defined(KEY7_TYPE) */ + +#if defined (KEY7_TYPE) +#undef KEY_ARITY +#define KEY_ARITY 7 +#if KEY7_TYPE == STRING +#define KEY7TYPE char* +#define KEY7NAME str +#define KEY7N s +#define KEY7STOR char key7[MAP_STRING_LENGTH] +#define KEY7CPY(m) str_copy(m->key7, key7) +#else +#define KEY7TYPE int64_t +#define KEY7NAME int64 +#define KEY7N i +#define KEY7STOR int64_t key7 +#define KEY7CPY(m) m->key7=key7 +#endif +#define KEY7_EQ_P JOIN(KEY7NAME,eq_p) +#define KEY7_HASH JOIN(KEY7NAME,hash) +#endif /* defined(KEY7_TYPE) */ + +#if defined (KEY8_TYPE) +#undef KEY_ARITY +#define KEY_ARITY 8 +#if KEY8_TYPE == STRING +#define KEY8TYPE char* +#define KEY8NAME str +#define KEY8N s +#define KEY8STOR char key8[MAP_STRING_LENGTH] +#define KEY8CPY(m) str_copy(m->key8, key8) +#else +#define KEY8TYPE int64_t +#define KEY8NAME int64 +#define KEY8N i +#define KEY8STOR int64_t key8 +#define KEY8CPY(m) m->key8=key8 +#endif +#define KEY8_EQ_P JOIN(KEY8NAME,eq_p) +#define KEY8_HASH JOIN(KEY8NAME,hash) +#endif /* defined(KEY8_TYPE) */ + +#if defined (KEY9_TYPE) +#undef KEY_ARITY +#define KEY_ARITY 9 +#if KEY9_TYPE == STRING +#define KEY9TYPE char* +#define KEY9NAME str +#define KEY9N s +#define KEY9STOR char key9[MAP_STRING_LENGTH] +#define KEY9CPY(m) str_copy(m->key9, key9) +#else +#define KEY9TYPE int64_t +#define KEY9NAME int64 +#define KEY9N i +#define KEY9STOR int64_t key9 +#define KEY9CPY(m) m->key9=key9 +#endif +#define KEY9_EQ_P JOIN(KEY9NAME,eq_p) +#define KEY9_HASH JOIN(KEY9NAME,hash) +#endif /* defined(KEY9_TYPE) */ + +/* Not so many, cowboy! */ +#if defined (KEY10_TYPE) +#error "excessive key arity == too many array indexes" +#endif + + + #if KEY_ARITY == 1 #define KEYSYM(x) JOIN2(x,KEY1N,VALN) #define ALLKEYS(x) x##1 @@ -187,6 +302,26 @@ #define ALLKEYS(x) x##1, x##2, x##3, x##4, x##5 #define ALLKEYSD(x) KEY1TYPE x##1, KEY2TYPE x##2, KEY3TYPE x##3, KEY4TYPE x##4, KEY5TYPE x##5 #define KEYCPY(m) {KEY1CPY(m);KEY2CPY(m);KEY3CPY(m);KEY4CPY(m);KEY5CPY(m);} +#elif KEY_ARITY == 6 +#define KEYSYM(x) JOIN7(x,KEY1N,KEY2N,KEY3N,KEY4N,KEY5N,KEY6N,VALN) +#define ALLKEYS(x) x##1, x##2, x##3, x##4, x##5, x##6 +#define ALLKEYSD(x) KEY1TYPE x##1, KEY2TYPE x##2, KEY3TYPE x##3, KEY4TYPE x##4, KEY5TYPE x##5, KEY6TYPE x##6 +#define KEYCPY(m) {KEY1CPY(m);KEY2CPY(m);KEY3CPY(m);KEY4CPY(m);KEY5CPY(m);KEY6CPY(m);} +#elif KEY_ARITY == 7 +#define KEYSYM(x) JOIN8(x,KEY1N,KEY2N,KEY3N,KEY4N,KEY5N,KEY6N,KEY7N,VALN) +#define ALLKEYS(x) x##1, x##2, x##3, x##4, x##5, x##6, x##7 +#define ALLKEYSD(x) KEY1TYPE x##1, KEY2TYPE x##2, KEY3TYPE x##3, KEY4TYPE x##4, KEY5TYPE x##5, KEY6TYPE x##6, KEY7TYPE x##7 +#define KEYCPY(m) {KEY1CPY(m);KEY2CPY(m);KEY3CPY(m);KEY4CPY(m);KEY5CPY(m);KEY6CPY(m);KEY7CPY(m);} +#elif KEY_ARITY == 8 +#define KEYSYM(x) JOIN9(x,KEY1N,KEY2N,KEY3N,KEY4N,KEY5N,KEY6N,KEY7N,KEY8N,VALN) +#define ALLKEYS(x) x##1, x##2, x##3, x##4, x##5, x##6, x##7, x##8 +#define ALLKEYSD(x) KEY1TYPE x##1, KEY2TYPE x##2, KEY3TYPE x##3, KEY4TYPE x##4, KEY5TYPE x##5, KEY6TYPE x##6, KEY7TYPE x##7, KEY8TYPE x##8 +#define KEYCPY(m) {KEY1CPY(m);KEY2CPY(m);KEY3CPY(m);KEY4CPY(m);KEY5CPY(m);KEY6CPY(m);KEY7CPY(m);KEY8CPY(m);} +#elif KEY_ARITY == 9 +#define KEYSYM(x) JOIN10(x,KEY1N,KEY2N,KEY3N,KEY4N,KEY5N,KEY6N,KEY7N,KEY8N,KEY9N,VALN) +#define ALLKEYS(x) x##1, x##2, x##3, x##4, x##5, x##6, x##7, x##8, x##9 +#define ALLKEYSD(x) KEY1TYPE x##1, KEY2TYPE x##2, KEY3TYPE x##3, KEY4TYPE x##4, KEY5TYPE x##5, KEY6TYPE x##6, KEY7TYPE x##7, KEY8TYPE x##8, KEY9TYPE x##9 +#define KEYCPY(m) {KEY1CPY(m);KEY2CPY(m);KEY3CPY(m);KEY4CPY(m);KEY5CPY(m);KEY6CPY(m);KEY7CPY(m);KEY8CPY(m);KEY9CPY(m);} #endif /* */ @@ -208,6 +343,18 @@ struct KEYSYM(map_node) { KEY4STOR; #if KEY_ARITY > 4 KEY5STOR; +#if KEY_ARITY > 5 + KEY6STOR; +#if KEY_ARITY > 6 + KEY7STOR; +#if KEY_ARITY > 7 + KEY8STOR; +#if KEY_ARITY > 8 + KEY9STOR; +#endif +#endif +#endif +#endif #endif #endif #endif @@ -266,6 +413,34 @@ static key_data KEYSYM(map_get_key) (struct map_node *mn, int n, int *type) if (type) *type = type_to_enum(KEY5TYPE); break; +#if KEY_ARITY > 5 + case 6: + ptr = (key_data)m->key6; + if (type) + *type = type_to_enum(KEY6TYPE); + break; +#if KEY_ARITY > 6 + case 7: + ptr = (key_data)m->key7; + if (type) + *type = type_to_enum(KEY7TYPE); + break; +#if KEY_ARITY > 7 + case 8: + ptr = (key_data)m->key8; + if (type) + *type = type_to_enum(KEY8TYPE); + break; +#if KEY_ARITY > 8 + case 9: + ptr = (key_data)m->key9; + if (type) + *type = type_to_enum(KEY9TYPE); + break; +#endif +#endif +#endif +#endif #endif #endif #endif @@ -309,6 +484,34 @@ static unsigned int KEYSYM(keycheck) (ALLKEYSD(key)) if (key5 == NULL) return 0; #endif + +#if KEY_ARITY > 5 +#if KEY6_TYPE == STRING + if (key6 == NULL) + return 0; +#endif + +#if KEY_ARITY > 6 +#if KEY7_TYPE == STRING + if (key7 == NULL) + return 0; +#endif + +#if KEY_ARITY > 7 +#if KEY8_TYPE == STRING + if (key8 == NULL) + return 0; +#endif + +#if KEY_ARITY > 8 +#if KEY9_TYPE == STRING + if (key9 == NULL) + return 0; +#endif +#endif +#endif +#endif +#endif #endif #endif #endif @@ -327,6 +530,18 @@ static unsigned int KEYSYM(hash) (ALLKEYSD(key)) hash ^= KEY4_HASH(key4); #if KEY_ARITY > 4 hash ^= KEY5_HASH(key5); +#if KEY_ARITY > 5 + hash ^= KEY6_HASH(key6); +#if KEY_ARITY > 6 + hash ^= KEY7_HASH(key7); +#if KEY_ARITY > 7 + hash ^= KEY8_HASH(key8); +#if KEY_ARITY > 8 + hash ^= KEY9_HASH(key9); +#endif +#endif +#endif +#endif #endif #endif #endif @@ -411,6 +626,18 @@ static int KEYSYM(__stp_map_set) (MAP map, ALLKEYSD(key), VSTYPE val, int add) && KEY4_EQ_P(n->key4, key4) #if KEY_ARITY > 4 && KEY5_EQ_P(n->key5, key5) +#if KEY_ARITY > 5 + && KEY6_EQ_P(n->key6, key6) +#if KEY_ARITY > 6 + && KEY7_EQ_P(n->key7, key7) +#if KEY_ARITY > 7 + && KEY8_EQ_P(n->key8, key8) +#if KEY_ARITY > 8 + && KEY9_EQ_P(n->key9, key9) +#endif +#endif +#endif +#endif #endif #endif #endif @@ -462,6 +689,18 @@ static VALTYPE KEYSYM(_stp_map_get) (MAP map, ALLKEYSD(key)) && KEY4_EQ_P(n->key4, key4) #if KEY_ARITY > 4 && KEY5_EQ_P(n->key5, key5) +#if KEY_ARITY > 5 + && KEY6_EQ_P(n->key6, key6) +#if KEY_ARITY > 6 + && KEY7_EQ_P(n->key7, key7) +#if KEY_ARITY > 7 + && KEY8_EQ_P(n->key8, key8) +#if KEY_ARITY > 8 + && KEY9_EQ_P(n->key9, key9) +#endif +#endif +#endif +#endif #endif #endif #endif @@ -498,6 +737,18 @@ static int KEYSYM(_stp_map_del) (MAP map, ALLKEYSD(key)) && KEY4_EQ_P(n->key4, key4) #if KEY_ARITY > 4 && KEY5_EQ_P(n->key5, key5) +#if KEY_ARITY > 5 + && KEY6_EQ_P(n->key6, key6) +#if KEY_ARITY > 6 + && KEY7_EQ_P(n->key7, key7) +#if KEY_ARITY > 7 + && KEY8_EQ_P(n->key8, key8) +#if KEY_ARITY > 8 + && KEY9_EQ_P(n->key9, key9) +#endif +#endif +#endif +#endif #endif #endif #endif @@ -535,6 +786,18 @@ static int KEYSYM(_stp_map_exists) (MAP map, ALLKEYSD(key)) && KEY4_EQ_P(n->key4, key4) #if KEY_ARITY > 4 && KEY5_EQ_P(n->key5, key5) +#if KEY_ARITY > 5 + && KEY6_EQ_P(n->key6, key6) +#if KEY_ARITY > 6 + && KEY7_EQ_P(n->key7, key7) +#if KEY_ARITY > 7 + && KEY8_EQ_P(n->key8, key8) +#if KEY_ARITY > 8 + && KEY9_EQ_P(n->key9, key9) +#endif +#endif +#endif +#endif #endif #endif #endif @@ -582,6 +845,34 @@ static int KEYSYM(_stp_map_exists) (MAP map, ALLKEYSD(key)) #undef KEY5STOR #undef KEY5CPY +#undef KEY6NAME +#undef KEY6N +#undef KEY6TYPE +#undef KEY6_TYPE +#undef KEY6STOR +#undef KEY6CPY + +#undef KEY7NAME +#undef KEY7N +#undef KEY7TYPE +#undef KEY7_TYPE +#undef KEY7STOR +#undef KEY7CPY + +#undef KEY8NAME +#undef KEY8N +#undef KEY8TYPE +#undef KEY8_TYPE +#undef KEY8STOR +#undef KEY8CPY + +#undef KEY9NAME +#undef KEY9N +#undef KEY9TYPE +#undef KEY9_TYPE +#undef KEY9STOR +#undef KEY9CPY + #undef KEY_ARITY #undef ALLKEYS #undef ALLKEYSD diff --git a/runtime/pmap-gen.c b/runtime/pmap-gen.c index 86c3dc42..c95adc6b 100644 --- a/runtime/pmap-gen.c +++ b/runtime/pmap-gen.c @@ -26,6 +26,14 @@ #define JOIN5x(a,b,c,d,e,f) a##_##b##c##d##e##f #define JOIN6(a,b,c,d,e,f,g) JOIN6x(a,b,c,d,e,f,g) #define JOIN6x(a,b,c,d,e,f,g) a##_##b##c##d##e##f##g +#define JOIN7(a,b,c,d,e,f,g,h) JOIN7x(a,b,c,d,e,f,g,h) +#define JOIN7x(a,b,c,d,e,f,g,h) a##_##b##c##d##e##f##g##h +#define JOIN8(a,b,c,d,e,f,g,h,i) JOIN8x(a,b,c,d,e,f,g,h,i) +#define JOIN8x(a,b,c,d,e,f,g,h,i) a##_##b##c##d##e##f##g##h##i +#define JOIN9(a,b,c,d,e,f,g,h,i,j) JOIN9x(a,b,c,d,e,f,g,h,i,j) +#define JOIN9x(a,b,c,d,e,f,g,h,i,j) a##_##b##c##d##e##f##g##h##i##j +#define JOIN10(a,b,c,d,e,f,g,h,i,j,k) JOIN10x(a,b,c,d,e,f,g,h,i,j,k) +#define JOIN10x(a,b,c,d,e,f,g,h,i,j,k) a##_##b##c##d##e##f##g##h##i##j##k #include "map.h" @@ -162,6 +170,113 @@ #define KEY5_HASH JOIN(KEY5NAME,hash) #endif /* defined(KEY5_TYPE) */ +#if defined (KEY6_TYPE) +#undef KEY_ARITY +#define KEY_ARITY 6 +#if KEY6_TYPE == STRING +#define KEY6TYPE char* +#define KEY6NAME str +#define KEY6N s +#define KEY6STOR char key6[MAP_STRING_LENGTH] +#define KEY6CPY(m) str_copy(m->key6, key6) +#else +#define KEY6TYPE int64_t +#define KEY6NAME int64 +#define KEY6N i +#define KEY6STOR int64_t key6 +#define KEY6CPY(m) m->key6=key6 +#endif +#define KEY6_EQ_P JOIN(KEY6NAME,eq_p) +#define KEY6_HASH JOIN(KEY6NAME,hash) +#endif /* defined(KEY6_TYPE) */ + +#if defined (KEY7_TYPE) +#undef KEY_ARITY +#define KEY_ARITY 7 +#if KEY7_TYPE == STRING +#define KEY7TYPE char* +#define KEY7NAME str +#define KEY7N s +#define KEY7STOR char key7[MAP_STRING_LENGTH] +#define KEY7CPY(m) str_copy(m->key7, key7) +#else +#define KEY7TYPE int64_t +#define KEY7NAME int64 +#define KEY7N i +#define KEY7STOR int64_t key7 +#define KEY7CPY(m) m->key7=key7 +#endif +#define KEY7_EQ_P JOIN(KEY7NAME,eq_p) +#define KEY7_HASH JOIN(KEY7NAME,hash) +#endif /* defined(KEY7_TYPE) */ + +#if defined (KEY7_TYPE) +#undef KEY_ARITY +#define KEY_ARITY 7 +#if KEY7_TYPE == STRING +#define KEY7TYPE char* +#define KEY7NAME str +#define KEY7N s +#define KEY7STOR char key7[MAP_STRING_LENGTH] +#define KEY7CPY(m) str_copy(m->key7, key7) +#else +#define KEY7TYPE int64_t +#define KEY7NAME int64 +#define KEY7N i +#define KEY7STOR int64_t key7 +#define KEY7CPY(m) m->key7=key7 +#endif +#define KEY7_EQ_P JOIN(KEY7NAME,eq_p) +#define KEY7_HASH JOIN(KEY7NAME,hash) +#endif /* defined(KEY7_TYPE) */ + +#if defined (KEY8_TYPE) +#undef KEY_ARITY +#define KEY_ARITY 8 +#if KEY8_TYPE == STRING +#define KEY8TYPE char* +#define KEY8NAME str +#define KEY8N s +#define KEY8STOR char key8[MAP_STRING_LENGTH] +#define KEY8CPY(m) str_copy(m->key8, key8) +#else +#define KEY8TYPE int64_t +#define KEY8NAME int64 +#define KEY8N i +#define KEY8STOR int64_t key8 +#define KEY8CPY(m) m->key8=key8 +#endif +#define KEY8_EQ_P JOIN(KEY8NAME,eq_p) +#define KEY8_HASH JOIN(KEY8NAME,hash) +#endif /* defined(KEY8_TYPE) */ + +#if defined (KEY9_TYPE) +#undef KEY_ARITY +#define KEY_ARITY 9 +#if KEY9_TYPE == STRING +#define KEY9TYPE char* +#define KEY9NAME str +#define KEY9N s +#define KEY9STOR char key9[MAP_STRING_LENGTH] +#define KEY9CPY(m) str_copy(m->key9, key9) +#else +#define KEY9TYPE int64_t +#define KEY9NAME int64 +#define KEY9N i +#define KEY9STOR int64_t key9 +#define KEY9CPY(m) m->key9=key9 +#endif +#define KEY9_EQ_P JOIN(KEY9NAME,eq_p) +#define KEY9_HASH JOIN(KEY9NAME,hash) +#endif /* defined(KEY9_TYPE) */ + +/* Not so many, cowboy! */ +#if defined (KEY10_TYPE) +#error "excessive key arity == too many array indexes" +#endif + + + #if KEY_ARITY == 1 #define KEYSYM(x) JOIN2(x,KEY1N,VALN) #define ALLKEYS(x) x##1 @@ -187,6 +302,26 @@ #define ALLKEYS(x) x##1, x##2, x##3, x##4, x##5 #define ALLKEYSD(x) KEY1TYPE x##1, KEY2TYPE x##2, KEY3TYPE x##3, KEY4TYPE x##4, KEY5TYPE x##5 #define KEYCPY(m) {KEY1CPY(m);KEY2CPY(m);KEY3CPY(m);KEY4CPY(m);KEY5CPY(m);} +#elif KEY_ARITY == 6 +#define KEYSYM(x) JOIN7(x,KEY1N,KEY2N,KEY3N,KEY4N,KEY5N,KEY6N,VALN) +#define ALLKEYS(x) x##1, x##2, x##3, x##4, x##5, x##6 +#define ALLKEYSD(x) KEY1TYPE x##1, KEY2TYPE x##2, KEY3TYPE x##3, KEY4TYPE x##4, KEY5TYPE x##5, KEY6TYPE x##6 +#define KEYCPY(m) {KEY1CPY(m);KEY2CPY(m);KEY3CPY(m);KEY4CPY(m);KEY5CPY(m);KEY6CPY(m);} +#elif KEY_ARITY == 7 +#define KEYSYM(x) JOIN8(x,KEY1N,KEY2N,KEY3N,KEY4N,KEY5N,KEY6N,KEY7N,VALN) +#define ALLKEYS(x) x##1, x##2, x##3, x##4, x##5, x##6, x##7 +#define ALLKEYSD(x) KEY1TYPE x##1, KEY2TYPE x##2, KEY3TYPE x##3, KEY4TYPE x##4, KEY5TYPE x##5, KEY6TYPE x##6, KEY7TYPE x##7 +#define KEYCPY(m) {KEY1CPY(m);KEY2CPY(m);KEY3CPY(m);KEY4CPY(m);KEY5CPY(m);KEY6CPY(m);KEY7CPY(m);} +#elif KEY_ARITY == 8 +#define KEYSYM(x) JOIN9(x,KEY1N,KEY2N,KEY3N,KEY4N,KEY5N,KEY6N,KEY7N,KEY8N,VALN) +#define ALLKEYS(x) x##1, x##2, x##3, x##4, x##5, x##6, x##7, x##8 +#define ALLKEYSD(x) KEY1TYPE x##1, KEY2TYPE x##2, KEY3TYPE x##3, KEY4TYPE x##4, KEY5TYPE x##5, KEY6TYPE x##6, KEY7TYPE x##7, KEY8TYPE x##8 +#define KEYCPY(m) {KEY1CPY(m);KEY2CPY(m);KEY3CPY(m);KEY4CPY(m);KEY5CPY(m);KEY6CPY(m);KEY7CPY(m);KEY8CPY(m);} +#elif KEY_ARITY == 9 +#define KEYSYM(x) JOIN10(x,KEY1N,KEY2N,KEY3N,KEY4N,KEY5N,KEY6N,KEY7N,KEY8N,KEY9N,VALN) +#define ALLKEYS(x) x##1, x##2, x##3, x##4, x##5, x##6, x##7, x##8, x##9 +#define ALLKEYSD(x) KEY1TYPE x##1, KEY2TYPE x##2, KEY3TYPE x##3, KEY4TYPE x##4, KEY5TYPE x##5, KEY6TYPE x##6, KEY7TYPE x##7, KEY8TYPE x##8, KEY9TYPE x##9 +#define KEYCPY(m) {KEY1CPY(m);KEY2CPY(m);KEY3CPY(m);KEY4CPY(m);KEY5CPY(m);KEY6CPY(m);KEY7CPY(m);KEY8CPY(m);KEY9CPY(m);} #endif /* */ @@ -208,6 +343,18 @@ struct KEYSYM(pmap_node) { KEY4STOR; #if KEY_ARITY > 4 KEY5STOR; +#if KEY_ARITY > 5 + KEY6STOR; +#if KEY_ARITY > 6 + KEY7STOR; +#if KEY_ARITY > 7 + KEY8STOR; +#if KEY_ARITY > 8 + KEY9STOR; +#endif +#endif +#endif +#endif #endif #endif #endif @@ -238,6 +385,18 @@ static int KEYSYM(pmap_key_cmp) (struct map_node *m1, struct map_node *m2) && KEY4_EQ_P(n1->key4, n2->key4) #if KEY_ARITY > 4 && KEY5_EQ_P(n1->key5, n2->key5) +#if KEY_ARITY > 5 + && KEY6_EQ_P(n1->key6, n2->key6) +#if KEY_ARITY > 6 + && KEY7_EQ_P(n1->key7, n2->key7) +#if KEY_ARITY > 7 + && KEY8_EQ_P(n1->key8, n2->key8) +#if KEY_ARITY > 8 + && KEY9_EQ_P(n1->key9, n2->key9) +#endif +#endif +#endif +#endif #endif #endif #endif @@ -282,6 +441,34 @@ static void KEYSYM(pmap_copy_keys) (struct map_node *m1, struct map_node *m2) #else dst->key5 = src->key5; #endif +#if KEY_ARITY > 5 +#if KEY6_TYPE == STRING + str_copy (dst->key6, src->key6); +#else + dst->key6 = src->key6; +#endif +#if KEY_ARITY > 6 +#if KEY7_TYPE == STRING + str_copy (dst->key7, src->key7); +#else + dst->key7 = src->key7; +#endif +#if KEY_ARITY > 7 +#if KEY8_TYPE == STRING + str_copy (dst->key8, src->key8); +#else + dst->key8 = src->key8; +#endif +#if KEY_ARITY > 8 +#if KEY9_TYPE == STRING + str_copy (dst->key9, src->key9); +#else + dst->key9 = src->key9; +#endif +#endif +#endif +#endif +#endif #endif #endif #endif @@ -330,6 +517,34 @@ static key_data KEYSYM(pmap_get_key) (struct map_node *mn, int n, int *type) if (type) *type = type_to_enum(KEY5TYPE); break; +#if KEY_ARITY > 5 + case 6: + ptr = (key_data)m->key6; + if (type) + *type = type_to_enum(KEY6TYPE); + break; +#if KEY_ARITY > 6 + case 7: + ptr = (key_data)m->key7; + if (type) + *type = type_to_enum(KEY7TYPE); + break; +#if KEY_ARITY > 7 + case 8: + ptr = (key_data)m->key8; + if (type) + *type = type_to_enum(KEY8TYPE); + break; +#if KEY_ARITY > 8 + case 9: + ptr = (key_data)m->key9; + if (type) + *type = type_to_enum(KEY9TYPE); + break; +#endif +#endif +#endif +#endif #endif #endif #endif @@ -373,6 +588,34 @@ static unsigned int KEYSYM(pkeycheck) (ALLKEYSD(key)) if (key5 == NULL) return 0; #endif + +#if KEY_ARITY > 5 +#if KEY6_TYPE == STRING + if (key6 == NULL) + return 0; +#endif + +#if KEY_ARITY > 6 +#if KEY7_TYPE == STRING + if (key7 == NULL) + return 0; +#endif + +#if KEY_ARITY > 7 +#if KEY8_TYPE == STRING + if (key8 == NULL) + return 0; +#endif + +#if KEY_ARITY > 8 +#if KEY9_TYPE == STRING + if (key9 == NULL) + return 0; +#endif +#endif +#endif +#endif +#endif #endif #endif #endif @@ -391,6 +634,18 @@ static unsigned int KEYSYM(phash) (ALLKEYSD(key)) hash ^= KEY4_HASH(key4); #if KEY_ARITY > 4 hash ^= KEY5_HASH(key5); +#if KEY_ARITY > 5 + hash ^= KEY6_HASH(key6); +#if KEY_ARITY > 6 + hash ^= KEY7_HASH(key7); +#if KEY_ARITY > 7 + hash ^= KEY8_HASH(key8); +#if KEY_ARITY > 8 + hash ^= KEY9_HASH(key9); +#endif +#endif +#endif +#endif #endif #endif #endif @@ -504,6 +759,18 @@ static int KEYSYM(__stp_pmap_set) (MAP map, ALLKEYSD(key), VSTYPE val, int add) && KEY4_EQ_P(n->key4, key4) #if KEY_ARITY > 4 && KEY5_EQ_P(n->key5, key5) +#if KEY_ARITY > 5 + && KEY6_EQ_P(n->key6, key6) +#if KEY_ARITY > 6 + && KEY7_EQ_P(n->key7, key7) +#if KEY_ARITY > 7 + && KEY8_EQ_P(n->key8, key8) +#if KEY_ARITY > 8 + && KEY9_EQ_P(n->key9, key9) +#endif +#endif +#endif +#endif #endif #endif #endif @@ -587,6 +854,18 @@ static VALTYPE KEYSYM(_stp_pmap_get_cpu) (PMAP pmap, ALLKEYSD(key)) && KEY4_EQ_P(n->key4, key4) #if KEY_ARITY > 4 && KEY5_EQ_P(n->key5, key5) +#if KEY_ARITY > 5 + && KEY6_EQ_P(n->key6, key6) +#if KEY_ARITY > 6 + && KEY7_EQ_P(n->key7, key7) +#if KEY_ARITY > 7 + && KEY8_EQ_P(n->key8, key8) +#if KEY_ARITY > 8 + && KEY9_EQ_P(n->key9, key9) +#endif +#endif +#endif +#endif #endif #endif #endif @@ -637,6 +916,18 @@ static VALTYPE KEYSYM(_stp_pmap_get) (PMAP pmap, ALLKEYSD(key)) && KEY4_EQ_P(n->key4, key4) #if KEY_ARITY > 4 && KEY5_EQ_P(n->key5, key5) +#if KEY_ARITY > 5 + && KEY6_EQ_P(n->key6, key6) +#if KEY_ARITY > 6 + && KEY7_EQ_P(n->key7, key7) +#if KEY_ARITY > 7 + && KEY8_EQ_P(n->key8, key8) +#if KEY_ARITY > 8 + && KEY9_EQ_P(n->key9, key9) +#endif +#endif +#endif +#endif #endif #endif #endif @@ -669,6 +960,18 @@ static VALTYPE KEYSYM(_stp_pmap_get) (PMAP pmap, ALLKEYSD(key)) && KEY4_EQ_P(n->key4, key4) #if KEY_ARITY > 4 && KEY5_EQ_P(n->key5, key5) +#if KEY_ARITY > 5 + && KEY6_EQ_P(n->key6, key6) +#if KEY_ARITY > 6 + && KEY7_EQ_P(n->key7, key7) +#if KEY_ARITY > 7 + && KEY8_EQ_P(n->key8, key8) +#if KEY_ARITY > 8 + && KEY9_EQ_P(n->key9, key9) +#endif +#endif +#endif +#endif #endif #endif #endif @@ -723,6 +1026,18 @@ static int KEYSYM(__stp_pmap_del) (MAP map, ALLKEYSD(key)) && KEY4_EQ_P(n->key4, key4) #if KEY_ARITY > 4 && KEY5_EQ_P(n->key5, key5) +#if KEY_ARITY > 5 + && KEY6_EQ_P(n->key6, key6) +#if KEY_ARITY > 6 + && KEY7_EQ_P(n->key7, key7) +#if KEY_ARITY > 7 + && KEY8_EQ_P(n->key8, key8) +#if KEY_ARITY > 8 + && KEY9_EQ_P(n->key9, key9) +#endif +#endif +#endif +#endif #endif #endif #endif @@ -788,6 +1103,34 @@ static int KEYSYM(_stp_pmap_del) (PMAP pmap, ALLKEYSD(key)) #undef KEY5STOR #undef KEY5CPY +#undef KEY6NAME +#undef KEY6N +#undef KEY6TYPE +#undef KEY6_TYPE +#undef KEY6STOR +#undef KEY6CPY + +#undef KEY7NAME +#undef KEY7N +#undef KEY7TYPE +#undef KEY7_TYPE +#undef KEY7STOR +#undef KEY7CPY + +#undef KEY8NAME +#undef KEY8N +#undef KEY8TYPE +#undef KEY8_TYPE +#undef KEY8STOR +#undef KEY8CPY + +#undef KEY9NAME +#undef KEY9N +#undef KEY9TYPE +#undef KEY9_TYPE +#undef KEY9STOR +#undef KEY9CPY + #undef KEY_ARITY #undef ALLKEYS #undef ALLKEYSD diff --git a/testsuite/buildko/two.stp b/testsuite/buildko/two.stp new file mode 100644 index 00000000..25350dc0 --- /dev/null +++ b/testsuite/buildko/two.stp @@ -0,0 +1,14 @@ +#! stap -p4 + +# tests overwide arrays +global a10 +global b10 +global c10 +global d10 + +probe begin { + a10[0,"a",0,"a",0,"a",0,"a",0,"a"]="a"; + b10["b",0,"b",0,"b",0,"b",0,"b",0]=0; + c10[0,"a",0,"a",0,"a",0,"a",0,"a"]<<<0; + d10["b",0,"b",0,"b",0,"b",0,"b",0]<<<0; +} diff --git a/testsuite/buildok/thirty.stp b/testsuite/buildok/thirty.stp new file mode 100644 index 00000000..042bae56 --- /dev/null +++ b/testsuite/buildok/thirty.stp @@ -0,0 +1,49 @@ +#! stap -p4 + +# tests wide arrays +global a1, a2, a3, a4, a5, a6, a7, a8, a9 +global b1, b2, b3, b4, b5, b6, b7, b8, b9 +global c1, c2, c3, c4, c5, c6, c7, c8, c9 +global d1, d2, d3, d4, d5, d6, d7, d8, d9 + +probe begin { + a1[0]="a"; + a2[0,"a"]="a"; + a3[0,"a",0]="a"; + a4[0,"a",0,"a"]="a"; + a5[0,"a",0,"a",0]="a"; + a6[0,"a",0,"a",0,"a"]="a"; + a7[0,"a",0,"a",0,"a",0]="a"; + a8[0,"a",0,"a",0,"a",0,"a"]="a"; + a9[0,"a",0,"a",0,"a",0,"a",0]="a"; + + b1["b"]=0; + b2["b",0]=0; + b3["b",0,"b"]=0; + b4["b",0,"b",0]=0; + b5["b",0,"b",0,"b"]=0; + b6["b",0,"b",0,"b",0]=0; + b7["b",0,"b",0,"b",0,"b"]=0; + b8["b",0,"b",0,"b",0,"b",0]=0; + b9["b",0,"b",0,"b",0,"b",0,"b"]=0; + + c1[0]<<<0; + c2[0,"a"]<<<0; + c3[0,"a",0]<<<0; + c4[0,"a",0,"a"]<<<0; + c5[0,"a",0,"a",0]<<<0; + c6[0,"a",0,"a",0,"a"]<<<0; + c7[0,"a",0,"a",0,"a",0]<<<0; + c8[0,"a",0,"a",0,"a",0,"a"]<<<0; + c9[0,"a",0,"a",0,"a",0,"a",0]<<<0; + + d1["b"]<<<0; + d2["b",0]<<<0; + d3["b",0,"b"]<<<0; + d4["b",0,"b",0]<<<0; + d5["b",0,"b",0,"b"]<<<0; + d6["b",0,"b",0,"b",0]<<<0; + d7["b",0,"b",0,"b",0,"b"]<<<0; + d8["b",0,"b",0,"b",0,"b",0]<<<0; + d9["b",0,"b",0,"b",0,"b",0,"b"]<<<0; +} -- cgit From a63eb2802d09a6e004173cfbbb0bb9fdf8b486b9 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 1 Apr 2009 12:25:14 +0200 Subject: context.exp: log which subtest is being sourced. --- testsuite/systemtap.context/context.exp | 1 + 1 file changed, 1 insertion(+) diff --git a/testsuite/systemtap.context/context.exp b/testsuite/systemtap.context/context.exp index 010db445..cec09b29 100644 --- a/testsuite/systemtap.context/context.exp +++ b/testsuite/systemtap.context/context.exp @@ -80,6 +80,7 @@ if {[build_modules] == 0} { } foreach test $testlist { + send_log "sourcing: $srcdir/$subdir/$test.tcl\n" source $srcdir/$subdir/$test.tcl } -- cgit From f34b7eea333adc0bc9dc8e51445c2bbc39e9bc82 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 1 Apr 2009 12:31:50 +0200 Subject: testsuite/systemtap.context/*.tcl: Don't wait 4 whole minutes for timeout. --- testsuite/systemtap.context/args.tcl | 2 +- testsuite/systemtap.context/backtrace.tcl | 2 +- testsuite/systemtap.context/num_args.tcl | 2 +- testsuite/systemtap.context/pid.tcl | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/testsuite/systemtap.context/args.tcl b/testsuite/systemtap.context/args.tcl index 7cb79cdf..cffaeaef 100644 --- a/testsuite/systemtap.context/args.tcl +++ b/testsuite/systemtap.context/args.tcl @@ -1,6 +1,6 @@ spawn stap $srcdir/$subdir/args.stp expect { - -timeout 240 + -timeout 60 "READY" { exec echo 1 > /proc/stap_test_cmd expect { diff --git a/testsuite/systemtap.context/backtrace.tcl b/testsuite/systemtap.context/backtrace.tcl index ca60c369..6edda812 100644 --- a/testsuite/systemtap.context/backtrace.tcl +++ b/testsuite/systemtap.context/backtrace.tcl @@ -8,7 +8,7 @@ set m6 0 spawn stap -DMAXSTRINGLEN=256 $srcdir/$subdir/backtrace.stp #exp_internal 1 expect { - -timeout 240 + -timeout 60 "Systemtap probe: begin\r\n" { pass "backtrace of begin probe" exec echo 0 > /proc/stap_test_cmd diff --git a/testsuite/systemtap.context/num_args.tcl b/testsuite/systemtap.context/num_args.tcl index 7d12b433..62ac8dd3 100644 --- a/testsuite/systemtap.context/num_args.tcl +++ b/testsuite/systemtap.context/num_args.tcl @@ -3,7 +3,7 @@ foreach arglist $arglists { set tag [concat numeric $arglist] eval spawn stap $arglist $srcdir/$subdir/num_args.stp expect { - -timeout 240 + -timeout 60 "READY" { exec echo 1 > /proc/stap_test_cmd expect { diff --git a/testsuite/systemtap.context/pid.tcl b/testsuite/systemtap.context/pid.tcl index a2c091f1..70a87345 100644 --- a/testsuite/systemtap.context/pid.tcl +++ b/testsuite/systemtap.context/pid.tcl @@ -2,7 +2,7 @@ set tests [list execname pexecname pid ppid tid uid euid gid egid] spawn stap $srcdir/$subdir/pid.stp #exp_internal 1 expect { - -timeout 240 + -timeout 60 "READY" { set pid [exec echo 1 > /proc/stap_test_cmd &] set ppid {[0-9]*} -- cgit From 952ce18c9672046c052fc77d5da8f98e8ae75735 Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Wed, 1 Apr 2009 15:48:24 -0400 Subject: Use alloca trick to keep argN active on GCC 4.1. * includes/sys/sdt.h (STAP_UNINLINE): New. (STAP_UNINLINE_LABEL): New. static_uprobes.exp: Match using charset instead of .* --- includes/sys/sdt.h | 48 ++++++++++++++++++++--------- tapsets.cxx | 5 +-- testsuite/systemtap.base/static_uprobes.exp | 2 +- 3 files changed, 38 insertions(+), 17 deletions(-) diff --git a/includes/sys/sdt.h b/includes/sys/sdt.h index ba75076b..c3fa16d9 100644 --- a/includes/sys/sdt.h +++ b/includes/sys/sdt.h @@ -39,6 +39,19 @@ #endif #define STAP_LABEL(a,b) STAP_CONCAT(a,b) +/* Taking the address of a local label and/or referencing alloca prevents the + containing function from being inlined, which keeps the parameters visible. */ + +#if __GNUC__ == 4 && __GNUC_MINOR__ <= 1 +#include +#define STAP_UNINLINE alloca((size_t)0) +#else +#define STAP_UNINLINE +#endif + +#define STAP_UNINLINE_LABEL(label) \ + __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label + #define STAP_PROBE_(probe) \ do { \ STAP_PROBE_DATA(probe); \ @@ -46,13 +59,11 @@ do { \ "\tnop"); \ } while (0) -/* Taking the address of a local label prevents the containing function - from being inlined, which keeps the parameters visible. */ - #define STAP_PROBE1_(probe,label,parm1) \ do { \ - __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + STAP_UNINLINE_LABEL(label); \ volatile __typeof__((parm1)) arg1 = parm1; \ + STAP_UNINLINE; \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ @@ -61,9 +72,10 @@ do { \ #define STAP_PROBE2_(probe,label,parm1,parm2) \ do { \ - __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + STAP_UNINLINE_LABEL(label); \ volatile __typeof__((parm1)) arg1 = parm1; \ volatile __typeof__((parm2)) arg2 = parm2; \ + STAP_UNINLINE; \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ @@ -72,10 +84,11 @@ do { \ #define STAP_PROBE3_(probe,label,parm1,parm2,parm3) \ do { \ - __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ - volatile __typeof__((parm1)) arg1 = parm1; \ + STAP_UNINLINE_LABEL(label); \ + volatile __typeof__((parm1)) arg1 = parm1; \ volatile __typeof__((parm2)) arg2 = parm2; \ volatile __typeof__((parm3)) arg3 = parm3; \ + STAP_UNINLINE; \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ @@ -84,11 +97,12 @@ do { \ #define STAP_PROBE4_(probe,label,parm1,parm2,parm3,parm4) \ do { \ - __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + STAP_UNINLINE_LABEL(label); \ volatile __typeof__((parm1)) arg1 = parm1; \ volatile __typeof__((parm2)) arg2 = parm2; \ volatile __typeof__((parm3)) arg3 = parm3; \ volatile __typeof__((parm4)) arg4 = parm4; \ + STAP_UNINLINE; \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ @@ -97,12 +111,13 @@ do { \ #define STAP_PROBE5_(probe,label,parm1,parm2,parm3,parm4,parm5) \ do { \ - __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + STAP_UNINLINE_LABEL(label); \ volatile __typeof__((parm1)) arg1 = parm1; \ volatile __typeof__((parm2)) arg2 = parm2; \ volatile __typeof__((parm3)) arg3 = parm3; \ volatile __typeof__((parm4)) arg4 = parm4; \ volatile __typeof__((parm5)) arg5 = parm5; \ + STAP_UNINLINE; \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ @@ -111,13 +126,14 @@ do { \ #define STAP_PROBE6_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6) \ do { \ - __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + STAP_UNINLINE_LABEL(label); \ volatile __typeof__((parm1)) arg1 = parm1; \ volatile __typeof__((parm2)) arg2 = parm2; \ volatile __typeof__((parm3)) arg3 = parm3; \ volatile __typeof__((parm4)) arg4 = parm4; \ volatile __typeof__((parm5)) arg5 = parm5; \ volatile __typeof__((parm6)) arg6 = parm6; \ + STAP_UNINLINE; \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ @@ -126,7 +142,7 @@ do { \ #define STAP_PROBE7_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7) \ do { \ - __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + STAP_UNINLINE_LABEL(label); \ volatile __typeof__((parm1)) arg1 = parm1; \ volatile __typeof__((parm2)) arg2 = parm2; \ volatile __typeof__((parm3)) arg3 = parm3; \ @@ -134,6 +150,7 @@ do { \ volatile __typeof__((parm5)) arg5 = parm5; \ volatile __typeof__((parm6)) arg6 = parm6; \ volatile __typeof__((parm7)) arg7 = parm7; \ + STAP_UNINLINE; \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ @@ -142,7 +159,7 @@ do { \ #define STAP_PROBE8_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8) \ do { \ - __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + STAP_UNINLINE_LABEL(label); \ volatile __typeof__((parm1)) arg1 = parm1; \ volatile __typeof__((parm2)) arg2 = parm2; \ volatile __typeof__((parm3)) arg3 = parm3; \ @@ -151,6 +168,7 @@ do { \ volatile __typeof__((parm6)) arg6 = parm6; \ volatile __typeof__((parm7)) arg7 = parm7; \ volatile __typeof__((parm8)) arg8 = parm8; \ + STAP_UNINLINE; \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ @@ -159,7 +177,7 @@ do { \ #define STAP_PROBE9_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9) \ do { \ - __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + STAP_UNINLINE_LABEL(label); \ volatile __typeof__((parm1)) arg1 = parm1; \ volatile __typeof__((parm2)) arg2 = parm2; \ volatile __typeof__((parm3)) arg3 = parm3; \ @@ -169,6 +187,7 @@ do { \ volatile __typeof__((parm7)) arg7 = parm7; \ volatile __typeof__((parm8)) arg8 = parm8; \ volatile __typeof__((parm9)) arg9 = parm9; \ + STAP_UNINLINE; \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ @@ -177,7 +196,7 @@ do { \ #define STAP_PROBE10_(probe,label,parm1,parm2,parm3,parm4,parm5,parm6,parm7,parm8,parm9,parm10) \ do { \ - __extension__ static volatile long labelval __attribute__ ((unused)) = (long) &&label; \ + STAP_UNINLINE_LABEL(label); \ volatile __typeof__((parm1)) arg1 = parm1; \ volatile __typeof__((parm2)) arg2 = parm2; \ volatile __typeof__((parm3)) arg3 = parm3; \ @@ -188,6 +207,7 @@ do { \ volatile __typeof__((parm8)) arg8 = parm8; \ volatile __typeof__((parm9)) arg9 = parm9; \ volatile __typeof__((parm10)) arg10 = parm10; \ + STAP_UNINLINE; \ STAP_PROBE_DATA(probe); \ label: \ __asm__ volatile ("2:\n" \ diff --git a/tapsets.cxx b/tapsets.cxx index 50ee563a..449d7cc0 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -5812,7 +5812,8 @@ dwarf_builder::build(systemtap_session & sess, && dw->function_name_matches_pattern (probe_name.c_str(), location->components[1]->arg->tok->content.c_str()))) - ; + { + } else continue; const token* sv_tok = location->components[1]->arg->tok; @@ -5833,7 +5834,7 @@ dwarf_builder::build(systemtap_session & sess, return; } - if (probe_type == dwarf_no_probes) + else if (probe_type == dwarf_no_probes) { location->components[1]->functor = TOK_FUNCTION; location->components[1]->arg = new literal_string("*"); diff --git a/testsuite/systemtap.base/static_uprobes.exp b/testsuite/systemtap.base/static_uprobes.exp index 820626b8..d6b6e1e3 100644 --- a/testsuite/systemtap.base/static_uprobes.exp +++ b/testsuite/systemtap.base/static_uprobes.exp @@ -196,7 +196,7 @@ set ok 0 spawn stap -l "process(\"./sdt_types.x\").mark(\"*\")" expect { -timeout 180 - -re {mark\(\".*\"\)} { incr ok; exp_continue } + -re {mark\(\"[a-z_]+\"\)} { incr ok; exp_continue } timeout { fail "$test C (timeout)" } eof { } } -- cgit