{
bool lvalue = is_active_lvalue(e);
if (lvalue && !q.sess.guru_mode)
- throw semantic_error(_("write to target variable not permitted"), e->tok);
+ throw semantic_error(_("write to target variable not permitted; need stap -g"), e->tok);
// XXX: process $context vars should be writeable
{
bool lvalue = is_active_lvalue(e);
if (lvalue && !s.guru_mode)
- throw semantic_error(_("write to @cast context variable not permitted"), e->tok);
+ throw semantic_error(_("write to @cast context variable not permitted; need stap -g"), e->tok);
if (e->module.empty())
e->module = "kernel"; // "*" may also be reasonable to search all kernel modules
// we can only write to dereferenced fields, and only if guru mode is on
bool lvalue = is_active_lvalue(e);
if (lvalue && (!dw.sess.guru_mode || e->components.empty()))
- throw semantic_error(_F("write to tracepoint variable '%s' not permitted", e->name.c_str()), e->tok);
+ throw semantic_error(_F("write to tracepoint variable '%s' not permitted; need stap -g", e->name.c_str()), e->tok);
// XXX: if a struct/union arg is passed by value, then writing to its fields
// is also meaningless until you dereference past a pointer member. It's