<div class="gmail_quote"><div class="gmail_quote"><div class="im">On Sat, Apr 14, 2012 at 3:12 AM, Kostis Sagonas <span dir="ltr"><<a href="mailto:kostis@cs.ntua.gr" target="_blank">kostis@cs.ntua.gr</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



In the HiPE team we would very much like to support the ARM architecture<br>
but the problem these days - for quite some time actually - is that we do not have access to any machine with an ARM processor. It's very painful to be testing ARM using QEMU, esp. all sorts of different ARMs that exist these days. Hence, occasionally code tends to rot or, as in this case which involves a newer ARMv7, code has never been tested on newer architectures.<br>



<br>
(I do not know what sort of access to ARM machines the Erlang/OTP team at Ericsson has, but I suspect that they do not have access to all possible ARMs either.)<br>
<br>
In this particular case, I would recommend that you extend the following lines in erts/<a href="http://configure.in" target="_blank">configure.in</a><br>
<br>
    armv5b)     ARCH=arm;;<br>
    armv5teb)   ARCH=arm;;<br>
    armv5tel)   ARCH=arm;;<br>
<br>
with the line that corresponds to your newer armv7 and test to see what happens.  If all goes well, please submit a patch using git.<br></blockquote><div><br></div></div><div>I added:</div><div class="im"><div>     armv5b)    ARCH=arm;;</div>


<div>     armv5teb)  ARCH=arm;;</div><div>     armv5tel)  ARCH=arm;;</div></div><div>+    armv7l)     ARCH=arm;;</div><div><br></div><div>to <a href="http://configure.in" target="_blank">configure.in</a> and reran autotools.</div>

<div class="im"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
Also, since you are on an unexplored territory, I would recommend to build Erlang/OTP in two steps. First do:<br>
<br>
        ./configure --enable-hipe ...<br>
<br>
which will test if Erlang/OTP can be built with HiPE support, and only if that works do:<br>
<br>
        make clean  // or start from a fresh copy, for extra safety<br>
        ./configure --enable-hipe ... --enable-native-libs<br></blockquote><div><br></div></div><div>I kicked off the build before you replied, and a build with both --enable-hipe and --enable-native libs completed successfully. However, when I try to get Hipe to build native code afterwards:</div>


<div>[wiley@tseng erlang]$ erlc -W  +debug_info +native +inline main.erl</div><div><br></div><div>Crash dump was written to: erl_crash.dump</div><div>Invalid tag in make_hash2(0x735F7374)</div><div>Aborted</div><div>[wiley@tseng erlang]$ erlc -W +native +inline main.erl</div>


<div>Segmentation fault</div><div>[wiley@tseng erlang]$ erlc -W +native main.erl</div><div>Segmentation fault</div><div>[wiley@tseng erlang]$ gdb erlc</div><div>GNU gdb (GDB) 7.4</div><div>[...cut...]</div><div>Reading symbols from /usr/bin/erlc...(no debugging symbols found)...done.</div>


<div>(gdb) set args -W +native main.erl</div><div>(gdb) run</div><div>Starting program: /usr/bin/erlc -W +native main.erl</div><div>process 20137 is executing new program: /bin/bash</div><div>process 20137 is executing new program: /usr/lib/erlang/erts-5.9.1/bin/erlexec</div>


<div>process 20137 is executing new program: /usr/lib/erlang/erts-5.9.1/bin/beam.smp</div><div>[Thread debugging using libthread_db enabled]</div><div>Using host libthread_db library "/lib/libthread_db.so.1".</div>


<div>[New Thread 0x40da8470 (LWP 20143)]</div><div>[New Thread 0x415a8470 (LWP 20144)]</div><div>[New Thread 0x4002c470 (LWP 20145)]</div><div>[New Thread 0x41da8470 (LWP 20146)]</div><div>[New Thread 0x425a8470 (LWP 20147)]</div>


<div>[New Thread 0x42da8470 (LWP 20148)]</div><div><br></div><div>Program received signal SIGSEGV, Segmentation fault.</div><div>[Switching to Thread 0x41da8470 (LWP 20146)]</div><div>0x0007b9a4 in make_hash2 ()</div><div>


(gdb) bt</div><div>#0  0x0007b9a4 in make_hash2 ()</div><div>#1  0x000a9fbc in put_2 ()</div><div>#2  0x0014dca4 in nbif_put_2 ()</div><div>#3  0x0014dca4 in nbif_put_2 ()</div><div>Backtrace stopped: previous frame identical to this frame (corrupt stack?)</div>

<div class="im">
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
PS. We welcome support, for example, donations of ARM-based machines that we can be using to test the HiPE compiler or its newer LLVM-based back-end (see <a href="http://erllvm.softlab.ntua.gr/" target="_blank">http://erllvm.softlab.ntua.gr/</a><u></u>) more regularly. Similar with other exotic architectures that people these days care about. Minimally, if you want native code for some configuration other than x86 and x86_64-based machines, give us some form of remote access to it.<br>


</blockquote><div><br></div></div><div>I'm a college student who randomly felt like learning Erlang might be useful, I'm not really in a position to donate hardware, and I'm a bit leery about giving out shell accounts on what's essentially my router, but I'll see what I can do.</div>


</div>
</div><br>