diff options
| author | Masami Hiramatsu (Google) <mhiramat@kernel.org> | 2025-03-24 23:34:52 +0900 |
|---|---|---|
| committer | Steven Rostedt (Google) <rostedt@goodmis.org> | 2025-03-28 08:39:56 -0400 |
| commit | 35a380ddbc653c07ee64e2a74c274b9835b0efc2 (patch) | |
| tree | 33611bb879bc79336b72ec2f54923da62fc2f959 /kernel/trace/trace.h | |
| parent | ring-buffer: Remove the unused variable bmeta (diff) | |
| download | linux-35a380ddbc653c07ee64e2a74c274b9835b0efc2.tar.gz linux-35a380ddbc653c07ee64e2a74c274b9835b0efc2.zip | |
tracing: Show last module text symbols in the stacktrace
Since the previous boot trace buffer can include module text address in
the stacktrace. As same as the kernel text address, convert the module
text address using the module address information.
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Link: https://lore.kernel.org/174282689201.356346.17647540360450727687.stgit@mhiramat.tok.corp.google.com
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace.h')
| -rw-r--r-- | kernel/trace/trace.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 0d6efb8a1179..ab7c7a1930cc 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -312,6 +312,11 @@ struct trace_func_repeats { u64 ts_last_call; }; +struct trace_module_delta { + struct rcu_head rcu; + long delta[]; +}; + /* * The trace array - an array of per-CPU trace arrays. This is the * highest level data structure that individual tracers deal with. @@ -350,6 +355,7 @@ struct trace_array { unsigned long range_addr_size; char *range_name; long text_delta; + struct trace_module_delta *module_delta; void *scratch; /* pointer in persistent memory */ int scratch_size; @@ -466,6 +472,8 @@ extern int tracing_set_clock(struct trace_array *tr, const char *clockstr); extern bool trace_clock_in_ns(struct trace_array *tr); +extern unsigned long trace_adjust_address(struct trace_array *tr, unsigned long addr); + /* * The global tracer (top) should be the first trace array added, * but we check the flag anyway. |
