From 323ade3e7080de24c659f714404592818a78ca76 Mon Sep 17 00:00:00 2001 From: Ed Schouten Date: Wed, 24 Jun 2015 08:44:38 +0000 Subject: Make support for thread-unsafe C functions optional. One of the aspects of CloudABI is that it aims to help you write code that is thread-safe out of the box. This is very important if you want to write libraries that are easy to reuse. For CloudABI we decided to not provide the thread-unsafe functions. So far this is working out pretty well, as thread-unsafety issues are detected really early on. The following patch adds a knob to libc++, _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS, that can be set to disable thread-unsafe functions that can easily be avoided in practice. The following functions are not thread-safe: - : locale handles should be preferred over setlocale(). - : mbrlen(), mbrtowc() and wcrtomb() should be preferred over their non-restartable counterparts. - : asctime(), ctime(), gmtime() and localtime() are not thread-safe. The first two are also deprecated by POSIX. Differential Revision: http://reviews.llvm.org/D8703 Reviewed by: marshall git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@240527 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/ctime | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include/ctime') diff --git a/include/ctime b/include/ctime index fc4eb26f5..da9e3290b 100644 --- a/include/ctime +++ b/include/ctime @@ -61,10 +61,12 @@ using ::clock; using ::difftime; using ::mktime; using ::time; +#ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS using ::asctime; using ::ctime; using ::gmtime; using ::localtime; +#endif using ::strftime; _LIBCPP_END_NAMESPACE_STD -- cgit v1.2.3