summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-04-01 22:33:45 -0400
committerFrank Ch. Eigler <fche@elastic.org>2008-04-01 22:33:45 -0400
commitdce99706064883364724188687dd0499b5f4440c (patch)
treeee6acfebadb9330ee35fd8ed9073eea5e3470818
parent5e5189b38b0b1b788d32190361961d18e4456ae6 (diff)
parenteace89a86a89977dccb4e943192becc5be47cef1 (diff)
downloadsystemtap-steved-dce99706064883364724188687dd0499b5f4440c.tar.gz
systemtap-steved-dce99706064883364724188687dd0499b5f4440c.tar.xz
systemtap-steved-dce99706064883364724188687dd0499b5f4440c.zip
Merge branch 'master' of git://sources.redhat.com/git/systemtap
* 'master' of git://sources.redhat.com/git/systemtap: removing another part of retired LKET removing abandoned experiment: safety/* disassembly/symbol checks Revert "Just a test commit" Just a test commit bump autoconf* version numbers to 0.7 replace mentions of CVS with GIT in docuemntation files
-rw-r--r--ChangeLog9
-rw-r--r--HACKING2
-rw-r--r--README6
-rwxr-xr-xconfigure20
-rw-r--r--configure.ac2
-rw-r--r--doc/langref.tex2
-rw-r--r--doc/tutorial.tex2
-rw-r--r--runtime/ChangeLog4
-rw-r--r--runtime/lket/b2a/.cvsignore1
-rw-r--r--runtime/lket/b2a/Makefile.am18
-rw-r--r--runtime/lket/b2a/Makefile.in449
-rw-r--r--runtime/lket/b2a/lket_b2a.c1030
-rw-r--r--runtime/lket/b2a/lket_b2a.h101
-rw-r--r--safety/README10
-rw-r--r--safety/data/opcodes-i686107
-rw-r--r--safety/data/opcodes-ia6489
-rw-r--r--safety/data/opcodes-x86_64104
-rw-r--r--safety/data/references94
-rwxr-xr-xsafety/safety.py245
-rw-r--r--tapset/DEVGUIDE14
-rw-r--r--testsuite/ChangeLog5
-rwxr-xr-xtestsuite/configure20
-rw-r--r--testsuite/configure.ac2
23 files changed, 51 insertions, 2285 deletions
diff --git a/ChangeLog b/ChangeLog
index 91b09b03..ad961375 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-04-01 Frank Ch. Eigler <fche@elastic.org>
+
+ * safety/*: Removed subdirectory containing abandoned experiment.
+
+2008-03-31 Frank Ch. Eigler <fche@elastic.org>
+
+ * configure.ac: Bump version to 0.7.
+ * configure: Regenerated.
+
2008-03-27 Frank Ch. Eigler <fche@elastic.org>
* tapsets.cxx (common_probe_entryfn_prologue): Clear last_stmt.
diff --git a/HACKING b/HACKING
index 47297c02..267f008a 100644
--- a/HACKING
+++ b/HACKING
@@ -11,7 +11,7 @@ the <systemtap@sources.redhat.com> mailing list.
and after your changes, and regressions avoided, explained, or
corrected.
- Established contributors may be considered for direct CVS write
+ Established contributors may be considered for direct GIT write
access. Other contributors should simply pack up the goods into a
plain text email message to the mailing list.
diff --git a/README b/README
index 0ea30508..addb7187 100644
--- a/README
+++ b/README
@@ -31,13 +31,9 @@ Build steps:
ftp://sources.redhat.com/pub/systemtap/elfutils/elfutils-NNNN.tar.gz
ftp://sources.redhat.com/pub/systemtap/elfutils/elfutils-portability.patch
- Untar the snapshot in some new directory; apply patch (don't ask, long story)
-- Download systemtap sources snapshot or from CVS or GIT:
+- Download systemtap sources snapshot or from GIT:
ftp://sources.redhat.com/pub/systemtap/snapshots/
(or)
- cvs -d :pserver:anoncvs@sources.redhat.com:/cvs/systemtap login
- # enter "anoncvs" as the password
- cvs -d :pserver:anoncvs@sources.redhat.com:/cvs/systemtap co src
- (or)
git clone git://sources.redhat.com/git/systemtap.git
(or) http://sources.redhat.com/git/systemtap.git
- Build it:
diff --git a/configure b/configure
index 2d770e90..c8be8582 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for systemtap 0.6.2.
+# Generated by GNU Autoconf 2.61 for systemtap 0.7.
#
# Report bugs to <systemtap@sources.redhat.com>.
#
@@ -574,8 +574,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='systemtap'
PACKAGE_TARNAME='systemtap'
-PACKAGE_VERSION='0.6.2'
-PACKAGE_STRING='systemtap 0.6.2'
+PACKAGE_VERSION='0.7'
+PACKAGE_STRING='systemtap 0.7'
PACKAGE_BUGREPORT='systemtap@sources.redhat.com'
# Factoring default headers for most tests.
@@ -1240,7 +1240,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.6.2 to adapt to many kinds of systems.
+\`configure' configures systemtap 0.7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1306,7 +1306,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of systemtap 0.6.2:";;
+ short | recursive ) echo "Configuration of systemtap 0.7:";;
esac
cat <<\_ACEOF
@@ -1415,7 +1415,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-systemtap configure 0.6.2
+systemtap configure 0.7
generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1429,7 +1429,7 @@ 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.6.2, which was
+It was created by systemtap $as_me 0.7, which was
generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
@@ -2121,7 +2121,7 @@ fi
# Define the identity of the package.
PACKAGE='systemtap'
- VERSION='0.6.2'
+ VERSION='0.7'
cat >>confdefs.h <<_ACEOF
@@ -7278,7 +7278,7 @@ 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.6.2, which was
+This file was extended by systemtap $as_me 0.7, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -7331,7 +7331,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-systemtap config.status 0.6.2
+systemtap config.status 0.7
configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/configure.ac b/configure.ac
index f343faef..fa14516c 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.6.2, systemtap@sources.redhat.com, systemtap)
+AC_INIT([systemtap], 0.7, systemtap@sources.redhat.com, systemtap)
dnl ^^^ see also NEWS, testsuite/configure.ac
AC_PREREQ(2.59)
diff --git a/doc/langref.tex b/doc/langref.tex
index 973769d4..46d350f6 100644
--- a/doc/langref.tex
+++ b/doc/langref.tex
@@ -3267,7 +3267,7 @@ For more information, see:
\item The SystemTap tutorial at \url{http://sourceware.org/systemtap/tutorial/}
\item The SystemTap wiki at \url{http://sourceware.org/systemtap/wiki}
\item The SystemTap documentation page at \url{http://sourceware.org/systemtap/documentation.html}
-\item From an unpacked source tarball or CVS directory, the examples in in the
+\item From an unpacked source tarball or GIT directory, the examples in in the
src/examples directory, the tapsets in the src/tapset directory, and the
test scripts in the src/testsuite directory.
\item The man pages for tapsets. For a list, run the command \texttt{{}``man -k
diff --git a/doc/tutorial.tex b/doc/tutorial.tex
index ee7d37da..58673467 100644
--- a/doc/tutorial.tex
+++ b/doc/tutorial.tex
@@ -1053,7 +1053,7 @@ as study, modification, and sharing.}
Finally, there is the project web site
(\verb+http://sources.redhat.com/systemtap/+) with several articles,
an archived public mailing list for users and developers
-(\verb+systemtap@sources.redhat.com+), and a live CVS source
+(\verb+systemtap@sources.redhat.com+), and a live GIT source
repository. Come join us!
diff --git a/runtime/ChangeLog b/runtime/ChangeLog
index b52ddf7b..e66a048e 100644
--- a/runtime/ChangeLog
+++ b/runtime/ChangeLog
@@ -1,3 +1,7 @@
+2008-04-01 Frank Ch. Eigler <fche@elastic.org>
+
+ * lket/*: Belatedly remove retired LKET code.
+
2008-03-17 Eugene Teo <eteo@redhat.com>
PR 5947
diff --git a/runtime/lket/b2a/.cvsignore b/runtime/lket/b2a/.cvsignore
deleted file mode 100644
index e289e6f1..00000000
--- a/runtime/lket/b2a/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-Makefile lket-b2a .deps
diff --git a/runtime/lket/b2a/Makefile.am b/runtime/lket/b2a/Makefile.am
deleted file mode 100644
index 01472f6a..00000000
--- a/runtime/lket/b2a/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-bin_PROGRAMS = lket-b2a
-lket_b2a_SOURCES = lket_b2a.c
-lket_b2a_DEPENDENCIES = lket_b2a.h
-lket_b2a_LDFLAGS = `pkg-config --libs glib-2.0`
-lket_b2a_CFLAGS = -O2 -D_GNU_SOURCE -Wall `pkg-config --cflags glib-2.0`
-
-if HAS_MYSQL
-lket_b2a_CFLAGS += -DHAS_MYSQL
-if HAS_MYSQL_CONFIG
-lket_b2a_LDFLAGS += `mysql_config --libs`
-lket_b2a_CFLAGS += `mysql_config --cflags`
-else
-lket_b2a_CFLAGS += -I/usr/include/mysql -g -pipe -fsigned-char -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing
-lket_b2a_LDFLAGS += -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto
-endif
-endif
-
-
diff --git a/runtime/lket/b2a/Makefile.in b/runtime/lket/b2a/Makefile.in
deleted file mode 100644
index e262682a..00000000
--- a/runtime/lket/b2a/Makefile.in
+++ /dev/null
@@ -1,449 +0,0 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-bin_PROGRAMS = lket-b2a$(EXEEXT)
-@HAS_MYSQL_TRUE@am__append_1 = -DHAS_MYSQL
-@HAS_MYSQL_CONFIG_TRUE@@HAS_MYSQL_TRUE@am__append_2 = `mysql_config --libs`
-@HAS_MYSQL_CONFIG_TRUE@@HAS_MYSQL_TRUE@am__append_3 = `mysql_config --cflags`
-@HAS_MYSQL_CONFIG_FALSE@@HAS_MYSQL_TRUE@am__append_4 = -I/usr/include/mysql -g -pipe -fsigned-char -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing
-@HAS_MYSQL_CONFIG_FALSE@@HAS_MYSQL_TRUE@am__append_5 = -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto
-subdir = runtime/lket/b2a
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-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)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-am__installdirs = "$(DESTDIR)$(bindir)"
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-PROGRAMS = $(bin_PROGRAMS)
-am_lket_b2a_OBJECTS = lket_b2a-lket_b2a.$(OBJEXT)
-lket_b2a_OBJECTS = $(am_lket_b2a_OBJECTS)
-lket_b2a_LDADD = $(LDADD)
-lket_b2a_LINK = $(CCLD) $(lket_b2a_CFLAGS) $(CFLAGS) \
- $(lket_b2a_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(lket_b2a_SOURCES)
-DIST_SOURCES = $(lket_b2a_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-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@
-MYSQL_CONFIG = @MYSQL_CONFIG@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-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@
-build_alias = @build_alias@
-builddir = @builddir@
-cap_LIBS = @cap_LIBS@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-elfutils_abs_srcdir = @elfutils_abs_srcdir@
-exec_prefix = @exec_prefix@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sqlite3_LIBS = @sqlite3_LIBS@
-srcdir = @srcdir@
-stap_LIBS = @stap_LIBS@
-subdirs = @subdirs@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-lket_b2a_SOURCES = lket_b2a.c
-lket_b2a_DEPENDENCIES = lket_b2a.h
-lket_b2a_LDFLAGS = `pkg-config --libs glib-2.0` $(am__append_2) \
- $(am__append_5)
-lket_b2a_CFLAGS = -O2 -D_GNU_SOURCE -Wall `pkg-config --cflags \
- glib-2.0` $(am__append_1) $(am__append_3) $(am__append_4)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(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 \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu runtime/lket/b2a/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu runtime/lket/b2a/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-install-binPROGRAMS: $(bin_PROGRAMS)
- @$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
- @list='$(bin_PROGRAMS)'; for p in $$list; do \
- p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- if test -f $$p \
- ; then \
- f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
- else :; fi; \
- done
-
-uninstall-binPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(bin_PROGRAMS)'; for p in $$list; do \
- f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
- rm -f "$(DESTDIR)$(bindir)/$$f"; \
- done
-
-clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
-lket-b2a$(EXEEXT): $(lket_b2a_OBJECTS) $(lket_b2a_DEPENDENCIES)
- @rm -f lket-b2a$(EXEEXT)
- $(lket_b2a_LINK) $(lket_b2a_OBJECTS) $(lket_b2a_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lket_b2a-lket_b2a.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-lket_b2a-lket_b2a.o: lket_b2a.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lket_b2a_CFLAGS) $(CFLAGS) -MT lket_b2a-lket_b2a.o -MD -MP -MF $(DEPDIR)/lket_b2a-lket_b2a.Tpo -c -o lket_b2a-lket_b2a.o `test -f 'lket_b2a.c' || echo '$(srcdir)/'`lket_b2a.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/lket_b2a-lket_b2a.Tpo $(DEPDIR)/lket_b2a-lket_b2a.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lket_b2a.c' object='lket_b2a-lket_b2a.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lket_b2a_CFLAGS) $(CFLAGS) -c -o lket_b2a-lket_b2a.o `test -f 'lket_b2a.c' || echo '$(srcdir)/'`lket_b2a.c
-
-lket_b2a-lket_b2a.obj: lket_b2a.c
-@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lket_b2a_CFLAGS) $(CFLAGS) -MT lket_b2a-lket_b2a.obj -MD -MP -MF $(DEPDIR)/lket_b2a-lket_b2a.Tpo -c -o lket_b2a-lket_b2a.obj `if test -f 'lket_b2a.c'; then $(CYGPATH_W) 'lket_b2a.c'; else $(CYGPATH_W) '$(srcdir)/lket_b2a.c'; fi`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/lket_b2a-lket_b2a.Tpo $(DEPDIR)/lket_b2a-lket_b2a.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lket_b2a.c' object='lket_b2a-lket_b2a.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lket_b2a_CFLAGS) $(CFLAGS) -c -o lket_b2a-lket_b2a.obj `if test -f 'lket_b2a.c'; then $(CYGPATH_W) 'lket_b2a.c'; else $(CYGPATH_W) '$(srcdir)/lket_b2a.c'; fi`
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
- for dir in "$(DESTDIR)$(bindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-exec-am: install-binPROGRAMS
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-binPROGRAMS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- clean-generic ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-binPROGRAMS \
- 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-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
- uninstall-am uninstall-binPROGRAMS
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/runtime/lket/b2a/lket_b2a.c b/runtime/lket/b2a/lket_b2a.c
deleted file mode 100644
index ab1bb299..00000000
--- a/runtime/lket/b2a/lket_b2a.c
+++ /dev/null
@@ -1,1030 +0,0 @@
-// Copyright (C) 2005, 2006 IBM Corp.
-// Copyright (C) 2006 Red Hat Inc.
-// Copyright (C) 2007 Bull S.A.S
-//
-// 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 <sys/types.h>
-#include <sys/time.h>
-#include <sys/stat.h>
-#include <ctype.h>
-#include <assert.h>
-#include <errno.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include "lket_b2a.h"
-
-/* A flag indicate whether to store the trace
- data into local file/MySQL database */
-int into_file, into_db;
-int name_flag=1, id_flag=0, appname_flag=1;
-#ifdef HAS_MYSQL
-
-#define SQLSIZE 1024*1024
-int sql_count;
-#define INSERT_THRESHOLD 100
-char sql[4096];
-char sqlStatement[SQLSIZE];
-char sql_col[1024];
-char sql_val[2048];
-
-MYSQL mysql;
-#endif
-
-/* A FILE handle points to a local file used to
- store the trace data */
-FILE *outfp;
-
-#define TIMING_GETCYCLES 0x01
-#define TIMING_GETTIMEOFDAY 0x02
-#define TIMING_SCHEDCLOCK 0x03
-
-typedef struct _cpufreq_info {
- long timebase;
- long long last_cycles;
- long long last_time;
-} cpufreq_info;
-
-#define MAX_CPUS 256
-cpufreq_info cpufreq[MAX_CPUS];
-
-static long timing_method = TIMING_GETTIMEOFDAY;
-
-static long long start_timestamp;
-
-GTree *appNameTree;
-
-/* event table */
-event_desc *events_des[MAX_EVT_TYPES][MAX_GRPID][MAX_HOOKID];
-
-#define b2a_error(fmt, args...) do { fprintf(stderr, "Error %d@%s: "fmt, __LINE__, __func__, ## args);\
- exit(-1); } while(0)
-
-void usage()
-{
-printf("Usage:\n\
- lket-b2a Options INFILE1 [INFILE2...]\n\
- Options:\n\
- -f dump the trace data into a local file named \"lket.out\"\n\
- -n name_flag. name_flag set to 0 means not printing the event\n\
- description string and 1 means printing. Only valid with -f\n\
- option. name_flag is set to 1 by default.\n\
- -i id_flag. id_flag set to 0 means not printing event groupid and\n\
- hookid and 1 means printing. Only valid with -f option. id_flag\n\
- is set to 0 by default.\n\
- -a appname_flag. appname_flag set to 0 means not printing process\n\
- name and 1 means printing. Only valid with -f option. appname_flag\n\
- is set to 1 by default.\n\
- -m dump the trace data into MySQL\n\
- Example:\n\
- lket-b2a -f -a 1 -i 1 -n 0 stpd_cpu*\n\
- lket-b2a -m stpd_cpu*\n");
-}
-
-int main(int argc, char *argv[])
-{
- lket_pkt_header *hdrs = NULL;
- FILE **infps = NULL;
- char outfilename[MAX_STRINGLEN]={0};
- int i, j, total_infiles = 0;
- long long min;
- int retvalue = 0;
-
- char database[18];
- time_t timer;
- struct tm *tm;
-
- time(&timer);
- tm = localtime(&timer);
- strftime(database, 18, "DB%Y%m%d%H%M%S", tm);
-
- while (1) {
- int c = getopt(argc, argv, "mfi:n:a:");
- if (c < 0) // no more options
- break;
- switch (c) {
- case 'm':
- into_db = 1;
- break;
- case 'f':
- into_file = 1;
- break;
- case 'n':
- name_flag = atoi(optarg);
- if(name_flag!=0 && name_flag!=1) {
- fprintf(stderr, "you must specify 0 or 1 for -n option\n");
- usage();
- exit(-1);
- }
- break;
- case 'i':
- id_flag = atoi(optarg);
- if(id_flag!=0 && id_flag!=1) {
- fprintf(stderr, "you must specify 0 or 1 for -i option\n");
- usage();
- exit(-1);
- }
- break;
- case 'a':
- appname_flag = atoi(optarg);
- if(appname_flag!=0 && appname_flag!=1) {
- fprintf(stderr, "you must specify 0 or 1 for -a option\n");
- usage();
- exit(-1);
- }
- break;
-
- default:
- printf("Error in options\n");
- usage();
- exit(-1);
- break;
- }
- }
-
-#ifndef HAS_MYSQL
- if(into_db) {
- b2a_error("-m option is not supported since lket-b2a is not compiled with mysql support\n");
- }
-#endif
- if(into_file==0 && into_db==0) {
-#ifdef HAS_MYSQL
- fprintf(stderr, "At least one of -m/-f option should be specified\n");
-#else
- fprintf(stderr, "-f option must be specified\n");
-#endif
- usage();
- exit(-1);
- }
-
- total_infiles = argc - optind;
-
- // open the input files and the output file
- infps = (FILE **)malloc(total_infiles * sizeof(FILE *));
- if(!infps) {
- b2a_error("Unable to malloc infps\n");
- }
-
- memset(infps, 0, total_infiles * sizeof(FILE *));
- for(i=0; i < total_infiles; i++) {
- infps[i] = fopen(argv[optind++], "r");
- if(infps[i] == NULL) {
- printf("Unable to open %s\n", argv[optind-1]);
- retvalue = -1;
- goto failed;
- }
- }
-
- if(into_file) {
- if(strnlen(outfilename, MAX_STRINGLEN) == 0)
- strncpy(outfilename, DEFAULT_OUTFILE_NAME, MAX_STRINGLEN);
-
- outfp = fopen(outfilename, "w");
- if(outfp == NULL) {
- fprintf(stderr,"Unable to create %s\n", outfilename);
- retvalue = -1;
- goto failed;
- }
- }
- /* create the search tree */
- appNameTree = g_tree_new_full(compareFunc, NULL, NULL, destroyTreeData);
-
-#ifdef HAS_MYSQL
- if(into_db) {
- if(!mysql_init(&mysql)) {
- b2a_error("Failed to Init MySQL: Error: %s\n",
- mysql_error(&mysql));
- }
-
- if(!mysql_real_connect(&mysql, NULL, NULL, NULL, NULL, 0, NULL,
- CLIENT_MULTI_STATEMENTS)) {
- b2a_error("Failed to connect to database: Error: %s\n",
- mysql_error(&mysql));
- }
-
- snprintf(sql, 64,"create database %s", database);
-
- if(mysql_query(&mysql, sql)) {
- b2a_error("Failed create database %s, Error: %s\n",
- database, mysql_error(&mysql));
- }
-
- if(!mysql_real_connect(&mysql, NULL, NULL, NULL, database, 0, NULL,
- CLIENT_MULTI_STATEMENTS)) {
- b2a_error("Failed to connect to database %s: Error: %s\n",
- database, mysql_error(&mysql));
- }
- }
-#endif
-
- // find the lket header
- find_init_header(infps, total_infiles);
-
- // allocate packet headers array
- hdrs = malloc(total_infiles * sizeof(lket_pkt_header));
- if(!hdrs) {
- printf("Unable to malloc hdrs \n");
- retvalue = -1;
- goto failed;
- }
- memset(hdrs, 0, total_infiles * sizeof(lket_pkt_header));
-
- // initialize packet headers array
- start_timestamp = 0;
- j = 0;
- for(i=0; i < total_infiles; i++) {
- get_pkt_header(infps[i], &hdrs[i]);
- if( (hdrs[i].microsecond < start_timestamp && hdrs[i].microsecond >0)
- || (start_timestamp == 0)) {
- start_timestamp = hdrs[i].microsecond;
- j = i;
- }
- }
-
- // initialize the start cycles
- if(timing_method == TIMING_GETCYCLES) {
- for(i=0; i<MAX_CPUS; i++) {
- cpufreq[i].last_cycles = start_timestamp;
- cpufreq[i].last_time = 0;
- }
- }
-
- // main loop of parsing & merging
- min = start_timestamp;
- do {
- // j is the next
- if(min) {
- if(HDR_GroupID(&hdrs[j])==_GROUP_REGEVT) {
- if(HDR_HookID(&hdrs[j]) == _HOOKID_REGEVTDESC)
- register_evt_desc(infps[j],hdrs[j].sys_size);
- else
- register_events(HDR_HookID(&hdrs[j]), infps[j],
- hdrs[j].sys_size);
- } else {
-
- if(HDR_GroupID(&hdrs[j])==_GROUP_PROCESS &&
- (HDR_HookID(&hdrs[j])==_HOOKID_PROCESS_SNAPSHOT
- || HDR_HookID(&hdrs[j])==_HOOKID_PROCESS_EXECVE
- || HDR_HookID(&hdrs[j])==_HOOKID_PROCESS_FORK))
- {
- register_appname(j, infps[j], &hdrs[j]);
- }
-
- if(HDR_GroupID(&hdrs[j])==_GROUP_CPUFREQ
- && HDR_HookID(&hdrs[j])==_HOOKID_SWITCH_CPUFREQ
- && timing_method == TIMING_GETCYCLES)
- {
- int64_t new_timebase;
- fread(&new_timebase, sizeof(new_timebase), 1, infps[j]);
-
- cpufreq[HDR_CpuID(&hdrs[j])].last_time +=
- (hdrs[j].microsecond
- - cpufreq[HDR_CpuID(&hdrs[j])].last_cycles)
- / cpufreq[HDR_CpuID(&hdrs[j])].timebase;
- cpufreq[j].last_cycles = hdrs[j].microsecond;
- cpufreq[HDR_CpuID(&hdrs[j])].timebase = new_timebase;
-
- fseek(infps[j], -sizeof(new_timebase), SEEK_CUR);
- }
-
- dump_data(hdrs[j], infps[j]);
- }
- // update hdr[j]
-#ifdef DEBUG_OUTPUT
- fprintf(stderr, "File %d, Offset: %ld\n", j, ftell(infps[j]));
-#endif
- get_pkt_header(infps[j], &hdrs[j]);
- }
- // recalculate the smallest timestamp
- min = hdrs[0].microsecond;
- j = 0;
- for(i=1; i < total_infiles ; i++) {
- if((min == 0) ||
- (hdrs[i].microsecond < min && hdrs[i].microsecond > 0)) {
- min = hdrs[i].microsecond;
- j = i;
- }
- }
- } while(min != 0);
-
-failed:
- // close all opened files
- for(i=0; i < total_infiles; i++)
- if(infps[i])
- fclose(infps[i]);
- if(outfp)
- fclose(outfp);
-
- // free all allocated memory space
- if(infps)
- free(infps);
- if(hdrs)
- free(hdrs);
-
- for(i=1; i<MAX_GRPID; i++)
- for(j=1; j<MAX_HOOKID; j++) {
- if(events_des[_HOOKID_REGSYSEVT][i][j] != NULL) {
-#ifdef HAS_MYSQL
- if(events_des[_HOOKID_REGSYSEVT][i][j]->flag == 0 && into_db) {
- snprintf(sql, 256, "drop table %d_%d",i,j);
- if(mysql_query(&mysql,sql)) {
- b2a_error("Failed to exec sql: %s, Error: %s\n",
- sql, mysql_error(&mysql));
- }
- snprintf(sql, 256, "delete from table_desc where table_name='%d_%d'",i,j);
- if(mysql_query(&mysql,sql)) {
- b2a_error("Failed to exec sql: %s, Error: %s\n",
- sql, mysql_error(&mysql));
- }
- }
- /* destroy entrytime tree */
- if(events_des[_HOOKID_REGSYSEVT][i][j]->entrytime)
- g_tree_destroy(events_des[_HOOKID_REGSYSEVT][i][j]->entrytime);
-#endif
- }
- }
-
-#ifdef HAS_MYSQL
- if(into_db) {
- mysql_close(&mysql);
- }
-#endif
- if (appNameTree)
- g_tree_destroy(appNameTree);
-
- return retvalue;
-}
-
-/* register newly found process name for addevent.process.snapshot
- and addevent.process.execve */
-void register_appname(int i, FILE *fp, lket_pkt_header *phdr)
-{
- int pid, tid, ppid;
- char *appname=NULL;
- int count;
- int len;
- int c;
- int location;
- len=0;
- count=0;
-
-#ifdef HAS_MYSQL
- static int flag = 0;
-
- if(into_db) {
- if(flag==0) {
- if(mysql_query(&mysql, "create table appNameMap ( pid INT, pname varchar(20))")) {
- b2a_error("Failed to create appNameMap table, Error: %s\n",
- mysql_error(&mysql));
- }
- }
- flag=1;
- }
-#endif
- appname = (char *)malloc(512);
- location = ftell(fp);
-
- if(HDR_HookID(phdr) == _HOOKID_PROCESS_SNAPSHOT ) { /* process_snapshot */
- fread(&tid, 1, 4, fp); /* read tid */
- fread(&pid, 1, 4, fp); /* read pid */
- fread(&ppid, 1, 4, fp); /* read ppid */
- c = fgetc_unlocked(fp);
- len+=13;
- while (c && len < 1024) {
- appname[count++] = (char)c;
- c = fgetc_unlocked(fp);
- ++len;
- }
- appname[count]='\0';
- } else if (HDR_HookID(phdr) == _HOOKID_PROCESS_EXECVE) { /* process.execve */
- fread(&tid, 1, 4, fp); /* read tid */
- fread(&pid, 1, 4, fp); /* read pid */
- fread(&ppid, 1, 4, fp); /* read ppid */
- c = fgetc_unlocked(fp);
- len+=5;
- while (c && len < 1024) {
- appname[count++] = (char)c;
- c = fgetc_unlocked(fp);
- ++len;
- }
- appname[count]='\0';
- } else if (HDR_HookID(phdr) == _HOOKID_PROCESS_FORK) {
- fread(&tid, 1, 4, fp); /* read tid */
- fread(&pid, 1, 4, fp); /* read pid */
- fread(&ppid, 1, 4, fp); /* read ppid */
-
- char *appname_ptr;
- appname_ptr = (char *)(g_tree_lookup(appNameTree,(gconstpointer)((long)ppid)));
- if(appname_ptr == NULL)
- strncpy(appname, "N/A", 4);
- else
- strncpy(appname, appname_ptr, 256);
-
- } else {
- free(appname);
- return;
- }
- fseek(fp, location, SEEK_SET);
-#ifdef HAS_MYSQL
- if(into_db) {
- snprintf(sql, 256,"insert into appNameMap values ( %d, \"%s\")", pid, appname);
- if(mysql_query(&mysql,sql)) {
- b2a_error("Failed to exec SQL: %s, Error: %s\n",
- sql, mysql_error(&mysql));
- }
- }
-#endif
- g_tree_insert(appNameTree, (gpointer)((long)pid), (gpointer)appname);
-}
-
-
-gint compareFunc(gconstpointer a, gconstpointer b, gpointer user_data)
-{
- if((long)(a) > (long)(b)) return 1;
- else if ((long)(a) < (long)(b)) return -1;
- else return 0;
-}
-
-void destroyTreeData(gpointer data)
-{
- free(data);
-}
-
-/*
- * search the LKET init header in a set of input files,
- * and the header structure is defined in tapsets/lket_trace.stp
- */
-void find_init_header(FILE **infps, const int total_infiles)
-{
- int i, j, k;
- int32_t magic;
- percpu_header pcpu;
-
- /* information from lket_init_header */
- int16_t inithdr_len;
- int8_t ver_major;
- int8_t ver_minor;
- int8_t big_endian;
- int8_t timing_field;
- int8_t bits_width;
- int32_t init_timebase;
- char timing_methods_str[128];
-
- if(total_infiles <= 0 )
- b2a_error("total_infiles <= 0\n");
- j = total_infiles;
- for(i=0; i<total_infiles; i++) {
- /* skip percpu header */
- if(fread(&pcpu, 1, sizeof(pcpu), infps[i]) < sizeof(pcpu))
- continue;
- if(fread(&magic, 1, sizeof(magic), infps[i]) < sizeof(magic))
- continue;
- if(magic == (int32_t)LKET_MAGIC) {
- //found
- j = i;
- if(into_file)
- fprintf(outfp, "LKET Magic:\t0x%X\n", magic);
- //read other content of lket_int_header
- if(fread(&inithdr_len, 1, sizeof(inithdr_len), infps[i])
- < sizeof(inithdr_len))
- break;
- if(into_file)
- fprintf(outfp, "InitHdrLen:\t%d\n", inithdr_len);
- if(fread(&ver_major, 1, sizeof(ver_major), infps[i]) < sizeof(ver_major))
- break;
- if(into_file)
- fprintf(outfp, "Version Major:\t%d\n", ver_major);
- if(fread(&ver_minor, 1, sizeof(ver_minor), infps[i]) < sizeof(ver_minor))
- break;
- if(into_file)
- fprintf(outfp, "Version Minor:\t%d\n", ver_minor);
- if(fread(&big_endian, 1, sizeof(big_endian), infps[i]) < sizeof(big_endian))
- break;
- if(into_file)
- fprintf(outfp, "Big endian:\t%s\n", big_endian ? "YES":"NO");
- if(fread(&timing_field, 1, sizeof(timing_field), infps[i])
- < sizeof(timing_field))
- break;
- timing_method = timing_field;
- if(into_file)
- fprintf(outfp, "Timing method:\t");
- switch(timing_method) {
- case TIMING_GETCYCLES:
- snprintf(timing_methods_str, 128, "get_cycles");
- if(into_file)
- fprintf(outfp, "get_cycles()\n");
- break;
- case TIMING_GETTIMEOFDAY:
- snprintf(timing_methods_str, 128,"do_gettimeofday");
- if(into_file)
- fprintf(outfp, "do_gettimeofday()\n");
- break;
- case TIMING_SCHEDCLOCK:
- snprintf(timing_methods_str, 128, "sched_clock");
- if(into_file)
- fprintf(outfp, "sched_clock()\n");
- break;
- default:
- snprintf(timing_methods_str,128,
- "Unsupported timing method");
- if(into_file)
- fprintf(outfp, "Unsupported timging method\n");
- }
- if(fread(&bits_width, 1, sizeof(bits_width), infps[i]) < sizeof(bits_width))
- break;
- if(into_file)
- fprintf(outfp, "Bits width:\t%d\n", bits_width);
- if(fread(&init_timebase, 1, sizeof(init_timebase), infps[i])
- < sizeof(init_timebase))
- break;
- if(into_file)
- fprintf(outfp,
- "Initial CPU timebase:\t%d (cycles per microsecond)\n",
- init_timebase);
- if(timing_method == TIMING_GETCYCLES) {
- for(k = 0; k < MAX_CPUS; k++)
- cpufreq[k].timebase = init_timebase;
- }
- break;
- }
- }
-
-#ifdef HAS_MYSQL
- if(into_db) {
- if(mysql_query(&mysql, "create table trace_header ( Major_Ver TINYINT, Minor_Ver TINYINT, Big_Endian TINYINT, Timing_Method varchar(20), Bits_Width TINYINT)" )) {
- b2a_error("Failed to create trace_header table, Error: %s\n",
- mysql_error(&mysql));
- }
- snprintf(sql, 256, "insert into trace_header value ( %d, %d, %d, \"%s\", %d )",
- ver_major, ver_minor, big_endian, timing_methods_str, bits_width);
-
- if(mysql_query(&mysql, sql)) {
- b2a_error("Failed exec SQL %d: \n %s \n, Error: %s\n",
- __LINE__, sql, mysql_error(&mysql));
- }
- }
-#endif
- for(i=0; i<total_infiles && i!=j; i++)
- fseek(infps[i], 0LL, SEEK_SET);
- return;
-}
-
-/*
- * read the lket_pkt_header structure at the begining of the input file
- */
-int get_pkt_header(FILE *fp, lket_pkt_header *phdr)
-{
- percpu_header pcpu;
- size_t size;
- if(feof(fp)) return 0;
-
- if((size = fread(&pcpu, 1, sizeof(pcpu), fp)) < sizeof(pcpu)) {
- if (feof(fp)) {
- bzero(phdr, sizeof(lket_pkt_header));
- return 0;
- } else
- b2a_error("fread read %u bytes than expected %u, feof:%d\n",
- (unsigned) size, (unsigned) sizeof(pcpu),
- feof(fp));
- }
-
- if((size = fread(phdr, 1, sizeof(lket_pkt_header), fp)) < sizeof(lket_pkt_header)) {
- if(feof(fp)) {
- bzero(phdr, sizeof(lket_pkt_header));
- return 0;
- } else
- b2a_error("fread read %u bytes than expected %u, feof:%d\n", (unsigned) size, (unsigned) sizeof(lket_pkt_header), feof(fp));
- }
-
- phdr->sys_size -= sizeof(lket_pkt_header)-sizeof(phdr->total_size)-sizeof(phdr->sys_size);
- phdr->total_size -= sizeof(lket_pkt_header)-sizeof(phdr->total_size)-sizeof(phdr->sys_size);
- return 0;
-}
-
-void print_pkt_header(lket_pkt_header *phdr)
-{
- long long usecs;
- int sec, usec;
- int grpid, hookid, pid, tid, ppid;
-
- if(!phdr)
- b2a_error("phdr is NULL\n");
-
- if(timing_method == TIMING_GETCYCLES)
- usecs = (phdr->microsecond - cpufreq[HDR_CpuID(phdr)].last_cycles)
- / cpufreq[HDR_CpuID(phdr)].timebase + cpufreq[HDR_CpuID(phdr)].last_time;
- else if(timing_method == TIMING_SCHEDCLOCK)
- usecs = (phdr->microsecond - start_timestamp) / 1000;
- else
- usecs = phdr->microsecond - start_timestamp;
-
- sec = usecs/1000000;
- usec = usecs%1000000;
-
- grpid = HDR_GroupID(phdr);
- hookid = HDR_HookID(phdr);
- pid = HDR_PID(phdr);
- tid = HDR_TID(phdr);
- ppid = HDR_PPID(phdr);
-
- if(into_file) {
- fprintf(outfp, "\n%d.%d CPU:%d TID:%d, PID:%d, PPID:%d, ", sec, usec,
- HDR_CpuID(phdr), tid, pid, ppid);
- if(appname_flag==1) {
- char *appname_ptr;
- appname_ptr = (char *)(g_tree_lookup(appNameTree,(gconstpointer)((long)pid)));
- if(appname_ptr == NULL)
- fprintf(outfp, "APPNAME:N/A ");
- else
- fprintf(outfp, "APPNAME:%s ", appname_ptr);
- }
- if(name_flag==1)
- fprintf(outfp, "EVT_NAME:%s ", events_des[_HOOKID_REGSYSEVT][grpid][hookid]->description);
- if(id_flag==1)
- fprintf(outfp, "HOOKGRP:%d HOOKID:%d ", grpid, hookid);
- }
-
-#ifdef HAS_MYSQL
- if(into_db) {
- if(!(hookid%2)) { // return type event
- long long *entrytime;
- long long entryusecs;
- entrytime = g_tree_lookup(events_des[_HOOKID_REGSYSEVT][grpid][hookid-1]->entrytime,
- (gconstpointer)((long)tid));
- if(entrytime==NULL) // key not found
- entryusecs = 0;
- else
- entryusecs = *entrytime;
- snprintf(sql_col, 128, "groupid, hookid, usec, thread_id, process_id, parentprocess_id, \
- cpu_id, entry_usec,");
- snprintf(sql_val, 256, "%d, %d, %lld, %d, %d, %d, %d, %lld,", grpid,
- hookid, usecs, tid, pid, ppid, HDR_CpuID(phdr),
- entryusecs);
- } else {
- snprintf(sql_col, 128, "groupid, hookid, usec, thread_id, process_id, parentprocess_id, cpu_id,");
- snprintf(sql_val, 256, "%d, %d, %lld, %d, %d, %d, %d, ", grpid,
- hookid, usecs, tid, pid, ppid, HDR_CpuID(phdr));
- }
- if(hookid%2) {
- char *entrytime = malloc(sizeof(long long));
- *((long long *)entrytime) = usecs;
- g_tree_insert(events_des[_HOOKID_REGSYSEVT][grpid][hookid]->entrytime,
- (gpointer)((long)tid), (gpointer)entrytime);
- }
- }
-#endif
-
-}
-
-#ifdef HAS_MYSQL
-char *get_sqltype(char *fmt)
-{
- if(strncmp(fmt, "INT8", 4) == 0)
- return "TINYINT";
- if(strncmp(fmt, "INT16", 5) == 0)
- return "SMALLINT";
- if(strncmp(fmt, "INT32", 5) == 0)
- return "INT";
- if(strncmp(fmt, "INT64", 5) == 0)
- return "BIGINT";
- if(strncmp(fmt, "STRING", 6) == 0)
- return "VARCHAR(20)";
- return "";
-}
-#endif
-
-void register_evt_desc(FILE *infp, size_t size)
-{
-#ifdef HAS_MYSQL
- static int has_table = 0;
-#endif
- int grpid, hookid;
- int len = 0;
- char *evt_body;
- evt_body = malloc(size);
- fread(evt_body, size, 1, infp);
- grpid = *(int8_t *)evt_body;
- hookid = *(int8_t *)(evt_body+1);
- len = strlen(evt_body+2)+2;
- if(!events_des[_HOOKID_REGSYSEVT][grpid][hookid])
- events_des[_HOOKID_REGSYSEVT][grpid][hookid] = malloc(sizeof(event_desc));
- events_des[_HOOKID_REGSYSEVT][grpid][hookid]->description = malloc(len);
-
- strncpy(events_des[_HOOKID_REGSYSEVT][grpid][hookid]->description, evt_body+2, len);
-#ifdef HAS_MYSQL
- events_des[_HOOKID_REGSYSEVT][grpid][hookid]->entrytime = g_tree_new_full(
- compareFunc, NULL, NULL, destroyTreeData);
- if(into_db) {
- if(!has_table) {
- snprintf(sql, 1024, "create table table_desc ( table_name varchar(6), table_desc varchar(32))");
- if(mysql_query(&mysql, sql)) {
- b2a_error("Failed exec SQL: \n %s \n, Error: %s\n",
- sql, mysql_error(&mysql));
- }
- has_table = 1;
- }
-
- snprintf(sql, 1024, "insert into table_desc ( table_name, table_desc) values ( \"%d_%d\", \"%s\")", grpid, hookid,
- evt_body+2);
-
- if(mysql_query(&mysql, sql)) {
- b2a_error("Failed exec SQL:\n %s \n, Error: %s\n",
- sql, mysql_error(&mysql));
- }
- }
-#endif
- free(evt_body);
-}
-
-void register_events(int evt_type, FILE *infp, size_t size)
-{
- int cnt=0, len=0;
-
- char *evt_body, *evt_fmt, *evt_names, *tmp, *fmt, *name;
- int8_t grpid, hookid;
-
- evt_body = malloc(size);
-
- fread(evt_body, size, 1, infp);
-
- grpid = *(int8_t *)evt_body;
- hookid = *(int8_t *)(evt_body+1);
-
- if(!events_des[evt_type][grpid][hookid])
- events_des[evt_type][grpid][hookid] = malloc(sizeof(event_desc));
- if(!events_des[evt_type][grpid][hookid]) {
- b2a_error("error when malloc for event_des[%d][%d][%d]\n",
- evt_type, grpid, hookid);
- }
-
-#ifdef HAS_MYSQL
- if(into_db) {
- if(evt_type==_HOOKID_REGSYSEVT) { /* if sys event, create a table */
- if(!(hookid%2)) {/* if this is a return type event, should record
- the entry time of this event */
- snprintf(sql, 1024, "create table %d_%d ( groupid TINYINT, hookid TINYINT, usec BIGINT, thread_id INT, process_id INT, parentprocess_id INT, cpu_id TINYINT, entry_usec BIGINT,", grpid, hookid);
- } else {
- snprintf(sql, 1024, "create table %d_%d ( groupid TINYINT, hookid TINYINT, usec BIGINT, thread_id INT, process_id INT, parentprocess_id INT, cpu_id TINYINT,", grpid, hookid);
- }
- }
- if(evt_type==_HOOKID_REGUSREVT) { /* if user event, alter an existing table */
- snprintf(sql, 1024, "alter table %d_%d ", grpid, hookid);
- }
- }
-
- if(size == 2) // skip if no event format is provided
- goto gen_sql;
-#endif
-
- evt_fmt = evt_body+2;
-
- for(tmp=evt_fmt; *tmp!=0; tmp++);
-
- evt_names = tmp+1;
-
- fmt = strsep(&evt_fmt, ":");
- name = strsep(&evt_names, ":");
-
- if(fmt==NULL || name==NULL) {
- b2a_error("error in event format/names string\n");
- }
-
- while(fmt!=NULL && name!=NULL) {
-#ifdef HAS_MYSQL
- if(into_db) {
- if(evt_type==_HOOKID_REGSYSEVT) {
- strcat(sql, "`");
- strcat(sql, name);
- strcat(sql, "` ");
- strcat(sql, get_sqltype(fmt));
- strcat(sql, ",");
- }
- if(evt_type==_HOOKID_REGUSREVT) {
- strcat(sql, "add ");
- strcat(sql, "`");
- strcat(sql, name);
- strcat(sql, "` ");
- strcat(sql, get_sqltype(fmt));
- strcat(sql, ",");
- }
- }
-#endif
- strncpy(events_des[evt_type][grpid][hookid]->evt_fmt[cnt], fmt, 7);
- strncpy(events_des[evt_type][grpid][hookid]->evt_names[cnt],
- name, MAX_FIELDNAME_LEN);
- strncpy(events_des[evt_type][grpid][hookid]->fmt+len, get_fmtstr(fmt), 8);
- len+=strlen(get_fmtstr(fmt));
- fmt = strsep(&evt_fmt, ":");
- name = strsep(&evt_names, ":");
- cnt++;
- }
- events_des[evt_type][grpid][hookid]->count = cnt;
- *(events_des[evt_type][grpid][hookid]->fmt+len)='\0';
-
-#ifdef HAS_MYSQL
-gen_sql:
- if(into_db) {
- if(evt_type==_HOOKID_REGSYSEVT)
- sql[strlen(sql)-1]=')';
- if(evt_type==_HOOKID_REGUSREVT)
- sql[strlen(sql)-1]='\0';
-
- if(mysql_query(&mysql, sql)) {
- b2a_error("Failed exec SQL: \n %s \n, Error: %s\n",
- sql, mysql_error(&mysql));
- }
- }
-#endif
- free(evt_body);
-}
-
-char *get_fmtstr(char *fmt)
-{
- if(strncmp(fmt, "INT8", 4) == 0)
- return "%1b";
- if(strncmp(fmt, "INT16", 5) == 0)
- return "%2b";
- if(strncmp(fmt, "INT32", 5) == 0)
- return "%4b";
- if(strncmp(fmt, "INT64", 5) == 0)
- return "%8b";
- if(strncmp(fmt, "STRING", 6) == 0)
- return "%0s";
- return "";
-}
-
-int dump_data(lket_pkt_header header, FILE *infp)
-{
- int i, c, j;
- int16_t stemp;
- int32_t ntemp;
- long long lltemp;
- int readbytes = 0;
- int total_bytes = 0;
- int size = 0;
- int evt_num = 1;
-
- char tmp_int[32];
-
- char *fmt, *name, *buffer;
- int grpid = HDR_GroupID(&header);
- int hookid = HDR_HookID(&header);
-
- print_pkt_header(&header);
-
- /* if the data contains user appended extra data */
- if(header.total_size != header.sys_size)
- evt_num = 3;
-
- /* iterate the sys and user event */
- for(j=1; j<= evt_num; j+=2) {
-
- readbytes = 0;
-
- if(j == 1) /* if current one is a sys event */
- size = header.sys_size;
- if(j == 2) /* if current one is a user event */
- size = header.total_size - header.sys_size;
-
- if(into_file && (events_des[j][grpid][hookid] == NULL ||
- events_des[j][grpid][hookid]->count <= 0)) {
- //no format is provided, dump in hex
- buffer = malloc(size);
- fread(buffer, size, 1, infp);
- fwrite(buffer, size, 1, outfp);
- free(buffer);
- total_bytes += size;
- continue;
- }
-
- events_des[j][grpid][hookid]->flag = 1;
-
- for(i=0; i<events_des[j][grpid][hookid]->count; i++) {
- fmt = events_des[j][grpid][hookid]->evt_fmt[i];
- name = events_des[j][grpid][hookid]->evt_names[i];
-#ifdef HAS_MYSQL
- if(into_db) {
- strcat(sql_col, "`");
- strcat(sql_col, name);
- strcat(sql_col, "`,");
- }
-#endif
-
- if(into_file) {
- fwrite(name, strlen(name), 1, outfp);
- fwrite(":", 1, 1, outfp);
- }
- if(strncmp(fmt, "INT8", 4)==0) {
- c = fgetc_unlocked(infp);
- if(into_file)
- fprintf(outfp, "%d,", (int8_t)c);
- sprintf(tmp_int, "%d,", (int8_t)c);
-#ifdef HAS_MYSQL
- if(into_db)
- strcat(sql_val, tmp_int);
-#endif
- readbytes+=1;
- } else if(strncmp(fmt, "INT16", 5)==0) {
- fread(&stemp, 2, 1, infp);
- if(into_file)
- fprintf(outfp, "%d,", (int16_t)stemp);
- sprintf(tmp_int, "%d,", (int16_t)stemp);
-#ifdef HAS_MYSQL
- if(into_db)
- strcat(sql_val, tmp_int);
-#endif
- readbytes+=2;
- } else if(strncmp(fmt, "INT32", 5)==0) {
- fread(&ntemp, 4, 1, infp);
- if(into_file)
- fprintf(outfp, "%d,", (int32_t)ntemp);
- snprintf(tmp_int, 20, "%d,", (int32_t)ntemp);
-#ifdef HAS_MYSQL
- if(into_db)
- strcat(sql_val, tmp_int);
-#endif
- readbytes+=4;
- } else if(strncmp(fmt, "INT64", 5)==0) {
- fread(&lltemp, 8, 1, infp);
- if(into_file)
- fprintf(outfp, "%lld,",lltemp);
- snprintf(tmp_int, 30, "%lld,", lltemp);
-#ifdef HAS_MYSQL
- if(into_db)
- strcat(sql_val, tmp_int);
-#endif
- readbytes+=8;
- } else if(strncmp(fmt, "STRING", 6)==0) {
-
-#ifdef HAS_MYSQL
- int tmplen=0;
- if(into_db) {
- tmplen=strlen(sql_val);
- sql_val[tmplen++]='"';
- }
-#endif
- c = fgetc_unlocked(infp);
- ++readbytes;
- while (c && readbytes < size) {
- if(into_file)
- fputc_unlocked(c, outfp);
-#ifdef HAS_MYSQL
- if(into_db)
- sql_val[tmplen++]=c;
-#endif
- c = fgetc_unlocked(infp);
- ++readbytes;
- }
- if(!c) {
- if(into_file)
- fputc_unlocked(',', outfp);
-#ifdef HAS_MYSQL
- if(into_db) {
- sql_val[tmplen++]='"';
- sql_val[tmplen++]=',';
- sql_val[tmplen]='\0';
- }
-#endif
- continue;
- }
- else {
- b2a_error("error processing STRING\n");
- }
- }
- }
- total_bytes += readbytes;
- }
-
-#ifdef HAS_MYSQL
- if(into_db) {
- sql_col[strlen(sql_col)-1] = '\0';
- sql_val[strlen(sql_val)-1] = '\0';
- snprintf(sql, 1024, "insert into %d_%d (%s) values (%s)",
- grpid, hookid, sql_col, sql_val);
-
- if(sql_count >= INSERT_THRESHOLD) {
- if(mysql_query(&mysql, sqlStatement)) {
- b2a_error("Failed exec SQL:\n%s\n, Error:\n%s\n",
- sqlStatement, mysql_error(&mysql));
- }
- while(!mysql_next_result(&mysql));
- sql_count=0;
- sqlStatement[0]='\0';
- } else {
- //strncpy(sqlStatement, sql, 2048);
- strcat(sqlStatement, sql);
- strcat(sqlStatement, ";");
- sql_count++;
- }
- }
-#endif
-
- return total_bytes;
-}
diff --git a/runtime/lket/b2a/lket_b2a.h b/runtime/lket/b2a/lket_b2a.h
deleted file mode 100644
index 46ca91f6..00000000
--- a/runtime/lket/b2a/lket_b2a.h
+++ /dev/null
@@ -1,101 +0,0 @@
-#ifndef _LKET_B2A_H
-#define _LKET_B2A_H
-
-#include <glib.h>
-
-#ifdef HAS_MYSQL
-#include <mysql/mysql.h>
-#endif
-
-typedef struct _percpu_header {
- int32_t seq;
- int32_t len;
-} percpu_header;
-
-#define LKET_MAGIC 0xAEFCDB6B
-
-#define MAX_STRINGLEN 256
-
-#define MAX_GRPID 255
-#define MAX_HOOKID 255
-#define MAX_EVT_TYPES 3
-
-#define DEFAULT_OUTFILE_NAME "lket.out"
-
-/* Group ID Definitions */
-int _GROUP_REGEVT = 1;
-int _GROUP_PROCESS = 3;
-int _GROUP_CPUFREQ = 15;
-
-/* hookIDs defined inside each group */
-int _HOOKID_REGSYSEVT = 1;
-int _HOOKID_REGUSREVT = 3;
-int _HOOKID_REGEVTDESC = 5;
-
-int _HOOKID_PROCESS_SNAPSHOT = 1;
-int _HOOKID_PROCESS_EXECVE = 3;
-int _HOOKID_PROCESS_FORK = 5;
-
-//int _HOOKID_INIT_CPUFREQ = 1;
-int _HOOKID_SWITCH_CPUFREQ = 1;
-
-typedef struct _lket_pkt_header {
- int16_t total_size;
- int16_t sys_size;
- int64_t microsecond;
- /* tid_pid is (tid<<32|pid) */
- int64_t tid_pid;
- /* aggr is the bit-OP of:
- (int64_t)current->parent->tgid << 32 |
- (int32_t)GroupID << 24 | (int32_t)hookID << 16 |
- (int16_t)current->thread_info->cpu << 8
- */
- int64_t aggr;
-} __attribute__((packed)) lket_pkt_header;
-
-#define HDR_TID(ptr) (int32_t)(((ptr)->tid_pid)>>32)
-#define HDR_PID(ptr) (int32_t)((ptr)->tid_pid)
-#define HDR_PPID(ptr) (int32_t)(((ptr)->aggr)>>32)
-#define HDR_GroupID(ptr) (int8_t)(((ptr)->aggr)>>24)
-#define HDR_HookID(ptr) (int8_t)(((ptr)->aggr)>>16)
-#define HDR_CpuID(ptr) (int8_t)(((ptr)->aggr)>>8)
-
-#define MAX_FIELDS 32 /* max fields in a record */
-#define MAX_FIELDNAME_LEN 16 /* max len of a field */
-
-typedef struct {
-#ifdef HAS_MYSQL
- GTree *entrytime;
-#endif
- char evt_fmt[MAX_FIELDS][7]; /* e.g. INT8,STRING,INT16,... */
- char evt_names[MAX_FIELDS][MAX_FIELDNAME_LEN]; /* e.g. protocal,dev_name,buff_len,... */
- char fmt[256]; /* e.g. %1b,%0s,%2b,... */
- char *description; /* a string description of this event, such as "iosyscall.read.entry" */
- int count; /* # of fields */
- int flag; /* a flag indicates whether exists trace data for this event */
-} event_desc;
-
-/*
- * search the lket_init_header structure in a set of input files
- */
-static void find_init_header(FILE **fp, const int total_infiles);
-
-/*
- * read the lket_pkt_header structure at the begining of the input file
- */
-static int get_pkt_header(FILE *fp, lket_pkt_header *phdr);
-
-/*
- * print the lket_pkt_header structure into the output file
- */
-static void print_pkt_header(lket_pkt_header *phdr);
-
-void register_appname(int i, FILE *fp, lket_pkt_header *phdr);
-gint compareFunc(gconstpointer a, gconstpointer b, gpointer user_data);
-void destroyTreeData(gpointer data);
-void register_evt_desc(FILE *infp, size_t size);
-void register_events(int evt_type, FILE *infp, size_t size);
-int dump_data(lket_pkt_header header, FILE *infp);
-char *get_fmtstr(char *fmt);
-
-#endif
diff --git a/safety/README b/safety/README
deleted file mode 100644
index 61eda4a2..00000000
--- a/safety/README
+++ /dev/null
@@ -1,10 +0,0 @@
-This is a static safety-checker for SystemTap modules. It attempts to
-validate modules by checking the opcodes used and the external references
-against a whitelist.
-
-The script relies on external data files to provide the whitelists, which by
-default are in the <script-dir>/data directory. The 'references' file
-provides a plain list of allowed references. The 'opcodes' file provides a
-list of regular expressions that match allowed opcodes. Either data file may
-have an optional kernel and/or architecture suffix, as in 'opcodes-i686' or
-'references-2.6.9-32.ELsmp-x86_64'.
diff --git a/safety/data/opcodes-i686 b/safety/data/opcodes-i686
deleted file mode 100644
index 123fa2b0..00000000
--- a/safety/data/opcodes-i686
+++ /dev/null
@@ -1,107 +0,0 @@
-aaa
-aad
-aam
-aas
-adc[bwl]?
-add[bwl]?
-and[bwl]?
-bound[wl]?
-bsf[wl]?
-bsr[wl]?
-bswapl?
-btc[wl]?
-btr[wl]?
-bts[wl]?
-bt[wl]?
-call
-cbtw
-cbw
-cdq
-clc
-cld
-cli
-cltd
-cmc
-cmovn?(?:a|ae|b|be|c|e|g|ge|l|le|o|p|pe|po|s|z)[wl]?
-cmp[bwl]?
-cmps[bwl]?
-cmpxchg8b
-cmpxchg[bwl]?
-cpuid
-cwd
-cwde
-cwtd
-cwtl
-daa
-das
-dec[bwl]?
-div[bwl]?
-enter
-idiv[bwl]?
-imul[bwl]?
-inc[bwl]?
-je?cxz
-jmp
-jn?(?:a|ae|b|be|c|e|g|ge|l|le|o|p|pe|po|s|z)
-lcall
-lds[wl]?
-leave
-lea[wl]?
-les[wl]?
-lfence
-lfs[wl]?
-lgs[wl]?
-lods[bwl]?
-loopn?[ze]?
-lret
-lss[wl]?
-mfence
-movaps
-mov[bwl]?
-movs[bwl]?
-movsb[wl]?
-movswl?
-movzb[wl]?
-movzwl?
-mul[bwl]?
-neg[bwl]?
-nop
-not[bwl]?
-or[bwl]?
-pause
-popa[wl]?
-popf[wl]?
-pop[wl]?
-prefetch(?:t[012]|nta)
-pusha[wl]?
-pushf[wl]?
-push[wl]?
-rcl[bwl]?
-rcr[bwl]?
-rdmsr
-rdtsc
-ret
-rol[bwl]?
-ror[bwl]?
-sahf
-sal[bwl]?
-sar[bwl]?
-sbb[bwl]?
-scas[bwl]?
-setn?(?:a|ae|b|be|c|e|g|ge|l|le|o|p|pe|po|s|z)
-shl[bwl]?
-shld[bwl]?
-shr[bwl]?
-shrd[bwl]?
-smov[lw]?
-stc
-std
-sti
-stos[bwl]?
-sub[bwl]?
-test[bwl]?
-xadd[bwl]?
-xchg[bwl]?
-xlat
-xlatb
-xor[bwl]?
diff --git a/safety/data/opcodes-ia64 b/safety/data/opcodes-ia64
deleted file mode 100644
index edb1792e..00000000
--- a/safety/data/opcodes-ia64
+++ /dev/null
@@ -1,89 +0,0 @@
-add[sl]?
-addp4
-alloc
-and
-andcm
-br(?:\.cond)?(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)?
-br\.cond(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)?
-br\.call(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)?
-br\.ret(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)?
-br\.cloop(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)?
-br\.ctop(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)?
-br\.cexit(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)?
-br\.wtop(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)?
-br\.wexit(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)?
-brl(?:\.cond)?(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)?
-brl\.call(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)?
-brp(?:\.(?:sptk|loop|exit|dptk))(?:\.imp)?
-brp\.ret(?:\.(?:sptk|loop|exit|dptk))(?:\.imp)?
-chk\.s(?:\.[im])?
-chk\.a\.(?:clr|nc)
-clrrrb
-cmp\.(?:eq|ne|l[te]u?|g[te]u?)(?:\.(?:unc|or|and|or.andcm|orcm|andcm|and.orcm))?
-cmp4\.(?:eq|ne|l[te]u?|g[te]u?)(?:\.(?:unc|or|and|or.andcm|orcm|andcm|and.orcm))?
-cmpxchg[1248]\.(?:acq|rel)(?:\.nt[1a])?
-cmp8xchg16\.(?:acq|rel)(?:\.nt[1a])?
-cover
-czx[12]\.[lr]
-dep(?:\.z)?
-extr(?:\.u)?
-fetchadd[48]\.(?:acq|rel)(?:\.nt[1a])?
-getf\.(?:s|d|exp|sig)
-hint(?:\.[ibmfx])?
-ld[1248](?:\.(?:s|a|sa|c\.nc|c\.clr|c\.clr\.acq|acq|bias))?(?:\.nt[1a])?
-ld8\.fill(?:\.nt[1a])?
-ld16(?:\.acq)?(?:\.nt[1a])?
-ldf8(?:\.(?:s|a|sa|c\.nc|c\.clr))?(?:\.nt[1a])?
-lfetch(?:.fault)?(?:\.excl)?(?:\.nt[12a])?
-mf
-mix[124]\.[lr]
-mov(?:\.[im])?
-mov(?:\.ret)?(?:\.sptk|\.dptk)?(?:\.imp)?
-movl
-mux[12]
-nop(?:\.[ibmfx])?
-or
-pack2\.[us]ss
-pack4.sss
-padd[124]
-padd[12]\.(?:sss|uus|uuu)
-pavg[12](?:\.raz)
-pavgsub[12]
-pcmp[124]\.(?:eq|gt)
-pmax1\.u
-pmax2
-pmin1\.u
-pmin2
-pmpy2\.[rl]
-pmpyshr2(?:\.u)?
-popcnt
-psad1
-pshl[24]
-pshladd2
-pshr[24](?:\.u)?
-pshradd2
-psub[124]
-psub[12]\.(?:sss|uus|uuu)
-rsm
-setf\.(?:s|d|exp|sig)
-shl
-shladd
-shladdp4
-shr(?:\.u)?
-shrp
-srlz\.[id]
-ssm
-st[1248](?:\.rel)?(?:\.nta)?
-st16(?:\.rel)?(?:\.nta)?
-st8\.spill(?:\.nta)?
-stf8(?:\.nta)?
-sub
-sxt[124]
-tbit\.n?z(?:\.(?:unc|or|and|or.andcm|orcm|andcm|and.orcm))?
-tnat\.n?z(?:\.(?:unc|or|and|or.andcm|orcm|andcm|and.orcm))?
-unpack[124]\.[hl]
-xchg[1248](?:\.nt[1a])?
-xma\.[lh]u?
-xmpy\.[lh]u?
-xor
-zxt[124]
diff --git a/safety/data/opcodes-x86_64 b/safety/data/opcodes-x86_64
deleted file mode 100644
index b89df879..00000000
--- a/safety/data/opcodes-x86_64
+++ /dev/null
@@ -1,104 +0,0 @@
-adc[bwlq]?
-add[bwlq]?
-and[bwlq]?
-boundl?
-bsf[wlq]?
-bsr[wlq]?
-bswap[lq]?
-btc[wlq]?
-btr[wlq]?
-bts[wlq]?
-bt[wlq]?
-callq?
-cbtw
-cbw
-cdq
-cdqe
-clc
-cld
-cli
-cltd
-cltq
-cmc
-cmovn?(?:a|ae|b|be|c|e|g|ge|l|le|o|p|pe|po|s|z)[wlq]?
-cmp[bwlq]?
-cmps[bwlq]?
-cmpxchg16b
-cmpxchg8b
-cmpxchg[bwlq]?
-cpuid
-cqo
-cqtd
-cqto
-cwd
-cwde
-cwtd
-cwtl
-dec[bwlq]?
-div[bwlq]?
-enterq?
-idiv[bwlq]?
-imul[bwlq]?
-inc[bwlq]?
-jcxz
-jmpq?
-jn?(?:a|ae|b|be|c|e|g|ge|l|le|o|p|pe|po|s|z)
-lcallq?
-leaveq?
-lea[wlq]?
-lfence
-lfs[wl]?
-lgs[wl]?
-lods[bwlq]?
-loopn?[ze]?
-lretq?
-lss[wl]?
-mfence
-movaps
-mov[bwlq]?
-movs[bwlq]?
-movsb[wlq]?
-movslq?
-movsw[lq]?
-movzb[wlq]?
-movzw[lq]?
-mul[bwlq]?
-neg[bwlq]?
-nop
-not[bwlq]?
-or[bwlq]?
-pause
-popf[wlq]?
-pop[wlq]?
-prefetch(?:t[012]|nta)
-pushf[wlq]?
-push[wlq]?
-rcl[bwlq]?
-rcr[bwlq]?
-rdmsr
-rdtsc
-retq?
-rol[bwlq]?
-ror[bwlq]?
-sahf
-sal[bwlq]?
-sar[bwlq]?
-sbb[bwlq]?
-scas[bwlq]?
-setn?(?:a|ae|b|be|c|e|g|ge|l|le|o|p|pe|po|s|z)
-shl[bwlq]?
-shld[bwlq]?
-shr[bwlq]?
-shrd[bwlq]?
-smov[lw]?
-stc
-std
-sti
-stos[bwlq]?
-sub[bwlq]?
-test[bwlq]?
-xadd[bwlq]?
-xchg[bwlq]?
-xlat
-xlatb
-xor[bwlq]?
diff --git a/safety/data/references b/safety/data/references
deleted file mode 100644
index bfea8e86..00000000
--- a/safety/data/references
+++ /dev/null
@@ -1,94 +0,0 @@
-__alloc_percpu
-autoremove_wake_function
-__bitmap_weight
-cond_resched
-__const_udelay
-copy_from_user
-__copy_from_user_ll
-copy_to_user
-__copy_user
-copy_user_generic
-cpu_callout_map
-cpu_online_map
-cpu_possible_map
-cpu_to_node
-create_proc_entry
-del_timer_sync
-__divdi3
-do_gettimeofday
-__down_failed
-__find_next_bit
-find_next_bit
-finish_wait
-free_percpu
-__get_user_4
-init_timer
-__init_timer_base
-jiffies
-kallsyms_lookup_name
-kfree
-__kmalloc
-kmalloc_node
-kmem_cache_alloc
-malloc_sizes
-memcmp
-memcpy
-memset
-__might_sleep
-__moddi3
-__mod_timer
-mod_timer
-msleep
-node_online_map
-param_get_int
-param_get_long
-param_get_string
-param_set_copystring
-param_set_int
-param_set_long
-per_cpu__cpu_info
-prepare_to_wait
-printk
-proc_mkdir
-proc_root
-_read_lock
-_read_trylock
-_read_unlock
-register_kprobe
-register_kretprobe
-register_profile_notifier
-register_timer_hook
-remove_proc_entry
-schedule
-schedule_delayed_work
-scnprintf
-simple_strtol
-snprintf
-_spin_lock
-_spin_lock_irqsave
-_spin_trylock
-_spin_unlock
-_spin_unlock_irqrestore
-sprintf
-strcmp
-strlcat
-strlcpy
-strlen
-strncmp
-strncpy
-__strncpy_from_user
-strsep
-__udivdi3
-__umoddi3
-unregister_kprobe
-unregister_kretprobe
-unregister_profile_notifier
-unregister_timer_hook
-unw_init_running
-unw_unwind
-__up_wakeup
-vscnprintf
-vsnprintf
-__wake_up
-_write_trylock
-_write_unlock
diff --git a/safety/safety.py b/safety/safety.py
deleted file mode 100755
index 8607ce75..00000000
--- a/safety/safety.py
+++ /dev/null
@@ -1,245 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# vim: noet sw=4 ts=4 enc=utf-8
-"A static safety-checker for SystemTap modules."
-
-# Copyright (C) 2006 Intel Corporation.
-#
-# 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.
-
-
-# in python 2.4, set & frozenset are builtins
-# in python 2.3, the equivalents live in the 'sets' module
-from sys import hexversion as __hexversion
-if __hexversion < 0x020400f0:
- from sets import Set as set, ImmutableSet as frozenset
-
-
-def main(argv):
- """
- CLI to the SystemTap static safety-checker.
-
- Provides a command-line interface for running the SystemTap module
- safety checker. Use '-h' or '--help' for a description of the
- command-line options.
-
- Returns the number of modules that failed the check.
- """
- bad = 0
- (options, args) = __parse_args(argv[1:])
- safe = StaticSafety(options.arch, options.release, options.datapath)
- for m in args:
- if not safe.check_module(m):
- bad += 1
- return bad
-
-
-def __parse_args(argv):
- from optparse import OptionParser
- parser = OptionParser(usage="usage: %prog [options] [module]...",
- description=__doc__)
- parser.add_option('--data-path', dest='datapath', metavar='PATH',
- help='specify the whitelist data files [default: <script-dir>/data]')
- parser.add_option('-m', '--machine', '--architecture', dest='arch',
- help='specify the machine architecture of the target')
- parser.add_option('-r', '--kernel-release', dest='release',
- help='specify the kernel release running on the target')
- return parser.parse_args(argv)
-
-
-class StaticSafety:
- "Manage a safety-checking session."
-
- def __init__(self, arch=None, release=None, datapath=None):
- from os import uname
- self.__arch = arch or uname()[4]
- self.__release = release or uname()[2]
- self.__build_data_path(datapath)
- self.__build_search_suffixes()
- self.__load_allowed_references()
- self.__load_allowed_opcodes()
-
- def __build_data_path(self, datapath):
- "Determine where the data directory resides."
- from sys import argv
- from os.path import dirname, isdir, realpath
- if datapath is None:
- local = dirname(realpath(argv[0]))
- self.__data_path = local + '/data'
- else:
- self.__data_path = datapath
-
- if not isdir(self.__data_path):
- raise StandardError(
- "Can't find the data directory! (looking in %s)"
- % self.__data_path)
-
- def __build_search_suffixes(self):
- "Construct arch & kernel-versioning search suffixes."
- ss = set()
-
- # add empty string
- ss.add('')
-
- # add architecture search path
- archsfx = '-%s' % self.__arch
- ss.add(archsfx)
-
- # add full kernel-version-release (2.6.NN-FOOBAR) + arch
- relsfx = '-%s' % self.__release
- ss.add(relsfx)
- ss.add(relsfx + archsfx)
-
- # add kernel version (2.6.NN) + arch
- dash_i = relsfx.find('-')
- if dash_i > 0:
- ss.add(relsfx[:dash_i])
- ss.add(relsfx[:dash_i] + archsfx)
-
- # start dropping decimals
- dot_i = relsfx.rfind('.', 0, dash_i)
- while dot_i > 0:
- ss.add(relsfx[:dot_i])
- ss.add(relsfx[:dot_i] + archsfx)
- dot_i = relsfx.rfind('.', 0, dot_i)
-
- self.__search_suffixes = frozenset(ss)
-
- def __load_allowed_references(self):
- "Build the list of allowed external references from the data files."
- wr = set()
- for sfx in self.__search_suffixes:
- try:
- refs = open(self.__data_path + '/references' + sfx)
- for line in refs:
- wr.add(line.rstrip())
- refs.close()
- except IOError:
- pass
- if not len(wr):
- raise StandardError("No whitelisted references found!")
- self.__white_references = frozenset(wr)
-
- def __load_allowed_opcodes(self):
- "Build the regular expression matcher for allowed opcodes from the data files."
- from re import compile
- wo = []
- for sfx in self.__search_suffixes:
- try:
- opcs = open(self.__data_path + '/opcodes' + sfx)
- for line in opcs:
- wo.append(line.rstrip())
- opcs.close()
- except IOError:
- pass
- if not len(wo):
- raise StandardError("No whitelisted opcodes found!")
- self.__white_opcodes_re = compile(r'^(?:' + r'|'.join(wo) + r')$')
-
- def __check_references(self, module):
- "Check that all unresolved references in the module are allowed."
- from os import popen
- from re import compile
-
- sym_re = compile(r'^([\w@.]+) [Uw]\s+$')
- def check(line):
- m = sym_re.match(line)
- if m:
- ref = m.group(1)
- if ref not in self.__white_references:
- print 'ERROR: Invalid reference to %s' % ref
- return False
- return True
- print 'WARNING: Unmatched line:\n %s' % `line`
- return True
-
- command = 'nm --format=posix --no-sort --undefined-only ' + `module`
- ok = True
- nm = popen(command)
- for line in nm:
- ok &= check(line)
- if nm.close():
- ok = False
- return ok
-
- def __check_opcodes(self, module):
- "Check that all disassembled opcodes in the module are allowed."
- from os import popen
- from re import compile
-
- skip_ud2a = [0]
-
- ignore_re = compile(r'^$|^\s+\.{3}$|^.*Disassembly of section|^.*file format')
- if self.__arch == 'ia64':
- opc = r'(?:\[[IBFLMX]{3}\]\s+)?(?:\(p\d\d\)\s+)?([\w.]+)\b'
- elif self.__arch == 'x86_64' or self.__arch == 'i686':
- opc = r'(?:lock\s+)?|(?:repn?[ze]?\s+)?|(?:rex\w+\s+)?(\w+)\b'
- else:
- opc = r'(\w+)\b'
- opc_re = compile(r'^[A-Fa-f\d]+\s+<([^>]+)>\s+%s' % opc)
- def check(line):
- m = ignore_re.match(line)
- if m:
- return True
- m = opc_re.match(line)
- if m:
- loc, opc = m.groups()
- if opc == 'ud2a':
- # The kernel abuses ud2a for BUG checks by following it
- # directly with __LINE__ and __FILE__. Objdump doesn't
- # know this though, so it tries to interpret the data as
- # real instructions. Because x86(-64) instructions are
- # variable-length, it's hard to tell when objdump is synced
- # up again. We'll fast-forward to the next function
- # boundary and hope things are better there.
- for skip in objdump:
- mskip = opc_re.match(skip)
- if mskip:
- locskip = mskip.group(1)
- # a loc without an offset marks a new function
- if '+' not in locskip:
- return check(skip)
- skip_ud2a[0] += 1
- return True
- elif not self.__white_opcodes_re.match(opc):
- print "ERROR: Invalid opcode '%s' at <%s>" % (opc, loc)
- return False
- return True
- print 'WARNING: Unmatched line:\n %s' % `line`
- return True
-
- command = 'objdump --disassemble --prefix-addresses ' + `module`
- ok = True
- objdump = popen(command)
- for line in objdump:
- ok &= check(line)
- if objdump.close():
- ok = False
-
- if skip_ud2a[0]:
- #print 'WARNING: Skipped %d lines due to ud2a corruption' % skip_ud2a[0]
- pass
-
- return ok
-
- def check_module(self, module):
- "Check a module for exclusively safe opcodes and external references."
- from os.path import isfile
- if not isfile(module):
- print 'ERROR: %s is not a file!' % `module`
- return False
- res = self.__check_references(module) and self.__check_opcodes(module)
- if res:
- print 'PASS: %s' % module
- else:
- print 'FAIL: %s' % module
- return res
-
-
-if __name__ == '__main__':
- from sys import exit, argv
- exit(main(argv))
-
diff --git a/tapset/DEVGUIDE b/tapset/DEVGUIDE
index 44c4890c..3d550319 100644
--- a/tapset/DEVGUIDE
+++ b/tapset/DEVGUIDE
@@ -106,7 +106,7 @@ of "Tapset files", "Namespace" and "Embedded C & Safety."
Tapset files
------------
-Tapset files are stored in src/tapset in the SystemTap CVS directory.
+Tapset files are stored in src/tapset in the SystemTap GIT directory.
Most are kept at that level. If you have code that only works on a specific
architecture or kernel-version, you may choose to put that in the
corresponding subdirectories.
@@ -161,7 +161,7 @@ Update other Makefiles as necessary.
Test cases
----------
All tapsets should be accompanied by test scripts. The tests are kept
-in src/testsuite in CVS and based on dejagnu. You must have dejagnu and
+in src/testsuite in GIT and based on dejagnu. You must have dejagnu and
expect installed on your system to run the tests.
Your tests should validate that:
@@ -182,7 +182,7 @@ most important, it validates that the tapset can actually be used for
something useful. If you can't write a script that uses the tapset in a
meaningful way, perhaps you should rethink what the tapset provides.
-Example scripts are stored in src/examples in CVS.
+Example scripts are stored in src/examples in GIT.
Change Logs
-----------
@@ -211,7 +211,7 @@ mailing list archive is found at http://sources.redhat.com/ml/systemtap/.
The systemtap-cvs mailing list archive is at
http://sources.redhat.com/ml/systemtap-cvs/.
-You can request CVS write access at
+You can request GIT write access at
http://sources.redhat.com/cgi-bin/pdw/ps_form.cgi.
@@ -227,11 +227,11 @@ you with SystemTap:
- SystemTap project home page
(http://sourceware.org/systemtap/index.html)
-- SystemTap mailing lists, IRC channels and CVS instructions
+- SystemTap mailing lists, IRC channels and GIT instructions
(http://sourceware.org/systemtap/getinvolved.html)
-- CVS repository
- (http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/?cvsroot=systemtap)
+- GIT repository
+ (http://sources.redhat.com/git/?p=systemtap.git;a=summary
- HACKING file in the source directory. This file outlines what's
expected of project contributors.
diff --git a/testsuite/ChangeLog b/testsuite/ChangeLog
index 44eb50a7..da789127 100644
--- a/testsuite/ChangeLog
+++ b/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-03-31 Frank Ch. Eigler <fche@elastic.org>
+
+ * configure.ac: Bump version to 0.7.
+ * configure: Regenerated.
+
2008-03-27 Frank Ch. Eigler <fche@elastic.org>
* systemtap.base/cmd_parse.exp: Don't assume $SHELL=bash.
diff --git a/testsuite/configure b/testsuite/configure
index bafa86d8..bd8237cb 100755
--- a/testsuite/configure
+++ b/testsuite/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for systemtap 0.6.2.
+# Generated by GNU Autoconf 2.61 for systemtap 0.7.
#
# Report bugs to <systemtap@sources.redhat.com>.
#
@@ -574,8 +574,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='systemtap'
PACKAGE_TARNAME='systemtap'
-PACKAGE_VERSION='0.6.2'
-PACKAGE_STRING='systemtap 0.6.2'
+PACKAGE_VERSION='0.7'
+PACKAGE_STRING='systemtap 0.7'
PACKAGE_BUGREPORT='systemtap@sources.redhat.com'
ac_subst_vars='SHELL
@@ -1148,7 +1148,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.6.2 to adapt to many kinds of systems.
+\`configure' configures systemtap 0.7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1214,7 +1214,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of systemtap 0.6.2:";;
+ short | recursive ) echo "Configuration of systemtap 0.7:";;
esac
cat <<\_ACEOF
@@ -1285,7 +1285,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-systemtap configure 0.6.2
+systemtap configure 0.7
generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1299,7 +1299,7 @@ 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.6.2, which was
+It was created by systemtap $as_me 0.7, which was
generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
@@ -1991,7 +1991,7 @@ fi
# Define the identity of the package.
PACKAGE='systemtap'
- VERSION='0.6.2'
+ VERSION='0.7'
cat >>confdefs.h <<_ACEOF
@@ -2595,7 +2595,7 @@ 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.6.2, which was
+This file was extended by systemtap $as_me 0.7, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -2638,7 +2638,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-systemtap config.status 0.6.2
+systemtap config.status 0.7
configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff --git a/testsuite/configure.ac b/testsuite/configure.ac
index 8f924936..70d01e96 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.6.2, systemtap@sources.redhat.com, systemtap)
+AC_INIT([systemtap], 0.7, systemtap@sources.redhat.com, systemtap)
AC_PREREQ(2.59)
AC_CONFIG_AUX_DIR(..)