}
else
{
- enable_task_finder (sess);
+ obstack_printf (pool, "/* pragma:vma */");
obstack_printf (pool, "({ unsigned long addr = 0; ");
obstack_printf (pool, "addr = _stp_umodule_relocate (\"%s\",%#" PRIx64 ", current); ",
canonicalize_file_name(module_name.c_str()), address);
if (! vma_tracker_enabled(session)
&& c->code.find("/* pragma:vma */") != string::npos)
{
- enable_vma_tracker(session);
if (session.verbose > 2)
clog << _F("Turning on task_finder vma_tracker, pragma:vma found in %s",
current_function->name.c_str()) << endl;
+
+ // PR15052: stapdyn doesn't have VMA-tracking yet.
+ if (session.runtime_usermode_p())
+ throw semantic_error(_("VMA-tracking is only supported by the kernel runtime (PR15052)"), c->tok);
+
+ enable_vma_tracker(session);
}
if (! session.need_unwind
if (mpath == NULL) // Must be a kernel module name
mpath = optarg;
unwindsym_modules.insert (string (mpath));
- // PR10228: trigger vma tracker logic early if -d /USER-MODULE/
- // given. XXX This is actually too early. Having a user module
- // is a good indicator that something will need vma tracking.
- // But it is not 100%, this really should only trigger through
- // a user mode tapset /* pragma:vma */ or a probe doing a
- // variable lookup through a dynamic module.
- if (mpath[0] == '/')
- enable_vma_tracker (*this);
+ // NB: we used to enable_vma_tracker() here for PR10228, but now
+ // we'll leave that to pragma:vma functions which actually use it.
break;
}
if (result)
{
s.unwindsym_modules.insert(module);
- if (userspace_p && !s.runtime_usermode_p())
- enable_vma_tracker(s);
if (lvalue)
{
lappend full_test_name "($runtime)"
set cmd [concat stap --runtime=$runtime $TEST_FILE $args]
} elseif {[uprobes_p]} {
- if {[regexp "\-pie" $TEST_NAME]} {
- setup_kfail 15688 "*-*-*"
- }
-
set cmd [concat stap $TEST_FILE $args]
} else {
untested $full_test_name