From 641cc809f5699fede96a76821de6fed8b7375c73 Mon Sep 17 00:00:00 2001 From: David Drysdale Date: Tue, 11 Aug 2015 10:31:29 +0100 Subject: tools: support more LD modes in disassembler Add support for other modes for LD/LDX operations (even though they are rare in seccomp BPF programs), specifically BPF_IMM, BPF_IND, BPF_LEN and BPF_MSH. Signed-off-by: David Drysdale Signed-off-by: Paul Moore --- tools/scmp_bpf_disasm.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tools/scmp_bpf_disasm.c b/tools/scmp_bpf_disasm.c index b412759..911fd85 100644 --- a/tools/scmp_bpf_disasm.c +++ b/tools/scmp_bpf_disasm.c @@ -199,6 +199,18 @@ static void bpf_decode_args(const bpf_instr_raw *bpf, unsigned int line) case BPF_MEM: printf("$temp[%u]", bpf->k); break; + case BPF_IMM: + printf("%u", bpf->k); + break; + case BPF_IND: + printf("$data[X + %u]", bpf->k); + break; + case BPF_LEN: + printf("len($data)"); + break; + case BPF_MSH: + printf("4 * $data[%u] & 0x0f", bpf->k); + break; } break; case BPF_ST: @@ -312,6 +324,18 @@ static void bpf_dot_decode_args(const bpf_instr_raw *bpf, unsigned int line) case BPF_MEM: printf(" $temp[%u]\",shape=parallelogram]\n", bpf->k); break; + case BPF_IMM: + printf(" %u\",shape=parallelogram]\n", bpf->k); + break; + case BPF_IND: + printf(" $data[X + %u]\",shape=parallelogram]\n", bpf->k); + break; + case BPF_LEN: + printf(" len($data)\",shape=parallelogram]\n"); + break; + case BPF_MSH: + printf(" 4 * $data[%u] & 0x0f\",shape=parallelogram]\n", bpf->k); + break; } break; case BPF_ST: -- cgit v1.2.1