Forwarded to mailing list:<div><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">Hey Amil,</span><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
<br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">Sorry we kept you out of the loop, we've been struggling on some issues in the later projects; as for liburcu, we've come across the same problems you cited, except the last one:</div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)"><div>    - syscall.h / lpthread / gettid : your solutions, or a #ifdef __ANDROID__ barrier, seems to work as a temp fix.</div>
<div>    - rand_r : after substituting for the regular (not-thread-safe) rand, we decide to go with our own implementation, but the one you found might actually be better</div><div>    - rpl_malloc : same fix here, but we also found that ac_cv_func_realloc_0_nonnull *might* also help in some cases (along with ac_cv_func_malloc_0_nonnull)</div>
<div><br></div></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">As for the __sync_synchronize error, we haven't encountered those and we managed to successfully build the library.</div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
Possible differences:</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">We opted for AOSP's own pre-built & packaged NDK toolchain, (which can be found here: <a href="http://developer.android.com/tools/sdk/ndk/index.html" target="_blank" style="color:rgb(17,85,204)">http://developer.android.com/tools/sdk/ndk/index.html</a>) and pointed the sysroot variable to its platforms/android-14/arch-arm/ directory (latest). By default, it doesn't include some module/kernel headers, but it should be enough for liburcu. We are currently considering adding the liburcu project itself (along with the others) directly in the android external modules, so that it may be compiled with exactly the SAME settings as the rest of the libraries/binaries/modules, using the same NDK (but for that, we'll need to drop the autoconf/automake stuff, and that's another story).</div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
The rest should be identical, we might have used some extra parameters here and there that might be based on our environment in the build process, but here they are anyway:</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
    in ./configure, add : --target=arm-linux-androideabi --prefix=$SYSROOT/usr</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">    make sure you provide $SYSROOT/usr/lib instead of $SYSROOT/lib as the default library path</div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">    </div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13.333333969116211px;background-color:rgb(255,255,255)">
Keep us informed if the problem still happens, we'll try to debug your issue further.</div><br><div class="gmail_quote">On Thu, Feb 21, 2013 at 5:13 AM, Amit Balboul <span dir="ltr"><<a href="mailto:amit.balboul@shinesec.com" target="_blank">amit.balboul@shinesec.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi all,<div><br></div><div>In continue to posts from <a href="http://www.mail-archive.com/lttng-dev@lists.lttng.org/msg02542.html" target="_blank">http://www.mail-archive.com/lttng-dev@lists.lttng.org/msg02542.html</a>,<br>

<div><br></div><div>I'm trying to build the LTTng kernel-tracer for Android on ARM:</div><div>(JB4.2.1 - kernel 3.0.31 - on Galaxy Nexus).<br></div><div>I'm having some trouble completing the process, didn't find any usable information so far, maybe u can help.<br>


</div><div><br></div><div>I want to build the: (I've managed in the past to build the modules for goldfish's 2.6.29 but this required patching the kernel).</div><div>(1) userspace-rcu</div><div>(2) modules</div><div>

(3) tools</div><div>I'm currently stuck in the first phase (building userspace-rcu).</div>
<div><br></div><div>My steps and the issues I've encountered are:</div><div>1. Clone the userspace-rcu git repository</div><div>2. Generate a sysroot for arm-linux-androideabi from google's NDK (using its "make-standalone-toolchain.sh" script with arm-linux-androideabi-4.4.3 toolchain).</div>


<div>3. Run ./bootstrap - creating <a href="http://config.h.in" target="_blank">config.h.in</a>, Makefile.in, configure, ...<br></div><div>4. Run ./configure with --host=arm-linux-androideabi and the relevant environment variables (CC, LD, CPPFLAGS, CFLAGS, LDFLAGS, LIB), pointing to the NDK ARM SYSROOT.</div>

<div>5. Run make</div><div><br></div><div>Some errors I encoutered and their fixes (workarounds), while trying as much as I can leave the sources untouched:</div><div>1. syscall.h not found. In some files, the <syscall.h> is included. In NDK SYSROOT the syscall.h lays in sys/</div>

<div>FIX: created a link: SYSROOT/include/syscall.h -> SYSROOT/include/sys/syscall.h</div><div>2. Android's libraries includes the pthread lib automatically, thus not having a stand-alone pthread library.</div>
<div>FIX: removed "-lpthread" from Makefile.am, tests/Makefile.am</div><div>3. static declaration of "gettid" follows non-static declaration (in SYSROOT/include/unistd.h, "gettid" is declared as "external")<br>

</div><div>For the mean time I commented this declaration... Maybe adding "#ifndef gettid" before the declaration of  "static gettid" in the sources will fix it ?</div><div>4. rand_r not declared - added a module that implements rand_r (as seen in <a href="https://github.com/xbmc/xbmc/tree/master/xbmc/android/bionic_supplement" target="_blank">https://github.com/xbmc/xbmc/tree/master/xbmc/android/bionic_supplement</a>)</div>

<div>5. undefined reference to rpl_malloc<br></div><div>FIX: setting ac_cv_func_malloc_0_nonnull=yes before launching ./configure.</div><div><br></div><div>now, after running ./configure and make, still not completed. I get many "undefined reference to __sync_syncronize" messages. the urcu/arch/generic.h defines the memory barriers functions as cmm_* but their implementation is not taken from urcu/arch/arm.h but from Line 46 in the same file (generic.h).</div>

<div>Can u help with this?</div><div>Am I missing something here ?</div><div><br></div><div>Also, how does the build system use the kernel 3.0.31 (or any other) sysroot ?<br></div><div><br></div><div>
Thank you</div></div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Amit.</div></font></span></div>
<br>_______________________________________________<br>
lttng-dev mailing list<br>
<a href="mailto:lttng-dev@lists.lttng.org">lttng-dev@lists.lttng.org</a><br>
<a href="http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev" target="_blank">http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev</a><br>
<br></blockquote></div><br></div>