Skip to content

Commit f7e6a7a

Browse files
committed
Guard more functions
1 parent 4a56512 commit f7e6a7a

File tree

6 files changed

+68
-33
lines changed

6 files changed

+68
-33
lines changed

libcxx/include/__locale_dir/locale_base_api.h

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
// __lconv_t* __localeconv(__locale_t&);
4141
// }
4242
//
43+
// // required by the headers
4344
// #define _LIBCPP_COLLATE_MASK /* implementation-defined */
4445
// #define _LIBCPP_CTYPE_MASK /* implementation-defined */
4546
// #define _LIBCPP_MONETARY_MASK /* implementation-defined */
@@ -52,6 +53,7 @@
5253
// Strtonum functions
5354
// ------------------
5455
// namespace __locale {
56+
// // required by the headers
5557
// float __strtof(const char*, char**, __locale_t);
5658
// double __strtod(const char*, char**, __locale_t);
5759
// long double __strtold(const char*, char**, __locale_t);
@@ -148,8 +150,19 @@ namespace __locale {
148150
//
149151
// Locale management
150152
//
153+
# define _LIBCPP_COLLATE_MASK LC_COLLATE_MASK
154+
# define _LIBCPP_CTYPE_MASK LC_CTYPE_MASK
155+
# define _LIBCPP_MONETARY_MASK LC_MONETARY_MASK
156+
# define _LIBCPP_NUMERIC_MASK LC_NUMERIC_MASK
157+
# define _LIBCPP_TIME_MASK LC_TIME_MASK
158+
# define _LIBCPP_MESSAGES_MASK LC_MESSAGES_MASK
159+
# define _LIBCPP_ALL_MASK LC_ALL_MASK
160+
# define _LIBCPP_LC_ALL LC_ALL
161+
151162
using __locale_t _LIBCPP_NODEBUG = locale_t;
152-
using __lconv_t _LIBCPP_NODEBUG = lconv;
163+
164+
# if defined(_LIBCPP_BUILDING_LIBRARY)
165+
using __lconv_t _LIBCPP_NODEBUG = lconv;
153166

154167
inline _LIBCPP_HIDE_FROM_ABI __locale_t __newlocale(int __category_mask, const char* __name, __locale_t __loc) {
155168
return newlocale(__category_mask, __name, __loc);
@@ -162,15 +175,7 @@ inline _LIBCPP_HIDE_FROM_ABI char* __setlocale(int __category, char const* __loc
162175
inline _LIBCPP_HIDE_FROM_ABI void __freelocale(__locale_t __loc) { freelocale(__loc); }
163176

164177
inline _LIBCPP_HIDE_FROM_ABI __lconv_t* __localeconv(__locale_t& __loc) { return __libcpp_localeconv_l(__loc); }
165-
166-
# define _LIBCPP_COLLATE_MASK LC_COLLATE_MASK
167-
# define _LIBCPP_CTYPE_MASK LC_CTYPE_MASK
168-
# define _LIBCPP_MONETARY_MASK LC_MONETARY_MASK
169-
# define _LIBCPP_NUMERIC_MASK LC_NUMERIC_MASK
170-
# define _LIBCPP_TIME_MASK LC_TIME_MASK
171-
# define _LIBCPP_MESSAGES_MASK LC_MESSAGES_MASK
172-
# define _LIBCPP_ALL_MASK LC_ALL_MASK
173-
# define _LIBCPP_LC_ALL LC_ALL
178+
# endif // _LIBCPP_BUILDING_LIBRARY
174179

175180
//
176181
// Strtonum functions
@@ -199,10 +204,15 @@ __strtoull(const char* __nptr, char** __endptr, int __base, __locale_t __loc) {
199204
//
200205
// Character manipulation functions
201206
//
207+
# if defined(_LIBCPP_BUILDING_LIBRARY)
202208
inline _LIBCPP_HIDE_FROM_ABI int __islower(int __ch, __locale_t __loc) { return islower_l(__ch, __loc); }
203209
inline _LIBCPP_HIDE_FROM_ABI int __isupper(int __ch, __locale_t __loc) { return isupper_l(__ch, __loc); }
210+
# endif
211+
204212
inline _LIBCPP_HIDE_FROM_ABI int __isdigit(int __ch, __locale_t __loc) { return isdigit_l(__ch, __loc); }
205213
inline _LIBCPP_HIDE_FROM_ABI int __isxdigit(int __ch, __locale_t __loc) { return isxdigit_l(__ch, __loc); }
214+
215+
# if defined(_LIBCPP_BUILDING_LIBRARY)
206216
inline _LIBCPP_HIDE_FROM_ABI int __strcoll(const char* __s1, const char* __s2, __locale_t __loc) {
207217
return strcoll_l(__s1, __s2, __loc);
208218
}
@@ -212,7 +222,7 @@ inline _LIBCPP_HIDE_FROM_ABI size_t __strxfrm(char* __dest, const char* __src, s
212222
inline _LIBCPP_HIDE_FROM_ABI int __toupper(int __ch, __locale_t __loc) { return toupper_l(__ch, __loc); }
213223
inline _LIBCPP_HIDE_FROM_ABI int __tolower(int __ch, __locale_t __loc) { return tolower_l(__ch, __loc); }
214224

215-
# if _LIBCPP_HAS_WIDE_CHARACTERS
225+
# if _LIBCPP_HAS_WIDE_CHARACTERS
216226
inline _LIBCPP_HIDE_FROM_ABI int __wcscoll(const wchar_t* __s1, const wchar_t* __s2, __locale_t __loc) {
217227
return wcscoll_l(__s1, __s2, __loc);
218228
}
@@ -234,7 +244,7 @@ inline _LIBCPP_HIDE_FROM_ABI int __iswpunct(wint_t __ch, __locale_t __loc) { ret
234244
inline _LIBCPP_HIDE_FROM_ABI int __iswxdigit(wint_t __ch, __locale_t __loc) { return iswxdigit_l(__ch, __loc); }
235245
inline _LIBCPP_HIDE_FROM_ABI wint_t __towupper(wint_t __ch, __locale_t __loc) { return towupper_l(__ch, __loc); }
236246
inline _LIBCPP_HIDE_FROM_ABI wint_t __towlower(wint_t __ch, __locale_t __loc) { return towlower_l(__ch, __loc); }
237-
# endif
247+
# endif
238248

239249
inline _LIBCPP_HIDE_FROM_ABI size_t
240250
__strftime(char* __s, size_t __max, const char* __format, const tm* __tm, __locale_t __loc) {
@@ -247,7 +257,7 @@ __strftime(char* __s, size_t __max, const char* __format, const tm* __tm, __loca
247257
inline _LIBCPP_HIDE_FROM_ABI decltype(__libcpp_mb_cur_max_l(__locale_t())) __mb_len_max(__locale_t __loc) {
248258
return __libcpp_mb_cur_max_l(__loc);
249259
}
250-
# if _LIBCPP_HAS_WIDE_CHARACTERS
260+
# if _LIBCPP_HAS_WIDE_CHARACTERS
251261
inline _LIBCPP_HIDE_FROM_ABI wint_t __btowc(int __ch, __locale_t __loc) { return __libcpp_btowc_l(__ch, __loc); }
252262
inline _LIBCPP_HIDE_FROM_ABI int __wctob(wint_t __ch, __locale_t __loc) { return __libcpp_wctob_l(__ch, __loc); }
253263
inline _LIBCPP_HIDE_FROM_ABI size_t
@@ -275,7 +285,8 @@ inline _LIBCPP_HIDE_FROM_ABI size_t
275285
__mbsrtowcs(wchar_t* __dest, const char** __src, size_t __len, mbstate_t* __ps, __locale_t __loc) {
276286
return __libcpp_mbsrtowcs_l(__dest, __src, __len, __ps, __loc);
277287
}
278-
# endif
288+
# endif // _LIBCPP_HAS_WIDE_CHARACTERS
289+
# endif // _LIBCPP_BUILDING_LIBRARY
279290

280291
_LIBCPP_DIAGNOSTIC_PUSH
281292
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wgcc-compat")

libcxx/include/__locale_dir/support/bsd_like.h

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ namespace __locale {
4646
#define _LIBCPP_LC_ALL LC_ALL
4747

4848
using __locale_t = ::locale_t;
49-
using __lconv_t = std::lconv;
49+
#if defined(_LIBCPP_BUILDING_LIBRARY)
50+
using __lconv_t = std::lconv;
5051

5152
inline _LIBCPP_HIDE_FROM_ABI __locale_t __newlocale(int __category_mask, const char* __locale, __locale_t __base) {
5253
return ::newlocale(__category_mask, __locale, __base);
@@ -59,6 +60,7 @@ inline _LIBCPP_HIDE_FROM_ABI char* __setlocale(int __category, char const* __loc
5960
}
6061

6162
inline _LIBCPP_HIDE_FROM_ABI __lconv_t* __localeconv(__locale_t& __loc) { return ::localeconv_l(__loc); }
63+
#endif // _LIBCPP_BUILDING_LIBRARY
6264

6365
//
6466
// Strtonum functions
@@ -87,14 +89,17 @@ __strtoull(const char* __nptr, char** __endptr, int __base, __locale_t __loc) {
8789
//
8890
// Character manipulation functions
8991
//
92+
#if defined(_LIBCPP_BUILDING_LIBRARY)
9093
inline _LIBCPP_HIDE_FROM_ABI int __islower(int __c, __locale_t __loc) { return ::islower_l(__c, __loc); }
9194

9295
inline _LIBCPP_HIDE_FROM_ABI int __isupper(int __c, __locale_t __loc) { return ::isupper_l(__c, __loc); }
96+
#endif
9397

9498
inline _LIBCPP_HIDE_FROM_ABI int __isdigit(int __c, __locale_t __loc) { return ::isdigit_l(__c, __loc); }
9599

96100
inline _LIBCPP_HIDE_FROM_ABI int __isxdigit(int __c, __locale_t __loc) { return ::isxdigit_l(__c, __loc); }
97101

102+
#if defined(_LIBCPP_BUILDING_LIBRARY)
98103
inline _LIBCPP_HIDE_FROM_ABI int __toupper(int __c, __locale_t __loc) { return ::toupper_l(__c, __loc); }
99104

100105
inline _LIBCPP_HIDE_FROM_ABI int __tolower(int __c, __locale_t __loc) { return ::tolower_l(__c, __loc); }
@@ -107,7 +112,7 @@ inline _LIBCPP_HIDE_FROM_ABI size_t __strxfrm(char* __dest, const char* __src, s
107112
return ::strxfrm_l(__dest, __src, __n, __loc);
108113
}
109114

110-
#if _LIBCPP_HAS_WIDE_CHARACTERS
115+
# if _LIBCPP_HAS_WIDE_CHARACTERS
111116
inline _LIBCPP_HIDE_FROM_ABI int __iswctype(wint_t __c, wctype_t __type, __locale_t __loc) {
112117
return ::iswctype_l(__c, __type, __loc);
113118
}
@@ -143,7 +148,7 @@ inline _LIBCPP_HIDE_FROM_ABI int __wcscoll(const wchar_t* __ws1, const wchar_t*
143148
inline _LIBCPP_HIDE_FROM_ABI size_t __wcsxfrm(wchar_t* __dest, const wchar_t* __src, size_t __n, __locale_t __loc) {
144149
return ::wcsxfrm_l(__dest, __src, __n, __loc);
145150
}
146-
#endif // _LIBCPP_HAS_WIDE_CHARACTERS
151+
# endif // _LIBCPP_HAS_WIDE_CHARACTERS
147152

148153
inline _LIBCPP_HIDE_FROM_ABI size_t
149154
__strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm, __locale_t __loc) {
@@ -155,28 +160,24 @@ __strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm,
155160
//
156161
inline _LIBCPP_HIDE_FROM_ABI decltype(MB_CUR_MAX) __mb_len_max(__locale_t __loc) { return MB_CUR_MAX_L(__loc); }
157162

158-
#if _LIBCPP_HAS_WIDE_CHARACTERS
163+
# if _LIBCPP_HAS_WIDE_CHARACTERS
159164
inline _LIBCPP_HIDE_FROM_ABI wint_t __btowc(int __c, __locale_t __loc) { return ::btowc_l(__c, __loc); }
160165

161166
inline _LIBCPP_HIDE_FROM_ABI int __wctob(wint_t __c, __locale_t __loc) { return ::wctob_l(__c, __loc); }
162167

163-
# ifdef _LIBCPP_BUILDING_LIBRARY
164168
inline _LIBCPP_HIDE_FROM_ABI size_t
165169
__wcsnrtombs(char* __dest, const wchar_t** __src, size_t __nwc, size_t __len, mbstate_t* __ps, __locale_t __loc) {
166170
return ::wcsnrtombs_l(__dest, __src, __nwc, __len, __ps, __loc);
167171
}
168-
# endif
169172

170173
inline _LIBCPP_HIDE_FROM_ABI size_t __wcrtomb(char* __s, wchar_t __wc, mbstate_t* __ps, __locale_t __loc) {
171174
return ::wcrtomb_l(__s, __wc, __ps, __loc);
172175
}
173176

174-
# ifdef _LIBCPP_BUILDING_LIBRARY
175177
inline _LIBCPP_HIDE_FROM_ABI size_t
176178
__mbsnrtowcs(wchar_t* __dest, const char** __src, size_t __nms, size_t __len, mbstate_t* __ps, __locale_t __loc) {
177179
return ::mbsnrtowcs_l(__dest, __src, __nms, __len, __ps, __loc);
178180
}
179-
# endif
180181

181182
inline _LIBCPP_HIDE_FROM_ABI size_t
182183
__mbrtowc(wchar_t* __pwc, const char* __s, size_t __n, mbstate_t* __ps, __locale_t __loc) {
@@ -195,7 +196,8 @@ inline _LIBCPP_HIDE_FROM_ABI size_t
195196
__mbsrtowcs(wchar_t* __dest, const char** __src, size_t __len, mbstate_t* __ps, __locale_t __loc) {
196197
return ::mbsrtowcs_l(__dest, __src, __len, __ps, __loc);
197198
}
198-
#endif
199+
# endif // _LIBCPP_HAS_WIDE_CHARACTERS
200+
#endif // _LIBCPP_BUILDING_LIBRARY
199201

200202
_LIBCPP_DIAGNOSTIC_PUSH
201203
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wgcc-compat")

libcxx/include/__locale_dir/support/fuchsia.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ struct __locale_guard {
5050
#define _LIBCPP_LC_ALL LC_ALL
5151

5252
using __locale_t = locale_t;
53-
using __lconv_t = std::lconv;
53+
54+
#if defined(_LIBCPP_BUILDING_LIBRARY)
55+
using __lconv_t = std::lconv;
5456

5557
inline _LIBCPP_HIDE_FROM_ABI __locale_t __newlocale(int __category_mask, const char* __name, __locale_t __loc) {
5658
return ::newlocale(__category_mask, __name, __loc);
@@ -74,7 +76,7 @@ inline _LIBCPP_HIDE_FROM_ABI decltype(MB_CUR_MAX) __mb_len_max(__locale_t __loc)
7476
__locale_guard __current(__loc);
7577
return MB_CUR_MAX;
7678
}
77-
#if _LIBCPP_HAS_WIDE_CHARACTERS
79+
# if _LIBCPP_HAS_WIDE_CHARACTERS
7880
inline _LIBCPP_HIDE_FROM_ABI wint_t __btowc(int __ch, __locale_t __loc) {
7981
__locale_guard __current(__loc);
8082
return std::btowc(__ch);
@@ -115,7 +117,8 @@ __mbsrtowcs(wchar_t* __dest, const char** __src, size_t __len, mbstate_t* __ps,
115117
__locale_guard __current(__loc);
116118
return ::mbsrtowcs(__dest, __src, __len, __ps);
117119
}
118-
#endif
120+
# endif // _LIBCPP_HAS_WIDE_CHARACTERS
121+
#endif // _LIBCPP_BUILDING_LIBRARY
119122

120123
_LIBCPP_DIAGNOSTIC_PUSH
121124
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wgcc-compat")

libcxx/include/__locale_dir/support/no_locale/characters.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,17 @@ namespace __locale {
2929
//
3030
// Character manipulation functions
3131
//
32+
#if defined(_LIBCPP_BUILDING_LIBRARY)
3233
inline _LIBCPP_HIDE_FROM_ABI int __islower(int __c, __locale_t) { return std::islower(__c); }
3334

3435
inline _LIBCPP_HIDE_FROM_ABI int __isupper(int __c, __locale_t) { return std::isupper(__c); }
36+
#endif
3537

3638
inline _LIBCPP_HIDE_FROM_ABI int __isdigit(int __c, __locale_t) { return std::isdigit(__c); }
3739

3840
inline _LIBCPP_HIDE_FROM_ABI int __isxdigit(int __c, __locale_t) { return std::isxdigit(__c); }
3941

42+
#if defined(_LIBCPP_BUILDING_LIBRARY)
4043
inline _LIBCPP_HIDE_FROM_ABI int __toupper(int __c, __locale_t) { return std::toupper(__c); }
4144

4245
inline _LIBCPP_HIDE_FROM_ABI int __tolower(int __c, __locale_t) { return std::tolower(__c); }
@@ -49,7 +52,7 @@ inline _LIBCPP_HIDE_FROM_ABI size_t __strxfrm(char* __dest, const char* __src, s
4952
return std::strxfrm(__dest, __src, __n);
5053
}
5154

52-
#if _LIBCPP_HAS_WIDE_CHARACTERS
55+
# if _LIBCPP_HAS_WIDE_CHARACTERS
5356
inline _LIBCPP_HIDE_FROM_ABI int __iswctype(wint_t __c, wctype_t __type, __locale_t) {
5457
return std::iswctype(__c, __type);
5558
}
@@ -85,12 +88,13 @@ inline _LIBCPP_HIDE_FROM_ABI int __wcscoll(const wchar_t* __ws1, const wchar_t*
8588
inline _LIBCPP_HIDE_FROM_ABI size_t __wcsxfrm(wchar_t* __dest, const wchar_t* __src, size_t __n, __locale_t) {
8689
return std::wcsxfrm(__dest, __src, __n);
8790
}
88-
#endif // _LIBCPP_HAS_WIDE_CHARACTERS
91+
# endif // _LIBCPP_HAS_WIDE_CHARACTERS
8992

9093
inline _LIBCPP_HIDE_FROM_ABI size_t
9194
__strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm, __locale_t) {
9295
return std::strftime(__s, __max, __format, __tm);
9396
}
97+
#endif // _LIBCPP_BUILDING_LIBRARY
9498

9599
} // namespace __locale
96100
_LIBCPP_END_NAMESPACE_STD

libcxx/include/__locale_dir/support/windows.h

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ class __locale_t {
153153
__lconv_storage* __lc_ = nullptr;
154154
};
155155

156+
#if defined(_LIBCPP_BUILDING_LIBRARY)
156157
_LIBCPP_EXPORTED_FROM_ABI __locale_t __newlocale(int __mask, const char* __locale, __locale_t __base);
157158
inline _LIBCPP_HIDE_FROM_ABI void __freelocale(__locale_t __loc) { ::_free_locale(__loc); }
158159
inline _LIBCPP_HIDE_FROM_ABI char* __setlocale(int __category, const char* __locale) {
@@ -162,6 +163,7 @@ inline _LIBCPP_HIDE_FROM_ABI char* __setlocale(int __category, const char* __loc
162163
return __new_locale;
163164
}
164165
_LIBCPP_EXPORTED_FROM_ABI __lconv_t* __localeconv(__locale_t& __loc);
166+
#endif // _LIBCPP_BUILDING_LIBRARY
165167

166168
//
167169
// Strtonum functions
@@ -195,14 +197,17 @@ __strtoull(const char* __nptr, char** __endptr, int __base, __locale_t __loc) {
195197
//
196198
// Character manipulation functions
197199
//
200+
#if defined(_LIBCPP_BUILDING_LIBRARY)
198201
inline _LIBCPP_HIDE_FROM_ABI int __islower(int __c, __locale_t __loc) { return _islower_l(__c, __loc); }
199202

200203
inline _LIBCPP_HIDE_FROM_ABI int __isupper(int __c, __locale_t __loc) { return _isupper_l(__c, __loc); }
204+
#endif
201205

202206
inline _LIBCPP_HIDE_FROM_ABI int __isdigit(int __c, __locale_t __loc) { return _isdigit_l(__c, __loc); }
203207

204208
inline _LIBCPP_HIDE_FROM_ABI int __isxdigit(int __c, __locale_t __loc) { return _isxdigit_l(__c, __loc); }
205209

210+
#if defined(_LIBCPP_BUILDING_LIBRARY)
206211
inline _LIBCPP_HIDE_FROM_ABI int __toupper(int __c, __locale_t __loc) { return ::_toupper_l(__c, __loc); }
207212

208213
inline _LIBCPP_HIDE_FROM_ABI int __tolower(int __c, __locale_t __loc) { return ::_tolower_l(__c, __loc); }
@@ -215,7 +220,7 @@ inline _LIBCPP_HIDE_FROM_ABI size_t __strxfrm(char* __dest, const char* __src, s
215220
return ::_strxfrm_l(__dest, __src, __n, __loc);
216221
}
217222

218-
#if _LIBCPP_HAS_WIDE_CHARACTERS
223+
# if _LIBCPP_HAS_WIDE_CHARACTERS
219224
inline _LIBCPP_HIDE_FROM_ABI int __iswctype(wint_t __c, wctype_t __type, __locale_t __loc) {
220225
return ::_iswctype_l(__c, __type, __loc);
221226
}
@@ -240,16 +245,16 @@ inline _LIBCPP_HIDE_FROM_ABI int __wcscoll(const wchar_t* __ws1, const wchar_t*
240245
inline _LIBCPP_HIDE_FROM_ABI size_t __wcsxfrm(wchar_t* __dest, const wchar_t* __src, size_t __n, __locale_t __loc) {
241246
return ::_wcsxfrm_l(__dest, __src, __n, __loc);
242247
}
243-
#endif // _LIBCPP_HAS_WIDE_CHARACTERS
248+
# endif // _LIBCPP_HAS_WIDE_CHARACTERS
244249

245-
#if defined(__MINGW32__) && __MSVCRT_VERSION__ < 0x0800
250+
# if defined(__MINGW32__) && __MSVCRT_VERSION__ < 0x0800
246251
_LIBCPP_EXPORTED_FROM_ABI size_t __strftime(char*, size_t, const char*, const struct tm*, __locale_t);
247-
#else
252+
# else
248253
inline _LIBCPP_HIDE_FROM_ABI size_t
249254
__strftime(char* __ret, size_t __n, const char* __format, const struct tm* __tm, __locale_t __loc) {
250255
return ::_strftime_l(__ret, __n, __format, __tm, __loc);
251256
}
252-
#endif
257+
# endif
253258

254259
//
255260
// Other functions
@@ -273,6 +278,7 @@ _LIBCPP_EXPORTED_FROM_ABI size_t __mbrlen(const char* __restrict, size_t, mbstat
273278

274279
_LIBCPP_EXPORTED_FROM_ABI size_t
275280
__mbsrtowcs(wchar_t* __restrict, const char** __restrict, size_t, mbstate_t* __restrict, __locale_t);
281+
#endif // _LIBCPP_BUILDING_LIBRARY
276282

277283
_LIBCPP_EXPORTED_FROM_ABI _LIBCPP_ATTRIBUTE_FORMAT(__printf__, 4, 5) int __snprintf(
278284
char* __ret, size_t __n, __locale_t __loc, const char* __format, ...);
@@ -297,6 +303,7 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_VARIADIC_ATTRIBUTE_FORMAT(__scanf__, 3, 4) int __s
297303
_LIBCPP_DIAGNOSTIC_POP
298304
#undef _LIBCPP_VARIADIC_ATTRIBUTE_FORMAT
299305

306+
#if defined(_LIBCPP_BUILDING_LIBRARY)
300307
struct __locale_guard {
301308
_LIBCPP_HIDE_FROM_ABI __locale_guard(__locale_t __l) : __status(_configthreadlocale(_ENABLE_PER_THREAD_LOCALE)) {
302309
// Setting the locale can be expensive even when the locale given is
@@ -328,6 +335,7 @@ struct __locale_guard {
328335
int __status;
329336
char* __locale_all = nullptr;
330337
};
338+
#endif // _LIBCPP_BUILDING_LIBRARY
331339

332340
} // namespace __locale
333341
_LIBCPP_END_NAMESPACE_STD

libcxx/test/libcxx/xopen_source.gen.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
# https://github.com/llvm/llvm-project/issues/117630
1414

1515
# RUN: %{python} %s %{libcxx-dir}/utils
16+
# END.
1617

1718
import sys
1819

@@ -32,6 +33,12 @@
3233
print(
3334
f"""\
3435
//--- {header}.xopen_source_{version}.compile.pass.cpp
36+
37+
// Some parts of the code like <fstream> use non-standard functions in their implementation,
38+
// and these functions are not provided when _XOPEN_SOURCE is set to older values. This
39+
// breaks when building with modules even when we don't use the offending headers directly.
40+
// UNSUPPORTED: clang-modules-build
41+
3542
{lit_header_restrictions.get(header, '')}
3643
{lit_header_undeprecations.get(header, '')}
3744

0 commit comments

Comments
 (0)