We were previously not decoding the x86 loop instructions (opcodes 0xe0 - 0xe2) as...
authorKevin Roundy <roundy@cumin.cs.wisc.edu>
Wed, 3 Feb 2010 00:10:59 +0000 (18:10 -0600)
committerKevin Roundy <roundy@follis.cs.wisc.edu>
Wed, 16 Jun 2010 16:38:10 +0000 (11:38 -0500)
commit9be57fac086bd52d321ec804080ef93a65a78248
tree47183e11bbeccb5cfc99fc808338831a7963aecf
parent3d89141ddb9d7e47524494826850638170191133
We were previously not decoding the x86 loop instructions (opcodes 0xe0 - 0xe2) as conditional jumps, and were not generating proper code for relocated loop instructions.  This fix causes us to decode these instructions as pc-relative jumps and generate appropriate code for them.  In the process of fixing this bug I fixed a bug in pcRelJcc::maxSize, which was estimating the maximum size of a relocated pc-relative conditional jump to be 6 bytes, but we sometimes replace these jumps with a 7-byte instruction sequence.
common/src/arch-x86.C
dyninstAPI/src/codegen-x86.C