lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 29 Oct 2015 13:25:53 -0300 From: Arnaldo Carvalho de Melo <acme@...nel.org> To: Wang Nan <wangnan0@...wei.com>, Ingo Molnar <mingo@...nel.org> Cc: ast@...mgrid.com, brendan.d.gregg@...il.com, a.p.zijlstra@...llo.nl, daniel@...earbox.net, dsahern@...il.com, hekuang@...wei.com, jolsa@...nel.org, lizefan@...wei.com, masami.hiramatsu.pt@...achi.com, namhyung@...nel.org, paulus@...ba.org, linux-kernel@...r.kernel.org, pi3orama@....com, xiakaixu@...wei.com Subject: Re: [PATCH 09/31] perf tools: Compile scriptlets to BPF objects when passing '.c' to --event Em Wed, Oct 14, 2015 at 12:41:20PM +0000, Wang Nan escreveu: > This patch provides infrastructure for passing source files to --event > directly using: > > # perf record --event bpf-file.c command > > This patch does following works: > > 1) Allow passing '.c' file to '--event'. parse_events_load_bpf() is > expanded to allow caller tell it whether the passed file is source > file or object. > > 2) llvm__compile_bpf() is called to compile the '.c' file, the result > is saved into memory. Use bpf_object__open_buffer() to load the > in-memory object. > > Introduces a bpf-script-example.c so we can manually test it: > > # perf record --clang-opt "-DLINUX_VERSION_CODE=0x40200" --event ./bpf-script-example.c sleep 1 > > Note that '--clang-opt' must put before '--event'. > > Futher patches will merge it into a testcase so can be tested automatically. Not working here... humm, perhaps the version again... [root@...icio linux]# perf record --clang-opt "-DLINUX_VERSION_CODE=0x40200" --event tools/perf/tests/bpf-script-example.c sleep 1 libbpf: load bpf program failed: Invalid argument libbpf: -- BEGIN DUMP LOG --- libbpf: libbpf: -- END LOG -- libbpf: failed to load program 'func=sys_epoll_pwait' Yeah, as soon as I used: # perf record --clang-opt "-DLINUX_VERSION_CODE=0x40300" --event tools/perf/tests/bpf-script-example.c sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.013 MB perf.data ] [root@...icio linux]# I think we should provide some stuff like this LINUX_VERSION_CODE automagically, right? And also check the version in a .o file, to make sure we don't ask the kernel to load something with a mismatch in that version. And you could've provided something that would actually do something meaningful, i.e. a filter that would capture some samples for a given event while discarding something not that important... I.e. show the value provided at the time we build that patch. I'll try to come up with something like that after I have lunch, but so far so good, I think I'll be able to send this to Ingo today, and that is a major milestone! Great work, thanks a lot for doing this! - Arnaldo P.S.: If we pass a .c ending string to 'trace', 'record', 'top', etc, I think we could do away with that pesky --event/-e, i.e.: trace cool_stuff.c Would do the right thing, i.e. be equivalent to: trace --event cool_stuff.c -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists