[LLVMdev] Android, llvm-ar and setLastModificationAndAccessTime
James Lyon
jameslyon0 at gmail.com
Mon Nov 25 15:57:19 PST 2013
Hmmm.... following up on your point I've noticed something strange.
futimens is missing from the NDK (r9b; it's not in any headers and the
libc.so files are the same all the way back to android-9), which is why
I thought it's missing from Android generally. The NDK is by far the
easiest way to cross-compile since it provides a standalone
cross-compilation toolchain. It is however present in
https://android.googlesource.com/platform/prebuilts/ndk/+/master/9/platforms/android-19/arch-arm/usr/include/sys/stat.h
which seems odd to me. Steve, perhaps you know whether this is
intentional? My googling isn't getting me anywhere on why the file I've
linked is different to
platforms/android-19/arch-arm/usr/include/sys/stat.h in the NDK.
James
On 25/11/13 22:12, Stephen Hines wrote:
> On Mon, Nov 25, 2013 at 12:36 PM, Alp Toker <alp at nuanti.com
> <mailto:alp at nuanti.com>> wrote:
>
>
> On 25/11/2013 18:27, Stephen Hines wrote:
>
> futimens() is available in Android KitKat. We work extensively
> with LLVM and this allowed us to remove our ugly workaround
> for not having this functionality.
>
>
> Hi Steve,
>
> Is your work on a branch somewhere?
>
>
> It is all available as part of the Android Open Source Project (AOSP).
> I should mention that we do not use the JIT path, but LLVM does
> require futimens() to build properly for Android (hence us fixing this
> missing part of bionic). If you want to look at local patches that we
> have for LLVM/Clang, those are available in "external/llvm" and
> "external/clang". We have very few differences from upstream LLVM.
>
>
> James is putting a lot of time into this, and the LLVM community
> has been making best efforts to help review his patches which can
> be difficult for those who don't normally work with the Android
> platform.
>
> So if the work is already out there, that'd be useful to know in
> order to avoid duplication of effort. There are lots of other
> useful things we could be doing if support for that platform is
> already complete somewhere on Github :-)
>
>
> http://source.android.com <http://source.android.com/> has
> instructions for how to pull down AOSP. We don't use github.
>
> Steve
>
>
> Cheers,
> Alp.
>
>
>
> Steve
>
>
>
> On Mon, Nov 25, 2013 at 8:30 AM, James Lyon
> <jameslyon0 at gmail.com <mailto:jameslyon0 at gmail.com>
> <mailto:jameslyon0 at gmail.com <mailto:jameslyon0 at gmail.com>>>
> wrote:
>
> Hi,
>
> I've been trying to get LLVM working as a JIT compiler on
> Android
> for a while. It works now, except that the
> setLastModificationAndAccessTime function won't build
> because the
> Bionic C library lacks both futimes and futimens. There
> doesn't
> appear to be any "nice" workaround for this problem: the
> only ways
> I can think of to make setLastModificationAndAccessTime
> work are
> either to go by /proc/self/fd or invoke the system call
> directly
> (the second option isn't helped by the fact that the Android
> headers don't define the relevant system call number and
> it varies
> between platforms).
>
> Right now the only part of LLVM that uses this function is
> llvm-ar, so it's not as if lack of support for this
> function is a
> serious shortcoming. I don't really know the history of
> PathV1/PathV2 but I think the simplest solutions are:
>
> 1. Have setLastModificationAndAccessTime fail on platforms
>
> without futimes/futimens (by ENOSYS). This is pretty ugly
> because having a function which can never succeed
> seems likely
> to confuse users.
> 2. Only declare setLastModificationAndAccessTime if it is
>
> actually available (add something to llvm-config.h to
> indicate
> this). The downside here is that (in theory at least)
> users
> need to know that setLastModificationAndAccessTime
> might be
> missing, although in practise they can probably ignore
> the issue.
>
> (1) is trivial to implement and is what I'm doing now; I
> can also
> create a patch to do (2), I just thought I'd ask for
> opinions first.
>
> Regards,
>
> James
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>
> <mailto:LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>>
>
> http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>
> http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
> --
> http://www.nuanti.com
> the browser experts
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131125/61d3e9d0/attachment.html>
More information about the llvm-dev
mailing list