Compare commits

...

13 Commits
master ... f20

Author SHA1 Message Date
Frank Ch. Eigler 7394ea81c8 Merge branch 'f21' into f20
* f21: (50 commits)
  upstream release 2.7
  Automated weekly systemtap rawhide release: 0.284.gc1e8354302ba
  Automated weekly systemtap rawhide release: 0.244.gc1a369fb16d9
  Automated weekly systemtap rawhide release: 0.190.gfdffe7a8fc5f
  Automated weekly systemtap rawhide release: 0.168.g2df78f1c4927
  Automated weekly systemtap rawhide release: 0.160.gef8a28eb7412
  Automated weekly systemtap rawhide release: 0.156.g7cd3311e3288
  Automated weekly systemtap rawhide release: 0.131.g96ef4c2ab1ec
  Automated weekly systemtap rawhide release: 0.120.ge6f437adfe6d
  Automated weekly systemtap rawhide release: 0.117.g8ccd746013fa
  Automated weekly systemtap rawhide release: 0.103.gc1b1844eb23f
  Automated weekly systemtap rawhide release: 0.98.g08e54ea0a22d
  Automated weekly systemtap rawhide release: 0.93.g0cf3720fbd15
  Automated weekly systemtap rawhide release: 0.83.g69f0706dd69b
  Automated weekly systemtap rawhide release: 0.74.g6fb025aaaa35
  Automated weekly systemtap rawhide release: 0.70.g05b1f1672349
  Automated weekly systemtap rawhide release: 0.68.gdc7bb409c5b8
  Automated weekly systemtap rawhide release: 0.67.ga1a230af2ea5
  Automated weekly systemtap rawhide release: 0.63.g9c7a7069e302
  Handle compressed module filenames (rhbz1150166)
  ...

Conflicts:
	.gitignore
	sources
	systemtap.spec
2015-02-19 17:54:16 -05:00
Frank Ch. Eigler eb58f6ada3 Merge branch 'master' into f21
* master: (27 commits)
  upstream release 2.7
  Automated weekly systemtap rawhide release: 0.284.gc1e8354302ba
  Automated weekly systemtap rawhide release: 0.244.gc1a369fb16d9
  Automated weekly systemtap rawhide release: 0.190.gfdffe7a8fc5f
  Automated weekly systemtap rawhide release: 0.168.g2df78f1c4927
  Automated weekly systemtap rawhide release: 0.160.gef8a28eb7412
  Automated weekly systemtap rawhide release: 0.156.g7cd3311e3288
  Automated weekly systemtap rawhide release: 0.131.g96ef4c2ab1ec
  Automated weekly systemtap rawhide release: 0.120.ge6f437adfe6d
  Automated weekly systemtap rawhide release: 0.117.g8ccd746013fa
  Automated weekly systemtap rawhide release: 0.103.gc1b1844eb23f
  Automated weekly systemtap rawhide release: 0.98.g08e54ea0a22d
  Automated weekly systemtap rawhide release: 0.93.g0cf3720fbd15
  Automated weekly systemtap rawhide release: 0.83.g69f0706dd69b
  Automated weekly systemtap rawhide release: 0.74.g6fb025aaaa35
  Automated weekly systemtap rawhide release: 0.70.g05b1f1672349
  Automated weekly systemtap rawhide release: 0.68.gdc7bb409c5b8
  Automated weekly systemtap rawhide release: 0.67.ga1a230af2ea5
  Automated weekly systemtap rawhide release: 0.63.g9c7a7069e302
  Automated weekly systemtap rawhide release: 0.41.g4c651caa69cf
  ...

Conflicts:
	.gitignore
	sources
	systemtap.spec
2015-02-18 16:13:10 -05:00
Josh Stone 2bec3b40b7 Handle compressed module filenames (rhbz1150166) 2014-10-07 13:17:27 -07:00
Josh Stone 27a0f624fc Backport patches to improve dtrace's input flexibility
- Let dtrace use its old method if pyparsing fails (rhbz1131586)
- Allow dtrace -fPIC (rhbz1145993)
2014-09-25 12:24:40 -07:00
Josh Stone 06b57a477c Backport patches to improve dtrace's input flexibility
- Let dtrace use its old method if pyparsing fails (rhbz1131586)
- Allow dtrace -fPIC (rhbz1145993)
2014-09-25 11:21:41 -07:00
Josh Stone a0d02f20c1 Upstream release. 2014-09-08 09:44:27 -07:00
Josh Stone 716c0ac8a9 Upstream release. 2014-09-05 15:20:39 -07:00
Josh Stone 3623d30c7b Rebuilt for dyninst-8.2.0 2014-08-20 14:15:54 -07:00
Josh Stone 85599182e6 Merge remote-tracking branch 'origin/master' into f21
Updates "branched" f21 to the same snapshot as rawhide, and prepares to
be rebuilt on dyninst 8.2.0.

Conflicts:
	systemtap.spec
2014-08-20 13:43:03 -07:00
Peter Robinson 8890aaaad9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild 2014-08-18 04:41:05 +00:00
Frank Ch. Eigler 799f004cb2 PR16894: fix wordexp segv for unexpected stap -c 'CMD;CMD;CMD' 2014-05-02 12:08:21 -04:00
Frank Ch. Eigler 1b083f84cd Merge branch 'master' into f20
* master: (24 commits)
  %changelog time order tweakage
  upstream release
  Automated weekly systemtap rawhide release: 0.535.g9d4241d37eb1
  Automated weekly systemtap rawhide release: 0.491.gd0e1cd9d2fcb
  Automated weekly systemtap rawhide release: 0.458.g15afd83e99da
  Automated weekly systemtap rawhide release: 0.446.ga404e997732d
  Automated weekly systemtap rawhide release: 0.415.g7caa63eb91fd
  Automated weekly systemtap rawhide release: 0.376.g450056a8faa6
  Automated weekly systemtap rawhide release: 0.349.g2dd920e34796
  Automated weekly systemtap rawhide release: 0.318.g9ee1bfe9ac1c
  Automated weekly systemtap rawhide release: 0.296.g4f53b72c1d47
  Automated weekly systemtap rawhide release: 0.294.g09c16468eb17
  Automated weekly systemtap rawhide release: 0.274.gde6aa5194bf4
  Automated weekly systemtap rawhide release: 0.239.g873c6f49b639
  Automated weekly systemtap rawhide release: 0.191.g651a87924c22
  Automated weekly systemtap rawhide release: 0.186.gf1753911ada8
  Automated weekly systemtap rawhide release: 0.185.g4a3f6fd34498
  Automated weekly systemtap rawhide release: 0.151.g6ded984aa63f
  Automated weekly systemtap rawhide release: 0.123.gc60517ca2f99
  Automated weekly systemtap rawhide release: 0.87.g540c750cf41f
  ...

Conflicts:
	systemtap.spec
2014-04-30 14:56:08 -04:00
Frank Ch. Eigler f21357a6ea BZ1043212 2014-02-19 09:14:57 -05:00
3 changed files with 426 additions and 0 deletions

2
.gitignore vendored
View File

@ -97,6 +97,7 @@ systemtap-1.3.tar.gz
/systemtap-2.5-0.491.gd0e1cd9d2fcb.tar.gz
/systemtap-2.5-0.535.g9d4241d37eb1.tar.gz
/systemtap-2.5.tar.gz
/systemtap-2.6.tar.gz
/systemtap-2.6-0.11.gbe329745a929.tar.gz
/systemtap-2.6-0.50.g684fe5014906.tar.gz
/systemtap-2.6-0.52.ge0da6e752b05.tar.gz
@ -111,6 +112,7 @@ systemtap-1.3.tar.gz
/systemtap-2.6-0.240.g876abb05c522.tar.gz
/systemtap-2.6-0.299.gefa3ced615cc.tar.gz
/systemtap-2.6-0.411.gdf6c01e780a2.tar.gz
/systemtap-2.6.tar.gz
/systemtap-2.6-0.413.g6c14086f35f6.tar.gz
/systemtap-2.6-0.417.ga799c319d22f.tar.gz
/systemtap-2.6.tar.gz

View File

@ -0,0 +1,41 @@
From 273d6c3a7f76e2c1c3f5634a1c1274323b12745c Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com>
Date: Tue, 7 Oct 2014 12:38:39 -0700
Subject: [PATCH] RHBZ1150166: Handle the filename of compressed modules
This allows filenames like ".ko.xz" in modname_from_path().
---
setupdwfl.cxx | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/setupdwfl.cxx b/setupdwfl.cxx
index fe44828f8bf1..33239fe67cb9 100644
--- a/setupdwfl.cxx
+++ b/setupdwfl.cxx
@@ -114,11 +114,20 @@ static const string abrt_path =
string
modname_from_path(const string &path)
{
- size_t dot = path.rfind('.');
size_t slash = path.rfind('/');
- if (dot == string::npos || slash == string::npos || dot < slash)
+ if (slash == string::npos)
return "";
- string name = path.substr(slash + 1, dot - slash - 1);
+ string name = path.substr(slash + 1);
+
+ // First look for .ko extension variants like ".ko" or ".ko.xz"
+ // If that fails, look for any ".*" extension at all.
+ size_t extension = name.rfind(".ko");
+ if (extension == string::npos)
+ extension = name.rfind('.');
+ if (extension == string::npos)
+ return "";
+
+ name.erase(extension);
replace_if(name.begin(), name.end(), is_comma_dash, '_');
return name;
}
--
1.9.3

View File

@ -0,0 +1,383 @@
From c486eff3f809b5ce544d5a032198e7680f2b7f2b Mon Sep 17 00:00:00 2001
From: Stan Cox <scox@redhat.com>
Date: Tue, 9 Sep 2014 15:07:44 -0400
Subject: [PATCH 1/3] Add -fpic -fPIC to the list of accepted but ignored
dtrace options.
* dtrace.in (main): Add ignore_options.
---
dtrace.in | 4 +++-
testsuite/systemtap.base/dtrace.exp | 8 ++++----
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/dtrace.in b/dtrace.in
index d5f189d4fc9e..2f9fb6307e28 100644
--- a/dtrace.in
+++ b/dtrace.in
@@ -305,6 +305,8 @@ def main():
s_filename = ""
includes = []
defines = []
+ ignore_options = ["-64", "-32", "-fpic", "-fPIC"]
+
while i < len(sys.argv):
if sys.argv[i] == "-o":
i += 1
@@ -330,7 +332,7 @@ def main():
HAVE_PYP = False
elif sys.argv[i] == "--types":
print sys.argv[0] + ": note: obsolete option --types used"
- elif sys.argv[i] == "-64" or sys.argv[i] == "-32":
+ elif sys.argv[i] in ignore_options:
pass # dtrace users sometimes pass these flags
elif sys.argv[i] == "--help":
dtrace_help()
diff --git a/testsuite/systemtap.base/dtrace.exp b/testsuite/systemtap.base/dtrace.exp
index 252dad90ede5..e029748100d6 100644
--- a/testsuite/systemtap.base/dtrace.exp
+++ b/testsuite/systemtap.base/dtrace.exp
@@ -53,12 +53,12 @@ set incpath "/tmp/dtrace_inc"
# -----------------------------------------------------------------
# test command line option and file handling
-verbose -log "$dtrace -G -s $dpath -o XXX.o"
-catch {exec $dtrace -G -s $dpath -o XXX.o}
+verbose -log "$dtrace -G -64 -fPIC -s $dpath -o XXX.o"
+catch {exec $dtrace -G -64 -fPIC -s $dpath -o XXX.o}
if {[file exists XXX.o]} then {
- pass "dtrace -G -o XXX.o"
+ pass "dtrace -G -64 -fPIC -o XXX.o"
} else {
- fail "dtrace -G -o XXX.o"
+ fail "dtrace -G -64 -fPIC -o XXX.o"
}
exec rm -f XXX.o
--
1.9.3
From 52cac9d8159a399b824201f4d2c98abe89a01767 Mon Sep 17 00:00:00 2001
From: Stan Cox <scox@redhat.com>
Date: Tue, 23 Sep 2014 13:42:54 -0400
Subject: [PATCH 2/3] Ignore C declarations in .d file and use string pattern
matching as a fallback mechanism.
* dtrace.in (_PypProvider): SkipTo the provider{...}
(main): If pyparsing fails, then fallback to pattern matching.
* dtrace.exp: Add a fallback test.
---
dtrace.in | 39 +++++++++++++++++++++++++++---------
testsuite/systemtap.base/dtrace.exp | 40 +++++++++++++++++++++++++++++++++++++
2 files changed, 70 insertions(+), 9 deletions(-)
diff --git a/dtrace.in b/dtrace.in
index 2f9fb6307e28..04ace92181d9 100644
--- a/dtrace.in
+++ b/dtrace.in
@@ -29,13 +29,13 @@ try:
from pyparsing import alphas, cStyleComment, delimitedList, Group, \
Keyword, lineno, Literal, nestedExpr, nums, oneOf, OneOrMore, \
Optional, ParseException, ParserElement, restOfLine, restOfLine, \
- Suppress, Word, ZeroOrMore
+ Suppress, SkipTo, Word, ZeroOrMore
HAVE_PYP = True
except ImportError:
HAVE_PYP = False
-# Common file creation methods for pyparsing and regexparsing
+# Common file creation methods for pyparsing and string pattern matching
class _HeaderCreator(object):
def init_semaphores(self, fdesc):
@@ -149,7 +149,7 @@ class _PypProvider(_HeaderCreator):
provider_decl = (PROVIDER + Optional(ident)
+ lbrace + Group(probe_decls) + rbrace + Optional(semi))
- dtrace_statement = Group(decls | provider_decl)
+ dtrace_statement = Group (SkipTo("provider", include=False) + provider_decl)
self.dtrace_statements = ZeroOrMore(dtrace_statement)
cplusplus_linecomment = Literal("//") + restOfLine
@@ -167,7 +167,10 @@ class _PypProvider(_HeaderCreator):
for asti in self.ast:
if len(asti) == 0:
continue
- elif asti[0] == "provider":
+ # ignore SkipTo token
+ if asti[0] != "provider":
+ del asti[0]
+ if asti[0] == "provider":
# list of probes
for prb in asti[2]:
semaphores_def += self.add_semaphore(asti[1], prb[1])
@@ -186,15 +189,18 @@ class _PypProvider(_HeaderCreator):
self.ast = self.bnf.parseFile(provider).asList()
except ParseException, err:
if len(self.current_probe):
- print "%s:%s:%d: syntax error near:\nprobe %s\n" % (sys.argv[0],provider, self.current_lineno, self.current_probe)
+ print "Warning: %s:%s:%d: syntax error near:\nprobe %s\n" % (sys.argv[0],provider, self.current_lineno, self.current_probe)
else:
- print "%s:%s:%d syntax error near:\n%s\n" % (sys.argv[0],provider,err.lineno, err.line)
- sys.exit(1)
+ print "Warning: %s:%s:%d syntax error near:\n%s\n" % (sys.argv[0],provider,err.lineno, err.line)
+ raise ParseException, err
probes_def = ""
for asti in self.ast:
if len(asti) == 0:
continue
+ # ignore SkipTo token
+ if asti[0] != "provider":
+ del asti[0]
if asti[0] == "provider":
# list of probes
for prb in asti[2]:
@@ -369,14 +375,29 @@ def main():
providers = _PypProvider()
else:
providers = _ReProvider()
- providers.probe_write(s_filename, filename + suffix)
+ while True:
+ try:
+ providers.probe_write(s_filename, filename + suffix)
+ break;
+ # complex C declarations can fool the pyparsing grammar.
+ # we could increase the complexity of the grammar
+ # instead we fall back to string pattern matching
+ except ParseException, err:
+ print "Warning: Proceeding as if --no-pyparsing was given.\n"
+ providers = _ReProvider()
elif build_source:
if HAVE_PYP:
providers = _PypProvider()
else:
providers = _ReProvider()
(ignore, fname) = mkstemp(suffix=".h")
- providers.probe_write(s_filename, fname)
+ while True:
+ try:
+ providers.probe_write(s_filename, fname)
+ break;
+ except ParseException, err:
+ print "Warning: Proceeding as if --no-pyparsing was given.\n"
+ providers = _ReProvider()
if not keep_temps:
os.remove(fname)
else:
diff --git a/testsuite/systemtap.base/dtrace.exp b/testsuite/systemtap.base/dtrace.exp
index e029748100d6..60cab3f5abf2 100644
--- a/testsuite/systemtap.base/dtrace.exp
+++ b/testsuite/systemtap.base/dtrace.exp
@@ -207,6 +207,46 @@ if { $ok == 4} {
}
exec rm -f XXX.h
+set ok 0
+set pypath "/tmp/pypath.d"
+set $fp [open $pypath "w"]
+puts $fp "
+#include <sys/types.h>
+
+provider alpha {
+ probe request__start(string, uint8_t, uint16_t, int, void *);
+ probe request__one(string, uint8_t, uint32_t, int, int);
+ probe client__two(int, int);
+ probe client__three(int, string, pid_t, zoneid_t);
+ probe input__stop(int, int, uint32_t, uint32_t, int8_t, uint8_t*, double*);
+};
+
+#ifdef DCL_AFTER_PROVIDER
+typedef unsigned short int __u_short;
+typedef const static unsigned short __u_c_short;
+#endif
+
+#pragma D attributes Unknown provider alpha provider
+"
+close $fp
+verbose -log "$dtrace -C -h -s $pypath -o XXX.h"
+spawn $dtrace -C -DDCL_AFTER_PROVIDER -h -s $pypath -o XXX.h
+expect {
+ -re {Warning.*syntax error} {incr ok; exp_continue}
+ -re {Warning.*--no-pyparsing} {incr ok; exp_continue}
+ eof { }
+}
+catch {close}; catch {wait}
+if {[file exists XXX.h]} then {
+ incr ok;
+}
+if { $ok == 3} {
+ pass "dtrace parser check"
+} else {
+ fail "dtrace parser check $ok"
+}
+exec rm -f XXX.h
+
verbose -log "$dtrace -I$incpath -G -s $idpath"
catch {exec $dtrace -G -s $dpath}
if {[file exists test.o]} then {
--
1.9.3
From 3525152408f15e23dcffe2371bbd575f1646d691 Mon Sep 17 00:00:00 2001
From: Stan Cox <scox@redhat.com>
Date: Thu, 25 Sep 2014 13:47:04 -0400
Subject: [PATCH 3/3] Add pyparsing / no-parsing compatibility test.
* dtrace.exp: Add pyparsing compatibility test.
---
testsuite/systemtap.base/dtrace.exp | 93 ++++++++++++++++++++++++++++---------
1 file changed, 72 insertions(+), 21 deletions(-)
diff --git a/testsuite/systemtap.base/dtrace.exp b/testsuite/systemtap.base/dtrace.exp
index 60cab3f5abf2..e455c298737a 100644
--- a/testsuite/systemtap.base/dtrace.exp
+++ b/testsuite/systemtap.base/dtrace.exp
@@ -8,6 +8,8 @@ if {[installtest_p]} {
set dtrace ../dtrace
}
+# Create the test .d files
+
exec mkdir -p /tmp/dtrace
set dpath "/tmp/dtrace/test.d"
@@ -48,6 +50,29 @@ provider tstsyscall
"
close $fp
+set pypath "/tmp/pypath.d"
+set $fp [open $pypath "w"]
+puts $fp "
+#include <sys/types.h>
+
+provider alpha {
+ probe request__start(string, uint8_t, uint16_t, int, void *);
+ probe request__one(string, uint8_t, uint32_t, int, int);
+ probe client__two(int, int);
+ probe client__three(int, string, pid_t, zoneid_t);
+ probe input__stop(int, int, uint32_t, uint32_t, int8_t, uint8_t*, double*);
+};
+
+#ifdef DCL_AFTER_PROVIDER
+typedef unsigned short int __u_short;
+typedef const static unsigned short __u_c_short;
+#endif
+
+#pragma D attributes Unknown provider alpha provider
+"
+close $fp
+
+
set incpath "/tmp/dtrace_inc"
# -----------------------------------------------------------------
@@ -156,6 +181,9 @@ if { $ok != 0} {
fail "dtrace CFLAGS= CC="
}
+# -----------------------------------------------------------------
+# test -h header file creation
+
set ok 0
verbose -log "$dtrace -C -h -s $dpath -o XXX.h"
catch {exec $dtrace -C -h -s $dpath -o XXX.h}
@@ -189,6 +217,9 @@ if { $ok == 4} {
}
exec rm -f XXX.h
+# -----------------------------------------------------------------
+# test --no-pyparsing
+
set ok 0
verbose -log "$dtrace -C --no-pyparsing -I$incpath -h -s $idpath -o XXX.h"
catch {exec $dtrace -C --no-pyparsing -I$incpath -h -s $idpath -o XXX.h}
@@ -207,28 +238,10 @@ if { $ok == 4} {
}
exec rm -f XXX.h
-set ok 0
-set pypath "/tmp/pypath.d"
-set $fp [open $pypath "w"]
-puts $fp "
-#include <sys/types.h>
-
-provider alpha {
- probe request__start(string, uint8_t, uint16_t, int, void *);
- probe request__one(string, uint8_t, uint32_t, int, int);
- probe client__two(int, int);
- probe client__three(int, string, pid_t, zoneid_t);
- probe input__stop(int, int, uint32_t, uint32_t, int8_t, uint8_t*, double*);
-};
-
-#ifdef DCL_AFTER_PROVIDER
-typedef unsigned short int __u_short;
-typedef const static unsigned short __u_c_short;
-#endif
+# -----------------------------------------------------------------
+# test fallback to --no-pyparsing
-#pragma D attributes Unknown provider alpha provider
-"
-close $fp
+set ok 0
verbose -log "$dtrace -C -h -s $pypath -o XXX.h"
spawn $dtrace -C -DDCL_AFTER_PROVIDER -h -s $pypath -o XXX.h
expect {
@@ -247,6 +260,9 @@ if { $ok == 3} {
}
exec rm -f XXX.h
+# -----------------------------------------------------------------
+# test -G object file creation
+
verbose -log "$dtrace -I$incpath -G -s $idpath"
catch {exec $dtrace -G -s $dpath}
if {[file exists test.o]} then {
@@ -256,5 +272,40 @@ if {[file exists test.o]} then {
}
exec rm -f test.o
+# -----------------------------------------------------------------
+# test dtrace for pyparsing / --no-pyparsing compatibility
+
+set ok 0
+set dfiles {dtrace}
+foreach i $dfiles {
+ verbose -log "$dtrace $srcdir/$subdir/$i.d"
+ catch {exec $dtrace -C -h -s $srcdir/$subdir/$i.d -o $i-1.h}
+ catch {exec $dtrace -C -h --no-pyparsing -s $srcdir/$subdir/$i.d -o $i-2.h}
+ spawn diff -wqs $i-1.h $i-2.h
+ expect {
+ -re {Files.*identical} {incr ok; exp_continue}
+ eof { }
+ }
+ catch {exec $dtrace -C -G -s $srcdir/$subdir/$i.d -o $i-1.o}
+ catch {exec $dtrace -C -G --no-pyparsing -s $srcdir/$subdir/$i.d -o $i-2.o}
+ verbose -log "exec nm $i-1.o > $i-1.od"
+ catch {exec nm $i-1.o > $i-1.od}
+ catch {exec nm $i-2.o > $i-2.od}
+ spawn diff -qs $i-1.od $i-2.od
+ expect {
+ -re {Files.*identical} {incr ok; exp_continue}
+ eof { }
+ }
+ catch {exec /bin/rm $i-1.h $i-2.h $i-1.o $i-2.o}
+}
+if { $ok == 2} {
+ pass "dtrace known uses"
+} else {
+ fail "dtrace known uses ${ok}"
+}
+
+# -----------------------------------------------------------------
+# cleanup
+
exec /bin/rm -r /tmp/dtrace /tmp/dtrace_inc
# -----------------------------------------------------------------
--
1.9.3