summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2017-08-16 16:37:34 +0200
committerUlf Hermann <ulf.hermann@qt.io>2017-08-17 17:55:41 +0200
commitd86c13d143989a961eba149e3abfab9e3f471744 (patch)
treec16c260c24712819cb967415ec79e58e26d3e4bf /lib
parent3695a1ba8dcd16459e0f35b74e88dbef48d21861 (diff)
parent54ba4ce2973113d8f4315d4fc90e16a9b4476ea6 (diff)
Merge tag 'elfutils-0.170'
elfutils 0.170 release Change-Id: I37d03645902b9f0a9fb708af1551db8843537799
Diffstat (limited to 'lib')
-rw-r--r--lib/ChangeLog5
-rw-r--r--lib/Makefile.am2
-rw-r--r--lib/bpf.h82
3 files changed, 88 insertions, 1 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog
index d9109529..7cfa768a 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -37,6 +37,11 @@
* system.h: Drop mempcpy replacement.
* xstrndup.c: Don't include system.h.
+2017-07-18 Mark Wielaard <mark@klomp.org>
+
+ * bpf.h: New file.
+ * Makefile.am (noinst_HEADERS): Add bpf.h
+
2017-05-05 Mark Wielaard <mark@klomp.org>
* printversion.c (print_version): Update copyright year.
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 48947c64..7caafa3e 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -38,7 +38,7 @@ libeu_a_SOURCES = xstrdup.c xstrndup.c xmalloc.c next_prime.c \
color.c printversion.c
noinst_HEADERS = fixedsizehash.h libeu.h system.h dynamicsizehash.h list.h \
- md5.h sha1.h eu-config.h color.h printversion.h
+ md5.h sha1.h eu-config.h color.h printversion.h bpf.h
EXTRA_DIST = dynamicsizehash.c features.h.in
if !GPROF
diff --git a/lib/bpf.h b/lib/bpf.h
new file mode 100644
index 00000000..db80a51e
--- /dev/null
+++ b/lib/bpf.h
@@ -0,0 +1,82 @@
+/* Minimal extended BPF constants as alternative for linux/bpf.h. */
+
+#ifndef _ELFUTILS_BPF_H
+#define _ELFUTILS_BPF_H 1
+
+#include <stdint.h>
+
+#define BPF_CLASS(code) ((code) & 0x07)
+
+#define BPF_LD 0x00
+#define BPF_LDX 0x01
+#define BPF_ST 0x02
+#define BPF_STX 0x03
+#define BPF_ALU 0x04
+#define BPF_JMP 0x05
+#define BPF_RET 0x06
+#define BPF_MISC 0x07
+
+#define BPF_ALU64 0x07
+
+#define BPF_JNE 0x50
+#define BPF_JSGT 0x60
+#define BPF_JSGE 0x70
+#define BPF_CALL 0x80
+#define BPF_EXIT 0x90
+
+#define BPF_W 0x00
+#define BPF_H 0x08
+#define BPF_B 0x10
+
+#define BPF_IMM 0x00
+#define BPF_ABS 0x20
+#define BPF_IND 0x40
+#define BPF_MEM 0x60
+#define BPF_LEN 0x80
+#define BPF_MSH 0xa0
+
+#define BPF_DW 0x18
+#define BPF_XADD 0xc0
+
+#define BPF_ADD 0x00
+#define BPF_SUB 0x10
+#define BPF_MUL 0x20
+#define BPF_DIV 0x30
+#define BPF_OR 0x40
+#define BPF_AND 0x50
+#define BPF_LSH 0x60
+#define BPF_RSH 0x70
+#define BPF_NEG 0x80
+#define BPF_MOD 0x90
+#define BPF_XOR 0xa0
+
+#define BPF_MOV 0xb0
+#define BPF_ARSH 0xc0
+
+#define BPF_JA 0x00
+#define BPF_JEQ 0x10
+#define BPF_JGT 0x20
+#define BPF_JGE 0x30
+#define BPF_JSET 0x40
+
+#define BPF_K 0x00
+#define BPF_X 0x08
+
+#define BPF_END 0xd0
+#define BPF_TO_LE 0x00
+#define BPF_TO_BE 0x08
+
+#define BPF_PSEUDO_MAP_FD 1
+
+#define MAX_BPF_REG 10
+
+struct bpf_insn
+{
+ uint8_t code;
+ uint8_t dst_reg:4;
+ uint8_t src_reg:4;
+ int16_t off;
+ int32_t imm;
+};
+
+#endif