tracing/uprobes: Support perf-style return probe
Support perf-style return probe ("SYMBOL%return") for uprobe events as same as kprobe events does. Link: https://lkml.kernel.org/r/159972814601.428528.7641183316212425445.stgit@devnote2 Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:

committed by
Steven Rostedt (VMware)

parent
4725cd8997
commit
3dd3aae32d
@@ -528,7 +528,7 @@ end:
|
||||
|
||||
/*
|
||||
* Argument syntax:
|
||||
* - Add uprobe: p|r[:[GRP/]EVENT] PATH:OFFSET [FETCHARGS]
|
||||
* - Add uprobe: p|r[:[GRP/]EVENT] PATH:OFFSET[%return][(REF)] [FETCHARGS]
|
||||
*/
|
||||
static int trace_uprobe_create(int argc, const char **argv)
|
||||
{
|
||||
@@ -617,6 +617,19 @@ static int trace_uprobe_create(int argc, const char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if there is %return suffix */
|
||||
tmp = strchr(arg, '%');
|
||||
if (tmp) {
|
||||
if (!strcmp(tmp, "%return")) {
|
||||
*tmp = '\0';
|
||||
is_return = true;
|
||||
} else {
|
||||
trace_probe_log_err(tmp - filename, BAD_ADDR_SUFFIX);
|
||||
ret = -EINVAL;
|
||||
goto fail_address_parse;
|
||||
}
|
||||
}
|
||||
|
||||
/* Parse uprobe offset. */
|
||||
ret = kstrtoul(arg, 0, &offset);
|
||||
if (ret) {
|
||||
|
Reference in New Issue
Block a user