<div dir="ltr">The change is done during relaxation. I think you can search for fixupNeedsRelaxation if I remember right. I don't have the source code available on this computer.</div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Feb 27, 2016 at 10:17 AM, Jun Koi via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><p dir="ltr"><br>
On Feb 28, 2016 12:08 AM, "Stephen Checkoway" <<a href="mailto:s@pahtak.org" target="_blank">s@pahtak.org</a>> wrote:<br>
><br>
><br>
><br>
> > On Feb 27, 2016, at 4:36 AM, Jun Koi via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
> > The problem is that llvm-mc always compiles "jmp" this as short jump, no matter where the target is. Hence my question. I dont know if there is any way to change this behavior. Looks like a bug to me so far.<br>
><br>
> It isn't. It's just created some assembly which, when assembled, may end up as a near jump or a short jump.<br>
><br>
> > Craig said there is a trick with object file, but I dont know how to do that. Also, why compiling to object file changes the result?<br>
><br>
> Here's an object file (although I don't know why it's producing ELF rather than Mach-o):<br></p>
</span><p dir="ltr">Oh this is cool! Which code in MC is responsible for replacing EB with E9 when dumping to object file like this???<br><br></p>
<p dir="ltr">Thanks.<br></p><div class="HOEnZb"><div class="h5">
<p dir="ltr">><br>
> $ echo "jmp _label"|llvm-mc-mp-3.7 -assemble -triple=i386  -filetype=obj > a.o<br>
> $ x86_64-pc-elf-objdump -d a.o<br>
><br>
> a.o:     file format elf32-i386<br>
><br>
><br>
> Disassembly of section .text:<br>
><br>
> 00000000 <.text>:<br>
>   0:    e9 fc ff ff ff          jmp    0x1<br>
><br>
> And here's assembly which is then run through the compiler.<br>
><br>
> $ echo "jmp _label"|llvm-mc-mp-3.7 -assemble -triple=i386  -show-encoding |tee b.s<br>
>         .text<br>
>         jmp     _label                  # encoding: [0xeb,A]<br>
>                                        #   fixup A - offset: 1, value: _label-1, kind: FK_PCRel_1<br>
> $ clang -c b.s<br>
> $ otool -tvj b.o<br>
> b.o:<br>
> (__TEXT,__text) section<br>
> 0000000000000000        e900000000              jmp     0x5<br>
><br>
> As you can see, both produced near jumps. (I assume the difference between the offsets has to do with a difference in relocations between ELF and Mach-o.)<br>
><br>
> --<br>
> Stephen Checkoway<br>
><br>
><br>
><br>
</p>
</div></div><br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">~Craig</div>
</div>