<div dir="ltr">I was said that `stat` is not supported on iOS:<div><a href="https://devforums.apple.com/message/1000186#1000186">https://devforums.apple.com/message/1000186#1000186</a><br></div><div><br></div><div>Any suggestion for replacement/walk-around?</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-07-07 15:28 GMT+06:00 Anton Smirnov <span dir="ltr"><<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hey.<div class="gmail_extra"><br><div class="gmail_quote">2014-07-07 14:39 GMT+06:00 Alp Toker <span dir="ltr"><<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a>></span>:<div>
<div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><br>
On 07/07/2014 11:14, Anton Smirnov wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi, Alp.<br>
<br>
2014-07-07 12:52 GMT+06:00 Alp Toker <<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a> <mailto:<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a>>>:<div><div><br>
<br>
<br>
On 07/07/2014 09:24, Anton Smirnov wrote:<br>
<br>
I've started to edit Mutex.cpp and RWMutex.cpp and found it's<br>
not used at all if "LLVM_ENABLE_THREADS" was off during config.<br>
So it seems that my issues was solved with it.<br>
<br>
<br>
Great<br>
<br>
<br>
Thanks for pointing me right direction ;)<br>
<br>
<br>
Anyway i'm having another issue:<br>
<br>
*2014-07-07 12:19:54.090 LibClangUsage7Demo[64275:60b] started*<br>
<br>
<br>
*Detected an attempt to call a symbol in system libraries that<br>
is not present on the iPhone:*<br>
<br>
*stat$INODE64 called from function<br>
_ZN4llvm3sys2fs6statusERKNS_<u></u>5TwineERNS1_11file_statusE in<br>
image LibClangUsage7Demo.*<br>
<br>
<br>
Is stat missing in ios simulator? It seems that i will have to<br>
fix such issues one-by-one..<br>
<br>
Is there any ios-friendly version of llvm/clang? Is it ios<br>
simulator limitations (systems calls to absent systems methods)?<br>
<br>
<br>
The LLVM/clang codebase is meant to be portable..<br>
<br>
So, the OS filesystem symbols are available but not implemented on<br>
your platform:<br>
<br>
<br>
What does it mean "available but not implemented"? I'm not sure i understand it as i have no compile/link errors, runtime errors only.<br>
Does it mean it has required functions declarations in headers while compiling, symbols while linking but absent for some reason in runtime?<br>
How can that be? i expect to have linker errors if required system calls are absent.<br>
<br>
I'm using xcode toolchain and sysroot to cross-compile for ios so i expect it to have valid and actual headers and compiled systems libs.<br>
<br>
What can i do to fix stat missing in llvm::sys::status(..) ? Any flags or change invocation to any existing system method?<br>
<br>
<br>
That's good news because it means there's a good chance you can<br>
get your application working without porting LLVM's System module.<br>
<br>
<br>
I'm afraid i will discover a lot of places with runtime errors (due to missing system libs) ;(<br>
Does anybody know any other expected missing/not implemented calls for ios?<br>
</div></div></blockquote>
<br>
This is a standard iOS platform? Try configuring with -mios-simulator-version-min=7.<u></u>1</blockquote><div><br></div></div></div><div>Yes, it's standard iOS Platform (iOS Simulator). I've tried 7.0, does it make sense?</div>
<div>I've found few similar issue reports but they relate to 3/4 xcode vrsion and pretty ancient ios versions. </div><div class=""><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
As I recall, you wanted to perform an in-memory compilation and<br>
produce LLVM IR, and I suggested using the clang-interpreter demo<br>
as a starting point.<br>
<br>
<br>
At that point i'm just trying to have actual llvm/clang working via Clang-C API. This means i don't have to have any major modifications, just cross-compile with right configure params.<br>
<br>
Probably the next step will be look into Cling modifications for LLVM/Clang and making it working.<br>
</blockquote>
<br></div>
Curious, what do you need the modifications for?<br></blockquote><div><br></div></div><div>Cling requires modified LLVM/Clang and it has it's own LLVM/Clang repos.</div><div>I will start trying your clang-interpreter first which seems to do pretty the same.</div>
<div class="">
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
(Unless it's synced up to LLVM SVN very recently it'll be missing the fixes from this discussion.)<div><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Let's take that a little further..<br>
<br>
You'll need to modify the clang-interpreter sample so it loads C<br>
source code for the main file from memory instead of trying to<br>
read from the filesystem which apparently doesn't existing on your<br>
platform. The code you use shouldn't include any headers or<br>
that'll incur filesystem access.<br>
<br>
<br>
Actually i can access files in ios app sandbox so i expect LLVM/Clang working for files in it.<br>
</blockquote>
<br></div>
Okay, should work fine if you need file access. Try the configure switch I suggested.<div><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Meanwhile I've added non-JIT interpreter support in clang r212083,<br>
and if that still doesn't work you can modify the sample to print<br>
IR to check if things work.<br>
<br>
<br>
Great! How i can i try it? Any example to interpret "hello-world"?<br>
</blockquote>
<br></div>
Sure, just run:<br>
<br>
./clang-interpreter hello.cpp<br>
<br>
It mostly accepts the same arguments as normal clang.<br></blockquote><div><br></div></div><div>Good, i will give it a try.</div><div><div class="h5"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Alp.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
<br>
With some luck it won't attempt to read from the filesystem at all<br>
after that, so won't hit the missing OS features.<br>
<br>
If there are more errors, we'll need to refine the approach a<br>
little and eliminate other kinds of file accesses but that should<br>
be the general angle of attack.<br>
<br>
It sounds like a fun project, keep the list posted :-)<br>
<br>
<br>
Well, yes it is. I'm just making proof of concept. Any help is appreciated.<br>
<br>
<br>
Alp.<br>
<br>
<br>
<br>
Regards, Anton.<br>
<br>
<br>
<br>
<br>
Thanks,<br>
Anton.<br>
<br>
<br>
2014-07-06 17:16 GMT+06:00 Anton Smirnov<br>
<<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a> <mailto:<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a>><br></div>
<mailto:<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a> <mailto:<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a>><u></u>>>:<div>
<br>
<br>
<br>
I've just tried to rebuild libclang.a<br>
with -miphoneos-version-min=7.0 - no luck.<br>
Also i've removed --enable-optimized --disable-assertions<br>
configure flags and it confirmed error line (Mutex.cpp):<br>
<br>
// Destroy the attributes<br>
errorcode = pthread_mutexattr_destroy(&<u></u>attr);<br>
<br>
Should setting LLVM_ENABLE_THREADS to "off" help?<br>
<br>
<br>
<br>
<br>
2014-07-06 12:03 GMT+06:00 Alp Toker <<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a><br>
<mailto:<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a>><br></div>
<mailto:<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a> <mailto:<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a>>>>:<div><div><br>
<br>
<br>
Did you try building with LLVM_ENABLE_THREADS off?<br>
<br>
Also consider trying ToT to get the latest fixes.<br>
<br>
Alp.<br>
<br>
<br>
<br>
On 06/07/2014 08:23, Anton Smirnov wrote:<br>
<br>
I've found Mutex.cpp file in llvm sources and it seems<br>
it's not the first mutex-related call in constructor.<br>
This makes me think it's really absent method in<br>
system libs:<br>
<br>
// Construct a Mutex using pthread calls<br>
<br>
MutexImpl::MutexImpl( bool recursive)<br>
<br>
: data_(0)<br>
<br>
{<br>
<br>
// Declare the pthread_mutex data structures<br>
<br>
pthread_mutex_t* mutex =<br>
<br>
static_cast<pthread_mutex_t*>(<u></u>malloc(sizeof(pthread_mutex_t)<u></u>));<br>
<br>
pthread_mutexattr_t attr;<br>
<br>
<br>
// Initialize the mutex attributes<br>
<br>
int errorcode = pthread_mutexattr_init(&attr);<br>
<br>
assert(errorcode == 0); (void)errorcode;<br>
<br>
<br>
// Initialize the mutex as a recursive mutex, if<br>
requested, or normal<br>
<br>
// otherwise.<br>
<br>
int kind = ( recursive ? PTHREAD_MUTEX_RECURSIVE :<br>
PTHREAD_MUTEX_NORMAL );<br>
<br>
errorcode = pthread_mutexattr_settype(&<u></u>attr, kind);<br>
<br>
assert(errorcode == 0);<br>
<br>
<br>
#if !defined(__FreeBSD__) && !defined(__OpenBSD__) &&<br>
!defined(__NetBSD__) && \<br>
<br>
!defined(__DragonFly__) && !defined(__Bitrig__)<br>
<br>
// Make it a process local mutex<br>
<br>
errorcode = pthread_mutexattr_setpshared(&<u></u>attr,<br>
PTHREAD_PROCESS_PRIVATE);<br>
<br>
assert(errorcode == 0);<br>
<br>
#endif<br>
<br>
<br>
// Initialize the mutex<br>
<br>
errorcode = pthread_mutex_init(mutex, &attr);<br>
<br>
assert(errorcode == 0);<br>
<br>
<br>
// Destroy the attributes<br>
<br>
errorcode = pthread_mutexattr_destroy(&<u></u>attr); //<br>
fails here<br>
<br>
assert(errorcode == 0);<br>
<br>
// Assign the data member<br>
data_ = mutex;<br>
<br>
}<br>
<br>
I've marked where it fails.<br>
How can that be that previous mutex-related methods<br>
success and this one fails?<br>
What can i do to fix it?<br>
<br>
Regards, Anton.<br>
<br>
<br>
2014-07-05 19:31 GMT+06:00 Anton Smirnov<br>
<<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a><br>
<mailto:<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a>> <mailto:<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a><br>
<mailto:<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a>><u></u>><br>
<mailto:<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a><br>
<mailto:<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a>><br>
<br>
<mailto:<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a><br>
<mailto:<a href="mailto:dev@antonsmirnov.name" target="_blank">dev@antonsmirnov.name</a>><u></u>>>>:<br>
<br>
<br>
Hi.<br>
<br>
I was able to cross-compile llvm/clang for<br>
i386 and<br>
i'm trying to<br>
use it in my ios app.<br>
Also i was able to add headers and static libs<br>
(both<br>
libLLVM*.a<br>
and libclang*.a) and compile/link the project<br>
with no<br>
errors.<br>
<br>
But when trying to run simple app i'm getting<br>
error:<br>
<br>
*Detected an attempt to call a symbol in system<br>
libraries that is<br>
not present on the iPhone:*<br>
<br>
*pthread_mutexattr_destroy$<u></u>UNIX2003 called<br>
from function<br>
_ZN4llvm3sys9MutexImplC2Eb in image<br>
LibClangUsageDemo3.*<br>
<br>
<br>
<br>
What can i do in order to fix it?<br>
<br>
Is it llvm/clang issue or i'm doing smth wrong?<br>
<br>
Regards, Anton.<br>
<br>
<br>
<br>
<br>
______________________________<u></u>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a> <mailto:<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a>><br></div></div>
<mailto:<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a> <mailto:<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a>>><div><br>
<br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/cfe-dev</a><br>
<br>
<br>
-- <a href="http://www.nuanti.com" target="_blank">http://www.nuanti.com</a><br>
the browser experts<br>
<br>
<br>
<br>
<br>
-- <a href="http://www.nuanti.com" target="_blank">http://www.nuanti.com</a><br>
the browser experts<br>
<br>
<br>
</div></blockquote><div><div>
<br>
-- <br>
<a href="http://www.nuanti.com" target="_blank">http://www.nuanti.com</a><br>
the browser experts<br>
<br>
</div></div></blockquote></div></div></div><br></div></div>
</blockquote></div><br></div>