Skip to content
  • Quentin Monnet's avatar
    tools: bpftool: add JSON output for `bpftool prog dump xlated *` command · f05e2c32
    Quentin Monnet authored
    
    
    Add a new printing function to dump translated eBPF instructions as
    JSON. As for plain output, opcodes are printed only on request (when
    `opcodes` is provided on the command line).
    
    The disassembled output is generated by the same code that is used by
    the kernel verifier.
    
    Example output:
    
        $ bpftool --json --pretty prog dump xlated id 1
        [{
                "disasm": "(bf) r6 = r1"
            },{
                "disasm": "(61) r7 = *(u32 *)(r6 +16)"
            },{
                "disasm": "(95) exit"
            }
        ]
    
        $ bpftool --json --pretty prog dump xlated id 1 opcodes
        [{
                "disasm": "(bf) r6 = r1",
                "opcodes": {
                    "code": "0xbf",
                    "src_reg": "0x1",
                    "dst_reg": "0x6",
                    "off": ["0x00","0x00"
                    ],
                    "imm": ["0x00","0x00","0x00","0x00"
                    ]
                }
            },{
                "disasm": "(61) r7 = *(u32 *)(r6 +16)",
                "opcodes": {
                    "code": "0x61",
                    "src_reg": "0x6",
                    "dst_reg": "0x7",
                    "off": ["0x10","0x00"
                    ],
                    "imm": ["0x00","0x00","0x00","0x00"
                    ]
                }
            },{
                "disasm": "(95) exit",
                "opcodes": {
                    "code": "0x95",
                    "src_reg": "0x0",
                    "dst_reg": "0x0",
                    "off": ["0x00","0x00"
                    ],
                    "imm": ["0x00","0x00","0x00","0x00"
                    ]
                }
            }
        ]
    
    Signed-off-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
    Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f05e2c32