blob: 1116e6b131afcedf04114f04c0cc5ba2177773e5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
// SPDX-License-Identifier: GPL-3.0-or-later
/* seitan - Syscall Expressive Interpreter, Transformer and Notifier
*
* cooker/gluten.c - gluten (bytecode) file and layout functions
*
* Copyright 2023 Red Hat GmbH
* Author: Stefano Brivio <sbrivio@redhat.com>
*/
#include "cooker.h"
#include "gluten.h"
#include "util.h"
#define GLUTEN_INST_SIZE BUFSIZ
#define GLUTEN_DATA_SIZE BUFSIZ
static char gluten[GLUTEN_INST_SIZE + GLUTEN_DATA_SIZE];
static size_t gluten_arg_storage[ARG_TYPE_COUNT] = {
[ARG_INT] = sizeof(int),
[ARG_INTMASK] = sizeof(int),
};
int gluten_alloc(struct gluten_ctx *g, size_t size)
{
debug(" allocating %lu at offset %i", size, g->sp);
if ((g->sp += size) >= GLUTEN_DATA_SIZE)
die("Temporary data size exceeded");
return g->sp - size;
}
int gluten_alloc_type(struct gluten_ctx *g, enum arg_type type)
{
return gluten_alloc(g, gluten_arg_storage[type]);
}
int gluten_init(struct gluten_ctx *g)
{
g->gluten = gluten;
return 0;
}
|