From e709527c19415744b76354fafaef68d4ff35f015 Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Wed, 4 Mar 2020 15:21:03 -0500 Subject: [PATCH] Update lttng-syscalls-extractor for v5.6.0 Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers Change-Id: I48e4d82484d6edcc7601a40d2f94e5c46ad5184b --- instrumentation/syscalls/README | 9 ++--- .../linux-link-trace-syscalls-as-data.patch | 27 ++++++------- .../lttng-syscalls-extractor.c | 39 ++++++++++++------- 3 files changed, 41 insertions(+), 34 deletions(-) diff --git a/instrumentation/syscalls/README b/instrumentation/syscalls/README index a2a66fa0..6dbc640e 100644 --- a/instrumentation/syscalls/README +++ b/instrumentation/syscalls/README @@ -10,12 +10,11 @@ is expected). See the dmesg output for system call metadata. 2) Generate system call TRACE_EVENT(). -Take the dmesg metadata and feed it to lttng-syscalls-generate-headers.sh -(do not include the ending SUCCESS line), e.g., from the -instrumentation/syscalls directory. See the script header for usage example. -It should be run for both the integers and pointers types. +Take the dmesg data and feed it to lttng-syscalls-generate-headers.sh from +the instrumentation/syscalls directory. See the script header for usage +example. It should be run for both the integers and pointers types. -After these are created, we just need to follow the new system call additions, +After these are created, you just need to follow the new system call additions, no need to regenerate the whole thing, since system calls are only appended to. 3) Override headers diff --git a/instrumentation/syscalls/lttng-syscalls-extractor/linux-link-trace-syscalls-as-data.patch b/instrumentation/syscalls/lttng-syscalls-extractor/linux-link-trace-syscalls-as-data.patch index 6ba8e668..5269071f 100644 --- a/instrumentation/syscalls/lttng-syscalls-extractor/linux-link-trace-syscalls-as-data.patch +++ b/instrumentation/syscalls/lttng-syscalls-extractor/linux-link-trace-syscalls-as-data.patch @@ -3,27 +3,24 @@ Linux: link syscalls metadata as data (for LTTng syscall extraction) * NOT for mainline * Signed-off-by: Mathieu Desnoyers ---- - include/asm-generic/vmlinux.lds.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) -Index: linux-2.6-lttng/include/asm-generic/vmlinux.lds.h -=================================================================== ---- linux-2.6-lttng.orig/include/asm-generic/vmlinux.lds.h -+++ linux-2.6-lttng/include/asm-generic/vmlinux.lds.h -@@ -169,6 +169,7 @@ - MEM_KEEP(exit.data) \ +diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h +index e00f41aa8ec4..13f51fa7c3f3 100644 +--- a/include/asm-generic/vmlinux.lds.h ++++ b/include/asm-generic/vmlinux.lds.h +@@ -318,6 +318,7 @@ + __end_once = .; \ STRUCT_ALIGN(); \ *(__tracepoints) \ + TRACE_SYSCALLS() \ /* implement dynamic printk debug */ \ - . = ALIGN(8); \ - VMLINUX_SYMBOL(__start___jump_table) = .; \ -@@ -489,7 +490,6 @@ - *(.init.rodata) \ + . = ALIGN(8); \ + __start___verbose = .; \ +@@ -650,7 +651,6 @@ MCOUNT_REC() \ + *(.init.rodata .init.rodata.*) \ FTRACE_EVENTS() \ - TRACE_SYSCALLS() \ - DEV_DISCARD(init.rodata) \ - CPU_DISCARD(init.rodata) \ + KPROBE_BLACKLIST() \ + ERROR_INJECT_WHITELIST() \ MEM_DISCARD(init.rodata) \ diff --git a/instrumentation/syscalls/lttng-syscalls-extractor/lttng-syscalls-extractor.c b/instrumentation/syscalls/lttng-syscalls-extractor/lttng-syscalls-extractor.c index ccf7681f..f1e34260 100644 --- a/instrumentation/syscalls/lttng-syscalls-extractor/lttng-syscalls-extractor.c +++ b/instrumentation/syscalls/lttng-syscalls-extractor/lttng-syscalls-extractor.c @@ -4,8 +4,8 @@ * * Dump syscall metadata to console. * - * Copyright 2011 - Mathieu Desnoyers - * Copyright 2011 - Julien Desfossez + * Copyright 2011 Mathieu Desnoyers + * Copyright 2011 Julien Desfossez */ #include @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include @@ -28,6 +28,13 @@ #error "You need to set CONFIG_KALLSYMS_ALL=y" #endif +/* + * The 'ident' parameter is prepended to each printk line to help + * extract the proper lines from dmesg. + */ +static char *ident = ""; +module_param(ident, charp, 0); + static struct syscall_metadata **__start_syscalls_metadata; static struct syscall_metadata **__stop_syscalls_metadata; @@ -52,31 +59,35 @@ int init_module(void) __start_syscalls_metadata = (void *) kallsyms_lookup_name("__start_syscalls_metadata"); __stop_syscalls_metadata = (void *) kallsyms_lookup_name("__stop_syscalls_metadata"); + printk("%s---START---\n", ident); for (i = 0; i < NR_syscalls; i++) { int j; meta = find_syscall_meta(i); if (!meta) continue; - printk("syscall %s nr %d nbargs %d ", - meta->name, meta->syscall_nr, meta->nb_args); - printk("types: ("); + printk("%ssyscall %s nr %d nbargs %d ", + ident, meta->name, meta->syscall_nr, meta->nb_args); + printk(KERN_CONT "types: ("); for (j = 0; j < meta->nb_args; j++) { if (j > 0) - printk(", "); - printk("%s", meta->types[j]); + printk(KERN_CONT ", "); + printk(KERN_CONT "%s", meta->types[j]); } - printk(") "); - printk("args: ("); + printk(KERN_CONT ") "); + printk(KERN_CONT "args: ("); for (j = 0; j < meta->nb_args; j++) { if (j > 0) - printk(", "); - printk("%s", meta->args[j]); + printk(KERN_CONT ", "); + printk(KERN_CONT "%s", meta->args[j]); } - printk(")\n"); + printk(KERN_CONT ")\n"); } - printk("SUCCESS\n"); + printk("%s---END---\n", ident); + /* + * This module always fails to load. + */ return -1; } -- 2.34.1