Alp Toker
2013-Nov-25 20:36 UTC
[LLVMdev] Android, llvm-ar and setLastModificationAndAccessTime
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? 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 :-) Cheers, Alp.> > Steve > > > On Mon, Nov 25, 2013 at 8:30 AM, James Lyon <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> > http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > > > _______________________________________________ > LLVM Developers mailing list > 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
Stephen Hines
2013-Nov-25 22:12 UTC
[LLVMdev] Android, llvm-ar and setLastModificationAndAccessTime
On Mon, Nov 25, 2013 at 12:36 PM, Alp Toker <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 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>> 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> >> >> http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >> >> >> >> _______________________________________________ >> LLVM Developers mailing list >> 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/4c267b84/attachment.html>
James Lyon
2013-Nov-25 23:57 UTC
[LLVMdev] Android, llvm-ar and setLastModificationAndAccessTime
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>
Apparently Analagous Threads
- [LLVMdev] Android, llvm-ar and setLastModificationAndAccessTime
- [LLVMdev] Android, llvm-ar and setLastModificationAndAccessTime
- [LLVMdev] Android, llvm-ar and setLastModificationAndAccessTime
- [LLVMdev] Android, llvm-ar and setLastModificationAndAccessTime
- [LLVMdev] Android, llvm-ar and setLastModificationAndAccessTime