diff options
Diffstat (limited to 'tapsets.cxx')
-rw-r--r-- | tapsets.cxx | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/tapsets.cxx b/tapsets.cxx index bed27967..8b871ac7 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -1383,8 +1383,14 @@ struct dwflpp } } if (!entrypc_srcline) - throw semantic_error ("missing entrypc dwarf line record for function '" - + it->name + "'"); + { + if (sess.verbose > 2) + clog << "missing entrypc dwarf line record for function '" + << it->name << "'\n"; + // This is probably an inlined function. We'll end up using + // its lowpc as a probe address. + continue; + } if (sess.verbose>2) clog << "prologue searching function '" << it->name << "'" @@ -3920,7 +3926,9 @@ validate_module_elf (Dwfl_Module *mod, const char *name, base_query *q) { case EM_386: expect_machine = "i?86"; break; // accept e.g. i586 case EM_X86_64: expect_machine = "x86_64"; break; - case EM_PPC: expect_machine = "ppc"; break; + // We don't support 32-bit ppc kernels, but we support 32-bit apps + // running on ppc64 kernels. + case EM_PPC: expect_machine = "ppc64"; break; case EM_PPC64: expect_machine = "ppc64"; break; case EM_S390: expect_machine = "s390x"; break; case EM_IA_64: expect_machine = "ia64"; break; @@ -8709,6 +8717,12 @@ hrtimer_derived_probe_group::emit_module_decls (systemtap_session& s) s.op->newline(-1) << "};"; s.op->newline(); + // autoconf: add get/set expires if missing (pre 2.6.28-rc1) + s.op->newline() << "#ifndef STAPCONF_HRTIMER_GETSET_EXPIRES"; + s.op->newline() << "#define hrtimer_get_expires(timer) ((timer)->expires)"; + s.op->newline() << "#define hrtimer_set_expires(timer, time) (void)((timer)->expires = (time))"; + s.op->newline() << "#endif"; + // autoconf: adapt to HRTIMER_REL -> HRTIMER_MODE_REL renaming near 2.6.21 s.op->newline() << "#ifdef STAPCONF_HRTIMER_REL"; s.op->newline() << "#define HRTIMER_MODE_REL HRTIMER_REL"; @@ -8727,9 +8741,9 @@ hrtimer_derived_probe_group::emit_module_decls (systemtap_session& s) s.op->newline() << "if ((atomic_read (&session_state) == STAP_SESSION_STARTING) ||"; s.op->newline() << " (atomic_read (&session_state) == STAP_SESSION_RUNNING)) {"; // Compute next trigger time - s.op->newline(1) << "timer->expires = ktime_add (timer->expires,"; + s.op->newline(1) << "hrtimer_set_expires(timer, ktime_add (hrtimer_get_expires(timer),"; emit_interval (s.op); - s.op->line() << ");"; + s.op->line() << "));"; s.op->newline() << "rc = HRTIMER_RESTART;"; s.op->newline(-1) << "}"; s.op->newline() << "{"; |