[lttng-dev] LTTNG on Android ICS

Pierre-Luc St-Charles pierre-luc.st-charles at polymtl.ca
Tue May 21 10:15:59 EDT 2013


The first error refers to __NR_splice, which should be declared once
asm/unistd.h is included; in this case, it is included right above the
problematic line (src/common/compat/fcntl.h @ L35). Could you verify that
__NR_splice is defined somewhere in that file? If not, it might be a little
more problematic.

As for the second error, I believe it is also caused by a missing symbol
that should be included in asm/signal.h, which is in turn usually included
via signal.h itself.

Compiling with the NDK (v8, platform 14) is successful here, and I can find
all these missing symbols in the default system includes there. Are you
sure you specified the target sysroot when compiling?

-PL


On Tue, May 21, 2013 at 6:26 AM, Ionut D. <ionut5001 at gmail.com> wrote:

> I tried to compile lttng-tools and at compile time exits with the bellow
> error. I looked in the sources and it looks like for arm this is not
> implemented. Do you have any idea about how could this be fixed?
>
>
> In file included from
> external/lttng-tools/src/common/compat/compat-fcntl.c:19:
> external/lttng-tools/src/common/compat/../../../src/common/compat/fcntl.h:
> In function 'splice':
> external/lttng-tools/src/common/compat/../../../src/common/compat/fcntl.h:44:
> error: '__NR_splice' undeclared (first use in this function)
> external/lttng-tools/src/common/compat/../../../src/common/compat/fcntl.h:44:
> error: (Each undeclared identifier is reported only once
> external/lttng-tools/src/common/compat/../../../src/common/compat/fcntl.h:44:
> error: for each function it appears in.)
> In file included from
> external/lttng-tools/src/common/compat/compat-fcntl.c:19:
> external/lttng-tools/src/common/compat/../../../src/common/compat/fcntl.h:48:1:
> warning: "POSIX_FADV_DONTNEED" redefined
> In file included from
> external/lttng-tools/src/common/compat/../../../src/common/compat/fcntl.h:47,
>                  from
> external/lttng-tools/src/common/compat/compat-fcntl.c:19:
> bionic/libc/kernel/common/linux/fadvise.h:24:1: warning: this is the
> location of the previous definition
> In file included from bionic/libc/include/sys/select.h:34,
>                  from bionic/libc/include/unistd.h:34,
>                  from
> external/lttng-tools/src/common/compat/compat-fcntl.c:20:
> external/lttng-tools/src/common/compat/signal.h: At top level:
> external/lttng-tools/src/common/compat/signal.h:27: error: expected ';',
> ',' or ')' before '*' token
> external/lttng-tools/src/common/compat/signal.h:28: error: expected ';',
> ',' or ')' before '*' token
> external/lttng-tools/src/common/compat/signal.h:29: error: expected ';',
> ',' or ')' before '*' token
> In file included from bionic/libc/include/unistd.h:34,
>                  from
> external/lttng-tools/src/common/compat/compat-fcntl.c:20:
> bionic/libc/include/sys/select.h:42: error: expected ';', ',' or ')'
> before '*' token
>
>
>
> On Sat, May 18, 2013 at 10:21 AM, Ionut D. <ionut5001 at gmail.com> wrote:
>
>> Great informations! I will post back the results.
>>
>>
>> On Fri, May 17, 2013 at 4:47 PM, Pierre-Luc St-Charles <
>> pierre-luc.st-charles at polymtl.ca> wrote:
>>
>>> Alright, small update for all following a quick (non-mailing-list)
>>> exchange:
>>>
>>> We did successfully complete a kernel-tracing port of LTTng for Android
>>> (somewhat old news), but we are still working on bringing our patches back
>>> up to date with the current version of the different projects (soon-ish
>>> still applies here, we're talking days). So far, we dwelled a little bit in
>>> LTTng-UST, but haven't done much changes, so userspace tracing is still not
>>> functional. Device that ran kernel traces successfully so far were the
>>> Nexus S and the Nexus 7 (example Nexus S trace available here<https://drive.google.com/folderview?id=0B55Ba7lWTLh4U0hGeTQ4bmRYRjQ&usp=sharing>;
>>> still not perfect).
>>>
>>> Basically, we cross-compiled everything via the Android NDK (no Android
>>> makefiles involved here), and pushed all required bins to a device without
>>> having to flash it (unless the default kernel config didn't allow tracing
>>> -- then we'd have to flash). This approach is not compatible with the
>>> official Android build system (meaning we wouldn't be able to add it to
>>> Android like this), but we might eventually get working on the damned
>>> Android makefiles (they're extremely painful to write, especially since
>>> LTTng uses Autotools).
>>>
>>> The librairies required by LTTng that are not already included in a
>>> regular Android build (uuid/popt) can actually be found/compiled from the
>>> official repo, in its 'external' directory (see oprofile and e2fsprog --
>>> from memory). That might not be the easiest way to get them (full repo
>>> download is BIG), but compatibility is assured, and you can skip a full
>>> build by simply making those two individually for your device (if that's
>>> all you need).
>>>
>>> You'll also need your device to be rooted to use LTTng at all; then,
>>> most initializations are done via scripts (we'll also provide those with
>>> our patches). We still had some trouble automating everything via daemons,
>>> so we always ran the sessiond locally (with success).
>>>
>>> Major problems we encountered so far were missing posix functions, and
>>> sysv shared memory. Basically, Android relies on Bionic for its system
>>> calls and other low-level functions, and since Bionic is pretty
>>> 'lightweight', they trimmed most of the fat out for performance. We had to
>>> make some more-or-less sketchy replacements here and there, but everything
>>> seems to be working decently now.
>>>
>>> So, simple 'how do I put LTTng on Android' workflow would be this:
>>>
>>>   - Compile modules (using NDK) against device's kernel, making sure its
>>> config is appropriate, ship them over via ADB
>>>
>>>   - Compile required external libraries (using repo build system) for
>>> the device, ship them over via ADB
>>>
>>>   - Patch up LTTng-* (soon-ish! I could send you the outdated patches
>>> right now if you're interested though, they might be a month behind or so
>>> on the current trunks)
>>>
>>>   - Cross-compile LTTng-* for the device (using NDK), ship binaries over
>>> via ADB
>>>
>>> Then, on the device, start up the sessiond manually & start tracing.
>>>
>>>
>>> I think I went over everything, but if there's a part that's still
>>> cloudy, don't hesitate.
>>>
>>>
>>> -PL
>>>
>>>
>>> On May 17, 2013 1:32 AM, "Ionut D." <ionut5001 at gmail.com> wrote:
>>>
>>>> Hello all,
>>>>
>>>> Recently I started to integrate LTTNG in Android ICS by compiling each
>>>> package, each dependency, by using the Android build system. It is a lot of
>>>> work because I met different problems and to be sincere, I do not know if
>>>> at the end will work and I do not know how much I will need to modify the
>>>> sources in order to work.
>>>>
>>>> My questions are about this integration. I mention that I read a lot of
>>>> discussions about this on Internet, on this mailing list, but the things
>>>> are still not very clear for me.
>>>>
>>>> It is ok? what I am trying to do ? to integrate and build by using the
>>>> Android build system.
>>>> Could you give me some guidelines, indications about how I should
>>>> proceed, maybe a tutorial or maybe some android make files/patches that
>>>> would help me to see how the job must be done and if I am doing it right ?
>>>>
>>>> Until now I managed to build lttng-modules, liburcu, libuuid from
>>>> util-linux and configure lttng-ust by using the android toolchain for arm.
>>>> I got a lot of errors but until now I managed to configure/make these
>>>> packages.
>>>>
>>>> I mention that I am trying to build lttng 2.x on ICS 4.0.3.
>>>>
>>>> Would be great if you will give me a tutorial about how to do it.
>>>>
>>>> Ionut
>>>>
>>>> _______________________________________________
>>>> lttng-dev mailing list
>>>> lttng-dev at lists.lttng.org
>>>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>>>>
>>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lttng.org/pipermail/lttng-dev/attachments/20130521/5038284e/attachment-0001.html>


More information about the lttng-dev mailing list