diff --git a/.devtoolset-4-systemtap.metadata b/.devtoolset-4-systemtap.metadata new file mode 100644 index 0000000..ffb86ad --- /dev/null +++ b/.devtoolset-4-systemtap.metadata @@ -0,0 +1 @@ +95034e8243e1f9fd33b765afda06546083df1b7f SOURCES/systemtap-2.8.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f9912e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/systemtap-2.8.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/june-robust.patch b/SOURCES/june-robust.patch new file mode 100644 index 0000000..8dead9f --- /dev/null +++ b/SOURCES/june-robust.patch @@ -0,0 +1,132 @@ +commit 81bde8f873216c116988a98a0804dd79009b3d40 +Author: Mark Wielaard +Date: Mon Jun 22 16:57:59 2015 +0200 + + runtime/unwind.c: Also sanity check DWARF regno for DW_CFA_restore[_extended]. + + When processCFI wanted to restore a register state to its initial value it + wasn't checking whether the register was actually interesting (or existing). + DWARF_REG_MAP might return a marker (9999) that we don't know or don't care + about this register. This was checked in all the set_*_rule functions, but + not in the case we reset the rule of the register. Add this check also for + DW_CFA_restore[_extended]. + +diff --git a/runtime/unwind.c b/runtime/unwind.c +index d38363b..4dbab33 100644 +--- a/runtime/unwind.c ++++ b/runtime/unwind.c +@@ -426,7 +426,8 @@ static int processCFI(const u8 *start, const u8 *end, unsigned long targetLoc, + value, DWARF_REG_MAP(value)); + value = DWARF_REG_MAP(value); + } +- memcpy(®_STATE.regs[value], &state->cie_regs[value], sizeof(struct unwind_item)); ++ if (value < ARRAY_SIZE(REG_STATE.regs)) ++ memcpy(®_STATE.regs[value], &state->cie_regs[value], sizeof(struct unwind_item)); + break; + case DW_CFA_undefined: + value = get_uleb128(&ptr.p8, end); +@@ -641,7 +642,8 @@ static int processCFI(const u8 *start, const u8 *end, unsigned long targetLoc, + value, DWARF_REG_MAP(value)); + value = DWARF_REG_MAP(value); + } +- memcpy(®_STATE.regs[value], &state->cie_regs[value], sizeof(struct unwind_item)); ++ if (value < ARRAY_SIZE(REG_STATE.regs)) ++ memcpy(®_STATE.regs[value], &state->cie_regs[value], sizeof(struct unwind_item)); + break; + } + dbug_unwind(1, "targetLoc=%lx state->loc=%lx\n", targetLoc, state->loc); + +commit db6670607f9ba837a7a7af8a0ea076595e9eca1d +Author: David Smith +Date: Tue Jun 30 15:24:54 2015 -0500 + + Two small stat code fixes found by source analysis. + + * runtime/stat-common.c (_stp_stat_print_histogram_buf): Fixed small + potential overflow problem by widening values. + * runtime/stat.c (_stp_stat_init): Fixed missing 'va_end' call in an error + situation. + +diff --git a/runtime/stat-common.c b/runtime/stat-common.c +index f8372ac..4491b27 100644 +--- a/runtime/stat-common.c ++++ b/runtime/stat-common.c +@@ -261,10 +261,10 @@ static void _stp_stat_print_histogram_buf(char *buf, size_t size, Hist st, + val_prefix = "<"; + } else if (i == st->buckets-1) { + /* overflow */ +- val = st->start + (i - 2) * st->interval; ++ val = st->start + (int64_t)(i - 2) * st->interval; + val_prefix = ">"; + } else +- val = st->start + (i - 1) * st->interval; ++ val = st->start + (int64_t)(i - 1) * st->interval; + } else + val = _stp_bucket_to_val(i); + +diff --git a/runtime/stat.c b/runtime/stat.c +index 63ffccc..fa5939b 100644 +--- a/runtime/stat.c ++++ b/runtime/stat.c +@@ -71,8 +71,10 @@ static Stat _stp_stat_init (int type, ...) + interval = va_arg(ap, int); + + buckets = _stp_stat_calc_buckets(stop, start, interval); +- if (!buckets) ++ if (!buckets) { ++ va_end (ap); + return NULL; ++ } + } + va_end (ap); + } + +commit 39c6af0c27dfd5cdd71ee60e1667d40d101ff8ac +Author: Mark Wielaard +Date: Tue Jun 30 21:54:28 2015 +0200 + + unwind.c (compute_expr): Don't fallthrough after div/mod/shr. + + When processing DW_OP_div, DW_OP_mod or DW_OP_shr compute_expr + would accidentially fallthrough to the next case statement causing + the DWARF value stack to contain wrong values. + +diff --git a/runtime/unwind.c b/runtime/unwind.c +index 4dbab33..b5c8f6f 100644 +--- a/runtime/unwind.c ++++ b/runtime/unwind.c +@@ -1036,6 +1036,7 @@ static int compute_expr(const u8 *expr, struct unwind_frame_info *frame, + if (b == 0) + goto divzero; + PUSH (a % b); ++ break; + } + + case DW_OP_div: { +@@ -1044,12 +1045,14 @@ static int compute_expr(const u8 *expr, struct unwind_frame_info *frame, + if (b == 0) + goto divzero; + PUSH (a / b); ++ break; + } + + case DW_OP_shr: { + unsigned long b = POP; + unsigned long a = POP; + PUSH (a >> b); ++ break; + } + + case DW_OP_not: +diff --git a/runtime/unwind/unwind.h b/runtime/unwind/unwind.h +index e81e741..d72f68d 100644 +--- a/runtime/unwind/unwind.h ++++ b/runtime/unwind/unwind.h +@@ -157,6 +157,7 @@ static unsigned long read_ptr_sect(const u8 **pLoc, const void *end, + #else + BUILD_BUG_ON(sizeof(u32) != sizeof(value)); + #endif ++ /* fallthrough, see above. */ + case DW_EH_PE_absptr: + if (compat_task) + { diff --git a/SOURCES/rhbz1237098.patch b/SOURCES/rhbz1237098.patch new file mode 100644 index 0000000..eea1698 --- /dev/null +++ b/SOURCES/rhbz1237098.patch @@ -0,0 +1,157 @@ +commit 6121861509bf5862b2869c71c7d1bbf618f45d46 +Author: Josh Stone +Date: Mon Jul 6 11:35:51 2015 -0700 + + PR18555: prefer linkage_name to match the symtab + + DW_AT_name is usually only the same as the symbol table for C. C++ + names are mangled, which may be given by DW_AT_linkage_name. So if we + want to compare a DWARF subprogram to the symbol table by name, we + should prefer the linkage name when it's available. + + This mattered especially for ppc64le, where query_dwarf_func was trying + to apply the global/local symbol offset. When we took a DWARF C++ + function and tried to find that name in the symbol table for its offset, + there was no match, so the function wouldn't be resolved at all. + + Now that lookup uses the linkage name. If there's still no match, like + with a stripped symbol table, then it falls through to just use DWARF's + entrypc as usual. + + This patch also maintains the raw "addr" and offset "entrypc" separately + for symbol table functions, so for instance update_symtab can still + compare the original address. + +diff --git a/tapsets.cxx b/tapsets.cxx +index fed4166..54f9d3d 100644 +--- a/tapsets.cxx ++++ b/tapsets.cxx +@@ -415,7 +415,7 @@ symbol_table + // Set to SHN_UNDEF if there is no such section. + GElf_Word opd_section; + void add_symbol(const char *name, bool weak, bool descriptor, +- Dwarf_Addr addr, Dwarf_Addr *high_addr); ++ Dwarf_Addr addr, Dwarf_Addr entrypc); + enum info_status get_from_elf(); + void prepare_section_rejection(Dwfl_Module *mod); + bool reject_section(GElf_Word section); +@@ -1068,19 +1068,19 @@ query_symtab_func_info (func_info & fi, dwarf_query * q) + { + assert(null_die(&fi.die)); + +- Dwarf_Addr addr = fi.addr; ++ Dwarf_Addr entrypc = fi.entrypc; + + // Now compensate for the dw bias because the addresses come +- // from dwfl_module_symtab, so fi->addr is NOT a normal dw address. ++ // from dwfl_module_symtab, so fi->entrypc is NOT a normal dw address. + q->dw.get_module_dwarf(false, false); +- addr -= q->dw.module_bias; ++ entrypc -= q->dw.module_bias; + + // If there are already probes in this module, lets not duplicate. + // This can come from other weak symbols/aliases or existing +- // matches from Dwarf DIE functions. Try to add this addr to the ++ // matches from Dwarf DIE functions. Try to add this entrypc to the + // collection, and only continue if it was new. +- if (q->alias_dupes.insert(addr).second) +- query_func_info(addr, fi, q); ++ if (q->alias_dupes.insert(entrypc).second) ++ query_func_info(entrypc, fi, q); + } + + void +@@ -2059,7 +2059,7 @@ query_dwarf_inline_instance (Dwarf_Die * die, dwarf_query * q) + } + + static bool +-is_filtered_func_exists (func_info_map_t filtered, func_info *fi) ++is_filtered_func_exists (func_info_map_t const& filtered, func_info *fi) + { + for (unsigned i = 0; i < filtered.size(); i++) + { +@@ -2135,16 +2135,22 @@ query_dwarf_func (Dwarf_Die * func, dwarf_query * q) + if ((em->e_machine == EM_PPC64) && ((em->e_flags & EF_PPC64_ABI) == 2) + && (q->dw.mod_info->sym_table)) + { +- set fis = q->dw.mod_info->sym_table->lookup_symbol(func.name); ++ /* The linkage name is the best match for the symbol table. */ ++ const string& linkage_name = dwarf_linkage_name(&func.die) ++ ?: dwarf_diename(&func.die) ?: func.name; ++ ++ set fis = q->dw.mod_info->sym_table->lookup_symbol(linkage_name); + for (set::iterator it=fis.begin(); it!=fis.end() ; ++it) + { +- func.entrypc = (*it)->addr; ++ func.entrypc = (*it)->entrypc; + if (is_filtered_func_exists(q->filtered_functions, &func)) + continue; + q->filtered_functions.push_back(func); + } + } +- else if (!func.entrypc && q->dw.function_entrypc (&entrypc)) ++ ++ /* If not ppc64 or not found in sym_table, try it directly. */ ++ if (!func.entrypc && q->dw.function_entrypc (&entrypc)) + { + func.entrypc = entrypc; + q->filtered_functions.push_back (func); +@@ -8201,7 +8207,7 @@ symbol_table::~symbol_table() + + void + symbol_table::add_symbol(const char *name, bool weak, bool descriptor, +- Dwarf_Addr addr, Dwarf_Addr* /*high_addr*/) ++ Dwarf_Addr addr, Dwarf_Addr entrypc) + { + /* Does the target architecture have function descriptors? + Then we want to filter them out. When seeing a symbol with a name +@@ -8224,6 +8230,7 @@ symbol_table::add_symbol(const char *name, bool weak, bool descriptor, + } + + func_info *fi = new func_info(); ++ fi->entrypc = entrypc; + fi->addr = addr; + fi->name = name; + fi->weak = weak; +@@ -8288,7 +8295,6 @@ symbol_table::reject_section(GElf_Word section) + enum info_status + symbol_table::get_from_elf() + { +- Dwarf_Addr high_addr = 0; + Dwfl_Module *mod = mod_info->mod; + int syments = dwfl_module_getsymtab(mod); + assert(syments); +@@ -8336,13 +8342,14 @@ symbol_table::get_from_elf() + * + * st_other field is currently only used with ABIv2 on ppc64 + */ ++ Dwarf_Addr entrypc = addr; + if ((em->e_machine == EM_PPC64) && ((em->e_flags & EF_PPC64_ABI) == 2) + && (GELF_ST_TYPE(sym.st_info) == STT_FUNC) && sym.st_other) +- addr += PPC64_LOCAL_ENTRY_OFFSET(sym.st_other); ++ entrypc += PPC64_LOCAL_ENTRY_OFFSET(sym.st_other); + + if (name && GELF_ST_TYPE(sym.st_info) == STT_FUNC) + add_symbol(name, (GELF_ST_BIND(sym.st_info) == STB_WEAK), +- reject, addr, &high_addr); ++ reject, addr, entrypc); + if (name && GELF_ST_TYPE(sym.st_info) == STT_OBJECT + && GELF_ST_BIND(sym.st_info) == STB_GLOBAL) + globals[name] = addr; +@@ -8486,12 +8493,13 @@ module_info::update_symtab(cu_function_cache_t *funcs) + continue; + } + +- // XXX We may want to make additional efforts to match mangled elf names +- // to dwarf too. MIPS_linkage_name can help, but that's sometimes ++ // We need to make additional efforts to match mangled elf names to dwarf ++ // too. DW_AT_linkage_name (or w/ MIPS) can help, but that's sometimes + // missing, so we may also need to try matching by address. See also the + // notes about _Z in dwflpp::iterate_over_functions(). ++ const string& name = dwarf_linkage_name(&func->second) ?: func->first; + +- set fis = sym_table->lookup_symbol(func->first); ++ set fis = sym_table->lookup_symbol(name); + if (fis.empty()) + continue; + diff --git a/SPECS/systemtap.spec b/SPECS/systemtap.spec new file mode 100644 index 0000000..a1bec43 --- /dev/null +++ b/SPECS/systemtap.spec @@ -0,0 +1,1092 @@ +%{?scl:%scl_package systemtap} +%global sysconfdir %{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir} + +%{!?with_sqlite: %global with_sqlite 1} +%{!?with_docs: %global with_docs 1} +# crash is not available +%ifarch ppc ppc64 %{sparc} aarch64 ppc64le +%{!?with_crash: %global with_crash 0} +%else +%{!?with_crash: %global with_crash 1} +%endif +%{!?with_rpm: %global with_rpm 1} +%{!?with_bundled_elfutils: %global with_bundled_elfutils 0} +%{!?elfutils_version: %global elfutils_version 0.142} +%{!?pie_supported: %global pie_supported 1} +%{!?with_boost: %global with_boost 0} +%{!?with_dyninst: %global with_dyninst 1} +%{!?with_emacsvim: %global with_emacsvim 0} +%{!?with_systemd: %global with_systemd 0} # disable even on rhel7 +%{!?with_emacsvim: %global with_emacsvim 0} +%{!?with_java: %global with_java 0} +# don't want to build runtime-virthost for f18 or RHEL5/6 +%{!?with_virthost: %global with_virthost 0} +%{!?with_virtguest: %global with_virtguest 0} +%{!?with_dracut: %global with_dracut 0%{?fedora} >= 19 || 0%{?rhel} >= 7} +%ifarch x86_64 +%{!?with_mokutil: %global with_mokutil 0%{?fedora} >= 18 || 0%{?rhel} >= 7} +%{!?with_openssl: %global with_openssl 0%{?fedora} >= 18 || 0%{?rhel} >= 7} +%else +%{!?with_mokutil: %global with_mokutil 0} +%{!?with_openssl: %global with_openssl 0} +%endif +%{!?with_pyparsing: %global with_pyparsing 0%{?fedora} >= 18 || 0%{?rhel} >= 7} + +%ifarch ppc64le aarch64 +%global with_virthost 0 +%endif + +%if 0%{?fedora} >= 18 || 0%{?rhel} >= 6 + %define initdir %{sysconfdir}/rc.d/init.d +# not scl-wrapped %{_initdir} +%else # RHEL5 doesn't know _initddir + %define initdir %{_initrddir} +%endif + +# note not under /opt/rh... SCL special +%define dracutlibdir %{_root_prefix}/lib/dracut +%define dracutstap %{dracutlibdir}/modules.d/99%{scl_prefix}stap + +Name: %{?scl_prefix}systemtap +Version: 2.8 +Release: 4%{?dist} +# for version, see also configure.ac + +Patch1: rhbz1237098.patch +Patch2: june-robust.patch + +# Packaging abstract: +# +# systemtap empty req:-client req:-devel +# systemtap-server /usr/bin/stap-server*, req:-devel +# systemtap-devel /usr/bin/stap, runtime, tapset, req:kernel-devel +# systemtap-runtime /usr/bin/staprun, /usr/bin/stapsh, /usr/bin/stapdyn +# systemtap-client /usr/bin/stap, samples, docs, tapset(bonus), req:-runtime +# systemtap-initscript /etc/init.d/systemtap, dracut module, req:systemtap +# systemtap-sdt-devel /usr/include/sys/sdt.h /usr/bin/dtrace +# systemtap-testsuite /usr/share/systemtap/testsuite*, req:systemtap, req:sdt-devel +# systemtap-runtime-java libHelperSDT.so, HelperSDT.jar, stapbm, req:-runtime +# systemtap-runtime-virthost /usr/bin/stapvirt, req:libvirt req:libxml2 +# systemtap-runtime-virtguest udev rules, init scripts/systemd service, req:-runtime +# +# Typical scenarios: +# +# stap-client: systemtap-client +# stap-server: systemtap-server +# local user: systemtap +# +# Unusual scenarios: +# +# intermediary stap-client for --remote: systemtap-client (-runtime unused) +# intermediary stap-server for --use-server: systemtap-server (-devel unused) + +Summary: Programmable system-wide instrumentation system +Group: Development/System +License: GPLv2+ +URL: http://sourceware.org/systemtap/ +Source: ftp://sourceware.org/pub/systemtap/releases/systemtap-%{version}.tar.gz + +# Build* +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: gcc-c++ +BuildRequires: gettext-devel +BuildRequires: nss-devel avahi-devel pkgconfig +%if %{with_dyninst} +BuildRequires: %{?scl_prefix}dyninst-devel >= 8.0 +BuildRequires: libselinux-devel +%endif +%if %{with_sqlite} +BuildRequires: sqlite-devel +%endif +# Needed for libstd++ < 4.0, without +%if %{with_boost} +BuildRequires: boost-devel +%endif +%if %{with_crash} +BuildRequires: crash-devel zlib-devel +%endif +%if %{with_rpm} +BuildRequires: rpm-devel glibc-headers +%endif +%if %{with_bundled_elfutils} +Source1: elfutils-%{elfutils_version}.tar.gz +Patch1: elfutils-portability.patch +BuildRequires: m4 +%global setup_elfutils -a1 +%else +BuildRequires: %{?scl_prefix}elfutils-devel >= %{elfutils_version} +%endif +%if %{with_docs} +BuildRequires: /usr/bin/latex /usr/bin/dvips /usr/bin/ps2pdf latex2html +%if 0%{?fedora} >= 18 || 0%{?rhel} >= 7 +BuildRequires: tex(fullpage.sty) tex(fancybox.sty) tex(bchr7t.tfm) +%endif +# On F10, xmlto's pdf support was broken off into a sub-package, +# called 'xmlto-tex'. To avoid a specific F10 BuildReq, we'll do a +# file-based buildreq on '/usr/share/xmlto/format/fo/pdf'. +BuildRequires: xmlto /usr/share/xmlto/format/fo/pdf +%endif +%{?scl:Requires:%scl_runtime} + +%if %{with_emacsvim} +BuildRequires: emacs +%endif + +# Install requirements +Requires: %{?scl_prefix}systemtap-client = %{version}-%{release} +Requires: %{?scl_prefix}systemtap-devel = %{version}-%{release} + +%description +SystemTap is an instrumentation system for systems running Linux. +Developers can write instrumentation scripts to collect data on +the operation of the system. The base systemtap package contains/requires +the components needed to locally develop and execute systemtap scripts. + +# ------------------------------------------------------------------------ + +%package server +Summary: Instrumentation System Server +Group: Development/System +License: GPLv2+ +URL: http://sourceware.org/systemtap/ +Requires: %{?scl_prefix}systemtap-devel = %{version}-%{release} +# On RHEL[45], /bin/mktemp comes from the 'mktemp' package. On newer +# distributions, /bin/mktemp comes from the 'coreutils' package. To +# avoid a specific RHEL[45] Requires, we'll do a file-based require. +Requires: nss /bin/mktemp +Requires: zip unzip +Requires(pre): shadow-utils +Requires(post): chkconfig +Requires(preun): chkconfig +Requires(preun): initscripts +Requires(postun): initscripts +BuildRequires: nss-devel avahi-devel +%if %{with_openssl} +Requires: openssl +%endif + +%description server +This is the remote script compilation server component of systemtap. +It announces itself to nearby clients with avahi (if available), and +compiles systemtap scripts to kernel objects on their demand. + + +%package devel +Summary: Programmable system-wide instrumentation system - development headers, tools +Group: Development/System +License: GPLv2+ +URL: http://sourceware.org/systemtap/ +# Alternate kernel packages kernel-PAE-devel et al. have a virtual +# provide for kernel-devel, so this requirement does the right thing, +# at least past RHEL4. +Requires: kernel-devel +Requires: gcc make +# Suggest: kernel-debuginfo + +%description devel +This package contains the components needed to compile a systemtap +script from source form into executable (.ko) forms. It may be +installed on a self-contained developer workstation (along with the +systemtap-client and systemtap-runtime packages), or on a dedicated +remote server (alongside the systemtap-server package). It includes +a copy of the standard tapset library and the runtime library C files. + + +%package runtime +Summary: Programmable system-wide instrumentation system - runtime +Group: Development/System +License: GPLv2+ +URL: http://sourceware.org/systemtap/ +Requires(pre): shadow-utils + +%description runtime +SystemTap runtime contains the components needed to execute +a systemtap script that was already compiled into a module +using a local or remote systemtap-devel installation. + + +%package client +Summary: Programmable system-wide instrumentation system - client +Group: Development/System +License: GPLv2+ +URL: http://sourceware.org/systemtap/ +Requires: zip unzip +Requires: %{?scl_prefix}systemtap-runtime = %{version}-%{release} +Requires: coreutils grep sed unzip zip +Requires: openssh-clients +%if %{with_mokutil} +Requires: mokutil +%endif + +%description client +This package contains/requires the components needed to develop +systemtap scripts, and compile them using a local systemtap-devel +or a remote systemtap-server installation, then run them using a +local or remote systemtap-runtime. It includes script samples and +documentation, and a copy of the tapset library for reference. + + +%package initscript +Summary: Systemtap Initscripts +Group: Development/System +License: GPLv2+ +URL: http://sourceware.org/systemtap/ +Requires: %{?scl_prefix}systemtap = %{version}-%{release} +Requires(post): chkconfig +Requires(preun): chkconfig +Requires(preun): initscripts +Requires(postun): initscripts + +%description initscript +This package includes a SysVinit script to launch selected systemtap +scripts at system startup, along with a dracut module for early +boot-time probing if supported. + + +%package sdt-devel +Summary: Static probe support tools +Group: Development/System +License: GPLv2+ and Public Domain +URL: http://sourceware.org/systemtap/ +%if %{with_pyparsing} +Requires: pyparsing +%endif + +%description sdt-devel +This package includes the header file used for static +instrumentation compiled into userspace programs and libraries, along +with the optional dtrace-compatibility preprocessor to process related +.d files into tracing-macro-laden .h headers. + + +%package testsuite +Summary: Instrumentation System Testsuite +Group: Development/System +License: GPLv2+ +URL: http://sourceware.org/systemtap/ +Requires: %{?scl_prefix}systemtap = %{version}-%{release} +Requires: %{?scl_prefix}systemtap-sdt-devel = %{version}-%{release} +Requires: %{?scl_prefix}systemtap-server = %{version}-%{release} +Requires: %{?scl_prefix}elfutils +Requires: dejagnu which prelink grep nc +Requires: gcc gcc-c++ make glibc-devel +# testsuite/systemtap.base/ptrace.exp needs strace +Requires: strace +# testsuite/systemtap.base/ipaddr.exp needs nc. Unfortunately, the rpm +# that provides nc has changed over time (from 'nc' to +# 'nmap-ncat'). So, we'll do a file-based require. +Requires: /usr/bin/nc +%ifnarch ia64 ppc64le aarch64 +Requires: prelink +%endif +# testsuite/systemtap.server/client.exp needs avahi +Requires: avahi +%if %{with_crash} +# testsuite/systemtap.base/crash.exp needs crash +Requires: crash +%endif +%ifarch x86_64 +Requires: /usr/lib/libc.so +# ... and /usr/lib/libgcc_s.so.* +# ... and /usr/lib/libstdc++.so.* +%endif +%if 0%{?fedora} >= 18 +Requires: stress +%endif + +%description testsuite +This package includes the dejagnu-based systemtap stress self-testing +suite. This may be used by system administrators to thoroughly check +systemtap on the current system. + +# ------------------------------------------------------------------------ + +%prep +%setup -q -n systemtap-%{version} %{?setup_elfutils} +%patch1 -p1 +%patch2 -p1 + +%if %{with_bundled_elfutils} +cd elfutils-%{elfutils_version} +%patch1 -p2 + +sleep 1 +find . \( -name Makefile.in -o -name aclocal.m4 \) -print | xargs touch +sleep 1 +find . \( -name configure -o -name config.h.in \) -print | xargs touch +cd .. +%endif + +%build + +%if %{with_bundled_elfutils} +# Build our own copy of elfutils. +%global elfutils_config --with-elfutils=elfutils-%{elfutils_version} + +# We have to prevent the standard dependency generation from identifying +# our private elfutils libraries in our provides and requires. +%global _use_internal_dependency_generator 0 +%global filter_eulibs() /bin/sh -c "%{1} | sed '/libelf/d;/libdw/d;/libebl/d'" +%global __find_provides %{filter_eulibs /usr/lib/rpm/find-provides} +%global __find_requires %{filter_eulibs /usr/lib/rpm/find-requires} + +# This will be needed for running stap when not installed, for the test suite. +%global elfutils_mflags LD_LIBRARY_PATH=`pwd`/lib-elfutils +%endif + +# Enable/disable the dyninst pure-userspace backend +%if %{with_dyninst} +%global dyninst_config --with-dyninst +%else +%global dyninst_config --without-dyninst +%endif + +# Enable/disable the sqlite coverage testing support +%if %{with_sqlite} +%global sqlite_config --enable-sqlite +%else +%global sqlite_config --disable-sqlite +%endif + +# Enable/disable the crash extension +%if %{with_crash} +%global crash_config --enable-crash +%else +%global crash_config --disable-crash +%endif + +# Enable/disable the code to find and suggest needed rpms +%if %{with_rpm} +%global rpm_config --with-rpm +%else +%global rpm_config --without-rpm +%endif + +%if %{with_docs} +%global docs_config --enable-docs +%else +%global docs_config --disable-docs +%endif + +# Enable pie as configure defaults to disabling it +%if %{pie_supported} +%global pie_config --enable-pie +%else +%global pie_config --disable-pie +%endif + + +%if %{with_java} +%global java_config --with-java=%{_jvmdir}/java +%else +%global java_config --without-java +%endif + +%if %{with_virthost} +%global virt_config --enable-virt +%else +%global virt_config --disable-virt +%endif + +#CPPFLAGS="-I%{_includedir}/dyninst %{optflags}" +CPPFLAGS="-I%{_includedir} -I%{_includedir}/dyninst %{optflags}" +export CPPFLAGS +#LDFLAGS="-L%{_libdir}/dyninst" +LDFLAGS="-L%{_libdir} -L%{_libdir}/dyninst -L%{_libdir}/elfutils" +export LDFLAGS + +%if %{with_virthost} +%global virt_config --enable-virt +%else +%global virt_config --disable-virt +%endif + +%if %{with_dracut} +%global dracut_config --with-dracutstap=%{dracutstap} +%else +%global dracut_config +%endif + +%configure %{?elfutils_config} %{dyninst_config} %{sqlite_config} %{crash_config} %{docs_config} %{pie_config} %{rpm_config} %{java_config} %{virt_config} %{dracut_config} --disable-silent-rules --with-extra-version="%{scl} rpm %{version}-%{release}" have_fop=no + +make %{?_smp_mflags} + +%if %{with_emacsvim} +%{_emacs_bytecompile} emacs/systemtap-mode.el +%endif + +%install +rm -rf ${RPM_BUILD_ROOT} +make DESTDIR=$RPM_BUILD_ROOT install +%find_lang systemtap + +# We want the examples in the special doc dir, not the build install dir. +# We build it in place and then move it away so it doesn't get installed +# twice. rpm can specify itself where the (versioned) docs go with the +# %doc directive. +mv $RPM_BUILD_ROOT%{_datadir}/doc/systemtap/examples examples + +# Fix paths in the example & testsuite scripts +find examples testsuite -type f -name '*.stp' -print0 | xargs -0 sed -i -r -e '1s@^#!.+stap@#!%{_bindir}/stap@' + +# To make rpmlint happy, remove any .gitignore files in the testsuite. +find testsuite -type f -name '.gitignore' -print0 | xargs -0 rm -f + +# Because "make install" may install staprun with whatever mode, the +# post-processing programs rpmbuild runs won't be able to read it. +# So, we change permissions so that they can read it. We'll set the +# permissions back to 04110 in the %files section below. +chmod 755 $RPM_BUILD_ROOT%{_bindir}/staprun + +#install the useful stap-prep script +install -c -m 755 stap-prep $RPM_BUILD_ROOT%{_bindir}/stap-prep + +# Copy over the testsuite +cp -rp testsuite $RPM_BUILD_ROOT%{_datadir}/systemtap + +%if %{with_docs} +# We want the manuals in the special doc dir, not the generic doc install dir. +# We build it in place and then move it away so it doesn't get installed +# twice. rpm can specify itself where the (versioned) docs go with the +# %doc directive. +mkdir docs.installed +mv $RPM_BUILD_ROOT%{_datadir}/doc/systemtap/*.pdf docs.installed/ +mv $RPM_BUILD_ROOT%{_datadir}/doc/systemtap/tapsets docs.installed/ +mv $RPM_BUILD_ROOT%{_datadir}/doc/systemtap/SystemTap_Beginners_Guide docs.installed/ +%endif + +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/stap-server +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/stap-server +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/stap-server/.systemtap +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log/stap-server +touch $RPM_BUILD_ROOT%{_localstatedir}/log/stap-server/log +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/cache/systemtap +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/systemtap +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d +install -m 644 initscript/logrotate.stap-server $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/stap-server +mkdir -p $RPM_BUILD_ROOT%{sysconfdir}/rc.d/init.d/ +install -m 755 initscript/systemtap $RPM_BUILD_ROOT%{sysconfdir}/rc.d/init.d/%{?scl_prefix}systemtap +install -m 755 initscript/stap-server $RPM_BUILD_ROOT%{sysconfdir}/rc.d/init.d/%{?scl_prefix}stap-server +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/systemtap +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/systemtap/conf.d +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/systemtap/script.d +install -m 644 initscript/config.systemtap $RPM_BUILD_ROOT%{_sysconfdir}/systemtap/config + +%if %{with_systemd} +mkdir -p $RPM_BUILD_ROOT%{_unitdir} +touch $RPM_BUILD_ROOT%{_unitdir}/%{?scl_prefix}stap-server.service +install -m 644 stap-server.service $RPM_BUILD_ROOT%{_unitdir}/%{?scl_prefix}stap-server.service +mkdir -p $RPM_BUILD_ROOT%{_tmpfilesdir} +install -m 644 stap-server.conf $RPM_BUILD_ROOT%{_tmpfilesdir}/%{?scl_prefix}stap-server.conf +%else +install -m 755 initscript/stap-server $RPM_BUILD_ROOT%{initdir}/%{?scl_prefix}stap-server +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/stap-server/conf.d +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig +install -m 644 initscript/config.stap-server $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/stap-server +%endif + +%if %{with_emacsvim} +mkdir -p $RPM_BUILD_ROOT%{_emacs_sitelispdir} +install -p -m 644 emacs/systemtap-mode.el* $RPM_BUILD_ROOT%{_emacs_sitelispdir} +mkdir -p $RPM_BUILD_ROOT%{_emacs_sitestartdir} +install -p -m 644 emacs/systemtap-init.el $RPM_BUILD_ROOT%{_emacs_sitestartdir}/systemtap-init.el +for subdir in ftdetect ftplugin indent syntax +do + mkdir -p $RPM_BUILD_ROOT%{_datadir}/vim/vimfiles/$subdir + install -p -m 644 vim/$subdir/*.vim $RPM_BUILD_ROOT%{_datadir}/vim/vimfiles/$subdir +done +%endif + +%if %{with_dracut} + mkdir -p $RPM_BUILD_ROOT%{dracutstap} + install -p -m 755 initscript/99stap/module-setup.sh $RPM_BUILD_ROOT%{dracutstap} + install -p -m 755 initscript/99stap/start-staprun.sh $RPM_BUILD_ROOT%{dracutstap} + touch $RPM_BUILD_ROOT%{dracutstap}/params.conf +%endif + +%clean +rm -rf ${RPM_BUILD_ROOT} + +%pre runtime +getent group stapusr >/dev/null || groupadd -g 156 -r stapusr 2>/dev/null || groupadd -r stapusr +getent group stapsys >/dev/null || groupadd -g 157 -r stapsys 2>/dev/null || groupadd -r stapsys +getent group stapdev >/dev/null || groupadd -g 158 -r stapdev 2>/dev/null || groupadd -r stapdev +exit 0 + +%pre server +getent group stap-server >/dev/null || groupadd -g 155 -r stap-server 2>/dev/null || groupadd -r stap-server +getent passwd stap-server >/dev/null || \ + useradd -c "Systemtap Compile Server" -u 155 -g stap-server -d %{_localstatedir}/lib/stap-server -r -s /sbin/nologin stap-server 2>/dev/null || \ + useradd -c "Systemtap Compile Server" -g stap-server -d %{_localstatedir}/lib/stap-server -r -s /sbin/nologin stap-server + +%post server + +# We have some duplication between the %files listings for the +# ~stap-server directories and the explicit mkdir/chown/chmod bits +# here. Part of the reason may be that a preexisting stap-server +# account may well be placed somewhere other than +# %{_localstatedir}/lib/stap-server, but we'd like their permissions +# set similarly. + +test -e ~stap-server && chmod 750 ~stap-server + +if [ ! -f ~stap-server/.systemtap/rc ]; then + mkdir -p ~stap-server/.systemtap + chown stap-server:stap-server ~stap-server/.systemtap + # PR16276: guess at a reasonable number for a default --rlimit-nproc + numcpu=`/usr/bin/getconf _NPROCESSORS_ONLN` + if [ -z "$numcpu" -o "$numcpu" -lt 1 ]; then numcpu=1; fi + nproc=`expr $numcpu \* 30` + echo "--rlimit-as=614400000 --rlimit-cpu=60 --rlimit-nproc=$nproc --rlimit-stack=1024000 --rlimit-fsize=51200000" > ~stap-server/.systemtap/rc + chown stap-server:stap-server ~stap-server/.systemtap/rc +fi + +test -e %{_localstatedir}/log/stap-server/log || { + touch %{_localstatedir}/log/stap-server/log + chmod 644 %{_localstatedir}/log/stap-server/log + chown stap-server:stap-server %{_localstatedir}/log/stap-server/log +} +# If it does not already exist, as stap-server, generate the certificate +# used for signing and for ssl. +if test ! -e ~stap-server/.systemtap/ssl/server/stap.cert; then + runuser -s /bin/sh - stap-server -c %{_libexecdir}/systemtap/stap-gen-cert >/dev/null +fi +# Prepare the service +%if %{with_systemd} + # Note, Fedora policy doesn't allow network services enabled by default + # /bin/systemctl enable stap-server.service >/dev/null 2>&1 || : + /bin/systemd-tmpfiles --create %{_tmpfilesdir}/stap-server.conf >/dev/null 2>&1 || : +%else + /sbin/chkconfig --add %{?scl_prefix}stap-server +%endif +exit 0 + +%triggerin client -- systemtap-server +if test -e ~stap-server/.systemtap/ssl/server/stap.cert; then + # echo Authorizing ssl-peer/trusted-signer certificate for local systemtap-server + %{_libexecdir}/systemtap/stap-authorize-cert ~stap-server/.systemtap/ssl/server/stap.cert %{_sysconfdir}/systemtap/ssl/client >/dev/null + %{_libexecdir}/systemtap/stap-authorize-cert ~stap-server/.systemtap/ssl/server/stap.cert %{_sysconfdir}/systemtap/staprun >/dev/null +fi +exit 0 +# XXX: corresponding %triggerun? + +%preun server +# Check that this is the actual deinstallation of the package, as opposed to +# just removing the old package on upgrade. +if [ $1 = 0 ] ; then + %if %{with_systemd} + /bin/systemctl --no-reload disable stap-server.service >/dev/null 2>&1 || : + /bin/systemctl stop stap-server.service >/dev/null 2>&1 || : + %else + /sbin/service %{?scl_prefix}stap-server stop >/dev/null 2>&1 + /sbin/chkconfig --del %{?scl_prefix}stap-server + %endif +fi +exit 0 + +%postun server +# Check whether this is an upgrade of the package. +# If so, restart the service if it's running +if [ "$1" -ge "1" ] ; then + %if %{with_systemd} + /bin/systemctl condrestart stap-server.service >/dev/null 2>&1 || : + %else + /sbin/service %{?scl_prefix}stap-server condrestart >/dev/null 2>&1 || : + %endif +fi +exit 0 + +%post initscript +%if %{with_systemd} + /bin/systemctl enable systemtap.service >/dev/null 2>&1 || : +%else + /sbin/chkconfig --add %{?scl_prefix}systemtap +%endif +exit 0 + +%preun initscript +# Check that this is the actual deinstallation of the package, as opposed to +# just removing the old package on upgrade. +if [ $1 = 0 ] ; then + %if %{with_systemd} + /bin/systemctl --no-reload disable systemtap.service >/dev/null 2>&1 || : + /bin/systemctl stop systemtap.service >/dev/null 2>&1 || : + %else + /sbin/service %{?scl_prefix}systemtap stop >/dev/null 2>&1 + /sbin/chkconfig --del %{?scl_prefix}systemtap + %endif +fi +exit 0 + +%postun initscript +# Check whether this is an upgrade of the package. +# If so, restart the service if it's running +if [ "$1" -ge "1" ] ; then + %if %{with_systemd} + /bin/systemctl condrestart systemtap.service >/dev/null 2>&1 || : + %else + /sbin/service %{?scl_prefix}systemtap condrestart >/dev/null 2>&1 || : + %endif +fi +exit 0 + +%post +# Remove any previously-built uprobes.ko materials +(make -C %{_datadir}/systemtap/runtime/uprobes clean) >/dev/null 2>&1 || true +(/sbin/rmmod uprobes) >/dev/null 2>&1 || true + +%preun +# Ditto +(make -C %{_datadir}/systemtap/runtime/uprobes clean) >/dev/null 2>&1 || true +(/sbin/rmmod uprobes) >/dev/null 2>&1 || true + +# ------------------------------------------------------------------------ + +%files -f systemtap.lang +# The master "systemtap" rpm doesn't include any files. + +%files server -f systemtap.lang +%defattr(-,root,root) +%{_bindir}/stap-server +%dir %{_libexecdir}/systemtap +%{_libexecdir}/systemtap/stap-serverd +%{_libexecdir}/systemtap/stap-start-server +%{_libexecdir}/systemtap/stap-stop-server +%{_libexecdir}/systemtap/stap-gen-cert +%{_libexecdir}/systemtap/stap-sign-module +%{_libexecdir}/systemtap/stap-authorize-cert +%{_libexecdir}/systemtap/stap-env +%{_mandir}/man7/stappaths.7* +%{_mandir}/man7/error* +%{_mandir}/man7/warning* +%{_mandir}/man8/stap-server.8* + +%if %{with_systemd} +%{_unitdir}/stap-server.service +%{_tmpfilesdir}/stap-server.conf +%else +%{initdir}/%{?scl_prefix}stap-server +%dir %{_sysconfdir}/stap-server/conf.d +%config(noreplace) %{_sysconfdir}/sysconfig/stap-server +%endif +%config(noreplace) %{_sysconfdir}/logrotate.d/stap-server +%dir %{_sysconfdir}/stap-server +%dir %attr(0750,stap-server,stap-server) %{_localstatedir}/lib/stap-server +%dir %attr(0700,stap-server,stap-server) %{_localstatedir}/lib/stap-server/.systemtap +%dir %attr(0755,stap-server,stap-server) %{_localstatedir}/log/stap-server +%ghost %config(noreplace) %attr(0644,stap-server,stap-server) %{_localstatedir}/log/stap-server/log +%ghost %attr(0755,stap-server,stap-server) %{_localstatedir}/run/stap-server +%doc README README.unprivileged AUTHORS NEWS +%{!?_licensedir:%global license %%doc} +%license COPYING + + +%files devel -f systemtap.lang +%{_bindir}/stap +%{_bindir}/stap-prep +%{_bindir}/stap-report +%dir %{_datadir}/systemtap +%{_datadir}/systemtap/runtime +%{_datadir}/systemtap/tapset +%{_mandir}/man1/stap.1* +%{_mandir}/man1/stap-prep.1* +%{_mandir}/man1/stap-report.1* +%{_mandir}/man7/error* +%{_mandir}/man7/stappaths.7* +%{_mandir}/man7/warning* +%doc README README.unprivileged AUTHORS NEWS +%{!?_licensedir:%global license %%doc} +%license COPYING +%if %{with_bundled_elfutils} +%dir %{_libdir}/systemtap +%{_libdir}/systemtap/lib*.so* +%endif + +%if %{with_emacsvim} +%{_emacs_sitelispdir}/*.el* +%{_emacs_sitestartdir}/systemtap-init.el +%{_datadir}/vim/vimfiles/*/*.vim +%endif + +%files runtime -f systemtap.lang +%defattr(-,root,root) +%attr(4110,root,stapusr) %{_bindir}/staprun +%{_bindir}/stapsh +%{_bindir}/stap-merge +%{_bindir}/stap-report +%if %{with_dyninst} +%{_bindir}/stapdyn +%endif +%dir %{_libexecdir}/systemtap +%{_libexecdir}/systemtap/stapio +%{_libexecdir}/systemtap/stap-env +%{_libexecdir}/systemtap/stap-authorize-cert +%if %{with_crash} +%dir %{_libdir}/systemtap +%{_libdir}/systemtap/staplog.so* +%endif +%{_mandir}/man1/stap-report.1* +%{_mandir}/man7/error* +%{_mandir}/man7/stappaths.7* +%{_mandir}/man7/warning* +%{_mandir}/man8/stapsh.8* +%{_mandir}/man8/staprun.8* +%if %{with_dyninst} +%{_mandir}/man8/stapdyn.8* +%endif +%doc README README.security AUTHORS NEWS +%{!?_licensedir:%global license %%doc} +%license COPYING + + +%files client -f systemtap.lang +%defattr(-,root,root) +%doc README README.unprivileged AUTHORS NEWS examples +%{!?_licensedir:%global license %%doc} +%license COPYING +%if %{with_docs} +%doc docs.installed/*.pdf +%doc docs.installed/tapsets/*.html +%doc docs.installed/SystemTap_Beginners_Guide +%endif +%{_bindir}/stap +%{_bindir}/stap-prep +%{_bindir}/stap-report +%{_mandir}/man1/stap.1* +%{_mandir}/man1/stap-prep.1* +%{_mandir}/man1/stap-merge.1* +%{_mandir}/man1/stap-report.1* +%{_mandir}/man1/stapref.1* +%{_mandir}/man3/* +%{_mandir}/man7/error* +%{_mandir}/man7/stappaths.7* +%{_mandir}/man7/warning* +%dir %{_datadir}/systemtap +%{_datadir}/systemtap/tapset + + +%files initscript +%defattr(-,root,root) +%{sysconfdir}/rc.d/init.d/%{?scl_prefix}systemtap +%dir %{_sysconfdir}/systemtap +%dir %{_sysconfdir}/systemtap/conf.d +%dir %{_sysconfdir}/systemtap/script.d +%config(noreplace) %{_sysconfdir}/systemtap/config +%dir %{_localstatedir}/cache/systemtap +%ghost %{_localstatedir}/run/systemtap +%{_mandir}/man8/systemtap.8* +%if %{with_dracut} + %dir %{dracutstap} + %{dracutstap}/* +%endif + + +%files sdt-devel -f systemtap.lang +%defattr(-,root,root) +%{_bindir}/dtrace +%{_includedir}/sys/sdt.h +%{_includedir}/sys/sdt-config.h +%{_mandir}/man1/dtrace.1* +%doc README AUTHORS NEWS +%{!?_licensedir:%global license %%doc} +%license COPYING + + +%files testsuite +%defattr(-,root,root) +%dir %{_datadir}/systemtap +%{_datadir}/systemtap/testsuite + +# ------------------------------------------------------------------------ + +# Future new-release entries should be of the form +# * DDD MMM DD YYYY YOURNAME - V-R +# - Upstream release, see wiki page below for detailed notes. +# http://sourceware.org/systemtap/wiki/SystemTapReleases + +%changelog +* Tue Jul 7 2015 Frank Ch. Eigler - 2.8-4 +- rhbz1224363 (rebase to upstream 2.8+) + +* Wed Mar 25 2015 Frank Ch. Eigler - 2.6-11 +- rhbz1121363 (dracut support) + +* Fri Feb 13 2015 Frank Ch. Eigler - 2.6-10 +- rhbz1172781 (nfs3_proc_read_setup tapset) +- rhbz1128209 (uninstalled stapvirt files found) + +* Fri Jan 09 2015 Frank Ch. Eigler - 2.6-9 +- dts3.1 merge from rhel-7.1 +- remove bodies of with_java, with_virtguest, with_virthost conditionals + +* Wed Dec 10 2014 Frank Ch. Eigler - 2.6-8 +- rhbz1171823 (nfsd svc_fh access) + +* Wed Nov 26 2014 Frank Ch. Eigler - 2.6-7 +- rhbz1167652 (stap dracut empty) + +* Thu Nov 20 2014 Frank Ch. Eigler - 2.6-6 +- rhbz1164373 (fix ppc64 kprobes via KERNEL_RELOC_SYMBOL) +- rhbz1119335 (document STAP_FIPS_OVERRIDE in staprun.8) +- rhbz1127591 (ppc64 hcall_* tracepoint blacklisting) + +* Fri Oct 17 2014 Frank Ch. Eigler - 2.6-5 +- RHBZ1153673 (stap segv during optimization) + +* Fri Sep 19 2014 Frank Ch. Eigler - 2.6-3 +- Added probinson's patch BZ1141919 for enabling more ppc64/aarch64 facilities, + with some staplog.c followup + +* Tue Sep 09 2014 Josh Stone - 2.6-2 +- Backport fix for 1139844 + +* Fri Sep 05 2014 Josh Stone - 2.6-1 +- Upstream release, rebased for 1107735 + +* Wed Aug 27 2014 Josh Stone - 2.4-16 +- Exclude ppc64le from with_crash (1125693) + +* Tue Aug 26 2014 Josh Stone - 2.4-15 +- Tighten arch lists for prelink and dyninst (1094349, 1125693) + +* Fri Mar 28 2014 Jonathan Lebon - 2.4-14 +- Small fix on latest backport fix for dyninst runtime + +* Fri Mar 28 2014 Jonathan Lebon - 2.4-13 +- Backport fixes for 1051649 (see comments 4 and 5) + +* Thu Mar 06 2014 Jonathan Lebon - 2.4-12 +- Backport fix for 1073640 + +* Wed Feb 12 2014 Jonathan Lebon - 2.4-11 +- Backport fix for 847285 + +* Wed Feb 12 2014 Jonathan Lebon - 2.4-10 +- Apply spec file patches to this one, not the tarred one +- Add missing autoreconf patch for backport feature (1051649) + +* Tue Feb 11 2014 Jonathan Lebon - 2.4-9 +- Backport fixes for: 1062076, 1020207 + +* Tue Jan 28 2014 Daniel Mach - 2.4-8 +- Mass rebuild 2014-01-24 + +* Fri Jan 24 2014 Jonathan Lebon - 2.4-7 +- Backport fix for 1057773 + +* Wed Jan 22 2014 Frank Ch. Subbackportmeister Eigler - 2.4-6 +- Backport fixes for: 1056687 + +* Wed Jan 22 2014 Jonathan Lebon - 2.4-5 +- Backport fixes for: 1035752, 1035850 + +* Tue Jan 21 2014 Jonathan Lebon - 2.4-4 +- Backport fix for 1055778 + +* Fri Jan 17 2014 Jonathan Lebon - 2.4-3 +- Backport fixes for: 1054962, 1054956, 1054954, 1044429 +- Backport boot-time probing feature (1051649) + +* Fri Dec 27 2013 Daniel Mach - 2.4-2 +- Mass rebuild 2013-12-27 + +* Wed Nov 06 2013 Frank Ch. Eigler - 2.4-1 +- Upstream release. + +* Wed Oct 09 2013 Jonathan Lebon +- Added runtime-virthost and runtime-virtguest packages. + +* Thu Jul 25 2013 Frank Ch. Eigler - 2.3-1 +- Upstream release. + +* Thu May 16 2013 Frank Ch. Eigler - 2.2.1-1 +- Upstream release. + +* Tue May 14 2013 Frank Ch. Eigler - 2.2-1 +- Upstream release. + +* Wed Feb 13 2013 Serguei Makarov - 2.1-1 +- Upstream release. + +* Tue Oct 09 2012 Josh Stone - 2.0-1 +- Upstream release. + +* Tue Sep 11 2012 William Cohen - 1.8-7 +- rhbz847919 need scl-compatible init scripts +- Backported fixes: +- rhbz848459 "groupadd: GID 156 is not unique" while installing systemtap-runtime-1.8-4.el5 +- rhbz848460 sdt.c on systemtap-testsuite cannot be compiled +- rhbz848461 /usr/libexec/systemtap/stap-authorize-cert: No such file or directory + +* Wed Sep 5 2012 William Cohen - 1.8-6 +- Backport fix for rhbz853357. + +* Thu Jul 5 2012 William Cohen - 1.8-5 +- Make compatible with software collections. + +* Wed Jun 27 2012 Stan Cox - 1.8-4 +- Backported fix for pr14325 + +* Wed Jun 27 2012 Stan Cox - 1.8-3 +- No publican in rhel 5. + +* Wed Jun 27 2012 Stan Cox - 1.8-2 +- Add s390 to the publican blacklist. + +* Sun Jun 17 2012 Frank Ch. Eigler - 1.8-1 +- Upstream release. + +* Wed Feb 01 2012 Frank Ch. Eigler - 1.7-1 +- Upstream release. + +* Fri Jan 13 2012 David Smith - 1.6-2 +- Fixed /bin/mktemp require. + +* Mon Jul 25 2011 Stan Cox - 1.6-1 +- Upstream release. + +* Mon May 23 2011 Stan Cox - 1.5-1 +- Upstream release. + +* Mon Jan 17 2011 Frank Ch. Eigler - 1.4-1 +- Upstream release. + +* Wed Jul 21 2010 Josh Stone - 1.3-1 +- Upstream release. + +* Mon Mar 22 2010 Frank Ch. Eigler - 1.2-1 +- Upstream release. + +* Mon Dec 21 2009 David Smith - 1.1-1 +- Upstream release. + +* Tue Sep 22 2009 Josh Stone - 1.0-1 +- Upstream release. + +* Tue Aug 4 2009 Josh Stone - 0.9.9-1 +- Upstream release. + +* Thu Jun 11 2009 Josh Stone - 0.9.8-1 +- Upstream release. + +* Thu Apr 23 2009 Josh Stone - 0.9.7-1 +- Upstream release. + +* 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. + +* Tue Feb 17 2009 Frank Ch. Eigler - 0.9-1 +- Upstream release. + +* Thu Nov 13 2008 Frank Ch. Eigler - 0.8-1 +- Upstream release. + +* Tue Jul 15 2008 Frank Ch. Eigler - 0.7-1 +- Upstream release. + +* Fri Feb 1 2008 Frank Ch. Eigler - 0.6.1-3 +- Add zlib-devel to buildreq; missing from crash-devel +- Process testsuite .stp files for #!stap->#!/usr/bin/stap + +* Fri Jan 18 2008 Frank Ch. Eigler - 0.6.1-1 +- Add crash-devel buildreq to build staplog.so crash(8) module. +- Many robustness & functionality improvements: + +* Wed Dec 5 2007 Will Cohen - 0.6-2 +- Correct Source to point to location contain code. + +* Thu Aug 9 2007 David Smith - 0.6-1 +- Bumped version, added libcap-devel BuildRequires. + +* Wed Jul 11 2007 Will Cohen - 0.5.14-2 +- Fix Requires and BuildRequires for sqlite. + +* Mon Jul 2 2007 Frank Ch. Eigler - 0.5.14-1 +- Many robustness improvements: 1117, 1134, 1305, 1307, 1570, 1806, + 2033, 2116, 2224, 2339, 2341, 2406, 2426, 2438, 2583, 3037, + 3261, 3282, 3331, 3428 3519, 3545, 3625, 3648, 3880, 3888, 3911, + 3952, 3965, 4066, 4071, 4075, 4078, 4081, 4096, 4119, 4122, 4127, + 4146, 4171, 4179, 4183, 4221, 4224, 4254, 4281, 4319, 4323, 4326, + 4329, 4332, 4337, 4415, 4432, 4444, 4445, 4458, 4467, 4470, 4471, + 4518, 4567, 4570, 4579, 4589, 4609, 4664 + +* Mon Mar 26 2007 Frank Ch. Eigler - 0.5.13-1 +- An emergency / preliminary refresh, mainly for compatibility + with 2.6.21-pre kernels. + +* Mon Jan 1 2007 Frank Ch. Eigler - 0.5.12-1 +- Many changes, see NEWS file. + +* Tue Sep 26 2006 David Smith - 0.5.10-1 +- Added 'systemtap-runtime' subpackage. + +* Wed Jul 19 2006 Roland McGrath - 0.5.9-1 +- PRs 2669, 2913 + +* Fri Jun 16 2006 Roland McGrath - 0.5.8-1 +- PRs 2627, 2520, 2228, 2645 + +* Fri May 5 2006 Frank Ch. Eigler - 0.5.7-1 +- PRs 2511 2453 2307 1813 1944 2497 2538 2476 2568 1341 2058 2220 2437 + 1326 2014 2599 2427 2438 2465 1930 2149 2610 2293 2634 2506 2433 + +* Tue Apr 4 2006 Roland McGrath - 0.5.5-1 +- Many changes, affected PRs include: 2068, 2293, 1989, 2334, + 1304, 2390, 2425, 953. + +* Wed Feb 1 2006 Frank Ch. Eigler - 0.5.4-1 +- PRs 1916, 2205, 2142, 2060, 1379 + +* Mon Jan 16 2006 Roland McGrath - 0.5.3-1 +- Many changes, affected PRs include: 2056, 1144, 1379, 2057, + 2060, 1972, 2140, 2148 + +* Mon Dec 19 2005 Roland McGrath - 0.5.2-1 +- Fixed build with gcc 4.1, various tapset changes. + +* Wed Dec 7 2005 Roland McGrath - 0.5.1-1 +- elfutils update, build changes + +* Fri Dec 02 2005 Frank Ch. Eigler - 0.5-1 +- Many fixes and improvements: 1425, 1536, 1505, 1380, 1329, 1828, 1271, + 1339, 1340, 1345, 1837, 1917, 1903, 1336, 1868, 1594, 1564, 1276, 1295 + +* Mon Oct 31 2005 Roland McGrath - 0.4.2-1 +- Many fixes and improvements: PRs 1344, 1260, 1330, 1295, 1311, 1368, + 1182, 1131, 1332, 1366, 1456, 1271, 1338, 1482, 1477, 1194. + +* Wed Sep 14 2005 Roland McGrath - 0.4.1-1 +- Many fixes and improvements since 0.2.2; relevant PRs include: + 1122, 1134, 1155, 1172, 1174, 1175, 1180, 1186, 1187, 1191, 1193, 1195, + 1197, 1205, 1206, 1209, 1213, 1244, 1257, 1258, 1260, 1265, 1268, 1270, + 1289, 1292, 1306, 1335, 1257 + +* Wed Sep 7 2005 Frank Ch. Eigler +- Bump version. + +* Tue Aug 16 2005 Frank Ch. Eigler +- Bump version. + +* Wed Aug 3 2005 Martin Hunt - 0.2.2-1 +- Add directory /var/cache/systemtap +- Add stp_check to /usr/libexec/systemtap + +* Wed Aug 3 2005 Roland McGrath - 0.2.1-1 +- New version 0.2.1, various fixes. + +* Fri Jul 29 2005 Roland McGrath - 0.2-1 +- New version 0.2, requires elfutils 0.111 + +* Mon Jul 25 2005 Roland McGrath +- Clean up spec file, build bundled elfutils. + +* Thu Jul 21 2005 Martin Hunt +- Set Version to use version from autoconf. +- Fix up some of the path names. +- Add Requires and BuildRequires. + +* Tue Jul 19 2005 Will Cohen +- Initial creation of RPM.