[LLVMdev] incorrect x86 instruction size calculation
Butterworth, John W.
jbutterworth at mitre.org
Wed Dec 16 11:21:33 PST 2009
Hello,
I'm trying to write some backends for LLVM that generate code that complies
with SFI validation rules by re-implementing SFI for the LLVM x86 backend
based on the Google NaCl project.
However, in trying to implement 32-byte code alignment,
X86InstrInfo::GetInstSizeInBytes() is returning incorrect instruction sizes
for certain instructions (that I have seen so far): MOV32mi, LEA32r,
MOV32mr, and MOV32rm.
MOV32mi is always calculated incorrectly while the remaining 3 are sometimes
calculated incorrectly. Just to illustrate:
8d 9c 24 30 0a 00 00 LEA32r
calculated length: 7 ok
8d 6c 24 28 LEA32r
calculated length: 7 incorrect
8b 86 24 0a 39 00 MOV32rm calculated
length: 6 ok
8b 44 24 10 MOV32rm
calculated length: 7 incorrect
89 84 24 34 14 00 00 MOV32mr calculated
length: 7 ok
89 2c 24 MOV32mr
calculated length: 7 incorrect
c7 44 24 08 08 0a 00 00 MOV32mi calculated
length: 11 incorrect
c7 04 24 20 00 38 00 MOV32mi calculated
length: 11 incorrect
Has anyone else encountered this? If this turns out to be a bug, rather
than some misuse/misinterpretation of the function on my part then I can
resubmit it via that channel. Also if I need to submit more information let
me know and I will do so.
Regards,
--John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20091216/ce54273e/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3522 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20091216/ce54273e/attachment.bin>
More information about the llvm-dev
mailing list