One of my little projects was to get DTrace ported to ARM. People
using Android, RaspberryPi or other ARM related tools could get
the benefit of DTrace.
Now this is not a simple project - but I have started some of the
work to prove this.
I had originally intended to use the RaspberryPi to do a lot of the
heavy lifting, but was not happy with the RPI as a reliable
hardware device and have issues with some of the kernels.
Last week, I took a look at qemu/arm - and can actually run an
ARM based virtual machine on my x86 Linux machine. Performance isnt
brilliant, but its palatable.
After spending ages getting the network to work - so I could get
the requisite packages, I have been updating the scripts and
headers/source code to fill in the gaps for ARM. At this point, we
are about half way through the user land compilation. Some of the
things are annoyances due to the Linux distro (debian 2.6.32 kernel).
E.g. the handling of ucontext.h seems to be different.
Once I have user land compiling, I can move onto the kernel - obviously
there is a fair amount of 386/x64 code to write for ARM, but am hoping
that its viable - especially given that the i386/x64 code is on top
of the original SPARC architecture - i.e. we know roughly the bits
If I am lucky, at the end of this exercise, it will work on my
ARM based VM; it almost certainly wont work on other ARM CPUs or
other kernels (ie Android), but at least the heavy lifting will have been
done, and it makes it more palatable to target the other platforms
(or people may do this for themselves).
I'll put out a new release, which includes some Linux 3.7/3.8 fixes
(thanks to those that contributed the fixes or highlighted some of the
broken build things in my code).