diff options
author | Alice Frosi <afrosi@redhat.com> | 2023-05-17 15:46:57 +0200 |
---|---|---|
committer | Alice Frosi <afrosi@redhat.com> | 2023-05-17 16:05:51 +0200 |
commit | ef403b6687ec5739933f9f215093e1ea5c923666 (patch) | |
tree | 1e13e29251c18541b9b6f915e142aca886806e60 /cooker/emit.h | |
parent | 1e78526693d22abe24c98291a782998573f6b01d (diff) | |
download | seitan-ef403b6687ec5739933f9f215093e1ea5c923666.tar seitan-ef403b6687ec5739933f9f215093e1ea5c923666.tar.gz seitan-ef403b6687ec5739933f9f215093e1ea5c923666.tar.bz2 seitan-ef403b6687ec5739933f9f215093e1ea5c923666.tar.lz seitan-ef403b6687ec5739933f9f215093e1ea5c923666.tar.xz seitan-ef403b6687ec5739933f9f215093e1ea5c923666.tar.zst seitan-ef403b6687ec5739933f9f215093e1ea5c923666.zip |
cooker, seitan: simple working example
parser:
- add OP_BLOCK and OP_RETURN to the parser
seitan:
- fix op_cmp in seitan, it was jmp when comparison was true
Working example:
demo.json:
[
{
"match": [ /* qemu-pr-helper and similar */
{ "connect": { "addr": { "family": "unix", "path": "/tmp/test.sock" } } }
],
"return": 0
}
]
Create gluten and the bpf filter:
$ seitan-cooker demo.hjson demo.gluten demo.bpf
Launch the seitan eater with the target program:
$ seitan-eater -i demo.bpf -- strace -e connect tests-utils/test-syscalls connect
Start seitan with gluten:
$ seitan -i demo.gluten -p $(pgrep seitan-eater)
Seitan mocks the connect syscall and `connect` returns successfully:
$ seitan-eater -i demo.bpf -- strace -e connect tests-utils/test-syscalls connect
Test syscall: connect
connect(4, {sa_family=AF_UNIX, sun_path="/tmp/test.sock"}, 108) = 0
Diffstat (limited to 'cooker/emit.h')
-rw-r--r-- | cooker/emit.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/cooker/emit.h b/cooker/emit.h index 2135052..5d15b1b 100644 --- a/cooker/emit.h +++ b/cooker/emit.h @@ -16,6 +16,8 @@ void emit_cmp_field(struct gluten_ctx *g, enum op_cmp_type cmp, struct field *field, struct gluten_offset base, struct gluten_offset match, enum jump_type jmp); +void emit_return(struct gluten_ctx *g, struct gluten_offset v); +void emit_block(struct gluten_ctx *g, int32_t error); struct gluten_offset emit_data(struct gluten_ctx *g, enum type type, size_t str_len, union value *value); void link_block(struct gluten_ctx *g); |