mirror of
https://github.com/angr/pyvex
synced 2026-06-21 13:47:01 +00:00
0f32e9dbb7
* plugins 2: no more plugins * homebrew arches * lint * I think this is related to thumb mode? * Remove archinfo from tests * Remove archinfo from setup.cfg * Fix fuzzing * Fix ARM32 -> ARM * Fix missing closing brace in PyvexArch.__repr__ * Get register offsets directly from vex_ffi * Fix test cases failures related to little endian instructions * Resore riscv64le * Also in __init__.py * Add subregister map * Fix another test * Don't treat rMSR r value as a vex offset, treat it as a register * Fix remaining failing test cases * Add some backwards compatibility for register indicies * Revert _lookup_register to original behaviour * Fix arch name * Fix registers with vex_name * Fix LDM instruction using register numbers --------- Co-authored-by: Kevin Phoenix <kevin@kphoenix.us>
17 lines
507 B
Python
17 lines
507 B
Python
import pyvex
|
|
|
|
|
|
def test_ud2():
|
|
# On x86 and amd64, ud2 is a valid 2-byte instruction that means "undefined instruction". Upon decoding a basic
|
|
# block that ends with ud2, we should treat it as an explicit NoDecode, instead of skipping the instruction and
|
|
# resume lifting.
|
|
|
|
b = pyvex.block.IRSB(b"\x90\x90\x0f\x0b\x90\x90", 0x20, pyvex.ARCH_AMD64)
|
|
assert b.jumpkind == "Ijk_NoDecode"
|
|
assert b.next.con.value == 0x22
|
|
assert b.size == 4
|
|
|
|
|
|
if __name__ == "__main__":
|
|
test_ud2()
|