<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">I think this is an NDK bug then. I just
re-downloaded it to check, and indeed in the NDK from <a
href="http://developer.android.com/tools/sdk/ndk/index.html">http://developer.android.com/tools/sdk/ndk/index.html</a>
that's not true, platforms/android-19/arch-arm/usr/lib/libc.so and
platforms/android-9/arch-arm/usr/lib/libc.so are identical.<br>
<br>
James<br>
<br>
On 26/11/13 00:06, Stephen Hines wrote:<br>
</div>
<blockquote
cite="mid:CAAzmS687E0+NcOEuA+Rv9=hrRz_d2Ga2uZAMo9-Y=ZpnWWjobA@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>This is only available for apps that target API level 19
and up. On 18 and lower, the futimens() function won't be
available via libc.so. You will need to target API 19 (KitKat)
in order to actually use it. If I do an "nm -D
prebuilts/ndk/9/platforms/android-19/arch-arm/usr/lib/libc.so",
I can see futimens() is present. On the others, it is
definitely missing.</div>
<div><br>
</div>
<div>Steve</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Mon, Nov 25, 2013 at 3:57 PM, James
Lyon <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:jameslyon0@gmail.com" target="_blank">jameslyon0@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>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<br>
<br>
<a moz-do-not-send="true"
href="https://android.googlesource.com/platform/prebuilts/ndk/+/master/9/platforms/android-19/arch-arm/usr/include/sys/stat.h"
target="_blank">https://android.googlesource.com/platform/prebuilts/ndk/+/master/9/platforms/android-19/arch-arm/usr/include/sys/stat.h</a><br>
<br>
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.<span class="HOEnZb"><font color="#888888"><br>
<br>
James</font></span>
<div>
<div class="h5"><br>
<br>
On 25/11/13 22:12, Stephen Hines wrote:<br>
</div>
</div>
</div>
<div>
<div class="h5">
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Mon, Nov 25, 2013 at
12:36 PM, Alp Toker <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:alp@nuanti.com"
target="_blank">alp@nuanti.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><br>
On 25/11/2013 18:27, Stephen Hines wrote:<br>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">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.<br>
</blockquote>
<br>
</div>
Hi Steve,<br>
<br>
Is your work on a branch somewhere?<br>
</blockquote>
<div><br>
</div>
<div>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.</div>
<div><br>
</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
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.<br>
<br>
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 :-)<br>
</blockquote>
<div><br>
</div>
<div><a moz-do-not-send="true"
href="http://source.android.com/"
target="_blank">http://source.android.com</a> has
instructions for how to pull down AOSP. We
don't use github.</div>
<div><br>
</div>
<div>Steve</div>
<div> </div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
Cheers,<br>
Alp.<br>
<br>
<br>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
Steve
<div><br>
<br>
<br>
On Mon, Nov 25, 2013 at 8:30 AM, James
Lyon <<a moz-do-not-send="true"
href="mailto:jameslyon0@gmail.com"
target="_blank">jameslyon0@gmail.com</a>
<mailto:<a moz-do-not-send="true"
href="mailto:jameslyon0@gmail.com"
target="_blank">jameslyon0@gmail.com</a>>>
wrote:<br>
<br>
Hi,<br>
<br>
I've been trying to get LLVM working
as a JIT compiler on Android<br>
for a while. It works now, except
that the<br>
setLastModificationAndAccessTime
function won't build because the<br>
Bionic C library lacks both futimes
and futimens. There doesn't<br>
appear to be any "nice" workaround
for this problem: the only ways<br>
I can think of to make
setLastModificationAndAccessTime work
are<br>
either to go by /proc/self/fd or
invoke the system call directly<br>
(the second option isn't helped by
the fact that the Android<br>
headers don't define the relevant
system call number and it varies<br>
between platforms).<br>
<br>
Right now the only part of LLVM that
uses this function is<br>
llvm-ar, so it's not as if lack of
support for this function is a<br>
serious shortcoming. I don't really
know the history of<br>
PathV1/PathV2 but I think the
simplest solutions are:<br>
<br>
</div>
1. Have
setLastModificationAndAccessTime fail on
platforms
<div><br>
without futimes/futimens (by
ENOSYS). This is pretty ugly<br>
because having a function which
can never succeed seems likely<br>
to confuse users.<br>
</div>
2. Only declare
setLastModificationAndAccessTime if it is
<div><br>
actually available (add
something to llvm-config.h to indicate<br>
this). The downside here is that
(in theory at least) users<br>
need to know that
setLastModificationAndAccessTime might
be<br>
missing, although in practise
they can probably ignore the issue.<br>
<br>
(1) is trivial to implement and is
what I'm doing now; I can also<br>
create a patch to do (2), I just
thought I'd ask for opinions first.<br>
<br>
Regards,<br>
<br>
James<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
</div>
<a moz-do-not-send="true"
href="mailto:LLVMdev@cs.uiuc.edu"
target="_blank">LLVMdev@cs.uiuc.edu</a>
<mailto:<a moz-do-not-send="true"
href="mailto:LLVMdev@cs.uiuc.edu"
target="_blank">LLVMdev@cs.uiuc.edu</a>>
<div><br>
<a moz-do-not-send="true"
href="http://llvm.cs.uiuc.edu"
target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a moz-do-not-send="true"
href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev"
target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a moz-do-not-send="true"
href="mailto:LLVMdev@cs.uiuc.edu"
target="_blank">LLVMdev@cs.uiuc.edu</a>
<a moz-do-not-send="true"
href="http://llvm.cs.uiuc.edu"
target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a moz-do-not-send="true"
href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev"
target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</div>
</blockquote>
<span><font color="#888888"> <br>
-- <br>
<a moz-do-not-send="true"
href="http://www.nuanti.com"
target="_blank">http://www.nuanti.com</a><br>
the browser experts<br>
<br>
</font></span></blockquote>
</div>
<br>
</div>
</div>
</blockquote>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</body>
</html>