On 10/23/2017 06:24 PM, Jakub Kicinski wrote:
From: Quentin Monnet <quentin.mon...@netronome.com>

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: Quentin Monnet <quentin.mon...@netronome.com>

Acked-by: Daniel Borkmann <dan...@iogearbox.net>

Reply via email to