From 9aa80d6f7cda255bbc8280e41b910bb6b106da87 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: May 31 2016 08:05:36 +0000 Subject: import devtoolset-4-systemtap-2.9-3s.el7 --- diff --git a/.devtoolset-4-systemtap.metadata b/.devtoolset-4-systemtap.metadata index ffb86ad..0ebb208 100644 --- a/.devtoolset-4-systemtap.metadata +++ b/.devtoolset-4-systemtap.metadata @@ -1 +1 @@ -95034e8243e1f9fd33b765afda06546083df1b7f SOURCES/systemtap-2.8.tar.gz +37ecbc7445ff34db3c8204b1541f25524a0e8024 SOURCES/systemtap-2.9.tar.gz diff --git a/.gitignore b/.gitignore index f9912e2..f3b0aac 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/systemtap-2.8.tar.gz +SOURCES/systemtap-2.9.tar.gz diff --git a/SOURCES/june-robust.patch b/SOURCES/june-robust.patch deleted file mode 100644 index 8dead9f..0000000 --- a/SOURCES/june-robust.patch +++ /dev/null @@ -1,132 +0,0 @@ -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 deleted file mode 100644 index eea1698..0000000 --- a/SOURCES/rhbz1237098.patch +++ /dev/null @@ -1,157 +0,0 @@ -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/SOURCES/systemtap-2.9-dyninst-9.1.patch b/SOURCES/systemtap-2.9-dyninst-9.1.patch new file mode 100644 index 0000000..5dcf799 --- /dev/null +++ b/SOURCES/systemtap-2.9-dyninst-9.1.patch @@ -0,0 +1,96 @@ +commit fd5d795795e5b6266bb2b3ab827bd576fef402fe +Author: Josh Stone +Date: Fri Jan 15 12:02:56 2016 -0800 + + Cherry-pick two upstream commits for Dyninst 9.1 support + + commit f3cced187103a83a8367bf7b61ff93007064586d + Author: Josh Stone + Date: Thu Dec 10 19:17:56 2015 -0800 + + stapdyn: prepare for the dyninst 9.1 library callback change + + The new API uses BPatch_object for the callback, because modules (~=CUs) + are now fully represented in shared objects too. This is better, but we + need to keep fallback code for the old API too, using module->getObject(). + + stapdyn/mutator.cxx | 23 +++++++++++++++++------ + stapdyn/mutator.h | 2 +- + 2 files changed, 18 insertions(+), 7 deletions(-) + + commit 162267f19c8b9356488c1bb23c8be6b61a5799a5 + Author: Josh Stone + Date: Tue Dec 15 12:26:37 2015 -0800 + + stapdyn: use the simpler DYNINST_9_1 macro for callback changes + + stapdyn/mutator.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/stapdyn/mutator.cxx b/stapdyn/mutator.cxx +index 9a7374740193..e10a73e36966 100644 +--- a/stapdyn/mutator.cxx ++++ b/stapdyn/mutator.cxx +@@ -35,13 +35,24 @@ static vector g_mutators; + + static void + g_dynamic_library_callback(BPatch_thread *thread, +- BPatch_module *module, ++ BPatch_object *object, + bool load) + { + for (size_t i = 0; i < g_mutators.size(); ++i) +- g_mutators[i]->dynamic_library_callback(thread, module, load); ++ g_mutators[i]->dynamic_library_callback(thread, object, load); + } + ++#ifndef DYNINST_9_1 ++static void ++g_dynamic_module_callback(BPatch_thread *thread, ++ BPatch_module *module, ++ bool load) ++{ ++ g_dynamic_library_callback(thread, module->getObject(), load); ++} ++#define g_dynamic_library_callback g_dynamic_module_callback ++#endif ++ + + static void + g_post_fork_callback(BPatch_thread *parent, BPatch_thread *child) +@@ -666,18 +677,18 @@ mutator::find_mutatee(BPatch_process* process) + // Check if it matches our targets, and instrument accordingly. + void + mutator::dynamic_library_callback(BPatch_thread *thread, +- BPatch_module *module, ++ BPatch_object *object, + bool load) + { +- if (!load || !thread || !module) ++ if (!load || !thread || !object) + return; + + BPatch_process* process = thread->getProcess(); +- staplog(1) << "dlopen \"" << module->libraryName() ++ staplog(1) << "dlopen \"" << object->name() + << "\", pid = " << process->getPid() << endl; + boost::shared_ptr mut = find_mutatee(process); + if (mut) +- mut->instrument_object_dynprobes(module->getObject(), targets); ++ mut->instrument_object_dynprobes(object, targets); + } + + +diff --git a/stapdyn/mutator.h b/stapdyn/mutator.h +index d0e068d6d4ec..459cfc2c74ed 100644 +--- a/stapdyn/mutator.h ++++ b/stapdyn/mutator.h +@@ -97,7 +97,7 @@ class mutator { + // Callback to respond to dynamically loaded libraries. + // Check if it matches our targets, and instrument accordingly. + void dynamic_library_callback(BPatch_thread *thread, +- BPatch_module *module, ++ BPatch_object *object, + bool load); + + // Callback to respond to post fork events. Check if it matches diff --git a/SOURCES/systemtap-2.9-pr19525-bulk-sigusr2.patch b/SOURCES/systemtap-2.9-pr19525-bulk-sigusr2.patch new file mode 100644 index 0000000..5e39663 --- /dev/null +++ b/SOURCES/systemtap-2.9-pr19525-bulk-sigusr2.patch @@ -0,0 +1,85 @@ +commit 3eedfda1fed73f15d7737c77fec9fe60a9b38fa2 +Author: Josh Stone +Date: Wed Jan 27 14:20:06 2016 -0800 + + PR19525: always use a SIGUSR2 handler in stapio + + It was conditionally ignored by commit 62d2a73ee995, to avoid confusing + error messages about file rotation when there's no output file. + + But bulk-mode close_relayfs() still needs the signal to cause EINTR on + the waiting threads, so SIG_IGN is too much. Now we just return from + the handler immediately if there's no output file to rotate. + + Also add a SIGUSR2 test for the original error and with bulk mode. + +diff --git a/staprun/relay.c b/staprun/relay.c +index e994cdec9f6d..010063dda687 100644 +--- a/staprun/relay.c ++++ b/staprun/relay.c +@@ -212,7 +212,7 @@ error_out: + static void switchfile_handler(int sig) + { + int i; +- if (stop_threads) ++ if (stop_threads || !outfile_name) + return; + for (i = 0; i < ncpus; i++) + if (reader[i] && switch_file[i]) { +@@ -355,7 +355,7 @@ int init_relayfs(void) + } + + memset(&sa, 0, sizeof(sa)); +- sa.sa_handler = outfile_name ? switchfile_handler : SIG_IGN; ++ sa.sa_handler = switchfile_handler; + sa.sa_flags = 0; + sigemptyset(&sa.sa_mask); + sigaction(SIGUSR2, &sa, NULL); +diff --git a/testsuite/systemtap.base/sigusr2.exp b/testsuite/systemtap.base/sigusr2.exp +new file mode 100644 +index 000000000000..76ec28a54f22 +--- /dev/null ++++ b/testsuite/systemtap.base/sigusr2.exp +@@ -0,0 +1,18 @@ ++# Check that SIGUSR2 doesn't cause errors when not using file rotation. ++# ++# It used to say something like: ++# stapio:open_outfile:75: ERROR: -S is set without -o. Please file a bug report. ++# ERROR: Couldn't open file for cpu 0, exiting.: Success ++ ++ ++set test "sigusr2" ++stap_run $srcdir/$subdir/$test.stp no_load $all_pass_string -g ++ ++# PR19525: In bulk-mode (-b), close_relayfs() expects SIGUSR2 to cause EINTR on ++# the relay threads, so it can't be SIG_IGN. But the output is written to ++# files for later stap-merge, so we can't use normal proc stap_run. ++# Just make sure it doesn't hang, at least. ++ ++set result_string {} ++stap_run3 "$test bulk" $srcdir/$subdir/$test.stp -g -b -c true ++ +diff --git a/testsuite/systemtap.base/sigusr2.stp b/testsuite/systemtap.base/sigusr2.stp +new file mode 100644 +index 000000000000..dd2cc485e4b6 +--- /dev/null ++++ b/testsuite/systemtap.base/sigusr2.stp +@@ -0,0 +1,18 @@ ++/* ++ * sigusr2.stp ++ * ++ * Check that SIGUSR2 doesn't cause errors when not using file rotation. ++ */ ++ ++probe begin ++{ ++ println("systemtap starting probe") ++ raise(%{ SIGUSR2 %}) ++} ++ ++probe end ++{ ++ println("systemtap ending probe") ++ println("systemtap test success") ++} ++ diff --git a/SPECS/systemtap.spec b/SPECS/systemtap.spec index a1bec43..4c3c81f 100644 --- a/SPECS/systemtap.spec +++ b/SPECS/systemtap.spec @@ -2,7 +2,7 @@ %global sysconfdir %{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir} %{!?with_sqlite: %global with_sqlite 1} -%{!?with_docs: %global with_docs 1} +%{!?with_docs: %global with_docs 0} # crash is not available %ifarch ppc ppc64 %{sparc} aarch64 ppc64le %{!?with_crash: %global with_crash 0} @@ -15,7 +15,6 @@ %{!?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} @@ -48,12 +47,13 @@ %define dracutstap %{dracutlibdir}/modules.d/99%{scl_prefix}stap Name: %{?scl_prefix}systemtap -Version: 2.8 -Release: 4%{?dist} +Version: 2.9 +Release: 3s%{?dist} # for version, see also configure.ac -Patch1: rhbz1237098.patch -Patch2: june-robust.patch +# NB Patch1 is for elfutils, further below +Patch2: systemtap-2.9-dyninst-9.1.patch +Patch3: systemtap-2.9-pr19525-bulk-sigusr2.patch # Packaging abstract: # @@ -268,7 +268,7 @@ 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: dejagnu which grep nc Requires: gcc gcc-c++ make glibc-devel # testsuite/systemtap.base/ptrace.exp needs strace Requires: strace @@ -303,8 +303,8 @@ systemtap on the current system. %prep %setup -q -n systemtap-%{version} %{?setup_elfutils} -%patch1 -p1 %patch2 -p1 +%patch3 -p1 %if %{with_bundled_elfutils} cd elfutils-%{elfutils_version} @@ -579,7 +579,7 @@ if [ $1 = 0 ] ; then /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 + /sbin/chkconfig --del %{?scl_prefix}stap-server %endif fi exit 0 @@ -613,7 +613,7 @@ if [ $1 = 0 ] ; then /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 + /sbin/chkconfig --del %{?scl_prefix}systemtap %endif fi exit 0 @@ -656,11 +656,10 @@ exit 0 %{_libexecdir}/systemtap/stap-sign-module %{_libexecdir}/systemtap/stap-authorize-cert %{_libexecdir}/systemtap/stap-env -%{_mandir}/man7/stappaths.7* %{_mandir}/man7/error* +%{_mandir}/man7/stappaths.7* %{_mandir}/man7/warning* %{_mandir}/man8/stap-server.8* - %if %{with_systemd} %{_unitdir}/stap-server.service %{_tmpfilesdir}/stap-server.conf @@ -701,13 +700,13 @@ exit 0 %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 @@ -719,7 +718,6 @@ exit 0 %endif %dir %{_libexecdir}/systemtap %{_libexecdir}/systemtap/stapio -%{_libexecdir}/systemtap/stap-env %{_libexecdir}/systemtap/stap-authorize-cert %if %{with_crash} %dir %{_libdir}/systemtap @@ -765,6 +763,7 @@ exit 0 %{_datadir}/systemtap/tapset + %files initscript %defattr(-,root,root) %{sysconfdir}/rc.d/init.d/%{?scl_prefix}systemtap @@ -805,6 +804,15 @@ exit 0 # http://sourceware.org/systemtap/wiki/SystemTapReleases %changelog +* Fri Apr 01 2016 Frank Ch. Eigler - 2.9-3s +- buildroot bump + +* Thu Feb 25 2016 Frank Ch. Eigler - 2.9-2s +- buildroot bump + +* Fri Jan 29 2016 Josh Stone - 2.9-1s +- rebase to upstream 2.9 + * Tue Jul 7 2015 Frank Ch. Eigler - 2.8-4 - rhbz1224363 (rebase to upstream 2.8+)