From 269320f8155b23d9029d033127b9672a5ef63f08 Mon Sep 17 00:00:00 2001 From: Martin Teichmann <martin.teichmann@gmail.com> Date: Sun, 12 Feb 2023 11:26:07 +0000 Subject: [PATCH] add support for signed memory --- ebpfcat/ebpf.py | 4 ++++ ebpfcat/ebpf_test.py | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ebpfcat/ebpf.py b/ebpfcat/ebpf.py index 84b6d41..acd1bae 100644 --- a/ebpfcat/ebpf.py +++ b/ebpfcat/ebpf.py @@ -1111,6 +1111,10 @@ class EBPF: self.mI = MemoryMap(self, "I") self.mA = MemoryMap(self, "A") # actually I, but treat as Q self.mQ = MemoryMap(self, "Q") + self.mb = MemoryMap(self, "b") + self.mh = MemoryMap(self, "h") + self.mi = MemoryMap(self, "i") + self.mq = MemoryMap(self, "q") self.r = RegisterArray(self, True, False) self.sr = RegisterArray(self, True, True) diff --git a/ebpfcat/ebpf_test.py b/ebpfcat/ebpf_test.py index 88928de..a4c33e6 100644 --- a/ebpfcat/ebpf_test.py +++ b/ebpfcat/ebpf_test.py @@ -141,6 +141,8 @@ class Tests(TestCase): e.r3 = e.mH[e.r3 + 2] e.r4 = e.mI[7 + e.r8] e.r5 = e.mQ[e.r3 - 7] + e.r5 = e.mb[e.r3] >> 2 + e.r5 = e.mB[e.r3] >> 2 self.assertEqual(e.opcodes, [Instruction(opcode=114, dst=5, src=0, off=0, imm=7), Instruction(opcode=106, dst=3, src=0, off=2, imm=3), @@ -153,7 +155,12 @@ class Tests(TestCase): Instruction(opcode=113, dst=2, src=5, off=0, imm=0), Instruction(opcode=105, dst=3, src=3, off=2, imm=0), Instruction(opcode=97, dst=4, src=8, off=7, imm=0), - Instruction(opcode=121, dst=5, src=3, off=-7, imm=0)]) + Instruction(opcode=121, dst=5, src=3, off=-7, imm=0), + Instruction(opcode=O.B+O.LD, dst=5, src=3, off=0, imm=0), + Instruction(opcode=O.LONG+O.ARSH, dst=5, src=0, off=0, imm=2), + Instruction(opcode=O.B+O.LD, dst=5, src=3, off=0, imm=0), + Instruction(opcode=O.LONG+O.RSH, dst=5, src=0, off=0, imm=2), + ]) def test_local(self): class Local(EBPF): -- GitLab