Skip to content
  • Song Liu's avatar
    bpftool: use bpf_program__get_prog_info_linear() in prog.c:do_dump() · cae73f23
    Song Liu authored
    
    
    This patches uses bpf_program__get_prog_info_linear() to simplify the
    logic in prog.c do_dump().
    
    Committer testing:
    
    Before:
    
      # bpftool prog dump xlated id 208 > /tmp/dump.xlated.before
      # bpftool prog dump jited id 208 > /tmp/dump.jited.before
      # bpftool map dump id 107 > /tmp/map.dump.before
    
    After:
    
      # ~acme/git/perf/tools/bpf/bpftool/bpftool map dump id 107 > /tmp/map.dump.after
      # ~acme/git/perf/tools/bpf/bpftool/bpftool prog dump xlated id 208 > /tmp/dump.xlated.after
      # ~acme/git/perf/tools/bpf/bpftool/bpftool prog dump jited id 208 > /tmp/dump.jited.after
      # diff -u /tmp/dump.xlated.before /tmp/dump.xlated.after
      # diff -u /tmp/dump.jited.before /tmp/dump.jited.after
      # diff -u /tmp/map.dump.before /tmp/map.dump.after
      # ~acme/git/perf/tools/bpf/bpftool/bpftool prog dump xlated id 208
         0: (bf) r6 = r1
         1: (85) call bpf_get_current_pid_tgid#80800
         2: (63) *(u32 *)(r10 -328) = r0
         3: (bf) r2 = r10
         4: (07) r2 += -328
         5: (18) r1 = map[id:107]
         7: (85) call __htab_map_lookup_elem#85680
         8: (15) if r0 == 0x0 goto pc+1
         9: (07) r0 += 56
        10: (b7) r7 = 0
        11: (55) if r0 != 0x0 goto pc+52
        12: (bf) r1 = r10
        13: (07) r1 += -328
        14: (b7) r2 = 64
        15: (bf) r3 = r6
        16: (85) call bpf_probe_read#-46848
        17: (bf) r2 = r10
        18: (07) r2 += -320
        19: (18) r1 = map[id:106]
        21: (07) r1 += 208
        22: (61) r0 = *(u32 *)(r2 +0)
        23: (35) if r0 >= 0x200 goto pc+3
        24: (67) r0 <<= 3
        25: (0f) r0 += r1
        26: (05) goto pc+1
        27: (b7) r0 = 0
        28: (15) if r0 == 0x0 goto pc+35
        29: (71) r1 = *(u8 *)(r0 +0)
        30: (15) if r1 == 0x0 goto pc+33
        31: (b7) r5 = 64
        32: (79) r1 = *(u64 *)(r10 -320)
        33: (15) if r1 == 0x2 goto pc+2
        34: (15) if r1 == 0x101 goto pc+3
        35: (55) if r1 != 0x15 goto pc+19
        36: (79) r3 = *(u64 *)(r6 +16)
        37: (05) goto pc+1
        38: (79) r3 = *(u64 *)(r6 +24)
        39: (15) if r3 == 0x0 goto pc+15
        40: (b7) r1 = 0
        41: (63) *(u32 *)(r10 -260) = r1
        42: (bf) r1 = r10
        43: (07) r1 += -256
        44: (b7) r2 = 256
        45: (85) call bpf_probe_read_str#-46704
        46: (b7) r5 = 328
        47: (63) *(u32 *)(r10 -264) = r0
        48: (bf) r1 = r0
        49: (67) r1 <<= 32
        50: (77) r1 >>= 32
        51: (25) if r1 > 0xff goto pc+3
        52: (07) r0 += 72
        53: (57) r0 &= 255
        54: (bf) r5 = r0
        55: (bf) r4 = r10
        56: (07) r4 += -328
        57: (bf) r1 = r6
        58: (18) r2 = map[id:105]
        60: (18) r3 = 0xffffffff
        62: (85) call bpf_perf_event_output_tp#-45104
        63: (bf) r7 = r0
        64: (bf) r0 = r7
        65: (95) exit
      #
    
    Signed-off-by: default avatarSong Liu <songliubraving@fb.com>
    Reviewed-by: default avatarJiri Olsa <jolsa@kernel.org>
    Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: kernel-team@fb.com
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stanislav Fomichev <sdf@google.com>
    Link: http://lkml.kernel.org/r/20190312053051.2690567-4-songliubraving@fb.com
    
    
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    cae73f23