After a quick glance at the generated description files looks like ARM has correct size information, but X86 always returns 0. ARM is easy because its fixed length.<br><br><div class="gmail_quote">On Tue, Oct 23, 2012 at 5:23 PM, John Criswell <span dir="ltr"><<a href="mailto:criswell@illinois.edu" target="_blank">criswell@illinois.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"><div class="im">
<div>On 10/23/12 7:19 PM, Craig Topper
wrote:<br>
</div>
<blockquote type="cite">
What function provides the encoding length? X86 in particular is
so difficult to encode that only the old style JIT and the MC Code
Emitter could possibly know how many bytes something takes.<br>
</blockquote>
<br></div>
The getSize() method of MCInstrDesc which can be fetched from a
MachineInstr using the getDesc() method:<br>
<br>
<a href="http://llvm.org/doxygen/classllvm_1_1MCInstrDesc.html#ae8a17b854d9787d11797d9334a22647d" target="_blank">http://llvm.org/doxygen/classllvm_1_1MCInstrDesc.html#ae8a17b854d9787d11797d9334a22647d</a><br>
<br>
Does this method not work as advertised in Doxygen?<br>
<br>
-- John T.<div class="im"><br>
<br>
<blockquote type="cite"><br>
<div class="gmail_quote">
On Tue, Oct 23, 2012 at 11:58 AM, John Criswell <span dir="ltr"><<a href="mailto:criswell@illinois.edu" target="_blank">criswell@illinois.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Dear All,<br>
<br>
I'm enhancing a MachineFunctionPass that enforces control-flow
integrity. One of the things I want to do is to set the
alignment of an instruction (by adding NOPs before it in the
MachineBasicBlock or by emitting an alignment directive to the
assembler) if it causes a specific sequence of bytes to be
generated at a specific alignment. The goal is to ensure that
sequences of bytes used to label valid targets of an indirect
branch (e.g., a return instruction) do not appear at a given
alignment anywhere in a program other than for where I
inserted them explicitly.<br>
<br>
It looks like MachineInstr has a method for finding the length
of the instruction's binary encoding, but I didn't see a
method for finding the exact bytes that would be emitted from
the MachineInstr. Is there a way to do this in the
MachineFunctionPass/MachineInstr infrastructure, or do I need
to use something like the MC classes?<br>
<br>
Thanks in advance for any help provided.<br>
<br>
-- John T.<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a> <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
~Craig<br>
</blockquote>
<br>
</div></div>
</blockquote></div><br><br clear="all"><br>-- <br>~Craig<br>