diff options
author | ddomingo <ddomingo@redhat.com> | 2008-11-27 11:34:24 +1000 |
---|---|---|
committer | ddomingo <ddomingo@redhat.com> | 2008-11-27 11:34:24 +1000 |
commit | ad970c8448ceeb844846251d994b5946e68be184 (patch) | |
tree | fdc2c3eba4d9b7d66e82871c927be4b940a7a0d2 | |
parent | 218a165500487ccdba0d654221909f362efb09b9 (diff) | |
parent | 224e23bef7a46c823c4b3d41efdf9dbf98853ed0 (diff) | |
download | systemtap-steved-ad970c8448ceeb844846251d994b5946e68be184.tar.gz systemtap-steved-ad970c8448ceeb844846251d994b5946e68be184.tar.xz systemtap-steved-ad970c8448ceeb844846251d994b5946e68be184.zip |
Merge branch 'master' of ssh://sources.redhat.com/git/systemtap
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | runtime/ChangeLog | 6 | ||||
-rw-r--r-- | runtime/sym.c | 13 | ||||
-rw-r--r-- | translate.cxx | 9 |
4 files changed, 28 insertions, 4 deletions
@@ -1,5 +1,9 @@ 2008-11-26 Frank Ch. Eigler <fche@elastic.org> + * translate.cxx (emit_module_exit): Add another synchronize_sched. + +2008-11-26 Frank Ch. Eigler <fche@elastic.org> + * main.cxx (main): Advise users to try '--vp ...' after a pass error. 2008-11-26 Frank Ch. Eigler <fche@elastic.org> diff --git a/runtime/ChangeLog b/runtime/ChangeLog index f3c5f2e3..93ee18d2 100644 --- a/runtime/ChangeLog +++ b/runtime/ChangeLog @@ -1,5 +1,11 @@ 2008-11-26 Frank Ch. Eigler <fche@elastic.org> + PR 4886. + * sym.c (_stp_module_check): Perform assertive + build-id checking for kernel versions >= 2.6.27. + +2008-11-26 Frank Ch. Eigler <fche@elastic.org> + * autoconf-synchronize-sched.c: New file. 2008-11-25 Frank Ch. Eigler <fche@elastic.org> diff --git a/runtime/sym.c b/runtime/sym.c index d7b079d2..06ac14a5 100644 --- a/runtime/sym.c +++ b/runtime/sym.c @@ -205,14 +205,23 @@ static int _stp_module_check(void) /* XXX: consider using kread() instead of above. */ if (theory != practice) { + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) + _stp_error ("%s: inconsistent %s build-id byte #%d " + "(0x%x [actual] vs. 0x%x [debuginfo])\n", + THIS_MODULE->name, m->name, j, + practice, theory); + return 1; + #else + /* This branch is a surrogate for + kernels affected by Fedora bug + #465873. */ printk(KERN_WARNING "%s: inconsistent %s build-id byte #%d " "(0x%x [actual] vs. 0x%x [debuginfo])\n", THIS_MODULE->name, m->name, j, practice, theory); break; /* Note just the first mismatch. */ - /* XXX: If it were not for Fedora bug #465873, - we could "return 1;" here to abort the script. */ + #endif } } } diff --git a/translate.cxx b/translate.cxx index 41a424ed..43299791 100644 --- a/translate.cxx +++ b/translate.cxx @@ -1124,7 +1124,7 @@ c_unparser::emit_module_init () o->newline() << "rc = -EINVAL;"; o->newline(-1) << "}"; - // XXX: perform buildid-based checking if able + // perform buildid-based checking if able o->newline() << "if (_stp_module_check()) rc = -EINVAL;"; o->newline(-1) << "}"; @@ -1273,6 +1273,11 @@ c_unparser::emit_module_exit () // But some other probes may have launched too during unregistration. // Let's wait a while to make sure they're all done, done, done. + // cargo cult prologue + o->newline() << "#ifdef STAPCONF_SYNCHRONIZE_SCHED"; + o->newline() << "synchronize_sched();"; + o->newline() << "#endif"; + // NB: systemtap_module_exit is assumed to be called from ordinary // user context, say during module unload. Among other things, this // means we can sleep a while. @@ -1287,7 +1292,7 @@ c_unparser::emit_module_exit () o->newline () << "yield ();"; // aka schedule() and then some o->newline(-2) << "} while (holdon);"; - // + // cargo cult epilogue o->newline() << "#ifdef STAPCONF_SYNCHRONIZE_SCHED"; o->newline() << "synchronize_sched();"; o->newline() << "#endif"; |