2015-07-31 14:05:09

by Jan Kiszka

[permalink] [raw]
Subject: [PATCH] trace-cmd: Leave out absolute addresses to fix bogus symbol resolutions

On x86, page_fault_* tracepoints report userspace address via kernel
symbols because all the per-cpu variable offsets are in kallsyms,
occupying the lower address space. Fix this by skipping over absolute
addresses while processing kallsyms.

Signed-off-by: Jan Kiszka <[email protected]>
---
trace-util.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/trace-util.c b/trace-util.c
index 8a81dd0..da20e4c 100644
--- a/trace-util.c
+++ b/trace-util.c
@@ -434,8 +434,12 @@ void parse_proc_kallsyms(struct pevent *pevent,
if (mod)
mod[strlen(mod) - 1] = 0;

- /* Hack for arm arch that adds a lot of bogus '$a' functions */
- if (func[0] != '$')
+ /*
+ * Hacks for
+ * - arm arch that adds a lot of bogus '$a' functions
+ * - x86-64 that reports per-cpu variable offsets as absolute
+ */
+ if (func[0] != '$' && ch != 'A')
pevent_register_function(pevent, func, addr, mod);
free(func);
free(mod);
--
2.1.4