diff options
Diffstat (limited to 'kernel/trace/trace_output.c')
-rw-r--r-- | kernel/trace/trace_output.c | 38 |
1 files changed, 8 insertions, 30 deletions
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index 6e6cc64faa38..54373d93e251 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c | |||
@@ -339,43 +339,24 @@ static inline const char *kretprobed(const char *name) | |||
339 | #endif /* CONFIG_KRETPROBES */ | 339 | #endif /* CONFIG_KRETPROBES */ |
340 | 340 | ||
341 | static void | 341 | static void |
342 | seq_print_sym_short(struct trace_seq *s, const char *fmt, unsigned long address) | 342 | seq_print_sym(struct trace_seq *s, unsigned long address, bool offset) |
343 | { | 343 | { |
344 | char str[KSYM_SYMBOL_LEN]; | ||
345 | #ifdef CONFIG_KALLSYMS | 344 | #ifdef CONFIG_KALLSYMS |
346 | const char *name; | ||
347 | |||
348 | kallsyms_lookup(address, NULL, NULL, NULL, str); | ||
349 | |||
350 | name = kretprobed(str); | ||
351 | |||
352 | if (name && strlen(name)) { | ||
353 | trace_seq_printf(s, fmt, name); | ||
354 | return; | ||
355 | } | ||
356 | #endif | ||
357 | snprintf(str, KSYM_SYMBOL_LEN, "0x%08lx", address); | ||
358 | trace_seq_printf(s, fmt, str); | ||
359 | } | ||
360 | |||
361 | static void | ||
362 | seq_print_sym_offset(struct trace_seq *s, const char *fmt, | ||
363 | unsigned long address) | ||
364 | { | ||
365 | char str[KSYM_SYMBOL_LEN]; | 345 | char str[KSYM_SYMBOL_LEN]; |
366 | #ifdef CONFIG_KALLSYMS | ||
367 | const char *name; | 346 | const char *name; |
368 | 347 | ||
369 | sprint_symbol(str, address); | 348 | if (offset) |
349 | sprint_symbol(str, address); | ||
350 | else | ||
351 | kallsyms_lookup(address, NULL, NULL, NULL, str); | ||
370 | name = kretprobed(str); | 352 | name = kretprobed(str); |
371 | 353 | ||
372 | if (name && strlen(name)) { | 354 | if (name && strlen(name)) { |
373 | trace_seq_printf(s, fmt, name); | 355 | trace_seq_puts(s, name); |
374 | return; | 356 | return; |
375 | } | 357 | } |
376 | #endif | 358 | #endif |
377 | snprintf(str, KSYM_SYMBOL_LEN, "0x%08lx", address); | 359 | trace_seq_printf(s, "0x%08lx", address); |
378 | trace_seq_printf(s, fmt, str); | ||
379 | } | 360 | } |
380 | 361 | ||
381 | #ifndef CONFIG_64BIT | 362 | #ifndef CONFIG_64BIT |
@@ -424,10 +405,7 @@ seq_print_ip_sym(struct trace_seq *s, unsigned long ip, unsigned long sym_flags) | |||
424 | goto out; | 405 | goto out; |
425 | } | 406 | } |
426 | 407 | ||
427 | if (sym_flags & TRACE_ITER_SYM_OFFSET) | 408 | seq_print_sym(s, ip, sym_flags & TRACE_ITER_SYM_OFFSET); |
428 | seq_print_sym_offset(s, "%s", ip); | ||
429 | else | ||
430 | seq_print_sym_short(s, "%s", ip); | ||
431 | 409 | ||
432 | if (sym_flags & TRACE_ITER_SYM_ADDR) | 410 | if (sym_flags & TRACE_ITER_SYM_ADDR) |
433 | trace_seq_printf(s, " <" IP_FMT ">", ip); | 411 | trace_seq_printf(s, " <" IP_FMT ">", ip); |