[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1363705559.2558.6.camel@edumazet-glaptop>
Date: Tue, 19 Mar 2013 08:05:59 -0700
From: Eric Dumazet <eric.dumazet@...il.com>
To: Daniel Borkmann <dborkman@...hat.com>
Cc: netdev@...r.kernel.org, davem@...emloft.net, jasowang@...hat.com,
Eric Dumazet <edumazet@...gle.com>
Subject: Re: [PATCH v2 net-next 4/4] filter: add minimal BPF JIT emitted
image disassembler
On Tue, 2013-03-19 at 15:34 +0100, Daniel Borkmann wrote:
> This is a minimal stand-alone user space helper, that allows for debugging or
> verification of emitted BPF JIT images. This is in particular useful for
> emitted opcode debugging, since minor bugs in the JIT compiler can be fatal.
> The disassembler is architecture generic and uses libopcodes and libbfd.
>
> How to get to the disassembly, example:
>
> 1) `echo 2 > /proc/sys/net/core/bpf_jit_enable`
> 2) Load a BPF filter (e.g. `tcpdump -p -n -s 0 -i eth1 host 192.168.20.0/24`)
> 3) Run e.g. `bpf_jit_disasm -o` to disassemble the most recent JIT code output
>
> `bpf_jit_disasm -o` will display the related opcodes to a particular instruction
> as well. Example for x86_64:
>
> $./bpf_jit_disasm
> 94 bytes emitted from JIT compiler (pass:3, flen:9)
> ffffffffa0356000 + <x>:
> 0: push %rbp
> 1: mov %rsp,%rbp
> 4: sub $0x60,%rsp
> 8: mov %rbx,-0x8(%rbp)
> c: mov 0x68(%rdi),%r9d
> 10: sub 0x6c(%rdi),%r9d
> 14: mov 0xe0(%rdi),%r8
> 1b: mov $0xc,%esi
> 20: callq 0xffffffffe0d01b71
> 25: cmp $0x86dd,%eax
> 2a: jne 0x000000000000003d
> 2c: mov $0x14,%esi
> 31: callq 0xffffffffe0d01b8d
> 36: cmp $0x6,%eax
> [...]
> 5c: leaveq
> 5d: retq
>
> $ ./bpf_jit_disasm -o
> 94 bytes emitted from JIT compiler (pass:3, flen:9)
> ffffffffa0356000 + <x>:
> 0: push %rbp
> 55
> 1: mov %rsp,%rbp
> 48 89 e5
> 4: sub $0x60,%rsp
> 48 83 ec 60
> 8: mov %rbx,-0x8(%rbp)
> 48 89 5d f8
> c: mov 0x68(%rdi),%r9d
> 44 8b 4f 68
> 10: sub 0x6c(%rdi),%r9d
> 44 2b 4f 6c
> [...]
> 5c: leaveq
> c9
> 5d: retq
> c3
>
> Cc: Eric Dumazet <edumazet@...gle.com>
> Signed-off-by: Daniel Borkmann <dborkman@...hat.com>
> ---
Very useful, thanks Daniel !
Acked-by: Eric Dumazet <edumazet@...gle.com>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists