[LLVMdev] Android, llvm-ar and setLastModificationAndAccessTime

James Lyon jameslyon0 at gmail.com
Mon Nov 25 08:30:40 PST 2013


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131125/fff5015e/attachment.html>


More information about the llvm-dev mailing list