From: Yi Kong Date: Tue, 22 Nov 2022 11:11:42 +0000 (+0900) Subject: Revert "[libc++] Remove workarounds for systems that used to require __need_XXX macros" X-Git-Tag: upstream/17.0.6~26876 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3f65c8fcbe4ed4886500a0b9b939a363b70a43c3;p=platform%2Fupstream%2Fllvm.git Revert "[libc++] Remove workarounds for systems that used to require __need_XXX macros" This reverts commit 119cef40d18c48240854edc553dca61c4e9fdf27. The change broke multiple builders. --- diff --git a/libcxx/include/ext/__hash b/libcxx/include/ext/__hash index 880d0ee..0e6c2cc 100644 --- a/libcxx/include/ext/__hash +++ b/libcxx/include/ext/__hash @@ -14,7 +14,6 @@ #include <__config> #include -#include #include namespace __gnu_cxx { diff --git a/libcxx/include/module.modulemap.in b/libcxx/include/module.modulemap.in index bc4526b..5f07d9d 100644 --- a/libcxx/include/module.modulemap.in +++ b/libcxx/include/module.modulemap.in @@ -75,12 +75,14 @@ module std [system] { export Darwin.C.stdint } module stdio_h { - header "stdio.h" + // 's __need_* macros require textual inclusion. + textual header "stdio.h" export * export Darwin.C.stdio } module stdlib_h { - header "stdlib.h" + // 's __need_* macros require textual inclusion. + textual header "stdlib.h" export * } module string_h { @@ -94,7 +96,8 @@ module std [system] { // provided by C library. module wchar_h { @requires_LIBCXX_ENABLE_WIDE_CHARACTERS@ - header "wchar.h" + // 's __need_* macros require textual inclusion. + textual header "wchar.h" export * } module wctype_h { diff --git a/libcxx/include/stdbool.h b/libcxx/include/stdbool.h index 74869b4..5bba005 100644 --- a/libcxx/include/stdbool.h +++ b/libcxx/include/stdbool.h @@ -6,7 +6,6 @@ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// - #ifndef _LIBCPP_STDBOOL_H #define _LIBCPP_STDBOOL_H diff --git a/libcxx/include/stddef.h b/libcxx/include/stddef.h index e97100b..f1725db 100644 --- a/libcxx/include/stddef.h +++ b/libcxx/include/stddef.h @@ -7,7 +7,16 @@ // //===----------------------------------------------------------------------===// -#ifndef _LIBCPP_STDDEF_H +#if defined(__need_ptrdiff_t) || defined(__need_size_t) || \ + defined(__need_wchar_t) || defined(__need_NULL) || defined(__need_wint_t) + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#include_next + +#elif !defined(_LIBCPP_STDDEF_H) #define _LIBCPP_STDDEF_H /* @@ -33,38 +42,9 @@ Types: # pragma GCC system_header #endif -#if __has_include_next() - // The Clang builtin headers only define the types we need when we request it explicitly. - // TODO: We should fix that in Clang and drop these defines. -# ifndef __need_ptrdiff_t -# define __need_ptrdiff_t -# endif -# ifndef __need_size_t -# define __need_size_t +# if __has_include_next() +# include_next # endif -# ifndef __need_wchar_t -# define __need_wchar_t -# endif -# ifndef __need_NULL -# define __need_NULL -# endif -# ifndef __need_STDDEF_H_misc -# define __need_STDDEF_H_misc -# endif - -# include_next - - // Now re-include the header without requesting any specific types, so as to get - // any other remaining types from stddef.h. This can all go away once the Clang - // buitin headers stop using these macros. -# undef __need_ptrdiff_t -# undef __need_size_t -# undef __need_wchar_t -# undef __need_NULL -# undef __need_STDDEF_H_misc - -# include_next -#endif #ifdef __cplusplus typedef decltype(nullptr) nullptr_t; diff --git a/libcxx/include/stdio.h b/libcxx/include/stdio.h index 4ca40df..cea43aa 100644 --- a/libcxx/include/stdio.h +++ b/libcxx/include/stdio.h @@ -7,7 +7,15 @@ // //===----------------------------------------------------------------------===// -#ifndef _LIBCPP_STDIO_H +#if defined(__need_FILE) || defined(__need___FILE) + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#include_next + +#elif !defined(_LIBCPP_STDIO_H) #define _LIBCPP_STDIO_H /* diff --git a/libcxx/include/stdlib.h b/libcxx/include/stdlib.h index 1c990c1..64581b6 100644 --- a/libcxx/include/stdlib.h +++ b/libcxx/include/stdlib.h @@ -7,7 +7,15 @@ // //===----------------------------------------------------------------------===// -#ifndef _LIBCPP_STDLIB_H +#if defined(__need_malloc_and_calloc) + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#include_next + +#elif !defined(_LIBCPP_STDLIB_H) #define _LIBCPP_STDLIB_H /* diff --git a/libcxx/include/wchar.h b/libcxx/include/wchar.h index d34ed4d..c684508 100644 --- a/libcxx/include/wchar.h +++ b/libcxx/include/wchar.h @@ -7,7 +7,15 @@ // //===----------------------------------------------------------------------===// -#ifndef _LIBCPP_WCHAR_H +#if defined(__need_wint_t) || defined(__need_mbstate_t) + +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +#endif + +#include_next + +#elif !defined(_LIBCPP_WCHAR_H) #define _LIBCPP_WCHAR_H /*