aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace_output.c
diff options
context:
space:
mode:
authorSteven Rostedt (VMware) <rostedt@goodmis.org>2017-06-22 17:04:55 -0400
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2017-06-22 17:10:06 -0400
commitfeaf1283d11794b9d518fcfd54b6bf8bee1f0b4b (patch)
tree31122c0a329faf629559f7f250b605eeb988e8a0 /kernel/trace/trace_output.c
parentd0ba52f1d7649a3f088e410e860559cf36d479d0 (diff)
tracing: Show address when function names are not found
Currently, when a function is not found in kallsyms, instead of simply showing the function address, it shows nothing at all: # echo ':mod:kvm_intel' > /sys/kernel/tracing/set_ftrace_filter # echo function > /sys/kernel/tracing/set_ftrace_filter # qemu -enable-kvm /home/my-qemu-image <Ctrl-C> # rmmod kvm_intel # cat /sys/kernel/tracing/trace qemu-system-x86-2408 [001] d..2 135.013238: <-kvm_arch_hardware_enable qemu-system-x86-2408 [001] .... 135.014574: <-kvm_arch_vm_ioctl qemu-system-x86-2408 [001] .... 135.015420: <-kvm_vm_ioctl_check_extension qemu-system-x86-2408 [001] .... 135.045411: <-__do_cpuid_ent qemu-system-x86-2408 [001] .... 135.045412: <-__do_cpuid_ent qemu-system-x86-2408 [001] .... 135.045412: <-__do_cpuid_ent qemu-system-x86-2408 [001] .... 135.045412: <-__do_cpuid_ent qemu-system-x86-2408 [001] ...1 135.045413: <-__do_cpuid_ent qemu-system-x86-2408 [001] .... 135.045413: <-__do_cpuid_ent When it should show: qemu-system-x86-2408 [001] d..2 135.013238: 0xffffffffa02a39f0 <-kvm_arch_hardware_enable qemu-system-x86-2408 [001] .... 135.014574: 0xffffffffa02a2ba0 <-kvm_arch_vm_ioctl qemu-system-x86-2408 [001] .... 135.015420: 0xffffffffa029e4e0 <-kvm_vm_ioctl_check_extension qemu-system-x86-2408 [001] .... 135.045411: 0xffffffffa02a1380 <-__do_cpuid_ent qemu-system-x86-2408 [001] .... 135.045412: 0xffffffffa029e160 <-__do_cpuid_ent qemu-system-x86-2408 [001] .... 135.045412: 0xffffffffa029e180 <-__do_cpuid_ent qemu-system-x86-2408 [001] .... 135.045412: 0xffffffffa029e520 <-__do_cpuid_ent qemu-system-x86-2408 [001] ...1 135.045413: 0xffffffffa02a13b0 <-__do_cpuid_ent qemu-system-x86-2408 [001] .... 135.045413: 0xffffffffa02a1380 <-__do_cpuid_ent instead. Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace_output.c')
-rw-r--r--kernel/trace/trace_output.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
index 08f9bab8089e..01ff99969ca7 100644
--- a/kernel/trace/trace_output.c
+++ b/kernel/trace/trace_output.c
@@ -340,31 +340,41 @@ static inline const char *kretprobed(const char *name)
340static void 340static void
341seq_print_sym_short(struct trace_seq *s, const char *fmt, unsigned long address) 341seq_print_sym_short(struct trace_seq *s, const char *fmt, unsigned long address)
342{ 342{
343#ifdef CONFIG_KALLSYMS
344 char str[KSYM_SYMBOL_LEN]; 343 char str[KSYM_SYMBOL_LEN];
344#ifdef CONFIG_KALLSYMS
345 const char *name; 345 const char *name;
346 346
347 kallsyms_lookup(address, NULL, NULL, NULL, str); 347 kallsyms_lookup(address, NULL, NULL, NULL, str);
348 348
349 name = kretprobed(str); 349 name = kretprobed(str);
350 350
351 trace_seq_printf(s, fmt, name); 351 if (name && strlen(name)) {
352 trace_seq_printf(s, fmt, name);
353 return;
354 }
352#endif 355#endif
356 snprintf(str, KSYM_SYMBOL_LEN, "0x%08lx", address);
357 trace_seq_printf(s, fmt, str);
353} 358}
354 359
355static void 360static void
356seq_print_sym_offset(struct trace_seq *s, const char *fmt, 361seq_print_sym_offset(struct trace_seq *s, const char *fmt,
357 unsigned long address) 362 unsigned long address)
358{ 363{
359#ifdef CONFIG_KALLSYMS
360 char str[KSYM_SYMBOL_LEN]; 364 char str[KSYM_SYMBOL_LEN];
365#ifdef CONFIG_KALLSYMS
361 const char *name; 366 const char *name;
362 367
363 sprint_symbol(str, address); 368 sprint_symbol(str, address);
364 name = kretprobed(str); 369 name = kretprobed(str);
365 370
366 trace_seq_printf(s, fmt, name); 371 if (name && strlen(name)) {
372 trace_seq_printf(s, fmt, name);
373 return;
374 }
367#endif 375#endif
376 snprintf(str, KSYM_SYMBOL_LEN, "0x%08lx", address);
377 trace_seq_printf(s, fmt, str);
368} 378}
369 379
370#ifndef CONFIG_64BIT 380#ifndef CONFIG_64BIT