mirror of
				https://github.com/yuzu-emu/unicorn.git
				synced 2025-11-04 13:24:57 +00:00 
			
		
		
		
	Add regression test for new eflags patch
This commit is contained in:
		
							parent
							
								
									3a1f231e8f
								
							
						
					
					
						commit
						46c53fa4b7
					
				
							
								
								
									
										38
									
								
								tests/regress/x86_eflags.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								tests/regress/x86_eflags.py
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,38 @@
 | 
				
			||||||
 | 
					#!/usr/bin/python
 | 
				
			||||||
 | 
					import regress
 | 
				
			||||||
 | 
					import unicorn as U
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class WrongEFLAGS2(regress.RegressTest):
 | 
				
			||||||
 | 
					    def test_eflags(self):
 | 
				
			||||||
 | 
					        # imul eax, ebx
 | 
				
			||||||
 | 
					        CODE = '\x0f\xaf\xc3'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        uc = U.Uc(U.UC_ARCH_X86, U.UC_MODE_32)
 | 
				
			||||||
 | 
					        uc.reg_write(U.x86_const.UC_X86_REG_EAX, 16)
 | 
				
			||||||
 | 
					        uc.reg_write(U.x86_const.UC_X86_REG_EBX, 1)
 | 
				
			||||||
 | 
					        uc.reg_write(U.x86_const.UC_X86_REG_EFLAGS, 0x292)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        uc.mem_map(0x600000, 0x1000)
 | 
				
			||||||
 | 
					        uc.mem_write(0x6000b0, CODE)
 | 
				
			||||||
 | 
					        uc.emu_start(0x6000b0, 0, count=1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Here's the original execution trace for this on actual hardware.
 | 
				
			||||||
 | 
					        #
 | 
				
			||||||
 | 
					        # (gdb) x/i $eip
 | 
				
			||||||
 | 
					        # => 0x804aae5:   imul   eax,DWORD PTR [ebp-0x8]
 | 
				
			||||||
 | 
					        # (gdb) p/x $eax
 | 
				
			||||||
 | 
					        # $2 = 0x10
 | 
				
			||||||
 | 
					        # (gdb) x/wx $ebp-8
 | 
				
			||||||
 | 
					        # 0xbaaaad4c:     0x00000001
 | 
				
			||||||
 | 
					        # (gdb) p/x $eflags
 | 
				
			||||||
 | 
					        # $3 = 0x292
 | 
				
			||||||
 | 
					        # (gdb) si
 | 
				
			||||||
 | 
					        # 0x0804aae9 in ?? ()
 | 
				
			||||||
 | 
					        # (gdb) p/x $eflags
 | 
				
			||||||
 | 
					        # $4 = 0x202
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.assertEqual(0x202, uc.reg_read(U.x86_const.UC_X86_REG_EFLAGS))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    regress.main()
 | 
				
			||||||
		Loading…
	
		Reference in a new issue