[cfe-dev] linking with libclang for ios

Anton Smirnov dev at antonsmirnov.name
Sun Jul 6 23:24:39 PDT 2014


I've started to edit Mutex.cpp and RWMutex.cpp and found it's not used at
all if "LLVM_ENABLE_THREADS" was off during config.
So it seems that my issues was solved with it. Anyway i'm having another
issue:

*2014-07-07 12:19:54.090 LibClangUsage7Demo[64275:60b] started*

*Detected an attempt to call a symbol in system libraries that is not
present on the iPhone:*

*stat$INODE64 called from function
_ZN4llvm3sys2fs6statusERKNS_5TwineERNS1_11file_statusE in image
LibClangUsage7Demo.*
Is stat missing in ios simulator? It seems that i will have to fix such
issues one-by-one..

Is there any ios-friendly version of llvm/clang? Is it ios simulator
limitations (systems calls to absent systems methods)?

Thanks,
Anton.


2014-07-06 17:16 GMT+06:00 Anton Smirnov <dev at antonsmirnov.name>:

> I've just tried to rebuild libclang.a with -miphoneos-version-min=7.0 - no
> luck.
> Also i've removed --enable-optimized --disable-assertions configure flags
> and it confirmed error line (Mutex.cpp):
>
> // Destroy the attributes
> errorcode = pthread_mutexattr_destroy(&attr);
>
> Should setting LLVM_ENABLE_THREADS to "off" help?
>
>
>
>
> 2014-07-06 12:03 GMT+06:00 Alp Toker <alp at nuanti.com>:
>
> Did you try building with LLVM_ENABLE_THREADS off?
>>
>> Also consider trying ToT to get the latest fixes.
>>
>> Alp.
>>
>>
>>
>> On 06/07/2014 08:23, Anton Smirnov wrote:
>>
>>> I've found Mutex.cpp file in llvm sources and it seems it's not the
>>> first mutex-related call in constructor.
>>> This makes me think it's really absent method in system libs:
>>>
>>> // Construct a Mutex using pthread calls
>>>
>>> MutexImpl::MutexImpl( bool recursive)
>>>
>>>   : data_(0)
>>>
>>> {
>>>
>>>   // Declare the pthread_mutex data structures
>>>
>>>   pthread_mutex_t* mutex =
>>>
>>> static_cast<pthread_mutex_t*>(malloc(sizeof(pthread_mutex_t)));
>>>
>>>   pthread_mutexattr_t attr;
>>>
>>>
>>>   // Initialize the mutex attributes
>>>
>>>   int errorcode = pthread_mutexattr_init(&attr);
>>>
>>>   assert(errorcode == 0); (void)errorcode;
>>>
>>>
>>>   // Initialize the mutex as a recursive mutex, if requested, or normal
>>>
>>>   // otherwise.
>>>
>>>   int kind = ( recursive  ? PTHREAD_MUTEX_RECURSIVE :
>>> PTHREAD_MUTEX_NORMAL );
>>>
>>>   errorcode = pthread_mutexattr_settype(&attr, kind);
>>>
>>>   assert(errorcode == 0);
>>>
>>>
>>> #if !defined(__FreeBSD__) && !defined(__OpenBSD__) &&
>>> !defined(__NetBSD__) && \
>>>
>>>     !defined(__DragonFly__) && !defined(__Bitrig__)
>>>
>>>   // Make it a process local mutex
>>>
>>>   errorcode = pthread_mutexattr_setpshared(&attr,
>>> PTHREAD_PROCESS_PRIVATE);
>>>
>>>   assert(errorcode == 0);
>>>
>>> #endif
>>>
>>>
>>>   // Initialize the mutex
>>>
>>>   errorcode = pthread_mutex_init(mutex, &attr);
>>>
>>>   assert(errorcode == 0);
>>>
>>>
>>>   // Destroy the attributes
>>>
>>>   errorcode = pthread_mutexattr_destroy(&attr); // fails here
>>>
>>>   assert(errorcode == 0);
>>>
>>>   // Assign the data member
>>>   data_ = mutex;
>>>
>>> }
>>>
>>> I've marked where it fails.
>>> How can that be that previous mutex-related methods success and this one
>>> fails?
>>> What can i do to fix it?
>>>
>>> Regards, Anton.
>>>
>>>
>>> 2014-07-05 19:31 GMT+06:00 Anton Smirnov <dev at antonsmirnov.name <mailto:
>>> dev at antonsmirnov.name>>:
>>>
>>>
>>>     Hi.
>>>
>>>     I was able to cross-compile llvm/clang for i386 and i'm trying to
>>>     use it in my ios app.
>>>     Also i was able to add headers and static libs (both libLLVM*.a
>>>     and libclang*.a) and compile/link the project with no errors.
>>>
>>>     But when trying to run simple app i'm getting error:
>>>
>>>     *Detected an attempt to call a symbol in system libraries that is
>>>     not present on the iPhone:*
>>>
>>>     *pthread_mutexattr_destroy$UNIX2003 called from function
>>>     _ZN4llvm3sys9MutexImplC2Eb in image LibClangUsageDemo3.*
>>>
>>>
>>>
>>>     What can i do in order to fix it?
>>>
>>>     Is it llvm/clang issue or i'm doing smth wrong?
>>>
>>>     Regards, Anton.
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>>
>>
>> --
>> http://www.nuanti.com
>> the browser experts
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140707/0a7e8d4a/attachment.html>


More information about the cfe-dev mailing list