• Martin KaFai Lau's avatar
    bpf: libbpf: bpftool: Print bpf_line_info during prog dump · b053b439
    Martin KaFai Lau authored
    This patch adds print bpf_line_info function in 'prog dump jitted'
    and 'prog dump xlated':
    
    [root@arch-fb-vm1 bpf]# ~/devshare/fb-kernel/linux/tools/bpf/bpftool/bpftool prog dump jited pinned /sys/fs/bpf/test_btf_haskv
    [...]
    int test_long_fname_2(struct dummy_tracepoint_args * arg):
    bpf_prog_44a040bf25481309_test_long_fname_2:
    ; static int test_long_fname_2(struct dummy_tracepoint_args *arg)
       0:	push   %rbp
       1:	mov    %rsp,%rbp
       4:	sub    $0x30,%rsp
       b:	sub    $0x28,%rbp
       f:	mov    %rbx,0x0(%rbp)
      13:	mov    %r13,0x8(%rbp)
      17:	mov    %r14,0x10(%rbp)
      1b:	mov    %r15,0x18(%rbp)
      1f:	xor    %eax,%eax
      21:	mov    %rax,0x20(%rbp)
      25:	xor    %esi,%esi
    ; int key = 0;
      27:	mov    %esi,-0x4(%rbp)
    ; if (!arg->sock)
      2a:	mov    0x8(%rdi),%rdi
    ; if (!arg->sock)
      2e:	cmp    $0x0,%rdi
      32:	je     0x0000000000000070
      34:	mov    %rbp,%rsi
    ; counts = bpf_map_lookup_elem(&btf_map, &key);
      37:	add    $0xfffffffffffffffc,%rsi
      3b:	movabs $0xffff8881139d7480,%rdi
      45:	add    $0x110,%rdi
      4c:	mov    0x0(%rsi),%eax
      4f:	cmp    $0x4,%rax
      53:	jae    0x000000000000005e
      55:	shl    $0x3,%rax
      59:	add    %rdi,%rax
      5c:	jmp    0x0000000000000060
      5e:	xor    %eax,%eax
    ; if (!counts)
      60:	cmp    $0x0,%rax
      64:	je     0x0000000000000070
    ; counts->v6++;
      66:	mov    0x4(%rax),%edi
      69:	add    $0x1,%rdi
      6d:	mov    %edi,0x4(%rax)
      70:	mov    0x0(%rbp),%rbx
      74:	mov    0x8(%rbp),%r13
      78:	mov    0x10(%rbp),%r14
      7c:	mov    0x18(%rbp),%r15
      80:	add    $0x28,%rbp
      84:	leaveq
      85:	retq
    [...]
    
    With linum:
    [root@arch-fb-vm1 bpf]# ~/devshare/fb-kernel/linux/tools/bpf/bpftool/bpftool prog dump jited pinned /sys/fs/bpf/test_btf_haskv linum
    int _dummy_tracepoint(struct dummy_tracepoint_args * arg):
    bpf_prog_b07ccb89267cf242__dummy_tracepoint:
    ; return test_long_fname_1(arg); [file:/data/users/kafai/fb-kernel/linux/tools/testing/selftests/bpf/test_btf_haskv.c line_num:54 line_col:9]
       0:	push   %rbp
       1:	mov    %rsp,%rbp
       4:	sub    $0x28,%rsp
       b:	sub    $0x28,%rbp
       f:	mov    %rbx,0x0(%rbp)
      13:	mov    %r13,0x8(%rbp)
      17:	mov    %r14,0x10(%rbp)
      1b:	mov    %r15,0x18(%rbp)
      1f:	xor    %eax,%eax
      21:	mov    %rax,0x20(%rbp)
      25:	callq  0x000000000000851e
    ; return test_long_fname_1(arg); [file:/data/users/kafai/fb-kernel/linux/tools/testing/selftests/bpf/test_btf_haskv.c line_num:54 line_col:2]
      2a:	xor    %eax,%eax
      2c:	mov    0x0(%rbp),%rbx
      30:	mov    0x8(%rbp),%r13
      34:	mov    0x10(%rbp),%r14
      38:	mov    0x18(%rbp),%r15
      3c:	add    $0x28,%rbp
      40:	leaveq
      41:	retq
    [...]
    Signed-off-by: default avatarMartin KaFai Lau <kafai@fb.com>
    Acked-by: default avatarYonghong Song <yhs@fb.com>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    b053b439
jit_disasm.c 4.23 KB