[cfe-dev] linking with libclang for ios

Anton Smirnov dev at antonsmirnov.name
Sun Jul 6 04:16:55 PDT 2014


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/20140706/c215a6c1/attachment.html>


More information about the cfe-dev mailing list