Skip to content

Commit feaf128

Browse files
committed
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) <[email protected]>
1 parent d0ba52f commit feaf128

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

kernel/trace/trace_output.c

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -340,31 +340,41 @@ static inline const char *kretprobed(const char *name)
340340
static void
341341
seq_print_sym_short(struct trace_seq *s, const char *fmt, unsigned long address)
342342
{
343-
#ifdef CONFIG_KALLSYMS
344343
char str[KSYM_SYMBOL_LEN];
344+
#ifdef CONFIG_KALLSYMS
345345
const char *name;
346346

347347
kallsyms_lookup(address, NULL, NULL, NULL, str);
348348

349349
name = kretprobed(str);
350350

351-
trace_seq_printf(s, fmt, name);
351+
if (name && strlen(name)) {
352+
trace_seq_printf(s, fmt, name);
353+
return;
354+
}
352355
#endif
356+
snprintf(str, KSYM_SYMBOL_LEN, "0x%08lx", address);
357+
trace_seq_printf(s, fmt, str);
353358
}
354359

355360
static void
356361
seq_print_sym_offset(struct trace_seq *s, const char *fmt,
357362
unsigned long address)
358363
{
359-
#ifdef CONFIG_KALLSYMS
360364
char str[KSYM_SYMBOL_LEN];
365+
#ifdef CONFIG_KALLSYMS
361366
const char *name;
362367

363368
sprint_symbol(str, address);
364369
name = kretprobed(str);
365370

366-
trace_seq_printf(s, fmt, name);
371+
if (name && strlen(name)) {
372+
trace_seq_printf(s, fmt, name);
373+
return;
374+
}
367375
#endif
376+
snprintf(str, KSYM_SYMBOL_LEN, "0x%08lx", address);
377+
trace_seq_printf(s, fmt, str);
368378
}
369379

370380
#ifndef CONFIG_64BIT

0 commit comments

Comments
 (0)