This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LP-AM243: TI armclang: Why is std::unique_lock not implemented?

Part Number: LP-AM243

Hello,

I am currently porting an existing proprietary library from GCC to TI armclang 1.3.0 LTS. I am linking against the libc++ that came with the armclang complier. Our library makes heavy use of C++11 and features like std::unique_lock. Building fails because std::unique_lock is not found by the compiler even though we include <mutex>. The build worked fine with arm-none-eabi-g++ 9.

After some research I found out that the <mutex> header in <amrclang_dir>/include/c++/v1 has a definition of std::unique_lock in its synopsis comment (lines 126-164). However, this class is not actually implemented in <mutex>, even though at several other places in <mutex>, std::unique_lock is called by other functions. This seems very odd to me.

Therefor I have a few questions:

1. Why is std::unique_lock not implemented? Please advise on how to solve this issue.

2. We also cannot use std::atomic at the moment, because the libc++ that came with the compiler has _LIBCPP_HAS_NO_THREADS set. This leads to an error when including <atomic>. How can we solve this?

3. Is there a list somewhere of other std:: functionalities that are not available in tiarmclang? The user guide only seems to mention c++ exceptions as being not supported.

Thank you for your support.

Best regards,

Mathias Seyfert