def test_twice(self): prog = Program() with tempfile.NamedTemporaryFile() as f: f.write(create_elf_file(ET.CORE, [])) f.flush() prog.set_core_dump(f.name) self.assertRaisesRegex(ValueError, 'program memory was already initialized', prog.set_core_dump, f.name)
def test_simple(self): data = b"hello, world" prog = Program() with tempfile.NamedTemporaryFile() as f: f.write( create_elf_file( ET.CORE, [ElfSection(p_type=PT.LOAD, vaddr=0xFFFF0000, data=data)])) f.flush() prog.set_core_dump(f.name) self.assertEqual(prog.read(0xFFFF0000, len(data)), data) self.assertRaises(FaultError, prog.read, 0x0, len(data), physical=True)
def test_zero_fill(self): data = b'hello, world' prog = Program() with tempfile.NamedTemporaryFile() as f: f.write( create_elf_file(ET.CORE, [ ElfSection( p_type=PT.LOAD, vaddr=0xffff0000, data=data, memsz=len(data) + 4, ), ])) f.flush() prog.set_core_dump(f.name) self.assertEqual(prog.read(0xffff0000, len(data) + 4), data + bytes(4))
def test_physical(self): data = b'hello, world' prog = Program() with tempfile.NamedTemporaryFile() as f: f.write( create_elf_file(ET.CORE, [ ElfSection( p_type=PT.LOAD, vaddr=0xffff0000, paddr=0xa0, data=data, ), ])) f.flush() prog.set_core_dump(f.name) self.assertEqual(prog.read(0xffff0000, len(data)), data) self.assertEqual(prog.read(0xa0, len(data), physical=True), data)
def test_unsaved(self): data = b"hello, world" prog = Program() with tempfile.NamedTemporaryFile() as f: f.write( create_elf_file( ET.CORE, [ ElfSection( p_type=PT.LOAD, vaddr=0xFFFF0000, data=data, memsz=len(data) + 4, ), ], ) ) f.flush() prog.set_core_dump(f.name) with self.assertRaisesRegex(FaultError, "memory not saved in core dump") as cm: prog.read(0xFFFF0000, len(data) + 4) self.assertEqual(cm.exception.address, 0xFFFF000C)