[for-next][PATCH 02/12] tracing: Show address when function names are not found

2017-06-29 Thread Steven Rostedt
From: "Steven Rostedt (VMware)" 

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
   
 # 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: 0xa02a39f0 
<-kvm_arch_hardware_enable
 qemu-system-x86-2408  [001]    135.014574: 0xa02a2ba0 
<-kvm_arch_vm_ioctl
 qemu-system-x86-2408  [001]    135.015420: 0xa029e4e0 
<-kvm_vm_ioctl_check_extension
 qemu-system-x86-2408  [001]    135.045411: 0xa02a1380 
<-__do_cpuid_ent
 qemu-system-x86-2408  [001]    135.045412: 0xa029e160 
<-__do_cpuid_ent
 qemu-system-x86-2408  [001]    135.045412: 0xa029e180 
<-__do_cpuid_ent
 qemu-system-x86-2408  [001]    135.045412: 0xa029e520 
<-__do_cpuid_ent
 qemu-system-x86-2408  [001] ...1   135.045413: 0xa02a13b0 
<-__do_cpuid_ent
 qemu-system-x86-2408  [001]    135.045413: 0xa02a1380 
<-__do_cpuid_ent

instead.

Signed-off-by: Steven Rostedt (VMware) 
---
 kernel/trace/trace_output.c | 18 ++
 1 file 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)
 static void
 seq_print_sym_short(struct trace_seq *s, const char *fmt, unsigned long 
address)
 {
-#ifdef CONFIG_KALLSYMS
char str[KSYM_SYMBOL_LEN];
+#ifdef CONFIG_KALLSYMS
const char *name;
 
kallsyms_lookup(address, NULL, NULL, NULL, str);
 
name = kretprobed(str);
 
-   trace_seq_printf(s, fmt, name);
+   if (name && strlen(name)) {
+   trace_seq_printf(s, fmt, name);
+   return;
+   }
 #endif
+   snprintf(str, KSYM_SYMBOL_LEN, "0x%08lx", address);
+   trace_seq_printf(s, fmt, str);
 }
 
 static void
 seq_print_sym_offset(struct trace_seq *s, const char *fmt,
 unsigned long address)
 {
-#ifdef CONFIG_KALLSYMS
char str[KSYM_SYMBOL_LEN];
+#ifdef CONFIG_KALLSYMS
const char *name;
 
sprint_symbol(str, address);
name = kretprobed(str);
 
-   trace_seq_printf(s, fmt, name);
+   if (name && strlen(name)) {
+   trace_seq_printf(s, fmt, name);
+   return;
+   }
 #endif
+   snprintf(str, KSYM_SYMBOL_LEN, "0x%08lx", address);
+   trace_seq_printf(s, fmt, str);
 }
 
 #ifndef CONFIG_64BIT
-- 
2.10.2




[for-next][PATCH 02/12] tracing: Show address when function names are not found

2017-06-29 Thread Steven Rostedt
From: "Steven Rostedt (VMware)" 

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
   
 # 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: 0xa02a39f0 
<-kvm_arch_hardware_enable
 qemu-system-x86-2408  [001]    135.014574: 0xa02a2ba0 
<-kvm_arch_vm_ioctl
 qemu-system-x86-2408  [001]    135.015420: 0xa029e4e0 
<-kvm_vm_ioctl_check_extension
 qemu-system-x86-2408  [001]    135.045411: 0xa02a1380 
<-__do_cpuid_ent
 qemu-system-x86-2408  [001]    135.045412: 0xa029e160 
<-__do_cpuid_ent
 qemu-system-x86-2408  [001]    135.045412: 0xa029e180 
<-__do_cpuid_ent
 qemu-system-x86-2408  [001]    135.045412: 0xa029e520 
<-__do_cpuid_ent
 qemu-system-x86-2408  [001] ...1   135.045413: 0xa02a13b0 
<-__do_cpuid_ent
 qemu-system-x86-2408  [001]    135.045413: 0xa02a1380 
<-__do_cpuid_ent

instead.

Signed-off-by: Steven Rostedt (VMware) 
---
 kernel/trace/trace_output.c | 18 ++
 1 file 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)
 static void
 seq_print_sym_short(struct trace_seq *s, const char *fmt, unsigned long 
address)
 {
-#ifdef CONFIG_KALLSYMS
char str[KSYM_SYMBOL_LEN];
+#ifdef CONFIG_KALLSYMS
const char *name;
 
kallsyms_lookup(address, NULL, NULL, NULL, str);
 
name = kretprobed(str);
 
-   trace_seq_printf(s, fmt, name);
+   if (name && strlen(name)) {
+   trace_seq_printf(s, fmt, name);
+   return;
+   }
 #endif
+   snprintf(str, KSYM_SYMBOL_LEN, "0x%08lx", address);
+   trace_seq_printf(s, fmt, str);
 }
 
 static void
 seq_print_sym_offset(struct trace_seq *s, const char *fmt,
 unsigned long address)
 {
-#ifdef CONFIG_KALLSYMS
char str[KSYM_SYMBOL_LEN];
+#ifdef CONFIG_KALLSYMS
const char *name;
 
sprint_symbol(str, address);
name = kretprobed(str);
 
-   trace_seq_printf(s, fmt, name);
+   if (name && strlen(name)) {
+   trace_seq_printf(s, fmt, name);
+   return;
+   }
 #endif
+   snprintf(str, KSYM_SYMBOL_LEN, "0x%08lx", address);
+   trace_seq_printf(s, fmt, str);
 }
 
 #ifndef CONFIG_64BIT
-- 
2.10.2