summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhiramatu <hiramatu>2007-09-06 18:08:44 +0000
committerhiramatu <hiramatu>2007-09-06 18:08:44 +0000
commita721fbcf46a1d80e180670c8b68ce7f159b2a28a (patch)
treeba457c079e3ade9a27fa93cc617f358d4e83184c
parent7d0ea3216d499fdc77dcd98d7d75ac14441421f8 (diff)
downloadsystemtap-steved-a721fbcf46a1d80e180670c8b68ce7f159b2a28a.tar.gz
systemtap-steved-a721fbcf46a1d80e180670c8b68ce7f159b2a28a.tar.xz
systemtap-steved-a721fbcf46a1d80e180670c8b68ce7f159b2a28a.zip
2007-09-06 Masami Hiramatsu <mhiramat@redhat.com>
PR4542 * tapsets.cxx (dwarf_query::build_blacklist): add __switch_to to blacklisted_return_probes on i686 * systemtap.stress/current.stp: Don't probe the return of __switch_to on i686
-rw-r--r--ChangeLog6
-rw-r--r--tapsets.cxx5
-rw-r--r--testsuite/ChangeLog6
-rw-r--r--testsuite/systemtap.stress/current.stp17
4 files changed, 26 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 2732b5cd..a9a0e464 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-09-06 Masami Hiramatsu <mhiramat@redhat.com>
+
+ PR 4542
+ * tapsets.cxx (dwarf_query::build_blacklist): add __switch_to to
+ blacklisted_return_probes on i686
+
2007-08-30 David Smith <dsmith@redhat.com>
PR 4983
diff --git a/tapsets.cxx b/tapsets.cxx
index 281fcd0a..7e1c196a 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -2348,9 +2348,12 @@ dwarf_query::build_blacklist()
blacklisted_probes.insert("_spin_unlock");
blacklisted_probes.insert("_spin_unlock_irqrestore");
- // __switch_to is only disallowed on x86_64
+ // __switch_to changes "current" on x86_64 and i686, so return probes
+ // would cause kernel panic, and it is marked as "__kprobes" on x86_64
if (sess.architecture == "x86_64")
blacklisted_probes.insert("__switch_to");
+ if (sess.architecture == "i686")
+ blacklisted_return_probes.insert("__switch_to");
// These functions don't return, so return probes would never be recovered
blacklisted_return_probes.insert("do_exit");
diff --git a/testsuite/ChangeLog b/testsuite/ChangeLog
index be9ac35f..5d49161e 100644
--- a/testsuite/ChangeLog
+++ b/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2007-09-06 Masami Hiramatsu <mhiramat@redhat.com>
+
+ PR 4542
+ * systemtap.stress/current.stp: Don't probe the return of __switch_to
+ on i686.
+
2007-08-27 Martin Hunt <hunt@redhat.com>
* systemtap.context/context.exp (build_modules): Change
diff --git a/testsuite/systemtap.stress/current.stp b/testsuite/systemtap.stress/current.stp
index ddc298d4..09e54bad 100644
--- a/testsuite/systemtap.stress/current.stp
+++ b/testsuite/systemtap.stress/current.stp
@@ -18,13 +18,16 @@ probe begin { log("systemtap starting probe") }
probe
timer.profile,
- %( arch != "x86_64" %?
- # __switch_to.return is broken on x86_64 - see PR2068
- %( arch != "ia64" %?
- # __switch_to is macro definition in ia64,
- # and ia64_switch_to is defined in assemble language
- kernel.function("__switch_to").call,
- kernel.function("__switch_to").return,
+ %( arch != "ia64" %?
+ # __switch_to is macro definition in ia64,
+ # and ia64_switch_to is defined in assemble language
+ %( arch != "x86_64" %?
+ # __switch_to can not be probed on x86_64 - see PR2068
+ kernel.function("__switch_to").call,
+ %( arch != "i686" %?
+ # __switch_to.return is broken on i686 - see PR4542
+ kernel.function("__switch_to").return,
+ %)
%)
%)