Minor Python regress fixes (#2030)
* Fix erronous method name * Uncomment known failures * Opportunistic improvements
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import regress
|
||||||
|
|
||||||
from unicorn import *
|
from unicorn import *
|
||||||
from unicorn.arm64_const import *
|
from unicorn.arm64_const import *
|
||||||
from unicorn.x86_const import *
|
|
||||||
|
|
||||||
import regress
|
|
||||||
|
|
||||||
class Arm64RegReadWriteW0ThroughW30(regress.RegressTest):
|
class Arm64RegReadWriteW0ThroughW30(regress.RegressTest):
|
||||||
"""
|
"""
|
||||||
@@ -14,17 +14,26 @@ class Arm64RegReadWriteW0ThroughW30(regress.RegressTest):
|
|||||||
|
|
||||||
def runTest(self):
|
def runTest(self):
|
||||||
uc = Uc(UC_ARCH_ARM64, UC_MODE_ARM)
|
uc = Uc(UC_ARCH_ARM64, UC_MODE_ARM)
|
||||||
|
|
||||||
uc.reg_write(UC_ARM64_REG_X0, 0x1234567890abcdef)
|
|
||||||
self.assertEquals(uc.reg_read(UC_ARM64_REG_X0), 0x1234567890abcdef)
|
|
||||||
self.assertEquals(uc.reg_read(UC_ARM64_REG_W0), 0x90abcdef)
|
|
||||||
|
|
||||||
uc.reg_write(UC_ARM64_REG_X30, 0xa1b2c3d4e5f6a7b8)
|
|
||||||
self.assertEquals(uc.reg_read(UC_ARM64_REG_W30), 0xe5f6a7b8)
|
|
||||||
|
|
||||||
uc.reg_write(UC_ARM64_REG_W30, 0xaabbccdd)
|
expected = 0x1234567890abcdef
|
||||||
self.assertEquals(uc.reg_read(UC_ARM64_REG_X30), 0xa1b2c3d4aabbccdd)
|
|
||||||
self.assertEquals(uc.reg_read(UC_ARM64_REG_W30), 0xaabbccdd)
|
uc.reg_write(UC_ARM64_REG_X0, expected)
|
||||||
|
self.assertEqual(uc.reg_read(UC_ARM64_REG_X0), expected)
|
||||||
|
self.assertEqual(uc.reg_read(UC_ARM64_REG_W0), expected & 0xffffffff)
|
||||||
|
|
||||||
|
# ----------------------------------------------------------
|
||||||
|
|
||||||
|
expected = 0xa1b2c3d4e5f6a7b8
|
||||||
|
|
||||||
|
uc.reg_write(UC_ARM64_REG_X30, expected)
|
||||||
|
self.assertEqual(uc.reg_read(UC_ARM64_REG_W30), expected & 0xffffffff)
|
||||||
|
|
||||||
|
expected_lo = 0xaabbccdd
|
||||||
|
|
||||||
|
uc.reg_write(UC_ARM64_REG_W30, expected_lo)
|
||||||
|
self.assertEqual(uc.reg_read(UC_ARM64_REG_X30), (expected & ~0xffffffff) | expected_lo)
|
||||||
|
self.assertEqual(uc.reg_read(UC_ARM64_REG_W30), expected_lo)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
regress.main()
|
regress.main()
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ class TestCtl(regress.RegressTest):
|
|||||||
# set page size to 2 MiB; this should work
|
# set page size to 2 MiB; this should work
|
||||||
uc.ctl_set_page_size(SIZE_2MB)
|
uc.ctl_set_page_size(SIZE_2MB)
|
||||||
|
|
||||||
# BUG! was it set properly?
|
# was it set properly?
|
||||||
# self.assertEqual(SIZE_2MB, uc.ctl_get_page_size())
|
self.assertEqual(SIZE_2MB, uc.ctl_get_page_size())
|
||||||
|
|
||||||
# set a page size which is not a power of 2
|
# set a page size which is not a power of 2
|
||||||
with self.assertRaises(UcError) as ex:
|
with self.assertRaises(UcError) as ex:
|
||||||
@@ -62,8 +62,8 @@ class TestCtl(regress.RegressTest):
|
|||||||
|
|
||||||
self.assertEqual(UC_ERR_ARG, ex.exception.errno)
|
self.assertEqual(UC_ERR_ARG, ex.exception.errno)
|
||||||
|
|
||||||
# BUG! are we still with the valid value?
|
# are we still with the valid value?
|
||||||
# self.assertEqual(SIZE_2MB, uc.ctl_get_page_size())
|
self.assertEqual(SIZE_2MB, uc.ctl_get_page_size())
|
||||||
|
|
||||||
# force uc to complete its initialization by triggering a random api
|
# force uc to complete its initialization by triggering a random api
|
||||||
uc.ctl_flush_tb()
|
uc.ctl_flush_tb()
|
||||||
@@ -74,8 +74,8 @@ class TestCtl(regress.RegressTest):
|
|||||||
|
|
||||||
self.assertEqual(UC_ERR_ARG, ex.exception.errno)
|
self.assertEqual(UC_ERR_ARG, ex.exception.errno)
|
||||||
|
|
||||||
# BUG! are we still with the valid value?
|
# are we still with the valid value?
|
||||||
# self.assertEqual(SIZE_2MB, uc.ctl_get_page_size())
|
self.assertEqual(SIZE_2MB, uc.ctl_get_page_size())
|
||||||
|
|
||||||
def test_timeout(self):
|
def test_timeout(self):
|
||||||
MILLIS_1S = 1000
|
MILLIS_1S = 1000
|
||||||
@@ -156,7 +156,7 @@ class TestCtl(regress.RegressTest):
|
|||||||
uc.mem_write(MAPPING_HI, NOPSLED)
|
uc.mem_write(MAPPING_HI, NOPSLED)
|
||||||
|
|
||||||
# this should prevents us from mapping to high addresses
|
# this should prevents us from mapping to high addresses
|
||||||
uc.ctl_tlb_mode(UC_TLB_CPU)
|
uc.ctl_set_tlb_mode(UC_TLB_CPU)
|
||||||
|
|
||||||
# this should fail
|
# this should fail
|
||||||
with self.assertRaises(UcError) as ex:
|
with self.assertRaises(UcError) as ex:
|
||||||
@@ -167,7 +167,7 @@ class TestCtl(regress.RegressTest):
|
|||||||
# ------------------------------------------------------
|
# ------------------------------------------------------
|
||||||
|
|
||||||
# this should allow us mapping to high addresses
|
# this should allow us mapping to high addresses
|
||||||
uc.ctl_tlb_mode(UC_TLB_VIRTUAL)
|
uc.ctl_set_tlb_mode(UC_TLB_VIRTUAL)
|
||||||
|
|
||||||
# this should ok now
|
# this should ok now
|
||||||
uc.emu_start(MAPPING_HI, MAPPING_HI + len(NOPSLED))
|
uc.emu_start(MAPPING_HI, MAPPING_HI + len(NOPSLED))
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ class TestMem(regress.RegressTest):
|
|||||||
|
|
||||||
base = 0x0010000000000000
|
base = 0x0010000000000000
|
||||||
|
|
||||||
self.uc.ctl_tlb_mode(UC_TLB_VIRTUAL)
|
self.uc.ctl_set_tlb_mode(UC_TLB_VIRTUAL)
|
||||||
|
|
||||||
for i in range(12):
|
for i in range(12):
|
||||||
code = base << i
|
code = base << i
|
||||||
@@ -49,7 +49,7 @@ class TestMem(regress.RegressTest):
|
|||||||
|
|
||||||
base = 0x0010000000000000
|
base = 0x0010000000000000
|
||||||
|
|
||||||
self.uc.ctl_tlb_mode(UC_TLB_CPU)
|
self.uc.ctl_set_tlb_mode(UC_TLB_CPU)
|
||||||
|
|
||||||
for i in range(12):
|
for i in range(12):
|
||||||
code = base << i
|
code = base << i
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ def hook_mem_read(uc, access, address, size, value, data):
|
|||||||
|
|
||||||
|
|
||||||
class REP(regress.RegressTest):
|
class REP(regress.RegressTest):
|
||||||
@regress.unittest.skip('writing to a UC_PROT_READ area will segfault Unicorn')
|
|
||||||
def runTest(self):
|
def runTest(self):
|
||||||
mu = Uc(UC_ARCH_X86, UC_MODE_32)
|
mu = Uc(UC_ARCH_X86, UC_MODE_32)
|
||||||
|
|
||||||
|
|||||||
@@ -31,8 +31,6 @@ class MmapSeg2(regress.RegressTest):
|
|||||||
uc.mem_map(0x2000, 0x4000)
|
uc.mem_map(0x2000, 0x4000)
|
||||||
uc.mem_write(0x1000, b' ' * 0x1004)
|
uc.mem_write(0x1000, b' ' * 0x1004)
|
||||||
|
|
||||||
self.assertTrue(True, 'If not reached, then we have BUG (crash on x86_64 Linux).')
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
regress.main()
|
regress.main()
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ class TestSparcRegRead(regress.RegressTest):
|
|||||||
self.assertEqual(1, uc.reg_read(UC_SPARC_REG_I7))
|
self.assertEqual(1, uc.reg_read(UC_SPARC_REG_I7))
|
||||||
|
|
||||||
# BUG: PC seems to get reset to 4 when done executing
|
# BUG: PC seems to get reset to 4 when done executing
|
||||||
# self.assertEqual(4 * 32, uc.reg_read(UC_SPARC_REG_PC)) # make sure we executed all instructions
|
self.assertEqual(4 * 32, uc.reg_read(UC_SPARC_REG_PC)) # make sure we executed all instructions
|
||||||
self.assertEqual(101, uc.reg_read(UC_SPARC_REG_SP))
|
self.assertEqual(101, uc.reg_read(UC_SPARC_REG_SP))
|
||||||
self.assertEqual(201, uc.reg_read(UC_SPARC_REG_FP))
|
self.assertEqual(201, uc.reg_read(UC_SPARC_REG_FP))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user