OBS User unknown 2007-02-26 12:25:47 +00:00 committed by Git OBS Bridge
parent 02b58a64c9
commit 674365e287
3 changed files with 104 additions and 1 deletions

View File

@ -0,0 +1,94 @@
diff -uNar systemtap-0708-ioblockpatch.orig/translate.cxx systemtap-0708-ioblockpatch/translate.cxx
--- systemtap-0708-ioblockpatch.orig/translate.cxx 2007-02-23 15:24:23.000000000 -0800
+++ systemtap-0708-ioblockpatch/translate.cxx 2007-02-23 15:26:38.000000000 -0800
@@ -348,29 +348,39 @@
else
return qname() + " = 0;";
case pe_stats:
- switch (sd.type)
- {
- case statistic_decl::none:
- return (qname()
- + " = _stp_stat_init (HIST_NONE);");
- break;
-
- case statistic_decl::linear:
- return (qname()
- + " = _stp_stat_init (HIST_LINEAR"
- + ", " + stringify(sd.linear_low)
- + ", " + stringify(sd.linear_high)
- + ", " + stringify(sd.linear_step)
- + ");");
- break;
-
- case statistic_decl::logarithmic:
- return (qname()
- + " = _stp_stat_init (HIST_LOG"
- + ", " + stringify(sd.logarithmic_buckets)
- + ");");
- break;
- }
+ {
+ // See also mapvar::init().
+
+ string prefix = qname() + " = _stp_stat_init (";
+ // Check for errors during allocation.
+ string suffix = "if (" + qname () + " == NULL) rc = -ENOMEM;";
+
+ switch (sd.type)
+ {
+ case statistic_decl::none:
+ prefix += "HIST_NONE";
+ break;
+
+ case statistic_decl::linear:
+ prefix += string("HIST_LINEAR")
+ + ", " + stringify(sd.linear_low)
+ + ", " + stringify(sd.linear_high)
+ + ", " + stringify(sd.linear_step);
+ break;
+
+ case statistic_decl::logarithmic:
+ prefix += string("HIST_LOG")
+ + ", " + stringify(sd.logarithmic_buckets);
+ break;
+
+ default:
+ throw semantic_error("unsupported stats type for " + qname());
+ }
+
+ prefix = prefix + "); ";
+ return string (prefix + suffix);
+ }
+
default:
throw semantic_error("unsupported initializer for " + qname());
}
@@ -602,6 +612,8 @@
string prefix = qname() + " = _stp_" + mtype + "_new_" + keysym() + " (" +
(maxsize > 0 ? stringify(maxsize) : "MAXMAPENTRIES") ;
+ // See also var::init().
+
// Check for errors during allocation.
string suffix = "if (" + qname () + " == NULL) rc = -ENOMEM;";
@@ -1094,6 +1106,8 @@
if (basest_names.find(nm) == basest_names.end())
{
o->newline() << "time_" << nm << " = _stp_stat_init (HIST_NONE);";
+ // NB: we don't check for null return here, but instead at
+ // passage to probe handlers and at final printing.
basest_names.insert (nm);
}
}
@@ -1207,7 +1221,8 @@
if (basest_names.find(nm) == basest_names.end())
{
basest_names.insert (nm);
- o->newline() << "{";
+ // NB: check for null stat object
+ o->newline() << "if (likely (time_" << p->name << ")) {";
o->newline(1) << "const char *probe_point = "
<< lex_cast_qstring (* p->locations[0])
<< (p->locations.size() > 1 ? "\"+\"" : "")

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Mon Feb 26 12:42:41 CET 2007 - tiwai@suse.de
- fix crash with large H value in hist_linear() (#248430)
-------------------------------------------------------------------
Fri Feb 23 16:43:53 CET 2007 - tiwai@suse.de

View File

@ -16,7 +16,7 @@ BuildRequires: gcc-c++
%define elfutils_version 0.125
License: GNU General Public License (GPL)
Version: 0.5.8
Release: 32
Release: 33
Summary: Instrumentation System
Group: Development/Tools/Debuggers
URL: http://sourceware.org/systemtap/
@ -30,6 +30,7 @@ Patch2: elfutils-0.125-build-fix.diff
Patch3: systemtap-s390x-probe-at-function-entry.diff
Patch4: systemtap-s390x-store_deref-fix.diff
Patch5: systemtap-s390x-mmap-tapset.diff
Patch6: systemtap-translate-fix.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@ -53,6 +54,7 @@ Authors:
%patch3
%patch4 -p1
%patch5 -p2
%patch6 -p1
autoreconf -fi
cd elfutils-%{elfutils_version}
%patch1 -p1
@ -81,6 +83,8 @@ rm -rf ${RPM_BUILD_ROOT}
%dir %attr(0755,root,root) /var/cache/systemtap
%changelog
* Mon Feb 26 2007 - tiwai@suse.de
- fix crash with large H value in hist_linear() (#248430)
* Fri Feb 23 2007 - tiwai@suse.de
- fix mmap syscall on s390x (#248110)
* Thu Feb 15 2007 - tiwai@suse.de